diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 00000000..e69de29b diff --git a/THEME_IMPLEMENTATION_GUIDE.md b/THEME_IMPLEMENTATION_GUIDE.md new file mode 100644 index 00000000..8026431c --- /dev/null +++ b/THEME_IMPLEMENTATION_GUIDE.md @@ -0,0 +1,444 @@ +# Theme Implementation Guide - HMG Patient App + +## Overview +This Flutter application implements a comprehensive **dual-theme system** supporting both **Light Mode** and **Dark Mode**. The theme system is built with a combination of Flutter's native theming and a custom color management system. + +--- + +## Architecture + +### 1. **Core Components** + +#### A. AppTheme Class (`lib/theme/app_theme.dart`) +- **Purpose**: Defines the Material theme configurations for both light and dark modes +- **Key Methods**: + - `getTheme(isArabic)` - Returns light theme configuration + - `getDarkTheme(isArabic)` - Returns dark theme configuration + +**Features**: +- Dynamic font family selection based on locale (Arabic: `CairoArabic`, English: `Poppins`) +- Platform-specific page transitions (Android: Zoom, iOS: Cupertino) +- Consistent styling for AppBar, BottomSheet, FloatingActionButton +- Transparent splash colors for better UX +- System overlay styles (Dark for light theme, Light for dark theme) + +#### B. AppColors Class (`lib/theme/colors.dart`) +- **Purpose**: Centralized color management with dual-palette support +- **Architecture**: Three-tier color system + +**Three Access Patterns**: + +1. **Static Getters (Global State-Based)** + ```dart + AppColors.primaryRedColor // Uses AppColors.isDarkMode flag + ``` + - Checks global `AppColors.isDarkMode` boolean + - Returns dark or light palette value accordingly + +2. **AppColorsDark Class (Dark Palette)** + ```dart + AppColors.dark.primaryRedColor // Always dark variant + ``` + - Constant dark mode color values + - Used as source for dark theme colors + +3. **BuildContext Extension (Theme-Aware)** + ```dart + context.primaryRedColor // Uses Theme brightness + ``` + - Reads `Theme.of(context).brightness` + - Automatically adapts to MaterialApp's themeMode + +--- + +## 2. **Theme State Management** + +### ProfileSettingsViewModel +Located in `lib/features/profile_settings/profile_settings_view_model.dart` + +**Responsibilities**: +- Manages dark mode state (`_isDarkMode` boolean) +- Persists preference to local storage (CacheService) +- Triggers UI rebuilds on theme changes + +**Key Methods**: + +```dart +// Called at app startup (before first frame) +void loadDarkMode() { + final saved = _cacheService.getBool(key: _darkModeKey); + _isDarkMode = saved ?? false; + AppColors.isDarkMode = _isDarkMode; + // No notifyListeners() - called before build +} + +// Toggle theme and persist +void toggleDarkMode(bool value) { + _isDarkMode = value; + AppColors.isDarkMode = value; + _cacheService.saveBool(key: _darkModeKey, value: value); + notifyListeners(); // Triggers rebuild +} +``` + +--- + +## 3. **Application Lifecycle** + +### Initialization Flow (`main.dart`) + +```dart +Future callInitializations() async { + // ... Firebase, dependencies setup ... + + // Restore dark mode BEFORE first frame + getIt.get().loadDarkMode(); +} +``` + +### Theme Application in Widget Tree + +```dart +class MyApp extends StatelessWidget { + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, profileVm, _) { + final isArabic = EasyLocalization.of(context)?.locale.languageCode == "ar"; + + return MaterialApp( + key: ValueKey('app_theme_${profileVm.isDarkMode}'), // Force rebuild on theme change + theme: AppTheme.getTheme(isArabic), + darkTheme: AppTheme.getDarkTheme(isArabic), + themeMode: profileVm.isDarkMode ? ThemeMode.dark : ThemeMode.light, + // ... other properties + ); + }, + ); + } +} +``` + +**Key Mechanism**: +- `Consumer` listens for theme changes +- When `toggleDarkMode()` is called → `notifyListeners()` → Widget rebuilds +- `themeMode` property switches between `ThemeMode.dark` and `ThemeMode.light` +- `ValueKey` forces MaterialApp to rebuild entirely on theme change + +--- + +## 4. **Color System Design** + +### Dual-Palette Architecture + +```dart +class AppColors { + static bool isDarkMode = false; // Global flag + + // Pattern: Conditional getter + static Color get primaryRedColor => + isDarkMode ? dark.primaryRedColor : const Color(0xFFED1C2B); + + // Dark palette instance + static const AppColorsDark dark = AppColorsDark(); +} + +class AppColorsDark { + const AppColorsDark(); + + // Dark mode variants + Color get primaryRedColor => const Color(0xFFDE5C5D); + Color get scaffoldBgColor => const Color(0xFF191919); + Color get textColor => const Color(0xFFFFFFFF); + // ... 100+ color definitions +} +``` + +### BuildContext Extension for Theme-Aware Colors + +```dart +extension AppColorsContext on BuildContext { + bool get _isDark => Theme.of(this).brightness == Brightness.dark; + + Color get scaffoldBgColor => + _isDark ? AppColors.dark.scaffoldBgColor : const Color(0xFFF8F8F8); + + Color get textColor => + _isDark ? AppColors.dark.textColor : const Color(0xFF2E3039); +} +``` + +**Usage in Widgets**: +```dart +// Option 1: Static (uses global flag) +color: AppColors.primaryRedColor + +// Option 2: Extension (uses Theme.of(context)) +color: context.primaryRedColor + +// Option 3: Direct dark access +color: AppColors.dark.primaryRedColor +``` + +--- + +## 5. **User Interface Implementation** + +### Theme Toggle Control (`profile_settings.dart`) + +```dart +Consumer( + builder: (context, profileVm, _) { + return actionItem( + AppAssets.darkModeIcon, + LocaleKeys.darkMode.tr(context: context), + () { + profileVm.toggleDarkMode(!profileVm.isDarkMode); + }, + switchValue: profileVm.isDarkMode, + onSwitchChanged: (value) { + profileVm.toggleDarkMode(value); + }, + ); + }, +) +``` + +--- + +## 6. **Color Categories** + +### Organized Color Groups + +| Category | Light Example | Dark Example | +|----------|---------------|--------------| +| **Scaffold/Background** | `0xFFF8F8F8` | `0xFF191919` | +| **Primary Brand** | `0xFFED1C2B` (Red) | `0xFFDE5C5D` (Softer Red) | +| **Text** | `0xFF2E3039` (Dark) | `0xFFFFFFFF` (White) | +| **Success** | `0xFF18C273` (Green) | `0xFF18C273` (Same) | +| **Error** | `0xFFED1C2B` | `0xFFD63D48` | +| **Card Surface** | `0xFFFFFFFF` | `0xFF1E1E1E` | +| **Borders** | `0x332E3039` | `0x55ECECEC` | +| **Shimmer Base** | `0xFFE0E0E0` | `0xFF2C2C2C` | + +### Special Purpose Colors +- **Rating Stars**: Constant across themes (`0xFFFFA726`) +- **Health Calculators**: Feature-specific colors maintained in both themes +- **Status Colors**: Pending, Processing, Completed, Rejected +- **Info Banners**: Warning backgrounds with adjusted opacity for dark mode + +--- + +## 7. **Best Practices for Developers** + +### Adding New Colors + +1. **Define in Light Theme**: +```dart +static Color get newFeatureColor => + isDarkMode ? dark.newFeatureColor : const Color(0xFFXXXXXX); +``` + +2. **Add Dark Variant**: +```dart +class AppColorsDark { + Color get newFeatureColor => const Color(0xFFYYYYYY); +} +``` + +3. **Optional: Add to BuildContext Extension**: +```dart +extension AppColorsContext on BuildContext { + Color get newFeatureColor => + _isDark ? AppColors.dark.newFeatureColor : const Color(0xFFXXXXXX); +} +``` + +### Using Colors in Widgets + +**Recommended Approach**: +```dart +// For colors that should adapt to theme +Container( + color: AppColors.scaffoldBgColor, // Uses global isDarkMode +) + +// Or using context extension +Container( + color: context.scaffoldBgColor, // Uses Theme.brightness +) +``` + +**Avoid**: +```dart +// Don't hardcode colors +Container( + color: Color(0xFFED1C2B), // ❌ Won't adapt to dark mode +) +``` + +### Testing Theme Changes + +```dart +// Toggle theme programmatically +context.read().toggleDarkMode(true); + +// Check current state +final isDark = context.read().isDarkMode; +``` + +--- + +## 8. **Persistence Layer** + +### CacheService Integration +- Uses shared_preferences or similar local storage +- Key: `_darkModeKey` (defined in ProfileSettingsViewModel) +- Automatically loads on app startup +- Saves immediately on toggle + +**Flow**: +1. App launches → `loadDarkMode()` reads from cache +2. User toggles → `toggleDarkMode(value)` saves to cache +3. App restart → Previous preference restored + +--- + +## 9. **Font Handling** + +### Locale-Specific Fonts + +```dart +// In AppTheme +fontFamily: isArabic ? 'CairoArabic' : 'Poppins' + +textTheme: const TextTheme( + displayLarge: TextStyle(fontFamily: 'CairoArabic'), + bodyLarge: TextStyle(fontFamily: 'CairoArabic'), +) +``` + +**Rationale**: Arabic text requires specialized fonts for proper rendering + +--- + +## 10. **System Integration** + +### AppBar System Overlay + +```dart +// Light Theme +systemOverlayStyle: SystemUiOverlayStyle.dark // Dark status bar icons + +// Dark Theme +systemOverlayStyle: SystemUiOverlayStyle.light // Light status bar icons +``` + +### Platform-Specific Adjustments + +```dart +// SafeArea handling +SafeArea( + top: false, + bottom: Platform.isIOS ? false : true, +) +``` + +--- + +## 11. **Advanced Features** + +### Gradient Support +```dart +static const LinearGradient aiLinearGradient = LinearGradient( + colors: [Color(0xFF8A38F5), Color(0xFFE20BBB)], + begin: Alignment.topLeft, + end: Alignment.bottomRight, +); +``` +*Note: Gradients remain constant across themes for brand consistency* + +### Transparency Management +```dart +static const transparent = Colors.transparent; +// Used for splash colors, bottomSheet backgrounds +``` + +--- + +## 12. **Common Pitfalls & Solutions** + +### Issue 1: Colors Not Updating +**Problem**: Widget doesn't reflect theme change +**Solution**: Ensure widget rebuilds on theme change +```dart +// Wrap with Consumer or use context.watch +Consumer( + builder: (context, vm, _) => YourWidget(), +) +``` + +### Issue 2: Inconsistent Colors +**Problem**: Some UI elements use wrong theme +**Solution**: Always use `AppColors.*` or `context.*`, never hardcode + +### Issue 3: Theme Not Persisting +**Problem**: Theme resets on app restart +**Solution**: Verify `loadDarkMode()` is called in `callInitializations()` + +--- + +## 13. **File Structure** + +``` +lib/ +├── theme/ +│ ├── app_theme.dart # Theme configurations +│ └── colors.dart # Color definitions & dark palette +├── features/ +│ └── profile_settings/ +│ └── profile_settings_view_model.dart # Theme state management +├── presentation/ +│ └── profile_settings/ +│ └── profile_settings.dart # UI with theme toggle +└── main.dart # Theme initialization & application +``` + +--- + +## 14. **Summary** + +### Workflow +1. **Initialization**: Load saved theme preference → Set `AppColors.isDarkMode` +2. **User Action**: Toggle switch in Settings → Call `toggleDarkMode()` +3. **State Update**: Update flag → Save to cache → Notify listeners +4. **UI Rebuild**: Consumer rebuilds → MaterialApp switches `themeMode` +5. **Color Resolution**: All `AppColors.*` getters return appropriate palette + +### Key Advantages +✅ **Centralized**: Single source of truth for colors +✅ **Type-Safe**: Compile-time color checking +✅ **Persistent**: Survives app restarts +✅ **Flexible**: Multiple access patterns for different use cases +✅ **Maintainable**: Easy to add/modify colors +✅ **Performance**: No runtime color calculations, just conditional returns + +--- + +## 15. **Migration Checklist for New Features** + +When adding a new screen/feature: + +- [ ] Use `AppColors.*` for all color references +- [ ] Test in both light and dark modes +- [ ] Ensure text contrast meets accessibility standards +- [ ] Add dark variants for any new colors +- [ ] Verify with Arabic locale (font rendering) +- [ ] Check shimmer/loading states in both themes +- [ ] Test on both iOS and Android + +--- + +**Last Updated**: January 2024 +**Maintained By**: HMG Development Team + diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts index 78f16774..32aa9f3f 100644 --- a/android/app/build.gradle.kts +++ b/android/app/build.gradle.kts @@ -22,7 +22,8 @@ android { namespace = "com.cloudsolutions.HMGPatientApp" compileSdk = 36 // Using NDK 26 for better compatibility with Zoom SDK native libraries - ndkVersion = "27.0.12077973" +// ndkVersion = "27.0.12077973" + ndkVersion = "28.2.13676358" // ndkVersion = "25.1.8937393" sourceSets { @@ -34,7 +35,7 @@ android { defaultConfig { applicationId = "com.cloudsolutions.HMGPatientApp" // minSdk = 24 - minSdk = 26 + minSdk = 29 targetSdk = 35 compileSdk = 36 // targetSdk = flutter.targetSdkVersion @@ -105,7 +106,8 @@ android { "lib/arm64-v8a/libc++_shared.so", "**/*.so" ) - useLegacyPackaging = true +// useLegacyPackaging = true + useLegacyPackaging = false // Keep Zoom SDK libraries unstripped to preserve symbols keepDebugSymbols += listOf( "*/libzoom_util.so", @@ -173,18 +175,20 @@ dependencies { implementation("androidx.navigation:navigation-ui-ktx:2.9.0") implementation("androidx.activity:activity-ktx:1.10.1") -// val room_version = "2.6.1" -// implementation("androidx.room:room-runtime:$room_version") -// annotationProcessor("androidx.room:room-compiler:$room_version") + val room_version = "2.6.1" + implementation("androidx.room:room-runtime:$room_version") + annotationProcessor("androidx.room:room-compiler:$room_version") - implementation("net.zetetic:android-database-sqlcipher:4.5.4") +// implementation("net.zetetic:android-database-sqlcipher:4.6.1") + implementation("net.zetetic:sqlcipher-android:4.6.1@aar") implementation("com.intuit.ssp:ssp-android:1.1.0") implementation("com.intuit.sdp:sdp-android:1.1.0") implementation("com.github.bumptech.glide:glide:4.16.0") annotationProcessor("com.github.bumptech.glide:compiler:4.16.0") - implementation("com.mapbox.maps:android:11.5.0") +// implementation("com.mapbox.maps:android:11.5.0") + implementation("com.mapbox.maps:android-ndk27:11.22.0") implementation("com.mapbox.mapboxsdk:mapbox-sdk-turf:7.3.1") // implementation("com.mapbox.maps:android:11.4.0") @@ -208,7 +212,7 @@ dependencies { implementation("androidx.appcompat:appcompat:1.7.1") implementation("com.google.android.material:material:1.12.0") - implementation("pl.droidsonroids.gif:android-gif-drawable:1.2.25") + implementation("pl.droidsonroids.gif:android-gif-drawable:1.2.29") implementation("com.mapbox.mapboxsdk:mapbox-sdk-turf:7.3.1") androidTestImplementation("androidx.test:core:1.6.1") diff --git a/android/app/libs/PenNavUI.aar b/android/app/libs/PenNavUI.aar index a5658605..2ded149e 100644 Binary files a/android/app/libs/PenNavUI.aar and b/android/app/libs/PenNavUI.aar differ diff --git a/android/app/libs/Penguin.aar b/android/app/libs/Penguin.aar index a769c7a2..41ea58d1 100644 Binary files a/android/app/libs/Penguin.aar and b/android/app/libs/Penguin.aar differ diff --git a/android/app/libs/PenguinRenderer.aar b/android/app/libs/PenguinRenderer.aar index b498726f..cc5ac36d 100644 Binary files a/android/app/libs/PenguinRenderer.aar and b/android/app/libs/PenguinRenderer.aar differ diff --git a/android/app/proguard-rules.pro b/android/app/proguard-rules.pro index 03981852..e4e65227 100644 --- a/android/app/proguard-rules.pro +++ b/android/app/proguard-rules.pro @@ -79,6 +79,13 @@ -keep class com.hiennv.flutter_callkit_incoming.** { *; } -keepattributes Signature, Annotation, InnerClasses, EnclosingMethod +-keep class com.peng.pennavmap.** { *; } +-keep class com.peng.bus.** { *; } +# EventBus subscribers (reflection-based) +-keepclassmembers class * { + @com.peng.bus.PISubscribe ; +} +-keep class com.peng.pennavmap.models.bus.BackButtonEventBusData { *; } --keepattributes SourceFile,LineNumberTable --renamesourcefileattribute SourceFile \ No newline at end of file +-keep interface com.payfort.fortpaymentsdk.** {*;} +-keep class com.payfort.fortpaymentsdk.** {*;} diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml index 98d02941..5c10781a 100644 --- a/android/app/src/main/AndroidManifest.xml +++ b/android/app/src/main/AndroidManifest.xml @@ -14,7 +14,8 @@ tools:node="remove" /> + tools:node="remove" /> + @@ -39,17 +40,23 @@ - - + + - + + + + + - + + + @@ -88,11 +95,8 @@ - - - @@ -163,7 +167,7 @@ android:enabled="true" android:exported="true" android:hardwareAccelerated="true" - android:launchMode="singleInstance" + android:launchMode="singleTop" android:showOnLockScreen="true" android:theme="@style/LaunchTheme" android:windowSoftInputMode="adjustResize" diff --git a/android/app/src/main/jniLibs/arm64-v8a/libc++_shared.so b/android/app/src/main/jniLibs/arm64-v8a/libc++_shared.so index a80c8b38..ff5ae6e5 100755 Binary files a/android/app/src/main/jniLibs/arm64-v8a/libc++_shared.so and b/android/app/src/main/jniLibs/arm64-v8a/libc++_shared.so differ diff --git a/android/app/src/main/jniLibs/armeabi-v7a/libc++_shared.so b/android/app/src/main/jniLibs/armeabi-v7a/libc++_shared.so index cbff8a90..e642b798 100755 Binary files a/android/app/src/main/jniLibs/armeabi-v7a/libc++_shared.so and b/android/app/src/main/jniLibs/armeabi-v7a/libc++_shared.so differ diff --git a/android/app/src/main2/AndroidManifest.xml b/android/app/src/main2/AndroidManifest.xml index e07739b9..535bd4ab 100644 --- a/android/app/src/main2/AndroidManifest.xml +++ b/android/app/src/main2/AndroidManifest.xml @@ -45,6 +45,7 @@ + - diff --git a/android/gradle.properties b/android/gradle.properties index 647291d1..f47e3b3a 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -2,7 +2,7 @@ android.enableR8=true android.enableJetifier=true android.useDeprecatedNdk=true -org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=1024m -XX:MaxMetaspaceSize=1024m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 org.gradle.daemon=true org.gradle.parallel=true org.gradle.configureondemand=true diff --git a/assets/animations/lottie/HourGlass.json b/assets/animations/lottie/HourGlass.json new file mode 100644 index 00000000..d0c87fd3 --- /dev/null +++ b/assets/animations/lottie/HourGlass.json @@ -0,0 +1 @@ +{"nm":"Hourglass","h":500,"w":500,"meta":{"g":"LottieFiles AE 1.1.0"},"layers":[{"ty":4,"nm":"Side 2 Matte","sr":1,"st":-25,"op":76,"ip":0,"hasMask":false,"td":1,"ao":0,"ks":{"a":{"a":0,"k":[-6552.114,-5982.041,0]},"s":{"a":0,"k":[100,100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[-6552,-6594.232,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"ef":[],"shapes":[{"ty":"gr","nm":"Group 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[-2.437,0],[0,0]],"o":[[0,0],[0,0],[0,0],[2.437,0],[0,0]],"v":[[-6469.931,-6116.998],[-6634.298,-6117.35],[-6555.846,-5981.885],[-6552.176,-5979.025],[-6548.382,-5982.198]]}}},{"ty":"fl","nm":"Fill 1","c":{"a":0,"k":[0.18,0.188,0.224]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":1,"parent":7},{"ty":4,"nm":"Sand 2","sr":1,"st":-25,"op":76,"ip":0,"tt":1,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[-6552.114,-5982.041,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"ef":[],"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0.486,0.846],[0.625,-1.344],[-0.28,-0.728],[0.057,-0.656],[-0.144,-3.463],[0,0],[-0.063,3.469],[-0.062,1.125],[-0.268,0.626]],"o":[[-0.844,-1.469],[-0.34,0.73],[0.235,0.612],[-0.125,1.438],[0.144,3.463],[0,0],[0.063,-3.469],[0.026,-0.477],[0.364,-0.851]],"v":[[1.781,1.656],[-1.906,1.969],[-1.715,4.139],[-1.281,6.031],[-3.988,12.194],[-1.25,23],[5.062,8.062],[1,5.969],[1.59,4.283]]}],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[2.534,0.174],[-4.393,-4.956],[4.426,-20.319],[0,0],[4.269,23.889],[-9.5,9],[-0.283,0.932]],"o":[[0,0],[0,0],[-2.13,-0.147],[9.75,11],[-4.333,19.892],[0,0],[-5.875,-32.875],[3.487,-3.304],[0.384,-1.268]],"v":[[14,-138.75],[-3.5,-136.5],[-10.497,-138.771],[-9,-132.75],[-3.676,2.319],[-1.25,23],[3.375,1.375],[10,-131.75],[15.02,-137.747]]}],"t":9},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[-20.182,-2.387],[-4.393,-4.956],[4.426,-20.319],[0,0],[4.269,23.889],[-9.5,9],[-15.597,1.657]],"o":[[0,0],[0,0],[16.964,2.006],[9.75,11],[-4.333,19.892],[0,0],[-5.875,-32.875],[3.487,-3.304],[21.209,-2.253]],"v":[[91.5,-136],[-89.75,-137.5],[-49.161,-134.405],[-11,-124.25],[-3.676,2.319],[-1.25,23],[3.375,1.375],[13.5,-125.5],[47.123,-132.85]]}],"t":25},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[-21.104,-9.934],[-6.5,-8],[0,-21.193],[0,0],[0,24.267],[-7.401,10.793],[-19.85,6.269]],"o":[[0,0],[0,0],[21.691,10.211],[9.269,11.408],[0,20.359],[0,0],[0,-31.5],[6,-8.75],[22.388,-7.071]],"v":[[91.5,-136],[-89.75,-137.5],[-72.691,-114.461],[-9.25,-108.5],[-3.301,0.194],[-1.25,23],[2.75,-0.25],[13,-106.75],[64.35,-110.519]]}],"t":36},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[0,0],[-22.88,-4.534],[-1.313,-0.25],[-1.613,-0.182],[-1.375,-0.062],[-1.75,0.062],[-1.937,0.188],[-19.225,4.769]],"o":[[0,0],[0,0],[14.941,2.961],[1.312,0.25],[1.613,0.182],[1.375,0.062],[1.75,-0.062],[1.937,-0.188],[22.788,-5.653]],"v":[[91.5,-136],[-89.75,-137.5],[-64.441,-101.961],[-11.188,-97],[-4.863,-96.557],[-0.75,-96.5],[3.75,-96.5],[10.188,-96.625],[64.1,-102.019]]}],"t":50},{"s":[{"c":true,"i":[[14.5,-2],[25,7],[-12.809,-15.539],[-1.313,-0.25],[-1.613,-0.182],[-1.375,-0.062],[-1.75,0.062],[-1.937,0.188],[-6.715,12.881]],"o":[[-18.589,2.564],[-23.131,-6.477],[9.688,11.753],[1.312,0.25],[1.613,0.182],[1.375,0.062],[1.75,-0.062],[1.937,-0.188],[3.9,-7.481]],"v":[[38.5,-89],[-32.75,-76.5],[-45.191,-56.711],[-10.188,-2.5],[-4.613,0.193],[-0.25,0.5],[3.25,0.25],[9.938,-0.875],[57.6,-77.519]]}],"t":75}]}},{"ty":"st","nm":"Stroke 1","lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":0},"c":{"a":0,"k":[0,0.58,0.616]}},{"ty":"fl","nm":"Fill 1","c":{"a":0,"k":[0.18,0.188,0.224]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":2,"parent":1},{"ty":4,"nm":"Side 1 Matte","sr":1,"st":-25,"op":76,"ip":0,"hasMask":false,"td":1,"ao":0,"ks":{"a":{"a":0,"k":[-6552.114,-5982.041,0]},"s":{"a":0,"k":[100,100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[250,250,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"ef":[],"shapes":[{"ty":"gr","nm":"Group 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[0,0],[0,0],[0,0],[-0.99,-0.125],[0,0]],"o":[[0,0],[0,0],[0,0],[0.99,0.125],[0,0]],"v":[[-6469.931,-6116.998],[-6634.298,-6117.35],[-6555.846,-5981.885],[-6552.229,-5980.042],[-6548.382,-5982.198]]}}},{"ty":"fl","nm":"Fill 1","c":{"a":0,"k":[0.18,0.188,0.224]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":3},{"ty":4,"nm":"Sand 1","sr":1,"st":-25,"op":76,"ip":0,"tt":1,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]},"sk":{"a":0,"k":0},"p":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.4,"y":1},"s":[250,250,0],"t":0,"ti":[0,0,0],"to":[0,0,0]},{"s":[250,331,0],"t":50}]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"ef":[],"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":1,"k":[{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[14.5,-2],[9.627,-3.183],[8.064,-1.099],[7.079,1.982],[-12.809,-15.539],[-1.156,-1.094],[-0.582,-0.244],[-0.656,0],[-0.719,0.281],[-1.219,1.562],[-6.715,12.881]],"o":[[-7.462,1.029],[-7.564,2.501],[-7.239,0.986],[-23.131,-6.477],[9.688,11.753],[1.156,1.094],[0.582,0.244],[0.656,0],[0.719,-0.281],[1.219,-1.562],[3.9,-7.481]],"v":[[38.5,-89],[12.486,-81.442],[-11.141,-75.441],[-32.75,-76.5],[-45.191,-56.711],[-10.188,-2.5],[-3.019,2.287],[0.094,2.719],[2.75,2.344],[9.938,-0.875],[57.6,-77.519]]}],"t":0},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[14.5,-2],[2.585,2.626],[5.445,-3.528],[6.397,1.791],[-12.809,-15.539],[-1.156,-1.094],[-0.582,-0.244],[-0.656,0],[-0.719,0.281],[-1.219,1.562],[-6.715,12.881]],"o":[[-8.027,1.107],[-5.58,-5.669],[-5.652,3.663],[-23.131,-6.477],[9.688,11.753],[1.156,1.094],[0.582,0.244],[0.656,0],[0.719,-0.281],[1.219,-1.562],[3.9,-7.481]],"v":[[38.5,-89],[8.79,-71.474],[-8.07,-72.57],[-32.75,-76.5],[-45.191,-56.711],[-10.188,-2.5],[-3.019,2.287],[0.094,2.719],[2.75,2.344],[9.938,-0.875],[57.6,-77.519]]}],"t":39},{"s":[{"c":true,"i":[[14.5,-2],[9.627,-3.183],[8.064,-1.099],[7.079,1.982],[-12.809,-15.539],[-1.156,-1.094],[-0.582,-0.244],[-0.656,0],[-0.719,0.281],[-1.219,1.562],[-6.715,12.881]],"o":[[-7.462,1.029],[-7.564,2.501],[-7.239,0.986],[-23.131,-6.477],[9.688,11.753],[1.156,1.094],[0.582,0.244],[0.656,0],[0.719,-0.281],[1.219,-1.562],[3.9,-7.481]],"v":[[38.5,-89],[12.486,-81.442],[-11.141,-75.441],[-32.75,-76.5],[-45.191,-56.711],[-10.188,-2.5],[-3.019,2.287],[0.094,2.719],[2.75,2.344],[9.938,-0.875],[57.6,-77.519]]}],"t":45}]}},{"ty":"st","nm":"Stroke 1","lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":0},"c":{"a":0,"k":[0,0.58,0.616]}},{"ty":"fl","nm":"Fill 1","c":{"a":0,"k":[0.18,0.188,0.224]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":4},{"ty":4,"nm":"Shadow Matte","sr":1,"st":-25,"op":76,"ip":0,"hasMask":false,"td":1,"ao":0,"ks":{"a":{"a":0,"k":[-6552,-6594.232,0]},"s":{"a":0,"k":[100,100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[-6552,-6594.232,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"ef":[],"shapes":[{"ty":"gr","nm":"Group 3","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[8.207,0],[0,0],[-1.738,-7.444],[-0.605,-1.021],[0,0],[-0.214,-1.589],[0.143,-1.057],[0.823,-1.388],[0,0],[0.269,-1.149],[-8.207,0],[0,0],[1.738,7.444],[0.605,1.021],[0,0],[0.214,1.589],[-0.143,1.057],[-0.823,1.388],[0,0],[-0.269,1.149]],"o":[[0,0],[-8.207,0],[0.269,1.149],[0,0],[0.823,1.388],[0.143,1.057],[-0.214,1.589],[0,0],[-0.605,1.021],[-1.738,7.444],[0,0],[8.207,0],[-0.269,-1.149],[0,0],[-0.823,-1.388],[-0.143,-1.057],[0.214,-1.589],[0,0],[0.605,-1.021],[1.738,-7.444]],"v":[[-6458.712,-6744.95],[-6645.288,-6744.95],[-6657.545,-6730.055],[-6656.154,-6726.804],[-6581.067,-6600.158],[-6579.392,-6595.673],[-6579.392,-6592.49],[-6581.067,-6588.004],[-6656.154,-6461.358],[-6657.545,-6458.107],[-6645.288,-6443.213],[-6458.712,-6443.213],[-6446.455,-6458.107],[-6447.846,-6461.358],[-6522.933,-6588.004],[-6524.608,-6592.49],[-6524.608,-6595.673],[-6522.933,-6600.158],[-6447.846,-6726.804],[-6446.455,-6730.055]]}}},{"ty":"fl","nm":"Fill 1","c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":5,"parent":7},{"ty":4,"nm":"Shadow","sr":1,"st":-25,"op":76,"ip":0,"tt":1,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[0,0,0]},"s":{"a":0,"k":[100,100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[250,250,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":10}},"ef":[],"shapes":[{"ty":"gr","nm":"Shape 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":1,"k":[{"o":{"x":0.6,"y":0},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[49.135,-3.183],[-13.025,-0.599],[-29.109,-5.019],[13.5,-22],[-0.77,-28.49],[29.438,-20.455],[28.507,-1.289],[-25.5,-5.5],[0,0]],"o":[[0,0],[-12.896,0.835],[43.5,2],[29,5],[-13.5,22],[1,37],[-21.22,14.745],[-24.059,1.087],[25.5,5.5],[0,0]],"v":[[229.5,-239],[-92.882,-163.672],[-71.5,-153],[41,-141.5],[66.5,-106],[13,1],[57,123],[-37.5,133.501],[-42.5,152],[238,239.5]]}],"t":50},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[48.989,-4.946],[-18.192,-25.462],[-22.077,-19.192],[7.048,-23.757],[2.816,-27.802],[1.115,-25.846],[53.077,0.154],[-25.5,-5.5],[0,0]],"o":[[0,0],[-46.272,4.672],[18.192,25.462],[22.077,19.192],[-7.039,24.308],[-3.749,36.459],[-1.115,25.846],[-53.077,-0.154],[25.5,5.5],[0,0]],"v":[[237.269,-237.077],[115.272,-238.672],[25.808,-162.462],[78.923,-108.192],[124.885,-41.538],[37.692,15.808],[61.615,97.154],[1.577,168.654],[-49.038,228.923],[241.615,239.193]]}],"t":57},{"o":{"x":0.167,"y":0.167},"i":{"x":0.833,"y":0.833},"s":[{"c":true,"i":[[0,0],[49.135,-3.183],[-39.5,-8],[-27.395,11.046],[-3.726,-32.793],[13,-36],[36,18],[28.507,-1.289],[-25.5,-5.5],[0,0]],"o":[[0,0],[-12.896,0.835],[39.5,8],[31,-12.5],[2.5,22],[-11.892,32.933],[-23.112,-11.556],[-24.059,1.088],[25.5,5.5],[0,0]],"v":[[220.5,-166.5],[-18.882,-189.672],[10.5,-128.5],[117,-126],[138.5,-50],[130,54],[81,152],[-12.5,143],[-12,233],[217,157]]}],"t":63},{"o":{"x":0.167,"y":0.167},"i":{"x":0.4,"y":1},"s":[{"c":true,"i":[[0,0],[49.135,-3.183],[-16.242,-32.949],[-16.167,-13.833],[-28.167,-13.5],[-3.833,-25.667],[28.167,-23.833],[28.337,-16.478],[-25.5,-5.5],[0,0]],"o":[[0,0],[-12.896,0.835],[23.333,47.333],[16.167,13.833],[28.167,13.5],[4.387,24.133],[-28.167,23.833],[-20.032,9.541],[25.5,5.5],[0,0]],"v":[[222.833,-223.333],[-65.548,-175.506],[-15.333,-124.333],[29.833,-53.833],[75.833,-31.5],[138.167,21.833],[78.167,128.167],[2.667,206.334],[-43.833,233.5],[235.333,241.5]]}],"t":68},{"s":[{"c":true,"i":[[0,0],[49.135,-3.183],[-13.025,-0.599],[-29.109,-5.019],[13.5,-22],[-0.77,-28.49],[29.438,-20.455],[28.507,-1.289],[-25.5,-5.5],[0,0]],"o":[[0,0],[-12.896,0.835],[43.5,2],[29,5],[-13.5,22],[1,37],[-21.22,14.745],[-24.059,1.087],[25.5,5.5],[0,0]],"v":[[229.5,-239],[-92.882,-163.672],[-71.5,-153],[41,-141.5],[66.5,-106],[13,1],[57,123],[-37.5,133.501],[-42.5,152],[238,239.5]]}],"t":75}]}},{"ty":"st","nm":"Stroke 1","lc":1,"lj":1,"ml":4,"o":{"a":0,"k":100},"w":{"a":0,"k":0},"c":{"a":0,"k":[0,0.58,0.616]}},{"ty":"fl","nm":"Fill 1","c":{"a":0,"k":[0.18,0.188,0.224]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":6},{"ty":4,"nm":"Main Hourglass","sr":1,"st":-25,"op":76,"ip":0,"hasMask":false,"ao":0,"ks":{"a":{"a":0,"k":[-6552,-6594.232,0]},"s":{"a":0,"k":[100,100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[250,250,0]},"r":{"a":1,"k":[{"o":{"x":0.6,"y":0},"i":{"x":0.4,"y":1},"s":[0],"t":-25},{"o":{"x":0.6,"y":0},"i":{"x":0.4,"y":1},"s":[180],"t":0},{"o":{"x":0.6,"y":0},"i":{"x":0.4,"y":1},"s":[180],"t":50},{"s":[360],"t":75}]},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}},"ef":[],"shapes":[{"ty":"gr","nm":"Group 1","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.931,0],[0,0],[0,3.931],[0,0],[-3.931,0],[0,0],[0,-3.931],[0,0]],"o":[[0,0],[-3.931,0],[0,0],[0,-3.931],[0,0],[3.931,0],[0,0],[0,3.931]],"v":[[-6436.617,-6754.998],[-6667.383,-6754.998],[-6674.5,-6762.115],[-6674.5,-6762.115],[-6667.383,-6769.232],[-6436.617,-6769.232],[-6429.5,-6762.115],[-6429.5,-6762.115]]}}},{"ty":"fl","nm":"Fill 1","c":{"a":0,"k":[0.18,0.188,0.224]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"Group 2","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[3.931,0],[0,0],[0,3.931],[0,0],[-3.931,0],[0,0],[0,-3.931],[0,0]],"o":[[0,0],[-3.931,0],[0,0],[0,-3.931],[0,0],[3.931,0],[0,0],[0,3.931]],"v":[[-6436.617,-6419.232],[-6667.383,-6419.232],[-6674.5,-6426.35],[-6674.5,-6426.35],[-6667.383,-6433.467],[-6436.617,-6433.467],[-6429.5,-6426.35],[-6429.5,-6426.35]]}}},{"ty":"fl","nm":"Fill 1","c":{"a":0,"k":[0.18,0.188,0.224]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]},{"ty":"gr","nm":"Group 3","it":[{"ty":"sh","nm":"Path 1","d":1,"ks":{"a":0,"k":{"c":true,"i":[[8.207,0],[0,0],[-1.738,-7.444],[-0.605,-1.021],[0,0],[-0.214,-1.589],[0.143,-1.057],[0.823,-1.388],[0,0],[0.269,-1.149],[-8.207,0],[0,0],[1.738,7.444],[0.605,1.021],[0,0],[0.214,1.589],[-0.143,1.057],[-0.823,1.388],[0,0],[-0.269,1.149]],"o":[[0,0],[-8.207,0],[0.269,1.149],[0,0],[0.823,1.388],[0.143,1.057],[-0.214,1.589],[0,0],[-0.605,1.021],[-1.738,7.444],[0,0],[8.207,0],[-0.269,-1.149],[0,0],[-0.823,-1.388],[-0.143,-1.057],[0.214,-1.589],[0,0],[0.605,-1.021],[1.738,-7.444]],"v":[[-6458.712,-6744.95],[-6645.288,-6744.95],[-6657.545,-6730.055],[-6656.154,-6726.804],[-6581.067,-6600.158],[-6579.392,-6595.673],[-6579.392,-6592.49],[-6581.067,-6588.004],[-6656.154,-6461.358],[-6657.545,-6458.107],[-6645.288,-6443.213],[-6458.712,-6443.213],[-6446.455,-6458.107],[-6447.846,-6461.358],[-6522.933,-6588.004],[-6524.608,-6592.49],[-6524.608,-6595.673],[-6522.933,-6600.158],[-6447.846,-6726.804],[-6446.455,-6730.055]]}}},{"ty":"fl","nm":"Fill 1","c":{"a":0,"k":[1,1,1]},"r":1,"o":{"a":0,"k":100}},{"ty":"tr","a":{"a":0,"k":[0,0]},"s":{"a":0,"k":[100,100]},"sk":{"a":0,"k":0},"p":{"a":0,"k":[0,0]},"r":{"a":0,"k":0},"sa":{"a":0,"k":0},"o":{"a":0,"k":100}}]}],"ind":7}],"v":"4.8.0","fr":25,"op":76,"ip":0,"assets":[]} \ No newline at end of file diff --git a/assets/fonts/cairo/Cairo-Bold.ttf b/assets/fonts/cairo/Cairo-Bold.ttf new file mode 100644 index 00000000..041abaf6 Binary files /dev/null and b/assets/fonts/cairo/Cairo-Bold.ttf differ diff --git a/assets/fonts/cairo/Cairo-Bold/Cairo-Bold.eot b/assets/fonts/cairo/Cairo-Bold/Cairo-Bold.eot new file mode 100644 index 00000000..ed5f0c34 Binary files /dev/null and b/assets/fonts/cairo/Cairo-Bold/Cairo-Bold.eot differ diff --git a/assets/fonts/cairo/Cairo-Bold/Cairo-Bold.otf b/assets/fonts/cairo/Cairo-Bold/Cairo-Bold.otf new file mode 100644 index 00000000..8bc25fbb Binary files /dev/null and b/assets/fonts/cairo/Cairo-Bold/Cairo-Bold.otf differ diff --git a/assets/fonts/cairo/Cairo-Bold/Cairo-Bold.ttf b/assets/fonts/cairo/Cairo-Bold/Cairo-Bold.ttf new file mode 100644 index 00000000..4f026897 Binary files /dev/null and b/assets/fonts/cairo/Cairo-Bold/Cairo-Bold.ttf differ diff --git a/assets/fonts/cairo/Cairo-Bold/Cairo-Bold.woff b/assets/fonts/cairo/Cairo-Bold/Cairo-Bold.woff new file mode 100644 index 00000000..91e3d063 Binary files /dev/null and b/assets/fonts/cairo/Cairo-Bold/Cairo-Bold.woff differ diff --git a/assets/fonts/cairo/Cairo-ExtraBold.ttf b/assets/fonts/cairo/Cairo-ExtraBold.ttf new file mode 100644 index 00000000..4fc547de Binary files /dev/null and b/assets/fonts/cairo/Cairo-ExtraBold.ttf differ diff --git a/assets/fonts/cairo/Cairo-Light.ttf b/assets/fonts/cairo/Cairo-Light.ttf new file mode 100644 index 00000000..7e0f9427 Binary files /dev/null and b/assets/fonts/cairo/Cairo-Light.ttf differ diff --git a/assets/fonts/cairo/Cairo-Light/Cairo-Light.eot b/assets/fonts/cairo/Cairo-Light/Cairo-Light.eot new file mode 100644 index 00000000..d76c5391 Binary files /dev/null and b/assets/fonts/cairo/Cairo-Light/Cairo-Light.eot differ diff --git a/assets/fonts/cairo/Cairo-Light/Cairo-Light.otf b/assets/fonts/cairo/Cairo-Light/Cairo-Light.otf new file mode 100644 index 00000000..f8812a9c Binary files /dev/null and b/assets/fonts/cairo/Cairo-Light/Cairo-Light.otf differ diff --git a/assets/fonts/cairo/Cairo-Light/Cairo-Light.ttf b/assets/fonts/cairo/Cairo-Light/Cairo-Light.ttf new file mode 100644 index 00000000..840cbc3e Binary files /dev/null and b/assets/fonts/cairo/Cairo-Light/Cairo-Light.ttf differ diff --git a/assets/fonts/cairo/Cairo-Light/Cairo-Light.woff b/assets/fonts/cairo/Cairo-Light/Cairo-Light.woff new file mode 100644 index 00000000..9534bb4b Binary files /dev/null and b/assets/fonts/cairo/Cairo-Light/Cairo-Light.woff differ diff --git a/assets/fonts/cairo/Cairo-Medium.ttf b/assets/fonts/cairo/Cairo-Medium.ttf new file mode 100644 index 00000000..5b8d0f70 Binary files /dev/null and b/assets/fonts/cairo/Cairo-Medium.ttf differ diff --git a/assets/fonts/cairo/Cairo-Regular.ttf b/assets/fonts/cairo/Cairo-Regular.ttf new file mode 100644 index 00000000..36ac46bf Binary files /dev/null and b/assets/fonts/cairo/Cairo-Regular.ttf differ diff --git a/assets/fonts/cairo/Cairo-Regular/Cairo-Regular.ttf b/assets/fonts/cairo/Cairo-Regular/Cairo-Regular.ttf new file mode 100644 index 00000000..3eb09f86 Binary files /dev/null and b/assets/fonts/cairo/Cairo-Regular/Cairo-Regular.ttf differ diff --git a/assets/fonts/cairo/Cairo-SemiBold.ttf b/assets/fonts/cairo/Cairo-SemiBold.ttf new file mode 100644 index 00000000..fd01d422 Binary files /dev/null and b/assets/fonts/cairo/Cairo-SemiBold.ttf differ diff --git a/assets/images/offersanddiscounts/img1.png b/assets/images/offersanddiscounts/img1.png new file mode 100644 index 00000000..e2ac1909 Binary files /dev/null and b/assets/images/offersanddiscounts/img1.png differ diff --git a/assets/images/offersanddiscounts/img2.png b/assets/images/offersanddiscounts/img2.png new file mode 100644 index 00000000..a85f4b8a Binary files /dev/null and b/assets/images/offersanddiscounts/img2.png differ diff --git a/assets/images/offersanddiscounts/img3.png b/assets/images/offersanddiscounts/img3.png new file mode 100644 index 00000000..21d03820 Binary files /dev/null and b/assets/images/offersanddiscounts/img3.png differ diff --git a/assets/images/offersanddiscounts/promo.jpg b/assets/images/offersanddiscounts/promo.jpg new file mode 100644 index 00000000..9275c79c Binary files /dev/null and b/assets/images/offersanddiscounts/promo.jpg differ diff --git a/assets/images/png/Carparking_services_image.png b/assets/images/png/Carparking_services_image.png new file mode 100644 index 00000000..9ce08c78 Binary files /dev/null and b/assets/images/png/Carparking_services_image.png differ diff --git a/assets/images/png/ambulance_section.png b/assets/images/png/ambulance_section.png new file mode 100644 index 00000000..62ca1716 Binary files /dev/null and b/assets/images/png/ambulance_section.png differ diff --git a/assets/images/png/blood_donation_image.png b/assets/images/png/blood_donation_image.png new file mode 100644 index 00000000..c7e82c7f Binary files /dev/null and b/assets/images/png/blood_donation_image.png differ diff --git a/assets/images/png/cmc_services_image.png b/assets/images/png/cmc_services_image.png new file mode 100644 index 00000000..baad76de Binary files /dev/null and b/assets/images/png/cmc_services_image.png differ diff --git a/assets/images/png/default_MEP.png b/assets/images/png/default_MEP.png new file mode 100644 index 00000000..d79b58d2 Binary files /dev/null and b/assets/images/png/default_MEP.png differ diff --git a/assets/images/png/emergency_services_image.png b/assets/images/png/emergency_services_image.png new file mode 100644 index 00000000..f9924a52 Binary files /dev/null and b/assets/images/png/emergency_services_image.png differ diff --git a/assets/images/png/er_checkin.png b/assets/images/png/er_checkin.png new file mode 100644 index 00000000..eca0cd99 Binary files /dev/null and b/assets/images/png/er_checkin.png differ diff --git a/assets/images/png/ereferral_services_image.png b/assets/images/png/ereferral_services_image.png new file mode 100644 index 00000000..10d0d14a Binary files /dev/null and b/assets/images/png/ereferral_services_image.png differ diff --git a/assets/images/png/female_bmi.png b/assets/images/png/female_bmi.png new file mode 100644 index 00000000..437f1dc1 Binary files /dev/null and b/assets/images/png/female_bmi.png differ diff --git a/assets/images/png/full_body_back_female.png b/assets/images/png/full_body_back_female.png index 9b3aa74d..b1ea5cac 100644 Binary files a/assets/images/png/full_body_back_female.png and b/assets/images/png/full_body_back_female.png differ diff --git a/assets/images/png/full_body_back_male.png b/assets/images/png/full_body_back_male.png index 2eda5e8f..73a0b8b3 100644 Binary files a/assets/images/png/full_body_back_male.png and b/assets/images/png/full_body_back_male.png differ diff --git a/assets/images/png/full_body_front_female.png b/assets/images/png/full_body_front_female.png index c89608b0..68ce3738 100644 Binary files a/assets/images/png/full_body_front_female.png and b/assets/images/png/full_body_front_female.png differ diff --git a/assets/images/png/full_body_front_male.png b/assets/images/png/full_body_front_male.png index d1f34b4e..01e603a4 100644 Binary files a/assets/images/png/full_body_front_male.png and b/assets/images/png/full_body_front_male.png differ diff --git a/assets/images/png/healthtrackers_services_image.png b/assets/images/png/healthtrackers_services_image.png new file mode 100644 index 00000000..2d0c3f8a Binary files /dev/null and b/assets/images/png/healthtrackers_services_image.png differ diff --git a/assets/images/png/lakum_logo.png b/assets/images/png/lakum_logo.png new file mode 100644 index 00000000..b0318712 Binary files /dev/null and b/assets/images/png/lakum_logo.png differ diff --git a/assets/images/png/lakum_logo_white.png b/assets/images/png/lakum_logo_white.png new file mode 100644 index 00000000..db45e5a9 Binary files /dev/null and b/assets/images/png/lakum_logo_white.png differ diff --git a/assets/images/png/livechat_services_image.png b/assets/images/png/livechat_services_image.png new file mode 100644 index 00000000..7e33a933 Binary files /dev/null and b/assets/images/png/livechat_services_image.png differ diff --git a/assets/images/png/rrt_section.png b/assets/images/png/rrt_section.png new file mode 100644 index 00000000..b28d5993 Binary files /dev/null and b/assets/images/png/rrt_section.png differ diff --git a/assets/images/png/smartwatch_services_image.png b/assets/images/png/smartwatch_services_image.png new file mode 100644 index 00000000..303737bf Binary files /dev/null and b/assets/images/png/smartwatch_services_image.png differ diff --git a/assets/images/png/water_consumption_image.png b/assets/images/png/water_consumption_image.png new file mode 100644 index 00000000..604fa8a2 Binary files /dev/null and b/assets/images/png/water_consumption_image.png differ diff --git a/assets/images/svg/add_new_family_icon.svg b/assets/images/svg/add_new_family_icon.svg new file mode 100644 index 00000000..ad7ee356 --- /dev/null +++ b/assets/images/svg/add_new_family_icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/svg/appointment_parking_icon.svg b/assets/images/svg/appointment_parking_icon.svg new file mode 100644 index 00000000..0a1c6daa --- /dev/null +++ b/assets/images/svg/appointment_parking_icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/svg/appointment_rating_icon.svg b/assets/images/svg/appointment_rating_icon.svg new file mode 100644 index 00000000..83d89feb --- /dev/null +++ b/assets/images/svg/appointment_rating_icon.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/svg/arrow-right-02.svg b/assets/images/svg/arrow-right-02.svg new file mode 100644 index 00000000..1c5ca62a --- /dev/null +++ b/assets/images/svg/arrow-right-02.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/bank_icon.svg b/assets/images/svg/bank_icon.svg new file mode 100644 index 00000000..5c5df589 --- /dev/null +++ b/assets/images/svg/bank_icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/svg/bank_icon_only.svg b/assets/images/svg/bank_icon_only.svg new file mode 100644 index 00000000..169731d6 --- /dev/null +++ b/assets/images/svg/bank_icon_only.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/svg/bfc.svg b/assets/images/svg/bfc.svg new file mode 100644 index 00000000..a6d2ef3a --- /dev/null +++ b/assets/images/svg/bfc.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/svg/biometric_lock_icon.svg b/assets/images/svg/biometric_lock_icon.svg new file mode 100644 index 00000000..dd123157 --- /dev/null +++ b/assets/images/svg/biometric_lock_icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/bmi1.svg b/assets/images/svg/bmi1.svg new file mode 100644 index 00000000..c957dc8e --- /dev/null +++ b/assets/images/svg/bmi1.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/svg/bmr1.svg b/assets/images/svg/bmr1.svg new file mode 100644 index 00000000..7e403a81 --- /dev/null +++ b/assets/images/svg/bmr1.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/calendar_filled_icon.svg b/assets/images/svg/calendar_filled_icon.svg new file mode 100644 index 00000000..116ce8ef --- /dev/null +++ b/assets/images/svg/calendar_filled_icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/svg/card_user.svg b/assets/images/svg/card_user.svg index ee8bb0e2..bf42ee14 100644 --- a/assets/images/svg/card_user.svg +++ b/assets/images/svg/card_user.svg @@ -1,3 +1,4 @@ + diff --git a/assets/images/svg/cloudy_weather.svg b/assets/images/svg/cloudy_weather.svg new file mode 100644 index 00000000..bc7d54bf --- /dev/null +++ b/assets/images/svg/cloudy_weather.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/svg/cloudyweather.svg b/assets/images/svg/cloudyweather.svg new file mode 100644 index 00000000..6f8ebb47 --- /dev/null +++ b/assets/images/svg/cloudyweather.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/svg/ddc.svg b/assets/images/svg/ddc.svg new file mode 100644 index 00000000..f671baf8 --- /dev/null +++ b/assets/images/svg/ddc.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/svg/description_icon.svg b/assets/images/svg/description_icon.svg new file mode 100644 index 00000000..d3f17c33 --- /dev/null +++ b/assets/images/svg/description_icon.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/assets/images/svg/doctor_profile_schedule_icon.svg b/assets/images/svg/doctor_profile_schedule_icon.svg new file mode 100644 index 00000000..20e36299 --- /dev/null +++ b/assets/images/svg/doctor_profile_schedule_icon.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/svg/document.svg b/assets/images/svg/document.svg new file mode 100644 index 00000000..5073ead5 --- /dev/null +++ b/assets/images/svg/document.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/svg/evening.svg b/assets/images/svg/evening.svg new file mode 100644 index 00000000..7932d78d --- /dev/null +++ b/assets/images/svg/evening.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/svg/expired_icon.svg b/assets/images/svg/expired_icon.svg new file mode 100644 index 00000000..490cc412 --- /dev/null +++ b/assets/images/svg/expired_icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/svg/fb.svg b/assets/images/svg/fb.svg new file mode 100644 index 00000000..972aac93 --- /dev/null +++ b/assets/images/svg/fb.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/assets/images/svg/gallery.svg b/assets/images/svg/gallery.svg index ec1c45ef..1387f976 100644 --- a/assets/images/svg/gallery.svg +++ b/assets/images/svg/gallery.svg @@ -1,11 +1,5 @@ - - - - - - - - - - + + + + diff --git a/assets/images/svg/globe_other.svg b/assets/images/svg/globe_other.svg new file mode 100644 index 00000000..1b9734b3 --- /dev/null +++ b/assets/images/svg/globe_other.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/svg/h_calc.svg b/assets/images/svg/h_calc.svg new file mode 100644 index 00000000..9b379f50 --- /dev/null +++ b/assets/images/svg/h_calc.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/svg/h_calc_selected.svg b/assets/images/svg/h_calc_selected.svg new file mode 100644 index 00000000..1922bc0f --- /dev/null +++ b/assets/images/svg/h_calc_selected.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/habib logo_only.svg b/assets/images/svg/habib logo_only.svg new file mode 100644 index 00000000..c034b9dd --- /dev/null +++ b/assets/images/svg/habib logo_only.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/svg/hmg_pharmacy_logo.svg b/assets/images/svg/hmg_pharmacy_logo.svg new file mode 100644 index 00000000..e069d513 --- /dev/null +++ b/assets/images/svg/hmg_pharmacy_logo.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/images/svg/ibwc.svg b/assets/images/svg/ibwc.svg new file mode 100644 index 00000000..acfba187 --- /dev/null +++ b/assets/images/svg/ibwc.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/image_icon.svg b/assets/images/svg/image_icon.svg new file mode 100644 index 00000000..779f1e93 --- /dev/null +++ b/assets/images/svg/image_icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/svg/invoice_list_icon.svg b/assets/images/svg/invoice_list_icon.svg new file mode 100644 index 00000000..6b9e698f --- /dev/null +++ b/assets/images/svg/invoice_list_icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/svg/invoices_list_icon.svg b/assets/images/svg/invoices_list_icon.svg index f1230960..5f653ced 100644 --- a/assets/images/svg/invoices_list_icon.svg +++ b/assets/images/svg/invoices_list_icon.svg @@ -1,4 +1,4 @@ - - + + diff --git a/assets/images/svg/linkedin.svg b/assets/images/svg/linkedin.svg new file mode 100644 index 00000000..43d7ff39 --- /dev/null +++ b/assets/images/svg/linkedin.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/assets/images/svg/live_chat_message_icon.svg b/assets/images/svg/live_chat_message_icon.svg new file mode 100644 index 00000000..26e0280d --- /dev/null +++ b/assets/images/svg/live_chat_message_icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/location_unavailable_filled.svg b/assets/images/svg/location_unavailable_filled.svg new file mode 100644 index 00000000..8bc315c1 --- /dev/null +++ b/assets/images/svg/location_unavailable_filled.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/svg/location_unavailable_filled_background.svg b/assets/images/svg/location_unavailable_filled_background.svg new file mode 100644 index 00000000..cb3fa768 --- /dev/null +++ b/assets/images/svg/location_unavailable_filled_background.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/svg/morning.svg b/assets/images/svg/morning.svg new file mode 100644 index 00000000..0f0d9904 --- /dev/null +++ b/assets/images/svg/morning.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/assets/images/svg/my_radiology_icon.svg b/assets/images/svg/my_radiology_icon.svg index 7b5ebe46..1848607f 100644 --- a/assets/images/svg/my_radiology_icon.svg +++ b/assets/images/svg/my_radiology_icon.svg @@ -1,3 +1,4 @@ - - + + + diff --git a/assets/images/svg/online_checkin_icon.svg b/assets/images/svg/online_checkin_icon.svg new file mode 100644 index 00000000..4f21533f --- /dev/null +++ b/assets/images/svg/online_checkin_icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/svg/op.svg b/assets/images/svg/op.svg new file mode 100644 index 00000000..ff400de8 --- /dev/null +++ b/assets/images/svg/op.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/svg/open_camera.svg b/assets/images/svg/open_camera.svg index 171452a0..3dfda03c 100644 --- a/assets/images/svg/open_camera.svg +++ b/assets/images/svg/open_camera.svg @@ -1,7 +1,4 @@ - - - - - - + + + diff --git a/assets/images/svg/patient_qr_code_icon.svg b/assets/images/svg/patient_qr_code_icon.svg new file mode 100644 index 00000000..c76f0326 --- /dev/null +++ b/assets/images/svg/patient_qr_code_icon.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/assets/images/svg/redeem_icon.svg b/assets/images/svg/redeem_icon.svg new file mode 100644 index 00000000..52eb8815 --- /dev/null +++ b/assets/images/svg/redeem_icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/svg/refund_icon.svg b/assets/images/svg/refund_icon.svg new file mode 100644 index 00000000..f0eabc53 --- /dev/null +++ b/assets/images/svg/refund_icon.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/svg/report.svg b/assets/images/svg/report.svg new file mode 100644 index 00000000..b5ca54b1 --- /dev/null +++ b/assets/images/svg/report.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/svg/select_image_icon.svg b/assets/images/svg/select_image_icon.svg new file mode 100644 index 00000000..df9ef185 --- /dev/null +++ b/assets/images/svg/select_image_icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/assets/images/svg/share.svg b/assets/images/svg/share.svg new file mode 100644 index 00000000..c30b9e0f --- /dev/null +++ b/assets/images/svg/share.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/svg/shoppingcart.svg b/assets/images/svg/shoppingcart.svg new file mode 100644 index 00000000..d1c36860 --- /dev/null +++ b/assets/images/svg/shoppingcart.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/sucess.svg b/assets/images/svg/sucess.svg new file mode 100644 index 00000000..6df93d5e --- /dev/null +++ b/assets/images/svg/sucess.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/twitter.svg b/assets/images/svg/twitter.svg new file mode 100644 index 00000000..9c5bfa6b --- /dev/null +++ b/assets/images/svg/twitter.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/twitter2.svg b/assets/images/svg/twitter2.svg new file mode 100644 index 00000000..e804498a --- /dev/null +++ b/assets/images/svg/twitter2.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/weather_bottom.svg b/assets/images/svg/weather_bottom.svg new file mode 100644 index 00000000..1c310b24 --- /dev/null +++ b/assets/images/svg/weather_bottom.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/weather_bottom_fill.svg b/assets/images/svg/weather_bottom_fill.svg new file mode 100644 index 00000000..98b7491c --- /dev/null +++ b/assets/images/svg/weather_bottom_fill.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/images/svg/whitecalender.svg b/assets/images/svg/whitecalender.svg new file mode 100644 index 00000000..ff400de8 --- /dev/null +++ b/assets/images/svg/whitecalender.svg @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/assets/images/svg/youtube.svg b/assets/images/svg/youtube.svg new file mode 100644 index 00000000..5e83e5a4 --- /dev/null +++ b/assets/images/svg/youtube.svg @@ -0,0 +1,4 @@ + + + + diff --git a/assets/images/svg/zoom-in.svg b/assets/images/svg/zoom-in.svg new file mode 100644 index 00000000..99d6c329 --- /dev/null +++ b/assets/images/svg/zoom-in.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/assets/images/svg/zoom.svg b/assets/images/svg/zoom.svg new file mode 100644 index 00000000..20e1ad9a --- /dev/null +++ b/assets/images/svg/zoom.svg @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/assets/images/svg/zoom_out.svg b/assets/images/svg/zoom_out.svg new file mode 100644 index 00000000..b4fb96f7 --- /dev/null +++ b/assets/images/svg/zoom_out.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/langs/ar-SA.json b/assets/langs/ar-SA.json index 437fa7e6..b2bc5c2d 100644 --- a/assets/langs/ar-SA.json +++ b/assets/langs/ar-SA.json @@ -2,16 +2,18 @@ "english": "الإنجليزية", "arabic": "العربية", "login": "تسجيل الدخول", - "noDataAvailable": "لا توجد بيانات متاحة", + "noDataAvailable": "لا توجد طلبات", + "noRatingAvailable": "لا يوجد تقييم متاح", + "doctorDoesNotHaveRating": "لم يحصل هذا الطبيب على أي تقييمات بعد.", "confirm": "تأكيد", - "loadingText": "جاري التحميل، يرجى الانتظار...", + "loadingText": "يرجى الانتظار…", "kilometerUnit": "كم", "dashboardScreenToolbarTitle": "الرئيسية", "settings": "الإعدادات", "language": "لغة التطبيق", "lanEnglish": "الإنجليزية", "lanArabic": "العربية", - "cancel": "إلغاء", + "cancel": "الغاء", "done": "تم", "replay2": "إعادة التشغيل", "home": "الرئيسية", @@ -38,7 +40,7 @@ "noResultFound": "لم يتم العثور على نتائج", "noSearchResultFound": "لم يتم العثور على نتائج", "pleaseEnterProductName": "يرجى إدخال اسم المنتج", - "bookNow": "احجز الآن", + "bookNow": "حجز موعد", "docInfo": "معلومات الطبيب", "appoInfo": "معلومات الموعد", "availableAppo": "المواعيد المتاحة", @@ -66,8 +68,8 @@ "appoActions": "إجراءات الموعد", "date": "التاريخ", "time": "الوقت", - "pendingPayment": "معلق للدفع", - "payNow": "ادفع الآن", + "pendingPayment": "إتمام الدفع", + "payNow": "الدفع", "viewQR": "عرض رمز الاستجابة السريعة", "instruction": "تعليمات", "livecare": "لايف كير", @@ -78,9 +80,11 @@ "changePayment": "تغيير طريقة الدفع", "upcomingNoAction": "لا يتطلب أي إجراء", "upcomingConfirm": "يرجى تأكيد الموعد لتجنب الإلغاء", - "bookSuccessConfirmMore2412": "ستكون عملية الدفع عبر الإنترنت متاحة قبل 24 ساعة ��ن الموعد.", - "upcomingPaymentPending": "سيتم تفعيل الدفع عبر الإنترنت قبل 24 ساعة من موعد الموعد", - "upcomingPaymentNow": "ادفع عبر الإنترنت الآن لتجنب الانتظار الطويل", + "bookSuccessConfirmMore2412": "ستكون عملية الدفع متاحة قبل 24 ساعة من الموعد.", + "upcomingPaymentPending": "سيتم تفعيل الدفع قبل 24 ساعة من وقت الموعد", + "upcomingPaymentNow": "الدفع الإلكتروني لتجنب الانتظار", + "timeUntilAppointment": "الوقت المتبقي حتى الموعد", + "appointmentTimePassed": "انتهى وقت الموعد", "upcomingQR": "استخدم رمز الاستجابة السريعة لتسجيل الوصول في المستشفى", "upcomingVirtual": "هذا موعد افتراضي، يرجى الالتزام بالتعليمات لتجربة سلسة.", "upcomingLivecare": "هذا موعد لايف كير", @@ -89,15 +93,15 @@ "raise": "رفع", "complaint": "شكوى", "add": "إضافة", - "reminder": "تذكير", + "reminder": "حفظ", "location": "المواقع", - "online": "عبر الإنترنت", + "online": "متصل", "payment": "الدفع", "onlinePayment": "عبر الإنترنت", "onlinePaymentSubtitle": "الدفع", - "cancelNocaps": "إلغاء", - "setReminder": "ضبط تذكير", - "nationalIdNumber": "رقم الهوية الوطنية", + "cancelNocaps": "الاحتفاظ بالموعد", + "setReminder": "تذكير", + "nationalIdNumber": "رقم الهوية / الإقام", "medicalFileNumber": "رقم الملف الطبي", "loginregister": "تسجيل الدخول / التسجيل", "poweredBy": "مدعوم من", @@ -110,7 +114,7 @@ "yes": "نعم", "no": "لا", "logintyperadio": "اختر من الخيارات أدناه لتسجيل الدخول إلى ملفك الطبي.", - "registernow": "سجل الآن", + "registernow": "تسجيل", "nationalID": "أدخل رقم الهوية", "nationalId": "الهوية الوطنية", "fileNo": "رقم الملف", @@ -119,10 +123,10 @@ "forgotFileNoTitle": "نسيت الملف الطبي", "enterNationalId": "يرجى إدخال رقم الهاتف المحمول ورقم الهوية", "profileInfo": "يرجى إدخال معلومات الملف الشخصي", - "submit": "إرسال", + "submit": "تأكيد", "forgotDesc": "أدخل رقم الهاتف المحمول لاستلام رقم الملف الطبي عبر الرسائل القصيرة", - "dob": "تاريخ الميلاد:", - "hijriDate": "الت��ريخ الهجري", + "dob": "تاريخ الميلاد", + "hijriDate": "التاريخ الهجري", "gregorianDate": "التاريخ الميلادي", "verifyLoginWith": "يرجى اختيار واحدة من الخيارات التالية للتحقق", "registerUser": "تسجيل", @@ -169,9 +173,9 @@ "emailSentError": "خطأ في إرسال البريد الإلكتروني", "close": "إغلاق", "closeIt": "أغلق", - "booked": "محجوز", + "booked": "تم الحجز", "confirmed": "مؤكد", - "arrived": "وصل", + "arrived": " تم الوصول", "payNowBookSuccess": "ادفع الآن عبر تطبيق الحبيب", "payNowBookSuccesstext1": "ادفع الآن باستخدام خدمة الدفع عبر الإنترنت من بوابات الدفع الآمنة", "payNowBookSuccesstext2": "يمكنك أيضًا الدفع لاحقًا عبر الدفع الإلكتروني أو في المستشفى.", @@ -187,13 +191,14 @@ "lastName": "اسم العائلة", "female": "أنثى", "male": "ذكر", - "preferredLanguage": "اللغة المفضلة *", + "preferredLanguage": "اللغة المفضلة", "locationsRegister": "أين ترغب في إنشاء هذا الملف؟", "ksa": "السعودية", "dubai": "دبي", "enterEmail": "يرجى إدخال البريد الإلكتروني", "family": "عائلتي", "familyTitle": "ملفات عائلتي", + "familyTitle2": "ملفات العائلة", "myFamily": "عائلتي", "addNewMember": "إضافة فرد جديد للعائلة", "sentRequests": "الطلبات المرسلة", @@ -212,10 +217,10 @@ "heightUnit": "وحدة الطول", "weightUnit": "وحدة الوزن", "unit": "الوحدة", - "request": "طلب", + "request": "الطلبات", "memberName": "اسم العضو", - "switchLogin": "تبديل", - "removeMember": "إزالة", + "switchLogin": "عرض الملف", + "removeMember": "حذف", "allowView": "السماح", "rejectView": "رفض", "deleteView": "حذف", @@ -225,6 +230,17 @@ "companyName": "اسم الشركة:", "receiptOn": "الإيصال على:", "expiryDate": "تاريخ الانتهاء:", + "myCards": "بطاقاتي", + "savedCards": "البطاقات المحفوظة", + "addNewCard": "إضافة بطاقة جديدة", + "noSavedCards": "لا توجد بطاقات محفوظة", + "cardEndingWith": "البطاقة المنتهية بـ", + "expiry": "الصلاحية", + "defaultCard": "افتراضي", + "deleteCard": "حذف البطاقة؟", + "deleteCardConfirmation": "هل أنت متأكد من حذف هذه البطاقة المنتهية بـ", + "cardDeletedSuccessfully": "تم حذف البطاقة بنجاح", + "addCardComingSoon": "وظيفة إضافة البطاقة قريباً", "expiryPoints": "منتهي الصلاحية", "expiryOn": "ينتهي في:", "procedureName": "اسم الإجراء:", @@ -255,7 +271,7 @@ "viewAllHabibMedicalService": "عرض جميع خدمات الحبيب الطبية", "viewAll": "عرض الكل", "view": "عرض", - "contactUs": "اتصل بنا", + "contactUs": "طرق التواصل", "contactUsLocation": "ص.ب: 91877 - الرياض 11643، طريق الملك فهد - العليا - المملكة العربية السعودية", "contactUsTime": "السبت - الأربعاء 8:00 صباحًا - 10 مساءً، الخميس 8:00 صباحًا- 8:00 مساءً، الجمعة 2:00 مساءً - 8:00 مساءً", "viewAllWaysReachUs": "عرض جميع طرق التواصل معنا", @@ -267,12 +283,13 @@ "userViewRequester": "يريد المستخدم عرض ملفك الطبي", "userView": "يمكن للمستخدم عرض ملفك الطبي", "parking": "موقف السيارات", + "parking2": " المواقف", "alhabiServices": "خدمة HMG", "parkingTitle": "خدمة السيارة، خدمة السيارة، خدمة لحفظ معلومات الموقف، العودة إليها لاحقًا، 1- من خلال النقر على (قراءة الرمز)، حفظ بيانات الموقف. 2- من خلال النقر على زر (عرض موقف سيارتي)، يظهر لك موقع السيارة في خرائط Google. 3- قراءة موضع آخر بالضغط على زر مسح بيانات الموضع.", - "parkingDescription": "خدمة المواقف هي لك لمسح موقع السيارة حتى تتمكن من العثور عليها بسهولة عند مغادرتك. انقر على زر (مسح الموقف) لحفظ موقع الموقف، ثم سيظهر زر (عرض موقفي) لإظهار الطريق إلى الموقف. إذا كنت ترغب في إعادة مسح موقف السيارة QR فقط انقر على (مسح بياناتي).", + "parkingDescription": "يمكنك حفظ موقع سيارتك لسهولة الوصول إليها لاحقًا.", "appointments": "المواعيد", "all2": "الكل", - "checkinOption": "تسجيل الوصول", + "checkinOption": "تسجيل الحضور", "readBarcode": "قراءة الكود", "showMyPark": "عرض الموقف", "clearMyData": "امسح البيانات", @@ -280,12 +297,12 @@ "gate": "البوابة:", "building": "المبنى:", "branch": "الفرع:", - "emergencyServices": "خدمات الطوارئ", + "emergencyServices": "خدمات \n الطوارئ", "nearester": "أقرب طوارئ", "locationa": "الموقع", - "callNow": "اتصل الآن", + "callNow": "الاتصال المباشر", "ambulancerequest": "طلب إسعاف", - "requestA": "طلب", + "requestA": "الطلبات", "noBookedAppointments": "لا توجد مواعيد محجوزة", "noConfirmedAppointments": "لا توجد مواعيد مؤكدة", "noArrivedAppointments": "لا توجد مواعيد تم تسجيل الوصول إليها", @@ -294,18 +311,27 @@ "radiology": "الأشعة", "radiologySubtitle": "النتيجة", "lab": "المختبر", - "labSubtitle": "النتائج", + "labSubtitle": "نتائج", "medicines": "الأدوية", "medicinesSubtitle": "الوصفات", - "vitalSigns": "علامات حيوية", + "vitalSigns": "العلامات الحيوية", "vitalSignsSubTitle": "التقارير", + "vitalSignNormal": "طبيعي", + "vitalSignLow": "منخفض", + "vitalSignHigh": "مرتفع", + "vitalSignObese": "بدين", + "vitalSignOverweight": "زيادة الوزن", + "vitalSignUnderweight": "نقص الوزن", + "vitalSignSkinny": "نحيف جداً", "myMedical": "نشط", "myMedicalSubtitle": "الأدوية", - "myDoctor": "طبيبي", + "myDoctor": " أطبائي", "myDoctorSubtitle": "القائمة", + "myDoctorSubtitle2": "قائمة", "eye": "العين", "eyeSubtitle": "القياس", "insurance": "التأمين", + "insurance2": "تأمين", "insuranceSubtitle": "البطاقة", "updateInsurance": "تحديث", "updateInsuranceSubtitle": "التأمين", @@ -315,11 +341,12 @@ "allergiesSubtitle": "القائمة", "myVaccines": "لقاحاتي", "myVaccinesSubtitle": "القائمة", - "medical": "طبي", + "medical": "الطبي", "medicalSubtitle": "التقرير", "monthly": "شهري", "monthlySubtitle": "التقرير", "sick": "مريض", + "sick2": "المرضية", "sickSubtitle": "الإجازات", "myBalance": "رصيدي", "myBalanceSubtitle": "الرصيد", @@ -333,13 +360,13 @@ "askYourSubtitle": "طبيبك", "internet": "الإنترنت", "internetSubtitle": "الاقتران", - "chatbot": "الدرد��ة الآلية", + "chatbot": "الدردشة الآلية", "chatbotSubtitle": "", "timeLine": "الخط الزمني", "labOrders": "طلبات المختبر", "billNo": "رقم الفاتورة:", "prescriptions": "الوصفات", - "history": "التاريخ", + "history": "سجل الطلبات", "orderNo": "رقم الطلب", "orderDetails": "تفاصيل الطلب", "deliveryDriverTrack": "تتبع السائق", @@ -354,6 +381,12 @@ "clickHere": "انقر هنا", "iAgreeToTheTermsAndConditions": "أوافق على الشروط والأحكام ", "iAgreeToTheTermsAndConditionsSubtitle": "أوافق على الشروط والأحكام ", + "iAgreeAndAcceptTermsAndConditions": "أوافق وأقبل ", + "termsAndConditions": "الشروط والأحكام", + "iAgreeHealthInfoCanBeUsed": "أوافق على استخدام معلوماتي الصحية للمقابلة. مزيد من المعلومات في ", + "privacyPolicyText": "سياسة الخصوصية", + "outPatient": "العيادات الخارجيه", + "thisInvoiceIsNotEligibleForRefund": "هذه الفاتورة غير مؤهلة لاسترداد الأموال", "save": "حفظ", "userAgreement": "اتفاقية المستخدم", "updateSuccessfully": "تم التحديث بنجاح", @@ -363,10 +396,10 @@ "paymentOnline": "الخدمة", "onlineCheckIn": "تسجيل الوصول عبر الإنترنت", "myBalances": "رصيدي", - "myWallet": "محف��تي", + "myWallet": "محفظتي", "balanceAmount": "مبلغ المحفظة", "totalBalance": "إجمالي الرصيد", - "createAdvancedPayment": "إعادة شحن المحفظة", + "createAdvancedPayment": "شحن المحفظة", "advancePayment": "دفع مسبق", "advancePaymentLabel": "يمكنك إنشاء وإضافة دفعة مقدمة لحسابك أو حسابات أخرى.", "fileNumber": "رقم الملف", @@ -379,13 +412,13 @@ "selectCity": "اختر المدينة", "city": "المدينة", "distance": "المسافة", - "myAccount": "حسابي", + "myAccount": "المستفيد", "otherAccount": "حساب آخر", "selectBeneficiary": "اختر المستفيد", "confirmThePayment": "تأكيد الدفع", "depositorName": "اسم مُقدِّم الإيداع", "mobileNumber": "رقم الجوال", - "phoneNumber": "رقم الهاتف", + "phoneNumber": "رقم الجوال", "country": "البلد", "ok": "حسنا", "averageWaitingTime": "متوسط وقت الانتظار:", @@ -394,7 +427,7 @@ "waterConsumedInMonth": "الماء المستهلك في شهر", "theVerificationCodeExpiresIn": "ينتهي رمز التحقق في", "pleaseEnterTheVerificationCode": "يرجى إدخال رمز التحقق المرسل إلى", - "eyeMeasurements": "قياسات العين", + "eyeMeasurements": "فحوصات النظر", "measurements": "قياسات", "classes": "نظارات", "contactLens": "عدسات لاصقة", @@ -421,7 +454,7 @@ "startDay": "يوم البدء", "endDay": "يوم الانتهاء", "days": "أيام ", - "pleaseVerify": "يرجى التحقق ", + "pleaseVerify": "إضافة", "scheduleTime": "وقت الجدولة", "askDoctor": "اسأل الطبيب", "doctorResponses": "ردود الطبيب", @@ -435,20 +468,20 @@ "serviceInformation": "معلومات الخدمة", "homeHealthCare": "الرعاية الصحية المنزلية", "noAppointmentAvailable": "لا توجد مواعيد متاحة", - "homeHealthCareText": "تقدم هذه الخدمة مجموعة من خدمات الرعاية الصحية المنزلية، والمتابعة المستمرة والشاملة في أماكن إقامتهم لأولئك الذين لا يمكنهم الوصول إلى المرافق الصحية، مثل (تحليلات المختبر - الأشعة - التطعيمات - العلاج الطبيعي)، إلخ.", + "noScheduleAvailable": "لا يوجد جدول متاح حاليًا", "loginRegister": "تسجيل الدخول / التسجيل", "orderLog": "سجل الطلب", "infoLab": "تتيح لك هذه الخدمة عرض نتائج جميع الفحوصات المخبرية التي أجريت في مجموعة الحبيب الطبية بالإضافة إلى إرسال التقرير عبر البريد الإلكتروني.", "infoRadiology": "تتيح لك هذه الخدمة عرض تقارير وصور الأشعة في مجموعة الحبيب الطبية بالإضافة إلى إرسال التقرير عبر البريد الإلكتروني.", "noReviewsAvailable": "لا توجد تقييمات متاحة", "noLocationAvailable": "لا توجد مواقع متاحة", - "orders": "الطلبات", + "orders": "سجل الطلبات", "lakum": "لكم", "lakumMsg": "لا توجد تفاصيل عن النقاط", "lakumPoint": "نقطة", "wishlist": "قائمة الرغبات", "products": "المنتجات", - "reviews": "التقييمات", + "reviews": "التعليقات", "brands": "العلامات التجارية", "productDetails": "تفاصيل المنتج", "medicationRefill": "إعادة تعبئة الدواء", @@ -474,7 +507,7 @@ "shareReview": "شارك التقييم", "review": " التقييمات", "viewMedicalFile": "عرض التفاصيل", - "viewAllServices": "عرض جميع الخدمات", + "viewAllServices": "جميع الخدمات", "medicalFile": "الملف الطبي", "verified": "تم التحقق", "checkup": "فحص", @@ -483,12 +516,14 @@ "refferalTitle": "إحالة إلكترونية", "refferalSubTitle": "الخدمة", "healthCare": "الرعاية الصحية", - "emergency": "حالة طوارئ", + "emergency": "طوارئ", + "emergency2": "الطوارئ", "erservices": "خدمات الطوارئ", "services2": "الخدمات", + "services3": "خدمات", "cantSeeProfile": "لرؤية ملفك الطبي، يرجى تسجيل الدخول أو التسجيل الآن", "loginRegisterNow": "تسجيل الدخول أو التسجيل الآن", - "hmgPharmacy": "صيدلية مجموعة الحبيب الطبية", + "hmgPharmacy": "صيدلية الحبيب", "ecommerceSolution": "حلول التجارة الإلكترونية", "comprehensive": "شامل", "onlineConsulting": "استشارات عبر الإنترنت", @@ -590,7 +625,7 @@ "selectGender": "اختر الجنس", "iAmA": "أنا ...", "selectAge": "اختر عمرك", - "select": "اختر", + "select": "تأكيد الموعد", "iAm": "أنا", "yearsOld": "سنوات", "dragPoint": "اسحب النقطة لتغيير عمرك", @@ -613,11 +648,11 @@ "viewSubCategorise": "عرض جميع الفئات الفرعية", "categorise": "الفئات", "wishList": "قائمة الرغبات", - "myAccount": "حسابي", + "myAccount": "المستفيد", "cart": "عربة التسوق", "alhabibapp": "تطبيق الحبيب", "searchProductHere": "ابحث عن المنتج هنا", - "hhcNotAuthMsg": "تقدم هذه الخدمة مجموعة من خدمات الرعاية الصحية المنزلية، والمتابعة المستمرة والشاملة في أماكن إقامتهم لأولئك الذين لا يمكنهم الوصول إلى المرافق الصحية، مثل (تحليلات المختبر - الأشعة - التطعيمات - العلاج الطبيعي)، إلخ.", + "hhcNotAuthMsg": "تقدم هذه الخدمة مجموعة من خدمات الرعاية الصحية المنزلية، والمتابعة المستمرة والشاملة في أماكن إقامتهم لأولئك الذين لا يمكنهم الوصول إلى المرافق الصحية، مثل (تحليلات المختبر - الأشعة - التطعيمات - العلاج الطبيعي، إلخ.", "email": "البريد الإلكتروني *", "book": "احجز", "appointmentLabel": "موعد", @@ -649,11 +684,20 @@ "emrgNo": "رقم جهة الاتصال في حالات الطوارئ", "modes": "الأوضاع", "vibration": "اهتزاز عند اللمس", - "blindModes": "أوضاع للمكفوفين جزئيًا", + "blindModes": "وضع للمكفوفين جزئياً", "invertTheme": "عكس", "offTheme": "إيقاف", "dimTheme": "خافت", "bwTheme": "أسود وأبيض", + "highContrastTheme": "تباين عالي", + "fontSize": "حجم الخط", + "fontSizeSmall": "صغير", + "fontSizeMedium": "متوسط", + "fontSizeLarge": "كبير", + "saveChanges": "حفظ التغييرات", + "settingsSavedSuccessfully": "تم حفظ الإعدادات بنجاح", + "cardHeading": "عنوان البطاقة", + "buttonText": "نص الزر", "permissions": "إذن", "cameraPermission": "الكاميرا", "locationPermission": "الموقع", @@ -661,10 +705,10 @@ "outOfStockMsg": "لقد أضفت منتجًا غير متوفر حاليًا، يرجى إزالته!", "noArabicLetters": "لا يُسمح باستخدام الحروف العربية", "noOffersAvailable": "لا توجد عروض متاحة!", - "accessibility": "وضع الوصول", + "accessibility": "إمكانية الوصول", "orderStatus": "حالة الطلب", - "findUs": "اعثر علينا", - "liveChat": "دردشة مباشرة", + "findUs": "فروعنا", + "liveChat": "محادثة مباشرة", "service": "خدمة", "hmgServiceLabel": "خدمة مجموعة الحبيب الطبية", "healthWeatherIndicators": "مؤشرات الطقس الصحية", @@ -678,8 +722,8 @@ "duration": "المدة", "cm": "سم", "ft": "قدم", - "kg": "كجم", - "lb": "رطل", + "kg": "كغ", + "lb": "باوند", "birthDate": "تاريخ الميلاد", "dateOfBirth": "تاريخ الميلاد", "mass": "الكتلة", @@ -693,18 +737,18 @@ "retouch": "روتوش", "bikini": "بيكيني", "totalMinutes": "إجمالي الدقائق", - "feedback": "ملاحظات", - "likeToHear": "نود سماع ملاحظاتك، ومخاوفك بشأن خدمات الرعاية الصحية وتجربة الخدمات الإلكترونية. يرجى استخدام النموذج أدناه", + "feedback": "رأيك يهمنا", + "likeToHear": "يسعدنا سماع رأيك. شاركنا تجربتك أو أي ملاحظات حول خدماتنا الطبية أو الالكترونية عبر النموذج أدناه", "emptySubject": "يرجى إدخال الموضوع", "emptyMessage": "يرجى إدخال الرسالة", - "selectAttachment": "اختر المرفق", - "complainAppo": "شكوى بخصوص الموعد", - "complainAppoAlt": "شكوى بدون موعد", + "selectAttachment": "اختر الملف", + "complainAppo": "شكوى مع وجود موعد", + "complainAppoAlt": "شكوى بدون وجود موعد", "messageType": "نوع الرسالة", - "feedbackType": "نوع الملاحظات", + "feedbackType": "نوع الرسالة", "compliment": "تقدير", "suggestion": "اقتراح", - "yourFeedback": "تم إرسال ملاحظاتك", + "yourFeedback": "تم إرسال رأيك", "selectPart": "يرجى اختيار الجزء الذي تشتكي منه", "number": "رقم", "notClassified": "غير مصنف", @@ -716,6 +760,11 @@ "bloodDonation": "التبرع بالدم", "bloodDonationInfo": "من خلال هذه الخدمة، يمكنك تسجيل اسمك كمتبرع بالدم حيث سيتواصل معك بنك الدم في مجموعة الحبيب الطبية في حالة الحاجة إلى فصيلة الدم.", "bloodInstruction": "أدخل المعلومات المطلوبة، من أجل التسجيل في خدمة التبرع بالدم", + "aboutBloodDonation": "عن التبرع بالدم", + "bloodDonationDescription": "التبرع بالدم هو عمل نبيل ينقذ الأرواح. كل تبرع واحد يمكن أن ينقذ ما يصل إلى ثلاثة أشخاص. من خلال التبرع بالدم، فإنك تساعد المرضى الذين يحتاجون إلى عمليات نقل دم، وحالات الطوارئ، والعلاجات الطبية.", + "bloodDonationBenefit1": "عملية آمنة وسريعة (10-15 دقيقة)", + "bloodDonationBenefit2": "يمكنك التبرع كل 8-12 أسبوع", + "bloodDonationBenefit3": "فحص صحي مجاني لدمك", "viewTerms": "لعرض الشروط والأحكام", "wantConnectHmgNetwork": "عزيزي العميل، لا يوجد وصول إلى الإنترنت، هل ترغب في الاتصال بشبكة مجموعة الحبيب الطبية لاستخدام تطبيقنا، تأكد من أنك في نطاق شبكة مجموعة الحبيب الطبية", "failedToAccessHmgServices": "متصل بشبكة مجموعة الحبيب الطبية،\n\nلكن فشل في الوصول إلى خدمات مجموعة الحبيب الطبية", @@ -747,12 +796,18 @@ "infoTodo": "تم تصميم هذه الخدمة لتمكينك من الحصول على رابط سريع لقائمة المهام التي تحتاج القيام بها", "familyInfo": "من خلال هذه الخدمة، ستتمكن من ربط ملفات عائلتك الطبية بملفك الطبي حتى تتمكن من إدارة سجلاتهم عن طريق تسجيل الدخول إلى ملفك الطبي.", "rrtdDetails": "تقدم فريق الاستجابة السريعة خدمة طبية شاملة لجميع أنواع الحالات العاجلة والمستقرة من جميع الأعمار، بما في ذلك البالغين والمرضى الأطفال، وتغطي الخدمة فريق طبي مدرب تدريبًا عاليًا ومجهز تجهيزًا كاملاً قادرًا على تقديم أفضل رعاية طبية في منزل المريض.", - "homeHealthCareText": "تقدم هذه الخدمة مجموعة من خدمات الرعاية الصحية المنزلية، والمتابعة المستمرة والشاملة في أماكن إقامتهم لأولئك الذين لا يمكنهم الوصول إلى المرافق الصحية، مثل (تحليلات المختبر - الأشعة - التطعيمات - العلاج الطبيعي)، إلخ.", + "homeHealthCareText": "تقدم هذه الخدمة مجموعة من خدمات الرعاية الصحية المنزلية", "onlineCheckInAgreement": "تسجيل الوصول عبر الإنترنت مخصص للحالات التي لا تهدد الحياة. اتصل بالهلال الأحمر (997) أو اذهب إلى أقرب قسم طوارئ إذا كان هناك: \n\nعلامات السكتة الدماغية أو النوبة القلبية \nhالة من النوبات أو الإغماء \nهناك إصابة تهدد الطرف أو الحياة \nصورة لإصابات خطيرة", "infoEreferral": "تتيح لك هذه الخدمة تقديم طلب إحالة من أي مقدم رعاية صحية سواء داخل أو خارج المملكة العربية السعودية إلى أي من مستشفيات HMG، عن طريق ملء بعض بيانات المريض وإرفاق التقارير الطبية، علاوة على ذلك يمكنك تتبع حالة الطلب (قيد المعالجة، مقبول أو مرفوض)", "erConsultation": "تتيح لك هذه الخدمة إجراء استشارة افتراضية عبر الإنترنت عبر مكالمة فيديو مباشرة مع الطبيب من أي مكان وفي أي وقت.", "myInvoice": "القائمة", "invoiceList": "فواتيري", + "invoiceList2": "فواتيري", + "allInvoices": "الكل", + "hospitals": "المستشفيات", + "clinics": "العيادات", + "doctors": "الأطباء", + "selectDoctor": "اختر الطبيب", "thisItemIsNotAvailable": "هذا العنصر غير متوفر", "beforeAfterImages": "صور قبل وبعد", "clinicAcceptLivecare": "لا حاجة للانتظار أو الزيارة يمكنك الآن الحصول على استشارة طبية عبر مكالمة فيديو (لايف كير) في اسم العيادة وسيتصل بك الطبيب على الفور", @@ -773,47 +828,49 @@ "continuePlan": "متابعة خطة العلاج؟", "aboutApp": "حول التطبيق", "dontHaveAccount": "ليس لديك حساب؟", - "loginOrRegister": "تسجيل الدخول أو التسجيل", + "loginOrRegister": "تسجيل الدخول / إنشاء حساب", "myFiles": "ملفاتي", "resultsPending": "النتائج معلقة", "resultsAvailable": "النتائج متاحة", - "viewReport": "عرض التقرير", + "viewReport": "التفاصيل", "checkAvailability": "التحقق من التوفر", "readInstructions": "قراءة التعليمات", "searchLabReport": "ابحث عن تقرير المختبر", - "prescriptionDeliveryError": "هذه العيادة لا تدعم إعادة التعبئة والتسليم.", - "receiveOtpToast": "أين تود تلقي رمز التحقق OTP؟", - "enterPhoneNumber": "أدخل رقم الهاتف", + "prescriptionDeliveryError": "خدمة الصرف والتوصيل غير متاحة", + "receiveOtpToast": "رمز التحقق", + "enterPhoneNumber": "إدخال رقم الجوال", "enterEmailDesc": "أدخل عنوان بريدك الإلكتروني لإكمال عملية إنشاء ملف طبي", - "enterPhoneDesc": "أدخل رقم هاتفك لتلقي رمز التحقق ", - "pleaseChooseOption": "الرجاء اختيار من الخيارات أدناه لتلقي رمز التحقق OTP", - "prepareToElevate": "هل أنت مستعد لتحسين صحتك ورفاهيتك؟", - "iAcceptTermsConditions": "أوافق على الشروط والأحكام", - "alreadyHaveAccount": "هل لديك حساب بالفعل؟", - "loginNow": "تسجيل الدخول الآن", - "notice": "إشعار", + "enterPhoneDesc": "أدخل رقم جوالك لاستلام رمز التحقق ", + "pleaseChooseOption": "اين ترغب في استلام رمز التحقق؟", + "prepareToElevate": "رعايتك الصحية تبدأ من هنا", + "iAcceptTermsConditions": "الموافقة على الشروط والأحكام", + "alreadyHaveAccount": "لديك حساب؟", + "loginNow": "تسجيل الدخول", + "notice": "تنبيه", "oR": "أو", - "sendOTPWHATSAPP": "أرسل لي OTP عبر واتساب", - "sendOTPSMS": "أرسل لي OTP عبر الرسائل القصيرة", + "sendOTPWHATSAPP": "واتساب", + "sendOTPSMS": "رسالة نصية", "fullName": "الاسم الكامل", "married": "متزوج", "uae": "الإمارات العربية المتحدة", "malE": "ذكر", "loginBy": "تسجيل الدخول بواسطة", - "loginByOTP": "تسجيل الدخول بواسطة OTP", + "loginByOTP": "تسجيل الدخول بواسطة رمزالتحقق", "guest": "زائر", "switchAccount": "تبديل الحساب", "lastLoginBy": "آخر تسجيل دخول بواسطة", - "allSet": "جاهز! الآن يمكنك تسجيل الدخول باستخدام Face ID أو البصمة", - "enableQuickLogin": "تمكين تسجيل الدخول السريع", + "allSet": "الآن يمكنك تسجيل الدخول باستخدام بصمة الوجه أو البصمة", + "quickLogin": "الدخول السريع", + "enableQuickLogin": "تسجيل الدخول السريع", + "enableQuickLoginBtn": " تفعيل الدخول السريع", "enableMsg": "تمكين تسجيل الدخول السريع سيسمح بالتحقق من خلال Face ID / Biometric الخاص بجهازك الحالي", "notNow": "ليس الآن", "pendingActivation": "في انتظار التنشيط", "awaitingApproval": "انتظر القبول", - "news": "أخبار", + "news": "الأخبار", "ready": "جاهز", - "enterValidNationalId": "الرجاء إدخال رقم الهوية الوطنية أو رقم الملف الصحيح", - "enterValidPhoneNumber": "الرجاء إدخال رقم هاتف صالح", + "enterValidNationalId": "رقم الهوية أو رقم الملف غير صحيح", + "enterValidPhoneNumber": "الرجاء ادخال رقم الهاتف", "cannotEnterSaudiOrUAENumber": "لا يمكنك إدخال أرقام هواتف السعودية (00966) أو الإمارات (00971) عند اختيار دولة 'أخرى'", "medicalCentersWithCount": "{count} مراكز طبية", "medicalCenters": "مراكز طبية", @@ -824,15 +881,15 @@ "selectHospitalSubTitle": "يرجى اختيار المستشفى للموعد", "iAcceptThe": "أوافق على", "personalDetailsVerification": "التحقق من التفاصيل الشخصية", - "otpVerification": "التحقق من OTP", - "weHaveSendOTP": "لقد أرسلنا OTP إلى", + "otpVerification": "رمز التحقق", + "weHaveSendOTP": "تم ارسال رمز التحقق الى", "via": "عبر", "forRegistrationVerification": "للتحقق من التسجيل", - "didntReceiveIt": "لم تستلمه؟", + "didntReceiveIt": "لم يصلك الرمز؟", "resendOTP": "إعادة إرسال", - "resendIn": "إعادة الإرسال في", - "pleaseEnterAnationalID": "يرجى إدخال رقم الهوية الوطنية", - "pleaseEnterAFileNumber": "يرجى إدخال رقم الملف", + "resendIn": "إعادة الإرسال خلال", + "pleaseEnterAnationalID": "تسجيل الدخول برقم الهوية او الاقامة", + "pleaseEnterAFileNumber": "يرجى إدخال / رقم الملف", "pleaseEnterAValidEmail": "يرجى إدخال بريد إلكتروني صالح", "pleaseEnterFullName": "يرجى إدخال الاسم الكامل", "pleaseAcceptTermsConditions": "يرجى قبول الشروط والأحكام", @@ -851,30 +908,31 @@ "skip": "تخطي", "getStarted": "ابدأ الآن", "onboardingHeading1": "حجز المواعيد لم يكن أسهل من الآن.", - "onboardingBody1": "ببضع نقرات فقط يمكنك استشارة الطبيب الذي تختاره.", + "onboardingBody1": "ابحث عن طبيب واحجز موعد بكل سهوله", "onboardingHeading2": "الوصول إلى السجل الطبي بين يديك", "onboardingBody2": "تتبع تاريخك الطبي بما في ذلك الفحوصات المخبرية، الوصفات الطبية، التأمين، وغيرها.", - "hmgHospitals": "مستشفيات مجموعة الحبيب الطبية", - "hmcMedicalClinic": "مراكز مجموعة الحبيب الطبية", - "applyFilter": "تطبيق الفلتر", - "facilityAndLocation": "المرفق والموقع", - "regionAndLocation": "المنطقة والمواقع", - "clearAllFilters": "مسح جميع الفلاتر", - "filters": "فلاتر", + "hmgHospitals": "المستشفيات", + "hmcMedicalClinic": "المراكز الطبية", + "applyFilter": "تطبيق", + "facilityAndLocation": "المنشآت", + "regionAndLocation": "المنطقة", + "clearAllFilters": "اعادة تعيين", + "filters": "تحديد البحث", "searchClinic": "بحث عن عيادة", - "normal": "عادي", + "normal": "طبيعي", "attention": "انتباه", - "monitor": "مراقبة", + "monitor": "يتطلب متابعة", "noSpecialResult": "لا توجد نتائج خاصة", "setTheDateRange": "تعيين النطاق الزمني", - "historyFlowchart": "مخطط تدفق التاريخ", + "selectDate": "اختر التاريخ", + "historyFlowchart": "السجل التاريخي", "to": "إلى", "startDate": "تاريخ البدء", "endDate": "تاريخ الانتهاء", - "walkin": "زيارة بدون موعد", + "walkin": "موعد", "laserClinic": "عيادة الليزر", "continueString": "يكمل", - "covid_info": "تجري مستشفيات د. سليمان الحبيب فحص فيروس كورونا المستجد وتصدر شهادات السفر على مدار الساعة، طوال أيام الأسبوع، وبسرعة ودقة عالية. يمكن للراغبين في الاستفادة من هذه الخدمة زيارة أحد فروع مستشفيات د. سليمان الحبيب وإجراء فحص كورونا خلال بضع دقائق والحصول على النتائج خلال عدة ساعات خدمة فحص فيروس كورونا Covid 19 بتقنية PCR للكشف عن الفيروس وفقاً لأعلى المعايير العالمية وبأحدث أجهزة RT-PCR عالية الدقة (GeneXpert الأمريكي وغيره)، وهي طرق معتمدة من قبل هيئة الغذاء والدواء وكذلك من قبل المركز السعودي للوقاية من الأمراض المُعدية", + "covid_info": "تجري مستشفيات د. سليمان الحبيب فحص فيروس كورونا المستجد وتصدر شهادات السفر على مدار الساعة، طوال أيام الأسبوع، وبسرعة ودقة عالية. يمكن للراغبين في الاستفادة من هذه الخدمة زيارة أحد فروع مستشفيات د. سليمان الحبيب وإجراء فحص كورونا خلال بضع دقائق والحصول على النتائج خلال عدة ساعات خدمة فحص فيروس كورونا Covid 19 بتقنية PCR للكشف عن الفيروس وفقاً لأعلى المعايير العالمية وبأحدث أجهزة RT-PCR عالية الدقة (GeneXpert الأمريكي وغيره)، وهي طرق معتمدة من قبل هيئة الغذاء والدواء وكذلك من قبل المركز السعودي للوقاية من الأمراض المُعدية", "appointmentDetails": "تفاصيل الموعد", "checkingDoctorAvailability": "جاري التحقق من توفر الطبيب...", "cancellingAppointmentPleaseWait": "جاري إلغاء الموعد، يرجى الانتظار...", @@ -882,29 +940,30 @@ "notConfirmed": "غير مؤكد", "appointmentStatus": "حالة الموعد", "doctorWillCallYou": "سيتصل بك الطبيب عندما يقترب موعدك.", - "getDirections": "الحصول على الاتجاهات", - "notifyMeBeforeAppointment": "أبلغني قبل الموعد", - "fetchingLabResults": "جاري جلب نتائج المختبر...", - "fetchingRadiologyResults": "جاري جلب نتائج الأشعة...", - "fetchingAppointmentPrescriptions": "جاري جلب وصفات الموعد...", + "getDirections": "الاتجاهات", + "notifyMeBeforeAppointment": "تنبيهي قبل الموعد", + "fetchingLabResults": "يرجى الانتظار…", + "fetchingRadiologyResults": "يرجى الانتظار…", + "fetchingAppointmentPrescriptions": "يرجى الانتظار…", "noPrescriptionsForAppointment": "ليس لديك أي وصفات طبية لهذا الموعد.", "amountBeforeTax": "المبلغ قبل الضريبة", "rebookAppointment": "إعادة حجز الموعد", - "fetchingDoctorSchedulePleaseWait": "جاري جلب جدول الطبيب، يرجى الانتظار...", - "pickADate": "اختر تاريخاً", + "fetchingDoctorSchedulePleaseWait": "يرجى الانتظار…", + "pickADate": "اختيار الوقت والتاريخ", "confirmingAppointmentPleaseWait": "جاري تأكيد الموعد، يرجى الانتظار...", "appointmentConfirmedSuccessfully": "تم تأكيد الموعد بنجاح", "appointmentPayment": "دفع الموعد", "checkingPaymentStatusPleaseWait": "جاري التحقق من حالة الدفع، يرجى الانتظار...", "paymentFailedPleaseTryAgain": "فشل الدفع! يرجى المحاولة مرة أخرى.", "appointmentCheckIn": "تسجيل حضور الموعد", - "insuranceExpiredOrInactive": "التأمين منتهي الصلاحية أو غير نشط", - "totalAmountToPay": "المبلغ الإجمالي المستحق", - "vat15": "ضريبة القيمة المضافة 15%", + "insuranceExpiredOrInactive": "التأمين غير ساري (منتهي او غير مفعل)", + "totalAmountToPay": "المبلغ الإجمالي", + "vat15": "ضريبة القيمة المضافة (15%)", "general": "عام", "liveCare": "لايف كير", - "recentVisits": "الزيارات الأخيرة", - "searchByClinic": "البحث حسب العيادة", + "recentVisits": "قائمة الزيارات", + "favouriteDoctors": "الأطباء المفضلون", + "searchByClinic": "العيادة", "tapToSelectClinic": "انقر لاختيار العيادة", "searchByDoctor": "البحث حسب الطبيب", "tapToSelect": "انقر للاختيار", @@ -913,8 +972,8 @@ "immediateConsultation": "استشارة فورية", "scheduledConsultation": "استشارة مجدولة", "pharmaLiveCare": "لايف كير الصيدلية", - "notSureHelpMeChooseClinic": "غير متأكد؟ ساعدني في اختيار عيادة!", - "mentionYourSymptomsAndFindDoctors": "اذكر أعراضك واعثر على قائمة الأطباء وفقاً لذلك", + "notSureHelpMeChooseClinic": "هل تريد مساعدة في اختيار العيادة؟", + "mentionYourSymptomsAndFindDoctors": "أدخل حالتك الصحية للحصول على قائمة الأطباء", "immediateService": "خدمة فورية", "noNeedToWaitGetMedicalConsultation": "لا حاجة للانتظار، ستحصل على استشارة طبية فورية عبر مكالمة فيديو", "noVisitRequired": "لا حاجة للزيارة", @@ -923,13 +982,13 @@ "freeMedicineDelivery": "توصيل مجاني للأدوية", "offersFreeMedicineDelivery": "يوفر توصيل مجاني للأدوية لموعد لايف كير", "dentalChiefComplaints": "الشكاوى الرئيسة للأسنان", - "viewAvailableAppointments": "عرض المواعيد المتاحة", + "viewAvailableAppointments": "المواعيد المتاحة", "doctorProfile": " ملف الطبيب", "waitingAppointment": "موعد الانتظار", "hospitalInformation": "معلومات المستشفى", - "fetchingAppointmentShare": "جاري جلب تفاصيل الموعد...", + "fetchingAppointmentShare": "يرجى الانتظار…", "bookingYourAppointment": "جاري حجز موعدك...", - "selectLiveCareClinic": "اختر عيادة لايف كير", + "selectLiveCareClinic": "عيادة لايف كير", "checkingForExistingDentalPlan": "جاري التحقق من وجود خطة أسنان حالية، يرجى الانتظار...", "dentalTreatmentPlan": "خطة علاج الأسنان", "youHaveExistingTreatmentPlan": "لديك خطة علاج حالية: ", @@ -940,26 +999,26 @@ "viewNearestAppos": "عرض أقرب المواعيد المتاحة", "noDoctorFound": "لم يتم العثور على طبيب مطابق للمعايير المحددة...", "yesPleasImInAHurry": "نعم من فضلك، أنا في عجلة من أمري", - "fetchingFeesPleaseWait": "جاري جلب الرسوم، يرجى الانتظار...", + "fetchingFeesPleaseWait": "يرجى الانتظار...", "noThanksPhysicalVisit": "لا، شكراً. أفضل الزيارة الشخصية", "offline": "غير متصل", "videoCall": "مكالمة فيديو", - "liveVideoCallWithHMGDoctors": "مكالمة فيديو مباشرة مع أطباء مجموعة الحبيب الطبية", - "liveAudioCallWithHMGDoctors": "مكالمة صوتية مباشرة مع أطباء مجموعة الحبيب الطبية", + "liveVideoCallWithHMGDoctors": "مكالمة فيديو مباشرة مع مختص", + "liveAudioCallWithHMGDoctors": "مكالمة صوتية مباشرة مع مختص", "audioCall": "مكالمة صوتية", "phoneCall": "مكالمة هاتفية", - "livePhoneCallWithHMGDoctors": "مكالمة هاتفية مباشرة مع أطباء مجموعة الحبيب الطبية", - "reviewLiveCareRequest": "مراجعة طلب لايف كير", - "selectedLiveCareType": "نوع لايف كير المحدد", - "selectLiveCareCallType": "اختر نوع مكالمة لايف كير", + "livePhoneCallWithHMGDoctors": "مكالمة هاتفية مباشرة مع مختص", + "reviewLiveCareRequest": "تفاصيل الطلب", + "selectedLiveCareType": "نوع الطلب", + "selectLiveCareCallType": "نوع مكالمة لايف كير", "confirmingLiveCareRequest": "جاري تأكيد طلب لايف كير، يرجى الانتظار...", "unknownErrorOccurred": "حدث خطأ غير معروف...", "liveCarePermissionsMessage": "يتطلب لايف كير أذونات الكاميرا والميكروفون والموقع والإشعارات لتمكين الاستشارة الافتراضية بين المريض والطبيب، يرجى السماح بهذه الأذونات للمتابعة.", - "liveCarePayment": "دفع لايف كير", + "liveCarePayment": "الدفع", "mada": "مدى", "visaOrMastercard": "فيزا أو ماستركارد", "tamara": "تمارا", - "fetchingApplePayDetails": "جاري جلب تفاصيل Apple Pay، يرجى الانتظار...", + "fetchingApplePayDetails": "يرجى الانتظار…", "liveCarePendingRequest": "طلب لايف كير قيد الانتظار", "callLiveCareSupport": "اتصل بدعم لايف كير", "whatIsWaitingAppointment": "ما هو موعد الانتظار؟", @@ -977,8 +1036,8 @@ "processingCheckIn": "جاري معالجة تسجيل الحضور...", "bookingWaitingAppointment": "جاري حجز موعد الانتظار، يرجى الانتظار...", "enterValidIDorIqama": "يرجى إدخال رقم هوية وطنية أو رقم ملف صالح", - "selectAppointment": "حدد الموعد", - "rebookSameDoctor": "أعد الحجز مع نفس الطبيب", + "selectAppointment": "اختر الموعد", + "rebookSameDoctor": "حجز موعد", "queueing": "قائمة الانتظار", "inQueue": "في قائمة الانتظار", "yourTurn": "دورك", @@ -997,9 +1056,9 @@ "appointmentsList": "قائمة المواعيد", "allAppt": "جميع المواعيد", "upcoming": "القادمة", - "completed": "المكتملة", + "completed": "تمت الزيارة", "noAppointmentsYet": "ليس لديك أي مواعيد بعد.", - "viewProfile": "عرض الملف الشخصي", + "viewProfile": "الملف الشخصي", "choosePreferredHospitalForService": "اختر المستشفى المفضل لديك للخدمة", "noHospitalsFound": "لم يتم العثور على مستشفيات", "cancelOrderConfirmation": "هل أنت متأكد أنك تريد إلغاء هذا الطلب؟", @@ -1017,9 +1076,9 @@ "noServicesAvailable": "لا توجد خدمات متاحة", "selectAService": "اختر خدمة", "comprehensiveCheckup": "الفحص الشامل", - "viewNearestHMGLocations": "عرض أقرب مواقع مجموعة الحبيب الطبية", + "viewNearestHMGLocations": "عرض أقرب فرع", "provideFeedbackOnServices": "قدم ملاحظاتك على خدماتنا", - "liveChatWithHMG": "خيار الدردشة المباشرة مع مجموعة الحبيب الطبية", + "liveChatWithHMG": "محادثة مباشرة مع الموظف", "send": "إرسال", "status": "الحالة", "sendingFeedback": "جاري إرسال الملاحظات...", @@ -1067,11 +1126,11 @@ "hereIsYourReferralNumber": "هذا هو رقم الإحالة الخاص بك #: ", "searchEReferral": "البحث عن إحالة إلكترونية", "enterRequiredInfoToSearch": "يرجى إدخال المعلومات المطلوبة للبحث عن إحالة إلكترونية", - "selectPickupDirection": "اختر اتجاه الاستلام", + "selectPickupDirection": "اختر الاتجاه", "selectDirection": "اختر الاتجاه", "toHospital": "إلى المستشفى", "fromHospital": "من المستشفى", - "selectWay": "اختر الطريقة", + "selectWay": "الاتجاهات", "oneWay": "اتجاه واحد", "twoWay": "اتجاهين", "selectPickupDetails": "اختر تفاصيل الاستلام", @@ -1079,16 +1138,16 @@ "selectDetails": "اختر التفاصيل", "work": "العمل", "pick": "استلام", - "insideTheHome": "داخل المنزل", + "insideTheHome": "من المنزل", "haveAnyAppointment": "هل لديك أي موعد", - "amountPaidAtHospital": "سيتم دفع المبلغ في المستشفى", - "submitRequest": "إرسال الطلب", - "enterPickupLocationManually": "أدخل موقع الاستلام يدوياً", + "amountPaidAtHospital": "الدفع عند الوصول للمستشفى", + "submitRequest": "تأكيد الطلب", + "enterPickupLocationManually": "تحديد موقع الاستلام", "enterPickupLocation": "أدخل موقع الاستلام", - "trackingDetails": "تفاصيل التتبع", + "trackingDetails": "استدعاء سيارة إسعاف", "cancelRequest": "إلغاء الطلب", "shareLocationWhatsapp": "مشاركة موقعك المباشر على واتساب", - "pleaseWaitForCall": "يرجى انتظار المكالمة", + "pleaseWaitForCall": "سنتصل بك قريبًا لتأكيد الطلب", "toHospitalLower": "إلى المستشفى", "contact": "اتصال", "failed": "فشل", @@ -1097,67 +1156,83 @@ "onTheWayToHospital": " في الطريق إلى المستشفى", "arrivedAtHospital": "وصل إلى المستشفى", "orderCancel": "إلغاء الطلب", - "emergencyCheckIn": "تسجيل الطوارئ الإلكتروني", + "emergencyCheckIn": "تسجيل الوصول في الطواريء", "erOnlineCheckInDescription": "تتيح هذه الخدمة للمرضى تسجيل موعد الطوارئ قبل الوصول.", "erOnlineCheckInSuccess": "تم تسجيل وصول الطوارئ بنجاح. الرجاء التوجه إلى منطقة الانتظار.", "erOnlineCheckInError": "حدث خطأ غير متوقع أثناء عملية التسجيل. يرجى التواصل مع الدعم.", - "fetchingHospitalsList": "جاري جلب قائمة المستشفيات...", - "fetchingPaymentInformation": "جاري جلب معلومات الدفع...", + "fetchingHospitalsList": "يرجى الانتظار…", + "fetchingPaymentInformation": "يرجى الانتظار…", "erVisitDetails": "تفاصيل زيارة الطوارئ", "erClinic": "عيادة الطوارئ", "vatWithAmount": "الضريبة 15% ({amount})", "erAppointmentBookedSuccess": "تم حجز موعدك بنجاح. يرجى إتمام إجراءات تسجيل الوصول عند وصولك إلى المستشفى.", "underProcessing": "قيد المعالجة", - "canceledByPatient": "ملغى بواسطة المريض", + "canceledByPatient": "تم الالغاء", "rapidResponseTeam": "فريق الاستجابة السريع", "allFacilities": "جميع المرافق", "selectLocation": "اختر الموقع", "pleaseSelectTheLocation": "يرجى اختيار الموقع", - "viewLocationGoogleMaps": "عرض الموقع على خرائط جوجل", + "viewLocationGoogleMaps": "الاتجاهات", "callAmbulance": "استدعاء سيارة إسعاف", - "requestAmbulanceInEmergency": "طلب سيارة إسعاف في حالة الطوارئ من المنزل أو المستشفى", - "confirmation": "تأكيد", - "areYouSureYouWantToCallAmbulance": "هل أنت متأكد أنك تريد استدعاء سيارة إسعاف؟", - "getDetailsOfNearestBranch": "احصل على تفاصيل أقرب فرع بما في ذلك الاتجاهات", - "areYouSureYouWantToCallRRT": "هل أنت متأكد أنك تريد استدعاء فريق الاستجابة السريعة (RRT)؟", - "priorERCheckInToSkipLine": "تسجيل الوصول المسبق في الطوارئ لتجاوز الطابور والدفع في الاستقبال.", - "areYouSureYouWantToMakeERCheckIn": "هل أنت متأكد أنك تريد إجراء تسجيل وصول الطوارئ؟", - "checkingYourERAppointmentStatus": "جاري التحقق من حالة موعد الطوارئ الخاص بك...", + "requestAmbulanceInEmergency": "طلب سيارة اسعاف للمساعدة الفورية في الحالات الطارئة.", + "confirmation": "استمرار", + "areYouSureYouWantToCallAmbulance": "هل تود تأكيد طلب سيارة الإسعاف؟", + "getDetailsOfNearestBranch": "الحصول على تفاصيل أقرب مركز طوارئ والاتجاهات إليه", + "areYouSureYouWantToCallRRT": "هل تريد استدعاء فريق الاستجابة السريعة؟", + "priorERCheckInToSkipLine": "سجّل وصولك قبل الحضور إلى قسم الطوارئ لتفادي الانتظار وتسهيل إجراءات الدفع.", + "areYouSureYouWantToMakeERCheckIn": "هل تريد إجراء تسجيل وصول الطوارئ؟", + "checkingYourERAppointmentStatus": "يرجى الانتظار…", "transportOptions": "خيارات النقل", - "selectHospitalForAdvancePayment": "يرجى اختيار المستشفى الذي ترغب في دفع مبلغ مقدم له.", - "recharge": "إعادة الشحن", + "selectHospitalForAdvancePayment": "يرجى تحديد المستشفى أولاً.", + "recharge": "شحن المحفظة", + "withdraw": "سحب", "activityLevel": "مستوى النشاط", "selectActivityLevel": "حدد مستوى النشاط", + "almostInactive": "غير نشط تقريبًا (بدون تمارين)", + "lightlyActive": "نشاط خفيف", + "lightlyActive13Days": "نشاط خفيف (١-٣) أيام في الأسبوع", + "superActive": "نشاط مكثف (تمارين شاقة جدًا)", "caloriesPerDay": "السعرات الحرارية في اليوم الواحد", "dietType": "نوع النظام الغذائي", "selectDietType": "حدد نوع النظام الغذائي", "bodyFrameSize": "حجم إطار الجسم", "selectBodyFrameSize": "حدد حجم إطار الجسم", + "bodyFrameSmall": "صغير (الأصابع متداخلة)", + "bodyFrameMedium": "متوسط (الأصابع متلامسة)", + "bodyFrameLarge": "كبير (الأصابع لا تتلامس)", "averageCycleLength": "متوسط طول الدورة الشهرية (عادةً 28 يومًا)", "averageLutealPhase": "متوسط طول المرحلة الأصفرية (عادةً 14 يومًا)", - "convert": "يتحول", + "convert": "تحويل الوحدات", "calculate": "احسب", - "healthCalculators": "حاسبات الصحة", - "healthConverters": "محولات الصحة", + "healthCalculators": "الحاسبات الصحية", + "healthConverters": "تحويل الوحدات", "generalHealth": "الصحة العامة", "relatedToBMICalories": "متعلق بمؤشر كتلة الجسم والسعرات الحرارية ودهون الجسم وما إلى ذلك للبقاء على اطلاع دائم بصحتك.", - "selectCalculator": "اختر الآلة الحاسبة", + "selectCalculator": "اختر الحاسبة", "womensHealth": "صحة المرأة", "relatedToPeriodsOvulation": "متعلق بالدورة الشهرية والإباضة والحمل ومواضيع أخرى.", "bloodSugar": "سكر الدم", - "trackYourGlucoseLevels": "تتبع مستويات الجلوكوز لديك، وفهم الاتجاهات، واحصل على رؤى مخصصة لصحة أفضل.", + "trackYourGlucoseLevels": "تتبع مستويات الجلوكوز واحصل على رؤى مخصصة لصحة أفضل.", "bloodCholesterol": "كوليسترول الدم", "monitorCholesterolLevels": "راقب مستويات الكوليسترول، وقيّم مخاطر صحة القلب، واتخذ خطوات استباقية للرفاهية.", "triglyceridesFatBlood": "الدهون الثلاثية في الدم", "understandTriglyceridesImpact": "افهم تأثير الدهون الثلاثية على صحة القلب مع رؤى مخصصة وتوصيات الخبراء.", - "bmiCalculator": "حاسبة\nمؤشر كتلة الجسم", - "caloriesCalculator": "حاسبة\nالسعرات الحرارية", - "bmrCalculator": "حاسبة\nمعدل الأيض الأساسي", - "idealBodyWeight": "الوزن المثالي\nللجسم", - "bodyFatCalculator": "حاسبة\nدهون الجسم", - "carbsProteinFat": "الكربوهيدرات\nالبروتين والدهون", - "ovulationPeriod": "فترة\nالإباضة", - "deliveryDueDate": "تاريخ الولادة\nالمتوقع", + "bmiCalculator": "مؤشر كتلة الجسم", + "caloriesCalculator": "السعرات الحرارية", + "bmrCalculator": "معدل الايض", + "idealBodyWeight": "الوزن المثالي", + "bodyFatCalculator": "دهون الجسم", + "carbsProteinFat": "الكربوهيدرات البروتين والدهون", + "ovulationPeriod": "فترةالإباضة", + "deliveryDueDate": "تاريخ الولادةالمتوقع", + "bmiCalculatorDesc": "حساب مؤشر كتلة الجسم لفهم نطاق الوزن الصحي", + "caloriesCalculatorDesc": "حساب السعرات الحرارية اللازمة يوميا للحفاظ على الوزن الصحي", + "bmrCalculatorDesc": "حساب معدل الأيض الأساسي والاحتياج اليومي من الطاقة", + "idealBodyWeightDesc": "حساب الوزن المثالي حسب الطول والعمر وبنية الجسم", + "bodyFatCalculatorDesc": "حساب نسبة دهون الجسم لتتبع أهداف اللياقة والصحة", + "carbsProteinFatDesc": "حساب توازن الكربوهيدرات والبروتين والدهون في النظام الغذائي", + "ovulationPeriodDesc": "حساب فترة الخصوبة والتخطيط للحمل", + "deliveryDueDateDesc": "حساب تاريخ الولادة المتوقع ومراحل الحمل", "low": "منخفض", "preDiabetic": "ما قبل السكري", "high": "مرتفع", @@ -1189,67 +1264,67 @@ "monitorBloodPressureLevels": "راقب مستويات ضغط الدم لديك، وتتبع القراءات الانقباضية والانبساطية، وحافظ على صحة قلبك.", "trackWeightProgress": "تتبع تقدم وزنك، وضع الأهداف، وحافظ على كتلة جسم صحية من أجل العافية الشاملة.", "bookAppointment": "حجز\nموعد", - "completeCheckup": "الفحص الشامل", + "completeCheckup": "الفحص \n الشامل", "indoorNavigation": "الملاحة الداخلية", - "eReferralServices": "خدمات الإحالة الإلكترونية", + "eReferralServices": "الإحالة \n الإلكترونية", "bloodDonation": "التبرع بالدم", "dailyWaterMonitor": "مراقب الماء اليومي", - "fetchingYourWaterIntakeDetails": "جاري جلب تفاصيل استهلاك الماء الخاص بك.", + "fetchingYourWaterIntakeDetails": "يرجى الانتظار…", "healthCalculatorsServices": "حاسبات\nالصحة", "healthConvertersServices": "محولات\nالصحة", "smartWatchesServices": "الساعات\nالذكية", - "exploreServices": "استكشف الخدمات", - "medicalAndCareServices": "الخدمات الطبية والرعاية", + "exploreServices": "قائمة الخدمات", + "medicalAndCareServices": "خدمات الرعاية الطبية", "hmgServices": "خدمات مجموعة الحبيب الطبية", "personalServices": "الخدمات الشخصية", "habibWallet": "محفظة الحبيب", + "habibWallet2": "المحفظة", "loginToViewWalletBalance": "سجل الدخول لعرض رصيد محفظتك", - "recharge": "إعادة الشحن", "loginToViewMedicalFile": "سجل الدخول لعرض ملفك الطبي", "addMember": "إضافة عضو", "addFamilyMember": "إضافة فرد من العائلة", - "pleaseFillBelowFieldToAddNewFamilyMember": "يرجى ملء الحقل أدناه لإضافة فرد جديد من العائلة إلى ملفك الشخصي", - "healthTools": "أدوات الصحة", + "pleaseFillBelowFieldToAddNewFamilyMember": "أدخل البيانات أدناه لإضافة فرد جديد إلى عائلتك", + "healthTools": "الادوات الصحية", "supportServices": "خدمات الدعم", "virtualTour": "جولة افتراضية", "carParking": "موقف السيارات", "latestNews": "آخر الأخبار", - "hmgContact": "اتصل بمجموعة الحبيب الطبية", + "hmgContact": "تواصل معنا", "durationCannotExceed90": "لا يجوز أن تتجاوز المدة 90 دقيقة", "unexpectedError": "حدث خطأ غير متوقع", "gettingAmbulanceTransportOption": "جاري الحصول على خيارات نقل الإسعاف", - "fetchingAppointment": "جاري جلب الموعد", + "fetchingAppointment": "يرجى الانتظار…", "doYouWantToCancelTheRequest": "هل تريد إلغاء الطلب", "cancellingRequest": "جاري إلغاء الطلب", "fetchingTermsAndConditions": "جاري جلب الشروط والأحكام", "selectLocationPrescriptionDelivery": "يرجى تحديد موقع توصيل الوصفة الطبية", - "noRadiologyOrders": "لم يتم العثور على أي طلبات تصوير شعاعي", + "noRadiologyOrders": "لم يتم العثور على نتائج", "ageIsRequired": "العمر مطلوب", - "invalidAge": "العمر غير صالح", + "invalidAge": "العمر غير صحيح", "ageMustBeBetween11And120": "يجب أن يكون العمر بين 11 و 120", "heightIsRequired": "الطول مطلوب", - "invalidHeight": "الطول غير صالح", + "invalidHeight": "الطول غير صحيح", "weightIsRequired": "الوزن مطلوب", - "invalidWeight": "الوزن غير صالح", - "timeToDrinkWater": "حان وقت شرب الماء! 💧", - "stayHydratedDrinkWater": "ابق رطبًا! اشرب {amount} مل من الماء.", - "visitPharmacyOnline": "زيارة الصيدلية على الانترنت", + "invalidWeight": "الوزن غير صحيح", + "timeToDrinkWater": "حان وقت شرب الماء!", + "stayHydratedDrinkWater": "لا تنسى شرب {amount} مل من الماء.", + "visitPharmacyOnline": "الصيدلية الالكترونية", "howAreYouFeelingToday": "كيف حالك اليوم؟", - "checkYourSymptomsWithScale": "تحقق من أعراضك باستخدام ذا المقياس", - "checkYourSymptoms": "تحقق من أعراضك", + "checkYourSymptomsWithScale": "نحن هنا لتدقيق الاعراض ومساعدتك في الوصول الى الطبيب المناسب", + "checkYourSymptoms": "مدقق الأعراض", "noUpcomingAppointmentPleaseBook": "ليس لديك أي مواعيد قادمة. يرجى حجز موعد", "youHaveEROnlineCheckInRequest": "لديك طلب تسجيل وصول عبر الإنترنت للطوارئ", "quickLinks": "روابط سريعة", "viewMedicalFileLandingPage": "عرض الملف الطبي", "immediateLiveCareRequest": "طلب لايف كير فوري", - "yourTurnIsAfterPatients": "دورك بعد {count} مريض.", + "yourTurnIsAfterPatients": "أمامك {count} مريض. سيقوم الطبيب بالتواصل معكً.\n", "dontHaveHHCOrders": "ليس لديك أي أوامر رعاية صحية منزلية حتى الآن.", "hhcOrders": "أوامر الرعاية الصحية المنزلية", "requestedServices": "الخدمات المطلوبة", "selectServices": "اختر الخدمات", "selectedServices": "الخدمات المختارة", - "createNewRequest": "إنشاء طلب جديد", - "youHaveNoPendingRequests": "ليس لديك أي طلبات معلقة.", + "createNewRequest": "طلب جديد", + "youHaveNoPendingRequests": "ليس لديك أي طلبات", "noInsuranceDataFound": "لم يتم العثور على بيانات التأمين...", "noInsuranceUpdateRequest": "لم يتم العثور على أي طلبات لتحديث بيانات التأمين.", "policyNumberInsurancePage": "الوثيقة: {number}", @@ -1259,9 +1334,9 @@ "noInsuranceApprovals": "لم تحصل على أي موافقات تأمينية حتى الآن.", "noInsuranceWithHMG": "ليس لديك تأمين مسجل لدى مجموعة الحبيب الطبية.", "referenceRange": "النطاق المرجعي", - "downloadReport": "تنزيل التقرير", + "downloadReport": "تحميل", "generatingReport": "جارٍ إنشاء التقرير، يرجى الانتظار...", - "noLabResults": "ليس لديك أي نتائج مختبرية حتى الآن.", + "noLabResults": "لا يوجد نتائج", "labResultDetails": "تفاصيل نتائج المختبر", "resultOf": "نتيجة", "whatIsThisResult": "ما هي هذه النتيجة؟", @@ -1271,29 +1346,30 @@ "results": "نتائج", "viewResults": "عرض النتائج", "rebook": "إعادة الحجز", - "noOphthalmologyAppointments": "لم يتم العثور على أي مواعيد في قسم طب العيون...", - "noVitalSignsRecordedYet": "لا توجد علامات حيوية مسجلة بعد", - "appointmentsAndVisits": "المواعيد والزيارات", + "noOphthalmologyAppointments": "لم يتم العثور على أي مواعيد", + "noVitalSignsRecordedYet": "لا توجد علامات حيوية", + "appointmentsAndVisits": "المواعيد", "labAndRadiology": "المختبر والأشعة", - "activeMedicationsAndPrescriptions": "الأدوية النشطة والوصفات الطبية", + "activeMedicationsAndPrescriptions": "الوصفات الطبية", "allPrescriptions": "جميع الوصفات", "allMedications": "جميع الأدوية", - "youDontHaveAnyPrescriptionsYet": "ليس لديك أي وصفات طبية بعد.", - "youDontHaveAnyCompletedVisitsYet": "ليس لديك أي زيارات مكتملة بعد", - "others": "أخرى", + "youDontHaveAnyPrescriptionsYet": "ليس لديك أي وصفات طبية", + "youDontHaveAnyCompletedVisitsYet": "ليس لديك أي زيارات مكتملة", + "others": "خدمات أخرى", "allergyInfo": "معلومات الحساسية", "vaccineInfo": "معلومات اللقاحات", "updateInsuranceInfo": "تحديث التأمين", - "myInvoicesList": "قائمة فواتيري", - "ancillaryOrdersList": "قائمة الطلبات المساعدة", - "youDontHaveAnySickLeavesYet": "ليس لديك أي إجازات مرضية بعد.", + "myInvoicesList": "الفواتير", + "ancillaryOrdersList": "الخدمات الطبية المساندة", + "youDontHaveAnySickLeavesYet": "ليس لديك أي إجازات مرضية", "medicalReports": "التقارير الطبية", "sickLeaveReport": "تقرير الإجازة المرضية", "weightTracker": "متتبع الوزن", "askYourDoctor": "اسأل طبيبك", "internetPairing": "الاقتران بالإنترنت", "requested": "مطلوب", - "youDontHaveAnyMedicalReportsYet": "ليس لديك أي تقارير طبية بعد.", + "readyToDownload": "جاهز للتحميل", + "youDontHaveAnyMedicalReportsYet": "ليس لديك أي تقارير طبية", "requestMedicalReport": "طلب تقرير طبي", "youDoNotHaveAnyAppointmentsToRequestMedicalReport": "ليس لديك أي مواعيد لطلب تقرير طبي.", "areYouSureYouWantToRequestMedicalReport": "هل أنت متأكد أنك تريد طلب تقرير طبي لهذا الموعد؟", @@ -1301,7 +1377,7 @@ "monthlyHealthSummaryReportDisclaimer": "يعكس تقرير الملخص الصحي الشهري هذا المؤشرات الصحية ونتائج التحليل لأحدث الزيارات. يرجى ملاحظة أن هذا سيتم إرساله تلقائيًا من النظام ولا يعتبر تقريرًا رسميًا لذا لا ينبغي اتخاذ أي قرار طبي بناءً عليه", "updatingMonthlyReportStatus": "جاري تحديث حالة التقرير الشهري...", "monthlyReportStatusUpdatedSuccessfully": "تم تحديث حالة التقرير الشهري بنجاح", - "whoCanViewMyMedicalFile": "من يمكنه عرض ملفي الطبي؟", + "whoCanViewMyMedicalFile": "من يمكنه الاطلاع على ملفي الطبي", "acceptedYourRequestToBeYourFamilyMember": "{status} طلب الانضمام الى أفراد عائلتك", "canViewYourFile": "يمكنه عرض ملفك", "hasARequestPendingToBeYourFamilyMember": "لديه طلب {status} ليكون فردًا من عائلتك", @@ -1312,15 +1388,14 @@ "selectAProfile": "الرجاء تحديد ملف تعريف", "switchFamilyFile": "قم بالتبديل من قائمة الملفات الطبية أدناه", "medicalFiles": "الملفات الطبية", - "addANewFamilyMember": "إضافة فرد جديد من العائلة", + "addANewFamilyMember": "اضافة", "viewInvoiceDetails": "عرض تفاصيل الفاتورة", - "outPatient": "مريض خارجي", "invoiceDetails": "تفاصيل الفاتورة", "sendingEmailPleaseWait": "جاري إرسال ال��ريد الإلكتروني، يرجى الانتظار...", "emailSentSuccessfullyMessage": "تم إرسال البريد الإلكتروني بنجاح.", "discount": "خصم", "paid": "مدفوع", - "fetchingInvoiceDetails": "جارٍ جلب تفاصيل الفاتورة، يرجى الانتظار...", + "fetchingInvoiceDetails": "يرجى الانتظار…", "scanQRCode": "مسح رمز الاستجابة السريعة", "parkingSlotDetails": "تفاصيل موقف السيارة", "slotNumber": "رقم الموقف: {code}", @@ -1328,18 +1403,18 @@ "parkingDate": "التاريخ: {date}", "parkedSince": "متوقف منذ: {time}", "resetDirection": "إعادة تعيين الاتجاه", - "noPrescriptionOrdersYet": "ليس لديك أي طلبات وصفات طبية حتى الآن.", - "fetchingPrescriptionPDFPleaseWait": "جاري جلب ملف الوصفة الطبية، يرجى الانتظار...", + "noPrescriptionOrdersYet": "ليس لديك أي طلبات.", + "fetchingPrescriptionPDFPleaseWait": "يرجى الانتظار…", "ratingValue": "التقييم: {rating}", "downloadPrescription": "تحميل الوصفة الطبية", - "fetchingPrescriptionDetails": "جاري جلب تفاصيل الوصفة الطبية...", + "fetchingPrescriptionDetails": "يرجى الانتظار…", "switchBackFamilyFile": "العودة إلى ملف العائلة", - "profileAndSettings": "الملف الشخصي والإعدادات", + "profileAndSettings": "الإعدادات", "quickActions": "إجراءات سريعة", "notificationsSettings": "إعدادات الإشعارات", "touchIDFaceIDServices": "خدمات Touch ID / Face ID", "personalInformation": "المعلومات الشخصية", - "updateEmailAddress": "تحديث عنوان البريد الإلكتروني", + "updateEmailAddress": "عنوان البريد الالكتروني", "helpAndSupport": "المساعدة والدعم", "permissionsProfile": "الأذونات", "privacyPolicy": "سياسة الخصوصية", @@ -1358,16 +1433,16 @@ "weightSymptoms": "ما هو وزنك؟", "femaleGender": "أنثى", "previous": "سابق", - "selectedOrgans": "الهيئات المختارة", + "selectedOrgans": "موضع الالم", "noOrgansSelected": "لم يتم تحديد أي أعضاء بعد", - "organSelector": "محدد الأعضاء", + "organSelector": "حدد موضع الألم", "noPredictionsAvailable": "لا توجد تنبؤات متاحة", - "areYouSureYouWantToRestartOrganSelection": "هل أنت متأكد أنك تريد إعادة تشغيل اختيار الأعضاء؟", + "areYouSureYouWantToRestartOrganSelection": "هل تريد الخروج؟", "possibleConditions": "الحالات المحتملة", "pleaseSelectAtLeastOneRiskBeforeProceeding": "يرجى اختيار عامل خطر واحد على الأقل قبل المتابعة", - "aboveYouSeeCommonRiskFactors": "أعلاه ترى عوامل الخطر الأكثر شيوعًا. على الرغم من أن /diagnosis قد تعيد أسئلة حول عوامل الخطر، ", + "aboveYouSeeCommonRiskFactors": "في الأعلى تظهر أكثر العوامل شيوعًا، وقد يتضمن التقييم أسئلة عنها", "readMore": "اقرأ المزيد", - "riskFactors": "عوامل الخطر", + "riskFactors": "عوامل يجب الانتباه لها", "noRiskFactorsFound": "لم يتم العثور على عوامل خطر", "basedOnYourSelectedSymptomsNoRiskFactors": "بناءً على الأعراض المحددة، لم يتم تحديد عوامل خطر إضافية.", "messageNotification": "الرسالة", @@ -1375,11 +1450,14 @@ "failedToLoadImage": "فشل تحميل الصورة", "typeNotification": "النوع", "pleaseSelectAtLeastOneOptionBeforeProceeding": "يرجى اختيار خيار واحد على الأقل قبل المتابعة", - "suggestions": "الاقتراحات", + "suggestions": "التوصيات", "pleaseGoBackAndSelectOrgansFirst": "يرجى العودة واختيار الأعضاء أولاً", "symptomsSelector": "محدد الأعراض", - "possibleSymptomsRelatedTo": "الأعراض المحتملة المتعلقة بـ", + "possibleSymptomsRelatedTo": "الأعراض المحتملة المتعلقة بأعضاء محددة", "suggestionAIListDescription": "هذه قائمة بالأعراض المقترحة من قبل الذكاء الاصطناعي، بناءً على المعلومات التي تم جمعها حتى الآن خلال المقابلة", + "whyAmIBeingAskedThis": "لماذا يُطرح علي هذا السؤال؟", + "weAreAskingThisQuestionToBetterUnderstand": "نطرح هذا السؤال لفهم {symptoms} بشكل أفضل وتحسين دقة التقييم.", + "analyzingYourSymptoms": "أعراضك", "analyzing": "جاري التحليل...", "seekMedicalAdvice": "اطلب المشورة الطبية", "monitorDescription": "لا حاجة لطلب المشورة الطبية. فقط حافظ على روتين صحي.", @@ -1388,23 +1466,47 @@ "colorScience": "دلالات الألوان", "noNeedToVisitDoctor": "لا حاجة لزيارة الطبيب", "commonSymptom": "الأعراض الشائعة", - "bookAppointment": "احجز موعد", + "bookAppointment": "حجز موعد", "notApplicable": "لا ينطبق", "emergencyTriage": "طوارئ", "emergencyEvidenceDetected": "تم اكتشاف دليل طوارئ. يرجى طلب العناية الطبية.", "noQuestionItemsAvailable": "لا توجد عناصر أسئلة متاحة", "pleaseAnswerAllQuestionsBeforeProceeding": "يرجى الإجابة على جميع الأسئلة قبل المتابعة", - "triage": "الفرز", - "areYouSureYouWantToExitProgress": "هل أنت متأكد أنك تريد الخروج؟ سيتم فقدان تقدمك.", + "triage": "فرز الحالة", + "areYouSureYouWantToExitProgress": "هل تود الخروج؟ ستفقد تقدمك الحالي.", "noQuestionAvailable": "لا يوجد سؤال متاح", - "possibleSymptom": "عرض محتمل: ", - "symptomsCheckerFindingScore": "- درجة نتائج فاحص الأعراض", + "possibleSymptom": "تشخيص محتمل", + "triageLevelEmergencyAmbulance": "طوارئ - اتصل بالإسعاف", + "triageLevelEmergency": "طوارئ", + "triageLevelConsultation24": "استشارة خلال 24 ساعة", + "triageLevelConsultation": "استشارة طبية", + "triageLevelSelfCare": "رعاية ذاتية", + "triageLevelEmergencyAmbulanceDesc": "الأعراض المبلغ عنها خطيرة جدًا وقد تحتاج إلى رعاية طارئة. يجب عليك الاتصال بالإسعاف الآن.", + "triageLevelEmergencyDesc": "تبدو الأدلة المبلغ عنها خطيرة ويجب عليك الذهاب إلى قسم الطوارئ. إذا لم تتمكن من ال��صول إلى أقرب قسم طوارئ، اتصل بالإسعاف.", + "triageLevelConsultation24Desc": "يجب عليك زيارة الطبيب خلال 24 ساعة. إذا ساءت الأعراض فجأة، توجه إلى أقرب قسم طوارئ.", + "triageLevelConsultationDesc": "قد تحتاج إلى تقييم طبي وقد تحتاج إلى تحديد موعد مع طبيب. إذا ساءت الأعراض، راجع الطبيب على الفور.", + "triageLevelSelfCareDesc": "قد لا تتطلب الأعراض المعلنة تقييمًا طبيًا وعادة ما تزول من تلقاء نفسها. في بعض الأحيان يمكن علاجها من خلال طرق الرعاية الذاتية. راقب أعراضك واستشر الطبيب إذا ساءت الأعراض أو ظهرت أعراض جديدة.", + "rootCauseEmergencyEvidencePresent": "تم الإبلاغ عن دليل طوارئ", + "rootCauseSeriousEvidencePresent": "تم الإبلاغ عن دليل خطير", + "rootCauseEmergencyConditionLikely": "حالة تهدد الحياة محتملة", + "rootCauseEmergencyConditionPossible": "حالة تهدد الحياة ممكنة", + "rootCauseConsultationConditionLikely": "استشارة طبية مطلوبة", + "rootCauseSelfCareSufficient": "لا يوجد سبب محدد للتقييم الطبي", + "rootCauseDiagnosisUnknown": "التقييم غير ممكن", + "teleconsultationAvailable": "الاستشارة عن بُعد متاحة", + "seriousSymptoms": "أعراض خطيرة", + "howTo": "كيفية القياس؟", + "explainWhy": "اشرح، لماذا؟", + "whyThisCondition": "لماذا هذه الحالة؟", + "supportingEvidence": "الأدلة الداعمة", + "explanationDescription": "بناءً على الأعراض التي أبلغت عنها، تم تحديد هذه الحالة كتطابق محتمل. الأعراض التالية تدعم هذا التقييم:", + "symptomsCheckerFindingScore": "نسبة التطابق", "notSet": "غير محدد", "years": "سنوات", - "symptomsChecker": "فاحص الأعراض", + "symptomsChecker": "مدقق الاعراض", "helloIsYourInformationUpToDate": "مرحباً {name}، هل معلوماتك محدثة؟", "noEditAll": "لا، تعديل الكل", - "yesItIs": "نعم، إنها كذلك", + "yesItIs": "نعم", "age": "العمر", "youDontHaveAnyAncillaryOrdersYet": "ليس لديك أي طلبات مساعدة بعد.", "invoiceWithNumber": "الفاتورة: {invoiceNo}", @@ -1430,14 +1532,16 @@ "covered": "مغطى", "vatPercent": "ضريبة القيمة المضافة (15%)", "proceedToPayment": "المتابعة للدفع", - "supportedSmartWatches": "الساعات الذكية المدعومة", + "supportedSmartWatches": "كيف تعمل؟", "pleaseMakeSureSamsungWatchConnected": "يرجى التأكد من أن ساعة Samsung الخاصة بك متصلة بهاتفك، ومتزامنة ومحدثة بشكل نشط.", "beforeSyncingDataFollowInstructions": "قبل مزامنة البيانات، يرجى التأكد من اتباع التعليمات بشكل صحيح.", "viewWatchInstructions": "عرض تعليمات الساعة", "healthConnectAppNotInstalled": "يبدو أنه ليس لديك تطبيق Health Connect مثبتًا. يرجى تثبيته من متجر Play لمزامنة بيانات صحتك.", - "setTimerOfReminder": "ضبط مؤقت التذكير", + "setTimerOfReminder": "تنبيهي قبل الموعد", "youHaveAppointmentWithDr": "لديك موعد مع د. ", "hours": "ساعات", + "minutes": "دقائق", + "seconds": "ثواني", "secs": "ثواني", "noAllergiesDataFound": "لم يتم العثور على بيانات الحساسية...", "heartRateDescription": "معدل ضربات قلبك يشير إلى عدد المرات التي ينبض فيها قلبك في الدقيقة", @@ -1447,6 +1551,7 @@ "distanceDescription": "المسافة المقطوعة على مدار اليوم", "overview": "نظرة عامة", "details": "التفاصيل", + "details2": "تفاصيل", "healthy": "صحي", "warning": "تحذير", "vitalSignDetails": "تفاصيل العلامات الحيوية", @@ -1487,7 +1592,7 @@ "dailyWaterRemindersScheduledAt": "تم جدولة تذكيرات الماء اليومية في:", "waterConsumption": "استهلاك المياه", "selectNumberOfReminders": "حدد عدد التذكيرات", - "h2oSettings": "إعدادات H20", + "h2oSettings": "الاعدادات", "settingsSavedSuccessfully": "تم حفظ الإعدادات بنجاح", "yourName": "اسمك", "ageYears": "العمر (11-120) سنة", @@ -1497,7 +1602,7 @@ "notifyMeBeforeConsumptionTime": "أبلغني قبل وقت الاستهلاك", "noMedicationsToday": "لا أدوية اليوم", "reminders": "تذكيرات", - "reminderAddedToCalendar": "تمت إضافة تذكير إلى التقويم ✅", + "reminderAddedToCalendar": "تمت إضافة تذكير إلى التقويم ", "errorWhileSettingCalendar": "حدث خطأ أثناء ضبط التقويم:{error}", "instructions": "التعليمات", "requests": "الطلبات", @@ -1509,28 +1614,28 @@ "pleaseVisitRoomForVitalSigns": "يرجى زيارة الغرفة {roomNumber} لقياس العلامات الحيوية", "pleaseVisitRoomToTheDoctor": "يرجى زيارة الغرفة {roomNumber} لمقابلة الطبيب", "erOnlineCheckInRequest": "طلب تسجيل الوصول عبر الإنترنت لقسم الطوارئ", - "indoor": "داخلي", - "navigation": "الملاحة", - "health": "الصحة", + "indoor": "خريطة", + "thehospital": "المستشفى", + "health": " الصحية", "calculators": "الحاسبات", - "converters": "المحولات", - "guide": "الدليل", - "liveCareServiceDesc": "احصل على استشارة طبية من طبيب متخصص عبر مكالمة فيديو", + "converters": "محول الوحدات", + "guide": "دليل", + "liveCareServiceDesc": "احصل على استشارة طبية افتراضية من طبيب مختص", "bloodGroup": "فصيلة الدم: {bloodType}", "medicalServices": "الخدمات الطبية", - "insuranceAndPayments": "التأمين والمدفوعات", + "insuranceAndPayments": "التأمين و الفواتير", "trackerAndOthers": "المتتبع وأخرى", "bmi": "مؤشر كتلة الجسم", - "yesPleaseINeedHelp": "نعم، من فضلك أريد المساعدة", + "yesPleaseINeedHelp": "نعم، احتاج مساعدة", "aiOverView": "AI ملخص", - "generateAiAnalysis": "قم بإجراء تحليل لهذا الطلب AI", - "aiAnalysis": "AI تحليل", - "prediction": "تنبؤ", - "prevention": "وقاية", - "disclaimer": "تنصل", - "thisAboveInfo": "المعلومات المذكورة أعلاه مُولّدة بواسطة AI بناءً على نتائج تحاليلك المخبرية، وهي لأغراض إعلامية فقط. لا ينبغي اعتبارها تشخيصًا طبيًا أو خطة علاجية. استشر طبيبك دائمًا للحصول على نصيحة طبية مُخصصة قبل اتخاذ أي قرارات تتعلق بصحتك.", + "generateAiAnalysis": "تحليل الذكاء الاصطناعي", + "aiAnalysis": "تحليل الذكاء الاصطناعي", + "prediction": "التوقعات", + "prevention": "الوقاية", + "disclaimer": "إخلاء مسؤولية", + "thisAboveInfo": "تم تحليل نتائج المختبرهذه بواسطة الذكاء الاصطناعي، وهي لا تُعدّ نصيحة طبية. استشر طبيبك المختص للتشخيص والعلاج.", "aiDisclaimer": "سيتم مشاركة بيانات نتائج تحاليلك المخبرية بشكل آمن مع خدمة الذكاء الاصطناعي لدينا لتحليلها. يساعد هذا في تقديم رؤى صحية مُخصصة. هل ترغب في المتابعة؟", - "consent": "موافقة", + "consent": "تحليل الذكاء الاصطناعي", "bmiNormalDescription": "مؤشر كتلة جسمك ضمن المعدل الصحي. استمر في اتباع نظام غذائي متوازن، وممارسة النشاط البدني بانتظام، وإجراء الفحوصات الدورية للحفاظ على صحة جيدة. راقب أي تغييرات ملحوظة مع مرور الوقت.", "bmiUnderweightDescription": "يشير مؤشر كتلة الجسم إلى أنك تعاني من نقص الوزن. لذا، يُنصح بزيادة السعرات الحرارية المتناولة من خلال تناول الأطعمة الغنية بالعناصر الغذائية، وممارسة تمارين المقاومة لبناء العضلات، واستشارة أخصائي رعاية صحية للتحقق من وجود أسباب كامنة.", "bmiOverweightDescription": "يشير مؤشر كتلة الجسم إلى زيادة الوزن. لذا، يُنصح بالسعي إلى إنقاص الوزن تدريجياً وبشكل مستدام من خلال تقليل السعرات الحرارية بشكل معتدل، وممارسة النشاط البدني بانتظام، واختيار الأطعمة الصحية. استشر طبيبك قبل إجراء أي تغييرات جذرية في نمط حياتك.", @@ -1557,7 +1662,7 @@ "dietModerateCarbsDescription": "تناول معتدل للكربوهيدرات مع توازن في البروتين والدهون: يوفر طاقة مستقرة للأنشطة اليومية والتمارين مع قدر من المرونة. مناسب لكثير من الأشخاص الذين يسعون لإدارة وزن مستدامة وتحسين الأداء.", "dietUSDAGuidelinesDescription": "نمط متوازن مستند إلى (USDA): يركز على الفواكه والخضروات والحبوب الكاملة والبروتينات قليلة الدهن، مع الحد من السكريات المضافة والدهون المشبعة. يُعد إطارًا قائمًا على الأدلة لدعم الصحة العامة، وكفاية العناصر الغذائية، والوقاية من الأمراض المزمنة.", "dietZoneDietDescription": "حمية الزون (~40٪ كربوهيدرات / 30٪ بروتين / 30٪ دهون): تركز على التوازن الهرموني وضبط الحصص الغذائية. قد تُحسّن تركيب الجسم ومستوى الطاقة لدى بعض الأشخاص، لكنها تتطلب تخطيطًا جيدًا؛ ويُفضّل تخصيصها بالتعاون مع مختص تغذية.", - "contextDependent": "يعتمد السياق", + "contextDependent": "يختلف باختلاف الحالة", "calculatedValue": "القيمة المحسوبة", "calculationFormula": "صيغة الحساب", "confirmYourLocation": "قم بتأكيد موقعك", @@ -1569,10 +1674,10 @@ "servicePriceListRights": "يحق للمريض الحصول على متابعة مجانية في غضون 14 يومًا من الزيارة الأولى", "serviceName": "اسم الخدمة", "noFreeSlot": "لا توجد مواعيد متاحة في التاريخ المحدد. يرجى اختيار تاريخ آخر أو إعادة المحاولة لاحقاً.", - "noThanksIKnowTheClinic": "لا، شكراً. أنا أعرف العيادة.", + "noThanksIKnowTheClinic": "لا، شكراً", "unableToSendOTP": "تعذر إرسال رمز التحقق لمرة واحدة", - "loadingAIAnalysis": "جارٍ تحليل نتائج المختبر، يرجى التحلي بالصبر والسماح للذكاء الاصطناعي بالقيام بالمهمة، قد يستغرق هذا بعض الوقت.", - "symptoms": "أعراض", + "loadingAIAnalysis": "ٍتحليل النتائج بواسطة الذكاء الاصطناعي، يرجى الانتظار...", + "symptoms": "مدقق الاعراض", "insuranceInActive": "التأمين غير نشط", "insuranceInActiveContactSupport": "لديك تأمين ساري المفعول، ولكنه غير مُفعّل حاليًا في مجموعة حبيب الطبية. يُرجى التواصل مع خدمة عملاء مجموعة حبيب الطبية.", "updateAppNow": "تحديث التطبيق الآن", @@ -1598,6 +1703,270 @@ "continueCash": "متابعة الدفع نقدًا", "timeFor": "الوقت", "hmgPolicies": "سياسات مجموعة الحبيب الطبية", - "darkMode": "المظهر الداكن", - "featureComingSoonDescription": "هذه الميزة ستتوفر قريباً. نحن نعمل جاهدين لإضافة ميزات أكثر تميزاً إلى التطبيق. انتظرونا لمتابعة التحديثات." + "darkMode": "الوضع الداكن", + "featureComingSoonDescription": "هذه الميزة ستتوفر قريباً. نحن نعمل جاهدين لإضافة ميزات أكثر تميزاً إلى التطبيق. انتظرونا لمتابعة التحديثات.", + "generateAiAnalysisResult": "تحليل النتائج بالذكاء الاصطناعي", + "ratings": "التقييمات", + "hmgPharmacyText": "وجهتك الالكترونية الشاملة للأدوية ومنتجات العناية بالصحة", + "insuranceRequestSubmittedSuccessfully": "تم إرسال طلب تحديث بيانات التأمين بنجاح. سيتم إعلامك بمجرد الانتهاء.", + "updatingEmailAddress": "جارٍ تحديث عنوان البريد الإلكتروني، يرجى الانتظار...", + "verifyInsurance": "التحقق من التأمين", + "tests": "تحاليل", + "calendarPermissionAlert": "يرجى منح إذن الوصول إلى التقويم من إعدادات التطبيق لضبط تذكير تناول الدواء.", + "sortByNearestLocation": "حسب الأقرب الى موقعك", + "giveLocationPermissionForNearestList": "يرجى منح إذن الوصول إلى الموقع من إعدادات التطبيق لعرض أقرب المواقع.", + "sortByLocation": "الترتيب حسب الموقع", + "timeForFirstReminder": "اضافةتذكير", + "reminderRemovalNote": "يمكنك إلغاء التذكير لاحقاً من التقويم.", + "prescriptionDatePassedError": "تاريخ الوصفة الطبية قد انتهى. لا يمكنك إضافة تذكير لهذه الوصفة.", + "communicationLanguage": "لغة التواصل", + "cmcServiceHeader": "فحص صحي شامل: تشخيص متقدم، معلومات صحية مفصلة", + "cmcServiceDescription": "احصل على معلومات تفصيلية عن صحتك من خلال خدمات التشخيص المتقدمة لدينا. افهم جسمك بشكل أفضل لمستقبل صحي.", + "eReferralServiceHeader": "نظام الإحالة الإلكترونية في مستشفى حبيب: تبسيط عملية إحالة المرضى", + "eReferralServiceDescription": "نُسهّل عملية نقل المرضى بسلاسة إلى مستشفى حبيب من خلال نظام الإحالة الإلكترونية الآمن لدينا. نضمن استمرارية الرعاية لكل مريض.", + "bloodDonationServiceHeader": "تبرع بالدم، أنقذ الأرواح. تبرعك يُحدث فرقاً.", + "bloodDonationServiceDescription": "تبرّع بالدم، وأنقذ الأرواح. تبرعك يبعث الأمل. انضم لحملة التبرع بالدم وكن شريان حياة للمحتاجين. كل قطرة تُحدث فرقًا!", + "healthTrackersServiceHeader": "تتبّع مؤشراتك الحيوية بسهولة ويسر", + "healthTrackersServiceDescription": "أدخل بياناتك لمراقبة معدل ضربات القلب وضغط الدم بشكل مستمر، بالإضافة إلى ملخصات دقيقة لأنشطتك اليومية. ابقَ على اطلاع وحسّن صحتك بسهولة.", + "waterConsumptionServiceHeader": "حافظ على رطوبتك، حافظ على صحتك. تتبع كمية الماء التي تشربها يومياً بكل سهولة.", + "waterConsumptionServiceDescription": "أروِ عطشك، وتابع صحتك. راقب كمية الماء التي تتناولها يومياً بكل سهولة باستخدام تطبيقنا سهل الاستخدام، مما يضمن لك الترطيب الأمثل والصحة الجيدة.", + "smartWatchServiceHeader": "بكل سهولة، يمكن ربط الساعة الذكية", + "smartWatchServiceDescription": "يمكنك ربط ساعتك الذكية بالتطبيق الصحي لتتبع بياناتك بسلاسة والحصول على تحليلات مخصصة", + "liveChatServiceHeader": "مساعدة الخبراء على مدار الساعة طوال أيام الأسبوع\n\nمساعدة", + "liveChatServiceDescription": "هل تحتاج إلى مساعدة؟ تتيح لك خدمة الدردشة المباشرة لدينا التواصل مع فريق دعم الخبراء للإجابة على أي أسئلة لديك حول الميزات أو الإعدادات أو استكشاف الأخطاء وإصلاحها.", + "emergencyServiceHeader": "تسجيل الوصول إلى قسم الطوارئ، أسرع من أي وقت مضى. اتصل بالإسعاف / فريق الاستجابة السريعة على الفور", + "emergencyServiceDescription": "هل تواجه حالة طبية طارئة؟ سيارات الإسعاف وفرق الاستجابة السريعة لدينا جاهزة على مدار الساعة. بالإضافة إلى ذلك، يمكنك تسجيل دخولك إلى قسم الطوارئ بسرعة لتلقي رعاية أسرع.", + "homeHealthCareServiceHeader": "صحتك أولويتنا… رعاية طبية متكاملة تصلك إلى منزلك.", + "homeHealthCareServiceDescription": "فريق مؤهل يقدّم لك خدمة بجودة عالية.", + "profileOnlyText": "الملف الشخصي", + "information": "معلومات الطبيب", + "noFavouriteDoctors": "ليس لديك أي قائمة مفضلة حتى الآن", + "addDoctors": "إضافة الأطباء", + "favouriteList": "قائمة المفضلة", + "later": "لاحقاً", + "cancelAppointmentConfirmMessage": "هل أنت متأكد من رغبتك في إلغاء هذا الموعد؟", + "acknowledged": "إغلاق", + "searchLabResults": "بحث نتائج المختبر", + "callForAssistance": "دعم فوري عبر الاتصال", + "oneWaySubtitle": "نقل من الموقع إلى المستشفى", + "twoWaySubtitle": "نقل من الموقع إلى المستشفى والعودة", + "toHospitalSubtitle": "نقل من موقعك الحالي إلى المستشفى", + "fromHospitalSubtitle": "نقل من المستشفى إلى منزلك", + "clinicSchedule": "جدول العيادة", + "doctorAddedToFavourite": "تمت إضافة إلى قائمة المفضلة", + "doctorRemovedFromFavourite": "تمت إزالة من قائمة الأطباء المفضلين", + "addNewFavorite": "إضافة مفضلة جديدة", + "favourites": "المفضلة", + "pendingAncillaryOrders": "طلبات غير مكتمله", + "liveCarePermissions": "يتطلب لايف كير أذونات الكاميرا والميكروفون وإشعارات، يرجى السماح لها بالمتابعة.", + "containsImage": "يحتوي على صورة", + "servicesSelected": "الخدمة / الخدمات", + "selectMedicalFileFromFamily": "اختر ملف طبي من عائلتك", + "anyFileFromHMG": "أي ملف طبي نشط من مجموعة حبيب الطبية", + "noDistance": "المسافة غير متوفرة", + "enterAmount": "يرجى إدخال المبلغ للمتابعة.", + "selectHospitalContinue": "يرجى اختيار المستشفى للمتابعة.", + "year": "سنة", + "notifyPrescription": "تنبيه قبل موعد الجرعة", + "doctorRatingAppointment": "تقييم الطبيب", + "ratingSubmitted": "تم إرسال التقييم", + "rateTheDoctor": "يرجى تقييم الطبيب", + "downloadInvoice": "تحميل", + "approvalDetails": "تفاصيل الموافقة", + "obese": "سمين", + "overWeight": "وزن زائد", + "underWeight": "وزن ناقص", + "nearestGate": "أقرب بوابة", + "RRTDDetails": "يقدم فريق الاستجابة السريع رعاية صحية متكاملة لجميع الحالات الطارئة والمستقرة.", + "fromHospitalSubtitle": "نقل من المستشفى إلى منزلك", + "normalMapType": "افتراضي", + "satelliteMapType": "قمر صناعي", + "terrainMapType": "تضاريس", + "hybridMapType": "هجين", + "openCamera": "افتح الكاميرا", + "openGallery": "افتح المعرض", + "openFiles": "فتح الملفات", + "generateAiAnalysisRadResult": "النتيجة بالذكاء الاصطناعي", + "grantLocationPermission": "يرجى منح إذن الوصول إلى الموقع من إعدادات التطبيق للحصول على نتائج أفضل.", + "NoBookedAppointments": "لا توجد مواعيد محجوزة", + "aiDisclaimerRad": "سيتم مشاركة بيانات نتائج الأشعة الخاصة بك بشكل آمن مع محلل الذكاء الاصطناعي لدينا لتحليلها. يساعد هذا في توفير رؤى صحية مخصصة. هل ترغب في المتابعة؟", + "imageSizeTooLarge": "حجم الصورة كبير جداً. الحد الأقصى للحجم هو 1 ميجابايت", + "profileImageUpdatedSuccessfully": "تم تحديث صورة الملف الشخصي بنجاح", + "failedToProcessImage": "فشل في معالجة الصورة. يرجى المحاولة مرة أخرى", + "cameraGalleryPermissionMessage": "مطلوب إذن الكاميرا والمعرض لتحميل صورة الملف الشخصي. يرجى منح الأذونات من إعدادات التطبيق.", + "cameraGalleryPermissionRequired": "مطلوب أذونات الكاميرا والمعرض", + "cameraPermissionMessage": "مطلوب إذن الكاميرا لالتقاط الصور. يرجى منح الإذن من إعدادات التطبيق.", + "cameraPermissionRequired": "مطلوب إذن الكاميرا", + "galleryPermissionMessage": "مطلوب إذن المعرض لتحديد الصور. يرجى منح الإذن من إعدادات التطبيق.", + "galleryPermissionRequired": "مطلوب إذن المعرض", + "failedToCheckPermissions": "فشل في التحقق من الأذونات. يرجى المحاولة مرة أخرى", + "takePhotoWithCamera": "التقط صورة بالكاميرا", + "selectFromPhotoLibrary": "اختر من مكتبة الصور", + "selectDocumentFiles": "اختر ملفات المستندات", + "profilePicture": "صورة الملف الشخصي", + "aiDisclaimerRad": "سيتم مشاركة بيانات نتائج الأشعة الخاصة بك بشكل آمن مع محلل الذكاء الاصطناعي لدينا لتحليلها. يساعد هذا في توفير رؤى صحية مخصصة. هل ترغب في المتابعة؟", + "sendingAskDrRequest": "جارٍ إرسال الطلب...", + "askDrRequestSentSuccess": "تم إرسال الطلب بنجاح، وسيتواصل معك الطبيب قريباً.", + "onlineCheckIn24HoursOnly": "لا تتوفر خدمة تسجيل الوصول عبر الإنترنت إلا خلال 4 ساعات من موعد الحجز.لا تتوفر خدمة تسجيل الوصول عبر الإنترنت إلا خلال 4 ساعات من موعد الحجز.", + "searchFor": "بحث عن", + "m": "متر", + "inch": "انش", + "updateEmailAddressTitle": "أدخل البريد الإلكتروني الجديد: ", + "enterNewNewContactNumber": "الرجاء اضافة رقم اتصال في حالة الطوارئ: ", + "nationalIdFileNumber": "رقم الهوية / الإقامة / الملف", + "finda": "البحث عن", + "errorFetchingData": "حدث خطأ أثناء تحميل البيانات", + "negative": "سلبي", + "calculateCaloriesBasedOnFactors": "حساب السعرات الحرارية اليومية بناءً على عدة عوامل مثل الطول، الوزن، العمر، الجنس، والنشاط البدني اليومي.", + "conformationCall": "سنتصل بك قريبًا لتأكيد الطلب", + "radiologyLabResults": "نتائج الأشعة", + "disclaimerRadiology": "تم تحليل نتائج الأشعة هذه بواسطة الذكاء الاصطناعي، وهي لا تُعدّ نصيحة طبية. استشر طبيبك المختص للتشخيص والعلاج.", + "enterIdentificationNumberWithNoStar": "أدخل رقم الهوية", + "enterReferralNumber": "أدخل رقم الإحالة", + "referralNumber": "رقم الإحالة", + "phoneHint": "5xxxxxxxx", + "selectSearchCriteria": "اختر معيار البحث", + "selectCriteria": "اختيار المعيار", + "locationServicesDisabled": "حالة الطقس غير متوفرة لتعطيل خدمات الموقع. يرجى تفعيل خدمات الموقع لتتمكن من رؤية معلومات الطقس.", + "selectDateTimeKey": "اختيار", + "medicalKey": "الطبية", + "doctors2": "أطباء", + "illurgyInfomation": "الحساسية", + "vaccineInfomation": "التطعيمات", + "approvals1": "موافقات", + "convertBloodcholesterolInfo": "حول قيمة كوليسترول الدم بين ملجم/ديسيلتر و مليمول/لتر", + "carbsAlert": "حساب نسب المغذيات (الكربوهيدرات ،البروتين والدهون) بالسعرات الحرارية والقرامات وفقا لنسب محددة مسبقا", + "bodyFatAlert": "يحسب بناءً على الحجم", + "ibwAlert": "حساب الوزن المثالي بناءً على الطول، الوزن، وبنية الجسم", + "glucoseAlert": "تغيير وحدات القياس بين مليجرام لكل ديسيلتر و ملي مول لكل لتر", + "selectBloodGroup": "اختر الفصيلة", + "routePrescription": "طريقة الاستخدام", + "noNearestER": "لا يوجد طوارئ قريب منك", + "loginToUseServiceLiveCare": "تحتاج إلى تسجيل الدخول لاستخدام هذه الخدمة", + "mldl": "مليجرام لكل ديسيلتر", + "mmol": "ملي مول لكل لتر", + "triglycerideInfo": "تغيير وحدات القياس بين مليجرام لكل ديسيلتر و ملي مول لكل لتر", + "selectSmartWatch": "تعيين", + "selectBloodDonationCity": "اختر المدينة", + "selectBloodDonationGender": "اختر الجنس", + "selectBloodType": "اختر الفصيلة", + "networkErrorTitle": "خطأ في الاتصال", + "networkErrorMessage": "تعذّر الاتصال بالخادم. يرجى التحقق من اتصالك بالإنترنت والمحاولة مجدداً.", + "networkConnectionReset": "انقطع الاتصال. يرجى المحاولة مجدداً.", + "networkTimeout": "انتهت مهلة الطلب. يرجى المحاولة مجدداً.", + "networkUnknownError": "حدث خطأ ما. يرجى المحاولة لاحقاً.", + "networkErrorWhileFetching": "حدث خطأ أثناء تحميل البيانات. يرجى المحاولة مجدداً.", + "networkPleaseCheckInternet": "يرجى التحقق من اتصالك بالإنترنت والمحاولة مجدداً.", + "networkServerErrorNoMessage": "حدث خطأ في الخادم. يرجى المحاولة لاحقاً.", + "startLiveChat": "بدء المحادثة المباشرة", + "followUsOn": "تابعنا على:", + "followUsOnX": "تابعنا على X", + "likeUsOnFB": "سجل إعجابك بنا على فيسبوك", + "watchUsOnYoutube": "شاهدنا على يوتيوب", + "connectOnLinkedin": "تواصل معنا على لينكد إن", + "riskFactorPageTitle": "اعراض تشعر بها", + "doAnyOfTheseApply": "هل ينطبق عليك أي من هذه الأمور؟", + "bloodDonationService": "التبرع \n بالدم", + "bookAppointmentService": "حجز\nموعد", + "pinchToZoom": "اضغط للتكبير", + "gotIt": "حسنا", + "zoomIntoDetails": "قم بالتكبير لرؤية التفاصيل", + "pinchWithTwoFingersToZoom": "اضغط بإصبعين للتكبير", + "dragToMoveAround": "اسحب للتحرك", + "startExploring": "ابدأ الاستكشاف", + "symptomsCheckSuggestions": "الاحتمالات", + "appointmentArrived": "تم الحضور", + "calendarPermissionAlertForAppointment": "يرجى منح إذن الوصول إلى التقويم من إعدادات التطبيق لضبط تذكير الموعد", + "rechargePageKey": "شحن المحفظة", + "selectFamilyFile": "اختيار ", + "ancillaryOrdersListNew": "طلبات غير مكتملة", + "medicalReportNew": "التقارير الطبية", + "livecarePendingReuqestNew": "انتظار الطبيب", + "medicinesAnalysis": "تحليل الأدوية", + "importantWarnings": "تحذيرات مهمة", + "medicineInteractions": "تفاعلات الأدوية", + "followUpNeeded": "المتابعة المطلوبة", + "benefit": "الفائدة", + "commonSideEffects": "الآثار الجانبية الشائعة", + "seriousWarnings": "تحذيرات خطيرة", + "storage": "طريقة الحفظ", + "aiDisclaimerPrescription": "سيتم مشاركة بيانات نتائج الوصفات الطبية الخاصة بك بشكل آمن مع محلل الذكاء الاصطناعي لدينا لتحليلها. يساعد هذا في توفير رؤى صحية مخصصة. هل ترغب في المتابعة؟", + "generateAiAnalysisPrescription": "تحليل الذكاء الاصطناعي", + "loadingAIAnalysisPrescription": "ٍتحليل الوصفات الطبية بواسطة الذكاء الاصطناعي، يرجى الانتظار...", + "thisAboveInfoPrescription": "تم تحليل الوصفة الطبية هذه بواسطة الذكاء الاصطناعي، وهي لا تُعدّ نصيحة طبية. استشر طبيبك المختص للتشخيص والعلاج.", + "liveCareNotificationPermissionsMessage": "يتطلب لايف كير أذونات الإشعارات، يرجى السماح بهذه الأذونات للمتابعة.", + "weatherIndicators": "طقس", + "submitRating": "إرسال التقييم", + "maxOneFileAllowed": "يمكن رفع ملف واحد فقط", + "fileSizeExceedsLimit": "يجب ألا يتجاوز حجم الملف 1 ميغابايت", + "completedPrescriptionOrder": "تمت الخدمة", + "submitEReferral": "تقديم الطلب", + "requestRefund": "طلب استرداد", + "uploadImage": "رفع صورة", + "selectImage": "اختر صورة", + "selectOptions": "اختر الخيارات", + "iban": "رقم الآيبان", + "addIbanDetails": "أضف تفاصيل الآيبان", + "description": "الوصف", + "enterDescription": "أدخل الوصف", + "submitRequest": "تقديم الطلب", + "ibanIsRequired": "حقل رقم الآيبان مطلوب", + "descriptionIsRequired": "الوصف مطلوب", + "invalidIbanFormat": "رقم الآيبان غير صالح. يرجى إدخال رقم آيبان صالح (مثال: SA0380000000608010167519)", + "refundHistory": "سجل الاسترداد", + "noRefundHistoryFound": "لا يوجد سجل استرداد حتى الآن.", + "invoiceNo": "رقم الفاتورة", + "totalAmount": "المبلغ الإجمالي", + "patientShare": "نصيب المريض", + "selectProcedure": "حدد العمليات", + "noProceduresAvailableForRefund": "لا توجد عمليات متاحة للاسترداد", + "selectAll": "تحديد الكل", + "selectRefundMethod": "اختر طريقة الاسترداد", + "hmgWallet": "محفظة HMG", + "bankTransfer": "تحويل بنكي", + "selectRefundReason": "اختر سبب الاسترداد", + "refundReason": "سبب الاسترداد", + "done": "تم", + "refundReason1": "تم معالجة مريض الشركة كمدفوع ذاتي وإعادة فوترته", + "refundReason2": "المريض لا يريد إجراء سريرياً", + "refundReason3": "المريض لم ينتظر الاستشارة / يريد طبيباً آخر", + "refundReason4": "المريض أوقف الاشتراك في الباقة", + "refundReason5": "الخدمة لم تُنجز / غير متاحة بسبب عطل الجهاز / رفض المريض", + "refundReason6": "تم إلغاء الإجراء السريري أو تغييره من قِبل الطبيب المحيل", + "refundReason7": "تم إلغاء إجراء وحدة الخدمة / المختبر / الأشعة أو تغييره من قِبل الطبيب المحيل", + "selectProcedures": "اختر العمليات", + "beforeUsingSymptomsChecker": "قبل استخدام فاحص الأعراض، يرجى قراءة شروط الخدمة وتذكر:", + "symptomsCheckerNotDiagnosis": "• فاحص الأعراض ليس تشخيصًا. إنه للمعلومات الخاصة بك فقط وليس رأيًا طبيًا مؤهلاً.", + "symptomsCheckerNotEmergency": "• فاحص الأعراض ليس للطوارئ. اتصل برقم الطوارئ المحلي فورًا عند وجود حالة طوارئ صحية.", + "yourDataIsSafe": "• بياناتك آمنة. تضمن تدابير الخصوصية حماية المعلومات التي تشاركها.", + "submitEReferral": "تقديم الطلب", + "redeem": "استبدال", + "points": "نقاط", + "transactions": "المعاملات", + "pharmacy": "الصيدلية", + "visitsOrders": "الزيارات/الطلبات", + "earned": "مكتسب", + "getParkingQR": "الحصول على رمز الاستجابة السريعة لوقوف السيارات", + "cannotOpenThisFile": "لا يمكن فتح هذا الملف", + "refundDetails": "تفاصيل الاسترداد", + "requestNo": "رقم الطلب.", + "referenceNo": "رقم المرجع", + "advanceNumber": "رقم الدفعة المقدمة", + "amountOnly": "المبلغ", + "invoiceHistory": "سجل الفواتير", + "refund": "استرداد", + "invoiceHistory": "سجل الفواتير", + "refund": "استرداد", + "parkingQR": "رمز الاستجابة السريعة لوقوف السيارات", + "parkingQRDesc": "امسح رمز الاستجابة السريعة (QR Code) أدناه عند بوابة الخروج من موقف السيارات:", + "livecareUpdateInsuranceSent": "تم استلام طلب تحديث بيانات التأمين الخاص بك، ويجري العمل عليه حالياً. سنقوم بإشعارك فور اكتمال التحديث.", + "livecareUpdateInsurance": "سيتم تحويل طلب تحديث بيانات التأمين إلى فريق LiveCare المختص لاستكمال الإجراءات. هل تود المتابعة؟", + "schedule": "جدول", + "doctorSchedule": "جدول الطبيب", + "weeklyShift": "الفترات الأسبوعية", + "dayOff": "إجازة", + "notAvailable": "غير متاح", + "hide": "إخفاء", + "viewPatientQR": "عرض رمز الاستجابة السريعة للمريض", + "patientQR": "رمز الاستجابة السريعة للمريض" } diff --git a/assets/langs/en-US.json b/assets/langs/en-US.json index 76c936f4..0e3429e4 100644 --- a/assets/langs/en-US.json +++ b/assets/langs/en-US.json @@ -3,8 +3,10 @@ "arabic": "Arabic", "login": "Login", "noDataAvailable": "No Data Available", + "noRatingAvailable": "No Rating Available", + "doctorDoesNotHaveRating": "This doctor does not have any ratings yet.", "confirm": "Confirm", - "loadingText": "Loading, please wait...", + "loadingText": "Please wait...", "kilometerUnit": "KM", "dashboardScreenToolbarTitle": "Home", "settings": "Settings", @@ -19,7 +21,7 @@ "mySchedule": "My Schedule", "logout": "Logout", "respirationRate": "Respiration Rate", - "bookAppo": "Book Appointment", + "bookAppo": "New Appointment", "searchBy": "Search By:", "clinic": "Clinic", "byClinic": "By Clinic", @@ -38,7 +40,7 @@ "noResultFound": "No Result Found", "noSearchResultFound": "No Result Found", "pleaseEnterProductName": "Please Enter Product Name", - "bookNow": "Book Now", + "bookNow": "New Appointment", "docInfo": "Doctor Information", "appoInfo": "Appointment Information", "availableAppo": "Available Appointments", @@ -66,8 +68,8 @@ "appoActions": "Appointment Actions", "date": "Date", "time": "Time", - "pendingPayment": "Pending for payment", - "payNow": "Pay Now", + "pendingPayment": "Payment", + "payNow": "Payment", "viewQR": "View QR Code", "instruction": "Instructions", "livecare": "LiveCare", @@ -97,7 +99,7 @@ "onlinePaymentSubtitle": "Payment", "cancelNocaps": "Cancel", "setReminder": "Set Reminder", - "nationalIdNumber": "National ID Number", + "nationalIdNumber": "National ID / Iqama", "medicalFileNumber": "Medical File Number", "loginregister": "Login / Register", "poweredBy": "Powered by", @@ -110,7 +112,7 @@ "yes": "Yes", "no": "No", "logintyperadio": " Choose from the below options to login to your medical file.", - "registernow": "Register Now", + "registernow": "Register", "nationalID": "Enter the Identification Number", "nationalId": "National ID", "fileNo": "File Number", @@ -121,7 +123,7 @@ "profileInfo": "Please enter profile information", "submit": "Submit", "forgotDesc": "Enter the mobile number to receive the Medical File Number via SMS", - "dob": "Birth Date:", + "dob": "Birth Date", "hijriDate": "Hijri Date", "gregorianDate": "Gregorian Date", "verifyLoginWith": "Please choose one of the following options to verify", @@ -187,13 +189,14 @@ "lastName": "Last Name", "female": "Female", "male": "Male", - "preferredLanguage": "Preferred Language *", + "preferredLanguage": "Preferred Language", "locationsRegister": "Where do you want to create this file?", "ksa": "KSA", "dubai": "Dubai", "enterEmail": "Please Enter Email", "family": "My Family", "familyTitle": "My Family Files", + "familyTitle2": "My Family Files", "addNewMember": "Add Family Member", "sentRequests": "Sent Requests", "recievedRequests": "Recieved Requests", @@ -224,6 +227,17 @@ "companyName": "Company Name:", "receiptOn": "Receipt on:", "expiryDate": "Expiry Date:", + "myCards": "My Cards", + "savedCards": "Saved Cards", + "addNewCard": "Add New Card", + "noSavedCards": "No saved cards", + "cardEndingWith": "Card ending with", + "expiry": "Expiry", + "defaultCard": "Default", + "deleteCard": "Delete Card?", + "deleteCardConfirmation": "Are you sure you want to delete this card ending in", + "cardDeletedSuccessfully": "Card deleted successfully", + "addCardComingSoon": "Add card functionality coming soon", "expiryPoints": "Expired", "expiryOn": "Expiry on:", "procedureName": "Procedure Name:", @@ -266,6 +280,7 @@ "userViewRequester": "User Wants to View Your Medical File", "userView": "User Can View Your Medical File", "parking": "Parking", + "parking2": "Parking", "alhabiServices": "HMG Service", "parkingTitle": "Car service, car service, service to save parking information, return to it later, 1- By clicking on (Read the code), save the parking data. 2- By clicking on the button (view my car park), it shows you the car’s location in Google Maps. 3- Read another position by pressing the Clear Position Data button.", "parkingDescription": "Parking service is for you to scan the car location so you can find it easy on you way out. click on (scan parking) button to save the parking location, then (show my park) button will appear to show you the way for the parking. if you want to rescan parking QR just click on (Clear My Data).", @@ -298,10 +313,18 @@ "medicinesSubtitle": "Prescriptions", "vitalSigns": "Vital Signs", "vitalSignsSubTitle": "Reports", + "vitalSignNormal": "Normal", + "vitalSignLow": "Low", + "vitalSignHigh": "High", + "vitalSignObese": "Obese", + "vitalSignOverweight": "Overweight", + "vitalSignUnderweight": "Underweight", + "vitalSignSkinny": "Underweight", "myMedical": "Active", "myMedicalSubtitle": "Medications", - "myDoctor": "My Doctor", + "myDoctor": "My Doctors", "myDoctorSubtitle": "List", + "myDoctorSubtitle2": "List", "eye": "Eye", "eyeSubtitle": "Measurement", "insurance": "Insurance", @@ -319,6 +342,7 @@ "monthly": "Monthly", "monthlySubtitle": "Report", "sick": "Sick", + "sick2": "Sick", "sickSubtitle": "Leaves", "myBalance": "My Balance", "myBalanceSubtitle": "Credit", @@ -353,6 +377,12 @@ "clickHere": "Click here", "iAgreeToTheTermsAndConditions": "I agree to the terms and conditions ", "iAgreeToTheTermsAndConditionsSubtitle": "I agree to the terms and conditions ", + "iAgreeAndAcceptTermsAndConditions": "I agree and accept ", + "termsAndConditions": "Terms and Conditions", + "iAgreeHealthInfoCanBeUsed": "I agree that my health information can be used for the interview. More information in the ", + "privacyPolicyText": "Privacy Policy", + "outPatient": "Out Patient", + "thisInvoiceIsNotEligibleForRefund": "This invoice is not eligible for refund", "save": "Save", "userAgreement": "User Agreement", "updateSuccessfully": "Update Successfully", @@ -430,7 +460,8 @@ "serviceInformation": "Service Information", "homeHealthCare": "Home Health Care", "noAppointmentAvailable": "No Available Appointments", - "homeHealthCareText": "This service provides a set of home health care services, continuous and comprehensive follow-up in their places of residence for those who cannot access health facilities, such as (laboratory analyzes - radiology - vaccinations - physical therapy), etc.", + "noScheduleAvailable": "No schedule currently available", + "homeHealthCareText": "Clinical excellence and specialized care in the comfort of your home", "loginRegister": "Login/Register", "orderLog": "Order Log", "infoLab": "This service allows you to view the results of all laboratory tests performed in Al Habib Medical Group as well as sending the report via e-mail.", @@ -476,8 +507,10 @@ "refferalSubTitle": "Service", "healthCare": "Health Care", "emergency": "Emergency", + "emergency2": "Emergency", "erservices": "Emergency", "services2": "Services", + "services3": "Services", "cantSeeProfile": "To view your medical profile, please log in or register now", "loginRegisterNow": "Login or Register Now", "hmgPharmacy": "HMG Pharmacy", @@ -542,7 +575,7 @@ "remeberthat": "Remember that", "loginToUseService": "You need to login to use this service", "offersAndPromotions": "OFFERS & SPECIAL PROMOTIONS", - "offers": "OFFERS", + "offers": "Offers", "myPrescriptions": "MY PRESCRIPTIONS", "searchAndScanMedication": "SEARCH & SCAN FOR MEDICATION", "shopByBrands": "Shop by Brands", @@ -561,7 +594,7 @@ "active": "Active", "inactive": "InActive", "balance": "Balance", - "gained": "GAINED", + "gained": "Gained", "consumed": "Consumed", "transferred": "Transferred", "riyal": "RIYAL", @@ -605,7 +638,7 @@ "viewSubCategorise": "View All Sub Categories", "categorise": "Categories", "wishList": "WishList", - "myAccount": "My Account", + "myAccount": "Beneficiary", "cart": "Cart", "alhabibapp": "Al Habib app", "searchProductHere": "Search Product here", @@ -641,11 +674,20 @@ "emrgNo": "Emergency Contact Number", "modes": "Modes", "vibration": "Vibration Touch Feedback", - "blindModes": "Modes for Partially Blind", + "blindModes": "Mode for partially blind", "invertTheme": "Invert", "offTheme": "Off", "dimTheme": "Dim", "bwTheme": "Black and White", + "highContrastTheme": "High Contrast", + "fontSize": "Font Size", + "fontSizeSmall": "Small", + "fontSizeMedium": "Medium", + "fontSizeLarge": "Large", + "saveChanges": "Save Changes", + "settingsSavedSuccessfully": "Settings saved successfully", + "cardHeading": "Card Heading", + "buttonText": "Button Text", "permissions": "Permission", "cameraPermission": "Camera", "locationPermission": "Location", @@ -653,7 +695,7 @@ "outOfStockMsg": "You have added product which is out of stock now, Please remove that!", "noArabicLetters": "It Is Not Allow to Use Arabic Letters", "noOffersAvailable": "No Offers Available!", - "accessibility": "Accessibility Mode", + "accessibility": "Accessibility", "orderStatus": "Order Status", "findUs": "Find Us", "liveChat": "Live Chat", @@ -686,11 +728,11 @@ "bikini": "Bikini", "totalMinutes": "Total Minutes", "feedback": "Feedback", - "likeToHear": "We would love to hear the feedback, concerns on healthcare services and eServices experience. Please use the below form", + "likeToHear": "We would love to hear your feedback. If you have any concerns about healthcare services or eServices experience, please let us in the form below.", "emptySubject": "Please enter the subject", "emptyMessage": "Please enter message", "selectAttachment": "Select Attachment", - "complainAppo": "Complaint for appointment", + "complainAppo": "Complaint with appointment", "complainAppoAlt": "Complaint without appointment", "messageType": "Message Type", "feedbackType": "Feedback Type", @@ -708,6 +750,11 @@ "bloodDonation": "Blood Donation", "bloodDonationInfo": "Through this service, you can register your name as a blood donor where the blood bank in the Habib Medical Group will communicate you in case of need for blood type.", "bloodInstruction": "Enter the required information, in order to register for Blood Donation Service", + "aboutBloodDonation": "About Blood Donation", + "bloodDonationDescription": "Blood donation is a noble act that saves lives. Every single donation can save up to three people. By donating blood, you help patients in need of transfusions, emergencies, and medical treatments.", + "bloodDonationBenefit1": "Safe and quick process (10-15 minutes)", + "bloodDonationBenefit2": "You can donate every 8-12 weeks", + "bloodDonationBenefit3": "Free health check of your blood", "viewTerms": "To view the terms and conditions", "wantConnectHmgNetwork": "Dear customer there is no internet access, do you want to connect with HMG network to use our app, make sure you are in range of HMG network", "failedToAccessHmgServices": "Connected with HMG Network,\n\nBut failed to access HMG services", @@ -744,6 +791,12 @@ "erConsultation": "This service allows you to make an online virtual consultation via video call directly with the doctor from anywhere at any time.", "myInvoice": "List", "invoiceList": "My Invoice", + "invoiceList2": "My Invoice", + "allInvoices": "All Invoices", + "hospitals": "Hospitals", + "clinics": "Clinics", + "doctors": "Doctors", + "selectDoctor": "Select Doctor", "thisItemIsNotAvailable": "This item is not available", "beforeAfterImages": "Before & After Images", "clinicAcceptLivecare": "No need to wait or visit You can now get medical consultation via Video call (LiveCare service) in The name of the clinic clinic and the doctor will contact you immediately", @@ -751,7 +804,7 @@ "livecarePoint2": "A Specialized doctor will contact you", "livecarePoint3": "A Doctor will be able to see your full medical file history", "livecarePoint4": "Free Medicine Delivery Available", - "livecarePoint5": "No need to visit the service is in your place", + "livecarePoint5": "Consult our specialists remotely and manage your health whenever and wherever you are.", "bookImmediateLivecare": "I accept to get the service immediately", "bookVideoLivecare2": "I don't need to visit the clinic", "noThankyou": "No Thanks", @@ -765,11 +818,11 @@ "aboutApp": "About the app", "aboutPoints": "Online Appointment Booking & rescheduling, Insurance approval status, Find A doctor, Ask your doctor, Medical prescriptions, Lab results, Hospitals contact numbers, Doctor profiles, Hospitals locations, Pharmacies Locations, Hospital's Virtual Tour, Official Social Media, Vaccines Schedule, Health Calculators, Other Services", "termsConditions": "These Online Services Terms of Use (Service Terms) govern certain online services provided by Dr Sulaiman Al Habib Medical Services Group Company (HMG, we, us, our)...", - "receiveOtpToast": "Where would you like to receive OTP?", + "receiveOtpToast": "OTP", "enterPhoneNumber": "Enter Phone Number", "enterEmailDesc": "Enter your email address to complete the process of creating a medical file", "enterPhoneDesc": "Enter your phone number to receive OTP verification code", - "pleaseChooseOption": "Please select from the below options to receive OTP", + "pleaseChooseOption": "Please select an option below to receive your OTP.", "dontHaveAccount": "Don't have an account?", "loginOrRegister": "Login or Register", "myFiles": "My Files", @@ -780,14 +833,14 @@ "readInstructions": "Read Instructions", "searchLabReport": "Search Lab Report", "prescriptionDeliveryError": "This clinic doesn't support refill", - "prepareToElevate": "Prepared to elevate your health and well-being?", + "prepareToElevate": "Your wellness journey starts here.", "iAcceptTermsConditions": "I Accept the Terms and Conditions", "alreadyHaveAccount": "Already have an account?", "loginNow": "Login Now", "notice": "Notice", "oR": "OR", - "sendOTPWHATSAPP": "Send me OTP on Whatsapp", - "sendOTPSMS": "Send me OTP on SMS", + "sendOTPWHATSAPP": "Whatsapp", + "sendOTPSMS": "SMS", "fullName": "Full Name", "married": "Married", "uae": "United Arab Emirates", @@ -796,13 +849,15 @@ "loginByOTP": "Login By OTP", "guest": "Guest", "switchAccount": "Switch Account", - "allSet": "All Set! Now you can login with Face ID or Biometric", + "allSet": "Now you can login with Face ID or Biometric", + "quickLogin": "Quick Login", "enableQuickLogin": "Enable Quick Login", + "enableQuickLoginBtn": "Enable Quick Login", "enableMsg": "Enabling the quick login will verify through your existing device Face ID / Biometric", "notNow": "Not Now", "pendingActivation": "Pending Activation", "awaitingApproval": "Awaiting Approval", - "enterValidNationalId": "Please enter a valid national ID or file number", + "enterValidNationalId": "Invalid Identification or file number", "enterValidPhoneNumber": "Please enter a valid phone number", "cannotEnterSaudiOrUAENumber": "You cannot enter Saudi Arabia (00966) or UAE (00971) phone numbers when 'Others' country is selected", "ready": "Ready", @@ -823,7 +878,7 @@ "didntReceiveIt": "Didn't receive it?", "resendOTP": "Resend", "resendIn": "resend in", - "pleaseEnterAnationalID": "Please enter a national ID", + "pleaseEnterAnationalID": "ID or Iqama number is required", "pleaseEnterAFileNumber": "Please enter a file number", "pleaseEnterAValidEmail": "Please enter a valid email", "pleaseEnterFullName": "Please enter full name", @@ -846,15 +901,16 @@ "onboardingHeading1": "Booking appointment has never been easy", "onboardingBody1": "In few clicks find yourself having consultation with the doctor of your choice.", "onboardingHeading2": "Access the medical history on finger tips", - "onboardingBody2": "Keep track on your medical history including labs, prescription, insurance, etc", + "onboardingBody2": "Keep track on medical history including labs, prescription, insurance, etc", "normal": "Normal", "attention": "Attention", "monitor": "Monitor", "noSpecialResult": "No Special Results", "setTheDateRange": "Set The Date Range", + "selectDate": "Select Date", "historyFlowchart": "History FlowChart", "to": "to", - "startDate" : "Start Date", + "startDate": "Start Date", "endDate": "End Date", "hmgHospitals": "HMG Hospitals", "hmcMedicalClinic": "HMC Medical Centers", @@ -864,10 +920,10 @@ "clearAllFilters": "Clear all filters", "filters": "Filters", "searchClinic": "Search Clinic", - "walkin": "Walk In", + "walkin": "Booked", "continueString": "Continue", "laserClinic": "Laser Clinic", - "covid_info" :"Dr. Sulaiman Al Habib hospitals are conducting a test for the emerging corona virus and issuing travel certificates 24/7 in a short time and with high accuracy. Those wishing to benefit from this service can visit one of Dr. Sulaiman Al Habib branches to conduct a corona test within few minutes, and obtain the result within several hours. Corona Virus Covid 19 testing service with PCR technology to detect the virus according to the highest international standards and with the latest high-precision RT-PCR devices (American GeneXpert and others), That is approved by the Food and Drug Authority as well as by the Saudi Center for Infectious Diseases Prevention.", + "covid_info": "Dr. Sulaiman Al Habib hospitals are conducting a test for the emerging corona virus and issuing travel certificates 24/7 in a short time and with high accuracy. Those wishing to benefit from this service can visit one of Dr. Sulaiman Al Habib branches to conduct a corona test within few minutes, and obtain the result within several hours. Corona Virus Covid 19 testing service with PCR technology to detect the virus according to the highest international standards and with the latest high-precision RT-PCR devices (American GeneXpert and others), That is approved by the Food and Drug Authority as well as by the Saudi Center for Infectious Diseases Prevention.", "appointmentDetails": "Appointment Details", "checkingDoctorAvailability": "Checking doctor availability...", "cancellingAppointmentPleaseWait": "Cancelling Appointment, Please Wait...", @@ -877,13 +933,13 @@ "doctorWillCallYou": "The doctor will call you once the appointment time approaches.", "getDirections": "Get Directions", "notifyMeBeforeAppointment": "Notify me before the appointment", - "fetchingLabResults": "Fetching Lab Results...", - "fetchingRadiologyResults": "Fetching Radiology Results...", - "fetchingAppointmentPrescriptions": "Fetching Appointment Prescriptions...", + "fetchingLabResults": "Please Wait...", + "fetchingRadiologyResults": "Please Wait...", + "fetchingAppointmentPrescriptions": "Please Wait...", "noPrescriptionsForAppointment": "You don't have any prescriptions for this appointment.", "amountBeforeTax": "Amount before tax", "rebookAppointment": "Re-book Appointment", - "fetchingDoctorSchedulePleaseWait": "Fetching Doctor Schedule, Please Wait...", + "fetchingDoctorSchedulePleaseWait": "Please Wait...", "pickADate": "Pick a Date", "confirmingAppointmentPleaseWait": "Confirming Appointment, Please Wait...", "appointmentConfirmedSuccessfully": "Appointment Confirmed Successfully", @@ -892,11 +948,12 @@ "paymentFailedPleaseTryAgain": "Payment Failed! Please try again.", "appointmentCheckIn": "Appointment check in", "insuranceExpiredOrInactive": "Insurance expired or inactive", - "totalAmountToPay": "Total amount to pay", + "totalAmountToPay": "Total Amount", "vat15": "VAT 15%", "general": "General", "liveCare": "LiveCare", "recentVisits": "Recent Visits", + "favouriteDoctors": "Favourite Doctors", "searchByClinic": "Search By Clinic", "tapToSelectClinic": "Tap to select clinic", "searchByDoctor": "Search By Doctor", @@ -906,23 +963,23 @@ "immediateConsultation": "Immediate Consultation", "scheduledConsultation": "Scheduled Consultation", "pharmaLiveCare": "Pharma LiveCare", - "notSureHelpMeChooseClinic": "Not sure? help me choose a clinic!", - "mentionYourSymptomsAndFindDoctors": "Mention your symptoms and find the list of doctors accordingly", + "notSureHelpMeChooseClinic": "Need help choosing a clinic?", + "mentionYourSymptomsAndFindDoctors": "Tell us your symptoms, and we’ll recommend the best-suited specialists for your care", "immediateService": "Immediate service", - "noNeedToWaitGetMedicalConsultation": "No need to wait, you will get medical consultation immediately via video call", + "noNeedToWaitGetMedicalConsultation": "No need to wait, you will get medical consultation immediately", "noVisitRequired": "No visit required", - "doctorWillContact": "Doctor will contact", - "specialisedDoctorWillContactYou": "A specialised doctor will contact you and will be able to view your medical history", + "doctorWillContact": "Doctor will contact you", + "specialisedDoctorWillContactYou": "A specialized doctor will contact you and will be able to view your medical history", "freeMedicineDelivery": "Free medicine delivery", - "offersFreeMedicineDelivery": "Offers free medicine delivery for the LiveCare appointment", + "offersFreeMedicineDelivery": "Receive free medicines delivery with your LiveCare appointment.", "dentalChiefComplaints": "Dental Chief Complaints", "viewAvailableAppointments": "View available appointments", "doctorProfile": "Doctor Profile", "waitingAppointment": "Waiting Appointment", "hospitalInformation": "Hospital Information", - "fetchingAppointmentShare": "Fetching Appointment Share...", + "fetchingAppointmentShare": "Please Wait...", "bookingYourAppointment": "Booking your appointment...", - "selectLiveCareClinic": "Select LiveCare Clinic", + "selectLiveCareClinic": "LiveCare Clinic", "checkingForExistingDentalPlan": "Checking for an existing dental plan, Please wait...", "dentalTreatmentPlan": "Dental treatment plan", "youHaveExistingTreatmentPlan": "You have an existing treatment plan: ", @@ -933,26 +990,26 @@ "viewNearestAppos": "View nearest available appointments", "noDoctorFound": "No Doctor found for selected criteria...", "yesPleasImInAHurry": "Yes please, I am in a hurry", - "fetchingFeesPleaseWait": "Fetching fees, Please wait...", + "fetchingFeesPleaseWait": "Please Wait...", "noThanksPhysicalVisit": "No, Thanks. I would like a physical visit", "offline": "Offline", "videoCall": "Video Call", - "liveVideoCallWithHMGDoctors": "Live Video Call with HMG Doctors", - "liveAudioCallWithHMGDoctors": "Live Audio Call with HMG Doctors", + "liveVideoCallWithHMGDoctors": "Live video call with a specialist", + "liveAudioCallWithHMGDoctors": "Live audio call with a specialist", "audioCall": "Audio Call", "phoneCall": "Phone Call", - "livePhoneCallWithHMGDoctors": "Live Phone Call with HMG Doctors", - "reviewLiveCareRequest": "Review LiveCare Request", - "selectedLiveCareType": "Selected LiveCare Type", - "selectLiveCareCallType": "Select LiveCare call type", + "livePhoneCallWithHMGDoctors": "Live phone call with a specialist", + "reviewLiveCareRequest": "LiveCare Request Details", + "selectedLiveCareType": "LiveCare Type", + "selectLiveCareCallType": "LiveCare Call Type", "confirmingLiveCareRequest": "Confirming LiveCare request, Please wait...", "unknownErrorOccurred": "Unknown error occurred...", "liveCarePermissionsMessage": "LiveCare requires Camera, Microphone, Location & Notifications permissions to enable virtual consultation between patient & doctor, Please allow these to proceed.", - "liveCarePayment": "LiveCare Payment", + "liveCarePayment": "Payment", "mada": "Mada", "visaOrMastercard": "Visa or Mastercard", "tamara": "Tamara", - "fetchingApplePayDetails": "Fetching Apple Pay details, Please wait...", + "fetchingApplePayDetails": "Please Wait...", "liveCarePendingRequest": "LiveCare Pending Request", "callLiveCareSupport": "Call LiveCare Support", "whatIsWaitingAppointment": "What is Waiting Appointment?", @@ -971,7 +1028,7 @@ "bookingWaitingAppointment": "Booking Waiting Appointment, Please wait...", "enterValidIDorIqama": "Please enter a valid national ID or file number", "selectAppointment": "Select Appointment", - "rebookSameDoctor": "Rebook with same doctor", + "rebookSameDoctor": "New Appointment", "queueing": "Queueing", "inQueue": "In Queue", "yourTurn": "Your Turn", @@ -1010,7 +1067,7 @@ "noServicesAvailable": "No services available", "selectAService": "Select a Service", "comprehensiveCheckup": "Comprehensive Checkup", - "viewNearestHMGLocations": "View your nearest HMG locations", + "viewNearestHMGLocations": "View nearest HMG locations", "provideFeedbackOnServices": "Provide your feedback on our services", "liveChatWithHMG": "Live chat option with HMG", "send": "Send", @@ -1032,7 +1089,7 @@ "insuranceDocument": "Insurance Document", "selectBranch": "Select Branch", "patientInformation": "Patient information", - "patientLocation": "Where the patient located", + "patientLocation": "Select the location of the patient", "identificationNumber": "Identification Number", "enterIdentificationNumber": "Enter Identification Number*", "patientName": "Patient Name*", @@ -1060,7 +1117,7 @@ "hereIsYourReferralNumber": "Here is your Referral #: ", "searchEReferral": "Search E-Referral", "enterRequiredInfoToSearch": "Please enter the required information to search for an e-referral", - "selectPickupDirection": "Select Pickup Direction", + "selectPickupDirection": "Pickup Direction", "selectDirection": "Select Direction", "toHospital": "To Hospital", "fromHospital": "From Hospital", @@ -1071,9 +1128,9 @@ "pleaseSelectDetailsOfPickup": " Please select the details of pickup", "selectDetails": "Select Details", "work": "Work", - "pick": "Pick", - "insideTheHome": "Inside the home", - "haveAnyAppointment": "Have any appointment", + "pick": "Pick up", + "insideTheHome": "From your home/Selected location", + "haveAnyAppointment": "Select if you have any appointment?", "amountPaidAtHospital": "Amount will be paid at the hospital", "submitRequest": "Submit Request", "enterPickupLocationManually": "Enter Pickup Location Manually", @@ -1094,8 +1151,8 @@ "erOnlineCheckInDescription": "This service lets patients register their ER appointment prior to arrival.", "erOnlineCheckInSuccess": "Your ER Online Check-In has been successfully done. Please proceed to the waiting area.", "erOnlineCheckInError": "Unexpected error occurred during check-in. Please contact support.", - "fetchingHospitalsList": "Fetching hospitals list...", - "fetchingPaymentInformation": "Fetching payment information...", + "fetchingHospitalsList": "Please Wait...", + "fetchingPaymentInformation": "Please Wait...", "erVisitDetails": "ER Visit Details", "erClinic": "ER Clinic", "vatWithAmount": "VAT 15% ({amount})", @@ -1106,26 +1163,34 @@ "allFacilities": "All Facilities", "selectLocation": "Select Location", "pleaseSelectTheLocation": "Please select the location", - "viewLocationGoogleMaps": "View Location on Google Maps", + "viewLocationGoogleMaps": "Get Directions on Google Maps", "callAmbulance": "Call Ambulance", - "requestAmbulanceInEmergency": "Request an ambulance in emergency from home or hospital", + "requestAmbulanceInEmergency": "Request an ambulance for immediate assistance in cases of emergency.", "confirmation": "Confirmation", "areYouSureYouWantToCallAmbulance": "Are you sure you want to call an ambulance?", - "getDetailsOfNearestBranch": "Get the details of nearest branch including directions", + "getDetailsOfNearestBranch": "Find the nearest ER and get directions.", "areYouSureYouWantToCallRRT": "Are you sure you want to call Rapid Response Team (RRT)?", - "priorERCheckInToSkipLine": "Prior ER Check-In to skip the line & payment at the reception.", - "areYouSureYouWantToMakeERCheckIn": "Are you sure you want to make ER Check-In?", - "checkingYourERAppointmentStatus": "Checking your ER Appointment status...", + "priorERCheckInToSkipLine": "Check in before you arrive to the ER to skip the line & payment at reception.", + "areYouSureYouWantToMakeERCheckIn": "Are you sure you want to request an online ER check-in?", + "checkingYourERAppointmentStatus": "Please Wait...", "transportOptions": "Transport Options", "selectHospitalForAdvancePayment": "Please select the hospital you want to make an advance payment for.", - "recharge": "Recharge", + "recharge": "Add Funds", + "withdraw": "Withdraw", "activityLevel": "Activity Level", "selectActivityLevel": "Select Activity Level", + "almostInactive": "Almost Inactive (no exercise)", + "lightlyActive": "Lightly active", + "lightlyActive13Days": "Lightly active (1-3) days per week", + "superActive": "Super active (very hard exercise)", "caloriesPerDay": "Calories Per Day", "dietType": "Diet Type", "selectDietType": "Select Diet Type", "bodyFrameSize": "Body Frame Size", "selectBodyFrameSize": "Select Body Frame Size", + "bodyFrameSmall": "Small (fingers overlaps)", + "bodyFrameMedium": "Medium (fingers touch)", + "bodyFrameLarge": "Large (fingers don't touch)", "averageCycleLength": "Average Cycle Length (Usually 28 days)", "averageLutealPhase": "Average Luteal Phase Length(Usually 14 days)", "convert": "Convert", @@ -1138,19 +1203,27 @@ "womensHealth": "Women's Health", "relatedToPeriodsOvulation": "Related To periods, ovulation, pregnancy, and other topics.", "bloodSugar": "Blood Sugar", - "trackYourGlucoseLevels": "Track your glucose levels, understand trends, and get personalized insights for better health.", + "trackYourGlucoseLevels": "Track glucose levels, understand trends, and get personalized insights for better health.", "bloodCholesterol": "Blood Cholesterol", "monitorCholesterolLevels": "Monitor cholesterol levels, assess heart health risks, and take proactive steps for well-being.", "triglyceridesFatBlood": "Triglycerides Fat Blood", "understandTriglyceridesImpact": "Understand triglycerides' impact on heart health with personalized insights and expert recommendations.", - "bmiCalculator": "BMI\nCalculator", - "caloriesCalculator": "Calories\nCalculator", - "bmrCalculator": "BMR\nCalculator", - "idealBodyWeight": "Ideal Body\nWeight", - "bodyFatCalculator": "Body Fat\nCalculator", - "carbsProteinFat": "Carbs\nProtein & Fat", - "ovulationPeriod": "Ovulation\nPeriod", - "deliveryDueDate": "Delivery\nDue Date", + "bmiCalculator": "BMI Calculator", + "bmiCalculatorDesc": "Calculate body mass index to understand healthy weight range.", + "caloriesCalculator": "Calories Calculator", + "caloriesCalculatorDesc": "Find out how many calories needed daily to maintain or lose weight.", + "bmrCalculator": "BMR Calculator", + "bmrCalculatorDesc": "Determine basal metabolic rate and daily energy requirements.", + "idealBodyWeight": "Ideal Body Weight", + "idealBodyWeightDesc": "Discover ideal weight based on height, age, and body structure.", + "bodyFatCalculator": "Body Fat Calculator", + "bodyFatCalculatorDesc": "Estimate body fat percentage to track fitness and health goals.", + "carbsProteinFat": "Carbs Protein & Fat", + "carbsProteinFatDesc": "Balance macros with the right carbs, protein, and fat ratios.", + "ovulationPeriod": "Ovulation Period", + "ovulationPeriodDesc": "Track fertile window and plan for conception with accuracy.", + "deliveryDueDate": "Delivery Due Date", + "deliveryDueDateDesc": "Calculate expected delivery date and monitor pregnancy milestones.", "low": "Low", "preDiabetic": "Pre-diabetic", "high": "High", @@ -1181,20 +1254,21 @@ "healthTrackers": "Health Trackers", "monitorBloodPressureLevels": "Monitor your blood pressure levels, track systolic and diastolic readings, and maintain a healthy heart.", "trackWeightProgress": "Track your weight progress, set goals, and maintain a healthy body mass for overall wellness.", - "bookAppointment": "Book\nAppointment", + "bookAppointment": "New\nAppointment", "completeCheckup": "Complete Checkup", "indoorNavigation": "Indoor Navigation", "eReferralServices": "E-Referral Services", "dailyWaterMonitor": "Daily Water Monitor", - "fetchingYourWaterIntakeDetails": "Fetching your water intake details.", + "fetchingYourWaterIntakeDetails": "Please Wait...", "healthCalculatorsServices": "Health\nCalculators", "healthConvertersServices": "Health\nConverters", "smartWatchesServices": "Smart\nWatches", "exploreServices": "Explore Services", - "medicalAndCareServices": "Medical & Care Services", + "medicalAndCareServices": "Medical & Healthcare Services", "hmgServices": "HMG Services", "personalServices": "Personal Services", - "habibWallet": "Habib Wallet", + "habibWallet": "HMG Wallet", + "habibWallet2": "Habib Wallet", "loginToViewWalletBalance": "Login to view your wallet balance", "loginToViewMedicalFile": "Login to view your medical file", "addMember": "Add Member", @@ -1209,39 +1283,41 @@ "durationCannotExceed90": "Duration can not exceed 90 mins", "unexpectedError": "Unexpected Error Occurred", "gettingAmbulanceTransportOption": "Getting Ambulance Transport Option", - "fetchingAppointment": "Fetching Appointment", + "fetchingAppointment": "Please Wait...", "doYouWantToCancelTheRequest": "Do you want to cancel the request", "cancellingRequest": "Cancelling request", - "fetchingTermsAndConditions": "Fetching Terms And Conditions", + "fetchingTermsAndConditions": "Please Wait...", "selectLocationPrescriptionDelivery": "Please select the location for prescription delivery", "noRadiologyOrders": "No Radiology Orders Found", "ageIsRequired": "Age is required", + "ibanIsRequired": "IBAN field is required", + "descriptionIsRequired": "Description is required", "invalidAge": "Invalid age", "ageMustBeBetween11And120": "Age must be between 11 and 120", "heightIsRequired": "Height is required", "invalidHeight": "Invalid height", "weightIsRequired": "Weight is required", "invalidWeight": "Invalid weight", - "timeToDrinkWater": "Time to Drink Water! 💧", + "timeToDrinkWater": "Time to Drink Water!", "stayHydratedDrinkWater": "Stay hydrated! Drink {amount}ml of water.", - "visitPharmacyOnline": "Visit Pharmacy Online", + "visitPharmacyOnline": "Online Pharmacy", "howAreYouFeelingToday": "How are you feeling today?", - "checkYourSymptomsWithScale": "Check your symptoms with this scale", - "checkYourSymptoms": "Check your symptoms", + "checkYourSymptomsWithScale": "We are here to understand the symptoms and match with the right doctor", + "checkYourSymptoms": "Symptom Checker", "noUpcomingAppointmentPleaseBook": "You do not have any upcoming appointment. Please book an appointment", "youHaveEROnlineCheckInRequest": "You have ER Online Check-In Request", "quickLinks": "Quick Links", "viewMedicalFileLandingPage": "View medical file", "immediateLiveCareRequest": "Immediate LiveCare Request", - "yourTurnIsAfterPatients": "Your turn is after {count} patients.", + "yourTurnIsAfterPatients": "There are {count} patients ahead of you. The doctor will call you shortly.", "dontHaveHHCOrders": "You don't have any Home Health Care orders yet.", "hhcOrders": "HHC Orders", "requestedServices": "Requested Services", "selectServices": "Select Services", "selectedServices": "Selected Services", - "createNewRequest": "Create new request", - "youHaveNoPendingRequests": "You have no pending requests.", - "noInsuranceDataFound": "No insurance data found...", + "createNewRequest": "New Request", + "youHaveNoPendingRequests": "You have no pending requests", + "noInsuranceinsurance2DataFound": "No insurance data found...", "noInsuranceUpdateRequest": "No insurance update requests found.", "policyNumberInsurancePage": "Policy: {number}", "insuranceExpired": "Insurance Expired", @@ -1259,14 +1335,14 @@ "lastTested": "Last Tested", "byVisit": "By Visit", "byTest": "By Test", - "results": "results", + "results": "Results", "viewResults": "View Results", "rebook": "Rebook", "noOphthalmologyAppointments": "No Ophthalmology appointments found...", "noVitalSignsRecordedYet": "No vital signs recorded yet", "appointmentsAndVisits": "Appointments & visits", "labAndRadiology": "Lab & Radiology", - "activeMedicationsAndPrescriptions": "Active Medications & Prescriptions", + "activeMedicationsAndPrescriptions": "Recent Prescriptions", "allPrescriptions": "All Prescriptions", "allMedications": "All Medications", "youDontHaveAnyPrescriptionsYet": "You don't have any prescriptions yet.", @@ -1274,7 +1350,7 @@ "others": "Others", "allergyInfo": "Allergy Info", "vaccineInfo": "Vaccine Info", - "updateInsuranceInfo": "Update Insurance", + "updateInsuranceInfo": "Insurance Update", "myInvoicesList": "My Invoices List", "ancillaryOrdersList": "Ancillary Orders List", "youDontHaveAnySickLeavesYet": "You don't have any sick leaves yet.", @@ -1284,6 +1360,7 @@ "askYourDoctor": "Ask Your Doctor", "internetPairing": "Internet Pairing", "requested": "Requested", + "readyToDownload": "Ready to download", "youDontHaveAnyMedicalReportsYet": "You don't have any medical reports yet.", "requestMedicalReport": "Request medical report", "youDoNotHaveAnyAppointmentsToRequestMedicalReport": "You do not have any appointments to request a medical report.", @@ -1301,7 +1378,7 @@ "rejectedYourFamilyMemberRequest": "{status} your family member request", "notAvailable": "N/A", "selectAProfile": "Please select a profile", - "switchFamilyFile": "Switch from the below list of medical file", + "switchFamilyFile": "Switch from the below list of medical files", "medicalFiles": "Medical Files", "addANewFamilyMember": "Add a new family member", "viewInvoiceDetails": "View invoice details", @@ -1311,7 +1388,7 @@ "emailSentSuccessfullyMessage": "Email sent successfully.", "discount": "Discount", "paid": "Paid", - "fetchingInvoiceDetails": "Fetching invoice details, Please wait...", + "fetchingInvoiceDetails": "Please Wait...", "scanQRCode": "Scan QR code", "parkingSlotDetails": "Parking Slot Details", "slotNumber": "Slot: {code}", @@ -1320,12 +1397,12 @@ "parkedSince": "Parked Since: {time}", "resetDirection": "Reset Direction", "noPrescriptionOrdersYet": "You don't have any prescription orders yet.", - "fetchingPrescriptionPDFPleaseWait": "Fetching prescription PDF, Please wait...", + "fetchingPrescriptionPDFPleaseWait": "Please Wait...", "ratingValue": "Rating: {rating}", "downloadPrescription": "Download Prescription", - "fetchingPrescriptionDetails": "Fetching prescription details...", + "fetchingPrescriptionDetails": "Please Wait...", "switchBackFamilyFile": "Switch Back To Family File", - "profileAndSettings": "Profile & Settings", + "profileAndSettings": "Settings", "quickActions": "Quick Actions", "notificationsSettings": "Notifications Settings", "touchIDFaceIDServices": "Touch ID / Face ID Services", @@ -1356,7 +1433,7 @@ "areYouSureYouWantToRestartOrganSelection": "Are you sure you want to restart the organ selection?", "possibleConditions": "Possible Conditions", "pleaseSelectAtLeastOneRiskBeforeProceeding": "Please select at least one risk before proceeding", - "aboveYouSeeCommonRiskFactors": "Above you see the most common risk factors. Although /diagnosis may return questions about risk factors, ", + "aboveYouSeeCommonRiskFactors": "Above you see the most common risk factors. Although /diagnosis may return questions about risk factors", "readMore": "Read more", "riskFactors": "Risk Factors", "noRiskFactorsFound": "No risk factors found", @@ -1369,8 +1446,11 @@ "suggestions": "Suggestions", "pleaseGoBackAndSelectOrgansFirst": "Please go back and select organs first", "symptomsSelector": "Symptoms Selector", - "possibleSymptomsRelatedTo": "Possible symptoms related to", + "possibleSymptomsRelatedTo": "Possible symptoms related to selected organs", "suggestionAIListDescription": "This is a list of symptoms suggested by our AI, based on the information gathered so far during the interview", + "whyAmIBeingAskedThis": "Why am I being asked this?", + "weAreAskingThisQuestionToBetterUnderstand": "We are asking this question to better understand your {symptoms} and improve the accuracy of the assessment.", + "analyzingYourSymptoms": "your symptoms", "analyzing": "Analyzing...", "seekMedicalAdvice": "Seek Medical Advice", "monitorDescription": "No need to seek medical advice. Just keep healthy routine.", @@ -1389,6 +1469,30 @@ "areYouSureYouWantToExitProgress": "Are you sure you want to exit? Your progress will be lost.", "noQuestionAvailable": "No question available", "possibleSymptom": "Possible symptom: ", + "triageLevelEmergencyAmbulance": "Emergency - Call Ambulance", + "triageLevelEmergency": "Emergency", + "triageLevelConsultation24": "Consultation Within 24 Hours", + "triageLevelConsultation": "Medical Consultation", + "triageLevelSelfCare": "Self-Care", + "triageLevelEmergencyAmbulanceDesc": "The reported symptoms are very serious and you may require emergency care. You should call an ambulance right now.", + "triageLevelEmergencyDesc": "The reported evidence appears serious and you should go to an emergency department. If you can't get to the nearest emergency department, call an ambulance.", + "triageLevelConsultation24Desc": "You should see a doctor within 24 hours. If the symptoms suddenly get worse, go to the nearest emergency department.", + "triageLevelConsultationDesc": "You may require medical evaluation and may need to schedule an appointment with a doctor. If the symptoms get worse, see a doctor immediately.", + "triageLevelSelfCareDesc": "The declared symptoms may not require a medical evaluation and they usually resolve on their own. Sometimes they can be treated through self-care methods. Observe your symptoms and consult a doctor if the symptoms get worse or new ones appear.", + "rootCauseEmergencyEvidencePresent": "Emergency evidence reported", + "rootCauseSeriousEvidencePresent": "Serious evidence reported", + "rootCauseEmergencyConditionLikely": "Life-threatening condition likely", + "rootCauseEmergencyConditionPossible": "Life-threatening condition possible", + "rootCauseConsultationConditionLikely": "Medical consultation required", + "rootCauseSelfCareSufficient": "No identified reason for medical evaluation", + "rootCauseDiagnosisUnknown": "Assessment not possible", + "teleconsultationAvailable": "Teleconsultation Available", + "seriousSymptoms": "Serious Symptoms", + "howTo": "How to?", + "explainWhy": "Explain, Why?", + "whyThisCondition": "Why this condition?", + "supportingEvidence": "Supporting Evidence", + "explanationDescription": "Based on your reported symptoms, this condition has been identified as a possible match. The following symptoms support this assessment:", "symptomsCheckerFindingScore": "- Symptoms checker finding score", "notSet": "Not set", "years": "Years", @@ -1429,6 +1533,8 @@ "setTimerOfReminder": "Set the timer of reminder", "youHaveAppointmentWithDr": "You have appointment with Dr. ", "hours": "Hours", + "minutes": "Minutes", + "seconds": "Seconds", "secs": "Secs", "noAllergiesDataFound": "No allergies data found...", "heartRateDescription": "Your heart rate indicates how many times your heart beats per minute", @@ -1438,6 +1544,7 @@ "distanceDescription": "Distance covered throughout the day", "overview": "Overview", "details": "Details", + "details2": "Details", "healthy": "Healthy", "warning": "Warning", "vitalSignDetails": "Vital Sign Details", @@ -1450,7 +1557,7 @@ "heightDescription": "Height is measured in centimeters and is used to calculate BMI and dosage recommendations.", "weightDescription": "Weight helps track overall health, nutrition, and changes over time.", "bloodPressureDescription": "Blood pressure reflects the force of blood against artery walls. It is shown as systolic/diastolic.", - "temperatureDescription": "Body temperature reflects how hot your body is and may change with infection or inflammation.", + "temperatureDescription": "Body temperature is a vital sign that indicates how warm the body is. It may increase in response to immune triggers like infection or inflammation", "heartRateDescriptionVital": "Heart rate refers to the number of heart beats per minute.", "respiratoryRateDescription": "Respiratory rate is the number of breaths taken per minute.", "bmiAdvice": "Maintain a balanced diet and regular activity. If your BMI is high or low, consider consulting your doctor.", @@ -1490,7 +1597,7 @@ "route": "Route", "frequency": "Frequency", "reminders": "Reminders", - "reminderAddedToCalendar": "Reminder added to calendar ✅", + "reminderAddedToCalendar": "Reminder added to calendar", "errorWhileSettingCalendar": "Error while setting calendar: {error}", "instructions": "Instructions", "requests": "Requests", @@ -1503,18 +1610,18 @@ "pleaseVisitRoomToTheDoctor": "Please visit Room {roomNumber} to the Doctor", "erOnlineCheckInRequest": "ER Online Check-In Request", "indoor": "Indoor", - "navigation": "Navigation", + "thehospital": "Navigation", "health": "Health", "calculators": "Calculators", "converters": "Converters", "guide": "Guide", - "liveCareServiceDesc": "Get medical advice with a specialist doctor Via a video call", + "liveCareServiceDesc": "Get medical advice from a specialist doctor virtually", "bloodGroup": "Blood: {bloodType}", "medicalServices": "Medical Services", "insuranceAndPayments": "Insurance & Payments", "trackerAndOthers": "Tracker & Others", "bmi": "BMI", - "yesPleaseINeedHelp": "Yes, Please I need help", + "yesPleaseINeedHelp": "Yes, Please", "confirmYourLocation": "Confirm Your Location", "confirmYourLocationDesc": "Please confirm your present location to view appropriate directions.", "insideHospital": "I am inside the hospital", @@ -1524,7 +1631,7 @@ "servicePriceListRights": "The patient has the right to a free follow-up within 14 days of initial visit", "serviceName": "Service Name", "noFreeSlot": "No free slot available for the selected date. Please select another date or check back later.", - "noThanksIKnowTheClinic": "No, Thanks. I Know the clinic", + "noThanksIKnowTheClinic": "No, Thanks", "unableToSendOTP": "Unable to send Verification OTP", "aiOverView": "AI Overview", "generateAiAnalysis": "Generate AI analysis for this order", @@ -1532,7 +1639,7 @@ "prediction": "Prediction", "prevention": "Prevention", "disclaimer": "Disclaimer", - "thisAboveInfo": "The above information is generated by AI based on your lab results and is intended for informational purposes only. It should not be considered a medical diagnosis or treatment plan. Always consult with your healthcare provider for personalized medical advice and before making any health-related decisions.", + "thisAboveInfo": "This Lab result was analyzed by AI, and it is not medical advice. Consult your healthcare provider for diagnosis and treatment.", "aiDisclaimer": "Your lab result data will be securely shared with our AI Analyzer for analysis. This helps provide personalized health insights. Do you want to proceed?", "consent": "Consent", "bmiNormalDescription": "Your BMI is within the healthy range. Continue a balanced diet, regular physical activity, and routine checkups to maintain good health. Monitor any significant changes over time.", @@ -1564,7 +1671,7 @@ "contextDependent": "Context Dependent", "calculatedValue": "Calculated Value", "calculationFormula": "Calculation Formula", - "loadingAIAnalysis": "Analysing your lab results, Please be patient and let the AI do the magic, This might take some time.", + "loadingAIAnalysis": "Analysing your results, let the AI do the magic, This might take some time.", "symptoms": "Symptoms", "insuranceInActive": "Insurance Inactive", "insuranceInActiveContactSupport": "You have a valid insurance but it is currently inactive in HMG. Please contact HMG customer support to activate it.", @@ -1590,6 +1697,268 @@ "updatetheinformation": "This will allow to gather the most up to date information from your apple watch", "timeFor": "Time For", "hmgPolicies": "HMG Policies", + "featureComingSoonDescription": "Feature is coming soon. We are actively working to bring more exciting features into the app. Stay tuned for updates.", "darkMode": "Dark Mode", - "featureComingSoonDescription": "Feature is coming soon. We are actively working to bring more exciting features into the app. Stay tuned for updates." + "generateAiAnalysisResult": "Generate AI analysis for this result", + "ratings": "Ratings", + "hmgPharmacyText": "Online pharmacy for a complete health shopping experience", + "insuranceRequestSubmittedSuccessfully": "Your insurance update request has been successfully submitted. You will be notified once completed.", + "updatingEmailAddress": "Updating email address, Please wait...", + "verifyInsurance": "Verify Insurance", + "tests": "tests", + "calendarPermissionAlert": "Please grant calendar access permission from app settings to set medication reminder.", + "timeForFirstReminder": "Add Reminder", + "reminderRemovalNote": "You can remove it from your calendar later by switching off the reminder", + "prescriptionDatePassedError": "Prescription date has already passed. You cannot add a reminder for this prescription.", + "sortByLocation": "Sort by location", + "sortByNearestLocation": "Sort by nearest to your location", + "giveLocationPermissionForNearestList": "Please grant location permission from app settings to see the nearest locations.", + "communicationLanguage": "Communication Language", + "cmcServiceHeader": "Complete Health Checkup: Advanced diagnostics, Detailed Health insights", + "cmcServiceDescription": "Get detailed insights into your health with our advanced diagnostics. Understand your body better for a healthier future.", + "eReferralServiceHeader": "HMG Hospital E-Referral: Streamlined patient referrals", + "eReferralServiceDescription": "Facilitate seamless patient transfers to HMG with our secure e-referral system. Ensure continuity of care for every patient.", + "bloodDonationServiceHeader": "Give Blood, Save Lives. Your donation makes a difference.", + "bloodDonationServiceDescription": "Donate blood, empower lives. Your contribution creates hope. Join our blood drive and be a lifeline for those in need. Every drop counts!", + "healthTrackersServiceHeader": "Track Your Vitals with Ease and effortlessly ", + "healthTrackersServiceDescription": "Input your metrics for continuous heart rate monitoring, blood pressure and precise daily activity summaries. Stay informed and optimize your well-being with ease.", + "waterConsumptionServiceHeader": "Stay Hydrated, Stay Healthy. Track your daily water intake with ease.", + "waterConsumptionServiceDescription": "Quench your thirst, track your health. Effortlessly monitor your daily water intake with our user-friendly app, ensuring optimal hydration and well-being.", + "smartWatchServiceHeader": "Sync Smartwatch with Health Apps", + "smartWatchServiceDescription": "Seamlessly connect your smartwatch to our health app for effortless data tracking and personalized insights.", + "liveChatServiceHeader": "24/7 Expert\nAssistance", + "liveChatServiceDescription": "Need help ? Our live chat connects you with expert support for any questions about features, settings, or troubleshooting.", + "emergencyServiceHeader": "Emergency Care, Faster than Ever.", + "emergencyServiceDescription": "Facing a medical emergency? Our ambulances are on standby 24/7 for your immediate assistance.", + "homeHealthCareServiceHeader": "Premium care, delivered right to your doorstep", + "homeHealthCareServiceDescription": "We provide the highest degree of patient care at home in a value-oriented, efficient, and professional manner.", + "profileOnlyText": "Profile", + "information": "Information", + "noFavouriteDoctors": "You don't have any favorite list yet", + "addDoctors": "Add Doctors", + "favouriteList": "Favorite List", + "later": "Later", + "cancelAppointmentConfirmMessage": "Are you sure you want to cancel this appointment?", + "acknowledged": "Acknowledged", + "searchLabResults": "Search lab results", + "callForAssistance": "Call for immediate assistance", + "oneWaySubtitle": "Pickup from location to hospital", + "twoWaySubtitle": "Round trip from location to hospital", + "toHospitalSubtitle": "Transfer from your current location to the hospital", + "fromHospitalSubtitle": "Transfer from the hospital back to your home", + "clinicSchedule": "Clinic Schedule", + "doctorAddedToFavourite": "Added to favorites list", + "doctorRemovedFromFavourite": "Removed from favorites list", + "favourites": "Favourites", + "addNewFavorite": "Add new favourite", + "pendingAncillaryOrders": "Pending ancillary orders", + "liveCarePermissions": "LiveCare requires Camera, Microphone & Notifications permissions to enable virtual consultation between patient & doctor, Open app settings to allow them.", + "containsImage": "Contains Image", + "servicesSelected": "Service(s) Selected", + "selectMedicalFileFromFamily": "Select a medical file from your family", + "anyFileFromHMG": "Any active medical file from HMG", + "noDistance": "Distance not available", + "enterAmount": "Please enter amount to continue.", + "selectHospitalContinue": "Please select hospital to continue.", + "year": "Year", + "notifyPrescription": "Notify me before the consumption time", + "doctorRatingAppointment": "Doctor Rating", + "ratingSubmitted": "Rating Submitted", + "rateTheDoctor": "Please rate the doctor", + "downloadInvoice": "Download Invoice", + "approvalDetails": "Approval Details", + "obese": "Obese", + "overWeight": "OverWeight", + "underWeight": "UnderWeight", + "nearestGate": "Nearest Gate", + "RRTDDetails": "Request a specialized team that offers comprehensive medical services for urgent and stable cases.", + "fromHospitalSubtitle": "Transfer from the hospital back to your home", + "normalMapType": "Default", + "satelliteMapType": "Satellite", + "terrainMapType": "Terrain", + "hybridMapType": "Hybrid", + "openCamera": "Open Camera", + "openGallery": "Open Gallery", + "openFiles": "Open Files", + "generateAiAnalysisRadResult": "Generate AI analysis for this result", + "grantLocationPermission": "Please grant location permission from app settings to see better results.", + "NoBookedAppointments": "No Booked Appointments", + "aiDisclaimerRad": "Your radiology result data will be securely shared with our AI Analyzer for analysis. This helps provide personalized health insights. Do you want to proceed?", + "imageSizeTooLarge": "Image size is too large. Maximum size is 1MB", + "profileImageUpdatedSuccessfully": "Profile image updated successfully", + "failedToProcessImage": "Failed to process image. Please try again", + "cameraGalleryPermissionMessage": "Camera and Gallery permissions are required to upload profile picture. Please grant permissions from app settings.", + "cameraGalleryPermissionRequired": "Camera and Gallery permissions are required", + "cameraPermissionMessage": "Camera permission is required to take photos. Please grant permission from app settings.", + "cameraPermissionRequired": "Camera permission is required", + "galleryPermissionMessage": "Gallery permission is required to select photos. Please grant permission from app settings.", + "galleryPermissionRequired": "Gallery permission is required", + "failedToCheckPermissions": "Failed to check permissions. Please try again", + "takePhotoWithCamera": "Take a photo with your camera", + "selectFromPhotoLibrary": "Select from your photo library", + "selectDocumentFiles": "Select document files", + "profilePicture": "Profile Picture", + "aiDisclaimerRad": "Your radiology result data will be securely shared with our AI Analyzer for analysis. This helps provide personalized health insights. Do you want to proceed?", + "sendingAskDrRequest": "Sending Request...", + "askDrRequestSentSuccess": "Request has been sent successfully, The doctor will get back to you soon.", + "onlineCheckIn24HoursOnly": "Online Check-In is only available within 4 hours of the appointment time.", + "searchFor": "Search For", + "m": "m", + "inch": "in", + "updateEmailAddressTitle": "Enter the new email address to be updated: ", + "enterNewNewContactNumber": "Enter the new emergency contact number to be updated: ", + "nationalIdFileNumber": "National ID/File Number", + "finda": "Find a", + "calculateCaloriesBasedOnFactors": "Calculates daily calorie intake based on several factors including: height, weight, age, gender and daily physical activity.", + "insurance2": "Insurance", + "conformationCall": "You will receive a call from HMG for confirmation ", + "radiologyLabResults": "Radiology Results", + "disclaimerRadiology": "This radiology result was analyzed by AI, and it is not medical advice. Consult your healthcare provider for diagnosis and treatment.", + "enterIdentificationNumberWithNoStar": "Enter Identification Number", + "enterReferralNumber": "Enter Referral Number", + "referralNumber": "Referral Number", + "phoneHint": "5xxxxxxxx", + "selectSearchCriteria": "Select the Search Criteria", + "selectCriteria": "Select Criteria", + "locationServicesDisabled": "Weather is unavailable because location services are disabled. Please enable location services to see the weather information.", + "selectDateTimeKey": "Select", + "carbsAlert": "Calculate carbohydrate based protein and fat ration in calories and grams according to a pre set ratio.", + "bodyFatAlert": "Estimate the total body fat based on the size.", + "ibwAlert": "Calculates the ideal body weight based on height, weight and body size.", + "glucoseAlert": "Convert blood glucose values between mg/dL and mmol/L. (1 mmol/L ≈ 18.0182 mg/dL)", + "selectBloodGroup": "Select Blood Group", + "routePrescription": "Route", + "noNearestER": "No nearest Er Around you", + "loginToUseServiceLiveCare": "Log In to Use This Service", + "medicalKey": "Medical", + "convertBloodcholesterolInfo": "Convert blood cholesterol values between mg/dL and mmol/L. ", + "mldl": "مليجرام لكل ديسيلتر", + "mmol": "ملي مول لكل لتر", + "triglycerideInfo": "Convert triglyceride values between mg/dL and mmol/L.", + "selectSmartWatch": "Select", + "selectBloodDonationCity": "Select City", + "selectBloodDonationGender": "Select Gender", + "selectBloodType": "Select Blood Type", + "doctors2": "Doctor", + "illurgyInfomation": "Allergy", + "vaccineInfomation": "Vaccine", + "approvals1": "Approvals", + "networkErrorTitle": "Connection Error", + "networkErrorMessage": "Unable to connect to the server. Please check your internet connection and try again.", + "networkConnectionReset": "The connection was interrupted. Please try again.", + "networkTimeout": "The request timed out. Please try again.", + "networkUnknownError": "Something went wrong. Please try again later.", + "networkErrorWhileFetching": "Something went wrong while loading data. Please try again.", + "networkPleaseCheckInternet": "Please check your internet connection and try again.", + "networkServerErrorNoMessage": "A server error occurred. Please try again later.", + "startLiveChat": "Start Live Chat", + "followUsOn": "Follow us on:", + "followUsOnX": "Follow us \n on X", + "likeUsOnFB": "Like us on Facebook", + "watchUsOnYoutube": "Watch us on youtube", + "connectOnLinkedin": "Connect on LinkedIn", + "riskFactorPageTitle": "What do you feel?", + "doAnyOfTheseApply": "Do any of these apply to you?", + "bloodDonationService": "Blood \nDonation", + "bookAppointmentService": "Book\nAppointment", + "pinchToZoom": "Pinch to zoom", + "gotIt": "Got it", + "zoomIntoDetails": "Zoom into details", + "pinchWithTwoFingersToZoom": "Pinch with two fingers to zoom", + "dragToMoveAround": "Drag to move around", + "startExploring": "Start exploring", + "symptomsCheckSuggestions": "Suggestions", + "appointmentArrived": "Arrived", + "calendarPermissionAlertForAppointment": "Please grant calendar access permission from app settings to set appointment reminder.", + "rechargePageKey": "Recharge Wallet", + "selectFamilyFile": "Select", + "ancillaryOrdersListNew": "Ancillary Orders List", + "medicalReportNew": "Medical Report", + "livecarePendingReuqestNew": "Live Care Pending Request", + "medicinesAnalysis": "Medicines Analysis", + "importantWarnings": "Important Warnings", + "medicineInteractions": "Medicine Interactions", + "followUpNeeded": "Follow-up Needed", + "benefit": "Benefit", + "commonSideEffects": "Common Side Effects", + "seriousWarnings": "Serious Warnings", + "storage": "Storage", + "aiDisclaimerPrescription": "Your prescription data will be securely shared with our AI Analyzer for analysis. This helps provide personalized health insights. Do you want to proceed?", + "generateAiAnalysisPrescription": "Generate AI analysis", + "loadingAIAnalysisPrescription": "Analysing your prescription, let the AI do the magic, This might take some time.", + "thisAboveInfoPrescription": "This prescription was analyzed by AI, and it is not medical advice. Consult your healthcare provider for diagnosis and treatment.", + "liveCareNotificationPermissionsMessage": "LiveCare requires Notifications permission, Please allow to proceed.", + "weatherIndicators": "Weather", + "submitRating": "Submit", + "maxOneFileAllowed": "Only 1 file can be uploaded", + "fileSizeExceedsLimit": "File size must not exceed 1 MB", + "completedPrescriptionOrder": "Completed", + "submitEReferral": "Submit", + "requestRefund": "Request Refund", + "uploadImage": "Upload Image", + "selectImage": "Select Image", + "selectOptions": "Select Options", + "iban": "IBAN", + "addIbanDetails": "Add IBAN Details", + "description": "Description", + "enterDescription": "Enter Description", + "submitRequest": "Submit Request", + "ibanIsRequired": "IBAN is required", + "descriptionIsRequired": "Description is required", + "invalidIbanFormat": "Invalid IBAN. Please enter a valid IBAN (e.g. SA0380000000608010167519)", + "refundHistory": "Refund History", + "noRefundHistoryFound": "You don't have any refund history yet.", + "invoiceNo": "Invoice No.", + "totalAmount": "Total Amount", + "patientShare": "Patient Share", + "selectProcedure": "Select Procedure", + "noProceduresAvailableForRefund": "No procedures available for refund", + "selectAll": "Select all", + "selectRefundMethod": "Select Refund Method", + "hmgWallet": "HMG Wallet", + "bankTransfer": "Bank Transfer", + "selectRefundReason": "Select Refund Reason", + "refundReason": "Refund Reason", + "done": "Done", + "refundReason1": "Company patient treated as self-paying and re-invoiced", + "refundReason2": "Patient does not want a clinical procedure", + "refundReason3": "Patient does not wait for consultation/wants another doctor", + "refundReason4": "Patient discontinued the package", + "refundReason5": "Service not done/not available due to machine breakdown/patient refusal", + "refundReason6": "Clinical procedure cancelled or changed by requesting doctor", + "refundReason7": "Service unit/lab/radiology procedure cancelled or changed by requesting doctor", + "selectProcedures": "Select Procedures", + "beforeUsingSymptomsChecker": "Before using the Symptoms Checker, please read the Terms of Service and remember:", + "symptomsCheckerNotDiagnosis": "• Symptoms Checker isn't a diagnosis. It's only for your information and not a qualified medical opinion.", + "symptomsCheckerNotEmergency": "• Symptoms Checker isn't for emergencies. Call your local emergency number right away when there's a health emergency.", + "yourDataIsSafe": "• Your data is safe. Privacy measures ensure the information you share is protected.", + "redeem": "Redeem", + "points": "Points", + "transactions": "Transactions", + "pharmacy": "Pharmacy", + "visitsOrders": "Visits/Orders", + "earned": "Earned", + "getParkingQR": "Get Parking QR", + "cannotOpenThisFile": "Cannot open this file", + "refundDetails": "Refund Details", + "requestNo": "Request No.", + "referenceNo": "Reference No.", + "refund": "Refund", + "advanceNumber": "Advance Number", + "amountOnly": "Amount", + "invoiceHistory": "Invoice History", + "parkingQR": "Parking QR Code", + "parkingQRDesc": "Scan the below QR Code at the exit parking gate:", + "livecareUpdateInsuranceSent": "Your insurance update request is being processed. You will be notified once the update is completed.", + "livecareUpdateInsurance": "Please note that your insurance update request will be sent to the our LiveCare team for update. Would you like to proceed?", + "schedule": "Schedule", + "doctorSchedule": "Doctor Schedule", + "weeklyShift": "Weekly Shift", + "dayOff": "Off", + "notAvailable": "Not Available", + "hide": "Hide", + "viewPatientQR": "View Patient QR Code", + "patientQR": "Patient QR Code" } + + diff --git a/check_elf_alignment.sh b/check_elf_alignment.sh new file mode 100755 index 00000000..debc0028 --- /dev/null +++ b/check_elf_alignment.sh @@ -0,0 +1,110 @@ +#!/bin/bash + +# Check ELF .so alignment in APK for 16KB page size compatibility +# Files must have PT_LOAD segments aligned to 16384 bytes (0x4000) + +APK="${1:-/Users/mohamedmekawy/Documents/Work/HMG_Patient_App_New/android/app/release/app-release.apk}" +LLVM_READELF="/Users/mohamedmekawy/Library/Android/sdk/ndk/28.2.13676358/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-readelf" +EXTRACT_DIR="/tmp/apk_alignment_check" +REQUIRED_ALIGNMENT=16384 # 16 KB + +echo "========================================" +echo " ELF Alignment Check for 16KB Page Size" +echo "========================================" +echo "APK: $APK" +echo "" + +if [ ! -f "$APK" ]; then + echo "ERROR: APK not found at $APK" + exit 1 +fi + +# Clean and extract APK +rm -rf "$EXTRACT_DIR" +mkdir -p "$EXTRACT_DIR" +unzip -q "$APK" -d "$EXTRACT_DIR" + +# Find all .so files +SO_FILES=$(find "$EXTRACT_DIR" -name "*.so") + +if [ -z "$SO_FILES" ]; then + echo "No .so files found in APK." + exit 0 +fi + +FAILED=() +PASSED=() + +for SO in $SO_FILES; do + RELATIVE="${SO#$EXTRACT_DIR/}" + + # Check if it's a valid ELF + MAGIC=$(xxd -l 4 "$SO" 2>/dev/null | head -1) + if [[ "$MAGIC" != *"7f45 4c46"* ]]; then + continue + fi + + # Use llvm-readelf from NDK + READELF_OUTPUT=$("$LLVM_READELF" -l "$SO" 2>/dev/null) + + if [ -z "$READELF_OUTPUT" ]; then + echo "⚠️ SKIP (readelf unavailable): $RELATIVE" + continue + fi + + # Extract LOAD segment alignments + MISALIGNED=false + while IFS= read -r line; do + if [[ "$line" == *"LOAD"* ]]; then + # Get the last field (Align column) + ALIGN=$(echo "$line" | awk '{print $NF}') + # Convert hex to decimal if needed + if [[ "$ALIGN" == 0x* ]]; then + ALIGN_DEC=$((ALIGN)) + else + ALIGN_DEC=$ALIGN + fi + + if [[ "$ALIGN_DEC" =~ ^[0-9]+$ ]]; then + if [ "$ALIGN_DEC" -lt "$REQUIRED_ALIGNMENT" ] && [ "$ALIGN_DEC" -gt 0 ]; then + MISALIGNED=true + ALIGN_KB=$((ALIGN_DEC / 1024)) + echo "❌ FAIL (${ALIGN_KB}KB aligned): $RELATIVE" + break + fi + fi + fi + done <<< "$READELF_OUTPUT" + + if [ "$MISALIGNED" = false ]; then + ALIGN_LINE=$(echo "$READELF_OUTPUT" | grep "LOAD" | head -1 | awk '{print $NF}') + echo "✅ PASS ($ALIGN_LINE aligned): $RELATIVE" + PASSED+=("$RELATIVE") + else + FAILED+=("$RELATIVE") + fi +done + +echo "" +echo "========================================" +echo "SUMMARY" +echo "========================================" +echo "✅ Passed (16KB+ aligned): ${#PASSED[@]}" +echo "❌ Failed (< 16KB aligned): ${#FAILED[@]}" + +if [ ${#FAILED[@]} -gt 0 ]; then + echo "" + echo "The following .so files are NOT 16KB page aligned:" + for f in "${FAILED[@]}"; do + echo " - $f" + done + echo "" + echo "These files will cause issues on Android 15+ devices with 16KB page size." +else + echo "" + echo "All .so files are 16KB page aligned. ✅" +fi + +# Cleanup +rm -rf "$EXTRACT_DIR" + diff --git a/ios/PenNavUI.xcframework/Info.plist b/ios/PenNavUI.xcframework/Info.plist new file mode 100644 index 00000000..bf5fc456 --- /dev/null +++ b/ios/PenNavUI.xcframework/Info.plist @@ -0,0 +1,48 @@ + + + + + AvailableLibraries + + + BinaryPath + PenNavUI.framework/PenNavUI + DebugSymbolsPath + dSYMs + LibraryIdentifier + ios-arm64 + LibraryPath + PenNavUI.framework + SupportedArchitectures + + arm64 + + SupportedPlatform + ios + + + BinaryPath + PenNavUI.framework/PenNavUI + DebugSymbolsPath + dSYMs + LibraryIdentifier + ios-arm64_x86_64-simulator + LibraryPath + PenNavUI.framework + SupportedArchitectures + + arm64 + x86_64 + + SupportedPlatform + ios + SupportedPlatformVariant + simulator + + + CFBundlePackageType + XFWK + XCFrameworkFormatVersion + 1.0 + + diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AboutCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AboutCell.nib new file mode 100644 index 00000000..070a3825 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AboutCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ActionCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ActionCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..eba77606 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ActionCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ActionCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ActionCell.nib/runtime.nib new file mode 100644 index 00000000..2ed8cd11 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ActionCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AlertSheet.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AlertSheet.nib new file mode 100644 index 00000000..a4e634e5 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AlertSheet.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Black.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Black.ttf new file mode 100644 index 00000000..bb8766db Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Black.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Bold.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Bold.ttf new file mode 100644 index 00000000..54ae58c5 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Bold.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-ExtraBold.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-ExtraBold.ttf new file mode 100644 index 00000000..4d02c428 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-ExtraBold.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-ExtraLight.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-ExtraLight.ttf new file mode 100644 index 00000000..d966714a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-ExtraLight.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Light.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Light.ttf new file mode 100644 index 00000000..7790e5cb Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Light.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Medium.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Medium.ttf new file mode 100644 index 00000000..aab105e3 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Medium.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Regular.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Regular.ttf new file mode 100644 index 00000000..f8a4c6d4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Regular.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-SemiBold.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-SemiBold.ttf new file mode 100644 index 00000000..857e7535 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-SemiBold.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Thin.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Thin.ttf new file mode 100644 index 00000000..0fbcc06f Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-Thin.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-VariableFont_wght.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-VariableFont_wght.ttf new file mode 100644 index 00000000..7f0bedbe Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Alexandria-VariableFont_wght.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AllFilterViewController.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AllFilterViewController.nib new file mode 100644 index 00000000..cfe95b20 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AllFilterViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AmenitiesDetailTableViewCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AmenitiesDetailTableViewCell.nib new file mode 100644 index 00000000..96435f18 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AmenitiesDetailTableViewCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AmenityTableViewCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AmenityTableViewCell.nib new file mode 100644 index 00000000..1fe39fd4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/AmenityTableViewCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Assets.car b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Assets.car new file mode 100644 index 00000000..382aaabe Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Assets.car differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/BottomActionsCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/BottomActionsCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..a5441bfd Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/BottomActionsCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/BottomActionsCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/BottomActionsCell.nib/runtime.nib new file mode 100644 index 00000000..374130d9 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/BottomActionsCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/BottomNavigationPanelViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/BottomNavigationPanelViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..4dcf21c6 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/BottomNavigationPanelViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/BottomNavigationPanelViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/BottomNavigationPanelViewController.nib/runtime.nib new file mode 100644 index 00000000..bbe0722f Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/BottomNavigationPanelViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Calibrate.mp4 b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Calibrate.mp4 new file mode 100644 index 00000000..1a69fc8a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Calibrate.mp4 differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CalibrateMessage.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CalibrateMessage.nib new file mode 100644 index 00000000..11d40872 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CalibrateMessage.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CampusActionsCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CampusActionsCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..09d41cf5 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CampusActionsCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CampusActionsCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CampusActionsCell.nib/runtime.nib new file mode 100644 index 00000000..09d41cf5 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CampusActionsCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CampusDetailsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CampusDetailsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..a35a1507 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CampusDetailsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CampusDetailsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CampusDetailsViewController.nib/runtime.nib new file mode 100644 index 00000000..5a6273b1 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CampusDetailsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoriesCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoriesCell.nib new file mode 100644 index 00000000..23ded5bb Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoriesCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoriesViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoriesViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..45eebbfb Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoriesViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoriesViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoriesViewController.nib/runtime.nib new file mode 100644 index 00000000..d11c72fa Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoriesViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryCollectionViewCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryCollectionViewCell.nib new file mode 100644 index 00000000..4f689c95 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryCollectionViewCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryResultCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryResultCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..acd75d39 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryResultCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryResultCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryResultCell.nib/runtime.nib new file mode 100644 index 00000000..e8f47e7b Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryResultCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryResultsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryResultsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..4fd53d2e Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryResultsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryResultsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryResultsViewController.nib/runtime.nib new file mode 100644 index 00000000..a48b540d Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryResultsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryTableViewCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryTableViewCell.nib new file mode 100644 index 00000000..6effdc89 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/CategoryTableViewCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ChangingFloor.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ChangingFloor.nib new file mode 100644 index 00000000..0a8021e0 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ChangingFloor.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ConnectedVenueCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ConnectedVenueCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..58a2b0b8 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ConnectedVenueCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ConnectedVenueCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ConnectedVenueCell.nib/runtime.nib new file mode 100644 index 00000000..19cc7c03 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ConnectedVenueCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ContactDetailsCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ContactDetailsCell.nib new file mode 100644 index 00000000..8e78feb0 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ContactDetailsCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DayScheduleCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DayScheduleCell.nib new file mode 100644 index 00000000..e2aa3866 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DayScheduleCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DetailsHeaderCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DetailsHeaderCell.nib new file mode 100644 index 00000000..4091bd4e Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DetailsHeaderCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DetailsTextCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DetailsTextCell.nib new file mode 100644 index 00000000..a91cae93 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DetailsTextCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectionCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectionCell.nib new file mode 100644 index 00000000..09a93ac3 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectionCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectionCollectionViewCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectionCollectionViewCell.nib new file mode 100644 index 00000000..f969e369 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectionCollectionViewCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectionsFooterCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectionsFooterCell.nib new file mode 100644 index 00000000..9dd4175d Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectionsFooterCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectionsStepper.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectionsStepper.nib new file mode 100644 index 00000000..e782274a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectionsStepper.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectoryCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectoryCell.nib new file mode 100644 index 00000000..64bf450a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectoryCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectoryViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectoryViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..065858a0 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectoryViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectoryViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectoryViewController.nib/runtime.nib new file mode 100644 index 00000000..354a4615 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/DirectoryViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteCollectionViewCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteCollectionViewCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..aa697bc5 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteCollectionViewCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteCollectionViewCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteCollectionViewCell.nib/runtime.nib new file mode 100644 index 00000000..0fbfc45d Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteCollectionViewCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteDetailsViewController.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteDetailsViewController.nib new file mode 100644 index 00000000..acb09075 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteDetailsViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteTableViewCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteTableViewCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..077aa457 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteTableViewCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteTableViewCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteTableViewCell.nib/runtime.nib new file mode 100644 index 00000000..44f9079c Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoriteTableViewCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoritesCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoritesCell.nib new file mode 100644 index 00000000..d6a3f061 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoritesCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoritesViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoritesViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..f38b22f9 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoritesViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoritesViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoritesViewController.nib/runtime.nib new file mode 100644 index 00000000..f5cbe191 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FavoritesViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FloorCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FloorCell.nib new file mode 100644 index 00000000..e6cf98fc Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FloorCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FloorIndicatorView.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FloorIndicatorView.nib new file mode 100644 index 00000000..72a5e52a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FloorIndicatorView.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FloorSelectorHeaderView.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FloorSelectorHeaderView.nib new file mode 100644 index 00000000..32ef9051 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FloorSelectorHeaderView.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FloorSelectorViewController.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FloorSelectorViewController.nib new file mode 100644 index 00000000..ca2fccb6 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/FloorSelectorViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/GateCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/GateCell.nib new file mode 100644 index 00000000..d5e998fd Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/GateCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/GateSelectorViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/GateSelectorViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..786137f5 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/GateSelectorViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/GateSelectorViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/GateSelectorViewController.nib/runtime.nib new file mode 100644 index 00000000..42cc527f Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/GateSelectorViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Headers/PenNavUI-Swift.h b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Headers/PenNavUI-Swift.h new file mode 100644 index 00000000..bc01a358 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Headers/PenNavUI-Swift.h @@ -0,0 +1,1053 @@ +#if 0 +#elif defined(__arm64__) && __arm64__ +// Generated by Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1) +#ifndef PENNAVUI_SWIFT_H +#define PENNAVUI_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wnon-modular-include-in-framework-module" +#if defined(__arm64e__) && __has_include() +# include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +# ifndef __ptrauth_swift_value_witness_function_pointer +# define __ptrauth_swift_value_witness_function_pointer(x) +# endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop +#endif +#pragma clang diagnostic pop +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef unsigned char char8_t; +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +# if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +# else +# define SWIFT_RUNTIME_NAME(X) +# endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +# if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +# else +# define SWIFT_COMPILE_NAME(X) +# endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +# if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +# else +# define SWIFT_METHOD_FAMILY(X) +# endif +#endif +#if !defined(SWIFT_NOESCAPE) +# if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +# else +# define SWIFT_NOESCAPE +# endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +# if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +# else +# define SWIFT_RELEASES_ARGUMENT +# endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +# if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +# else +# define SWIFT_WARN_UNUSED_RESULT +# endif +#endif +#if !defined(SWIFT_NORETURN) +# if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +# else +# define SWIFT_NORETURN +# endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +# if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +# else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +# endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +# define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +# define SWIFT_NOEXCEPT noexcept +#else +# define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import CoreData; +@import CoreFoundation; +@import CoreLocation; +@import Foundation; +@import ObjectiveC; +@import Penguin; +@import QuartzCore; +@import UIKit; +@import UIUtilities; +#endif + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" +#pragma clang diagnostic ignored "-Wunsafe-buffer-usage" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="PenNavUI",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) + +/// Asynchronous operation base class +/// This is abstract to class performs all of the necessary KVN of isFinished and +/// isExecuting for a concurrent Operation subclass. You can subclass this and +/// implement asynchronous operations. All you must do is: +///
    +///
  • +/// override main() with the tasks that initiate the asynchronous task; +///
  • +///
  • +/// call completeOperation() function when the asynchronous task is done; +///
  • +///
  • +/// optionally, periodically check self.cancelled status, performing any clean-up +/// necessary and then ensuring that completeOperation() is called; or +/// override cancel method, calling super.cancel() and then cleaning-up +/// and ensuring completeOperation() is called. +///
  • +///
+SWIFT_CLASS("_TtC8PenNavUI21AsynchronousOperation") +@interface AsynchronousOperation : NSOperation +@property (nonatomic, readonly, getter=isAsynchronous) BOOL asynchronous; +@property (nonatomic, readonly, getter=isExecuting) BOOL executing; +@property (nonatomic, readonly, getter=isFinished) BOOL finished; +- (void)start; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +@class UITapGestureRecognizer; +@class NSCoder; +/// A view that presents a backdrop interface behind a panel. +SWIFT_CLASS_NAMED("BackdropView") +@interface FloatingPanelBackdropView : UIView +/// The gesture recognizer for tap gestures to dismiss a panel. +/// By default, this gesture recognizer is disabled as following the default behavior of iOS modalities. +/// To dismiss a panel by tap gestures on the backdrop, dismissalTapGestureRecognizer.isEnabled is set to true. +@property (nonatomic, strong) UITapGestureRecognizer * _Nonnull dismissalTapGestureRecognizer; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE; +- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE; +@end + +@class NSEntityDescription; +@class NSManagedObjectContext; +SWIFT_CLASS_NAMED("CachedVenue") +@interface CachedVenue : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@class NSString; +@interface CachedVenue (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic) int16_t id; +@property (nonatomic, copy) NSString * _Nullable coverImage; +@property (nonatomic, copy) NSString * _Nullable address; +@property (nonatomic, copy) NSString * _Nullable buildingNumber; +@property (nonatomic, copy) NSString * _Nullable phone; +@property (nonatomic, copy) NSString * _Nullable email; +@property (nonatomic, copy) NSString * _Nullable website; +@property (nonatomic) int16_t floorCount; +@end + +SWIFT_CLASS_NAMED("CampaignTracking") +@interface CampaignTracking : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@class NSDate; +@interface CampaignTracking (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic) int16_t campaignId; +@property (nonatomic, copy) NSDate * _Nullable lastNotificationDate; +@end + +SWIFT_CLASS_NAMED("FavoriteCacheData") +@interface FavoriteCacheData : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@class SharedLocationCacheData; +@interface FavoriteCacheData (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic, copy) NSString * _Nullable createDate; +@property (nonatomic, copy) NSString * _Nullable deviceId; +@property (nonatomic, copy) NSString * _Nullable type; +@property (nonatomic) double distance; +@property (nonatomic, copy) NSString * _Nullable id; +@property (nonatomic, copy) NSString * _Nullable label; +@property (nonatomic) int16_t poiId; +@property (nonatomic, copy) NSString * _Nullable userName; +@property (nonatomic, strong) SharedLocationCacheData * _Nullable location; +@end + +enum FloatingPanelLayoutReferenceGuide : NSInteger; +@class FloatingPanelController; +enum FloatingPanelPosition : NSInteger; +@class NSLayoutConstraint; +/// An interface for implementing custom layout anchor objects. +SWIFT_PROTOCOL("_TtP8PenNavUI28FloatingPanelLayoutAnchoring_") +@protocol FloatingPanelLayoutAnchoring +@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide; +- (NSArray * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)fpc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT; +@end + +@class UILayoutGuide; +enum FloatingPanelLayoutContentBoundingGuide : NSInteger; +/// An object that defines how to settles a panel with a layout guide of a content view. +SWIFT_CLASS("_TtC8PenNavUI33FloatingPanelAdaptiveLayoutAnchor") +@interface FloatingPanelAdaptiveLayoutAnchor : NSObject +/// Returns a layout anchor with the specified offset by an absolute value to display a panel with its intrinsic content size. +/// The offset is an amount to offset a position of panel that displays the entire content of the specified guide from an edge of +/// the reference guide. The edge refers to a panel positioning. +/// contentBoundingGuide restricts the content size which a panel displays. For example, given referenceGuide is .superview and contentBoundingGuide is .safeArea for a bottom positioned panel, the panel content is laid out inside the superview of the view of FloatingPanelController(not its safe area), but its content size is limited to its safe area size. Normally both of referenceGuide and contentBoundingGuide are specified with the same rectangle area. +/// warning: +/// If contentBoundingGuide is set to none, the panel may expand out of the screen size, depending on the intrinsic size of its content. +/// \param absoluteOffset An absolute offset from the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel. +/// +/// \param contentLayout The content layout guide to calculate the content size in the panel. +/// +/// \param referenceGuide The rectangular area to lay out the content of a panel. If it’s set to .safeArea, the panel content displays inside the safe area of its FloatingPanelController‘s view. This argument doesn’t limit its content size. +/// +/// \param contentBoundingGuide The rectangular area to restrict the content size of a panel in the main dimension(i.e. y axis is the main dimension for a bottom panel). +/// +- (nonnull instancetype)initWithAbsoluteOffset:(CGFloat)offset contentLayout:(UILayoutGuide * _Nonnull)contentLayout referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide contentBoundingGuide:(enum FloatingPanelLayoutContentBoundingGuide)contentBoundingGuide OBJC_DESIGNATED_INITIALIZER; +/// Returns a layout anchor with the specified offset by a fractional value to display a panel with its intrinsic content size. +/// The offset value is a floating-point number in the range 0.0 to 1.0, where 0.0 represents the full content +/// is displayed and 0.5 represents the half of content is displayed. +/// contentBoundingGuide restricts the content size which a panel displays. For example, given referenceGuide is .superview and contentBoundingGuide is .safeArea for a bottom positioned panel, the panel content is laid out inside the superview of the view of FloatingPanelController(not its safe area), but its content size is limited to its safe area size. Normally both of referenceGuide and contentBoundingGuide are specified with the same rectangle area. +/// warning: +/// If contentBoundingGuide is set to none, the panel may expand out of the screen size, depending on the intrinsic size of its content. +/// \param fractionalOffset A fractional offset of the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel. +/// +/// \param contentLayout The content layout guide to calculate the content size in the panel. +/// +/// \param referenceGuide The rectangular area to lay out the content of a panel. If it’s set to .safeArea, the panel content displays inside the safe area of its FloatingPanelController‘s view. This argument doesn’t limit its content size. +/// +/// \param contentBoundingGuide The rectangular area to restrict the content size of a panel in the main dimension(i.e. y axis is the main dimension for a bottom panel). +/// +- (nonnull instancetype)initWithFractionalOffset:(CGFloat)offset contentLayout:(UILayoutGuide * _Nonnull)contentLayout referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide contentBoundingGuide:(enum FloatingPanelLayoutContentBoundingGuide)contentBoundingGuide OBJC_DESIGNATED_INITIALIZER; +@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide; +@property (nonatomic, readonly) enum FloatingPanelLayoutContentBoundingGuide contentBoundingGuide; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@interface FloatingPanelAdaptiveLayoutAnchor (SWIFT_EXTENSION(PenNavUI)) +- (NSArray * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT; +@end + +@class FloatingPanelState; +/// An interface for generating behavior information to fine-tune the behavior of a panel. +SWIFT_PROTOCOL("_TtP8PenNavUI21FloatingPanelBehavior_") +@protocol FloatingPanelBehavior +@optional +/// A floating-point value that determines the rate of oscillation magnitude reduction after the user lifts their finger. +/// The oscillation magnitude to attract a panel to an anchor can be adjusted this value between 0.979 and 1.0 +/// in increments of 0.001. When this value is around 0.979, the attraction uses a critically damped spring system. +/// When this value is between 0.978 and 1.0, it uses a underdamped spring system with a damping ratio computed by +/// this value. You shouldn’t return less than 0.979 because the system is overdamped. If the pan gesture’s velocity +/// is less than 300, this value is ignored and a panel applies a critically damped system. +@property (nonatomic, readonly) CGFloat springDecelerationRate; +/// A floating-point value that determines the approximate time until a panel stops to an anchor after the user lifts their finger. +@property (nonatomic, readonly) CGFloat springResponseTime; +/// Returns a deceleration rate to calculate a target position projected a dragging momentum. +/// The default implementation of this method returns the normal deceleration rate of UIScrollView. +@property (nonatomic, readonly) CGFloat momentumProjectionRate; +/// Asks the behavior if a panel should project a momentum of a user interaction to move the +/// proposed state. +/// The default implementation of this method returns false. This method is called for called +/// for all states defined by the current layout object. +- (BOOL)shouldProjectMomentum:(FloatingPanelController * _Nonnull)fpc to:(FloatingPanelState * _Nonnull)proposedState SWIFT_WARN_UNUSED_RESULT; +/// Returns the progress to redirect to the previous position. +/// The progress is represented by a floating-point value between 0.0 and 1.0, inclusive, where 1.0 indicates a panel is impossible to move to the next position. The default value is 0.5. Values less than 0.0 and greater than 1.0 are pinned to those limits. +- (CGFloat)redirectionalProgress:(FloatingPanelController * _Nonnull)fpc from:(FloatingPanelState * _Nonnull)from to:(FloatingPanelState * _Nonnull)to SWIFT_WARN_UNUSED_RESULT; +/// Asks the behavior whether the rubber band effect is enabled in moving over a given edge of the surface view. +/// This method allows a panel to activate the rubber band effect to a given edge of the surface view. By default, the effect is disabled. +- (BOOL)allowsRubberBandingFor:(UIRectEdge)edge SWIFT_WARN_UNUSED_RESULT; +/// Returns the velocity threshold for the default interactive removal gesture. +/// In case FloatingPanel/FloatingPanelControllerDelegate/floatingPanel(_:shouldRemoveAt:with:) is implemented, this value will not be used. The default value of FloatingPanelDefaultBehavior is 5.5 +@property (nonatomic, readonly) CGFloat removalInteractionVelocityThreshold; +@end + +/// An interface for generating layout information for a panel. +SWIFT_PROTOCOL("_TtP8PenNavUI19FloatingPanelLayout_") +@protocol FloatingPanelLayout +/// Returns the position of a panel in a FloatingPanelController view . +@property (nonatomic, readonly) enum FloatingPanelPosition position; +/// Returns the initial state when a panel is presented. +@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull initialState; +/// Returns the layout anchors to specify the snapping locations for each state. +@property (nonatomic, readonly, copy) NSDictionary> * _Nonnull anchors; +@optional +/// Returns layout constraints to determine the cross dimension of a panel. +- (NSArray * _Nonnull)prepareLayoutWithSurfaceView:(UIView * _Nonnull)surfaceView in:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT; +/// Returns the alpha value of the backdrop of a panel for each state. +- (CGFloat)backdropAlphaFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +@end + +/// A layout object that lays out a panel in bottom sheet style. +SWIFT_CLASS("_TtC8PenNavUI25FloatingPanelBottomLayout") +@interface FloatingPanelBottomLayout : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull initialState; +@property (nonatomic, readonly, copy) NSDictionary> * _Nonnull anchors; +@property (nonatomic, readonly) enum FloatingPanelPosition position; +- (NSArray * _Nonnull)prepareLayoutWithSurfaceView:(UIView * _Nonnull)surfaceView in:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT; +- (CGFloat)backdropAlphaFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +@end + +@protocol FloatingPanelControllerDelegate; +@class FloatingPanelSurfaceView; +@class UIScrollView; +@class FloatingPanelPanGestureRecognizer; +enum ContentInsetAdjustmentBehavior : NSInteger; +enum ContentMode : NSInteger; +@class NSBundle; +@protocol UIViewControllerTransitionCoordinator; +@class UITraitCollection; +/// A container view controller to display a panel to present contents in parallel as a user wants. +SWIFT_CLASS("_TtC8PenNavUI23FloatingPanelController") +@interface FloatingPanelController : UIViewController +/// The delegate of a panel controller object. +@property (nonatomic, weak) id _Nullable delegate; +/// Returns the surface view managed by the controller object. It’s the same as self.view. +@property (nonatomic, readonly, strong) FloatingPanelSurfaceView * _Null_unspecified surfaceView; +/// Returns the backdrop view managed by the controller object. +@property (nonatomic, readonly, strong) FloatingPanelBackdropView * _Null_unspecified backdropView; +/// Returns the scroll view that the controller tracks. +@property (nonatomic, readonly, weak) UIScrollView * _Nullable trackingScrollView; +@property (nonatomic, readonly, strong) FloatingPanelPanGestureRecognizer * _Nonnull panGestureRecognizer; +/// The current position of a panel controller’s contents. +@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull state; +/// A Boolean value indicating whether a panel controller is attracting the surface to a state anchor. +@property (nonatomic, readonly) BOOL isAttracting; +/// The layout object that the controller manages +/// You need to call invalidateLayout() if you want to apply a new layout object into the panel +/// immediately. +@property (nonatomic, strong) id _Nonnull layout; +/// The behavior object that the controller manages +@property (nonatomic, strong) id _Nonnull behavior; +/// The content insets of the tracking scroll view derived from this safe area +@property (nonatomic, readonly) UIEdgeInsets adjustedContentInsets; +/// The behavior for determining the adjusted content offsets. +/// This property specifies how the content area of the tracking scroll view is modified using adjustedContentInsets. The default value of this property is FloatingPanelController.ContentInsetAdjustmentBehavior.always. +@property (nonatomic) enum ContentInsetAdjustmentBehavior contentInsetAdjustmentBehavior; +/// A Boolean value that determines whether the removal interaction is enabled. +@property (nonatomic, setter=setRemovalInteractionEnabled:) BOOL isRemovalInteractionEnabled; +/// The view controller responsible for the content portion of a panel. +@property (nonatomic, strong) UIViewController * _Nullable contentViewController; +/// Constants that define how a panel content fills in the surface. +@property (nonatomic) enum ContentMode contentMode; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil SWIFT_UNAVAILABLE; +/// Initialize a newly created panel controller. +- (nonnull instancetype)initWithDelegate:(id _Nullable)delegate OBJC_DESIGNATED_INITIALIZER; +/// Creates the view that the controller manages. +- (void)loadView; +- (void)viewDidLayoutSubviews; +- (void)viewDidAppear:(BOOL)animated; +- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id _Nonnull)coordinator; +- (void)willTransitionToTraitCollection:(UITraitCollection * _Nonnull)newCollection withTransitionCoordinator:(id _Nonnull)coordinator; +- (void)viewWillDisappear:(BOOL)animated; +@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForStatusBarStyle; +@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForStatusBarHidden; +@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForScreenEdgesDeferringSystemGestures; +@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForHomeIndicatorAutoHidden; +/// Shows the surface view at the initial position defined by the current layout +/// \param animated Pass true to animate the presentation; otherwise, pass false. +/// +/// \param completion The block to execute after the presentation finishes. This block has no return value and takes no parameters. You may specify nil for this parameter. +/// +- (void)show:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Hides the surface view to the hidden position +- (void)hide:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Adds the view managed by the controller as a child of the specified view controller. +/// \param parent A parent view controller object that displays FloatingPanelController’s view. A container view controller object isn’t applicable. +/// +/// \param viewIndex Insert the surface view managed by the controller below the specified view index. By default, the surface view will be added to the end of the parent list of subviews. +/// +/// \param animated Pass true to animate the presentation; otherwise, pass false. +/// +/// \param completion The block to execute after the presentation finishes. This block has no return value and takes no parameters. You may specify nil for this parameter. +/// +- (void)addPanelToParent:(UIViewController * _Nonnull)parent at:(NSInteger)viewIndex animated:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Removes the controller and the managed view from its parent view controller +/// \param animated Pass true to animate the presentation; otherwise, pass false. +/// +/// \param completion The block to execute after the view controller is dismissed. This block has no return value and takes no parameters. You may specify nil for this parameter. +/// +- (void)removePanelFromParent:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Moves the position to the specified position. +/// \param to Pass a FloatingPanelPosition value to move the surface view to the position. +/// +/// \param animated Pass true to animate the presentation; otherwise, pass false. +/// +/// \param completion The block to execute after the view controller has finished moving. This block has no return value and takes no parameters. You may specify nil for this parameter. +/// +- (void)moveToState:(FloatingPanelState * _Nonnull)to animated:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Tracks the specified scroll view to correspond with the scroll. +/// \param scrollView Specify a scroll view to continuously and seamlessly work in concert with interactions of the surface view +/// +- (void)trackScrollView:(UIScrollView * _Nonnull)scrollView; +/// Cancel tracking the specify scroll view. +- (void)untrackScrollView:(UIScrollView * _Nonnull)scrollView; +- (BOOL)accessibilityPerformEscape SWIFT_WARN_UNUSED_RESULT; +/// Invalidates all layout information of the panel and apply the layout property into it immediately. +/// This lays out subviews of the view that the controller manages with the layout property by +/// calling the view’s layoutIfNeeded(). Thus this method can be called in an animation block to +/// animate the panel’s changes. +/// If the controller has a delegate object, this will lay them out using the layout object returned by +/// floatingPanel(_:layoutFor:) delegate method for the current UITraitCollection. +- (void)invalidateLayout; +/// Returns the surface’s position in a panel controller’s view for the specified state. +/// If a panel is top positioned, this returns a point of the bottom-left corner of the surface. If it is left positioned +/// this returns a point of top-right corner of the surface. If it is bottom or right positioned, this returns a point +/// of the top-left corner of the surface. +- (CGPoint)surfaceLocationFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +/// The surface’s position in a panel controller’s view. +/// If a panel is top positioned, this returns a point of the bottom-left corner of the surface. If it is left positioned +/// this returns a point of top-right corner of the surface. If it is bottom or right positioned, this returns a point +/// of the top-left corner of the surface. +@property (nonatomic) CGPoint surfaceLocation; +@end + +/// Constants indicating how safe area insets are added to the adjusted content inset. +typedef SWIFT_ENUM(NSInteger, ContentInsetAdjustmentBehavior, open) { + ContentInsetAdjustmentBehaviorAlways = 0, + ContentInsetAdjustmentBehaviorNever = 1, +}; + +/// A flag used to determine how the controller object lays out the content view when the surface position changes. +typedef SWIFT_ENUM(NSInteger, ContentMode, open) { +/// The option to fix the content to keep the height of the top most position. + ContentModeStatic = 0, +/// The option to scale the content to fit the bounds of the root view by changing the surface position. + ContentModeFitToBounds = 1, +}; + +@class UIViewPropertyAnimator; +/// A set of methods implemented by the delegate of a panel controller allows the adopting delegate to respond to +/// messages from the FloatingPanelController class and thus respond to, and in some affect, operations such as +/// dragging, attracting a panel, layout of a panel and the content, and transition animations. +SWIFT_PROTOCOL("_TtP8PenNavUI31FloatingPanelControllerDelegate_") +@protocol FloatingPanelControllerDelegate +@optional +/// Returns a FloatingPanelLayout object. If you use the default one, you can use a FloatingPanelBottomLayout object. +- (id _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc layoutForTraitCollection:(UITraitCollection * _Nonnull)newCollection SWIFT_WARN_UNUSED_RESULT; +/// Returns a FloatingPanelLayout object. If you use the default one, you can use a FloatingPanelBottomLayout object. +- (id _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc layoutForSize:(CGSize)size SWIFT_WARN_UNUSED_RESULT; +/// Returns a UIViewPropertyAnimator object to add/present the panel to a position. +/// Default is the spring animation with 0.25 secs. +- (UIViewPropertyAnimator * _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc animatorForPresentingToState:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +/// Returns a UIViewPropertyAnimator object to remove/dismiss a panel from a position. +/// Default is the spring animator with 0.25 secs. +- (UIViewPropertyAnimator * _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc animatorForDismissingWithVelocity:(CGVector)velocity SWIFT_WARN_UNUSED_RESULT; +/// Called when a panel has changed to a new state. +/// This can be called inside an animation block for presenting, dismissing a panel or moving a panel with your +/// animation. So any view properties set inside this function will be automatically animated alongside a panel. +- (void)floatingPanelDidChangeState:(FloatingPanelController * _Nonnull)fpc; +/// Asks the delegate if dragging should begin by the pan gesture recognizer. +- (BOOL)floatingPanelShouldBeginDragging:(FloatingPanelController * _Nonnull)fpc SWIFT_WARN_UNUSED_RESULT; +/// Called while the user drags the surface or the surface moves to a state anchor. +- (void)floatingPanelDidMove:(FloatingPanelController * _Nonnull)fpc; +/// Called on start of dragging (may require some time and or distance to move) +- (void)floatingPanelWillBeginDragging:(FloatingPanelController * _Nonnull)fpc; +/// Called on finger up if the user dragged. velocity is in points/second. +- (void)floatingPanelWillEndDragging:(FloatingPanelController * _Nonnull)fpc withVelocity:(CGPoint)velocity targetState:(FloatingPanelState * _Nonnull * _Nonnull)targetState; +/// Called on finger up if the user dragged. +/// If attract is true, the panel continues moving towards the nearby state +/// anchor. Otherwise, it stops at the closest state anchor. +/// note: +/// If attract is false, FloatingPanelController.state property has +/// already changed to the closest anchor’s state by the time this delegate method +/// is called. +- (void)floatingPanelDidEndDragging:(FloatingPanelController * _Nonnull)fpc willAttract:(BOOL)attract; +/// Called when it is about to be attracted to a state anchor. +- (void)floatingPanelWillBeginAttracting:(FloatingPanelController * _Nonnull)fpc to:(FloatingPanelState * _Nonnull)state; +/// Called when attracting it is completed. +- (void)floatingPanelDidEndAttracting:(FloatingPanelController * _Nonnull)fpc; +/// Asks the delegate whether a panel should be removed when dragging ended at the specified location +/// This delegate method is called only where FloatingPanel/FloatingPanelController/isRemovalInteractionEnabled is true. +/// The velocity vector is calculated from the distance to a point of the hidden state and the pan gesture’s velocity. +- (BOOL)floatingPanel:(FloatingPanelController * _Nonnull)fpc shouldRemoveAtLocation:(CGPoint)location withVelocity:(CGVector)velocity SWIFT_WARN_UNUSED_RESULT; +/// Called on start to remove its view controller from the parent view controller. +- (void)floatingPanelWillRemove:(FloatingPanelController * _Nonnull)fpc; +/// Called when a panel is removed from the parent view controller. +- (void)floatingPanelDidRemove:(FloatingPanelController * _Nonnull)fpc; +/// Asks the delegate for a content offset of the tracking scroll view to be pinned when a panel moves +/// If you do not implement this method, the controller uses a value of the content offset plus the content insets +/// of the tracked scroll view. Your implementation of this method can return a value for a navigation bar with a large +/// title, for example. +/// This method will not be called if the controller doesn’t track any scroll view. +- (CGPoint)floatingPanel:(FloatingPanelController * _Nonnull)fpc contentOffsetForPinningScrollView:(UIScrollView * _Nonnull)trackingScrollView SWIFT_WARN_UNUSED_RESULT; +/// Returns a Boolean value that determines whether the tracking scroll view should +/// scroll or not +/// If you return true, the scroll content scrolls when its scroll position is not +/// at the top of the content. If the delegate doesn’t implement this method, its +/// content can be scrolled only in the most expanded state. +/// Basically, the decision to scroll is based on the state property like the +/// following code. +/// \code +/// func floatingPanel( +/// _ fpc: FloatingPanelController, +/// shouldAllowToScroll scrollView: UIScrollView, +/// in state: FloatingPanelState +/// ) -> Bool { +/// return state == .full || state == .half +/// } +/// +/// \endcodeattention: +/// It is recommended that this method always returns the most expanded state(i.e. +/// .full). If it excludes the state, the panel might do unexpected behaviors. +- (BOOL)floatingPanel:(FloatingPanelController * _Nonnull)fpc shouldAllowToScroll:(UIScrollView * _Nonnull)scrollView in:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +@end + +/// An object that defines how to settles a panel with the intrinsic size for a content. +SWIFT_CLASS("_TtC8PenNavUI34FloatingPanelIntrinsicLayoutAnchor") +@interface FloatingPanelIntrinsicLayoutAnchor : NSObject +/// Returns a layout anchor with the specified offset by an absolute value and reference guide for a panel. +/// The offset is an amount to offset a position of panel that displays the entire content from an edge of +/// the reference guide. The edge refers to a panel positioning. +/// \param absoluteOffset An absolute offset from the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel. +/// +/// \param referenceGuide The rectangular area to lay out the content. If it’s set to .safeArea, the panel content lays out inside the safe area of its FloatingPanelController’s view. +/// +- (nonnull instancetype)initWithAbsoluteOffset:(CGFloat)offset referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER; +/// Returns a layout anchor with the specified offset by a fractional value and reference guide for a panel. +/// The offset value is a floating-point number in the range 0.0 to 1.0, where 0.0 represents the full content +/// is displayed and 0.5 represents the half of content is displayed. +/// \param fractionalOffset A fractional offset of the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel. +/// +/// \param referenceGuide The rectangular area to lay out the content. If it’s set to .safeArea, the panel content lays out inside the safe area of its FloatingPanelController’s view. +/// +- (nonnull instancetype)initWithFractionalOffset:(CGFloat)offset referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER; +/// The reference rectangle area for the offset +@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@interface FloatingPanelIntrinsicLayoutAnchor (SWIFT_EXTENSION(PenNavUI)) +- (NSArray * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT; +@end + +enum FloatingPanelReferenceEdge : NSInteger; +/// An object that defines how to settles a panel with insets from an edge of a reference rectangle. +SWIFT_CLASS("_TtC8PenNavUI25FloatingPanelLayoutAnchor") +@interface FloatingPanelLayoutAnchor : NSObject +/// Returns a layout anchor with the specified inset by an absolute value, edge and reference guide for a panel. +/// The inset is an amount to inset a panel from an edge of the reference guide. The edge refers to a panel +/// positioning. +/// \param absoluteOffset An absolute offset to attach the panel from the edge. +/// +/// \param edge Specify the edge of FloatingPanelController’s view. This is the staring point of the offset. +/// +/// \param referenceGuide The rectangular area to lay out the content. If it’s set to .safeArea, the panel content lays out inside the safe area of its FloatingPanelController’s view. +/// +- (nonnull instancetype)initWithAbsoluteInset:(CGFloat)absoluteInset edge:(enum FloatingPanelReferenceEdge)edge referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER; +/// Returns a layout anchor with the specified inset by a fractional value, edge and reference guide for a panel. +/// The inset is an amount to inset a panel from the edge of the specified reference guide. The value is +/// a floating-point number in the range 0.0 to 1.0, where 0.0 represents zero distance from the edge and +/// 1.0 represents a distance to the opposite edge. +/// \param fractionalOffset A fractional value of the size of FloatingPanelController’s view to attach the panel from the edge. +/// +/// \param edge Specify the edge of FloatingPanelController’s view. This is the staring point of the offset. +/// +/// \param referenceGuide The rectangular area to lay out the content. If it’s set to .safeArea, the panel content lays out inside the safe area of its FloatingPanelController’s view. +/// +- (nonnull instancetype)initWithFractionalInset:(CGFloat)fractionalInset edge:(enum FloatingPanelReferenceEdge)edge referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER; +/// The reference rectangle area for the inset. +@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@interface FloatingPanelLayoutAnchor (SWIFT_EXTENSION(PenNavUI)) +- (NSArray * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT; +@end + +/// A representation to specify a bounding box which limit the content size of a panel. +typedef SWIFT_ENUM(NSInteger, FloatingPanelLayoutContentBoundingGuide, open) { + FloatingPanelLayoutContentBoundingGuideNone = 0, + FloatingPanelLayoutContentBoundingGuideSuperview = 1, + FloatingPanelLayoutContentBoundingGuideSafeArea = 2, +}; + +/// A representation to specify a rectangular area to lay out a panel. +typedef SWIFT_ENUM(NSInteger, FloatingPanelLayoutReferenceGuide, open) { + FloatingPanelLayoutReferenceGuideSuperview = 0, + FloatingPanelLayoutReferenceGuideSafeArea = 1, +}; + +@class UITouch; +@class UIEvent; +@protocol UIGestureRecognizerDelegate; +/// A gesture recognizer that looks for panning (dragging) gestures in a panel. +SWIFT_CLASS("_TtC8PenNavUI33FloatingPanelPanGestureRecognizer") +@interface FloatingPanelPanGestureRecognizer : UIPanGestureRecognizer +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +- (void)touchesBegan:(NSSet * _Nonnull)touches withEvent:(UIEvent * _Nonnull)event; +/// The delegate of the gesture recognizer. +/// note: +/// The delegate is used by FloatingPanel itself. If you set your own delegate object, an +/// exception is raised. If you want to handle the methods of UIGestureRecognizerDelegate, you can use delegateProxy. +@property (nonatomic, weak) id _Nullable delegate; +- (nonnull instancetype)initWithTarget:(id _Nullable)target action:(SEL _Nullable)action SWIFT_UNAVAILABLE; +@end + +/// Constants describing the position of a panel in a screen +typedef SWIFT_ENUM(NSInteger, FloatingPanelPosition, open) { + FloatingPanelPositionTop = 0, + FloatingPanelPositionLeft = 1, + FloatingPanelPositionBottom = 2, + FloatingPanelPositionRight = 3, +}; + +/// Constants that specify the edge of the container of a panel. +typedef SWIFT_ENUM(NSInteger, FloatingPanelReferenceEdge, open) { + FloatingPanelReferenceEdgeTop = 0, + FloatingPanelReferenceEdgeLeft = 1, + FloatingPanelReferenceEdgeBottom = 2, + FloatingPanelReferenceEdgeRight = 3, +}; + +/// An object that represents the display state of a panel in a screen. +SWIFT_CLASS("_TtC8PenNavUI18FloatingPanelState") +@interface FloatingPanelState : NSObject +- (nonnull instancetype)initWithRawValue:(NSString * _Nonnull)rawValue order:(NSInteger)order OBJC_DESIGNATED_INITIALIZER; +- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +@property (nonatomic, readonly, copy) NSString * _Nonnull debugDescription; +/// A panel state indicates the entire panel is shown. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Full;) ++ (FloatingPanelState * _Nonnull)Full SWIFT_WARN_UNUSED_RESULT; +/// A panel state indicates the half of a panel is shown. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Half;) ++ (FloatingPanelState * _Nonnull)Half SWIFT_WARN_UNUSED_RESULT; +/// A panel state indicates the tip of a panel is shown. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Tip;) ++ (FloatingPanelState * _Nonnull)Tip SWIFT_WARN_UNUSED_RESULT; +/// A panel state indicates it is hidden. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Hidden;) ++ (FloatingPanelState * _Nonnull)Hidden SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +/// A view that presents a grabber handle in the surface of a panel. +SWIFT_CLASS_NAMED("GrabberView") +@interface FloatingPanelGrabberView : UIView +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +- (void)layoutSubviews; +- (UIView * _Nullable)hitTest:(CGPoint)point withEvent:(UIEvent * _Nullable)event SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE; +@end + +SWIFT_CLASS("_TtC8PenNavUI17PIGeofenceManager") +@interface PIGeofenceManager : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +@class CLLocationManager; +@interface PIGeofenceManager (SWIFT_EXTENSION(PenNavUI)) +/// CLLocationManager Delegate - Called when permission changes +- (void)locationManager:(CLLocationManager * _Nonnull)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status; +@end + +@class CLRegion; +@interface PIGeofenceManager (SWIFT_EXTENSION(PenNavUI)) +- (void)locationManager:(CLLocationManager * _Nonnull)manager didEnterRegion:(CLRegion * _Nonnull)region; +@end + +SWIFT_CLASS_NAMED("PenNavStyle") +@interface PenNavStyle : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@class NSData; +@interface PenNavStyle (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic, copy) NSString * _Nullable type; +@property (nonatomic, copy) NSData * _Nullable value; +@end + +SWIFT_CLASS("_TtC8PenNavUI15PenNavUIManager") +@interface PenNavUIManager : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +@interface PenNavUIManager (SWIFT_EXTENSION(PenNavUI)) +- (void)onReadyWithWarning:(enum WarningCode)warning; +- (void)onInitilzationErrorWithError:(enum ErrorCode)error; +- (void)onInitializationProgressChangeWithStatus:(enum SDKOperation)status; +@end + +@interface PenNavUIManager (SWIFT_EXTENSION(PenNavUI)) +- (void)locationManagerDidChangeAuthorization:(CLLocationManager * _Nonnull)manager; +- (void)locationManager:(CLLocationManager * _Nonnull)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status; +@end + +SWIFT_CLASS_NAMED("PenNavUITableUpdate") +@interface PenNavUITableUpdate : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@interface PenNavUITableUpdate (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic, copy) NSString * _Nullable lastUpdateTime; +@property (nonatomic, copy) NSString * _Nullable tableName; +@end + +SWIFT_CLASS_NAMED("SVG") +@interface SVGImage : NSObject +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +SWIFT_CLASS_NAMED("SharedLocationCacheData") +@interface SharedLocationCacheData : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@interface SharedLocationCacheData (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic) int16_t edgeId; +@property (nonatomic) int16_t floorId; +@property (nonatomic) double latitude; +@property (nonatomic) double longitude; +@property (nonatomic, copy) NSString * _Nullable navigationAvoid; +@property (nonatomic) int16_t venueId; +@property (nonatomic) int16_t x; +@property (nonatomic) int16_t y; +@end + +@class UIColor; +@class FloatingPanelSurfaceAppearanceShadow; +/// An object for customizing the appearance of a surface view +SWIFT_CLASS_NAMED("SurfaceAppearance") +@interface FloatingPanelSurfaceAppearance : NSObject +/// The background color of a surface view +@property (nonatomic, strong) UIColor * _Nullable backgroundColor; +/// The radius to use when drawing the top rounded corners. +/// self.contentView is masked with the top rounded corners automatically on iOS 11 and later. +/// On iOS 10, they are not automatically masked because of a UIVisualEffectView issue. See https://forums.developer.apple.com/thread/50854 +@property (nonatomic) CGFloat cornerRadius; +/// Defines the curve used for rendering the rounded corners of the layer. +/// Defaults to .circular. +@property (nonatomic) CALayerCornerCurve _Nonnull cornerCurve SWIFT_AVAILABILITY(ios,introduced=13.0); +/// An array of shadows used to create drop shadows underneath a surface view. +@property (nonatomic, copy) NSArray * _Nonnull shadows; +/// The border width of a surface view. +@property (nonatomic, strong) UIColor * _Nullable borderColor; +/// The border color of a surface view. +@property (nonatomic) CGFloat borderWidth; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +/// An object that represents information to render a shadow +SWIFT_CLASS_NAMED("Shadow") +@interface FloatingPanelSurfaceAppearanceShadow : NSObject +/// A Boolean indicating whether a shadow is displayed. +@property (nonatomic) BOOL hidden; +/// The color of a shadow. +@property (nonatomic, strong) UIColor * _Nonnull color; +/// The offset (in points) of a shadow. +@property (nonatomic) CGSize offset; +/// The opacity of a shadow. +@property (nonatomic) float opacity; +/// The blur radius (in points) used to render a shadow. +@property (nonatomic) CGFloat radius; +/// The inflated amount of a shadow prior to applying the blur. +@property (nonatomic) CGFloat spread; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +/// A view that presents a surface interface in a panel. +SWIFT_CLASS_NAMED("SurfaceView") +@interface FloatingPanelSurfaceView : UIView +/// A FloatingPanelGrabberView object displayed at the top of the surface view. +/// To use a custom grabber, hide this and then add it to the surface view at appropriate point. +@property (nonatomic, readonly, strong) FloatingPanelGrabberView * _Nonnull grabberHandle; +/// Offset of the grabber handle from the interactive edge. +@property (nonatomic) CGFloat grabberHandlePadding; +/// The offset from the move edge to prevent the content scroll +@property (nonatomic) CGFloat grabberAreaOffset; +/// The grabber handle size +/// On left/right positioned panel the width dimension is used as the height of grabberHandle, and vice versa. +@property (nonatomic) CGSize grabberHandleSize; +/// The content view to be assigned a view of the content view controller of FloatingPanelController +@property (nonatomic, weak) UIView * _Nullable contentView; +/// The content insets specifying the insets around the content view. +@property (nonatomic) UIEdgeInsets contentPadding; +@property (nonatomic, strong) UIColor * _Nullable backgroundColor; +/// The appearance settings for a surface view. +@property (nonatomic, strong) FloatingPanelSurfaceAppearance * _Nonnull appearance; +/// The margins to use when laying out the container view wrapping content. +@property (nonatomic) UIEdgeInsets containerMargins; +/// The view that displays an actual surface shape. +/// It renders the background color, border line and top rounded corners, +/// specified by other properties. The reason why they’re not be applied to +/// a content view directly is because it avoids any side-effects to the +/// content view. +@property (nonatomic, readonly, strong) UIView * _Nonnull containerView; +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) BOOL requiresConstraintBasedLayout;) ++ (BOOL)requiresConstraintBasedLayout SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (void)updateConstraints; +- (void)layoutSubviews; +@property (nonatomic, readonly) CGSize intrinsicContentSize; +@end + +@class UICollectionViewLayoutAttributes; +SWIFT_CLASS("_TtC8PenNavUI13TagFlowLayout") +@interface TagFlowLayout : UICollectionViewFlowLayout +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder SWIFT_UNAVAILABLE; +- (NSArray * _Nullable)layoutAttributesForElementsInRect:(CGRect)rect SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) BOOL flipsHorizontallyInOppositeLayoutDirection; +@property (nonatomic, readonly) UIUserInterfaceLayoutDirection developmentLayoutDirection; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@interface UIImage (SWIFT_EXTENSION(PenNavUI)) +- (nullable instancetype)initWithSVGData:(NSData * _Nonnull)svgData; +- (nullable instancetype)initWithContentsOfSVGFile:(NSString * _Nonnull)path; ++ (UIImage * _Nullable)svgNamed:(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT; ++ (UIImage * _Nullable)svgNamed:(NSString * _Nonnull)name inBundle:(NSBundle * _Nonnull)bundle SWIFT_WARN_UNUSED_RESULT; +@end + +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#if defined(__cplusplus) +#endif +#pragma clang diagnostic pop +#endif + +#else +#error unsupported Swift architecture +#endif diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Headers/PenNavUI.h b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Headers/PenNavUI.h new file mode 100644 index 00000000..ffae1357 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Headers/PenNavUI.h @@ -0,0 +1,18 @@ +// +// PenNavUI.h +// PenNavUI +// +// Created by Fawzi Rifai on 18/08/2023. +// + +#import + +//! Project version number for PenNavUI. +FOUNDATION_EXPORT double PenNavUIVersionNumber; + +//! Project version string for PenNavUI. +FOUNDATION_EXPORT const unsigned char PenNavUIVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/HomeViewController.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/HomeViewController.nib new file mode 100644 index 00000000..3e0e422c Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/HomeViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/HoursCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/HoursCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..cec2d1c6 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/HoursCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/HoursCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/HoursCell.nib/runtime.nib new file mode 100644 index 00000000..a57bd4dc Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/HoursCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Info.plist b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Info.plist new file mode 100644 index 00000000..ae99d046 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Info.plist differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/InstructionsView.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/InstructionsView.nib new file mode 100644 index 00000000..42abca09 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/InstructionsView.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/LeadingIconMenuCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/LeadingIconMenuCell.nib new file mode 100644 index 00000000..ad4158e4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/LeadingIconMenuCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/LegCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/LegCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..6c3259c1 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/LegCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/LegCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/LegCell.nib/runtime.nib new file mode 100644 index 00000000..9d10f82f Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/LegCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MainPanelActionsCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MainPanelActionsCell.nib new file mode 100644 index 00000000..e66e6054 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MainPanelActionsCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MainViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MainViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..fb5f1581 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MainViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MainViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MainViewController.nib/runtime.nib new file mode 100644 index 00000000..0624b638 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MainViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Maneuver.ahap b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Maneuver.ahap new file mode 100644 index 00000000..4424517d --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Maneuver.ahap @@ -0,0 +1,21 @@ +{ + "Pattern": [ + { + "Event": { + "Time": 0.0, + "EventType": "HapticContinuous", + "EventDuration": 0.3, + "EventParameters": [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.50 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.50 + } + ] + } + } + ] +} diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MapViewController.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MapViewController.nib new file mode 100644 index 00000000..53d60969 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MapViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MessageDetailCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MessageDetailCell.nib new file mode 100644 index 00000000..ed8c8e49 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MessageDetailCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MessageDetailImageCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MessageDetailImageCell.nib new file mode 100644 index 00000000..6abcb4b3 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MessageDetailImageCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MessageDetailsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MessageDetailsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..ecfa0531 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MessageDetailsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MessageDetailsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MessageDetailsViewController.nib/runtime.nib new file mode 100644 index 00000000..a1921c01 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/MessageDetailsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios.abi.json b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios.abi.json new file mode 100644 index 00000000..1823599c --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios.abi.json @@ -0,0 +1,43582 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "PenNavUI", + "printedName": "PenNavUI", + "children": [ + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayout", + "printedName": "FloatingPanelLayout", + "children": [ + { + "kind": "Var", + "name": "position", + "printedName": "position", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(py)position", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP8positionAA0dE8PositionOvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)position", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP8positionAA0dE8PositionOvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "initialState", + "printedName": "initialState", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(py)initialState", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP12initialStateAA0deH0Cvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)initialState", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP12initialStateAA0deH0Cvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "anchors", + "printedName": "anchors", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring]", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "any PenNavUI.FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring" + } + ], + "usr": "s:SD" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(py)anchors", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP7anchorsSDyAA0dE5StateCAA0deF9Anchoring_pGvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring]", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "any PenNavUI.FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring" + } + ], + "usr": "s:SD" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)anchors", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP7anchorsSDyAA0dE5StateCAA0deF9Anchoring_pGvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "prepareLayout", + "printedName": "prepareLayout(surfaceView:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)prepareLayoutWithSurfaceView:in:", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP07prepareF011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "prepareLayoutWithSurfaceView:in:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "backdropAlpha", + "printedName": "backdropAlpha(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)backdropAlphaFor:", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP13backdropAlpha3for12CoreGraphics7CGFloatVAA0dE5StateC_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "backdropAlphaFor:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 : AnyObject>", + "sugared_genericSig": "", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelBottomLayout", + "printedName": "FloatingPanelBottomLayout", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelBottomLayout", + "printedName": "PenNavUI.FloatingPanelBottomLayout", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)init", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override", + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "initialState", + "printedName": "initialState", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(py)initialState", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0Cvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "initialState", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)initialState", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0Cvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "initialState", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "anchors", + "printedName": "anchors", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring]", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "any PenNavUI.FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring" + } + ], + "usr": "s:SD" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(py)anchors", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "anchors", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring]", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "any PenNavUI.FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring" + } + ], + "usr": "s:SD" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)anchors", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "anchors", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "position", + "printedName": "position", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(py)position", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC8positionAA0dE8PositionOvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "position", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)position", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC8positionAA0dE8PositionOvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "position", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "prepareLayout", + "printedName": "prepareLayout(surfaceView:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)prepareLayoutWithSurfaceView:in:", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC07prepareG011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtF", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "prepareLayoutWithSurfaceView:in:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "backdropAlpha", + "printedName": "backdropAlpha(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)backdropAlphaFor:", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA0dE5StateC_tF", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "backdropAlphaFor:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC", + "moduleName": "PenNavUI", + "isOpen": true, + "declAttributes": [ + "AccessControl", + "ObjCMembers", + "RawDocComment", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "FloatingPanelLayout", + "printedName": "FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "AVFoundation", + "printedName": "AVFoundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "PILocationDelegate", + "printedName": "PILocationDelegate", + "children": [ + { + "kind": "Function", + "name": "onLocationOffCampus", + "printedName": "onLocationOffCampus(location:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationCoordinate2D", + "printedName": "_LocationEssentials.CLLocationCoordinate2D", + "usr": "c:@S@CLLocationCoordinate2D" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI18PILocationDelegateP19onLocationOffCampus8locationySo22CLLocationCoordinate2DV_tF", + "mangledName": "$s8PenNavUI18PILocationDelegateP19onLocationOffCampus8locationySo22CLLocationCoordinate2DV_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PILocationDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onLocationMessage", + "printedName": "onLocationMessage(message:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CampaignMessage", + "printedName": "PenNavUI.CampaignMessage", + "usr": "s:8PenNavUI15CampaignMessageV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI18PILocationDelegateP17onLocationMessage7messageyAA08CampaignH0V_tF", + "mangledName": "$s8PenNavUI18PILocationDelegateP17onLocationMessage7messageyAA08CampaignH0V_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PILocationDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onLocationOffCampus", + "printedName": "onLocationOffCampus(location:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationCoordinate2D", + "printedName": "_LocationEssentials.CLLocationCoordinate2D", + "usr": "c:@S@CLLocationCoordinate2D" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI18PILocationDelegatePAAE19onLocationOffCampus8locationySo22CLLocationCoordinate2DV_tF", + "mangledName": "$s8PenNavUI18PILocationDelegatePAAE19onLocationOffCampus8locationySo22CLLocationCoordinate2DV_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PILocationDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onLocationMessage", + "printedName": "onLocationMessage(message:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CampaignMessage", + "printedName": "PenNavUI.CampaignMessage", + "usr": "s:8PenNavUI15CampaignMessageV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI18PILocationDelegatePAAE17onLocationMessage7messageyAA08CampaignH0V_tF", + "mangledName": "$s8PenNavUI18PILocationDelegatePAAE17onLocationMessage7messageyAA08CampaignH0V_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PILocationDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "s:8PenNavUI18PILocationDelegateP", + "mangledName": "$s8PenNavUI18PILocationDelegateP", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "CachedVenue", + "printedName": "CachedVenue", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CachedVenue", + "printedName": "PenNavUI.CachedVenue", + "usr": "c:@M@PenNavUI@objc(cs)CachedVenue" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)CachedVenue(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "CachedVenue", + "printedName": "PenNavUI.CachedVenue", + "usr": "c:@M@PenNavUI@objc(cs)CachedVenue" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CachedVenueC12fetchRequestSo07NSFetchG0CyACGyFZ", + "mangledName": "$s8PenNavUI11CachedVenueC12fetchRequestSo07NSFetchG0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "id", + "printedName": "id", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)id", + "mangledName": "$s8PenNavUI11CachedVenueC2ids5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)id", + "mangledName": "$s8PenNavUI11CachedVenueC2ids5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setId:", + "mangledName": "$s8PenNavUI11CachedVenueC2ids5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "coverImage", + "printedName": "coverImage", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)coverImage", + "mangledName": "$s8PenNavUI11CachedVenueC10coverImageSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)coverImage", + "mangledName": "$s8PenNavUI11CachedVenueC10coverImageSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setCoverImage:", + "mangledName": "$s8PenNavUI11CachedVenueC10coverImageSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "address", + "printedName": "address", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)address", + "mangledName": "$s8PenNavUI11CachedVenueC7addressSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)address", + "mangledName": "$s8PenNavUI11CachedVenueC7addressSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setAddress:", + "mangledName": "$s8PenNavUI11CachedVenueC7addressSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "buildingNumber", + "printedName": "buildingNumber", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)buildingNumber", + "mangledName": "$s8PenNavUI11CachedVenueC14buildingNumberSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)buildingNumber", + "mangledName": "$s8PenNavUI11CachedVenueC14buildingNumberSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setBuildingNumber:", + "mangledName": "$s8PenNavUI11CachedVenueC14buildingNumberSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "phone", + "printedName": "phone", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)phone", + "mangledName": "$s8PenNavUI11CachedVenueC5phoneSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)phone", + "mangledName": "$s8PenNavUI11CachedVenueC5phoneSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setPhone:", + "mangledName": "$s8PenNavUI11CachedVenueC5phoneSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "email", + "printedName": "email", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)email", + "mangledName": "$s8PenNavUI11CachedVenueC5emailSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)email", + "mangledName": "$s8PenNavUI11CachedVenueC5emailSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setEmail:", + "mangledName": "$s8PenNavUI11CachedVenueC5emailSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "website", + "printedName": "website", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)website", + "mangledName": "$s8PenNavUI11CachedVenueC7websiteSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)website", + "mangledName": "$s8PenNavUI11CachedVenueC7websiteSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setWebsite:", + "mangledName": "$s8PenNavUI11CachedVenueC7websiteSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "floorCount", + "printedName": "floorCount", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)floorCount", + "mangledName": "$s8PenNavUI11CachedVenueC10floorCounts5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)floorCount", + "mangledName": "$s8PenNavUI11CachedVenueC10floorCounts5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setFloorCount:", + "mangledName": "$s8PenNavUI11CachedVenueC10floorCounts5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)CachedVenue", + "mangledName": "$s8PenNavUI11CachedVenueC", + "moduleName": "PenNavUI", + "objc_name": "CachedVenue", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "CampaignTracking", + "printedName": "CampaignTracking", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CampaignTracking", + "printedName": "PenNavUI.CampaignTracking", + "usr": "c:@M@PenNavUI@objc(cs)CampaignTracking" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)CampaignTracking(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI16CampaignTrackingC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "CampaignTracking", + "printedName": "PenNavUI.CampaignTracking", + "usr": "c:@M@PenNavUI@objc(cs)CampaignTracking" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16CampaignTrackingC12fetchRequestSo07NSFetchG0CyACGyFZ", + "mangledName": "$s8PenNavUI16CampaignTrackingC12fetchRequestSo07NSFetchG0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "campaignId", + "printedName": "campaignId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(py)campaignId", + "mangledName": "$s8PenNavUI16CampaignTrackingC10campaignIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(im)campaignId", + "mangledName": "$s8PenNavUI16CampaignTrackingC10campaignIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(im)setCampaignId:", + "mangledName": "$s8PenNavUI16CampaignTrackingC10campaignIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "lastNotificationDate", + "printedName": "lastNotificationDate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Date?", + "children": [ + { + "kind": "TypeNominal", + "name": "Date", + "printedName": "Foundation.Date", + "usr": "s:10Foundation4DateV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(py)lastNotificationDate", + "mangledName": "$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Date?", + "children": [ + { + "kind": "TypeNominal", + "name": "Date", + "printedName": "Foundation.Date", + "usr": "s:10Foundation4DateV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(im)lastNotificationDate", + "mangledName": "$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Date?", + "children": [ + { + "kind": "TypeNominal", + "name": "Date", + "printedName": "Foundation.Date", + "usr": "s:10Foundation4DateV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(im)setLastNotificationDate:", + "mangledName": "$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)CampaignTracking", + "mangledName": "$s8PenNavUI16CampaignTrackingC", + "moduleName": "PenNavUI", + "objc_name": "CampaignTracking", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "Campus", + "printedName": "Campus", + "children": [ + { + "kind": "Var", + "name": "id", + "printedName": "id", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI6CampusC2idSiSgvp", + "mangledName": "$s8PenNavUI6CampusC2idSiSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC2idSiSgvg", + "mangledName": "$s8PenNavUI6CampusC2idSiSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC2idSiSgvs", + "mangledName": "$s8PenNavUI6CampusC2idSiSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC2idSiSgvM", + "mangledName": "$s8PenNavUI6CampusC2idSiSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "name", + "printedName": "name", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI6CampusC4nameSSSgvp", + "mangledName": "$s8PenNavUI6CampusC4nameSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC4nameSSSgvg", + "mangledName": "$s8PenNavUI6CampusC4nameSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC4nameSSSgvs", + "mangledName": "$s8PenNavUI6CampusC4nameSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC4nameSSSgvM", + "mangledName": "$s8PenNavUI6CampusC4nameSSSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "coverImage", + "printedName": "coverImage", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI6CampusC10coverImageSSSgvp", + "mangledName": "$s8PenNavUI6CampusC10coverImageSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC10coverImageSSSgvg", + "mangledName": "$s8PenNavUI6CampusC10coverImageSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC10coverImageSSSgvs", + "mangledName": "$s8PenNavUI6CampusC10coverImageSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC10coverImageSSSgvM", + "mangledName": "$s8PenNavUI6CampusC10coverImageSSSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI6CampusC", + "mangledName": "$s8PenNavUI6CampusC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "AVFoundation", + "printedName": "AVFoundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "CGTextRenderer", + "printedName": "CGTextRenderer", + "children": [ + { + "kind": "TypeDecl", + "name": "API", + "printedName": "API", + "children": [ + { + "kind": "Var", + "name": "uiKit", + "printedName": "uiKit", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CGTextRenderer.API.Type) -> PenNavUI.CGTextRenderer.API", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CGTextRenderer.API.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI14CGTextRendererC3APIO5uiKityA2EmF", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO5uiKityA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "appKit", + "printedName": "appKit", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CGTextRenderer.API.Type) -> PenNavUI.CGTextRenderer.API", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CGTextRenderer.API.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI14CGTextRendererC3APIO6appKityA2EmF", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO6appKityA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC3APIO2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI14CGTextRendererC3APIO9hashValueSivp", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI14CGTextRendererC3APIO9hashValueSivg", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC3APIO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI14CGTextRendererC3APIO", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + } + ] + }, + { + "kind": "Function", + "name": "render", + "printedName": "render(named:in:size:options:api:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bundle", + "printedName": "Foundation.Bundle", + "hasDefaultArg": true, + "usr": "c:objc(cs)NSBundle" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(width: Swift.Int, height: Swift.Int)?", + "children": [ + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(width: Swift.Int, height: Swift.Int)", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC6render5named2in4size7options3api9precisionS2S_So8NSBundleCSi5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC6render5named2in4size7options3api9precisionS2S_So8NSBundleCSi5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "render", + "printedName": "render(fileURL:size:options:api:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(width: Swift.Int, height: Swift.Int)?", + "children": [ + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(width: Swift.Int, height: Swift.Int)", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC6render7fileURL4size7options3api9precisionSS10Foundation0H0V_Si5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC6render7fileURL4size7options3api9precisionSS10Foundation0H0V_Si5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "render", + "printedName": "render(data:options:api:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC6render4data7options3api9precisionSS10Foundation4DataV_AA3SVGC7OptionsVAC3APIOSitKFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC6render4data7options3api9precisionSS10Foundation4DataV_AA3SVGC7OptionsVAC3APIOSitKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "renderPath", + "printedName": "renderPath(from:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC10renderPath4fromS2S_tKFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC10renderPath4fromS2S_tKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI14CGTextRendererC", + "mangledName": "$s8PenNavUI14CGTextRendererC", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "AVFoundation", + "printedName": "AVFoundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "TagFlowLayout", + "printedName": "TagFlowLayout", + "children": [ + { + "kind": "Function", + "name": "layoutAttributesForElements", + "printedName": "layoutAttributesForElements(in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "[UIKit.UICollectionViewLayoutAttributes]?", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.UICollectionViewLayoutAttributes]", + "children": [ + { + "kind": "TypeNominal", + "name": "UICollectionViewLayoutAttributes", + "printedName": "UIKit.UICollectionViewLayoutAttributes", + "usr": "c:objc(cs)UICollectionViewLayoutAttributes" + } + ], + "usr": "s:Sa" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGRect", + "printedName": "CoreFoundation.CGRect", + "usr": "c:@S@CGRect" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(im)layoutAttributesForElementsInRect:", + "mangledName": "$s8PenNavUI13TagFlowLayoutC27layoutAttributesForElements2inSaySo016UICollectionViewfH0CGSgSo6CGRectV_tF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "layoutAttributesForElementsInRect:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "flipsHorizontallyInOppositeLayoutDirection", + "printedName": "flipsHorizontallyInOppositeLayoutDirection", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(py)flipsHorizontallyInOppositeLayoutDirection", + "mangledName": "$s8PenNavUI13TagFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "flipsHorizontallyInOppositeLayoutDirection", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(im)flipsHorizontallyInOppositeLayoutDirection", + "mangledName": "$s8PenNavUI13TagFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "flipsHorizontallyInOppositeLayoutDirection", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "developmentLayoutDirection", + "printedName": "developmentLayoutDirection", + "children": [ + { + "kind": "TypeNominal", + "name": "UIUserInterfaceLayoutDirection", + "printedName": "UIKit.UIUserInterfaceLayoutDirection", + "usr": "c:@E@UIUserInterfaceLayoutDirection" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(py)developmentLayoutDirection", + "mangledName": "$s8PenNavUI13TagFlowLayoutC011developmentF9DirectionSo015UIUserInterfacefH0Vvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "developmentLayoutDirection", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIUserInterfaceLayoutDirection", + "printedName": "UIKit.UIUserInterfaceLayoutDirection", + "usr": "c:@E@UIUserInterfaceLayoutDirection" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(im)developmentLayoutDirection", + "mangledName": "$s8PenNavUI13TagFlowLayoutC011developmentF9DirectionSo015UIUserInterfacefH0Vvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "developmentLayoutDirection", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "TagFlowLayout", + "printedName": "PenNavUI.TagFlowLayout", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(im)init", + "mangledName": "$s8PenNavUI13TagFlowLayoutCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "TypeDecl", + "name": "LayoutAlignment", + "printedName": "LayoutAlignment", + "children": [ + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.TagFlowLayout.LayoutAlignment.Type) -> PenNavUI.TagFlowLayout.LayoutAlignment", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO4leftyA2EmF", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO4leftyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "center", + "printedName": "center", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.TagFlowLayout.LayoutAlignment.Type) -> PenNavUI.TagFlowLayout.LayoutAlignment", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO6centeryA2EmF", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO6centeryA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.TagFlowLayout.LayoutAlignment.Type) -> PenNavUI.TagFlowLayout.LayoutAlignment", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO5rightyA2EmF", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO5rightyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment?", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueAESgSi_tcfc", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueAESgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivp", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivg", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO", + "moduleName": "PenNavUI", + "isFromExtension": true, + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout", + "mangledName": "$s8PenNavUI13TagFlowLayoutC", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)UICollectionViewFlowLayout", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "UIKit.UICollectionViewFlowLayout", + "UIKit.UICollectionViewLayout", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavUIManager", + "printedName": "PenNavUIManager", + "children": [ + { + "kind": "Var", + "name": "shared", + "printedName": "shared", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB9UIManagerC6sharedACvpZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC6sharedACvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC6sharedACvgZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC6sharedACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC6sharedACvsZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC6sharedACvsZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC6sharedACvMZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC6sharedACvMZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "initializationDelegate", + "printedName": "initializationDelegate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PenNavInitializationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavInitializationDelegate", + "printedName": "any PenNavUI.PenNavInitializationDelegate", + "usr": "s:8PenNavUI0aB22InitializationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvp", + "mangledName": "$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PenNavInitializationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavInitializationDelegate", + "printedName": "any PenNavUI.PenNavInitializationDelegate", + "usr": "s:8PenNavUI0aB22InitializationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvg", + "mangledName": "$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PenNavInitializationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavInitializationDelegate", + "printedName": "any PenNavUI.PenNavInitializationDelegate", + "usr": "s:8PenNavUI0aB22InitializationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvs", + "mangledName": "$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvM", + "mangledName": "$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "eventsDelegate", + "printedName": "eventsDelegate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PIEventsDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PIEventsDelegate", + "printedName": "any PenNavUI.PIEventsDelegate", + "usr": "s:8PenNavUI16PIEventsDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvp", + "mangledName": "$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PIEventsDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PIEventsDelegate", + "printedName": "any PenNavUI.PIEventsDelegate", + "usr": "s:8PenNavUI16PIEventsDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvg", + "mangledName": "$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PIEventsDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PIEventsDelegate", + "printedName": "any PenNavUI.PIEventsDelegate", + "usr": "s:8PenNavUI16PIEventsDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvs", + "mangledName": "$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvM", + "mangledName": "$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "locationDelegate", + "printedName": "locationDelegate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PILocationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PILocationDelegate", + "printedName": "any PenNavUI.PILocationDelegate", + "usr": "s:8PenNavUI18PILocationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvp", + "mangledName": "$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PILocationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PILocationDelegate", + "printedName": "any PenNavUI.PILocationDelegate", + "usr": "s:8PenNavUI18PILocationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvg", + "mangledName": "$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PILocationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PILocationDelegate", + "printedName": "any PenNavUI.PILocationDelegate", + "usr": "s:8PenNavUI18PILocationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvs", + "mangledName": "$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvM", + "mangledName": "$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Function", + "name": "build", + "printedName": "build()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC5buildyyF", + "mangledName": "$s8PenNavUI0aB9UIManagerC5buildyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setLanguage", + "printedName": "setLanguage(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setLanguageyACSSF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setLanguageyACSSF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setLanguage", + "printedName": "setLanguage(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setLanguageyySSFZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setLanguageyySSFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setDeepLinkComponents", + "printedName": "setDeepLinkComponents(scheme:host:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC21setDeepLinkComponents6scheme4hostACSS_SStF", + "mangledName": "$s8PenNavUI0aB9UIManagerC21setDeepLinkComponents6scheme4hostACSS_SStF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setDeepLink", + "printedName": "setDeepLink(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setDeepLinkyy10Foundation3URLVSgF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setDeepLinkyy10Foundation3URLVSgF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setEnableReportIssue", + "printedName": "setEnableReportIssue(enable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC20setEnableReportIssue6enableACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC20setEnableReportIssue6enableACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setShareLocationCallback", + "printedName": "setShareLocationCallback(enabled:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC24setShareLocationCallback7enabledACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC24setShareLocationCallback7enabledACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "navigate", + "printedName": "navigate(to:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "((Swift.Bool, PenNavUI.PenNavUIError?) -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(Swift.Bool, PenNavUI.PenNavUIError?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(Swift.Bool, PenNavUI.PenNavUIError?)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.PenNavUIError?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ], + "usr": "s:Sq" + } + ] + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtF", + "mangledName": "$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getCampusListing", + "printedName": "getCampusListing(baseURL:serviceName:clientID:clientKey:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "([PenNavUI.Campus]?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "[PenNavUI.Campus]?", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[PenNavUI.Campus]", + "children": [ + { + "kind": "TypeNominal", + "name": "Campus", + "printedName": "PenNavUI.Campus", + "usr": "s:8PenNavUI6CampusC" + } + ], + "usr": "s:Sa" + } + ], + "usr": "s:Sq" + } + ] + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctF", + "mangledName": "$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setAppColor", + "printedName": "setAppColor(color:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setAppColor5colorACSo7UIColorC_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setAppColor5colorACSo7UIColorC_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getVersion", + "printedName": "getVersion()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC10getVersionSSyFZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC10getVersionSSyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "present", + "printedName": "present(root:view:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC7present4root4viewySo16UIViewControllerC_So0H0CtF", + "mangledName": "$s8PenNavUI0aB9UIManagerC7present4root4viewySo16UIViewControllerC_So0H0CtF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "dismiss", + "printedName": "dismiss()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC7dismissyyF", + "mangledName": "$s8PenNavUI0aB9UIManagerC7dismissyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setClientKey", + "printedName": "setClientKey(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC12setClientKeyyACSSF", + "mangledName": "$s8PenNavUI0aB9UIManagerC12setClientKeyyACSSF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setClientID", + "printedName": "setClientID(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setClientIDyACSSF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setClientIDyACSSF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setUsername", + "printedName": "setUsername(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setUsernameyACSSF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setUsernameyACSSF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setServiceName", + "printedName": "setServiceName(dataServiceName:positionServiceName:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC14setServiceName04datafG008positionfG0ACSS_SStF", + "mangledName": "$s8PenNavUI0aB9UIManagerC14setServiceName04datafG008positionfG0ACSS_SStF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setBaseURL", + "printedName": "setBaseURL(dataURL:positionURL:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC10setBaseURL04dataG008positionG0ACSS_SStF", + "mangledName": "$s8PenNavUI0aB9UIManagerC10setBaseURL04dataG008positionG0ACSS_SStF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setIsShowUserName", + "printedName": "setIsShowUserName(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC17setIsShowUserNameyACSbF", + "mangledName": "$s8PenNavUI0aB9UIManagerC17setIsShowUserNameyACSbF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setBackButtonVisibility", + "printedName": "setBackButtonVisibility(visible:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC23setBackButtonVisibility7visibleACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC23setBackButtonVisibility7visibleACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setDebugOptionsVisibility", + "printedName": "setDebugOptionsVisibility(visible:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC25setDebugOptionsVisibility7visibleACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC25setDebugOptionsVisibility7visibleACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setCampusID", + "printedName": "setCampusID(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setCampusIDyACSiF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setCampusIDyACSiF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setIsUpdateUserLocationSmoothly", + "printedName": "setIsUpdateUserLocationSmoothly(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC31setIsUpdateUserLocationSmoothlyyACSbF", + "mangledName": "$s8PenNavUI0aB9UIManagerC31setIsUpdateUserLocationSmoothlyyACSbF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setOutdoorEnable", + "printedName": "setOutdoorEnable(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC16setOutdoorEnable02isG0ACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC16setOutdoorEnable02isG0ACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setSimulationModeEnabled", + "printedName": "setSimulationModeEnabled(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC24setSimulationModeEnabled8isEnableACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC24setSimulationModeEnabled8isEnableACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setStepDetectionEnable", + "printedName": "setStepDetectionEnable(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC22setStepDetectionEnable02isH0ACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC22setStepDetectionEnable02isH0ACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setTransitionEnable", + "printedName": "setTransitionEnable(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC19setTransitionEnable02isG0ACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC19setTransitionEnable02isG0ACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setGeographicCoordinateEnable", + "printedName": "setGeographicCoordinateEnable(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC29setGeographicCoordinateEnable02isH0ACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC29setGeographicCoordinateEnable02isH0ACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getToken", + "printedName": "getToken(clientID:clientKey:showProgress:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(Swift.String?, Penguin.ErrorCode?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(Swift.String?, Penguin.ErrorCode?)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Penguin.ErrorCode?", + "children": [ + { + "kind": "TypeNominal", + "name": "ErrorCode", + "printedName": "Penguin.ErrorCode", + "usr": "c:@M@Penguin@E@ErrorCode" + } + ], + "usr": "s:Sq" + } + ] + } + ] + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctF", + "mangledName": "$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setToken", + "printedName": "setToken(token:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC8setToken5tokenySS_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC8setToken5tokenySS_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "clearDatabase", + "printedName": "clearDatabase()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC13clearDatabaseyyF", + "mangledName": "$s8PenNavUI0aB9UIManagerC13clearDatabaseyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getVersion", + "printedName": "getVersion()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC10getVersionSSSgyF", + "mangledName": "$s8PenNavUI0aB9UIManagerC10getVersionSSSgyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager(im)init", + "mangledName": "$s8PenNavUI0aB9UIManagerCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "locationManagerDidChangeAuthorization", + "printedName": "locationManagerDidChangeAuthorization(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationManager", + "printedName": "CoreLocation.CLLocationManager", + "usr": "c:objc(cs)CLLocationManager" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)locationManagerDidChangeAuthorization:", + "mangledName": "$s8PenNavUI0aB9UIManagerC37locationManagerDidChangeAuthorizationyySo010CLLocationF0CF", + "moduleName": "PenNavUI", + "objc_name": "locationManagerDidChangeAuthorization:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "locationManager", + "printedName": "locationManager(_:didChangeAuthorization:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationManager", + "printedName": "CoreLocation.CLLocationManager", + "usr": "c:objc(cs)CLLocationManager" + }, + { + "kind": "TypeNominal", + "name": "CLAuthorizationStatus", + "printedName": "CoreLocation.CLAuthorizationStatus", + "usr": "c:@E@CLAuthorizationStatus" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)locationManager:didChangeAuthorizationStatus:", + "mangledName": "$s8PenNavUI0aB9UIManagerC15locationManager_22didChangeAuthorizationySo010CLLocationF0C_So21CLAuthorizationStatusVtF", + "moduleName": "PenNavUI", + "objc_name": "locationManager:didChangeAuthorizationStatus:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onReady", + "printedName": "onReady(warning:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "WarningCode", + "printedName": "Penguin.WarningCode", + "usr": "c:@M@Penguin@E@WarningCode" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)onReadyWithWarning:", + "mangledName": "$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tF", + "moduleName": "PenNavUI", + "objc_name": "onReadyWithWarning:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onInitilzationError", + "printedName": "onInitilzationError(error:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "ErrorCode", + "printedName": "Penguin.ErrorCode", + "usr": "c:@M@Penguin@E@ErrorCode" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)onInitilzationErrorWithError:", + "mangledName": "$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tF", + "moduleName": "PenNavUI", + "objc_name": "onInitilzationErrorWithError:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onInitializationProgressChange", + "printedName": "onInitializationProgressChange(status:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "SDKOperation", + "printedName": "Penguin.SDKOperation", + "usr": "c:@M@Penguin@E@SDKOperation" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)onInitializationProgressChangeWithStatus:", + "mangledName": "$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tF", + "moduleName": "PenNavUI", + "objc_name": "onInitializationProgressChangeWithStatus:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager", + "mangledName": "$s8PenNavUI0aB9UIManagerC", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "PIInitializerDelegate", + "printedName": "PIInitializerDelegate", + "usr": "c:@M@Penguin@objc(pl)PIInitializerDelegate", + "mangledName": "$s7Penguin21PIInitializerDelegateP" + } + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "MessageUI", + "printedName": "MessageUI", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "SafariServices", + "printedName": "SafariServices", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "DOM", + "printedName": "DOM", + "declKind": "Enum", + "usr": "s:8PenNavUI3DOMO", + "mangledName": "$s8PenNavUI3DOMO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "CommandLine", + "printedName": "CommandLine", + "children": [ + { + "kind": "Function", + "name": "processImage", + "printedName": "processImage(with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "PenNavUI.CommandLine.Configuration", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO12processImage4with10Foundation4DataVAC13ConfigurationV_tKFZ", + "mangledName": "$s8PenNavUI11CommandLineO12processImage4with10Foundation4DataVAC13ConfigurationV_tKFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "makeSVGOptions", + "printedName": "makeSVGOptions(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "PenNavUI.CommandLine.Configuration", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO14makeSVGOptions3forAA3SVGC7OptionsVAC13ConfigurationV_tFZ", + "mangledName": "$s8PenNavUI11CommandLineO14makeSVGOptions3forAA3SVGC7OptionsVAC13ConfigurationV_tFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "makeTextAPI", + "printedName": "makeTextAPI(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO11makeTextAPI3forAA14CGTextRendererC0H0OAcHOSg_tFZ", + "mangledName": "$s8PenNavUI11CommandLineO11makeTextAPI3forAA14CGTextRendererC0H0OAcHOSg_tFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "processImage", + "printedName": "processImage(_:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + }, + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "PenNavUI.CommandLine.Configuration", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO12processImage_4with10Foundation4DataVAA3SVGC_AC13ConfigurationVtKFZ", + "mangledName": "$s8PenNavUI11CommandLineO12processImage_4with10Foundation4DataVAA3SVGC_AC13ConfigurationVtKFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "makeImageInsets", + "printedName": "makeImageInsets(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO15makeImageInsets3forAA3SVGC0H0VAcHV_tKFZ", + "mangledName": "$s8PenNavUI11CommandLineO15makeImageInsets3forAA3SVGC0H0VAcHV_tKFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "TypeDecl", + "name": "Configuration", + "printedName": "Configuration", + "children": [ + { + "kind": "Var", + "name": "input", + "printedName": "input", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "inputUltralight", + "printedName": "inputUltralight", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "inputBlack", + "printedName": "inputBlack", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "output", + "printedName": "output", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "format", + "printedName": "format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "size", + "printedName": "size", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "api", + "printedName": "api", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "insets", + "printedName": "insets", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "insetsUltralight", + "printedName": "insetsUltralight", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "insetsBlack", + "printedName": "insetsBlack", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "scale", + "printedName": "scale", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "options", + "printedName": "options", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "precision", + "printedName": "precision", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Format", + "printedName": "Format", + "children": [ + { + "kind": "Var", + "name": "jpeg", + "printedName": "jpeg", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO4jpegyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO4jpegyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "pdf", + "printedName": "pdf", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO3pdfyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO3pdfyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "png", + "printedName": "png", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO3pngyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO3pngyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "swift", + "printedName": "swift", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO5swiftyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO5swiftyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "sfsymbol", + "printedName": "sfsymbol", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO8sfsymbolyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO8sfsymbolyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Format?", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI11CommandLineO6FormatO8rawValueAESgSS_tcfc", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO8rawValueAESgSS_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6FormatO8rawValueSSvp", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO8rawValueSSvp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6FormatO8rawValueSSvg", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO8rawValueSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO6FormatO", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "enumRawTypeName": "String", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "API", + "printedName": "API", + "children": [ + { + "kind": "Var", + "name": "appkit", + "printedName": "appkit", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.API.Type) -> PenNavUI.CommandLine.API", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.API.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO3APIO6appkityA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO3APIO6appkityA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "uikit", + "printedName": "uikit", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.API.Type) -> PenNavUI.CommandLine.API", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.API.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO3APIO5uikityA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO3APIO5uikityA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI11CommandLineO3APIO8rawValueAESgSS_tcfc", + "mangledName": "$s8PenNavUI11CommandLineO3APIO8rawValueAESgSS_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO3APIO8rawValueSSvp", + "mangledName": "$s8PenNavUI11CommandLineO3APIO8rawValueSSvp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO3APIO8rawValueSSvg", + "mangledName": "$s8PenNavUI11CommandLineO3APIO8rawValueSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO3APIO", + "mangledName": "$s8PenNavUI11CommandLineO3APIO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "enumRawTypeName": "String", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Size", + "printedName": "Size", + "children": [ + { + "kind": "Var", + "name": "default", + "printedName": "default", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Size.Type) -> PenNavUI.CommandLine.Size", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Size.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO4SizeO7defaultyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO4SizeO7defaultyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "custom", + "printedName": "custom", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Size.Type) -> (Swift.Int, Swift.Int) -> PenNavUI.CommandLine.Size", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(Swift.Int, Swift.Int) -> PenNavUI.CommandLine.Size", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + }, + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(width: Swift.Int, height: Swift.Int)", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ] + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Size.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO4SizeO6customyAESi_SitcAEmF", + "mangledName": "$s8PenNavUI11CommandLineO4SizeO6customyAESi_SitcAEmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + }, + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO4SizeO2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI11CommandLineO4SizeO2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO4SizeO", + "mangledName": "$s8PenNavUI11CommandLineO4SizeO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Scale", + "printedName": "Scale", + "children": [ + { + "kind": "Var", + "name": "default", + "printedName": "default", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Scale.Type) -> PenNavUI.CommandLine.Scale", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Scale.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ScaleO7defaultyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO7defaultyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "retina", + "printedName": "retina", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Scale.Type) -> PenNavUI.CommandLine.Scale", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Scale.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ScaleO6retinayA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO6retinayA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "superRetina", + "printedName": "superRetina", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Scale.Type) -> PenNavUI.CommandLine.Scale", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Scale.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ScaleO11superRetinayA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO11superRetinayA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO5ScaleO9hashValueSivp", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO5ScaleO9hashValueSivg", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO5ScaleO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + }, + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO5ScaleO2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO5ScaleO", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Insets", + "printedName": "Insets", + "children": [ + { + "kind": "Var", + "name": "top", + "printedName": "top", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3topSdSgvp", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3topSdSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3topSdSgvg", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3topSdSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3topSdSgvs", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3topSdSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3topSdSgvM", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3topSdSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6InsetsV4leftSdSgvp", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV4leftSdSgvg", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV4leftSdSgvs", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV4leftSdSgvM", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "bottom", + "printedName": "bottom", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6InsetsV6bottomSdSgvp", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV6bottomSdSgvg", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV6bottomSdSgvs", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV6bottomSdSgvM", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6InsetsV5rightSdSgvp", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV5rightSdSgvg", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV5rightSdSgvs", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV5rightSdSgvM", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(top:left:bottom:right:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3top4left6bottom5rightAESdSg_A3Jtcfc", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3top4left6bottom5rightAESdSg_A3Jtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO6InsetsV2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI11CommandLineO6InsetsV", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + }, + { + "kind": "Function", + "name": "parseConfiguration", + "printedName": "parseConfiguration(from:baseDirectory:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "PenNavUI.CommandLine.Configuration", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV" + }, + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[Swift.String]", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO18parseConfiguration4from13baseDirectoryAC0G0VSaySSG_10Foundation3URLVtKFZ", + "mangledName": "$s8PenNavUI11CommandLineO18parseConfiguration4from13baseDirectoryAC0G0VSaySSG_10Foundation3URLVtKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "TypeDecl", + "name": "Error", + "printedName": "Error", + "children": [ + { + "kind": "Var", + "name": "invalid", + "printedName": "invalid", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Error.Type) -> PenNavUI.CommandLine.Error", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Error.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ErrorO7invalidyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO7invalidyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "unsupported", + "printedName": "unsupported", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Error.Type) -> PenNavUI.CommandLine.Error", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Error.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ErrorO11unsupportedyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO11unsupportedyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "fileNotFound", + "printedName": "fileNotFound", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Error.Type) -> PenNavUI.CommandLine.Error", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Error.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ErrorO12fileNotFoundyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO12fileNotFoundyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + }, + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO5ErrorO2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO5ErrorO9hashValueSivp", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO5ErrorO9hashValueSivg", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO5ErrorO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO5ErrorO", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Error", + "printedName": "Error", + "usr": "s:s5ErrorP", + "mangledName": "$ss5ErrorP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO", + "mangledName": "$s8PenNavUI11CommandLineO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelBehavior", + "printedName": "FloatingPanelBehavior", + "children": [ + { + "kind": "Var", + "name": "springDecelerationRate", + "printedName": "springDecelerationRate", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(py)springDecelerationRate", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP22springDecelerationRate12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)springDecelerationRate", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP22springDecelerationRate12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "springResponseTime", + "printedName": "springResponseTime", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(py)springResponseTime", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP18springResponseTime12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)springResponseTime", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP18springResponseTime12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "momentumProjectionRate", + "printedName": "momentumProjectionRate", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(py)momentumProjectionRate", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP22momentumProjectionRate12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)momentumProjectionRate", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP22momentumProjectionRate12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "shouldProjectMomentum", + "printedName": "shouldProjectMomentum(_:to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)shouldProjectMomentum:to:", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP21shouldProjectMomentum_2toSbAA0dE10ControllerC_AA0dE5StateCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "redirectionalProgress", + "printedName": "redirectionalProgress(_:from:to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)redirectionalProgress:from:to:", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP21redirectionalProgress_4from2to12CoreGraphics7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "allowsRubberBanding", + "printedName": "allowsRubberBanding(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "UIRectEdge", + "printedName": "UIUtilities.UIRectEdge", + "usr": "c:@E@UIRectEdge" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)allowsRubberBandingFor:", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP19allowsRubberBanding3forSbSo10UIRectEdgeV_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "allowsRubberBandingFor:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "removalInteractionVelocityThreshold", + "printedName": "removalInteractionVelocityThreshold", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(py)removalInteractionVelocityThreshold", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)removalInteractionVelocityThreshold", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Protocol", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 : AnyObject>", + "sugared_genericSig": "", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelDefaultBehavior", + "printedName": "FloatingPanelDefaultBehavior", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelDefaultBehavior", + "printedName": "PenNavUI.FloatingPanelDefaultBehavior", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorCACycfc", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorCACycfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "springDecelerationRate", + "printedName": "springDecelerationRate", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "springDecelerationRate", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "springDecelerationRate", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "springResponseTime", + "printedName": "springResponseTime", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "springResponseTime", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "springResponseTime", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "momentumProjectionRate", + "printedName": "momentumProjectionRate", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "momentumProjectionRate", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "momentumProjectionRate", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "redirectionalProgress", + "printedName": "redirectionalProgress(_:from:to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC21redirectionalProgress_4from2to14CoreFoundation7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtF", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC21redirectionalProgress_4from2to12CoreGraphics7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtF", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "redirectionalProgress:from:to:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "allowsRubberBanding", + "printedName": "allowsRubberBanding(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "UIRectEdge", + "printedName": "UIUtilities.UIRectEdge", + "usr": "c:@E@UIRectEdge" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tF", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tF", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "allowsRubberBandingFor:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "removalInteractionVelocityThreshold", + "printedName": "removalInteractionVelocityThreshold", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "removalInteractionVelocityThreshold", + "declAttributes": [ + "HasInitialValue", + "ObjC", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "isOpen": true, + "objc_name": "removalInteractionVelocityThreshold", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "isOpen": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "isOpen": true, + "accessorKind": "_modify" + } + ] + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC", + "moduleName": "PenNavUI", + "isOpen": true, + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "FloatingPanelBehavior", + "printedName": "FloatingPanelBehavior", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "IssueType", + "printedName": "IssueType", + "children": [ + { + "kind": "Var", + "name": "poi", + "printedName": "poi", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.IssueType.Type) -> PenNavUI.IssueType", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.IssueType.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI9IssueTypeO3poiyA2CmF", + "mangledName": "$s8PenNavUI9IssueTypeO3poiyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "venue", + "printedName": "venue", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.IssueType.Type) -> PenNavUI.IssueType", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.IssueType.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI9IssueTypeO5venueyA2CmF", + "mangledName": "$s8PenNavUI9IssueTypeO5venueyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "location", + "printedName": "location", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.IssueType.Type) -> PenNavUI.IssueType", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.IssueType.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI9IssueTypeO8locationyA2CmF", + "mangledName": "$s8PenNavUI9IssueTypeO8locationyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "navigation", + "printedName": "navigation", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.IssueType.Type) -> PenNavUI.IssueType", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.IssueType.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI9IssueTypeO10navigationyA2CmF", + "mangledName": "$s8PenNavUI9IssueTypeO10navigationyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI9IssueTypeO2eeoiySbAC_ACtFZ", + "mangledName": "$s8PenNavUI9IssueTypeO2eeoiySbAC_ACtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI9IssueTypeO9hashValueSivp", + "mangledName": "$s8PenNavUI9IssueTypeO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI9IssueTypeO9hashValueSivg", + "mangledName": "$s8PenNavUI9IssueTypeO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI9IssueTypeO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI9IssueTypeO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI9IssueTypeO", + "mangledName": "$s8PenNavUI9IssueTypeO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + } + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "MapKit", + "printedName": "MapKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "FavoriteCacheData", + "printedName": "FavoriteCacheData", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FavoriteCacheData", + "printedName": "PenNavUI.FavoriteCacheData", + "usr": "c:@M@PenNavUI@objc(cs)FavoriteCacheData" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FavoriteCacheData(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "FavoriteCacheData", + "printedName": "PenNavUI.FavoriteCacheData", + "usr": "c:@M@PenNavUI@objc(cs)FavoriteCacheData" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17FavoriteCacheDataC12fetchRequestSo07NSFetchH0CyACGyFZ", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC12fetchRequestSo07NSFetchH0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "createDate", + "printedName": "createDate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)createDate", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC10createDateSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)createDate", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC10createDateSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setCreateDate:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC10createDateSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "deviceId", + "printedName": "deviceId", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)deviceId", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8deviceIdSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)deviceId", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8deviceIdSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setDeviceId:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8deviceIdSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "type", + "printedName": "type", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)type", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC4typeSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)type", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC4typeSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setType:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC4typeSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "distance", + "printedName": "distance", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)distance", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8distanceSdvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)distance", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8distanceSdvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setDistance:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8distanceSdvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "id", + "printedName": "id", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)id", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC2idSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)id", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC2idSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setId:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC2idSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "label", + "printedName": "label", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)label", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5labelSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)label", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5labelSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setLabel:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5labelSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "poiId", + "printedName": "poiId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)poiId", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5poiIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)poiId", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5poiIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setPoiId:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5poiIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "userName", + "printedName": "userName", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)userName", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8userNameSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)userName", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8userNameSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setUserName:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8userNameSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "location", + "printedName": "location", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SharedLocationCacheData?", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)location", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8locationAA014SharedLocationeF0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SharedLocationCacheData?", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)location", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8locationAA014SharedLocationeF0CSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SharedLocationCacheData?", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setLocation:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8locationAA014SharedLocationeF0CSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FavoriteCacheData", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC", + "moduleName": "PenNavUI", + "objc_name": "FavoriteCacheData", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelReferenceEdge", + "printedName": "FloatingPanelReferenceEdge", + "children": [ + { + "kind": "Var", + "name": "top", + "printedName": "top", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelReferenceEdge.Type) -> PenNavUI.FloatingPanelReferenceEdge", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelReferenceEdge.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge@FloatingPanelReferenceEdgeTop", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO3topyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelReferenceEdge.Type) -> PenNavUI.FloatingPanelReferenceEdge", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelReferenceEdge.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge@FloatingPanelReferenceEdgeLeft", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO4leftyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Var", + "name": "bottom", + "printedName": "bottom", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelReferenceEdge.Type) -> PenNavUI.FloatingPanelReferenceEdge", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelReferenceEdge.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge@FloatingPanelReferenceEdgeBottom", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO6bottomyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 2 + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelReferenceEdge.Type) -> PenNavUI.FloatingPanelReferenceEdge", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelReferenceEdge.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge@FloatingPanelReferenceEdgeRight", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO5rightyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 3 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelReferenceEdge?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI26FloatingPanelReferenceEdgeO8rawValueACSgSi_tcfc", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueACSgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI26FloatingPanelReferenceEdgeO8rawValueSivp", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI26FloatingPanelReferenceEdgeO8rawValueSivg", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "FloatingPanelLayoutReferenceGuide", + "children": [ + { + "kind": "Var", + "name": "superview", + "printedName": "superview", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutReferenceGuide.Type) -> PenNavUI.FloatingPanelLayoutReferenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide@FloatingPanelLayoutReferenceGuideSuperview", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO9superviewyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "safeArea", + "printedName": "safeArea", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutReferenceGuide.Type) -> PenNavUI.FloatingPanelLayoutReferenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide@FloatingPanelLayoutReferenceGuideSafeArea", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8safeAreayA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueACSgSi_tcfc", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueACSgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueSivp", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueSivg", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "FloatingPanelLayoutContentBoundingGuide", + "children": [ + { + "kind": "Var", + "name": "none", + "printedName": "none", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type) -> PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide@FloatingPanelLayoutContentBoundingGuideNone", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO4noneyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "superview", + "printedName": "superview", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type) -> PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide@FloatingPanelLayoutContentBoundingGuideSuperview", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO9superviewyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Var", + "name": "safeArea", + "printedName": "safeArea", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type) -> PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide@FloatingPanelLayoutContentBoundingGuideSafeArea", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8safeAreayA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 2 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueACSgSi_tcfc", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueACSgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueSivp", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueSivg", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "MessageUI", + "printedName": "MessageUI", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "SafariServices", + "printedName": "SafariServices", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "PIEventsDelegate", + "printedName": "PIEventsDelegate", + "children": [ + { + "kind": "Function", + "name": "onBackButtonPressed", + "printedName": "onBackButtonPressed()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP19onBackButtonPressedyyF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP19onBackButtonPressedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onPenNavUIDismiss", + "printedName": "onPenNavUIDismiss()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP02onaB9UIDismissyyF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP02onaB9UIDismissyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onReportIssue", + "printedName": "onReportIssue(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP13onReportIssueyyAA0H4TypeOF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP13onReportIssueyyAA0H4TypeOF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onShareLocation", + "printedName": "onShareLocation(link:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP15onShareLocation4linkySSSg_tF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP15onShareLocation4linkySSSg_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onSwitchCampus", + "printedName": "onSwitchCampus(campusId:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP14onSwitchCampus8campusIdySi_tF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP14onSwitchCampus8campusIdySi_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onBackButtonPressed", + "printedName": "onBackButtonPressed()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE19onBackButtonPressedyyF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE19onBackButtonPressedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onPenNavUIDismiss", + "printedName": "onPenNavUIDismiss()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE02onaB9UIDismissyyF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE02onaB9UIDismissyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onReportIssue", + "printedName": "onReportIssue(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE13onReportIssueyyAA0H4TypeOF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE13onReportIssueyyAA0H4TypeOF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onShareLocation", + "printedName": "onShareLocation(link:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE15onShareLocation4linkySSSg_tF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE15onShareLocation4linkySSSg_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onSwitchCampus", + "printedName": "onSwitchCampus(campusId:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE14onSwitchCampus8campusIdySi_tF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE14onSwitchCampus8campusIdySi_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "s:8PenNavUI16PIEventsDelegateP", + "mangledName": "$s8PenNavUI16PIEventsDelegateP", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "QuartzCore", + "printedName": "QuartzCore", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavUITableUpdate", + "printedName": "PenNavUITableUpdate", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUITableUpdate", + "printedName": "PenNavUI.PenNavUITableUpdate", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUITableUpdate" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUITableUpdate(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUITableUpdate", + "printedName": "PenNavUI.PenNavUITableUpdate", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUITableUpdate" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB13UITableUpdateC12fetchRequestSo07NSFetchG0CyACGyFZ", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC12fetchRequestSo07NSFetchG0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "lastUpdateTime", + "printedName": "lastUpdateTime", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(py)lastUpdateTime", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC04lastE4TimeSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(im)lastUpdateTime", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC04lastE4TimeSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(im)setLastUpdateTime:", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC04lastE4TimeSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "tableName", + "printedName": "tableName", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(py)tableName", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC9tableNameSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(im)tableName", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC9tableNameSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(im)setTableName:", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC9tableNameSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUITableUpdate", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC", + "moduleName": "PenNavUI", + "objc_name": "PenNavUITableUpdate", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "SFSymbolRenderer", + "printedName": "SFSymbolRenderer", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(options:insets:insetsUltralight:insetsBlack:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "SFSymbolRenderer", + "printedName": "PenNavUI.SFSymbolRenderer", + "usr": "s:8PenNavUI16SFSymbolRendererV" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI16SFSymbolRendererV7options6insets0G10Ultralight0G5Black9precisionAcA3SVGC7OptionsV_AA11CommandLineO6InsetsVA2PSitcfc", + "mangledName": "$s8PenNavUI16SFSymbolRendererV7options6insets0G10Ultralight0G5Black9precisionAcA3SVGC7OptionsV_AA11CommandLineO6InsetsVA2PSitcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "render", + "printedName": "render(regular:ultralight:black:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16SFSymbolRendererV6render7regular10ultralight5blackSS10Foundation3URLV_AJSgAKtKF", + "mangledName": "$s8PenNavUI16SFSymbolRendererV6render7regular10ultralight5blackSS10Foundation3URLV_AJSgAKtKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "throwing": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI16SFSymbolRendererV", + "mangledName": "$s8PenNavUI16SFSymbolRendererV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Darwin", + "printedName": "Darwin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavStyle", + "printedName": "PenNavStyle", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavStyle", + "printedName": "PenNavUI.PenNavStyle", + "usr": "c:@M@PenNavUI@objc(cs)PenNavStyle" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)PenNavStyle(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI0aB5StyleC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavStyle", + "printedName": "PenNavUI.PenNavStyle", + "usr": "c:@M@PenNavUI@objc(cs)PenNavStyle" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB5StyleC12fetchRequestSo07NSFetchF0CyACGyFZ", + "mangledName": "$s8PenNavUI0aB5StyleC12fetchRequestSo07NSFetchF0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "type", + "printedName": "type", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(py)type", + "mangledName": "$s8PenNavUI0aB5StyleC4typeSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(im)type", + "mangledName": "$s8PenNavUI0aB5StyleC4typeSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(im)setType:", + "mangledName": "$s8PenNavUI0aB5StyleC4typeSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "value", + "printedName": "value", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Data?", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(py)value", + "mangledName": "$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Data?", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(im)value", + "mangledName": "$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Data?", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(im)setValue:", + "mangledName": "$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)PenNavStyle", + "mangledName": "$s8PenNavUI0aB5StyleC", + "moduleName": "PenNavUI", + "objc_name": "PenNavStyle", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "GeofenceConfiguration", + "printedName": "GeofenceConfiguration", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(baseURL:serviceName:clientId:clientKey:campusId:)", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceConfiguration", + "printedName": "PenNavUI.GeofenceConfiguration", + "usr": "s:8PenNavUI21GeofenceConfigurationV" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI21GeofenceConfigurationV7baseURL11serviceName8clientId0J3Key06campusK0ACSS_S3SSiSgtcfc", + "mangledName": "$s8PenNavUI21GeofenceConfigurationV7baseURL11serviceName8clientId0J3Key06campusK0ACSS_S3SSiSgtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI21GeofenceConfigurationV", + "mangledName": "$s8PenNavUI21GeofenceConfigurationV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "AVFoundation", + "printedName": "AVFoundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreHaptics", + "printedName": "CoreHaptics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CryptoKit", + "printedName": "CryptoKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreText", + "printedName": "CoreText", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "CampaignMessage", + "printedName": "CampaignMessage", + "children": [ + { + "kind": "Var", + "name": "title", + "printedName": "title", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI15CampaignMessageV5titleSSvp", + "mangledName": "$s8PenNavUI15CampaignMessageV5titleSSvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV5titleSSvg", + "mangledName": "$s8PenNavUI15CampaignMessageV5titleSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV5titleSSvs", + "mangledName": "$s8PenNavUI15CampaignMessageV5titleSSvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV5titleSSvM", + "mangledName": "$s8PenNavUI15CampaignMessageV5titleSSvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "description", + "printedName": "description", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI15CampaignMessageV11descriptionSSvp", + "mangledName": "$s8PenNavUI15CampaignMessageV11descriptionSSvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV11descriptionSSvg", + "mangledName": "$s8PenNavUI15CampaignMessageV11descriptionSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV11descriptionSSvs", + "mangledName": "$s8PenNavUI15CampaignMessageV11descriptionSSvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV11descriptionSSvM", + "mangledName": "$s8PenNavUI15CampaignMessageV11descriptionSSvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI15CampaignMessageV", + "mangledName": "$s8PenNavUI15CampaignMessageV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreText", + "printedName": "CoreText", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Network", + "printedName": "Network", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavInitializationDelegate", + "printedName": "PenNavInitializationDelegate", + "children": [ + { + "kind": "Function", + "name": "onPenNavInitializationSuccess", + "printedName": "onPenNavInitializationSuccess()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB22InitializationDelegateP02onabD7SuccessyyF", + "mangledName": "$s8PenNavUI0aB22InitializationDelegateP02onabD7SuccessyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PenNavInitializationDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onPenNavInitializationError", + "printedName": "onPenNavInitializationError(errorType:errorDescription:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB22InitializationDelegateP02onabD5Error9errorType0H11DescriptionyAA0aB7UIErrorO_SStF", + "mangledName": "$s8PenNavUI0aB22InitializationDelegateP02onabD5Error9errorType0H11DescriptionyAA0aB7UIErrorO_SStF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PenNavInitializationDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "s:8PenNavUI0aB22InitializationDelegateP", + "mangledName": "$s8PenNavUI0aB22InitializationDelegateP", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "SharedLocationCacheData", + "printedName": "SharedLocationCacheData", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI23SharedLocationCacheDataC12fetchRequestSo07NSFetchI0CyACGyFZ", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC12fetchRequestSo07NSFetchI0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "edgeId", + "printedName": "edgeId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)edgeId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC6edgeIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)edgeId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC6edgeIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setEdgeId:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC6edgeIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "floorId", + "printedName": "floorId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)floorId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7floorIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)floorId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7floorIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setFloorId:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7floorIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "latitude", + "printedName": "latitude", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)latitude", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC8latitudeSdvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)latitude", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC8latitudeSdvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setLatitude:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC8latitudeSdvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "longitude", + "printedName": "longitude", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)longitude", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC9longitudeSdvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)longitude", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC9longitudeSdvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setLongitude:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC9longitudeSdvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "navigationAvoid", + "printedName": "navigationAvoid", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)navigationAvoid", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)navigationAvoid", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setNavigationAvoid:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "venueId", + "printedName": "venueId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)venueId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7venueIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)venueId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7venueIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setVenueId:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7venueIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "x", + "printedName": "x", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)x", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1xs5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)x", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1xs5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setX:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1xs5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "y", + "printedName": "y", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)y", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1ys5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)y", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1ys5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setY:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1ys5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC", + "moduleName": "PenNavUI", + "objc_name": "SharedLocationCacheData", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Network", + "printedName": "Network", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelState", + "printedName": "FloatingPanelState", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelState?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI18FloatingPanelStateC8rawValueACSgSS_tcfc", + "mangledName": "$s8PenNavUI18FloatingPanelStateC8rawValueACSgSS_tcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "Required" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:order:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)initWithRawValue:order:", + "mangledName": "$s8PenNavUI18FloatingPanelStateC8rawValue5orderACSS_Sitcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithRawValue:order:", + "declAttributes": [ + "AccessControl", + "ObjC" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI18FloatingPanelStateC8rawValueSSvp", + "mangledName": "$s8PenNavUI18FloatingPanelStateC8rawValueSSvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "HasStorage", + "AccessControl", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI18FloatingPanelStateC8rawValueSSvg", + "mangledName": "$s8PenNavUI18FloatingPanelStateC8rawValueSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "order", + "printedName": "order", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI18FloatingPanelStateC5orderSivp", + "mangledName": "$s8PenNavUI18FloatingPanelStateC5orderSivp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "HasStorage", + "AccessControl", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI18FloatingPanelStateC5orderSivg", + "mangledName": "$s8PenNavUI18FloatingPanelStateC5orderSivg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "copy", + "printedName": "copy(with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "ProtocolComposition", + "printedName": "Any" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "ObjectiveC.NSZone?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSZone", + "printedName": "ObjectiveC.NSZone", + "usr": "s:10ObjectiveC6NSZoneV" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)copyWithZone:", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4copy4withyp10ObjectiveC6NSZoneVSg_tF", + "moduleName": "PenNavUI", + "objc_name": "copyWithZone:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "description", + "printedName": "description", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(py)description", + "mangledName": "$s8PenNavUI18FloatingPanelStateC11descriptionSSvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "description", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)description", + "mangledName": "$s8PenNavUI18FloatingPanelStateC11descriptionSSvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "description", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "debugDescription", + "printedName": "debugDescription", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(py)debugDescription", + "mangledName": "$s8PenNavUI18FloatingPanelStateC16debugDescriptionSSvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "debugDescription", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)debugDescription", + "mangledName": "$s8PenNavUI18FloatingPanelStateC16debugDescriptionSSvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "debugDescription", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "full", + "printedName": "full", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cpy)Full", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4fullACvpZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "Full", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cm)Full", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4fullACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "half", + "printedName": "half", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cpy)Half", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4halfACvpZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "Half", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cm)Half", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4halfACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "tip", + "printedName": "tip", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cpy)Tip", + "mangledName": "$s8PenNavUI18FloatingPanelStateC3tipACvpZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "Tip", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cm)Tip", + "mangledName": "$s8PenNavUI18FloatingPanelStateC3tipACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "hidden", + "printedName": "hidden", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cpy)Hidden", + "mangledName": "$s8PenNavUI18FloatingPanelStateC6hiddenACvpZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "Hidden", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cm)Hidden", + "mangledName": "$s8PenNavUI18FloatingPanelStateC6hiddenACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)init", + "mangledName": "$s8PenNavUI18FloatingPanelStateCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState", + "mangledName": "$s8PenNavUI18FloatingPanelStateC", + "moduleName": "PenNavUI", + "isOpen": true, + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreText", + "printedName": "CoreText", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "AsynchronousOperation", + "printedName": "AsynchronousOperation", + "children": [ + { + "kind": "Var", + "name": "isAsynchronous", + "printedName": "isAsynchronous", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(py)asynchronous", + "mangledName": "$s8PenNavUI21AsynchronousOperationC02isD0Sbvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "asynchronous", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "Override" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)isAsynchronous", + "mangledName": "$s8PenNavUI21AsynchronousOperationC02isD0Sbvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "isAsynchronous", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isExecuting", + "printedName": "isExecuting", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(py)executing", + "mangledName": "$s8PenNavUI21AsynchronousOperationC11isExecutingSbvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "executing", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "SetterAccess", + "Override" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)isExecuting", + "mangledName": "$s8PenNavUI21AsynchronousOperationC11isExecutingSbvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "isExecuting", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isFinished", + "printedName": "isFinished", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(py)finished", + "mangledName": "$s8PenNavUI21AsynchronousOperationC10isFinishedSbvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "finished", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "SetterAccess", + "Override" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)isFinished", + "mangledName": "$s8PenNavUI21AsynchronousOperationC10isFinishedSbvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "isFinished", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "completeOperation", + "printedName": "completeOperation()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI21AsynchronousOperationC08completeE0yyF", + "mangledName": "$s8PenNavUI21AsynchronousOperationC08completeE0yyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "start", + "printedName": "start()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)start", + "mangledName": "$s8PenNavUI21AsynchronousOperationC5startyyF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "start", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "Override" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "AsynchronousOperation", + "printedName": "PenNavUI.AsynchronousOperation", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)init", + "mangledName": "$s8PenNavUI21AsynchronousOperationCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation", + "mangledName": "$s8PenNavUI21AsynchronousOperationC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSOperation", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "Foundation.Operation", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "SurfaceAppearance", + "printedName": "SurfaceAppearance", + "children": [ + { + "kind": "TypeDecl", + "name": "Shadow", + "printedName": "Shadow", + "children": [ + { + "kind": "Var", + "name": "hidden", + "printedName": "hidden", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "color", + "printedName": "color", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "offset", + "printedName": "offset", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "opacity", + "printedName": "opacity", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "radius", + "printedName": "radius", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6radius14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6radius14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6radius14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6radius14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "spread", + "printedName": "spread", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6spread14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6spread14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6spread14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6spread14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "Shadow", + "printedName": "PenNavUI.SurfaceAppearance.Shadow", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowCAEycfc", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowCAEycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelSurfaceAppearanceShadow", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Var", + "name": "backgroundColor", + "printedName": "backgroundColor", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)backgroundColor", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)backgroundColor", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setBackgroundColor:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "cornerRadius", + "printedName": "cornerRadius", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)cornerRadius", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)cornerRadius", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setCornerRadius:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC12cornerRadius14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "cornerCurve", + "printedName": "cornerCurve", + "children": [ + { + "kind": "TypeNominal", + "name": "CALayerCornerCurve", + "printedName": "QuartzCore.CALayerCornerCurve", + "usr": "c:@T@CALayerCornerCurve" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)cornerCurve", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avp", + "moduleName": "PenNavUI", + "intro_iOS": "13.0", + "declAttributes": [ + "AccessControl", + "Available", + "RawDocComment", + "ObjC" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CALayerCornerCurve", + "printedName": "QuartzCore.CALayerCornerCurve", + "usr": "c:@T@CALayerCornerCurve" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)cornerCurve", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CALayerCornerCurve", + "printedName": "QuartzCore.CALayerCornerCurve", + "usr": "c:@T@CALayerCornerCurve" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setCornerCurve:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM", + "moduleName": "PenNavUI", + "implicit": true, + "intro_iOS": "13.0", + "declAttributes": [ + "Available" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "shadows", + "printedName": "shadows", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[PenNavUI.SurfaceAppearance.Shadow]", + "children": [ + { + "kind": "TypeNominal", + "name": "Shadow", + "printedName": "PenNavUI.SurfaceAppearance.Shadow", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC" + } + ], + "usr": "s:Sa" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)shadows", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[PenNavUI.SurfaceAppearance.Shadow]", + "children": [ + { + "kind": "TypeNominal", + "name": "Shadow", + "printedName": "PenNavUI.SurfaceAppearance.Shadow", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC" + } + ], + "usr": "s:Sa" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)shadows", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[PenNavUI.SurfaceAppearance.Shadow]", + "children": [ + { + "kind": "TypeNominal", + "name": "Shadow", + "printedName": "PenNavUI.SurfaceAppearance.Shadow", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC" + } + ], + "usr": "s:Sa" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setShadows:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "borderColor", + "printedName": "borderColor", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)borderColor", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)borderColor", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setBorderColor:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "borderWidth", + "printedName": "borderWidth", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)borderWidth", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)borderWidth", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setBorderWidth:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC11borderWidth14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceAppearance", + "printedName": "PenNavUI.SurfaceAppearance", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)init", + "mangledName": "$s8PenNavUI17SurfaceAppearanceCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelSurfaceAppearance", + "declAttributes": [ + "AccessControl", + "ObjCMembers", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "SurfaceView", + "printedName": "SurfaceView", + "children": [ + { + "kind": "Var", + "name": "grabberHandle", + "printedName": "grabberHandle", + "children": [ + { + "kind": "TypeNominal", + "name": "GrabberView", + "printedName": "PenNavUI.GrabberView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)grabberHandle", + "mangledName": "$s8PenNavUI11SurfaceViewC13grabberHandleAA07GrabberE0Cvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "GrabberView", + "printedName": "PenNavUI.GrabberView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)grabberHandle", + "mangledName": "$s8PenNavUI11SurfaceViewC13grabberHandleAA07GrabberE0Cvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "grabberHandlePadding", + "printedName": "grabberHandlePadding", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)grabberHandlePadding", + "mangledName": "$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)grabberHandlePadding", + "mangledName": "$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setGrabberHandlePadding:", + "mangledName": "$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC20grabberHandlePadding14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "grabberAreaOffset", + "printedName": "grabberAreaOffset", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)grabberAreaOffset", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)grabberAreaOffset", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setGrabberAreaOffset:", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC17grabberAreaOffset14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "grabberHandleSize", + "printedName": "grabberHandleSize", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)grabberHandleSize", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)grabberHandleSize", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setGrabberHandleSize:", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "contentView", + "printedName": "contentView", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "UIKit.UIView?" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)contentView", + "mangledName": "$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "ReferenceOwnership", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "ownership": 1, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIView?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)contentView", + "mangledName": "$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIView?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setContentView:", + "mangledName": "$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvM", + "mangledName": "$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "contentPadding", + "printedName": "contentPadding", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)contentPadding", + "mangledName": "$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)contentPadding", + "mangledName": "$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setContentPadding:", + "mangledName": "$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "backgroundColor", + "printedName": "backgroundColor", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)backgroundColor", + "mangledName": "$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "backgroundColor", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)backgroundColor", + "mangledName": "$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "backgroundColor", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setBackgroundColor:", + "mangledName": "$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvs", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "setBackgroundColor:", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "appearance", + "printedName": "appearance", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceAppearance", + "printedName": "PenNavUI.SurfaceAppearance", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)appearance", + "mangledName": "$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceAppearance", + "printedName": "PenNavUI.SurfaceAppearance", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)appearance", + "mangledName": "$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "SurfaceAppearance", + "printedName": "PenNavUI.SurfaceAppearance", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setAppearance:", + "mangledName": "$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvM", + "mangledName": "$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "containerMargins", + "printedName": "containerMargins", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)containerMargins", + "mangledName": "$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)containerMargins", + "mangledName": "$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setContainerMargins:", + "mangledName": "$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "containerView", + "printedName": "containerView", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)containerView", + "mangledName": "$s8PenNavUI11SurfaceViewC09containerE0So6UIViewCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)containerView", + "mangledName": "$s8PenNavUI11SurfaceViewC09containerE0So6UIViewCvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "requiresConstraintBasedLayout", + "printedName": "requiresConstraintBasedLayout", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(cpy)requiresConstraintBasedLayout", + "mangledName": "$s8PenNavUI11SurfaceViewC29requiresConstraintBasedLayoutSbvpZ", + "moduleName": "PenNavUI", + "static": true, + "overriding": true, + "objc_name": "requiresConstraintBasedLayout", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(cm)requiresConstraintBasedLayout", + "mangledName": "$s8PenNavUI11SurfaceViewC29requiresConstraintBasedLayoutSbvgZ", + "moduleName": "PenNavUI", + "static": true, + "overriding": true, + "objc_name": "requiresConstraintBasedLayout", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(coder:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SurfaceView?", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceView", + "printedName": "PenNavUI.SurfaceView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "NSCoder", + "printedName": "Foundation.NSCoder", + "usr": "c:objc(cs)NSCoder" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)initWithCoder:", + "mangledName": "$s8PenNavUI11SurfaceViewC5coderACSgSo7NSCoderC_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "initWithCoder:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "AccessControl", + "Required" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "updateConstraints", + "printedName": "updateConstraints()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)updateConstraints", + "mangledName": "$s8PenNavUI11SurfaceViewC17updateConstraintsyyF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "updateConstraints", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "layoutSubviews", + "printedName": "layoutSubviews()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)layoutSubviews", + "mangledName": "$s8PenNavUI11SurfaceViewC14layoutSubviewsyyF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "layoutSubviews", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "intrinsicContentSize", + "printedName": "intrinsicContentSize", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)intrinsicContentSize", + "mangledName": "$s8PenNavUI11SurfaceViewC20intrinsicContentSizeSo6CGSizeVvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "intrinsicContentSize", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)intrinsicContentSize", + "mangledName": "$s8PenNavUI11SurfaceViewC20intrinsicContentSizeSo6CGSizeVvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "intrinsicContentSize", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView", + "mangledName": "$s8PenNavUI11SurfaceViewC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelSurfaceView", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjCMembers", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)UIView", + "hasMissingDesignatedInitializers": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "UIKit.UIView", + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + }, + { + "kind": "Conformance", + "name": "__DefaultCustomPlaygroundQuickLookable", + "printedName": "__DefaultCustomPlaygroundQuickLookable", + "usr": "s:s38__DefaultCustomPlaygroundQuickLookableP", + "mangledName": "$ss38__DefaultCustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UserNotifications", + "printedName": "UserNotifications", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "LinkPresentation", + "printedName": "LinkPresentation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavUIError", + "printedName": "PenNavUIError", + "children": [ + { + "kind": "Var", + "name": "missingBaseUrl", + "printedName": "missingBaseUrl", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO14missingBaseUrlyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO14missingBaseUrlyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingDataServiceName", + "printedName": "missingDataServiceName", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO22missingDataServiceNameyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO22missingDataServiceNameyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingPositionServiceName", + "printedName": "missingPositionServiceName", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO26missingPositionServiceNameyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO26missingPositionServiceNameyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingRootController", + "printedName": "missingRootController", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO21missingRootControlleryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO21missingRootControlleryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingViewContainer", + "printedName": "missingViewContainer", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO20missingViewContaineryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO20missingViewContaineryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingClientId", + "printedName": "missingClientId", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO15missingClientIdyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO15missingClientIdyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingClientName", + "printedName": "missingClientName", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO17missingClientNameyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO17missingClientNameyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "invalidClientKey", + "printedName": "invalidClientKey", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO16invalidClientKeyyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO16invalidClientKeyyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "unauthorized", + "printedName": "unauthorized", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO12unauthorizedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO12unauthorizedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noInternetConnection", + "printedName": "noInternetConnection", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO20noInternetConnectionyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO20noInternetConnectionyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "bluetoothTurnedOff", + "printedName": "bluetoothTurnedOff", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO18bluetoothTurnedOffyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO18bluetoothTurnedOffyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "locationServicesTurnedOff", + "printedName": "locationServicesTurnedOff", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO25locationServicesTurnedOffyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO25locationServicesTurnedOffyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "loadingDataError", + "printedName": "loadingDataError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO16loadingDataErroryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO16loadingDataErroryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "osNotSupported", + "printedName": "osNotSupported", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO14osNotSupportedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO14osNotSupportedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "permissionsNotGranted", + "printedName": "permissionsNotGranted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO21permissionsNotGrantedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO21permissionsNotGrantedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "sensorsInitializationError", + "printedName": "sensorsInitializationError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO26sensorsInitializationErroryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO26sensorsInitializationErroryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "unknownError", + "printedName": "unknownError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO12unknownErroryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO12unknownErroryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "locationPermissionNotGranted", + "printedName": "locationPermissionNotGranted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO28locationPermissionNotGrantedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO28locationPermissionNotGrantedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "bluetoothPermissionNotGranted", + "printedName": "bluetoothPermissionNotGranted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO29bluetoothPermissionNotGrantedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO29bluetoothPermissionNotGrantedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "invalidCampusId", + "printedName": "invalidCampusId", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO15invalidCampusIdyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO15invalidCampusIdyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noCampusListFound", + "printedName": "noCampusListFound", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO17noCampusListFoundyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO17noCampusListFoundyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "buildCancelled", + "printedName": "buildCancelled", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO14buildCancelledyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO14buildCancelledyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "errorDescription", + "printedName": "errorDescription", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB7UIErrorO16errorDescriptionSSvp", + "mangledName": "$s8PenNavUI0aB7UIErrorO16errorDescriptionSSvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB7UIErrorO16errorDescriptionSSvg", + "mangledName": "$s8PenNavUI0aB7UIErrorO16errorDescriptionSSvg", + "moduleName": "PenNavUI", + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.PenNavUIError?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI0aB7UIErrorO8rawValueACSgSS_tcfc", + "mangledName": "$s8PenNavUI0aB7UIErrorO8rawValueACSgSS_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB7UIErrorO8rawValueSSvp", + "mangledName": "$s8PenNavUI0aB7UIErrorO8rawValueSSvp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB7UIErrorO8rawValueSSvg", + "mangledName": "$s8PenNavUI0aB7UIErrorO8rawValueSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI0aB7UIErrorO", + "mangledName": "$s8PenNavUI0aB7UIErrorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "enumRawTypeName": "String", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + }, + { + "kind": "Conformance", + "name": "LocalizedError", + "printedName": "LocalizedError", + "usr": "s:10Foundation14LocalizedErrorP", + "mangledName": "$s10Foundation14LocalizedErrorP" + }, + { + "kind": "Conformance", + "name": "Error", + "printedName": "Error", + "usr": "s:s5ErrorP", + "mangledName": "$ss5ErrorP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "ValidationError", + "printedName": "ValidationError", + "children": [ + { + "kind": "Var", + "name": "noClientID", + "printedName": "noClientID", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO10noClientIDyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO10noClientIDyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noClientNameKey", + "printedName": "noClientNameKey", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO15noClientNameKeyyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO15noClientNameKeyyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noServiesName", + "printedName": "noServiesName", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO13noServiesNameyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO13noServiesNameyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noBaseUrl", + "printedName": "noBaseUrl", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO9noBaseUrlyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO9noBaseUrlyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingFonts", + "printedName": "missingFonts", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO12missingFontsyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO12missingFontsyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI15ValidationErrorO2eeoiySbAC_ACtFZ", + "mangledName": "$s8PenNavUI15ValidationErrorO2eeoiySbAC_ACtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI15ValidationErrorO9hashValueSivp", + "mangledName": "$s8PenNavUI15ValidationErrorO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15ValidationErrorO9hashValueSivg", + "mangledName": "$s8PenNavUI15ValidationErrorO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI15ValidationErrorO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI15ValidationErrorO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI15ValidationErrorO", + "mangledName": "$s8PenNavUI15ValidationErrorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Error", + "printedName": "Error", + "usr": "s:s5ErrorP", + "mangledName": "$ss5ErrorP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelPanGestureRecognizer", + "printedName": "FloatingPanelPanGestureRecognizer", + "children": [ + { + "kind": "Function", + "name": "touchesBegan", + "printedName": "touchesBegan(_:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Set", + "printedName": "Swift.Set", + "children": [ + { + "kind": "TypeNominal", + "name": "UITouch", + "printedName": "UIKit.UITouch", + "usr": "c:objc(cs)UITouch" + } + ], + "usr": "s:Sh" + }, + { + "kind": "TypeNominal", + "name": "UIEvent", + "printedName": "UIKit.UIEvent", + "usr": "c:objc(cs)UIEvent" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(im)touchesBegan:withEvent:", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC12touchesBegan_4withyShySo7UITouchCG_So7UIEventCtF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "touchesBegan:withEvent:", + "declAttributes": [ + "Final", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "delegate", + "printedName": "delegate", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(py)delegate", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "delegate", + "declAttributes": [ + "Final", + "ObjC", + "Preconcurrency", + "Custom", + "ReferenceOwnership", + "Override", + "AccessControl", + "RawDocComment" + ], + "ownership": 1, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(im)delegate", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "delegate", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(im)setDelegate:", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvs", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "setDelegate:", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvM", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "delegateOrigin", + "printedName": "delegateOrigin", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvp", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "Preconcurrency", + "Custom", + "AccessControl", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvg", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "delegateProxy", + "printedName": "delegateProxy", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvp", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "Preconcurrency", + "Custom", + "HasStorage", + "ReferenceOwnership", + "AccessControl", + "RawDocComment" + ], + "ownership": 1, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvg", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvs", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvM", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(target:action:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPanGestureRecognizer", + "printedName": "PenNavUI.FloatingPanelPanGestureRecognizer", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Any?", + "children": [ + { + "kind": "TypeNominal", + "name": "ProtocolComposition", + "printedName": "Any" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "ObjectiveC.Selector?", + "children": [ + { + "kind": "TypeNominal", + "name": "Selector", + "printedName": "ObjectiveC.Selector", + "usr": "s:10ObjectiveC8SelectorV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(im)initWithTarget:action:", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC6target6actionACypSg_10ObjectiveC8SelectorVSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithTarget:action:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "Final", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "superclassUsr": "c:objc(cs)UIPanGestureRecognizer", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "UIKit.UIPanGestureRecognizer", + "UIKit.UIGestureRecognizer", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "GrabberView", + "printedName": "GrabberView", + "children": [ + { + "kind": "Var", + "name": "barColor", + "printedName": "barColor", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11GrabberViewC8barColorSo7UIColorCvp", + "mangledName": "$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11GrabberViewC8barColorSo7UIColorCvg", + "mangledName": "$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11GrabberViewC8barColorSo7UIColorCvs", + "mangledName": "$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11GrabberViewC8barColorSo7UIColorCvM", + "mangledName": "$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(coder:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.GrabberView?", + "children": [ + { + "kind": "TypeNominal", + "name": "GrabberView", + "printedName": "PenNavUI.GrabberView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "NSCoder", + "printedName": "Foundation.NSCoder", + "usr": "c:objc(cs)NSCoder" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView(im)initWithCoder:", + "mangledName": "$s8PenNavUI11GrabberViewC5coderACSgSo7NSCoderC_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "initWithCoder:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "AccessControl", + "Required" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "layoutSubviews", + "printedName": "layoutSubviews()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView(im)layoutSubviews", + "mangledName": "$s8PenNavUI11GrabberViewC14layoutSubviewsyyF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "layoutSubviews", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "hitTest", + "printedName": "hitTest(_:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIView?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIEvent?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEvent", + "printedName": "UIKit.UIEvent", + "usr": "c:objc(cs)UIEvent" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView(im)hitTest:withEvent:", + "mangledName": "$s8PenNavUI11GrabberViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "hitTest:withEvent:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(frame:)", + "children": [ + { + "kind": "TypeNominal", + "name": "GrabberView", + "printedName": "PenNavUI.GrabberView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView" + }, + { + "kind": "TypeNominal", + "name": "CGRect", + "printedName": "CoreFoundation.CGRect", + "usr": "c:@S@CGRect" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView(im)initWithFrame:", + "mangledName": "$s8PenNavUI11GrabberViewC5frameACSo6CGRectV_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithFrame:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView", + "mangledName": "$s8PenNavUI11GrabberViewC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelGrabberView", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)UIView", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "UIKit.UIView", + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + }, + { + "kind": "Conformance", + "name": "__DefaultCustomPlaygroundQuickLookable", + "printedName": "__DefaultCustomPlaygroundQuickLookable", + "usr": "s:s38__DefaultCustomPlaygroundQuickLookableP", + "mangledName": "$ss38__DefaultCustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelPosition", + "printedName": "FloatingPanelPosition", + "children": [ + { + "kind": "Var", + "name": "top", + "printedName": "top", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelPosition.Type) -> PenNavUI.FloatingPanelPosition", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelPosition.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition@FloatingPanelPositionTop", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO3topyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelPosition.Type) -> PenNavUI.FloatingPanelPosition", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelPosition.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition@FloatingPanelPositionLeft", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO4leftyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Var", + "name": "bottom", + "printedName": "bottom", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelPosition.Type) -> PenNavUI.FloatingPanelPosition", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelPosition.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition@FloatingPanelPositionBottom", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO6bottomyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 2 + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelPosition.Type) -> PenNavUI.FloatingPanelPosition", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelPosition.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition@FloatingPanelPositionRight", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO5rightyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 3 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelPosition?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI21FloatingPanelPositionO8rawValueACSgSi_tcfc", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO8rawValueACSgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI21FloatingPanelPositionO8rawValueSivp", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI21FloatingPanelPositionO8rawValueSivg", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "FloatingPanelLayoutAnchoring", + "children": [ + { + "kind": "Var", + "name": "referenceGuide", + "printedName": "referenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring(py)referenceGuide", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP14referenceGuideAA0def9ReferenceI0Ovp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring(im)referenceGuide", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP14referenceGuideAA0def9ReferenceI0Ovg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayoutAnchoring>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "layoutConstraints", + "printedName": "layoutConstraints(_:for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring(im)layoutConstraints:for:", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayoutAnchoring>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 : AnyObject>", + "sugared_genericSig": "", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayoutAnchor", + "printedName": "FloatingPanelLayoutAnchor", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(absoluteInset:edge:referenceGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)initWithAbsoluteInset:edge:referenceGuide:", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC13absoluteInset4edge14referenceGuideAC12CoreGraphics7CGFloatV_AA0dE13ReferenceEdgeOAA0defpL0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithAbsoluteInset:edge:referenceGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(fractionalInset:edge:referenceGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)initWithFractionalInset:edge:referenceGuide:", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC15fractionalInset4edge14referenceGuideAC12CoreGraphics7CGFloatV_AA0dE13ReferenceEdgeOAA0defpL0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithFractionalInset:edge:referenceGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "referenceGuide", + "printedName": "referenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(py)referenceGuide", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC14referenceGuideAA0def9ReferenceI0Ovp", + "moduleName": "PenNavUI", + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC", + "HasStorage", + "AccessControl", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)referenceGuide", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC14referenceGuideAA0def9ReferenceI0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)init", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "layoutConstraints", + "printedName": "layoutConstraints(_:for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)layoutConstraints:for:", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF", + "moduleName": "PenNavUI", + "objc_name": "layoutConstraints:for:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "Final", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelIntrinsicLayoutAnchor", + "printedName": "FloatingPanelIntrinsicLayoutAnchor", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(absoluteOffset:referenceGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelIntrinsicLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelIntrinsicLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "hasDefaultArg": true, + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)initWithAbsoluteOffset:referenceGuide:", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14absoluteOffset14referenceGuideAC12CoreGraphics7CGFloatV_AA0deg9ReferenceL0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithAbsoluteOffset:referenceGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(fractionalOffset:referenceGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelIntrinsicLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelIntrinsicLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "hasDefaultArg": true, + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)initWithFractionalOffset:referenceGuide:", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC16fractionalOffset14referenceGuideAC12CoreGraphics7CGFloatV_AA0deg9ReferenceL0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithFractionalOffset:referenceGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "referenceGuide", + "printedName": "referenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(py)referenceGuide", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovp", + "moduleName": "PenNavUI", + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC", + "HasStorage", + "AccessControl", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)referenceGuide", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelIntrinsicLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelIntrinsicLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)init", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "layoutConstraints", + "printedName": "layoutConstraints(_:for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)layoutConstraints:for:", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF", + "moduleName": "PenNavUI", + "objc_name": "layoutConstraints:for:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "Final", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelAdaptiveLayoutAnchor", + "printedName": "FloatingPanelAdaptiveLayoutAnchor", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(absoluteOffset:contentLayout:referenceGuide:contentBoundingGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelAdaptiveLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelAdaptiveLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UILayoutGuide", + "printedName": "UIKit.UILayoutGuide", + "usr": "c:objc(cs)UILayoutGuide" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "hasDefaultArg": true, + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)initWithAbsoluteOffset:contentLayout:referenceGuide:contentBoundingGuide:", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14absoluteOffset07contentG014referenceGuide0k8BoundingM0AC12CoreGraphics7CGFloatV_So08UILayoutM0CAA0deg9ReferenceM0OAA0deg7ContentnM0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithAbsoluteOffset:contentLayout:referenceGuide:contentBoundingGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(fractionalOffset:contentLayout:referenceGuide:contentBoundingGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelAdaptiveLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelAdaptiveLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UILayoutGuide", + "printedName": "UIKit.UILayoutGuide", + "usr": "c:objc(cs)UILayoutGuide" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "hasDefaultArg": true, + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)initWithFractionalOffset:contentLayout:referenceGuide:contentBoundingGuide:", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC16fractionalOffset07contentG014referenceGuide0k8BoundingM0AC12CoreGraphics7CGFloatV_So08UILayoutM0CAA0deg9ReferenceM0OAA0deg7ContentnM0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithFractionalOffset:contentLayout:referenceGuide:contentBoundingGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "referenceGuide", + "printedName": "referenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(py)referenceGuide", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovp", + "moduleName": "PenNavUI", + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)referenceGuide", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "contentBoundingGuide", + "printedName": "contentBoundingGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(py)contentBoundingGuide", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC20contentBoundingGuideAA0deg7ContentjK0Ovp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "HasStorage", + "AccessControl", + "ObjC" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)contentBoundingGuide", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC20contentBoundingGuideAA0deg7ContentjK0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelAdaptiveLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelAdaptiveLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)init", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "layoutConstraints", + "printedName": "layoutConstraints(_:for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)layoutConstraints:for:", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF", + "moduleName": "PenNavUI", + "objc_name": "layoutConstraints:for:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "Final", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "ImageCache", + "printedName": "ImageCache", + "children": [ + { + "kind": "Function", + "name": "getImage", + "printedName": "getImage(_:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(UIKit.UIImage?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + } + ] + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI10ImageCacheC03getD0_10completiony10Foundation3URLV_ySo7UIImageCSgctF", + "mangledName": "$s8PenNavUI10ImageCacheC03getD0_10completiony10Foundation3URLV_ySo7UIImageCSgctF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getImageFromDocuments", + "printedName": "getImageFromDocuments(url:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI10ImageCacheC03getD13FromDocuments3urlSo7UIImageCSg10Foundation3URLV_tF", + "mangledName": "$s8PenNavUI10ImageCacheC03getD13FromDocuments3urlSo7UIImageCSg10Foundation3URLV_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getSVG", + "printedName": "getSVG(withURL:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(UIKit.UIImage?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + } + ] + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF", + "mangledName": "$s8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI10ImageCacheC", + "mangledName": "$s8PenNavUI10ImageCacheC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "SVGRenderer", + "printedName": "SVGRenderer", + "children": [ + { + "kind": "Function", + "name": "makeExpanded", + "printedName": "makeExpanded(path:transform:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "hasDefaultArg": true, + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11SVGRendererV12makeExpanded4path9transform9precisionS2S_SSSitKFZ", + "mangledName": "$s8PenNavUI11SVGRendererV12makeExpanded4path9transform9precisionS2S_SSSitKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "throwing": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI11SVGRendererV", + "mangledName": "$s8PenNavUI11SVGRendererV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "SVG", + "printedName": "SVG", + "children": [ + { + "kind": "Var", + "name": "size", + "printedName": "size", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC4sizeSo6CGSizeVvp", + "mangledName": "$s8PenNavUI3SVGC4sizeSo6CGSizeVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC4sizeSo6CGSizeVvg", + "mangledName": "$s8PenNavUI3SVGC4sizeSo6CGSizeVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Options", + "printedName": "Options", + "children": [ + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC7OptionsV8rawValueSivp", + "mangledName": "$s8PenNavUI3SVGC7OptionsV8rawValueSivp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC7OptionsV8rawValueSivg", + "mangledName": "$s8PenNavUI3SVGC7OptionsV8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI3SVGC7OptionsV8rawValueAESi_tcfc", + "mangledName": "$s8PenNavUI3SVGC7OptionsV8rawValueAESi_tcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "hideUnsupportedFilters", + "printedName": "hideUnsupportedFilters", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvpZ", + "mangledName": "$s8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvgZ", + "mangledName": "$s8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "default", + "printedName": "default", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC7OptionsV7defaultAEvpZ", + "mangledName": "$s8PenNavUI3SVGC7OptionsV7defaultAEvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC7OptionsV7defaultAEvgZ", + "mangledName": "$s8PenNavUI3SVGC7OptionsV7defaultAEvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI3SVGC7OptionsV", + "mangledName": "$s8PenNavUI3SVGC7OptionsV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "OptionSet", + "printedName": "OptionSet", + "children": [ + { + "kind": "TypeWitness", + "name": "Element", + "printedName": "Element", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ] + } + ], + "usr": "s:s9OptionSetP", + "mangledName": "$ss9OptionSetP" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + }, + { + "kind": "Conformance", + "name": "SetAlgebra", + "printedName": "SetAlgebra", + "children": [ + { + "kind": "TypeWitness", + "name": "Element", + "printedName": "Element", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ] + } + ], + "usr": "s:s10SetAlgebraP", + "mangledName": "$ss10SetAlgebraP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "ExpressibleByArrayLiteral", + "printedName": "ExpressibleByArrayLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "ArrayLiteralElement", + "printedName": "ArrayLiteralElement", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ] + } + ], + "usr": "s:s25ExpressibleByArrayLiteralP", + "mangledName": "$ss25ExpressibleByArrayLiteralP" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage(im)init", + "mangledName": "$s8PenNavUI3SVGCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "rasterize", + "printedName": "rasterize()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC9rasterizeSo7UIImageCyF", + "mangledName": "$s8PenNavUI3SVGC9rasterizeSo7UIImageCyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "rasterize", + "printedName": "rasterize(with:scale:insets:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGSize?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "hasDefaultArg": true, + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "hasDefaultArg": true, + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_14CoreFoundation7CGFloatVSo12UIEdgeInsetsVtF", + "mangledName": "$s8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "pngData", + "printedName": "pngData(size:scale:insets:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGSize?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "hasDefaultArg": true, + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "hasDefaultArg": true, + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC7pngData4size5scale6insets10Foundation0F0VSo6CGSizeVSg_04CoreJ07CGFloatVSo12UIEdgeInsetsVtKF", + "mangledName": "$s8PenNavUI3SVGC7pngData4size5scale6insets10Foundation0F0VSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "jpegData", + "printedName": "jpegData(size:scale:compressionQuality:insets:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGSize?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "hasDefaultArg": true, + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "hasDefaultArg": true, + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "hasDefaultArg": true, + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC8jpegData4size5scale18compressionQuality6insets10Foundation0F0VSo6CGSizeVSg_04CoreL07CGFloatVAQSo12UIEdgeInsetsVtKF", + "mangledName": "$s8PenNavUI3SVGC8jpegData4size5scale18compressionQuality6insets10Foundation0F0VSo6CGSizeVSg_12CoreGraphics7CGFloatVAQSo12UIEdgeInsetsVtKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "pdfData", + "printedName": "pdfData(size:insets:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGSize?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC6InsetsV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC7pdfData4size6insets10Foundation0F0VSo6CGSizeVSg_AC6InsetsVtKF", + "mangledName": "$s8PenNavUI3SVGC7pdfData4size6insets10Foundation0F0VSo6CGSizeVSg_AC6InsetsVtKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(fileURL:options:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SVG?", + "children": [ + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI3SVGC7fileURL7optionsACSg10Foundation0F0V_AC7OptionsVtcfc", + "mangledName": "$s8PenNavUI3SVGC7fileURL7optionsACSg10Foundation0F0V_AC7OptionsVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(named:in:options:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SVG?", + "children": [ + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bundle", + "printedName": "Foundation.Bundle", + "hasDefaultArg": true, + "usr": "c:objc(cs)NSBundle" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI3SVGC5named2in7optionsACSgSS_So8NSBundleCAC7OptionsVtcfc", + "mangledName": "$s8PenNavUI3SVGC5named2in7optionsACSgSS_So8NSBundleCAC7OptionsVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(data:options:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SVG?", + "children": [ + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI3SVGC4data7optionsACSg10Foundation4DataV_AC7OptionsVtcfc", + "mangledName": "$s8PenNavUI3SVGC4data7optionsACSg10Foundation4DataV_AC7OptionsVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "TypeDecl", + "name": "Insets", + "printedName": "Insets", + "children": [ + { + "kind": "Var", + "name": "top", + "printedName": "top", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV3top14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV3top14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV3top14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV3top14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV4left14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV4left14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV4left14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV4left14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "bottom", + "printedName": "bottom", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV6bottom14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV6bottom14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV6bottom14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV6bottom14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV5right14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV5right14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV5right14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV5right14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "zero", + "printedName": "zero", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV4zeroAEvpZ", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4zeroAEvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV4zeroAEvgZ", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4zeroAEvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC6InsetsV2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI3SVGC6InsetsV2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI3SVGC6InsetsV", + "mangledName": "$s8PenNavUI3SVGC6InsetsV", + "moduleName": "PenNavUI", + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage", + "mangledName": "$s8PenNavUI3SVGC", + "moduleName": "PenNavUI", + "objc_name": "SVGImage", + "declAttributes": [ + "Final", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelControllerDelegate", + "printedName": "FloatingPanelControllerDelegate", + "children": [ + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:layoutFor:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "UITraitCollection", + "printedName": "UIKit.UITraitCollection", + "usr": "c:objc(cs)UITraitCollection" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:layoutForTraitCollection:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_9layoutForAA0dE6Layout_pAA0deF0C_So17UITraitCollectionCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:layoutForTraitCollection:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:layoutFor:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:layoutForSize:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_9layoutForAA0dE6Layout_pAA0deF0C_So6CGSizeVtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:layoutForSize:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:animatorForPresentingTo:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewPropertyAnimator", + "printedName": "UIKit.UIViewPropertyAnimator", + "usr": "c:objc(cs)UIViewPropertyAnimator" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:animatorForPresentingToState:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_23animatorForPresentingToSo22UIViewPropertyAnimatorCAA0deF0C_AA0dE5StateCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:animatorForPresentingToState:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:animatorForDismissingWith:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewPropertyAnimator", + "printedName": "UIKit.UIViewPropertyAnimator", + "usr": "c:objc(cs)UIViewPropertyAnimator" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "CGVector", + "printedName": "CoreFoundation.CGVector", + "usr": "c:@S@CGVector" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:animatorForDismissingWithVelocity:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_25animatorForDismissingWithSo22UIViewPropertyAnimatorCAA0deF0C_So8CGVectorVtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:animatorForDismissingWithVelocity:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidChangeState", + "printedName": "floatingPanelDidChangeState(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidChangeState:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE14DidChangeStateyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelShouldBeginDragging", + "printedName": "floatingPanelShouldBeginDragging(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelShouldBeginDragging:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE19ShouldBeginDraggingySbAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidMove", + "printedName": "floatingPanelDidMove(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidMove:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE7DidMoveyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelWillBeginDragging", + "printedName": "floatingPanelWillBeginDragging(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelWillBeginDragging:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE17WillBeginDraggingyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelWillEndDragging", + "printedName": "floatingPanelWillEndDragging(_:withVelocity:targetState:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "UnsafeMutablePointer", + "printedName": "Swift.UnsafeMutablePointer", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "usr": "s:Sp" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelWillEndDragging:withVelocity:targetState:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE15WillEndDragging_12withVelocity11targetStateyAA0deF0C_So7CGPointVSpyAA0deO0CGtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidEndDragging", + "printedName": "floatingPanelDidEndDragging(_:willAttract:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidEndDragging:willAttract:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE14DidEndDragging_11willAttractyAA0deF0C_SbtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelWillBeginAttracting", + "printedName": "floatingPanelWillBeginAttracting(_:to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelWillBeginAttracting:to:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE19WillBeginAttracting_2toyAA0deF0C_AA0dE5StateCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidEndAttracting", + "printedName": "floatingPanelDidEndAttracting(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidEndAttracting:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE16DidEndAttractingyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:shouldRemoveAt:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "CGVector", + "printedName": "CoreFoundation.CGVector", + "usr": "c:@S@CGVector" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:shouldRemoveAtLocation:withVelocity:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_14shouldRemoveAt4withSbAA0deF0C_So7CGPointVSo8CGVectorVtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:shouldRemoveAtLocation:withVelocity:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelWillRemove", + "printedName": "floatingPanelWillRemove(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelWillRemove:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE10WillRemoveyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanelWillRemove:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidRemove", + "printedName": "floatingPanelDidRemove(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidRemove:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE9DidRemoveyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:contentOffsetForPinning:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:contentOffsetForPinningScrollView:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_23contentOffsetForPinningSo7CGPointVAA0deF0C_So12UIScrollViewCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:contentOffsetForPinningScrollView:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:shouldAllowToScroll:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:shouldAllowToScroll:in:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_19shouldAllowToScroll2inSbAA0deF0C_So12UIScrollViewCAA0dE5StateCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:shouldAllowToScroll:in:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 : AnyObject>", + "sugared_genericSig": "", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelController", + "printedName": "FloatingPanelController", + "children": [ + { + "kind": "TypeDecl", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "ContentInsetAdjustmentBehavior", + "children": [ + { + "kind": "Var", + "name": "always", + "printedName": "always", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior.Type) -> PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO6alwaysyA2EmF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO6alwaysyA2EmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "never", + "printedName": "never", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior.Type) -> PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO5neveryA2EmF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO5neveryA2EmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior?", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueAESgSi_tcfc", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueAESgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueSivp", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueSivg", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "ContentMode", + "printedName": "ContentMode", + "children": [ + { + "kind": "Var", + "name": "static", + "printedName": "static", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelController.ContentMode.Type) -> PenNavUI.FloatingPanelController.ContentMode", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelController.ContentMode.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO6staticyA2EmF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO6staticyA2EmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment", + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "fitToBounds", + "printedName": "fitToBounds", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelController.ContentMode.Type) -> PenNavUI.FloatingPanelController.ContentMode", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelController.ContentMode.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO11fitToBoundsyA2EmF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO11fitToBoundsyA2EmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment", + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelController.ContentMode?", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueAESgSi_tcfc", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueAESgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueSivp", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueSivg", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "Var", + "name": "delegate", + "printedName": "delegate", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "(any PenNavUI.FloatingPanelControllerDelegate)?" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)delegate", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "ReferenceOwnership", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "ownership": 1, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.FloatingPanelControllerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelControllerDelegate", + "printedName": "any PenNavUI.FloatingPanelControllerDelegate", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)delegate", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.FloatingPanelControllerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelControllerDelegate", + "printedName": "any PenNavUI.FloatingPanelControllerDelegate", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setDelegate:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "surfaceView", + "printedName": "surfaceView", + "children": [ + { + "kind": "TypeNominal", + "name": "ImplicitlyUnwrappedOptional", + "printedName": "PenNavUI.SurfaceView?", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceView", + "printedName": "PenNavUI.SurfaceView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)surfaceView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11surfaceViewAA07SurfaceH0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "ImplicitlyUnwrappedOptional", + "printedName": "PenNavUI.SurfaceView?", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceView", + "printedName": "PenNavUI.SurfaceView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)surfaceView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11surfaceViewAA07SurfaceH0CSgvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "backdropView", + "printedName": "backdropView", + "children": [ + { + "kind": "TypeNominal", + "name": "ImplicitlyUnwrappedOptional", + "printedName": "PenNavUI.BackdropView?", + "children": [ + { + "kind": "TypeNominal", + "name": "BackdropView", + "printedName": "PenNavUI.BackdropView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)backdropView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC12backdropViewAA08BackdropH0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "ImplicitlyUnwrappedOptional", + "printedName": "PenNavUI.BackdropView?", + "children": [ + { + "kind": "TypeNominal", + "name": "BackdropView", + "printedName": "PenNavUI.BackdropView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)backdropView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC12backdropViewAA08BackdropH0CSgvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "trackingScrollView", + "printedName": "trackingScrollView", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "UIKit.UIScrollView?" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)trackingScrollView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "ReferenceOwnership", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "ownership": 1, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIScrollView?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)trackingScrollView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "panGestureRecognizer", + "printedName": "panGestureRecognizer", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPanGestureRecognizer", + "printedName": "PenNavUI.FloatingPanelPanGestureRecognizer", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)panGestureRecognizer", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC20panGestureRecognizerAA0de3PanhI0Cvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPanGestureRecognizer", + "printedName": "PenNavUI.FloatingPanelPanGestureRecognizer", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)panGestureRecognizer", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC20panGestureRecognizerAA0de3PanhI0Cvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "state", + "printedName": "state", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)state", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC5stateAA0dE5StateCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)state", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC5stateAA0dE5StateCvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isAttracting", + "printedName": "isAttracting", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)isAttracting", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC12isAttractingSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)isAttracting", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC12isAttractingSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "layout", + "printedName": "layout", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)layout", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)layout", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setLayout:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "behavior", + "printedName": "behavior", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelBehavior", + "printedName": "any PenNavUI.FloatingPanelBehavior", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)behavior", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelBehavior", + "printedName": "any PenNavUI.FloatingPanelBehavior", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)behavior", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelBehavior", + "printedName": "any PenNavUI.FloatingPanelBehavior", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setBehavior:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "adjustedContentInsets", + "printedName": "adjustedContentInsets", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)adjustedContentInsets", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)adjustedContentInsets", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0Vvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "contentInsetAdjustmentBehavior", + "printedName": "contentInsetAdjustmentBehavior", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)contentInsetAdjustmentBehavior", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)contentInsetAdjustmentBehavior", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setContentInsetAdjustmentBehavior:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "isRemovalInteractionEnabled", + "printedName": "isRemovalInteractionEnabled", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)isRemovalInteractionEnabled", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)isRemovalInteractionEnabled", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvg", + "moduleName": "PenNavUI", + "objc_name": "isRemovalInteractionEnabled", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setRemovalInteractionEnabled:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvs", + "moduleName": "PenNavUI", + "objc_name": "setRemovalInteractionEnabled:", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "contentViewController", + "printedName": "contentViewController", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)contentViewController", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)contentViewController", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setContentViewController:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "nearbyState", + "printedName": "nearbyState", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvp", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvg", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvg", + "moduleName": "PenNavUI", + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "contentMode", + "printedName": "contentMode", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)contentMode", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)contentMode", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setContentMode:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(coder:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelController?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "NSCoder", + "printedName": "Foundation.NSCoder", + "usr": "c:objc(cs)NSCoder" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)initWithCoder:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC5coderACSgSo7NSCoderC_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "initWithCoder:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "AccessControl", + "Required" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(delegate:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.FloatingPanelControllerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelControllerDelegate", + "printedName": "any PenNavUI.FloatingPanelControllerDelegate", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)initWithDelegate:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAcA0deF8Delegate_pSg_tcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithDelegate:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "loadView", + "printedName": "loadView()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)loadView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8loadViewyyF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "loadView", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "viewDidLayoutSubviews", + "printedName": "viewDidLayoutSubviews()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)viewDidLayoutSubviews", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC21viewDidLayoutSubviewsyyF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "viewDidLayoutSubviews", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "viewDidAppear", + "printedName": "viewDidAppear(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)viewDidAppear:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC13viewDidAppearyySbF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "viewDidAppear:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "viewWillTransition", + "printedName": "viewWillTransition(to:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + }, + { + "kind": "TypeNominal", + "name": "UIViewControllerTransitionCoordinator", + "printedName": "any UIKit.UIViewControllerTransitionCoordinator", + "usr": "c:objc(pl)UIViewControllerTransitionCoordinator" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)viewWillTransitionToSize:withTransitionCoordinator:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC18viewWillTransition2to4withySo6CGSizeV_So06UIViewfI11Coordinator_ptF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "viewWillTransitionToSize:withTransitionCoordinator:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "willTransition", + "printedName": "willTransition(to:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UITraitCollection", + "printedName": "UIKit.UITraitCollection", + "usr": "c:objc(cs)UITraitCollection" + }, + { + "kind": "TypeNominal", + "name": "UIViewControllerTransitionCoordinator", + "printedName": "any UIKit.UIViewControllerTransitionCoordinator", + "usr": "c:objc(pl)UIViewControllerTransitionCoordinator" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)willTransitionToTraitCollection:withTransitionCoordinator:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC14willTransition2to4withySo17UITraitCollectionC_So06UIViewfH11Coordinator_ptF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "willTransitionToTraitCollection:withTransitionCoordinator:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "viewWillDisappear", + "printedName": "viewWillDisappear(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)viewWillDisappear:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC17viewWillDisappearyySbF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "viewWillDisappear:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "childForStatusBarStyle", + "printedName": "childForStatusBarStyle", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)childViewControllerForStatusBarStyle", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC22childForStatusBarStyleSo06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForStatusBarStyle", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)childViewControllerForStatusBarStyle", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC22childForStatusBarStyleSo06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForStatusBarStyle", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "childForStatusBarHidden", + "printedName": "childForStatusBarHidden", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)childViewControllerForStatusBarHidden", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC23childForStatusBarHiddenSo06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForStatusBarHidden", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)childViewControllerForStatusBarHidden", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC23childForStatusBarHiddenSo06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForStatusBarHidden", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "childForScreenEdgesDeferringSystemGestures", + "printedName": "childForScreenEdgesDeferringSystemGestures", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)childViewControllerForScreenEdgesDeferringSystemGestures", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC42childForScreenEdgesDeferringSystemGesturesSo06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForScreenEdgesDeferringSystemGestures", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)childViewControllerForScreenEdgesDeferringSystemGestures", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC42childForScreenEdgesDeferringSystemGesturesSo06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForScreenEdgesDeferringSystemGestures", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "childForHomeIndicatorAutoHidden", + "printedName": "childForHomeIndicatorAutoHidden", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)childViewControllerForHomeIndicatorAutoHidden", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC31childForHomeIndicatorAutoHiddenSo06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForHomeIndicatorAutoHidden", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)childViewControllerForHomeIndicatorAutoHidden", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC31childForHomeIndicatorAutoHiddenSo06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForHomeIndicatorAutoHidden", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "show", + "printedName": "show(animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "hasDefaultArg": true, + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)show:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtF", + "moduleName": "PenNavUI", + "objc_name": "show:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "hide", + "printedName": "hide(animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "hasDefaultArg": true, + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)hide:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC4hide8animated10completionySb_yycSgtF", + "moduleName": "PenNavUI", + "objc_name": "hide:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "addPanel", + "printedName": "addPanel(toParent:at:animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "hasDefaultArg": true, + "usr": "s:Si" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "hasDefaultArg": true, + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)addPanelToParent:at:animated:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtF", + "moduleName": "PenNavUI", + "objc_name": "addPanelToParent:at:animated:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "removePanelFromParent", + "printedName": "removePanelFromParent(animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)removePanelFromParent:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtF", + "moduleName": "PenNavUI", + "objc_name": "removePanelFromParent:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "move", + "printedName": "move(to:animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)moveToState:animated:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC4move2to8animated10completionyAA0dE5StateC_SbyycSgtF", + "moduleName": "PenNavUI", + "objc_name": "moveToState:animated:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "set", + "printedName": "set(contentViewController:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI23FloatingPanelControllerC3set011contentViewF0ySo06UIViewF0CSg_tF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC3set011contentViewF0ySo06UIViewF0CSg_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "track", + "printedName": "track(scrollView:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)trackScrollView:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC5track10scrollViewySo08UIScrollI0C_tF", + "moduleName": "PenNavUI", + "objc_name": "trackScrollView:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "followScrollViewBouncing", + "printedName": "followScrollViewBouncing()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI23FloatingPanelControllerC24followScrollViewBouncingyyF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC24followScrollViewBouncingyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "untrack", + "printedName": "untrack(scrollView:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)untrackScrollView:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC7untrack10scrollViewySo08UIScrollI0C_tF", + "moduleName": "PenNavUI", + "objc_name": "untrackScrollView:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "accessibilityPerformEscape", + "printedName": "accessibilityPerformEscape()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)accessibilityPerformEscape", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC26accessibilityPerformEscapeSbyF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "accessibilityPerformEscape", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "invalidateLayout", + "printedName": "invalidateLayout()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)invalidateLayout", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC16invalidateLayoutyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "surfaceLocation", + "printedName": "surfaceLocation(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)surfaceLocationFor:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocation3forSo7CGPointVAA0dE5StateC_tF", + "moduleName": "PenNavUI", + "objc_name": "surfaceLocationFor:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "surfaceLocation", + "printedName": "surfaceLocation", + "children": [ + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)surfaceLocation", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)surfaceLocation", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setSurfaceLocation:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Function", + "name": "addTopPadding", + "printedName": "addTopPadding(padding:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI23FloatingPanelControllerC13addTopPadding7paddingy14CoreFoundation7CGFloatV_tF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC13addTopPadding7paddingy12CoreGraphics7CGFloatV_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC", + "moduleName": "PenNavUI", + "isOpen": true, + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)UIViewController", + "hasMissingDesignatedInitializers": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "UIKit.UIViewController", + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "MessageUI", + "printedName": "MessageUI", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "SafariServices", + "printedName": "SafariServices", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "BackdropView", + "printedName": "BackdropView", + "children": [ + { + "kind": "Var", + "name": "dismissalTapGestureRecognizer", + "printedName": "dismissalTapGestureRecognizer", + "children": [ + { + "kind": "TypeNominal", + "name": "UITapGestureRecognizer", + "printedName": "UIKit.UITapGestureRecognizer", + "usr": "c:objc(cs)UITapGestureRecognizer" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView(py)dismissalTapGestureRecognizer", + "mangledName": "$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UITapGestureRecognizer", + "printedName": "UIKit.UITapGestureRecognizer", + "usr": "c:objc(cs)UITapGestureRecognizer" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView(im)dismissalTapGestureRecognizer", + "mangledName": "$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UITapGestureRecognizer", + "printedName": "UIKit.UITapGestureRecognizer", + "usr": "c:objc(cs)UITapGestureRecognizer" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView(im)setDismissalTapGestureRecognizer:", + "mangledName": "$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvM", + "mangledName": "$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(frame:)", + "children": [ + { + "kind": "TypeNominal", + "name": "BackdropView", + "printedName": "PenNavUI.BackdropView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView" + }, + { + "kind": "TypeNominal", + "name": "CGRect", + "printedName": "CoreFoundation.CGRect", + "usr": "c:@S@CGRect" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView(im)initWithFrame:", + "mangledName": "$s8PenNavUI12BackdropViewC5frameACSo6CGRectV_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithFrame:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView", + "mangledName": "$s8PenNavUI12BackdropViewC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelBackdropView", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)UIView", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "UIKit.UIView", + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + }, + { + "kind": "Conformance", + "name": "__DefaultCustomPlaygroundQuickLookable", + "printedName": "__DefaultCustomPlaygroundQuickLookable", + "usr": "s:s38__DefaultCustomPlaygroundQuickLookableP", + "mangledName": "$ss38__DefaultCustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "SystemConfiguration", + "printedName": "SystemConfiguration", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Network", + "printedName": "Network", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "NetworkMonitor", + "printedName": "NetworkMonitor", + "declKind": "Class", + "usr": "s:8PenNavUI14NetworkMonitorC", + "mangledName": "$s8PenNavUI14NetworkMonitorC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "GeofenceError", + "printedName": "GeofenceError", + "children": [ + { + "kind": "Var", + "name": "permissionDenied", + "printedName": "permissionDenied", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO16permissionDeniedyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO16permissionDeniedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "errorInConfiguration", + "printedName": "errorInConfiguration", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO20errorInConfigurationyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO20errorInConfigurationyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "authenticationFailed", + "printedName": "authenticationFailed", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO20authenticationFailedyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO20authenticationFailedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "indoorDeloymentOnly", + "printedName": "indoorDeloymentOnly", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO19indoorDeloymentOnlyyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO19indoorDeloymentOnlyyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "geofenceConfigurationsMissing", + "printedName": "geofenceConfigurationsMissing", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO29geofenceConfigurationsMissingyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO29geofenceConfigurationsMissingyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "geofenceSDKNotStarted", + "printedName": "geofenceSDKNotStarted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO21geofenceSDKNotStartedyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO21geofenceSDKNotStartedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "geofenceSDKAlreadyStarted", + "printedName": "geofenceSDKAlreadyStarted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO25geofenceSDKAlreadyStartedyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO25geofenceSDKAlreadyStartedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "sdkError", + "printedName": "sdkError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> (Swift.String) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(Swift.String) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO03sdkE0yACSScACmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO03sdkE0yACSScACmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "errorDescription", + "printedName": "errorDescription", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvp", + "mangledName": "$s8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvg", + "mangledName": "$s8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvg", + "moduleName": "PenNavUI", + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI13GeofenceErrorO", + "mangledName": "$s8PenNavUI13GeofenceErrorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Error", + "printedName": "Error", + "usr": "s:s5ErrorP", + "mangledName": "$ss5ErrorP" + }, + { + "kind": "Conformance", + "name": "LocalizedError", + "printedName": "LocalizedError", + "usr": "s:10Foundation14LocalizedErrorP", + "mangledName": "$s10Foundation14LocalizedErrorP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "PIGeofenceManagerDelegate", + "printedName": "PIGeofenceManagerDelegate", + "children": [ + { + "kind": "Function", + "name": "geofenceStarted", + "printedName": "geofenceStarted()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP15geofenceStartedyyF", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP15geofenceStartedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIGeofenceManagerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "geofenceFailedToStart", + "printedName": "geofenceFailedToStart(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP21geofenceFailedToStartyySSSgF", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP21geofenceFailedToStartyySSSgF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIGeofenceManagerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "geofenceStopped", + "printedName": "geofenceStopped()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP15geofenceStoppedyyF", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP15geofenceStoppedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIGeofenceManagerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "geofenceUpdated", + "printedName": "geofenceUpdated()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP15geofenceUpdatedyyF", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP15geofenceUpdatedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIGeofenceManagerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "PIGeofenceManager", + "printedName": "PIGeofenceManager", + "children": [ + { + "kind": "Var", + "name": "shared", + "printedName": "shared", + "children": [ + { + "kind": "TypeNominal", + "name": "PIGeofenceManager", + "printedName": "PenNavUI.PIGeofenceManager", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17PIGeofenceManagerC6sharedACvpZ", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC6sharedACvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "PIGeofenceManager", + "printedName": "PenNavUI.PIGeofenceManager", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17PIGeofenceManagerC6sharedACvgZ", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC6sharedACvgZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "initializeLocationManager", + "printedName": "initializeLocationManager()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC018initializeLocationE0yyF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC018initializeLocationE0yyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setGeofenceSDKConfigurations", + "printedName": "setGeofenceSDKConfigurations(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "GeofenceConfiguration", + "printedName": "PenNavUI.GeofenceConfiguration", + "usr": "s:8PenNavUI21GeofenceConfigurationV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC28setGeofenceSDKConfigurationsyyAA0G13ConfigurationVF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC28setGeofenceSDKConfigurationsyyAA0G13ConfigurationVF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setGeofenceDelegate", + "printedName": "setGeofenceDelegate(delegate:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "PIGeofenceManagerDelegate", + "printedName": "any PenNavUI.PIGeofenceManagerDelegate", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC19setGeofenceDelegate8delegateyAA0deH0_p_tF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC19setGeofenceDelegate8delegateyAA0deH0_p_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "startGeofencing", + "printedName": "startGeofencing(delegate:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "PIGeofenceManagerDelegate", + "printedName": "any PenNavUI.PIGeofenceManagerDelegate", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC15startGeofencing8delegateyAA0dE8Delegate_p_tF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC15startGeofencing8delegateyAA0dE8Delegate_p_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "stopGeofencing", + "printedName": "stopGeofencing()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC14stopGeofencingyyF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC14stopGeofencingyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "updateGeofencing", + "printedName": "updateGeofencing()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC16updateGeofencingyyF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC16updateGeofencingyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "PIGeofenceManager", + "printedName": "PenNavUI.PIGeofenceManager", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager(im)init", + "mangledName": "$s8PenNavUI17PIGeofenceManagerCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "locationManager", + "printedName": "locationManager(_:didChangeAuthorization:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationManager", + "printedName": "CoreLocation.CLLocationManager", + "usr": "c:objc(cs)CLLocationManager" + }, + { + "kind": "TypeNominal", + "name": "CLAuthorizationStatus", + "printedName": "CoreLocation.CLAuthorizationStatus", + "usr": "c:@E@CLAuthorizationStatus" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PIGeofenceManager(im)locationManager:didChangeAuthorizationStatus:", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC08locationE0_22didChangeAuthorizationySo010CLLocationE0C_So21CLAuthorizationStatusVtF", + "moduleName": "PenNavUI", + "objc_name": "locationManager:didChangeAuthorizationStatus:", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "RawDocComment" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "locationManager", + "printedName": "locationManager(_:didEnterRegion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationManager", + "printedName": "CoreLocation.CLLocationManager", + "usr": "c:objc(cs)CLLocationManager" + }, + { + "kind": "TypeNominal", + "name": "CLRegion", + "printedName": "CoreLocation.CLRegion", + "usr": "c:objc(cs)CLRegion" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PIGeofenceManager(im)locationManager:didEnterRegion:", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC08locationE0_14didEnterRegionySo010CLLocationE0C_So8CLRegionCtF", + "moduleName": "PenNavUI", + "objc_name": "locationManager:didEnterRegion:", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "SwiftUI", + "printedName": "SwiftUI", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "DeveloperToolsSupport", + "printedName": "DeveloperToolsSupport", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "UILayoutGuide", + "printedName": "UILayoutGuide", + "declKind": "Class", + "usr": "c:objc(cs)UILayoutGuide", + "moduleName": "UIKit", + "isOpen": true, + "intro_iOS": "9.0", + "objc_name": "UILayoutGuide", + "declAttributes": [ + "Preconcurrency", + "Available", + "ObjC", + "NonSendable", + "Custom", + "Dynamic" + ], + "superclassUsr": "c:objc(cs)NSObject", + "isExternal": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "UIView", + "printedName": "UIView", + "declKind": "Class", + "usr": "c:objc(cs)UIView", + "moduleName": "UIKit", + "isOpen": true, + "intro_iOS": "2.0", + "objc_name": "UIView", + "declAttributes": [ + "Preconcurrency", + "Available", + "ObjC", + "NonSendable", + "Custom", + "Dynamic" + ], + "superclassUsr": "c:objc(cs)UIResponder", + "isExternal": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + }, + { + "kind": "Conformance", + "name": "__DefaultCustomPlaygroundQuickLookable", + "printedName": "__DefaultCustomPlaygroundQuickLookable", + "usr": "s:s38__DefaultCustomPlaygroundQuickLookableP", + "mangledName": "$ss38__DefaultCustomPlaygroundQuickLookableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "UISpringTimingParameters", + "printedName": "UISpringTimingParameters", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(decelerationRate:frequencyResponse:initialVelocity:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UISpringTimingParameters", + "printedName": "UIKit.UISpringTimingParameters", + "usr": "c:objc(cs)UISpringTimingParameters" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGVector", + "printedName": "CoreFoundation.CGVector", + "hasDefaultArg": true, + "usr": "c:@S@CGVector" + } + ], + "declKind": "Constructor", + "usr": "s:So24UISpringTimingParametersC8PenNavUIE16decelerationRate17frequencyResponse15initialVelocityAB14CoreFoundation7CGFloatV_AISo8CGVectorVtcfc", + "mangledName": "$sSo24UISpringTimingParametersC8PenNavUIE16decelerationRate17frequencyResponse15initialVelocityAB12CoreGraphics7CGFloatV_AISo8CGVectorVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "Convenience", + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(dampingRatio:frequencyResponse:initialVelocity:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UISpringTimingParameters", + "printedName": "UIKit.UISpringTimingParameters", + "usr": "c:objc(cs)UISpringTimingParameters" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGVector", + "printedName": "CoreFoundation.CGVector", + "hasDefaultArg": true, + "usr": "c:@S@CGVector" + } + ], + "declKind": "Constructor", + "usr": "s:So24UISpringTimingParametersC8PenNavUIE12dampingRatio17frequencyResponse15initialVelocityAB14CoreFoundation7CGFloatV_AISo8CGVectorVtcfc", + "mangledName": "$sSo24UISpringTimingParametersC8PenNavUIE12dampingRatio17frequencyResponse15initialVelocityAB12CoreGraphics7CGFloatV_AISo8CGVectorVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "Convenience", + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Convenience" + } + ], + "declKind": "Class", + "usr": "c:objc(cs)UISpringTimingParameters", + "moduleName": "UIKit", + "isOpen": true, + "intro_iOS": "10.0", + "objc_name": "UISpringTimingParameters", + "declAttributes": [ + "Preconcurrency", + "Available", + "ObjC", + "NonSendable", + "Custom", + "Dynamic" + ], + "superclassUsr": "c:objc(cs)NSObject", + "isExternal": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "CLLocationCoordinate2D", + "printedName": "CLLocationCoordinate2D", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(from:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CLLocationCoordinate2D", + "printedName": "_LocationEssentials.CLLocationCoordinate2D", + "usr": "c:@S@CLLocationCoordinate2D" + }, + { + "kind": "TypeNominal", + "name": "Decoder", + "printedName": "any Swift.Decoder", + "usr": "s:s7DecoderP" + } + ], + "declKind": "Constructor", + "usr": "s:So22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfc", + "mangledName": "$sSo22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "throwing": true, + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "encode", + "printedName": "encode(to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Encoder", + "printedName": "any Swift.Encoder", + "usr": "s:s7EncoderP" + } + ], + "declKind": "Func", + "usr": "s:So22CLLocationCoordinate2DV8PenNavUIE6encode2toys7Encoder_p_tKF", + "mangledName": "$sSo22CLLocationCoordinate2DV8PenNavUIE6encode2toys7Encoder_p_tKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "c:@S@CLLocationCoordinate2D", + "moduleName": "_LocationEssentials", + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSValue", + "printedName": "Foundation.NSValue", + "usr": "c:objc(cs)NSValue" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + }, + { + "kind": "TypeDecl", + "name": "UIImage", + "printedName": "UIImage", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(svgNamed:in:options:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bundle", + "printedName": "Foundation.Bundle", + "hasDefaultArg": true, + "usr": "c:objc(cs)NSBundle" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Constructor", + "usr": "s:So7UIImageC8PenNavUIE8svgNamed2in7optionsABSgSS_So8NSBundleCAC3SVGC7OptionsVtcfc", + "mangledName": "$sSo7UIImageC8PenNavUIE8svgNamed2in7optionsABSgSS_So8NSBundleCAC3SVGC7OptionsVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(svgData:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + } + ], + "declKind": "Constructor", + "usr": "c:@CM@PenNavUI@@objc(cs)UIImage(im)initWithSVGData:", + "mangledName": "$sSo7UIImageC8PenNavUIE7svgDataABSg10Foundation0F0V_tcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithSVGData:", + "declAttributes": [ + "Dynamic", + "Convenience", + "ObjC" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(contentsOfSVGFile:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "c:@CM@PenNavUI@@objc(cs)UIImage(im)initWithContentsOfSVGFile:", + "mangledName": "$sSo7UIImageC8PenNavUIE17contentsOfSVGFileABSgSS_tcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithContentsOfSVGFile:", + "declAttributes": [ + "Dynamic", + "Convenience", + "ObjC" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Function", + "name": "_svgNamed", + "printedName": "_svgNamed(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@@objc(cs)UIImage(cm)svgNamed:", + "mangledName": "$sSo7UIImageC8PenNavUIE9_svgNamedyABSgSSFZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "svgNamed:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "_svgNamed", + "printedName": "_svgNamed(_:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bundle", + "printedName": "Foundation.Bundle", + "usr": "c:objc(cs)NSBundle" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@@objc(cs)UIImage(cm)svgNamed:inBundle:", + "mangledName": "$sSo7UIImageC8PenNavUIE9_svgNamed_2inABSgSS_So8NSBundleCtFZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "svgNamed:inBundle:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + }, + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "declKind": "Constructor", + "usr": "s:So7UIImageC8PenNavUIEyAbC3SVGCcfc", + "mangledName": "$sSo7UIImageC8PenNavUIEyAbC3SVGCcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + } + ], + "declKind": "Class", + "usr": "c:objc(cs)UIImage", + "moduleName": "UIKit", + "isOpen": true, + "intro_iOS": "2.0", + "objc_name": "UIImage", + "declAttributes": [ + "Available", + "ObjC", + "SynthesizedProtocol", + "NonSendable", + "Sendable", + "Dynamic" + ], + "superclassUsr": "c:objc(cs)NSObject", + "isExternal": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + }, + { + "kind": "Conformance", + "name": "_ExpressibleByImageLiteral", + "printedName": "_ExpressibleByImageLiteral", + "usr": "s:s26_ExpressibleByImageLiteralP", + "mangledName": "$ss26_ExpressibleByImageLiteralP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "PoiPolygon", + "printedName": "PoiPolygon", + "declKind": "Struct", + "usr": "s:7Penguin10PoiPolygonV", + "mangledName": "$s7Penguin10PoiPolygonV", + "moduleName": "Penguin", + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "GateNodeModel", + "printedName": "GateNodeModel", + "children": [ + { + "kind": "Var", + "name": "isUpEscalator", + "printedName": "isUpEscalator", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:7Penguin13GateNodeModelC8PenNavUIE13isUpEscalatorSbvp", + "mangledName": "$s7Penguin13GateNodeModelC8PenNavUIE13isUpEscalatorSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:7Penguin13GateNodeModelC8PenNavUIE13isUpEscalatorSbvg", + "mangledName": "$s7Penguin13GateNodeModelC8PenNavUIE13isUpEscalatorSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isDownEscalator", + "printedName": "isDownEscalator", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:7Penguin13GateNodeModelC8PenNavUIE15isDownEscalatorSbvp", + "mangledName": "$s7Penguin13GateNodeModelC8PenNavUIE15isDownEscalatorSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:7Penguin13GateNodeModelC8PenNavUIE15isDownEscalatorSbvg", + "mangledName": "$s7Penguin13GateNodeModelC8PenNavUIE15isDownEscalatorSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Class", + "usr": "s:7Penguin13GateNodeModelC", + "mangledName": "$s7Penguin13GateNodeModelC", + "moduleName": "Penguin", + "declAttributes": [ + "Final" + ], + "isExternal": true, + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "NodeRepresentable", + "printedName": "NodeRepresentable", + "usr": "s:7Penguin17NodeRepresentableP", + "mangledName": "$s7Penguin17NodeRepresentableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Gnode", + "printedName": "Gnode", + "children": [ + { + "kind": "Var", + "name": "isUpEscalator", + "printedName": "isUpEscalator", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:7Penguin5GnodeC8PenNavUIE13isUpEscalatorSbvp", + "mangledName": "$s7Penguin5GnodeC8PenNavUIE13isUpEscalatorSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:7Penguin5GnodeC8PenNavUIE13isUpEscalatorSbvg", + "mangledName": "$s7Penguin5GnodeC8PenNavUIE13isUpEscalatorSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isDownEscalator", + "printedName": "isDownEscalator", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:7Penguin5GnodeC8PenNavUIE15isDownEscalatorSbvp", + "mangledName": "$s7Penguin5GnodeC8PenNavUIE15isDownEscalatorSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:7Penguin5GnodeC8PenNavUIE15isDownEscalatorSbvg", + "mangledName": "$s7Penguin5GnodeC8PenNavUIE15isDownEscalatorSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Class", + "usr": "s:7Penguin5GnodeC", + "mangledName": "$s7Penguin5GnodeC", + "moduleName": "Penguin", + "declAttributes": [ + "Final" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "NodeRepresentable", + "printedName": "NodeRepresentable", + "usr": "s:7Penguin17NodeRepresentableP", + "mangledName": "$s7Penguin17NodeRepresentableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Dictionary", + "printedName": "Dictionary", + "declKind": "Struct", + "usr": "s:SD", + "mangledName": "$sSD", + "moduleName": "Swift", + "genericSig": "<τ_0_0, τ_0_1 where τ_0_0 : Swift.Hashable>", + "sugared_genericSig": "", + "declAttributes": [ + "EagerMove", + "Frozen" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Sequence", + "printedName": "Sequence", + "children": [ + { + "kind": "TypeWitness", + "name": "Element", + "printedName": "Element", + "children": [ + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(key: τ_0_0, value: τ_0_1)", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ] + } + ] + }, + { + "kind": "TypeWitness", + "name": "Iterator", + "printedName": "Iterator", + "children": [ + { + "kind": "TypeNominal", + "name": "Iterator", + "printedName": "Swift.Dictionary<τ_0_0, τ_0_1>.Iterator", + "usr": "s:SD8IteratorV" + } + ] + } + ], + "usr": "s:ST", + "mangledName": "$sST" + }, + { + "kind": "Conformance", + "name": "Collection", + "printedName": "Collection", + "children": [ + { + "kind": "TypeWitness", + "name": "Element", + "printedName": "Element", + "children": [ + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(key: τ_0_0, value: τ_0_1)", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ] + } + ] + }, + { + "kind": "TypeWitness", + "name": "Index", + "printedName": "Index", + "children": [ + { + "kind": "TypeNominal", + "name": "Index", + "printedName": "Swift.Dictionary<τ_0_0, τ_0_1>.Index", + "usr": "s:SD5IndexV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "Iterator", + "printedName": "Iterator", + "children": [ + { + "kind": "TypeNominal", + "name": "Iterator", + "printedName": "Swift.Dictionary<τ_0_0, τ_0_1>.Iterator", + "usr": "s:SD8IteratorV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SubSequence", + "printedName": "SubSequence", + "children": [ + { + "kind": "TypeNominal", + "name": "Slice", + "printedName": "Swift.Slice<[τ_0_0 : τ_0_1]>", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[τ_0_0 : τ_0_1]", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ], + "usr": "s:SD" + } + ], + "usr": "s:s5SliceV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "Indices", + "printedName": "Indices", + "children": [ + { + "kind": "TypeNominal", + "name": "DefaultIndices", + "printedName": "Swift.DefaultIndices<[τ_0_0 : τ_0_1]>", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[τ_0_0 : τ_0_1]", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ], + "usr": "s:SD" + } + ], + "usr": "s:SI" + } + ] + } + ], + "usr": "s:Sl", + "mangledName": "$sSl" + }, + { + "kind": "Conformance", + "name": "ExpressibleByDictionaryLiteral", + "printedName": "ExpressibleByDictionaryLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "Key", + "printedName": "Key", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + } + ] + }, + { + "kind": "TypeWitness", + "name": "Value", + "printedName": "Value", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ] + } + ], + "usr": "s:s30ExpressibleByDictionaryLiteralP", + "mangledName": "$ss30ExpressibleByDictionaryLiteralP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "_HasCustomAnyHashableRepresentation", + "printedName": "_HasCustomAnyHashableRepresentation", + "usr": "s:s35_HasCustomAnyHashableRepresentationP", + "mangledName": "$ss35_HasCustomAnyHashableRepresentationP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomReflectable", + "printedName": "CustomReflectable", + "usr": "s:s17CustomReflectableP", + "mangledName": "$ss17CustomReflectableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSDictionary", + "printedName": "Foundation.NSDictionary", + "usr": "c:objc(cs)NSDictionary" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[Swift.String : Any?]", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Any?", + "children": [ + { + "kind": "TypeNominal", + "name": "ProtocolComposition", + "printedName": "Any" + } + ], + "usr": "s:Sq" + } + ], + "usr": "s:SD" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + }, + { + "kind": "Conformance", + "name": "ExpressionArgumentConvertible", + "printedName": "ExpressionArgumentConvertible", + "usr": "s:10MapboxMaps29ExpressionArgumentConvertibleP", + "mangledName": "$s10MapboxMaps29ExpressionArgumentConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Venue", + "printedName": "Venue", + "declKind": "Class", + "usr": "c:@M@Penguin@objc(cs)Venue", + "mangledName": "$s7Penguin5VenueC", + "moduleName": "Penguin", + "declAttributes": [ + "Final", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "isExternal": true, + "hasMissingDesignatedInitializers": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "CGContext", + "printedName": "CGContext", + "children": [ + { + "kind": "Function", + "name": "draw", + "printedName": "draw(_:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGRect?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGRect", + "printedName": "CoreFoundation.CGRect", + "usr": "c:@S@CGRect" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:So12CGContextRefa8PenNavUIE4draw_2inyAC3SVGC_So6CGRectVSgtF", + "mangledName": "$sSo12CGContextRefa8PenNavUIE4draw_2inyAC3SVGC_So6CGRectVSgtF", + "moduleName": "PenNavUI", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@T@CGContextRef", + "moduleName": "CoreGraphics", + "declAttributes": [ + "SynthesizedProtocol", + "ObjC", + "Dynamic" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "_CFObject", + "printedName": "_CFObject", + "usr": "s:14CoreFoundation9_CFObjectP", + "mangledName": "$s14CoreFoundation9_CFObjectP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "_CGContextInit", + "printedName": "_CGContextInit", + "usr": "s:12CoreGraphics14_CGContextInitP", + "mangledName": "$s12CoreGraphics14_CGContextInitP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "POICategory", + "printedName": "POICategory", + "declKind": "Struct", + "usr": "s:7Penguin11POICategoryV", + "mangledName": "$s7Penguin11POICategoryV", + "moduleName": "Penguin", + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + } + ], + "json_format_version": 8 + }, + "ConstValues": [ + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 509, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 521, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 638, + "length": 4, + "value": "0.33" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 697, + "length": 4, + "value": "0.33" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 786, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 798, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "IntegerLiteral", + "offset": 915, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "IntegerLiteral", + "offset": 971, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandOptimizer.swift", + "kind": "IntegerLiteral", + "offset": 4827, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandOptimizer.swift", + "kind": "IntegerLiteral", + "offset": 4895, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Element.swift", + "kind": "Dictionary", + "offset": 1423, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Formatters\/DistanceFormatter.swift", + "kind": "BooleanLiteral", + "offset": 207, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "FloatLiteral", + "offset": 1402, + "length": 4, + "value": "18.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "FloatLiteral", + "offset": 1510, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "FloatLiteral", + "offset": 1617, + "length": 4, + "value": "69.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "FloatLiteral", + "offset": 2877, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "Array", + "offset": 2939, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "Dictionary", + "offset": 3022, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "Array", + "offset": 3081, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "BooleanLiteral", + "offset": 32085, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueDetails\/VenueDetailsViewController.swift", + "kind": "Array", + "offset": 581, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueDetails\/VenueDetailsViewController.swift", + "kind": "Array", + "offset": 629, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueDetails\/VenueDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 669, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueDetails\/VenueDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 897, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "Array", + "offset": 950, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "Array", + "offset": 986, + "length": 4, + "value": "[\"\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "IntegerLiteral", + "offset": 1014, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "BooleanLiteral", + "offset": 1040, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "BooleanLiteral", + "offset": 1076, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "FloatLiteral", + "offset": 1123, + "length": 3, + "value": "0.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "IntegerLiteral", + "offset": 1166, + "length": 2, + "value": "80" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/AppleSynthesizer.swift", + "kind": "BooleanLiteral", + "offset": 164, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Path+Reversed.swift", + "kind": "Array", + "offset": 2868, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoritesCell.swift", + "kind": "Array", + "offset": 292, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Directory\/DirectoryViewController.swift", + "kind": "Array", + "offset": 464, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Directory\/DirectoryViewController.swift", + "kind": "IntegerLiteral", + "offset": 490, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Directory\/DirectoryViewController.swift", + "kind": "BooleanLiteral", + "offset": 516, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/NavigationEventType.swift", + "kind": "StringLiteral", + "offset": 159, + "length": 14, + "value": "\"shortestPath\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/NavigationEventType.swift", + "kind": "StringLiteral", + "offset": 201, + "length": 7, + "value": "\"start\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/NavigationEventType.swift", + "kind": "StringLiteral", + "offset": 234, + "length": 5, + "value": "\"end\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/NavigationEventType.swift", + "kind": "StringLiteral", + "offset": 270, + "length": 7, + "value": "\"reach\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.swift", + "kind": "IntegerLiteral", + "offset": 1203, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.swift", + "kind": "IntegerLiteral", + "offset": 1470, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/VenueInfoResponse.swift", + "kind": "StringLiteral", + "offset": 309, + "length": 20, + "value": "\"GetVenueInfoResult\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/VenueInfoResponse.swift", + "kind": "StringLiteral", + "offset": 1582, + "length": 14, + "value": "\"scheduleList\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2764, + "length": 3, + "value": "\"M\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2800, + "length": 3, + "value": "\"m\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2828, + "length": 3, + "value": "\"L\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2864, + "length": 3, + "value": "\"l\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2898, + "length": 3, + "value": "\"H\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2940, + "length": 3, + "value": "\"h\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2972, + "length": 3, + "value": "\"V\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3012, + "length": 3, + "value": "\"v\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3041, + "length": 3, + "value": "\"C\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3078, + "length": 3, + "value": "\"c\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3113, + "length": 3, + "value": "\"S\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3156, + "length": 3, + "value": "\"s\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3189, + "length": 3, + "value": "\"Q\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3230, + "length": 3, + "value": "\"q\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3269, + "length": 3, + "value": "\"T\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3316, + "length": 3, + "value": "\"t\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3343, + "length": 3, + "value": "\"A\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3378, + "length": 3, + "value": "\"a\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3407, + "length": 3, + "value": "\"Z\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3441, + "length": 3, + "value": "\"z\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/NodeSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 340, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/NodeSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 937, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/InstrinsicLabel.swift", + "kind": "IntegerLiteral", + "offset": 212, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/InstrinsicLabel.swift", + "kind": "IntegerLiteral", + "offset": 216, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/RouteOptions\/RouteOptionsViewController.swift", + "kind": "IntegerLiteral", + "offset": 2951, + "length": 3, + "value": "320" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/RouteOptions\/RouteOptionsViewController.swift", + "kind": "IntegerLiteral", + "offset": 2957, + "length": 3, + "value": "420" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "IntegerLiteral", + "offset": 662, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 782, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "Array", + "offset": 825, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 949, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 4985, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/GateSelector\/GateSelectorViewController.swift", + "kind": "Array", + "offset": 330, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Route\/RouteDirection.swift", + "kind": "BooleanLiteral", + "offset": 293, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/DownloadManager.swift", + "kind": "IntegerLiteral", + "offset": 1261, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/DownloadManager.swift", + "kind": "StringLiteral", + "offset": 1414, + "length": 10, + "value": "\"download\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/LocationDetectionStatus.swift", + "kind": "IntegerLiteral", + "offset": 182, + "length": 13, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/LocationDetectionStatus.swift", + "kind": "IntegerLiteral", + "offset": 205, + "length": 16, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "StringLiteral", + "offset": 985, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "StringLiteral", + "offset": 1019, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "StringLiteral", + "offset": 1054, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "BooleanLiteral", + "offset": 1085, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "Array", + "offset": 1212, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "Array", + "offset": 1250, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "BooleanLiteral", + "offset": 1453, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "StringLiteral", + "offset": 540, + "length": 61, + "value": "\"https:\/\/texttospeech.googleapis.com\/v1beta1\/text:synthesize\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "Array", + "offset": 732, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "FloatLiteral", + "offset": 822, + "length": 4, + "value": "0.89" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "FloatLiteral", + "offset": 858, + "length": 4, + "value": "-4.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "StringLiteral", + "offset": 889, + "length": 38, + "value": "\"small-bluetooth-speaker-class-device\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "BooleanLiteral", + "offset": 995, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "Dictionary", + "offset": 2610, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/FloorsManager.swift", + "kind": "Array", + "offset": 220, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Array", + "offset": 7523, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7567, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7611, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7660, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7720, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7767, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/RoutePlanner\/RoutePlannerViewController.swift", + "kind": "BooleanLiteral", + "offset": 1141, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/RoutePlanner\/RoutePlannerViewController.swift", + "kind": "IntegerLiteral", + "offset": 1610, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 137, + "length": 7, + "value": "\"Right\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 168, + "length": 11, + "value": "\"VeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 202, + "length": 12, + "value": "\"SharpRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 235, + "length": 6, + "value": "\"Left\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 264, + "length": 10, + "value": "\"VeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 296, + "length": 11, + "value": "\"SharpLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 336, + "length": 10, + "value": "\"Straight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 202, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 206, + "length": 2, + "value": "30" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 211, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 234, + "length": 4, + "value": "1000" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "StringLiteral", + "offset": 673, + "length": 27, + "value": "\"chevron.right.circle.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "StringLiteral", + "offset": 703, + "length": 26, + "value": "\"chevron.left.circle.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 906, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/Calibrate\/CalibrateMessage.swift", + "kind": "FloatLiteral", + "offset": 384, + "length": 4, + "value": "20.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "Array", + "offset": 723, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "Array", + "offset": 763, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "IntegerLiteral", + "offset": 796, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 916, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "Array", + "offset": 959, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 1130, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 6058, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "IntegerLiteral", + "offset": 2461, + "length": 6, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "IntegerLiteral", + "offset": 2481, + "length": 5, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "IntegerLiteral", + "offset": 2719, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "IntegerLiteral", + "offset": 2752, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "BooleanLiteral", + "offset": 6620, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/FavoritesManager.swift", + "kind": "Array", + "offset": 493, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/FavoritesManager.swift", + "kind": "BooleanLiteral", + "offset": 1293, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/FavoritesManager.swift", + "kind": "BooleanLiteral", + "offset": 4715, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.PresentationAttributes.swift", + "kind": "StringLiteral", + "offset": 2942, + "length": 3, + "value": "\" \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ThemeManager.swift", + "kind": "Array", + "offset": 853, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ThemeManager.swift", + "kind": "Array", + "offset": 906, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ThemeManager.swift", + "kind": "Array", + "offset": 949, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CommandLine.Configuration.swift", + "kind": "IntegerLiteral", + "offset": 7909, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CommandLine.Configuration.swift", + "kind": "IntegerLiteral", + "offset": 7914, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CommandLine.Configuration.swift", + "kind": "IntegerLiteral", + "offset": 7961, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CommandLine.Configuration.swift", + "kind": "IntegerLiteral", + "offset": 7966, + "length": 1, + "value": "9" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/FloatingPanelExtensions.swift", + "kind": "FloatLiteral", + "offset": 2765, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/FloatingPanelExtensions.swift", + "kind": "FloatLiteral", + "offset": 2797, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "Array", + "offset": 528, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "Array", + "offset": 553, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "IntegerLiteral", + "offset": 929, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "IntegerLiteral", + "offset": 1030, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "IntegerLiteral", + "offset": 1487, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "Array", + "offset": 3523, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "BooleanLiteral", + "offset": 3556, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "Array", + "offset": 3587, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "BooleanLiteral", + "offset": 14096, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Favorites\/FavoritesViewController.swift", + "kind": "Array", + "offset": 320, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Favorites\/FavoritesViewController.swift", + "kind": "StringLiteral", + "offset": 474, + "length": 8, + "value": "\"remove\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Favorites\/FavoritesViewController.swift", + "kind": "IntegerLiteral", + "offset": 670, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 202, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 242, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 280, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "FloatLiteral", + "offset": 359, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "FloatLiteral", + "offset": 379, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 477, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 483, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/FileDownloader.swift", + "kind": "Array", + "offset": 668, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/APIs\/PenApi.swift", + "kind": "StringLiteral", + "offset": 178, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/APIs\/PenApi.swift", + "kind": "StringLiteral", + "offset": 203, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/APIs\/PenApi.swift", + "kind": "StringLiteral", + "offset": 232, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/APIs\/PenApi.swift", + "kind": "StringLiteral", + "offset": 265, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/AlertAction.swift", + "kind": "BooleanLiteral", + "offset": 316, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "StringLiteral", + "offset": 806, + "length": 15, + "value": "\"reached_to %@\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "StringLiteral", + "offset": 867, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 1016, + "length": 2, + "value": "90" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 1037, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 1076, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 1081, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4435, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4708, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4795, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4907, + "length": 3, + "value": "624" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4956, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 5067, + "length": 3, + "value": "290" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 344, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 375, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "StringLiteral", + "offset": 398, + "length": 4, + "value": "\"-1\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "StringLiteral", + "offset": 423, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "StringLiteral", + "offset": 445, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 482, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 509, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 768, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 1084, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 1213, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 25236, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 136, + "length": 31, + "value": "\"DataAPI.svc\/SetNavigationRate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 204, + "length": 47, + "value": "\"PathAPI.svc\/getVenueGatesShortestPathDistance\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 279, + "length": 29, + "value": "\"DataAPI.svc\/GetPaletteColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 330, + "length": 19, + "value": "\"company\/-1\/colors\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 370, + "length": 22, + "value": "\"DataAPI.svc\/GetFonts\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 415, + "length": 11, + "value": "\"icons\/poi\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 453, + "length": 14, + "value": "\"favorite\/set\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 493, + "length": 27, + "value": "\"DataAPI.svc\/GetVenueCards\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 550, + "length": 32, + "value": "\"DataAPI.svc\/getPoIInfoByFilter\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 608, + "length": 29, + "value": "\"DataAPI.svc\/GetSearchDataV2\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 663, + "length": 27, + "value": "\"DataAPI.svc\/GetCategories\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 715, + "length": 14, + "value": "\"Poi\/Amenites\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 754, + "length": 14, + "value": "\"favorite\/get\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 798, + "length": 17, + "value": "\"favorite\/delete\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 844, + "length": 17, + "value": "\"favorite\/update\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 885, + "length": 11, + "value": "\"path\/trip\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 937, + "length": 11, + "value": "\"sharedurl\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 977, + "length": 27, + "value": "\"DataAPI.svc\/GetCampusInfo\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1032, + "length": 26, + "value": "\"DataAPI.svc\/GetVenueInfo\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1084, + "length": 24, + "value": "\"DataAPI.svc\/getPoIById\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1140, + "length": 27, + "value": "\"DataAPI.svc\/getPoIByRefId\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1196, + "length": 27, + "value": "\"DataAPI.svc\/GetVenuesInfo\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1247, + "length": 27, + "value": "\"DataAPI.svc\/getAdsOnFloor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1297, + "length": 26, + "value": "\"DataAPI.svc\/getAdsOnEdge\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1352, + "length": 17, + "value": "\"images\/campaign\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1400, + "length": 29, + "value": "\"company\/log\/navigationEvent\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1470, + "length": 17, + "value": "\"company\/log\/LBM\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1518, + "length": 32, + "value": "\"DataAPI.svc\/savePenNavPosition\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1579, + "length": 25, + "value": "\"DataAPI.svc\/GetCampuses\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1627, + "length": 13, + "value": "\"map\/objects\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/GatesManager.swift", + "kind": "Array", + "offset": 224, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/FloorSelectorViewController.swift", + "kind": "Array", + "offset": 650, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/FloorSelectorViewController.swift", + "kind": "Array", + "offset": 679, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/CustomFlowLayout.swift", + "kind": "BooleanLiteral", + "offset": 242, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITapGestureRecognizer.swift", + "kind": "IntegerLiteral", + "offset": 162, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetPoIByIdResponse.swift", + "kind": "StringLiteral", + "offset": 5404, + "length": 10, + "value": "\"imageUrl\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetPoIByIdResponse.swift", + "kind": "StringLiteral", + "offset": 5671, + "length": 11, + "value": "\"openState\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetPoIByIdResponse.swift", + "kind": "StringLiteral", + "offset": 5701, + "length": 13, + "value": "\"closedState\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetPoIByIdResponse.swift", + "kind": "StringLiteral", + "offset": 5738, + "length": 18, + "value": "\"closedTodayState\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Logging.swift", + "kind": "StringLiteral", + "offset": 114, + "length": 12, + "value": "\"%{public}@\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Logging.swift", + "kind": "StringLiteral", + "offset": 388, + "length": 26, + "value": "\"com.scenee.FloatingPanel\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Logging.swift", + "kind": "StringLiteral", + "offset": 441, + "length": 15, + "value": "\"FloatingPanel\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Path+Bounds.swift", + "kind": "IntegerLiteral", + "offset": 6349, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Path+Bounds.swift", + "kind": "IntegerLiteral", + "offset": 6412, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "FloatLiteral", + "offset": 302, + "length": 3, + "value": "0.8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "FloatLiteral", + "offset": 340, + "length": 5, + "value": "0.125" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "FloatLiteral", + "offset": 385, + "length": 4, + "value": "0.04" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "FloatLiteral", + "offset": 425, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "BooleanLiteral", + "offset": 581, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "IntegerLiteral", + "offset": 3503, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/LegCell\/LegCell.swift", + "kind": "IntegerLiteral", + "offset": 589, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 458, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "IntegerLiteral", + "offset": 514, + "length": 3, + "value": "120" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "IntegerLiteral", + "offset": 559, + "length": 2, + "value": "55" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "IntegerLiteral", + "offset": 624, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "IntegerLiteral", + "offset": 668, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "Array", + "offset": 583, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "Array", + "offset": 637, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "Array", + "offset": 687, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "Array", + "offset": 736, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "IntegerLiteral", + "offset": 994, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "IntegerLiteral", + "offset": 1018, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "IntegerLiteral", + "offset": 1087, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "IntegerLiteral", + "offset": 1111, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 3968, + "length": 4, + "value": "\"id\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 4010, + "length": 7, + "value": "\"style\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 4084, + "length": 7, + "value": "\"class\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 17532, + "length": 10, + "value": "\".\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 17541, + "length": 1, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 17663, + "length": 10, + "value": "\"#\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 17672, + "length": 1, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "IntegerLiteral", + "offset": 17767, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/BadgeView.swift", + "kind": "IntegerLiteral", + "offset": 186, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/BadgeView.swift", + "kind": "IntegerLiteral", + "offset": 226, + "length": 2, + "value": "25" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Builder.swift", + "kind": "Array", + "offset": 2925, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "StringLiteral", + "offset": 168, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "Array", + "offset": 244, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "Array", + "offset": 275, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "StringLiteral", + "offset": 454, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "Array", + "offset": 521, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "Array", + "offset": 545, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "BooleanLiteral", + "offset": 1551, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "BooleanLiteral", + "offset": 1780, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "StringLiteral", + "offset": 2316, + "length": 10, + "value": "\"distance\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "StringLiteral", + "offset": 2348, + "length": 11, + "value": "\"bestMatch\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Gradient.swift", + "kind": "Array", + "offset": 2307, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Gradient.swift", + "kind": "Array", + "offset": 2588, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 495, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 523, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 646, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 768, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 802, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 833, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "FloatLiteral", + "offset": 1000, + "length": 5, + "value": "134.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1104, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1191, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1405, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1547, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1580, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2079, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "FloatLiteral", + "offset": 2117, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2854, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2864, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2876, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2887, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 2930, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 8832, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 9316, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 10293, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 13057, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 13261, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 14022, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 15462, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 16673, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 17801, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 52907, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Behavior.swift", + "kind": "FloatLiteral", + "offset": 3499, + "length": 5, + "value": "0.001" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Behavior.swift", + "kind": "FloatLiteral", + "offset": 3570, + "length": 3, + "value": "0.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Behavior.swift", + "kind": "FloatLiteral", + "offset": 4011, + "length": 3, + "value": "5.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Repositories\/PenNavStyleRepository.swift", + "kind": "StringLiteral", + "offset": 183, + "length": 6, + "value": "\"Font\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Repositories\/PenNavStyleRepository.swift", + "kind": "StringLiteral", + "offset": 207, + "length": 7, + "value": "\"Color\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/FeatureIdentifiers.swift", + "kind": "StringLiteral", + "offset": 184, + "length": 16, + "value": "\"selected-place\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/FeatureIdentifiers.swift", + "kind": "StringLiteral", + "offset": 245, + "length": 19, + "value": "\"destination-place\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/FeatureIdentifiers.swift", + "kind": "StringLiteral", + "offset": 310, + "length": 20, + "value": "\"location-indicator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/FeatureIdentifiers.swift", + "kind": "StringLiteral", + "offset": 362, + "length": 16, + "value": "\"maneuver-arrow\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3202, + "length": 3, + "value": "\"g\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3243, + "length": 6, + "value": "\"line\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3288, + "length": 8, + "value": "\"circle\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3337, + "length": 9, + "value": "\"ellipse\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3388, + "length": 6, + "value": "\"rect\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3433, + "length": 10, + "value": "\"polyline\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3486, + "length": 9, + "value": "\"polygon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3537, + "length": 6, + "value": "\"path\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3582, + "length": 6, + "value": "\"text\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3705, + "length": 3, + "value": "\"a\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3831, + "length": 5, + "value": "\"use\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3874, + "length": 8, + "value": "\"switch\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3921, + "length": 7, + "value": "\"image\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 10223, + "length": 4, + "value": "\"id\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 10269, + "length": 7, + "value": "\"class\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/HourScheduleData.swift", + "kind": "Array", + "offset": 173, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/HourScheduleData.swift", + "kind": "BooleanLiteral", + "offset": 203, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/HourScheduleData.swift", + "kind": "BooleanLiteral", + "offset": 235, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/HourScheduleData.swift", + "kind": "BooleanLiteral", + "offset": 268, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Path.swift", + "kind": "Array", + "offset": 1279, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 229, + "length": 4, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 243, + "length": 6, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 259, + "length": 5, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 895, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 917, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 1369, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 1392, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 1414, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 359, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "FloatLiteral", + "offset": 2136, + "length": 4, + "value": "37.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 2150, + "length": 2, + "value": "30" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 2259, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 2409, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 2420, + "length": 1, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "FloatLiteral", + "offset": 2506, + "length": 3, + "value": "3.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "FloatLiteral", + "offset": 2621, + "length": 3, + "value": "4.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Categories\/CategoriesViewController.swift", + "kind": "Array", + "offset": 257, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CampusDetails\/CampusDetailsViewController.swift", + "kind": "Array", + "offset": 745, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CampusDetails\/CampusDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 788, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CampusDetails\/CampusDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 831, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 153, + "length": 5, + "value": "\"poi\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 176, + "length": 7, + "value": "\"venue\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 208, + "length": 9, + "value": "\"parking\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 245, + "length": 18, + "value": "\"current-location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 284, + "length": 10, + "value": "\"location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 320, + "length": 15, + "value": "\"referencedPOI\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 354, + "length": 8, + "value": "\"campus\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresenter.swift", + "kind": "BooleanLiteral", + "offset": 497, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 763, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 816, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 4482, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 4509, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 4848, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 4875, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 8177, + "length": 3, + "value": "100" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 8202, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "StringLiteral", + "offset": 8233, + "length": 9, + "value": "\"Poppins\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 8250, + "length": 2, + "value": "14" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 8277, + "length": 2, + "value": "14" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UIControl.swift", + "kind": "IntegerLiteral", + "offset": 149, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.SAXParser.swift", + "kind": "StringLiteral", + "offset": 1533, + "length": 28, + "value": "\"http:\/\/www.w3.org\/2000\/svg\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.SAXParser.swift", + "kind": "Dictionary", + "offset": 2851, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "BooleanLiteral", + "offset": 338, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "BooleanLiteral", + "offset": 362, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "BooleanLiteral", + "offset": 391, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "FloatLiteral", + "offset": 447, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "FloatLiteral", + "offset": 604, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "IntegerLiteral", + "offset": 650, + "length": 2, + "value": "26" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "BooleanLiteral", + "offset": 3692, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 146, + "length": 5, + "value": "\"map\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 172, + "length": 10, + "value": "\"deepLink\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 201, + "length": 8, + "value": "\"search\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 231, + "length": 11, + "value": "\"directory\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 266, + "length": 13, + "value": "\"referenceId\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/EdgesManager.swift", + "kind": "Array", + "offset": 215, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Styles\/ColorsResponse.swift", + "kind": "StringLiteral", + "offset": 364, + "length": 9, + "value": "\"Polygon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Styles\/ColorsResponse.swift", + "kind": "StringLiteral", + "offset": 401, + "length": 9, + "value": "\"Palette\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "IntegerLiteral", + "offset": 6810, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "Array", + "offset": 6826, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "StringLiteral", + "offset": 6889, + "length": 10, + "value": "\"Warning:\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "StringLiteral", + "offset": 6901, + "length": 38, + "value": "\"clip-path unsupported in SF Symbols.\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "Array", + "offset": 6981, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "StringLiteral", + "offset": 7051, + "length": 10, + "value": "\"Warning:\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "StringLiteral", + "offset": 7063, + "length": 33, + "value": "\"mask unsupported in SF Symbols.\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "Array", + "offset": 7138, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "IntegerLiteral", + "offset": 19538, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "IntegerLiteral", + "offset": 19543, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetVenueGatesDistancesResponse.swift", + "kind": "BooleanLiteral", + "offset": 443, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetVenueGatesDistancesResponse.swift", + "kind": "BooleanLiteral", + "offset": 479, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2084, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2090, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2096, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2102, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2109, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2116, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/FloorSelectorSection.swift", + "kind": "IntegerLiteral", + "offset": 198, + "length": 6, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/PlaceImages\/PlaceImagesCell.swift", + "kind": "Array", + "offset": 245, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/PlaceImages\/PlaceImagesCell.swift", + "kind": "Array", + "offset": 286, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/PlaceImages\/PlaceImagesCell.swift", + "kind": "Array", + "offset": 370, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 209, + "length": 27, + "value": "\"dismissPenNavNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 304, + "length": 32, + "value": "\"oneSecondDidElapseNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 411, + "length": 39, + "value": "\"networkInterfaceDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 522, + "length": 36, + "value": "\"locationStateDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 631, + "length": 37, + "value": "\"bluetoothStateDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 743, + "length": 39, + "value": "\"locationAccuracyDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 857, + "length": 39, + "value": "\"connectionStatusDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 977, + "length": 45, + "value": "\"directionsAvailabilityDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 1103, + "length": 45, + "value": "\"locationDetectionStateDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/TagsViewController\/TagsViewController.swift", + "kind": "Array", + "offset": 399, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/TagsViewController\/TagsViewController.swift", + "kind": "Array", + "offset": 474, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/TagsViewController\/TagsViewController.swift", + "kind": "BooleanLiteral", + "offset": 509, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/GoodToKnowSectionCell\/AmenitiesDetailTableViewCell.swift", + "kind": "BooleanLiteral", + "offset": 419, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/GoodToKnowSectionCell\/AmenitiesDetailTableViewCell.swift", + "kind": "Array", + "offset": 532, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/GoodToKnowSectionCell\/AmenitiesDetailTableViewCell.swift", + "kind": "IntegerLiteral", + "offset": 559, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/GoodToKnowSectionCell\/AmenitiesDetailTableViewCell.swift", + "kind": "IntegerLiteral", + "offset": 599, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/ImageStorage.swift", + "kind": "Dictionary", + "offset": 591, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/ImageStorage.swift", + "kind": "StringLiteral", + "offset": 644, + "length": 35, + "value": "\"com.penNav.imageStorage.taskQueue\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.LinearGradient.swift", + "kind": "FloatLiteral", + "offset": 1900, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/ConnectedVenueCell.swift", + "kind": "IntegerLiteral", + "offset": 827, + "length": 2, + "value": "64" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/ConnectedVenueCell.swift", + "kind": "Array", + "offset": 902, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/ConnectedVenueCell.swift", + "kind": "BooleanLiteral", + "offset": 968, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UIView.swift", + "kind": "IntegerLiteral", + "offset": 3359, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "FloatLiteral", + "offset": 237, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "FloatLiteral", + "offset": 284, + "length": 4, + "value": "0.08" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "FloatLiteral", + "offset": 337, + "length": 4, + "value": "0.04" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "FloatLiteral", + "offset": 385, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "BooleanLiteral", + "offset": 636, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.RadialGradient.swift", + "kind": "FloatLiteral", + "offset": 2001, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Geofence\/LocationBasedMessagesManager.swift", + "kind": "Array", + "offset": 456, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Geofence\/LocationBasedMessagesManager.swift", + "kind": "Array", + "offset": 499, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Geofence\/LocationBasedMessagesManager.swift", + "kind": "Array", + "offset": 544, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Geofence\/LocationBasedMessagesManager.swift", + "kind": "Array", + "offset": 588, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 393, + "length": 11, + "value": "\"DayNumber\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 436, + "length": 13, + "value": "\"OpeningTime\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 481, + "length": 13, + "value": "\"ClosingTime\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 521, + "length": 8, + "value": "\"OffDay\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 748, + "length": 10, + "value": "\"imageUrl\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 810, + "length": 14, + "value": "\"scheduleList\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2831, + "length": 9, + "value": "\"regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2859, + "length": 8, + "value": "\"medium\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2888, + "length": 10, + "value": "\"semiBold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2944, + "length": 17, + "value": "\"Poppins-Regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2980, + "length": 16, + "value": "\"Poppins-Medium\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 3017, + "length": 18, + "value": "\"Poppins-SemiBold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 3223, + "length": 20, + "value": "\"Alexandria-Regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 3262, + "length": 19, + "value": "\"Alexandria-Medium\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 3302, + "length": 21, + "value": "\"Alexandria-SemiBold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/GeofenceManager.swift", + "kind": "Array", + "offset": 259, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Date+Extension.swift", + "kind": "StringLiteral", + "offset": 1539, + "length": 8, + "value": "\"h:mm a\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "BooleanLiteral", + "offset": 256, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "IntegerLiteral", + "offset": 378, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "IntegerLiteral", + "offset": 384, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1179, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1191, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1352, + "length": 4, + "value": "0.33" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1463, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1475, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "IntegerLiteral", + "offset": 1636, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "BooleanLiteral", + "offset": 1078, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "BooleanLiteral", + "offset": 2116, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "IntegerLiteral", + "offset": 2145, + "length": 2, + "value": "60" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "IntegerLiteral", + "offset": 2150, + "length": 2, + "value": "60" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "StringLiteral", + "offset": 2193, + "length": 5, + "value": "\"min\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "StringLiteral", + "offset": 2266, + "length": 4, + "value": "\"hr\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "IntegerLiteral", + "offset": 2950, + "length": 3, + "value": "112" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "IntegerLiteral", + "offset": 3150, + "length": 3, + "value": "192" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/String+Extension.swift", + "kind": "StringLiteral", + "offset": 5520, + "length": 8, + "value": "\"h:mm a\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "IntegerLiteral", + "offset": 184, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "IntegerLiteral", + "offset": 219, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "StringLiteral", + "offset": 404, + "length": 14, + "value": "\"chevron.left\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "BooleanLiteral", + "offset": 611, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "BooleanLiteral", + "offset": 696, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "BooleanLiteral", + "offset": 782, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Repositories\/TableUpdateRespository.swift", + "kind": "StringLiteral", + "offset": 190, + "length": 13, + "value": "\"CachedVenue\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Repositories\/TableUpdateRespository.swift", + "kind": "StringLiteral", + "offset": 319, + "length": 22, + "value": "\"1\/1\/2001 01:00:00 AM\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Helpers\/RoutePathDrawingHelper.swift", + "kind": "BooleanLiteral", + "offset": 16348, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 376, + "length": 4, + "value": "17.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 400, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 467, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 491, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 582, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 844, + "length": 4, + "value": "12.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 868, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 935, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 959, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 1050, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 1309, + "length": 4, + "value": "17.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 1333, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 1400, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 1424, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 1515, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 1774, + "length": 2, + "value": "17" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 1796, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 1863, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 1887, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 1978, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 2243, + "length": 4, + "value": "12.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 2273, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 2297, + "length": 45, + "value": "[\"Poppins SemiBold\", \"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 2362, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 2475, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 2742, + "length": 4, + "value": "12.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 2766, + "length": 45, + "value": "[\"Poppins SemiBold\", \"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 2831, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 2944, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 3213, + "length": 4, + "value": "14.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 3242, + "length": 6, + "value": "[1, 2]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 3553, + "length": 54, + "value": "[(12, 4.0), (16, 5.5), (18, 6.5), (19, 8), (19.5, 10)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 3932, + "length": 56, + "value": "[(12, 7.0), (16, 7.5), (18, 8.5), (19, 9.5), (19.5, 11)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 4317, + "length": 54, + "value": "[(12, 4.0), (16, 5.5), (18, 6.5), (19, 8), (19.5, 10)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 4693, + "length": 54, + "value": "[(12, 4.0), (16, 5.5), (18, 6.5), (19, 8), (19.5, 10)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 5090, + "length": 56, + "value": "[(12, 7.0), (16, 7.5), (18, 8.5), (19, 9.5), (19.5, 11)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 5485, + "length": 56, + "value": "[(12, 7.0), (16, 7.5), (18, 8.5), (19, 9.5), (19.5, 11)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 5820, + "length": 4, + "value": "14.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 6116, + "length": 4, + "value": "14.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 6388, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 6682, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 6952, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 7247, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 7539, + "length": 4, + "value": "16.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 7847, + "length": 4, + "value": "16.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 8134, + "length": 4, + "value": "16.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 8164, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 8188, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 8301, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 8556, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 8844, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 9123, + "length": 4, + "value": "17.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 9153, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 9178, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 9291, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 9585, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 9615, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 9639, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 9752, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 10048, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 10078, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 10103, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 10216, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 10500, + "length": 4, + "value": "17.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 10805, + "length": 4, + "value": "17.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 11098, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 11122, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 11235, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 11529, + "length": 25, + "value": "[\"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 11574, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 11687, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 11990, + "length": 25, + "value": "[\"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 12035, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 12148, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 12460, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 12484, + "length": 25, + "value": "[\"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 12529, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 12642, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 12907, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 13166, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 13233, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 13257, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 13320, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 13352, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 13412, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 13442, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 13473, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 16047, + "length": 4, + "value": "12.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 16079, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 16114, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/PlaceholderEnabledTextView.swift", + "kind": "StringLiteral", + "offset": 386, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 151, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 182, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 213, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 244, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 327, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 250, + "length": 21, + "value": "\"getAdsOnFloorResult\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 414, + "length": 20, + "value": "\"getAdsOnEdgeResult\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1128, + "length": 4, + "value": "\"ID\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1153, + "length": 6, + "value": "\"Name\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1187, + "length": 13, + "value": "\"Description\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1222, + "length": 8, + "value": "\"PoI_ID\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1254, + "length": 10, + "value": "\"PoI_Name\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1290, + "length": 11, + "value": "\"StartDate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1325, + "length": 9, + "value": "\"EndDate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1359, + "length": 10, + "value": "\"Location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1395, + "length": 11, + "value": "\"isAllTime\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1427, + "length": 6, + "value": "\"Icon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1455, + "length": 7, + "value": "\"phone\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1484, + "length": 7, + "value": "\"email\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1515, + "length": 9, + "value": "\"website\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/ImageIds.swift", + "kind": "StringLiteral", + "offset": 166, + "length": 30, + "value": "\"location-indicator-top-image\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/ImageIds.swift", + "kind": "StringLiteral", + "offset": 250, + "length": 39, + "value": "\"selected-location-indicator-top-image\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/ImageIds.swift", + "kind": "StringLiteral", + "offset": 339, + "length": 34, + "value": "\"location-indicator-bearing-image\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "Array", + "offset": 218, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "Array", + "offset": 323, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "Array", + "offset": 357, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "Array", + "offset": 399, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "BooleanLiteral", + "offset": 3254, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "BooleanLiteral", + "offset": 4620, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Log\/PIAnalyticsManager.swift", + "kind": "StringLiteral", + "offset": 723, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Utilities\/PairedSequence.swift", + "kind": "BooleanLiteral", + "offset": 3345, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Toast\/ToastManager.swift", + "kind": "Array", + "offset": 278, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Toast\/ToastManager.swift", + "kind": "Array", + "offset": 331, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchBar\/SearchBar.swift", + "kind": "BooleanLiteral", + "offset": 381, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchBar\/SearchBar.swift", + "kind": "BooleanLiteral", + "offset": 522, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/UIImage+Image.swift", + "kind": "IntegerLiteral", + "offset": 2792, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/UIImage+Image.swift", + "kind": "IntegerLiteral", + "offset": 3368, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/UIImage+Image.swift", + "kind": "IntegerLiteral", + "offset": 3684, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/UIImage+Image.swift", + "kind": "IntegerLiteral", + "offset": 3725, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/General\/Constants.swift", + "kind": "IntegerLiteral", + "offset": 166, + "length": 2, + "value": "40" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 156, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 167, + "length": 20, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 197, + "length": 8, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 215, + "length": 9, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 234, + "length": 15, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 259, + "length": 22, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 291, + "length": 13, + "value": "7" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 314, + "length": 17, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 341, + "length": 12, + "value": "9" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Pattern.swift", + "kind": "Array", + "offset": 1493, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.SVG.swift", + "kind": "Dictionary", + "offset": 2587, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/ReroutingView\/BouncingDotsActivityIndicator.swift", + "kind": "IntegerLiteral", + "offset": 255, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/SelectionManager.swift", + "kind": "BooleanLiteral", + "offset": 456, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/SelectionManager.swift", + "kind": "BooleanLiteral", + "offset": 486, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "Array", + "offset": 1211, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "Array", + "offset": 1282, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 1369, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1471, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1514, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1546, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1576, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1713, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1794, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1829, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1857, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "Array", + "offset": 2346, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "StringLiteral", + "offset": 2375, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2401, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2430, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2467, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2501, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2536, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2571, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2601, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2636, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2671, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "StringLiteral", + "offset": 2767, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2798, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2825, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2883, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2963, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2991, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3171, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3217, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "FloatLiteral", + "offset": 3250, + "length": 4, + "value": "25.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 3303, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3362, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3372, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3384, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3395, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3824, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 5142, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 5176, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 15150, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 23887, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 37072, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 43635, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 44343, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 56207, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 73269, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 78630, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.swift", + "kind": "Array", + "offset": 1485, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.swift", + "kind": "IntegerLiteral", + "offset": 1690, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.swift", + "kind": "IntegerLiteral", + "offset": 1748, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/AbsoluteInsetDrivenLayout.swift", + "kind": "IntegerLiteral", + "offset": 899, + "length": 2, + "value": "69" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/MenuViewController.swift", + "kind": "Array", + "offset": 225, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Attributes.swift", + "kind": "Array", + "offset": 1702, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresentable.swift", + "kind": "BooleanLiteral", + "offset": 1703, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresentable.swift", + "kind": "BooleanLiteral", + "offset": 1726, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresentable.swift", + "kind": "BooleanLiteral", + "offset": 2078, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresentable.swift", + "kind": "BooleanLiteral", + "offset": 2110, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 937, + "length": 82, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 1176, + "length": 6, + "value": "\"full\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "IntegerLiteral", + "offset": 1191, + "length": 4, + "value": "1000" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 1349, + "length": 6, + "value": "\"half\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "IntegerLiteral", + "offset": 1364, + "length": 3, + "value": "500" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 1518, + "length": 5, + "value": "\"tip\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "IntegerLiteral", + "offset": 1532, + "length": 3, + "value": "100" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 1677, + "length": 8, + "value": "\"hidden\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "IntegerLiteral", + "offset": 1694, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/AsynchronousOperation.swift", + "kind": "BooleanLiteral", + "offset": 946, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/AsynchronousOperation.swift", + "kind": "BooleanLiteral", + "offset": 1030, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/AsynchronousOperation.swift", + "kind": "BooleanLiteral", + "offset": 1467, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "BooleanLiteral", + "offset": 523, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 735, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 748, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 841, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "IntegerLiteral", + "offset": 962, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "IntegerLiteral", + "offset": 1088, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 1693, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 2329, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 2825, + "length": 3, + "value": "6.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 2997, + "length": 4, + "value": "36.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 3219, + "length": 4, + "value": "36.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 3233, + "length": 3, + "value": "5.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 4682, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 8962, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 9085, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 9214, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 9340, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "IntegerLiteral", + "offset": 10606, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "Array", + "offset": 10345, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "BooleanLiteral", + "offset": 10715, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "IntegerLiteral", + "offset": 352, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "IntegerLiteral", + "offset": 364, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "IntegerLiteral", + "offset": 484, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "IntegerLiteral", + "offset": 496, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 739, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 778, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 1015, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 17661, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 18367, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Language\/LanguageManager.swift", + "kind": "StringLiteral", + "offset": 734, + "length": 4, + "value": "\"en\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Language\/LanguageManager.swift", + "kind": "StringLiteral", + "offset": 757, + "length": 4, + "value": "\"ar\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 296, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "StringLiteral", + "offset": 450, + "length": 11, + "value": "\"star.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 544, + "length": 1, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 550, + "length": 1, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 669, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 789, + "length": 2, + "value": "-3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 804, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 898, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 912, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 980, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 995, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 1095, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 1144, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 1180, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UIColor.swift", + "kind": "FloatLiteral", + "offset": 2055, + "length": 4, + "value": "20.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 358, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 3313, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 3354, + "length": 2, + "value": "35" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 3519, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "StringLiteral", + "offset": 3795, + "length": 17, + "value": "\"Poppins-Regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 3820, + "length": 4, + "value": "16.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 3976, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 4080, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "BooleanLiteral", + "offset": 4200, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Directory\/DirectoryCell.swift", + "kind": "IntegerLiteral", + "offset": 321, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Directory\/DirectoryCell.swift", + "kind": "IntegerLiteral", + "offset": 334, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetCategoryResponse.swift", + "kind": "StringLiteral", + "offset": 244, + "length": 21, + "value": "\"GetCategoriesResult\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 209, + "length": 16, + "value": "\"base_url_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 260, + "length": 20, + "value": "\"service_name_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 319, + "length": 29, + "value": "\"position_service_name_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 382, + "length": 23, + "value": "\"root_controller_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 438, + "length": 22, + "value": "\"view_container_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 488, + "length": 17, + "value": "\"client_id_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 535, + "length": 23, + "value": "\"client_name_key_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 587, + "length": 19, + "value": "\"invalid_key_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 631, + "length": 20, + "value": "\"unauthorized_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 684, + "length": 19, + "value": "\"no_internet_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 734, + "length": 21, + "value": "\"bluetooth_off_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 793, + "length": 15, + "value": "\"gps_off_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 837, + "length": 28, + "value": "\"pen_nav_loading_data_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 892, + "length": 24, + "value": "\"os_not_supported_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 950, + "length": 19, + "value": "\"permissions_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1008, + "length": 22, + "value": "\"sensor_initial_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1055, + "length": 15, + "value": "\"unknown_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1111, + "length": 27, + "value": "\"location_permission_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1180, + "length": 28, + "value": "\"bluetooth_permission_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1236, + "length": 19, + "value": "\"invalid_campus_id\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1285, + "length": 14, + "value": "\"campus_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1326, + "length": 17, + "value": "\"build_cancelled\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/MUtils.swift", + "kind": "IntegerLiteral", + "offset": 4302, + "length": 3, + "value": "256" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 130, + "length": 10, + "value": "\"Straight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 158, + "length": 7, + "value": "\"Venue\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 186, + "length": 10, + "value": "\"Elevator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 218, + "length": 11, + "value": "\"Escalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 248, + "length": 8, + "value": "\"Stairs\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 273, + "length": 6, + "value": "\"Ramp\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 296, + "length": 6, + "value": "\"Back\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 165, + "length": 30, + "value": "\"high-priority-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 232, + "length": 20, + "value": "\"floor-nodes-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 288, + "length": 19, + "value": "\"path-nodes-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 344, + "length": 20, + "value": "\"floor-gates-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 400, + "length": 19, + "value": "\"poi-models-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 465, + "length": 30, + "value": "\"extruded-poi-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 547, + "length": 37, + "value": "\"hidden-extruded-poi-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 628, + "length": 28, + "value": "\"outdoor-poi-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 699, + "length": 27, + "value": "\"indoor-poi-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 774, + "length": 32, + "value": "\"indoor-landmark-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 855, + "length": 33, + "value": "\"outdoor-landmark-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 933, + "length": 29, + "value": "\"outdoor-poi-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1013, + "length": 36, + "value": "\"outdoor-poi-polygon-borders-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1093, + "length": 28, + "value": "\"indoor-poi-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1171, + "length": 35, + "value": "\"indoor-poi-polygon-borders-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1246, + "length": 23, + "value": "\"venue-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1309, + "length": 23, + "value": "\"campus-polygon-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1378, + "length": 30, + "value": "\"campus-polygon-border-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1447, + "length": 22, + "value": "\"campus-border-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1508, + "length": 22, + "value": "\"venue-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1576, + "length": 30, + "value": "\"venue-polygon-borders-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1643, + "length": 20, + "value": "\"venue-gates-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1701, + "length": 21, + "value": "\"venue-models-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1770, + "length": 32, + "value": "\"extruded-venue-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1856, + "length": 39, + "value": "\"hidden-extruded-venue-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1939, + "length": 27, + "value": "\"destination-symbol-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2012, + "length": 30, + "value": "\"indoor-selected-place-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2089, + "length": 31, + "value": "\"outdoor-selected-place-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2152, + "length": 14, + "value": "\"floor-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2205, + "length": 22, + "value": "\"campus-symbol-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2265, + "length": 21, + "value": "\"campus-gates-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2322, + "length": 19, + "value": "\"route-line-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2383, + "length": 26, + "value": "\"route-line-casing-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2448, + "length": 22, + "value": "\"progress-line-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2515, + "length": 29, + "value": "\"progress-line-casing-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2593, + "length": 34, + "value": "\"progress-line-start-point-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2668, + "length": 43, + "value": "\"location-indicator-accuracy-circle-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2755, + "length": 27, + "value": "\"location-indicator-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2834, + "length": 36, + "value": "\"selected-location-indicator-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2910, + "length": 23, + "value": "\"object-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2973, + "length": 23, + "value": "\"maneuver-arrow-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 3038, + "length": 26, + "value": "\"linked-route-line-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 3112, + "length": 33, + "value": "\"linked-route-line-casing-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/VenuesManager.swift", + "kind": "Array", + "offset": 221, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/VenuesManager.swift", + "kind": "Array", + "offset": 270, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/VenuesManager.swift", + "kind": "Array", + "offset": 320, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandGenerator.swift", + "kind": "BooleanLiteral", + "offset": 1483, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandGenerator.swift", + "kind": "BooleanLiteral", + "offset": 1536, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandGenerator.swift", + "kind": "BooleanLiteral", + "offset": 1585, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandGenerator.swift", + "kind": "FloatLiteral", + "offset": 1665, + "length": 3, + "value": "3.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UIImage.swift", + "kind": "IntegerLiteral", + "offset": 1302, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Path.swift", + "kind": "StringLiteral", + "offset": 8104, + "length": 4, + "value": "\",;\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Path.swift", + "kind": "StringLiteral", + "offset": 8161, + "length": 22, + "value": "\"MmLlHhVvCcSsQqTtAaZz\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/WelcomeScreen\/WelcomeScreenViewController.swift", + "kind": "FloatLiteral", + "offset": 367, + "length": 4, + "value": "0.01" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/WelcomeScreen\/WelcomeScreenViewController.swift", + "kind": "FloatLiteral", + "offset": 398, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/WelcomeScreen\/WelcomeScreenViewController.swift", + "kind": "FloatLiteral", + "offset": 427, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/WelcomeScreen\/WelcomeScreenViewController.swift", + "kind": "BooleanLiteral", + "offset": 464, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 1034, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "StringLiteral", + "offset": 1340, + "length": 40, + "value": "\"state changed: \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "StringLiteral", + "offset": 1367, + "length": 2, + "value": "\" -> \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "StringLiteral", + "offset": 1379, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 1703, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 1750, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 2175, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 2210, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 2392, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 2438, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "FloatLiteral", + "offset": 2493, + "length": 5, + "value": "-30.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 7768, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 46462, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 56621, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "IntegerLiteral", + "offset": 59040, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "IntegerLiteral", + "offset": 59095, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "IntegerLiteral", + "offset": 59116, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 59146, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/VenueDrawingManager.swift", + "kind": "Array", + "offset": 2723, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/VenueDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 5574, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/GrabberView.swift", + "kind": "FloatLiteral", + "offset": 275, + "length": 4, + "value": "0.76" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/GrabberView.swift", + "kind": "FloatLiteral", + "offset": 288, + "length": 4, + "value": "0.77" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/GrabberView.swift", + "kind": "FloatLiteral", + "offset": 300, + "length": 4, + "value": "0.76" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/GrabberView.swift", + "kind": "FloatLiteral", + "offset": 313, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Position.swift", + "kind": "IntegerLiteral", + "offset": 220, + "length": 4, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Position.swift", + "kind": "IntegerLiteral", + "offset": 234, + "length": 6, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Position.swift", + "kind": "IntegerLiteral", + "offset": 250, + "length": 5, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 154, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 193, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 234, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 285, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 325, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "IntegerLiteral", + "offset": 181, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "IntegerLiteral", + "offset": 216, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "StringLiteral", + "offset": 529, + "length": 15, + "value": "\"fit-to-campus\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 915, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1015, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1116, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "StringLiteral", + "offset": 1482, + "length": 19, + "value": "\"currentloc_filled\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1562, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1647, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1733, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "StringLiteral", + "offset": 2028, + "length": 17, + "value": "\"binoculars.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 2387, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 2472, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 2558, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "StringLiteral", + "offset": 2917, + "length": 4, + "value": "\"2D\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 3179, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 3264, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 3350, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "IntegerLiteral", + "offset": 3510, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/RouteOption.swift", + "kind": "BooleanLiteral", + "offset": 1587, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 162, + "length": 29, + "value": "\"high-priority-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 226, + "length": 18, + "value": "\"path-nodes-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 280, + "length": 19, + "value": "\"floor-nodes-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 335, + "length": 19, + "value": "\"floor-gates-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 389, + "length": 18, + "value": "\"poi-models-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 452, + "length": 29, + "value": "\"extruded-poi-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 532, + "length": 36, + "value": "\"hidden-extruded-poi-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 611, + "length": 27, + "value": "\"outdoor-poi-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 680, + "length": 26, + "value": "\"indoor-poi-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 753, + "length": 31, + "value": "\"indoor-landmark-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 832, + "length": 32, + "value": "\"outdoor-landmark-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 908, + "length": 28, + "value": "\"outdoor-poi-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 986, + "length": 35, + "value": "\"outdoor-poi-polygon-borders-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1064, + "length": 27, + "value": "\"indoor-poi-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1140, + "length": 34, + "value": "\"indoor-poi-polygon-borders-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1213, + "length": 22, + "value": "\"venue-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1280, + "length": 29, + "value": "\"venue-polygon-borders-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1348, + "length": 22, + "value": "\"campus-polygon-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1415, + "length": 29, + "value": "\"campus-polygon-border-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1482, + "length": 21, + "value": "\"campus-border-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1541, + "length": 21, + "value": "\"venue-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1598, + "length": 19, + "value": "\"venue-gates-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1654, + "length": 20, + "value": "\"venue-models-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1721, + "length": 31, + "value": "\"extruded-venue-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1805, + "length": 38, + "value": "\"hidden-extruded-venue-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1886, + "length": 26, + "value": "\"destination-symbol-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1957, + "length": 29, + "value": "\"indoor-selected-place-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2032, + "length": 30, + "value": "\"outdoor-selected-place-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2093, + "length": 13, + "value": "\"floor-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2144, + "length": 21, + "value": "\"campus-symbol-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2202, + "length": 20, + "value": "\"campus-gates-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2257, + "length": 18, + "value": "\"route-line-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2316, + "length": 25, + "value": "\"route-line-casing-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2379, + "length": 21, + "value": "\"progress-line-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2444, + "length": 28, + "value": "\"progress-line-casing-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2520, + "length": 33, + "value": "\"progress-line-start-point-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2593, + "length": 42, + "value": "\"location-indicator-accuracy-circle-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2678, + "length": 26, + "value": "\"location-indicator-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2755, + "length": 35, + "value": "\"selected-location-indicator-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2829, + "length": 22, + "value": "\"object-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2890, + "length": 22, + "value": "\"maneuver-arrow-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2953, + "length": 25, + "value": "\"linked-route-line-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 3025, + "length": 32, + "value": "\"linked-route-line-casing-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "BooleanLiteral", + "offset": 664, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "FloatLiteral", + "offset": 707, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "FloatLiteral", + "offset": 745, + "length": 4, + "value": "0.08" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "FloatLiteral", + "offset": 789, + "length": 4, + "value": "0.04" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "BooleanLiteral", + "offset": 951, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "StringLiteral", + "offset": 1069, + "length": 9, + "value": "\"#FF453A\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 203, + "length": 7, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 220, + "length": 9, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 239, + "length": 10, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 259, + "length": 9, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 278, + "length": 7, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoriesCell.swift", + "kind": "Array", + "offset": 567, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LiveObjectManager.swift", + "kind": "Dictionary", + "offset": 699, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CoordinateFormatter.swift", + "kind": "IntegerLiteral", + "offset": 1376, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CoordinateFormatter.swift", + "kind": "StringLiteral", + "offset": 1758, + "length": 3, + "value": "\" \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CoordinateFormatter.swift", + "kind": "StringLiteral", + "offset": 1810, + "length": 3, + "value": "\",\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CoordinateFormatter.swift", + "kind": "StringLiteral", + "offset": 1867, + "length": 4, + "value": "\", \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ImageDownloader.swift", + "kind": "Dictionary", + "offset": 492, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ImageDownloader.swift", + "kind": "Array", + "offset": 540, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ImageDownloader.swift", + "kind": "Array", + "offset": 712, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/RenderingHelper.swift", + "kind": "BooleanLiteral", + "offset": 3841, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image+CoreGraphics.swift", + "kind": "FloatLiteral", + "offset": 1857, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image+CoreGraphics.swift", + "kind": "FloatLiteral", + "offset": 1870, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SVG.swift", + "kind": "IntegerLiteral", + "offset": 1598, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "Array", + "offset": 1181, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "FloatLiteral", + "offset": 1213, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "Array", + "offset": 1254, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "Array", + "offset": 1285, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "Array", + "offset": 1377, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "FloatLiteral", + "offset": 3333, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/PoisManager.swift", + "kind": "Array", + "offset": 215, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/MainViewController.swift", + "kind": "Array", + "offset": 419, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/PoiViewData.swift", + "kind": "IntegerLiteral", + "offset": 161, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/MessageDetailEnum.swift", + "kind": "IntegerLiteral", + "offset": 193, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/MessageDetailEnum.swift", + "kind": "IntegerLiteral", + "offset": 204, + "length": 6, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/MessageDetailEnum.swift", + "kind": "IntegerLiteral", + "offset": 220, + "length": 11, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Helpers\/InstructionPresenter.swift", + "kind": "BooleanLiteral", + "offset": 9087, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 2475, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 2480, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "Array", + "offset": 2531, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 5244, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 5253, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 5264, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 5274, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "IntegerLiteral", + "offset": 7013, + "length": 5, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "IntegerLiteral", + "offset": 7426, + "length": 11, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 11742, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 17869, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 19246, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 20975, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "IntegerLiteral", + "offset": 21975, + "length": 2, + "value": "-1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 21996, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Home\/HomeViewController.swift", + "kind": "IntegerLiteral", + "offset": 1442, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Home\/HomeViewController.swift", + "kind": "Array", + "offset": 1320, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/FontWeight.swift", + "kind": "StringLiteral", + "offset": 132, + "length": 10, + "value": "\"SemiBold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/FontWeight.swift", + "kind": "StringLiteral", + "offset": 162, + "length": 9, + "value": "\"Regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/FontWeight.swift", + "kind": "StringLiteral", + "offset": 188, + "length": 6, + "value": "\"Bold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Log\/NavigationEventTracker.swift", + "kind": "IntegerLiteral", + "offset": 1139, + "length": 2, + "value": "-1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Log\/NavigationEventTracker.swift", + "kind": "BooleanLiteral", + "offset": 1380, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Log\/NavigationEventTracker.swift", + "kind": "IntegerLiteral", + "offset": 4084, + "length": 2, + "value": "-1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/PoiDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 673, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/PoiDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 710, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/PoiDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 745, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 172, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 183, + "length": 13, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 206, + "length": 6, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 222, + "length": 15, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 247, + "length": 11, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 268, + "length": 5, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 283, + "length": 5, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 298, + "length": 7, + "value": "7" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 315, + "length": 13, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Shape.swift", + "kind": "BooleanLiteral", + "offset": 4279, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Favorites\/Favorite.swift", + "kind": "StringLiteral", + "offset": 5536, + "length": 5, + "value": "\"poi\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Favorites\/Favorite.swift", + "kind": "StringLiteral", + "offset": 5562, + "length": 10, + "value": "\"location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Scanner.swift", + "kind": "StringLiteral", + "offset": 7465, + "length": 7, + "value": "\"FALSE\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Scanner.swift", + "kind": "StringLiteral", + "offset": 7494, + "length": 6, + "value": "\"TRUE\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Scanner.swift", + "kind": "StringLiteral", + "offset": 7517, + "length": 3, + "value": "\"0\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Scanner.swift", + "kind": "StringLiteral", + "offset": 7536, + "length": 3, + "value": "\"1\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoriteCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 552, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoriteCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 564, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoriteCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 799, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoriteCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 811, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/FloorDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 281, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/NetworkMonitor.swift", + "kind": "BooleanLiteral", + "offset": 325, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueSelector\/VenuesSectionLabel.swift", + "kind": "StringLiteral", + "offset": 363, + "length": 8, + "value": "\"venues\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/General\/UserDefaultsKey.swift", + "kind": "StringLiteral", + "offset": 173, + "length": 22, + "value": "\"IsSpeechManagerMuted\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4285, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4363, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4422, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4490, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4566, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4643, + "length": 1, + "value": "7" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4703, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4844, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4913, + "length": 2, + "value": "11" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4977, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5047, + "length": 2, + "value": "13" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5115, + "length": 2, + "value": "14" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5183, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5252, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5316, + "length": 2, + "value": "17" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5389, + "length": 2, + "value": "18" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5455, + "length": 2, + "value": "19" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5521, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "StringLiteral", + "offset": 5596, + "length": 9, + "value": "\"#C8E6FF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "StringLiteral", + "offset": 5668, + "length": 9, + "value": "\"#818181\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "StringLiteral", + "offset": 5730, + "length": 11, + "value": "\"#D1D1D6FF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PIGeofenceInterface\/PIGeofenceManager.swift", + "kind": "BooleanLiteral", + "offset": 1807, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PIGeofenceInterface\/PIGeofenceManager.swift", + "kind": "BooleanLiteral", + "offset": 1852, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/AlertSheet\/AlertSheet.swift", + "kind": "Array", + "offset": 494, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/AdaptiveFloatingPanelLayout.swift", + "kind": "FloatLiteral", + "offset": 320, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/AdaptiveFloatingPanelLayout.swift", + "kind": "FloatLiteral", + "offset": 433, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/AdaptiveFloatingPanelLayout.swift", + "kind": "IntegerLiteral", + "offset": 706, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/FractionalInsetDrivenLayout.swift", + "kind": "IntegerLiteral", + "offset": 489, + "length": 2, + "value": "69" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/FractionalInsetDrivenLayout.swift", + "kind": "FloatLiteral", + "offset": 786, + "length": 4, + "value": "0.45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/FractionalInsetDrivenLayout.swift", + "kind": "IntegerLiteral", + "offset": 1056, + "length": 2, + "value": "69" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Route\/Leg.swift", + "kind": "Array", + "offset": 194, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Route\/Leg.swift", + "kind": "IntegerLiteral", + "offset": 222, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITextView.swift", + "kind": "IntegerLiteral", + "offset": 978, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITextView.swift", + "kind": "IntegerLiteral", + "offset": 988, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITextView.swift", + "kind": "IntegerLiteral", + "offset": 1000, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITextView.swift", + "kind": "IntegerLiteral", + "offset": 1011, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/CategoriesManager.swift", + "kind": "Array", + "offset": 242, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/CategoriesManager.swift", + "kind": "Array", + "offset": 286, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/Details\/AboutCell.swift", + "kind": "IntegerLiteral", + "offset": 257, + "length": 3, + "value": "200" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 189, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 204, + "length": 22, + "value": "\"panelBackgroundColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 235, + "length": 9, + "value": "\"#FFFFFF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 255, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 270, + "length": 31, + "value": "\"secondaryPanelBackgroundColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 310, + "length": 9, + "value": "\"#F3F3F3\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 330, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 345, + "length": 12, + "value": "\"labelColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 366, + "length": 9, + "value": "\"#292929\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 386, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 401, + "length": 21, + "value": "\"secondaryLabelColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 431, + "length": 9, + "value": "\"#818181\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 451, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 466, + "length": 29, + "value": "\"borderColorOnGrayBackground\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 504, + "length": 9, + "value": "\"#BFBFBF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 524, + "length": 1, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 539, + "length": 29, + "value": "\"borderColorOnGrayBackground\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 577, + "length": 9, + "value": "\"#F3F3F3\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 597, + "length": 1, + "value": "7" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 612, + "length": 30, + "value": "\"borderColorOnWhiteBackground\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 651, + "length": 9, + "value": "\"#EFEFEF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 671, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 686, + "length": 13, + "value": "\"buttonColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 708, + "length": 9, + "value": "\"#5390E9\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 728, + "length": 1, + "value": "9" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 743, + "length": 12, + "value": "\"brandColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 764, + "length": 9, + "value": "\"#1C3968\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 784, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 800, + "length": 24, + "value": "\"locationIndicatorColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 833, + "length": 9, + "value": "\"#3478F5\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 853, + "length": 2, + "value": "11" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 869, + "length": 28, + "value": "\"locationIndicatorAuraColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 906, + "length": 11, + "value": "\"#3478F51A\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 928, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 944, + "length": 16, + "value": "\"routeLineColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 969, + "length": 9, + "value": "\"#00B0FF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 989, + "length": 2, + "value": "13" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1005, + "length": 22, + "value": "\"routeLineCasingColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1036, + "length": 9, + "value": "\"#1967D1\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1056, + "length": 2, + "value": "14" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1072, + "length": 20, + "value": "\"openingStatusColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1101, + "length": 9, + "value": "\"#63C26C\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1121, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1137, + "length": 20, + "value": "\"closureStatusColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1166, + "length": 9, + "value": "\"#EA4F3D\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1186, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1202, + "length": 21, + "value": "\"secondaryBrandColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1232, + "length": 9, + "value": "\"#264E8F\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1252, + "length": 2, + "value": "17" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1268, + "length": 16, + "value": "\"secondaryColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1293, + "length": 9, + "value": "\"#00A79E\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1313, + "length": 2, + "value": "18" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1329, + "length": 25, + "value": "\"panelGrabberHandleColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1363, + "length": 9, + "value": "\"#CCCCCC\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1383, + "length": 2, + "value": "19" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1399, + "length": 18, + "value": "\"closeButtonColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1426, + "length": 9, + "value": "\"#E6E6E6\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1446, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1462, + "length": 18, + "value": "\"placeholderColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1489, + "length": 9, + "value": "\"#A5A5A5\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Formatters\/TimeFormatter.swift", + "kind": "BooleanLiteral", + "offset": 222, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/MenuItem.swift", + "kind": "Dictionary", + "offset": 221, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 635, + "length": 18, + "value": "\"LightYellowColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 878, + "length": 7, + "value": "\"Arrow\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1003, + "length": 6, + "value": "\"Back\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1133, + "length": 9, + "value": "\"Bicycle\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1272, + "length": 12, + "value": "\"CampusGate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1430, + "length": 20, + "value": "\"CampusGateSelector\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1566, + "length": 5, + "value": "\"Car\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1707, + "length": 15, + "value": "\"CheckmarkIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1842, + "length": 7, + "value": "\"Clock\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1973, + "length": 9, + "value": "\"Compass\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2116, + "length": 14, + "value": "\"DistanceIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2256, + "length": 10, + "value": "\"Elevator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2401, + "length": 15, + "value": "\"ElevatorDown-\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2550, + "length": 14, + "value": "\"ElevatorIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2695, + "length": 13, + "value": "\"ElevatorUp-\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2836, + "length": 11, + "value": "\"Escalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2983, + "length": 15, + "value": "\"EscalatorDown\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3134, + "length": 15, + "value": "\"EscalatorIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3281, + "length": 13, + "value": "\"EscalatorUp\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3424, + "length": 12, + "value": "\"FilterIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3554, + "length": 6, + "value": "\"Gate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3694, + "length": 14, + "value": "\"GroupedStops\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3832, + "length": 9, + "value": "\"Indoors\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3959, + "length": 6, + "value": "\"Left\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4091, + "length": 10, + "value": "\"LeftLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4229, + "length": 11, + "value": "\"LeftRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4374, + "length": 14, + "value": "\"LeftVeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4524, + "length": 15, + "value": "\"LeftVeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4681, + "length": 18, + "value": "\"MapDownEscalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4855, + "length": 25, + "value": "\"MapDownloaderBackground\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5012, + "length": 13, + "value": "\"MapElevator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5159, + "length": 14, + "value": "\"MapEscalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5297, + "length": 9, + "value": "\"MapGate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5430, + "length": 9, + "value": "\"MapRamp\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5567, + "length": 11, + "value": "\"MapStairs\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5716, + "length": 16, + "value": "\"MapUpEscalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5858, + "length": 10, + "value": "\"MuteIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5994, + "length": 10, + "value": "\"Outdoors\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6120, + "length": 5, + "value": "\"Pin\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6243, + "length": 6, + "value": "\"Ramp\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6373, + "length": 9, + "value": "\"Reached\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6502, + "length": 7, + "value": "\"Right\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6637, + "length": 11, + "value": "\"RightLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6778, + "length": 12, + "value": "\"RightRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6926, + "length": 15, + "value": "\"RightVeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7079, + "length": 16, + "value": "\"RightVeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7223, + "length": 11, + "value": "\"ShareIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7360, + "length": 10, + "value": "\"SharePDF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7498, + "length": 11, + "value": "\"ShareText\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7637, + "length": 11, + "value": "\"SharpLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7778, + "length": 12, + "value": "\"SharpRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7912, + "length": 8, + "value": "\"Stairs\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8046, + "length": 10, + "value": "\"Straight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8180, + "length": 9, + "value": "\"Transit\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8319, + "length": 12, + "value": "\"UnMuteIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8457, + "length": 10, + "value": "\"VeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8601, + "length": 14, + "value": "\"VeerLeftLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8751, + "length": 15, + "value": "\"VeerLeftRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8908, + "length": 18, + "value": "\"VeerLeftVeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9070, + "length": 19, + "value": "\"VeerLeftVeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9217, + "length": 11, + "value": "\"VeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9364, + "length": 15, + "value": "\"VeerRightLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9517, + "length": 16, + "value": "\"VeerRightRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9677, + "length": 19, + "value": "\"VeerRightVeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9842, + "length": 20, + "value": "\"VeerRightVeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9994, + "length": 13, + "value": "\"VenueChange\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10147, + "length": 17, + "value": "\"VenueChangeININ\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10306, + "length": 18, + "value": "\"VenueChangeINOUT\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10466, + "length": 18, + "value": "\"VenueChangeOUTIN\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10628, + "length": 19, + "value": "\"VenueSelectorIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10765, + "length": 6, + "value": "\"Walk\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10903, + "length": 13, + "value": "\"WarningIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11034, + "length": 6, + "value": "\"Wave\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11173, + "length": 14, + "value": "\"back_covered\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11322, + "length": 15, + "value": "\"building.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11475, + "length": 16, + "value": "\"currentAligned\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11621, + "length": 12, + "value": "\"currentloc\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11776, + "length": 19, + "value": "\"currentloc_filled\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11927, + "length": 13, + "value": "\"destination\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12066, + "length": 10, + "value": "\"doorDark\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12204, + "length": 11, + "value": "\"doorWhite\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12341, + "length": 10, + "value": "\"elevDark\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12479, + "length": 11, + "value": "\"elevWhite\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12624, + "length": 14, + "value": "\"escalterDark\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12774, + "length": 15, + "value": "\"escalterWhite\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12930, + "length": 18, + "value": "\"exclamation-mark\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13105, + "length": 26, + "value": "\"exclamationmark.triangle\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13280, + "length": 22, + "value": "\"feedback_destination\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13436, + "length": 15, + "value": "\"fit-to-campus\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13598, + "length": 22, + "value": "\"fit-to-campus-filled\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13760, + "length": 18, + "value": "\"map-location-dot\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13933, + "length": 26, + "value": "\"map-location-dot-success\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14089, + "length": 12, + "value": "\"myLocation\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14241, + "length": 18, + "value": "\"my_location_icon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14414, + "length": 26, + "value": "\"my_location_parking_icon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14570, + "length": 13, + "value": "\"out_of_area\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14695, + "length": 3, + "value": "\"p\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14822, + "length": 9, + "value": "\"parking\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14963, + "length": 13, + "value": "\"parkingIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15115, + "length": 17, + "value": "\"parking_reached\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15270, + "length": 17, + "value": "\"pin.circle.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15411, + "length": 9, + "value": "\"rating1\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15544, + "length": 9, + "value": "\"rating2\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15677, + "length": 9, + "value": "\"rating3\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15810, + "length": 9, + "value": "\"rating4\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15943, + "length": 9, + "value": "\"rating5\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16085, + "length": 14, + "value": "\"reached-icon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16251, + "length": 24, + "value": "\"selected_user_location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16395, + "length": 7, + "value": "\"start\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16524, + "length": 8, + "value": "\"updown\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16660, + "length": 11, + "value": "\"usingGate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16796, + "length": 10, + "value": "\"wifi_off\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16929, + "length": 9, + "value": "\"wifi_on\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphoneos\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 17065, + "length": 11, + "value": "\"wifi_slow\"" + } + ] +} \ No newline at end of file diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios.private.swiftinterface b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios.private.swiftinterface new file mode 100644 index 00000000..a526c633 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios.private.swiftinterface @@ -0,0 +1,1211 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1) +// swift-module-flags: -target arm64-apple-ios13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name PenNavUI +// swift-module-flags-ignorable: -no-verify-emitted-module-interface -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2 +import AVFoundation +import CoreData +import CoreGraphics +import CoreHaptics +import CoreLocation +import CoreText +import CryptoKit +import Darwin +import DeveloperToolsSupport +import Foundation +import LinkPresentation +import MapKit +import MessageUI +import Network +@_exported import PenNavUI +import Penguin +import PenguinINRenderer +import QuartzCore +import SafariServices +import Swift +import SwiftUI +import SystemConfiguration +import UIKit +import UserNotifications +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +import os.log +import os +@objc public protocol FloatingPanelLayout { + @objc var position: PenNavUI.FloatingPanelPosition { get } + @objc var initialState: PenNavUI.FloatingPanelState { get } + @objc var anchors: [PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring] { get } + @objc optional func prepareLayout(surfaceView: UIKit.UIView, in view: UIKit.UIView) -> [UIKit.NSLayoutConstraint] + @objc optional func backdropAlpha(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat +} +@objc @_inheritsConvenienceInitializers @objcMembers open class FloatingPanelBottomLayout : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayout { + @objc override dynamic public init() + @objc open var initialState: PenNavUI.FloatingPanelState { + @objc get + } + @objc open var anchors: [PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring] { + @objc get + } + @objc open var position: PenNavUI.FloatingPanelPosition { + @objc get + } + @objc open func prepareLayout(surfaceView: UIKit.UIView, in view: UIKit.UIView) -> [UIKit.NSLayoutConstraint] + @objc open func backdropAlpha(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc deinit +} +extension PenNavUI.CampaignTracking { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var campaignId: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var lastNotificationDate: Foundation.Date? { + @objc get + @objc set + } + #endif +} +public protocol PILocationDelegate { + func onLocationOffCampus(location: _LocationEssentials.CLLocationCoordinate2D) + func onLocationMessage(message: PenNavUI.CampaignMessage) +} +extension PenNavUI.PILocationDelegate { + public func onLocationOffCampus(location: _LocationEssentials.CLLocationCoordinate2D) + public func onLocationMessage(message: PenNavUI.CampaignMessage) +} +@_inheritsConvenienceInitializers @objc(CachedVenue) nonisolated public class CachedVenue : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +extension PenNavUI.SharedLocationCacheData { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var edgeId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var floorId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var latitude: Swift.Double { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var longitude: Swift.Double { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var navigationAvoid: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var venueId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var x: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var y: Swift.Int16 { + @objc get + @objc set + } +} +@_inheritsConvenienceInitializers @objc(CampaignTracking) nonisolated public class CampaignTracking : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@_hasMissingDesignatedInitializers public class Campus { + public var id: Swift.Int? + public var name: Swift.String? + public var coverImage: Swift.String? + @objc deinit +} +@_hasMissingDesignatedInitializers final public class CGTextRenderer { + public enum API { + case uiKit + case appKit + public static func == (a: PenNavUI.CGTextRenderer.API, b: PenNavUI.CGTextRenderer.API) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } + @objc deinit +} +extension PenNavUI.CommandLine { + public static func processImage(with config: PenNavUI.CommandLine.Configuration) throws -> Foundation.Data + public static func makeSVGOptions(for config: PenNavUI.CommandLine.Configuration) -> PenNavUI.SVG.Options + #if compiler(>=5.3) && $NonescapableTypes + public static func makeTextAPI(for api: PenNavUI.CommandLine.API?) -> PenNavUI.CGTextRenderer.API + #endif + public static func processImage(_ image: PenNavUI.SVG, with config: PenNavUI.CommandLine.Configuration) throws -> Foundation.Data + public static func makeImageInsets(for insets: PenNavUI.CommandLine.Insets) throws -> PenNavUI.SVG.Insets +} +extension PenNavUI.TagFlowLayout { + public enum LayoutAlignment : Swift.Int { + case left + case center + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } +} +@objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency public class TagFlowLayout : UIKit.UICollectionViewFlowLayout { + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutAttributesForElements(in rect: CoreFoundation.CGRect) -> [UIKit.UICollectionViewLayoutAttributes]? + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var flipsHorizontallyInOppositeLayoutDirection: Swift.Bool { + @objc get + } + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var developmentLayoutDirection: UIKit.UIUserInterfaceLayoutDirection { + @objc get + } + @objc deinit +} +extension PenNavUI.CommandLine { + public struct Configuration { + public var input: Foundation.URL + public var inputUltralight: Foundation.URL? + public var inputBlack: Foundation.URL? + public var output: Foundation.URL + public var format: PenNavUI.CommandLine.Format + public var size: PenNavUI.CommandLine.Size + public var api: PenNavUI.CommandLine.API? + public var insets: PenNavUI.CommandLine.Insets + public var insetsUltralight: PenNavUI.CommandLine.Insets? + public var insetsBlack: PenNavUI.CommandLine.Insets? + public var scale: PenNavUI.CommandLine.Scale + public var options: PenNavUI.SVG.Options + public var precision: Swift.Int? + } + public enum Format : Swift.String { + case jpeg + case pdf + case png + case swift + case sfsymbol + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } + } + public enum API : Swift.String { + case appkit + case uikit + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } + } + public enum Size : Swift.Equatable { + case `default` + case custom(width: Swift.Int, height: Swift.Int) + public static func == (a: PenNavUI.CommandLine.Size, b: PenNavUI.CommandLine.Size) -> Swift.Bool + } + public enum Scale : Swift.Equatable { + case `default` + case retina + case superRetina + public static func == (a: PenNavUI.CommandLine.Scale, b: PenNavUI.CommandLine.Scale) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } + public struct Insets : Swift.Equatable { + public var top: Swift.Double? + public var left: Swift.Double? + public var bottom: Swift.Double? + public var right: Swift.Double? + #if compiler(>=5.3) && $NonescapableTypes + public init(top: Swift.Double? = nil, left: Swift.Double? = nil, bottom: Swift.Double? = nil, right: Swift.Double? = nil) + #endif + public static func == (a: PenNavUI.CommandLine.Insets, b: PenNavUI.CommandLine.Insets) -> Swift.Bool + } + public static func parseConfiguration(from args: [Swift.String], baseDirectory: Foundation.URL) throws -> PenNavUI.CommandLine.Configuration +} +extension UIKit.UISpringTimingParameters { + @_Concurrency.MainActor @preconcurrency convenience public init(decelerationRate: CoreFoundation.CGFloat, frequencyResponse: CoreFoundation.CGFloat, initialVelocity: CoreFoundation.CGVector = .zero) + @_Concurrency.MainActor @preconcurrency convenience public init(dampingRatio: CoreFoundation.CGFloat, frequencyResponse: CoreFoundation.CGFloat, initialVelocity: CoreFoundation.CGVector = .zero) +} +@objc @_inheritsConvenienceInitializers final public class PenNavUIManager : ObjectiveC.NSObject { + public static var shared: PenNavUI.PenNavUIManager + final public var initializationDelegate: (any PenNavUI.PenNavInitializationDelegate)? + final public var eventsDelegate: (any PenNavUI.PIEventsDelegate)? + final public var locationDelegate: (any PenNavUI.PILocationDelegate)? + final public func build() + @discardableResult + final public func setLanguage(_ language: Swift.String) -> PenNavUI.PenNavUIManager + public static func setLanguage(_ language: Swift.String) + @discardableResult + final public func setDeepLinkComponents(scheme: Swift.String, host: Swift.String) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func setDeepLink(_ url: Foundation.URL?) + #endif + @discardableResult + final public func setEnableReportIssue(enable: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setShareLocationCallback(enabled: Swift.Bool) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func navigate(to referenceID: Swift.String, completion: ((Swift.Bool, PenNavUI.PenNavUIError?) -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func getCampusListing(baseURL: Swift.String, serviceName: Swift.String, clientID: Swift.String, clientKey: Swift.String, completion: @escaping ([PenNavUI.Campus]?) -> ()) + #endif + final public func setAppColor(color: UIKit.UIColor) -> PenNavUI.PenNavUIManager + public static func getVersion() -> Swift.String + final public func present(root: UIKit.UIViewController, view: UIKit.UIView) + final public func dismiss() + @discardableResult + final public func setClientKey(_ key: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setClientID(_ ID: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setUsername(_ userID: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setServiceName(dataServiceName: Swift.String, positionServiceName: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setBaseURL(dataURL: Swift.String, positionURL: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setIsShowUserName(_ isShowUserName: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setBackButtonVisibility(visible: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setDebugOptionsVisibility(visible: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setCampusID(_ campusID: Swift.Int) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setIsUpdateUserLocationSmoothly(_ isUpdateUserLocationSmoothly: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setOutdoorEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setSimulationModeEnabled(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setStepDetectionEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setTransitionEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setGeographicCoordinateEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func getToken(clientID: Swift.String, clientKey: Swift.String, showProgress: Swift.Bool, completion: @escaping (Swift.String?, Penguin.ErrorCode?) -> Swift.Void) + #endif + final public func setToken(token: Swift.String) + final public func clearDatabase() + #if compiler(>=5.3) && $NonescapableTypes + final public func getVersion() -> Swift.String? + #endif + @objc override dynamic public init() + @objc deinit +} +extension PenNavUI.PenNavUIManager : CoreLocation.CLLocationManagerDelegate { + @objc final public func locationManagerDidChangeAuthorization(_ manager: CoreLocation.CLLocationManager) + @objc final public func locationManager(_ manager: CoreLocation.CLLocationManager, didChangeAuthorization status: CoreLocation.CLAuthorizationStatus) +} +extension PenNavUI.PenNavUIManager : Penguin.PIInitializerDelegate { + @objc final public func onReady(warning: Penguin.WarningCode) + @objc final public func onInitilzationError(error: Penguin.ErrorCode) + @objc final public func onInitializationProgressChange(status: Penguin.SDKOperation) +} +public enum DOM { +} +extension PenNavUI.DOM { + public typealias Float = Swift.Float + public typealias Coordinate = Swift.Float + public typealias Length = Swift.Int + public typealias Opacity = Swift.Float + public typealias Bool = Swift.Bool + public typealias URL = Foundation.URL +} +extension PenNavUI.PenNavStyle { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var type: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var value: Foundation.Data? { + @objc get + @objc set + } + #endif +} +public enum CommandLine { +} +@objc public protocol FloatingPanelBehavior { + @objc optional var springDecelerationRate: CoreFoundation.CGFloat { get } + @objc optional var springResponseTime: CoreFoundation.CGFloat { get } + @objc optional var momentumProjectionRate: CoreFoundation.CGFloat { get } + @objc optional func shouldProjectMomentum(_ fpc: PenNavUI.FloatingPanelController, to proposedState: PenNavUI.FloatingPanelState) -> Swift.Bool + @objc optional func redirectionalProgress(_ fpc: PenNavUI.FloatingPanelController, from: PenNavUI.FloatingPanelState, to: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc optional func allowsRubberBanding(for edge: UIUtilities.UIRectEdge) -> Swift.Bool + @objc optional var removalInteractionVelocityThreshold: CoreFoundation.CGFloat { get } +} +open class FloatingPanelDefaultBehavior : PenNavUI.FloatingPanelBehavior { + public init() + @objc open var springDecelerationRate: CoreFoundation.CGFloat { + @objc get + } + @objc open var springResponseTime: CoreFoundation.CGFloat { + @objc get + } + @objc open var momentumProjectionRate: CoreFoundation.CGFloat { + @objc get + } + @objc open func redirectionalProgress(_ fpc: PenNavUI.FloatingPanelController, from: PenNavUI.FloatingPanelState, to: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc open func allowsRubberBanding(for edge: UIUtilities.UIRectEdge) -> Swift.Bool + @objc open var removalInteractionVelocityThreshold: CoreFoundation.CGFloat + @objc deinit +} +public enum IssueType { + case poi + case venue + case location + case navigation + public static func == (a: PenNavUI.IssueType, b: PenNavUI.IssueType) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } +} +extension _LocationEssentials.CLLocationCoordinate2D : Swift.Codable { + public init(from decoder: any Swift.Decoder) throws + public func encode(to encoder: any Swift.Encoder) throws +} +@_inheritsConvenienceInitializers @objc(FavoriteCacheData) nonisolated public class FavoriteCacheData : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@objc public enum FloatingPanelReferenceEdge : Swift.Int { + case top + case left + case bottom + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@objc public enum FloatingPanelLayoutReferenceGuide : Swift.Int { + case superview = 0 + case safeArea = 1 + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@objc public enum FloatingPanelLayoutContentBoundingGuide : Swift.Int { + case none = 0 + case superview = 1 + case safeArea = 2 + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension PenNavUI.CommandLine { + public enum Error : Swift.Error { + case invalid + case unsupported + case fileNotFound + public static func == (a: PenNavUI.CommandLine.Error, b: PenNavUI.CommandLine.Error) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } +} +public protocol PIEventsDelegate { + func onBackButtonPressed() + func onPenNavUIDismiss() + func onReportIssue(_ issue: PenNavUI.IssueType) + #if compiler(>=5.3) && $NonescapableTypes + func onShareLocation(link: Swift.String?) + #endif + func onSwitchCampus(campusId: Swift.Int) +} +extension PenNavUI.PIEventsDelegate { + public func onBackButtonPressed() + public func onPenNavUIDismiss() + public func onReportIssue(_ issue: PenNavUI.IssueType) + #if compiler(>=5.3) && $NonescapableTypes + public func onShareLocation(link: Swift.String?) + #endif + public func onSwitchCampus(campusId: Swift.Int) +} +@_inheritsConvenienceInitializers @objc(PenNavUITableUpdate) nonisolated public class PenNavUITableUpdate : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +public struct SFSymbolRenderer { + public init(options: PenNavUI.SVG.Options, insets: PenNavUI.CommandLine.Insets, insetsUltralight: PenNavUI.CommandLine.Insets, insetsBlack: PenNavUI.CommandLine.Insets, precision: Swift.Int) + #if compiler(>=5.3) && $NonescapableTypes + public func render(regular: Foundation.URL, ultralight: Foundation.URL?, black: Foundation.URL?) throws -> Swift.String + #endif +} +@_inheritsConvenienceInitializers @objc(PenNavStyle) nonisolated public class PenNavStyle : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +public struct GeofenceConfiguration { + #if compiler(>=5.3) && $NonescapableTypes + public init(baseURL: Swift.String, serviceName: Swift.String, clientId: Swift.String, clientKey: Swift.String, campusId: Swift.Int? = nil) + #endif +} +public struct CampaignMessage { + public var title: Swift.String + public var description: Swift.String +} +extension UIKit.UIImage { + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(svgNamed name: Swift.String, in bundle: Foundation.Bundle = .main, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(initWithSVGData:) convenience dynamic public init?(svgData: Foundation.Data) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(initWithContentsOfSVGFile:) convenience dynamic public init?(contentsOfSVGFile path: Swift.String) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(svgNamed:) public static func _svgNamed(_ name: Swift.String) -> UIKit.UIImage? + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(svgNamed:inBundle:) public static func _svgNamed(_ name: Swift.String, in bundle: Foundation.Bundle) -> UIKit.UIImage? + #endif + convenience public init(_ image: PenNavUI.SVG) +} +extension PenNavUI.SVG { + final public func rasterize() -> UIKit.UIImage + #if compiler(>=5.3) && $NonescapableTypes + final public func rasterize(with size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, insets: UIKit.UIEdgeInsets = .zero) -> UIKit.UIImage + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func pngData(size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, insets: UIKit.UIEdgeInsets = .zero) throws -> Foundation.Data + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func jpegData(size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, compressionQuality quality: CoreFoundation.CGFloat = 1, insets: UIKit.UIEdgeInsets = .zero) throws -> Foundation.Data + #endif +} +public protocol PenNavInitializationDelegate { + func onPenNavInitializationSuccess() + func onPenNavInitializationError(errorType: PenNavUI.PenNavUIError, errorDescription: Swift.String) +} +extension Penguin.GateNodeModel : Penguin.NodeRepresentable { + final public var isUpEscalator: Swift.Bool { + get + } + final public var isDownEscalator: Swift.Bool { + get + } +} +@_inheritsConvenienceInitializers @objc(SharedLocationCacheData) nonisolated public class SharedLocationCacheData : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@objc open class FloatingPanelState : ObjectiveC.NSObject, Foundation.NSCopying, Swift.RawRepresentable { + public typealias RawValue = Swift.String + #if compiler(>=5.3) && $NonescapableTypes + required public init?(rawValue: PenNavUI.FloatingPanelState.RawValue) + #endif + @objc public init(rawValue: PenNavUI.FloatingPanelState.RawValue, order: Swift.Int) + final public let rawValue: PenNavUI.FloatingPanelState.RawValue + final public let order: Swift.Int + #if compiler(>=5.3) && $NonescapableTypes + @objc public func copy(with zone: ObjectiveC.NSZone? = nil) -> Any + #endif + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc override dynamic public var debugDescription: Swift.String { + @objc get + } + @objc(Full) public static let full: PenNavUI.FloatingPanelState + @objc(Half) public static let half: PenNavUI.FloatingPanelState + @objc(Tip) public static let tip: PenNavUI.FloatingPanelState + @objc(Hidden) public static let hidden: PenNavUI.FloatingPanelState + @objc deinit +} +@objc @_inheritsConvenienceInitializers public class AsynchronousOperation : Foundation.Operation { + @objc override dynamic public var isAsynchronous: Swift.Bool { + @objc get + } + @objc override dynamic public var isExecuting: Swift.Bool { + @objc get + } + @objc override dynamic public var isFinished: Swift.Bool { + @objc get + } + public func completeOperation() + @objc override dynamic public func start() + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @objc(FloatingPanelSurfaceAppearance) @objcMembers public class SurfaceAppearance : ObjectiveC.NSObject { + @_inheritsConvenienceInitializers @objc(FloatingPanelSurfaceAppearanceShadow) public class Shadow : ObjectiveC.NSObject { + @objc public var hidden: Swift.Bool + @objc public var color: UIKit.UIColor + @objc public var offset: CoreFoundation.CGSize + @objc public var opacity: Swift.Float + @objc public var radius: CoreFoundation.CGFloat + @objc public var spread: CoreFoundation.CGFloat + @objc override dynamic public init() + @objc deinit + } + @objc public var backgroundColor: UIKit.UIColor? + @objc public var cornerRadius: CoreFoundation.CGFloat + @objc @available(iOS 13.0, *) + public var cornerCurve: QuartzCore.CALayerCornerCurve { + @objc get + @objc set + } + @objc public var shadows: [PenNavUI.SurfaceAppearance.Shadow] + @objc public var borderColor: UIKit.UIColor? + @objc public var borderWidth: CoreFoundation.CGFloat + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc(FloatingPanelSurfaceView) @objcMembers @_Concurrency.MainActor @preconcurrency public class SurfaceView : UIKit.UIView { + @objc @_Concurrency.MainActor @preconcurrency final public let grabberHandle: PenNavUI.GrabberView + @objc @_Concurrency.MainActor @preconcurrency public var grabberHandlePadding: CoreFoundation.CGFloat { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var grabberAreaOffset: CoreFoundation.CGFloat + @objc @_Concurrency.MainActor @preconcurrency public var grabberHandleSize: CoreFoundation.CGSize { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency weak public var contentView: UIKit.UIView? + @objc @_Concurrency.MainActor @preconcurrency public var contentPadding: UIKit.UIEdgeInsets { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var backgroundColor: UIKit.UIColor? { + @objc get + @objc set + } + #endif + @objc @_Concurrency.MainActor @preconcurrency public var appearance: PenNavUI.SurfaceAppearance { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var containerMargins: UIKit.UIEdgeInsets { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency final public let containerView: UIKit.UIView + @_Concurrency.MainActor @preconcurrency @objc override dynamic public class var requiresConstraintBasedLayout: Swift.Bool { + @objc get + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func updateConstraints() + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutSubviews() + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var intrinsicContentSize: CoreFoundation.CGSize { + @objc get + } + @objc deinit +} +extension Penguin.Gnode : Penguin.NodeRepresentable { + final public var isUpEscalator: Swift.Bool { + get + } + final public var isDownEscalator: Swift.Bool { + get + } +} +public enum PenNavUIError : Swift.String, Foundation.LocalizedError { + case missingBaseUrl + case missingDataServiceName + case missingPositionServiceName + case missingRootController + case missingViewContainer + case missingClientId + case missingClientName + case invalidClientKey + case unauthorized + case noInternetConnection + case bluetoothTurnedOff + case locationServicesTurnedOff + case loadingDataError + case osNotSupported + case permissionsNotGranted + case sensorsInitializationError + case unknownError + case locationPermissionNotGranted + case bluetoothPermissionNotGranted + case invalidCampusId + case noCampusListFound + case buildCancelled + public var errorDescription: Swift.String { + get + } + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } +} +public enum ValidationError : Swift.Error { + case noClientID + case noClientNameKey + case noServiesName + case noBaseUrl + case missingFonts + public static func == (a: PenNavUI.ValidationError, b: PenNavUI.ValidationError) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } +} +@objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency final public class FloatingPanelPanGestureRecognizer : UIKit.UIPanGestureRecognizer { + @_Concurrency.MainActor @preconcurrency @objc override final public func touchesBegan(_ touches: Swift.Set, with event: UIKit.UIEvent) + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override weak final public var delegate: (any UIKit.UIGestureRecognizerDelegate)? { + @objc get + @objc set + } + #endif + @_Concurrency.MainActor @preconcurrency final public var delegateOrigin: any UIKit.UIGestureRecognizerDelegate { + get + } + @_Concurrency.MainActor @preconcurrency weak final public var delegateProxy: (any UIKit.UIGestureRecognizerDelegate)? { + get + set + } + @objc deinit +} +extension PenNavUI.CachedVenue { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var id: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var coverImage: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var address: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var buildingNumber: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var phone: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var email: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var website: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var floorCount: Swift.Int16 { + @objc get + @objc set + } +} +@_hasMissingDesignatedInitializers @objc(FloatingPanelGrabberView) @_Concurrency.MainActor @preconcurrency public class GrabberView : UIKit.UIView { + @_Concurrency.MainActor @preconcurrency public var barColor: UIKit.UIColor { + get + set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutSubviews() + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func hitTest(_ point: CoreFoundation.CGPoint, with event: UIKit.UIEvent?) -> UIKit.UIView? + #endif + @objc deinit +} +@objc public enum FloatingPanelPosition : Swift.Int { + case top + case left + case bottom + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension PenNavUI.FavoriteCacheData { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var createDate: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var deviceId: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var type: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var distance: Swift.Double { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var id: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var label: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var poiId: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var userName: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var location: PenNavUI.SharedLocationCacheData? { + @objc get + @objc set + } + #endif +} +@objc public protocol FloatingPanelLayoutAnchoring { + @objc var referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide { get } + @objc func layoutConstraints(_ fpc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteInset: CoreFoundation.CGFloat, edge: PenNavUI.FloatingPanelReferenceEdge, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide) + @objc public init(fractionalInset: CoreFoundation.CGFloat, edge: PenNavUI.FloatingPanelReferenceEdge, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc deinit +} +extension PenNavUI.FloatingPanelLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelIntrinsicLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteOffset offset: CoreFoundation.CGFloat, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide = .safeArea) + @objc public init(fractionalOffset offset: CoreFoundation.CGFloat, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide = .safeArea) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc deinit +} +extension PenNavUI.FloatingPanelIntrinsicLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelAdaptiveLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteOffset offset: CoreFoundation.CGFloat, contentLayout: UIKit.UILayoutGuide, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide, contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide = .none) + @objc public init(fractionalOffset offset: CoreFoundation.CGFloat, contentLayout: UIKit.UILayoutGuide, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide, contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide = .none) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc final public let contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide + @objc deinit +} +extension PenNavUI.FloatingPanelAdaptiveLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@_hasMissingDesignatedInitializers public class ImageCache { + #if compiler(>=5.3) && $NonescapableTypes + public func getImage(_ url: Foundation.URL, completion: @escaping (UIKit.UIImage?) -> Swift.Void) + #endif + #if compiler(>=5.3) && $NonescapableTypes + public func getImageFromDocuments(url: Foundation.URL) -> UIKit.UIImage? + #endif + @objc deinit +} +extension PenNavUI.ImageCache { + #if compiler(>=5.3) && $NonescapableTypes + public func getSVG(withURL url: Foundation.URL, completion: @escaping (UIKit.UIImage?) -> Swift.Void) + #endif +} +extension PenNavUI.PenNavUITableUpdate { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var lastUpdateTime: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var tableName: Swift.String? { + @objc get + @objc set + } + #endif +} +extension CoreGraphics.CGContext { + #if compiler(>=5.3) && $NonescapableTypes + public func draw(_ image: PenNavUI.SVG, in rect: CoreFoundation.CGRect? = nil) + #endif +} +extension PenNavUI.SVG { + #if compiler(>=5.3) && $NonescapableTypes + final public func pdfData(size: CoreFoundation.CGSize? = nil, insets: PenNavUI.SVG.Insets = .zero) throws -> Foundation.Data + #endif +} +public struct SVGRenderer { + public static func makeExpanded(path: Swift.String, transform: Swift.String, precision: Swift.Int = 4) throws -> Swift.String +} +@_hasMissingDesignatedInitializers @objc(SVGImage) final public class SVG : ObjectiveC.NSObject { + final public let size: CoreFoundation.CGSize + public struct Options : Swift.OptionSet { + public let rawValue: Swift.Int + public init(rawValue: Swift.Int) + public static let hideUnsupportedFilters: PenNavUI.SVG.Options + public static let `default`: PenNavUI.SVG.Options + public typealias ArrayLiteralElement = PenNavUI.SVG.Options + public typealias Element = PenNavUI.SVG.Options + public typealias RawValue = Swift.Int + } + @objc deinit +} +@available(*, deprecated, renamed: "SVG") +public typealias Image = PenNavUI.SVG +extension PenNavUI.SVG { + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(fileURL url: Foundation.URL, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(named name: Swift.String, in bundle: Foundation.Bundle = Bundle.main, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(data: Foundation.Data, options: PenNavUI.SVG.Options = .default) + #endif + public struct Insets : Swift.Equatable { + public var top: CoreFoundation.CGFloat + public var left: CoreFoundation.CGFloat + public var bottom: CoreFoundation.CGFloat + public var right: CoreFoundation.CGFloat + public static let zero: PenNavUI.SVG.Insets + public static func == (a: PenNavUI.SVG.Insets, b: PenNavUI.SVG.Insets) -> Swift.Bool + } +} +@objc public protocol FloatingPanelControllerDelegate { + @objc(floatingPanel:layoutForTraitCollection:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, layoutFor newCollection: UIKit.UITraitCollection) -> any PenNavUI.FloatingPanelLayout + @objc(floatingPanel:layoutForSize:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, layoutFor size: CoreFoundation.CGSize) -> any PenNavUI.FloatingPanelLayout + @objc(floatingPanel:animatorForPresentingToState:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, animatorForPresentingTo state: PenNavUI.FloatingPanelState) -> UIKit.UIViewPropertyAnimator + @objc(floatingPanel:animatorForDismissingWithVelocity:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, animatorForDismissingWith velocity: CoreFoundation.CGVector) -> UIKit.UIViewPropertyAnimator + @objc optional func floatingPanelDidChangeState(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelShouldBeginDragging(_ fpc: PenNavUI.FloatingPanelController) -> Swift.Bool + @objc optional func floatingPanelDidMove(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelWillBeginDragging(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelWillEndDragging(_ fpc: PenNavUI.FloatingPanelController, withVelocity velocity: CoreFoundation.CGPoint, targetState: Swift.UnsafeMutablePointer) + @objc optional func floatingPanelDidEndDragging(_ fpc: PenNavUI.FloatingPanelController, willAttract attract: Swift.Bool) + @objc optional func floatingPanelWillBeginAttracting(_ fpc: PenNavUI.FloatingPanelController, to state: PenNavUI.FloatingPanelState) + @objc optional func floatingPanelDidEndAttracting(_ fpc: PenNavUI.FloatingPanelController) + @objc(floatingPanel:shouldRemoveAtLocation:withVelocity:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, shouldRemoveAt location: CoreFoundation.CGPoint, with velocity: CoreFoundation.CGVector) -> Swift.Bool + @objc(floatingPanelWillRemove:) optional func floatingPanelWillRemove(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelDidRemove(_ fpc: PenNavUI.FloatingPanelController) + @objc(floatingPanel:contentOffsetForPinningScrollView:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, contentOffsetForPinning trackingScrollView: UIKit.UIScrollView) -> CoreFoundation.CGPoint + @objc(floatingPanel:shouldAllowToScroll:in:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, shouldAllowToScroll scrollView: UIKit.UIScrollView, in state: PenNavUI.FloatingPanelState) -> Swift.Bool +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc @_Concurrency.MainActor @preconcurrency open class FloatingPanelController : UIKit.UIViewController { + @objc public enum ContentInsetAdjustmentBehavior : Swift.Int { + case always + case never + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc public enum ContentMode : Swift.Int { + case `static` + case fitToBounds + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc @_Concurrency.MainActor @preconcurrency weak public var delegate: (any PenNavUI.FloatingPanelControllerDelegate)? { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var surfaceView: PenNavUI.SurfaceView! { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var backdropView: PenNavUI.BackdropView! { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency weak public var trackingScrollView: UIKit.UIScrollView? { + @objc get + } + #endif + @objc @_Concurrency.MainActor @preconcurrency public var panGestureRecognizer: PenNavUI.FloatingPanelPanGestureRecognizer { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var state: PenNavUI.FloatingPanelState { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var isAttracting: Swift.Bool { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var layout: any PenNavUI.FloatingPanelLayout { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var behavior: any PenNavUI.FloatingPanelBehavior { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var adjustedContentInsets: UIKit.UIEdgeInsets { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var contentInsetAdjustmentBehavior: PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior + @objc @_Concurrency.MainActor @preconcurrency public var isRemovalInteractionEnabled: Swift.Bool { + @objc(isRemovalInteractionEnabled) get + @objc(setRemovalInteractionEnabled:) set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var contentViewController: UIKit.UIViewController? { + @objc get + @objc set + } + #endif + @_Concurrency.MainActor @preconcurrency public var nearbyState: PenNavUI.FloatingPanelState { + get + } + @objc @_Concurrency.MainActor @preconcurrency public var contentMode: PenNavUI.FloatingPanelController.ContentMode { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public init(delegate: (any PenNavUI.FloatingPanelControllerDelegate)? = nil) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func loadView() + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewDidLayoutSubviews() + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewDidAppear(_ animated: Swift.Bool) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewWillTransition(to size: CoreFoundation.CGSize, with coordinator: any UIKit.UIViewControllerTransitionCoordinator) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func willTransition(to newCollection: UIKit.UITraitCollection, with coordinator: any UIKit.UIViewControllerTransitionCoordinator) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewWillDisappear(_ animated: Swift.Bool) + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForStatusBarStyle: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForStatusBarHidden: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForScreenEdgesDeferringSystemGestures: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForHomeIndicatorAutoHidden: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(show:completion:) @_Concurrency.MainActor @preconcurrency public func show(animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(hide:completion:) @_Concurrency.MainActor @preconcurrency public func hide(animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(addPanelToParent:at:animated:completion:) @_Concurrency.MainActor @preconcurrency public func addPanel(toParent parent: UIKit.UIViewController, at viewIndex: Swift.Int = -1, animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(removePanelFromParent:completion:) @_Concurrency.MainActor @preconcurrency public func removePanelFromParent(animated: Swift.Bool, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(moveToState:animated:completion:) @_Concurrency.MainActor @preconcurrency public func move(to: PenNavUI.FloatingPanelState, animated: Swift.Bool, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency public func set(contentViewController: UIKit.UIViewController?) + #endif + @objc(trackScrollView:) @_Concurrency.MainActor @preconcurrency public func track(scrollView: UIKit.UIScrollView) + @_Concurrency.MainActor @preconcurrency public func followScrollViewBouncing() + @objc(untrackScrollView:) @_Concurrency.MainActor @preconcurrency public func untrack(scrollView: UIKit.UIScrollView) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func accessibilityPerformEscape() -> Swift.Bool + @objc @_Concurrency.MainActor @preconcurrency public func invalidateLayout() + @objc @_Concurrency.MainActor @preconcurrency public func surfaceLocation(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGPoint + @objc @_Concurrency.MainActor @preconcurrency public var surfaceLocation: CoreFoundation.CGPoint { + @objc get + @objc set + } + @_Concurrency.MainActor @preconcurrency public func addTopPadding(padding: CoreFoundation.CGFloat) + @objc deinit +} +@_hasMissingDesignatedInitializers @objc(FloatingPanelBackdropView) @_Concurrency.MainActor @preconcurrency public class BackdropView : UIKit.UIView { + @objc @_Concurrency.MainActor @preconcurrency public var dismissalTapGestureRecognizer: UIKit.UITapGestureRecognizer + @objc deinit +} +@_hasMissingDesignatedInitializers public class NetworkMonitor { + @objc deinit +} +public enum GeofenceError : Swift.Error, Foundation.LocalizedError { + case permissionDenied + case errorInConfiguration + case authenticationFailed + case indoorDeloymentOnly + case geofenceConfigurationsMissing + case geofenceSDKNotStarted + case geofenceSDKAlreadyStarted + case sdkError(Swift.String) + #if compiler(>=5.3) && $NonescapableTypes + public var errorDescription: Swift.String? { + get + } + #endif +} +public protocol PIGeofenceManagerDelegate { + func geofenceStarted() + #if compiler(>=5.3) && $NonescapableTypes + func geofenceFailedToStart(_ error: Swift.String?) + #endif + func geofenceStopped() + func geofenceUpdated() +} +@objc @_inheritsConvenienceInitializers public class PIGeofenceManager : ObjectiveC.NSObject { + public static var shared: PenNavUI.PIGeofenceManager { + get + } + public func initializeLocationManager() + public func setGeofenceSDKConfigurations(_ configurations: PenNavUI.GeofenceConfiguration) + public func setGeofenceDelegate(delegate: any PenNavUI.PIGeofenceManagerDelegate) + public func startGeofencing(delegate: any PenNavUI.PIGeofenceManagerDelegate) + public func stopGeofencing() + public func updateGeofencing() + @objc override dynamic public init() + @objc deinit +} +extension PenNavUI.PIGeofenceManager : CoreLocation.CLLocationManagerDelegate { + @objc dynamic public func locationManager(_ manager: CoreLocation.CLLocationManager, didChangeAuthorization status: CoreLocation.CLAuthorizationStatus) +} +extension PenNavUI.PIGeofenceManager { + @objc dynamic public func locationManager(_ manager: CoreLocation.CLLocationManager, didEnterRegion region: CoreLocation.CLRegion) +} +extension PenNavUI.CGTextRenderer { + public typealias Size = (width: Swift.Int, height: Swift.Int) + #if compiler(>=5.3) && $NonescapableTypes + public static func render(named name: Swift.String, in bundle: Foundation.Bundle = Bundle.main, size: PenNavUI.CGTextRenderer.Size? = nil, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + #endif + #if compiler(>=5.3) && $NonescapableTypes + public static func render(fileURL: Foundation.URL, size: PenNavUI.CGTextRenderer.Size? = nil, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + #endif + public static func render(data: Foundation.Data, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + public static func renderPath(from svgPath: Swift.String) throws -> Swift.String +} +extension PenNavUI.CGTextRenderer.API : Swift.Equatable {} +extension PenNavUI.CGTextRenderer.API : Swift.Hashable {} +extension PenNavUI.CommandLine.Scale : Swift.Hashable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.Equatable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.Hashable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.Format : Swift.Equatable {} +extension PenNavUI.CommandLine.Format : Swift.Hashable {} +extension PenNavUI.CommandLine.Format : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.API : Swift.Equatable {} +extension PenNavUI.CommandLine.API : Swift.Hashable {} +extension PenNavUI.CommandLine.API : Swift.RawRepresentable {} +extension PenNavUI.IssueType : Swift.Equatable {} +extension PenNavUI.IssueType : Swift.Hashable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.Equatable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.Hashable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.Equatable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.Hashable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.Equatable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.Hashable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.Error : Swift.Equatable {} +extension PenNavUI.CommandLine.Error : Swift.Hashable {} +extension PenNavUI.PenNavUIError : Swift.Equatable {} +extension PenNavUI.PenNavUIError : Swift.Hashable {} +extension PenNavUI.PenNavUIError : Swift.RawRepresentable {} +extension PenNavUI.ValidationError : Swift.Equatable {} +extension PenNavUI.ValidationError : Swift.Hashable {} +extension PenNavUI.FloatingPanelPosition : Swift.Equatable {} +extension PenNavUI.FloatingPanelPosition : Swift.Hashable {} +extension PenNavUI.FloatingPanelPosition : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.Equatable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.Hashable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.Equatable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.Hashable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.RawRepresentable {} diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios.swiftdoc b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios.swiftdoc new file mode 100644 index 00000000..6dfdc911 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios.swiftdoc differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios.swiftinterface b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios.swiftinterface new file mode 100644 index 00000000..a526c633 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios.swiftinterface @@ -0,0 +1,1211 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1) +// swift-module-flags: -target arm64-apple-ios13.0 -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name PenNavUI +// swift-module-flags-ignorable: -no-verify-emitted-module-interface -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2 +import AVFoundation +import CoreData +import CoreGraphics +import CoreHaptics +import CoreLocation +import CoreText +import CryptoKit +import Darwin +import DeveloperToolsSupport +import Foundation +import LinkPresentation +import MapKit +import MessageUI +import Network +@_exported import PenNavUI +import Penguin +import PenguinINRenderer +import QuartzCore +import SafariServices +import Swift +import SwiftUI +import SystemConfiguration +import UIKit +import UserNotifications +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +import os.log +import os +@objc public protocol FloatingPanelLayout { + @objc var position: PenNavUI.FloatingPanelPosition { get } + @objc var initialState: PenNavUI.FloatingPanelState { get } + @objc var anchors: [PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring] { get } + @objc optional func prepareLayout(surfaceView: UIKit.UIView, in view: UIKit.UIView) -> [UIKit.NSLayoutConstraint] + @objc optional func backdropAlpha(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat +} +@objc @_inheritsConvenienceInitializers @objcMembers open class FloatingPanelBottomLayout : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayout { + @objc override dynamic public init() + @objc open var initialState: PenNavUI.FloatingPanelState { + @objc get + } + @objc open var anchors: [PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring] { + @objc get + } + @objc open var position: PenNavUI.FloatingPanelPosition { + @objc get + } + @objc open func prepareLayout(surfaceView: UIKit.UIView, in view: UIKit.UIView) -> [UIKit.NSLayoutConstraint] + @objc open func backdropAlpha(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc deinit +} +extension PenNavUI.CampaignTracking { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var campaignId: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var lastNotificationDate: Foundation.Date? { + @objc get + @objc set + } + #endif +} +public protocol PILocationDelegate { + func onLocationOffCampus(location: _LocationEssentials.CLLocationCoordinate2D) + func onLocationMessage(message: PenNavUI.CampaignMessage) +} +extension PenNavUI.PILocationDelegate { + public func onLocationOffCampus(location: _LocationEssentials.CLLocationCoordinate2D) + public func onLocationMessage(message: PenNavUI.CampaignMessage) +} +@_inheritsConvenienceInitializers @objc(CachedVenue) nonisolated public class CachedVenue : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +extension PenNavUI.SharedLocationCacheData { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var edgeId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var floorId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var latitude: Swift.Double { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var longitude: Swift.Double { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var navigationAvoid: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var venueId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var x: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var y: Swift.Int16 { + @objc get + @objc set + } +} +@_inheritsConvenienceInitializers @objc(CampaignTracking) nonisolated public class CampaignTracking : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@_hasMissingDesignatedInitializers public class Campus { + public var id: Swift.Int? + public var name: Swift.String? + public var coverImage: Swift.String? + @objc deinit +} +@_hasMissingDesignatedInitializers final public class CGTextRenderer { + public enum API { + case uiKit + case appKit + public static func == (a: PenNavUI.CGTextRenderer.API, b: PenNavUI.CGTextRenderer.API) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } + @objc deinit +} +extension PenNavUI.CommandLine { + public static func processImage(with config: PenNavUI.CommandLine.Configuration) throws -> Foundation.Data + public static func makeSVGOptions(for config: PenNavUI.CommandLine.Configuration) -> PenNavUI.SVG.Options + #if compiler(>=5.3) && $NonescapableTypes + public static func makeTextAPI(for api: PenNavUI.CommandLine.API?) -> PenNavUI.CGTextRenderer.API + #endif + public static func processImage(_ image: PenNavUI.SVG, with config: PenNavUI.CommandLine.Configuration) throws -> Foundation.Data + public static func makeImageInsets(for insets: PenNavUI.CommandLine.Insets) throws -> PenNavUI.SVG.Insets +} +extension PenNavUI.TagFlowLayout { + public enum LayoutAlignment : Swift.Int { + case left + case center + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } +} +@objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency public class TagFlowLayout : UIKit.UICollectionViewFlowLayout { + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutAttributesForElements(in rect: CoreFoundation.CGRect) -> [UIKit.UICollectionViewLayoutAttributes]? + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var flipsHorizontallyInOppositeLayoutDirection: Swift.Bool { + @objc get + } + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var developmentLayoutDirection: UIKit.UIUserInterfaceLayoutDirection { + @objc get + } + @objc deinit +} +extension PenNavUI.CommandLine { + public struct Configuration { + public var input: Foundation.URL + public var inputUltralight: Foundation.URL? + public var inputBlack: Foundation.URL? + public var output: Foundation.URL + public var format: PenNavUI.CommandLine.Format + public var size: PenNavUI.CommandLine.Size + public var api: PenNavUI.CommandLine.API? + public var insets: PenNavUI.CommandLine.Insets + public var insetsUltralight: PenNavUI.CommandLine.Insets? + public var insetsBlack: PenNavUI.CommandLine.Insets? + public var scale: PenNavUI.CommandLine.Scale + public var options: PenNavUI.SVG.Options + public var precision: Swift.Int? + } + public enum Format : Swift.String { + case jpeg + case pdf + case png + case swift + case sfsymbol + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } + } + public enum API : Swift.String { + case appkit + case uikit + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } + } + public enum Size : Swift.Equatable { + case `default` + case custom(width: Swift.Int, height: Swift.Int) + public static func == (a: PenNavUI.CommandLine.Size, b: PenNavUI.CommandLine.Size) -> Swift.Bool + } + public enum Scale : Swift.Equatable { + case `default` + case retina + case superRetina + public static func == (a: PenNavUI.CommandLine.Scale, b: PenNavUI.CommandLine.Scale) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } + public struct Insets : Swift.Equatable { + public var top: Swift.Double? + public var left: Swift.Double? + public var bottom: Swift.Double? + public var right: Swift.Double? + #if compiler(>=5.3) && $NonescapableTypes + public init(top: Swift.Double? = nil, left: Swift.Double? = nil, bottom: Swift.Double? = nil, right: Swift.Double? = nil) + #endif + public static func == (a: PenNavUI.CommandLine.Insets, b: PenNavUI.CommandLine.Insets) -> Swift.Bool + } + public static func parseConfiguration(from args: [Swift.String], baseDirectory: Foundation.URL) throws -> PenNavUI.CommandLine.Configuration +} +extension UIKit.UISpringTimingParameters { + @_Concurrency.MainActor @preconcurrency convenience public init(decelerationRate: CoreFoundation.CGFloat, frequencyResponse: CoreFoundation.CGFloat, initialVelocity: CoreFoundation.CGVector = .zero) + @_Concurrency.MainActor @preconcurrency convenience public init(dampingRatio: CoreFoundation.CGFloat, frequencyResponse: CoreFoundation.CGFloat, initialVelocity: CoreFoundation.CGVector = .zero) +} +@objc @_inheritsConvenienceInitializers final public class PenNavUIManager : ObjectiveC.NSObject { + public static var shared: PenNavUI.PenNavUIManager + final public var initializationDelegate: (any PenNavUI.PenNavInitializationDelegate)? + final public var eventsDelegate: (any PenNavUI.PIEventsDelegate)? + final public var locationDelegate: (any PenNavUI.PILocationDelegate)? + final public func build() + @discardableResult + final public func setLanguage(_ language: Swift.String) -> PenNavUI.PenNavUIManager + public static func setLanguage(_ language: Swift.String) + @discardableResult + final public func setDeepLinkComponents(scheme: Swift.String, host: Swift.String) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func setDeepLink(_ url: Foundation.URL?) + #endif + @discardableResult + final public func setEnableReportIssue(enable: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setShareLocationCallback(enabled: Swift.Bool) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func navigate(to referenceID: Swift.String, completion: ((Swift.Bool, PenNavUI.PenNavUIError?) -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func getCampusListing(baseURL: Swift.String, serviceName: Swift.String, clientID: Swift.String, clientKey: Swift.String, completion: @escaping ([PenNavUI.Campus]?) -> ()) + #endif + final public func setAppColor(color: UIKit.UIColor) -> PenNavUI.PenNavUIManager + public static func getVersion() -> Swift.String + final public func present(root: UIKit.UIViewController, view: UIKit.UIView) + final public func dismiss() + @discardableResult + final public func setClientKey(_ key: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setClientID(_ ID: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setUsername(_ userID: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setServiceName(dataServiceName: Swift.String, positionServiceName: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setBaseURL(dataURL: Swift.String, positionURL: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setIsShowUserName(_ isShowUserName: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setBackButtonVisibility(visible: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setDebugOptionsVisibility(visible: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setCampusID(_ campusID: Swift.Int) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setIsUpdateUserLocationSmoothly(_ isUpdateUserLocationSmoothly: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setOutdoorEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setSimulationModeEnabled(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setStepDetectionEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setTransitionEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setGeographicCoordinateEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func getToken(clientID: Swift.String, clientKey: Swift.String, showProgress: Swift.Bool, completion: @escaping (Swift.String?, Penguin.ErrorCode?) -> Swift.Void) + #endif + final public func setToken(token: Swift.String) + final public func clearDatabase() + #if compiler(>=5.3) && $NonescapableTypes + final public func getVersion() -> Swift.String? + #endif + @objc override dynamic public init() + @objc deinit +} +extension PenNavUI.PenNavUIManager : CoreLocation.CLLocationManagerDelegate { + @objc final public func locationManagerDidChangeAuthorization(_ manager: CoreLocation.CLLocationManager) + @objc final public func locationManager(_ manager: CoreLocation.CLLocationManager, didChangeAuthorization status: CoreLocation.CLAuthorizationStatus) +} +extension PenNavUI.PenNavUIManager : Penguin.PIInitializerDelegate { + @objc final public func onReady(warning: Penguin.WarningCode) + @objc final public func onInitilzationError(error: Penguin.ErrorCode) + @objc final public func onInitializationProgressChange(status: Penguin.SDKOperation) +} +public enum DOM { +} +extension PenNavUI.DOM { + public typealias Float = Swift.Float + public typealias Coordinate = Swift.Float + public typealias Length = Swift.Int + public typealias Opacity = Swift.Float + public typealias Bool = Swift.Bool + public typealias URL = Foundation.URL +} +extension PenNavUI.PenNavStyle { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var type: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var value: Foundation.Data? { + @objc get + @objc set + } + #endif +} +public enum CommandLine { +} +@objc public protocol FloatingPanelBehavior { + @objc optional var springDecelerationRate: CoreFoundation.CGFloat { get } + @objc optional var springResponseTime: CoreFoundation.CGFloat { get } + @objc optional var momentumProjectionRate: CoreFoundation.CGFloat { get } + @objc optional func shouldProjectMomentum(_ fpc: PenNavUI.FloatingPanelController, to proposedState: PenNavUI.FloatingPanelState) -> Swift.Bool + @objc optional func redirectionalProgress(_ fpc: PenNavUI.FloatingPanelController, from: PenNavUI.FloatingPanelState, to: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc optional func allowsRubberBanding(for edge: UIUtilities.UIRectEdge) -> Swift.Bool + @objc optional var removalInteractionVelocityThreshold: CoreFoundation.CGFloat { get } +} +open class FloatingPanelDefaultBehavior : PenNavUI.FloatingPanelBehavior { + public init() + @objc open var springDecelerationRate: CoreFoundation.CGFloat { + @objc get + } + @objc open var springResponseTime: CoreFoundation.CGFloat { + @objc get + } + @objc open var momentumProjectionRate: CoreFoundation.CGFloat { + @objc get + } + @objc open func redirectionalProgress(_ fpc: PenNavUI.FloatingPanelController, from: PenNavUI.FloatingPanelState, to: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc open func allowsRubberBanding(for edge: UIUtilities.UIRectEdge) -> Swift.Bool + @objc open var removalInteractionVelocityThreshold: CoreFoundation.CGFloat + @objc deinit +} +public enum IssueType { + case poi + case venue + case location + case navigation + public static func == (a: PenNavUI.IssueType, b: PenNavUI.IssueType) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } +} +extension _LocationEssentials.CLLocationCoordinate2D : Swift.Codable { + public init(from decoder: any Swift.Decoder) throws + public func encode(to encoder: any Swift.Encoder) throws +} +@_inheritsConvenienceInitializers @objc(FavoriteCacheData) nonisolated public class FavoriteCacheData : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@objc public enum FloatingPanelReferenceEdge : Swift.Int { + case top + case left + case bottom + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@objc public enum FloatingPanelLayoutReferenceGuide : Swift.Int { + case superview = 0 + case safeArea = 1 + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@objc public enum FloatingPanelLayoutContentBoundingGuide : Swift.Int { + case none = 0 + case superview = 1 + case safeArea = 2 + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension PenNavUI.CommandLine { + public enum Error : Swift.Error { + case invalid + case unsupported + case fileNotFound + public static func == (a: PenNavUI.CommandLine.Error, b: PenNavUI.CommandLine.Error) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } +} +public protocol PIEventsDelegate { + func onBackButtonPressed() + func onPenNavUIDismiss() + func onReportIssue(_ issue: PenNavUI.IssueType) + #if compiler(>=5.3) && $NonescapableTypes + func onShareLocation(link: Swift.String?) + #endif + func onSwitchCampus(campusId: Swift.Int) +} +extension PenNavUI.PIEventsDelegate { + public func onBackButtonPressed() + public func onPenNavUIDismiss() + public func onReportIssue(_ issue: PenNavUI.IssueType) + #if compiler(>=5.3) && $NonescapableTypes + public func onShareLocation(link: Swift.String?) + #endif + public func onSwitchCampus(campusId: Swift.Int) +} +@_inheritsConvenienceInitializers @objc(PenNavUITableUpdate) nonisolated public class PenNavUITableUpdate : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +public struct SFSymbolRenderer { + public init(options: PenNavUI.SVG.Options, insets: PenNavUI.CommandLine.Insets, insetsUltralight: PenNavUI.CommandLine.Insets, insetsBlack: PenNavUI.CommandLine.Insets, precision: Swift.Int) + #if compiler(>=5.3) && $NonescapableTypes + public func render(regular: Foundation.URL, ultralight: Foundation.URL?, black: Foundation.URL?) throws -> Swift.String + #endif +} +@_inheritsConvenienceInitializers @objc(PenNavStyle) nonisolated public class PenNavStyle : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +public struct GeofenceConfiguration { + #if compiler(>=5.3) && $NonescapableTypes + public init(baseURL: Swift.String, serviceName: Swift.String, clientId: Swift.String, clientKey: Swift.String, campusId: Swift.Int? = nil) + #endif +} +public struct CampaignMessage { + public var title: Swift.String + public var description: Swift.String +} +extension UIKit.UIImage { + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(svgNamed name: Swift.String, in bundle: Foundation.Bundle = .main, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(initWithSVGData:) convenience dynamic public init?(svgData: Foundation.Data) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(initWithContentsOfSVGFile:) convenience dynamic public init?(contentsOfSVGFile path: Swift.String) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(svgNamed:) public static func _svgNamed(_ name: Swift.String) -> UIKit.UIImage? + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(svgNamed:inBundle:) public static func _svgNamed(_ name: Swift.String, in bundle: Foundation.Bundle) -> UIKit.UIImage? + #endif + convenience public init(_ image: PenNavUI.SVG) +} +extension PenNavUI.SVG { + final public func rasterize() -> UIKit.UIImage + #if compiler(>=5.3) && $NonescapableTypes + final public func rasterize(with size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, insets: UIKit.UIEdgeInsets = .zero) -> UIKit.UIImage + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func pngData(size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, insets: UIKit.UIEdgeInsets = .zero) throws -> Foundation.Data + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func jpegData(size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, compressionQuality quality: CoreFoundation.CGFloat = 1, insets: UIKit.UIEdgeInsets = .zero) throws -> Foundation.Data + #endif +} +public protocol PenNavInitializationDelegate { + func onPenNavInitializationSuccess() + func onPenNavInitializationError(errorType: PenNavUI.PenNavUIError, errorDescription: Swift.String) +} +extension Penguin.GateNodeModel : Penguin.NodeRepresentable { + final public var isUpEscalator: Swift.Bool { + get + } + final public var isDownEscalator: Swift.Bool { + get + } +} +@_inheritsConvenienceInitializers @objc(SharedLocationCacheData) nonisolated public class SharedLocationCacheData : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@objc open class FloatingPanelState : ObjectiveC.NSObject, Foundation.NSCopying, Swift.RawRepresentable { + public typealias RawValue = Swift.String + #if compiler(>=5.3) && $NonescapableTypes + required public init?(rawValue: PenNavUI.FloatingPanelState.RawValue) + #endif + @objc public init(rawValue: PenNavUI.FloatingPanelState.RawValue, order: Swift.Int) + final public let rawValue: PenNavUI.FloatingPanelState.RawValue + final public let order: Swift.Int + #if compiler(>=5.3) && $NonescapableTypes + @objc public func copy(with zone: ObjectiveC.NSZone? = nil) -> Any + #endif + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc override dynamic public var debugDescription: Swift.String { + @objc get + } + @objc(Full) public static let full: PenNavUI.FloatingPanelState + @objc(Half) public static let half: PenNavUI.FloatingPanelState + @objc(Tip) public static let tip: PenNavUI.FloatingPanelState + @objc(Hidden) public static let hidden: PenNavUI.FloatingPanelState + @objc deinit +} +@objc @_inheritsConvenienceInitializers public class AsynchronousOperation : Foundation.Operation { + @objc override dynamic public var isAsynchronous: Swift.Bool { + @objc get + } + @objc override dynamic public var isExecuting: Swift.Bool { + @objc get + } + @objc override dynamic public var isFinished: Swift.Bool { + @objc get + } + public func completeOperation() + @objc override dynamic public func start() + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @objc(FloatingPanelSurfaceAppearance) @objcMembers public class SurfaceAppearance : ObjectiveC.NSObject { + @_inheritsConvenienceInitializers @objc(FloatingPanelSurfaceAppearanceShadow) public class Shadow : ObjectiveC.NSObject { + @objc public var hidden: Swift.Bool + @objc public var color: UIKit.UIColor + @objc public var offset: CoreFoundation.CGSize + @objc public var opacity: Swift.Float + @objc public var radius: CoreFoundation.CGFloat + @objc public var spread: CoreFoundation.CGFloat + @objc override dynamic public init() + @objc deinit + } + @objc public var backgroundColor: UIKit.UIColor? + @objc public var cornerRadius: CoreFoundation.CGFloat + @objc @available(iOS 13.0, *) + public var cornerCurve: QuartzCore.CALayerCornerCurve { + @objc get + @objc set + } + @objc public var shadows: [PenNavUI.SurfaceAppearance.Shadow] + @objc public var borderColor: UIKit.UIColor? + @objc public var borderWidth: CoreFoundation.CGFloat + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc(FloatingPanelSurfaceView) @objcMembers @_Concurrency.MainActor @preconcurrency public class SurfaceView : UIKit.UIView { + @objc @_Concurrency.MainActor @preconcurrency final public let grabberHandle: PenNavUI.GrabberView + @objc @_Concurrency.MainActor @preconcurrency public var grabberHandlePadding: CoreFoundation.CGFloat { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var grabberAreaOffset: CoreFoundation.CGFloat + @objc @_Concurrency.MainActor @preconcurrency public var grabberHandleSize: CoreFoundation.CGSize { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency weak public var contentView: UIKit.UIView? + @objc @_Concurrency.MainActor @preconcurrency public var contentPadding: UIKit.UIEdgeInsets { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var backgroundColor: UIKit.UIColor? { + @objc get + @objc set + } + #endif + @objc @_Concurrency.MainActor @preconcurrency public var appearance: PenNavUI.SurfaceAppearance { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var containerMargins: UIKit.UIEdgeInsets { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency final public let containerView: UIKit.UIView + @_Concurrency.MainActor @preconcurrency @objc override dynamic public class var requiresConstraintBasedLayout: Swift.Bool { + @objc get + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func updateConstraints() + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutSubviews() + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var intrinsicContentSize: CoreFoundation.CGSize { + @objc get + } + @objc deinit +} +extension Penguin.Gnode : Penguin.NodeRepresentable { + final public var isUpEscalator: Swift.Bool { + get + } + final public var isDownEscalator: Swift.Bool { + get + } +} +public enum PenNavUIError : Swift.String, Foundation.LocalizedError { + case missingBaseUrl + case missingDataServiceName + case missingPositionServiceName + case missingRootController + case missingViewContainer + case missingClientId + case missingClientName + case invalidClientKey + case unauthorized + case noInternetConnection + case bluetoothTurnedOff + case locationServicesTurnedOff + case loadingDataError + case osNotSupported + case permissionsNotGranted + case sensorsInitializationError + case unknownError + case locationPermissionNotGranted + case bluetoothPermissionNotGranted + case invalidCampusId + case noCampusListFound + case buildCancelled + public var errorDescription: Swift.String { + get + } + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } +} +public enum ValidationError : Swift.Error { + case noClientID + case noClientNameKey + case noServiesName + case noBaseUrl + case missingFonts + public static func == (a: PenNavUI.ValidationError, b: PenNavUI.ValidationError) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } +} +@objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency final public class FloatingPanelPanGestureRecognizer : UIKit.UIPanGestureRecognizer { + @_Concurrency.MainActor @preconcurrency @objc override final public func touchesBegan(_ touches: Swift.Set, with event: UIKit.UIEvent) + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override weak final public var delegate: (any UIKit.UIGestureRecognizerDelegate)? { + @objc get + @objc set + } + #endif + @_Concurrency.MainActor @preconcurrency final public var delegateOrigin: any UIKit.UIGestureRecognizerDelegate { + get + } + @_Concurrency.MainActor @preconcurrency weak final public var delegateProxy: (any UIKit.UIGestureRecognizerDelegate)? { + get + set + } + @objc deinit +} +extension PenNavUI.CachedVenue { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var id: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var coverImage: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var address: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var buildingNumber: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var phone: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var email: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var website: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var floorCount: Swift.Int16 { + @objc get + @objc set + } +} +@_hasMissingDesignatedInitializers @objc(FloatingPanelGrabberView) @_Concurrency.MainActor @preconcurrency public class GrabberView : UIKit.UIView { + @_Concurrency.MainActor @preconcurrency public var barColor: UIKit.UIColor { + get + set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutSubviews() + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func hitTest(_ point: CoreFoundation.CGPoint, with event: UIKit.UIEvent?) -> UIKit.UIView? + #endif + @objc deinit +} +@objc public enum FloatingPanelPosition : Swift.Int { + case top + case left + case bottom + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension PenNavUI.FavoriteCacheData { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var createDate: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var deviceId: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var type: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var distance: Swift.Double { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var id: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var label: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var poiId: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var userName: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var location: PenNavUI.SharedLocationCacheData? { + @objc get + @objc set + } + #endif +} +@objc public protocol FloatingPanelLayoutAnchoring { + @objc var referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide { get } + @objc func layoutConstraints(_ fpc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteInset: CoreFoundation.CGFloat, edge: PenNavUI.FloatingPanelReferenceEdge, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide) + @objc public init(fractionalInset: CoreFoundation.CGFloat, edge: PenNavUI.FloatingPanelReferenceEdge, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc deinit +} +extension PenNavUI.FloatingPanelLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelIntrinsicLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteOffset offset: CoreFoundation.CGFloat, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide = .safeArea) + @objc public init(fractionalOffset offset: CoreFoundation.CGFloat, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide = .safeArea) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc deinit +} +extension PenNavUI.FloatingPanelIntrinsicLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelAdaptiveLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteOffset offset: CoreFoundation.CGFloat, contentLayout: UIKit.UILayoutGuide, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide, contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide = .none) + @objc public init(fractionalOffset offset: CoreFoundation.CGFloat, contentLayout: UIKit.UILayoutGuide, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide, contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide = .none) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc final public let contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide + @objc deinit +} +extension PenNavUI.FloatingPanelAdaptiveLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@_hasMissingDesignatedInitializers public class ImageCache { + #if compiler(>=5.3) && $NonescapableTypes + public func getImage(_ url: Foundation.URL, completion: @escaping (UIKit.UIImage?) -> Swift.Void) + #endif + #if compiler(>=5.3) && $NonescapableTypes + public func getImageFromDocuments(url: Foundation.URL) -> UIKit.UIImage? + #endif + @objc deinit +} +extension PenNavUI.ImageCache { + #if compiler(>=5.3) && $NonescapableTypes + public func getSVG(withURL url: Foundation.URL, completion: @escaping (UIKit.UIImage?) -> Swift.Void) + #endif +} +extension PenNavUI.PenNavUITableUpdate { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var lastUpdateTime: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var tableName: Swift.String? { + @objc get + @objc set + } + #endif +} +extension CoreGraphics.CGContext { + #if compiler(>=5.3) && $NonescapableTypes + public func draw(_ image: PenNavUI.SVG, in rect: CoreFoundation.CGRect? = nil) + #endif +} +extension PenNavUI.SVG { + #if compiler(>=5.3) && $NonescapableTypes + final public func pdfData(size: CoreFoundation.CGSize? = nil, insets: PenNavUI.SVG.Insets = .zero) throws -> Foundation.Data + #endif +} +public struct SVGRenderer { + public static func makeExpanded(path: Swift.String, transform: Swift.String, precision: Swift.Int = 4) throws -> Swift.String +} +@_hasMissingDesignatedInitializers @objc(SVGImage) final public class SVG : ObjectiveC.NSObject { + final public let size: CoreFoundation.CGSize + public struct Options : Swift.OptionSet { + public let rawValue: Swift.Int + public init(rawValue: Swift.Int) + public static let hideUnsupportedFilters: PenNavUI.SVG.Options + public static let `default`: PenNavUI.SVG.Options + public typealias ArrayLiteralElement = PenNavUI.SVG.Options + public typealias Element = PenNavUI.SVG.Options + public typealias RawValue = Swift.Int + } + @objc deinit +} +@available(*, deprecated, renamed: "SVG") +public typealias Image = PenNavUI.SVG +extension PenNavUI.SVG { + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(fileURL url: Foundation.URL, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(named name: Swift.String, in bundle: Foundation.Bundle = Bundle.main, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(data: Foundation.Data, options: PenNavUI.SVG.Options = .default) + #endif + public struct Insets : Swift.Equatable { + public var top: CoreFoundation.CGFloat + public var left: CoreFoundation.CGFloat + public var bottom: CoreFoundation.CGFloat + public var right: CoreFoundation.CGFloat + public static let zero: PenNavUI.SVG.Insets + public static func == (a: PenNavUI.SVG.Insets, b: PenNavUI.SVG.Insets) -> Swift.Bool + } +} +@objc public protocol FloatingPanelControllerDelegate { + @objc(floatingPanel:layoutForTraitCollection:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, layoutFor newCollection: UIKit.UITraitCollection) -> any PenNavUI.FloatingPanelLayout + @objc(floatingPanel:layoutForSize:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, layoutFor size: CoreFoundation.CGSize) -> any PenNavUI.FloatingPanelLayout + @objc(floatingPanel:animatorForPresentingToState:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, animatorForPresentingTo state: PenNavUI.FloatingPanelState) -> UIKit.UIViewPropertyAnimator + @objc(floatingPanel:animatorForDismissingWithVelocity:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, animatorForDismissingWith velocity: CoreFoundation.CGVector) -> UIKit.UIViewPropertyAnimator + @objc optional func floatingPanelDidChangeState(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelShouldBeginDragging(_ fpc: PenNavUI.FloatingPanelController) -> Swift.Bool + @objc optional func floatingPanelDidMove(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelWillBeginDragging(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelWillEndDragging(_ fpc: PenNavUI.FloatingPanelController, withVelocity velocity: CoreFoundation.CGPoint, targetState: Swift.UnsafeMutablePointer) + @objc optional func floatingPanelDidEndDragging(_ fpc: PenNavUI.FloatingPanelController, willAttract attract: Swift.Bool) + @objc optional func floatingPanelWillBeginAttracting(_ fpc: PenNavUI.FloatingPanelController, to state: PenNavUI.FloatingPanelState) + @objc optional func floatingPanelDidEndAttracting(_ fpc: PenNavUI.FloatingPanelController) + @objc(floatingPanel:shouldRemoveAtLocation:withVelocity:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, shouldRemoveAt location: CoreFoundation.CGPoint, with velocity: CoreFoundation.CGVector) -> Swift.Bool + @objc(floatingPanelWillRemove:) optional func floatingPanelWillRemove(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelDidRemove(_ fpc: PenNavUI.FloatingPanelController) + @objc(floatingPanel:contentOffsetForPinningScrollView:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, contentOffsetForPinning trackingScrollView: UIKit.UIScrollView) -> CoreFoundation.CGPoint + @objc(floatingPanel:shouldAllowToScroll:in:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, shouldAllowToScroll scrollView: UIKit.UIScrollView, in state: PenNavUI.FloatingPanelState) -> Swift.Bool +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc @_Concurrency.MainActor @preconcurrency open class FloatingPanelController : UIKit.UIViewController { + @objc public enum ContentInsetAdjustmentBehavior : Swift.Int { + case always + case never + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc public enum ContentMode : Swift.Int { + case `static` + case fitToBounds + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc @_Concurrency.MainActor @preconcurrency weak public var delegate: (any PenNavUI.FloatingPanelControllerDelegate)? { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var surfaceView: PenNavUI.SurfaceView! { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var backdropView: PenNavUI.BackdropView! { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency weak public var trackingScrollView: UIKit.UIScrollView? { + @objc get + } + #endif + @objc @_Concurrency.MainActor @preconcurrency public var panGestureRecognizer: PenNavUI.FloatingPanelPanGestureRecognizer { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var state: PenNavUI.FloatingPanelState { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var isAttracting: Swift.Bool { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var layout: any PenNavUI.FloatingPanelLayout { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var behavior: any PenNavUI.FloatingPanelBehavior { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var adjustedContentInsets: UIKit.UIEdgeInsets { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var contentInsetAdjustmentBehavior: PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior + @objc @_Concurrency.MainActor @preconcurrency public var isRemovalInteractionEnabled: Swift.Bool { + @objc(isRemovalInteractionEnabled) get + @objc(setRemovalInteractionEnabled:) set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var contentViewController: UIKit.UIViewController? { + @objc get + @objc set + } + #endif + @_Concurrency.MainActor @preconcurrency public var nearbyState: PenNavUI.FloatingPanelState { + get + } + @objc @_Concurrency.MainActor @preconcurrency public var contentMode: PenNavUI.FloatingPanelController.ContentMode { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public init(delegate: (any PenNavUI.FloatingPanelControllerDelegate)? = nil) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func loadView() + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewDidLayoutSubviews() + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewDidAppear(_ animated: Swift.Bool) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewWillTransition(to size: CoreFoundation.CGSize, with coordinator: any UIKit.UIViewControllerTransitionCoordinator) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func willTransition(to newCollection: UIKit.UITraitCollection, with coordinator: any UIKit.UIViewControllerTransitionCoordinator) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewWillDisappear(_ animated: Swift.Bool) + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForStatusBarStyle: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForStatusBarHidden: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForScreenEdgesDeferringSystemGestures: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForHomeIndicatorAutoHidden: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(show:completion:) @_Concurrency.MainActor @preconcurrency public func show(animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(hide:completion:) @_Concurrency.MainActor @preconcurrency public func hide(animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(addPanelToParent:at:animated:completion:) @_Concurrency.MainActor @preconcurrency public func addPanel(toParent parent: UIKit.UIViewController, at viewIndex: Swift.Int = -1, animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(removePanelFromParent:completion:) @_Concurrency.MainActor @preconcurrency public func removePanelFromParent(animated: Swift.Bool, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(moveToState:animated:completion:) @_Concurrency.MainActor @preconcurrency public func move(to: PenNavUI.FloatingPanelState, animated: Swift.Bool, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency public func set(contentViewController: UIKit.UIViewController?) + #endif + @objc(trackScrollView:) @_Concurrency.MainActor @preconcurrency public func track(scrollView: UIKit.UIScrollView) + @_Concurrency.MainActor @preconcurrency public func followScrollViewBouncing() + @objc(untrackScrollView:) @_Concurrency.MainActor @preconcurrency public func untrack(scrollView: UIKit.UIScrollView) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func accessibilityPerformEscape() -> Swift.Bool + @objc @_Concurrency.MainActor @preconcurrency public func invalidateLayout() + @objc @_Concurrency.MainActor @preconcurrency public func surfaceLocation(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGPoint + @objc @_Concurrency.MainActor @preconcurrency public var surfaceLocation: CoreFoundation.CGPoint { + @objc get + @objc set + } + @_Concurrency.MainActor @preconcurrency public func addTopPadding(padding: CoreFoundation.CGFloat) + @objc deinit +} +@_hasMissingDesignatedInitializers @objc(FloatingPanelBackdropView) @_Concurrency.MainActor @preconcurrency public class BackdropView : UIKit.UIView { + @objc @_Concurrency.MainActor @preconcurrency public var dismissalTapGestureRecognizer: UIKit.UITapGestureRecognizer + @objc deinit +} +@_hasMissingDesignatedInitializers public class NetworkMonitor { + @objc deinit +} +public enum GeofenceError : Swift.Error, Foundation.LocalizedError { + case permissionDenied + case errorInConfiguration + case authenticationFailed + case indoorDeloymentOnly + case geofenceConfigurationsMissing + case geofenceSDKNotStarted + case geofenceSDKAlreadyStarted + case sdkError(Swift.String) + #if compiler(>=5.3) && $NonescapableTypes + public var errorDescription: Swift.String? { + get + } + #endif +} +public protocol PIGeofenceManagerDelegate { + func geofenceStarted() + #if compiler(>=5.3) && $NonescapableTypes + func geofenceFailedToStart(_ error: Swift.String?) + #endif + func geofenceStopped() + func geofenceUpdated() +} +@objc @_inheritsConvenienceInitializers public class PIGeofenceManager : ObjectiveC.NSObject { + public static var shared: PenNavUI.PIGeofenceManager { + get + } + public func initializeLocationManager() + public func setGeofenceSDKConfigurations(_ configurations: PenNavUI.GeofenceConfiguration) + public func setGeofenceDelegate(delegate: any PenNavUI.PIGeofenceManagerDelegate) + public func startGeofencing(delegate: any PenNavUI.PIGeofenceManagerDelegate) + public func stopGeofencing() + public func updateGeofencing() + @objc override dynamic public init() + @objc deinit +} +extension PenNavUI.PIGeofenceManager : CoreLocation.CLLocationManagerDelegate { + @objc dynamic public func locationManager(_ manager: CoreLocation.CLLocationManager, didChangeAuthorization status: CoreLocation.CLAuthorizationStatus) +} +extension PenNavUI.PIGeofenceManager { + @objc dynamic public func locationManager(_ manager: CoreLocation.CLLocationManager, didEnterRegion region: CoreLocation.CLRegion) +} +extension PenNavUI.CGTextRenderer { + public typealias Size = (width: Swift.Int, height: Swift.Int) + #if compiler(>=5.3) && $NonescapableTypes + public static func render(named name: Swift.String, in bundle: Foundation.Bundle = Bundle.main, size: PenNavUI.CGTextRenderer.Size? = nil, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + #endif + #if compiler(>=5.3) && $NonescapableTypes + public static func render(fileURL: Foundation.URL, size: PenNavUI.CGTextRenderer.Size? = nil, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + #endif + public static func render(data: Foundation.Data, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + public static func renderPath(from svgPath: Swift.String) throws -> Swift.String +} +extension PenNavUI.CGTextRenderer.API : Swift.Equatable {} +extension PenNavUI.CGTextRenderer.API : Swift.Hashable {} +extension PenNavUI.CommandLine.Scale : Swift.Hashable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.Equatable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.Hashable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.Format : Swift.Equatable {} +extension PenNavUI.CommandLine.Format : Swift.Hashable {} +extension PenNavUI.CommandLine.Format : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.API : Swift.Equatable {} +extension PenNavUI.CommandLine.API : Swift.Hashable {} +extension PenNavUI.CommandLine.API : Swift.RawRepresentable {} +extension PenNavUI.IssueType : Swift.Equatable {} +extension PenNavUI.IssueType : Swift.Hashable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.Equatable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.Hashable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.Equatable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.Hashable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.Equatable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.Hashable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.Error : Swift.Equatable {} +extension PenNavUI.CommandLine.Error : Swift.Hashable {} +extension PenNavUI.PenNavUIError : Swift.Equatable {} +extension PenNavUI.PenNavUIError : Swift.Hashable {} +extension PenNavUI.PenNavUIError : Swift.RawRepresentable {} +extension PenNavUI.ValidationError : Swift.Equatable {} +extension PenNavUI.ValidationError : Swift.Hashable {} +extension PenNavUI.FloatingPanelPosition : Swift.Equatable {} +extension PenNavUI.FloatingPanelPosition : Swift.Hashable {} +extension PenNavUI.FloatingPanelPosition : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.Equatable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.Hashable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.Equatable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.Hashable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.RawRepresentable {} diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/module.modulemap b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/module.modulemap new file mode 100644 index 00000000..92c421ef --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module PenNavUI { + umbrella header "PenNavUI.h" + export * + + module * { export * } +} + +module PenNavUI.Swift { + header "PenNavUI-Swift.h" + requires objc +} diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/NavigationFeedbackViewController.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/NavigationFeedbackViewController.nib new file mode 100644 index 00000000..918bcf4b Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/NavigationFeedbackViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/NavigationSearchViewController.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/NavigationSearchViewController.nib new file mode 100644 index 00000000..07100027 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/NavigationSearchViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/NavigationViewController.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/NavigationViewController.nib new file mode 100644 index 00000000..a1c121c2 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/NavigationViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingCell.nib new file mode 100644 index 00000000..79227272 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingDetailsView.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingDetailsView.nib/objects-14.0+.nib new file mode 100644 index 00000000..ebeefd70 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingDetailsView.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingDetailsView.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingDetailsView.nib/runtime.nib new file mode 100644 index 00000000..71cb3c71 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingDetailsView.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingDetailsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingDetailsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..fb67e878 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingDetailsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingDetailsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingDetailsViewController.nib/runtime.nib new file mode 100644 index 00000000..297fd368 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingDetailsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingFullAlertSound.wav b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingFullAlertSound.wav new file mode 100644 index 00000000..e5f07e58 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ParkingFullAlertSound.wav differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PenNavUI b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PenNavUI new file mode 100755 index 00000000..d577ec9e Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PenNavUI differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PenNavUI.momd/PenNavDB.mom b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PenNavUI.momd/PenNavDB.mom new file mode 100644 index 00000000..f9e8ef31 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PenNavUI.momd/PenNavDB.mom differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PenNavUI.momd/VersionInfo.plist b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PenNavUI.momd/VersionInfo.plist new file mode 100644 index 00000000..20c8aff4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PenNavUI.momd/VersionInfo.plist differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PlaceImageCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PlaceImageCell.nib new file mode 100644 index 00000000..d0523aef Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PlaceImageCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PlaceImagesCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PlaceImagesCell.nib new file mode 100644 index 00000000..fd4fd25f Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PlaceImagesCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PoiCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PoiCell.nib new file mode 100644 index 00000000..b3ed3b48 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PoiCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PoiDetailsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PoiDetailsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..c3582e39 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PoiDetailsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PoiDetailsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PoiDetailsViewController.nib/runtime.nib new file mode 100644 index 00000000..ea565c6f Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/PoiDetailsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Black.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Black.ttf new file mode 100644 index 00000000..4d409e03 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Black.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-BlackItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-BlackItalic.ttf new file mode 100644 index 00000000..f3c5e0af Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-BlackItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Bold.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Bold.ttf new file mode 100644 index 00000000..44313ca4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Bold.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-BoldItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-BoldItalic.ttf new file mode 100644 index 00000000..939fc7d4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-BoldItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ExtraBold.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ExtraBold.ttf new file mode 100644 index 00000000..88d0f1eb Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ExtraBold.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ExtraBoldItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ExtraBoldItalic.ttf new file mode 100644 index 00000000..da7a257a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ExtraBoldItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ExtraLight.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ExtraLight.ttf new file mode 100644 index 00000000..4620a421 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ExtraLight.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ExtraLightItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ExtraLightItalic.ttf new file mode 100644 index 00000000..2c5ad2f8 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ExtraLightItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Italic.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Italic.ttf new file mode 100644 index 00000000..8efebbf6 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Italic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Light.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Light.ttf new file mode 100644 index 00000000..8a6ac685 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Light.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-LightItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-LightItalic.ttf new file mode 100644 index 00000000..b8f46a67 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-LightItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Medium.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Medium.ttf new file mode 100644 index 00000000..5b46f198 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Medium.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-MediumItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-MediumItalic.ttf new file mode 100644 index 00000000..e362e570 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-MediumItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Regular.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Regular.ttf new file mode 100644 index 00000000..246a861a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Regular.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-SemiBold.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-SemiBold.ttf new file mode 100644 index 00000000..3bbad2a8 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-SemiBold.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-SemiBoldItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-SemiBoldItalic.ttf new file mode 100644 index 00000000..74a7c43b Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-SemiBoldItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Thin.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Thin.ttf new file mode 100644 index 00000000..205b2843 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-Thin.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ThinItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ThinItalic.ttf new file mode 100644 index 00000000..2f4b05e7 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/Poppins-ThinItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ReroutingView.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ReroutingView.nib new file mode 100644 index 00000000..f2f43bbf Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ReroutingView.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteCell.nib new file mode 100644 index 00000000..922583d8 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteDetailsViewController.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteDetailsViewController.nib new file mode 100644 index 00000000..d15eca4d Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteDetailsViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteDirectionsViewController.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteDirectionsViewController.nib new file mode 100644 index 00000000..5db050b5 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteDirectionsViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteOptionsViewController.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteOptionsViewController.nib new file mode 100644 index 00000000..7aff491c Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteOptionsViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RoutePlannerViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RoutePlannerViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..08cffef4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RoutePlannerViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RoutePlannerViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RoutePlannerViewController.nib/runtime.nib new file mode 100644 index 00000000..18cb8594 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RoutePlannerViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteRecalculating.ahap b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteRecalculating.ahap new file mode 100644 index 00000000..09553593 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/RouteRecalculating.ahap @@ -0,0 +1,55 @@ +{ + "Pattern": [ + { + "Event": { + "Time": 0.0, + "EventType": "HapticContinuous", + "EventDuration": 0.2, + "EventParameters": [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.50 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.50 + } + ] + } + }, + { + "Event": { + "Time": 0.25, + "EventType": "HapticContinuous", + "EventDuration": 0.2, + "EventParameters": [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.95 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.95 + } + ] + } + }, + { + "Event": { + "Time": 0.50, + "EventType": "HapticContinuous", + "EventDuration": 0.2, + "EventParameters": [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.5 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + } + ] +} diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SearchOptions.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SearchOptions.nib/objects-14.0+.nib new file mode 100644 index 00000000..3b3ceb9a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SearchOptions.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SearchOptions.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SearchOptions.nib/runtime.nib new file mode 100644 index 00000000..a933d308 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SearchOptions.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SearchResultCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SearchResultCell.nib new file mode 100644 index 00000000..6db364e1 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SearchResultCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SearchViewController.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SearchViewController.nib new file mode 100644 index 00000000..7e1d05ab Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SearchViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SharedLocationDetailsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SharedLocationDetailsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..f41c8165 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SharedLocationDetailsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SharedLocationDetailsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SharedLocationDetailsViewController.nib/runtime.nib new file mode 100644 index 00000000..583e35d3 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SharedLocationDetailsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SpeechControlView.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SpeechControlView.nib new file mode 100644 index 00000000..71aa248d Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SpeechControlView.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/StopCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/StopCell.nib new file mode 100644 index 00000000..edea1f43 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/StopCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/StopNavigation.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/StopNavigation.nib new file mode 100644 index 00000000..066df8fc Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/StopNavigation.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SubpathsStepper.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SubpathsStepper.nib/objects-14.0+.nib new file mode 100644 index 00000000..d3a779f6 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SubpathsStepper.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SubpathsStepper.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SubpathsStepper.nib/runtime.nib new file mode 100644 index 00000000..d3a779f6 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/SubpathsStepper.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TagViewCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TagViewCell.nib new file mode 100644 index 00000000..17f95925 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TagViewCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TagsViewController.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TagsViewController.nib new file mode 100644 index 00000000..0300e6fb Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TagsViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ToastView.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ToastView.nib/objects-14.0+.nib new file mode 100644 index 00000000..ffbc75d4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ToastView.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ToastView.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ToastView.nib/runtime.nib new file mode 100644 index 00000000..b7bbbead Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ToastView.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TopActionsCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TopActionsCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..a83773ea Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TopActionsCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TopActionsCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TopActionsCell.nib/runtime.nib new file mode 100644 index 00000000..28ac6dd4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TopActionsCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TrailingIconMenuCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TrailingIconMenuCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..515add4e Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TrailingIconMenuCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TrailingIconMenuCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TrailingIconMenuCell.nib/runtime.nib new file mode 100644 index 00000000..2565b36e Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/TrailingIconMenuCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserLocationCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserLocationCell.nib new file mode 100644 index 00000000..b70a4a95 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserLocationCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserLocationDetailsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserLocationDetailsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..611cdf52 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserLocationDetailsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserLocationDetailsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserLocationDetailsViewController.nib/runtime.nib new file mode 100644 index 00000000..e750513e Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserLocationDetailsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserTrackingView.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserTrackingView.nib/objects-14.0+.nib new file mode 100644 index 00000000..b54bff9e Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserTrackingView.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserTrackingView.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserTrackingView.nib/runtime.nib new file mode 100644 index 00000000..09114196 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/UserTrackingView.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueActionCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueActionCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..7435f875 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueActionCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueActionCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueActionCell.nib/runtime.nib new file mode 100644 index 00000000..7435f875 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueActionCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueBottomActionsCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueBottomActionsCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..cc557611 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueBottomActionsCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueBottomActionsCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueBottomActionsCell.nib/runtime.nib new file mode 100644 index 00000000..3a74479d Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueBottomActionsCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueCell.nib new file mode 100644 index 00000000..341c70d4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueDetailCell.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueDetailCell.nib new file mode 100644 index 00000000..e149f0ac Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueDetailCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueDetailsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueDetailsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..38f3ce58 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueDetailsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueDetailsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueDetailsViewController.nib/runtime.nib new file mode 100644 index 00000000..4aa80682 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueDetailsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueSelectorViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueSelectorViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..826f1b08 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueSelectorViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueSelectorViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueSelectorViewController.nib/runtime.nib new file mode 100644 index 00000000..05f298e3 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/VenueSelectorViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/WarningView.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/WarningView.nib new file mode 100644 index 00000000..862d6251 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/WarningView.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/WelcomeScreenViewController.nib b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/WelcomeScreenViewController.nib new file mode 100644 index 00000000..cfaf791c Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/WelcomeScreenViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/_CodeSignature/CodeResources b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/_CodeSignature/CodeResources new file mode 100644 index 00000000..f42f0e98 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/_CodeSignature/CodeResources @@ -0,0 +1,2022 @@ + + + + + files + + AboutCell.nib + + bZe8A6T1JyHRPAH7gfJhUmEtMXo= + + ActionCell.nib/objects-14.0+.nib + + zUrK7Ebha1RNo1WJsLNk6pMgVC4= + + ActionCell.nib/runtime.nib + + GE5GUE0iijSyuJlbGwA1pfEDV8Q= + + AlertSheet.nib + + hIyMnj6e3O16yTNDzMSmTuOhe4Q= + + Alexandria-Black.ttf + + xcj3+E30kstI+pjPb+phRJy9/Mg= + + Alexandria-Bold.ttf + + JK+TyFg9/8mgL/qm46rllMe7ykk= + + Alexandria-ExtraBold.ttf + + qEKfjUjd5I/g+JOnbG41JRPn0CA= + + Alexandria-ExtraLight.ttf + + vJoalLS0xOk2ZPvvQLyyLHALgpw= + + Alexandria-Light.ttf + + 0ciPmBvbuoCyZLoTWTpk7osgCsE= + + Alexandria-Medium.ttf + + Ac+1OZDzd44Mu5J8EAz+PwTm13U= + + Alexandria-Regular.ttf + + caSGbig2aXQDvKDhK1D3MBDU08s= + + Alexandria-SemiBold.ttf + + Zq8qjQjOu5THnnXtdGJIjwtry6U= + + Alexandria-Thin.ttf + + ahhX0AegYbyFAMbhYXsdN9uO2V4= + + Alexandria-VariableFont_wght.ttf + + 3SiepSvjXQPegC4EOPPqhwT1f64= + + AllFilterViewController.nib + + uo+7anTEgC8thMGIECq5T0tZOFA= + + AmenitiesDetailTableViewCell.nib + + MPfXLYZPgDH3qzfLuMjTq7WVbwo= + + AmenityTableViewCell.nib + + ScXIq8qIUl7bhe+CQPDRtgwcn0M= + + Assets.car + + NC3IH1DTuaSsx8ebY7NTtDJOhak= + + BottomActionsCell.nib/objects-14.0+.nib + + +xas3bM2UQi+4jt+u+PKO1S8PjY= + + BottomActionsCell.nib/runtime.nib + + NJ/r1waH2WqI4/ZfYZDXhnsS/WE= + + BottomNavigationPanelViewController.nib/objects-14.0+.nib + + gxv1ggrgzpL6RU05k/mLQVSVfts= + + BottomNavigationPanelViewController.nib/runtime.nib + + WaqtJtJkflSRSq2fIeI4rDl1qfY= + + Calibrate.mp4 + + x7AvkF4SITxW6PyHsSCwj8FHbP4= + + CalibrateMessage.nib + + Iw0pstGIlXLAbe+l5LDRXHJ5lac= + + CampusActionsCell.nib/objects-14.0+.nib + + E11CLUd3XiLTXYobJgSIAjaVvrs= + + CampusActionsCell.nib/runtime.nib + + E11CLUd3XiLTXYobJgSIAjaVvrs= + + CampusDetailsViewController.nib/objects-14.0+.nib + + YXr4rKaGRMNYBJCwIXn/bENuQ7c= + + CampusDetailsViewController.nib/runtime.nib + + VuNtIUwWYIFb615ZAn1ILN9i8Tg= + + CategoriesCell.nib + + I3t1wBFnadKs3bZL/wGw9JRzbRs= + + CategoriesViewController.nib/objects-14.0+.nib + + r1NxnyHGEuTeiNVz4mqXeXESZkQ= + + CategoriesViewController.nib/runtime.nib + + ONSILBiDcdJjdBydvi6fSvkD/88= + + CategoryCollectionViewCell.nib + + xWYlCC7TpMscCnEZkkoMl+PmJ44= + + CategoryResultCell.nib/objects-14.0+.nib + + yawXA4km7gX9Uz6MBhLmHowUlF8= + + CategoryResultCell.nib/runtime.nib + + TiuziNxkE7uVF5L9H3YSb6hQ3zQ= + + CategoryResultsViewController.nib/objects-14.0+.nib + + alc3jDqKN95vjCW7RY43/bV4AhQ= + + CategoryResultsViewController.nib/runtime.nib + + UnvMvk5KbAho8B2X/lrTy34Ptiw= + + CategoryTableViewCell.nib + + /I/3KSJ3Y1i1RlOInHt3hdrWzDY= + + ChangingFloor.nib + + BEiC7sS8JOir/uNzvzswg4MmvIc= + + ConnectedVenueCell.nib/objects-14.0+.nib + + ZpI0F1EtvVzthZeAy55aNgqZjno= + + ConnectedVenueCell.nib/runtime.nib + + nBlg700+uy8Nv+Gc1MhZ7KUodYI= + + ContactDetailsCell.nib + + WFYIlrTKlf9grzWdkk22acXxEpE= + + DayScheduleCell.nib + + Ell16/41zkGuK9sOpaSfOILM6PU= + + DetailsHeaderCell.nib + + KPFasy9KZw4ggBVD3cx4SBNa7/4= + + DetailsTextCell.nib + + QQlhB/ov1lZ2eei/hP5LUqOw1vs= + + DirectionCell.nib + + pEm3bXIKgB4aWK1/Q7PNCjh9WaU= + + DirectionCollectionViewCell.nib + + c8U68gNxB3lK3/AHRN6Urp5ku1U= + + DirectionsFooterCell.nib + + xjZJzmc/4jQU3sCbEDO6QOKJaZY= + + DirectionsStepper.nib + + iKqPexlwWIlLhhUoxZuHI+QxFXI= + + DirectoryCell.nib + + mepgVmuAMhfiSc+QmNHle8fKbD4= + + DirectoryViewController.nib/objects-14.0+.nib + + yy9vhobUWUuz186kLnPxc25UCtE= + + DirectoryViewController.nib/runtime.nib + + A299qdKjYYm8X19kWlY+Plh2tXo= + + FavoriteCollectionViewCell.nib/objects-14.0+.nib + + v6zCnmV/pRUlXHxMF2Gycl541oU= + + FavoriteCollectionViewCell.nib/runtime.nib + + zHimLjo1qKdRJXDFvfU76tqqyuc= + + FavoriteDetailsViewController.nib + + n7H9xHplfB6YnqtjJN14PvK/z3M= + + FavoriteTableViewCell.nib/objects-14.0+.nib + + ihg64y+Me8Gdqej5Nxuio3Z82T0= + + FavoriteTableViewCell.nib/runtime.nib + + DzXDT0frb/FXLOs+G8D7zT12lHo= + + FavoritesCell.nib + + iCZyJ9nn7MraAdJ7NIN/V1Zrs00= + + FavoritesViewController.nib/objects-14.0+.nib + + PeX3pe05f4lhnRp2z85HaihlDRs= + + FavoritesViewController.nib/runtime.nib + + IpLhiInqjKyERAtCnmbYujuPTts= + + FloorCell.nib + + ln06OSTlwXRHogPk2C+Z1Nk1jFE= + + FloorIndicatorView.nib + + G4+zTmkfDG2GdhRP3gLaT3AOfdM= + + FloorSelectorHeaderView.nib + + QZKYRi9J8ZgeDhknepoBOvnghVs= + + FloorSelectorViewController.nib + + Ff1oSCyiReUfbH7RoMptVXbwwh0= + + GateCell.nib + + ukmfceA9pZq7O79nE0ra5Zf0GNw= + + GateSelectorViewController.nib/objects-14.0+.nib + + /KNJjdBActOj6OZFlJ8eWDLgfYM= + + GateSelectorViewController.nib/runtime.nib + + mhAKv158TN4VBuWfMnXF8BVXKcU= + + Headers/PenNavUI-Swift.h + + 3bWqiM/BL+iXr0YxjlPbiSqqiM4= + + Headers/PenNavUI.h + + iZpa4/HlgHfcp7mnoxmgAbck8hA= + + HomeViewController.nib + + wDLAiOCwj9et8o5jeFMlkzvaLD0= + + HoursCell.nib/objects-14.0+.nib + + 9Xmcg0CGg+fF1U8QbqOkWKGGaVo= + + HoursCell.nib/runtime.nib + + mssMBETsxvF0Oea/M3AunxGXI2Q= + + Info.plist + + EAiaS2qK8S+MEkd4yJZeg7TqFj4= + + InstructionsView.nib + + t6ZpdYLQWbdla9Ycm3JCILqNTiM= + + LeadingIconMenuCell.nib + + NInatmWgeSQx3+Qd4cFD5qlWJDI= + + LegCell.nib/objects-14.0+.nib + + uplNWrpfELleoZqIHcAcflvSIPs= + + LegCell.nib/runtime.nib + + MRfc/FSFH8s3okBhIWbnKqULpHg= + + MainPanelActionsCell.nib + + aKcFSSGKHfRmwQOORgD4LRBDoPI= + + MainViewController.nib/objects-14.0+.nib + + yVr2b4EkUGH9ftudJNYF41EpAAQ= + + MainViewController.nib/runtime.nib + + VmtjFbtMrvf+FwxBUB4eRHtYnPk= + + Maneuver.ahap + + RY/A7v6MKGck23sUdy+m1Td3/5w= + + MapViewController.nib + + dYmldyp+sNmtqFwTCcxsW9/ChBQ= + + MessageDetailCell.nib + + +fUuuLybU1klhUFAWX63DEP0/8c= + + MessageDetailImageCell.nib + + hliG1/RrQC+AwEc+8BuvjbTMLw8= + + MessageDetailsViewController.nib/objects-14.0+.nib + + e7XJtSwwkc5l5FYmqpyb6ZbsFHE= + + MessageDetailsViewController.nib/runtime.nib + + m3R7ucBFr+7cw3GGl5hdrolaybY= + + Modules/PenNavUI.swiftmodule/arm64-apple-ios.abi.json + + tag9dlcnzSJccxA1ZcGVtTFXcqM= + + Modules/PenNavUI.swiftmodule/arm64-apple-ios.private.swiftinterface + + Joprh/RvKZ+1VFxkWvbv96BJlDc= + + Modules/PenNavUI.swiftmodule/arm64-apple-ios.swiftdoc + + 4vx7uczD+I+JmhMjrFDCCIZb8GE= + + Modules/PenNavUI.swiftmodule/arm64-apple-ios.swiftinterface + + Joprh/RvKZ+1VFxkWvbv96BJlDc= + + Modules/PenNavUI.swiftmodule/arm64-apple-ios.swiftmodule + + slfCBallkVHp7T6k46V2POoJot4= + + Modules/module.modulemap + + 9wrTRoSqpGovdteCjVBPpu9hiWM= + + NavigationFeedbackViewController.nib + + 4MLRpklwZ6dHGoUvrmq5NwzeqqE= + + NavigationSearchViewController.nib + + 7C8871LhXmUU3AnGlyAXc3y0dX4= + + NavigationViewController.nib + + q4vpPqvKzzQy7KFKX709nRD65+g= + + ParkingCell.nib + + NxikVtAM+VG03XEJzv5tZFZc4Nk= + + ParkingDetailsView.nib/objects-14.0+.nib + + YatsLf6s7BvyBm6BBv1ZsjXd8kc= + + ParkingDetailsView.nib/runtime.nib + + I5e/qLElNU4BHlW6QseLKisan24= + + ParkingDetailsViewController.nib/objects-14.0+.nib + + WSAnyXp3LWx4g+fsmXcr1B94qgY= + + ParkingDetailsViewController.nib/runtime.nib + + gT9bPxxPWxNBMo8+mBy0GAsXxME= + + ParkingFullAlertSound.wav + + CazQCN35ksob67x/FHewcak4R2Q= + + PenNavUI.momd/PenNavDB.mom + + TB8i+hcOZ2aPYmZEow8Mc+XvCW4= + + PenNavUI.momd/VersionInfo.plist + + EbL5B37A4+snl7reYUwez0zCLEQ= + + PlaceImageCell.nib + + 1uH+sQ3/IFLeruPKueBLS1k1K7o= + + PlaceImagesCell.nib + + xFxetk0DiQ7at2ihOYVGvWlVX4g= + + PoiCell.nib + + rq/Nv7kOPbzUjFo22d7I6hZDzH8= + + PoiDetailsViewController.nib/objects-14.0+.nib + + EEODAFwH7uvjaF3MByzy1PRNSus= + + PoiDetailsViewController.nib/runtime.nib + + lt92tX7MrbEEJYCpCVnt4nFb+ck= + + Poppins-Black.ttf + + hqJLrO1uFl8tZJAephuKbw77pVM= + + Poppins-BlackItalic.ttf + + /Jp485pCbHAVEWSfJ0BmyjgEJ/Y= + + Poppins-Bold.ttf + + y+SMeF8a9rzXMgYJCUBV4plIHak= + + Poppins-BoldItalic.ttf + + xK4sI4Kfg9GIA2Y87v50y0evaTU= + + Poppins-ExtraBold.ttf + + btBAZdZsury0nNAuNC9kWdayWA4= + + Poppins-ExtraBoldItalic.ttf + + SXrncGPUYukn4jiERlmwj+rzGsM= + + Poppins-ExtraLight.ttf + + IMWHpVcTq+VfA2KZs5dHCn6u+78= + + Poppins-ExtraLightItalic.ttf + + aG76Hb6+/VXQ2gt8qerOGG6hqL8= + + Poppins-Italic.ttf + + eF4qYSBHIM/t8JtWiRspXVdmQLc= + + Poppins-Light.ttf + + 7M7uzf6gU+I+4xv1aAb8OfnTLn0= + + Poppins-LightItalic.ttf + + iYqWW9P3NhfolkxAxwew8t75aTE= + + Poppins-Medium.ttf + + XJbRVFpRw54F7g/MDDyQIfFNnDE= + + Poppins-MediumItalic.ttf + + jtWoq6eloz3JiYmSrstCTKir1vA= + + Poppins-Regular.ttf + + RA3ImSUXowbWblXLCv7Qz+m5cbU= + + Poppins-SemiBold.ttf + + Dbu21aj6D57OQV3aSmnIqmWV+6U= + + Poppins-SemiBoldItalic.ttf + + yf8jyjEMFAwXWkbVFubMJh2Ll1E= + + Poppins-Thin.ttf + + tVzmfkaWTxIwSSoW70CmGGM1ZYw= + + Poppins-ThinItalic.ttf + + aXCpMdYqQNbTKkaruR91S4okh3w= + + ReroutingView.nib + + ypSSBoCbAqmgOLz9j/Kipamsexg= + + RouteCell.nib + + NM7DIM3gkt4xPSTtSPJscimlPZY= + + RouteDetailsViewController.nib + + kth+m+i2Tm72OsQgSH/isEN2MJg= + + RouteDirectionsViewController.nib + + Y15GbD/o49PcOGSchcZQHqD7nV8= + + RouteOptionsViewController.nib + + fMsLBabndOouI628Lyo+jXGd+tE= + + RoutePlannerViewController.nib/objects-14.0+.nib + + KNSiEld4kVIaUHR649ZrY+KHmSQ= + + RoutePlannerViewController.nib/runtime.nib + + BUe6Eaffy++DXYnRfyfhlrO2JWQ= + + RouteRecalculating.ahap + + JIEY9Yae3yqcqgAcVXL3z952zys= + + SearchOptions.nib/objects-14.0+.nib + + OB8FSXcc/GatNxlTDWuj6ypEnYs= + + SearchOptions.nib/runtime.nib + + aRBxZz1KWyklF4aIMHfmxrH3XKQ= + + SearchResultCell.nib + + zFPZw9ANxCC0uj/UrH1pQ/Hfxs4= + + SearchViewController.nib + + PLElrinbqQWMorjVr3jtNxcYIqg= + + SharedLocationDetailsViewController.nib/objects-14.0+.nib + + cwWwjq1VoBGq4pYFULr+ed/wfEI= + + SharedLocationDetailsViewController.nib/runtime.nib + + NUgSUV9wqFnsJNAd1oJNAmlX0So= + + SpeechControlView.nib + + bz+h7m4HkniFG0CfqrvRteNQuuU= + + StopCell.nib + + s9+n8N33vq47AIVsL5ZEVxP+HlE= + + StopNavigation.nib + + owV8Qm0Yqlksdkm3wkO/f89fo3s= + + SubpathsStepper.nib/objects-14.0+.nib + + dHP5XAymitCzXzbY9DdF0BKzx3k= + + SubpathsStepper.nib/runtime.nib + + dHP5XAymitCzXzbY9DdF0BKzx3k= + + TagViewCell.nib + + pimkZX2vCeRnBzVCwbhiWctU/Og= + + TagsViewController.nib + + G8HanxF4A6VJ8CRKQiJpfwoBIE0= + + ToastView.nib/objects-14.0+.nib + + XGgmMzlEMzITSHCltL5FDhrxyeo= + + ToastView.nib/runtime.nib + + sEPMWEXrnyGfbSHkS54XxySp4IQ= + + TopActionsCell.nib/objects-14.0+.nib + + E9yQM1CJ+xGgNuxVB0GG+F+4MXs= + + TopActionsCell.nib/runtime.nib + + gS90v/GbnjIsYBD2vMp/qOUQ6tQ= + + TrailingIconMenuCell.nib/objects-14.0+.nib + + XHJpZQvLlq/epTIMBCvehG8tpD0= + + TrailingIconMenuCell.nib/runtime.nib + + n90VgJQienq9FMBbDjZJQwvqmx0= + + UserLocationCell.nib + + N/D4FKBEWZa60vmpBu3HiKzQPv0= + + UserLocationDetailsViewController.nib/objects-14.0+.nib + + +4dLm6a6Wj3HQ6F47d6d5gjGgNk= + + UserLocationDetailsViewController.nib/runtime.nib + + 0rktFyYC3S9vGHp1dPMFAqQs0Ts= + + UserTrackingView.nib/objects-14.0+.nib + + m9IOPTawcXmzRfLkBjt7sKw9CaI= + + UserTrackingView.nib/runtime.nib + + XKMXj4YoAKFFNwnohr9XiJAvycI= + + VenueActionCell.nib/objects-14.0+.nib + + PBQR0G+QrWrRd3bCcDAXGeo4NTk= + + VenueActionCell.nib/runtime.nib + + PBQR0G+QrWrRd3bCcDAXGeo4NTk= + + VenueBottomActionsCell.nib/objects-14.0+.nib + + Uhe65yazMtblwbW3K612Leu9H9g= + + VenueBottomActionsCell.nib/runtime.nib + + Q70rYB6mcC3Y0RUQMoauXioqHWo= + + VenueCell.nib + + xtgUl4MmY3nElrm6MsfMn/x0YGY= + + VenueDetailCell.nib + + yTyADX0MbteelacFK+7boeKFhpU= + + VenueDetailsViewController.nib/objects-14.0+.nib + + zPr7nj3rkCi+6l6aURO6Aav7Cqw= + + VenueDetailsViewController.nib/runtime.nib + + RUt725z88XSldNBU46a4H7yL8/0= + + VenueSelectorViewController.nib/objects-14.0+.nib + + 1GIhbC11bo28lXgKRvyluvn1Wx0= + + VenueSelectorViewController.nib/runtime.nib + + MA4Tlz8HwWXsdwH+a+uX6Txhxj4= + + WarningView.nib + + ilcwRi9EQXOS0Jeqac0GlYGHqJg= + + WelcomeScreenViewController.nib + + vE+pZPJ+BjqJzyqc1JQ/iM5Dp4g= + + ar.lproj/Localizable.strings + + hash + + akaTK5KDKfCZrv/9RwChRg9x21o= + + optional + + + ar.lproj/Localizable.stringsdict + + hash + + T2NOdLVyBTeDsPZK4rHes+8N+Dg= + + optional + + + en.lproj/Localizable.strings + + hash + + elZGSifJeRDTjLznTYgXPi2VkPc= + + optional + + + en.lproj/Localizable.stringsdict + + hash + + 2BYuUMW8ZLKVKm6c853DawodwB8= + + optional + + + + files2 + + AboutCell.nib + + hash2 + + gJ75KubeW9X4L0P7dxm3giiI+v1VD/4lVE1lFgjj7w0= + + + ActionCell.nib/objects-14.0+.nib + + hash2 + + RkU5ju5mabzl/UxFg/SzykuStccUMyFdRvbKpknAjkY= + + + ActionCell.nib/runtime.nib + + hash2 + + /iyYPozgu1jBWCiFoXokKVWpxg+0CZTaZxjFYzSJstY= + + + AlertSheet.nib + + hash2 + + pZGEhkX+6VycMUhvTphzhS7VnvnPfGb8TAyB0y0tZGw= + + + Alexandria-Black.ttf + + hash2 + + q6B1MoeOEWGH58M4g7frwotAUBH0cqYc+JTQ1kvbRO4= + + + Alexandria-Bold.ttf + + hash2 + + uvzpgCPheKfQScAxryWNeoFQLAodqqSbl9OlF2EGAzc= + + + Alexandria-ExtraBold.ttf + + hash2 + + HAGcql0cOzS/3dnGM6/NI+BlnfjJf0af3sfGGKjdvk4= + + + Alexandria-ExtraLight.ttf + + hash2 + + thZD1R5yztu7i8uqCnlQ6CjGs4aiyrdogUSaiefoYz4= + + + Alexandria-Light.ttf + + hash2 + + ApFYhWZixUVgYPR7nghG/lU4S9IJvldB3Q0heKcWE5o= + + + Alexandria-Medium.ttf + + hash2 + + HJ8pllcHpQkCFIX83vrQzhtfDwvqomyUVuLm8Dcs1i8= + + + Alexandria-Regular.ttf + + hash2 + + GjtEsDe537Gx7miC+PUBFnMUcTOw/f7HEiPuFnRzLTA= + + + Alexandria-SemiBold.ttf + + hash2 + + WGC+eB4hAFG25xE3TWR6EULUd0lk35rU5Y5/7gK9mCE= + + + Alexandria-Thin.ttf + + hash2 + + jXDTX2QjOV3wXmCh+XlvLDKs+74CJNAU0BZFsofiovo= + + + Alexandria-VariableFont_wght.ttf + + hash2 + + qlBJYExHURE7pJuStVI6hpZkyHOjrnUoPBW8qhJeHjk= + + + AllFilterViewController.nib + + hash2 + + 1QjCd1XlIPpKi/9QvYUhHwY60BS9rNH/YFGeGaFNkzM= + + + AmenitiesDetailTableViewCell.nib + + hash2 + + PhVkSAi4oLlyVwp0W3e8vYwuPh4iYVlOJSxZb41AoNc= + + + AmenityTableViewCell.nib + + hash2 + + UeddVF6RiUtnCfJqRwnyovbHXh59AmEjZHsihsPtBCE= + + + Assets.car + + hash2 + + jbWuGrFihVtOwJ5XurX0Pwdc661v9GQ+i1LSwBYslbc= + + + BottomActionsCell.nib/objects-14.0+.nib + + hash2 + + i/12wvbKCJFuFT7RLsuJ9C2ytet4KOMy/ARJL9PWkzY= + + + BottomActionsCell.nib/runtime.nib + + hash2 + + zvXn9YYVKm/1hR6vbFs/HydIYEY6xKT+JIncI85C9No= + + + BottomNavigationPanelViewController.nib/objects-14.0+.nib + + hash2 + + J3zgIyci5hy8SyvPAFEz+8/zRsH7hTYzWi0zanzV4hY= + + + BottomNavigationPanelViewController.nib/runtime.nib + + hash2 + + gfY97BvqQV5UQmfI+d2BmMT5NpUTcW2Cr53FiVQ2His= + + + Calibrate.mp4 + + hash2 + + J4ylkI4D84piRcyhG0WETu5or37MWUvqnUB2F8sEcdU= + + + CalibrateMessage.nib + + hash2 + + GkfmXke3DN2rIkzm+Czh1zCqX+0fUcDJGShzXCenjHU= + + + CampusActionsCell.nib/objects-14.0+.nib + + hash2 + + CNW/OUKepR6i8wAE9Bd+mWsEGWGOCaIoN3yeh/Njz7g= + + + CampusActionsCell.nib/runtime.nib + + hash2 + + CNW/OUKepR6i8wAE9Bd+mWsEGWGOCaIoN3yeh/Njz7g= + + + CampusDetailsViewController.nib/objects-14.0+.nib + + hash2 + + 1da1W0Rw78U4+5f+W3AtvTC9a83PqIvDXYTMgn70xGs= + + + CampusDetailsViewController.nib/runtime.nib + + hash2 + + gCBuDRdBXG6+2n/EKEpKWbxpgQDpJcfE9jgQCuYjBuk= + + + CategoriesCell.nib + + hash2 + + fQ5ov+Ic2lA0o1G+c0+yeCbkjlbKqBS1J1f3qkM3dws= + + + CategoriesViewController.nib/objects-14.0+.nib + + hash2 + + pnuwASVpWsT9hs3oqNTcngPXEYmsN1K9G0FcLFWsxLE= + + + CategoriesViewController.nib/runtime.nib + + hash2 + + TZDYalGFZzcjTXh6gBdMGq0f5Wd9vUD49caOKbyGmKE= + + + CategoryCollectionViewCell.nib + + hash2 + + me2eKDcc/XTqrGxKjZLQiWO1pf5nvEQ27tDZGbVH+Y0= + + + CategoryResultCell.nib/objects-14.0+.nib + + hash2 + + KJNGHgwMBzAnGBAE0nBbKSwGczoKZStBc2cbAXbPZ2g= + + + CategoryResultCell.nib/runtime.nib + + hash2 + + qU+aI2GjBLcU9kwUAEAA023gvX63R8fNXkhbobt2STI= + + + CategoryResultsViewController.nib/objects-14.0+.nib + + hash2 + + 1idt8givfc2V4vGU7xsGR9SSTPR/Gax/UDgqSNvraBM= + + + CategoryResultsViewController.nib/runtime.nib + + hash2 + + ODlLpkOb0tfEgqaxx/2q+vuI/5T5AM8QaMlULNcp5Nk= + + + CategoryTableViewCell.nib + + hash2 + + UIN8N4auKJlT1X4jneVUR+DL4lglBHFofyFnG+PWktc= + + + ChangingFloor.nib + + hash2 + + /13Dq65W0/uW/rG4Ws1bEXNn7dMgsl38I6sQsYXz+/w= + + + ConnectedVenueCell.nib/objects-14.0+.nib + + hash2 + + SGwwbr2/LZ8uNs5i2JbiAbidR6V1nV7qylDQhcdECbs= + + + ConnectedVenueCell.nib/runtime.nib + + hash2 + + MP1wkrE2tiEFoP3QOgAXQIsu/tRJPGKMhSixBYSAiMg= + + + ContactDetailsCell.nib + + hash2 + + hM4bcxI15Jw7Au6Qu9dlCjtjc6XpD7m2v0d4dsKYmZo= + + + DayScheduleCell.nib + + hash2 + + XATSpt36LgCI/fXHvebZKzDijPN4GvI9S+7/gp3hP1o= + + + DetailsHeaderCell.nib + + hash2 + + GLjpGhyT3oUYfdpljNsBDc+d+qnVtabcrjQ63T1Um6Q= + + + DetailsTextCell.nib + + hash2 + + Fxdy0ST0rIjRgjWPcl8zSpkm7Y152y0Pw5JdkR+Rthk= + + + DirectionCell.nib + + hash2 + + NnXl3ckQ4mQq+k0RVomr+YobV5ZTMyisGxPjVenFVXU= + + + DirectionCollectionViewCell.nib + + hash2 + + dWDHGjw9qcLESyA9/YNthNRVHmFzkQW2QvjTLufA2eI= + + + DirectionsFooterCell.nib + + hash2 + + ny/L2sFanqBpArXyP+Pip3VqodwssE/h26YQCkqNZek= + + + DirectionsStepper.nib + + hash2 + + ELxyw4DRJX1lIown8KLb6qioXNB3lMGcKSQ2CABcPvU= + + + DirectoryCell.nib + + hash2 + + HFIShMv+vdqncHkLtVHTwNwWUoA1qHTsKlymSh5H7jQ= + + + DirectoryViewController.nib/objects-14.0+.nib + + hash2 + + j5JRoLFobaNhSepvHKbor6Owt8ofqwc+7dSbRElnsxg= + + + DirectoryViewController.nib/runtime.nib + + hash2 + + 65F8swvkQ3mNA42YI0GQXL8lAv+tatgEfYubyfhDqek= + + + FavoriteCollectionViewCell.nib/objects-14.0+.nib + + hash2 + + gvconokWOBiorNoQeNe8HXms8HUN8tNuH1CFixIRdj4= + + + FavoriteCollectionViewCell.nib/runtime.nib + + hash2 + + XrZLcq9+fhaxnzLjQCx3+95ouazqAHeailzz3GJ79fU= + + + FavoriteDetailsViewController.nib + + hash2 + + oLeQrzf9uVQ8JMVsqPyY9j3oxOnX2Puq6FQNHj/cfN8= + + + FavoriteTableViewCell.nib/objects-14.0+.nib + + hash2 + + VMf6ukGtt4aQYbeah4kfH9Wytx3MQXAxr/JqNvSFTjE= + + + FavoriteTableViewCell.nib/runtime.nib + + hash2 + + iO8i9cuy25wbiGyFyXZ0QAb1yR8EB8KlXjyvaq5vp0Q= + + + FavoritesCell.nib + + hash2 + + BzNGnEUbfS3yWjS+VOU0uUa85xgTBIpBfWCvgcLnnE0= + + + FavoritesViewController.nib/objects-14.0+.nib + + hash2 + + iaWfkyo7NIo6wnsTUKp6TPcURmJsji+EKqSOsbwK8mQ= + + + FavoritesViewController.nib/runtime.nib + + hash2 + + IdcQ2AWP2/22syaaupw7nevWwxhgInyWiuMOYxwQiVo= + + + FloorCell.nib + + hash2 + + ks8NxhuF/mNS9ncT0HiJOPbiOjrpMLjEHPLnU7uC7J0= + + + FloorIndicatorView.nib + + hash2 + + cdyRj9uq1l8XEfaWia/e2CET3h0ThZS6V2WMZ5qOuVs= + + + FloorSelectorHeaderView.nib + + hash2 + + bX7WT6FJy8Wa6hM4r44/ZV2LTUBCMGZWM4S9EBMtU/I= + + + FloorSelectorViewController.nib + + hash2 + + Ic5wyPbIfJDIpxT9+T3QCzniPZvs71jZ4SSadtcO2Cw= + + + GateCell.nib + + hash2 + + olF5v2vFrsFzPFTAHwvMcqSyXY0R2RWnw7SoFnt35Lw= + + + GateSelectorViewController.nib/objects-14.0+.nib + + hash2 + + SScLnzBBvuPx5IlV0sT21AspVlZlLSzhQ0nVepYJNMg= + + + GateSelectorViewController.nib/runtime.nib + + hash2 + + CRjm9BPkYBNxDBsUSC2JfJYJItR1BRwj7/cBbyp+Jl0= + + + Headers/PenNavUI-Swift.h + + hash2 + + D2NUTCfG77+IkGGGCGEcSkpBjsPRygJ8Ut7PIkyWkoM= + + + Headers/PenNavUI.h + + hash2 + + /A9ZKgv5Dp5qD82jqjV9ZmbguWIUgxUkvPsdYDCAliY= + + + HomeViewController.nib + + hash2 + + wnGO3zM6czhuVZfwbgBcayf0QLUc6XJYiXMpbHCGkxc= + + + HoursCell.nib/objects-14.0+.nib + + hash2 + + ZIMsyvNvFQuglEp89vCAQWRJFPoEydq69oYu9bI/UFg= + + + HoursCell.nib/runtime.nib + + hash2 + + rzohOa0BW6K2PEBZ1otnjbwZ1CQLY2/oHWQJx55fFXg= + + + InstructionsView.nib + + hash2 + + iTx0wfZpQCHTP8/r9tGXI9AU4EOJNbTmpODjbGMcjCU= + + + LeadingIconMenuCell.nib + + hash2 + + bW6hcaCglwWzFtSoU2HUF5YieFKa3j1DxTT9JQNSX4U= + + + LegCell.nib/objects-14.0+.nib + + hash2 + + +fG4LfgrQIGtFPK1Q8OJO4gPF0upjXguyPtCbThvvi4= + + + LegCell.nib/runtime.nib + + hash2 + + lWMew0JkKFjFxAJv9+q89EPM/D0B98j5t91ZPAfPCUg= + + + MainPanelActionsCell.nib + + hash2 + + 4YF3cYn1slwMXVPIVAAk3kuokAGtAkYr8WqKpfOLtlI= + + + MainViewController.nib/objects-14.0+.nib + + hash2 + + wh65AU19Gv8ba9ueIn1zmLg1Skdi0XIIssTP1WDIzk4= + + + MainViewController.nib/runtime.nib + + hash2 + + ByGcbJhX6CYjDKMmk/SPiZOxSzt1VlWWm3Kg07UpM6E= + + + Maneuver.ahap + + hash2 + + rr9YhO3h0E3bDK+DW2eDf79DpWh4youn5nhM6EmMI5M= + + + MapViewController.nib + + hash2 + + 6BLKEyQryD40CqT7iaji70I/A3MK6domjtrgwM7a5SE= + + + MessageDetailCell.nib + + hash2 + + fvz8usaIE5GZxLmvTqUkpgdEL2u/Mqqs5NC80C6JQ6g= + + + MessageDetailImageCell.nib + + hash2 + + S48RzYW4CGqAcnPMaZbCOc3SguUAmeuFQczHMybvM3s= + + + MessageDetailsViewController.nib/objects-14.0+.nib + + hash2 + + pz25695+wE30tX+b0R7Gnkt2zunLTjiqph/yXMPUrAI= + + + MessageDetailsViewController.nib/runtime.nib + + hash2 + + bWZINQ4W1IHQZeJGDM0CFXVZn7NcQA8MZhpc5gokQoY= + + + Modules/PenNavUI.swiftmodule/arm64-apple-ios.abi.json + + hash2 + + 0Oq+JuxFPBBmSyJYAhhfTq6Bu2ZRAqZdNURIDjhdKP4= + + + Modules/PenNavUI.swiftmodule/arm64-apple-ios.private.swiftinterface + + hash2 + + ObdjQxGEtJQLSL0SCHmsCdY0IcerUf25zr6MG9KP3Es= + + + Modules/PenNavUI.swiftmodule/arm64-apple-ios.swiftdoc + + hash2 + + 72iknIStiXwKp/EvxJtCmwjDZOY15lBB8Y0LCKwv6y0= + + + Modules/PenNavUI.swiftmodule/arm64-apple-ios.swiftinterface + + hash2 + + ObdjQxGEtJQLSL0SCHmsCdY0IcerUf25zr6MG9KP3Es= + + + Modules/PenNavUI.swiftmodule/arm64-apple-ios.swiftmodule + + hash2 + + boTkA67ZhYy77sxPLWxsDwB8rKPEvXeGQk1mE9AFCrI= + + + Modules/module.modulemap + + hash2 + + mslMOLy//3KzlA7nkDqgrLLS9/oRXNmcOyUolS+WdOU= + + + NavigationFeedbackViewController.nib + + hash2 + + MxbLKejSIEhLZ+fk2PbpuWZGfu4br22j6h5tVQBNYfI= + + + NavigationSearchViewController.nib + + hash2 + + yQaHVk79W1TKvryNpPf7LQd6IbOfO85yUf1QnkdAK54= + + + NavigationViewController.nib + + hash2 + + Kii3HMrUN8B5u3Lzq48LeQuXqOLmW7m5laYlPHDTkSo= + + + ParkingCell.nib + + hash2 + + VIB97GJAfiLtzNvu2Bj4fnShuLxKfpkdug9jvlVAddI= + + + ParkingDetailsView.nib/objects-14.0+.nib + + hash2 + + taTkP6xp0TPHyxMoGXMV8Nv/snapNrQ+9PORsic3is8= + + + ParkingDetailsView.nib/runtime.nib + + hash2 + + 4ImwG2yvf2l6sv/5kzQODGxaDe/HA2zFFV1tbtelHMs= + + + ParkingDetailsViewController.nib/objects-14.0+.nib + + hash2 + + fgXZjBONT8HJVfEw240f5lC8TPh4+Qrz8Arst1bbSIE= + + + ParkingDetailsViewController.nib/runtime.nib + + hash2 + + jNqgduGxXMrAgPEbVJ/UOdzC5bfyBzhol2X2uHVD57I= + + + ParkingFullAlertSound.wav + + hash2 + + N4QOIj/w7hbgNkCos/aCscGO4trGhv12d2HPMnSoooc= + + + PenNavUI.momd/PenNavDB.mom + + hash2 + + TjqlRQ9SFXKM4xYDTLQglQ5Zqc2j6SGQ8EkIbFx//2g= + + + PenNavUI.momd/VersionInfo.plist + + hash2 + + N6+RMFcG8KhNwLCstHoaRk7jCncjCWDHz2tVfFsHGps= + + + PlaceImageCell.nib + + hash2 + + MVNigHFYfE6Pwnta9n1dtcr7ZSnl5xFO+Er85NGzb18= + + + PlaceImagesCell.nib + + hash2 + + tJf+iZf0Su405MXgotBTj69g4FsoLPldtPSJ+wgcUfE= + + + PoiCell.nib + + hash2 + + 7syBmo02fu3GRJ8/m/RyIi/RJAwAslULyOuUqkWfsQg= + + + PoiDetailsViewController.nib/objects-14.0+.nib + + hash2 + + CTcEotRUbitzRLwHAG/4cmD8LXn+VZTYq2XM0vf3Trg= + + + PoiDetailsViewController.nib/runtime.nib + + hash2 + + 7d9csmU/Mz81J+ScQgclP4lLdTJ/nI2jMvHE6EmDCsw= + + + Poppins-Black.ttf + + hash2 + + JTVAbt0qpVJCMpcFypQYoH06Ua4oytyj7lvsrmGqiYc= + + + Poppins-BlackItalic.ttf + + hash2 + + guqjFXmMmAhSy3grPcga3rOcFpA6GkbZblkX95Jmkp0= + + + Poppins-Bold.ttf + + hash2 + + IQkz+xu06EbTfvAMksrmNqw1YzEyzyFXx6yHnyf4IGg= + + + Poppins-BoldItalic.ttf + + hash2 + + R4/xZdTyCLQZY/l3T9opNYqQKtKQJtSGqUpQuy6begU= + + + Poppins-ExtraBold.ttf + + hash2 + + lZnt82p8QOdSzR+8MI9TUcWargs71vpb+9qmHBb4zuE= + + + Poppins-ExtraBoldItalic.ttf + + hash2 + + Iw4Hbz6quKpbKVFSM23UU6xzFWmx9ytKqDbw7dbN/nQ= + + + Poppins-ExtraLight.ttf + + hash2 + + Kkif/zZog7Dl3xB/b01a8lVHI7YUlcVQnUw/YuA4vEc= + + + Poppins-ExtraLightItalic.ttf + + hash2 + + 4zH4VuUt2rkWqDvqRJ/akVYfqyK+93bIqBe82Ycc4Mk= + + + Poppins-Italic.ttf + + hash2 + + 8FjHhdhV1aYCDu5pYuukplOocebwfKvpMFBOhXt2zLc= + + + Poppins-Light.ttf + + hash2 + + fxXZpJvGyotJrJlbvDYGW0urDtn205SkxJ2PmshWcsI= + + + Poppins-LightItalic.ttf + + hash2 + + LU+y+o5ZcD6vP9dI/boy/yduiBAVkSFU1//Vwkugr9Y= + + + Poppins-Medium.ttf + + hash2 + + RYcCYKKfp9Pg7/jN2RmT+0qc5MztPXtyw+99JDgL/C0= + + + Poppins-MediumItalic.ttf + + hash2 + + IxxcFoIM0lB9JHFuQbzguvr+cXVBDmGXtWIcnO2vhP8= + + + Poppins-Regular.ttf + + hash2 + + JCXrvAIb/dGP5V7b7rFTnSKiFyEsFEMKfU11JmozO7w= + + + Poppins-SemiBold.ttf + + hash2 + + HWZdW3WpUABAsswgHCsHr1+spyKDctxvRXLS1bIpEJc= + + + Poppins-SemiBoldItalic.ttf + + hash2 + + yxEjl5UcM9ZOkIzsXPnzTR7MLBPwR/mAYfg0/EqW5JA= + + + Poppins-Thin.ttf + + hash2 + + YJrj8FfTklB/7ZAYjPb51fhbtZ9hPA3ssuzJ9RMSpc0= + + + Poppins-ThinItalic.ttf + + hash2 + + Si6LynsCew+MwCGLgOyYI8o7mNSgbxdlEzewH7hfjt4= + + + ReroutingView.nib + + hash2 + + +yo+HaBPc9CV2ZST6nOG6qTZaF7VrHBgTILBM+6Rpds= + + + RouteCell.nib + + hash2 + + PqHXwcC2cIu/0vWYWhERHsT45LI2Vgjl/i1Y0N5f53s= + + + RouteDetailsViewController.nib + + hash2 + + aaSY4qacsokcmg2kSrRy4k5c7PhYPWMyMGdlEqgecu8= + + + RouteDirectionsViewController.nib + + hash2 + + 2+kUvcK2N5xc1HkDyr9s7Laj1gC2UUotxvgpbzzSogk= + + + RouteOptionsViewController.nib + + hash2 + + jJ0ug2DU8SMPdozJymXHltH+0X3a1XWcydTfOUbLitg= + + + RoutePlannerViewController.nib/objects-14.0+.nib + + hash2 + + sqmx82yx89dNUTaxh62IauExt+F1Q3Lp9gFqyAtTqCI= + + + RoutePlannerViewController.nib/runtime.nib + + hash2 + + eTPK9JMQlv88OEfcU5B9lFTPXPRfc9iyR6kggZTOBuI= + + + RouteRecalculating.ahap + + hash2 + + NUqTc9ef46H+z+eFZvHURCRcPpAS5XezOpAlIyfZIGA= + + + SearchOptions.nib/objects-14.0+.nib + + hash2 + + JnPmSVLU4uoktXu1gPBn4+84jx311zIukX3nezzzpQM= + + + SearchOptions.nib/runtime.nib + + hash2 + + 2wCIHo9nIbyih8vuOpqcYsF7JJcRIpXEMaMxewBDcLU= + + + SearchResultCell.nib + + hash2 + + nTdBJTx/0QYlgV+hQnKCyphLbFVJITCgWTEi/sN06Vw= + + + SearchViewController.nib + + hash2 + + uH7k92G5QyKLrvRBvgb7HWpCFtLPrBJUqYH1h2OzkqI= + + + SharedLocationDetailsViewController.nib/objects-14.0+.nib + + hash2 + + o0N3VglyNr0soOsysZAZNAQvC37CFx5I3oEwsdwphJ8= + + + SharedLocationDetailsViewController.nib/runtime.nib + + hash2 + + MsdGS3NDpUTnqe+YOMACUiZKq+z5h4rsoA+3wB+Ojx8= + + + SpeechControlView.nib + + hash2 + + YNOLTO+Vyt2X3sOYyrdNtBcUB/yPQ1Z9F9NRu9yteYs= + + + StopCell.nib + + hash2 + + YCIDjTlP/p5htpxnRYIFHi9K0HssUT8Ddne1vuZxUl0= + + + StopNavigation.nib + + hash2 + + D2kcQM9n67NBOm6bUUBXqq14TcUNihwHLRlGT5DiTAE= + + + SubpathsStepper.nib/objects-14.0+.nib + + hash2 + + iP4sNHDBByFR5r0zTBPnIOwRX9v0zIj3lbffH/1/oho= + + + SubpathsStepper.nib/runtime.nib + + hash2 + + iP4sNHDBByFR5r0zTBPnIOwRX9v0zIj3lbffH/1/oho= + + + TagViewCell.nib + + hash2 + + QK1/nJb0v+1IT6txTNiEmH/WVoMY5ycJlo7/I21SUd0= + + + TagsViewController.nib + + hash2 + + t4d/jf+/ztjiJCqWFuyMsmYenCK9WWvKmN09h1ERx/A= + + + ToastView.nib/objects-14.0+.nib + + hash2 + + UaylV4q13+arjrOj9OY3I/WHWDIBwKhdxdxk0zLkMyM= + + + ToastView.nib/runtime.nib + + hash2 + + IVxvHEgYTkSmESQvfYcfxV+FqBBHpS1RxxG1AyX5RZc= + + + TopActionsCell.nib/objects-14.0+.nib + + hash2 + + aCCoImqkS8pC1SJBLSIWXbpCQ3lLMl4BnZ5kzH4GbJQ= + + + TopActionsCell.nib/runtime.nib + + hash2 + + R4t2jsVwYiJ40vXmQ6VUs3j7PxlAwoTCWmRNS6squ7M= + + + TrailingIconMenuCell.nib/objects-14.0+.nib + + hash2 + + Gnrrz70uwRrcibrojaZ1Nn9u8TSLnvGnVb+jJ95Z72Y= + + + TrailingIconMenuCell.nib/runtime.nib + + hash2 + + B0XSxsGYByU3k95ouCvx5ENGfWptrFr11tlZId/X2Mw= + + + UserLocationCell.nib + + hash2 + + NsOJKleeSGNVoLdDLrZJ0nzwB6k+f/0Dqa6XRs0r3ug= + + + UserLocationDetailsViewController.nib/objects-14.0+.nib + + hash2 + + 3Mi4Fo9+lpmqQmP+0RL4CA1aquA80xizbxSwPlit1ZE= + + + UserLocationDetailsViewController.nib/runtime.nib + + hash2 + + RFslqGYNym7rDDmmAU5vllALO1aOd6x04TrQYjX+84o= + + + UserTrackingView.nib/objects-14.0+.nib + + hash2 + + P2hXPBJha6UAk+4a32wwFZ4DigSrIo+fKQMbPJx/t0U= + + + UserTrackingView.nib/runtime.nib + + hash2 + + RtJbrdyWvuzWDXa59i2m84AdjGPH9W0KqpPb8Ri7y7Q= + + + VenueActionCell.nib/objects-14.0+.nib + + hash2 + + puzeP2WHvRpichAKBFkx09+SabkKhINp1cht2PpLOHU= + + + VenueActionCell.nib/runtime.nib + + hash2 + + puzeP2WHvRpichAKBFkx09+SabkKhINp1cht2PpLOHU= + + + VenueBottomActionsCell.nib/objects-14.0+.nib + + hash2 + + Z6Fzmm/2dmytLZWcMhOIKoZKf0RLpaFOlgSYqf7txw4= + + + VenueBottomActionsCell.nib/runtime.nib + + hash2 + + yrAf5FKJo1sYxWFyK8K0q2PEjgg33lbIG/4dKidrRLA= + + + VenueCell.nib + + hash2 + + ELpJSm27fF5BaoX7G3XM1b9qkmXShiyWb1huwEl9lbs= + + + VenueDetailCell.nib + + hash2 + + SkgG9PsLCdjaXVQETtonh5vEeVxaNsfnw2D/IgyjFls= + + + VenueDetailsViewController.nib/objects-14.0+.nib + + hash2 + + 4WxdPEEIlcTpmOxXMhj1KiecurSRinKR2QDa16C9Z1Q= + + + VenueDetailsViewController.nib/runtime.nib + + hash2 + + jA6bNmHFT85tx0E0VKucyspry4udWTI8I4pO78YG3gA= + + + VenueSelectorViewController.nib/objects-14.0+.nib + + hash2 + + +W4lI18rPj/BnEAxbVg1SBvsEbL57shVPoq2q7KTzEU= + + + VenueSelectorViewController.nib/runtime.nib + + hash2 + + DkfR//mxPlsfGMXP9VGw6pEPplFt3ta4hdYVB/ofhLw= + + + WarningView.nib + + hash2 + + aVwOUHip7Np7OgK4zQOuze88/0CERiFWFiYnmz0oPTg= + + + WelcomeScreenViewController.nib + + hash2 + + iOlK2q4GgT4SI8HQPoZjYQMoV+0MFxiM+E7dEaFumA0= + + + ar.lproj/Localizable.strings + + hash2 + + ETLU0m0ojOYumiPzcO9HTncWPvy4eFdKtX9ij52eOzA= + + optional + + + ar.lproj/Localizable.stringsdict + + hash2 + + g6P+GbaQhBsmSrzmcm1GTOq1vwMjl7Zb5GRH6MOd3+w= + + optional + + + en.lproj/Localizable.strings + + hash2 + + NLwx3AVZfDPFXc86t35pVwAL09sh8fRgDTUhz/kI7sY= + + optional + + + en.lproj/Localizable.stringsdict + + hash2 + + zUWlM1HHmivhk3tmKPd0tMxGs1CiWNO32PnLmKH6LNE= + + optional + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ar.lproj/Localizable.strings b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ar.lproj/Localizable.strings new file mode 100644 index 00000000..15e88eab Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ar.lproj/Localizable.strings differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ar.lproj/Localizable.stringsdict b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ar.lproj/Localizable.stringsdict new file mode 100644 index 00000000..36d9283d Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/ar.lproj/Localizable.stringsdict differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/en.lproj/Localizable.strings b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/en.lproj/Localizable.strings new file mode 100644 index 00000000..ccdd4f96 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/en.lproj/Localizable.strings differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/en.lproj/Localizable.stringsdict b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/en.lproj/Localizable.stringsdict new file mode 100644 index 00000000..211411b7 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/PenNavUI.framework/en.lproj/Localizable.stringsdict differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/dSYMs/PenNavUI.framework.dSYM/Contents/Info.plist b/ios/PenNavUI.xcframework/ios-arm64/dSYMs/PenNavUI.framework.dSYM/Contents/Info.plist new file mode 100644 index 00000000..9ac0b8fb --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64/dSYMs/PenNavUI.framework.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.com.penguinin.PenNavUI + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 4.0.0 + + diff --git a/ios/PenNavUI.xcframework/ios-arm64/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/DWARF/PenNavUI b/ios/PenNavUI.xcframework/ios-arm64/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/DWARF/PenNavUI new file mode 100644 index 00000000..57b5492f Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/DWARF/PenNavUI differ diff --git a/ios/PenNavUI.xcframework/ios-arm64/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/Relocations/aarch64/PenNavUI.yml b/ios/PenNavUI.xcframework/ios-arm64/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/Relocations/aarch64/PenNavUI.yml new file mode 100644 index 00000000..ff9f2a85 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/Relocations/aarch64/PenNavUI.yml @@ -0,0 +1,10104 @@ +--- +triple: 'arm64-apple-darwin' +binary-path: '/Users/fawzialrifai/Library/Developer/Xcode/DerivedData/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm/Build/Intermediates.noindex/ArchiveIntermediates/PenNavDemo/InstallationBuildProductsLocation/Library/Frameworks/PenNavUI.framework/PenNavUI' +relocations: + - { offset: 0x87B47, size: 0x8, addend: 0x0, symName: _PenNavUIVersionString, symObjAddr: 0x0, symBinAddr: 0x2AE680, symSize: 0x0 } + - { offset: 0x87B7C, size: 0x8, addend: 0x0, symName: _PenNavUIVersionNumber, symObjAddr: 0x30, symBinAddr: 0x2AE6B0, symSize: 0x0 } + - { offset: 0x87BD5, size: 0x8, addend: 0x0, symName: ___swift_memcpy4_4, symObjAddr: 0x0, symBinAddr: 0x4000, symSize: 0xC } + - { offset: 0x87BE9, size: 0x8, addend: 0x0, symName: ___swift_noop_void_return, symObjAddr: 0xC, symBinAddr: 0x400C, symSize: 0x4 } + - { offset: 0x87BFD, size: 0x8, addend: 0x0, symName: '_$sSo16os_unfair_lock_sVwet', symObjAddr: 0x10, symBinAddr: 0x4010, symSize: 0x20 } + - { offset: 0x87C11, size: 0x8, addend: 0x0, symName: '_$sSo16os_unfair_lock_sVwst', symObjAddr: 0x30, symBinAddr: 0x4030, symSize: 0x28 } + - { offset: 0x87C25, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_8, symObjAddr: 0x6C, symBinAddr: 0x406C, symSize: 0xC } + - { offset: 0x87C39, size: 0x8, addend: 0x0, symName: ___swift_memcpy1_1, symObjAddr: 0x110, symBinAddr: 0x4110, symSize: 0xC } + - { offset: 0x87C4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwet', symObjAddr: 0x11C, symBinAddr: 0x411C, symSize: 0x90 } + - { offset: 0x87C61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwst', symObjAddr: 0x1AC, symBinAddr: 0x41AC, symSize: 0xB0 } + - { offset: 0x87C75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwug', symObjAddr: 0x25C, symBinAddr: 0x425C, symSize: 0x8 } + - { offset: 0x87C89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwup', symObjAddr: 0x264, symBinAddr: 0x4264, symSize: 0x4 } + - { offset: 0x87C9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwui', symObjAddr: 0x268, symBinAddr: 0x4268, symSize: 0x8 } + - { offset: 0x87CB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOMa', symObjAddr: 0x270, symBinAddr: 0x4270, symSize: 0x10 } + - { offset: 0x87CC5, size: 0x8, addend: 0x0, symName: ___swift_memcpy32_8, symObjAddr: 0x310, symBinAddr: 0x4310, symSize: 0xC } + - { offset: 0x87E55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSHAASQWb', symObjAddr: 0xA48, symBinAddr: 0x49D4, symSize: 0x4 } + - { offset: 0x87E69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOACSQAAWl', symObjAddr: 0xA4C, symBinAddr: 0x49D8, symSize: 0x40 } + - { offset: 0x87E7D, size: 0x8, addend: 0x0, symName: '_$sSo18CALayerCornerCurveas20_SwiftNewtypeWrapperSCSYWb', symObjAddr: 0xD5C, symBinAddr: 0x4C48, symSize: 0x2C } + - { offset: 0x87E91, size: 0x8, addend: 0x0, symName: '_$sSo18CALayerCornerCurveas20_SwiftNewtypeWrapperSCs35_HasCustomAnyHashableRepresentationPWb', symObjAddr: 0xD88, symBinAddr: 0x4C74, symSize: 0x2C } + - { offset: 0x87ED1, size: 0x8, addend: 0x0, symName: '_$sSo18CALayerCornerCurveaSHSCSQWb', symObjAddr: 0x13BC, symBinAddr: 0x52A8, symSize: 0x2C } + - { offset: 0x87EE5, size: 0x8, addend: 0x0, symName: '_$sSo13CGPathElementVwet', symObjAddr: 0x13E8, symBinAddr: 0x52D4, symSize: 0x44 } + - { offset: 0x87EF9, size: 0x8, addend: 0x0, symName: '_$sSo13CGPathElementVwst', symObjAddr: 0x142C, symBinAddr: 0x5318, symSize: 0x3C } + - { offset: 0x87F0D, size: 0x8, addend: 0x0, symName: ___swift_memcpy48_8, symObjAddr: 0x1594, symBinAddr: 0x5480, symSize: 0x14 } + - { offset: 0x87F21, size: 0x8, addend: 0x0, symName: '_$sSo17CGAffineTransformVwet', symObjAddr: 0x15A8, symBinAddr: 0x5494, symSize: 0x20 } + - { offset: 0x87F35, size: 0x8, addend: 0x0, symName: '_$sSo17CGAffineTransformVwst', symObjAddr: 0x15C8, symBinAddr: 0x54B4, symSize: 0x38 } + - { offset: 0x87F49, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefaSHSCSQWb', symObjAddr: 0x1614, symBinAddr: 0x5500, symSize: 0x2C } + - { offset: 0x87F5D, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefaSHSCSQWb', symObjAddr: 0x1640, symBinAddr: 0x552C, symSize: 0x2C } + - { offset: 0x87F71, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefaSHSCSQWb', symObjAddr: 0x166C, symBinAddr: 0x5558, symSize: 0x2C } + - { offset: 0x87F85, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefaSHSCSQWb', symObjAddr: 0x1698, symBinAddr: 0x5584, symSize: 0x2C } + - { offset: 0x87F99, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyas20_SwiftNewtypeWrapperSCSYWb', symObjAddr: 0x16C4, symBinAddr: 0x55B0, symSize: 0x2C } + - { offset: 0x87FAD, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyas20_SwiftNewtypeWrapperSCs35_HasCustomAnyHashableRepresentationPWb', symObjAddr: 0x16F0, symBinAddr: 0x55DC, symSize: 0x2C } + - { offset: 0x87FC1, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyas20_SwiftNewtypeWrapperSCSYWb', symObjAddr: 0x171C, symBinAddr: 0x5608, symSize: 0x2C } + - { offset: 0x87FD5, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyas20_SwiftNewtypeWrapperSCs35_HasCustomAnyHashableRepresentationPWb', symObjAddr: 0x1748, symBinAddr: 0x5634, symSize: 0x2C } + - { offset: 0x87FE9, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas20_SwiftNewtypeWrapperSCSYWb', symObjAddr: 0x1774, symBinAddr: 0x5660, symSize: 0x2C } + - { offset: 0x87FFD, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas20_SwiftNewtypeWrapperSCs35_HasCustomAnyHashableRepresentationPWb', symObjAddr: 0x17A0, symBinAddr: 0x568C, symSize: 0x2C } + - { offset: 0x88011, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSHSCSQWb', symObjAddr: 0x17CC, symBinAddr: 0x56B8, symSize: 0x2C } + - { offset: 0x88025, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x17F8, symBinAddr: 0x56E4, symSize: 0x2C } + - { offset: 0x88039, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaSHSCSQWb', symObjAddr: 0x1824, symBinAddr: 0x5710, symSize: 0x2C } + - { offset: 0x8804D, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x1850, symBinAddr: 0x573C, symSize: 0x2C } + - { offset: 0x88061, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x187C, symBinAddr: 0x5768, symSize: 0x2C } + - { offset: 0x88075, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x18A8, symBinAddr: 0x5794, symSize: 0x2C } + - { offset: 0x88089, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x18D4, symBinAddr: 0x57C0, symSize: 0x2C } + - { offset: 0x8809D, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyaSHSCSQWb', symObjAddr: 0x1900, symBinAddr: 0x57EC, symSize: 0x2C } + - { offset: 0x880B1, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyaSHSCSQWb', symObjAddr: 0x192C, symBinAddr: 0x5818, symSize: 0x2C } + - { offset: 0x88166, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateO5imageSo7UIImageCvg', symObjAddr: 0x390, symBinAddr: 0x4390, symSize: 0x1E8 } + - { offset: 0x882C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x5F8, symBinAddr: 0x45F8, symSize: 0x40 } + - { offset: 0x88356, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas21_ObjectiveCBridgeableSCsACP09_bridgeToC1C01_C5CTypeQzyFTW', symObjAddr: 0x640, symBinAddr: 0x4638, symSize: 0x8 } + - { offset: 0x883D3, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas21_ObjectiveCBridgeableSCsACP016_forceBridgeFromC1C_6resulty01_C5CTypeQz_xSgztFZTW', symObjAddr: 0x648, symBinAddr: 0x4640, symSize: 0x50 } + - { offset: 0x8843C, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas21_ObjectiveCBridgeableSCsACP024_conditionallyBridgeFromC1C_6resultSb01_C5CTypeQz_xSgztFZTW', symObjAddr: 0x698, symBinAddr: 0x4690, symSize: 0x54 } + - { offset: 0x88496, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas21_ObjectiveCBridgeableSCsACP026_unconditionallyBridgeFromC1Cyx01_C5CTypeQzSgFZTW', symObjAddr: 0x6EC, symBinAddr: 0x46E4, symSize: 0x24 } + - { offset: 0x884F7, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas35_HasCustomAnyHashableRepresentationSCsACP03_todeF0s0eF0VSgyFTW', symObjAddr: 0xC44, symBinAddr: 0x4B30, symSize: 0x94 } + - { offset: 0x88513, size: 0x8, addend: 0x0, symName: '_$sSo18CALayerCornerCurveas35_HasCustomAnyHashableRepresentationSCsACP03_toefG0s0fG0VSgyFTW', symObjAddr: 0xCD8, symBinAddr: 0x4BC4, symSize: 0x84 } + - { offset: 0x8852F, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyas35_HasCustomAnyHashableRepresentationSCsACP03_toghI0s0hI0VSgyFTW', symObjAddr: 0xDF4, symBinAddr: 0x4CE0, symSize: 0x84 } + - { offset: 0x8854B, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyas35_HasCustomAnyHashableRepresentationSCsACP03_toefG0s0fG0VSgyFTW', symObjAddr: 0xEBC, symBinAddr: 0x4DA8, symSize: 0x84 } + - { offset: 0x88576, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSHSCSH9hashValueSivgTW', symObjAddr: 0x11E0, symBinAddr: 0x50CC, symSize: 0x8 } + - { offset: 0x885CB, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x11E8, symBinAddr: 0x50D4, symSize: 0x38 } + - { offset: 0x88620, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSHSCSH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1220, symBinAddr: 0x510C, symSize: 0x1C } + - { offset: 0x88675, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0x1324, symBinAddr: 0x5210, symSize: 0x14 } + - { offset: 0x886EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x578, symBinAddr: 0x4578, symSize: 0x14 } + - { offset: 0x8876B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSHAASH9hashValueSivgTW', symObjAddr: 0x58C, symBinAddr: 0x458C, symSize: 0x44 } + - { offset: 0x88831, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5D0, symBinAddr: 0x45D0, symSize: 0x28 } + - { offset: 0x8893C, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0x918, symBinAddr: 0x48A4, symSize: 0x4C } + - { offset: 0x88958, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0x964, symBinAddr: 0x48F0, symSize: 0x4C } + - { offset: 0x88974, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0x9B0, symBinAddr: 0x493C, symSize: 0x4C } + - { offset: 0x88990, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0x9FC, symBinAddr: 0x4988, symSize: 0x4C } + - { offset: 0x889AC, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaSHSCSH9hashValueSivgTW', symObjAddr: 0xB00, symBinAddr: 0x4A18, symSize: 0x3C } + - { offset: 0x889C8, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xB3C, symBinAddr: 0x4A54, symSize: 0x48 } + - { offset: 0x889E4, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0xBEC, symBinAddr: 0x4AD8, symSize: 0x4C } + - { offset: 0x88A00, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefaSHSCSH9hashValueSivgTW', symObjAddr: 0xF40, symBinAddr: 0x4E2C, symSize: 0x3C } + - { offset: 0x88A1C, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xF7C, symBinAddr: 0x4E68, symSize: 0x48 } + - { offset: 0x88A38, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefaSHSCSH9hashValueSivgTW', symObjAddr: 0xFD0, symBinAddr: 0x4EBC, symSize: 0x3C } + - { offset: 0x88A54, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x100C, symBinAddr: 0x4EF8, symSize: 0x48 } + - { offset: 0x88A70, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefaSHSCSH9hashValueSivgTW', symObjAddr: 0x1060, symBinAddr: 0x4F4C, symSize: 0x3C } + - { offset: 0x88A8C, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x109C, symBinAddr: 0x4F88, symSize: 0x48 } + - { offset: 0x88AA8, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefaSHSCSH9hashValueSivgTW', symObjAddr: 0x10F0, symBinAddr: 0x4FDC, symSize: 0x3C } + - { offset: 0x88AC4, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x112C, symBinAddr: 0x5018, symSize: 0x48 } + - { offset: 0x88B7E, size: 0x8, addend: 0x0, symName: '_$sSo24UIGestureRecognizerStateVSYSCSY8rawValuexSg03RawE0Qz_tcfCTW', symObjAddr: 0xB90, symBinAddr: 0x4AA8, symSize: 0x10 } + - { offset: 0x88B98, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSYSCSY8rawValue03RawD0QzvgTW', symObjAddr: 0xC38, symBinAddr: 0x4B24, symSize: 0xC } + - { offset: 0x8927A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCfETo', symObjAddr: 0xCC0, symBinAddr: 0x65A8, symSize: 0x58 } + - { offset: 0x892A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCMU', symObjAddr: 0xD18, symBinAddr: 0x6600, symSize: 0x8 } + - { offset: 0x892BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCMa', symObjAddr: 0xD20, symBinAddr: 0x6608, symSize: 0x38 } + - { offset: 0x892D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCMr', symObjAddr: 0xD58, symBinAddr: 0x6640, symSize: 0x7C } + - { offset: 0x892E5, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgMa', symObjAddr: 0xDD4, symBinAddr: 0x66BC, symSize: 0x54 } + - { offset: 0x892F9, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorCMa', symObjAddr: 0xE28, symBinAddr: 0x6710, symSize: 0x44 } + - { offset: 0x8930D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC8setImage3fory7Penguin11POICategoryV_tFySo7UIImageCSgcfU_TA', symObjAddr: 0xEFC, symBinAddr: 0x67E4, symSize: 0x40 } + - { offset: 0x89321, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledName, symObjAddr: 0xF3C, symBinAddr: 0x6824, symSize: 0x44 } + - { offset: 0x89335, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgWOc', symObjAddr: 0xF80, symBinAddr: 0x6868, symSize: 0x48 } + - { offset: 0x89349, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgWOh', symObjAddr: 0xFC8, symBinAddr: 0x68B0, symSize: 0x40 } + - { offset: 0x8935D, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgWOd', symObjAddr: 0x1008, symBinAddr: 0x68F0, symSize: 0x48 } + - { offset: 0x89371, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvWyycfU0_TA', symObjAddr: 0x1050, symBinAddr: 0x6938, symSize: 0x1C } + - { offset: 0x89385, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x106C, symBinAddr: 0x6954, symSize: 0x10 } + - { offset: 0x89399, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x107C, symBinAddr: 0x6964, symSize: 0x8 } + - { offset: 0x893AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvWyycfU_TA', symObjAddr: 0x1084, symBinAddr: 0x696C, symSize: 0x20 } + - { offset: 0x894F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x58E8, symSize: 0x20 } + - { offset: 0x89559, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x5908, symSize: 0x14 } + - { offset: 0x895AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC05imageF0So07UIImageF0CSgvgTo', symObjAddr: 0x34, symBinAddr: 0x591C, symSize: 0x20 } + - { offset: 0x89604, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC05imageF0So07UIImageF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x593C, symSize: 0x14 } + - { offset: 0x89655, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC014imageContainerF0So6UIViewCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x5950, symSize: 0x20 } + - { offset: 0x896AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC014imageContainerF0So6UIViewCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x5970, symSize: 0x14 } + - { offset: 0x89714, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvgTo', symObjAddr: 0x9C, symBinAddr: 0x5984, symSize: 0x40 } + - { offset: 0x8976C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvsTo', symObjAddr: 0xDC, symBinAddr: 0x59C4, symSize: 0x6C } + - { offset: 0x897A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvW', symObjAddr: 0x148, symBinAddr: 0x5A30, symSize: 0x160 } + - { offset: 0x89803, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC12awakeFromNibyyF', symObjAddr: 0x3A0, symBinAddr: 0x5C88, symSize: 0xE8 } + - { offset: 0x89891, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC12awakeFromNibyyFTo', symObjAddr: 0x488, symBinAddr: 0x5D70, symSize: 0x28 } + - { offset: 0x898DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC7setData3fory7Penguin11POICategoryV_tF', symObjAddr: 0x4B0, symBinAddr: 0x5D98, symSize: 0x14C } + - { offset: 0x89959, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC8setImage3fory7Penguin11POICategoryV_tF', symObjAddr: 0x5FC, symBinAddr: 0x5EE4, symSize: 0x230 } + - { offset: 0x899F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC8setImage3fory7Penguin11POICategoryV_tFySo7UIImageCSgcfU_', symObjAddr: 0x82C, symBinAddr: 0x6114, symSize: 0x194 } + - { offset: 0x89A91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC15prepareForReuseyyF', symObjAddr: 0x9C0, symBinAddr: 0x62A8, symSize: 0xCC } + - { offset: 0x89AF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC15prepareForReuseyyFTo', symObjAddr: 0xA8C, symBinAddr: 0x6374, symSize: 0x28 } + - { offset: 0x89B4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xAB4, symBinAddr: 0x639C, symSize: 0xD8 } + - { offset: 0x89BA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB8C, symBinAddr: 0x6474, symSize: 0xD8 } + - { offset: 0x89BD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xC64, symBinAddr: 0x654C, symSize: 0x28 } + - { offset: 0x89BED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCfD', symObjAddr: 0xC8C, symBinAddr: 0x6574, symSize: 0x34 } + - { offset: 0x89F8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCMi', symObjAddr: 0x0, symBinAddr: 0x6994, symSize: 0x4 } + - { offset: 0x89FA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCMi', symObjAddr: 0x0, symBinAddr: 0x6994, symSize: 0x4 } + - { offset: 0x89FBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCMr', symObjAddr: 0x4, symBinAddr: 0x6998, symSize: 0x8C } + - { offset: 0x8A090, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCMa', symObjAddr: 0x104, symBinAddr: 0x6A98, symSize: 0xC } + - { offset: 0x8A0A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVMa', symObjAddr: 0x110, symBinAddr: 0x6AA4, symSize: 0xC } + - { offset: 0x8A0B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVMa', symObjAddr: 0x11C, symBinAddr: 0x6AB0, symSize: 0x10 } + - { offset: 0x8A0CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVMi', symObjAddr: 0x12C, symBinAddr: 0x6AC0, symSize: 0x8 } + - { offset: 0x8A0E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVMr', symObjAddr: 0x134, symBinAddr: 0x6AC8, symSize: 0x19C } + - { offset: 0x8A0F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwCP', symObjAddr: 0x2D0, symBinAddr: 0x6C64, symSize: 0x62C } + - { offset: 0x8A108, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwxx', symObjAddr: 0x8FC, symBinAddr: 0x7290, symSize: 0x328 } + - { offset: 0x8A11C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwcp', symObjAddr: 0xC24, symBinAddr: 0x75B8, symSize: 0x520 } + - { offset: 0x8A130, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwca', symObjAddr: 0x1144, symBinAddr: 0x7AD8, symSize: 0x734 } + - { offset: 0x8A144, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwtk', symObjAddr: 0x1878, symBinAddr: 0x820C, symSize: 0x520 } + - { offset: 0x8A158, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwta', symObjAddr: 0x1D98, symBinAddr: 0x872C, symSize: 0x734 } + - { offset: 0x8A16C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwet', symObjAddr: 0x24CC, symBinAddr: 0x8E60, symSize: 0x408 } + - { offset: 0x8A180, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwst', symObjAddr: 0x28D4, symBinAddr: 0x9268, symSize: 0x51C } + - { offset: 0x8A1C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAASQWb', symObjAddr: 0x2FF4, symBinAddr: 0x996C, symSize: 0x4 } + - { offset: 0x8A1D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVACSQAAWl', symObjAddr: 0x2FF8, symBinAddr: 0x9970, symSize: 0x40 } + - { offset: 0x8A1E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAs25ExpressibleByArrayLiteralPWb', symObjAddr: 0x3038, symBinAddr: 0x99B0, symSize: 0x4 } + - { offset: 0x8A1FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVACs25ExpressibleByArrayLiteralAAWl', symObjAddr: 0x303C, symBinAddr: 0x99B4, symSize: 0x40 } + - { offset: 0x8A210, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs9OptionSetAASYWb', symObjAddr: 0x307C, symBinAddr: 0x99F4, symSize: 0x4 } + - { offset: 0x8A224, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVACSYAAWl', symObjAddr: 0x3080, symBinAddr: 0x99F8, symSize: 0x40 } + - { offset: 0x8A238, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs9OptionSetAAs0G7AlgebraPWb', symObjAddr: 0x30C0, symBinAddr: 0x9A38, symSize: 0x4 } + - { offset: 0x8A24C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVACs10SetAlgebraAAWl', symObjAddr: 0x30C4, symBinAddr: 0x9A3C, symSize: 0x40 } + - { offset: 0x8A260, size: 0x8, addend: 0x0, symName: ___swift_instantiateGenericMetadata, symObjAddr: 0x3104, symBinAddr: 0x9A7C, symSize: 0x2C } + - { offset: 0x8A28E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCfd', symObjAddr: 0x90, symBinAddr: 0x6A24, symSize: 0x50 } + - { offset: 0x8A2C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCfD', symObjAddr: 0xE0, symBinAddr: 0x6A74, symSize: 0x24 } + - { offset: 0x8A2FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADPxycfCTW', symObjAddr: 0x2E18, symBinAddr: 0x9790, symSize: 0x8 } + - { offset: 0x8A346, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP5unionyxxnFTW', symObjAddr: 0x2E20, symBinAddr: 0x9798, symSize: 0x14 } + - { offset: 0x8A3E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP12intersectionyxxFTW', symObjAddr: 0x2E34, symBinAddr: 0x97AC, symSize: 0x14 } + - { offset: 0x8A478, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP19symmetricDifferenceyxxnFTW', symObjAddr: 0x2E48, symBinAddr: 0x97C0, symSize: 0x14 } + - { offset: 0x8A524, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP6insertySb8inserted_7ElementQz17memberAfterInserttAInFTW', symObjAddr: 0x2E5C, symBinAddr: 0x97D4, symSize: 0x30 } + - { offset: 0x8A699, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP6removey7ElementQzSgAHFTW', symObjAddr: 0x2E8C, symBinAddr: 0x9804, symSize: 0x2C } + - { offset: 0x8A826, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP6update4with7ElementQzSgAIn_tFTW', symObjAddr: 0x2EB8, symBinAddr: 0x9830, symSize: 0x24 } + - { offset: 0x8A912, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP9formUnionyyxnFTW', symObjAddr: 0x2EDC, symBinAddr: 0x9854, symSize: 0x14 } + - { offset: 0x8A978, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP16formIntersectionyyxFTW', symObjAddr: 0x2EF0, symBinAddr: 0x9868, symSize: 0x14 } + - { offset: 0x8A9DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP23formSymmetricDifferenceyyxnFTW', symObjAddr: 0x2F04, symBinAddr: 0x987C, symSize: 0x14 } + - { offset: 0x8AA53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP11subtractingyxxFTW', symObjAddr: 0x2F18, symBinAddr: 0x9890, symSize: 0x14 } + - { offset: 0x8AAFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP8isSubset2ofSbx_tFTW', symObjAddr: 0x2F2C, symBinAddr: 0x98A4, symSize: 0x14 } + - { offset: 0x8AB73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP10isDisjoint4withSbx_tFTW', symObjAddr: 0x2F40, symBinAddr: 0x98B8, symSize: 0x14 } + - { offset: 0x8AC1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP7isEmptySbvgTW', symObjAddr: 0x2F68, symBinAddr: 0x98E0, symSize: 0x10 } + - { offset: 0x8AC84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADPyxqd__ncSTRd__7ElementQyd__AFRtzlufCTW', symObjAddr: 0x2F78, symBinAddr: 0x98F0, symSize: 0x18 } + - { offset: 0x8ACA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP8subtractyyxFTW', symObjAddr: 0x2F90, symBinAddr: 0x9908, symSize: 0x14 } + - { offset: 0x8AD1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x2FA4, symBinAddr: 0x991C, symSize: 0x14 } + - { offset: 0x8AD69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs25ExpressibleByArrayLiteralAAsADP05arrayI0x0hI7ElementQzd_tcfCTW', symObjAddr: 0x2FB8, symBinAddr: 0x9930, symSize: 0x3C } + - { offset: 0x8ADA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs9OptionSetAAsADP8rawValuex03RawI0Qz_tcfCTW', symObjAddr: 0x2DF0, symBinAddr: 0x9784, symSize: 0xC } + - { offset: 0x8B151, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO7ElementCfD', symObjAddr: 0x0, symBinAddr: 0x9AAC, symSize: 0x3C } + - { offset: 0x8B1A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO7ElementCMa', symObjAddr: 0x3C, symBinAddr: 0x9AE8, symSize: 0x20 } + - { offset: 0x8B1B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLOMa', symObjAddr: 0x5C, symBinAddr: 0x9B08, symSize: 0x10 } + - { offset: 0x8B1FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO7ElementCfD', symObjAddr: 0x0, symBinAddr: 0x9AAC, symSize: 0x3C } + - { offset: 0x8B5B0, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE9maybeDataACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x9B18, symSize: 0x2EC } + - { offset: 0x8B5C8, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE9maybeDataACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x9B18, symSize: 0x2EC } + - { offset: 0x8B61E, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE11decodedDataSS8mimeType_AA0G0V4datatSgvg', symObjAddr: 0x2EC, symBinAddr: 0x9E04, symSize: 0x3AC } + - { offset: 0x8B7AB, size: 0x8, addend: 0x0, symName: '_$sS2SSysWl', symObjAddr: 0x6DC, symBinAddr: 0xA1B0, symSize: 0x40 } + - { offset: 0x8BBD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16drawProgressLine2toySo22CLLocationCoordinate2DV_tF', symObjAddr: 0x0, symBinAddr: 0xA22C, symSize: 0x8CC } + - { offset: 0x8BE1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16drawProgressLine2toySo22CLLocationCoordinate2DV_tF', symObjAddr: 0x0, symBinAddr: 0xA22C, symSize: 0x8CC } + - { offset: 0x8C4F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17resetProgressLineyyF', symObjAddr: 0x8CC, symBinAddr: 0xAAF8, symSize: 0x108 } + - { offset: 0x8CBEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DistanceFormatterV012getFormattedD08distance23includesMeasurementUnitSSSd_SbtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0xAC00, symSize: 0x380 } + - { offset: 0x8CE43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DistanceFormatterV012getFormattedD08distance23includesMeasurementUnitSSSd_SbtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0xAC00, symSize: 0x380 } + - { offset: 0x8D5C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCMa', symObjAddr: 0x50, symBinAddr: 0xAFD0, symSize: 0x20 } + - { offset: 0x8E408, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC7segment2at7forwardAA0D7SegmentV12CoreGraphics7CGFloatV_SbtF', symObjAddr: 0x7B5C, symBinAddr: 0x12ADC, symSize: 0x388 } + - { offset: 0x8EB4B, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF8PenNavUI18FloatingPanelStateC_Tg503$s8ef82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18hiJ17CGvgSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x7F4C, symBinAddr: 0x12ECC, symSize: 0x100 } + - { offset: 0x8EDAE, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI18FloatingPanelStateC_Tg503$s8ef82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18hiJ17CGvgSbAG_AGtXEfU_Tf1nnncn_n', symObjAddr: 0x804C, symBinAddr: 0x12FCC, symSize: 0x3B0 } + - { offset: 0x8F298, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry8PenNavUI18FloatingPanelStateCG_Tg503$s8ij82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18lmN17CGvgSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x83FC, symBinAddr: 0x1337C, symSize: 0x78 } + - { offset: 0x8F3FA, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI18FloatingPanelStateC_Tg503$s8fg82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18ijK17CGvgSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x8474, symBinAddr: 0x133F4, symSize: 0x26C } + - { offset: 0x8F795, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI18FloatingPanelStateC_Tg503$s8gh82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18jkL17CGvgSbAG_AGtXEfU_Tf1nnnnc_n', symObjAddr: 0x86E0, symBinAddr: 0x13660, symSize: 0x220 } + - { offset: 0x8F932, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterCMa', symObjAddr: 0x8D6C, symBinAddr: 0x13CEC, symSize: 0x20 } + - { offset: 0x8F946, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI18FloatingPanelStateC_Tg503$s8gh57UI13LayoutAdapterC30sortedAnchorStatesByCoordinateSayAA18jkL17CGvgSbAF_AFtXEfU_AH0oP0CTf1nnnnc_nTf4nnnng_n', symObjAddr: 0x8D8C, symBinAddr: 0x13D0C, symSize: 0x358 } + - { offset: 0x8FB09, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI18FloatingPanelStateC_Tg503$s8fg57UI13LayoutAdapterC30sortedAnchorStatesByCoordinateSayAA18ijK17CGvgSbAF_AFtXEfU_AG0nO0CTf1nncn_nTf4nnng_n', symObjAddr: 0x90E4, symBinAddr: 0x14064, symSize: 0x2F0 } + - { offset: 0x8FE83, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI18FloatingPanelStateC_Tg503$s8ef57UI13LayoutAdapterC30sortedAnchorStatesByCoordinateSayAA18hiJ17CGvgSbAF_AFtXEfU_AD0mN0CTf1nnncn_nTf4nnnng_n', symObjAddr: 0x93D4, symBinAddr: 0x14354, symSize: 0x6B0 } + - { offset: 0x904B5, size: 0x8, addend: 0x0, symName: '_$sS2Ss7CVarArg10FoundationWl', symObjAddr: 0xA69C, symBinAddr: 0x155D8, symSize: 0x40 } + - { offset: 0x904C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCSo8NSObjectCSH10ObjectiveCWl', symObjAddr: 0xA930, symBinAddr: 0x1586C, symSize: 0x44 } + - { offset: 0x904DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LayoutGuideProvider_pWOb', symObjAddr: 0xA974, symBinAddr: 0x158B0, symSize: 0x18 } + - { offset: 0x904F1, size: 0x8, addend: 0x0, symName: ___swift_project_boxed_opaque_existential_1, symObjAddr: 0xA98C, symBinAddr: 0x158C8, symSize: 0x24 } + - { offset: 0x90505, size: 0x8, addend: 0x0, symName: ___swift_destroy_boxed_opaque_existential_1, symObjAddr: 0xA9B0, symBinAddr: 0x158EC, symSize: 0x20 } + - { offset: 0x90519, size: 0x8, addend: 0x0, symName: '_$sSD8IteratorV8_VariantOy8PenNavUI18FloatingPanelStateCAE0fG15LayoutAnchoring_p__GWOe', symObjAddr: 0xAA10, symBinAddr: 0x1594C, symSize: 0x8 } + - { offset: 0x9052D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LayoutGuideProvider_pSgWOh', symObjAddr: 0xAA18, symBinAddr: 0x15954, symSize: 0x40 } + - { offset: 0x90566, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCACycfC', symObjAddr: 0x0, symBinAddr: 0xAF80, symSize: 0x20 } + - { offset: 0x9057A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCACycfc', symObjAddr: 0x20, symBinAddr: 0xAFA0, symSize: 0x30 } + - { offset: 0x905B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCACycfcTo', symObjAddr: 0x70, symBinAddr: 0xAFF0, symSize: 0x3C } + - { offset: 0x9061A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0CvgTo', symObjAddr: 0xAC, symBinAddr: 0xB02C, symSize: 0x40 } + - { offset: 0x90632, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0CvgTo', symObjAddr: 0xAC, symBinAddr: 0xB02C, symSize: 0x40 } + - { offset: 0x90652, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0Cvg', symObjAddr: 0xEC, symBinAddr: 0xB06C, symSize: 0x40 } + - { offset: 0x90784, size: 0x8, addend: 0x0, symName: '_$sSDyq_Sgxcig8PenNavUI18FloatingPanelStateC_AB0dE15LayoutAnchoring_pTg5', symObjAddr: 0x1388, symBinAddr: 0xC308, symSize: 0xDC } + - { offset: 0x90AD9, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI18FloatingPanelStateCG_Tg503$s8fg82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18ijK17CGvgSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x7EE4, symBinAddr: 0x12E64, symSize: 0x68 } + - { offset: 0x90C0A, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI18FloatingPanelStateCG_Tg503$s8fg57UI13LayoutAdapterC30sortedAnchorStatesByCoordinateSayAA18ijK17CGvgSbAF_AFtXEfU_AG0nO0CTf1cn_nTf4ng_n', symObjAddr: 0x9A84, symBinAddr: 0x14A04, symSize: 0x270 } + - { offset: 0x90F26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvgTo', symObjAddr: 0x12C, symBinAddr: 0xB0AC, symSize: 0x6C } + - { offset: 0x90F50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvg', symObjAddr: 0x198, symBinAddr: 0xB118, symSize: 0x4 } + - { offset: 0x90F64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC8positionAA0dE8PositionOvgTo', symObjAddr: 0x19C, symBinAddr: 0xB11C, symSize: 0x8 } + - { offset: 0x90F78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC8positionAA0dE8PositionOvg', symObjAddr: 0x1A4, symBinAddr: 0xB124, symSize: 0x8 } + - { offset: 0x9103B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC07prepareG011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtF', symObjAddr: 0x1AC, symBinAddr: 0xB12C, symSize: 0x4 } + - { offset: 0x91056, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC07prepareG011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtFTo', symObjAddr: 0x1B0, symBinAddr: 0xB130, symSize: 0xA8 } + - { offset: 0x91080, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA0dE5StateC_tF', symObjAddr: 0x258, symBinAddr: 0xB1D8, symSize: 0x98 } + - { offset: 0x910D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA0dE5StateC_tFTo', symObjAddr: 0x2F0, symBinAddr: 0xB270, symSize: 0xAC } + - { offset: 0x91117, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCfD', symObjAddr: 0x39C, symBinAddr: 0xB31C, symSize: 0x30 } + - { offset: 0x91182, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC20leastCoordinateState33_995BB7604D732323B0F3BB3065CA5A1ELLAA013FloatingPanelH0Cvg', symObjAddr: 0x3CC, symBinAddr: 0xB34C, symSize: 0x190 } + - { offset: 0x9133A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC19mostCoordinateState33_995BB7604D732323B0F3BB3065CA5A1ELLAA013FloatingPanelH0Cvg', symObjAddr: 0x55C, symBinAddr: 0xB4DC, symSize: 0x1AC } + - { offset: 0x9153F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC18leastExpandedStateAA013FloatingPanelH0Cvg', symObjAddr: 0x708, symBinAddr: 0xB688, symSize: 0x218 } + - { offset: 0x917C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC17mostExpandedStateAA013FloatingPanelH0Cvg', symObjAddr: 0x920, symBinAddr: 0xB8A0, symSize: 0x278 } + - { offset: 0x91B5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC21adjustedContentInsetsSo06UIEdgeH0Vvg', symObjAddr: 0xB98, symBinAddr: 0xBB18, symSize: 0x150 } + - { offset: 0x91D75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC15surfaceLocationSo7CGPointVvg', symObjAddr: 0xCE8, symBinAddr: 0xBC68, symSize: 0x6A0 } + - { offset: 0x92216, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC15surfaceLocationSo7CGPointVvs', symObjAddr: 0x1464, symBinAddr: 0xC3E4, symSize: 0x658 } + - { offset: 0x92756, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC6offset4from12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tF', symObjAddr: 0x1ABC, symBinAddr: 0xCA3C, symSize: 0x374 } + - { offset: 0x92B49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC12hiddenAnchor33_995BB7604D732323B0F3BB3065CA5A1ELLAA013FloatingPanelD9Anchoring_pvg', symObjAddr: 0x1E30, symBinAddr: 0xCDB0, symSize: 0x218 } + - { offset: 0x92D24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC15surfaceLocation3forSo7CGPointVAA18FloatingPanelStateC_tF', symObjAddr: 0x2048, symBinAddr: 0xCFC8, symSize: 0x188 } + - { offset: 0x92E89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC8position3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tF', symObjAddr: 0x21D0, symBinAddr: 0xD150, symSize: 0x894 } + - { offset: 0x935BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC8position3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tFAHyXEfU_', symObjAddr: 0x2A64, symBinAddr: 0xD9E4, symSize: 0x218 } + - { offset: 0x9371A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC8position3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tFAHyXEfU0_', symObjAddr: 0x2C7C, symBinAddr: 0xDBFC, symSize: 0x19C } + - { offset: 0x9383D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC13referenceEdge33_995BB7604D732323B0F3BB3065CA5A1ELL2ofAA022FloatingPanelReferenceG0OAA0pqD9Anchoring_p_tF', symObjAddr: 0x2E18, symBinAddr: 0xDD98, symSize: 0x100 } + - { offset: 0x93932, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC07prepareD0yyF', symObjAddr: 0x2F18, symBinAddr: 0xDE98, symSize: 0x11B8 } + - { offset: 0x9433F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC22updateStateConstraints33_995BB7604D732323B0F3BB3065CA5A1ELLyyF', symObjAddr: 0x40D0, symBinAddr: 0xF050, symSize: 0xCC4 } + - { offset: 0x94F7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC15setUpAttraction2toSo18NSLayoutConstraintC_12CoreGraphics7CGFloatVtAA18FloatingPanelStateC_tF', symObjAddr: 0x4D94, symBinAddr: 0xFD14, symSize: 0x13AC } + - { offset: 0x95BF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC18tearDownAttraction33_995BB7604D732323B0F3BB3065CA5A1ELLyyF', symObjAddr: 0x6140, symBinAddr: 0x110C0, symSize: 0xF8 } + - { offset: 0x95CE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC22updateStaticConstraintyyF', symObjAddr: 0x6238, symBinAddr: 0x111B8, symSize: 0xBC8 } + - { offset: 0x96907, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC31updateInteractiveEdgeConstraint4diff16scrollingContent19allowsRubberBandingy12CoreGraphics7CGFloatV_S2bSo06UIRectH0VXEtF6$deferL_yyF', symObjAddr: 0x6E00, symBinAddr: 0x11D80, symSize: 0x150 } + - { offset: 0x96A1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC08activateD03for05forceD0yAA18FloatingPanelStateC_SbtF', symObjAddr: 0x6F50, symBinAddr: 0x11ED0, symSize: 0x5C4 } + - { offset: 0x96DB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC08activateD03for05forceD0yAA18FloatingPanelStateC_SbtF6$deferL_yyF', symObjAddr: 0x7514, symBinAddr: 0x12494, symSize: 0x4A0 } + - { offset: 0x970E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC21layoutSurfaceIfNeeded33_995BB7604D732323B0F3BB3065CA5A1ELLyyF', symObjAddr: 0x79B4, symBinAddr: 0x12934, symSize: 0x11C } + - { offset: 0x971D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterCfd', symObjAddr: 0x7AD0, symBinAddr: 0x12A50, symSize: 0x6C } + - { offset: 0x971F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterCfD', symObjAddr: 0x7B3C, symBinAddr: 0x12ABC, symSize: 0x20 } + - { offset: 0x97298, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvgTf4d_n', symObjAddr: 0x8900, symBinAddr: 0x13880, symSize: 0x258 } + - { offset: 0x97429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC07prepareG011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtFTf4nnd_n', symObjAddr: 0x8B58, symBinAddr: 0x13AD8, symSize: 0x17C } + - { offset: 0x974E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC2vc6layoutAcA23FloatingPanelControllerC_AA0hiD0_ptcfcTf4gnn_n', symObjAddr: 0x9CF4, symBinAddr: 0x14C74, symSize: 0x7C } + - { offset: 0x97557, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC16startInteraction2at6offsetyAA18FloatingPanelStateC_So7CGPointVtFTf4dnn_n', symObjAddr: 0x9D70, symBinAddr: 0x14CF0, symSize: 0x8E8 } + - { offset: 0x97DB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC6layout33_995BB7604D732323B0F3BB3065CA5A1ELLAA013FloatingPanelD0_pvsTf4en_nTf4gn_n', symObjAddr: 0xAA58, symBinAddr: 0x15994, symSize: 0xB0 } + - { offset: 0x99297, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCfE', symObjAddr: 0x1968, symBinAddr: 0x17154, symSize: 0x10C } + - { offset: 0x992C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCfETo', symObjAddr: 0x1AA4, symBinAddr: 0x17290, symSize: 0x118 } + - { offset: 0x992F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCMa', symObjAddr: 0x1BBC, symBinAddr: 0x173A8, symSize: 0x20 } + - { offset: 0x9933B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1BDC, symBinAddr: 0x173C8, symSize: 0x14 } + - { offset: 0x9935B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1BDC, symBinAddr: 0x173C8, symSize: 0x14 } + - { offset: 0x99378, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1BDC, symBinAddr: 0x173C8, symSize: 0x14 } + - { offset: 0x993E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x1BF0, symBinAddr: 0x173DC, symSize: 0x60 } + - { offset: 0x99679, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1C50, symBinAddr: 0x1743C, symSize: 0x618 } + - { offset: 0x99A7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU_', symObjAddr: 0x2268, symBinAddr: 0x17A54, symSize: 0x174 } + - { offset: 0x99B66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x23DC, symBinAddr: 0x17BC8, symSize: 0xC8 } + - { offset: 0x99BAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x24A4, symBinAddr: 0x17C90, symSize: 0xF4 } + - { offset: 0x99C3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0x2598, symBinAddr: 0x17D84, symSize: 0x2D0 } + - { offset: 0x99CA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_', symObjAddr: 0x2868, symBinAddr: 0x18054, symSize: 0x280 } + - { offset: 0x99D9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0x2AE8, symBinAddr: 0x182D4, symSize: 0x50 } + - { offset: 0x99DB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC18didTapFloorsActionyyF', symObjAddr: 0x2B38, symBinAddr: 0x18324, symSize: 0xBC } + - { offset: 0x99E22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC18didTapFloorsActionyyFTo', symObjAddr: 0x2BF4, symBinAddr: 0x183E0, symSize: 0x28 } + - { offset: 0x99E3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC20didTapExpandScheduleyyFTo', symObjAddr: 0x2C24, symBinAddr: 0x18408, symSize: 0x2C } + - { offset: 0x99E5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC22didTapCollapseScheduleyyFTo', symObjAddr: 0x2D90, symBinAddr: 0x1856C, symSize: 0x2C } + - { offset: 0x99E76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC22didTapDirectionsActionyyF', symObjAddr: 0x2DBC, symBinAddr: 0x18598, symSize: 0x474 } + - { offset: 0x9A2FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC17showRouteOverview6sourceyAA5PlaceCSg_tF', symObjAddr: 0x3230, symBinAddr: 0x18A0C, symSize: 0x2E0 } + - { offset: 0x9A574, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC22didTapDirectionsActionyyFTo', symObjAddr: 0x3510, symBinAddr: 0x18CEC, symSize: 0x28 } + - { offset: 0x9A590, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC17handleOfflineDatayyF', symObjAddr: 0x3538, symBinAddr: 0x18D14, symSize: 0x11C } + - { offset: 0x9A6EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x3654, symBinAddr: 0x18E30, symSize: 0x98 } + - { offset: 0x9A7C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x36EC, symBinAddr: 0x18EC8, symSize: 0x24 } + - { offset: 0x9A835, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x3710, symBinAddr: 0x18EEC, symSize: 0xBC } + - { offset: 0x9A8D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x37CC, symBinAddr: 0x18FA8, symSize: 0x28 } + - { offset: 0x9A916, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x37F4, symBinAddr: 0x18FD0, symSize: 0x204 } + - { offset: 0x9AB09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x39F8, symBinAddr: 0x191D4, symSize: 0x50 } + - { offset: 0x9AB25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC17venueDetailLoaded4datayAA0dF4DataC_tF', symObjAddr: 0x3A48, symBinAddr: 0x19224, symSize: 0x108 } + - { offset: 0x9AC2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC16venueGatesLoaded5gatesySayAA5PlaceCG_tF', symObjAddr: 0x3B50, symBinAddr: 0x1932C, symSize: 0x190 } + - { offset: 0x9AED2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA0d6DetailF19ModelOutputProtocolA2aDP05venueH6Loaded4datayAA0dF4DataC_tFTW', symObjAddr: 0x3CE0, symBinAddr: 0x194BC, symSize: 0x4 } + - { offset: 0x9AEEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA0d6DetailF19ModelOutputProtocolA2aDP16venueGatesLoaded5gatesySayAA5PlaceCG_tFTW', symObjAddr: 0x3CE4, symBinAddr: 0x194C0, symSize: 0x4 } + - { offset: 0x9AF2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA0d6DetailF19ModelOutputProtocolA2aDP05venueH10LoadFailedyyFTW', symObjAddr: 0x3CE8, symBinAddr: 0x194C4, symSize: 0x24 } + - { offset: 0x9AF4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA0d6DetailF19ModelOutputProtocolA2aDP05venueH10LoadFailedyyFTW', symObjAddr: 0x3CE8, symBinAddr: 0x194C4, symSize: 0x24 } + - { offset: 0x9AF68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA0d6DetailF19ModelOutputProtocolA2aDP05venueH10LoadFailedyyFTW', symObjAddr: 0x3CE8, symBinAddr: 0x194C4, symSize: 0x24 } + - { offset: 0x9AFAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x3D0C, symBinAddr: 0x194E8, symSize: 0x278 } + - { offset: 0x9B161, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFyycfU_', symObjAddr: 0x3F84, symBinAddr: 0x19760, symSize: 0x7C } + - { offset: 0x9B18B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x4000, symBinAddr: 0x197DC, symSize: 0x8 } + - { offset: 0x9B1C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x4008, symBinAddr: 0x197E4, symSize: 0x4 } + - { offset: 0x9B1E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x4008, symBinAddr: 0x197E4, symSize: 0x4 } + - { offset: 0x9B20E, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV19_uninitializedCount15minimumCapacityAByxGSi_SitcfC10Foundation3URLV_Tt1g5', symObjAddr: 0x4164, symBinAddr: 0x19940, symSize: 0xB8 } + - { offset: 0x9B280, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSS_Tg5', symObjAddr: 0x42C0, symBinAddr: 0x19A9C, symSize: 0x1C } + - { offset: 0x9B298, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo18NSLayoutConstraintC_Tg5', symObjAddr: 0x42DC, symBinAddr: 0x19AB8, symSize: 0x34 } + - { offset: 0x9B2B0, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI15LocalizedObjectV_Tg5', symObjAddr: 0x4310, symBinAddr: 0x19AEC, symSize: 0x1C } + - { offset: 0x9B2C8, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI11RouteOptionV_Tg5', symObjAddr: 0x432C, symBinAddr: 0x19B08, symSize: 0x24 } + - { offset: 0x9B2E0, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSS_Sbt_Tg5', symObjAddr: 0x4350, symBinAddr: 0x19B2C, symSize: 0x1C } + - { offset: 0x9B2F8, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI24FloatingPanelPresentable_p_Tg5', symObjAddr: 0x436C, symBinAddr: 0x19B48, symSize: 0x1C } + - { offset: 0x9B310, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo6UIViewC_Tg5', symObjAddr: 0x4388, symBinAddr: 0x19B64, symSize: 0x34 } + - { offset: 0x9B328, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI5PlaceC_Tg5', symObjAddr: 0x43BC, symBinAddr: 0x19B98, symSize: 0x2C } + - { offset: 0x9B340, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9LayerTreeO5PointV1p_AK3cp1AK3cp2t_Tg5', symObjAddr: 0x43E8, symBinAddr: 0x19BC4, symSize: 0x1C } + - { offset: 0x9B358, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9LayerTreeO4PathC7SegmentO_Tg5', symObjAddr: 0x4404, symBinAddr: 0x19BE0, symSize: 0x24 } + - { offset: 0x9B370, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9LayerTreeO5PointV_Tg5', symObjAddr: 0x4428, symBinAddr: 0x19C04, symSize: 0x1C } + - { offset: 0x9B388, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin10PoiPolygonV_Tg5', symObjAddr: 0x4444, symBinAddr: 0x19C20, symSize: 0x2C } + - { offset: 0x9B3A0, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo7CGPointV_Tg5', symObjAddr: 0x4470, symBinAddr: 0x19C4C, symSize: 0x1C } + - { offset: 0x9B3B8, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI11RouteOptionV0qR3KeyO_Sbt_Tg5', symObjAddr: 0x448C, symBinAddr: 0x19C68, symSize: 0x24 } + - { offset: 0x9B3D0, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin13GateNodeModelC_Tg5', symObjAddr: 0x44B0, symBinAddr: 0x19C8C, symSize: 0x2C } + - { offset: 0x9B3E8, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5FloorC_Tg5', symObjAddr: 0x44DC, symBinAddr: 0x19CB8, symSize: 0x2C } + - { offset: 0x9B400, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin4EdgeC_Tg5', symObjAddr: 0x4508, symBinAddr: 0x19CE4, symSize: 0x2C } + - { offset: 0x9B418, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5VenueC_Tg5', symObjAddr: 0x4534, symBinAddr: 0x19D10, symSize: 0x2C } + - { offset: 0x9B430, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI8FavoriteC_Tg5', symObjAddr: 0x4560, symBinAddr: 0x19D3C, symSize: 0x2C } + - { offset: 0x9B448, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSiSg_Tg5', symObjAddr: 0x458C, symBinAddr: 0x19D68, symSize: 0x1C } + - { offset: 0x9B460, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSi_Tg5', symObjAddr: 0x45A8, symBinAddr: 0x19D84, symSize: 0x1C } + - { offset: 0x9B478, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5FloorCSg_Tg5', symObjAddr: 0x45C4, symBinAddr: 0x19DA0, symSize: 0x2C } + - { offset: 0x9B490, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF17PenguinINRenderer20FeatureConfigurationV_Tg5', symObjAddr: 0x45F0, symBinAddr: 0x19DCC, symSize: 0x2C } + - { offset: 0x9B4A8, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI7POIDataC_Tg5', symObjAddr: 0x461C, symBinAddr: 0x19DF8, symSize: 0x2C } + - { offset: 0x9B4C0, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF10Foundation9IndexPathV_Tg5', symObjAddr: 0x4648, symBinAddr: 0x19E24, symSize: 0x2C } + - { offset: 0x9B4D8, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x4674, symBinAddr: 0x19E50, symSize: 0x1C } + - { offset: 0x9B4F0, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9LayerTreeO8GradientV4StopV_Tg5', symObjAddr: 0x4690, symBinAddr: 0x19E6C, symSize: 0x1C } + - { offset: 0x9B508, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF12CoreGraphics7CGFloatV_Tg5', symObjAddr: 0x46AC, symBinAddr: 0x19E88, symSize: 0x1C } + - { offset: 0x9B520, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo10CGColorRefa_Tg5', symObjAddr: 0x46C8, symBinAddr: 0x19EA4, symSize: 0x2C } + - { offset: 0x9B538, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI15RendererCommandOyAG11CGTextTypesVG_Tg5', symObjAddr: 0x46F4, symBinAddr: 0x19ED0, symSize: 0x1C } + - { offset: 0x9B550, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSay8PenNavUI9LayerTreeO5ShapeOG_Tg5', symObjAddr: 0x4710, symBinAddr: 0x19EEC, symSize: 0x1C } + - { offset: 0x9B568, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3DOMO4PathC_Tg5', symObjAddr: 0x472C, symBinAddr: 0x19F08, symSize: 0x2C } + - { offset: 0x9B580, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3DOMO4PathC7SegmentO_Tg5', symObjAddr: 0x4758, symBinAddr: 0x19F34, symSize: 0x24 } + - { offset: 0x9B598, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3XMLO7ElementC_Tg5', symObjAddr: 0x477C, symBinAddr: 0x19F58, symSize: 0x2C } + - { offset: 0x9B5B0, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3DOMO10StyleSheetV_Tg5', symObjAddr: 0x47A8, symBinAddr: 0x19F84, symSize: 0x1C } + - { offset: 0x9B5C8, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI15RendererCommandOyAG7CGTypesVG_Tg5', symObjAddr: 0x47C4, symBinAddr: 0x19FA0, symSize: 0x1C } + - { offset: 0x9B5E0, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo9CGPathRefa_Tg5', symObjAddr: 0x47E0, symBinAddr: 0x19FBC, symSize: 0x2C } + - { offset: 0x9B5F8, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin8ScheduleC_Tg5', symObjAddr: 0x480C, symBinAddr: 0x19FE8, symSize: 0x2C } + - { offset: 0x9B610, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFyp_Tg5', symObjAddr: 0x4838, symBinAddr: 0x1A014, symSize: 0x1C } + - { offset: 0x9B628, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin7SubPathC_Tg5', symObjAddr: 0x4854, symBinAddr: 0x1A030, symSize: 0x2C } + - { offset: 0x9B640, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9VenueGateV_Tg5', symObjAddr: 0x4880, symBinAddr: 0x1A05C, symSize: 0x1C } + - { offset: 0x9B658, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI6CampusC_Tg5', symObjAddr: 0x489C, symBinAddr: 0x1A078, symSize: 0x2C } + - { offset: 0x9B670, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI13TagDataSource_p_Tg5', symObjAddr: 0x48C8, symBinAddr: 0x1A0A4, symSize: 0x2C } + - { offset: 0x9B688, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI16FileDownloadData_p_Tg5', symObjAddr: 0x48F4, symBinAddr: 0x1A0D0, symSize: 0x2C } + - { offset: 0x9B6A0, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5VenueCSg_Tg5', symObjAddr: 0x4920, symBinAddr: 0x1A0FC, symSize: 0x2C } + - { offset: 0x9B6B8, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI10LiveObjectV_Tg5', symObjAddr: 0x494C, symBinAddr: 0x1A128, symSize: 0x2C } + - { offset: 0x9B6D0, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo7CALayerC_Tg5', symObjAddr: 0x4978, symBinAddr: 0x1A154, symSize: 0x34 } + - { offset: 0x9B6E8, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF10Foundation3URLV_Tg5', symObjAddr: 0x49AC, symBinAddr: 0x1A188, symSize: 0x2C } + - { offset: 0x9B700, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI13MessageDetailC_Tg5', symObjAddr: 0x49D8, symBinAddr: 0x1A1B4, symSize: 0x2C } + - { offset: 0x9B718, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5GnodeC_Tg5', symObjAddr: 0x4A04, symBinAddr: 0x1A1E0, symSize: 0x2C } + - { offset: 0x9B730, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI10AlertSheetC_Tg5', symObjAddr: 0x4A30, symBinAddr: 0x1A20C, symSize: 0x2C } + - { offset: 0x9B748, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFs7UnicodeO6ScalarV_Tg5', symObjAddr: 0x4A5C, symBinAddr: 0x1A238, symSize: 0x1C } + - { offset: 0x9B760, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9VenueDataC_Tg5', symObjAddr: 0x4A78, symBinAddr: 0x1A254, symSize: 0x2C } + - { offset: 0x9B7D0, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSS_Tg5', symObjAddr: 0x4AA4, symBinAddr: 0x1A280, symSize: 0x100 } + - { offset: 0x9B914, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15LocalizedObjectV_Tg5', symObjAddr: 0x4CF4, symBinAddr: 0x1A4D0, symSize: 0x100 } + - { offset: 0x9BA58, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSS_Sbt_Tg5', symObjAddr: 0x4DF4, symBinAddr: 0x1A5D0, symSize: 0x130 } + - { offset: 0x9BB9C, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI24FloatingPanelPresentable_p_Tg5', symObjAddr: 0x4F24, symBinAddr: 0x1A700, symSize: 0x120 } + - { offset: 0x9BCE0, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi3key_Say7Penguin8ScheduleCG5valuet_Tg5', symObjAddr: 0x5188, symBinAddr: 0x1A964, symSize: 0x120 } + - { offset: 0x9BDCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFyycfU_TA', symObjAddr: 0x52E0, symBinAddr: 0x1AABC, symSize: 0x8 } + - { offset: 0x9BDE0, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x52E8, symBinAddr: 0x1AAC4, symSize: 0x10 } + - { offset: 0x9BDF4, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x52F8, symBinAddr: 0x1AAD4, symSize: 0x8 } + - { offset: 0x9BE60, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO5PointV1p_AL3cp1AL3cp2t_Tg5', symObjAddr: 0x5300, symBinAddr: 0x1AADC, symSize: 0x110 } + - { offset: 0x9BFA4, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO5PointV_Tg5', symObjAddr: 0x5410, symBinAddr: 0x1ABEC, symSize: 0xF8 } + - { offset: 0x9C0E8, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSo7CGPointV_Tg5', symObjAddr: 0x551C, symBinAddr: 0x1ACF8, symSize: 0xF8 } + - { offset: 0x9C22C, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSiSg_Tg5', symObjAddr: 0x5728, symBinAddr: 0x1AF04, symSize: 0xF4 } + - { offset: 0x9C370, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi_Tg5', symObjAddr: 0x581C, symBinAddr: 0x1AFF8, symSize: 0xF8 } + - { offset: 0x9C4B4, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x5914, symBinAddr: 0x1B0F0, symSize: 0x110 } + - { offset: 0x9C5F8, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO8GradientV4StopV_Tg5', symObjAddr: 0x5A24, symBinAddr: 0x1B200, symSize: 0x118 } + - { offset: 0x9C73C, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF12CoreGraphics7CGFloatV_Tg5', symObjAddr: 0x5B3C, symBinAddr: 0x1B318, symSize: 0xF8 } + - { offset: 0x9C880, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15RendererCommandOyAH11CGTextTypesVG_Tg5', symObjAddr: 0x5C34, symBinAddr: 0x1B410, symSize: 0x138 } + - { offset: 0x9C9C4, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSay8PenNavUI9LayerTreeO5ShapeOG_Tg5', symObjAddr: 0x5D6C, symBinAddr: 0x1B548, symSize: 0x120 } + - { offset: 0x9CB08, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO10StyleSheetV_Tg5', symObjAddr: 0x5F94, symBinAddr: 0x1B770, symSize: 0x100 } + - { offset: 0x9CC4C, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15RendererCommandOyAH7CGTypesVG_Tg5', symObjAddr: 0x6094, symBinAddr: 0x1B870, symSize: 0x17C } + - { offset: 0x9CD9D, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFyp_Tg5', symObjAddr: 0x6210, symBinAddr: 0x1B9EC, symSize: 0x104 } + - { offset: 0x9CEE1, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9VenueGateV_Tg5', symObjAddr: 0x6314, symBinAddr: 0x1BAF0, symSize: 0x118 } + - { offset: 0x9D025, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFs7UnicodeO6ScalarV_Tg5', symObjAddr: 0x6810, symBinAddr: 0x1BFEC, symSize: 0xF8 } + - { offset: 0x9D174, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF8PenNavUI9LayerTreeO9TransformO_s15CollectionOfOneVyAJGTg5', symObjAddr: 0x6A1C, symBinAddr: 0x1C0E4, symSize: 0xF0 } + - { offset: 0x9D29C, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF8PenNavUI20FloorSelectorSectionO_s15CollectionOfOneVyAHGTg5', symObjAddr: 0x6B0C, symBinAddr: 0x1C1D4, symSize: 0xD0 } + - { offset: 0x9D3CF, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy8PenNavUI20FloorSelectorSectionOG_s010CollectionH3OneVyANGTg5', symObjAddr: 0x6CD4, symBinAddr: 0x1C39C, symSize: 0xBC } + - { offset: 0x9D530, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0VySo22CLLocationCoordinate2DVG_s010CollectionH3OneVyAMGTg5', symObjAddr: 0x6D90, symBinAddr: 0x1C458, symSize: 0xC4 } + - { offset: 0x9D6CD, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0VySo22CLLocationCoordinate2DVG_SayAMGTg5Tf4nngn_n', symObjAddr: 0x6E54, symBinAddr: 0x1C51C, symSize: 0xE0 } + - { offset: 0x9D89F, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lFSo22CLLocationCoordinate2DV_SayAGGTg5Tf4ngn_n', symObjAddr: 0x6F34, symBinAddr: 0x1C5FC, symSize: 0xD0 } + - { offset: 0x9DA18, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy8PenNavUI24FloatingPanelPresentable_pG_s15EmptyCollectionVyAlM_pGTg5Tf4nndn_n', symObjAddr: 0x7004, symBinAddr: 0x1C6CC, symSize: 0xC4 } + - { offset: 0x9DBF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x728C, symBinAddr: 0x1C910, symSize: 0x244 } + - { offset: 0x9DE8F, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy8PenNavUI5PlaceCG_s010CollectionH3OneVyANGTg5Tf4nngn_n', symObjAddr: 0x74D0, symBinAddr: 0x1CB54, symSize: 0x11C } + - { offset: 0x9DFD7, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF8PenNavUI5PlaceC_s15CollectionOfOneVyAHGTg5Tf4ngn_n', symObjAddr: 0x75EC, symBinAddr: 0x1CC70, symSize: 0xDC } + - { offset: 0x9E11F, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0VySSG_s15EmptyCollectionVySSGTg5Tf4nndn_n', symObjAddr: 0x76C8, symBinAddr: 0x1CD4C, symSize: 0xBC } + - { offset: 0x9E214, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0VySSG_s010CollectionH3OneVySSGTg5Tf4nngn_n', symObjAddr: 0x7798, symBinAddr: 0x1CE1C, symSize: 0xE0 } + - { offset: 0x9E373, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lFSS_s15CollectionOfOneVySSGTg5Tf4ngn_n', symObjAddr: 0x7878, symBinAddr: 0x1CEFC, symSize: 0xD8 } + - { offset: 0x9E499, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy8PenNavUI13VenueCardDataVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x7B54, symBinAddr: 0x1D1D8, symSize: 0xD4 } + - { offset: 0x9E5DB, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy10Foundation3URLVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x7C28, symBinAddr: 0x1D2AC, symSize: 0x10C } + - { offset: 0x9E6ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC22didTapDirectionsActionyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x7E38, symBinAddr: 0x1D4BC, symSize: 0x20 } + - { offset: 0x9E727, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC24handleConnectivityAction10completionyyycSg_tFyycACcfu_yycfu0_TA', symObjAddr: 0x7E78, symBinAddr: 0x1D4FC, symSize: 0x8 } + - { offset: 0x9E73B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_TA', symObjAddr: 0x7EAC, symBinAddr: 0x1D530, symSize: 0x8 } + - { offset: 0x9E74F, size: 0x8, addend: 0x0, symName: '_$sSay8Dispatch0A13WorkItemFlagsVGMa', symObjAddr: 0x7EF4, symBinAddr: 0x1D538, symSize: 0x54 } + - { offset: 0x9E763, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU_TA', symObjAddr: 0x7F48, symBinAddr: 0x1D58C, symSize: 0x8 } + - { offset: 0x9E777, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18NavigationDelegate_pSgXwWOh', symObjAddr: 0x7F50, symBinAddr: 0x1D594, symSize: 0x24 } + - { offset: 0x9E78B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16PIEventsDelegate_pWOc', symObjAddr: 0x7F74, symBinAddr: 0x1D5B8, symSize: 0x44 } + - { offset: 0x9E915, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x15A48, symSize: 0x10 } + - { offset: 0x9E92D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x15A48, symSize: 0x10 } + - { offset: 0x9E973, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x15A58, symSize: 0x34 } + - { offset: 0x9E9C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC13subtitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x15A8C, symSize: 0x10 } + - { offset: 0x9E9DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC13subtitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x15A8C, symSize: 0x10 } + - { offset: 0x9EA15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC13subtitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x15A9C, symSize: 0x34 } + - { offset: 0x9EA64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x15AD0, symSize: 0x10 } + - { offset: 0x9EA7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x15AD0, symSize: 0x10 } + - { offset: 0x9EABC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x15AE0, symSize: 0x34 } + - { offset: 0x9EB0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC09separatorF0So6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x15B14, symSize: 0x10 } + - { offset: 0x9EB23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC09separatorF0So6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x15B14, symSize: 0x10 } + - { offset: 0x9EB63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC09separatorF0So6UIViewCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x15B24, symSize: 0x34 } + - { offset: 0x9EBB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x15B58, symSize: 0x20 } + - { offset: 0x9EC0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x130, symBinAddr: 0x15B78, symSize: 0x14 } + - { offset: 0x9EC6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC9venueData33_49E053E0F82157DDFC7F5E6B1EE27E5FLLAA0dfI0Cvg', symObjAddr: 0x144, symBinAddr: 0x15B8C, symSize: 0x9C } + - { offset: 0x9ED94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC9viewModel33_49E053E0F82157DDFC7F5E6B1EE27E5FLLAA0d6DetailfI0Cvg', symObjAddr: 0x1E0, symBinAddr: 0x15C28, symSize: 0x120 } + - { offset: 0x9F0C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x300, symBinAddr: 0x15D48, symSize: 0x1B8 } + - { offset: 0x9F245, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x4B8, symBinAddr: 0x15F00, symSize: 0x28 } + - { offset: 0x9F259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC13registerCells33_49E053E0F82157DDFC7F5E6B1EE27E5FLLyyF', symObjAddr: 0x4E0, symBinAddr: 0x15F28, symSize: 0xE0 } + - { offset: 0x9F366, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC03setD4Info33_49E053E0F82157DDFC7F5E6B1EE27E5FLLyyF', symObjAddr: 0x5C0, symBinAddr: 0x16008, symSize: 0x2B4 } + - { offset: 0x9F63F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC7dismissyyFTo', symObjAddr: 0xD30, symBinAddr: 0x1651C, symSize: 0x88 } + - { offset: 0x9F67C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5shareyyF', symObjAddr: 0xDB8, symBinAddr: 0x165A4, symSize: 0x120 } + - { offset: 0x9F74B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0xED8, symBinAddr: 0x166C4, symSize: 0x520 } + - { offset: 0x9FA49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5shareyyFTo', symObjAddr: 0x13F8, symBinAddr: 0x16BE4, symSize: 0x28 } + - { offset: 0x9FACE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06handleD5GatesyyF', symObjAddr: 0x1420, symBinAddr: 0x16C0C, symSize: 0x1CC } + - { offset: 0x9FC83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x15EC, symBinAddr: 0x16DD8, symSize: 0x18C } + - { offset: 0x9FCC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x1778, symBinAddr: 0x16F64, symSize: 0x60 } + - { offset: 0x9FCF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x17D8, symBinAddr: 0x16FC4, symSize: 0x168 } + - { offset: 0x9FD29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1940, symBinAddr: 0x1712C, symSize: 0x28 } + - { offset: 0x9FD3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCfD', symObjAddr: 0x1A74, symBinAddr: 0x17260, symSize: 0x30 } + - { offset: 0xA0640, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC17addGrabberGestureyyF', symObjAddr: 0x0, symBinAddr: 0x1D610, symSize: 0x37C } + - { offset: 0xA0851, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC17addGrabberGestureyyF', symObjAddr: 0x0, symBinAddr: 0x1D610, symSize: 0x37C } + - { offset: 0xA0B90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16handleTapGesture33_2EE35CB3C04EDC940EAF12BD78B47A2BLLyyF', symObjAddr: 0x37C, symBinAddr: 0x1D98C, symSize: 0x1150 } + - { offset: 0xA1847, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16handleTapGesture33_2EE35CB3C04EDC940EAF12BD78B47A2BLLyyFTo', symObjAddr: 0x14CC, symBinAddr: 0x1EADC, symSize: 0x28 } + - { offset: 0xA1D41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV9makeShape4fromAC0H0OSgAA3DOMO15GraphicsElementC_tFZTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x1EB04, symSize: 0x534 } + - { offset: 0xA1F6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV9makeShape4fromAC0H0OSgAA3DOMO15GraphicsElementC_tFZTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x1EB04, symSize: 0x534 } + - { offset: 0xA2927, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SessionIdGeneratorV14getCurrentTime33_0AD976D144EE60DA8D29C4E8D9C88D43LLSSyFTf4d_n', symObjAddr: 0x0, symBinAddr: 0x1F038, symSize: 0x1E8 } + - { offset: 0xA294B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SessionIdGeneratorV6sharedACSgvpZ', symObjAddr: 0x575C, symBinAddr: 0x396EC0, symSize: 0x0 } + - { offset: 0xA29B6, size: 0x8, addend: 0x0, symName: '_$s10Foundation4UUIDVSgWOb', symObjAddr: 0x5A8, symBinAddr: 0x1F59C, symSize: 0x48 } + - { offset: 0xA29CA, size: 0x8, addend: 0x0, symName: '_$s10Foundation4UUIDVSgWOh', symObjAddr: 0x5F0, symBinAddr: 0x1F5E4, symSize: 0x40 } + - { offset: 0xA2AC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SessionIdGeneratorV14getCurrentTime33_0AD976D144EE60DA8D29C4E8D9C88D43LLSSyFTf4d_n', symObjAddr: 0x0, symBinAddr: 0x1F038, symSize: 0x1E8 } + - { offset: 0xA2B46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SessionIdGeneratorV016getNewNavigationdE0SSyFTf4d_n', symObjAddr: 0x1E8, symBinAddr: 0x1F220, symSize: 0x37C } + - { offset: 0xA3C6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyF', symObjAddr: 0xFA8, symBinAddr: 0x205CC, symSize: 0x480 } + - { offset: 0xA404F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_', symObjAddr: 0x3C60, symBinAddr: 0x23284, symSize: 0x480 } + - { offset: 0xA4223, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU_', symObjAddr: 0x4FBC, symBinAddr: 0x245E0, symSize: 0x98 } + - { offset: 0xA43CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06updateC033_A0B591B96AA499ED77538E2604F14735LL14responsePlacesySayAA7POIDataCG_tF', symObjAddr: 0x1F98, symBinAddr: 0x215BC, symSize: 0x19C } + - { offset: 0xA471B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCfE', symObjAddr: 0x3514, symBinAddr: 0x22B38, symSize: 0x164 } + - { offset: 0xA4748, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCfETo', symObjAddr: 0x36AC, symBinAddr: 0x22CD0, symSize: 0x170 } + - { offset: 0xA4777, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCMU', symObjAddr: 0x381C, symBinAddr: 0x22E40, symSize: 0x8 } + - { offset: 0xA478B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCMa', symObjAddr: 0x3824, symBinAddr: 0x22E48, symSize: 0x38 } + - { offset: 0xA479F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCMr', symObjAddr: 0x385C, symBinAddr: 0x22E80, symSize: 0xF4 } + - { offset: 0xA47C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC19getLocationParamter33_A0B591B96AA499ED77538E2604F14735LLSDySSypGyF', symObjAddr: 0x3950, symBinAddr: 0x22F74, symSize: 0x310 } + - { offset: 0xA5491, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC17loadPOIDataForMap33_A0B591B96AA499ED77538E2604F14735LL6placesySayAA0I0CG_tF', symObjAddr: 0x5054, symBinAddr: 0x24678, symSize: 0x22C } + - { offset: 0xA5814, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC17appendOutdoorPOIs33_A0B591B96AA499ED77538E2604F14735LLyyF', symObjAddr: 0x5280, symBinAddr: 0x248A4, symSize: 0x488 } + - { offset: 0xA5C5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x5708, symBinAddr: 0x24D2C, symSize: 0x98 } + - { offset: 0xA5D10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x57A0, symBinAddr: 0x24DC4, symSize: 0x24 } + - { offset: 0xA5D87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC10setupPanelyyF', symObjAddr: 0x57C4, symBinAddr: 0x24DE8, symSize: 0xD0 } + - { offset: 0xA5E2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC10setupPanelyyFTo', symObjAddr: 0x5894, symBinAddr: 0x24EB8, symSize: 0x28 } + - { offset: 0xA5E5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x58BC, symBinAddr: 0x24EE0, symSize: 0x274 } + - { offset: 0xA609B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x5B30, symBinAddr: 0x25154, symSize: 0x50 } + - { offset: 0xA60B7, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_8, symObjAddr: 0x5BB0, symBinAddr: 0x251A4, symSize: 0x14 } + - { offset: 0xA60CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CategoryFiltersVwet', symObjAddr: 0x5BC4, symBinAddr: 0x251B8, symSize: 0x20 } + - { offset: 0xA60DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CategoryFiltersVwst', symObjAddr: 0x5BE4, symBinAddr: 0x251D8, symSize: 0x30 } + - { offset: 0xA60F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CategoryFiltersVMa', symObjAddr: 0x5C14, symBinAddr: 0x25208, symSize: 0x10 } + - { offset: 0xA6116, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x5CA0, symBinAddr: 0x25218, symSize: 0xC } + - { offset: 0xA6169, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x5CAC, symBinAddr: 0x25224, symSize: 0x68 } + - { offset: 0xA6203, size: 0x8, addend: 0x0, symName: '_$sypWOb', symObjAddr: 0x5D58, symBinAddr: 0x2528C, symSize: 0x10 } + - { offset: 0xA6238, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x5FB8, symBinAddr: 0x254D4, symSize: 0x170 } + - { offset: 0xA62B3, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSS_SSTg5', symObjAddr: 0x6128, symBinAddr: 0x25644, symSize: 0x12C } + - { offset: 0xA632E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSS_ypTg5', symObjAddr: 0x6254, symBinAddr: 0x25770, symSize: 0x12C } + - { offset: 0xA63A9, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x6380, symBinAddr: 0x2589C, symSize: 0x100 } + - { offset: 0xA6424, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtF8PenNavUI9LayerTreeO8GradientV_SSTg5', symObjAddr: 0x6480, symBinAddr: 0x2599C, symSize: 0x11C } + - { offset: 0xA649F, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x659C, symBinAddr: 0x25AB8, symSize: 0x114 } + - { offset: 0xA651A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0x66B0, symBinAddr: 0x25BCC, symSize: 0x124 } + - { offset: 0xA6595, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x67D4, symBinAddr: 0x25CF0, symSize: 0x120 } + - { offset: 0xA661B, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x68F4, symBinAddr: 0x25E10, symSize: 0x204 } + - { offset: 0xA66F8, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI18FloatingPanelStateC_SaySo18NSLayoutConstraintCGTg5', symObjAddr: 0x6AF8, symBinAddr: 0x26014, symSize: 0x158 } + - { offset: 0xA67A8, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_SSTg5', symObjAddr: 0x6C50, symBinAddr: 0x2616C, symSize: 0x16C } + - { offset: 0xA686E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_SbTg5', symObjAddr: 0x6DBC, symBinAddr: 0x262D8, symSize: 0x15C } + - { offset: 0xA6929, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_ypTg5', symObjAddr: 0x6F18, symBinAddr: 0x26434, symSize: 0x198 } + - { offset: 0xA69E7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI11RouteOptionV0gH3KeyO_SbTg5', symObjAddr: 0x70B0, symBinAddr: 0x265CC, symSize: 0x140 } + - { offset: 0xA6AAD, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x71F0, symBinAddr: 0x2670C, symSize: 0x150 } + - { offset: 0xA6B68, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI9LayerTreeO8GradientV_SSTg5', symObjAddr: 0x7340, symBinAddr: 0x2685C, symSize: 0x164 } + - { offset: 0xA6C2E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_8PenNavUI3DOMO15GraphicsElementCTg5', symObjAddr: 0x74A4, symBinAddr: 0x269C0, symSize: 0x164 } + - { offset: 0xA6CFF, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGTg5', symObjAddr: 0x7608, symBinAddr: 0x26B24, symSize: 0x170 } + - { offset: 0xA6DBA, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x7778, symBinAddr: 0x26C94, symSize: 0x15C } + - { offset: 0xA6E8B, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI9FontStyleO_So6UIFontCTg5', symObjAddr: 0x78D4, symBinAddr: 0x26DF0, symSize: 0x150 } + - { offset: 0xA6F51, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSi_8PenNavUI5ColorVTg5', symObjAddr: 0x7A24, symBinAddr: 0x26F40, symSize: 0x16C } + - { offset: 0xA7022, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI11CommandLineO8ModifierO_SSSgTg5', symObjAddr: 0x7B90, symBinAddr: 0x270AC, symSize: 0x158 } + - { offset: 0xA70DD, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x7CE8, symBinAddr: 0x27204, symSize: 0x1D4 } + - { offset: 0xA71A3, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI3DOMO10StyleSheetV8SelectorO_AF22PresentationAttributesVTg5', symObjAddr: 0x7EBC, symBinAddr: 0x273D8, symSize: 0x208 } + - { offset: 0xA725E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0x80C4, symBinAddr: 0x275E0, symSize: 0x164 } + - { offset: 0xA7324, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI18FloatingPanelStateC_AD0gH15LayoutAnchoring_pTg5', symObjAddr: 0x8228, symBinAddr: 0x27744, symSize: 0x158 } + - { offset: 0xA7400, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x8380, symBinAddr: 0x2789C, symSize: 0x348 } + - { offset: 0xA752E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI18FloatingPanelStateC_SaySo18NSLayoutConstraintCGTg5', symObjAddr: 0x86C8, symBinAddr: 0x27BE4, symSize: 0x268 } + - { offset: 0xA762B, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_SSTg5', symObjAddr: 0x8930, symBinAddr: 0x27E4C, symSize: 0x2B4 } + - { offset: 0xA771D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_SbTg5', symObjAddr: 0x8BE4, symBinAddr: 0x28100, symSize: 0x294 } + - { offset: 0xA781A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_ypTg5', symObjAddr: 0x8E78, symBinAddr: 0x28394, symSize: 0x2AC } + - { offset: 0xA7941, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSi_Say7Penguin8ScheduleCGTg5', symObjAddr: 0x9124, symBinAddr: 0x28640, symSize: 0x264 } + - { offset: 0xA7A28, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI11RouteOptionV0nO3KeyO_SbTg5', symObjAddr: 0x9388, symBinAddr: 0x288A4, symSize: 0x164 } + - { offset: 0xA7A88, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x94EC, symBinAddr: 0x28A08, symSize: 0x264 } + - { offset: 0xA7BBF, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI9LayerTreeO8GradientV_SSTg5', symObjAddr: 0x9750, symBinAddr: 0x28C6C, symSize: 0x29C } + - { offset: 0xA7D24, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_8PenNavUI3DOMO15GraphicsElementCTg5', symObjAddr: 0x99EC, symBinAddr: 0x28F08, symSize: 0x29C } + - { offset: 0xA7E5D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGTg5', symObjAddr: 0x9C88, symBinAddr: 0x291A4, symSize: 0x2CC } + - { offset: 0xA802A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x9F54, symBinAddr: 0x29470, symSize: 0x2E8 } + - { offset: 0xA81C7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI9FontStyleO_So6UIFontCTg5', symObjAddr: 0xA23C, symBinAddr: 0x29758, symSize: 0x40C } + - { offset: 0xA8311, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSi_8PenNavUI5ColorVTg5', symObjAddr: 0xA68C, symBinAddr: 0x29BA8, symSize: 0x294 } + - { offset: 0xA8438, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI11CommandLineO8ModifierO_SSSgTg5', symObjAddr: 0xA920, symBinAddr: 0x29E3C, symSize: 0x3FC } + - { offset: 0xA8599, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0xAD1C, symBinAddr: 0x2A238, symSize: 0x2D4 } + - { offset: 0xA86B0, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_AH22PresentationAttributesVTg5', symObjAddr: 0xAFF0, symBinAddr: 0x2A50C, symSize: 0x320 } + - { offset: 0xA885D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0xB310, symBinAddr: 0x2A82C, symSize: 0x29C } + - { offset: 0xA894F, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI18FloatingPanelStateC_AF0nO15LayoutAnchoring_pTg5', symObjAddr: 0xB5AC, symBinAddr: 0x2AAC8, symSize: 0x268 } + - { offset: 0xA8A73, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV16_unsafeInsertNew3key5valueyxn_q_ntF8PenNavUI11RouteOptionV0kL3KeyO_SbTg5', symObjAddr: 0xB814, symBinAddr: 0x2AD30, symSize: 0x1A4 } + - { offset: 0xA8BE1, size: 0x8, addend: 0x0, symName: '_$sSa13_copyContents12initializings16IndexingIteratorVySayxGG_SitSryxG_tFSo18NSLayoutConstraintC_Tg5', symObjAddr: 0xB9B8, symBinAddr: 0x2AED4, symSize: 0x170 } + - { offset: 0xA8DC6, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSbABXEfU_SaySSG_TG5', symObjAddr: 0xBE64, symBinAddr: 0x2B36C, symSize: 0x54 } + - { offset: 0xA8E2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_TA', symObjAddr: 0xBEDC, symBinAddr: 0x2B3E4, symSize: 0x8 } + - { offset: 0xA8E8F, size: 0x8, addend: 0x0, symName: '_$sSh21_nonEmptyArrayLiteralShyxGSayxG_tcfC8PenNavUI9ToastTypeO_Tt0g5Tf4g_n', symObjAddr: 0xBEE4, symBinAddr: 0x2B3EC, symSize: 0x130 } + - { offset: 0xA8FC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU_TA', symObjAddr: 0xC040, symBinAddr: 0x2B548, symSize: 0x8 } + - { offset: 0xA8FD8, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xC048, symBinAddr: 0x2B550, symSize: 0x10 } + - { offset: 0xA8FEC, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xC058, symBinAddr: 0x2B560, symSize: 0x8 } + - { offset: 0xA9000, size: 0x8, addend: 0x0, symName: '_$sSay8Dispatch0A13WorkItemFlagsVGSayxGSTsWl', symObjAddr: 0xC060, symBinAddr: 0x2B568, symSize: 0x5C } + - { offset: 0xA9026, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSbABXEfU_SaySSG_TG5TA', symObjAddr: 0xC114, symBinAddr: 0x2B61C, symSize: 0x54 } + - { offset: 0xA90A3, size: 0x8, addend: 0x0, symName: '_$sypWOc', symObjAddr: 0xC188, symBinAddr: 0x2B670, symSize: 0x3C } + - { offset: 0xA90B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4dnn_n', symObjAddr: 0xC2A0, symBinAddr: 0x2B788, symSize: 0x1A8 } + - { offset: 0xA919C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC13dismissAction33_A0B591B96AA499ED77538E2604F14735LLyyFyycfU_TA', symObjAddr: 0xC450, symBinAddr: 0x2B930, symSize: 0x8 } + - { offset: 0xA91D1, size: 0x8, addend: 0x0, symName: '_$sSh21_nonEmptyArrayLiteralShyxGSayxG_tcfCSS_Tt0g5Tf4g_n', symObjAddr: 0xC478, symBinAddr: 0x2B938, symSize: 0x15C } + - { offset: 0xA9349, size: 0x8, addend: 0x0, symName: '_$sSh21_nonEmptyArrayLiteralShyxGSayxG_tcfC10Foundation8CalendarV9ComponentO_Tt0g5Tf4g_n', symObjAddr: 0xC5D4, symBinAddr: 0x2BA94, symSize: 0x268 } + - { offset: 0xA942A, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetWOb', symObjAddr: 0xC8C0, symBinAddr: 0x2BD40, symSize: 0x48 } + - { offset: 0xA943E, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetWOd', symObjAddr: 0xC908, symBinAddr: 0x2BD88, symSize: 0x48 } + - { offset: 0xA9452, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_TA', symObjAddr: 0xC97C, symBinAddr: 0x2BDFC, symSize: 0x8 } + - { offset: 0xA9466, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFSb7Penguin10PoiPolygonVXEfU_TA', symObjAddr: 0xC984, symBinAddr: 0x2BE04, symSize: 0x1C } + - { offset: 0xA947A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC03setC033_A0B591B96AA499ED77538E2604F14735LLyyFySo7UIImageCSgcfU_TA', symObjAddr: 0xCA1C, symBinAddr: 0x2BE20, symSize: 0x8 } + - { offset: 0xA948E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVWOc', symObjAddr: 0xCA24, symBinAddr: 0x2BE28, symSize: 0x3C } + - { offset: 0xA94A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVWOh', symObjAddr: 0xCA60, symBinAddr: 0x2BE64, symSize: 0x34 } + - { offset: 0xA94B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVWOc', symObjAddr: 0xCA94, symBinAddr: 0x2BE98, symSize: 0x44 } + - { offset: 0xA94CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOWOy', symObjAddr: 0xCAD8, symBinAddr: 0x2BEDC, symSize: 0x18 } + - { offset: 0xA94DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVWOb', symObjAddr: 0xCAF0, symBinAddr: 0x2BEF4, symSize: 0x44 } + - { offset: 0xA950C, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x0, symBinAddr: 0x1F624, symSize: 0x110 } + - { offset: 0xA95D3, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x110, symBinAddr: 0x1F734, symSize: 0xC4 } + - { offset: 0xA96FD, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x1D4, symBinAddr: 0x1F7F8, symSize: 0x1DC } + - { offset: 0xA985C, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxFSi_Tg5', symObjAddr: 0x3B0, symBinAddr: 0x1F9D4, symSize: 0xA0 } + - { offset: 0xA98AD, size: 0x8, addend: 0x0, symName: '_$sSTsE8contains5whereS2b7ElementQzKXE_tKFSS_Tg5', symObjAddr: 0x450, symBinAddr: 0x1FA74, symSize: 0xC8 } + - { offset: 0xA9914, size: 0x8, addend: 0x0, symName: '_$sSTsE8contains5whereS2b7ElementQzKXE_tKFSaySSG_Tg5', symObjAddr: 0x518, symBinAddr: 0x1FB3C, symSize: 0xA4 } + - { offset: 0xA9A28, size: 0x8, addend: 0x0, symName: '_$sSTsE8contains5whereS2b7ElementQzKXE_tKFSay8PenNavUI5PlaceCG_Tg5', symObjAddr: 0x5BC, symBinAddr: 0x1FBE0, symSize: 0x134 } + - { offset: 0xA9B60, size: 0x8, addend: 0x0, symName: '_$sSTsE8contains5whereS2b7ElementQzKXE_tKFSaySo19UIGestureRecognizerCG_Tg5', symObjAddr: 0x6F0, symBinAddr: 0x1FD14, symSize: 0x128 } + - { offset: 0xA9D63, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFSay7Penguin10PoiPolygonVG_Tg5', symObjAddr: 0xA30, symBinAddr: 0x20054, symSize: 0x154 } + - { offset: 0xA9E1E, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFSay8PenNavUI3DOMO7PatternVG_Tg5', symObjAddr: 0xCE8, symBinAddr: 0x2030C, symSize: 0x120 } + - { offset: 0xAA18D, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSo18NSLayoutConstraintC_SayAFGTg5', symObjAddr: 0x40E0, symBinAddr: 0x23704, symSize: 0xF4 } + - { offset: 0xAA36B, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI9LayerTreeO4PathC7SegmentO_SayAKGTg5', symObjAddr: 0x41D4, symBinAddr: 0x237F8, symSize: 0xF0 } + - { offset: 0xAA610, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSf_SaySfGTg5', symObjAddr: 0x43EC, symBinAddr: 0x23A10, symSize: 0xE8 } + - { offset: 0xAA8B5, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF7Penguin5FloorCSg_SayAHGTg5', symObjAddr: 0x4534, symBinAddr: 0x23B58, symSize: 0xF8 } + - { offset: 0xAAB4B, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSS_SaySSGTg5', symObjAddr: 0x462C, symBinAddr: 0x23C50, symSize: 0xF0 } + - { offset: 0xAADF0, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSo22CLLocationCoordinate2DV_SayAFGTg5', symObjAddr: 0x471C, symBinAddr: 0x23D40, symSize: 0xE8 } + - { offset: 0xAB095, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI3DOMO10StyleSheetV8SelectorO_SayAKGTg5', symObjAddr: 0x4874, symBinAddr: 0x23E98, symSize: 0xF4 } + - { offset: 0xAB33A, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI15RendererCommandOyAE11CGTextTypesVG_SayAJGTg5', symObjAddr: 0x4968, symBinAddr: 0x23F8C, symSize: 0xFC } + - { offset: 0xAB5DF, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI16SFSymbolRendererV10SymbolPathV_SayAIGTg5', symObjAddr: 0x4A64, symBinAddr: 0x24088, symSize: 0xF4 } + - { offset: 0xAB884, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI15RendererCommandOyAE7CGTypesVG_SayAJGTg5', symObjAddr: 0x4B58, symBinAddr: 0x2417C, symSize: 0x10C } + - { offset: 0xABB31, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSi_SaySiGTg5', symObjAddr: 0x4C64, symBinAddr: 0x24288, symSize: 0xE8 } + - { offset: 0xABE3C, size: 0x8, addend: 0x0, symName: '_$sSh10isDisjoint4withSbShyxG_tF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x5D68, symBinAddr: 0x2529C, symSize: 0x16C } + - { offset: 0xAC39C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x818, symBinAddr: 0x1FE3C, symSize: 0x20 } + - { offset: 0xAC3F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x838, symBinAddr: 0x1FE5C, symSize: 0x14 } + - { offset: 0xAC447, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC13iconContainerSo6UIViewCSgvgTo', symObjAddr: 0x84C, symBinAddr: 0x1FE70, symSize: 0x20 } + - { offset: 0xAC4A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC13iconContainerSo6UIViewCSgvsTo', symObjAddr: 0x86C, symBinAddr: 0x1FE90, symSize: 0x14 } + - { offset: 0xAC4F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12categoryNameSo7UILabelCSgvgTo', symObjAddr: 0x880, symBinAddr: 0x1FEA4, symSize: 0x20 } + - { offset: 0xAC54C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12categoryNameSo7UILabelCSgvsTo', symObjAddr: 0x8A0, symBinAddr: 0x1FEC4, symSize: 0x14 } + - { offset: 0xAC59D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC19categoryInformationSo7UILabelCSgvgTo', symObjAddr: 0x8B4, symBinAddr: 0x1FED8, symSize: 0x20 } + - { offset: 0xAC5F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC19categoryInformationSo7UILabelCSgvsTo', symObjAddr: 0x8D4, symBinAddr: 0x1FEF8, symSize: 0x14 } + - { offset: 0xAC643, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12categoryIconSo07UIImageF0CSgvgTo', symObjAddr: 0x8E8, symBinAddr: 0x1FF0C, symSize: 0x20 } + - { offset: 0xAC69D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12categoryIconSo07UIImageF0CSgvsTo', symObjAddr: 0x908, symBinAddr: 0x1FF2C, symSize: 0x14 } + - { offset: 0xAC6EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC07loadingF0So07UIStackF0CSgvgTo', symObjAddr: 0x91C, symBinAddr: 0x1FF40, symSize: 0x20 } + - { offset: 0xAC748, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC07loadingF0So07UIStackF0CSgvsTo', symObjAddr: 0x93C, symBinAddr: 0x1FF60, symSize: 0x14 } + - { offset: 0xAC799, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC18exploreVenueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x950, symBinAddr: 0x1FF74, symSize: 0x20 } + - { offset: 0xAC7F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC18exploreVenueButtonSo8UIButtonCSgvsTo', symObjAddr: 0x970, symBinAddr: 0x1FF94, symSize: 0x14 } + - { offset: 0xAC844, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12exploreStackSo07UIStackF0CSgvgTo', symObjAddr: 0x984, symBinAddr: 0x1FFA8, symSize: 0x20 } + - { offset: 0xAC899, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12exploreStackSo07UIStackF0CSgvsTo', symObjAddr: 0x9A4, symBinAddr: 0x1FFC8, symSize: 0x14 } + - { offset: 0xAC8EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC22searchVerticalConstantSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x9B8, symBinAddr: 0x1FFDC, symSize: 0x20 } + - { offset: 0xAC944, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC22searchVerticalConstantSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x9D8, symBinAddr: 0x1FFFC, symSize: 0x14 } + - { offset: 0xAC995, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC09separatorF0So6UIViewCSgvgTo', symObjAddr: 0x9EC, symBinAddr: 0x20010, symSize: 0x10 } + - { offset: 0xAC9AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC09separatorF0So6UIViewCSgvgTo', symObjAddr: 0x9EC, symBinAddr: 0x20010, symSize: 0x10 } + - { offset: 0xAC9E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC09separatorF0So6UIViewCSgvsTo', symObjAddr: 0x9FC, symBinAddr: 0x20020, symSize: 0x34 } + - { offset: 0xACA83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC11viewDidLoadyyF', symObjAddr: 0xE08, symBinAddr: 0x2042C, symSize: 0x1A0 } + - { offset: 0xACC54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x1428, symBinAddr: 0x20A4C, symSize: 0x28 } + - { offset: 0xACC68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC03setC033_A0B591B96AA499ED77538E2604F14735LLyyF', symObjAddr: 0x1450, symBinAddr: 0x20A74, symSize: 0x3BC } + - { offset: 0xACD94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC03setC033_A0B591B96AA499ED77538E2604F14735LLyyFySo7UIImageCSgcfU_', symObjAddr: 0x180C, symBinAddr: 0x20E30, symSize: 0xAC } + - { offset: 0xACEDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC03setD16CountInformation33_A0B591B96AA499ED77538E2604F14735LLyyF', symObjAddr: 0x18B8, symBinAddr: 0x20EDC, symSize: 0x340 } + - { offset: 0xAD1F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC7dismissyyFTo', symObjAddr: 0x1BF8, symBinAddr: 0x2121C, symSize: 0xA0 } + - { offset: 0xAD27A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC13dismissAction33_A0B591B96AA499ED77538E2604F14735LLyyFyycfU_', symObjAddr: 0x1C98, symBinAddr: 0x212BC, symSize: 0x88 } + - { offset: 0xAD2E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC18exploreVenueActionyySo8UIButtonCFTo', symObjAddr: 0x1D20, symBinAddr: 0x21344, symSize: 0x70 } + - { offset: 0xAD3C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9resetData33_A0B591B96AA499ED77538E2604F14735LLyyF', symObjAddr: 0x1D90, symBinAddr: 0x213B4, symSize: 0x208 } + - { offset: 0xAD596, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x2134, symBinAddr: 0x21758, symSize: 0x68 } + - { offset: 0xAD68A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x219C, symBinAddr: 0x217C0, symSize: 0x1DC } + - { offset: 0xAD8F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2378, symBinAddr: 0x2199C, symSize: 0xC8 } + - { offset: 0xAD934, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x2440, symBinAddr: 0x21A64, symSize: 0x1A0 } + - { offset: 0xAD9C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFSb7Penguin10PoiPolygonVXEfU_', symObjAddr: 0x25E0, symBinAddr: 0x21C04, symSize: 0xF4 } + - { offset: 0xADAC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x26D4, symBinAddr: 0x21CF8, symSize: 0xC0 } + - { offset: 0xADADD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x2794, symBinAddr: 0x21DB8, symSize: 0xE0 } + - { offset: 0xADB5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0x2874, symBinAddr: 0x21E98, symSize: 0x2B4 } + - { offset: 0xADBBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_', symObjAddr: 0x2B28, symBinAddr: 0x2214C, symSize: 0xE8 } + - { offset: 0xADC5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0x2C10, symBinAddr: 0x22234, symSize: 0x50 } + - { offset: 0xADD33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x2C60, symBinAddr: 0x22284, symSize: 0x428 } + - { offset: 0xADF9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x3088, symBinAddr: 0x226AC, symSize: 0x60 } + - { offset: 0xADFAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x30E8, symBinAddr: 0x2270C, symSize: 0x404 } + - { offset: 0xAE209, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x34EC, symBinAddr: 0x22B10, symSize: 0x28 } + - { offset: 0xAE21D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCfD', symObjAddr: 0x3678, symBinAddr: 0x22C9C, symSize: 0x34 } + - { offset: 0xAE61D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTf4dnnn_n', symObjAddr: 0xC1C4, symBinAddr: 0x2B6AC, symSize: 0xDC } + - { offset: 0xAEAB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AppleSynthesizerCfD', symObjAddr: 0x0, symBinAddr: 0x2BF4C, symSize: 0x24 } + - { offset: 0xAEB0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AppleSynthesizerCMa', symObjAddr: 0x24, symBinAddr: 0x2BF70, symSize: 0x20 } + - { offset: 0xAEB4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AppleSynthesizerCfD', symObjAddr: 0x0, symBinAddr: 0x2BF4C, symSize: 0x24 } + - { offset: 0xAF485, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC11makeNonZeroAEyF', symObjAddr: 0x0, symBinAddr: 0x2BF90, symSize: 0xEB0 } + - { offset: 0xB10EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC9makeNodes33_6ED7540220CCE3981622A6B3F3D0E057LLSayAA03SubF4NodeAGLLVGyF', symObjAddr: 0xEB0, symBinAddr: 0x2CE40, symSize: 0x484 } + - { offset: 0xB1A96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8reversedAEvg', symObjAddr: 0x1334, symBinAddr: 0x2D2C4, symSize: 0x5C4 } + - { offset: 0xB25F1, size: 0x8, addend: 0x0, symName: '_$sST8PenNavUIAA9LayerTreeO4PathC7SegmentO7ElementRtzrlE9directionAE9DirectionOvgSayAGG_Tg5', symObjAddr: 0x1DFC, symBinAddr: 0x2DD8C, symSize: 0x270 } + - { offset: 0xB2A60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVWOc', symObjAddr: 0x245C, symBinAddr: 0x2E3EC, symSize: 0x34 } + - { offset: 0xB2A74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVWOh', symObjAddr: 0x2490, symBinAddr: 0x2E420, symSize: 0x2C } + - { offset: 0xB2A88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwxx', symObjAddr: 0x2568, symBinAddr: 0x2E44C, symSize: 0x30 } + - { offset: 0xB2A9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwcp', symObjAddr: 0x2598, symBinAddr: 0x2E47C, symSize: 0x5C } + - { offset: 0xB2AB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwca', symObjAddr: 0x25F4, symBinAddr: 0x2E4D8, symSize: 0x9C } + - { offset: 0xB2AC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwta', symObjAddr: 0x26A4, symBinAddr: 0x2E574, symSize: 0x5C } + - { offset: 0xB2AD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwet', symObjAddr: 0x2700, symBinAddr: 0x2E5D0, symSize: 0x48 } + - { offset: 0xB2AEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwst', symObjAddr: 0x2748, symBinAddr: 0x2E618, symSize: 0x4C } + - { offset: 0xB2B00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVMa', symObjAddr: 0x2794, symBinAddr: 0x2E664, symSize: 0x10 } + - { offset: 0xB2D5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV08containsF0ySbADF', symObjAddr: 0x18F8, symBinAddr: 0x2D888, symSize: 0x22C } + - { offset: 0xB30CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV6appendyyADF', symObjAddr: 0x1B24, symBinAddr: 0x2DAB4, symSize: 0x2D8 } + - { offset: 0xB36EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV9windPathsySayAA9LayerTreeO0E0CGAI9DirectionOF', symObjAddr: 0x206C, symBinAddr: 0x2DFFC, symSize: 0x3F0 } + - { offset: 0xB4141, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC12fetchRequestSo07NSFetchG0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x2E674, symSize: 0x6C } + - { offset: 0xB41DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC12fetchRequestSo07NSFetchG0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x2E674, symSize: 0x6C } + - { offset: 0xB423A, size: 0x8, addend: 0x0, symName: _keypath_get_selector_campaignId, symObjAddr: 0x6C, symBinAddr: 0x2E6E0, symSize: 0xC } + - { offset: 0xB424E, size: 0x8, addend: 0x0, symName: _keypath_get_selector_lastNotificationDate, symObjAddr: 0xBC, symBinAddr: 0x2E730, symSize: 0xC } + - { offset: 0xB4262, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvpACTK', symObjAddr: 0xC8, symBinAddr: 0x2E73C, symSize: 0x78 } + - { offset: 0xB427A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvpACTk', symObjAddr: 0x144, symBinAddr: 0x2E7B8, symSize: 0xE0 } + - { offset: 0xB4292, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVSgWOc', symObjAddr: 0x26C, symBinAddr: 0x2E89C, symSize: 0x48 } + - { offset: 0xB4631, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10scrollViewAA06ScrollH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2E8F4, symSize: 0x10 } + - { offset: 0xB4E1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellCfETo', symObjAddr: 0xFB8, symBinAddr: 0x2F8AC, symSize: 0xF8 } + - { offset: 0xB4E4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellCMa', symObjAddr: 0x10B0, symBinAddr: 0x2F9A4, symSize: 0x20 } + - { offset: 0xB501A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10scrollViewAA06ScrollH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2E8F4, symSize: 0x10 } + - { offset: 0xB5032, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10scrollViewAA06ScrollH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2E8F4, symSize: 0x10 } + - { offset: 0xB5078, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10scrollViewAA06ScrollH0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x2E904, symSize: 0x34 } + - { offset: 0xB5160, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9stackViewSo6UIViewCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x2E938, symSize: 0x10 } + - { offset: 0xB5178, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9stackViewSo6UIViewCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x2E938, symSize: 0x10 } + - { offset: 0xB51B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9stackViewSo6UIViewCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x2E948, symSize: 0x34 } + - { offset: 0xB5207, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20outerTodayStatusViewSo6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x2E97C, symSize: 0x10 } + - { offset: 0xB521F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20outerTodayStatusViewSo6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x2E97C, symSize: 0x10 } + - { offset: 0xB525A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20outerTodayStatusViewSo6UIViewCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x2E98C, symSize: 0x34 } + - { offset: 0xB52A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20innerTodayStatusViewSo6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x2E9C0, symSize: 0x10 } + - { offset: 0xB52C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20innerTodayStatusViewSo6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x2E9C0, symSize: 0x10 } + - { offset: 0xB52FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20innerTodayStatusViewSo6UIViewCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x2E9D0, symSize: 0x34 } + - { offset: 0xB534B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11statusLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x2EA04, symSize: 0x10 } + - { offset: 0xB5363, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11statusLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x2EA04, symSize: 0x10 } + - { offset: 0xB53A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11statusLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x2EA14, symSize: 0x34 } + - { offset: 0xB53F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x2EA48, symSize: 0x10 } + - { offset: 0xB540A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x2EA48, symSize: 0x10 } + - { offset: 0xB5445, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x2EA58, symSize: 0x34 } + - { offset: 0xB5494, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11campusLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x2EA8C, symSize: 0x10 } + - { offset: 0xB54AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11campusLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x2EA8C, symSize: 0x10 } + - { offset: 0xB54E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11campusLabelSo7UILabelCSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x2EA9C, symSize: 0x34 } + - { offset: 0xB5536, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10campusViewSo6UIViewCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x2EAD0, symSize: 0x10 } + - { offset: 0xB554E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10campusViewSo6UIViewCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x2EAD0, symSize: 0x10 } + - { offset: 0xB5589, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10campusViewSo6UIViewCSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x2EAE0, symSize: 0x34 } + - { offset: 0xB55D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x220, symBinAddr: 0x2EB14, symSize: 0x10 } + - { offset: 0xB55F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x220, symBinAddr: 0x2EB14, symSize: 0x10 } + - { offset: 0xB562B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0x230, symBinAddr: 0x2EB24, symSize: 0x34 } + - { offset: 0xB567A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9venueViewSo6UIViewCSgvgTo', symObjAddr: 0x264, symBinAddr: 0x2EB58, symSize: 0x10 } + - { offset: 0xB5692, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9venueViewSo6UIViewCSgvgTo', symObjAddr: 0x264, symBinAddr: 0x2EB58, symSize: 0x10 } + - { offset: 0xB56CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9venueViewSo6UIViewCSgvsTo', symObjAddr: 0x274, symBinAddr: 0x2EB68, symSize: 0x34 } + - { offset: 0xB571C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x2A8, symBinAddr: 0x2EB9C, symSize: 0x10 } + - { offset: 0xB5734, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x2A8, symBinAddr: 0x2EB9C, symSize: 0x10 } + - { offset: 0xB576F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x2B8, symBinAddr: 0x2EBAC, symSize: 0x34 } + - { offset: 0xB57BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9floorViewSo6UIViewCSgvgTo', symObjAddr: 0x2EC, symBinAddr: 0x2EBE0, symSize: 0x10 } + - { offset: 0xB57D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9floorViewSo6UIViewCSgvgTo', symObjAddr: 0x2EC, symBinAddr: 0x2EBE0, symSize: 0x10 } + - { offset: 0xB5811, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9floorViewSo6UIViewCSgvsTo', symObjAddr: 0x2FC, symBinAddr: 0x2EBF0, symSize: 0x34 } + - { offset: 0xB5860, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC13distanceStackSo11UIStackViewCSgvgTo', symObjAddr: 0x330, symBinAddr: 0x2EC24, symSize: 0x20 } + - { offset: 0xB58BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC13distanceStackSo11UIStackViewCSgvsTo', symObjAddr: 0x350, symBinAddr: 0x2EC44, symSize: 0x14 } + - { offset: 0xB595B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC12awakeFromNibyyF', symObjAddr: 0x364, symBinAddr: 0x2EC58, symSize: 0x188 } + - { offset: 0xB5AC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC12awakeFromNibyyFTo', symObjAddr: 0x4EC, symBinAddr: 0x2EDE0, symSize: 0x28 } + - { offset: 0xB5B01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC16didTapStatusViewyyFTo', symObjAddr: 0x514, symBinAddr: 0x2EE08, symSize: 0x64 } + - { offset: 0xB5B9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0x578, symBinAddr: 0x2EE6C, symSize: 0x54 } + - { offset: 0xB5C45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10updateInfo3foryAA11PoiViewDataCSg_tF', symObjAddr: 0x5CC, symBinAddr: 0x2EEC0, symSize: 0x6F4 } + - { offset: 0xB60CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0xCC0, symBinAddr: 0x2F5B4, symSize: 0x140 } + - { offset: 0xB610E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xE00, symBinAddr: 0x2F6F4, symSize: 0x48 } + - { offset: 0xB6146, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xE48, symBinAddr: 0x2F73C, symSize: 0x118 } + - { offset: 0xB6179, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xF60, symBinAddr: 0x2F854, symSize: 0x28 } + - { offset: 0xB618D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellCfD', symObjAddr: 0xF88, symBinAddr: 0x2F87C, symSize: 0x30 } + - { offset: 0xB652C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionViewSo012UICollectionG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2F9C4, symSize: 0x20 } + - { offset: 0xB674B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellCfETo', symObjAddr: 0x3B0, symBinAddr: 0x2FD74, symSize: 0x70 } + - { offset: 0xB677A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellCMa', symObjAddr: 0x420, symBinAddr: 0x2FDE4, symSize: 0x20 } + - { offset: 0xB67E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionG0C_SitFTo', symObjAddr: 0x440, symBinAddr: 0x2FE04, symSize: 0x4C } + - { offset: 0xB6825, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionG0C_SitFTo', symObjAddr: 0x440, symBinAddr: 0x2FE04, symSize: 0x4C } + - { offset: 0xB693A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionView_13cellForItemAtSo012UICollectiongE0CSo0lG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x48C, symBinAddr: 0x2FE50, symSize: 0x154 } + - { offset: 0xB6A33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionView_15didSelectItemAtySo012UICollectionG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x5E0, symBinAddr: 0x2FFA4, symSize: 0xBC } + - { offset: 0xB6A65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionView_15didSelectItemAtySo012UICollectionG0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x69C, symBinAddr: 0x30060, symSize: 0xCC } + - { offset: 0xB6C9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionViewSo012UICollectionG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2F9C4, symSize: 0x20 } + - { offset: 0xB6CFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionViewSo012UICollectionG0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x2F9E4, symSize: 0x14 } + - { offset: 0xB6D4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x2F9F8, symSize: 0x10 } + - { offset: 0xB6D66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x2F9F8, symSize: 0x10 } + - { offset: 0xB6DA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC12seeAllButtonSo8UIButtonCSgvsTo', symObjAddr: 0x44, symBinAddr: 0x2FA08, symSize: 0x34 } + - { offset: 0xB6E10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC12awakeFromNibyyFTo', symObjAddr: 0x78, symBinAddr: 0x2FA3C, symSize: 0x90 } + - { offset: 0xB6E9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC13sellAllButtonyySo8UIButtonCFTo', symObjAddr: 0x108, symBinAddr: 0x2FACC, symSize: 0x70 } + - { offset: 0xB6EDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x178, symBinAddr: 0x2FB3C, symSize: 0xDC } + - { offset: 0xB6F20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x254, symBinAddr: 0x2FC18, symSize: 0x48 } + - { offset: 0xB6F58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x29C, symBinAddr: 0x2FC60, symSize: 0xBC } + - { offset: 0xB6F8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x358, symBinAddr: 0x2FD1C, symSize: 0x28 } + - { offset: 0xB6F9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellCfD', symObjAddr: 0x380, symBinAddr: 0x2FD44, symSize: 0x30 } + - { offset: 0xB7382, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseAnchor_7elementAA3DOMO0F0CSgAA15AttributeParser_p_AA3XMLO7ElementCtKF', symObjAddr: 0x0, symBinAddr: 0x3012C, symSize: 0x1BC } + - { offset: 0xB73F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseAnchor_7elementAA3DOMO0F0CSgAA15AttributeParser_p_AA3XMLO7ElementCtKF', symObjAddr: 0x0, symBinAddr: 0x3012C, symSize: 0x1BC } + - { offset: 0xB750A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseText_5valueAA3DOMO0F0CAA15AttributeParser_p_SStKFTf4nnd_n', symObjAddr: 0x1BC, symBinAddr: 0x302E8, symSize: 0x184 } + - { offset: 0xB75E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseText_7elementAA3DOMO0F0CSgAA15AttributeParser_p_AA3XMLO7ElementCtKFTf4nnd_n', symObjAddr: 0x340, symBinAddr: 0x3046C, symSize: 0x138 } + - { offset: 0xB7667, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgWOd', symObjAddr: 0x520, symBinAddr: 0x305A4, symSize: 0x48 } + - { offset: 0xB7FC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCfE', symObjAddr: 0x1200, symBinAddr: 0x317EC, symSize: 0xA8 } + - { offset: 0xB7FF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCfETo', symObjAddr: 0x12D8, symBinAddr: 0x318C4, symSize: 0xB4 } + - { offset: 0xB8023, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCMa', symObjAddr: 0x138C, symBinAddr: 0x31978, symSize: 0x20 } + - { offset: 0xB8061, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x13AC, symBinAddr: 0x31998, symSize: 0x68 } + - { offset: 0xB81AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1414, symBinAddr: 0x31A00, symSize: 0x194 } + - { offset: 0xB83D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0x15A8, symBinAddr: 0x31B94, symSize: 0x3D8 } + - { offset: 0xB87D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1980, symBinAddr: 0x31F6C, symSize: 0xC0 } + - { offset: 0xB8819, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_11willDisplay8forRowAtySo07UITableE0C_So0mE4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x1A40, symBinAddr: 0x3202C, symSize: 0x120 } + - { offset: 0xB88DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC06scrollE9DidScrollyySo08UIScrollE0CF', symObjAddr: 0x1B60, symBinAddr: 0x3214C, symSize: 0x50 } + - { offset: 0xB8956, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC06scrollE9DidScrollyySo08UIScrollE0CFTo', symObjAddr: 0x1BB0, symBinAddr: 0x3219C, symSize: 0x50 } + - { offset: 0xB8981, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x1C00, symBinAddr: 0x321EC, symSize: 0x14 } + - { offset: 0xB89CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x1C14, symBinAddr: 0x32200, symSize: 0x24 } + - { offset: 0xB8A3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC10setupPanelyyF', symObjAddr: 0x1C38, symBinAddr: 0x32224, symSize: 0xBC } + - { offset: 0xB8AE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC10setupPanelyyFTo', symObjAddr: 0x1CF4, symBinAddr: 0x322E0, symSize: 0x28 } + - { offset: 0xB8B1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x1D1C, symBinAddr: 0x32308, symSize: 0x268 } + - { offset: 0xB8D50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x1F84, symBinAddr: 0x32570, symSize: 0x50 } + - { offset: 0xB8D7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC27floatingPanelDidChangeStateyyAA08FloatinghF0CF', symObjAddr: 0x1FD4, symBinAddr: 0x325C0, symSize: 0xF4 } + - { offset: 0xB8E4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC27floatingPanelDidChangeStateyyAA08FloatinghF0CFTo', symObjAddr: 0x20C8, symBinAddr: 0x326B4, symSize: 0x50 } + - { offset: 0xB8E95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCAA17SearchBarDelegateA2aDP06searchH19TextDidBeginEditingyyAA0gH0CFTW', symObjAddr: 0x2118, symBinAddr: 0x32704, symSize: 0x70 } + - { offset: 0xB8EF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x2204, symBinAddr: 0x32774, symSize: 0xC } + - { offset: 0xB8F49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x2210, symBinAddr: 0x32780, symSize: 0x34 } + - { offset: 0xB9030, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTf4d_n', symObjAddr: 0x2568, symBinAddr: 0x32AD8, symSize: 0xA8 } + - { offset: 0xB90A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4dnn_n', symObjAddr: 0x2610, symBinAddr: 0x32B80, symSize: 0x114 } + - { offset: 0xB9107, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2750, symBinAddr: 0x32CB8, symSize: 0x10 } + - { offset: 0xB911B, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2760, symBinAddr: 0x32CC8, symSize: 0x8 } + - { offset: 0xB912F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_TA', symObjAddr: 0x2788, symBinAddr: 0x32CD0, symSize: 0x8 } + - { offset: 0xB9143, size: 0x8, addend: 0x0, symName: '_$sSo17OS_dispatch_queueCMa', symObjAddr: 0x2790, symBinAddr: 0x32CD8, symSize: 0x44 } + - { offset: 0xB9157, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU0_TA', symObjAddr: 0x27D4, symBinAddr: 0x32D1C, symSize: 0x8 } + - { offset: 0xB916B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU_TA', symObjAddr: 0x28B4, symBinAddr: 0x32D24, symSize: 0x8 } + - { offset: 0xB9579, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x305EC, symSize: 0x10 } + - { offset: 0xB9591, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x305EC, symSize: 0x10 } + - { offset: 0xB95D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0So07UITableE0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x305FC, symSize: 0x34 } + - { offset: 0xB9626, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9searchBarAA06SearchH0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x30630, symSize: 0x10 } + - { offset: 0xB963E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9searchBarAA06SearchH0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x30630, symSize: 0x10 } + - { offset: 0xB967E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9searchBarAA06SearchH0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x30640, symSize: 0x34 } + - { offset: 0xB96CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC09separatorE0So6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x30674, symSize: 0x10 } + - { offset: 0xB96E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC09separatorE0So6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x30674, symSize: 0x10 } + - { offset: 0xB9725, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC09separatorE0So6UIViewCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x30684, symSize: 0x34 } + - { offset: 0xB979E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC11viewDidLoadyyFTo', symObjAddr: 0xCC, symBinAddr: 0x306B8, symSize: 0x9C } + - { offset: 0xB982F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC014configureTableE0yyF', symObjAddr: 0x168, symBinAddr: 0x30754, symSize: 0x1A8 } + - { offset: 0xB994F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC10showLoaderyyF', symObjAddr: 0x310, symBinAddr: 0x308FC, symSize: 0x184 } + - { offset: 0xB9B65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyF', symObjAddr: 0x494, symBinAddr: 0x30A80, symSize: 0x298 } + - { offset: 0xB9E5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_', symObjAddr: 0x72C, symBinAddr: 0x30D18, symSize: 0x608 } + - { offset: 0xBA046, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU_', symObjAddr: 0xD34, symBinAddr: 0x31320, symSize: 0x90 } + - { offset: 0xBA0A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU0_', symObjAddr: 0xDC4, symBinAddr: 0x313B0, symSize: 0x108 } + - { offset: 0xBA244, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC10closePanelyyFTo', symObjAddr: 0xECC, symBinAddr: 0x314B8, symSize: 0x38 } + - { offset: 0xBA27C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xF04, symBinAddr: 0x314F0, symSize: 0x150 } + - { offset: 0xBA2E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x1054, symBinAddr: 0x31640, symSize: 0x60 } + - { offset: 0xBA2FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x10B4, symBinAddr: 0x316A0, symSize: 0x124 } + - { offset: 0xBA35A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x11D8, symBinAddr: 0x317C4, symSize: 0x28 } + - { offset: 0xBA36E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCfD', symObjAddr: 0x12A8, symBinAddr: 0x31894, symSize: 0x30 } + - { offset: 0xBA61F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC19getLocationParamter33_78381C2850B81E97E495CA315016B4E5LLSDySSypGyFTf4d_n', symObjAddr: 0x2244, symBinAddr: 0x327B4, symSize: 0x324 } + - { offset: 0xBAC0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV13encodeElement_6indentSSAC0G0C_SitF', symObjAddr: 0x0, symBinAddr: 0x32D3C, symSize: 0x3B8 } + - { offset: 0xBACFD, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVySSG_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1cn_n', symObjAddr: 0x548, symBinAddr: 0x33240, symSize: 0x68 } + - { offset: 0xBAEBB, size: 0x8, addend: 0x0, symName: '_$sSlsE8dropLasty11SubSequenceQzSiFSS_Tg5Tf4ng_n', symObjAddr: 0x1854, symBinAddr: 0x3454C, symSize: 0xB8 } + - { offset: 0xBB267, size: 0x8, addend: 0x0, symName: '_$sSaySSGSayxGSKsWl', symObjAddr: 0x5B0, symBinAddr: 0x332A8, symSize: 0x44 } + - { offset: 0xBB27B, size: 0x8, addend: 0x0, symName: '_$sSaySSGMa', symObjAddr: 0x5F4, symBinAddr: 0x332EC, symSize: 0x50 } + - { offset: 0xBB2EA, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFSS_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1cn_n', symObjAddr: 0x644, symBinAddr: 0x3333C, symSize: 0xF4 } + - { offset: 0xBB53B, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_SS_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1nnncn_n', symObjAddr: 0x738, symBinAddr: 0x33430, symSize: 0x5CC } + - { offset: 0xBBBAE, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSrySSG_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1nncn_n', symObjAddr: 0xD04, symBinAddr: 0x339FC, symSize: 0x14C } + - { offset: 0xBBDBC, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKFSS_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1nncn_n', symObjAddr: 0xE50, symBinAddr: 0x33B48, symSize: 0x26C } + - { offset: 0xBC157, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlFSS_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1nnnnc_n', symObjAddr: 0x10BC, symBinAddr: 0x33DB4, symSize: 0x354 } + - { offset: 0xBC4CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV13encodeElement_6indentSSAC0G0C_SitF', symObjAddr: 0x0, symBinAddr: 0x32D3C, symSize: 0x3B8 } + - { offset: 0xBCB1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV18encodeElementStart33_714E3D04D4D736208724671E75290AF9LL_6indentSSAC0G0C_SitF', symObjAddr: 0x3B8, symBinAddr: 0x330F4, symSize: 0x14C } + - { offset: 0xBCDC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFTf4nd_n', symObjAddr: 0x1410, symBinAddr: 0x34108, symSize: 0x444 } + - { offset: 0xBD539, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x34604, symSize: 0x8 } + - { offset: 0xBD5AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x8, symBinAddr: 0x3460C, symSize: 0x54 } + - { offset: 0xBD668, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x34660, symSize: 0x1C } + - { offset: 0xBD680, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x34660, symSize: 0x1C } + - { offset: 0xBD694, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x34660, symSize: 0x1C } + - { offset: 0xBD6A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x34660, symSize: 0x1C } + - { offset: 0xBD6BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x34660, symSize: 0x1C } + - { offset: 0xBD6E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x78, symBinAddr: 0x3467C, symSize: 0x50 } + - { offset: 0xBD787, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x1E8, symBinAddr: 0x347EC, symSize: 0x28 } + - { offset: 0xBD7A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x210, symBinAddr: 0x34814, symSize: 0x28 } + - { offset: 0xBD7FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x9B0, symBinAddr: 0x34FB0, symSize: 0x84 } + - { offset: 0xBD8B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0xA34, symBinAddr: 0x35034, symSize: 0x60 } + - { offset: 0xBD934, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xA94, symBinAddr: 0x35094, symSize: 0x40 } + - { offset: 0xBD986, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xAD4, symBinAddr: 0x350D4, symSize: 0x5C } + - { offset: 0xBD9E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0xBD8, symBinAddr: 0x351CC, symSize: 0x28 } + - { offset: 0xBDA04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0xC00, symBinAddr: 0x351F4, symSize: 0x28 } + - { offset: 0xBDA4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x19FC, symBinAddr: 0x35F38, symSize: 0x28 } + - { offset: 0xBDA66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x1A24, symBinAddr: 0x35F60, symSize: 0x28 } + - { offset: 0xBDC31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseCMa', symObjAddr: 0x25C, symBinAddr: 0x34860, symSize: 0x20 } + - { offset: 0xBDE47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataCMa', symObjAddr: 0xDA8, symBinAddr: 0x3539C, symSize: 0x20 } + - { offset: 0xBE022, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailCMa', symObjAddr: 0x1A70, symBinAddr: 0x35FAC, symSize: 0x20 } + - { offset: 0xBE036, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOAEs0H3KeyAAWl', symObjAddr: 0x1EB8, symBinAddr: 0x3638C, symSize: 0x40 } + - { offset: 0xBE04A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOAEs0F3KeyAAWl', symObjAddr: 0x1F18, symBinAddr: 0x363CC, symSize: 0x40 } + - { offset: 0xBE05E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVACSeAAWl', symObjAddr: 0x2010, symBinAddr: 0x364C4, symSize: 0x40 } + - { offset: 0xBE072, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOAFs0F3KeyAAWl', symObjAddr: 0x209C, symBinAddr: 0x36550, symSize: 0x40 } + - { offset: 0xBE086, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE6decode2asxSgxm_tSeRzlFSayAA15LocalizedObjectVG_Tt0g5', symObjAddr: 0x20DC, symBinAddr: 0x36590, symSize: 0x164 } + - { offset: 0xBE127, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVSgWOe', symObjAddr: 0x2280, symBinAddr: 0x366F4, symSize: 0x14 } + - { offset: 0xBE13B, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationOWOe', symObjAddr: 0x2294, symBinAddr: 0x36708, symSize: 0x40 } + - { offset: 0xBE14F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVACSEAAWl', symObjAddr: 0x22D4, symBinAddr: 0x36748, symSize: 0x40 } + - { offset: 0xBE163, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOwet', symObjAddr: 0x24F8, symBinAddr: 0x3695C, symSize: 0x90 } + - { offset: 0xBE177, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOwst', symObjAddr: 0x2588, symBinAddr: 0x369EC, symSize: 0xB0 } + - { offset: 0xBE18B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOwui', symObjAddr: 0x2644, symBinAddr: 0x36A9C, symSize: 0xC } + - { offset: 0xBE19F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOMa', symObjAddr: 0x2650, symBinAddr: 0x36AA8, symSize: 0x10 } + - { offset: 0xBE1B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOwet', symObjAddr: 0x2660, symBinAddr: 0x36AB8, symSize: 0x90 } + - { offset: 0xBE1C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOwst', symObjAddr: 0x26F0, symBinAddr: 0x36B48, symSize: 0xB0 } + - { offset: 0xBE1DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOMa', symObjAddr: 0x27B4, symBinAddr: 0x36BF8, symSize: 0x10 } + - { offset: 0xBE1EF, size: 0x8, addend: 0x0, symName: ___swift_memcpy0_1, symObjAddr: 0x27C4, symBinAddr: 0x36C08, symSize: 0x4 } + - { offset: 0xBE203, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOwet', symObjAddr: 0x27C8, symBinAddr: 0x36C0C, symSize: 0x50 } + - { offset: 0xBE217, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOwst', symObjAddr: 0x2818, symBinAddr: 0x36C5C, symSize: 0x7C } + - { offset: 0xBE22B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOwug', symObjAddr: 0x2894, symBinAddr: 0x36CD8, symSize: 0x8 } + - { offset: 0xBE23F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOMa', symObjAddr: 0x28A4, symBinAddr: 0x36CE0, symSize: 0x10 } + - { offset: 0xBE253, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x28B4, symBinAddr: 0x36CF0, symSize: 0x4 } + - { offset: 0xBE267, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x28B8, symBinAddr: 0x36CF4, symSize: 0x40 } + - { offset: 0xBE27B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSHAASQWb', symObjAddr: 0x28F8, symBinAddr: 0x36D34, symSize: 0x4 } + - { offset: 0xBE28F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOAESQAAWl', symObjAddr: 0x28FC, symBinAddr: 0x36D38, symSize: 0x40 } + - { offset: 0xBE2A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOSHAASQWb', symObjAddr: 0x293C, symBinAddr: 0x36D78, symSize: 0x4 } + - { offset: 0xBE2B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOAFSQAAWl', symObjAddr: 0x2940, symBinAddr: 0x36D7C, symSize: 0x40 } + - { offset: 0xBE2CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2980, symBinAddr: 0x36DBC, symSize: 0x4 } + - { offset: 0xBE2DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2984, symBinAddr: 0x36DC0, symSize: 0x40 } + - { offset: 0xBE2F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x29C4, symBinAddr: 0x36E00, symSize: 0x4 } + - { offset: 0xBE307, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x29C8, symBinAddr: 0x36E04, symSize: 0x40 } + - { offset: 0xBE31B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2A08, symBinAddr: 0x36E44, symSize: 0x4 } + - { offset: 0xBE32F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2A0C, symBinAddr: 0x36E48, symSize: 0x40 } + - { offset: 0xBE343, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x2A4C, symBinAddr: 0x36E88, symSize: 0x4 } + - { offset: 0xBE357, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x2A50, symBinAddr: 0x36E8C, symSize: 0x40 } + - { offset: 0xBE36B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2A90, symBinAddr: 0x36ECC, symSize: 0x4 } + - { offset: 0xBE37F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2A94, symBinAddr: 0x36ED0, symSize: 0x40 } + - { offset: 0xBE393, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x2AD4, symBinAddr: 0x36F10, symSize: 0x4 } + - { offset: 0xBE3A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x2AD8, symBinAddr: 0x36F14, symSize: 0x40 } + - { offset: 0xBE3FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSYAASY8rawValuexSg03RawK0Qz_tcfCTW', symObjAddr: 0xC8, symBinAddr: 0x346CC, symSize: 0x64 } + - { offset: 0xBE43F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x12C, symBinAddr: 0x34730, symSize: 0x20 } + - { offset: 0xBE457, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x12C, symBinAddr: 0x34730, symSize: 0x20 } + - { offset: 0xBE46B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x12C, symBinAddr: 0x34730, symSize: 0x20 } + - { offset: 0xBE485, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x34750, symSize: 0x1C } + - { offset: 0xBE49D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x34750, symSize: 0x1C } + - { offset: 0xBE4B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x34750, symSize: 0x1C } + - { offset: 0xBE4C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x34750, symSize: 0x1C } + - { offset: 0xBE4EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x168, symBinAddr: 0x3476C, symSize: 0x68 } + - { offset: 0xBE542, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP8intValueSiSgvgTW', symObjAddr: 0x1D0, symBinAddr: 0x347D4, symSize: 0xC } + - { offset: 0xBE556, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP8intValuexSgSi_tcfCTW', symObjAddr: 0x1DC, symBinAddr: 0x347E0, symSize: 0xC } + - { offset: 0xBE593, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseCfD', symObjAddr: 0x238, symBinAddr: 0x3483C, symSize: 0x24 } + - { offset: 0xBE5D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x27C, symBinAddr: 0x34880, symSize: 0x128 } + - { offset: 0xBE605, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x3A4, symBinAddr: 0x349A8, symSize: 0x180 } + - { offset: 0xBE636, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x54C, symBinAddr: 0x34B50, symSize: 0x20 } + - { offset: 0xBE64F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC06cachedE0AcA06CachedD0C_tcfc', symObjAddr: 0x56C, symBinAddr: 0x34B70, symSize: 0x2C8 } + - { offset: 0xBE6B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xB30, symBinAddr: 0x35130, symSize: 0x2C } + - { offset: 0xBE6DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0xB5C, symBinAddr: 0x3515C, symSize: 0x28 } + - { offset: 0xBE6F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xB84, symBinAddr: 0x35184, symSize: 0x18 } + - { offset: 0xBE717, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0xB9C, symBinAddr: 0x3519C, symSize: 0x24 } + - { offset: 0xBE75F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAsAFP8intValuexSgSi_tcfCTW', symObjAddr: 0xBCC, symBinAddr: 0x351C0, symSize: 0xC } + - { offset: 0xBE773, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC7getNameSSSgyF', symObjAddr: 0xC28, symBinAddr: 0x3521C, symSize: 0xF4 } + - { offset: 0xBE818, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataCfd', symObjAddr: 0xD1C, symBinAddr: 0x35310, symSize: 0x6C } + - { offset: 0xBE83B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataCfD', symObjAddr: 0xD88, symBinAddr: 0x3537C, symSize: 0x20 } + - { offset: 0xBE85E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC6encode2toys7Encoder_p_tKF', symObjAddr: 0xDC8, symBinAddr: 0x353BC, symSize: 0x4B4 } + - { offset: 0xBE88F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x127C, symBinAddr: 0x35870, symSize: 0x564 } + - { offset: 0xBE8C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1808, symBinAddr: 0x35DFC, symSize: 0x20 } + - { offset: 0xBE901, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1828, symBinAddr: 0x35E1C, symSize: 0x18 } + - { offset: 0xBE94F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x18EC, symBinAddr: 0x35E34, symSize: 0x28 } + - { offset: 0xBE995, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1914, symBinAddr: 0x35E5C, symSize: 0xD0 } + - { offset: 0xBEA03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x19F0, symBinAddr: 0x35F2C, symSize: 0xC } + - { offset: 0xBEA30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailCfD', symObjAddr: 0x1A4C, symBinAddr: 0x35F88, symSize: 0x24 } + - { offset: 0xBEA71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC6encode2toys7Encoder_p_tKF', symObjAddr: 0x1A90, symBinAddr: 0x35FCC, symSize: 0x154 } + - { offset: 0xBEAA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x1BE4, symBinAddr: 0x36120, symSize: 0x1C0 } + - { offset: 0xBEAD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1E30, symBinAddr: 0x3636C, symSize: 0x20 } + - { offset: 0xBEB23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x2B18, symBinAddr: 0x36F54, symSize: 0x5C } + - { offset: 0xBEEFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfC', symObjAddr: 0x0, symBinAddr: 0x36FB0, symSize: 0x5C } + - { offset: 0xBEF95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueCMa', symObjAddr: 0xC4, symBinAddr: 0x37074, symSize: 0x20 } + - { offset: 0xBF012, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfC', symObjAddr: 0x0, symBinAddr: 0x36FB0, symSize: 0x5C } + - { offset: 0xBF026, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x5C, symBinAddr: 0x3700C, symSize: 0x68 } + - { offset: 0xBF090, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xE4, symBinAddr: 0x37094, symSize: 0x54 } + - { offset: 0xBF0DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueCfD', symObjAddr: 0x138, symBinAddr: 0x370E8, symSize: 0x30 } + - { offset: 0xBF471, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC12fetchRequestSo07NSFetchI0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x37118, symSize: 0x6C } + - { offset: 0xBF51E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC12fetchRequestSo07NSFetchI0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x37118, symSize: 0x6C } + - { offset: 0xBF579, size: 0x8, addend: 0x0, symName: _keypath_get_selector_edgeId, symObjAddr: 0x6C, symBinAddr: 0x37184, symSize: 0xC } + - { offset: 0xBF58D, size: 0x8, addend: 0x0, symName: _keypath_get_selector_floorId, symObjAddr: 0xBC, symBinAddr: 0x371D4, symSize: 0xC } + - { offset: 0xBF5A1, size: 0x8, addend: 0x0, symName: _keypath_get_selector_latitude, symObjAddr: 0x10C, symBinAddr: 0x37224, symSize: 0xC } + - { offset: 0xBF5B5, size: 0x8, addend: 0x0, symName: _keypath_get_selector_longitude, symObjAddr: 0x15C, symBinAddr: 0x37274, symSize: 0xC } + - { offset: 0xBF5C9, size: 0x8, addend: 0x0, symName: _keypath_get_selector_navigationAvoid, symObjAddr: 0x1AC, symBinAddr: 0x372C4, symSize: 0xC } + - { offset: 0xBF5DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvpACTK', symObjAddr: 0x1B8, symBinAddr: 0x372D0, symSize: 0x68 } + - { offset: 0xBF5F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvpACTk', symObjAddr: 0x224, symBinAddr: 0x3733C, symSize: 0x54 } + - { offset: 0xBF60D, size: 0x8, addend: 0x0, symName: _keypath_get_selector_venueId, symObjAddr: 0x27C, symBinAddr: 0x37394, symSize: 0xC } + - { offset: 0xBF621, size: 0x8, addend: 0x0, symName: _keypath_get_selector_x, symObjAddr: 0x2CC, symBinAddr: 0x373E4, symSize: 0xC } + - { offset: 0xBF635, size: 0x8, addend: 0x0, symName: _keypath_get_selector_y, symObjAddr: 0x31C, symBinAddr: 0x37434, symSize: 0xC } + - { offset: 0xBF654, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC7matches5otherSbAA0d8FavoriteE0C_tF', symObjAddr: 0x36C, symBinAddr: 0x37484, symSize: 0x200 } + - { offset: 0xBF6AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC03mapE08locationACXDAA0d8FavoriteE0C_tFTf4nn_g', symObjAddr: 0x56C, symBinAddr: 0x37684, symSize: 0x1F0 } + - { offset: 0xBFCE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCfE', symObjAddr: 0xD8, symBinAddr: 0x37888, symSize: 0x10 } + - { offset: 0xBFD2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCMU', symObjAddr: 0x150, symBinAddr: 0x37900, symSize: 0x8 } + - { offset: 0xBFD41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCMa', symObjAddr: 0x158, symBinAddr: 0x37908, symSize: 0x38 } + - { offset: 0xBFD55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCMr', symObjAddr: 0x190, symBinAddr: 0x37940, symSize: 0x44 } + - { offset: 0xBFD69, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_4, symObjAddr: 0x204, symBinAddr: 0x37984, symSize: 0x14 } + - { offset: 0xBFD7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwet', symObjAddr: 0x218, symBinAddr: 0x37998, symSize: 0x54 } + - { offset: 0xBFD91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwst', symObjAddr: 0x26C, symBinAddr: 0x379EC, symSize: 0x5C } + - { offset: 0xBFDA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwug', symObjAddr: 0x2C8, symBinAddr: 0x37A48, symSize: 0x1C } + - { offset: 0xBFDB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwup', symObjAddr: 0x2E4, symBinAddr: 0x37A64, symSize: 0x10 } + - { offset: 0xBFDCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwui', symObjAddr: 0x2F4, symBinAddr: 0x37A74, symSize: 0x30 } + - { offset: 0xBFDE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOMa', symObjAddr: 0x324, symBinAddr: 0x37AA4, symSize: 0x10 } + - { offset: 0xBFDF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVWOh', symObjAddr: 0x334, symBinAddr: 0x37AB4, symSize: 0x3C } + - { offset: 0xBFE09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentO15CoordinateSpaceOMa', symObjAddr: 0x59C, symBinAddr: 0x37BB8, symSize: 0x10 } + - { offset: 0xBFE1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentO15CoordinateSpaceOSHAASQWb', symObjAddr: 0x5AC, symBinAddr: 0x37BC8, symSize: 0x4 } + - { offset: 0xBFE31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentO15CoordinateSpaceOAISQAAWl', symObjAddr: 0x5B0, symBinAddr: 0x37BCC, symSize: 0x40 } + - { offset: 0xBFE58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7CommandO8rawValues7UnicodeO6ScalarVvg', symObjAddr: 0xC4, symBinAddr: 0x37874, symSize: 0x14 } + - { offset: 0xBFEAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCfD', symObjAddr: 0xE8, symBinAddr: 0x37898, symSize: 0x68 } + - { offset: 0xBFEF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7CommandO8rawValueAGSgs7UnicodeO6ScalarV_tcfCTf4nd_n', symObjAddr: 0x370, symBinAddr: 0x37AF0, symSize: 0xC8 } + - { offset: 0xC02B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOMa', symObjAddr: 0xE4, symBinAddr: 0x37C0C, symSize: 0x10 } + - { offset: 0xC02C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOSHAASQWb', symObjAddr: 0xF4, symBinAddr: 0x37C1C, symSize: 0x4 } + - { offset: 0xC02DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOACSQAAWl', symObjAddr: 0xF8, symBinAddr: 0x37C20, symSize: 0x40 } + - { offset: 0xC03B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1A4, symBinAddr: 0x37CC4, symSize: 0x3C } + - { offset: 0xC0472, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x140, symBinAddr: 0x37C60, symSize: 0x40 } + - { offset: 0xC0538, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x180, symBinAddr: 0x37CA0, symSize: 0x24 } + - { offset: 0xC0913, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC9cacheDataAcA0df5CacheH0C_tcfc', symObjAddr: 0x0, symBinAddr: 0x37D00, symSize: 0x184 } + - { offset: 0xC0B3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCMa', symObjAddr: 0x900, symBinAddr: 0x385F4, symSize: 0x20 } + - { offset: 0xC0B5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xBB0, symBinAddr: 0x388A4, symSize: 0xC } + - { offset: 0xC0B90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOAEs0G3KeyAAWl', symObjAddr: 0xC24, symBinAddr: 0x388B0, symSize: 0x40 } + - { offset: 0xC0BA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0xC84, symBinAddr: 0x388F0, symSize: 0x14C } + - { offset: 0xC0BE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOwet', symObjAddr: 0xDE0, symBinAddr: 0x38A3C, symSize: 0x90 } + - { offset: 0xC0BF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOwst', symObjAddr: 0xE70, symBinAddr: 0x38ACC, symSize: 0xB0 } + - { offset: 0xC0C09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOMa', symObjAddr: 0xF34, symBinAddr: 0x38B7C, symSize: 0x10 } + - { offset: 0xC0C1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASQWb', symObjAddr: 0xF44, symBinAddr: 0x38B8C, symSize: 0x4 } + - { offset: 0xC0C31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOAESQAAWl', symObjAddr: 0xF48, symBinAddr: 0x38B90, symSize: 0x40 } + - { offset: 0xC0C45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xF88, symBinAddr: 0x38BD0, symSize: 0x4 } + - { offset: 0xC0C59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xF8C, symBinAddr: 0x38BD4, symSize: 0x40 } + - { offset: 0xC0C6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0xFCC, symBinAddr: 0x38C14, symSize: 0x4 } + - { offset: 0xC0C81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0xFD0, symBinAddr: 0x38C18, symSize: 0x40 } + - { offset: 0xC0C96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC9cacheDataAcA0df5CacheH0C_tcfc', symObjAddr: 0x0, symBinAddr: 0x37D00, symSize: 0x184 } + - { offset: 0xC0CD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x184, symBinAddr: 0x37E84, symSize: 0xC } + - { offset: 0xC0D12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x190, symBinAddr: 0x37E90, symSize: 0xC } + - { offset: 0xC0D32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x190, symBinAddr: 0x37E90, symSize: 0xC } + - { offset: 0xC0D46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x190, symBinAddr: 0x37E90, symSize: 0xC } + - { offset: 0xC0D58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x19C, symBinAddr: 0x37E9C, symSize: 0x8 } + - { offset: 0xC0D74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1A4, symBinAddr: 0x37EA4, symSize: 0x8 } + - { offset: 0xC0D94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x3F8, symBinAddr: 0x380EC, symSize: 0x28 } + - { offset: 0xC0DB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x420, symBinAddr: 0x38114, symSize: 0x28 } + - { offset: 0xC0E15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSYAASY8rawValuexSg03RawJ0Qz_tcfCTW', symObjAddr: 0x1AC, symBinAddr: 0x37EAC, symSize: 0x2C } + - { offset: 0xC0E55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSYAASY8rawValue03RawJ0QzvgTW', symObjAddr: 0x1D8, symBinAddr: 0x37ED8, symSize: 0xF4 } + - { offset: 0xC0E90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x2CC, symBinAddr: 0x37FCC, symSize: 0xF0 } + - { offset: 0xC0EE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x3BC, symBinAddr: 0x380BC, symSize: 0x24 } + - { offset: 0xC0F2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAsAFP8intValuexSgSi_tcfCTW', symObjAddr: 0x3EC, symBinAddr: 0x380E0, symSize: 0xC } + - { offset: 0xC0F41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x448, symBinAddr: 0x3813C, symSize: 0x29C } + - { offset: 0xC0FA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC5match5placeSbAA5PlaceCSg_tF', symObjAddr: 0x6E4, symBinAddr: 0x383D8, symSize: 0x1F8 } + - { offset: 0xC1082, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCfD', symObjAddr: 0x8DC, symBinAddr: 0x385D0, symSize: 0x24 } + - { offset: 0xC10C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC6encode2toys7Encoder_p_tKF', symObjAddr: 0x920, symBinAddr: 0x38614, symSize: 0x21C } + - { offset: 0xC1101, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xB3C, symBinAddr: 0x38830, symSize: 0x54 } + - { offset: 0xC112B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xB90, symBinAddr: 0x38884, symSize: 0x20 } + - { offset: 0xC1145, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x1010, symBinAddr: 0x38C58, symSize: 0x5C } + - { offset: 0xC1516, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV14expandOutlines3for6strokeAA9LayerTreeO4PathCSgAJ_AH16StrokeAttributesVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x38CB4, symSize: 0x178 } + - { offset: 0xC1589, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV14expandOutlines3for6strokeAA9LayerTreeO4PathCSgAJ_AH16StrokeAttributesVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x38CB4, symSize: 0x178 } + - { offset: 0xC1B65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x38E2C, symSize: 0x58 } + - { offset: 0xC1C5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewCMa', symObjAddr: 0x2C8, symBinAddr: 0x390F4, symSize: 0x20 } + - { offset: 0xC1C71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5imageSo7UIImageCSgvgySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0x30C, symBinAddr: 0x39138, symSize: 0x8 } + - { offset: 0xC1C85, size: 0x8, addend: 0x0, symName: '_$sSo30UIGraphicsImageRendererContextCIgg_ABIegg_TRTA', symObjAddr: 0x324, symBinAddr: 0x39150, symSize: 0x8 } + - { offset: 0xC1C99, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x32C, symBinAddr: 0x39158, symSize: 0x10 } + - { offset: 0xC1CAD, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x33C, symBinAddr: 0x39168, symSize: 0x8 } + - { offset: 0xC1CF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x38E2C, symSize: 0x58 } + - { offset: 0xC1DBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5imageSo7UIImageCSgvg', symObjAddr: 0x58, symBinAddr: 0x38E84, symSize: 0x19C } + - { offset: 0xC1E55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5imageSo7UIImageCSgvgySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0x1F4, symBinAddr: 0x39020, symSize: 0x78 } + - { offset: 0xC1EBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x26C, symBinAddr: 0x39098, symSize: 0x2C } + - { offset: 0xC1F19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewCfD', symObjAddr: 0x298, symBinAddr: 0x390C4, symSize: 0x30 } + - { offset: 0xC22AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC8drawText2inySo6CGRectV_tFTo', symObjAddr: 0x0, symBinAddr: 0x39170, symSize: 0xA0 } + - { offset: 0xC23DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelCMa', symObjAddr: 0x340, symBinAddr: 0x394B0, symSize: 0x20 } + - { offset: 0xC2434, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC8drawText2inySo6CGRectV_tFTo', symObjAddr: 0x0, symBinAddr: 0x39170, symSize: 0xA0 } + - { offset: 0xC24A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0xA0, symBinAddr: 0x39210, symSize: 0x80 } + - { offset: 0xC253A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC5frameACSo6CGRectV_tcfc', symObjAddr: 0x120, symBinAddr: 0x39290, symSize: 0xD4 } + - { offset: 0xC25CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1F4, symBinAddr: 0x39364, symSize: 0x20 } + - { offset: 0xC2604, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x214, symBinAddr: 0x39384, symSize: 0xD4 } + - { offset: 0xC2696, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2E8, symBinAddr: 0x39458, symSize: 0x28 } + - { offset: 0xC26AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelCfD', symObjAddr: 0x310, symBinAddr: 0x39480, symSize: 0x30 } + - { offset: 0xC2A5B, size: 0x8, addend: 0x0, symName: _UIEdgeInsetsInsetRect, symObjAddr: 0x360, symBinAddr: 0x394D0, symSize: 0x1C } + - { offset: 0xC2A69, size: 0x8, addend: 0x0, symName: _UIEdgeInsetsInsetRect, symObjAddr: 0x360, symBinAddr: 0x394D0, symSize: 0x1C } + - { offset: 0xC2B65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingCMa', symObjAddr: 0xC4, symBinAddr: 0x39554, symSize: 0x20 } + - { offset: 0xC2BCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x5C, symBinAddr: 0x394EC, symSize: 0x68 } + - { offset: 0xC2C36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xE4, symBinAddr: 0x39574, symSize: 0x54 } + - { offset: 0xC2C81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingCfD', symObjAddr: 0x138, symBinAddr: 0x395C8, symSize: 0x30 } + - { offset: 0xC301B, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE4make6bounds6matrix4step6tiling9isColored4drawABSo6CGRectV_So17CGAffineTransformVSo6CGSizeVSo0A6TilingVSbySo09CGContextB0actFZySvSg_ATtcfU_To', symObjAddr: 0x0, symBinAddr: 0x395F8, symSize: 0x68 } + - { offset: 0xC30A8, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE4make6bounds6matrix4step6tiling9isColored4drawABSo6CGRectV_So17CGAffineTransformVSo6CGSizeVSo0A6TilingVSbySo09CGContextB0actFZySvSg_ATtcfU_To', symObjAddr: 0x0, symBinAddr: 0x395F8, symSize: 0x68 } + - { offset: 0xC3123, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE4make6bounds6matrix4step6tiling9isColored4drawABSo6CGRectV_So17CGAffineTransformVSo6CGSizeVSo0A6TilingVSbySo09CGContextB0actFZySvSgcfU0_To', symObjAddr: 0x68, symBinAddr: 0x39660, symSize: 0xC } + - { offset: 0xC3169, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE3Box33_101E42A8A083D3733C304760DAD44B97LLCMa', symObjAddr: 0x98, symBinAddr: 0x39690, symSize: 0x20 } + - { offset: 0xC3210, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE3Box33_101E42A8A083D3733C304760DAD44B97LLCfD', symObjAddr: 0x74, symBinAddr: 0x3966C, symSize: 0x24 } + - { offset: 0xC35C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x396B0, symSize: 0x20 } + - { offset: 0xC38E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellCfETo', symObjAddr: 0x974, symBinAddr: 0x3A024, symSize: 0x6C } + - { offset: 0xC3911, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellCMa', symObjAddr: 0x9E0, symBinAddr: 0x3A090, symSize: 0x20 } + - { offset: 0xC3925, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC8setImage3foryAA0D0C_tFySo7UIImageCSgcfU_TA', symObjAddr: 0xA50, symBinAddr: 0x3A100, symSize: 0x8 } + - { offset: 0xC3A6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x396B0, symSize: 0x20 } + - { offset: 0xC3ACE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x396D0, symSize: 0x14 } + - { offset: 0xC3B1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC13subtitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x396E4, symSize: 0x20 } + - { offset: 0xC3B74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC13subtitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x39704, symSize: 0x14 } + - { offset: 0xC3BC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC013favoriteImageF0So07UIImageF0CSgvgTo', symObjAddr: 0x68, symBinAddr: 0x39718, symSize: 0x20 } + - { offset: 0xC3C1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC013favoriteImageF0So07UIImageF0CSgvsTo', symObjAddr: 0x88, symBinAddr: 0x39738, symSize: 0x14 } + - { offset: 0xC3C70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC12awakeFromNibyyFTo', symObjAddr: 0x9C, symBinAddr: 0x3974C, symSize: 0x3C } + - { offset: 0xC3CC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC7setData8favoriteyAA0D0C_tF', symObjAddr: 0xD8, symBinAddr: 0x39788, symSize: 0xF4 } + - { offset: 0xC3D76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC8setImage3foryAA0D0C_tF', symObjAddr: 0x1CC, symBinAddr: 0x3987C, symSize: 0x1DC } + - { offset: 0xC3E4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC8setImage3foryAA0D0C_tFySo7UIImageCSgcfU_', symObjAddr: 0x3A8, symBinAddr: 0x39A58, symSize: 0x1B8 } + - { offset: 0xC3F66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC04showD6DetailyySo8UIButtonCFTo', symObjAddr: 0x560, symBinAddr: 0x39C10, symSize: 0x94 } + - { offset: 0xC3FD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC15prepareForReuseyyF', symObjAddr: 0x5F4, symBinAddr: 0x39CA4, symSize: 0x114 } + - { offset: 0xC405A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC15prepareForReuseyyFTo', symObjAddr: 0x708, symBinAddr: 0x39DB8, symSize: 0x28 } + - { offset: 0xC406E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfc', symObjAddr: 0x730, symBinAddr: 0x39DE0, symSize: 0xE0 } + - { offset: 0xC40AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfcTo', symObjAddr: 0x810, symBinAddr: 0x39EC0, symSize: 0x48 } + - { offset: 0xC40E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x858, symBinAddr: 0x39F08, symSize: 0xC4 } + - { offset: 0xC411A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x91C, symBinAddr: 0x39FCC, symSize: 0x28 } + - { offset: 0xC412E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellCfD', symObjAddr: 0x944, symBinAddr: 0x39FF4, symSize: 0x30 } + - { offset: 0xC44DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidStairsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3A108, symSize: 0x10 } + - { offset: 0xC4B35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCfE', symObjAddr: 0xF54, symBinAddr: 0x3B05C, symSize: 0x90 } + - { offset: 0xC4B62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCfETo', symObjAddr: 0x1014, symBinAddr: 0x3B11C, symSize: 0x9C } + - { offset: 0xC4B91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCMa', symObjAddr: 0x10B0, symBinAddr: 0x3B1B8, symSize: 0x20 } + - { offset: 0xC4CAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutCMa', symObjAddr: 0x1178, symBinAddr: 0x3B25C, symSize: 0x20 } + - { offset: 0xC4CE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x1198, symBinAddr: 0x3B27C, symSize: 0x74 } + - { offset: 0xC4D56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x120C, symBinAddr: 0x3B2F0, symSize: 0x24 } + - { offset: 0xC4D9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC10setupPanelyyF', symObjAddr: 0x1230, symBinAddr: 0x3B314, symSize: 0x8C } + - { offset: 0xC4E15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC10setupPanelyyFTo', symObjAddr: 0x12BC, symBinAddr: 0x3B3A0, symSize: 0x28 } + - { offset: 0xC4E67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1360, symBinAddr: 0x3B3C8, symSize: 0xC8 } + - { offset: 0xC4E9C, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1454, symBinAddr: 0x3B4B4, symSize: 0x10 } + - { offset: 0xC4EB0, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1464, symBinAddr: 0x3B4C4, symSize: 0x8 } + - { offset: 0xC4F8D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV5merge_8isUnique16uniquingKeysWithyqd__n_Sbq_q__q_tKXEtKSTRd__x_q_t7ElementRtd__lF8PenNavUI11RouteOptionV0mN3KeyO_SbSayAL_SbtGTg5012$sSD20uniquegh33ValuesSDyxq_Gqd__n_tcSTRd__x_q_t7i24Rtd__lufcq_q__q_tKXEfU_8jk4UI11mn5V0iJ3O17O_SbSayAI_SbtGTG5Tf1nncn_n', symObjAddr: 0x146C, symBinAddr: 0x3B4CC, symSize: 0x348 } + - { offset: 0xC51AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC_AA0dE15LayoutAnchoring_ptWOh', symObjAddr: 0x1990, symBinAddr: 0x3B968, symSize: 0x40 } + - { offset: 0xC51C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5applyyyFyycfU_TA', symObjAddr: 0x1A0C, symBinAddr: 0x3B9D4, symSize: 0x8 } + - { offset: 0xC5508, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidStairsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3A108, symSize: 0x10 } + - { offset: 0xC5520, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidStairsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3A108, symSize: 0x10 } + - { offset: 0xC5566, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidStairsSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x3A118, symSize: 0x34 } + - { offset: 0xC55B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC21avoidEscalatorsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x3A14C, symSize: 0x10 } + - { offset: 0xC55CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC21avoidEscalatorsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x3A14C, symSize: 0x10 } + - { offset: 0xC5608, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC21avoidEscalatorsSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x3A15C, symSize: 0x34 } + - { offset: 0xC5657, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC20avoidElevatorsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x3A190, symSize: 0x10 } + - { offset: 0xC566F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC20avoidElevatorsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x3A190, symSize: 0x10 } + - { offset: 0xC56AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC20avoidElevatorsSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x3A1A0, symSize: 0x34 } + - { offset: 0xC56F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC18avoidOutdoorSwitchSo8UISwitchCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x3A1D4, symSize: 0x10 } + - { offset: 0xC5711, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC18avoidOutdoorSwitchSo8UISwitchCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x3A1D4, symSize: 0x10 } + - { offset: 0xC574C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC18avoidOutdoorSwitchSo8UISwitchCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x3A1E4, symSize: 0x34 } + - { offset: 0xC579B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidIndoorSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x3A218, symSize: 0x10 } + - { offset: 0xC57B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidIndoorSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x3A218, symSize: 0x10 } + - { offset: 0xC57EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidIndoorSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x3A228, symSize: 0x34 } + - { offset: 0xC583D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC15avoidRampSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x3A25C, symSize: 0x20 } + - { offset: 0xC5892, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC15avoidRampSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x174, symBinAddr: 0x3A27C, symSize: 0x14 } + - { offset: 0xC58E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC011environmenteF0So6UIViewCSgvgTo', symObjAddr: 0x188, symBinAddr: 0x3A290, symSize: 0x20 } + - { offset: 0xC593D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC011environmenteF0So6UIViewCSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x3A2B0, symSize: 0x14 } + - { offset: 0xC598D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC8switchesSaySo8UISwitchCGvg', symObjAddr: 0x1BC, symBinAddr: 0x3A2C4, symSize: 0x120 } + - { offset: 0xC5ADA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x2DC, symBinAddr: 0x3A3E4, symSize: 0x5C } + - { offset: 0xC5B1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC05setupdE0yyF', symObjAddr: 0x338, symBinAddr: 0x3A440, symSize: 0x6E0 } + - { offset: 0xC61CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC6cancelyyFTo', symObjAddr: 0xA18, symBinAddr: 0x3AB20, symSize: 0x38 } + - { offset: 0xC6203, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5applyyyF', symObjAddr: 0xA50, symBinAddr: 0x3AB58, symSize: 0x1B8 } + - { offset: 0xC6350, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5applyyyFyycfU_', symObjAddr: 0xC08, symBinAddr: 0x3AD10, symSize: 0xB8 } + - { offset: 0xC63F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5applyyyFTo', symObjAddr: 0xCC0, symBinAddr: 0x3ADC8, symSize: 0x28 } + - { offset: 0xC6405, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xCE8, symBinAddr: 0x3ADF0, symSize: 0x104 } + - { offset: 0xC6446, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xDEC, symBinAddr: 0x3AEF4, symSize: 0x60 } + - { offset: 0xC6488, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xE4C, symBinAddr: 0x3AF54, symSize: 0xE0 } + - { offset: 0xC64BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xF2C, symBinAddr: 0x3B034, symSize: 0x28 } + - { offset: 0xC64CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCfD', symObjAddr: 0xFE4, symBinAddr: 0x3B0EC, symSize: 0x30 } + - { offset: 0xC64F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC8positionAA08FloatingH8PositionOvgTo', symObjAddr: 0x10D0, symBinAddr: 0x3B1D8, symSize: 0x8 } + - { offset: 0xC6511, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC8positionAA08FloatingH8PositionOvgTo', symObjAddr: 0x10D0, symBinAddr: 0x3B1D8, symSize: 0x8 } + - { offset: 0xC652A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC12initialStateAA08FloatinghK0CvgTo', symObjAddr: 0x10D8, symBinAddr: 0x3B1E0, symSize: 0x8 } + - { offset: 0xC6542, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC12initialStateAA08FloatinghK0CvgTo', symObjAddr: 0x10D8, symBinAddr: 0x3B1E0, symSize: 0x8 } + - { offset: 0xC655B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC7anchorsSDyAA08FloatingH5StateCAA0khI9Anchoring_pGvgTo', symObjAddr: 0x10E0, symBinAddr: 0x3B1E8, symSize: 0x6C } + - { offset: 0xC6585, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA08FloatingH5StateC_tFTo', symObjAddr: 0x114C, symBinAddr: 0x3B254, symSize: 0x8 } + - { offset: 0xC6686, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC7anchorsSDyAA08FloatingH5StateCAA0khI9Anchoring_pGvgTf4d_n', symObjAddr: 0x17B4, symBinAddr: 0x3B814, symSize: 0x154 } + - { offset: 0xC6D71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontCMa', symObjAddr: 0x26C, symBinAddr: 0x3BB7C, symSize: 0x20 } + - { offset: 0xC6D85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOAFs0F3KeyAAWl', symObjAddr: 0x880, symBinAddr: 0x3C128, symSize: 0x40 } + - { offset: 0xC6D99, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI6StylesCGMa', symObjAddr: 0x8E0, symBinAddr: 0x3C168, symSize: 0x54 } + - { offset: 0xC6DAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOwet', symObjAddr: 0x9FC, symBinAddr: 0x3C274, symSize: 0x90 } + - { offset: 0xC6DC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOwst', symObjAddr: 0xA8C, symBinAddr: 0x3C304, symSize: 0xB0 } + - { offset: 0xC6DD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOMa', symObjAddr: 0xB50, symBinAddr: 0x3C3B4, symSize: 0x10 } + - { offset: 0xC6DE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOSHAASQWb', symObjAddr: 0xB60, symBinAddr: 0x3C3C4, symSize: 0x4 } + - { offset: 0xC6DFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOAFSQAAWl', symObjAddr: 0xB64, symBinAddr: 0x3C3C8, symSize: 0x40 } + - { offset: 0xC6E11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xBA4, symBinAddr: 0x3C408, symSize: 0x4 } + - { offset: 0xC6E25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xBA8, symBinAddr: 0x3C40C, symSize: 0x40 } + - { offset: 0xC6E39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0xBE8, symBinAddr: 0x3C44C, symSize: 0x4 } + - { offset: 0xC6E4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0xBEC, symBinAddr: 0x3C450, symSize: 0x40 } + - { offset: 0xC6E86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x1D0, symBinAddr: 0x3BAE0, symSize: 0x28 } + - { offset: 0xC6EA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x1F8, symBinAddr: 0x3BB08, symSize: 0x28 } + - { offset: 0xC6EF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0xC0, symBinAddr: 0x3B9DC, symSize: 0xD4 } + - { offset: 0xC6F27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x194, symBinAddr: 0x3BAB0, symSize: 0x24 } + - { offset: 0xC6F50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x1C4, symBinAddr: 0x3BAD4, symSize: 0xC } + - { offset: 0xC6F8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontCfD', symObjAddr: 0x220, symBinAddr: 0x3BB30, symSize: 0x4C } + - { offset: 0xC6FC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC6encode2toys7Encoder_p_tKF', symObjAddr: 0x28C, symBinAddr: 0x3BB9C, symSize: 0x20C } + - { offset: 0xC6FF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x498, symBinAddr: 0x3BDA8, symSize: 0x30C } + - { offset: 0xC7035, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x7A4, symBinAddr: 0x3C0B4, symSize: 0x54 } + - { offset: 0xC705E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x7F8, symBinAddr: 0x3C108, symSize: 0x20 } + - { offset: 0xC7072, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0xC2C, symBinAddr: 0x3C490, symSize: 0x20C } + - { offset: 0xC7E5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06updateD7ResultsyyF', symObjAddr: 0x530, symBinAddr: 0x3CBCC, symSize: 0xF8 } + - { offset: 0xC8343, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCfE', symObjAddr: 0x3608, symBinAddr: 0x3FCA4, symSize: 0x104 } + - { offset: 0xC8370, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCfETo', symObjAddr: 0x373C, symBinAddr: 0x3FDD8, symSize: 0x110 } + - { offset: 0xC839F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCMa', symObjAddr: 0x384C, symBinAddr: 0x3FEE8, symSize: 0x20 } + - { offset: 0xC860E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC28searchBarTextDidBeginEditingyyAA0dH0CF', symObjAddr: 0x386C, symBinAddr: 0x3FF08, symSize: 0x5B4 } + - { offset: 0xC8D09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09searchBarD13ButtonClickedyyAA0dH0CF', symObjAddr: 0x3E20, symBinAddr: 0x404BC, symSize: 0x1F8 } + - { offset: 0xC8FFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06cancelD0yyF', symObjAddr: 0x4018, symBinAddr: 0x406B4, symSize: 0xC0 } + - { offset: 0xC9142, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC015clearResultsAndD033_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x40D8, symBinAddr: 0x40774, symSize: 0x128 } + - { offset: 0xC9284, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC015clearResultsAndD033_C480B119D398ADAB3164E62059E8A172LLyyFTo', symObjAddr: 0x4200, symBinAddr: 0x4089C, symSize: 0x28 } + - { offset: 0xC92A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG19TextDidBeginEditingyyAA0dG0CFTW', symObjAddr: 0x4228, symBinAddr: 0x408C4, symSize: 0x4 } + - { offset: 0xC92CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG0_13textDidChangeyAA0dG0C_SStFTW', symObjAddr: 0x422C, symBinAddr: 0x408C8, symSize: 0xC } + - { offset: 0xC92FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchgD13ButtonClickedyyAA0dG0CFTW', symObjAddr: 0x4238, symBinAddr: 0x408D4, symSize: 0x4 } + - { offset: 0xC9329, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG18ClearButtonClickedyyAA0dG0CFTW', symObjAddr: 0x423C, symBinAddr: 0x408D8, symSize: 0x4 } + - { offset: 0xC9349, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG18ClearButtonClickedyyAA0dG0CFTW', symObjAddr: 0x423C, symBinAddr: 0x408D8, symSize: 0x4 } + - { offset: 0xC9389, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG19CancelButtonClickedyyAA0dG0CFTW', symObjAddr: 0x4240, symBinAddr: 0x408DC, symSize: 0x4 } + - { offset: 0xC93A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG19CancelButtonClickedyyAA0dG0CFTW', symObjAddr: 0x4240, symBinAddr: 0x408DC, symSize: 0x4 } + - { offset: 0xC93FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x4244, symBinAddr: 0x408E0, symSize: 0x68 } + - { offset: 0xC959A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0x42AC, symBinAddr: 0x40948, symSize: 0x250 } + - { offset: 0xC9856, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x44FC, symBinAddr: 0x40B98, symSize: 0xC8 } + - { offset: 0xC9881, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_11willDisplay8forRowAtySo07UITableE0C_So0mE4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x45C4, symBinAddr: 0x40C60, symSize: 0xDC } + - { offset: 0xC98F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0x46A0, symBinAddr: 0x40D3C, symSize: 0x15C } + - { offset: 0xC9AAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x47FC, symBinAddr: 0x40E98, symSize: 0xC0 } + - { offset: 0xC9ADA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x48BC, symBinAddr: 0x40F58, symSize: 0x14 } + - { offset: 0xC9B25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x48D0, symBinAddr: 0x40F6C, symSize: 0x24 } + - { offset: 0xC9B9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC10setupPanelyyF', symObjAddr: 0x48F4, symBinAddr: 0x40F90, symSize: 0x10C } + - { offset: 0xC9C48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC10setupPanelyyFTo', symObjAddr: 0x4A00, symBinAddr: 0x4109C, symSize: 0x28 } + - { offset: 0xC9C86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x4A28, symBinAddr: 0x410C4, symSize: 0x268 } + - { offset: 0xC9EFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x4C90, symBinAddr: 0x4132C, symSize: 0x50 } + - { offset: 0xC9F16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC27floatingPanelDidChangeStateyyAA08FloatinghF0CF', symObjAddr: 0x4CE0, symBinAddr: 0x4137C, symSize: 0x21C } + - { offset: 0xCA153, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC27floatingPanelDidChangeStateyyAA08FloatinghF0CFTo', symObjAddr: 0x4EFC, symBinAddr: 0x41598, symSize: 0x50 } + - { offset: 0xCA17E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x4FC8, symBinAddr: 0x415E8, symSize: 0xC } + - { offset: 0xCA1D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x4FD4, symBinAddr: 0x415F4, symSize: 0x4 } + - { offset: 0xCA1F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x4FD4, symBinAddr: 0x415F4, symSize: 0x4 } + - { offset: 0xCA20D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC9searchBar_13textDidChangeyAA0dH0C_SStFTf4dnn_n', symObjAddr: 0x4FD8, symBinAddr: 0x415F8, symSize: 0x1DC } + - { offset: 0xCA374, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC27searchBarClearButtonClickedyyAA0dH0CFTf4dn_n', symObjAddr: 0x51B4, symBinAddr: 0x417D4, symSize: 0x168 } + - { offset: 0xCA551, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_11willDisplay8forRowAtySo07UITableE0C_So0mE4CellC10Foundation9IndexPathVtFTf4ddnn_n', symObjAddr: 0x535C, symBinAddr: 0x4193C, symSize: 0x130 } + - { offset: 0xCA6FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTf4d_n', symObjAddr: 0x548C, symBinAddr: 0x41A6C, symSize: 0xA4 } + - { offset: 0xCA772, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4dnn_n', symObjAddr: 0x5530, symBinAddr: 0x41B10, symSize: 0xF8 } + - { offset: 0xCA7B4, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x5654, symBinAddr: 0x41C2C, symSize: 0x10 } + - { offset: 0xCA7C8, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x5664, symBinAddr: 0x41C3C, symSize: 0x8 } + - { offset: 0xCA7DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20showNoResultsMessage33_C480B119D398ADAB3164E62059E8A172LLyyFyyScMYccfU_TA', symObjAddr: 0x56E4, symBinAddr: 0x41C44, symSize: 0x8 } + - { offset: 0xCA7F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_TA', symObjAddr: 0x5788, symBinAddr: 0x41C54, symSize: 0xC } + - { offset: 0xCA804, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_yyXEfU_TA', symObjAddr: 0x57DC, symBinAddr: 0x41CA0, symSize: 0x8 } + - { offset: 0xCA818, size: 0x8, addend: 0x0, symName: '_$sIg_Ieg_TRTA', symObjAddr: 0x57F4, symBinAddr: 0x41CB8, symSize: 0x8 } + - { offset: 0xCA82C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC6search33_C480B119D398ADAB3164E62059E8A172LL6manualySb_tFySayAA7POIDataCGSgcfU_TA', symObjAddr: 0x5830, symBinAddr: 0x41CE4, symSize: 0xC } + - { offset: 0xCA840, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09configureD3Bar33_C480B119D398ADAB3164E62059E8A172LLyyFyyScMYccfU_TA', symObjAddr: 0x587C, symBinAddr: 0x41CF0, symSize: 0x8 } + - { offset: 0xCA854, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC11viewDidLoadyyFyycfU0_TA', symObjAddr: 0x5884, symBinAddr: 0x41CF8, symSize: 0x18 } + - { offset: 0xCADB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC9searchBar33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3C69C, symSize: 0x10 } + - { offset: 0xCADCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC9searchBar33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3C69C, symSize: 0x10 } + - { offset: 0xCAE10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC9searchBar33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x3C6AC, symSize: 0x34 } + - { offset: 0xCAF39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE033_C480B119D398ADAB3164E62059E8A172LLSo07UITableE0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x3C6E0, symSize: 0x10 } + - { offset: 0xCAF51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE033_C480B119D398ADAB3164E62059E8A172LLSo07UITableE0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x3C6E0, symSize: 0x10 } + - { offset: 0xCAF91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE033_C480B119D398ADAB3164E62059E8A172LLSo07UITableE0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x3C6F0, symSize: 0x34 } + - { offset: 0xCAFE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09separatorE033_C480B119D398ADAB3164E62059E8A172LLSo6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x3C724, symSize: 0x10 } + - { offset: 0xCAFF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09separatorE033_C480B119D398ADAB3164E62059E8A172LLSo6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x3C724, symSize: 0x10 } + - { offset: 0xCB038, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09separatorE033_C480B119D398ADAB3164E62059E8A172LLSo6UIViewCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x3C734, symSize: 0x34 } + - { offset: 0xCB087, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE16BottomConstraint33_C480B119D398ADAB3164E62059E8A172LLSo08NSLayoutI0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x3C768, symSize: 0x10 } + - { offset: 0xCB09F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE16BottomConstraint33_C480B119D398ADAB3164E62059E8A172LLSo08NSLayoutI0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x3C768, symSize: 0x10 } + - { offset: 0xCB0DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE16BottomConstraint33_C480B119D398ADAB3164E62059E8A172LLSo08NSLayoutI0CSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x3C778, symSize: 0x34 } + - { offset: 0xCB12E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC13searchOptions33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x3C7AC, symSize: 0x10 } + - { offset: 0xCB146, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC13searchOptions33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x3C7AC, symSize: 0x10 } + - { offset: 0xCB186, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC13searchOptions33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x3C7BC, symSize: 0x34 } + - { offset: 0xCB3C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC11viewDidLoadyyF', symObjAddr: 0x154, symBinAddr: 0x3C7F0, symSize: 0x3DC } + - { offset: 0xCB88C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x74C, symBinAddr: 0x3CDE8, symSize: 0x28 } + - { offset: 0xCB8B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC13updateFilters4type7filtersyAA14TagDisplayTypeOSg_SaySiGtF', symObjAddr: 0x774, symBinAddr: 0x3CE10, symSize: 0xA4 } + - { offset: 0xCBA03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09configureD3Bar33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x818, symBinAddr: 0x3CEB4, symSize: 0x288 } + - { offset: 0xCBB30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09configureD3Bar33_C480B119D398ADAB3164E62059E8A172LLyyFyyScMYccfU_', symObjAddr: 0xAA0, symBinAddr: 0x3D13C, symSize: 0x90 } + - { offset: 0xCBBB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC014configureTableE033_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0xB30, symBinAddr: 0x3D1CC, symSize: 0x10C } + - { offset: 0xCBD6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC15configureLoader33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0xC3C, symBinAddr: 0x3D2D8, symSize: 0x2C4 } + - { offset: 0xCBFAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC25configureNoResultsMessage33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0xF00, symBinAddr: 0x3D59C, symSize: 0x510 } + - { offset: 0xCC3BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC6search33_C480B119D398ADAB3164E62059E8A172LL6manualySb_tF', symObjAddr: 0x1410, symBinAddr: 0x3DAAC, symSize: 0x2E4 } + - { offset: 0xCC69D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC6search33_C480B119D398ADAB3164E62059E8A172LL6manualySb_tFySayAA7POIDataCGSgcfU_', symObjAddr: 0x16F4, symBinAddr: 0x3DD90, symSize: 0xA0 } + - { offset: 0xCC716, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC21getLocationParameters33_C480B119D398ADAB3164E62059E8A172LLSDySSypGyF', symObjAddr: 0x1794, symBinAddr: 0x3DE30, symSize: 0x1C8 } + - { offset: 0xCC93D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC15getUserLocation33_C480B119D398ADAB3164E62059E8A172LL7Penguin10PILocationCSgyF', symObjAddr: 0x195C, symBinAddr: 0x3DFF8, symSize: 0x134 } + - { offset: 0xCCA86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtF', symObjAddr: 0x1A90, symBinAddr: 0x3E12C, symSize: 0x24C } + - { offset: 0xCCAF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_', symObjAddr: 0x1CDC, symBinAddr: 0x3E378, symSize: 0x930 } + - { offset: 0xCD0D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_yyXEfU_', symObjAddr: 0x260C, symBinAddr: 0x3ECA8, symSize: 0x114 } + - { offset: 0xCD1F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC23indexPathsForNewResults33_C480B119D398ADAB3164E62059E8A172LL03newK0Say10Foundation9IndexPathVGSayAA7POIDataCG_tF', symObjAddr: 0x2720, symBinAddr: 0x3EDBC, symSize: 0x1F8 } + - { offset: 0xCD5BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC10showLoader33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x2918, symBinAddr: 0x3EFB4, symSize: 0x2C8 } + - { offset: 0xCD871, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20showNoResultsMessage33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x2BE0, symBinAddr: 0x3F27C, symSize: 0x214 } + - { offset: 0xCD8BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20showNoResultsMessage33_C480B119D398ADAB3164E62059E8A172LLyyFyyScMYccfU_', symObjAddr: 0x2DF4, symBinAddr: 0x3F490, symSize: 0x19C } + - { offset: 0xCD9E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06updateD6Result33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x2F90, symBinAddr: 0x3F62C, symSize: 0x1A4 } + - { offset: 0xCDC71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x3134, symBinAddr: 0x3F7D0, symSize: 0x23C } + - { offset: 0xCDD8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x3370, symBinAddr: 0x3FA0C, symSize: 0x60 } + - { offset: 0xCDDA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x33D0, symBinAddr: 0x3FA6C, symSize: 0x210 } + - { offset: 0xCDEAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x35E0, symBinAddr: 0x3FC7C, symSize: 0x28 } + - { offset: 0xCDEC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCfD', symObjAddr: 0x370C, symBinAddr: 0x3FDA8, symSize: 0x30 } + - { offset: 0xCE5A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC2idSiSgvg', symObjAddr: 0x0, symBinAddr: 0x41D34, symSize: 0x34 } + - { offset: 0xCE6DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC4nameSSSgvpACTk', symObjAddr: 0xB4, symBinAddr: 0x41DE8, symSize: 0x5C } + - { offset: 0xCE71F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvpACTk', symObjAddr: 0x1D8, symBinAddr: 0x41F0C, symSize: 0x5C } + - { offset: 0xCE75F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusCMa', symObjAddr: 0x484, symBinAddr: 0x421B8, symSize: 0x20 } + - { offset: 0xCE7C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC2idSiSgvg', symObjAddr: 0x0, symBinAddr: 0x41D34, symSize: 0x34 } + - { offset: 0xCE7E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC2idSiSgvs', symObjAddr: 0x34, symBinAddr: 0x41D68, symSize: 0x50 } + - { offset: 0xCE80E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC2idSiSgvM', symObjAddr: 0x84, symBinAddr: 0x41DB8, symSize: 0x30 } + - { offset: 0xCE85B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC4nameSSSgvg', symObjAddr: 0x110, symBinAddr: 0x41E44, symSize: 0x48 } + - { offset: 0xCE87A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC4nameSSSgvs', symObjAddr: 0x158, symBinAddr: 0x41E8C, symSize: 0x50 } + - { offset: 0xCE8A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC4nameSSSgvM', symObjAddr: 0x1A8, symBinAddr: 0x41EDC, symSize: 0x30 } + - { offset: 0xCE8E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvg', symObjAddr: 0x234, symBinAddr: 0x41F68, symSize: 0x48 } + - { offset: 0xCE905, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvs', symObjAddr: 0x27C, symBinAddr: 0x41FB0, symSize: 0x50 } + - { offset: 0xCE92E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvM', symObjAddr: 0x2CC, symBinAddr: 0x42000, symSize: 0x30 } + - { offset: 0xCE951, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvM.resume.0', symObjAddr: 0x2FC, symBinAddr: 0x42030, symSize: 0x4 } + - { offset: 0xCE982, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusCfd', symObjAddr: 0x300, symBinAddr: 0x42034, symSize: 0x24 } + - { offset: 0xCE9B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusCfD', symObjAddr: 0x324, symBinAddr: 0x42058, symSize: 0x2C } + - { offset: 0xCEDCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC15venueTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x42274, symSize: 0x10 } + - { offset: 0xCF28F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCfE', symObjAddr: 0xEF4, symBinAddr: 0x43168, symSize: 0x60 } + - { offset: 0xCF2BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCfETo', symObjAddr: 0xF84, symBinAddr: 0x431F8, symSize: 0x6C } + - { offset: 0xCF2EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCMa', symObjAddr: 0xFF0, symBinAddr: 0x43264, symSize: 0x20 } + - { offset: 0xCF329, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x1010, symBinAddr: 0x43284, symSize: 0x68 } + - { offset: 0xCF448, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1078, symBinAddr: 0x432EC, symSize: 0x240 } + - { offset: 0xCF66F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x12B8, symBinAddr: 0x4352C, symSize: 0xC8 } + - { offset: 0xCF68B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1380, symBinAddr: 0x435F4, symSize: 0x260 } + - { offset: 0xCF817, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x15E0, symBinAddr: 0x43854, symSize: 0xC0 } + - { offset: 0xCF891, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyF', symObjAddr: 0x16A0, symBinAddr: 0x43914, symSize: 0xD8 } + - { offset: 0xCF920, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x1778, symBinAddr: 0x439EC, symSize: 0x34 } + - { offset: 0xCF953, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x17AC, symBinAddr: 0x43A20, symSize: 0x24 } + - { offset: 0xCFA21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC10setupPanelyyF', symObjAddr: 0x17D0, symBinAddr: 0x43A44, symSize: 0x268 } + - { offset: 0xCFC9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC10setupPanelyyFTo', symObjAddr: 0x1A38, symBinAddr: 0x43CAC, symSize: 0x28 } + - { offset: 0xCFCC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1A60, symBinAddr: 0x43CD4, symSize: 0xC } + - { offset: 0xCFD2E, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI5PlaceC_Tg503$s8gh48UI26GateSelectorViewControllerC8getGatesyyFSbAA5J11C_AFtXEfU2_AH0mnoP0CTf1nnnnc_nTf4nnnng_n', symObjAddr: 0x1BD8, symBinAddr: 0x43E4C, symSize: 0x31C } + - { offset: 0xCFF68, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI5PlaceC_Tg503$s8fg48UI26GateSelectorViewControllerC8getGatesyyFSbAA5I11C_AFtXEfU2_AG0lmnO0CTf1nncn_nTf4nnng_n', symObjAddr: 0x1EF4, symBinAddr: 0x44168, symSize: 0x2EC } + - { offset: 0xD0415, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI5PlaceC_Tg503$s8ef48UI26GateSelectorViewControllerC8getGatesyyFSbAA5H11C_AFtXEfU2_AD0klmN0CTf1nnncn_nTf4nnnng_n', symObjAddr: 0x21E0, symBinAddr: 0x44454, symSize: 0x5CC } + - { offset: 0xD09BE, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF8PenNavUI5PlaceC_Tg503$s8ef48UI26GateSelectorViewControllerC8getGatesyyFSbAA5H11C_AFtXEfU2_AC0klmN0CTf1cn_nTf4ng_n', symObjAddr: 0x27AC, symBinAddr: 0x44A20, symSize: 0x228 } + - { offset: 0xD0C12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4dnn_n', symObjAddr: 0x2A88, symBinAddr: 0x44CFC, symSize: 0x1E0 } + - { offset: 0xD0E07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC8getGatesyyFySayAA5PlaceCGcfU_TA', symObjAddr: 0x2CF0, symBinAddr: 0x44F00, symSize: 0x8 } + - { offset: 0xD0E1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD18SortedByTravelTime3for6origin19withNavigationAvoid10completiony7Penguin5VenueCSg_AA5PlaceCSgSbySayANGctFySayAA0R4GateVGcfU_TA', symObjAddr: 0x2D50, symBinAddr: 0x44F60, symSize: 0xC } + - { offset: 0xD1035, size: 0x8, addend: 0x0, symName: '_$sSh2eeoiySbShyxG_ABtFZ8PenNavUI9ToastTypeO_Tt1g5', symObjAddr: 0x1A6C, symBinAddr: 0x43CE0, symSize: 0x16C } + - { offset: 0xD113F, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFSay8PenNavUI5PlaceCG_Tg503$s8de48UI26GateSelectorViewControllerC8getGatesyyFSbAA5G11C_AFtXEfU2_AE0jklM0CTf1cn_nTf4ng_n', symObjAddr: 0x29D4, symBinAddr: 0x44C48, symSize: 0xB4 } + - { offset: 0xD1366, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC15venueTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x42274, symSize: 0x10 } + - { offset: 0xD137E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC15venueTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x42274, symSize: 0x10 } + - { offset: 0xD13C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC15venueTitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x42284, symSize: 0x34 } + - { offset: 0xD1413, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x422B8, symSize: 0x10 } + - { offset: 0xD142B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x422B8, symSize: 0x10 } + - { offset: 0xD146B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x422C8, symSize: 0x34 } + - { offset: 0xD14BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC11viewDidLoadyyF', symObjAddr: 0x88, symBinAddr: 0x422FC, symSize: 0xEC } + - { offset: 0xD1539, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x174, symBinAddr: 0x423E8, symSize: 0x28 } + - { offset: 0xD1585, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC014configureTableF0yyF', symObjAddr: 0x19C, symBinAddr: 0x42410, symSize: 0x130 } + - { offset: 0xD1840, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC8getGatesyyF', symObjAddr: 0x2CC, symBinAddr: 0x42540, symSize: 0x824 } + - { offset: 0xD214C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC8getGatesyyFySayAA5PlaceCGcfU_', symObjAddr: 0xAF0, symBinAddr: 0x42D64, symSize: 0x124 } + - { offset: 0xD222D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC8getGatesyyFSbAA5PlaceC_AFtXEfU2_', symObjAddr: 0xC14, symBinAddr: 0x42E88, symSize: 0xA0 } + - { offset: 0xD231C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC7dismissyyFTo', symObjAddr: 0xCB4, symBinAddr: 0x42F28, symSize: 0x38 } + - { offset: 0xD2346, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xCEC, symBinAddr: 0x42F60, symSize: 0xCC } + - { offset: 0xD2387, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xDB8, symBinAddr: 0x4302C, symSize: 0x60 } + - { offset: 0xD23B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xE18, symBinAddr: 0x4308C, symSize: 0xB4 } + - { offset: 0xD23EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xECC, symBinAddr: 0x43140, symSize: 0x28 } + - { offset: 0xD2400, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCfD', symObjAddr: 0xF54, symBinAddr: 0x431C8, symSize: 0x30 } + - { offset: 0xD2924, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwCP', symObjAddr: 0x0, symBinAddr: 0x44F6C, symSize: 0xFC } + - { offset: 0xD2938, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwxx', symObjAddr: 0xFC, symBinAddr: 0x45068, symSize: 0x60 } + - { offset: 0xD294C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwcp', symObjAddr: 0x15C, symBinAddr: 0x450C8, symSize: 0xD0 } + - { offset: 0xD2960, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwca', symObjAddr: 0x22C, symBinAddr: 0x45198, symSize: 0xF8 } + - { offset: 0xD2974, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwtk', symObjAddr: 0x324, symBinAddr: 0x45290, symSize: 0xAC } + - { offset: 0xD2988, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwta', symObjAddr: 0x3D0, symBinAddr: 0x4533C, symSize: 0xD0 } + - { offset: 0xD299C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwet', symObjAddr: 0x4A0, symBinAddr: 0x4540C, symSize: 0xC } + - { offset: 0xD29B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwst', symObjAddr: 0x534, symBinAddr: 0x454A0, symSize: 0xC } + - { offset: 0xD29C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVMa', symObjAddr: 0x5B8, symBinAddr: 0x45524, symSize: 0x38 } + - { offset: 0xD29D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVMr', symObjAddr: 0x5F0, symBinAddr: 0x4555C, symSize: 0x94 } + - { offset: 0xD2D04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSHAASH9hashValueSivgTW', symObjAddr: 0x12B4, symBinAddr: 0x46220, symSize: 0x6C } + - { offset: 0xD2DD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1320, symBinAddr: 0x4628C, symSize: 0x58 } + - { offset: 0xD2E50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x13E0, symBinAddr: 0x4634C, symSize: 0x4 } + - { offset: 0xD2E70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x13E0, symBinAddr: 0x4634C, symSize: 0x4 } + - { offset: 0xD2E95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSHAASQWb', symObjAddr: 0x13E4, symBinAddr: 0x46350, symSize: 0x2C } + - { offset: 0xD2EA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVWOc', symObjAddr: 0x1450, symBinAddr: 0x4637C, symSize: 0x44 } + - { offset: 0xD2EBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVWOh', symObjAddr: 0x1494, symBinAddr: 0x463C0, symSize: 0x3C } + - { offset: 0xD30AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1378, symBinAddr: 0x462E4, symSize: 0x68 } + - { offset: 0xD3219, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionV11coordinatesSaySo22CLLocationCoordinate2DVGvg', symObjAddr: 0x684, symBinAddr: 0x455F0, symSize: 0x614 } + - { offset: 0xD3AE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionV19getArrowCoordinates5orderSaySo22CLLocationCoordinate2DVGSgSi_tF', symObjAddr: 0xC98, symBinAddr: 0x45C04, symSize: 0x61C } + - { offset: 0xD4403, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordO8rawValueSSvg', symObjAddr: 0x0, symBinAddr: 0x463FC, symSize: 0xDF0 } + - { offset: 0xD444B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xDF0, symBinAddr: 0x471EC, symSize: 0x84 } + - { offset: 0xD4506, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSHAASH9hashValueSivgTW', symObjAddr: 0xE74, symBinAddr: 0x47270, symSize: 0x60 } + - { offset: 0xD4584, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xED4, symBinAddr: 0x472D0, symSize: 0x40 } + - { offset: 0xD45D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF14, symBinAddr: 0x47310, symSize: 0x5C } + - { offset: 0xD4750, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordO4rgbis5UInt8V_A2Jtvg', symObjAddr: 0xFEC, symBinAddr: 0x473E8, symSize: 0x38 } + - { offset: 0xD477F, size: 0x8, addend: 0x0, symName: ___swift_memcpy13_4, symObjAddr: 0x1670, symBinAddr: 0x47A28, symSize: 0x14 } + - { offset: 0xD4793, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOwet', symObjAddr: 0x1688, symBinAddr: 0x47A3C, symSize: 0x48 } + - { offset: 0xD47A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOwst', symObjAddr: 0x16D0, symBinAddr: 0x47A84, symSize: 0x48 } + - { offset: 0xD47BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOwug', symObjAddr: 0x1718, symBinAddr: 0x47ACC, symSize: 0x18 } + - { offset: 0xD47CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOwui', symObjAddr: 0x1734, symBinAddr: 0x47AE4, symSize: 0x1C } + - { offset: 0xD47E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOMa', symObjAddr: 0x1750, symBinAddr: 0x47B00, symSize: 0x10 } + - { offset: 0xD47F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOwet', symObjAddr: 0x176C, symBinAddr: 0x47B10, symSize: 0x90 } + - { offset: 0xD480B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOwst', symObjAddr: 0x17FC, symBinAddr: 0x47BA0, symSize: 0xB0 } + - { offset: 0xD481F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOMa', symObjAddr: 0x18C0, symBinAddr: 0x47C50, symSize: 0x10 } + - { offset: 0xD4833, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSHAASQWb', symObjAddr: 0x18D0, symBinAddr: 0x47C60, symSize: 0x4 } + - { offset: 0xD4847, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOAGSQAAWl', symObjAddr: 0x18D4, symBinAddr: 0x47C64, symSize: 0x40 } + - { offset: 0xD485C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordO8rawValueSSvg', symObjAddr: 0x0, symBinAddr: 0x463FC, symSize: 0xDF0 } + - { offset: 0xD48DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xF70, symBinAddr: 0x4736C, symSize: 0x2C } + - { offset: 0xD4904, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xF9C, symBinAddr: 0x47398, symSize: 0x28 } + - { offset: 0xD492B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xFC4, symBinAddr: 0x473C0, symSize: 0x28 } + - { offset: 0xD4954, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x1024, symBinAddr: 0x47420, symSize: 0x184 } + - { offset: 0xD49E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordO8rawValueAGSgSS_tcfCTf4nd_n', symObjAddr: 0x11A8, symBinAddr: 0x475A4, symSize: 0x484 } + - { offset: 0xD4DD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC17maxOperationCountSivpZ', symObjAddr: 0x1C20, symBinAddr: 0x3751B0, symSize: 0x0 } + - { offset: 0xD50AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCfETo', symObjAddr: 0x684, symBinAddr: 0x48328, symSize: 0x58 } + - { offset: 0xD50D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCMa', symObjAddr: 0x6DC, symBinAddr: 0x48380, symSize: 0x20 } + - { offset: 0xD50ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFyyScMYccfU_', symObjAddr: 0x6FC, symBinAddr: 0x483A0, symSize: 0x84 } + - { offset: 0xD5157, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFTo', symObjAddr: 0x780, symBinAddr: 0x48424, symSize: 0xE0 } + - { offset: 0xD5189, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask12didWriteData17totalBytesWritten0mn10ExpectedToK0ySo12NSURLSessionC_So0rdI0Cs5Int64VA2NtFyyScMYccfU_', symObjAddr: 0x860, symBinAddr: 0x48504, symSize: 0xB0 } + - { offset: 0xD5218, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask12didWriteData17totalBytesWritten0mn10ExpectedToK0ySo12NSURLSessionC_So0rdI0Cs5Int64VA2NtFTo', symObjAddr: 0x910, symBinAddr: 0x485B4, symSize: 0x84 } + - { offset: 0xD5255, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_4task20didCompleteWithErrorySo12NSURLSessionC_So0M4TaskCs0L0_pSgtFyyScMYccfU_', symObjAddr: 0x994, symBinAddr: 0x48638, symSize: 0xF0 } + - { offset: 0xD52DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_4task20didCompleteWithErrorySo12NSURLSessionC_So0M4TaskCs0L0_pSgtFTo', symObjAddr: 0xA84, symBinAddr: 0x48728, symSize: 0x8C } + - { offset: 0xD531D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFTf4dnnn_n', symObjAddr: 0xB10, symBinAddr: 0x487B4, symSize: 0x444 } + - { offset: 0xD5421, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask12didWriteData17totalBytesWritten0mn10ExpectedToK0ySo12NSURLSessionC_So0rdI0Cs5Int64VA2NtFTf4dndnnn_n', symObjAddr: 0xF54, symBinAddr: 0x48BF8, symSize: 0x454 } + - { offset: 0xD55A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_4task20didCompleteWithErrorySo12NSURLSessionC_So0M4TaskCs0L0_pSgtFTf4dnnn_n', symObjAddr: 0x13A8, symBinAddr: 0x4904C, symSize: 0x4D4 } + - { offset: 0xD570B, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgWOh', symObjAddr: 0x18C0, symBinAddr: 0x49520, symSize: 0x40 } + - { offset: 0xD571F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_4task20didCompleteWithErrorySo12NSURLSessionC_So0M4TaskCs0L0_pSgtFyyScMYccfU_TA', symObjAddr: 0x19B8, symBinAddr: 0x495D4, symSize: 0x30 } + - { offset: 0xD5733, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x19E8, symBinAddr: 0x49604, symSize: 0x10 } + - { offset: 0xD5747, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x19F8, symBinAddr: 0x49614, symSize: 0x8 } + - { offset: 0xD575B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask12didWriteData17totalBytesWritten0mn10ExpectedToK0ySo12NSURLSessionC_So0rdI0Cs5Int64VA2NtFyyScMYccfU_TA', symObjAddr: 0x1B00, symBinAddr: 0x49688, symSize: 0x34 } + - { offset: 0xD576F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFyyScMYccfU_TA', symObjAddr: 0x1BA0, symBinAddr: 0x49728, symSize: 0x30 } + - { offset: 0xD5882, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC17maxOperationCountSivgZTo', symObjAddr: 0x0, symBinAddr: 0x47CA4, symSize: 0xC } + - { offset: 0xD589A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC17maxOperationCountSivgZTo', symObjAddr: 0x0, symBinAddr: 0x47CA4, symSize: 0xC } + - { offset: 0xD58CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC17maxOperationCountSivsZTo', symObjAddr: 0xC, symBinAddr: 0x47CB0, symSize: 0xC } + - { offset: 0xD58E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC17maxOperationCountSivsZTo', symObjAddr: 0xC, symBinAddr: 0x47CB0, symSize: 0xC } + - { offset: 0xD59BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC7sessionSo12NSURLSessionCvgTo', symObjAddr: 0x18, symBinAddr: 0x47CBC, symSize: 0x34 } + - { offset: 0xD59CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC7sessionSo12NSURLSessionCvg', symObjAddr: 0x4C, symBinAddr: 0x47CF0, symSize: 0xC4 } + - { offset: 0xD5AA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC7sessionSo12NSURLSessionCvsTo', symObjAddr: 0x110, symBinAddr: 0x47DB4, symSize: 0x34 } + - { offset: 0xD5AF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC15processDelegateAA0D15ProcessProtocol_pSgvgTo', symObjAddr: 0x144, symBinAddr: 0x47DE8, symSize: 0x20 } + - { offset: 0xD5B4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC15processDelegateAA0D15ProcessProtocol_pSgvsTo', symObjAddr: 0x164, symBinAddr: 0x47E08, symSize: 0x14 } + - { offset: 0xD5C0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC03addD0yAA0D9OperationC10Foundation3URLVF', symObjAddr: 0x178, symBinAddr: 0x47E1C, symSize: 0x1DC } + - { offset: 0xD5D30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC03addD0yAA0D9OperationC10Foundation3URLVFTo', symObjAddr: 0x354, symBinAddr: 0x47FF8, symSize: 0xAC } + - { offset: 0xD5D58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC9cancelAllyyF', symObjAddr: 0x400, symBinAddr: 0x480A4, symSize: 0x11C } + - { offset: 0xD5E5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC9cancelAllyyFTo', symObjAddr: 0x51C, symBinAddr: 0x481C0, symSize: 0x28 } + - { offset: 0xD5EA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCACycfc', symObjAddr: 0x544, symBinAddr: 0x481E8, symSize: 0xF0 } + - { offset: 0xD5F0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCACycfcTo', symObjAddr: 0x634, symBinAddr: 0x482D8, symSize: 0x20 } + - { offset: 0xD5F21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCfD', symObjAddr: 0x654, symBinAddr: 0x482F8, symSize: 0x30 } + - { offset: 0xD636B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23IntrinsicCollectionViewCMa', symObjAddr: 0xBC, symBinAddr: 0x49824, symSize: 0x20 } + - { offset: 0xD63E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DynamicHeightCollectionViewCMa', symObjAddr: 0x300, symBinAddr: 0x49A68, symSize: 0x20 } + - { offset: 0xD64DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewCMa', symObjAddr: 0x5E4, symBinAddr: 0x49D4C, symSize: 0x20 } + - { offset: 0xD650B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23IntrinsicCollectionViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0x0, symBinAddr: 0x49768, symSize: 0x80 } + - { offset: 0xD654C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DynamicHeightCollectionViewC14layoutSubviewsyyFTo', symObjAddr: 0xDC, symBinAddr: 0x49844, symSize: 0xA0 } + - { offset: 0xD65A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DynamicHeightCollectionViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0x17C, symBinAddr: 0x498E4, symSize: 0x6C } + - { offset: 0xD663E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewC5frame010collectionG6LayoutACSo6CGRectV_So012UICollectiongJ0CtcfcTo', symObjAddr: 0x320, symBinAddr: 0x49A88, symSize: 0xB4 } + - { offset: 0xD66E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x3D4, symBinAddr: 0x49B3C, symSize: 0x94 } + - { offset: 0xD6750, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewC10reloadDatayyFTo', symObjAddr: 0x538, symBinAddr: 0x49CA0, symSize: 0x64 } + - { offset: 0xD6791, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0x59C, symBinAddr: 0x49D04, symSize: 0xC } + - { offset: 0xD67A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0x59C, symBinAddr: 0x49D04, symSize: 0xC } + - { offset: 0xD6B27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x49D6C, symSize: 0x10 } + - { offset: 0xD6C9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCfE', symObjAddr: 0x378, symBinAddr: 0x4A0E4, symSize: 0x10 } + - { offset: 0xD6CC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCfETo', symObjAddr: 0x3B8, symBinAddr: 0x4A124, symSize: 0x10 } + - { offset: 0xD6CF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCMa', symObjAddr: 0x3C8, symBinAddr: 0x4A134, symSize: 0x20 } + - { offset: 0xD6D1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x3E8, symBinAddr: 0x4A154, symSize: 0x4 } + - { offset: 0xD6D3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x3E8, symBinAddr: 0x4A154, symSize: 0x4 } + - { offset: 0xD6D5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x3EC, symBinAddr: 0x4A158, symSize: 0xC8 } + - { offset: 0xD6D8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x58C, symBinAddr: 0x4A220, symSize: 0x34 } + - { offset: 0xD6DC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x5C0, symBinAddr: 0x4A254, symSize: 0x24 } + - { offset: 0xD6E6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x5E4, symBinAddr: 0x4A278, symSize: 0x298 } + - { offset: 0xD710A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x87C, symBinAddr: 0x4A510, symSize: 0x28 } + - { offset: 0xD7135, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x8A4, symBinAddr: 0x4A538, symSize: 0x4 } + - { offset: 0xD7155, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x8A4, symBinAddr: 0x4A538, symSize: 0x4 } + - { offset: 0xD717D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4ddd_n', symObjAddr: 0x8A8, symBinAddr: 0x4A53C, symSize: 0xC0 } + - { offset: 0xD729E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTf4nnd_n', symObjAddr: 0x968, symBinAddr: 0x4A5FC, symSize: 0x214 } + - { offset: 0xD7456, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0xB7C, symBinAddr: 0x4A810, symSize: 0x1C0 } + - { offset: 0xD763B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVSgWOe', symObjAddr: 0xD80, symBinAddr: 0x4A9D0, symSize: 0x3C } + - { offset: 0xD7816, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x49D6C, symSize: 0x10 } + - { offset: 0xD782E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x49D6C, symSize: 0x10 } + - { offset: 0xD7874, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x49D7C, symSize: 0x34 } + - { offset: 0xD78C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x44, symBinAddr: 0x49DB0, symSize: 0x5C } + - { offset: 0xD7904, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC014configureTableF0yyF', symObjAddr: 0xA0, symBinAddr: 0x49E0C, symSize: 0x150 } + - { offset: 0xD79DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x1F0, symBinAddr: 0x49F5C, symSize: 0x38 } + - { offset: 0xD7A46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x228, symBinAddr: 0x49F94, symSize: 0xC4 } + - { offset: 0xD7A9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2EC, symBinAddr: 0x4A058, symSize: 0x8C } + - { offset: 0xD7AD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCfD', symObjAddr: 0x388, symBinAddr: 0x4A0F4, symSize: 0x30 } + - { offset: 0xD80A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOwet', symObjAddr: 0xF4, symBinAddr: 0x4AA30, symSize: 0x90 } + - { offset: 0xD80B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOwst', symObjAddr: 0x184, symBinAddr: 0x4AAC0, symSize: 0xB0 } + - { offset: 0xD80CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOMa', symObjAddr: 0x248, symBinAddr: 0x4AB70, symSize: 0x10 } + - { offset: 0xD80DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOSHAASQWb', symObjAddr: 0x258, symBinAddr: 0x4AB80, symSize: 0x4 } + - { offset: 0xD80F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOACSQAAWl', symObjAddr: 0x25C, symBinAddr: 0x4AB84, symSize: 0x40 } + - { offset: 0xD812E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xC0, symBinAddr: 0x4AA0C, symSize: 0x18 } + - { offset: 0xD8157, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xD8, symBinAddr: 0x4AA24, symSize: 0xC } + - { offset: 0xD84EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9makeCubic4from2to5large5sweep2rx2ry8rotationSayAA9LayerTreeO5PointV1p_AM3cp1AM3cp2tGAM_AMS2bS3ftF', symObjAddr: 0x0, symBinAddr: 0x4ABC4, symSize: 0x5AC } + - { offset: 0xD88CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9makeCubic4from2to5large5sweep2rx2ry8rotationSayAA9LayerTreeO5PointV1p_AM3cp1AM3cp2tGAM_AMS2bS3ftF', symObjAddr: 0x0, symBinAddr: 0x4ABC4, symSize: 0x5AC } + - { offset: 0xD979E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtF', symObjAddr: 0x0, symBinAddr: 0x4B170, symSize: 0x164 } + - { offset: 0xD9895, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewCfETo', symObjAddr: 0x320, symBinAddr: 0x4B490, symSize: 0x10 } + - { offset: 0xD98C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewCMa', symObjAddr: 0x330, symBinAddr: 0x4B4A0, symSize: 0x20 } + - { offset: 0xD98D8, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewCMa', symObjAddr: 0x350, symBinAddr: 0x4B4C0, symSize: 0x44 } + - { offset: 0xD995A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtF', symObjAddr: 0x0, symBinAddr: 0x4B170, symSize: 0x164 } + - { offset: 0xD99EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtFTo', symObjAddr: 0x164, symBinAddr: 0x4B2D4, symSize: 0x78 } + - { offset: 0xD9A23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1DC, symBinAddr: 0x4B34C, symSize: 0x80 } + - { offset: 0xD9A9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x25C, symBinAddr: 0x4B3CC, symSize: 0x94 } + - { offset: 0xD9ADC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewCfD', symObjAddr: 0x2F0, symBinAddr: 0x4B460, symSize: 0x30 } + - { offset: 0xDACE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCMU', symObjAddr: 0x76E4, symBinAddr: 0x52AA4, symSize: 0x8 } + - { offset: 0xDACFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCMa', symObjAddr: 0x76EC, symBinAddr: 0x52AAC, symSize: 0x38 } + - { offset: 0xDAD0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCMr', symObjAddr: 0x7724, symBinAddr: 0x52AE4, symSize: 0xFC } + - { offset: 0xDAD22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOAFs0E3KeyAAWl', symObjAddr: 0x8A28, symBinAddr: 0x53D80, symSize: 0x40 } + - { offset: 0xDAD36, size: 0x8, addend: 0x0, symName: '_$sSaySo22CLLocationCoordinate2DVGSayxGSesSeRzlWl', symObjAddr: 0x8A88, symBinAddr: 0x53DC0, symSize: 0x94 } + - { offset: 0xDAD4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOACSeAAWl', symObjAddr: 0x8B1C, symBinAddr: 0x53E54, symSize: 0x40 } + - { offset: 0xDAD5E, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI5PlaceCGSayxGSesSeRzlWl', symObjAddr: 0x8B5C, symBinAddr: 0x53E94, symSize: 0x94 } + - { offset: 0xDAD72, size: 0x8, addend: 0x0, symName: '_$sSay7Penguin8ScheduleCGSayxGSesSeRzlWl', symObjAddr: 0x8BF0, symBinAddr: 0x53F28, symSize: 0x94 } + - { offset: 0xDAD86, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVSgWOd', symObjAddr: 0x8CDC, symBinAddr: 0x53FBC, symSize: 0x48 } + - { offset: 0xDAD9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVSgWOg', symObjAddr: 0x8D24, symBinAddr: 0x54004, symSize: 0x24 } + - { offset: 0xDAEDD, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI5PlaceC_Tg503$s8ef3UI5H37C12setEntrancesyySayACGFSbAC_ACtXEfU_Tf1nnncn_n', symObjAddr: 0x8D48, symBinAddr: 0x54028, symSize: 0x410 } + - { offset: 0xDB42D, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI5PlaceC_Tg503$s8fg3UI5I37C12setEntrancesyySayACGFSbAC_ACtXEfU_Tf1nncn_n', symObjAddr: 0x9158, symBinAddr: 0x54438, symSize: 0x26C } + - { offset: 0xDB7C8, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI5PlaceC_Tg503$s8gh3UI5J37C12setEntrancesyySayACGFSbAC_ACtXEfU_Tf1nnnnc_n', symObjAddr: 0x93C4, symBinAddr: 0x546A4, symSize: 0x254 } + - { offset: 0xDBBF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19detectEndMarkerType9floorPath09isLastSubL010completiony7Penguin0oL0CSg_SbySo7UIImageCSgctFyANcfU0_TA', symObjAddr: 0xB9A8, symBinAddr: 0x56C88, symSize: 0x8 } + - { offset: 0xDBC0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14getOrderedIcon5order10completionySi_ySo7UIImageCSgctFyAIcfU_TA', symObjAddr: 0xB9B0, symBinAddr: 0x56C90, symSize: 0x8 } + - { offset: 0xDBC21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctFyAKcfU1_TA', symObjAddr: 0xB9B8, symBinAddr: 0x56C98, symSize: 0x8 } + - { offset: 0xDBC35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctFyAKcfU0_TA', symObjAddr: 0xB9C0, symBinAddr: 0x56CA0, symSize: 0x30 } + - { offset: 0xDBC49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctFyAKcfU_TA', symObjAddr: 0xB9F0, symBinAddr: 0x56CD0, symSize: 0x30 } + - { offset: 0xDBD78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC23showArrivalConfirmation33_2BE4A475C9A281DA0308C98892968072LL3foryAA5PlaceCSg_tFySo7UIImageCSgcfU0_TA', symObjAddr: 0xF204, symBinAddr: 0x5A480, symSize: 0x8 } + - { offset: 0xDBD8C, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xF250, symBinAddr: 0x5A4BC, symSize: 0x10 } + - { offset: 0xDBDA0, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xF260, symBinAddr: 0x5A4CC, symSize: 0x8 } + - { offset: 0xDBDB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC21drawDestinationSymbol3for2atyAA5PlaceCSg_So22CLLocationCoordinate2DVSgtFySo7UIImageCSgcfU1_TA', symObjAddr: 0xF26C, symBinAddr: 0x5A4D8, symSize: 0xC } + - { offset: 0xDBDC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7getIcon10completionyySo7UIImageCSgc_tFyAHcfU0_TA', symObjAddr: 0xF2B4, symBinAddr: 0x5A520, symSize: 0x20 } + - { offset: 0xDBE04, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationOWOy', symObjAddr: 0xF314, symBinAddr: 0x5A540, symSize: 0x40 } + - { offset: 0xDBE18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC16updateSymbolIconyyFySo7UIImageCSgcfU_TA', symObjAddr: 0xF394, symBinAddr: 0x5A5AC, symSize: 0x8 } + - { offset: 0xDBE2C, size: 0x8, addend: 0x0, symName: '_$sSaySo22CLLocationCoordinate2DVGSayxGSEsSERzlWl', symObjAddr: 0xF3DC, symBinAddr: 0x5A5B4, symSize: 0x94 } + - { offset: 0xDBE40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOACSEAAWl', symObjAddr: 0xF470, symBinAddr: 0x5A648, symSize: 0x40 } + - { offset: 0xDBE54, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI5PlaceCGSayxGSEsSERzlWl', symObjAddr: 0xF4B0, symBinAddr: 0x5A688, symSize: 0x94 } + - { offset: 0xDBE68, size: 0x8, addend: 0x0, symName: '_$sSay7Penguin8ScheduleCGSayxGSEsSERzlWl', symObjAddr: 0xF544, symBinAddr: 0x5A71C, symSize: 0x94 } + - { offset: 0xDBE7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8setImage2inySo11UIImageViewCSg_tFySo0H0CSgcfU0_TA', symObjAddr: 0xF618, symBinAddr: 0x5A7B0, symSize: 0x14 } + - { offset: 0xDBEB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOwet', symObjAddr: 0xF6CC, symBinAddr: 0x5A7C4, symSize: 0x90 } + - { offset: 0xDBECA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOwst', symObjAddr: 0xF75C, symBinAddr: 0x5A854, symSize: 0xB0 } + - { offset: 0xDBEDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOMa', symObjAddr: 0xF820, symBinAddr: 0x5A904, symSize: 0x10 } + - { offset: 0xDBEF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOSHAASQWb', symObjAddr: 0xF830, symBinAddr: 0x5A914, symSize: 0x4 } + - { offset: 0xDBF06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOAFSQAAWl', symObjAddr: 0xF834, symBinAddr: 0x5A918, symSize: 0x40 } + - { offset: 0xDBF1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xF874, symBinAddr: 0x5A958, symSize: 0x4 } + - { offset: 0xDBF2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xF878, symBinAddr: 0x5A95C, symSize: 0x40 } + - { offset: 0xDBF42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0xF8B8, symBinAddr: 0x5A99C, symSize: 0x4 } + - { offset: 0xDBF56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0xF8BC, symBinAddr: 0x5A9A0, symSize: 0x40 } + - { offset: 0xDBFB0, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI5PlaceCG_Tg503$s8fg3UI5I37C12setEntrancesyySayACGFSbAC_ACtXEfU_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x4B504, symSize: 0x170 } + - { offset: 0xDC547, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x75DC, symBinAddr: 0x5299C, symSize: 0x28 } + - { offset: 0xDC563, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x7604, symBinAddr: 0x529C4, symSize: 0x28 } + - { offset: 0xDC74D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC12setEntrancesyySayACGF', symObjAddr: 0x5390, symBinAddr: 0x50894, symSize: 0x658 } + - { offset: 0xDCF43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8category7Penguin11POICategoryVSgvg', symObjAddr: 0x170, symBinAddr: 0x4B674, symSize: 0x88 } + - { offset: 0xDD026, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC5floor7Penguin5FloorCSgvg', symObjAddr: 0x1F8, symBinAddr: 0x4B6FC, symSize: 0x8C } + - { offset: 0xDD31E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14compactAddressSSSgvg', symObjAddr: 0x284, symBinAddr: 0x4B788, symSize: 0x19C } + - { offset: 0xDD4C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14stopDictionarySDySSypGvg', symObjAddr: 0x420, symBinAddr: 0x4B924, symSize: 0x294 } + - { offset: 0xDD6D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10isFavoriteSbvg', symObjAddr: 0x6B4, symBinAddr: 0x4BBB8, symSize: 0x164 } + - { offset: 0xDD7E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13isRawLocationSbvg', symObjAddr: 0x818, symBinAddr: 0x4BD1C, symSize: 0x31C } + - { offset: 0xDD9D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCACycfc', symObjAddr: 0xB34, symBinAddr: 0x4C038, symSize: 0x150 } + - { offset: 0xDDABC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC12searchResultAcA7POIDataCSg_tcfc', symObjAddr: 0xC84, symBinAddr: 0x4C188, symSize: 0xD08 } + - { offset: 0xDDF67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8location4typeAC7Penguin10PILocationCSg_AA0D4TypeOtcfc', symObjAddr: 0x198C, symBinAddr: 0x4CE90, symSize: 0x564 } + - { offset: 0xDE23B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCyA2CSgcfc', symObjAddr: 0x1EF0, symBinAddr: 0x4D3F4, symSize: 0x4C0 } + - { offset: 0xDE2D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC3poi8scheduleAC7Penguin10PoiPolygonVSg_SayAF8ScheduleCGSgtcfc', symObjAddr: 0x23B0, symBinAddr: 0x4D8B4, symSize: 0xABC } + - { offset: 0xDE476, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC3poiAcA7POIDataCSg_tcfc', symObjAddr: 0x2E6C, symBinAddr: 0x4E370, symSize: 0x470 } + - { offset: 0xDE536, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8favoriteAcA8FavoriteC_tcfc', symObjAddr: 0x32DC, symBinAddr: 0x4E7E0, symSize: 0xE14 } + - { offset: 0xDE969, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC5venue8scheduleAC7Penguin5VenueCSg_SayAF8ScheduleCGSgtcfc', symObjAddr: 0x40F0, symBinAddr: 0x4F5F4, symSize: 0x404 } + - { offset: 0xDEA22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC6campusAC7Penguin5VenueCSg_tcfc', symObjAddr: 0x44F4, symBinAddr: 0x4F9F8, symSize: 0x3F0 } + - { offset: 0xDEACB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC4gate7venueId4typeAcA9VenueGateVSg_SiSgAA0D4TypeOSgtcfc', symObjAddr: 0x48E4, symBinAddr: 0x4FDE8, symSize: 0x450 } + - { offset: 0xDEB20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC4gate7venueId4typeACSg7Penguin13GateNodeModelCSg_SiSgAA0D4TypeOSgtcfc', symObjAddr: 0x4D34, symBinAddr: 0x50238, symSize: 0x248 } + - { offset: 0xDEB8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13setNearPlacesyy7Penguin0fD0VSgF', symObjAddr: 0x4F7C, symBinAddr: 0x50480, symSize: 0x220 } + - { offset: 0xDEBC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC11setEntranceyyACSgF', symObjAddr: 0x519C, symBinAddr: 0x506A0, symSize: 0xD4 } + - { offset: 0xDECFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC12setEntrancesyyACSgd_tF', symObjAddr: 0x5270, symBinAddr: 0x50774, symSize: 0x120 } + - { offset: 0xDEF59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14selectEntranceyyACSgF', symObjAddr: 0x59E8, symBinAddr: 0x50EEC, symSize: 0x160 } + - { offset: 0xDF1A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8setImage2inySo11UIImageViewCSg_tF', symObjAddr: 0x5B48, symBinAddr: 0x5104C, symSize: 0x5D0 } + - { offset: 0xDF449, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF', symObjAddr: 0x6190, symBinAddr: 0x5161C, symSize: 0x5A0 } + - { offset: 0xDF677, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctFyAKcfU1_', symObjAddr: 0x681C, symBinAddr: 0x51CA8, symSize: 0xE4 } + - { offset: 0xDF6F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7getIcon10completionyySo7UIImageCSgc_tFyAHcfU0_', symObjAddr: 0x6900, symBinAddr: 0x51D8C, symSize: 0x20 } + - { offset: 0xDF721, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14getOrderedIcon5order10completionySi_ySo7UIImageCSgctFyAIcfU_', symObjAddr: 0x6920, symBinAddr: 0x51DAC, symSize: 0x58 } + - { offset: 0xDF758, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7matchesySbACSgF', symObjAddr: 0x6978, symBinAddr: 0x51E04, symSize: 0x414 } + - { offset: 0xDF8EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC16mapToDestination7Penguin0G0CyF', symObjAddr: 0x6D8C, symBinAddr: 0x52218, symSize: 0x1B0 } + - { offset: 0xDF9D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC11setLocationyy7Penguin10PILocationCSgF', symObjAddr: 0x6F3C, symBinAddr: 0x523C8, symSize: 0x2C4 } + - { offset: 0xDFA0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLO11stringValueSSvg', symObjAddr: 0x7200, symBinAddr: 0x5268C, symSize: 0x2D8 } + - { offset: 0xDFABA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x7598, symBinAddr: 0x52964, symSize: 0x8 } + - { offset: 0xDFAD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x75A0, symBinAddr: 0x5296C, symSize: 0x24 } + - { offset: 0xDFAFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x75D0, symBinAddr: 0x52990, symSize: 0xC } + - { offset: 0xDFB12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCfd', symObjAddr: 0x762C, symBinAddr: 0x529EC, symSize: 0x94 } + - { offset: 0xDFB35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCfD', symObjAddr: 0x76C0, symBinAddr: 0x52A80, symSize: 0x24 } + - { offset: 0xDFB58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC6encode2toys7Encoder_p_tKF', symObjAddr: 0x7820, symBinAddr: 0x52BE0, symSize: 0x7E8 } + - { offset: 0xDFB89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x8008, symBinAddr: 0x533C8, symSize: 0x940 } + - { offset: 0xDFBC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x8948, symBinAddr: 0x53D08, symSize: 0x58 } + - { offset: 0xDFBEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x89A0, symBinAddr: 0x53D60, symSize: 0x20 } + - { offset: 0xDFC0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC22getOrderedLetterString5orderSSSgSi_tFTf4nd_n', symObjAddr: 0x9618, symBinAddr: 0x548F8, symSize: 0x100 } + - { offset: 0xDFCDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC6campus7Penguin5VenueCSgvgTf4d_n', symObjAddr: 0x9718, symBinAddr: 0x549F8, symSize: 0x144 } + - { offset: 0xE0186, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7getIcon10completionyySo7UIImageCSgc_tF03$s8ab46UI16SelectionManagerC16updateSymbolIconyyFySo7H7CSgcfU_AA0kL0CSgXwz_XxACTf1cn_nTf4ngg_n', symObjAddr: 0x985C, symBinAddr: 0x54B3C, symSize: 0xE78 } + - { offset: 0xE083F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC23setCurrentLocationImage2inySo11UIImageViewCSg_tFTf4nd_n', symObjAddr: 0xA6D4, symBinAddr: 0x559B4, symSize: 0x474 } + - { offset: 0xE0A68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab102UI27DirectionCollectionViewCellC23showArrivalConfirmation33_2BE4A475C9A281DA0308C98892968072LL3foryAA5d10CSg_tFySo7L8CSgcfU0_AA0opqR0CSgXwz_XxTf1ncn_nTf4nng_n', symObjAddr: 0xAB48, symBinAddr: 0x55E28, symSize: 0x67C } + - { offset: 0xE0CB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab105UI24NavigationViewControllerC19detectEndMarkerType9floorPath09isLastSubL010completiony7Penguin0oL0CSg_SbysltU7ANcfU0_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xB1C4, symBinAddr: 0x564A4, symSize: 0x7C0 } + - { offset: 0xE106B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab93UI24NavigationViewControllerC21detectStartMarkerType9floorPath10completiony7Penguin03SubL0C_ysltU7ALcfU0_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xBA64, symBinAddr: 0x56D00, symSize: 0x7C0 } + - { offset: 0xE1421, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab93UI24NavigationViewControllerC21detectStartMarkerType9floorPath10completiony7Penguin03SubL0C_ysltU7ALcfU2_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xC224, symBinAddr: 0x574C0, symSize: 0x7C0 } + - { offset: 0xE17F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab163UI19RouteOverviewHelperC14detectLastNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath11coordinates10completiony7Penguin7SubPathCSg_SaySo22CLLocationCoordinate2DVGysltU7ARcfU0_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xC9E4, symBinAddr: 0x57C80, symSize: 0x7C0 } + - { offset: 0xE1BCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab120UI19RouteOverviewHelperC15detectFirstNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath10completiony7Penguin7SubPathCSg_ysltU7ANcfU0_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xD1A4, symBinAddr: 0x58440, symSize: 0x7C0 } + - { offset: 0xE1FA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7getIcon10completionyySo7UIImageCSgc_tF03$s8ab56UI17PoiDrawingManagerC21drawDestinationSymbol3for2atyAA5d39CSg_So22CLLocationCoordinate2DVSgtFySo7H8CSgcfU1_ACSgA2hA0klM0CSgXwz_XxTf1cn_nTf4ngggg_n', symObjAddr: 0xD964, symBinAddr: 0x58C00, symSize: 0x15B4 } + - { offset: 0xE2758, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC16getOrderedLetter5orderSo7UIImageCSgSi_tFTf4nd_n', symObjAddr: 0xEF18, symBinAddr: 0x5A1B4, symSize: 0x2CC } + - { offset: 0xE2880, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0xF8FC, symBinAddr: 0x5A9E0, symSize: 0x804 } + - { offset: 0xE30B9, size: 0x8, addend: 0x0, symName: '_$sSq8PenNavUISdRszlE16toDistanceStringSSvg', symObjAddr: 0x0, symBinAddr: 0x5B298, symSize: 0xFC } + - { offset: 0xE313D, size: 0x8, addend: 0x0, symName: '_$sSq8PenNavUISdRszlE16toDistanceStringSSvg', symObjAddr: 0x0, symBinAddr: 0x5B298, symSize: 0xFC } + - { offset: 0xE3D64, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVSgSo13NSURLResponseCSgs5Error_pSgIeghggg_So6NSDataCSgAGSo7NSErrorCSgIeyBhyyy_TR', symObjAddr: 0x1234, symBinAddr: 0x5C5C8, symSize: 0xC8 } + - { offset: 0xE3D7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCfETo', symObjAddr: 0x1584, symBinAddr: 0x5C918, symSize: 0x84 } + - { offset: 0xE3DAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCMa', symObjAddr: 0x1608, symBinAddr: 0x5C99C, symSize: 0x20 } + - { offset: 0xE3DBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC15makePOSTRequest33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLL3url8postData7headers10completionySS_10Foundation0Q0VSDyS2SGySDySSyXlGctFyALSg_So13NSURLResponseCSgs5Error_pSgtYbcfU_TA', symObjAddr: 0x16FC, symBinAddr: 0x5CA0C, symSize: 0xC } + - { offset: 0xE3DD3, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1708, symBinAddr: 0x5CA18, symSize: 0x10 } + - { offset: 0xE3DE7, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1718, symBinAddr: 0x5CA28, symSize: 0x8 } + - { offset: 0xE3DFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC5speakyySSSgFySDySSyXlGcfU_TA', symObjAddr: 0x17C0, symBinAddr: 0x5CA30, symSize: 0x8 } + - { offset: 0xE3E0F, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVSgWOy', symObjAddr: 0x18CC, symBinAddr: 0x5CB00, symSize: 0x14 } + - { offset: 0xE3E88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC5speakyySSSgF', symObjAddr: 0x0, symBinAddr: 0x5B394, symSize: 0x2CC } + - { offset: 0xE3FE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC5speakyySSSgFySDySSyXlGcfU_', symObjAddr: 0x2CC, symBinAddr: 0x5B660, symSize: 0x3D8 } + - { offset: 0xE45F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC13buildPostData33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLL4text10Foundation0H0VSSSg_tF', symObjAddr: 0x6A4, symBinAddr: 0x5BA38, symSize: 0x614 } + - { offset: 0xE4C5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC15makePOSTRequest33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLL3url8postData7headers10completionySS_10Foundation0Q0VSDyS2SGySDySSyXlGctF', symObjAddr: 0xCB8, symBinAddr: 0x5C04C, symSize: 0x3AC } + - { offset: 0xE4DE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC15makePOSTRequest33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLL3url8postData7headers10completionySS_10Foundation0Q0VSDyS2SGySDySSyXlGctFyALSg_So13NSURLResponseCSgs5Error_pSgtYbcfU_', symObjAddr: 0x1064, symBinAddr: 0x5C3F8, symSize: 0x1D0 } + - { offset: 0xE4EC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC27audioPlayerDidFinishPlaying_12successfullyySo07AVAudioG0C_SbtFTo', symObjAddr: 0x12FC, symBinAddr: 0x5C690, symSize: 0x4C } + - { offset: 0xE4EEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC16resetAudioPlayer33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLLyyF', symObjAddr: 0x1348, symBinAddr: 0x5C6DC, symSize: 0x50 } + - { offset: 0xE4F77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC12stopSpeakingyyF', symObjAddr: 0x1398, symBinAddr: 0x5C72C, symSize: 0x98 } + - { offset: 0xE503A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCACycfc', symObjAddr: 0x1430, symBinAddr: 0x5C7C4, symSize: 0x104 } + - { offset: 0xE5089, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCACycfcTo', symObjAddr: 0x1534, symBinAddr: 0x5C8C8, symSize: 0x20 } + - { offset: 0xE509D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCfD', symObjAddr: 0x1554, symBinAddr: 0x5C8E8, symSize: 0x30 } + - { offset: 0xE50C0, size: 0x8, addend: 0x0, symName: '_$sSo13AVAudioPlayerC4dataAB10Foundation4DataV_tKcfcTOTf4gn_n', symObjAddr: 0x1804, symBinAddr: 0x5CA38, symSize: 0xC8 } + - { offset: 0xE50DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC27audioPlayerDidFinishPlaying_12successfullyySo07AVAudioG0C_SbtFTf4ddn_n', symObjAddr: 0x18E0, symBinAddr: 0x5CB14, symSize: 0x1EC } + - { offset: 0xE57EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13RenderingModeOMa', symObjAddr: 0xE4, symBinAddr: 0x5CD00, symSize: 0x10 } + - { offset: 0xE5803, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13RenderingModeOSHAASQWb', symObjAddr: 0xF4, symBinAddr: 0x5CD10, symSize: 0x4 } + - { offset: 0xE5817, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13RenderingModeOACSQAAWl', symObjAddr: 0xF8, symBinAddr: 0x5CD14, symSize: 0x40 } + - { offset: 0xE5BAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC12getFloorByIdy7Penguin0G0CSgSiSgF', symObjAddr: 0x0, symBinAddr: 0x5CD54, symSize: 0x10C } + - { offset: 0xE5BD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC14sharedInstance33_956C2914F155F2C44055070183674D2FLLACSgvpZ', symObjAddr: 0xB40, symBinAddr: 0x3759A8, symSize: 0x0 } + - { offset: 0xE5E88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerCMa', symObjAddr: 0xB20, symBinAddr: 0x5D850, symSize: 0x20 } + - { offset: 0xE603E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC12getFloorByIdy7Penguin0G0CSgSiSgF', symObjAddr: 0x0, symBinAddr: 0x5CD54, symSize: 0x10C } + - { offset: 0xE61D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC14getCampusFloor7Penguin0H0CSgyF', symObjAddr: 0x10C, symBinAddr: 0x5CE60, symSize: 0xF0 } + - { offset: 0xE63D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC012getConnectedD04withSay7Penguin5FloorCGAHSg_tF', symObjAddr: 0x1FC, symBinAddr: 0x5CF50, symSize: 0x900 } + - { offset: 0xE7EAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC3APIOSHAASQWb', symObjAddr: 0x5F04, symBinAddr: 0x6362C, symSize: 0x4 } + - { offset: 0xE7EC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC3APIOAESQAAWl', symObjAddr: 0x5F08, symBinAddr: 0x63630, symSize: 0x40 } + - { offset: 0xE7ED5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAcA08RendererE0AAWl', symObjAddr: 0x5F48, symBinAddr: 0x63670, symSize: 0x40 } + - { offset: 0xE7EE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererCMa', symObjAddr: 0x5F88, symBinAddr: 0x636B0, symSize: 0x20 } + - { offset: 0xE7EFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC3APIOMa', symObjAddr: 0x611C, symBinAddr: 0x636DC, symSize: 0x10 } + - { offset: 0xE7F11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOMa', symObjAddr: 0x6280, symBinAddr: 0x636EC, symSize: 0x10 } + - { offset: 0xE7F25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVMa', symObjAddr: 0x6290, symBinAddr: 0x636FC, symSize: 0x10 } + - { offset: 0xE7F39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwxx', symObjAddr: 0x62CC, symBinAddr: 0x6370C, symSize: 0x28 } + - { offset: 0xE7F4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwcp', symObjAddr: 0x62F4, symBinAddr: 0x63734, symSize: 0x4C } + - { offset: 0xE7F61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwca', symObjAddr: 0x6340, symBinAddr: 0x63780, symSize: 0x74 } + - { offset: 0xE7F75, size: 0x8, addend: 0x0, symName: ___swift_memcpy40_8, symObjAddr: 0x63B4, symBinAddr: 0x637F4, symSize: 0x14 } + - { offset: 0xE7F89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwta', symObjAddr: 0x63C8, symBinAddr: 0x63808, symSize: 0x54 } + - { offset: 0xE7F9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwet', symObjAddr: 0x641C, symBinAddr: 0x6385C, symSize: 0x48 } + - { offset: 0xE7FB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwst', symObjAddr: 0x6464, symBinAddr: 0x638A4, symSize: 0x48 } + - { offset: 0xE7FC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVMa', symObjAddr: 0x64AC, symBinAddr: 0x638EC, symSize: 0x10 } + - { offset: 0xE7FD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSHAASQWb', symObjAddr: 0x64C0, symBinAddr: 0x63900, symSize: 0x4 } + - { offset: 0xE7FED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOAESQAAWl', symObjAddr: 0x64C4, symBinAddr: 0x63904, symSize: 0x40 } + - { offset: 0xE8001, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA9BlendModeAaDP_SQWT', symObjAddr: 0x6504, symBinAddr: 0x63944, symSize: 0xC } + - { offset: 0xE8015, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA5FloatAaDP_SQWT', symObjAddr: 0x6528, symBinAddr: 0x63950, symSize: 0xC } + - { offset: 0xE8029, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA8GradientAaDP_SQWT', symObjAddr: 0x6534, symBinAddr: 0x6395C, symSize: 0x4 } + - { offset: 0xE803D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVAESQAAWl', symObjAddr: 0x6538, symBinAddr: 0x63960, symSize: 0x40 } + - { offset: 0xE8051, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA5ImageAaDP_SQWT', symObjAddr: 0x6578, symBinAddr: 0x639A0, symSize: 0x4 } + - { offset: 0xE8065, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOAESQAAWl', symObjAddr: 0x657C, symBinAddr: 0x639A4, symSize: 0x40 } + - { offset: 0xE8079, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA4PathAaDP_SQWT', symObjAddr: 0x65D4, symBinAddr: 0x639E4, symSize: 0x4 } + - { offset: 0xE808D, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI9LayerTreeO5ShapeOGSayxGSQsSQRzlWl', symObjAddr: 0x65D8, symBinAddr: 0x639E8, symSize: 0x74 } + - { offset: 0xE80A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOAESQAAWl', symObjAddr: 0x664C, symBinAddr: 0x63A5C, symSize: 0x40 } + - { offset: 0xE80F7, size: 0x8, addend: 0x0, symName: '_$ss26DefaultStringInterpolationV8PenNavUIE06appendC0_6indentySayAC9LayerTreeO5PointVG_SitF', symObjAddr: 0x66C8, symBinAddr: 0x63A9C, symSize: 0x3C8 } + - { offset: 0xE8693, size: 0x8, addend: 0x0, symName: '_$sSlsE5split9maxSplits25omittingEmptySubsequences14whereSeparatorSay11SubSequenceQzGSi_S2b7ElementQzKXEtKFSS_Tg5', symObjAddr: 0x6A90, symBinAddr: 0x63E64, symSize: 0x3EC } + - { offset: 0xE8BAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOWOy', symObjAddr: 0x74F0, symBinAddr: 0x64754, symSize: 0x24 } + - { offset: 0xE8BC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOWOe', symObjAddr: 0x7514, symBinAddr: 0x64778, symSize: 0x24 } + - { offset: 0xE8BD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA11CGTextTypesVGWOc', symObjAddr: 0x758C, symBinAddr: 0x6479C, symSize: 0x48 } + - { offset: 0xE8BE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA11CGTextTypesVGWOh', symObjAddr: 0x75D4, symBinAddr: 0x647E4, symSize: 0x40 } + - { offset: 0xE8DF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xD14, symBinAddr: 0x5E43C, symSize: 0xD0 } + - { offset: 0xE8F06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSHAASH9hashValueSivgTW', symObjAddr: 0xE54, symBinAddr: 0x5E57C, symSize: 0x84 } + - { offset: 0xE8FBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xED8, symBinAddr: 0x5E600, symSize: 0x60 } + - { offset: 0xE902A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF38, symBinAddr: 0x5E660, symSize: 0x80 } + - { offset: 0xE9410, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV11createPoint4fromSSAA9LayerTreeO0G0V_tF', symObjAddr: 0x0, symBinAddr: 0x5D870, symSize: 0x17C } + - { offset: 0xE95FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV10createRect4fromSSAA9LayerTreeO0G0V_tF', symObjAddr: 0x17C, symBinAddr: 0x5D9EC, symSize: 0x270 } + - { offset: 0xE99AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV11createColor4fromSSAA9LayerTreeO0G0O_tF', symObjAddr: 0x3EC, symBinAddr: 0x5DC5C, symSize: 0x26C } + - { offset: 0xE9E53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV13createPattern4from8contentsSSAA9LayerTreeO0G0C_SayAA15RendererCommandOyAA0D5TypesVGGtF', symObjAddr: 0x658, symBinAddr: 0x5DEC8, symSize: 0x574 } + - { offset: 0xEA660, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xDE4, symBinAddr: 0x5E50C, symSize: 0x2C } + - { offset: 0xEA689, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0xE10, symBinAddr: 0x5E538, symSize: 0x44 } + - { offset: 0xEA6C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC16createColorSpaceyyAC0gH0OF', symObjAddr: 0xFB8, symBinAddr: 0x5E6E0, symSize: 0x2F8 } + - { offset: 0xEAAC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC11updateColoryS2SF', symObjAddr: 0x12B0, symBinAddr: 0x5E9D8, symSize: 0x180 } + - { offset: 0xEABB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC16createOrGetColoryS2SF', symObjAddr: 0x1430, symBinAddr: 0x5EB58, symSize: 0x270 } + - { offset: 0xEAE7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC16createOrGetColorySSAA9LayerTreeO0I0OF', symObjAddr: 0x16A0, symBinAddr: 0x5EDC8, symSize: 0x2C0 } + - { offset: 0xEB223, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC15createOrGetPathyS2SF', symObjAddr: 0x1960, symBinAddr: 0x5F088, symSize: 0x35C } + - { offset: 0xEB56C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC20createOrGetTransformyS2SF', symObjAddr: 0x1CBC, symBinAddr: 0x5F3E4, symSize: 0x368 } + - { offset: 0xEB8CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC21createOrGetColorSpace3forAC0iJ0OAA9LayerTreeOAFO_tF', symObjAddr: 0x2024, symBinAddr: 0x5F74C, symSize: 0x608 } + - { offset: 0xEC070, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC19createOrGetGradientySSAA9LayerTreeO0I0VF', symObjAddr: 0x262C, symBinAddr: 0x5FD54, symSize: 0x68C } + - { offset: 0xECB59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC18createOrGetPatternyS2SF', symObjAddr: 0x2CB8, symBinAddr: 0x603E0, symSize: 0x55C } + - { offset: 0xECF44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC11concatenate9transformySS_tF', symObjAddr: 0x3214, symBinAddr: 0x6093C, symSize: 0x138 } + - { offset: 0xED148, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC9translate2tx2tyySf_SftF', symObjAddr: 0x334C, symBinAddr: 0x60A74, symSize: 0x214 } + - { offset: 0xED45A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC5scale2sx2syySf_SftF', symObjAddr: 0x3588, symBinAddr: 0x60CB0, symSize: 0x21C } + - { offset: 0xED756, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setFill5colorySS_tF', symObjAddr: 0x37A4, symBinAddr: 0x60ECC, symSize: 0x138 } + - { offset: 0xED95A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setFill7patternySS_tF', symObjAddr: 0x38DC, symBinAddr: 0x61004, symSize: 0x39C } + - { offset: 0xEDEBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC9setStroke5colorySS_tF', symObjAddr: 0x3C78, symBinAddr: 0x613A0, symSize: 0x138 } + - { offset: 0xEE0BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setLine5widthySf_tF', symObjAddr: 0x3DB0, symBinAddr: 0x614D8, symSize: 0x194 } + - { offset: 0xEE300, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setLine3capySS_tF', symObjAddr: 0x3F44, symBinAddr: 0x6166C, symSize: 0x134 } + - { offset: 0xEE4D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setLine4joinySS_tF', symObjAddr: 0x4078, symBinAddr: 0x617A0, symSize: 0x12C } + - { offset: 0xEE6C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setLine10miterLimitySf_tF', symObjAddr: 0x41A4, symBinAddr: 0x618CC, symSize: 0x194 } + - { offset: 0xEE908, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setClip4path4ruleySayAA9LayerTreeO5ShapeOG_SStF', symObjAddr: 0x4338, symBinAddr: 0x61A60, symSize: 0x3C4 } + - { offset: 0xEEE51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setClip4mask5frameySayypG_SStF', symObjAddr: 0x46FC, symBinAddr: 0x61E24, symSize: 0x17C } + - { offset: 0xEF079, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC8setBlend4modeySS_tF', symObjAddr: 0x4A20, symBinAddr: 0x62148, symSize: 0x12C } + - { offset: 0xEF28C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6stroke4pathySayAA9LayerTreeO5ShapeOG_tF', symObjAddr: 0x4B4C, symBinAddr: 0x62274, symSize: 0x3CC } + - { offset: 0xEF884, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC17clipStrokeOutline4pathySayAA9LayerTreeO5ShapeOG_tF', symObjAddr: 0x4F18, symBinAddr: 0x62640, symSize: 0x298 } + - { offset: 0xEFC5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC4fill4path4ruleySayAA9LayerTreeO5ShapeOG_SStF', symObjAddr: 0x51B0, symBinAddr: 0x628D8, symSize: 0x4EC } + - { offset: 0xF0375, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC4draw6linear4from2toyAA9LayerTreeO8GradientV_S2StF', symObjAddr: 0x569C, symBinAddr: 0x62DC4, symSize: 0x1C8 } + - { offset: 0xF06A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC9makeUIKitSSyF', symObjAddr: 0x5864, symBinAddr: 0x62F8C, symSize: 0x1E0 } + - { offset: 0xF0986, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10makeAppKitSSyF', symObjAddr: 0x5A44, symBinAddr: 0x6316C, symSize: 0x1B0 } + - { offset: 0xF0C0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC8makeTextSSyF', symObjAddr: 0x5BF4, symBinAddr: 0x6331C, symSize: 0x280 } + - { offset: 0xF0F43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererCfd', symObjAddr: 0x5E74, symBinAddr: 0x6359C, symSize: 0x70 } + - { offset: 0xF0F68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererCfD', symObjAddr: 0x5EE4, symBinAddr: 0x6360C, symSize: 0x20 } + - { offset: 0xF0FF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceO3forAESgSS_tcfCTf4nd_n', symObjAddr: 0x6ED0, symBinAddr: 0x64250, symSize: 0x134 } + - { offset: 0xF106A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC4draw5imageyAA9LayerTreeO5ImageO_tFTf4dn_n', symObjAddr: 0x7004, symBinAddr: 0x64384, symSize: 0x22C } + - { offset: 0xF14CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV10createPath4fromSayAA9LayerTreeO5ShapeOGSayAJG_tFTf4nd_n', symObjAddr: 0x7230, symBinAddr: 0x645B0, symSize: 0x130 } + - { offset: 0xF1809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x7360, symBinAddr: 0x646E0, symSize: 0x5C } + - { offset: 0xF36B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCfE', symObjAddr: 0x5F2C, symBinAddr: 0x6A76C, symSize: 0x1E4 } + - { offset: 0xF36DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCfETo', symObjAddr: 0x6140, symBinAddr: 0x6A980, symSize: 0x1F0 } + - { offset: 0xF370E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCMa', symObjAddr: 0x6330, symBinAddr: 0x6AB70, symSize: 0x20 } + - { offset: 0xF3731, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x6350, symBinAddr: 0x6AB90, symSize: 0x5C } + - { offset: 0xF3906, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x63AC, symBinAddr: 0x6ABEC, symSize: 0x1528 } + - { offset: 0xF5086, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x7940, symBinAddr: 0x6C180, symSize: 0xC8 } + - { offset: 0xF50A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtF', symObjAddr: 0x7A08, symBinAddr: 0x6C248, symSize: 0xD4 } + - { offset: 0xF5125, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x7ADC, symBinAddr: 0x6C31C, symSize: 0xE4 } + - { offset: 0xF517B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x7BC0, symBinAddr: 0x6C400, symSize: 0x130 } + - { offset: 0xF51EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x7CF0, symBinAddr: 0x6C530, symSize: 0x10D8 } + - { offset: 0xF6308, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFyycfU_', symObjAddr: 0x8DC8, symBinAddr: 0x6D608, symSize: 0xB8 } + - { offset: 0xF6353, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x8E80, symBinAddr: 0x6D6C0, symSize: 0xC0 } + - { offset: 0xF639C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12canMoveRowAtSbSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x8F40, symBinAddr: 0x6D780, symSize: 0xB4 } + - { offset: 0xF6416, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12canEditRowAtSbSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x8FF4, symBinAddr: 0x6D834, symSize: 0x13C } + - { offset: 0xF6495, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_032titleForDeleteConfirmationButtonJ5RowAtSSSgSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x9130, symBinAddr: 0x6D970, symSize: 0xBC } + - { offset: 0xF64D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtF', symObjAddr: 0x91EC, symBinAddr: 0x6DA2C, symSize: 0x5A8 } + - { offset: 0xF6781, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtFyyXEfU_', symObjAddr: 0x9794, symBinAddr: 0x6DFD4, symSize: 0x174 } + - { offset: 0xF68C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtFTo', symObjAddr: 0x9908, symBinAddr: 0x6E148, symSize: 0xD4 } + - { offset: 0xF691E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_31targetIndexPathForMoveFromRowAt010toProposedjK010Foundation0jK0VSo07UITableF0C_A2ItFTo', symObjAddr: 0x99DC, symBinAddr: 0x6E21C, symSize: 0x138 } + - { offset: 0xF6966, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_9moveRowAt2toySo07UITableF0C_10Foundation9IndexPathVAKtF', symObjAddr: 0x9B14, symBinAddr: 0x6E354, symSize: 0x4F0 } + - { offset: 0xF6B1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_9moveRowAt2toySo07UITableF0C_10Foundation9IndexPathVAKtFyyScMYccfU_', symObjAddr: 0xA004, symBinAddr: 0x6E844, symSize: 0x1A8 } + - { offset: 0xF6C2F, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUIE13movingElement4from2toSayxGSi_SitFAA5PlaceC_Tg5', symObjAddr: 0xA1AC, symBinAddr: 0x6E9EC, symSize: 0x11C } + - { offset: 0xF6DC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_9moveRowAt2toySo07UITableF0C_10Foundation9IndexPathVAKtFTo', symObjAddr: 0xA2C8, symBinAddr: 0x6EB08, symSize: 0x104 } + - { offset: 0xF6DE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_18didEndEditingRowAtySo07UITableF0C_10Foundation9IndexPathVSgtFyyScMYccfU_', symObjAddr: 0xA488, symBinAddr: 0x6ECC8, symSize: 0x124 } + - { offset: 0xF6EA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_18didEndEditingRowAtySo07UITableF0C_10Foundation9IndexPathVSgtFTo', symObjAddr: 0xA5AC, symBinAddr: 0x6EDEC, symSize: 0xF0 } + - { offset: 0xF6EED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0xA69C, symBinAddr: 0x6EEDC, symSize: 0x80 } + - { offset: 0xF6F99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0xA71C, symBinAddr: 0x6EF5C, symSize: 0x24 } + - { offset: 0xF7010, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10setupPanelyyF', symObjAddr: 0xA740, symBinAddr: 0x6EF80, symSize: 0x10C } + - { offset: 0xF70BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10setupPanelyyFTo', symObjAddr: 0xA84C, symBinAddr: 0x6F08C, symSize: 0x28 } + - { offset: 0xF70FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0xA874, symBinAddr: 0x6F0B4, symSize: 0x32C } + - { offset: 0xF73B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0xABA0, symBinAddr: 0x6F3E0, symSize: 0x50 } + - { offset: 0xF73CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC27floatingPanelDidChangeStateyyAA08FloatingiG0CF', symObjAddr: 0xABF0, symBinAddr: 0x6F430, symSize: 0x4DC } + - { offset: 0xF7625, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC27floatingPanelDidChangeStateyyAA08FloatingiG0CFyyScMYccfU_', symObjAddr: 0xB0CC, symBinAddr: 0x6F90C, symSize: 0x80 } + - { offset: 0xF7670, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC27floatingPanelDidChangeStateyyAA08FloatingiG0CFTo', symObjAddr: 0xB14C, symBinAddr: 0x6F98C, symSize: 0x50 } + - { offset: 0xF768C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC25adaptivePresentationStyle3forSo07UIModaliJ0VSo014UIPresentationG0C_tFTo', symObjAddr: 0xB19C, symBinAddr: 0x6F9DC, symSize: 0x8 } + - { offset: 0xF76E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0xB1A4, symBinAddr: 0x6F9E4, symSize: 0x60 } + - { offset: 0xF7754, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC27floatingPanelDidChangeStateyyAA08FloatingiG0CFyyScMYccfU_TA', symObjAddr: 0xB64C, symBinAddr: 0x6FDDC, symSize: 0x8 } + - { offset: 0xF7768, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xB654, symBinAddr: 0x6FDE4, symSize: 0x10 } + - { offset: 0xF777C, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xB664, symBinAddr: 0x6FDF4, symSize: 0x8 } + - { offset: 0xF7790, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4ndn_n', symObjAddr: 0xB714, symBinAddr: 0x6FDFC, symSize: 0x604 } + - { offset: 0xF7D5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC31shouldReplaceStopIconWithLetter2at4stopSbSi_AA5PlaceCSgtFTf4nnd_n', symObjAddr: 0xBD18, symBinAddr: 0x70400, symSize: 0x2E0 } + - { offset: 0xF7FA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_18didEndEditingRowAtySo07UITableF0C_10Foundation9IndexPathVSgtFTf4dnn_n', symObjAddr: 0xBFF8, symBinAddr: 0x706E0, symSize: 0x36C } + - { offset: 0xF802A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_18didEndEditingRowAtySo07UITableF0C_10Foundation9IndexPathVSgtFyyScMYccfU_TA', symObjAddr: 0xC3D0, symBinAddr: 0x70AB8, symSize: 0x30 } + - { offset: 0xF803E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_9moveRowAt2toySo07UITableF0C_10Foundation9IndexPathVAKtFyyScMYccfU_TA', symObjAddr: 0xC48C, symBinAddr: 0x70B74, symSize: 0x44 } + - { offset: 0xF8052, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtFyyXEfU_TA', symObjAddr: 0xC544, symBinAddr: 0x70C24, symSize: 0x40 } + - { offset: 0xF8066, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtFySbcfU0_TA', symObjAddr: 0xC5C0, symBinAddr: 0x70C98, symSize: 0x10 } + - { offset: 0xF8098, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFyycfU_TA', symObjAddr: 0xC5E0, symBinAddr: 0x70CA8, symSize: 0x8 } + - { offset: 0xF80AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyAA5PlaceCSgcfU_TA', symObjAddr: 0xC5E8, symBinAddr: 0x70CB0, symSize: 0x20 } + - { offset: 0xF80C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyAA5PlaceCSgcfU0_TA', symObjAddr: 0xC608, symBinAddr: 0x70CD0, symSize: 0x20 } + - { offset: 0xF80D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17previewDirections33_4796038DC95783C2E375AC3B61AF64B9LL2toyAA5PlaceCSg_tFyycfU_TA', symObjAddr: 0xC668, symBinAddr: 0x70CF0, symSize: 0x20 } + - { offset: 0xF80E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC15startNavigation33_4796038DC95783C2E375AC3B61AF64B9LL2toyAA5PlaceCSg_tFyycfU_TA', symObjAddr: 0xC688, symBinAddr: 0x70D10, symSize: 0x20 } + - { offset: 0xF80FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14setTravelModesyyFyAA0I4ModeOXEfU_yycfU_TA', symObjAddr: 0xC78C, symBinAddr: 0x70D54, symSize: 0xC } + - { offset: 0xF8110, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC11viewDidLoadyyFyycfU_TA', symObjAddr: 0xC798, symBinAddr: 0x70D60, symSize: 0x20 } + - { offset: 0xF8124, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC11viewDidLoadyyFyycfU0_TA', symObjAddr: 0xC7B8, symBinAddr: 0x70D80, symSize: 0x20 } + - { offset: 0xF8152, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC06scrollF0AA06ScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x64840, symSize: 0x10 } + - { offset: 0xF816A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC06scrollF0AA06ScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x64840, symSize: 0x10 } + - { offset: 0xF81B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC06scrollF0AA06ScrollF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x64850, symSize: 0x34 } + - { offset: 0xF81FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC018travelModeTappableF0AA06HapticF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x64884, symSize: 0x10 } + - { offset: 0xF8217, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC018travelModeTappableF0AA06HapticF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x64884, symSize: 0x10 } + - { offset: 0xF8257, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC018travelModeTappableF0AA06HapticF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x64894, symSize: 0x34 } + - { offset: 0xF8326, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC15travelModeLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x648C8, symSize: 0x10 } + - { offset: 0xF833E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC15travelModeLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x648C8, symSize: 0x10 } + - { offset: 0xF837E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC15travelModeLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x648D8, symSize: 0x34 } + - { offset: 0xF83CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC015travelModeImageF0So07UIImageF0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x6490C, symSize: 0x10 } + - { offset: 0xF83E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC015travelModeImageF0So07UIImageF0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x6490C, symSize: 0x10 } + - { offset: 0xF8425, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC015travelModeImageF0So07UIImageF0CSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x6491C, symSize: 0x34 } + - { offset: 0xF8474, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC020routeOptionsTappableF0AA06HapticF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x64950, symSize: 0x10 } + - { offset: 0xF848C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC020routeOptionsTappableF0AA06HapticF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x64950, symSize: 0x10 } + - { offset: 0xF84C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC020routeOptionsTappableF0AA06HapticF0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x64960, symSize: 0x34 } + - { offset: 0xF8516, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17routeOptionsLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x64994, symSize: 0x10 } + - { offset: 0xF852E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17routeOptionsLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x64994, symSize: 0x10 } + - { offset: 0xF8569, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17routeOptionsLabelSo7UILabelCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x649A4, symSize: 0x34 } + - { offset: 0xF85B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC23routeOptionsChevronIconSo07UIImageF0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x649D8, symSize: 0x10 } + - { offset: 0xF85D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC23routeOptionsChevronIconSo07UIImageF0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x649D8, symSize: 0x10 } + - { offset: 0xF860B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC23routeOptionsChevronIconSo07UIImageF0CSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x649E8, symSize: 0x34 } + - { offset: 0xF865A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorLabelSo7UILabelCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x64A1C, symSize: 0x10 } + - { offset: 0xF8672, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorLabelSo7UILabelCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x64A1C, symSize: 0x10 } + - { offset: 0xF86AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorLabelSo7UILabelCSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x64A2C, symSize: 0x34 } + - { offset: 0xF86FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorTitleSo7UILabelCSgvgTo', symObjAddr: 0x220, symBinAddr: 0x64A60, symSize: 0x10 } + - { offset: 0xF8714, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorTitleSo7UILabelCSgvgTo', symObjAddr: 0x220, symBinAddr: 0x64A60, symSize: 0x10 } + - { offset: 0xF874F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorTitleSo7UILabelCSgvsTo', symObjAddr: 0x230, symBinAddr: 0x64A70, symSize: 0x34 } + - { offset: 0xF879E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC021errorMessageContainerF0So6UIViewCSgvgTo', symObjAddr: 0x264, symBinAddr: 0x64AA4, symSize: 0x10 } + - { offset: 0xF87B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC021errorMessageContainerF0So6UIViewCSgvgTo', symObjAddr: 0x264, symBinAddr: 0x64AA4, symSize: 0x10 } + - { offset: 0xF87F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC021errorMessageContainerF0So6UIViewCSgvsTo', symObjAddr: 0x274, symBinAddr: 0x64AB4, symSize: 0x34 } + - { offset: 0xF8845, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC016loadingContainerF0So6UIViewCSgvgTo', symObjAddr: 0x2A8, symBinAddr: 0x64AE8, symSize: 0x10 } + - { offset: 0xF885D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC016loadingContainerF0So6UIViewCSgvgTo', symObjAddr: 0x2A8, symBinAddr: 0x64AE8, symSize: 0x10 } + - { offset: 0xF8898, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC016loadingContainerF0So6UIViewCSgvsTo', symObjAddr: 0x2B8, symBinAddr: 0x64AF8, symSize: 0x34 } + - { offset: 0xF88E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsTableF0So07UITableF0CSgvgTo', symObjAddr: 0x2EC, symBinAddr: 0x64B2C, symSize: 0x10 } + - { offset: 0xF88FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsTableF0So07UITableF0CSgvgTo', symObjAddr: 0x2EC, symBinAddr: 0x64B2C, symSize: 0x10 } + - { offset: 0xF893F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsTableF0So07UITableF0CSgvsTo', symObjAddr: 0x2FC, symBinAddr: 0x64B3C, symSize: 0x34 } + - { offset: 0xF898E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010outerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x330, symBinAddr: 0x64B70, symSize: 0x10 } + - { offset: 0xF89A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010outerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x330, symBinAddr: 0x64B70, symSize: 0x10 } + - { offset: 0xF89E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010outerStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x340, symBinAddr: 0x64B80, symSize: 0x34 } + - { offset: 0xF8A35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010innerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x374, symBinAddr: 0x64BB4, symSize: 0x10 } + - { offset: 0xF8A4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010innerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x374, symBinAddr: 0x64BB4, symSize: 0x10 } + - { offset: 0xF8A88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010innerStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x384, symBinAddr: 0x64BC4, symSize: 0x34 } + - { offset: 0xF8AD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsStackF0So6UIViewCSgvgTo', symObjAddr: 0x3B8, symBinAddr: 0x64BF8, symSize: 0x10 } + - { offset: 0xF8AEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsStackF0So6UIViewCSgvgTo', symObjAddr: 0x3B8, symBinAddr: 0x64BF8, symSize: 0x10 } + - { offset: 0xF8B2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsStackF0So6UIViewCSgvsTo', symObjAddr: 0x3C8, symBinAddr: 0x64C08, symSize: 0x34 } + - { offset: 0xF8B79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC011routesTableF0So07UITableF0CSgvgTo', symObjAddr: 0x3FC, symBinAddr: 0x64C3C, symSize: 0x10 } + - { offset: 0xF8B91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC011routesTableF0So07UITableF0CSgvgTo', symObjAddr: 0x3FC, symBinAddr: 0x64C3C, symSize: 0x10 } + - { offset: 0xF8BCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC011routesTableF0So07UITableF0CSgvsTo', symObjAddr: 0x40C, symBinAddr: 0x64C4C, symSize: 0x34 } + - { offset: 0xF8C5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC11viewDidLoadyyF', symObjAddr: 0x440, symBinAddr: 0x64C80, symSize: 0x1EC } + - { offset: 0xF8D9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x684, symBinAddr: 0x64EC4, symSize: 0x28 } + - { offset: 0xF8DD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14setTravelModesyyF', symObjAddr: 0x6AC, symBinAddr: 0x64EEC, symSize: 0x104 } + - { offset: 0xF8EB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14setTravelModesyyFyAA0I4ModeOXEfU_', symObjAddr: 0x7B0, symBinAddr: 0x64FF0, symSize: 0x37C } + - { offset: 0xF9178, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14setTravelModesyyFyAA0I4ModeOXEfU_yycfU_', symObjAddr: 0xB2C, symBinAddr: 0x6536C, symSize: 0x5C } + - { offset: 0xF9AFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC16selectTravelModeyyAA0iJ0OF', symObjAddr: 0xB88, symBinAddr: 0x653C8, symSize: 0x49C } + - { offset: 0xFA025, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC16updateTravelModeyyF', symObjAddr: 0x1024, symBinAddr: 0x65864, symSize: 0x244 } + - { offset: 0xFA151, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC20updateLayoutIfNeededyyF', symObjAddr: 0x1268, symBinAddr: 0x65AA8, symSize: 0x260 } + - { offset: 0xFA33C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC019configureStopsTableF0yyF', symObjAddr: 0x14C8, symBinAddr: 0x65D08, symSize: 0x1F4 } + - { offset: 0xFA40A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC8drawDotsyyF', symObjAddr: 0x16BC, symBinAddr: 0x65EFC, symSize: 0x8AC } + - { offset: 0xFAC94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14routePathReadyyyF', symObjAddr: 0x1F68, symBinAddr: 0x667A8, symSize: 0x324 } + - { offset: 0xFAE65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC15startNavigation33_4796038DC95783C2E375AC3B61AF64B9LL2toyAA5PlaceCSg_tF', symObjAddr: 0x228C, symBinAddr: 0x66ACC, symSize: 0x91C } + - { offset: 0xFB7F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17previewDirections33_4796038DC95783C2E375AC3B61AF64B9LL2toyAA5PlaceCSg_tF', symObjAddr: 0x2BA8, symBinAddr: 0x673E8, symSize: 0x924 } + - { offset: 0xFC1CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC16TripStartDidFailyyF', symObjAddr: 0x3554, symBinAddr: 0x67D94, symSize: 0x3E0 } + - { offset: 0xFC5E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC22updateSelectedEntrance33_4796038DC95783C2E375AC3B61AF64B9LL10completionyyycSg_tF', symObjAddr: 0x3934, symBinAddr: 0x68174, symSize: 0x124 } + - { offset: 0xFC718, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC24scrollToSelectedEntrance33_4796038DC95783C2E375AC3B61AF64B9LLyyF', symObjAddr: 0x3A58, symBinAddr: 0x68298, symSize: 0x554 } + - { offset: 0xFCCED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14isStopSortable2atSbSi_tF', symObjAddr: 0x4168, symBinAddr: 0x689A8, symSize: 0x1F8 } + - { offset: 0xFCF46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC06updateD7OptionsyyF', symObjAddr: 0x4360, symBinAddr: 0x68BA0, symSize: 0x584 } + - { offset: 0xFD22B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC18sortableStopsCountSivg', symObjAddr: 0x48E4, symBinAddr: 0x69124, symSize: 0x1D4 } + - { offset: 0xFD4D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14canReorderCell2atSbSi_tF', symObjAddr: 0x4AB8, symBinAddr: 0x692F8, symSize: 0x11C } + - { offset: 0xFD5B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC13canDeleteCell2atSbSi_tF', symObjAddr: 0x4BD4, symBinAddr: 0x69414, symSize: 0x278 } + - { offset: 0xFD802, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC18showLoadingMessageyyF', symObjAddr: 0x4E4C, symBinAddr: 0x6968C, symSize: 0x8C } + - { offset: 0xFD88C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC31showDirectionsNotAvailableError5errory7Penguin0dL0OSg_tF', symObjAddr: 0x4ED8, symBinAddr: 0x69718, symSize: 0x570 } + - { offset: 0xFDC07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05closeD14OverviewScreenyyFTo', symObjAddr: 0x5448, symBinAddr: 0x69C88, symSize: 0x70 } + - { offset: 0xFDE10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC22didTapTravelModeButtonyyF', symObjAddr: 0x54B8, symBinAddr: 0x69CF8, symSize: 0x204 } + - { offset: 0xFDF87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC06didTapD13OptionsButtonyyF', symObjAddr: 0x56BC, symBinAddr: 0x69EFC, symSize: 0x1FC } + - { offset: 0xFE14B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17updatePanelLayoutyyF', symObjAddr: 0x58B8, symBinAddr: 0x6A0F8, symSize: 0x1A0 } + - { offset: 0xFE27A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x5A58, symBinAddr: 0x6A298, symSize: 0x23C } + - { offset: 0xFE2E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x5C94, symBinAddr: 0x6A4D4, symSize: 0x60 } + - { offset: 0xFE328, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x5CF4, symBinAddr: 0x6A534, symSize: 0x210 } + - { offset: 0xFE386, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x5F04, symBinAddr: 0x6A744, symSize: 0x28 } + - { offset: 0xFE39A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCfD', symObjAddr: 0x6110, symBinAddr: 0x6A950, symSize: 0x30 } + - { offset: 0xFE698, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC13routeDurationSdvgTf4d_n', symObjAddr: 0xB204, symBinAddr: 0x6FA44, symSize: 0x154 } + - { offset: 0xFE82B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC7addStop_2atyAA5PlaceCSg_SiSgtFTf4ddn_n', symObjAddr: 0xB408, symBinAddr: 0x6FB98, symSize: 0x220 } + - { offset: 0xFED25, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI9PlaceTypeO_Tg5', symObjAddr: 0x0, symBinAddr: 0x70DCC, symSize: 0x228 } + - { offset: 0xFF164, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO12processImage4with10Foundation4DataVAC13ConfigurationV_tKFZ', symObjAddr: 0x1434, symBinAddr: 0x720E0, symSize: 0x794 } + - { offset: 0xFF479, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO11makeTextAPI3forAA14CGTextRendererC0H0OAcHOSg_tFZ', symObjAddr: 0x1BC8, symBinAddr: 0x72874, symSize: 0x1C } + - { offset: 0xFF4C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO14makeSVGOptions3forAA3SVGC7OptionsVAC13ConfigurationV_tFZ', symObjAddr: 0x1BE4, symBinAddr: 0x72890, symSize: 0xF4 } + - { offset: 0xFF5F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ErrorOAEsAdAWl', symObjAddr: 0x1CD8, symBinAddr: 0x72984, symSize: 0x40 } + - { offset: 0xFF607, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO12processImage_4with10Foundation4DataVAA3SVGC_AC13ConfigurationVtKFZ', symObjAddr: 0x1D18, symBinAddr: 0x729C4, symSize: 0x14 } + - { offset: 0xFF663, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO15makeImageInsets3forAA3SVGC0H0VAcHV_tKFZ', symObjAddr: 0x1D2C, symBinAddr: 0x729D8, symSize: 0xE4 } + - { offset: 0xFF8E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO12processImage_4with10Foundation4DataVAA3SVGC_AC13ConfigurationVtKFZTf4nnd_n', symObjAddr: 0x1E50, symBinAddr: 0x72ABC, symSize: 0x418 } + - { offset: 0xFFB86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVWOh', symObjAddr: 0x2268, symBinAddr: 0x72ED4, symSize: 0x34 } + - { offset: 0xFFB9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_64660464CF3F4A91161BC661976AF1A2LLVAFsAdAWl', symObjAddr: 0x22DC, symBinAddr: 0x72F08, symSize: 0x40 } + - { offset: 0xFFBE6, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI9PlaceTypeO_Tg5', symObjAddr: 0x0, symBinAddr: 0x70DCC, symSize: 0x228 } + - { offset: 0xFFCAB, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI9AmenitiesV10CodingKeysO_Tg5', symObjAddr: 0x228, symBinAddr: 0x70FF4, symSize: 0x180 } + - { offset: 0xFFD6C, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI8FavoriteC10CodingKeysO_Tg5', symObjAddr: 0x3A8, symBinAddr: 0x71174, symSize: 0x264 } + - { offset: 0xFFE07, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI22SharedFavoriteLocationC10CodingKeysO_Tg5', symObjAddr: 0x60C, symBinAddr: 0x713D8, symSize: 0x248 } + - { offset: 0xFFEA2, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysO_Tg5', symObjAddr: 0x854, symBinAddr: 0x71620, symSize: 0x158 } + - { offset: 0xFFF63, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI21GetCampusInfoResponseC10CodingKeysO_Tg5', symObjAddr: 0x9AC, symBinAddr: 0x71778, symSize: 0x190 } + - { offset: 0xFFFFE, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI12MapDimensionO_Tg5', symObjAddr: 0xC5C, symBinAddr: 0x71908, symSize: 0x120 } + - { offset: 0x1000C5, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI11RouteOptionV0gH3KeyO_Tg5', symObjAddr: 0xD7C, symBinAddr: 0x71A28, symSize: 0x230 } + - { offset: 0x100160, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI11CommandLineO6FormatO_TB5', symObjAddr: 0xFAC, symBinAddr: 0x71C58, symSize: 0x158 } + - { offset: 0x1001F1, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI10TravelModeO_Tg5', symObjAddr: 0x1104, symBinAddr: 0x71DB0, symSize: 0x1A0 } + - { offset: 0x1002B2, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI10SourceViewO_Tg5', symObjAddr: 0x12A4, symBinAddr: 0x71F50, symSize: 0x190 } + - { offset: 0x100ACA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC11toastHeight_WZ', symObjAddr: 0x0, symBinAddr: 0x72F48, symSize: 0x30 } + - { offset: 0x100AEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC11toastHeight12CoreGraphics7CGFloatVvpZ', symObjAddr: 0xABC8, symBinAddr: 0x396F48, symSize: 0x0 } + - { offset: 0x100B0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC11toastHeight_WZ', symObjAddr: 0x0, symBinAddr: 0x72F48, symSize: 0x30 } + - { offset: 0x100FAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewCfETo', symObjAddr: 0xBE0, symBinAddr: 0x73B28, symSize: 0x9C } + - { offset: 0x100FDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewCMa', symObjAddr: 0xC7C, symBinAddr: 0x73BC4, symSize: 0x20 } + - { offset: 0x100FF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC10setMessage4typeyAA0D4TypeO_tFyycfU_TA', symObjAddr: 0xCC0, symBinAddr: 0x73C08, symSize: 0x8 } + - { offset: 0x10124D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC12messageLabelSo7UILabelCSgvgTo', symObjAddr: 0x30, symBinAddr: 0x72F78, symSize: 0x20 } + - { offset: 0x1012AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC12messageLabelSo7UILabelCSgvsTo', symObjAddr: 0x50, symBinAddr: 0x72F98, symSize: 0x14 } + - { offset: 0x1012FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC06hapticE0AA06HapticE0CSgvgTo', symObjAddr: 0x64, symBinAddr: 0x72FAC, symSize: 0x20 } + - { offset: 0x101358, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC06hapticE0AA06HapticE0CSgvsTo', symObjAddr: 0x84, symBinAddr: 0x72FCC, symSize: 0x14 } + - { offset: 0x1013A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC010blurEffectE0AA04BlurgE0CSgvgTo', symObjAddr: 0x98, symBinAddr: 0x72FE0, symSize: 0x20 } + - { offset: 0x101403, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC010blurEffectE0AA04BlurgE0CSgvsTo', symObjAddr: 0xB8, symBinAddr: 0x73000, symSize: 0x14 } + - { offset: 0x101454, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC05imageE0So07UIImageE0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x73014, symSize: 0x20 } + - { offset: 0x1014AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC05imageE0So07UIImageE0CSgvsTo', symObjAddr: 0xEC, symBinAddr: 0x73034, symSize: 0x14 } + - { offset: 0x1014FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC05stackE0So07UIStackE0CSgvgTo', symObjAddr: 0x100, symBinAddr: 0x73048, symSize: 0x20 } + - { offset: 0x101559, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC05stackE0So07UIStackE0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x73068, symSize: 0x14 } + - { offset: 0x1015AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC26activityIndicatorContainerSo6UIViewCSgvgTo', symObjAddr: 0x134, symBinAddr: 0x7307C, symSize: 0x20 } + - { offset: 0x101604, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC26activityIndicatorContainerSo6UIViewCSgvsTo', symObjAddr: 0x154, symBinAddr: 0x7309C, symSize: 0x14 } + - { offset: 0x10164F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC13iconImageName33_7711327B376EF5477089E69F768F33CBLLSSvg', symObjAddr: 0x168, symBinAddr: 0x730B0, symSize: 0xF4 } + - { offset: 0x1016E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC12bouncingDotsAA08BouncingG17ActivityIndicatorCvg', symObjAddr: 0x25C, symBinAddr: 0x731A4, symSize: 0xD8 } + - { offset: 0x1017AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x334, symBinAddr: 0x7327C, symSize: 0x130 } + - { offset: 0x1017E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x464, symBinAddr: 0x733AC, symSize: 0x20 } + - { offset: 0x101831, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x484, symBinAddr: 0x733CC, symSize: 0x11C } + - { offset: 0x101866, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x5A0, symBinAddr: 0x734E8, symSize: 0x28 } + - { offset: 0x1018B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC10commonInit33_7711327B376EF5477089E69F768F33CBLLyyF', symObjAddr: 0x5C8, symBinAddr: 0x73510, symSize: 0x244 } + - { offset: 0x101AF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC10setMessage4typeyAA0D4TypeO_tF', symObjAddr: 0x80C, symBinAddr: 0x73754, symSize: 0x2E4 } + - { offset: 0x101CDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC10setMessage4typeyAA0D4TypeO_tFyycfU_', symObjAddr: 0xAF0, symBinAddr: 0x73A38, symSize: 0xC0 } + - { offset: 0x101DF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewCfD', symObjAddr: 0xBB0, symBinAddr: 0x73AF8, symSize: 0x30 } + - { offset: 0x1021AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x73C10, symSize: 0x10 } + - { offset: 0x102341, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellCfETo', symObjAddr: 0x240, symBinAddr: 0x73E50, symSize: 0x38 } + - { offset: 0x102370, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellCMa', symObjAddr: 0x278, symBinAddr: 0x73E88, symSize: 0x20 } + - { offset: 0x102442, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x73C10, symSize: 0x10 } + - { offset: 0x10245A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x73C10, symSize: 0x10 } + - { offset: 0x1024A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x73C20, symSize: 0x34 } + - { offset: 0x1024EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x73C54, symSize: 0x10 } + - { offset: 0x102507, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x73C54, symSize: 0x10 } + - { offset: 0x102547, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x73C64, symSize: 0x34 } + - { offset: 0x102596, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC12awakeFromNibyyFTo', symObjAddr: 0x88, symBinAddr: 0x73C98, symSize: 0x3C } + - { offset: 0x1025EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0xC4, symBinAddr: 0x73CD4, symSize: 0xB8 } + - { offset: 0x10266A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x17C, symBinAddr: 0x73D8C, symSize: 0x94 } + - { offset: 0x1026A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellCfD', symObjAddr: 0x210, symBinAddr: 0x73E20, symSize: 0x30 } + - { offset: 0x102A27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC7doneBtnSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x73EA8, symSize: 0x20 } + - { offset: 0x102DB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageCfETo', symObjAddr: 0xF90, symBinAddr: 0x74E38, symSize: 0x7C } + - { offset: 0x102DE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageCMa', symObjAddr: 0x100C, symBinAddr: 0x74EB4, symSize: 0x20 } + - { offset: 0x102F43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC7doneBtnSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x73EA8, symSize: 0x20 } + - { offset: 0x102FA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC7doneBtnSo8UIButtonCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x73EC8, symSize: 0x14 } + - { offset: 0x102FF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC15viewVidioPlayerSo6UIViewCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x73EDC, symSize: 0x20 } + - { offset: 0x10304E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC15viewVidioPlayerSo6UIViewCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x73EFC, symSize: 0x14 } + - { offset: 0x10309F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC4viewSo6UIViewCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x73F10, symSize: 0x10 } + - { offset: 0x1030B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC4viewSo6UIViewCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x73F10, symSize: 0x10 } + - { offset: 0x1030F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC4viewSo6UIViewCSgvsTo', symObjAddr: 0x78, symBinAddr: 0x73F20, symSize: 0x34 } + - { offset: 0x10312D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC5frameACSo6CGRectV_tcfc', symObjAddr: 0xAC, symBinAddr: 0x73F54, symSize: 0xF0 } + - { offset: 0x103162, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x19C, symBinAddr: 0x74044, symSize: 0x20 } + - { offset: 0x1031C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1BC, symBinAddr: 0x74064, symSize: 0xE0 } + - { offset: 0x1031FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x29C, symBinAddr: 0x74144, symSize: 0x28 } + - { offset: 0x103351, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC10commonInityyF', symObjAddr: 0x2C4, symBinAddr: 0x7416C, symSize: 0xA68 } + - { offset: 0x1036D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC10hideActionyyypFTo', symObjAddr: 0xD2C, symBinAddr: 0x74BD4, symSize: 0x98 } + - { offset: 0x103734, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC11videoDidEndyyFTo', symObjAddr: 0xDC4, symBinAddr: 0x74C6C, symSize: 0xA8 } + - { offset: 0x1037A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC14layoutSubviewsyyF', symObjAddr: 0xE6C, symBinAddr: 0x74D14, symSize: 0xCC } + - { offset: 0x10381D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC14layoutSubviewsyyFTo', symObjAddr: 0xF38, symBinAddr: 0x74DE0, symSize: 0x28 } + - { offset: 0x103831, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageCfD', symObjAddr: 0xF60, symBinAddr: 0x74E08, symSize: 0x30 } + - { offset: 0x103BC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x74ED4, symSize: 0x10 } + - { offset: 0x103F89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellCfETo', symObjAddr: 0xA6C, symBinAddr: 0x75940, symSize: 0x58 } + - { offset: 0x103FB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellCMa', symObjAddr: 0xAC4, symBinAddr: 0x75998, symSize: 0x20 } + - { offset: 0x10419C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x74ED4, symSize: 0x10 } + - { offset: 0x1041B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x74ED4, symSize: 0x10 } + - { offset: 0x1041FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x74EE4, symSize: 0x34 } + - { offset: 0x104249, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x74F18, symSize: 0x10 } + - { offset: 0x104261, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x74F18, symSize: 0x10 } + - { offset: 0x10429C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x74F28, symSize: 0x34 } + - { offset: 0x1042EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC18selectionImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x74F5C, symSize: 0x10 } + - { offset: 0x104303, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC18selectionImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x74F5C, symSize: 0x10 } + - { offset: 0x104343, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC18selectionImageViewSo07UIImageH0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x74F6C, symSize: 0x34 } + - { offset: 0x104392, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC13gateImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x74FA0, symSize: 0x20 } + - { offset: 0x1043E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC13gateImageViewSo07UIImageH0CSgvsTo', symObjAddr: 0xEC, symBinAddr: 0x74FC0, symSize: 0x14 } + - { offset: 0x104438, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC12awakeFromNibyyFTo', symObjAddr: 0x100, symBinAddr: 0x74FD4, symSize: 0x3C } + - { offset: 0x1045B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC9configure4with10isSelectedyAA5PlaceCSg_SbtF', symObjAddr: 0x13C, symBinAddr: 0x75010, symSize: 0x72C } + - { offset: 0x104B2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x868, symBinAddr: 0x7573C, symSize: 0xC0 } + - { offset: 0x104B6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x928, symBinAddr: 0x757FC, symSize: 0x48 } + - { offset: 0x104BA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x970, symBinAddr: 0x75844, symSize: 0xA4 } + - { offset: 0x104BD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xA14, symBinAddr: 0x758E8, symSize: 0x28 } + - { offset: 0x104BEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellCfD', symObjAddr: 0xA3C, symBinAddr: 0x75910, symSize: 0x30 } + - { offset: 0x104F90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVMi', symObjAddr: 0x0, symBinAddr: 0x759B8, symSize: 0x8 } + - { offset: 0x104FA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVMi', symObjAddr: 0x0, symBinAddr: 0x759B8, symSize: 0x8 } + - { offset: 0x104FBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVMr', symObjAddr: 0x8, symBinAddr: 0x759C0, symSize: 0x78 } + - { offset: 0x104FD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwCP', symObjAddr: 0x80, symBinAddr: 0x75A38, symSize: 0xB0 } + - { offset: 0x104FE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwxx', symObjAddr: 0x130, symBinAddr: 0x75AE8, symSize: 0x40 } + - { offset: 0x104FF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwcp', symObjAddr: 0x170, symBinAddr: 0x75B28, symSize: 0x60 } + - { offset: 0x10500C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwca', symObjAddr: 0x1D0, symBinAddr: 0x75B88, symSize: 0x6C } + - { offset: 0x105020, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwtk', symObjAddr: 0x23C, symBinAddr: 0x75BF4, symSize: 0x5C } + - { offset: 0x105034, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwta', symObjAddr: 0x298, symBinAddr: 0x75C50, symSize: 0x64 } + - { offset: 0x105048, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwet', symObjAddr: 0x2FC, symBinAddr: 0x75CB4, symSize: 0xF8 } + - { offset: 0x10505C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwst', symObjAddr: 0x3F4, symBinAddr: 0x75DAC, symSize: 0x15C } + - { offset: 0x105070, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVMa', symObjAddr: 0x550, symBinAddr: 0x75F08, symSize: 0xC } + - { offset: 0x105406, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI8FavoriteCG_Tg503$s8fg4UI18I51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x75F14, symSize: 0x68 } + - { offset: 0x105713, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryCMa', symObjAddr: 0x13A4, symBinAddr: 0x772B8, symSize: 0x20 } + - { offset: 0x105727, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC12getFavoritesSayAA0D0CGyFyyYbXEfU_TA', symObjAddr: 0x13F0, symBinAddr: 0x77304, symSize: 0xC } + - { offset: 0x10573B, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1404, symBinAddr: 0x77310, symSize: 0x10 } + - { offset: 0x10574F, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1414, symBinAddr: 0x77320, symSize: 0x8 } + - { offset: 0x105833, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF8PenNavUI8FavoriteC_Tg503$s8ef4UI18H51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1cn_n', symObjAddr: 0x141C, symBinAddr: 0x77328, symSize: 0x428 } + - { offset: 0x105B81, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI8FavoriteC_Tg503$s8ef4UI18H51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1nnncn_n', symObjAddr: 0x1844, symBinAddr: 0x77750, symSize: 0x9A0 } + - { offset: 0x1060F1, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI8FavoriteC_Tg503$s8fg4UI18I51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1nncn_n', symObjAddr: 0x21E4, symBinAddr: 0x780F0, symSize: 0x26C } + - { offset: 0x10648C, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI8FavoriteC_Tg503$s8gh4UI18J51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1nnnnc_n', symObjAddr: 0x2450, symBinAddr: 0x7835C, symSize: 0x394 } + - { offset: 0x1065F4, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVSgWOh', symObjAddr: 0x2828, symBinAddr: 0x786F0, symSize: 0x40 } + - { offset: 0x106608, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC05clearD5TableyyFyyYbXEfU_TA', symObjAddr: 0x2894, symBinAddr: 0x7875C, symSize: 0x8 } + - { offset: 0x10661C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC15insertFavorites9favoritesySayAA0D0CG_tFyyYbXEfU_TA', symObjAddr: 0x28C8, symBinAddr: 0x78790, symSize: 0x8 } + - { offset: 0x10664A, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI8FavoriteCG_Tg503$s8fg4UI18I51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x75F14, symSize: 0x68 } + - { offset: 0x10694D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC15insertFavorites9favoritesySayAA0D0CG_tF', symObjAddr: 0x68, symBinAddr: 0x75F7C, symSize: 0x188 } + - { offset: 0x1069DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC15insertFavorites9favoritesySayAA0D0CG_tFyyYbXEfU_', symObjAddr: 0x1F0, symBinAddr: 0x76104, symSize: 0x378 } + - { offset: 0x106BA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC06removeD08favoriteyAA0D0C_tF', symObjAddr: 0x568, symBinAddr: 0x7647C, symSize: 0x354 } + - { offset: 0x106DE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC05clearD5TableyyF', symObjAddr: 0x8BC, symBinAddr: 0x767D0, symSize: 0x1E0 } + - { offset: 0x106EBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC05clearD5TableyyFyyYbXEfU_', symObjAddr: 0xA9C, symBinAddr: 0x769B0, symSize: 0x1E4 } + - { offset: 0x107050, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC12getFavoritesSayAA0D0CGyF', symObjAddr: 0xC80, symBinAddr: 0x76B94, symSize: 0x26C } + - { offset: 0x10714E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC12getFavoritesSayAA0D0CGyFyyYbXEfU_', symObjAddr: 0xEEC, symBinAddr: 0x76E00, symSize: 0x1F0 } + - { offset: 0x10744A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_', symObjAddr: 0x10DC, symBinAddr: 0x76FF0, symSize: 0x2A4 } + - { offset: 0x107539, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryCfD', symObjAddr: 0x1380, symBinAddr: 0x77294, symSize: 0x24 } + - { offset: 0x107F47, size: 0x8, addend: 0x0, symName: '_$sIg_Ieg_TR', symObjAddr: 0x0, symBinAddr: 0x787C4, symSize: 0x20 } + - { offset: 0x107F5B, size: 0x8, addend: 0x0, symName: '_$sIeg_IyB_TR', symObjAddr: 0x20, symBinAddr: 0x787E4, symSize: 0x20 } + - { offset: 0x108E24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCfE', symObjAddr: 0x3CA4, symBinAddr: 0x7C468, symSize: 0x138 } + - { offset: 0x108E51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCfETo', symObjAddr: 0x3E0C, symBinAddr: 0x7C5D0, symSize: 0x144 } + - { offset: 0x108E80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCMa', symObjAddr: 0x3F50, symBinAddr: 0x7C714, symSize: 0x20 } + - { offset: 0x108E94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC09searchBarE13ButtonClickedyyAA0eI0CF', symObjAddr: 0x3F70, symBinAddr: 0x7C734, symSize: 0x100 } + - { offset: 0x108FD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC015clearResultsAndE033_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x4070, symBinAddr: 0x7C834, symSize: 0x294 } + - { offset: 0x1091E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC015clearResultsAndE033_D7A566C795799BF1F9604DDE695EDC30LLyyFTo', symObjAddr: 0x4304, symBinAddr: 0x7CAC8, symSize: 0x28 } + - { offset: 0x10922C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH19TextDidBeginEditingyyAA0eH0CFTW', symObjAddr: 0x432C, symBinAddr: 0x7CAF0, symSize: 0x10 } + - { offset: 0x10924C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH19TextDidBeginEditingyyAA0eH0CFTW', symObjAddr: 0x432C, symBinAddr: 0x7CAF0, symSize: 0x10 } + - { offset: 0x109272, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH19TextDidBeginEditingyyAA0eH0CFTW', symObjAddr: 0x432C, symBinAddr: 0x7CAF0, symSize: 0x10 } + - { offset: 0x1092A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH0_13textDidChangeyAA0eH0C_SStFTW', symObjAddr: 0x433C, symBinAddr: 0x7CB00, symSize: 0xC } + - { offset: 0x1092D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchhE13ButtonClickedyyAA0eH0CFTW', symObjAddr: 0x4348, symBinAddr: 0x7CB0C, symSize: 0x4 } + - { offset: 0x109303, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH18ClearButtonClickedyyAA0eH0CFTW', symObjAddr: 0x434C, symBinAddr: 0x7CB10, symSize: 0x4 } + - { offset: 0x109323, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH18ClearButtonClickedyyAA0eH0CFTW', symObjAddr: 0x434C, symBinAddr: 0x7CB10, symSize: 0x4 } + - { offset: 0x109363, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH19CancelButtonClickedyyAA0eH0CFTW', symObjAddr: 0x4350, symBinAddr: 0x7CB14, symSize: 0x14 } + - { offset: 0x109383, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH19CancelButtonClickedyyAA0eH0CFTW', symObjAddr: 0x4350, symBinAddr: 0x7CB14, symSize: 0x14 } + - { offset: 0x1093C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x4364, symBinAddr: 0x7CB28, symSize: 0x2C } + - { offset: 0x109456, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x4390, symBinAddr: 0x7CB54, symSize: 0x60 } + - { offset: 0x109544, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x43F0, symBinAddr: 0x7CBB4, symSize: 0x524 } + - { offset: 0x109BB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x4914, symBinAddr: 0x7D0D8, symSize: 0xC8 } + - { offset: 0x109BFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_22viewForHeaderInSectionSo6UIViewCSgSo07UITableF0C_SitFTo', symObjAddr: 0x4EB0, symBinAddr: 0x7D674, symSize: 0x60 } + - { offset: 0x109C41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_24heightForHeaderInSection12CoreGraphics7CGFloatVSo07UITableF0C_SitFTo', symObjAddr: 0x4F10, symBinAddr: 0x7D6D4, symSize: 0x68 } + - { offset: 0x109C74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_24heightForFooterInSection12CoreGraphics7CGFloatVSo07UITableF0C_SitFTo', symObjAddr: 0x4F78, symBinAddr: 0x7D73C, symSize: 0x8 } + - { offset: 0x109C9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x4F80, symBinAddr: 0x7D744, symSize: 0xDC } + - { offset: 0x109CFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x505C, symBinAddr: 0x7D820, symSize: 0x450 } + - { offset: 0x10A401, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x54AC, symBinAddr: 0x7DC70, symSize: 0xC0 } + - { offset: 0x10A479, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x556C, symBinAddr: 0x7DD30, symSize: 0x78 } + - { offset: 0x10A4F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x55E4, symBinAddr: 0x7DDA8, symSize: 0x24 } + - { offset: 0x10A568, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10setupPanelyyF', symObjAddr: 0x5608, symBinAddr: 0x7DDCC, symSize: 0x15C } + - { offset: 0x10A65F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10setupPanelyyFTo', symObjAddr: 0x5764, symBinAddr: 0x7DF28, symSize: 0x28 } + - { offset: 0x10A67B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x584C, symBinAddr: 0x7DF50, symSize: 0x13C } + - { offset: 0x10A75A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x5A04, symBinAddr: 0x7E08C, symSize: 0x8 } + - { offset: 0x10A7C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC9searchBar_13textDidChangeyAA0eI0C_SStFTf4dnn_n', symObjAddr: 0x6410, symBinAddr: 0x7EA98, symSize: 0x1B8 } + - { offset: 0x10A8F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC27searchBarClearButtonClickedyyAA0eI0CFTf4dn_n', symObjAddr: 0x65C8, symBinAddr: 0x7EC50, symSize: 0x158 } + - { offset: 0x10AAC7, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x678C, symBinAddr: 0x7EDCC, symSize: 0x10 } + - { offset: 0x10AADB, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x679C, symBinAddr: 0x7EDDC, symSize: 0x8 } + - { offset: 0x10AAEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x67C4, symBinAddr: 0x7EDE4, symSize: 0xD8 } + - { offset: 0x10AC1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_22viewForHeaderInSectionSo6UIViewCSgSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x689C, symBinAddr: 0x7EEBC, symSize: 0x100 } + - { offset: 0x10ADA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_24heightForHeaderInSection12CoreGraphics7CGFloatVSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x699C, symBinAddr: 0x7EFBC, symSize: 0xD4 } + - { offset: 0x10AE94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTf4ddnn_n', symObjAddr: 0x6A70, symBinAddr: 0x7F090, symSize: 0x260 } + - { offset: 0x10B093, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC20showNoResultsMessage33_D7A566C795799BF1F9604DDE695EDC30LLyyFyyScMYccfU_TA', symObjAddr: 0x6D64, symBinAddr: 0x7F31C, symSize: 0x8 } + - { offset: 0x10B0A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC6search33_D7A566C795799BF1F9604DDE695EDC30LL6manualySb_tFySayAA7POIDataCGSgcfU_TA', symObjAddr: 0x6E34, symBinAddr: 0x7F348, symSize: 0xC } + - { offset: 0x10B0BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_TA', symObjAddr: 0x6E44, symBinAddr: 0x7F358, symSize: 0x8 } + - { offset: 0x10B0CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_yyXEfU_TA', symObjAddr: 0x6E80, symBinAddr: 0x7F38C, symSize: 0x8 } + - { offset: 0x10B0EE, size: 0x8, addend: 0x0, symName: '_$sSS_yptWOh', symObjAddr: 0x6EB8, symBinAddr: 0x7F3A4, symSize: 0x40 } + - { offset: 0x10B102, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC09configureE3Bar33_D7A566C795799BF1F9604DDE695EDC30LLyyFyyScMYccfU_TA', symObjAddr: 0x6F38, symBinAddr: 0x7F3E4, symSize: 0x8 } + - { offset: 0x10B116, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyFySayAA0I0CGcfU_TA', symObjAddr: 0x6F40, symBinAddr: 0x7F3EC, symSize: 0x8 } + - { offset: 0x10B12A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyFySayAA0I0CGcfU_yyScMYccfU0_TA', symObjAddr: 0x6F48, symBinAddr: 0x7F3F4, symSize: 0x8 } + - { offset: 0x10B13E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchSectionOMa', symObjAddr: 0x70B4, symBinAddr: 0x7F3FC, symSize: 0x10 } + - { offset: 0x10B152, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchSectionOSHAASQWb', symObjAddr: 0x70C4, symBinAddr: 0x7F40C, symSize: 0x4 } + - { offset: 0x10B166, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchSectionOACSQAAWl', symObjAddr: 0x70C8, symBinAddr: 0x7F410, symSize: 0x40 } + - { offset: 0x10B3E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10titleLabel33_D7A566C795799BF1F9604DDE695EDC30LLSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x78804, symSize: 0x10 } + - { offset: 0x10B3F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10titleLabel33_D7A566C795799BF1F9604DDE695EDC30LLSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x78804, symSize: 0x10 } + - { offset: 0x10B43E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10titleLabel33_D7A566C795799BF1F9604DDE695EDC30LLSo7UILabelCSgvsTo', symObjAddr: 0x50, symBinAddr: 0x78814, symSize: 0x34 } + - { offset: 0x10B48D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC9searchBar33_D7A566C795799BF1F9604DDE695EDC30LLAA0eI0CSgvgTo', symObjAddr: 0x84, symBinAddr: 0x78848, symSize: 0x10 } + - { offset: 0x10B4A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC9searchBar33_D7A566C795799BF1F9604DDE695EDC30LLAA0eI0CSgvgTo', symObjAddr: 0x84, symBinAddr: 0x78848, symSize: 0x10 } + - { offset: 0x10B4E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC9searchBar33_D7A566C795799BF1F9604DDE695EDC30LLAA0eI0CSgvsTo', symObjAddr: 0x94, symBinAddr: 0x78858, symSize: 0x34 } + - { offset: 0x10B534, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF033_D7A566C795799BF1F9604DDE695EDC30LLSo07UITableF0CSgvgTo', symObjAddr: 0xC8, symBinAddr: 0x7888C, symSize: 0x10 } + - { offset: 0x10B54C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF033_D7A566C795799BF1F9604DDE695EDC30LLSo07UITableF0CSgvgTo', symObjAddr: 0xC8, symBinAddr: 0x7888C, symSize: 0x10 } + - { offset: 0x10B58C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF033_D7A566C795799BF1F9604DDE695EDC30LLSo07UITableF0CSgvsTo', symObjAddr: 0xD8, symBinAddr: 0x7889C, symSize: 0x34 } + - { offset: 0x10B5DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF16BottomConstraint33_D7A566C795799BF1F9604DDE695EDC30LLSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x10C, symBinAddr: 0x788D0, symSize: 0x10 } + - { offset: 0x10B5F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF16BottomConstraint33_D7A566C795799BF1F9604DDE695EDC30LLSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x10C, symBinAddr: 0x788D0, symSize: 0x10 } + - { offset: 0x10B633, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF16BottomConstraint33_D7A566C795799BF1F9604DDE695EDC30LLSo08NSLayoutJ0CSgvsTo', symObjAddr: 0x11C, symBinAddr: 0x788E0, symSize: 0x34 } + - { offset: 0x10B69C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC8sectionsSayAA0E7SectionOGvg', symObjAddr: 0x150, symBinAddr: 0x78914, symSize: 0xB8 } + - { offset: 0x10B791, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC11viewDidLoadyyF', symObjAddr: 0x208, symBinAddr: 0x789CC, symSize: 0xDC } + - { offset: 0x10B802, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x2E4, symBinAddr: 0x78AA8, symSize: 0x28 } + - { offset: 0x10B856, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0x30C, symBinAddr: 0x78AD0, symSize: 0x68 } + - { offset: 0x10BAFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setRelevantPlacesyyF', symObjAddr: 0x374, symBinAddr: 0x78B38, symSize: 0x394 } + - { offset: 0x10BFC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyF', symObjAddr: 0x708, symBinAddr: 0x78ECC, symSize: 0x17C } + - { offset: 0x10C126, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyFySayAA0I0CGcfU_', symObjAddr: 0x884, symBinAddr: 0x79048, symSize: 0x3A4 } + - { offset: 0x10C3B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyFySayAA0I0CGcfU_yyScMYccfU0_', symObjAddr: 0xC28, symBinAddr: 0x793EC, symSize: 0x80 } + - { offset: 0x10C52A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC09configureE3Bar33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0xCA8, symBinAddr: 0x7946C, symSize: 0x2EC } + - { offset: 0x10C6E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC09configureE3Bar33_D7A566C795799BF1F9604DDE695EDC30LLyyFyyScMYccfU_', symObjAddr: 0xF94, symBinAddr: 0x79758, symSize: 0x1D8 } + - { offset: 0x10C7F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC014configureTableF033_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x116C, symBinAddr: 0x79930, symSize: 0x110 } + - { offset: 0x10C9BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC15configureLoader33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x127C, symBinAddr: 0x79A40, symSize: 0x2C4 } + - { offset: 0x10CC0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC25configureNoResultsMessage33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x1540, symBinAddr: 0x79D04, symSize: 0x510 } + - { offset: 0x10D04B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC6search33_D7A566C795799BF1F9604DDE695EDC30LL6manualySb_tF', symObjAddr: 0x1A50, symBinAddr: 0x7A214, symSize: 0x3B8 } + - { offset: 0x10D45D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC6search33_D7A566C795799BF1F9604DDE695EDC30LL6manualySb_tFySayAA7POIDataCGSgcfU_', symObjAddr: 0x1E08, symBinAddr: 0x7A5CC, symSize: 0x8C } + - { offset: 0x10D5A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_', symObjAddr: 0x1E94, symBinAddr: 0x7A658, symSize: 0x764 } + - { offset: 0x10DA6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_yyXEfU_', symObjAddr: 0x25F8, symBinAddr: 0x7ADBC, symSize: 0x110 } + - { offset: 0x10DABD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC23indexPathsForNewResults33_D7A566C795799BF1F9604DDE695EDC30LL03newL0Say10Foundation9IndexPathVGSayAA7POIDataCG_tF', symObjAddr: 0x2708, symBinAddr: 0x7AECC, symSize: 0x238 } + - { offset: 0x10DF75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10showLoader33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x2940, symBinAddr: 0x7B104, symSize: 0x2A4 } + - { offset: 0x10E147, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC20showNoResultsMessage33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x2BE4, symBinAddr: 0x7B3A8, symSize: 0x268 } + - { offset: 0x10E1CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC20showNoResultsMessage33_D7A566C795799BF1F9604DDE695EDC30LLyyFyyScMYccfU_', symObjAddr: 0x2E4C, symBinAddr: 0x7B610, symSize: 0x1F0 } + - { offset: 0x10E2D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC18handleUserLocation33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x303C, symBinAddr: 0x7B800, symSize: 0x744 } + - { offset: 0x10ED62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x3780, symBinAddr: 0x7BF44, symSize: 0x264 } + - { offset: 0x10EE7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x39E4, symBinAddr: 0x7C1A8, symSize: 0x60 } + - { offset: 0x10EE91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3A44, symBinAddr: 0x7C208, symSize: 0x238 } + - { offset: 0x10EF9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x3C7C, symBinAddr: 0x7C440, symSize: 0x28 } + - { offset: 0x10EFB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCfD', symObjAddr: 0x3DDC, symBinAddr: 0x7C5A0, symSize: 0x30 } + - { offset: 0x10F0F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchSectionO10headerViewSo6UIViewCSgvg', symObjAddr: 0x49DC, symBinAddr: 0x7D1A0, symSize: 0x4D4 } + - { offset: 0x10F38B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17showsUserLocationSbvgTf4d_n', symObjAddr: 0x5A0C, symBinAddr: 0x7E094, symSize: 0x330 } + - { offset: 0x10F5EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17handleOfflineMode33_D7A566C795799BF1F9604DDE695EDC30LLyyFTf4d_n', symObjAddr: 0x5D3C, symBinAddr: 0x7E3C4, symSize: 0xF8 } + - { offset: 0x10F6BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC15getUserLocation33_D7A566C795799BF1F9604DDE695EDC30LL7Penguin10PILocationCSgyFTf4d_n', symObjAddr: 0x5E34, symBinAddr: 0x7E4BC, symSize: 0x13C } + - { offset: 0x10F7D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC21getLocationParameters33_D7A566C795799BF1F9604DDE695EDC30LLSDySSypGyFTf4d_n', symObjAddr: 0x5F70, symBinAddr: 0x7E5F8, symSize: 0x25C } + - { offset: 0x10F9C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFTf4ndn_n', symObjAddr: 0x61CC, symBinAddr: 0x7E854, symSize: 0x244 } + - { offset: 0x10FE0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11campusLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7F47C, symSize: 0x20 } + - { offset: 0x11043C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCfE', symObjAddr: 0x3F4, symBinAddr: 0x7F870, symSize: 0xD8 } + - { offset: 0x110469, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCfETo', symObjAddr: 0x678, symBinAddr: 0x7FAF4, symSize: 0xE4 } + - { offset: 0x1106E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCMa', symObjAddr: 0x22E4, symBinAddr: 0x81760, symSize: 0x20 } + - { offset: 0x11070A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC14layoutForPanelAA08FloatingK6Layout_pyF', symObjAddr: 0x2304, symBinAddr: 0x81780, symSize: 0xD8 } + - { offset: 0x110791, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC14layoutForPanelAA08FloatingK6Layout_pyFTo', symObjAddr: 0x23DC, symBinAddr: 0x81858, symSize: 0x34 } + - { offset: 0x1107C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC16behaviorForPanelAA08FloatingK8Behavior_pyFTo', symObjAddr: 0x2410, symBinAddr: 0x8188C, symSize: 0x24 } + - { offset: 0x11082C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x2434, symBinAddr: 0x818B0, symSize: 0x250 } + - { offset: 0x110A97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x2684, symBinAddr: 0x81B00, symSize: 0x28 } + - { offset: 0x110AC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0lQ0OSgtFTW', symObjAddr: 0x26AC, symBinAddr: 0x81B28, symSize: 0xC } + - { offset: 0x110AF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTf4dnn_n', symObjAddr: 0x2B70, symBinAddr: 0x81FEC, symSize: 0x20C } + - { offset: 0x110CFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC23didTapSaveParkingButtonyyFyycACcfu_yycfu0_TA', symObjAddr: 0x2EB8, symBinAddr: 0x82240, symSize: 0x20 } + - { offset: 0x110D31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyFyycfU_TA', symObjAddr: 0x2ED8, symBinAddr: 0x82260, symSize: 0x8 } + - { offset: 0x110D45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyFyycfU0_TA', symObjAddr: 0x2EE0, symBinAddr: 0x82268, symSize: 0x8 } + - { offset: 0x110D59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17didTapShareButtonyySo8UIButtonCFyycACcfu_yycfu0_TA', symObjAddr: 0x2EE8, symBinAddr: 0x82270, symSize: 0x20 } + - { offset: 0x11104F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11campusLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7F47C, symSize: 0x20 } + - { offset: 0x1110AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11campusLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x7F49C, symSize: 0x14 } + - { offset: 0x111100, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x7F4B0, symSize: 0x20 } + - { offset: 0x111155, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x7F4D0, symSize: 0x14 } + - { offset: 0x1111A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x7F4E4, symSize: 0x20 } + - { offset: 0x1111FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x7F504, symSize: 0x14 } + - { offset: 0x11124C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17saveParkingButtonAA06HapticG0CSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x7F518, symSize: 0x10 } + - { offset: 0x111264, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17saveParkingButtonAA06HapticG0CSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x7F518, symSize: 0x10 } + - { offset: 0x1112A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17saveParkingButtonAA06HapticG0CSgvsTo', symObjAddr: 0xAC, symBinAddr: 0x7F528, symSize: 0x34 } + - { offset: 0x1112F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC07parkingfG0AA07ParkingfG0CSgvgTo', symObjAddr: 0xE0, symBinAddr: 0x7F55C, symSize: 0x10 } + - { offset: 0x11130B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC07parkingfG0AA07ParkingfG0CSgvgTo', symObjAddr: 0xE0, symBinAddr: 0x7F55C, symSize: 0x10 } + - { offset: 0x11134B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC07parkingfG0AA07ParkingfG0CSgvsTo', symObjAddr: 0xF0, symBinAddr: 0x7F56C, symSize: 0x34 } + - { offset: 0x11139A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC9nameLabelAA09IntrinsicJ0CSgvgTo', symObjAddr: 0x124, symBinAddr: 0x7F5A0, symSize: 0x20 } + - { offset: 0x1113F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC9nameLabelAA09IntrinsicJ0CSgvsTo', symObjAddr: 0x144, symBinAddr: 0x7F5C0, symSize: 0x14 } + - { offset: 0x111445, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x158, symBinAddr: 0x7F5D4, symSize: 0x10 } + - { offset: 0x11145D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x158, symBinAddr: 0x7F5D4, symSize: 0x10 } + - { offset: 0x11149D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x168, symBinAddr: 0x7F5E4, symSize: 0x34 } + - { offset: 0x1114EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC16saveParkingStackSo07UIStackG0CSgvgTo', symObjAddr: 0x19C, symBinAddr: 0x7F618, symSize: 0x20 } + - { offset: 0x111546, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC16saveParkingStackSo07UIStackG0CSgvsTo', symObjAddr: 0x1BC, symBinAddr: 0x7F638, symSize: 0x14 } + - { offset: 0x1115FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x1D0, symBinAddr: 0x7F64C, symSize: 0x1FC } + - { offset: 0x1116DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x3CC, symBinAddr: 0x7F848, symSize: 0x28 } + - { offset: 0x1116EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCfD', symObjAddr: 0x4CC, symBinAddr: 0x7F948, symSize: 0xCC } + - { offset: 0x11172F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCfDTo', symObjAddr: 0x598, symBinAddr: 0x7FA14, symSize: 0xE0 } + - { offset: 0x111784, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC24updateParkingElapsedTimeyyFTo', symObjAddr: 0x75C, symBinAddr: 0x7FBD8, symSize: 0x58 } + - { offset: 0x1117F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC31applyLanguageBasedTextAlignmentyyF', symObjAddr: 0x7B4, symBinAddr: 0x7FC30, symSize: 0x208 } + - { offset: 0x111BD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyF', symObjAddr: 0x9BC, symBinAddr: 0x7FE38, symSize: 0x254 } + - { offset: 0x111DE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyFyycfU_', symObjAddr: 0xC10, symBinAddr: 0x8008C, symSize: 0x54 } + - { offset: 0x111E08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyFyycfU0_', symObjAddr: 0xC64, symBinAddr: 0x800E0, symSize: 0x88 } + - { offset: 0x112000, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC23didTapSaveParkingButtonyyF', symObjAddr: 0xCEC, symBinAddr: 0x80168, symSize: 0x49C } + - { offset: 0x11240D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11saveParkingyyF', symObjAddr: 0x1188, symBinAddr: 0x80604, symSize: 0x15C } + - { offset: 0x112545, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC9setUIDatayyF', symObjAddr: 0x12E4, symBinAddr: 0x80760, symSize: 0x430 } + - { offset: 0x11278F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x1714, symBinAddr: 0x80B90, symSize: 0x70 } + - { offset: 0x1127D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17didTapShareButtonyySo8UIButtonCFTo', symObjAddr: 0x1784, symBinAddr: 0x80C00, symSize: 0x4C } + - { offset: 0x112810, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC5shareyyF', symObjAddr: 0x17D0, symBinAddr: 0x80C4C, symSize: 0xD8 } + - { offset: 0x1128C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0x18A8, symBinAddr: 0x80D24, symSize: 0x4D8 } + - { offset: 0x112B73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x1D80, symBinAddr: 0x811FC, symSize: 0x280 } + - { offset: 0x112D41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x2000, symBinAddr: 0x8147C, symSize: 0x60 } + - { offset: 0x112D73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x2060, symBinAddr: 0x814DC, symSize: 0x25C } + - { offset: 0x112F33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x22BC, symBinAddr: 0x81738, symSize: 0x28 } + - { offset: 0x11305C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17didTapShareButtonyySo8UIButtonCFTf4dn_n', symObjAddr: 0x26B8, symBinAddr: 0x81B34, symSize: 0x4B8 } + - { offset: 0x113B55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellCfETo', symObjAddr: 0xAF8, symBinAddr: 0x82D8C, symSize: 0xB8 } + - { offset: 0x113B84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellCMa', symObjAddr: 0xBB0, symBinAddr: 0x82E44, symSize: 0x20 } + - { offset: 0x113BD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableView_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0xBD0, symBinAddr: 0x82E64, symSize: 0x14 } + - { offset: 0x113BF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableView_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0xBD0, symBinAddr: 0x82E64, symSize: 0x14 } + - { offset: 0x113C1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableView_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0xBD0, symBinAddr: 0x82E64, symSize: 0x14 } + - { offset: 0x113CEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableView_12cellForRowAtSo07UITablegE0CSo0lG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xBE4, symBinAddr: 0x82E78, symSize: 0x124 } + - { offset: 0x113ED1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewCMa', symObjAddr: 0x107C, symBinAddr: 0x832E0, symSize: 0x20 } + - { offset: 0x114084, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC16todayStatusLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x82294, symSize: 0x10 } + - { offset: 0x11409C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC16todayStatusLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x82294, symSize: 0x10 } + - { offset: 0x1140E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC16todayStatusLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x822A4, symSize: 0x34 } + - { offset: 0x114131, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC18todayScheduleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x822D8, symSize: 0x10 } + - { offset: 0x114149, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC18todayScheduleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x822D8, symSize: 0x10 } + - { offset: 0x114184, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC18todayScheduleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x822E8, symSize: 0x34 } + - { offset: 0x1141D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC20expandScheduleButtonSo8UIButtonCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x8231C, symSize: 0x10 } + - { offset: 0x1141EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC20expandScheduleButtonSo8UIButtonCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x8231C, symSize: 0x10 } + - { offset: 0x11422B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC20expandScheduleButtonSo8UIButtonCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x8232C, symSize: 0x34 } + - { offset: 0x11427A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC22collapseScheduleButtonSo8UIButtonCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x82360, symSize: 0x10 } + - { offset: 0x114292, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC22collapseScheduleButtonSo8UIButtonCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x82360, symSize: 0x10 } + - { offset: 0x1142CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC22collapseScheduleButtonSo8UIButtonCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x82370, symSize: 0x34 } + - { offset: 0x11431C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableViewSo07UITableG0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x823A4, symSize: 0x10 } + - { offset: 0x114334, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableViewSo07UITableG0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x823A4, symSize: 0x10 } + - { offset: 0x114374, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableViewSo07UITableG0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x823B4, symSize: 0x34 } + - { offset: 0x1143C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC018tableViewContainerG0So6UIViewCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x823E8, symSize: 0x10 } + - { offset: 0x1143DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC018tableViewContainerG0So6UIViewCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x823E8, symSize: 0x10 } + - { offset: 0x11441B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC018tableViewContainerG0So6UIViewCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x823F8, symSize: 0x34 } + - { offset: 0x11446A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC26expandedScheduleConstraintSo08NSLayoutH0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x8242C, symSize: 0x10 } + - { offset: 0x114482, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC26expandedScheduleConstraintSo08NSLayoutH0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x8242C, symSize: 0x10 } + - { offset: 0x1144C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC26expandedScheduleConstraintSo08NSLayoutH0CSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x8243C, symSize: 0x34 } + - { offset: 0x114511, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC27collapsedScheduleConstraintSo08NSLayoutH0CSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x82470, symSize: 0x10 } + - { offset: 0x114529, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC27collapsedScheduleConstraintSo08NSLayoutH0CSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x82470, symSize: 0x10 } + - { offset: 0x114564, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC27collapsedScheduleConstraintSo08NSLayoutH0CSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x82480, symSize: 0x34 } + - { offset: 0x1145B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC12awakeFromNibyyF', symObjAddr: 0x220, symBinAddr: 0x824B4, symSize: 0x144 } + - { offset: 0x1146B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC12awakeFromNibyyFTo', symObjAddr: 0x364, symBinAddr: 0x825F8, symSize: 0x28 } + - { offset: 0x1146FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC14updateSchedule3foryAA0dG4DataV_tF', symObjAddr: 0x38C, symBinAddr: 0x82620, symSize: 0x47C } + - { offset: 0x1149EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x884, symBinAddr: 0x82B18, symSize: 0x110 } + - { offset: 0x114A2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x994, symBinAddr: 0x82C28, symSize: 0x48 } + - { offset: 0x114A67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x9DC, symBinAddr: 0x82C70, symSize: 0xE8 } + - { offset: 0x114A9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xAC4, symBinAddr: 0x82D58, symSize: 0x28 } + - { offset: 0x114B0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0xDD8, symBinAddr: 0x8306C, symSize: 0x5C } + - { offset: 0x114B4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC11contentSizeSo6CGSizeVvgTo', symObjAddr: 0xE34, symBinAddr: 0x830C8, symSize: 0x3C } + - { offset: 0x114BB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC11contentSizeSo6CGSizeVvsTo', symObjAddr: 0xE70, symBinAddr: 0x83104, symSize: 0x7C } + - { offset: 0x114C0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC10reloadDatayyFTo', symObjAddr: 0xEEC, symBinAddr: 0x83180, symSize: 0x64 } + - { offset: 0x114C6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC5frame5styleACSo6CGRectV_So07UITableF5StyleVtcfcTo', symObjAddr: 0xF50, symBinAddr: 0x831E4, symSize: 0x74 } + - { offset: 0x114CCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xFC4, symBinAddr: 0x83258, symSize: 0x7C } + - { offset: 0x115526, size: 0x8, addend: 0x0, symName: '_$sSaySo29NSCollectionLayoutVisibleItem_pGSo7CGPointVSo0aB11Environment_pIeggyg_So7NSArrayCADSoAE_pIeyByyy_TR', symObjAddr: 0xECC, symBinAddr: 0x84424, symSize: 0x9C } + - { offset: 0x1156EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperCfETo', symObjAddr: 0x395C, symBinAddr: 0x86EB4, symSize: 0x6C } + - { offset: 0x11571B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperCMa', symObjAddr: 0x39C8, symBinAddr: 0x86F20, symSize: 0x20 } + - { offset: 0x11572F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSgWOh', symObjAddr: 0x3B44, symBinAddr: 0x86F40, symSize: 0x40 } + - { offset: 0x115743, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC19configureDataSourceyyFSo20UICollectionViewCellCSgSo0iJ0C_10Foundation9IndexPathVAA14RouteDirectionVtcfU_TA', symObjAddr: 0x3BA8, symBinAddr: 0x86FA4, symSize: 0x8 } + - { offset: 0x115757, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVACSHAAWl', symObjAddr: 0x3BB0, symBinAddr: 0x86FAC, symSize: 0x44 } + - { offset: 0x11576B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC12createLayoutSo016UICollectionViewG0CyFySaySo012NSCollectionG11VisibleItem_pG_So7CGPointVSo0jG11Environment_ptcfU_TA', symObjAddr: 0x3C58, symBinAddr: 0x87014, symSize: 0x8 } + - { offset: 0x11577F, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x3C60, symBinAddr: 0x8701C, symSize: 0x10 } + - { offset: 0x115793, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x3C70, symBinAddr: 0x8702C, symSize: 0x8 } + - { offset: 0x115BC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x83558, symSize: 0x10 } + - { offset: 0x115BDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x83558, symSize: 0x10 } + - { offset: 0x115C20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11contentViewSo6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x83568, symSize: 0x34 } + - { offset: 0x115C6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC14collectionViewSo012UICollectionG0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x8359C, symSize: 0x10 } + - { offset: 0x115C87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC14collectionViewSo012UICollectionG0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x8359C, symSize: 0x10 } + - { offset: 0x115CC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC14collectionViewSo012UICollectionG0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x835AC, symSize: 0x34 } + - { offset: 0x115D16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11pageControlSo06UIPageG0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x835E0, symSize: 0x10 } + - { offset: 0x115D2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11pageControlSo06UIPageG0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x835E0, symSize: 0x10 } + - { offset: 0x115D6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11pageControlSo06UIPageG0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x835F0, symSize: 0x34 } + - { offset: 0x115DA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC5frameACSo6CGRectV_tcfc', symObjAddr: 0xCC, symBinAddr: 0x83624, symSize: 0xC4 } + - { offset: 0x115DDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x190, symBinAddr: 0x836E8, symSize: 0x20 } + - { offset: 0x115E30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1B0, symBinAddr: 0x83708, symSize: 0xB4 } + - { offset: 0x115E65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x264, symBinAddr: 0x837BC, symSize: 0x28 } + - { offset: 0x115EA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC10commonInit33_35E8C3D16CDCA173FFC7655A38207CE6LLyyF', symObjAddr: 0x28C, symBinAddr: 0x837E4, symSize: 0x34C } + - { offset: 0x115FD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC17setCollectionViewyyF', symObjAddr: 0x5D8, symBinAddr: 0x83B30, symSize: 0xA4 } + - { offset: 0x116638, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC14setPageControlyyF', symObjAddr: 0x67C, symBinAddr: 0x83BD4, symSize: 0x244 } + - { offset: 0x116824, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC12createLayoutSo016UICollectionViewG0CyF', symObjAddr: 0x8C0, symBinAddr: 0x83E18, symSize: 0x32C } + - { offset: 0x1169C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC12createLayoutSo016UICollectionViewG0CyFySaySo012NSCollectionG11VisibleItem_pG_So7CGPointVSo0jG11Environment_ptcfU_', symObjAddr: 0xBEC, symBinAddr: 0x84144, symSize: 0x2E0 } + - { offset: 0x116DED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC19configureDataSourceyyF', symObjAddr: 0xF68, symBinAddr: 0x844C0, symSize: 0x284 } + - { offset: 0x116F1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC19configureDataSourceyyFSo20UICollectionViewCellCSgSo0iJ0C_10Foundation9IndexPathVAA14RouteDirectionVtcfU_', symObjAddr: 0x11EC, symBinAddr: 0x84744, symSize: 0x170 } + - { offset: 0x11702A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC26updateCollectionViewHeight3fory10Foundation9IndexPathV_tF', symObjAddr: 0x135C, symBinAddr: 0x848B4, symSize: 0x644 } + - { offset: 0x1174BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC15didScrollToItem2aty10Foundation9IndexPathV_tF', symObjAddr: 0x19A0, symBinAddr: 0x84EF8, symSize: 0x1F8C } + - { offset: 0x1190F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperCfD', symObjAddr: 0x392C, symBinAddr: 0x86E84, symSize: 0x30 } + - { offset: 0x1194E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC20floorsCountContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x87034, symSize: 0x20 } + - { offset: 0x1197AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellCfETo', symObjAddr: 0x664, symBinAddr: 0x87698, symSize: 0x68 } + - { offset: 0x1197DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellCMa', symObjAddr: 0x6CC, symBinAddr: 0x87700, symSize: 0x20 } + - { offset: 0x1198E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC20floorsCountContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x87034, symSize: 0x20 } + - { offset: 0x119948, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC20floorsCountContainerSo6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x87054, symSize: 0x14 } + - { offset: 0x119999, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC16floorsCountLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x87068, symSize: 0x20 } + - { offset: 0x1199F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC16floorsCountLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x87088, symSize: 0x14 } + - { offset: 0x119A44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC16addressContainerSo6UIViewCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x8709C, symSize: 0x20 } + - { offset: 0x119A99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC16addressContainerSo6UIViewCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x870BC, symSize: 0x14 } + - { offset: 0x119AEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x870D0, symSize: 0x10 } + - { offset: 0x119B02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x870D0, symSize: 0x10 } + - { offset: 0x119B3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0xAC, symBinAddr: 0x870E0, symSize: 0x34 } + - { offset: 0x119B8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC11campusLabelSo7UILabelCSgvgTo', symObjAddr: 0xE0, symBinAddr: 0x87114, symSize: 0x20 } + - { offset: 0x119BE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC11campusLabelSo7UILabelCSgvsTo', symObjAddr: 0x100, symBinAddr: 0x87134, symSize: 0x14 } + - { offset: 0x119C32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC12awakeFromNibyyFTo', symObjAddr: 0x114, symBinAddr: 0x87148, symSize: 0x68 } + - { offset: 0x119C98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC7setData3foryAA0d4ViewH0CSg_tF', symObjAddr: 0x17C, symBinAddr: 0x871B0, symSize: 0x2A0 } + - { offset: 0x119DD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x41C, symBinAddr: 0x87450, symSize: 0xE4 } + - { offset: 0x119E12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x500, symBinAddr: 0x87534, symSize: 0x48 } + - { offset: 0x119E4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x548, symBinAddr: 0x8757C, symSize: 0xC4 } + - { offset: 0x119E7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x60C, symBinAddr: 0x87640, symSize: 0x28 } + - { offset: 0x119E91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellCfD', symObjAddr: 0x634, symBinAddr: 0x87668, symSize: 0x30 } + - { offset: 0x11A581, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutCMa', symObjAddr: 0x878, symBinAddr: 0x87ECC, symSize: 0x20 } + - { offset: 0x11A869, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSo22CLLocationCoordinate2DV_Tg5', symObjAddr: 0x1328, symBinAddr: 0x8893C, symSize: 0xF8 } + - { offset: 0x11A9CE, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSnySiG_Tg5', symObjAddr: 0x1420, symBinAddr: 0x88A34, symSize: 0xF8 } + - { offset: 0x11AB33, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSo18NSLayoutConstraintC_Tg5', symObjAddr: 0x1518, symBinAddr: 0x88B2C, symSize: 0x130 } + - { offset: 0x11ACD5, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI11ScheduleDayV_Tg5', symObjAddr: 0x1678, symBinAddr: 0x88C8C, symSize: 0x100 } + - { offset: 0x11AE3A, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3LegV_Tg5', symObjAddr: 0x1794, symBinAddr: 0x88DA8, symSize: 0x100 } + - { offset: 0x11AF9F, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSS_Tg5', symObjAddr: 0x1894, symBinAddr: 0x88EA8, symSize: 0x100 } + - { offset: 0x11B104, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSf_Tg5', symObjAddr: 0x19EC, symBinAddr: 0x89000, symSize: 0xF8 } + - { offset: 0x11B269, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV_Tg5', symObjAddr: 0x1AF0, symBinAddr: 0x89104, symSize: 0x114 } + - { offset: 0x11B3CE, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSs_Tg5', symObjAddr: 0x1E14, symBinAddr: 0x89428, symSize: 0x100 } + - { offset: 0x11B533, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15RendererCommandOyAH11CGTextTypesVG_Tg5', symObjAddr: 0x1F14, symBinAddr: 0x89528, symSize: 0x138 } + - { offset: 0x11B698, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AH11CGTextTypesV_G_Tg5', symObjAddr: 0x204C, symBinAddr: 0x89660, symSize: 0x13C } + - { offset: 0x11B7FD, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO5ShapeO_Tg5', symObjAddr: 0x2188, symBinAddr: 0x8979C, symSize: 0x100 } + - { offset: 0x11B962, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI8MenuItemV_Tg5', symObjAddr: 0x2288, symBinAddr: 0x8989C, symSize: 0x11C } + - { offset: 0x11BAC7, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO7PatternV_Tg5', symObjAddr: 0x2640, symBinAddr: 0x89C54, symSize: 0x11C } + - { offset: 0x11BC2C, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO6FilterC6EffectO_Tg5', symObjAddr: 0x275C, symBinAddr: 0x89D70, symSize: 0xF8 } + - { offset: 0x11BD91, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO10StyleSheetV_Tg5', symObjAddr: 0x288C, symBinAddr: 0x89EA0, symSize: 0x100 } + - { offset: 0x11BEF6, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x298C, symBinAddr: 0x89FA0, symSize: 0x110 } + - { offset: 0x11C05B, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO0R0C8ContentsO_Tg5', symObjAddr: 0x2BB0, symBinAddr: 0x8A1C4, symSize: 0x110 } + - { offset: 0x11C1C0, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI16SFSymbolRendererV10SymbolPathV_Tg5', symObjAddr: 0x2CC0, symBinAddr: 0x8A2D4, symSize: 0x114 } + - { offset: 0x11C325, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15RendererCommandOyAH7CGTypesVG_Tg5', symObjAddr: 0x2DD4, symBinAddr: 0x8A3E8, symSize: 0x17C } + - { offset: 0x11C4A2, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AH7CGTypesV_G_Tg5', symObjAddr: 0x2F50, symBinAddr: 0x8A564, symSize: 0x138 } + - { offset: 0x11C607, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi_Tg5', symObjAddr: 0x30B8, symBinAddr: 0x8A6CC, symSize: 0xF8 } + - { offset: 0x11C76C, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF12CoreGraphics7CGFloatV_Tg5', symObjAddr: 0x31E0, symBinAddr: 0x8A7F4, symSize: 0xF8 } + - { offset: 0x11C8D1, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI11RouteOptionV_Tg5', symObjAddr: 0x35A8, symBinAddr: 0x8AA98, symSize: 0xF0 } + - { offset: 0x11CA36, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI16FileDownloadData_p_Tg5', symObjAddr: 0x3698, symBinAddr: 0x8AB88, symSize: 0x134 } + - { offset: 0x11CB9B, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9VenueGateV_Tg5', symObjAddr: 0x37E0, symBinAddr: 0x8ACD0, symSize: 0x118 } + - { offset: 0x11CD00, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI20FloorSelectorSectionO_Tg5', symObjAddr: 0x38F8, symBinAddr: 0x8ADE8, symSize: 0xE8 } + - { offset: 0x11CE65, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSo9CGPathRefa8PenNavUIE7SegmentO_Tg5', symObjAddr: 0x3CD0, symBinAddr: 0x8B1C0, symSize: 0x10C } + - { offset: 0x11CFCA, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI13VenueCardDataV_Tg5', symObjAddr: 0x4040, symBinAddr: 0x8B530, symSize: 0x114 } + - { offset: 0x11D103, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV13_copyContents8subRange12initializingSpyxGSnySiG_AFtFSo18NSLayoutConstraintC_Tg5', symObjAddr: 0x4154, symBinAddr: 0x8B644, symSize: 0x118 } + - { offset: 0x11D1E3, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSnySiG_Tg5', symObjAddr: 0x4490, symBinAddr: 0x8B980, symSize: 0x14 } + - { offset: 0x11D21B, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI24FloatingPanelPresentable_p_Tg5', symObjAddr: 0x44A4, symBinAddr: 0x8B994, symSize: 0x34 } + - { offset: 0x11D253, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI9LayerTreeO4PathC7SegmentO_Tg5', symObjAddr: 0x44D8, symBinAddr: 0x8B9C8, symSize: 0x2C } + - { offset: 0x11D280, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV_Tg5', symObjAddr: 0x4504, symBinAddr: 0x8B9F4, symSize: 0x14 } + - { offset: 0x11D2AD, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AE11CGTextTypesV_G_Tg5', symObjAddr: 0x452C, symBinAddr: 0x8BA1C, symSize: 0x14 } + - { offset: 0x11D2DA, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI15RendererCommandOyAE11CGTextTypesVG_Tg5', symObjAddr: 0x4540, symBinAddr: 0x8BA30, symSize: 0x14 } + - { offset: 0x11D312, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI3DOMO4PathC7SegmentO_Tg5', symObjAddr: 0x4554, symBinAddr: 0x8BA44, symSize: 0x2C } + - { offset: 0x11D33F, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AE7CGTypesV_G_Tg5', symObjAddr: 0x4580, symBinAddr: 0x8BA70, symSize: 0x14 } + - { offset: 0x11D36C, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI15RendererCommandOyAE7CGTypesVG_Tg5', symObjAddr: 0x4594, symBinAddr: 0x8BA84, symSize: 0x14 } + - { offset: 0x11D399, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF12CoreGraphics7CGFloatV_Tg5', symObjAddr: 0x4630, symBinAddr: 0x8BB20, symSize: 0x14 } + - { offset: 0x11D3D1, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSay12CoreGraphics7CGFloatVG_Tg5', symObjAddr: 0x4644, symBinAddr: 0x8BB34, symSize: 0x34 } + - { offset: 0x11D3FE, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI11RouteOptionV_Tg5', symObjAddr: 0x468C, symBinAddr: 0x8BB7C, symSize: 0x14 } + - { offset: 0x11D42B, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI3LegV_Tg5', symObjAddr: 0x46A0, symBinAddr: 0x8BB90, symSize: 0x14 } + - { offset: 0x11D458, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI16FileDownloadData_p_Tg5', symObjAddr: 0x46B4, symBinAddr: 0x8BBA4, symSize: 0x14 } + - { offset: 0x11D485, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI9VenueGateV_Tg5', symObjAddr: 0x46C8, symBinAddr: 0x8BBB8, symSize: 0x14 } + - { offset: 0x11D4B2, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSi_Tg5', symObjAddr: 0x46DC, symBinAddr: 0x8BBCC, symSize: 0x14 } + - { offset: 0x11D4DF, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSo22CLLocationCoordinate2DV_Tg5', symObjAddr: 0x4704, symBinAddr: 0x8BBF4, symSize: 0x14 } + - { offset: 0x11D50C, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI13VenueCardDataV_Tg5', symObjAddr: 0x4718, symBinAddr: 0x8BC08, symSize: 0x14 } + - { offset: 0x11D544, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI14RouteDirectionV_Tg5', symObjAddr: 0x472C, symBinAddr: 0x8BC1C, symSize: 0x34 } + - { offset: 0x11D587, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x4780, symBinAddr: 0x8BC70, symSize: 0x19C } + - { offset: 0x11D627, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiFSo9CGPathRefa_Tg5', symObjAddr: 0x4D74, symBinAddr: 0x8C264, symSize: 0x1A0 } + - { offset: 0x11D6B3, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiF8PenNavUI17FavoriteCacheDataC_Tg5', symObjAddr: 0x4F14, symBinAddr: 0x8C404, symSize: 0x19C } + - { offset: 0x11D753, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiFSo29NSCollectionLayoutVisibleItem_p_Tg5', symObjAddr: 0x50B0, symBinAddr: 0x8C5A0, symSize: 0x1A4 } + - { offset: 0x11D7E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentOSHAASQWb', symObjAddr: 0x5298, symBinAddr: 0x8C744, symSize: 0x4 } + - { offset: 0x11D7FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentOAESQAAWl', symObjAddr: 0x529C, symBinAddr: 0x8C748, symSize: 0x40 } + - { offset: 0x11D810, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentOMa', symObjAddr: 0x5440, symBinAddr: 0x8C788, symSize: 0x10 } + - { offset: 0x11D82F, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiF8PenNavUI0gH13UITableUpdateC_Tg5', symObjAddr: 0x5574, symBinAddr: 0x8C8BC, symSize: 0x19C } + - { offset: 0x11D8CF, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiF8PenNavUI16CampaignTrackingC_Tg5', symObjAddr: 0x5734, symBinAddr: 0x8CA7C, symSize: 0x19C } + - { offset: 0x11D964, size: 0x8, addend: 0x0, symName: ___swift_allocate_boxed_opaque_existential_1, symObjAddr: 0x5AC4, symBinAddr: 0x8CE0C, symSize: 0x3C } + - { offset: 0x11D978, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVWOc', symObjAddr: 0x5B18, symBinAddr: 0x8CE48, symSize: 0x3C } + - { offset: 0x11DB17, size: 0x8, addend: 0x0, symName: '_$ss15_arrayForceCastySayq_GSayxGr0_lFSo32UICollectionViewLayoutAttributesC_ypTg5', symObjAddr: 0x8C0, symBinAddr: 0x87F14, symSize: 0x200 } + - { offset: 0x11DD9E, size: 0x8, addend: 0x0, symName: '_$ss15_arrayForceCastySayq_GSayxGr0_lF8PenNavUI9AmenitiesV_AD13TagDataSource_pTg5', symObjAddr: 0xAE4, symBinAddr: 0x88138, symSize: 0x140 } + - { offset: 0x11DF8A, size: 0x8, addend: 0x0, symName: '_$ss15_arrayForceCastySayq_GSayxGr0_lF7Penguin5VenueC_8PenNavUI16FileDownloadData_pTg5', symObjAddr: 0xDB4, symBinAddr: 0x88408, symSize: 0x1D0 } + - { offset: 0x11E42A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueAESgSi_tcfC', symObjAddr: 0x0, symBinAddr: 0x87720, symSize: 0x14 } + - { offset: 0x11E44B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivg', symObjAddr: 0x14, symBinAddr: 0x87734, symSize: 0x8 } + - { offset: 0x11E472, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xDC, symBinAddr: 0x8773C, symSize: 0x8 } + - { offset: 0x11E505, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xF0, symBinAddr: 0x87744, symSize: 0x8C } + - { offset: 0x11E570, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC27layoutAttributesForElements2inSaySo016UICollectionViewfH0CGSgSo6CGRectV_tF', symObjAddr: 0x17C, symBinAddr: 0x877D0, symSize: 0x6FC } + - { offset: 0x11EE4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC27layoutAttributesForElements2inSaySo016UICollectionViewfH0CGSgSo6CGRectV_tFTo', symObjAddr: 0x11A0, symBinAddr: 0x887F4, symSize: 0xA0 } + - { offset: 0x11EE72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvgTo', symObjAddr: 0x1240, symBinAddr: 0x88894, symSize: 0x8 } + - { offset: 0x11EE9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC011developmentF9DirectionSo015UIUserInterfacefH0VvgTo', symObjAddr: 0x1250, symBinAddr: 0x8889C, symSize: 0x18 } + - { offset: 0x11EEB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC011developmentF9DirectionSo015UIUserInterfacefH0VvgTo', symObjAddr: 0x1250, symBinAddr: 0x8889C, symSize: 0x18 } + - { offset: 0x11EEFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutCACycfc', symObjAddr: 0x12A0, symBinAddr: 0x888B4, symSize: 0x2C } + - { offset: 0x11EF56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutCACycfcTo', symObjAddr: 0x12CC, symBinAddr: 0x888E0, symSize: 0x2C } + - { offset: 0x11EFB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutCfD', symObjAddr: 0x12F8, symBinAddr: 0x8890C, symSize: 0x30 } + - { offset: 0x11F3B1, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerC8PenNavUIE14getDefaultPath10Foundation3URLVyFZ', symObjAddr: 0x0, symBinAddr: 0x8CEC0, symSize: 0x2B4 } + - { offset: 0x11F425, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerC8PenNavUIE14getDefaultPath10Foundation3URLVyFZ', symObjAddr: 0x0, symBinAddr: 0x8CEC0, symSize: 0x2B4 } + - { offset: 0x11F54E, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerC8PenNavUIE13defaultFolderSSvgZTf4d_n', symObjAddr: 0x2B4, symBinAddr: 0x8D174, symSize: 0xAC } + - { offset: 0x11F599, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerC8PenNavUIE10fileExists2atSb10Foundation3URLV_tFZTf4nd_n', symObjAddr: 0x360, symBinAddr: 0x8D220, symSize: 0x140 } + - { offset: 0x11F5F6, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerCMa', symObjAddr: 0x4A0, symBinAddr: 0x8D360, symSize: 0x44 } + - { offset: 0x11FA0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x8D3A4, symSize: 0x10 } + - { offset: 0x11FC20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellCfETo', symObjAddr: 0x4CC, symBinAddr: 0x8D870, symSize: 0x48 } + - { offset: 0x11FC4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellCMa', symObjAddr: 0x514, symBinAddr: 0x8D8B8, symSize: 0x20 } + - { offset: 0x11FD5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x8D3A4, symSize: 0x10 } + - { offset: 0x11FD73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x8D3A4, symSize: 0x10 } + - { offset: 0x11FDB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x8D3B4, symSize: 0x34 } + - { offset: 0x11FE08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC9floorNameSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x8D3E8, symSize: 0x10 } + - { offset: 0x11FE20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC9floorNameSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x8D3E8, symSize: 0x10 } + - { offset: 0x11FE5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC9floorNameSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x8D3F8, symSize: 0x34 } + - { offset: 0x11FEAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC24selectionStatusImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x8D42C, symSize: 0x10 } + - { offset: 0x11FEC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC24selectionStatusImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x8D42C, symSize: 0x10 } + - { offset: 0x11FF02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC24selectionStatusImageViewSo07UIImageI0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x8D43C, symSize: 0x34 } + - { offset: 0x11FF51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC12awakeFromNibyyFTo', symObjAddr: 0xCC, symBinAddr: 0x8D470, symSize: 0x3C } + - { offset: 0x11FF8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC9configure4with10isSelectedy7Penguin0D0CSg_SbtF', symObjAddr: 0x108, symBinAddr: 0x8D4AC, symSize: 0x220 } + - { offset: 0x120068, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x328, symBinAddr: 0x8D6CC, symSize: 0xC0 } + - { offset: 0x1200CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3E8, symBinAddr: 0x8D78C, symSize: 0x8C } + - { offset: 0x120100, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x474, symBinAddr: 0x8D818, symSize: 0x28 } + - { offset: 0x120114, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellCfD', symObjAddr: 0x49C, symBinAddr: 0x8D840, symSize: 0x30 } + - { offset: 0x1204D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC14sharedInstance33_28F2A874F3DA7E21FDD4D0C208D8D7C5LLACSgvpZ', symObjAddr: 0x3520, symBinAddr: 0x376740, symSize: 0x0 } + - { offset: 0x120665, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC4findyAA8FavoriteCSgAA5PlaceCSgF', symObjAddr: 0x20, symBinAddr: 0x8D8D8, symSize: 0x504 } + - { offset: 0x120C24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD4List12withLocation23ignoresRoutePreferences10completionySb_SbySayAA8FavoriteCGctF', symObjAddr: 0x524, symBinAddr: 0x8DDDC, symSize: 0x5A8 } + - { offset: 0x120F94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD4List12withLocation23ignoresRoutePreferences10completionySb_SbySayAA8FavoriteCGctFyAJcfU_', symObjAddr: 0x2500, symBinAddr: 0x8FD74, symSize: 0x118 } + - { offset: 0x121224, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerCMa', symObjAddr: 0x2400, symBinAddr: 0x8FCB8, symSize: 0x20 } + - { offset: 0x1212E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC8getAlias3forSSSgAA5PlaceC_tF', symObjAddr: 0x2618, symBinAddr: 0x8FE8C, symSize: 0x3AC } + - { offset: 0x1215A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC25getFavoriteWithIdentifier10identifierAA0G0CSgSS_tF', symObjAddr: 0x29C4, symBinAddr: 0x90238, symSize: 0x170 } + - { offset: 0x121757, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD4List12withLocation23ignoresRoutePreferences10completionySb_SbySayAA8FavoriteCGctFyAJcfU_TA', symObjAddr: 0x2C3C, symBinAddr: 0x904B0, symSize: 0xC } + - { offset: 0x12176B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD012withLocationySb_tFySayAA8FavoriteCGcfU_yyScMYccfU_TA', symObjAddr: 0x2C9C, symBinAddr: 0x904BC, symSize: 0x8 } + - { offset: 0x12177F, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2CA4, symBinAddr: 0x904C4, symSize: 0x10 } + - { offset: 0x121793, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2CB4, symBinAddr: 0x904D4, symSize: 0x8 } + - { offset: 0x1217A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC14updateFavorite8favoriteyAA0G0C_tFySbcfU_TA', symObjAddr: 0x2D50, symBinAddr: 0x904DC, symSize: 0x8 } + - { offset: 0x121855, size: 0x8, addend: 0x0, symName: '_$sSMsE20_halfStablePartition15isSuffixElement5IndexQzSb0F0QzKXE_tKFSay8PenNavUI8FavoriteCG_Tg503$s8hi29UI16FavoritesManagerC22removeK43Location8favoriteyAA0G0C_tFySbcfU_SbAGXEfU_AITf1cn_nTf4ng_n', symObjAddr: 0x2D58, symBinAddr: 0x904E4, symSize: 0x2F8 } + - { offset: 0x121D98, size: 0x8, addend: 0x0, symName: '_$sSMsE20_halfStablePartition15isSuffixElement5IndexQzSb0F0QzKXE_tKFSay8PenNavUI8FavoriteCG_Tg503$s8hi29UI16FavoritesManagerC22removeK44Location8favoriteyAA0G0C_tFySbcfU_SbAGXEfU0_AITf1cn_nTf4ng_n', symObjAddr: 0x3050, symBinAddr: 0x907DC, symSize: 0x320 } + - { offset: 0x1222FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC14updateFavorite8favoriteyAA0G0C_tFySbcfU_yyScMYccfU0_TA', symObjAddr: 0x3374, symBinAddr: 0x90B00, symSize: 0x20 } + - { offset: 0x12230F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC22removeFavoriteLocation8favoriteyAA0G0C_tFySbcfU_TA', symObjAddr: 0x3394, symBinAddr: 0x90B20, symSize: 0x8 } + - { offset: 0x122323, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC22removeFavoriteLocation8favoriteyAA0G0C_tFySbcfU_yyScMYccfU1_TA', symObjAddr: 0x33D8, symBinAddr: 0x90B28, symSize: 0x20 } + - { offset: 0x122337, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC19addFavoriteLocation8favoriteyAA0G0C_tFySbcfU_TA', symObjAddr: 0x33F8, symBinAddr: 0x90B48, symSize: 0x8 } + - { offset: 0x12234B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC19addFavoriteLocation8favoriteyAA0G0C_tFySbcfU_ySayAGGcfU_TA', symObjAddr: 0x3400, symBinAddr: 0x90B50, symSize: 0x8 } + - { offset: 0x12235F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC19addFavoriteLocation8favoriteyAA0G0C_tFySbcfU_ySayAGGcfU_yyScMYccfU_TA', symObjAddr: 0x3434, symBinAddr: 0x90B84, symSize: 0x20 } + - { offset: 0x1226AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD012withLocationySb_tFySayAA8FavoriteCGcfU_', symObjAddr: 0xACC, symBinAddr: 0x8E384, symSize: 0x22C } + - { offset: 0x122707, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD012withLocationySb_tFySayAA8FavoriteCGcfU_yyScMYccfU_', symObjAddr: 0xCF8, symBinAddr: 0x8E5B0, symSize: 0x6C } + - { offset: 0x1227E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC22removeFavoriteLocation8favoriteyAA0G0C_tF', symObjAddr: 0x1160, symBinAddr: 0x8EA18, symSize: 0x370 } + - { offset: 0x122AC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC22removeFavoriteLocation8favoriteyAA0G0C_tFySbcfU_', symObjAddr: 0x14D0, symBinAddr: 0x8ED88, symSize: 0x4C0 } + - { offset: 0x123189, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerCfD', symObjAddr: 0x23CC, symBinAddr: 0x8FC84, symSize: 0x34 } + - { offset: 0x123235, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerCACycfc', symObjAddr: 0x2464, symBinAddr: 0x8FCD8, symSize: 0x9C } + - { offset: 0x12332A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC6sharedACvgZTf4d_n', symObjAddr: 0x2B34, symBinAddr: 0x903A8, symSize: 0xB8 } + - { offset: 0x123769, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC13iconImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x90BE4, symSize: 0x10 } + - { offset: 0x12393A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellCfETo', symObjAddr: 0x294, symBinAddr: 0x90E78, symSize: 0x38 } + - { offset: 0x123969, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellCMa', symObjAddr: 0x2CC, symBinAddr: 0x90EB0, symSize: 0x20 } + - { offset: 0x123A3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC13iconImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x90BE4, symSize: 0x10 } + - { offset: 0x123A53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC13iconImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x90BE4, symSize: 0x10 } + - { offset: 0x123A99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC13iconImageViewSo07UIImageH0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x90BF4, symSize: 0x34 } + - { offset: 0x123AE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x90C28, symSize: 0x10 } + - { offset: 0x123B00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x90C28, symSize: 0x10 } + - { offset: 0x123B40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x90C38, symSize: 0x34 } + - { offset: 0x123B8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC12awakeFromNibyyFTo', symObjAddr: 0x88, symBinAddr: 0x90C6C, symSize: 0x3C } + - { offset: 0x123C07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0xC4, symBinAddr: 0x90CA8, symSize: 0x54 } + - { offset: 0x123C6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x118, symBinAddr: 0x90CFC, symSize: 0xB8 } + - { offset: 0x123CEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1D0, symBinAddr: 0x90DB4, symSize: 0x94 } + - { offset: 0x123D22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellCfD', symObjAddr: 0x264, symBinAddr: 0x90E48, symSize: 0x30 } + - { offset: 0x1242CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCfETo', symObjAddr: 0x844, symBinAddr: 0x91714, symSize: 0x58 } + - { offset: 0x1242F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCMU', symObjAddr: 0x89C, symBinAddr: 0x9176C, symSize: 0x8 } + - { offset: 0x12430D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCMa', symObjAddr: 0x8A4, symBinAddr: 0x91774, symSize: 0x38 } + - { offset: 0x124321, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCMr', symObjAddr: 0x8DC, symBinAddr: 0x917AC, symSize: 0x7C } + - { offset: 0x124335, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC7setData8categoryy7Penguin11POICategoryV_tFySo7UIImageCSgcfU_TA', symObjAddr: 0xB0C, symBinAddr: 0x918B8, symSize: 0x40 } + - { offset: 0x1244B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC13iconContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x90ED0, symSize: 0x20 } + - { offset: 0x124515, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC13iconContainerSo6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x90EF0, symSize: 0x14 } + - { offset: 0x124566, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC17categoryNameLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x90F04, symSize: 0x20 } + - { offset: 0x1245C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC17categoryNameLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x90F24, symSize: 0x14 } + - { offset: 0x124611, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC13categoryImageSo07UIImageF0CSgvgTo', symObjAddr: 0x68, symBinAddr: 0x90F38, symSize: 0x20 } + - { offset: 0x12466B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC13categoryImageSo07UIImageF0CSgvsTo', symObjAddr: 0x88, symBinAddr: 0x90F58, symSize: 0x14 } + - { offset: 0x1246E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC7setData8categoryy7Penguin11POICategoryV_tF', symObjAddr: 0xA8, symBinAddr: 0x90F78, symSize: 0x31C } + - { offset: 0x1247EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC7setData8categoryy7Penguin11POICategoryV_tFySo7UIImageCSgcfU_', symObjAddr: 0x3C4, symBinAddr: 0x91294, symSize: 0x1BC } + - { offset: 0x1248B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfc', symObjAddr: 0x5CC, symBinAddr: 0x9149C, symSize: 0xFC } + - { offset: 0x1248F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfcTo', symObjAddr: 0x6C8, symBinAddr: 0x91598, symSize: 0x48 } + - { offset: 0x12492A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x710, symBinAddr: 0x915E0, symSize: 0xD8 } + - { offset: 0x12495D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x7E8, symBinAddr: 0x916B8, symSize: 0x28 } + - { offset: 0x124971, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCfD', symObjAddr: 0x810, symBinAddr: 0x916E0, symSize: 0x34 } + - { offset: 0x124D7F, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE7nibNameABSSSg_tcfC', symObjAddr: 0x0, symBinAddr: 0x918F8, symSize: 0xAC } + - { offset: 0x124DD3, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo18NSLayoutConstraintCSg_tF', symObjAddr: 0xAC, symBinAddr: 0x919A4, symSize: 0x2C4 } + - { offset: 0x124E29, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE011topMostViewB0AByF', symObjAddr: 0x370, symBinAddr: 0x91C68, symSize: 0x180 } + - { offset: 0x124EB8, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo12UIScrollViewCSg_tF', symObjAddr: 0x4F0, symBinAddr: 0x91DE8, symSize: 0x2C4 } + - { offset: 0x124F0D, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo12UIScrollViewCSg_tFy10Foundation12NotificationVYbcfU0_', symObjAddr: 0xA74, symBinAddr: 0x9236C, symSize: 0x94 } + - { offset: 0x124F98, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo12UIScrollViewCSg_tFy10Foundation12NotificationVYbcfU_TA', symObjAddr: 0x7D8, symBinAddr: 0x920D0, symSize: 0x20 } + - { offset: 0x124FED, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16keyboardWillShow33_EA3C84DA480CAA94B4D682CC82750B36LL12notification10scrollViewy10Foundation12NotificationV_So08UIScrollS0CtF', symObjAddr: 0x7F8, symBinAddr: 0x920F0, symSize: 0x1C0 } + - { offset: 0x1250F1, size: 0x8, addend: 0x0, symName: '_$s10Foundation12NotificationVIeghn_So14NSNotificationCIeyBhy_TR', symObjAddr: 0x9B8, symBinAddr: 0x922B0, symSize: 0xA4 } + - { offset: 0x125109, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xA5C, symBinAddr: 0x92354, symSize: 0x10 } + - { offset: 0x12511D, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xA6C, symBinAddr: 0x92364, symSize: 0x8 } + - { offset: 0x12515B, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo12UIScrollViewCSg_tFy10Foundation12NotificationVYbcfU0_TA', symObjAddr: 0xB08, symBinAddr: 0x92400, symSize: 0x8 } + - { offset: 0x1251B1, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16keyboardWillShow33_EA3C84DA480CAA94B4D682CC82750B36LL12notification10constrainty10Foundation12NotificationV_So18NSLayoutConstraintCtF', symObjAddr: 0xB10, symBinAddr: 0x92408, symSize: 0x2B0 } + - { offset: 0x1252FD, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16keyboardWillHide33_EA3C84DA480CAA94B4D682CC82750B36LL12notification10constrainty10Foundation12NotificationV_So18NSLayoutConstraintCtF', symObjAddr: 0xE34, symBinAddr: 0x9272C, symSize: 0x1C4 } + - { offset: 0x1253E3, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16adjustConstraint33_EA3C84DA480CAA94B4D682CC82750B36LL_8constant8durationySo08NSLayoutG0C_12CoreGraphics7CGFloatVSdtFyycfU_', symObjAddr: 0xFF8, symBinAddr: 0x928F0, symSize: 0x88 } + - { offset: 0x12541E, size: 0x8, addend: 0x0, symName: '_$ss11AnyHashableVWOh', symObjAddr: 0x1080, symBinAddr: 0x92978, symSize: 0x34 } + - { offset: 0x125432, size: 0x8, addend: 0x0, symName: '_$sypSgWOh', symObjAddr: 0x10B4, symBinAddr: 0x929AC, symSize: 0x40 } + - { offset: 0x125446, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo18NSLayoutConstraintCSg_tFy10Foundation12NotificationVYbcfU_TA', symObjAddr: 0x1178, symBinAddr: 0x929F0, symSize: 0x20 } + - { offset: 0x12545A, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo18NSLayoutConstraintCSg_tFy10Foundation12NotificationVYbcfU0_TA', symObjAddr: 0x11C4, symBinAddr: 0x92A3C, symSize: 0x20 } + - { offset: 0x12546E, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16adjustConstraint33_EA3C84DA480CAA94B4D682CC82750B36LL_8constant8durationySo08NSLayoutG0C_12CoreGraphics7CGFloatVSdtFyycfU_TA', symObjAddr: 0x11E4, symBinAddr: 0x92A5C, symSize: 0x8 } + - { offset: 0x125B8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwCP', symObjAddr: 0x0, symBinAddr: 0x92A9C, symSize: 0x414 } + - { offset: 0x125BA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwxx', symObjAddr: 0x458, symBinAddr: 0x92EB0, symSize: 0x190 } + - { offset: 0x125BB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwcp', symObjAddr: 0x5E8, symBinAddr: 0x93040, symSize: 0x3E8 } + - { offset: 0x125BCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwca', symObjAddr: 0x9D0, symBinAddr: 0x93428, symSize: 0x614 } + - { offset: 0x125BDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwtk', symObjAddr: 0xFE4, symBinAddr: 0x93A3C, symSize: 0x3C4 } + - { offset: 0x125BF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwta', symObjAddr: 0x13A8, symBinAddr: 0x93E00, symSize: 0x5D8 } + - { offset: 0x125C06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwet', symObjAddr: 0x1980, symBinAddr: 0x943D8, symSize: 0xC } + - { offset: 0x125C1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwst', symObjAddr: 0x1A44, symBinAddr: 0x9449C, symSize: 0xC } + - { offset: 0x125C2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVMa', symObjAddr: 0x1AF8, symBinAddr: 0x94550, symSize: 0x38 } + - { offset: 0x125C42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVMr', symObjAddr: 0x1B30, symBinAddr: 0x94588, symSize: 0x100 } + - { offset: 0x125CE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22presentationAttributes3for6stylesAC012PresentationF0VAC15GraphicsElementC_SayAC10StyleSheetVGtFZ', symObjAddr: 0x1E14, symBinAddr: 0x9486C, symSize: 0x1EC } + - { offset: 0x125EBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14makeAttributes3for6stylesAC012PresentationF0VAC10StyleSheetV8SelectorO_SayAJGtFZ', symObjAddr: 0x2044, symBinAddr: 0x94A58, symSize: 0x2E0 } + - { offset: 0x126012, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesV08applyingF0yA2EF', symObjAddr: 0x2324, symBinAddr: 0x94D38, symSize: 0x8EC } + - { offset: 0x12605E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementC11elementNameSSSgvg', symObjAddr: 0x2C10, symBinAddr: 0x95624, symSize: 0x1A0 } + - { offset: 0x12628D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO13makeSelectors3forSayAC10StyleSheetV8SelectorOGAC15GraphicsElementC_tFZTf4nd_n', symObjAddr: 0x2DB0, symBinAddr: 0x957C4, symSize: 0x438 } + - { offset: 0x126805, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOWOe', symObjAddr: 0x3200, symBinAddr: 0x95BFC, symSize: 0x18 } + - { offset: 0x126819, size: 0x8, addend: 0x0, symName: '_$sSlsSQ7ElementRpzrlE5split9separator9maxSplits25omittingEmptySubsequencesSay11SubSequenceQzGAB_SiSbtFSbABXEfU_SS_TG5TA', symObjAddr: 0x335C, symBinAddr: 0x95CD8, symSize: 0x1C } + - { offset: 0x12682D, size: 0x8, addend: 0x0, symName: '_$sS2sSysWl', symObjAddr: 0x3378, symBinAddr: 0x95CF4, symSize: 0x40 } + - { offset: 0x126848, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVAEycfC', symObjAddr: 0x1C7C, symBinAddr: 0x946D4, symSize: 0x198 } + - { offset: 0x126C4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC14sharedInstance33_5C10FF997BD11BB4616773E7BD77AA9CLLACSgvpZ', symObjAddr: 0x2458, symBinAddr: 0x3769F8, symSize: 0x0 } + - { offset: 0x126E4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC18loadFontsFromCacheyyF', symObjAddr: 0xF4, symBinAddr: 0x95E28, symSize: 0xC8 } + - { offset: 0x127305, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerCMa', symObjAddr: 0x2010, symBinAddr: 0x97D44, symSize: 0x20 } + - { offset: 0x127319, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtFyyYbcfU_TA', symObjAddr: 0x20E8, symBinAddr: 0x97E1C, symSize: 0x8 } + - { offset: 0x12732D, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x20F0, symBinAddr: 0x97E24, symSize: 0x10 } + - { offset: 0x127341, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2100, symBinAddr: 0x97E34, symSize: 0x8 } + - { offset: 0x127355, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtFyyYbcfU_yyScMYccfU_TA', symObjAddr: 0x2158, symBinAddr: 0x97E60, symSize: 0x8 } + - { offset: 0x127369, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC9loadFonts33_5C10FF997BD11BB4616773E7BD77AA9CLLyyFySayAA7AppFontCG_10Foundation4DataVSgtcfU_TA', symObjAddr: 0x22D8, symBinAddr: 0x97E68, symSize: 0x8 } + - { offset: 0x12737D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC10loadColors33_5C10FF997BD11BB4616773E7BD77AA9CLLyyFyAA0G8ResponseVSg_10Foundation4DataVSgtcfU_TA', symObjAddr: 0x2374, symBinAddr: 0x97E70, symSize: 0x8 } + - { offset: 0x127391, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVSgWOe', symObjAddr: 0x237C, symBinAddr: 0x97E78, symSize: 0x30 } + - { offset: 0x1273A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVSgWOy', symObjAddr: 0x23AC, symBinAddr: 0x97EA8, symSize: 0x30 } + - { offset: 0x1273B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC15fetchThemesDatayyFyycfU_TA', symObjAddr: 0x23DC, symBinAddr: 0x97ED8, symSize: 0x8 } + - { offset: 0x1273CD, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgWOb', symObjAddr: 0x23E4, symBinAddr: 0x97EE0, symSize: 0x48 } + - { offset: 0x1276ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC04loadD010completionyyyc_tF', symObjAddr: 0x0, symBinAddr: 0x95D34, symSize: 0xF4 } + - { offset: 0x1277E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16loadDefaultFontsyyF', symObjAddr: 0x1BC, symBinAddr: 0x95EF0, symSize: 0x400 } + - { offset: 0x127CF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC15fetchThemesDatayyF', symObjAddr: 0x5BC, symBinAddr: 0x962F0, symSize: 0x21C } + - { offset: 0x127D41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC15fetchThemesDatayyFyycfU_', symObjAddr: 0x7D8, symBinAddr: 0x9650C, symSize: 0x30 } + - { offset: 0x127D6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC14cancelAllTasksyyF', symObjAddr: 0x808, symBinAddr: 0x9653C, symSize: 0x1EC } + - { offset: 0x128236, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC22extractFontsToDownload33_5C10FF997BD11BB4616773E7BD77AA9CLL5fontsySayAA7AppFontCG_tF', symObjAddr: 0xDF0, symBinAddr: 0x96B24, symSize: 0xA10 } + - { offset: 0x128972, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtF', symObjAddr: 0x1800, symBinAddr: 0x97534, symSize: 0x458 } + - { offset: 0x128D05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtFyyYbcfU_', symObjAddr: 0x1C58, symBinAddr: 0x9798C, symSize: 0x244 } + - { offset: 0x128D6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtFyyYbcfU_yyScMYccfU_', symObjAddr: 0x1E9C, symBinAddr: 0x97BD0, symSize: 0x108 } + - { offset: 0x128E11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerCfd', symObjAddr: 0x1FA4, symBinAddr: 0x97CD8, symSize: 0x4C } + - { offset: 0x128E34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerCfD', symObjAddr: 0x1FF0, symBinAddr: 0x97D24, symSize: 0x20 } + - { offset: 0x128ED7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerCACycfc', symObjAddr: 0x2030, symBinAddr: 0x97D64, symSize: 0xB4 } + - { offset: 0x12986F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVMa', symObjAddr: 0xB4, symBinAddr: 0x97FEC, symSize: 0x38 } + - { offset: 0x129883, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgWOc', symObjAddr: 0xEC, symBinAddr: 0x98024, symSize: 0x48 } + - { offset: 0x129E50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO18parseConfiguration4from13baseDirectoryAC0G0VSaySSG_10Foundation3URLVtKFZ', symObjAddr: 0x1294, symBinAddr: 0x98F6C, symSize: 0x1024 } + - { offset: 0x12A673, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO9parseSize4fromAC0G0OSSSgSg_tKFZ', symObjAddr: 0x22B8, symBinAddr: 0x99F90, symSize: 0x1C0 } + - { offset: 0x12A8B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO11parseInsets4fromAC0G0VSSSgSg_tKFZ', symObjAddr: 0x2478, symBinAddr: 0x9A150, symSize: 0xFE4 } + - { offset: 0x12B61F, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE03newB03for5scaleAcD11CommandLineO6FormatO_AI5ScaleOtF', symObjAddr: 0x345C, symBinAddr: 0x9B134, symSize: 0x204 } + - { offset: 0x12B77C, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE21lastPathComponentNameSSvg', symObjAddr: 0x3660, symBinAddr: 0x9B338, symSize: 0x128 } + - { offset: 0x12B88E, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF10Foundation3URLV_Tg5', symObjAddr: 0x3788, symBinAddr: 0x9B460, symSize: 0x6C } + - { offset: 0x12B8B1, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFSS_Tg5', symObjAddr: 0x37F4, symBinAddr: 0x9B4CC, symSize: 0x64 } + - { offset: 0x12B8E9, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFSi_Tg5', symObjAddr: 0x3858, symBinAddr: 0x9B530, symSize: 0x30 } + - { offset: 0x12B921, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x3888, symBinAddr: 0x9B560, symSize: 0x30 } + - { offset: 0x12B94E, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI11RouteOptionV0mN3KeyO_Tg5', symObjAddr: 0x38BC, symBinAddr: 0x9B594, symSize: 0x14C } + - { offset: 0x12B9F3, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI13AppFontWeightO_Tg5', symObjAddr: 0x3A1C, symBinAddr: 0x9B6F4, symSize: 0xB0 } + - { offset: 0x12BB1B, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI8MenuItemV0mN9AttributeO_Tg5', symObjAddr: 0x3ACC, symBinAddr: 0x9B7A4, symSize: 0x58 } + - { offset: 0x12BC8D, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI9LayerTreeO8GradientV_Tg5', symObjAddr: 0x3B24, symBinAddr: 0x9B7FC, symSize: 0x58 } + - { offset: 0x12BDB0, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x3B7C, symBinAddr: 0x9B854, symSize: 0x80 } + - { offset: 0x12BE83, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFSo11CFStringRefa_Tg5', symObjAddr: 0x3BFC, symBinAddr: 0x9B8D4, symSize: 0x88 } + - { offset: 0x12BEE5, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFs11AnyHashableV_Tg5', symObjAddr: 0x3C84, symBinAddr: 0x9B95C, symSize: 0x30 } + - { offset: 0x12BF12, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF10Foundation3URLV_Tg5', symObjAddr: 0x3DD4, symBinAddr: 0x9BAAC, symSize: 0x140 } + - { offset: 0x12BF2A, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlFSS_Tg5', symObjAddr: 0x3F14, symBinAddr: 0x9BBEC, symSize: 0xB4 } + - { offset: 0x12BF8C, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlFSi_Tg5', symObjAddr: 0x3FC8, symBinAddr: 0x9BCA0, symSize: 0x6C } + - { offset: 0x12BFC4, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x4034, symBinAddr: 0x9BD0C, symSize: 0xC4 } + - { offset: 0x12BFF1, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI11RouteOptionV0oP3KeyO_Tg5', symObjAddr: 0x40F8, symBinAddr: 0x9BDD0, symSize: 0x298 } + - { offset: 0x12C0C4, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI9FontStyleO_Tg5', symObjAddr: 0x4390, symBinAddr: 0x9C068, symSize: 0x464 } + - { offset: 0x12C16F, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI13AppFontWeightO_Tg5', symObjAddr: 0x47F4, symBinAddr: 0x9C4CC, symSize: 0x188 } + - { offset: 0x12C22C, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI8MenuItemV0oP9AttributeO_Tg5', symObjAddr: 0x497C, symBinAddr: 0x9C654, symSize: 0x70 } + - { offset: 0x12C2F0, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI9LayerTreeO8GradientV_Tg5', symObjAddr: 0x49EC, symBinAddr: 0x9C6C4, symSize: 0x1D0 } + - { offset: 0x12C492, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x4BBC, symBinAddr: 0x9C894, symSize: 0xFC } + - { offset: 0x12C512, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlFSo11CFStringRefa_Tg5', symObjAddr: 0x4CB8, symBinAddr: 0x9C990, symSize: 0xF4 } + - { offset: 0x12C54A, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlFs11AnyHashableV_Tg5', symObjAddr: 0x4DAC, symBinAddr: 0x9CA84, symSize: 0xC4 } + - { offset: 0x12C577, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI11CommandLineO8ModifierO_Tg5', symObjAddr: 0x4E70, symBinAddr: 0x9CB48, symSize: 0x3AC } + - { offset: 0x12C6C6, size: 0x8, addend: 0x0, symName: '_$ss32_copyCollectionToContiguousArrayys0dE0Vy7ElementQzGxSlRzlFs0E5SliceVySSG_Tg5', symObjAddr: 0x540C, symBinAddr: 0x9D0E4, symSize: 0xCC } + - { offset: 0x12C887, size: 0x8, addend: 0x0, symName: '_$ss32_copyCollectionToContiguousArrayys0dE0Vy7ElementQzGxSlRzlFs0E5SliceVy7Penguin11POICategoryVG_Tg5', symObjAddr: 0x55CC, symBinAddr: 0x9D2A4, symSize: 0x120 } + - { offset: 0x12C9D9, size: 0x8, addend: 0x0, symName: '_$sSSSgSgWOe', symObjAddr: 0x5818, symBinAddr: 0x9D470, symSize: 0x14 } + - { offset: 0x12CA9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO14parsePrecision4fromSiSgSSSgSg_tKFZTf4nd_n', symObjAddr: 0x582C, symBinAddr: 0x9D484, symSize: 0x388 } + - { offset: 0x12CDA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSHAASQWb', symObjAddr: 0x5BFC, symBinAddr: 0x9D80C, symSize: 0x4 } + - { offset: 0x12CDB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOAESQAAWl', symObjAddr: 0x5C00, symBinAddr: 0x9D810, symSize: 0x40 } + - { offset: 0x12CDCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSHAASQWb', symObjAddr: 0x5C40, symBinAddr: 0x9D850, symSize: 0x4 } + - { offset: 0x12CDDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOAESQAAWl', symObjAddr: 0x5C44, symBinAddr: 0x9D854, symSize: 0x40 } + - { offset: 0x12CDF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ScaleOSHAASQWb', symObjAddr: 0x5C84, symBinAddr: 0x9D894, symSize: 0x4 } + - { offset: 0x12CE06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ScaleOAESQAAWl', symObjAddr: 0x5C88, symBinAddr: 0x9D898, symSize: 0x40 } + - { offset: 0x12CE1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwCP', symObjAddr: 0x5CC8, symBinAddr: 0x9D8D8, symSize: 0x234 } + - { offset: 0x12CE2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwxx', symObjAddr: 0x5EFC, symBinAddr: 0x9DB0C, symSize: 0xC0 } + - { offset: 0x12CE42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwcp', symObjAddr: 0x5FBC, symBinAddr: 0x9DBCC, symSize: 0x208 } + - { offset: 0x12CE56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwca', symObjAddr: 0x61C4, symBinAddr: 0x9DDD4, symSize: 0x2D0 } + - { offset: 0x12CE6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwtk', symObjAddr: 0x6494, symBinAddr: 0x9E0A4, symSize: 0x208 } + - { offset: 0x12CE7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwta', symObjAddr: 0x669C, symBinAddr: 0x9E2AC, symSize: 0x2C0 } + - { offset: 0x12CE92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwet', symObjAddr: 0x695C, symBinAddr: 0x9E56C, symSize: 0xC } + - { offset: 0x12CEA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwst', symObjAddr: 0x6A1C, symBinAddr: 0x9E62C, symSize: 0xC } + - { offset: 0x12CEBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVMr', symObjAddr: 0x6AD0, symBinAddr: 0x9E6E0, symSize: 0xD4 } + - { offset: 0x12CECE, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgMa', symObjAddr: 0x6BA4, symBinAddr: 0x9E7B4, symSize: 0x54 } + - { offset: 0x12CEE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOwet', symObjAddr: 0x6C08, symBinAddr: 0x9E808, symSize: 0x90 } + - { offset: 0x12CEF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOwst', symObjAddr: 0x6C98, symBinAddr: 0x9E898, symSize: 0xB0 } + - { offset: 0x12CF0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOMa', symObjAddr: 0x6D4C, symBinAddr: 0x9E948, symSize: 0x10 } + - { offset: 0x12CF1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOMa', symObjAddr: 0x6EB4, symBinAddr: 0x9E958, symSize: 0x10 } + - { offset: 0x12CF32, size: 0x8, addend: 0x0, symName: ___swift_memcpy17_8, symObjAddr: 0x6EC4, symBinAddr: 0x9E968, symSize: 0x14 } + - { offset: 0x12CF46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOwet', symObjAddr: 0x6ED8, symBinAddr: 0x9E97C, symSize: 0x20 } + - { offset: 0x12CF5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOwst', symObjAddr: 0x6EF8, symBinAddr: 0x9E99C, symSize: 0x30 } + - { offset: 0x12CF6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOwug', symObjAddr: 0x6F28, symBinAddr: 0x9E9CC, symSize: 0x1C } + - { offset: 0x12CF82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOwui', symObjAddr: 0x6F48, symBinAddr: 0x9E9E8, symSize: 0x20 } + - { offset: 0x12CF96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOMa', symObjAddr: 0x6F68, symBinAddr: 0x9EA08, symSize: 0x10 } + - { offset: 0x12CFAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ScaleOMa', symObjAddr: 0x70CC, symBinAddr: 0x9EA18, symSize: 0x10 } + - { offset: 0x12CFBE, size: 0x8, addend: 0x0, symName: ___swift_memcpy57_8, symObjAddr: 0x7108, symBinAddr: 0x9EA28, symSize: 0x1C } + - { offset: 0x12CFD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsVwet', symObjAddr: 0x7124, symBinAddr: 0x9EA44, symSize: 0x20 } + - { offset: 0x12CFE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsVwst', symObjAddr: 0x7144, symBinAddr: 0x9EA64, symSize: 0x3C } + - { offset: 0x12CFFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsVMa', symObjAddr: 0x7180, symBinAddr: 0x9EAA0, symSize: 0x10 } + - { offset: 0x12D00E, size: 0x8, addend: 0x0, symName: '_$ss11AnyHashableVWOc', symObjAddr: 0x7198, symBinAddr: 0x9EAB0, symSize: 0x3C } + - { offset: 0x12D022, size: 0x8, addend: 0x0, symName: '_$sSSWOh', symObjAddr: 0x7248, symBinAddr: 0x9EAEC, symSize: 0x34 } + - { offset: 0x12D036, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOAEsAdAWl', symObjAddr: 0x727C, symBinAddr: 0x9EB20, symSize: 0x40 } + - { offset: 0x12D04A, size: 0x8, addend: 0x0, symName: '_$sSSSgSgWOy', symObjAddr: 0x72BC, symBinAddr: 0x9EB60, symSize: 0x14 } + - { offset: 0x12D097, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvg', symObjAddr: 0x0, symBinAddr: 0x97F3C, symSize: 0x38 } + - { offset: 0x12D0C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvs', symObjAddr: 0x38, symBinAddr: 0x97F74, symSize: 0x38 } + - { offset: 0x12D0F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvM', symObjAddr: 0x70, symBinAddr: 0x97FAC, symSize: 0x10 } + - { offset: 0x12D179, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x9D4, symBinAddr: 0x98850, symSize: 0xC } + - { offset: 0x12D1E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSHAASH9hashValueSivgTW', symObjAddr: 0x9E0, symBinAddr: 0x9885C, symSize: 0xC4 } + - { offset: 0x12D28B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xAA4, symBinAddr: 0x98920, symSize: 0xA0 } + - { offset: 0x12D2F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xB44, symBinAddr: 0x989C0, symSize: 0xC0 } + - { offset: 0x12D3B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xD3C, symBinAddr: 0x98BB8, symSize: 0x9C } + - { offset: 0x12D4A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSHAASH9hashValueSivgTW', symObjAddr: 0xDD8, symBinAddr: 0x98C54, symSize: 0x78 } + - { offset: 0x12D556, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE50, symBinAddr: 0x98CCC, symSize: 0x54 } + - { offset: 0x12D5C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xEA4, symBinAddr: 0x98D20, symSize: 0x74 } + - { offset: 0x12DA36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvg', symObjAddr: 0x84, symBinAddr: 0x97FBC, symSize: 0x30 } + - { offset: 0x12DA5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvs', symObjAddr: 0x178, symBinAddr: 0x9806C, symSize: 0x30 } + - { offset: 0x12DA90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvM', symObjAddr: 0x1F0, symBinAddr: 0x9809C, symSize: 0x28 } + - { offset: 0x12DAB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvg', symObjAddr: 0x21C, symBinAddr: 0x980C4, symSize: 0x30 } + - { offset: 0x12DAD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvs', symObjAddr: 0x24C, symBinAddr: 0x980F4, symSize: 0x30 } + - { offset: 0x12DB0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvM', symObjAddr: 0x27C, symBinAddr: 0x98124, symSize: 0x28 } + - { offset: 0x12DB32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvg', symObjAddr: 0x2A8, symBinAddr: 0x9814C, symSize: 0x4C } + - { offset: 0x12DB57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvs', symObjAddr: 0x2F4, symBinAddr: 0x98198, symSize: 0x4C } + - { offset: 0x12DB8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvM', symObjAddr: 0x340, symBinAddr: 0x981E4, symSize: 0x28 } + - { offset: 0x12DBB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvg', symObjAddr: 0x36C, symBinAddr: 0x9820C, symSize: 0x30 } + - { offset: 0x12DBD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvs', symObjAddr: 0x39C, symBinAddr: 0x9823C, symSize: 0x2C } + - { offset: 0x12DC0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvM', symObjAddr: 0x3C8, symBinAddr: 0x98268, symSize: 0x28 } + - { offset: 0x12DC2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvg', symObjAddr: 0x3F4, symBinAddr: 0x98290, symSize: 0x3C } + - { offset: 0x12DC53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvs', symObjAddr: 0x430, symBinAddr: 0x982CC, symSize: 0x40 } + - { offset: 0x12DC88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvM', symObjAddr: 0x470, symBinAddr: 0x9830C, symSize: 0x28 } + - { offset: 0x12DCAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvg', symObjAddr: 0x49C, symBinAddr: 0x98334, symSize: 0x30 } + - { offset: 0x12DCD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvs', symObjAddr: 0x4CC, symBinAddr: 0x98364, symSize: 0x2C } + - { offset: 0x12DD06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvM', symObjAddr: 0x4F8, symBinAddr: 0x98390, symSize: 0x28 } + - { offset: 0x12DD2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvg', symObjAddr: 0x524, symBinAddr: 0x983B8, symSize: 0x44 } + - { offset: 0x12DD4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvs', symObjAddr: 0x568, symBinAddr: 0x983FC, symSize: 0x44 } + - { offset: 0x12DD84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvM', symObjAddr: 0x5AC, symBinAddr: 0x98440, symSize: 0x28 } + - { offset: 0x12DDA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvg', symObjAddr: 0x5D8, symBinAddr: 0x98468, symSize: 0x44 } + - { offset: 0x12DDCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvs', symObjAddr: 0x61C, symBinAddr: 0x984AC, symSize: 0x44 } + - { offset: 0x12DE02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvM', symObjAddr: 0x660, symBinAddr: 0x984F0, symSize: 0x28 } + - { offset: 0x12DE26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvg', symObjAddr: 0x68C, symBinAddr: 0x98518, symSize: 0x44 } + - { offset: 0x12DE4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvs', symObjAddr: 0x6D0, symBinAddr: 0x9855C, symSize: 0x44 } + - { offset: 0x12DE80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvM', symObjAddr: 0x714, symBinAddr: 0x985A0, symSize: 0x28 } + - { offset: 0x12DEA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvg', symObjAddr: 0x740, symBinAddr: 0x985C8, symSize: 0x30 } + - { offset: 0x12DEC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvs', symObjAddr: 0x770, symBinAddr: 0x985F8, symSize: 0x2C } + - { offset: 0x12DEFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvM', symObjAddr: 0x79C, symBinAddr: 0x98624, symSize: 0x28 } + - { offset: 0x12DF22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvg', symObjAddr: 0x7C8, symBinAddr: 0x9864C, symSize: 0x30 } + - { offset: 0x12DF47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvs', symObjAddr: 0x7F8, symBinAddr: 0x9867C, symSize: 0x2C } + - { offset: 0x12DF7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvM', symObjAddr: 0x824, symBinAddr: 0x986A8, symSize: 0x28 } + - { offset: 0x12DFA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvg', symObjAddr: 0x850, symBinAddr: 0x986D0, symSize: 0x28 } + - { offset: 0x12DFC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvs', symObjAddr: 0x878, symBinAddr: 0x986F8, symSize: 0x44 } + - { offset: 0x12DFF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvM', symObjAddr: 0x8BC, symBinAddr: 0x9873C, symSize: 0x28 } + - { offset: 0x12E029, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatO8rawValueAESgSS_tcfC', symObjAddr: 0x8E8, symBinAddr: 0x98764, symSize: 0x6C } + - { offset: 0x12E060, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatO8rawValueSSvg', symObjAddr: 0x954, symBinAddr: 0x987D0, symSize: 0x80 } + - { offset: 0x12E09F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xC04, symBinAddr: 0x98A80, symSize: 0xC } + - { offset: 0x12E0B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xC10, symBinAddr: 0x98A8C, symSize: 0x84 } + - { offset: 0x12E0CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xC10, symBinAddr: 0x98A8C, symSize: 0x84 } + - { offset: 0x12E0E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIO8rawValueAESgSS_tcfC', symObjAddr: 0xC94, symBinAddr: 0x98B10, symSize: 0x74 } + - { offset: 0x12E115, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIO8rawValueSSvg', symObjAddr: 0xD08, symBinAddr: 0x98B84, symSize: 0x34 } + - { offset: 0x12E16F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xF18, symBinAddr: 0x98D94, symSize: 0x70 } + - { offset: 0x12E1AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xF88, symBinAddr: 0x98E04, symSize: 0x38 } + - { offset: 0x12E1C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xF88, symBinAddr: 0x98E04, symSize: 0x38 } + - { offset: 0x12E1EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeO2eeoiySbAE_AEtFZ', symObjAddr: 0xFC0, symBinAddr: 0x98E3C, symSize: 0x40 } + - { offset: 0x12E264, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV3topSdSgvg', symObjAddr: 0x1180, symBinAddr: 0x98E7C, symSize: 0xC } + - { offset: 0x12E278, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV3topSdSgvs', symObjAddr: 0x118C, symBinAddr: 0x98E88, symSize: 0x10 } + - { offset: 0x12E2AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvg', symObjAddr: 0x11B0, symBinAddr: 0x98E98, symSize: 0xC } + - { offset: 0x12E2C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvs', symObjAddr: 0x11BC, symBinAddr: 0x98EA4, symSize: 0x10 } + - { offset: 0x12E2F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvM', symObjAddr: 0x11CC, symBinAddr: 0x98EB4, symSize: 0x10 } + - { offset: 0x12E318, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvg', symObjAddr: 0x11E0, symBinAddr: 0x98EC4, symSize: 0xC } + - { offset: 0x12E32C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvs', symObjAddr: 0x11EC, symBinAddr: 0x98ED0, symSize: 0x10 } + - { offset: 0x12E360, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvM', symObjAddr: 0x11FC, symBinAddr: 0x98EE0, symSize: 0x10 } + - { offset: 0x12E384, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvg', symObjAddr: 0x1210, symBinAddr: 0x98EF0, symSize: 0xC } + - { offset: 0x12E398, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvs', symObjAddr: 0x121C, symBinAddr: 0x98EFC, symSize: 0x10 } + - { offset: 0x12E3CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvM', symObjAddr: 0x122C, symBinAddr: 0x98F0C, symSize: 0x10 } + - { offset: 0x12E3F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV3top4left6bottom5rightAESdSg_A3JtcfC', symObjAddr: 0x1240, symBinAddr: 0x98F1C, symSize: 0x4C } + - { offset: 0x12E43D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV2eeoiySbAE_AEtFZ', symObjAddr: 0x128C, symBinAddr: 0x98F68, symSize: 0x4 } + - { offset: 0x12E88C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x56EC, symBinAddr: 0x9D3C4, symSize: 0xAC } + - { offset: 0x12ECAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PositionTrackerCfD', symObjAddr: 0x0, symBinAddr: 0x9EB80, symSize: 0x10 } + - { offset: 0x12ECEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PositionTrackerCMa', symObjAddr: 0x10, symBinAddr: 0x9EB90, symSize: 0x20 } + - { offset: 0x12EED6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVWOc', symObjAddr: 0x920, symBinAddr: 0x9F3D4, symSize: 0x34 } + - { offset: 0x12EEF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVWOh', symObjAddr: 0x954, symBinAddr: 0x9F408, symSize: 0x30 } + - { offset: 0x12EF1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwxx', symObjAddr: 0x9B0, symBinAddr: 0x9F438, symSize: 0x28 } + - { offset: 0x12EF2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwcp', symObjAddr: 0x9D8, symBinAddr: 0x9F460, symSize: 0xAC } + - { offset: 0x12EF42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwca', symObjAddr: 0xA84, symBinAddr: 0x9F50C, symSize: 0xE4 } + - { offset: 0x12EF56, size: 0x8, addend: 0x0, symName: ___swift_memcpy144_8, symObjAddr: 0xB68, symBinAddr: 0x9F5F0, symSize: 0x2C } + - { offset: 0x12EF6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwta', symObjAddr: 0xB94, symBinAddr: 0x9F61C, symSize: 0xB4 } + - { offset: 0x12EF7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwet', symObjAddr: 0xC48, symBinAddr: 0x9F6D0, symSize: 0x5C } + - { offset: 0x12EF92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwst', symObjAddr: 0xCA4, symBinAddr: 0x9F72C, symSize: 0x78 } + - { offset: 0x12EFA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVMa', symObjAddr: 0xD1C, symBinAddr: 0x9F7A4, symSize: 0x10 } + - { offset: 0x12EFBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOAFs0G3KeyAAWl', symObjAddr: 0xD94, symBinAddr: 0x9F7B4, symSize: 0x40 } + - { offset: 0x12EFCE, size: 0x8, addend: 0x0, symName: '_$s12CoreGraphics7CGFloatVACSEAAWl', symObjAddr: 0xDD4, symBinAddr: 0x9F7F4, symSize: 0x40 } + - { offset: 0x12EFE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOwet', symObjAddr: 0xE24, symBinAddr: 0x9F834, symSize: 0x90 } + - { offset: 0x12EFF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOwst', symObjAddr: 0xEB4, symBinAddr: 0x9F8C4, symSize: 0xB0 } + - { offset: 0x12F00A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOMa', symObjAddr: 0xF78, symBinAddr: 0x9F974, symSize: 0x10 } + - { offset: 0x12F01E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOSHAASQWb', symObjAddr: 0xF88, symBinAddr: 0x9F984, symSize: 0x4 } + - { offset: 0x12F032, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOAFSQAAWl', symObjAddr: 0xF8C, symBinAddr: 0x9F988, symSize: 0x40 } + - { offset: 0x12F046, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xFCC, symBinAddr: 0x9F9C8, symSize: 0x4 } + - { offset: 0x12F05A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xFD0, symBinAddr: 0x9F9CC, symSize: 0x40 } + - { offset: 0x12F06E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1010, symBinAddr: 0x9FA0C, symSize: 0x4 } + - { offset: 0x12F082, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x1014, symBinAddr: 0x9FA10, symSize: 0x40 } + - { offset: 0x12F0A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PositionTrackerCfD', symObjAddr: 0x0, symBinAddr: 0x9EB80, symSize: 0x10 } + - { offset: 0x12F0F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x500, symBinAddr: 0x9EFB4, symSize: 0x28 } + - { offset: 0x12F111, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x528, symBinAddr: 0x9EFDC, symSize: 0x28 } + - { offset: 0x12F13D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLO11stringValueSSvg', symObjAddr: 0x30, symBinAddr: 0x9EBB0, symSize: 0x130 } + - { offset: 0x12F174, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x160, symBinAddr: 0x9ECE0, symSize: 0x29C } + - { offset: 0x12F1B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x4BC, symBinAddr: 0x9EF7C, symSize: 0x8 } + - { offset: 0x12F1D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x4C4, symBinAddr: 0x9EF84, symSize: 0x24 } + - { offset: 0x12F1FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x4F4, symBinAddr: 0x9EFA8, symSize: 0xC } + - { offset: 0x12F20E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x550, symBinAddr: 0x9F004, symSize: 0x14 } + - { offset: 0x12F259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV4from12isNavigationAC7Penguin10PILocationC_SbtcfCTf4nnd_n', symObjAddr: 0x564, symBinAddr: 0x9F018, symSize: 0x3BC } + - { offset: 0x12F2C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x1054, symBinAddr: 0x9FA50, symSize: 0x320 } + - { offset: 0x12FC37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellCfETo', symObjAddr: 0x125C, symBinAddr: 0xA0FCC, symSize: 0xA8 } + - { offset: 0x12FC66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellCMa', symObjAddr: 0x1304, symBinAddr: 0xA1074, symSize: 0x20 } + - { offset: 0x12FC7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA11PoiViewDataCSg_tFyycfU_TA', symObjAddr: 0x1398, symBinAddr: 0xA10B8, symSize: 0x20 } + - { offset: 0x12FC8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA11PoiViewDataCSg_tFyycfU0_TA', symObjAddr: 0x13B8, symBinAddr: 0xA10D8, symSize: 0x20 } + - { offset: 0x12FCA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA11PoiViewDataCSg_tFyycfU1_TA', symObjAddr: 0x13D8, symBinAddr: 0xA10F8, symSize: 0x20 } + - { offset: 0x12FE2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC13containerViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x9FD70, symSize: 0x10 } + - { offset: 0x12FE43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC13containerViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x9FD70, symSize: 0x10 } + - { offset: 0x12FE89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC13containerViewSo6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x9FD80, symSize: 0x34 } + - { offset: 0x12FED8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC18phoneContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x9FDB4, symSize: 0x10 } + - { offset: 0x12FEF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC18phoneContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x9FDB4, symSize: 0x10 } + - { offset: 0x12FF30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC18phoneContainerViewAA06HapticI0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x9FDC4, symSize: 0x34 } + - { offset: 0x12FF7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC10phoneLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x9FDF8, symSize: 0x10 } + - { offset: 0x12FF97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC10phoneLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x9FDF8, symSize: 0x10 } + - { offset: 0x12FFD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC10phoneLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x9FE08, symSize: 0x34 } + - { offset: 0x130026, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC20websiteContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x9FE3C, symSize: 0x10 } + - { offset: 0x13003E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC20websiteContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x9FE3C, symSize: 0x10 } + - { offset: 0x130079, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC20websiteContainerViewAA06HapticI0CSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x9FE4C, symSize: 0x34 } + - { offset: 0x1300C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12websiteLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x9FE80, symSize: 0x10 } + - { offset: 0x1300E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12websiteLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x9FE80, symSize: 0x10 } + - { offset: 0x13011B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12websiteLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x9FE90, symSize: 0x34 } + - { offset: 0x13016A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC17mailContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x9FEC4, symSize: 0x10 } + - { offset: 0x130182, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC17mailContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x9FEC4, symSize: 0x10 } + - { offset: 0x1301BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC17mailContainerViewAA06HapticI0CSgvsTo', symObjAddr: 0x164, symBinAddr: 0x9FED4, symSize: 0x34 } + - { offset: 0x13020C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC9mailLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x9FF08, symSize: 0x10 } + - { offset: 0x130224, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC9mailLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x9FF08, symSize: 0x10 } + - { offset: 0x13025F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC9mailLabelSo7UILabelCSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x9FF18, symSize: 0x34 } + - { offset: 0x1302AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x9FF4C, symSize: 0x10 } + - { offset: 0x1302C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x9FF4C, symSize: 0x10 } + - { offset: 0x130301, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x9FF5C, symSize: 0x34 } + - { offset: 0x130357, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12awakeFromNibyyFTo', symObjAddr: 0x220, symBinAddr: 0x9FF90, symSize: 0xB4 } + - { offset: 0x1303AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC15prepareForReuseyyF', symObjAddr: 0x2D4, symBinAddr: 0xA0044, symSize: 0x9C } + - { offset: 0x130438, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC15prepareForReuseyyFTo', symObjAddr: 0x370, symBinAddr: 0xA00E0, symSize: 0x28 } + - { offset: 0x13047C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA11PoiViewDataCSg_tF', symObjAddr: 0x398, symBinAddr: 0xA0108, symSize: 0x5D4 } + - { offset: 0x1306D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA13VenueViewDataCSg_tF', symObjAddr: 0x96C, symBinAddr: 0xA06DC, symSize: 0x5D4 } + - { offset: 0x130936, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0xFE0, symBinAddr: 0xA0D50, symSize: 0xFC } + - { offset: 0x130977, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x10DC, symBinAddr: 0xA0E4C, symSize: 0x48 } + - { offset: 0x1309AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1124, symBinAddr: 0xA0E94, symSize: 0xE0 } + - { offset: 0x1309E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1204, symBinAddr: 0xA0F74, symSize: 0x28 } + - { offset: 0x1309F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellCfD', symObjAddr: 0x122C, symBinAddr: 0xA0F9C, symSize: 0x30 } + - { offset: 0x130D99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC07contentF0AA06HapticF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xA1124, symSize: 0x10 } + - { offset: 0x131150, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewCfETo', symObjAddr: 0xB84, symBinAddr: 0xA1CA8, symSize: 0x8C } + - { offset: 0x13117F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewCMa', symObjAddr: 0xC10, symBinAddr: 0xA1D34, symSize: 0x20 } + - { offset: 0x131193, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10commonInit33_80B0D1C32DEBDD219C999A651F3DBB75LLyyFyycfU_TA', symObjAddr: 0xCD8, symBinAddr: 0xA1D78, symSize: 0x8 } + - { offset: 0x1312A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC07contentF0AA06HapticF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xA1124, symSize: 0x10 } + - { offset: 0x1312BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC07contentF0AA06HapticF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xA1124, symSize: 0x10 } + - { offset: 0x131301, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC07contentF0AA06HapticF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0xA1134, symSize: 0x34 } + - { offset: 0x1313BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC010outerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0xA1168, symSize: 0x10 } + - { offset: 0x1313D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC010outerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0xA1168, symSize: 0x10 } + - { offset: 0x131412, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC010outerStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0xA1178, symSize: 0x34 } + - { offset: 0x131461, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC09iconImageF0So07UIImageF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0xA11AC, symSize: 0x10 } + - { offset: 0x131479, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC09iconImageF0So07UIImageF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0xA11AC, symSize: 0x10 } + - { offset: 0x1314B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC09iconImageF0So07UIImageF0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0xA11BC, symSize: 0x34 } + - { offset: 0x131508, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC020locationDetailsStackF0So07UIStackF0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0xA11F0, symSize: 0x10 } + - { offset: 0x131520, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC020locationDetailsStackF0So07UIStackF0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0xA11F0, symSize: 0x10 } + - { offset: 0x13155B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC020locationDetailsStackF0So07UIStackF0CSgvsTo', symObjAddr: 0xDC, symBinAddr: 0xA1200, symSize: 0x34 } + - { offset: 0x1315AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0xA1234, symSize: 0x10 } + - { offset: 0x1315C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0xA1234, symSize: 0x10 } + - { offset: 0x131602, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0xA1244, symSize: 0x34 } + - { offset: 0x131651, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0xA1278, symSize: 0x10 } + - { offset: 0x131669, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0xA1278, symSize: 0x10 } + - { offset: 0x1316A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x164, symBinAddr: 0xA1288, symSize: 0x34 } + - { offset: 0x1316DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x198, symBinAddr: 0xA12BC, symSize: 0xDC } + - { offset: 0x131714, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x274, symBinAddr: 0xA1398, symSize: 0x20 } + - { offset: 0x131777, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x294, symBinAddr: 0xA13B8, symSize: 0xCC } + - { offset: 0x1317AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x360, symBinAddr: 0xA1484, symSize: 0x28 } + - { offset: 0x13182D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10commonInit33_80B0D1C32DEBDD219C999A651F3DBB75LLyyF', symObjAddr: 0x388, symBinAddr: 0xA14AC, symSize: 0x474 } + - { offset: 0x131A06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10commonInit33_80B0D1C32DEBDD219C999A651F3DBB75LLyyFyycfU_', symObjAddr: 0x7FC, symBinAddr: 0xA1920, symSize: 0x88 } + - { offset: 0x131A62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC11setLocationyy7Penguin10PILocationCSgF', symObjAddr: 0x884, symBinAddr: 0xA19A8, symSize: 0x2D0 } + - { offset: 0x131B06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewCfD', symObjAddr: 0xB54, symBinAddr: 0xA1C78, symSize: 0x30 } + - { offset: 0x131EEE, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUI19LayoutGuideProviderA2cDP11widthAnchorSo17NSLayoutDimensionCvgTW', symObjAddr: 0x90, symBinAddr: 0xA1E10, symSize: 0x24 } + - { offset: 0x131F2E, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUI19LayoutGuideProviderA2cDP12heightAnchorSo17NSLayoutDimensionCvgTW', symObjAddr: 0xB4, symBinAddr: 0xA1E34, symSize: 0x24 } + - { offset: 0x132012, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE17fp_safeAreaInsetsSo06UIEdgeI0VvgTo', symObjAddr: 0xD8, symBinAddr: 0xA1E58, symSize: 0x8C } + - { offset: 0x132051, size: 0x8, addend: 0x0, symName: '_$sSo12UIScrollViewC8PenNavUIE19fp_contentOffsetMaxSo7CGPointVvg', symObjAddr: 0x164, symBinAddr: 0xA1EE4, symSize: 0xBC } + - { offset: 0x132170, size: 0x8, addend: 0x0, symName: '_$sSo24UISpringTimingParametersC8PenNavUIE16decelerationRate17frequencyResponse15initialVelocityAB12CoreGraphics7CGFloatV_AISo8CGVectorVtcfC', symObjAddr: 0x220, symBinAddr: 0xA1FA0, symSize: 0x84 } + - { offset: 0x13226E, size: 0x8, addend: 0x0, symName: '_$sSo24UISpringTimingParametersC8PenNavUIE12dampingRatio17frequencyResponse15initialVelocityAB12CoreGraphics7CGFloatV_AISo8CGVectorVtcfC', symObjAddr: 0x2A4, symBinAddr: 0xA2024, symSize: 0x70 } + - { offset: 0x13235C, size: 0x8, addend: 0x0, symName: '_$sSo12UIBezierPathC8PenNavUIE4path11roundedRect10appearanceABSo6CGRectV_AC17SurfaceAppearanceCtFZTf4nnd_n', symObjAddr: 0x344, symBinAddr: 0xA2094, symSize: 0x508 } + - { offset: 0x132BE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC14sharedInstance33_64C1391F925319CFCBF0C1DCA796F972LLACSgvpZ', symObjAddr: 0x9020, symBinAddr: 0x376E48, symSize: 0x0 } + - { offset: 0x132FD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC11serviceRateAA07ServiceG0CvpZ', symObjAddr: 0x410F0, symBinAddr: 0x396F58, symSize: 0x0 } + - { offset: 0x133B08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC11serviceRate_WZ', symObjAddr: 0x39D0, symBinAddr: 0xA5F78, symSize: 0x1C } + - { offset: 0x133D08, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUIE4safexSgSi_tcisAA3LegV_Tg5', symObjAddr: 0x6328, symBinAddr: 0xA88D0, symSize: 0xE8 } + - { offset: 0x134174, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCMU', symObjAddr: 0x8544, symBinAddr: 0xAAAEC, symSize: 0x8 } + - { offset: 0x134188, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCMa', symObjAddr: 0x854C, symBinAddr: 0xAAAF4, symSize: 0x38 } + - { offset: 0x13419C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCMr', symObjAddr: 0x8584, symBinAddr: 0xAAB2C, symSize: 0xBC } + - { offset: 0x1341B0, size: 0x8, addend: 0x0, symName: '_$s7Penguin5RouteVSgMa', symObjAddr: 0x8640, symBinAddr: 0xAABE8, symSize: 0x54 } + - { offset: 0x13421C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVWOh', symObjAddr: 0x8E4C, symBinAddr: 0xAB3B8, symSize: 0x34 } + - { offset: 0x134230, size: 0x8, addend: 0x0, symName: '_$s7Penguin5RouteVSgWOc', symObjAddr: 0x8EC4, symBinAddr: 0xAB3EC, symSize: 0x48 } + - { offset: 0x134244, size: 0x8, addend: 0x0, symName: '_$s7Penguin5RouteVSgWOf', symObjAddr: 0x8F0C, symBinAddr: 0xAB434, symSize: 0x48 } + - { offset: 0x134258, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVWOb', symObjAddr: 0x8FA0, symBinAddr: 0xAB47C, symSize: 0x44 } + - { offset: 0x1342E2, size: 0x8, addend: 0x0, symName: '_$sSTsE7forEachyyy7ElementQzKXEKFSay8PenNavUI3LegVG_Tg503$s8de63UI17NavigationManagerC10directionsSayAA14RouteDirectionVGvgyAA3G6VXEfU_SayAD0oP0VGTf1cn_n', symObjAddr: 0x0, symBinAddr: 0xA25AC, symSize: 0xAC } + - { offset: 0x134D24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC10directionsSayAA14RouteDirectionVGvg', symObjAddr: 0x204, symBinAddr: 0xA27AC, symSize: 0x324 } + - { offset: 0x1351E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC4legsSayAA3LegVGvM', symObjAddr: 0x1C0, symBinAddr: 0xA276C, symSize: 0x40 } + - { offset: 0x1352A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC14currentSubpath7Penguin7SubPathCSgvg', symObjAddr: 0x528, symBinAddr: 0xA2AD0, symSize: 0x104 } + - { offset: 0x1354E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC22isCurrentSubpathIndoorSbvg', symObjAddr: 0x62C, symBinAddr: 0xA2BD4, symSize: 0xD4 } + - { offset: 0x13558D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC21routeEndsInCurrentLegSbvg', symObjAddr: 0x700, symBinAddr: 0xA2CA8, symSize: 0x1C8 } + - { offset: 0x135713, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC23legEndsInCurrentSubpathSbvg', symObjAddr: 0x8C8, symBinAddr: 0xA2E70, symSize: 0x110 } + - { offset: 0x1358D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC15previousSubpath7Penguin7SubPathCSgvg', symObjAddr: 0x9D8, symBinAddr: 0xA2F80, symSize: 0x1E4 } + - { offset: 0x135C55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC20previousSubpathInLeg7Penguin7SubPathCSgvg', symObjAddr: 0xBBC, symBinAddr: 0xA3164, symSize: 0x110 } + - { offset: 0x135E04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC16nextSubpathInLeg7Penguin7SubPathCSgvg', symObjAddr: 0xCCC, symBinAddr: 0xA3274, symSize: 0x110 } + - { offset: 0x135FC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC6sourceAA5PlaceCSgvM', symObjAddr: 0xDDC, symBinAddr: 0xA3384, symSize: 0xF8 } + - { offset: 0x13615F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC6sourceAA5PlaceCSgvM.resume.0', symObjAddr: 0xED4, symBinAddr: 0xA347C, symSize: 0x168 } + - { offset: 0x1362BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC13combinedRoute7Penguin0G3LegVvg', symObjAddr: 0x103C, symBinAddr: 0xA35E4, symSize: 0xDC4 } + - { offset: 0x136F5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC9pathNodesSaySiGvg', symObjAddr: 0x1E00, symBinAddr: 0xA43A8, symSize: 0x6D0 } + - { offset: 0x137A96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC15stopsDictionarySaySDySSypGGvg', symObjAddr: 0x24D0, symBinAddr: 0xA4A78, symSize: 0x638 } + - { offset: 0x1383AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC15routeParametersSDySSypGvg', symObjAddr: 0x2B08, symBinAddr: 0xA50B0, symSize: 0xEC8 } + - { offset: 0x13933C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC14setDestinationyyAA5PlaceCSgF', symObjAddr: 0x39EC, symBinAddr: 0xA5F94, symSize: 0xE8 } + - { offset: 0x139452, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC10resetRouteyyF', symObjAddr: 0x3AD4, symBinAddr: 0xA607C, symSize: 0xA4 } + - { offset: 0x1394D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC8setRouteyy7Penguin0G0VSgF', symObjAddr: 0x3B78, symBinAddr: 0xA6120, symSize: 0x1360 } + - { offset: 0x13A813, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC28removeIsolatedGatesFromRouteyyF', symObjAddr: 0x4ED8, symBinAddr: 0xA7480, symSize: 0x164 } + - { offset: 0x13AA34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC18removeMatchedStopsyyF', symObjAddr: 0x503C, symBinAddr: 0xA75E4, symSize: 0x12EC } + - { offset: 0x13BB67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC13fixRouteNodesyyF', symObjAddr: 0x6410, symBinAddr: 0xA89B8, symSize: 0x11CC } + - { offset: 0x13D54B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC7addStop_2atyAA5PlaceCSg_SiSgtF', symObjAddr: 0x75DC, symBinAddr: 0xA9B84, symSize: 0x4F8 } + - { offset: 0x13DB16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC11getNextStopAA5PlaceCSgyF', symObjAddr: 0x7AD4, symBinAddr: 0xAA07C, symSize: 0x278 } + - { offset: 0x13DD6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC10getSubPath5index7Penguin0gH0CSgSi_tF', symObjAddr: 0x7D4C, symBinAddr: 0xAA2F4, symSize: 0x188 } + - { offset: 0x13DF26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC15getSubPathIndex03subH0SiSg7Penguin0gH0C_tF', symObjAddr: 0x7ED4, symBinAddr: 0xAA47C, symSize: 0xE4 } + - { offset: 0x13DFF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC34getFirstNodeTitleForOutdoorSubpath7subpathSSSg7Penguin7SubPathCSg_tF', symObjAddr: 0x7FB8, symBinAddr: 0xAA560, symSize: 0x200 } + - { offset: 0x13E25B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC12logRouteLegsyyF', symObjAddr: 0x81B8, symBinAddr: 0xAA760, symSize: 0x314 } + - { offset: 0x13E657, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCfD', symObjAddr: 0x84CC, symBinAddr: 0xAAA74, symSize: 0x78 } + - { offset: 0x13E690, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCACycfc', symObjAddr: 0x8694, symBinAddr: 0xAAC3C, symSize: 0xD4 } + - { offset: 0x13E6DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC19removeIsolatedGates33_64C1391F925319CFCBF0C1DCA796F972LL8subpathsSay7Penguin7SubPathCGAJ_tFTf4nd_n', symObjAddr: 0x8768, symBinAddr: 0xAAD10, symSize: 0x298 } + - { offset: 0x13EB6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC33getLastNodeTitleForOutdoorSubpath7subpath12currentIndexSSSg7Penguin7SubPathCSg_SiSgtFTf4ndn_n', symObjAddr: 0x8A00, symBinAddr: 0xAAFA8, symSize: 0x410 } + - { offset: 0x13F229, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC9imageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xAB4C0, symSize: 0x20 } + - { offset: 0x13F402, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellCfETo', symObjAddr: 0x520, symBinAddr: 0xAB9E0, symSize: 0x50 } + - { offset: 0x13F431, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellCMa', symObjAddr: 0x570, symBinAddr: 0xABA30, symSize: 0x20 } + - { offset: 0x13F454, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC03setE03url10completionySS_ySbcSgtFySo7UIImageCSgcfU_TA', symObjAddr: 0x6E0, symBinAddr: 0xABBA0, symSize: 0xC } + - { offset: 0x13F533, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC9imageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xAB4C0, symSize: 0x20 } + - { offset: 0x13F593, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC9imageViewSo07UIImageH0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xAB4E0, symSize: 0x14 } + - { offset: 0x13F5D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC12awakeFromNibyyF', symObjAddr: 0x34, symBinAddr: 0xAB4F4, symSize: 0xEC } + - { offset: 0x13F62B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC12awakeFromNibyyFTo', symObjAddr: 0x120, symBinAddr: 0xAB5E0, symSize: 0x28 } + - { offset: 0x13F659, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC03setE03url10completionySS_ySbcSgtFySo7UIImageCSgcfU_', symObjAddr: 0x148, symBinAddr: 0xAB608, symSize: 0x148 } + - { offset: 0x13F72B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC15prepareForReuseyyF', symObjAddr: 0x290, symBinAddr: 0xAB750, symSize: 0xD0 } + - { offset: 0x13F793, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC15prepareForReuseyyFTo', symObjAddr: 0x360, symBinAddr: 0xAB820, symSize: 0x28 } + - { offset: 0x13F7CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x388, symBinAddr: 0xAB848, symSize: 0xA0 } + - { offset: 0x13F823, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x428, symBinAddr: 0xAB8E8, symSize: 0xA0 } + - { offset: 0x13F856, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x4C8, symBinAddr: 0xAB988, symSize: 0x28 } + - { offset: 0x13F86A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellCfD', symObjAddr: 0x4F0, symBinAddr: 0xAB9B0, symSize: 0x30 } + - { offset: 0x13F8A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC03setE03url10completionySS_ySbcSgtFTf4ndn_n', symObjAddr: 0x590, symBinAddr: 0xABA50, symSize: 0x100 } + - { offset: 0x13FCA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0AA014IntrinsicTableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xABBAC, symSize: 0x20 } + - { offset: 0x13FF2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCfE', symObjAddr: 0x9AC, symBinAddr: 0xAC558, symSize: 0x64 } + - { offset: 0x13FF5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCfETo', symObjAddr: 0xA40, symBinAddr: 0xAC5EC, symSize: 0x70 } + - { offset: 0x13FF8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCMa', symObjAddr: 0xAB0, symBinAddr: 0xAC65C, symSize: 0x20 } + - { offset: 0x13FFF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0xAD0, symBinAddr: 0xAC67C, symSize: 0x68 } + - { offset: 0x140130, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0xB38, symBinAddr: 0xAC6E4, symSize: 0x1EC } + - { offset: 0x1402BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyAA8FavoriteCcfU_', symObjAddr: 0xD24, symBinAddr: 0xAC8D0, symSize: 0x98 } + - { offset: 0x140355, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xDBC, symBinAddr: 0xAC968, symSize: 0xC8 } + - { offset: 0x1403A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_41trailingSwipeActionsConfigurationForRowAtSo07UISwipejK0CSgSo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0xE84, symBinAddr: 0xACA30, symSize: 0x2A8 } + - { offset: 0x1404C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_41trailingSwipeActionsConfigurationForRowAtSo07UISwipejK0CSgSo07UITableE0C_10Foundation9IndexPathVtFySo18UIContextualActionC_So6UIViewCySbctcfU_', symObjAddr: 0x112C, symBinAddr: 0xACCD8, symSize: 0x21C } + - { offset: 0x14069B, size: 0x8, addend: 0x0, symName: '_$sSo18UIContextualActionCSo6UIViewCSbIegy_Iegggg_AbDSbIeyBy_IeyByyy_TR', symObjAddr: 0x1348, symBinAddr: 0xACEF4, symSize: 0xB4 } + - { offset: 0x1406B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_41trailingSwipeActionsConfigurationForRowAtSo07UISwipejK0CSgSo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x13FC, symBinAddr: 0xACFA8, symSize: 0xC8 } + - { offset: 0x1406CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0x14C4, symBinAddr: 0xAD070, symSize: 0x118 } + - { offset: 0x1407F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x15DC, symBinAddr: 0xAD188, symSize: 0xC0 } + - { offset: 0x14081B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x169C, symBinAddr: 0xAD248, symSize: 0x14 } + - { offset: 0x140864, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x16B0, symBinAddr: 0xAD25C, symSize: 0x24 } + - { offset: 0x1408D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC10setupPanelyyF', symObjAddr: 0x16D4, symBinAddr: 0xAD280, symSize: 0xA4 } + - { offset: 0x140955, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC10setupPanelyyFTo', symObjAddr: 0x1778, symBinAddr: 0xAD324, symSize: 0x28 } + - { offset: 0x140993, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x17A0, symBinAddr: 0xAD34C, symSize: 0x224 } + - { offset: 0x140B95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x19C4, symBinAddr: 0xAD570, symSize: 0x50 } + - { offset: 0x140BC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x1A90, symBinAddr: 0xAD5C0, symSize: 0xC } + - { offset: 0x140C01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x1A9C, symBinAddr: 0xAD5CC, symSize: 0x4 } + - { offset: 0x140C21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x1A9C, symBinAddr: 0xAD5CC, symSize: 0x4 } + - { offset: 0x140C33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4dnn_n', symObjAddr: 0x1B48, symBinAddr: 0xAD5D0, symSize: 0x24C } + - { offset: 0x140D94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC25userLocationStatusChangedyyFTf4d_n', symObjAddr: 0x1D94, symBinAddr: 0xAD81C, symSize: 0x178 } + - { offset: 0x140ED5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD012withLocationySb_tFySayAA8FavoriteCGcfU_TA', symObjAddr: 0x1F74, symBinAddr: 0xAD9B8, symSize: 0x8 } + - { offset: 0x140EE9, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1FA8, symBinAddr: 0xAD9E4, symSize: 0x10 } + - { offset: 0x140EFD, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1FB8, symBinAddr: 0xAD9F4, symSize: 0x8 } + - { offset: 0x140F11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_41trailingSwipeActionsConfigurationForRowAtSo07UISwipejK0CSgSo07UITableE0C_10Foundation9IndexPathVtFySo18UIContextualActionC_So6UIViewCySbctcfU_TA', symObjAddr: 0x2050, symBinAddr: 0xADA7C, symSize: 0x7C } + - { offset: 0x140F25, size: 0x8, addend: 0x0, symName: '_$sSo18UIContextualActionCMa', symObjAddr: 0x20CC, symBinAddr: 0xADAF8, symSize: 0x44 } + - { offset: 0x140F44, size: 0x8, addend: 0x0, symName: '_$sSbIeyBy_SbIegy_TRTA', symObjAddr: 0x2134, symBinAddr: 0xADB60, symSize: 0x14 } + - { offset: 0x140F6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyAA8FavoriteCcfU_TA', symObjAddr: 0x2148, symBinAddr: 0xADB74, symSize: 0x8 } + - { offset: 0x140F81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11viewDidLoadyyFySayAA8FavoriteCGcfU_TA', symObjAddr: 0x2150, symBinAddr: 0xADB7C, symSize: 0x8 } + - { offset: 0x1411A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0AA014IntrinsicTableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xABBAC, symSize: 0x20 } + - { offset: 0x141209, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0AA014IntrinsicTableE0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xABBCC, symSize: 0x14 } + - { offset: 0x14135D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11removeImageSo7UIImageCSgvpfiAGyXEfU_', symObjAddr: 0x34, symBinAddr: 0xABBE0, symSize: 0x26C } + - { offset: 0x141558, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11viewDidLoadyyF', symObjAddr: 0x2A0, symBinAddr: 0xABE4C, symSize: 0x198 } + - { offset: 0x141697, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11viewDidLoadyyFySayAA8FavoriteCGcfU_', symObjAddr: 0x438, symBinAddr: 0xABFE4, symSize: 0xF8 } + - { offset: 0x14173E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x530, symBinAddr: 0xAC0DC, symSize: 0x28 } + - { offset: 0x141766, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC12cancelButtonyySo8UIButtonCFTo', symObjAddr: 0x558, symBinAddr: 0xAC104, symSize: 0x38 } + - { offset: 0x14179E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC13registerCellsyyF', symObjAddr: 0x590, symBinAddr: 0xAC13C, symSize: 0x1E0 } + - { offset: 0x141917, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x770, symBinAddr: 0xAC31C, symSize: 0xF0 } + - { offset: 0x141958, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x860, symBinAddr: 0xAC40C, symSize: 0x60 } + - { offset: 0x1419A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x8C0, symBinAddr: 0xAC46C, symSize: 0xC4 } + - { offset: 0x1419D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x984, symBinAddr: 0xAC530, symSize: 0x28 } + - { offset: 0x1419E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCfD', symObjAddr: 0xA10, symBinAddr: 0xAC5BC, symSize: 0x30 } + - { offset: 0x141F98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC05imageF033_23A362561214FEFFEA9B414ED0F52193LLSo07UIImageF0Cvg', symObjAddr: 0x0, symBinAddr: 0xADB90, symSize: 0xAC } + - { offset: 0x14211F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewCfETo', symObjAddr: 0x648, symBinAddr: 0xAE1D8, symSize: 0x38 } + - { offset: 0x14214E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewCMa', symObjAddr: 0x680, symBinAddr: 0xAE210, symSize: 0x20 } + - { offset: 0x142231, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC05imageF033_23A362561214FEFFEA9B414ED0F52193LLSo07UIImageF0Cvg', symObjAddr: 0x0, symBinAddr: 0xADB90, symSize: 0xAC } + - { offset: 0x1422D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC04starF033_23A362561214FEFFEA9B414ED0F52193LLSo6UIViewCvg', symObjAddr: 0xAC, symBinAddr: 0xADC3C, symSize: 0x98 } + - { offset: 0x1423DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC5imageACSo7UIImageCSg_tcfc', symObjAddr: 0x144, symBinAddr: 0xADCD4, symSize: 0x408 } + - { offset: 0x1425B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x54C, symBinAddr: 0xAE0DC, symSize: 0xA0 } + - { offset: 0x142615, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x5EC, symBinAddr: 0xAE17C, symSize: 0x2C } + - { offset: 0x142674, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewCfD', symObjAddr: 0x618, symBinAddr: 0xAE1A8, symSize: 0x30 } + - { offset: 0x142A3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC6sharedACvpZ', symObjAddr: 0x9BD0, symBinAddr: 0x396FB8, symSize: 0x0 } + - { offset: 0x142B00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC6shared_WZ', symObjAddr: 0x60, symBinAddr: 0xAE230, symSize: 0x6C } + - { offset: 0x142C2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderCMa', symObjAddr: 0x968, symBinAddr: 0xAEB38, symSize: 0x20 } + - { offset: 0x142C3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC19downloadingProgress_8fileNameySf_SStFTo', symObjAddr: 0x988, symBinAddr: 0xAEB58, symSize: 0x4 } + - { offset: 0x142C5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC17downloadSucceededyySSF', symObjAddr: 0x98C, symBinAddr: 0xAEB5C, symSize: 0x240 } + - { offset: 0x142E5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC17downloadSucceededyySSFTo', symObjAddr: 0xBCC, symBinAddr: 0xAED9C, symSize: 0x54 } + - { offset: 0x142E79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tFyyYbcfU_TA', symObjAddr: 0xD44, symBinAddr: 0xAEDF0, symSize: 0x8 } + - { offset: 0x142E8D, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xD4C, symBinAddr: 0xAEDF8, symSize: 0x10 } + - { offset: 0x142EA1, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xD5C, symBinAddr: 0xAEE08, symSize: 0x8 } + - { offset: 0x142EB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tFyyYbcfU_yyScMYccfU_TA', symObjAddr: 0xDCC, symBinAddr: 0xAEE34, symSize: 0x8 } + - { offset: 0x14305D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tF', symObjAddr: 0xCC, symBinAddr: 0xAE29C, symSize: 0x34C } + - { offset: 0x1432F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tFyyYbcfU_', symObjAddr: 0x418, symBinAddr: 0xAE5E8, symSize: 0x204 } + - { offset: 0x14334E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tFyyYbcfU_yyScMYccfU_', symObjAddr: 0x61C, symBinAddr: 0xAE7EC, symSize: 0xBC } + - { offset: 0x1433FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC22appendOperationToQueue33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tF', symObjAddr: 0x6D8, symBinAddr: 0xAE8A8, symSize: 0x254 } + - { offset: 0x14369C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderCfD', symObjAddr: 0x92C, symBinAddr: 0xAEAFC, symSize: 0x3C } + - { offset: 0x143A74, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE9fontStyleSSvsTo', symObjAddr: 0x0, symBinAddr: 0xAEE44, symSize: 0x54 } + - { offset: 0x143B15, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE9fontStyleSSvs', symObjAddr: 0x54, symBinAddr: 0xAEE98, symSize: 0x184 } + - { offset: 0x143C17, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE19textColorIdentifierSivgTo', symObjAddr: 0x1D8, symBinAddr: 0xAF01C, symSize: 0x8 } + - { offset: 0x143C33, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE19textColorIdentifierSivsTo', symObjAddr: 0x1E0, symBinAddr: 0xAF024, symSize: 0x38 } + - { offset: 0x143C4F, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x224, symBinAddr: 0xAF05C, symSize: 0x8 } + - { offset: 0x143C6B, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x22C, symBinAddr: 0xAF064, symSize: 0x38 } + - { offset: 0x143C87, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE19tintColorIdentifierSivgTo', symObjAddr: 0x270, symBinAddr: 0xAF09C, symSize: 0x8 } + - { offset: 0x143CA3, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE19tintColorIdentifierSivsTo', symObjAddr: 0x278, symBinAddr: 0xAF0A4, symSize: 0x38 } + - { offset: 0x143CE9, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE26placeholderLocalizationKeySSvsTo', symObjAddr: 0x3F0, symBinAddr: 0xAF210, symSize: 0x94 } + - { offset: 0x1449AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiCMa', symObjAddr: 0x38C4, symBinAddr: 0xB2B6C, symSize: 0x20 } + - { offset: 0x144A0F, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV11removeValue6forKeyq_Sgx_tFSS_SSTg5', symObjAddr: 0x38E4, symBinAddr: 0xB2B8C, symSize: 0xD4 } + - { offset: 0x144AFB, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV11removeValue6forKeyq_Sgx_tFSS_ypTg5', symObjAddr: 0x39B8, symBinAddr: 0xB2C60, symSize: 0xD0 } + - { offset: 0x144BE7, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV11removeValue6forKeyq_Sgx_tFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x3A88, symBinAddr: 0xB2D30, symSize: 0x84 } + - { offset: 0x144CB6, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV11removeValue6forKeyq_Sgx_tFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0x3B0C, symBinAddr: 0xB2DB4, symSize: 0xBC } + - { offset: 0x144D8C, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x3BC8, symBinAddr: 0xB2E70, symSize: 0x260 } + - { offset: 0x144E54, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI18FloatingPanelStateC_SaySo18NSLayoutConstraintCGTg5', symObjAddr: 0x3E28, symBinAddr: 0xB30D0, symSize: 0x18C } + - { offset: 0x144F07, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSS_SSTg5', symObjAddr: 0x3FB4, symBinAddr: 0xB325C, symSize: 0x1AC } + - { offset: 0x144FA7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSS_ypTg5', symObjAddr: 0x4160, symBinAddr: 0xB3408, symSize: 0x1AC } + - { offset: 0x145068, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x430C, symBinAddr: 0xB35B4, symSize: 0x16C } + - { offset: 0x14511D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x4478, symBinAddr: 0xB3720, symSize: 0x1F4 } + - { offset: 0x14525E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI9FontStyleO_So6UIFontCTg5', symObjAddr: 0x466C, symBinAddr: 0xB3914, symSize: 0x318 } + - { offset: 0x145389, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSi_8PenNavUI5ColorVTg5', symObjAddr: 0x49C8, symBinAddr: 0xB3C70, symSize: 0x16C } + - { offset: 0x145433, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x4B34, symBinAddr: 0xB3DDC, symSize: 0x1A0 } + - { offset: 0x1454F3, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI3DOMO10StyleSheetV8SelectorO_AK22PresentationAttributesVTg5', symObjAddr: 0x4CD4, symBinAddr: 0xB3F7C, symSize: 0x224 } + - { offset: 0x145621, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0x4EF8, symBinAddr: 0xB41A0, symSize: 0x1AC } + - { offset: 0x145719, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC6search10parameters17completionHandlerSo20NSURLSessionDataTaskCSgSDySSypG_ySayAA7POIDataCGSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x5C20, symBinAddr: 0xB4EC8, symSize: 0x1C } + - { offset: 0x14572D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getFavorites10parameters17completionHandlerySDySSypG_ySayAA8FavoriteCGctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x6014, symBinAddr: 0xB5224, symSize: 0x38 } + - { offset: 0x145741, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getFavorites10parameters17completionHandlerySDySSypG_ySayAA8FavoriteCGctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_TA', symObjAddr: 0x6090, symBinAddr: 0xB525C, symSize: 0x64 } + - { offset: 0x145755, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x60F4, symBinAddr: 0xB52C0, symSize: 0x10 } + - { offset: 0x145769, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x6104, symBinAddr: 0xB52D0, symSize: 0x8 } + - { offset: 0x14577D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC26getGatesSortedByTravelTime4from2to25withNavigationAvoidOption10completionyAA5PlaceC_7Penguin5VenueCSbySayAA0T4GateVGctFyAK10PIResponseOyAA03GettF17DistancesResponseVSgGcfU_TA', symObjAddr: 0x61B0, symBinAddr: 0xB52D8, symSize: 0x38 } + - { offset: 0x145791, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVACSeAAWl', symObjAddr: 0x61E8, symBinAddr: 0xB5310, symSize: 0x40 } + - { offset: 0x1457A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVACSEAAWl', symObjAddr: 0x6228, symBinAddr: 0xB5350, symSize: 0x40 } + - { offset: 0x1457B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVWOc', symObjAddr: 0x62D8, symBinAddr: 0xB5400, symSize: 0x3C } + - { offset: 0x1457CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC28convertDeepLinkToHttpsScheme04deepG010completionySS_ySSSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x6314, symBinAddr: 0xB543C, symSize: 0x38 } + - { offset: 0x14593A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getAllVenuesInfo14lastUpdateDate17completionHandlerySS_ySayAA9VenueDataCG_SSSgtctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x77D8, symBinAddr: 0xB6884, symSize: 0x8 } + - { offset: 0x14594E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getVenues17completionHandleryySayAA13VenueCardDataVGc_tFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x77E0, symBinAddr: 0xB688C, symSize: 0x8 } + - { offset: 0x145962, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseVACSeAAWl', symObjAddr: 0x77E8, symBinAddr: 0xB6894, symSize: 0x40 } + - { offset: 0x145976, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAmenties17completionHandleryySayAA9AmenitiesVGc_tFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x79C8, symBinAddr: 0xB6A74, symSize: 0x30 } + - { offset: 0x14598A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getDistance2to10completionyAA5PlaceCSg_ySdSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x79F8, symBinAddr: 0xB6AA4, symSize: 0x38 } + - { offset: 0x14599E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getEdgeAds9paramters17completionHandlerySDySSypG_ySayAA13MessageDetailCGctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x7D84, symBinAddr: 0xB6E30, symSize: 0x30 } + - { offset: 0x1459B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getFloorAds9paramters17completionHandlerySDySSypG_ySayAA13MessageDetailCGctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x7DB4, symBinAddr: 0xB6E60, symSize: 0x30 } + - { offset: 0x1459C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getObjects6floors10completionSo20NSURLSessionDataTaskCSgSay7Penguin5FloorCSgG_ySayAA10LiveObjectVGSgctFyAJ10PIResponseOyypSgGcfU1_TA', symObjAddr: 0x81D8, symBinAddr: 0xB7234, symSize: 0x38 } + - { offset: 0x1459DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVACSeAAWl', symObjAddr: 0x8290, symBinAddr: 0xB72EC, symSize: 0x40 } + - { offset: 0x1459EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVACSEAAWl', symObjAddr: 0x82D0, symBinAddr: 0xB732C, symSize: 0x40 } + - { offset: 0x145A02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC15getPlaceDetails10parameters17completionHandlerySDySSypG_yAA7POIDataCSgcSgtFy7Penguin10PIResponseOyAA18GetPoIByIdResponseCSgGcfU_TA', symObjAddr: 0x8314, symBinAddr: 0xB7370, symSize: 0x8 } + - { offset: 0x145A16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseCSgSgWOe', symObjAddr: 0x832C, symBinAddr: 0xB7378, symSize: 0x10 } + - { offset: 0x145A2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getCampusDetails10parameters10completionySDySSypG_yAA9VenueDataCSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x833C, symBinAddr: 0xB7388, symSize: 0x8 } + - { offset: 0x145A3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getCampusDetails10parameters10completionySDySSypG_yAA9VenueDataCSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_TA', symObjAddr: 0x8348, symBinAddr: 0xB7394, symSize: 0x28 } + - { offset: 0x145A7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x8370, symBinAddr: 0xB73BC, symSize: 0x8 } + - { offset: 0x145A8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_TA', symObjAddr: 0x83A4, symBinAddr: 0xB73F0, symSize: 0xC } + - { offset: 0x145AA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAppFonts17completionHandlerSo20NSURLSessionDataTaskCSgySayAA0F4FontCG_10Foundation0K0VSgtc_tFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x83B0, symBinAddr: 0xB73FC, symSize: 0x8 } + - { offset: 0x145AB6, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI7AppFontCGSayxGSesSeRzlWl', symObjAddr: 0x83B8, symBinAddr: 0xB7404, symSize: 0x8C } + - { offset: 0x145ACA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getColors17completionHandlerSo20NSURLSessionDataTaskCSgyAA0F8ResponseVSg_10Foundation0J0VSgtc_tFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x8490, symBinAddr: 0xB74DC, symSize: 0x8 } + - { offset: 0x145ADE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVACSeAAWl', symObjAddr: 0x8498, symBinAddr: 0xB74E4, symSize: 0x40 } + - { offset: 0x145AF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC14updateFavorite10parameters17completionHandlerySDySSypG_ySbcSgtFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x84D8, symBinAddr: 0xB7524, symSize: 0x18 } + - { offset: 0x145B06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getPlaces10parameters17completionHandlerSo20NSURLSessionDataTaskCSgSDySSypG_ySayAA7POIDataCGSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x851C, symBinAddr: 0xB7568, symSize: 0x20 } + - { offset: 0x145B1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC19getPoiByReferenceId_10completionySS_yAA26GetPoIByRefIDResultElementVSgctFy7Penguin10PIResponseOyAA0klmnO0VSgGcfU_TA', symObjAddr: 0x8578, symBinAddr: 0xB7588, symSize: 0x8 } + - { offset: 0x145B2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVACSeAAWl', symObjAddr: 0x8580, symBinAddr: 0xB7590, symSize: 0x40 } + - { offset: 0x145B42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVACSEAAWl', symObjAddr: 0x85C0, symBinAddr: 0xB75D0, symSize: 0x40 } + - { offset: 0x145B56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVSgWOe', symObjAddr: 0x8600, symBinAddr: 0xB7610, symSize: 0x14 } + - { offset: 0x145B6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVSgSgWOe', symObjAddr: 0x8614, symBinAddr: 0xB7624, symSize: 0x10 } + - { offset: 0x145B7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVSgWOe', symObjAddr: 0x8624, symBinAddr: 0xB7634, symSize: 0x10 } + - { offset: 0x146335, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC26getGatesSortedByTravelTime4from2to25withNavigationAvoidOption10completionyAA5PlaceC_7Penguin5VenueCSbySayAA0T4GateVGctFyAK10PIResponseOyAA03GettF17DistancesResponseVSgGcfU_yyScMYccfU_', symObjAddr: 0x0, symBinAddr: 0xAF2AC, symSize: 0x368 } + - { offset: 0x146683, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getColors17completionHandlerSo20NSURLSessionDataTaskCSgyAA0F8ResponseVSg_10Foundation0J0VSgtc_tFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x368, symBinAddr: 0xAF614, symSize: 0x2A8 } + - { offset: 0x146745, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAppFonts17completionHandlerSo20NSURLSessionDataTaskCSgySayAA0F4FontCG_10Foundation0K0VSgtc_tFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x610, symBinAddr: 0xAF8BC, symSize: 0x27C } + - { offset: 0x146812, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getDistance2to10completionyAA5PlaceCSg_ySdSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_', symObjAddr: 0x88C, symBinAddr: 0xAFB38, symSize: 0x360 } + - { offset: 0x146969, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC28convertDeepLinkToHttpsScheme04deepG010completionySS_ySSSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_', symObjAddr: 0xBEC, symBinAddr: 0xAFE98, symSize: 0x324 } + - { offset: 0x146A19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getVenues17completionHandleryySayAA13VenueCardDataVGc_tFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0xF10, symBinAddr: 0xB01BC, symSize: 0x19C } + - { offset: 0x146A9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getAllVenuesInfo14lastUpdateDate17completionHandlerySS_ySayAA9VenueDataCG_SSSgtctFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x10AC, symBinAddr: 0xB0358, symSize: 0x2AC } + - { offset: 0x146B65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctF', symObjAddr: 0x1538, symBinAddr: 0xB07E4, symSize: 0x198 } + - { offset: 0x146CC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x16D0, symBinAddr: 0xB097C, symSize: 0x384 } + - { offset: 0x146D8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_', symObjAddr: 0x1A54, symBinAddr: 0xB0D00, symSize: 0xAC } + - { offset: 0x146EEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getCampusDetails10parameters10completionySDySSypG_yAA9VenueDataCSgctF', symObjAddr: 0x1B00, symBinAddr: 0xB0DAC, symSize: 0x198 } + - { offset: 0x14704F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getCampusDetails10parameters10completionySDySSypG_yAA9VenueDataCSgctFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x1C98, symBinAddr: 0xB0F44, symSize: 0x37C } + - { offset: 0x14715E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC24submitNavigationFeedbackyyFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x2014, symBinAddr: 0xB12C0, symSize: 0x4C } + - { offset: 0x1471A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC15getPlaceDetails10parameters17completionHandlerySDySSypG_yAA7POIDataCSgcSgtF', symObjAddr: 0x22AC, symBinAddr: 0xB1558, symSize: 0x1F8 } + - { offset: 0x147309, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC15getPlaceDetails10parameters17completionHandlerySDySSypG_yAA7POIDataCSgcSgtFy7Penguin10PIResponseOyAA18GetPoIByIdResponseCSgGcfU_', symObjAddr: 0x24A4, symBinAddr: 0xB1750, symSize: 0x2CC } + - { offset: 0x14749B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC19getPoiByReferenceId_10completionySS_yAA26GetPoIByRefIDResultElementVSgctF', symObjAddr: 0x2A94, symBinAddr: 0xB1D40, symSize: 0x258 } + - { offset: 0x1476BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC19getPoiByReferenceId_10completionySS_yAA26GetPoIByRefIDResultElementVSgctFy7Penguin10PIResponseOyAA0klmnO0VSgGcfU_', symObjAddr: 0x2CEC, symBinAddr: 0xB1F98, symSize: 0x1A8 } + - { offset: 0x1477E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC18setNavigationEvent010navigationG010httpMethodySDySSypGSg_7Penguin04HttpJ0OtF', symObjAddr: 0x2E94, symBinAddr: 0xB2140, symSize: 0xF8 } + - { offset: 0x147950, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC7logData6method4dataySS_SDySSypGSgtF', symObjAddr: 0x2F8C, symBinAddr: 0xB2238, symSize: 0x17C } + - { offset: 0x147AAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getObjects6floors10completionSo20NSURLSessionDataTaskCSgSay7Penguin5FloorCSgG_ySayAA10LiveObjectVGSgctF', symObjAddr: 0x310C, symBinAddr: 0xB23B4, symSize: 0x3E8 } + - { offset: 0x14806F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getObjects6floors10completionSo20NSURLSessionDataTaskCSgSay7Penguin5FloorCSgG_ySayAA10LiveObjectVGSgctFyAJ10PIResponseOyypSgGcfU1_yyScMYccfU_', symObjAddr: 0x376C, symBinAddr: 0xB2A14, symSize: 0x11C } + - { offset: 0x148113, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiCfD', symObjAddr: 0x3888, symBinAddr: 0xB2B30, symSize: 0x3C } + - { offset: 0x148207, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC26getGatesSortedByTravelTime4from2to25withNavigationAvoidOption10completionyAA5PlaceC_7Penguin5VenueCSbySayAA0T4GateVGctFTf4nnnnd_n', symObjAddr: 0x50A4, symBinAddr: 0xB434C, symSize: 0x788 } + - { offset: 0x148780, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC28convertDeepLinkToHttpsScheme04deepG010completionySS_ySSSgctFTf4nnd_n', symObjAddr: 0x582C, symBinAddr: 0xB4AD4, symSize: 0x234 } + - { offset: 0x148952, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC6search10parameters17completionHandlerSo20NSURLSessionDataTaskCSgSDySSypG_ySayAA7POIDataCGSgctFTf4nnd_n', symObjAddr: 0x5A60, symBinAddr: 0xB4D08, symSize: 0x19C } + - { offset: 0x148A8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getPlaces10parameters17completionHandlerSo20NSURLSessionDataTaskCSgSDySSypG_ySayAA7POIDataCGSgctFTf4nnd_n', symObjAddr: 0x5CD4, symBinAddr: 0xB4EE4, symSize: 0x19C } + - { offset: 0x148BF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getFavorites10parameters17completionHandlerySDySSypG_ySayAA8FavoriteCGctFTf4nnd_n', symObjAddr: 0x5E70, symBinAddr: 0xB5080, symSize: 0x1A4 } + - { offset: 0x148CF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getColors17completionHandlerSo20NSURLSessionDataTaskCSgyAA0F8ResponseVSg_10Foundation0J0VSgtc_tFTf4nd_n', symObjAddr: 0x6600, symBinAddr: 0xB56AC, symSize: 0x19C } + - { offset: 0x148E19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAppFonts17completionHandlerSo20NSURLSessionDataTaskCSgySayAA0F4FontCG_10Foundation0K0VSgtc_tFTf4nd_n', symObjAddr: 0x679C, symBinAddr: 0xB5848, symSize: 0x19C } + - { offset: 0x148F8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getDistance2to10completionyAA5PlaceCSg_ySdSgctFTf4nnd_n', symObjAddr: 0x6938, symBinAddr: 0xB59E4, symSize: 0xA28 } + - { offset: 0x1497B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getVenues17completionHandleryySayAA13VenueCardDataVGc_tFTf4nd_n', symObjAddr: 0x7360, symBinAddr: 0xB640C, symSize: 0x23C } + - { offset: 0x149938, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getAllVenuesInfo14lastUpdateDate17completionHandlerySS_ySayAA9VenueDataCG_SSSgtctFTf4nnd_n', symObjAddr: 0x759C, symBinAddr: 0xB6648, symSize: 0x23C } + - { offset: 0x149B1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAmenties17completionHandleryySayAA9AmenitiesVGc_tFTf4nd_n', symObjAddr: 0x7828, symBinAddr: 0xB68D4, symSize: 0x1A0 } + - { offset: 0x149C21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getFloorAds9paramters17completionHandlerySDySSypG_ySayAA13MessageDetailCGctFTf4nnd_n', symObjAddr: 0x7A44, symBinAddr: 0xB6AF0, symSize: 0x1A0 } + - { offset: 0x149D53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getEdgeAds9paramters17completionHandlerySDySSypG_ySayAA13MessageDetailCGctFTf4nnd_n', symObjAddr: 0x7BE4, symBinAddr: 0xB6C90, symSize: 0x1A0 } + - { offset: 0x149EC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC24submitNavigationFeedbackyyFTf4d_n', symObjAddr: 0x7DE4, symBinAddr: 0xB6E90, symSize: 0x3A4 } + - { offset: 0x14A481, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVwxx', symObjAddr: 0x2C, symBinAddr: 0xB76D4, symSize: 0x3C } + - { offset: 0x14A495, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVwcp', symObjAddr: 0x68, symBinAddr: 0xB7710, symSize: 0x6C } + - { offset: 0x14A4A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVwca', symObjAddr: 0xD4, symBinAddr: 0xB777C, symSize: 0xB4 } + - { offset: 0x14A4BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVwta', symObjAddr: 0x19C, symBinAddr: 0xB7830, symSize: 0x98 } + - { offset: 0x14A4D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVMa', symObjAddr: 0x2C4, symBinAddr: 0xB78C8, symSize: 0x10 } + - { offset: 0x14A869, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xB78D8, symSize: 0x10 } + - { offset: 0x14B0D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCfE', symObjAddr: 0x13B8, symBinAddr: 0xB8C90, symSize: 0xC4 } + - { offset: 0x14B102, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCfETo', symObjAddr: 0x14AC, symBinAddr: 0xB8D84, symSize: 0xD0 } + - { offset: 0x14B131, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCMa', symObjAddr: 0x157C, symBinAddr: 0xB8E54, symSize: 0x20 } + - { offset: 0x14B154, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF15DidBeginEditingyySo06UITextF0CFTo', symObjAddr: 0x159C, symBinAddr: 0xB8E74, symSize: 0x4C } + - { offset: 0x14B195, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF13DidEndEditingyySo06UITextF0CFTo', symObjAddr: 0x15E8, symBinAddr: 0xB8EC0, symSize: 0x4C } + - { offset: 0x14B1C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF9DidChangeyySo06UITextF0CF', symObjAddr: 0x1634, symBinAddr: 0xB8F0C, symSize: 0x258 } + - { offset: 0x14B2AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC06adjuste4TextF10Appearance33_23C295E8B772560134401F0065970F3ALL3forySS_tF', symObjAddr: 0x188C, symBinAddr: 0xB9164, symSize: 0x3BC } + - { offset: 0x14B40A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF9DidChangeyySo06UITextF0CFTo', symObjAddr: 0x1C48, symBinAddr: 0xB9520, symSize: 0x50 } + - { offset: 0x14B5AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutCMa', symObjAddr: 0x2158, symBinAddr: 0xB9A30, symSize: 0x20 } + - { offset: 0x14B5DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x2178, symBinAddr: 0xB9A50, symSize: 0xA0 } + - { offset: 0x14B65E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x2218, symBinAddr: 0xB9AF0, symSize: 0x24 } + - { offset: 0x14B6ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10setupPanelyyF', symObjAddr: 0x223C, symBinAddr: 0xB9B14, symSize: 0x238 } + - { offset: 0x14B8C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10setupPanelyyFTo', symObjAddr: 0x2474, symBinAddr: 0xB9D4C, symSize: 0x28 } + - { offset: 0x14B90F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC23floatingPanelWillRemoveyyAA08FloatingiG0CFTo', symObjAddr: 0x249C, symBinAddr: 0xB9D74, symSize: 0xBC } + - { offset: 0x14B96A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x25D4, symBinAddr: 0xB9E30, symSize: 0x4 } + - { offset: 0x14B98A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x25D4, symBinAddr: 0xB9E30, symSize: 0x4 } + - { offset: 0x14B99C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF15DidBeginEditingyySo06UITextF0CFTf4dn_n', symObjAddr: 0x25D8, symBinAddr: 0xB9E34, symSize: 0x174 } + - { offset: 0x14BB50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF13DidEndEditingyySo06UITextF0CFTf4dn_n', symObjAddr: 0x274C, symBinAddr: 0xB9FA8, symSize: 0x104 } + - { offset: 0x14BCBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0x2850, symBinAddr: 0xBA0AC, symSize: 0x120 } + - { offset: 0x14BD2B, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x299C, symBinAddr: 0xBA1F0, symSize: 0x10 } + - { offset: 0x14BD3F, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x29AC, symBinAddr: 0xBA200, symSize: 0x8 } + - { offset: 0x14C039, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xB78D8, symSize: 0x10 } + - { offset: 0x14C051, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xB78D8, symSize: 0x10 } + - { offset: 0x14C097, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC06scrollF0So08UIScrollF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0xB78E8, symSize: 0x34 } + - { offset: 0x14C0E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xB791C, symSize: 0x10 } + - { offset: 0x14C0FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xB791C, symSize: 0x10 } + - { offset: 0x14C13E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0xB792C, symSize: 0x34 } + - { offset: 0x14C18D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC23destinationReachedLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0xB7960, symSize: 0x10 } + - { offset: 0x14C1A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC23destinationReachedLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0xB7960, symSize: 0x10 } + - { offset: 0x14C1E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC23destinationReachedLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0xB7970, symSize: 0x34 } + - { offset: 0x14C22F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC21feedbackTextContainerSo6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0xB79A4, symSize: 0x10 } + - { offset: 0x14C247, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC21feedbackTextContainerSo6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0xB79A4, symSize: 0x10 } + - { offset: 0x14C287, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC21feedbackTextContainerSo6UIViewCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0xB79B4, symSize: 0x34 } + - { offset: 0x14C2D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC012feedbackTextF0AA018PlaceholderEnablediF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0xB79E8, symSize: 0x10 } + - { offset: 0x14C2EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC012feedbackTextF0AA018PlaceholderEnablediF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0xB79E8, symSize: 0x10 } + - { offset: 0x14C32E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC012feedbackTextF0AA018PlaceholderEnablediF0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0xB79F8, symSize: 0x34 } + - { offset: 0x14C37D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC27feedbackCharacterCountLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0xB7A2C, symSize: 0x10 } + - { offset: 0x14C395, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC27feedbackCharacterCountLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0xB7A2C, symSize: 0x10 } + - { offset: 0x14C3D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC27feedbackCharacterCountLabelSo7UILabelCSgvsTo', symObjAddr: 0x164, symBinAddr: 0xB7A3C, symSize: 0x34 } + - { offset: 0x14C41F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11ratingStackSo07UIStackF0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0xB7A70, symSize: 0x10 } + - { offset: 0x14C437, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11ratingStackSo07UIStackF0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0xB7A70, symSize: 0x10 } + - { offset: 0x14C477, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11ratingStackSo07UIStackF0CSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0xB7A80, symSize: 0x34 } + - { offset: 0x14C4C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC18feedbackTextHeightSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0xB7AB4, symSize: 0x20 } + - { offset: 0x14C520, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC18feedbackTextHeightSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x1FC, symBinAddr: 0xB7AD4, symSize: 0x14 } + - { offset: 0x14C55D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15expectedPadding12CoreGraphics7CGFloatVvg', symObjAddr: 0x210, symBinAddr: 0xB7AE8, symSize: 0x44 } + - { offset: 0x14C581, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15expectedPadding12CoreGraphics7CGFloatVvgAGyXEfU_', symObjAddr: 0x254, symBinAddr: 0xB7B2C, symSize: 0x29C } + - { offset: 0x14C808, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11viewDidLoadyyF', symObjAddr: 0x4F0, symBinAddr: 0xB7DC8, symSize: 0x398 } + - { offset: 0x14C9D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x888, symBinAddr: 0xB8160, symSize: 0x28 } + - { offset: 0x14CB5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15didSelectRatingyySo8UIButtonCF', symObjAddr: 0x8B0, symBinAddr: 0xB8188, symSize: 0x420 } + - { offset: 0x14CF5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15didSelectRatingyySo8UIButtonCFTo', symObjAddr: 0xCD0, symBinAddr: 0xB85A8, symSize: 0x50 } + - { offset: 0x14CF78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10didTapDoneyyF', symObjAddr: 0xD20, symBinAddr: 0xB85F8, symSize: 0x194 } + - { offset: 0x14D00F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10didTapDoneyyFTo', symObjAddr: 0xEB4, symBinAddr: 0xB878C, symSize: 0x28 } + - { offset: 0x14D037, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC12didTapCancelyyFTo', symObjAddr: 0xEDC, symBinAddr: 0xB87B4, symSize: 0x3C } + - { offset: 0x14D0F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15submitAnalyticsyyF', symObjAddr: 0xF18, symBinAddr: 0xB87F0, symSize: 0x1A4 } + - { offset: 0x14D258, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x10BC, symBinAddr: 0xB8994, symSize: 0x150 } + - { offset: 0x14D299, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x120C, symBinAddr: 0xB8AE4, symSize: 0x60 } + - { offset: 0x14D2CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x126C, symBinAddr: 0xB8B44, symSize: 0x124 } + - { offset: 0x14D2FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1390, symBinAddr: 0xB8C68, symSize: 0x28 } + - { offset: 0x14D312, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCfD', symObjAddr: 0x147C, symBinAddr: 0xB8D54, symSize: 0x30 } + - { offset: 0x14D343, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC8positionAA08FloatingH8PositionOvgTo', symObjAddr: 0x1C98, symBinAddr: 0xB9570, symSize: 0x8 } + - { offset: 0x14D35B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC8positionAA08FloatingH8PositionOvgTo', symObjAddr: 0x1C98, symBinAddr: 0xB9570, symSize: 0x8 } + - { offset: 0x14D374, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC12initialStateAA08FloatinghK0CvgTo', symObjAddr: 0x1CA0, symBinAddr: 0xB9578, symSize: 0x8 } + - { offset: 0x14D38C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC12initialStateAA08FloatinghK0CvgTo', symObjAddr: 0x1CA0, symBinAddr: 0xB9578, symSize: 0x8 } + - { offset: 0x14D39E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC7anchorsSDyAA08FloatingH5StateCAA0khI9Anchoring_pGvgTo', symObjAddr: 0x1CA8, symBinAddr: 0xB9580, symSize: 0x7C } + - { offset: 0x14D480, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC7anchorsSDyAA08FloatingH5StateCAA0khI9Anchoring_pGvg', symObjAddr: 0x1D24, symBinAddr: 0xB95FC, symSize: 0x404 } + - { offset: 0x14D78A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA08FloatingH5StateC_tFTo', symObjAddr: 0x2128, symBinAddr: 0xB9A00, symSize: 0xC } + - { offset: 0x14D7B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutCfD', symObjAddr: 0x2134, symBinAddr: 0xB9A0C, symSize: 0x24 } + - { offset: 0x14DC68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvpZ', symObjAddr: 0x7C50, symBinAddr: 0x377840, symSize: 0x0 } + - { offset: 0x14E06F, size: 0x8, addend: 0x0, symName: '_$sIeg_IeyB_TR', symObjAddr: 0x0, symBinAddr: 0xBA208, symSize: 0x2C } + - { offset: 0x14E087, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6shared_WZ', symObjAddr: 0x2C, symBinAddr: 0xBA234, symSize: 0x2C } + - { offset: 0x14E0C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvpZACmTK', symObjAddr: 0x1C0, symBinAddr: 0xBA3A8, symSize: 0x70 } + - { offset: 0x14E0ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvpZACmTk', symObjAddr: 0x230, symBinAddr: 0xBA418, symSize: 0x7C } + - { offset: 0x14E62E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC06handleaB5Error5error05feralF0yAA0aB7UIErrorO_SbtF', symObjAddr: 0x3030, symBinAddr: 0xBD124, symSize: 0x244 } + - { offset: 0x14E6AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC06handleaB5Error5error05feralF0yAA0aB7UIErrorO_SbtFyyScMYccfU_', symObjAddr: 0x585C, symBinAddr: 0xBF8F4, symSize: 0x1C4 } + - { offset: 0x14E769, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCfETo', symObjAddr: 0x3554, symBinAddr: 0xBD644, symSize: 0xCC } + - { offset: 0x14E7C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14continueActionyyypFTo', symObjAddr: 0x3620, symBinAddr: 0xBD710, symSize: 0xD4 } + - { offset: 0x14E875, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17loadCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x36F4, symBinAddr: 0xBD7E4, symSize: 0x1F0 } + - { offset: 0x14E8E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17loadCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyFySayAA0F0CGSgcfU_', symObjAddr: 0x3B0C, symBinAddr: 0xBDBFC, symSize: 0x204 } + - { offset: 0x14E9C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC21validateCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x38E4, symBinAddr: 0xBD9D4, symSize: 0x228 } + - { offset: 0x14EABB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC20startLocationManager33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x3D10, symBinAddr: 0xBDE00, symSize: 0x2EC } + - { offset: 0x14EC12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22startLoadingPenguinSDKyyF', symObjAddr: 0x3FFC, symBinAddr: 0xBE0EC, symSize: 0x164 } + - { offset: 0x14ECBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22startLoadingPenguinSDKyyFySSSg_0G09ErrorCodeOSgtcfU_', symObjAddr: 0x4160, symBinAddr: 0xBE250, symSize: 0xF8 } + - { offset: 0x14ED65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x42B0, symBinAddr: 0xBE348, symSize: 0x334 } + - { offset: 0x14EE13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyFySbcfU_', symObjAddr: 0x48E8, symBinAddr: 0xBE980, symSize: 0x140 } + - { offset: 0x14EE65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyFySbcfU_ySSSg_0F09ErrorCodeOSgtcfU_', symObjAddr: 0x4A28, symBinAddr: 0xBEAC0, symSize: 0xE0 } + - { offset: 0x14EEB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC37locationManagerDidChangeAuthorizationyySo010CLLocationF0CF', symObjAddr: 0x45E4, symBinAddr: 0xBE67C, symSize: 0x128 } + - { offset: 0x14EF44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC37locationManagerDidChangeAuthorizationyySo010CLLocationF0CFTo', symObjAddr: 0x470C, symBinAddr: 0xBE7A4, symSize: 0x50 } + - { offset: 0x14EF60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15locationManager_22didChangeAuthorizationySo010CLLocationF0C_So21CLAuthorizationStatusVtF', symObjAddr: 0x475C, symBinAddr: 0xBE7F4, symSize: 0x8 } + - { offset: 0x14EF83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15locationManager_22didChangeAuthorizationySo010CLLocationF0C_So21CLAuthorizationStatusVtFTo', symObjAddr: 0x4764, symBinAddr: 0xBE7FC, symSize: 0x54 } + - { offset: 0x14EFB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14validateInputsyyKF', symObjAddr: 0x47B8, symBinAddr: 0xBE850, symSize: 0x130 } + - { offset: 0x14F071, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tF', symObjAddr: 0x4B08, symBinAddr: 0xBEBA0, symSize: 0x4 } + - { offset: 0x14F085, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tFyyScMYccfU_', symObjAddr: 0x4B0C, symBinAddr: 0xBEBA4, symSize: 0x3A4 } + - { offset: 0x14F3B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC26requestGeofencePermissionsyyF', symObjAddr: 0x4EB0, symBinAddr: 0xBEF48, symSize: 0x1DC } + - { offset: 0x14F529, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tFTo', symObjAddr: 0x508C, symBinAddr: 0xBF124, symSize: 0x28 } + - { offset: 0x14F55C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tF', symObjAddr: 0x50B4, symBinAddr: 0xBF14C, symSize: 0x220 } + - { offset: 0x14F5C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tFyyScMYccfU_', symObjAddr: 0x52D4, symBinAddr: 0xBF36C, symSize: 0x154 } + - { offset: 0x14F63E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tFTo', symObjAddr: 0x5428, symBinAddr: 0xBF4C0, symSize: 0x30 } + - { offset: 0x14F65A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tF', symObjAddr: 0x5458, symBinAddr: 0xBF4F0, symSize: 0x254 } + - { offset: 0x14F6DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tFyyScMYccfU_', symObjAddr: 0x56AC, symBinAddr: 0xBF744, symSize: 0x180 } + - { offset: 0x14F76B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tFTo', symObjAddr: 0x582C, symBinAddr: 0xBF8C4, symSize: 0x30 } + - { offset: 0x14F7BE, size: 0x8, addend: 0x0, symName: '_$sSDsSQR_rlE2eeoiySbSDyxq_G_ABtFZSS_SSTt1g5', symObjAddr: 0x5A20, symBinAddr: 0xBFAB8, symSize: 0x1F8 } + - { offset: 0x14F865, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI5PlaceC_Ttg5', symObjAddr: 0x5C18, symBinAddr: 0xBFCB0, symSize: 0x54 } + - { offset: 0x14F892, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo18NSLayoutConstraintC_Ttg5', symObjAddr: 0x5C6C, symBinAddr: 0xBFD04, symSize: 0x64 } + - { offset: 0x14F8BF, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI18FloatingPanelStateC_Ttg5', symObjAddr: 0x5CD0, symBinAddr: 0xBFD68, symSize: 0x54 } + - { offset: 0x14F8EC, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI9VenueDataC_Ttg5', symObjAddr: 0x5D24, symBinAddr: 0xBFDBC, symSize: 0x54 } + - { offset: 0x14F919, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin5VenueC_Ttg5', symObjAddr: 0x5D78, symBinAddr: 0xBFE10, symSize: 0x54 } + - { offset: 0x14F946, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo28NSPersistentStoreDescriptionC_Ttg5', symObjAddr: 0x5DCC, symBinAddr: 0xBFE64, symSize: 0x64 } + - { offset: 0x14F973, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin8ScheduleC_Ttg5', symObjAddr: 0x5E30, symBinAddr: 0xBFEC8, symSize: 0x54 } + - { offset: 0x14F9A0, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin13GateNodeModelC_Ttg5', symObjAddr: 0x5E84, symBinAddr: 0xBFF1C, symSize: 0x54 } + - { offset: 0x14F9CD, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin5FloorC_Ttg5', symObjAddr: 0x5ED8, symBinAddr: 0xBFF70, symSize: 0x54 } + - { offset: 0x14F9FA, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo6UIViewC_Ttg5', symObjAddr: 0x5F2C, symBinAddr: 0xBFFC4, symSize: 0x64 } + - { offset: 0x14FA27, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI7POIDataC_Ttg5', symObjAddr: 0x5F90, symBinAddr: 0xC0028, symSize: 0x54 } + - { offset: 0x14FA54, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI9LayerTreeO4PathC_Ttg5', symObjAddr: 0x5FE4, symBinAddr: 0xC007C, symSize: 0x54 } + - { offset: 0x14FA81, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI8FavoriteC_Ttg5', symObjAddr: 0x6038, symBinAddr: 0xC00D0, symSize: 0x54 } + - { offset: 0x14FAAE, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO15GraphicsElementC_Ttg5', symObjAddr: 0x608C, symBinAddr: 0xC0124, symSize: 0x54 } + - { offset: 0x14FADB, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo8UISwitchC_Ttg5', symObjAddr: 0x60E0, symBinAddr: 0xC0178, symSize: 0x64 } + - { offset: 0x14FB08, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin4EdgeC_Ttg5', symObjAddr: 0x6144, symBinAddr: 0xC01DC, symSize: 0x54 } + - { offset: 0x14FB35, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin5GnodeC_Ttg5', symObjAddr: 0x6198, symBinAddr: 0xC0230, symSize: 0x54 } + - { offset: 0x14FB62, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin11SubpathEdgeC_Ttg5', symObjAddr: 0x61EC, symBinAddr: 0xC0284, symSize: 0x54 } + - { offset: 0x14FB8F, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO14LinearGradientC_Ttg5', symObjAddr: 0x6240, symBinAddr: 0xC02D8, symSize: 0x54 } + - { offset: 0x14FBBC, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO14RadialGradientC_Ttg5', symObjAddr: 0x6294, symBinAddr: 0xC032C, symSize: 0x54 } + - { offset: 0x14FBE9, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO6FilterC_Ttg5', symObjAddr: 0x62E8, symBinAddr: 0xC0380, symSize: 0x54 } + - { offset: 0x14FC16, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3XMLO7ElementC_Ttg5', symObjAddr: 0x633C, symBinAddr: 0xC03D4, symSize: 0x54 } + - { offset: 0x14FC43, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo10CGColorRefa_Ttg5', symObjAddr: 0x6390, symBinAddr: 0xC0428, symSize: 0x54 } + - { offset: 0x14FC70, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO4PathC_Ttg5', symObjAddr: 0x63E4, symBinAddr: 0xC047C, symSize: 0x54 } + - { offset: 0x14FC9D, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo9CGPathRefa_Ttg5', symObjAddr: 0x6438, symBinAddr: 0xC04D0, symSize: 0x54 } + - { offset: 0x14FCCA, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo11CAAnimationC_Ttg5', symObjAddr: 0x648C, symBinAddr: 0xC0524, symSize: 0x64 } + - { offset: 0x14FCF7, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo8NSNumberC_Ttg5', symObjAddr: 0x64F0, symBinAddr: 0xC0588, symSize: 0x64 } + - { offset: 0x14FD24, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin7SubPathC_Ttg5', symObjAddr: 0x6554, symBinAddr: 0xC05EC, symSize: 0x54 } + - { offset: 0x14FD51, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo22NSCollectionLayoutItemC_Ttg5', symObjAddr: 0x65A8, symBinAddr: 0xC0640, symSize: 0x64 } + - { offset: 0x14FD7E, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo11NSOperationC_Ttg5', symObjAddr: 0x660C, symBinAddr: 0xC06A4, symSize: 0x64 } + - { offset: 0x14FDAB, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo20NSURLSessionDataTaskC_Ttg5', symObjAddr: 0x6670, symBinAddr: 0xC0708, symSize: 0x64 } + - { offset: 0x14FDD8, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo18UIContextualActionC_Ttg5', symObjAddr: 0x66D4, symBinAddr: 0xC076C, symSize: 0x64 } + - { offset: 0x14FE05, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI13MessageDetailC_Ttg5', symObjAddr: 0x6738, symBinAddr: 0xC07D0, symSize: 0x54 } + - { offset: 0x14FE32, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI6CampusC_Ttg5', symObjAddr: 0x678C, symBinAddr: 0xC0824, symSize: 0x54 } + - { offset: 0x14FE5F, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo7CALayerC_Ttg5', symObjAddr: 0x67E0, symBinAddr: 0xC0878, symSize: 0x64 } + - { offset: 0x14FE8C, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI10AlertSheetC_Ttg5', symObjAddr: 0x6844, symBinAddr: 0xC08DC, symSize: 0x54 } + - { offset: 0x14FEB9, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI17SurfaceAppearanceC6ShadowC_Ttg5', symObjAddr: 0x6898, symBinAddr: 0xC0930, symSize: 0x54 } + - { offset: 0x14FF49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtFyAA26GetPoIByRefIDResultElementVSgcfU_TA', symObjAddr: 0x6E50, symBinAddr: 0xC0EE8, symSize: 0x8 } + - { offset: 0x14FF5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15locationManager_22didChangeAuthorizationySo010CLLocationF0C_So21CLAuthorizationStatusVtFTf4dnn_n', symObjAddr: 0x6EFC, symBinAddr: 0xC0F20, symSize: 0xCC } + - { offset: 0x1501BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tFTf4dn_n', symObjAddr: 0x6FC8, symBinAddr: 0xC0FEC, symSize: 0x58C } + - { offset: 0x15059F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tFyyScMYccfU_TA', symObjAddr: 0x7578, symBinAddr: 0xC159C, symSize: 0x8 } + - { offset: 0x1505B3, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x7580, symBinAddr: 0xC15A4, symSize: 0x10 } + - { offset: 0x1505C7, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x7590, symBinAddr: 0xC15B4, symSize: 0x8 } + - { offset: 0x1505DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tFyyScMYccfU_TA', symObjAddr: 0x767C, symBinAddr: 0xC160C, symSize: 0xC } + - { offset: 0x1505EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCMa', symObjAddr: 0x7690, symBinAddr: 0xC1620, symSize: 0x20 } + - { offset: 0x150603, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17cancelLoadingDatayyFyycfU_TA', symObjAddr: 0x76D0, symBinAddr: 0xC1640, symSize: 0x8 } + - { offset: 0x150617, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tFyyScMYccfU_TA', symObjAddr: 0x771C, symBinAddr: 0xC1648, symSize: 0x8 } + - { offset: 0x15062B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22startLoadingPenguinSDKyyFySSSg_0G09ErrorCodeOSgtcfU_TA', symObjAddr: 0x7724, symBinAddr: 0xC1650, symSize: 0xC } + - { offset: 0x15063F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22startLoadingPenguinSDKyyFySSSg_0G09ErrorCodeOSgtcfU_yycfU_TA', symObjAddr: 0x7784, symBinAddr: 0xC16B0, symSize: 0x20 } + - { offset: 0x150653, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyFySbcfU_TA', symObjAddr: 0x77A4, symBinAddr: 0xC16D0, symSize: 0x8 } + - { offset: 0x150667, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyFySbcfU_ySSSg_0F09ErrorCodeOSgtcfU_TA', symObjAddr: 0x77D0, symBinAddr: 0xC16FC, symSize: 0xC } + - { offset: 0x15067B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ValidationErrorOACs0E0AAWl', symObjAddr: 0x77DC, symBinAddr: 0xC1708, symSize: 0x40 } + - { offset: 0x15068F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC06handleaB5Error5error05feralF0yAA0aB7UIErrorO_SbtFyyScMYccfU_TA', symObjAddr: 0x7840, symBinAddr: 0xC176C, symSize: 0x10 } + - { offset: 0x1506A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_TA', symObjAddr: 0x7874, symBinAddr: 0xC17A0, symSize: 0xC } + - { offset: 0x1506B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_yAMcfU_TA', symObjAddr: 0x7888, symBinAddr: 0xC17B4, symSize: 0x10 } + - { offset: 0x1506CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_yAMcfU_yyScMYccfU_TA', symObjAddr: 0x78D8, symBinAddr: 0xC1804, symSize: 0x30 } + - { offset: 0x150713, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctFySSSg_7Penguin9ErrorCodeOSgtcfU_ySayAoJCGSgcfU_TA', symObjAddr: 0x7908, symBinAddr: 0xC1834, symSize: 0x8 } + - { offset: 0x150727, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtFyAA26GetPoIByRefIDResultElementVSgcfU_yyScMYccfU_TA', symObjAddr: 0x794C, symBinAddr: 0xC1878, symSize: 0x10 } + - { offset: 0x15073B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVSgWOy', symObjAddr: 0x795C, symBinAddr: 0xC1888, symSize: 0x14 } + - { offset: 0x15074F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17loadCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyFySayAA0F0CGSgcfU_TA', symObjAddr: 0x79C4, symBinAddr: 0xC189C, symSize: 0x8 } + - { offset: 0x150763, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17loadCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyFySayAA0F0CGSgcfU_yyScMYccfU_TA', symObjAddr: 0x7A30, symBinAddr: 0xC1908, symSize: 0x20 } + - { offset: 0x150777, size: 0x8, addend: 0x0, symName: '_$sSo8CLRegionCSo8NSObjectCSH10ObjectiveCWl', symObjAddr: 0x7B10, symBinAddr: 0xC1928, symSize: 0x54 } + - { offset: 0x1507CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvgZ', symObjAddr: 0x78, symBinAddr: 0xBA260, symSize: 0x68 } + - { offset: 0x150800, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvsZ', symObjAddr: 0xE0, symBinAddr: 0xBA2C8, symSize: 0x74 } + - { offset: 0x15083D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvMZ', symObjAddr: 0x154, symBinAddr: 0xBA33C, symSize: 0x6C } + - { offset: 0x15086A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvM', symObjAddr: 0x318, symBinAddr: 0xBA4BC, symSize: 0x40 } + - { offset: 0x15088F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvM', symObjAddr: 0x438, symBinAddr: 0xBA5DC, symSize: 0x40 } + - { offset: 0x1508B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvM', symObjAddr: 0x4E8, symBinAddr: 0xBA644, symSize: 0x40 } + - { offset: 0x150AF7, size: 0x8, addend: 0x0, symName: '_$sSlsE6prefixy11SubSequenceQzSiFSS_Tg5Tf4ng_n', symObjAddr: 0x68EC, symBinAddr: 0xC0984, symSize: 0x88 } + - { offset: 0x150D64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC5buildyyF', symObjAddr: 0x528, symBinAddr: 0xBA684, symSize: 0x104 } + - { offset: 0x150EA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC10showLoader33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x62C, symBinAddr: 0xBA788, symSize: 0x2AC } + - { offset: 0x151063, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC13clearDatabaseyyF', symObjAddr: 0x8D8, symBinAddr: 0xBAA34, symSize: 0x4 } + - { offset: 0x1510E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17cancelLoadingDatayyF', symObjAddr: 0x8DC, symBinAddr: 0xBAA38, symSize: 0x1EC } + - { offset: 0x15117B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17cancelLoadingDatayyFyycfU_', symObjAddr: 0xAC8, symBinAddr: 0xBAC24, symSize: 0x108 } + - { offset: 0x1511A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14clearDelegates33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0xBD0, symBinAddr: 0xBAD2C, symSize: 0x134 } + - { offset: 0x1511FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17cancelLoadingDatayyFTo', symObjAddr: 0xD04, symBinAddr: 0xBAE60, symSize: 0x28 } + - { offset: 0x151274, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC11setLanguageyACSSF', symObjAddr: 0xD2C, symBinAddr: 0xBAE88, symSize: 0x13C } + - { offset: 0x15134B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC11setLanguageyySSFZ', symObjAddr: 0xE68, symBinAddr: 0xBAFC4, symSize: 0xEC } + - { offset: 0x151497, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC21setDeepLinkComponents6scheme4hostACSS_SStF', symObjAddr: 0xF54, symBinAddr: 0xBB0B0, symSize: 0x19C } + - { offset: 0x1515D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC11setDeepLinkyy10Foundation3URLVSgF', symObjAddr: 0x10F0, symBinAddr: 0xBB24C, symSize: 0x94 } + - { offset: 0x15167E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtF', symObjAddr: 0x120C, symBinAddr: 0xBB368, symSize: 0x104 } + - { offset: 0x1516E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtFyAA26GetPoIByRefIDResultElementVSgcfU_', symObjAddr: 0x1310, symBinAddr: 0xBB46C, symSize: 0x250 } + - { offset: 0x151745, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtFyAA26GetPoIByRefIDResultElementVSgcfU_yyScMYccfU_', symObjAddr: 0x1560, symBinAddr: 0xBB6BC, symSize: 0x314 } + - { offset: 0x151A34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctF', symObjAddr: 0x1874, symBinAddr: 0xBB9D0, symSize: 0x184 } + - { offset: 0x151A80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctFySSSg_7Penguin9ErrorCodeOSgtcfU_', symObjAddr: 0x19F8, symBinAddr: 0xBBB54, symSize: 0xA8 } + - { offset: 0x151B0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctFySSSg_7Penguin9ErrorCodeOSgtcfU_ySayAoJCGSgcfU_', symObjAddr: 0x1AA0, symBinAddr: 0xBBBFC, symSize: 0x234 } + - { offset: 0x151DE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC10getVersionSSyFZ', symObjAddr: 0x1D3C, symBinAddr: 0xBBE30, symSize: 0x14 } + - { offset: 0x151E32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7present4root4viewySo16UIViewControllerC_So0H0CtF', symObjAddr: 0x1D50, symBinAddr: 0xBBE44, symSize: 0x43C } + - { offset: 0x151F3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7dismissyyF', symObjAddr: 0x218C, symBinAddr: 0xBC280, symSize: 0x1D0 } + - { offset: 0x151FE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC12switchCampus8campusIdySi_tF', symObjAddr: 0x235C, symBinAddr: 0xBC450, symSize: 0x16C } + - { offset: 0x15205F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC11setCampusIDyACSiF', symObjAddr: 0x24C8, symBinAddr: 0xBC5BC, symSize: 0xD8 } + - { offset: 0x1520BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14setServiceName04datafG008positionfG0ACSS_SStF', symObjAddr: 0x264C, symBinAddr: 0xBC740, symSize: 0xB0 } + - { offset: 0x15210B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC10setBaseURL04dataG008positionG0ACSS_SStF', symObjAddr: 0x26FC, symBinAddr: 0xBC7F0, symSize: 0x17C } + - { offset: 0x152159, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC24setSimulationModeEnabled8isEnableACSb_tF', symObjAddr: 0x2920, symBinAddr: 0xBCA14, symSize: 0x9C } + - { offset: 0x1521B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctF', symObjAddr: 0x2A80, symBinAddr: 0xBCB74, symSize: 0xD8 } + - { offset: 0x152215, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_', symObjAddr: 0x2B58, symBinAddr: 0xBCC4C, symSize: 0x1F8 } + - { offset: 0x152286, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_', symObjAddr: 0x2D50, symBinAddr: 0xBCE44, symSize: 0x98 } + - { offset: 0x1522D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_yAMcfU_', symObjAddr: 0x2DE8, symBinAddr: 0xBCEDC, symSize: 0x248 } + - { offset: 0x15239D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC10getVersionSSSgyF', symObjAddr: 0x3278, symBinAddr: 0xBD368, symSize: 0x13C } + - { offset: 0x1523D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCACycfc', symObjAddr: 0x33B4, symBinAddr: 0xBD4A4, symSize: 0x14C } + - { offset: 0x1523FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCACycfcTo', symObjAddr: 0x3500, symBinAddr: 0xBD5F0, symSize: 0x20 } + - { offset: 0x152412, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCfD', symObjAddr: 0x3520, symBinAddr: 0xBD610, symSize: 0x34 } + - { offset: 0x152794, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC13clearDatabaseyyFTf4d_n', symObjAddr: 0x6974, symBinAddr: 0xC0A0C, symSize: 0x7C } + - { offset: 0x152817, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17clearDataIfNeededyyFTf4d_n', symObjAddr: 0x69F0, symBinAddr: 0xC0A88, symSize: 0x24C } + - { offset: 0x15290C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC18storeConfigurationyyFTf4d_n', symObjAddr: 0x6C3C, symBinAddr: 0xC0CD4, symSize: 0x1E8 } + - { offset: 0x1530F9, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFSay7Penguin13GateNodeModelCG_Tg5075$s8PenNavUI12GatesManagerC06updateD4Data3for5gatesy7Penguin5VenueC_SayAA0K4e12VGztFSbAG0L9fG7CXEfU2_Say0iJ2UI0rE0VGSiTf1cn_n', symObjAddr: 0x0, symBinAddr: 0xC19D0, symSize: 0x150 } + - { offset: 0x15311D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC14sharedInstance33_17E138AFC5ED4208587E3B78D3E802C7LLACSgvpZ', symObjAddr: 0x2AE8, symBinAddr: 0x377A78, symSize: 0x0 } + - { offset: 0x1536CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerCMa', symObjAddr: 0x1B04, symBinAddr: 0xC34B0, symSize: 0x20 } + - { offset: 0x15373A, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF8PenNavUI9VenueGateV_Tg503$s8ef33UI12GatesManagerC04sortD0yySayAA9hI17VGzFSbAF_AFtXEfU_Tf1cn_n', symObjAddr: 0x1B24, symBinAddr: 0xC34D0, symSize: 0xF4 } + - { offset: 0x153975, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI9VenueGateV_Tg503$s8ef33UI12GatesManagerC04sortD0yySayAA9hI17VGzFSbAF_AFtXEfU_Tf1nnncn_n', symObjAddr: 0x1C18, symBinAddr: 0xC35C4, symSize: 0x518 } + - { offset: 0x153E87, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry8PenNavUI9VenueGateVG_Tg503$s8ij33UI12GatesManagerC04sortD0yySayAA9lM17VGzFSbAF_AFtXEfU_Tf1nncn_n', symObjAddr: 0x2130, symBinAddr: 0xC3ADC, symSize: 0x114 } + - { offset: 0x153FEB, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI9VenueGateV_Tg503$s8fg33UI12GatesManagerC04sortD0yySayAA9iJ17VGzFSbAF_AFtXEfU_Tf1nncn_n', symObjAddr: 0x2244, symBinAddr: 0xC3BF0, symSize: 0x274 } + - { offset: 0x154386, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI9VenueGateV_Tg503$s8gh33UI12GatesManagerC04sortD0yySayAA9jK17VGzFSbAF_AFtXEfU_Tf1nnnnc_n', symObjAddr: 0x24B8, symBinAddr: 0xC3E64, symSize: 0x2A4 } + - { offset: 0x15449B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVWOh', symObjAddr: 0x279C, symBinAddr: 0xC4108, symSize: 0x34 } + - { offset: 0x154536, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFSay7Penguin13GateNodeModelCG_Tg5075$s8PenNavUI12GatesManagerC06updateD4Data3for5gatesy7Penguin5VenueC_SayAA0K4e12VGztFSbAG0L9fG7CXEfU2_Say0iJ2UI0rE0VGSiTf1cn_n', symObjAddr: 0x0, symBinAddr: 0xC19D0, symSize: 0x150 } + - { offset: 0x1546AE, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFSay8PenNavUI9VenueGateVG_Tg503$s8de33UI12GatesManagerC04sortD0yySayAA9gH17VGzFSbAF_AFtXEfU_Tf1cn_n', symObjAddr: 0x150, symBinAddr: 0xC1B20, symSize: 0x6C } + - { offset: 0x1549E0, size: 0x8, addend: 0x0, symName: '_$ss14_ArrayProtocolPsE6filterySay7ElementQzGSbAEKXEKFSay7Penguin13GateNodeModelCG_Tg5075$s8PenNavUI12GatesManagerC06updateD4Data3for5gatesy7Penguin5VenueC_SayAA0K4f12VGztFSbAG0L9gH7CXEfU0_Say0jK2UI0sF0VGSiTf1cn_nTf4gnn_n', symObjAddr: 0x27D0, symBinAddr: 0xC413C, symSize: 0x244 } + - { offset: 0x154C88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC06updateD4Data3for5gatesy7Penguin5VenueC_SayAA0K4GateVGztF', symObjAddr: 0x117C, symBinAddr: 0xC2B4C, symSize: 0x964 } + - { offset: 0x15597B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD9ByPlaceIdySay7Penguin13GateNodeModelCGSiSgF', symObjAddr: 0x1BC, symBinAddr: 0xC1B8C, symSize: 0x4A0 } + - { offset: 0x155F8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD9ByFloorIdySay7Penguin13GateNodeModelCGSiSgF', symObjAddr: 0x65C, symBinAddr: 0xC202C, symSize: 0x1A8 } + - { offset: 0x1561AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD10ByFloorIdsySay7Penguin13GateNodeModelCGSaySiGF', symObjAddr: 0x804, symBinAddr: 0xC21D4, symSize: 0x1B4 } + - { offset: 0x1564BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD09isOutdoor0G13FloorGateNodeSay7Penguin0jK5ModelCGSb_SbtF', symObjAddr: 0x9B8, symBinAddr: 0xC2388, symSize: 0x1CC } + - { offset: 0x15670A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC09getCampusD0Say7Penguin13GateNodeModelCGyF', symObjAddr: 0xB84, symBinAddr: 0xC2554, symSize: 0x198 } + - { offset: 0x1569C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD18SortedByTravelTime3for6origin19withNavigationAvoid10completiony7Penguin5VenueCSg_AA5PlaceCSgSbySayANGctFySayAA0R4GateVGcfU_', symObjAddr: 0xD1C, symBinAddr: 0xC26EC, symSize: 0x460 } + - { offset: 0x156DF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC04sortD0yySayAA9VenueGateVGzFTf4nd_n', symObjAddr: 0x2A14, symBinAddr: 0xC4380, symSize: 0xD4 } + - { offset: 0x1572E6, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintC8PenNavUIE14arabicConstant12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x0, symBinAddr: 0xC4454, symSize: 0x8 } + - { offset: 0x1572FE, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintC8PenNavUIE14arabicConstant12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x0, symBinAddr: 0xC4454, symSize: 0x8 } + - { offset: 0x15731A, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintC8PenNavUIE14arabicConstant12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x8, symBinAddr: 0xC445C, symSize: 0x38 } + - { offset: 0x15734C, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintC8PenNavUIE14arabicConstant12CoreGraphics7CGFloatVvs', symObjAddr: 0x40, symBinAddr: 0xC4494, symSize: 0x90 } + - { offset: 0x1577E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xC4524, symSize: 0x10 } + - { offset: 0x157A1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewCfETo', symObjAddr: 0x5DC, symBinAddr: 0xC4B00, symSize: 0x38 } + - { offset: 0x157A4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewCMa', symObjAddr: 0x614, symBinAddr: 0xC4B38, symSize: 0x20 } + - { offset: 0x157B36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xC4524, symSize: 0x10 } + - { offset: 0x157B4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xC4524, symSize: 0x10 } + - { offset: 0x157B94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC07contentF0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0xC4534, symSize: 0x34 } + - { offset: 0x157BE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xC4568, symSize: 0x10 } + - { offset: 0x157BFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xC4568, symSize: 0x10 } + - { offset: 0x157C3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0xC4578, symSize: 0x34 } + - { offset: 0x157C9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x88, symBinAddr: 0xC45AC, symSize: 0xA0 } + - { offset: 0x157D17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x128, symBinAddr: 0xC464C, symSize: 0x8C } + - { offset: 0x157D4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1B4, symBinAddr: 0xC46D8, symSize: 0x28 } + - { offset: 0x157D9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC10commonInit33_5C7060CF019BF0F945901014F8A98CB4LLyyF', symObjAddr: 0x1DC, symBinAddr: 0xC4700, symSize: 0x308 } + - { offset: 0x157EDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC03setD0yy7Penguin0D0CSgF', symObjAddr: 0x4E4, symBinAddr: 0xC4A08, symSize: 0xC8 } + - { offset: 0x157F31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewCfD', symObjAddr: 0x5AC, symBinAddr: 0xC4AD0, symSize: 0x30 } + - { offset: 0x1582E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xC4B58, symSize: 0x10 } + - { offset: 0x158CB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCfE', symObjAddr: 0x14C0, symBinAddr: 0xC6018, symSize: 0x84 } + - { offset: 0x158CDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCfETo', symObjAddr: 0x1574, symBinAddr: 0xC60CC, symSize: 0x90 } + - { offset: 0x158D0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCMa', symObjAddr: 0x1604, symBinAddr: 0xC615C, symSize: 0x20 } + - { offset: 0x158D55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1624, symBinAddr: 0xC617C, symSize: 0x48 } + - { offset: 0x158DFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x166C, symBinAddr: 0xC61C4, symSize: 0x24 } + - { offset: 0x158E3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_22viewForHeaderInSectionSo6UIViewCSgSo07UITableF0C_SitFTo', symObjAddr: 0x1690, symBinAddr: 0xC61E8, symSize: 0x60 } + - { offset: 0x1590CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x16F0, symBinAddr: 0xC6248, symSize: 0x528 } + - { offset: 0x1595F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1C18, symBinAddr: 0xC6770, symSize: 0xC8 } + - { offset: 0x159615, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_24heightForHeaderInSection12CoreGraphics7CGFloatVSo07UITableF0C_SitFTo', symObjAddr: 0x1CE0, symBinAddr: 0xC6838, symSize: 0x8 } + - { offset: 0x15965B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1CE8, symBinAddr: 0xC6840, symSize: 0x110 } + - { offset: 0x1596F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1DF8, symBinAddr: 0xC6950, symSize: 0x218 } + - { offset: 0x1598E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2010, symBinAddr: 0xC6B68, symSize: 0xC0 } + - { offset: 0x159904, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x21A8, symBinAddr: 0xC6C28, symSize: 0x34 } + - { offset: 0x159937, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x21DC, symBinAddr: 0xC6C5C, symSize: 0x24 } + - { offset: 0x1599E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC10setupPanelyyF', symObjAddr: 0x2200, symBinAddr: 0xC6C80, symSize: 0x298 } + - { offset: 0x159C80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC10setupPanelyyFTo', symObjAddr: 0x2498, symBinAddr: 0xC6F18, symSize: 0x28 } + - { offset: 0x159C9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC18expandVenueSection7venueId0H0ySi_SbtF', symObjAddr: 0x24C0, symBinAddr: 0xC6F40, symSize: 0x420 } + - { offset: 0x15A28A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x28E0, symBinAddr: 0xC7360, symSize: 0x4 } + - { offset: 0x15A2AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x28E0, symBinAddr: 0xC7360, symSize: 0x4 } + - { offset: 0x15A2BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x2B58, symBinAddr: 0xC75D8, symSize: 0xC8 } + - { offset: 0x15A3C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_22viewForHeaderInSectionSo6UIViewCSgSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x2C20, symBinAddr: 0xC76A0, symSize: 0x240 } + - { offset: 0x15A576, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0x2E60, symBinAddr: 0xC78E0, symSize: 0x1C0 } + - { offset: 0x15A775, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xC4B58, symSize: 0x10 } + - { offset: 0x15A78D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xC4B58, symSize: 0x10 } + - { offset: 0x15A7D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0xC4B68, symSize: 0x34 } + - { offset: 0x15A8B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC13selectedVenueAA0I8CardDataVSgvg', symObjAddr: 0x44, symBinAddr: 0xC4B9C, symSize: 0xE0 } + - { offset: 0x15A9F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC11viewDidLoadyyF', symObjAddr: 0x124, symBinAddr: 0xC4C7C, symSize: 0x2B0 } + - { offset: 0x15AC28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x3D4, symBinAddr: 0xC4F2C, symSize: 0x28 } + - { offset: 0x15AD28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC8loadDatayyF', symObjAddr: 0x3FC, symBinAddr: 0xC4F54, symSize: 0x4E0 } + - { offset: 0x15B353, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC012loadSelectedD0yyF', symObjAddr: 0x8DC, symBinAddr: 0xC5434, symSize: 0x78C } + - { offset: 0x15BCFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC06selectD0yyF', symObjAddr: 0x1068, symBinAddr: 0xC5BC0, symSize: 0x94 } + - { offset: 0x15BD6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC06selectD0yyFTo', symObjAddr: 0x10FC, symBinAddr: 0xC5C54, symSize: 0x28 } + - { offset: 0x15BD93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC6cancelyyF', symObjAddr: 0x1124, symBinAddr: 0xC5C7C, symSize: 0x98 } + - { offset: 0x15BE0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC6cancelyyFTo', symObjAddr: 0x11BC, symBinAddr: 0xC5D14, symSize: 0x28 } + - { offset: 0x15BE26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x11E4, symBinAddr: 0xC5D3C, symSize: 0x140 } + - { offset: 0x15BE7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x1324, symBinAddr: 0xC5E7C, symSize: 0x60 } + - { offset: 0x15BEC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1384, symBinAddr: 0xC5EDC, symSize: 0x114 } + - { offset: 0x15BF0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1498, symBinAddr: 0xC5FF0, symSize: 0x28 } + - { offset: 0x15BF20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCfD', symObjAddr: 0x1544, symBinAddr: 0xC609C, symSize: 0x30 } + - { offset: 0x15C379, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC03setdE4Data5venue8expanded13selectedFloor8delegatey7Penguin0E0C_SbAI0L0CSgAA0dE15SectionDelegate_ptFTf4nnnen_nAA0L22SelectorViewControllerC_Tg5', symObjAddr: 0x28E4, symBinAddr: 0xC7364, symSize: 0x274 } + - { offset: 0x15CD01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCfE', symObjAddr: 0xEB4, symBinAddr: 0xC8954, symSize: 0x64 } + - { offset: 0x15CD2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCfETo', symObjAddr: 0xF48, symBinAddr: 0xC89E8, symSize: 0x70 } + - { offset: 0x15CD5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCMa', symObjAddr: 0xFB8, symBinAddr: 0xC8A58, symSize: 0x20 } + - { offset: 0x15CD71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0xFD8, symBinAddr: 0xC8A78, symSize: 0x8 } + - { offset: 0x15CDDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0xFE0, symBinAddr: 0xC8A80, symSize: 0x78 } + - { offset: 0x15CFEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1058, symBinAddr: 0xC8AF8, symSize: 0x4B0 } + - { offset: 0x15D376, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1508, symBinAddr: 0xC8FA8, symSize: 0xC8 } + - { offset: 0x15D3D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x15D0, symBinAddr: 0xC9070, symSize: 0xFC } + - { offset: 0x15D45A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x17A4, symBinAddr: 0xC916C, symSize: 0x34 } + - { offset: 0x15D48D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x17D8, symBinAddr: 0xC91A0, symSize: 0x24 } + - { offset: 0x15D538, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x17FC, symBinAddr: 0xC91C4, symSize: 0x2A8 } + - { offset: 0x15D7D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x1AA4, symBinAddr: 0xC946C, symSize: 0x28 } + - { offset: 0x15D7F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC22didTapDirectionsActionyyF', symObjAddr: 0x1ACC, symBinAddr: 0xC9494, symSize: 0x40C } + - { offset: 0x15D9E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC22didTapDirectionsActionyyFyycfU_', symObjAddr: 0x1ED8, symBinAddr: 0xC98A0, symSize: 0x13C } + - { offset: 0x15DA75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC22didTapDirectionsActionyyFTo', symObjAddr: 0x2014, symBinAddr: 0xC99DC, symSize: 0x28 } + - { offset: 0x15DA91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC17didTapPhoneActionyyF', symObjAddr: 0x203C, symBinAddr: 0xC9A04, symSize: 0x234 } + - { offset: 0x15DB75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC17didTapPhoneActionyyFTo', symObjAddr: 0x2270, symBinAddr: 0xC9C38, symSize: 0x28 } + - { offset: 0x15DB91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC19didTapWebsiteActionyyF', symObjAddr: 0x2298, symBinAddr: 0xC9C60, symSize: 0x3CC } + - { offset: 0x15DCC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC19didTapWebsiteActionyyFTo', symObjAddr: 0x2664, symBinAddr: 0xCA02C, symSize: 0x28 } + - { offset: 0x15DD04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16didTapMailActionyyF', symObjAddr: 0x268C, symBinAddr: 0xCA054, symSize: 0x1BC } + - { offset: 0x15DE1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16didTapMailActionyyFTo', symObjAddr: 0x2848, symBinAddr: 0xCA210, symSize: 0x28 } + - { offset: 0x15DE62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC011mailComposeG0_13didFinishWith5errorySo06MFMailifG0C_So0nI6ResultVs5Error_pSgtFTo', symObjAddr: 0x2870, symBinAddr: 0xCA238, symSize: 0x18 } + - { offset: 0x15DEA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC25adaptivePresentationStyle3forSo07UIModaliJ0VSo014UIPresentationG0C_tFTo', symObjAddr: 0x2888, symBinAddr: 0xCA250, symSize: 0x8 } + - { offset: 0x15DED2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x2890, symBinAddr: 0xCA258, symSize: 0x4 } + - { offset: 0x15DEF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x2890, symBinAddr: 0xCA258, symSize: 0x4 } + - { offset: 0x15DF04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0x2894, symBinAddr: 0xCA25C, symSize: 0x1C0 } + - { offset: 0x15E0E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC22didTapDirectionsActionyyFyycfU_TA', symObjAddr: 0x2BA4, symBinAddr: 0xCA4AC, symSize: 0x30 } + - { offset: 0x15E0FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyFySo7UIImageCSgcfU_TA', symObjAddr: 0x2BFC, symBinAddr: 0xCA4DC, symSize: 0x8 } + - { offset: 0x15E111, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyFySo7UIImageCSgcfU_yyScMYccfU_TA', symObjAddr: 0x2CC8, symBinAddr: 0xCA4E4, symSize: 0x8 } + - { offset: 0x15E125, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2CD0, symBinAddr: 0xCA4EC, symSize: 0x10 } + - { offset: 0x15E139, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2CE0, symBinAddr: 0xCA4FC, symSize: 0x8 } + - { offset: 0x15E39E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xC7AA0, symSize: 0x20 } + - { offset: 0x15E3FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xC7AC0, symSize: 0x14 } + - { offset: 0x15E44F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC12showsActionsSbvg', symObjAddr: 0x34, symBinAddr: 0xC7AD4, symSize: 0x8C } + - { offset: 0x15E475, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC12showsActionsSbvg', symObjAddr: 0x34, symBinAddr: 0xC7AD4, symSize: 0x8C } + - { offset: 0x15E4CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16showsDescriptionSbvg', symObjAddr: 0xC0, symBinAddr: 0xC7B60, symSize: 0xDC } + - { offset: 0x15E565, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x19C, symBinAddr: 0xC7C3C, symSize: 0xF4 } + - { offset: 0x15E632, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x290, symBinAddr: 0xC7D30, symSize: 0x28 } + - { offset: 0x15E934, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyF', symObjAddr: 0x2B8, symBinAddr: 0xC7D58, symSize: 0x6A4 } + - { offset: 0x15EE15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyFySo7UIImageCSgcfU_', symObjAddr: 0x95C, symBinAddr: 0xC83FC, symSize: 0x238 } + - { offset: 0x15EE96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyFySo7UIImageCSgcfU_yyScMYccfU_', symObjAddr: 0xB94, symBinAddr: 0xC8634, symSize: 0x7C } + - { offset: 0x15EF44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC7dismissyySo8UIButtonCFTo', symObjAddr: 0xC10, symBinAddr: 0xC86B0, symSize: 0x88 } + - { offset: 0x15EF74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xC98, symBinAddr: 0xC8738, symSize: 0xDC } + - { offset: 0x15EFB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xD74, symBinAddr: 0xC8814, symSize: 0x60 } + - { offset: 0x15EFC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xDD4, symBinAddr: 0xC8874, symSize: 0xB8 } + - { offset: 0x15EFFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xE8C, symBinAddr: 0xC892C, symSize: 0x28 } + - { offset: 0x15F010, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCfD', symObjAddr: 0xF18, symBinAddr: 0xC89B8, symSize: 0x30 } + - { offset: 0x15F803, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvgTo', symObjAddr: 0x0, symBinAddr: 0xCA504, symSize: 0x8 } + - { offset: 0x15F8B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutCMa', symObjAddr: 0xF0, symBinAddr: 0xCA5F4, symSize: 0x20 } + - { offset: 0x15F8D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvgTo', symObjAddr: 0x0, symBinAddr: 0xCA504, symSize: 0x8 } + - { offset: 0x15F906, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutCACycfcTo', symObjAddr: 0x8, symBinAddr: 0xCA50C, symSize: 0x3C } + - { offset: 0x15F996, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x44, symBinAddr: 0xCA548, symSize: 0x7C } + - { offset: 0x15F9D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutCfD', symObjAddr: 0xC0, symBinAddr: 0xCA5C4, symSize: 0x30 } + - { offset: 0x15FD6B, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerC8PenNavUIE7closureAByyc_tcfC', symObjAddr: 0x0, symBinAddr: 0xCA614, symSize: 0x128 } + - { offset: 0x15FD8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10closureKey33_20A0826EEFCB6382929B746827715658LLs5UInt8Vvp', symObjAddr: 0x2E0, symBinAddr: 0x377CD8, symSize: 0x0 } + - { offset: 0x15FD9D, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerC8PenNavUIE7closureAByyc_tcfC', symObjAddr: 0x0, symBinAddr: 0xCA614, symSize: 0x128 } + - { offset: 0x15FDF4, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerC8PenNavUIE9handleTap33_20A0826EEFCB6382929B746827715658LLyyF', symObjAddr: 0x128, symBinAddr: 0xCA73C, symSize: 0xDC } + - { offset: 0x15FE38, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerC8PenNavUIE9handleTap33_20A0826EEFCB6382929B746827715658LLyyFTo', symObjAddr: 0x204, symBinAddr: 0xCA818, symSize: 0x28 } + - { offset: 0x1603F5, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUIAA15LocalizedObjectVRszlE03getD4TextSSSgyF', symObjAddr: 0x0, symBinAddr: 0xCA864, symSize: 0x1D8 } + - { offset: 0x16095F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseCMa', symObjAddr: 0x3A0, symBinAddr: 0xCAB20, symSize: 0x20 } + - { offset: 0x161246, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataCMa', symObjAddr: 0x1C54, symBinAddr: 0xCC1EC, symSize: 0x20 } + - { offset: 0x161318, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailCMa', symObjAddr: 0x3150, symBinAddr: 0xCD5E8, symSize: 0x20 } + - { offset: 0x16132C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwxx', symObjAddr: 0x32AC, symBinAddr: 0xCD744, symSize: 0x30 } + - { offset: 0x161340, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwcp', symObjAddr: 0x32DC, symBinAddr: 0xCD774, symSize: 0x64 } + - { offset: 0x161354, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwca', symObjAddr: 0x3340, symBinAddr: 0xCD7D8, symSize: 0x9C } + - { offset: 0x161368, size: 0x8, addend: 0x0, symName: ___swift_memcpy56_8, symObjAddr: 0x33DC, symBinAddr: 0xCD874, symSize: 0x1C } + - { offset: 0x16137C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwta', symObjAddr: 0x33F8, symBinAddr: 0xCD890, symSize: 0x64 } + - { offset: 0x161390, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwet', symObjAddr: 0x345C, symBinAddr: 0xCD8F4, symSize: 0x5C } + - { offset: 0x1613A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwst', symObjAddr: 0x34B8, symBinAddr: 0xCD950, symSize: 0x60 } + - { offset: 0x1613B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVMa', symObjAddr: 0x3518, symBinAddr: 0xCD9B0, symSize: 0x10 } + - { offset: 0x1613CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwcp', symObjAddr: 0x3554, symBinAddr: 0xCD9C0, symSize: 0x3C } + - { offset: 0x1613E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwca', symObjAddr: 0x3590, symBinAddr: 0xCD9FC, symSize: 0x7C } + - { offset: 0x1613F4, size: 0x8, addend: 0x0, symName: ___swift_memcpy64_8, symObjAddr: 0x360C, symBinAddr: 0xCDA78, symSize: 0x14 } + - { offset: 0x161408, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwta', symObjAddr: 0x3620, symBinAddr: 0xCDA8C, symSize: 0x4C } + - { offset: 0x16141C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwet', symObjAddr: 0x366C, symBinAddr: 0xCDAD8, symSize: 0x48 } + - { offset: 0x161430, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwst', symObjAddr: 0x36B4, symBinAddr: 0xCDB20, symSize: 0x50 } + - { offset: 0x161444, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVMa', symObjAddr: 0x3704, symBinAddr: 0xCDB70, symSize: 0x10 } + - { offset: 0x161458, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwxx', symObjAddr: 0x3714, symBinAddr: 0xCDB80, symSize: 0x40 } + - { offset: 0x16146C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwcp', symObjAddr: 0x3754, symBinAddr: 0xCDBC0, symSize: 0x84 } + - { offset: 0x161480, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwca', symObjAddr: 0x37D8, symBinAddr: 0xCDC44, symSize: 0xCC } + - { offset: 0x161494, size: 0x8, addend: 0x0, symName: ___swift_memcpy80_8, symObjAddr: 0x38A4, symBinAddr: 0xCDD10, symSize: 0x1C } + - { offset: 0x1614A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwta', symObjAddr: 0x38C0, symBinAddr: 0xCDD2C, symSize: 0x7C } + - { offset: 0x1614BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwet', symObjAddr: 0x393C, symBinAddr: 0xCDDA8, symSize: 0x48 } + - { offset: 0x1614D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwst', symObjAddr: 0x3984, symBinAddr: 0xCDDF0, symSize: 0x54 } + - { offset: 0x1614E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVMa', symObjAddr: 0x39D8, symBinAddr: 0xCDE44, symSize: 0x10 } + - { offset: 0x1614F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVwet', symObjAddr: 0x39F4, symBinAddr: 0xCDE54, symSize: 0x48 } + - { offset: 0x16150C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVwst', symObjAddr: 0x3A3C, symBinAddr: 0xCDE9C, symSize: 0x40 } + - { offset: 0x161520, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVMa', symObjAddr: 0x3A7C, symBinAddr: 0xCDEDC, symSize: 0x10 } + - { offset: 0x161534, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectVMa', symObjAddr: 0x3B08, symBinAddr: 0xCDF5C, symSize: 0x10 } + - { offset: 0x161548, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectVMa', symObjAddr: 0x3BDC, symBinAddr: 0xCE030, symSize: 0x10 } + - { offset: 0x16155C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVwet', symObjAddr: 0x3D10, symBinAddr: 0xCE164, symSize: 0x48 } + - { offset: 0x161570, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVwst', symObjAddr: 0x3D58, symBinAddr: 0xCE1AC, symSize: 0x40 } + - { offset: 0x161584, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVMa', symObjAddr: 0x3D98, symBinAddr: 0xCE1EC, symSize: 0x10 } + - { offset: 0x161598, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUIAA15LocalizedObjectVRszlE26getDefaultLocalizationText33_121BF5CBCE29A3B1F134342B29E6E083LLSSSgyF', symObjAddr: 0x4364, symBinAddr: 0xCE6C4, symSize: 0x1B8 } + - { offset: 0x161A83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVAA13TagDataSourceA2aDP5tagIdSivgTW', symObjAddr: 0x4C64, symBinAddr: 0xCEFB8, symSize: 0x14 } + - { offset: 0x161AC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVAA13TagDataSourceA2aDP7tagNameSSvgTW', symObjAddr: 0x4C78, symBinAddr: 0xCEFCC, symSize: 0xD8 } + - { offset: 0x161AFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs0I3KeyAAWl', symObjAddr: 0x4DB8, symBinAddr: 0xCF0A4, symSize: 0x40 } + - { offset: 0x161B12, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI7POIDataCGSayxGSesSeRzlWl', symObjAddr: 0x4E18, symBinAddr: 0xCF0E4, symSize: 0x8C } + - { offset: 0x161B26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs0E3KeyAAWl', symObjAddr: 0x4EA4, symBinAddr: 0xCF170, symSize: 0x40 } + - { offset: 0x161B3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVSgWOe', symObjAddr: 0x4F20, symBinAddr: 0xCF1B0, symSize: 0x30 } + - { offset: 0x161B4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectVAESeAAWl', symObjAddr: 0x4F50, symBinAddr: 0xCF1E0, symSize: 0x40 } + - { offset: 0x161B62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectVAESeAAWl', symObjAddr: 0x4F90, symBinAddr: 0xCF220, symSize: 0x40 } + - { offset: 0x161B76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVAESeAAWl', symObjAddr: 0x4FD0, symBinAddr: 0xCF260, symSize: 0x40 } + - { offset: 0x161B8A, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI15LocalizedObjectVGSayxGSesSeRzlWl', symObjAddr: 0x5010, symBinAddr: 0xCF2A0, symSize: 0x74 } + - { offset: 0x161B9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVAESeAAWl', symObjAddr: 0x50C4, symBinAddr: 0xCF314, symSize: 0x40 } + - { offset: 0x161BB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVAESeAAWl', symObjAddr: 0x5104, symBinAddr: 0xCF354, symSize: 0x40 } + - { offset: 0x161BC6, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI16CategoriesDetailCGSayxGSesSeRzlWl', symObjAddr: 0x5144, symBinAddr: 0xCF394, symSize: 0x8C } + - { offset: 0x161BDA, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI9AmenitiesVGSayxGSesSeRzlWl', symObjAddr: 0x52B0, symBinAddr: 0xCF420, symSize: 0x74 } + - { offset: 0x161BEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVACSeAAWl', symObjAddr: 0x5324, symBinAddr: 0xCF494, symSize: 0x40 } + - { offset: 0x161C02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs0F3KeyAAWl', symObjAddr: 0x5364, symBinAddr: 0xCF4D4, symSize: 0x40 } + - { offset: 0x161C16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOAEs0E3KeyAAWl', symObjAddr: 0x7258, symBinAddr: 0xD1210, symSize: 0x40 } + - { offset: 0x161C2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVWOh', symObjAddr: 0x72CC, symBinAddr: 0xD1250, symSize: 0x2C } + - { offset: 0x161C3E, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI15LocalizedObjectVGSayxGSEsSERzlWl', symObjAddr: 0x72F8, symBinAddr: 0xD127C, symSize: 0x74 } + - { offset: 0x161C52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x73AC, symBinAddr: 0xD12F0, symSize: 0x40 } + - { offset: 0x161C66, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI7POIDataC11PointObjectVGSayxGSesSeRzlWl', symObjAddr: 0x73EC, symBinAddr: 0xD1330, symSize: 0x74 } + - { offset: 0x161C7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVAESeAAWl', symObjAddr: 0x74A4, symBinAddr: 0xD13A4, symSize: 0x40 } + - { offset: 0x161C95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVWOc', symObjAddr: 0x74E4, symBinAddr: 0xD13E4, symSize: 0x40 } + - { offset: 0x161CC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVWOh', symObjAddr: 0x7524, symBinAddr: 0xD1424, symSize: 0x28 } + - { offset: 0x161CEE, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI7POIDataC11PointObjectVGSayxGSEsSERzlWl', symObjAddr: 0x754C, symBinAddr: 0xD144C, symSize: 0x74 } + - { offset: 0x161D02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVAESEAAWl', symObjAddr: 0x75C0, symBinAddr: 0xD14C0, symSize: 0x40 } + - { offset: 0x161D16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0H3KeyAAWl', symObjAddr: 0x7600, symBinAddr: 0xD1500, symSize: 0x40 } + - { offset: 0x161D2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVWOc', symObjAddr: 0x7640, symBinAddr: 0xD1540, symSize: 0x34 } + - { offset: 0x161D3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVWOh', symObjAddr: 0x7674, symBinAddr: 0xD1574, symSize: 0x2C } + - { offset: 0x161D52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x76A0, symBinAddr: 0xD15A0, symSize: 0x40 } + - { offset: 0x161D66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x76E0, symBinAddr: 0xD15E0, symSize: 0x40 } + - { offset: 0x161D7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x7720, symBinAddr: 0xD1620, symSize: 0x40 } + - { offset: 0x161D8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs0F3KeyAAWl', symObjAddr: 0x7760, symBinAddr: 0xD1660, symSize: 0x40 } + - { offset: 0x161DA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectVAESEAAWl', symObjAddr: 0x77A0, symBinAddr: 0xD16A0, symSize: 0x40 } + - { offset: 0x161DB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectVAESEAAWl', symObjAddr: 0x77E0, symBinAddr: 0xD16E0, symSize: 0x40 } + - { offset: 0x161DCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVAESEAAWl', symObjAddr: 0x7820, symBinAddr: 0xD1720, symSize: 0x40 } + - { offset: 0x161DDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVAESEAAWl', symObjAddr: 0x7860, symBinAddr: 0xD1760, symSize: 0x40 } + - { offset: 0x161DF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVAESEAAWl', symObjAddr: 0x78E4, symBinAddr: 0xD17A0, symSize: 0x40 } + - { offset: 0x161E06, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI16CategoriesDetailCGSayxGSEsSERzlWl', symObjAddr: 0x7924, symBinAddr: 0xD17E0, symSize: 0x8C } + - { offset: 0x161E1A, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI9AmenitiesVGSayxGSEsSERzlWl', symObjAddr: 0x7AB0, symBinAddr: 0xD186C, symSize: 0x74 } + - { offset: 0x161E2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVACSEAAWl', symObjAddr: 0x7B24, symBinAddr: 0xD18E0, symSize: 0x40 } + - { offset: 0x161E42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVSgWOe', symObjAddr: 0x7B64, symBinAddr: 0xD1920, symSize: 0x5C } + - { offset: 0x161E56, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI7POIDataCGSayxGSEsSERzlWl', symObjAddr: 0x7BC0, symBinAddr: 0xD197C, symSize: 0x8C } + - { offset: 0x161E6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7CBC, symBinAddr: 0xD1A10, symSize: 0x10 } + - { offset: 0x161E7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7CD0, symBinAddr: 0xD1A20, symSize: 0x10 } + - { offset: 0x161E92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7CE4, symBinAddr: 0xD1A30, symSize: 0x10 } + - { offset: 0x161EA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7D10, symBinAddr: 0xD1A48, symSize: 0x10 } + - { offset: 0x161EBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOwet', symObjAddr: 0x7D20, symBinAddr: 0xD1A58, symSize: 0x90 } + - { offset: 0x161ECE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOwst', symObjAddr: 0x7DB0, symBinAddr: 0xD1AE8, symSize: 0xB0 } + - { offset: 0x161EE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7E64, symBinAddr: 0xD1B98, symSize: 0x10 } + - { offset: 0x161EF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7FB8, symBinAddr: 0xD1BA8, symSize: 0x10 } + - { offset: 0x161F0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOMa', symObjAddr: 0x7FCC, symBinAddr: 0xD1BB8, symSize: 0x10 } + - { offset: 0x161F1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x8120, symBinAddr: 0xD1BC8, symSize: 0x10 } + - { offset: 0x161F32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOwet', symObjAddr: 0x8130, symBinAddr: 0xD1BD8, symSize: 0x90 } + - { offset: 0x161F46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOwst', symObjAddr: 0x81C0, symBinAddr: 0xD1C68, symSize: 0xB0 } + - { offset: 0x161F5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x8274, symBinAddr: 0xD1D18, symSize: 0x10 } + - { offset: 0x161F6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x8364, symBinAddr: 0xD1D28, symSize: 0x10 } + - { offset: 0x161F82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVMa', symObjAddr: 0x83E0, symBinAddr: 0xD1D38, symSize: 0x10 } + - { offset: 0x161F96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x83F0, symBinAddr: 0xD1D48, symSize: 0x4 } + - { offset: 0x161FAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFSQAAWl', symObjAddr: 0x83F4, symBinAddr: 0xD1D4C, symSize: 0x40 } + - { offset: 0x161FBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8434, symBinAddr: 0xD1D8C, symSize: 0x4 } + - { offset: 0x161FD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFSQAAWl', symObjAddr: 0x8438, symBinAddr: 0xD1D90, symSize: 0x40 } + - { offset: 0x161FE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8478, symBinAddr: 0xD1DD0, symSize: 0x4 } + - { offset: 0x161FFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFSQAAWl', symObjAddr: 0x847C, symBinAddr: 0xD1DD4, symSize: 0x40 } + - { offset: 0x16200E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSHAASQWb', symObjAddr: 0x84BC, symBinAddr: 0xD1E14, symSize: 0x4 } + - { offset: 0x162022, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOAESQAAWl', symObjAddr: 0x84C0, symBinAddr: 0xD1E18, symSize: 0x40 } + - { offset: 0x162036, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8500, symBinAddr: 0xD1E58, symSize: 0x4 } + - { offset: 0x16204A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x8504, symBinAddr: 0xD1E5C, symSize: 0x40 } + - { offset: 0x16205E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8544, symBinAddr: 0xD1E9C, symSize: 0x4 } + - { offset: 0x162072, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x8548, symBinAddr: 0xD1EA0, symSize: 0x40 } + - { offset: 0x162086, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8588, symBinAddr: 0xD1EE0, symSize: 0x4 } + - { offset: 0x16209A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x858C, symBinAddr: 0xD1EE4, symSize: 0x40 } + - { offset: 0x1620AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x85CC, symBinAddr: 0xD1F24, symSize: 0x4 } + - { offset: 0x1620C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x85D0, symBinAddr: 0xD1F28, symSize: 0x40 } + - { offset: 0x1620D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8610, symBinAddr: 0xD1F68, symSize: 0x4 } + - { offset: 0x1620EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x8614, symBinAddr: 0xD1F6C, symSize: 0x40 } + - { offset: 0x1620FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8654, symBinAddr: 0xD1FAC, symSize: 0x4 } + - { offset: 0x162112, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFSQAAWl', symObjAddr: 0x8658, symBinAddr: 0xD1FB0, symSize: 0x40 } + - { offset: 0x162126, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8698, symBinAddr: 0xD1FF0, symSize: 0x4 } + - { offset: 0x16213A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x869C, symBinAddr: 0xD1FF4, symSize: 0x40 } + - { offset: 0x16214E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x86DC, symBinAddr: 0xD2034, symSize: 0x4 } + - { offset: 0x162162, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x86E0, symBinAddr: 0xD2038, symSize: 0x40 } + - { offset: 0x162176, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8720, symBinAddr: 0xD2078, symSize: 0x4 } + - { offset: 0x16218A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8724, symBinAddr: 0xD207C, symSize: 0x40 } + - { offset: 0x16219E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8764, symBinAddr: 0xD20BC, symSize: 0x4 } + - { offset: 0x1621B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x8768, symBinAddr: 0xD20C0, symSize: 0x40 } + - { offset: 0x1621C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x87A8, symBinAddr: 0xD2100, symSize: 0x4 } + - { offset: 0x1621DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x87AC, symBinAddr: 0xD2104, symSize: 0x40 } + - { offset: 0x1621EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x87EC, symBinAddr: 0xD2144, symSize: 0x4 } + - { offset: 0x162202, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x87F0, symBinAddr: 0xD2148, symSize: 0x40 } + - { offset: 0x162216, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8830, symBinAddr: 0xD2188, symSize: 0x4 } + - { offset: 0x16222A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8834, symBinAddr: 0xD218C, symSize: 0x40 } + - { offset: 0x16223E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8874, symBinAddr: 0xD21CC, symSize: 0x4 } + - { offset: 0x162252, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x8878, symBinAddr: 0xD21D0, symSize: 0x40 } + - { offset: 0x162266, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x88B8, symBinAddr: 0xD2210, symSize: 0x4 } + - { offset: 0x16227A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x88BC, symBinAddr: 0xD2214, symSize: 0x40 } + - { offset: 0x16228E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x88FC, symBinAddr: 0xD2254, symSize: 0x4 } + - { offset: 0x1622A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x8900, symBinAddr: 0xD2258, symSize: 0x40 } + - { offset: 0x1622B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8940, symBinAddr: 0xD2298, symSize: 0x4 } + - { offset: 0x1622CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8944, symBinAddr: 0xD229C, symSize: 0x40 } + - { offset: 0x1622DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8984, symBinAddr: 0xD22DC, symSize: 0x4 } + - { offset: 0x1622F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x8988, symBinAddr: 0xD22E0, symSize: 0x40 } + - { offset: 0x162306, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x89C8, symBinAddr: 0xD2320, symSize: 0x4 } + - { offset: 0x16231A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x89CC, symBinAddr: 0xD2324, symSize: 0x40 } + - { offset: 0x16232E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8A0C, symBinAddr: 0xD2364, symSize: 0x4 } + - { offset: 0x162342, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x8A10, symBinAddr: 0xD2368, symSize: 0x40 } + - { offset: 0x162356, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8A50, symBinAddr: 0xD23A8, symSize: 0x4 } + - { offset: 0x16236A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8A54, symBinAddr: 0xD23AC, symSize: 0x40 } + - { offset: 0x16237E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8A94, symBinAddr: 0xD23EC, symSize: 0x4 } + - { offset: 0x162392, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x8A98, symBinAddr: 0xD23F0, symSize: 0x40 } + - { offset: 0x1623A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8AD8, symBinAddr: 0xD2430, symSize: 0x4 } + - { offset: 0x1623BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8ADC, symBinAddr: 0xD2434, symSize: 0x40 } + - { offset: 0x1623CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8B1C, symBinAddr: 0xD2474, symSize: 0x4 } + - { offset: 0x1623E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x8B20, symBinAddr: 0xD2478, symSize: 0x40 } + - { offset: 0x1623F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0I3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8B60, symBinAddr: 0xD24B8, symSize: 0x4 } + - { offset: 0x16240A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8B64, symBinAddr: 0xD24BC, symSize: 0x40 } + - { offset: 0x16241E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0I3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8BA4, symBinAddr: 0xD24FC, symSize: 0x4 } + - { offset: 0x162432, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x8BA8, symBinAddr: 0xD2500, symSize: 0x40 } + - { offset: 0x162446, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x8BE8, symBinAddr: 0xD2540, symSize: 0x40 } + - { offset: 0x16245A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x8D74, symBinAddr: 0xD2588, symSize: 0x10 } + - { offset: 0x16246E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8D84, symBinAddr: 0xD2598, symSize: 0x4 } + - { offset: 0x162482, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x8D88, symBinAddr: 0xD259C, symSize: 0x40 } + - { offset: 0x162496, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8DC8, symBinAddr: 0xD25DC, symSize: 0x4 } + - { offset: 0x1624AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8DCC, symBinAddr: 0xD25E0, symSize: 0x40 } + - { offset: 0x1624BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8E0C, symBinAddr: 0xD2620, symSize: 0x4 } + - { offset: 0x1624D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x8E10, symBinAddr: 0xD2624, symSize: 0x40 } + - { offset: 0x162587, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x32C, symBinAddr: 0xCAAD0, symSize: 0x28 } + - { offset: 0x1625A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x354, symBinAddr: 0xCAAF8, symSize: 0x28 } + - { offset: 0x1625BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0xED4, symBinAddr: 0xCB5F0, symSize: 0x28 } + - { offset: 0x1625DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0xEFC, symBinAddr: 0xCB618, symSize: 0x28 } + - { offset: 0x1625FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x100C, symBinAddr: 0xCB6A8, symSize: 0x28 } + - { offset: 0x162619, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x1034, symBinAddr: 0xCB6D0, symSize: 0x28 } + - { offset: 0x16263B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x11B0, symBinAddr: 0xCB7FC, symSize: 0x28 } + - { offset: 0x162657, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x11D8, symBinAddr: 0xCB824, symSize: 0x28 } + - { offset: 0x162679, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x1370, symBinAddr: 0xCB9B0, symSize: 0x28 } + - { offset: 0x162695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x1398, symBinAddr: 0xCB9D8, symSize: 0x28 } + - { offset: 0x1626B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x14A0, symBinAddr: 0xCBAD4, symSize: 0x28 } + - { offset: 0x1626D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x14C8, symBinAddr: 0xCBAFC, symSize: 0x28 } + - { offset: 0x1626F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x160C, symBinAddr: 0xCBC34, symSize: 0x28 } + - { offset: 0x162711, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x1634, symBinAddr: 0xCBC5C, symSize: 0x28 } + - { offset: 0x162788, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x1B20, symBinAddr: 0xCC0B8, symSize: 0x28 } + - { offset: 0x1627A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x1B48, symBinAddr: 0xCC0E0, symSize: 0x28 } + - { offset: 0x1627C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x30DC, symBinAddr: 0xCD598, symSize: 0x28 } + - { offset: 0x1627DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x3104, symBinAddr: 0xCD5C0, symSize: 0x28 } + - { offset: 0x1627FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x42CC, symBinAddr: 0xCE62C, symSize: 0x28 } + - { offset: 0x16281A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x42F4, symBinAddr: 0xCE654, symSize: 0x28 } + - { offset: 0x16283C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x47C0, symBinAddr: 0xCEB20, symSize: 0xC } + - { offset: 0x1628A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x47CC, symBinAddr: 0xCEB2C, symSize: 0xD8 } + - { offset: 0x162963, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x48A4, symBinAddr: 0xCEC04, symSize: 0xB4 } + - { offset: 0x1629DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x4958, symBinAddr: 0xCECB8, symSize: 0xD4 } + - { offset: 0x162A83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x4BB4, symBinAddr: 0xCEF08, symSize: 0x28 } + - { offset: 0x162A9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x4BDC, symBinAddr: 0xCEF30, symSize: 0x28 } + - { offset: 0x162B1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0I3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x280, symBinAddr: 0xCAA3C, symSize: 0x10 } + - { offset: 0x162B49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0I3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x290, symBinAddr: 0xCAA4C, symSize: 0x84 } + - { offset: 0x162BB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x3C0, symBinAddr: 0xCAB40, symSize: 0x108 } + - { offset: 0x162BE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x4C8, symBinAddr: 0xCAC48, symSize: 0x160 } + - { offset: 0x162C15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x650, symBinAddr: 0xCADD0, symSize: 0x20 } + - { offset: 0x162C29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0x80C, symBinAddr: 0xCAF34, symSize: 0x19C } + - { offset: 0x162C5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0x9A8, symBinAddr: 0xCB0D0, symSize: 0x214 } + - { offset: 0x162C8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0xBBC, symBinAddr: 0xCB2E4, symSize: 0x180 } + - { offset: 0x162CBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0xD3C, symBinAddr: 0xCB464, symSize: 0x18C } + - { offset: 0x162CED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xF50, symBinAddr: 0xCB66C, symSize: 0x30 } + - { offset: 0x162D0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x10BC, symBinAddr: 0xCB758, symSize: 0x30 } + - { offset: 0x162D44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0x1130, symBinAddr: 0xCB788, symSize: 0x44 } + - { offset: 0x162D7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1174, symBinAddr: 0xCB7CC, symSize: 0x24 } + - { offset: 0x162DB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x1200, symBinAddr: 0xCB84C, symSize: 0x2C } + - { offset: 0x162DE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x122C, symBinAddr: 0xCB878, symSize: 0x1C } + - { offset: 0x162E0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0x1248, symBinAddr: 0xCB894, symSize: 0xEC } + - { offset: 0x162E49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1334, symBinAddr: 0xCB980, symSize: 0x24 } + - { offset: 0x162E72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAsAIP8intValuexSgSi_tcfCTW', symObjAddr: 0x1364, symBinAddr: 0xCB9A4, symSize: 0xC } + - { offset: 0x162E99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x13C0, symBinAddr: 0xCBA00, symSize: 0x48 } + - { offset: 0x162EC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1408, symBinAddr: 0xCBA48, symSize: 0x14 } + - { offset: 0x162EED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0x141C, symBinAddr: 0xCBA5C, symSize: 0x54 } + - { offset: 0x162F32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1470, symBinAddr: 0xCBAB0, symSize: 0x24 } + - { offset: 0x162F6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x14F0, symBinAddr: 0xCBB24, symSize: 0x40 } + - { offset: 0x162F97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1530, symBinAddr: 0xCBB64, symSize: 0x14 } + - { offset: 0x162FC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0x1544, symBinAddr: 0xCBB78, symSize: 0x8C } + - { offset: 0x162FFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0x15D0, symBinAddr: 0xCBC04, symSize: 0x24 } + - { offset: 0x16303A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x165C, symBinAddr: 0xCBC84, symSize: 0x40 } + - { offset: 0x163063, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x169C, symBinAddr: 0xCBCC4, symSize: 0x14 } + - { offset: 0x163110, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC8getFloor7Penguin0F0CSgyF', symObjAddr: 0x16B0, symBinAddr: 0xCBCD8, symSize: 0x164 } + - { offset: 0x1632D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueSSvg', symObjAddr: 0x1814, symBinAddr: 0xCBE3C, symSize: 0x244 } + - { offset: 0x16330A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x1ADC, symBinAddr: 0xCC080, symSize: 0x8 } + - { offset: 0x163331, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1AE4, symBinAddr: 0xCC088, symSize: 0x24 } + - { offset: 0x16335A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x1B14, symBinAddr: 0xCC0AC, symSize: 0xC } + - { offset: 0x16336E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataCfd', symObjAddr: 0x1B70, symBinAddr: 0xCC108, symSize: 0xC4 } + - { offset: 0x163391, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataCfD', symObjAddr: 0x1C34, symBinAddr: 0xCC1CC, symSize: 0x20 } + - { offset: 0x1633B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC6encode2toys7Encoder_p_tKF', symObjAddr: 0x1C74, symBinAddr: 0xCC20C, symSize: 0x74C } + - { offset: 0x1633E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x23C0, symBinAddr: 0xCC958, symSize: 0xBF8 } + - { offset: 0x163416, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x2FE0, symBinAddr: 0xCD578, symSize: 0x20 } + - { offset: 0x16342F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC6encode2toys7Encoder_p_tKF', symObjAddr: 0x3170, symBinAddr: 0xCD608, symSize: 0x13C } + - { offset: 0x163460, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x3DA8, symBinAddr: 0xCE1FC, symSize: 0x1A8 } + - { offset: 0x163491, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0x3F50, symBinAddr: 0xCE3A4, symSize: 0x13C } + - { offset: 0x1634C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x4118, symBinAddr: 0xCE508, symSize: 0x20 } + - { offset: 0x1634ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x41BC, symBinAddr: 0xCE528, symSize: 0x30 } + - { offset: 0x16353F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x41EC, symBinAddr: 0xCE558, symSize: 0xD4 } + - { offset: 0x1635C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x431C, symBinAddr: 0xCE67C, symSize: 0x2C } + - { offset: 0x1635E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x4348, symBinAddr: 0xCE6A8, symSize: 0x1C } + - { offset: 0x16360B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV8imageURLSSSgvg', symObjAddr: 0x451C, symBinAddr: 0xCE87C, symSize: 0xD4 } + - { offset: 0x1636ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV6encode2toys7Encoder_p_tKF', symObjAddr: 0x45F0, symBinAddr: 0xCE950, symSize: 0x1D0 } + - { offset: 0x16374F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x4A2C, symBinAddr: 0xCED8C, symSize: 0x2C } + - { offset: 0x163778, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x4A58, symBinAddr: 0xCEDB8, symSize: 0x98 } + - { offset: 0x1637C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs0E3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x4AF0, symBinAddr: 0xCEE50, symSize: 0x94 } + - { offset: 0x16382D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs0E3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x4B84, symBinAddr: 0xCEEE4, symSize: 0x24 } + - { offset: 0x163888, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x4C04, symBinAddr: 0xCEF58, symSize: 0x4C } + - { offset: 0x1638B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x4C50, symBinAddr: 0xCEFA4, symSize: 0x14 } + - { offset: 0x1638CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x56E4, symBinAddr: 0xCF69C, symSize: 0x108 } + - { offset: 0x16395A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x57EC, symBinAddr: 0xCF7A4, symSize: 0x1D4 } + - { offset: 0x16397D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x59C0, symBinAddr: 0xCF978, symSize: 0x250 } + - { offset: 0x163AAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x5C10, symBinAddr: 0xCFBC8, symSize: 0x3D8 } + - { offset: 0x163AD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x5FE8, symBinAddr: 0xCFFA0, symSize: 0x10C } + - { offset: 0x163B60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x60F4, symBinAddr: 0xD00AC, symSize: 0x260 } + - { offset: 0x163B83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x6354, symBinAddr: 0xD030C, symSize: 0x1A4 } + - { offset: 0x163C63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x64F8, symBinAddr: 0xD04B0, symSize: 0x1D4 } + - { offset: 0x163C86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x66CC, symBinAddr: 0xD0684, symSize: 0x708 } + - { offset: 0x16405C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x6DD4, symBinAddr: 0xD0D8C, symSize: 0x184 } + - { offset: 0x164085, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x6F58, symBinAddr: 0xD0F10, symSize: 0x5C } + - { offset: 0x1640BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x6FB4, symBinAddr: 0xD0F6C, symSize: 0x2A4 } + - { offset: 0x164487, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD26D0, symSize: 0x20 } + - { offset: 0x16469D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellCfETo', symObjAddr: 0x2B8, symBinAddr: 0xD2988, symSize: 0x48 } + - { offset: 0x1646CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellCMa', symObjAddr: 0x300, symBinAddr: 0xD29D0, symSize: 0x20 } + - { offset: 0x1647E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD26D0, symSize: 0x20 } + - { offset: 0x164844, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xD26F0, symSize: 0x14 } + - { offset: 0x164895, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0xD2704, symSize: 0x20 } + - { offset: 0x1648EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0xD2724, symSize: 0x14 } + - { offset: 0x164940, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC27selectionIndicatorImageViewSo07UIImageK0CSgvgTo', symObjAddr: 0x68, symBinAddr: 0xD2738, symSize: 0x20 } + - { offset: 0x164995, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC27selectionIndicatorImageViewSo07UIImageK0CSgvsTo', symObjAddr: 0x88, symBinAddr: 0xD2758, symSize: 0x14 } + - { offset: 0x1649E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC12awakeFromNibyyFTo', symObjAddr: 0x9C, symBinAddr: 0xD276C, symSize: 0x3C } + - { offset: 0x164A4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0xD8, symBinAddr: 0xD27A8, symSize: 0xE0 } + - { offset: 0x164AB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1B8, symBinAddr: 0xD2888, symSize: 0xA8 } + - { offset: 0x164AE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x260, symBinAddr: 0xD2930, symSize: 0x28 } + - { offset: 0x164AF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellCfD', symObjAddr: 0x288, symBinAddr: 0xD2958, symSize: 0x30 } + - { offset: 0x164B2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC9configure4withyAA0F4ItemV_tFTf4xn_n', symObjAddr: 0x320, symBinAddr: 0xD29F0, symSize: 0x2E8 } + - { offset: 0x16500B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6sysLog_WZ', symObjAddr: 0x0, symBinAddr: 0xD2CD8, symSize: 0x68 } + - { offset: 0x16502F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6sysLogSo9OS_os_logCvp', symObjAddr: 0x3F88, symBinAddr: 0x396FC0, symSize: 0x0 } + - { offset: 0x165049, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6devLogSo9OS_os_logCvp', symObjAddr: 0x3F90, symBinAddr: 0x396FC8, symSize: 0x0 } + - { offset: 0x165057, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6sysLog_WZ', symObjAddr: 0x0, symBinAddr: 0xD2CD8, symSize: 0x68 } + - { offset: 0x165071, size: 0x8, addend: 0x0, symName: '_$sSo9OS_os_logCMa', symObjAddr: 0x68, symBinAddr: 0xD2D40, symSize: 0x44 } + - { offset: 0x165085, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6devLog_WZ', symObjAddr: 0xAC, symBinAddr: 0xD2D84, symSize: 0x30 } + - { offset: 0x16543C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC10DerivativeV5rootsSaySfGvg', symObjAddr: 0x0, symBinAddr: 0xD2DB4, symSize: 0x1C0 } + - { offset: 0x165460, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointV7minimumAEvpZ', symObjAddr: 0x6F70, symBinAddr: 0x396FD0, symSize: 0x0 } + - { offset: 0x1655A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointV7minimum_WZ', symObjAddr: 0x1C0, symBinAddr: 0xD2F74, symSize: 0x10 } + - { offset: 0x165746, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC10DerivativeV5rootsSaySfGvg', symObjAddr: 0x0, symBinAddr: 0xD2DB4, symSize: 0x1C0 } + - { offset: 0x165B08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC12BoundsFinderV04makeG04from8control18control22toAC5PointV3min_AN3maxtAN_A3NtFZTf4nnnnd_n', symObjAddr: 0x1D0, symBinAddr: 0xD2F84, symSize: 0x2C8 } + - { offset: 0x1661F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC9tintColor04fillI05imageACSo7UIColorC_AHSo7UIImageCtcfc', symObjAddr: 0x0, symBinAddr: 0xD324C, symSize: 0x328 } + - { offset: 0x166430, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewCfETo', symObjAddr: 0x6C8, symBinAddr: 0xD3914, symSize: 0x48 } + - { offset: 0x16645F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewCMa', symObjAddr: 0x710, symBinAddr: 0xD395C, symSize: 0x20 } + - { offset: 0x166571, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC9tintColor04fillI05imageACSo7UIColorC_AHSo7UIImageCtcfc', symObjAddr: 0x0, symBinAddr: 0xD324C, symSize: 0x328 } + - { offset: 0x1666F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x328, symBinAddr: 0xD3574, symSize: 0x178 } + - { offset: 0x166760, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x4A0, symBinAddr: 0xD36EC, symSize: 0x28 } + - { offset: 0x16677B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC4drawyySo6CGRectVFTo', symObjAddr: 0x4C8, symBinAddr: 0xD3714, symSize: 0x28 } + - { offset: 0x1667A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC011adjustImageG5Frame33_2FCAADA1E67DE0FBB04DAE24AC8894DBLLyyF', symObjAddr: 0x4F0, symBinAddr: 0xD373C, symSize: 0xAC } + - { offset: 0x1668C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC14layoutSubviewsyyFTo', symObjAddr: 0x59C, symBinAddr: 0xD37E8, symSize: 0xD0 } + - { offset: 0x166912, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x66C, symBinAddr: 0xD38B8, symSize: 0x2C } + - { offset: 0x166971, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewCfD', symObjAddr: 0x698, symBinAddr: 0xD38E4, symSize: 0x30 } + - { offset: 0x1669C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC4drawyySo6CGRectVFTf4dn_n', symObjAddr: 0x730, symBinAddr: 0xD397C, symSize: 0x384 } + - { offset: 0x166F9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD3D00, symSize: 0x10 } + - { offset: 0x167756, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellCfETo', symObjAddr: 0x16DC, symBinAddr: 0xD53DC, symSize: 0xC0 } + - { offset: 0x167785, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellCMa', symObjAddr: 0x179C, symBinAddr: 0xD549C, symSize: 0x20 } + - { offset: 0x167799, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVSgWOy', symObjAddr: 0x17F8, symBinAddr: 0xD54BC, symSize: 0x3C } + - { offset: 0x167B73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD3D00, symSize: 0x10 } + - { offset: 0x167B8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD3D00, symSize: 0x10 } + - { offset: 0x167BD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointStackViewSo07UIStackI0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0xD3D10, symSize: 0x34 } + - { offset: 0x167C20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15secondPointViewSo6UIViewCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xD3D44, symSize: 0x10 } + - { offset: 0x167C38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15secondPointViewSo6UIViewCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xD3D44, symSize: 0x10 } + - { offset: 0x167C78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15secondPointViewSo6UIViewCSgvsTo', symObjAddr: 0x54, symBinAddr: 0xD3D54, symSize: 0x34 } + - { offset: 0x167CC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15firstPointLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0xD3D88, symSize: 0x10 } + - { offset: 0x167CDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15firstPointLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0xD3D88, symSize: 0x10 } + - { offset: 0x167D1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15firstPointLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0xD3D98, symSize: 0x34 } + - { offset: 0x167D6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC16secondPointLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0xD3DCC, symSize: 0x10 } + - { offset: 0x167D86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC16secondPointLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0xD3DCC, symSize: 0x10 } + - { offset: 0x167DC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC16secondPointLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0xD3DDC, symSize: 0x34 } + - { offset: 0x167E10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0xD3E10, symSize: 0x10 } + - { offset: 0x167E28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0xD3E10, symSize: 0x10 } + - { offset: 0x167E63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC11lengthLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0xD3E20, symSize: 0x34 } + - { offset: 0x167EB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15lengthUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0xD3E54, symSize: 0x10 } + - { offset: 0x167ECA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15lengthUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0xD3E54, symSize: 0x10 } + - { offset: 0x167F05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15lengthUnitLabelSo7UILabelCSgvsTo', symObjAddr: 0x164, symBinAddr: 0xD3E64, symSize: 0x34 } + - { offset: 0x167F54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0xD3E98, symSize: 0x10 } + - { offset: 0x167F6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0xD3E98, symSize: 0x10 } + - { offset: 0x167FA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC13durationLabelSo7UILabelCSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0xD3EA8, symSize: 0x34 } + - { offset: 0x167FF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0xD3EDC, symSize: 0x10 } + - { offset: 0x16800E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0xD3EDC, symSize: 0x10 } + - { offset: 0x16804E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointImageViewSo07UIImageI0CSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0xD3EEC, symSize: 0x34 } + - { offset: 0x16809D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC20secondPointImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0x220, symBinAddr: 0xD3F20, symSize: 0x10 } + - { offset: 0x1680B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC20secondPointImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0x220, symBinAddr: 0xD3F20, symSize: 0x10 } + - { offset: 0x1680F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC20secondPointImageViewSo07UIImageI0CSgvsTo', symObjAddr: 0x230, symBinAddr: 0xD3F30, symSize: 0x34 } + - { offset: 0x16813F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC12awakeFromNibyyFTo', symObjAddr: 0x264, symBinAddr: 0xD3F64, symSize: 0x68 } + - { offset: 0x1682C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC9configure3for2atyAA0D0VSg_SitF', symObjAddr: 0x2CC, symBinAddr: 0xD3FCC, symSize: 0x884 } + - { offset: 0x168883, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC10removeDotsyyF', symObjAddr: 0xB50, symBinAddr: 0xD4850, symSize: 0x244 } + - { offset: 0x168BDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC8drawDotsyyF', symObjAddr: 0xD94, symBinAddr: 0xD4A94, symSize: 0x32C } + - { offset: 0x168D09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15prepareForReuseyyF', symObjAddr: 0x10C0, symBinAddr: 0xD4DC0, symSize: 0x354 } + - { offset: 0x168EAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15prepareForReuseyyFTo', symObjAddr: 0x1414, symBinAddr: 0xD5114, symSize: 0x28 } + - { offset: 0x168EBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x143C, symBinAddr: 0xD513C, symSize: 0x110 } + - { offset: 0x168F00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x154C, symBinAddr: 0xD524C, symSize: 0x48 } + - { offset: 0x168F14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1594, symBinAddr: 0xD5294, symSize: 0xF0 } + - { offset: 0x168F47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1684, symBinAddr: 0xD5384, symSize: 0x28 } + - { offset: 0x168F5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellCfD', symObjAddr: 0x16AC, symBinAddr: 0xD53AC, symSize: 0x30 } + - { offset: 0x168FAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC9getLetter3for2atSo7UIImageCSgSo0J4ViewCSg_SitFTf4dnd_n', symObjAddr: 0x1878, symBinAddr: 0xD54F8, symSize: 0x314 } + - { offset: 0x169477, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC24setParkingLocationButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD580C, symSize: 0x10 } + - { offset: 0x169787, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellCfETo', symObjAddr: 0xC08, symBinAddr: 0xD6414, symSize: 0x70 } + - { offset: 0x1697B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellCMa', symObjAddr: 0xC78, symBinAddr: 0xD6484, symSize: 0x20 } + - { offset: 0x1697CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC23didTapSaveParkingButtonyyFyycACcfu_yycfu0_TA', symObjAddr: 0xD28, symBinAddr: 0xD64C8, symSize: 0x20 } + - { offset: 0x169911, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC24setParkingLocationButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD580C, symSize: 0x10 } + - { offset: 0x169929, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC24setParkingLocationButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD580C, symSize: 0x10 } + - { offset: 0x16996F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC24setParkingLocationButtonSo8UIButtonCSgvsTo', symObjAddr: 0x10, symBinAddr: 0xD581C, symSize: 0x34 } + - { offset: 0x1699BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xD5850, symSize: 0x10 } + - { offset: 0x1699D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xD5850, symSize: 0x10 } + - { offset: 0x169A11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueButtonSo8UIButtonCSgvsTo', symObjAddr: 0x54, symBinAddr: 0xD5860, symSize: 0x34 } + - { offset: 0x169A60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x88, symBinAddr: 0xD5894, symSize: 0x10 } + - { offset: 0x169A78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x88, symBinAddr: 0xD5894, symSize: 0x10 } + - { offset: 0x169AB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x98, symBinAddr: 0xD58A4, symSize: 0x34 } + - { offset: 0x169B44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC12awakeFromNibyyF', symObjAddr: 0xCC, symBinAddr: 0xD58D8, symSize: 0x19C } + - { offset: 0x169C22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x268, symBinAddr: 0xD5A74, symSize: 0x28 } + - { offset: 0x169CA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC9configureyyF', symObjAddr: 0x290, symBinAddr: 0xD5A9C, symSize: 0xC8 } + - { offset: 0x169DB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC19shareLocationActionyySo8UIButtonCFTo', symObjAddr: 0x358, symBinAddr: 0xD5B64, symSize: 0x70 } + - { offset: 0x169F3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC23didTapSaveParkingButtonyyF', symObjAddr: 0x3C8, symBinAddr: 0xD5BD4, symSize: 0x4DC } + - { offset: 0x16A325, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC23didTapSaveParkingButtonyyFTo', symObjAddr: 0x8A4, symBinAddr: 0xD60B0, symSize: 0x28 } + - { offset: 0x16A35B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC11saveParkingyyF', symObjAddr: 0x8CC, symBinAddr: 0xD60D8, symSize: 0x124 } + - { offset: 0x16A454, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueActionyySo8UIButtonCFTo', symObjAddr: 0x9F0, symBinAddr: 0xD61FC, symSize: 0x4 } + - { offset: 0x16A46C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueActionyySo8UIButtonCFTo', symObjAddr: 0x9F0, symBinAddr: 0xD61FC, symSize: 0x4 } + - { offset: 0x16A47E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfc', symObjAddr: 0x9F4, symBinAddr: 0xD6200, symSize: 0xC8 } + - { offset: 0x16A4BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0xABC, symBinAddr: 0xD62C8, symSize: 0x48 } + - { offset: 0x16A4F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB04, symBinAddr: 0xD6310, symSize: 0xAC } + - { offset: 0x16A52A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xBB0, symBinAddr: 0xD63BC, symSize: 0x28 } + - { offset: 0x16A53E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellCfD', symObjAddr: 0xBD8, symBinAddr: 0xD63E4, symSize: 0x30 } + - { offset: 0x16A561, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueActionyySo8UIButtonCFTf4dd_n', symObjAddr: 0xD48, symBinAddr: 0xD64E8, symSize: 0xE0 } + - { offset: 0x16A8F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCfE', symObjAddr: 0x0, symBinAddr: 0xD65C8, symSize: 0x38 } + - { offset: 0x16A90F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCfE', symObjAddr: 0x0, symBinAddr: 0xD65C8, symSize: 0x38 } + - { offset: 0x16A977, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCMU', symObjAddr: 0xBC, symBinAddr: 0xD6684, symSize: 0x8 } + - { offset: 0x16A98B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCMa', symObjAddr: 0xC4, symBinAddr: 0xD668C, symSize: 0x38 } + - { offset: 0x16A99F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCMr', symObjAddr: 0xFC, symBinAddr: 0xD66C4, symSize: 0x88 } + - { offset: 0x16A9EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCfD', symObjAddr: 0x38, symBinAddr: 0xD6600, symSize: 0x84 } + - { offset: 0x16B306, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC19updateLayoutForText04textF0ySo06UITextF0C_tF', symObjAddr: 0x794, symBinAddr: 0xD6EE0, symSize: 0x168 } + - { offset: 0x16B3AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC19updateLayoutForText04textF0ySo06UITextF0C_tFyycfU_', symObjAddr: 0x1744, symBinAddr: 0xD7E90, symSize: 0x48 } + - { offset: 0x16B4B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCfE', symObjAddr: 0x12D0, symBinAddr: 0xD7A1C, symSize: 0x6C } + - { offset: 0x16B4E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCfETo', symObjAddr: 0x136C, symBinAddr: 0xD7AB8, symSize: 0x78 } + - { offset: 0x16B511, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCMa', symObjAddr: 0x13E4, symBinAddr: 0xD7B30, symSize: 0x20 } + - { offset: 0x16B534, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF15DidBeginEditingyySo06UITextF0CFTo', symObjAddr: 0x1404, symBinAddr: 0xD7B50, symSize: 0x54 } + - { offset: 0x16B575, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF13DidEndEditingyySo06UITextF0CFTo', symObjAddr: 0x1458, symBinAddr: 0xD7BA4, symSize: 0x50 } + - { offset: 0x16B5B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF0_18shouldChangeTextIn011replacementK0SbSo06UITextF0C_So8_NSRangeVSStFTo', symObjAddr: 0x14A8, symBinAddr: 0xD7BF4, symSize: 0x98 } + - { offset: 0x16B615, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF9DidChangeyySo06UITextF0CF', symObjAddr: 0x1540, symBinAddr: 0xD7C8C, symSize: 0x1B4 } + - { offset: 0x16B6E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF9DidChangeyySo06UITextF0CFTo', symObjAddr: 0x16F4, symBinAddr: 0xD7E40, symSize: 0x50 } + - { offset: 0x16B715, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyF', symObjAddr: 0x178C, symBinAddr: 0xD7ED8, symSize: 0xE8 } + - { offset: 0x16B7C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x1874, symBinAddr: 0xD7FC0, symSize: 0x34 } + - { offset: 0x16B7F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x18A8, symBinAddr: 0xD7FF4, symSize: 0x24 } + - { offset: 0x16B873, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x18CC, symBinAddr: 0xD8018, symSize: 0x228 } + - { offset: 0x16BAB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x1AF4, symBinAddr: 0xD8240, symSize: 0x28 } + - { offset: 0x16BAE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1B1C, symBinAddr: 0xD8268, symSize: 0xC } + - { offset: 0x16BB16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF0_18shouldChangeTextIn011replacementK0SbSo06UITextF0C_So8_NSRangeVSStFTf4nnnd_n', symObjAddr: 0x1C84, symBinAddr: 0xD83D0, symSize: 0x164 } + - { offset: 0x16BBA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4dnn_n', symObjAddr: 0x1DE8, symBinAddr: 0xD8534, symSize: 0x1F0 } + - { offset: 0x16BD9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC19updateLayoutForText04textF0ySo06UITextF0C_tFyycfU_TA', symObjAddr: 0x2040, symBinAddr: 0xD8748, symSize: 0x8 } + - { offset: 0x16BDAF, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2048, symBinAddr: 0xD8750, symSize: 0x10 } + - { offset: 0x16BDC3, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2058, symBinAddr: 0xD8760, symSize: 0x8 } + - { offset: 0x16BFB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14labelTextfieldAA022PlaceholderEnabledTextF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD674C, symSize: 0x20 } + - { offset: 0x16C019, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14labelTextfieldAA022PlaceholderEnabledTextF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xD676C, symSize: 0x14 } + - { offset: 0x16C12C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC9nameLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0xD6780, symSize: 0x20 } + - { offset: 0x16C186, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC9nameLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0xD67A0, symSize: 0x14 } + - { offset: 0x16C1D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x68, symBinAddr: 0xD67B4, symSize: 0x20 } + - { offset: 0x16C22C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0x88, symBinAddr: 0xD67D4, symSize: 0x14 } + - { offset: 0x16C269, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC13maximumHeight33_D05BDCBC073B527819C56126746805B0LL12CoreGraphics7CGFloatVvg', symObjAddr: 0x9C, symBinAddr: 0xD67E8, symSize: 0x34 } + - { offset: 0x16C29A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC24labelFieldHeightConstantSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0xD0, symBinAddr: 0xD681C, symSize: 0x20 } + - { offset: 0x16C2F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC24labelFieldHeightConstantSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0xF0, symBinAddr: 0xD683C, symSize: 0x14 } + - { offset: 0x16C39C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14applicableFont33_D05BDCBC073B527819C56126746805B0LLSo6UIFontCvpfiAGyXEfU_', symObjAddr: 0x104, symBinAddr: 0xD6850, symSize: 0x11C } + - { offset: 0x16C487, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x220, symBinAddr: 0xD696C, symSize: 0xB0 } + - { offset: 0x16C538, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x2D0, symBinAddr: 0xD6A1C, symSize: 0x28 } + - { offset: 0x16C5D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC03setC0yyF', symObjAddr: 0x2F8, symBinAddr: 0xD6A44, symSize: 0x49C } + - { offset: 0x16C95B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC21setAddressInformationyyF', symObjAddr: 0x8FC, symBinAddr: 0xD7048, symSize: 0xE8 } + - { offset: 0x16CA3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0x9E4, symBinAddr: 0xD7130, symSize: 0x44 } + - { offset: 0x16CA99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0xA28, symBinAddr: 0xD7174, symSize: 0x98 } + - { offset: 0x16CB0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC5closeyySo8UIButtonCFTo', symObjAddr: 0xAC0, symBinAddr: 0xD720C, symSize: 0x38 } + - { offset: 0x16CB3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC4saveyySo8UIButtonCFTo', symObjAddr: 0xAF8, symBinAddr: 0xD7244, symSize: 0x4C } + - { offset: 0x16CB75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC06updateD033_D05BDCBC073B527819C56126746805B0LLyyF', symObjAddr: 0xB44, symBinAddr: 0xD7290, symSize: 0x180 } + - { offset: 0x16CC46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC15saveSharedPlace33_D05BDCBC073B527819C56126746805B0LLyyF', symObjAddr: 0xCC4, symBinAddr: 0xD7410, symSize: 0x300 } + - { offset: 0x16CEB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xFC4, symBinAddr: 0xD7710, symSize: 0x158 } + - { offset: 0x16CEF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x111C, symBinAddr: 0xD7868, symSize: 0x60 } + - { offset: 0x16CF07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x117C, symBinAddr: 0xD78C8, symSize: 0x12C } + - { offset: 0x16CF3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x12A8, symBinAddr: 0xD79F4, symSize: 0x28 } + - { offset: 0x16CF4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCfD', symObjAddr: 0x133C, symBinAddr: 0xD7A88, symSize: 0x30 } + - { offset: 0x16D0DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC4saveyySo8UIButtonCFTf4dn_n', symObjAddr: 0x1B28, symBinAddr: 0xD8274, symSize: 0xB4 } + - { offset: 0x16DE4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCfE', symObjAddr: 0x12C0, symBinAddr: 0xD9A28, symSize: 0x130 } + - { offset: 0x16DE77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCfETo', symObjAddr: 0x1420, symBinAddr: 0xD9B88, symSize: 0x13C } + - { offset: 0x16DEA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCMa', symObjAddr: 0x155C, symBinAddr: 0xD9CC4, symSize: 0x20 } + - { offset: 0x16DEC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_22numberOfItemsInSectionSiSo012UICollectionF0C_SitFTo', symObjAddr: 0x157C, symBinAddr: 0xD9CE4, symSize: 0x5C } + - { offset: 0x16DF8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_13cellForItemAtSo012UICollectionF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x15D8, symBinAddr: 0xD9D40, symSize: 0x474 } + - { offset: 0x16E60F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_13cellForItemAtSo012UICollectionF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1A4C, symBinAddr: 0xDA1B4, symSize: 0xC8 } + - { offset: 0x16E62B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_15didSelectItemAtySo012UICollectionF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1B14, symBinAddr: 0xDA27C, symSize: 0x140 } + - { offset: 0x16E771, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC23updateCategoryInFilters6sourceyAA13TagDataSource_p_tF', symObjAddr: 0x1C54, symBinAddr: 0xDA3BC, symSize: 0x198 } + - { offset: 0x16EA03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC24updateAmenitiesInFilters6sourceyAA13TagDataSource_p_tF', symObjAddr: 0x1DEC, symBinAddr: 0xDA554, symSize: 0x198 } + - { offset: 0x16EC95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_15didSelectItemAtySo012UICollectionF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1F84, symBinAddr: 0xDA6EC, symSize: 0xC0 } + - { offset: 0x16ECD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x2044, symBinAddr: 0xDA7AC, symSize: 0x78 } + - { offset: 0x16ED48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x20BC, symBinAddr: 0xDA824, symSize: 0x24 } + - { offset: 0x16EDC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC10setupPanelyyF', symObjAddr: 0x20E0, symBinAddr: 0xDA848, symSize: 0x124 } + - { offset: 0x16EEA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC10setupPanelyyFTo', symObjAddr: 0x2204, symBinAddr: 0xDA96C, symSize: 0x28 } + - { offset: 0x16EEF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x22A8, symBinAddr: 0xDA994, symSize: 0xC8 } + - { offset: 0x16EF2E, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x239C, symBinAddr: 0xDAA80, symSize: 0x10 } + - { offset: 0x16EF42, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x23AC, symBinAddr: 0xDAA90, symSize: 0x8 } + - { offset: 0x16EF56, size: 0x8, addend: 0x0, symName: '_$sSo16UICollectionViewCMa', symObjAddr: 0x2418, symBinAddr: 0xDAA98, symSize: 0x44 } + - { offset: 0x16EF6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_22numberOfItemsInSectionSiSo012UICollectionF0C_SitFTf4ndn_n', symObjAddr: 0x2604, symBinAddr: 0xDAC1C, symSize: 0xA4 } + - { offset: 0x16F006, size: 0x8, addend: 0x0, symName: _keypath_get_selector_contentSize, symObjAddr: 0x26C8, symBinAddr: 0xDACC0, symSize: 0xC } + - { offset: 0x16F01A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC11viewDidLoadyyFySo012UICollectionF0C_10Foundation24NSKeyValueObservedChangeVySo6CGSizeVGtYbcfU_TA', symObjAddr: 0x2718, symBinAddr: 0xDAD10, symSize: 0x28 } + - { offset: 0x16F02E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC11viewDidLoadyyFySo012UICollectionF0C_10Foundation24NSKeyValueObservedChangeVySo6CGSizeVGtYbcfU0_TA', symObjAddr: 0x2740, symBinAddr: 0xDAD38, symSize: 0x28 } + - { offset: 0x16F0A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC019amenitiesCollectionF0So012UICollectionF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD8768, symSize: 0x20 } + - { offset: 0x16F106, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC019amenitiesCollectionF0So012UICollectionF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xD8788, symSize: 0x14 } + - { offset: 0x16F157, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC020categoriesCollectionF0So012UICollectionF0CSgvgTo', symObjAddr: 0x34, symBinAddr: 0xD879C, symSize: 0x20 } + - { offset: 0x16F1AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC020categoriesCollectionF0So012UICollectionF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0xD87BC, symSize: 0x14 } + - { offset: 0x16F1FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC13openNowSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x68, symBinAddr: 0xD87D0, symSize: 0x10 } + - { offset: 0x16F215, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC13openNowSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x68, symBinAddr: 0xD87D0, symSize: 0x10 } + - { offset: 0x16F255, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC13openNowSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x78, symBinAddr: 0xD87E0, symSize: 0x34 } + - { offset: 0x16F2A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC16categoriesHeightSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0xAC, symBinAddr: 0xD8814, symSize: 0x20 } + - { offset: 0x16F2FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC16categoriesHeightSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0xCC, symBinAddr: 0xD8834, symSize: 0x14 } + - { offset: 0x16F34F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC15amenitiesHeightSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0xE0, symBinAddr: 0xD8848, symSize: 0x20 } + - { offset: 0x16F3A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC15amenitiesHeightSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x100, symBinAddr: 0xD8868, symSize: 0x14 } + - { offset: 0x16F3F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC08amentiesF0So6UIViewCSgvgTo', symObjAddr: 0x114, symBinAddr: 0xD887C, symSize: 0x20 } + - { offset: 0x16F44F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC08amentiesF0So6UIViewCSgvsTo', symObjAddr: 0x134, symBinAddr: 0xD889C, symSize: 0x14 } + - { offset: 0x16F4A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x148, symBinAddr: 0xD88B0, symSize: 0x20 } + - { offset: 0x16F4FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC06scrollF0So08UIScrollF0CSgvsTo', symObjAddr: 0x168, symBinAddr: 0xD88D0, symSize: 0x14 } + - { offset: 0x16F6BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC11viewDidLoadyyF', symObjAddr: 0x17C, symBinAddr: 0xD88E4, symSize: 0x5E0 } + - { offset: 0x16FAFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x870, symBinAddr: 0xD8FD8, symSize: 0x28 } + - { offset: 0x16FB49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0x898, symBinAddr: 0xD9000, symSize: 0x44 } + - { offset: 0x16FBC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC9setupDatayyF', symObjAddr: 0x8DC, symBinAddr: 0xD9044, symSize: 0xAC } + - { offset: 0x16FCF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC5closeyySo8UIButtonCFTo', symObjAddr: 0x988, symBinAddr: 0xD90F0, symSize: 0x4C } + - { offset: 0x16FD21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC05applyE0yySo8UIButtonCFTo', symObjAddr: 0x9D4, symBinAddr: 0xD913C, symSize: 0x4C } + - { offset: 0x16FD5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC13toggleOpenNowyySo8UISwitchCFTo', symObjAddr: 0xA20, symBinAddr: 0xD9188, symSize: 0x54 } + - { offset: 0x16FDFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xA74, symBinAddr: 0xD91DC, symSize: 0x3F8 } + - { offset: 0x16FFB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xE6C, symBinAddr: 0xD95D4, symSize: 0x60 } + - { offset: 0x16FFF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xECC, symBinAddr: 0xD9634, symSize: 0x3CC } + - { offset: 0x17019C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1298, symBinAddr: 0xD9A00, symSize: 0x28 } + - { offset: 0x1701B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCfD', symObjAddr: 0x13F0, symBinAddr: 0xD9B58, symSize: 0x30 } + - { offset: 0x17036B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC5closeyySo8UIButtonCFTf4dn_n', symObjAddr: 0x24C4, symBinAddr: 0xDAADC, symSize: 0x74 } + - { offset: 0x1703F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC05applyE0yySo8UIButtonCFTf4dn_n', symObjAddr: 0x2538, symBinAddr: 0xDAB50, symSize: 0xCC } + - { offset: 0x171384, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE9indenting33_AA9324E1861CF61D6C42F582051A183CLL6spacesSSSi_tF', symObjAddr: 0x20F4, symBinAddr: 0xDCE54, symSize: 0x1C4 } + - { offset: 0x1719B5, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_SS_Tg5048$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_K9SSG_Tt1G5Tf1nnncn_n', symObjAddr: 0x54A4, symBinAddr: 0xE0204, symSize: 0x414 } + - { offset: 0x1720A0, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5052$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8ef9UI3DOMO10ij2V8K8OG_Tt1G5Tf1nnncn_n', symObjAddr: 0x58B8, symBinAddr: 0xE0618, symSize: 0x578 } + - { offset: 0x1726D9, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSrySSG_Tg508$sSTsSL7h33RpzrlE6sortedSayABGyFSbAB_ABtcfu_N9SSG_Tt1G5Tf1nncn_n', symObjAddr: 0x5E30, symBinAddr: 0xE0B90, symSize: 0xCC } + - { offset: 0x172859, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry8PenNavUI3DOMO10StyleSheetV8SelectorOG_Tg508$sSTsSL7h37RpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8ij9UI3DOMO10mn2V8O8OG_Tt1G5Tf1nncn_n', symObjAddr: 0x5EFC, symBinAddr: 0xE0C5C, symSize: 0x160 } + - { offset: 0x172A68, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKFSS_Tg5048$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_L9SSG_Tt1G5Tf1nncn_n', symObjAddr: 0x605C, symBinAddr: 0xE0DBC, symSize: 0x26C } + - { offset: 0x172DED, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5052$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8fg9UI3DOMO10jk2V8L8OG_Tt1G5Tf1nncn_n', symObjAddr: 0x62C8, symBinAddr: 0xE1028, symSize: 0x274 } + - { offset: 0x173188, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlFSS_Tg5048$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_M9SSG_Tt1G5Tf1nnnnc_n', symObjAddr: 0x653C, symBinAddr: 0xE129C, symSize: 0x224 } + - { offset: 0x173363, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5052$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8gh9UI3DOMO10kl2V8M8OG_Tt1G5Tf1nnnnc_n', symObjAddr: 0x6760, symBinAddr: 0xE14C0, symSize: 0x3C4 } + - { offset: 0x173584, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVWOc', symObjAddr: 0x6B24, symBinAddr: 0xE1884, symSize: 0x3C } + - { offset: 0x173598, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVWOh', symObjAddr: 0x6B60, symBinAddr: 0xE18C0, symSize: 0x34 } + - { offset: 0x1735AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVACs010TextOutputF0AAWl', symObjAddr: 0x6C54, symBinAddr: 0xE18F4, symSize: 0x40 } + - { offset: 0x1735C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOAGsAfAWl', symObjAddr: 0x6C94, symBinAddr: 0xE1934, symSize: 0x40 } + - { offset: 0x1735D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVWOc', symObjAddr: 0x6D30, symBinAddr: 0xE1974, symSize: 0x3C } + - { offset: 0x1735E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVWOh', symObjAddr: 0x6D6C, symBinAddr: 0xE19B0, symSize: 0x34 } + - { offset: 0x1735FC, size: 0x8, addend: 0x0, symName: '_$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8PenNavUI3DOMO10StyleSheetV8SelectorOG_Tt1g5', symObjAddr: 0x6E34, symBinAddr: 0xE19E4, symSize: 0xE0 } + - { offset: 0x173793, size: 0x8, addend: 0x0, symName: '_$sSD5IndexV8_VariantOyS2S__GWOe', symObjAddr: 0x7E74, symBinAddr: 0xE29B8, symSize: 0xC } + - { offset: 0x1737A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOWOb', symObjAddr: 0x7EC4, symBinAddr: 0xE29C4, symSize: 0x44 } + - { offset: 0x1737BB, size: 0x8, addend: 0x0, symName: ___swift_initWithCopy_strong, symObjAddr: 0x7F88, symBinAddr: 0xE2A4C, symSize: 0x2C } + - { offset: 0x1737CF, size: 0x8, addend: 0x0, symName: ___swift_destroy_strong, symObjAddr: 0x7FB4, symBinAddr: 0xE2A78, symSize: 0x8 } + - { offset: 0x1737E3, size: 0x8, addend: 0x0, symName: ___swift_assignWithCopy_strong, symObjAddr: 0x7FBC, symBinAddr: 0xE2A80, symSize: 0x38 } + - { offset: 0x1737F7, size: 0x8, addend: 0x0, symName: ___swift_memcpy8_8, symObjAddr: 0x7FF4, symBinAddr: 0xE2AB8, symSize: 0xC } + - { offset: 0x17380B, size: 0x8, addend: 0x0, symName: ___swift_assignWithTake_strong, symObjAddr: 0x8000, symBinAddr: 0xE2AC4, symSize: 0x30 } + - { offset: 0x17381F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOwet', symObjAddr: 0x8030, symBinAddr: 0xE2AF4, symSize: 0x48 } + - { offset: 0x173833, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOwst', symObjAddr: 0x8078, symBinAddr: 0xE2B3C, symSize: 0x3C } + - { offset: 0x173847, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOMa', symObjAddr: 0x80C4, symBinAddr: 0xE2B78, symSize: 0x10 } + - { offset: 0x17393F, size: 0x8, addend: 0x0, symName: '_$sSlsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lFSDyS2SG_SSs5NeverOTg5031$sS3SIgggo_SS3key_SS5valuetSSs5D132OIegnrzr_TR108$s8PenNavUI3XMLO9FormatterV3SVGV18makeStyleAttribute4fromSSSgAA3DOMO22PresentationAttributesV_tFS2S_SStXEfU_Tf3nnnpf_nTf1cn_n', symObjAddr: 0x0, symBinAddr: 0xDAD60, symSize: 0x29C } + - { offset: 0x173BD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOsAfAsAFP7_domainSSvgTW', symObjAddr: 0x330, symBinAddr: 0xDB090, symSize: 0x4 } + - { offset: 0x173BED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOsAfAsAFP5_codeSivgTW', symObjAddr: 0x334, symBinAddr: 0xDB094, symSize: 0x4 } + - { offset: 0x173C09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOsAfAsAFP9_userInfoyXlSgvgTW', symObjAddr: 0x338, symBinAddr: 0xDB098, symSize: 0x4 } + - { offset: 0x173C25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOsAfAsAFP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x33C, symBinAddr: 0xDB09C, symSize: 0x4 } + - { offset: 0x174268, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV18makeStyleAttribute4fromSSSgAA3DOMO22PresentationAttributesV_tF', symObjAddr: 0x364C, symBinAddr: 0xDE3AC, symSize: 0x108 } + - { offset: 0x1744DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMOAFC_tKF', symObjAddr: 0x340, symBinAddr: 0xDB0A0, symSize: 0x6BC } + - { offset: 0x1749F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV22makeGraphicsAttributes4fromSDyS2SGAA3DOMO0H7ElementC_tF', symObjAddr: 0x9FC, symBinAddr: 0xDB75C, symSize: 0x254 } + - { offset: 0x174B63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV10makeStylesySayAC7ElementCGSayAA3DOMO10StyleSheetVGKF', symObjAddr: 0xC50, symBinAddr: 0xDB9B0, symSize: 0x18C } + - { offset: 0x174E52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV8makeDefsyAC7ElementCSgAA3DOMOAFC0H0VKF', symObjAddr: 0xDDC, symBinAddr: 0xDBB3C, symSize: 0x2C0 } + - { offset: 0x1751F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV12makeElements4fromSayAC7ElementCGx_tKSTRzAA3DOMO08GraphicsJ0CAJRtzlFSayAPG_Tg5', symObjAddr: 0x109C, symBinAddr: 0xDBDFC, symSize: 0x4B4 } + - { offset: 0x1755A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV12makeElements4fromSayAC7ElementCGx_tKSTRzAA3DOMO08GraphicsJ0CAJRtzlFSD6ValuesVySSAP_G_Tg5', symObjAddr: 0x1550, symBinAddr: 0xDC2B0, symSize: 0x4A0 } + - { offset: 0x17588B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV9makeStyleyAC7ElementCSgAA3DOMO0H5SheetVKF', symObjAddr: 0x19F0, symBinAddr: 0xDC750, symSize: 0x704 } + - { offset: 0x1761E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV22makeGraphicsAttributes4fromSDyS2SGAA3DOMO012PresentationI0V_tF', symObjAddr: 0x22B8, symBinAddr: 0xDD018, symSize: 0x1394 } + - { offset: 0x177637, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV15encodeTransformySSAA3DOMO0H0OF', symObjAddr: 0x3754, symBinAddr: 0xDE4B4, symSize: 0x318 } + - { offset: 0x1779E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO08GraphicsH0C_tKF', symObjAddr: 0x3A6C, symBinAddr: 0xDE7CC, symSize: 0x2BC } + - { offset: 0x177B50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO4RectC_tF', symObjAddr: 0x3D28, symBinAddr: 0xDEA88, symSize: 0x444 } + - { offset: 0x178054, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO3UseC_tF', symObjAddr: 0x416C, symBinAddr: 0xDEECC, symSize: 0x2DC } + - { offset: 0x1782F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO4TextC_tF', symObjAddr: 0x4448, symBinAddr: 0xDF1A8, symSize: 0x21C } + - { offset: 0x178532, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO6AnchorC_tF', symObjAddr: 0x4664, symBinAddr: 0xDF3C4, symSize: 0x1C4 } + - { offset: 0x178628, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO4PathC_tF', symObjAddr: 0x4828, symBinAddr: 0xDF588, symSize: 0x11C } + - { offset: 0x178712, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV14encodeSegmentsySSSayAA3DOMO4PathC7SegmentOGF', symObjAddr: 0x4944, symBinAddr: 0xDF6A4, symSize: 0x16C } + - { offset: 0x17898D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV13encodeSegmentySSAA3DOMO4PathC0H0OF', symObjAddr: 0x4AB0, symBinAddr: 0xDF810, symSize: 0x8F0 } + - { offset: 0x179897, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11encodeColor4fromSSAA3DOMO0H0O_tFTf4nd_n', symObjAddr: 0x6F14, symBinAddr: 0xE1AC4, symSize: 0x530 } + - { offset: 0x17A042, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV13sortSelectorsySayAA3DOMO10StyleSheetV8SelectorOGxSTRzAN7ElementRtzlFSD4KeysVyAnJ22PresentationAttributesV_G_Tg5Tf4nd_n', symObjAddr: 0x7590, symBinAddr: 0xE2140, symSize: 0x4E8 } + - { offset: 0x17A48A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV18makeLinearGradientyAC7ElementCAA3DOMO0hI0CFTf4nd_n', symObjAddr: 0x7A78, symBinAddr: 0xE2628, symSize: 0x390 } + - { offset: 0x17AC86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12TimerManagerC05startD0yyFZySo7NSTimerCYbcfU_', symObjAddr: 0x0, symBinAddr: 0xE2B88, symSize: 0x84 } + - { offset: 0x17ACAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12TimerManagerC5timer33_CC8C55DF2BE95D919F2CE62DA66C3617LLSo7NSTimerCSgvpZ', symObjAddr: 0xB8, symBinAddr: 0x378818, symSize: 0x0 } + - { offset: 0x17ACFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12TimerManagerCMa', symObjAddr: 0x94, symBinAddr: 0xE2C0C, symSize: 0x20 } + - { offset: 0x17AD75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12TimerManagerC05startD0yyFZySo7NSTimerCYbcfU_', symObjAddr: 0x0, symBinAddr: 0xE2B88, symSize: 0x84 } + - { offset: 0x17B121, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x0, symBinAddr: 0xE2C2C, symSize: 0x94 } + - { offset: 0x17B1DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewCfETo', symObjAddr: 0xF0, symBinAddr: 0xE2D1C, symSize: 0x38 } + - { offset: 0x17B209, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewCMa', symObjAddr: 0x128, symBinAddr: 0xE2D54, symSize: 0x20 } + - { offset: 0x17B278, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x0, symBinAddr: 0xE2C2C, symSize: 0x94 } + - { offset: 0x17B2E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x94, symBinAddr: 0xE2CC0, symSize: 0x2C } + - { offset: 0x17B342, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewCfD', symObjAddr: 0xC0, symBinAddr: 0xE2CEC, symSize: 0x30 } + - { offset: 0x17B6F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOMa', symObjAddr: 0x164, symBinAddr: 0xE2D74, symSize: 0x10 } + - { offset: 0x17B704, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x174, symBinAddr: 0xE2D84, symSize: 0x4 } + - { offset: 0x17B718, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10TravelModeOGSayxGSlsWl', symObjAddr: 0x178, symBinAddr: 0xE2D88, symSize: 0x44 } + - { offset: 0x17B72C, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10TravelModeOGMa', symObjAddr: 0x1BC, symBinAddr: 0xE2DCC, symSize: 0x50 } + - { offset: 0x17B8D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSHAASQWb', symObjAddr: 0x8F8, symBinAddr: 0xE3508, symSize: 0x4 } + - { offset: 0x17B8E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOACSQAAWl', symObjAddr: 0x8FC, symBinAddr: 0xE350C, symSize: 0x40 } + - { offset: 0x17B946, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeO5imageSo7UIImageCvg', symObjAddr: 0x20C, symBinAddr: 0xE2E1C, symSize: 0x314 } + - { offset: 0x17BABD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x520, symBinAddr: 0xE3130, symSize: 0xC } + - { offset: 0x17BB24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSHAASH9hashValueSivgTW', symObjAddr: 0x52C, symBinAddr: 0xE313C, symSize: 0xF4 } + - { offset: 0x17BBCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x620, symBinAddr: 0xE3230, symSize: 0xD0 } + - { offset: 0x17BC36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x6F0, symBinAddr: 0xE3300, symSize: 0xF0 } + - { offset: 0x17BD21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x7E0, symBinAddr: 0xE33F0, symSize: 0x2C } + - { offset: 0x17BD4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x80C, symBinAddr: 0xE341C, symSize: 0xB4 } + - { offset: 0x17BD80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOs12CaseIterableAAsADP8allCases03AllI0QzvgZTW', symObjAddr: 0x8C0, symBinAddr: 0xE34D0, symSize: 0x38 } + - { offset: 0x17BDC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x93C, symBinAddr: 0xE354C, symSize: 0x5C } + - { offset: 0x17C35B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseCMa', symObjAddr: 0x1C8, symBinAddr: 0xE35F8, symSize: 0x20 } + - { offset: 0x17C36F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOAFs0G3KeyAAWl', symObjAddr: 0x56C, symBinAddr: 0xE3934, symSize: 0x40 } + - { offset: 0x17C383, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI8FavoriteCGMa', symObjAddr: 0x5CC, symBinAddr: 0xE3974, symSize: 0x54 } + - { offset: 0x17C397, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOMa', symObjAddr: 0x7BC, symBinAddr: 0xE3A80, symSize: 0x10 } + - { offset: 0x17C3AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOSHAASQWb', symObjAddr: 0x7CC, symBinAddr: 0xE3A90, symSize: 0x4 } + - { offset: 0x17C3BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOAFSQAAWl', symObjAddr: 0x7D0, symBinAddr: 0xE3A94, symSize: 0x40 } + - { offset: 0x17C3D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x810, symBinAddr: 0xE3AD4, symSize: 0x4 } + - { offset: 0x17C3E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x814, symBinAddr: 0xE3AD8, symSize: 0x40 } + - { offset: 0x17C3FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x854, symBinAddr: 0xE3B18, symSize: 0x4 } + - { offset: 0x17C40F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x858, symBinAddr: 0xE3B1C, symSize: 0x40 } + - { offset: 0x17C43D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x154, symBinAddr: 0xE35A8, symSize: 0x28 } + - { offset: 0x17C459, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x17C, symBinAddr: 0xE35D0, symSize: 0x28 } + - { offset: 0x17C49D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x1E8, symBinAddr: 0xE3618, symSize: 0x128 } + - { offset: 0x17C4CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x310, symBinAddr: 0xE3740, symSize: 0x180 } + - { offset: 0x17C50C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x490, symBinAddr: 0xE38C0, symSize: 0x54 } + - { offset: 0x17C535, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x4E4, symBinAddr: 0xE3914, symSize: 0x20 } + - { offset: 0x17CB53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVMa', symObjAddr: 0x32C, symBinAddr: 0xE3E88, symSize: 0x38 } + - { offset: 0x17D745, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV20makeStrokeAttributes4withAC0hI0VAE5StateV_tF', symObjAddr: 0x2078, symBinAddr: 0xE5BD4, symSize: 0x3BC } + - { offset: 0x17D9AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeFillAttributes4withAC0hI0VAE5StateV_tF', symObjAddr: 0x2434, symBinAddr: 0xE5F90, symSize: 0x89C } + - { offset: 0x17DBE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeFillAttributes4withAC0hI0VAE5StateV_tFSbAA3DOMO7PatternVXEfU_', symObjAddr: 0x2CD0, symBinAddr: 0xE682C, symSize: 0x80 } + - { offset: 0x17DC3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11makePattern3forAC0H0CAA3DOMOAHV_tF', symObjAddr: 0x2D50, symBinAddr: 0xE68AC, symSize: 0x3A4 } + - { offset: 0x17E033, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV12makeGradient3forAC06LinearH0VSgAA3DOMOAHC_tF', symObjAddr: 0x30F4, symBinAddr: 0xE6C50, symSize: 0x6D8 } + - { offset: 0x17EA42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV12makeGradient3forAC06RadialH0VSgAA3DOMOAHC_tF', symObjAddr: 0x37CC, symBinAddr: 0xE7328, symSize: 0x790 } + - { offset: 0x17F3B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11createState3for10inheritingAE0H0VAA3DOMO22PresentationAttributesV_AJtFZ', symObjAddr: 0x4008, symBinAddr: 0xE7B64, symSize: 0x5F4 } + - { offset: 0x17F4DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV17makeGradientStops3forSayAC0H0V4StopVGAA3DOMO06LinearH0C_tFTf4nd_n', symObjAddr: 0x45FC, symBinAddr: 0xE8158, symSize: 0x154 } + - { offset: 0x17F6F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV17makeGradientStops3forSayAC0H0V4StopVGAA3DOMO06RadialH0C_tFTf4nd_n', symObjAddr: 0x4750, symBinAddr: 0xE82AC, symSize: 0x154 } + - { offset: 0x17F8AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeTextAttributes4withAC0hI0VAE5StateV_tFZTf4nd_g', symObjAddr: 0x48A4, symBinAddr: 0xE8400, symSize: 0x16C } + - { offset: 0x17F97C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOSgWOg', symObjAddr: 0x4BF0, symBinAddr: 0xE8708, symSize: 0x24 } + - { offset: 0x17F990, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV15makeAllContents4from4withSayAC0D0C0I0OGAA3DOMO15GraphicsElementC_AE5StateVtFyAQXEfU_TA', symObjAddr: 0x4C50, symBinAddr: 0xE872C, symSize: 0x1C } + - { offset: 0x17F9A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOc', symObjAddr: 0x4C8C, symBinAddr: 0xE8748, symSize: 0x3C } + - { offset: 0x17F9B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOi2_', symObjAddr: 0x4CC8, symBinAddr: 0xE8784, symSize: 0x34 } + - { offset: 0x17F9CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOSgWOi0_', symObjAddr: 0x4CFC, symBinAddr: 0xE87B8, symSize: 0x28 } + - { offset: 0x17F9E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOAEsAdAWl', symObjAddr: 0x4D28, symBinAddr: 0xE87E0, symSize: 0x40 } + - { offset: 0x17F9F4, size: 0x8, addend: 0x0, symName: '_$sSS8mimeType_10Foundation4DataV4datatSgWOe', symObjAddr: 0x4DE8, symBinAddr: 0xE8820, symSize: 0x38 } + - { offset: 0x17FA08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOi0_', symObjAddr: 0x4E20, symBinAddr: 0xE8858, symSize: 0x34 } + - { offset: 0x17FA1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOi_', symObjAddr: 0x4E54, symBinAddr: 0xE888C, symSize: 0x30 } + - { offset: 0x17FA30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0OWOe', symObjAddr: 0x4F04, symBinAddr: 0xE88BC, symSize: 0x60 } + - { offset: 0x17FA44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVWOc', symObjAddr: 0x4F64, symBinAddr: 0xE891C, symSize: 0x3C } + - { offset: 0x17FA58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVWOh', symObjAddr: 0x4FA0, symBinAddr: 0xE8958, symSize: 0x34 } + - { offset: 0x17FA6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeFillAttributes4withAC0hI0VAE5StateV_tFSbAA3DOMO14LinearGradientCXEfU0_TA', symObjAddr: 0x4FD4, symBinAddr: 0xE898C, symSize: 0x1C } + - { offset: 0x17FA80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeFillAttributes4withAC0hI0VAE5StateV_tFSbAA3DOMO7PatternVXEfU_TA', symObjAddr: 0x4FF0, symBinAddr: 0xE89A8, symSize: 0x1C } + - { offset: 0x17FA94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVSgWOe', symObjAddr: 0x500C, symBinAddr: 0xE89C4, symSize: 0x30 } + - { offset: 0x17FAA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVWOc', symObjAddr: 0x503C, symBinAddr: 0xE89F4, symSize: 0x3C } + - { offset: 0x17FABC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVWOh', symObjAddr: 0x5078, symBinAddr: 0xE8A30, symSize: 0x34 } + - { offset: 0x17FAD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOWOd', symObjAddr: 0x512C, symBinAddr: 0xE8A64, symSize: 0x44 } + - { offset: 0x17FAE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwCP', symObjAddr: 0x51FC, symBinAddr: 0xE8AA8, symSize: 0x244 } + - { offset: 0x17FAF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwxx', symObjAddr: 0x5440, symBinAddr: 0xE8CEC, symSize: 0xF0 } + - { offset: 0x17FB0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwcp', symObjAddr: 0x5530, symBinAddr: 0xE8DDC, symSize: 0x218 } + - { offset: 0x17FB20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwca', symObjAddr: 0x5748, symBinAddr: 0xE8FF4, symSize: 0x2D4 } + - { offset: 0x17FB34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwtk', symObjAddr: 0x5A1C, symBinAddr: 0xE92C8, symSize: 0x208 } + - { offset: 0x17FB48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwta', symObjAddr: 0x5C24, symBinAddr: 0xE94D0, symSize: 0x2A8 } + - { offset: 0x17FB5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwet', symObjAddr: 0x5ECC, symBinAddr: 0xE9778, symSize: 0xC } + - { offset: 0x17FB70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwst', symObjAddr: 0x5F80, symBinAddr: 0xE982C, symSize: 0xC } + - { offset: 0x17FB84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVMr', symObjAddr: 0x6030, symBinAddr: 0xE98DC, symSize: 0xEC } + - { offset: 0x17FBFA, size: 0x8, addend: 0x0, symName: '_$sSTsE7forEachyyy7ElementQzKXEKFSay8PenNavUI3DOMO08GraphicsC0CG_Tg5', symObjAddr: 0x0, symBinAddr: 0xE3B5C, symSize: 0x10C } + - { offset: 0x180153, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV04makeD0AC0D0CyF', symObjAddr: 0x10C, symBinAddr: 0xE3C68, symSize: 0x220 } + - { offset: 0x18032A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV04makeD04from10inheritingAC0D0CAA3DOMO15GraphicsElementC_AE5StateVtF', symObjAddr: 0x364, symBinAddr: 0xE3EC0, symSize: 0x928 } + - { offset: 0x180CB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV16createClipShapes3forSayAC5ShapeOGAA3DOMO15GraphicsElementC_tF', symObjAddr: 0xC8C, symBinAddr: 0xE47E8, symSize: 0x368 } + - { offset: 0x181071, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV010createMaskD03forAC0D0CSgAA3DOMO15GraphicsElementC_tF', symObjAddr: 0xFF4, symBinAddr: 0xE4B50, symSize: 0x7D8 } + - { offset: 0x181672, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV15makeAllContents4from4withSayAC0D0C0I0OGAA3DOMO15GraphicsElementC_AE5StateVtF', symObjAddr: 0x17CC, symBinAddr: 0xE5328, symSize: 0x270 } + - { offset: 0x1817B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV15makeAllContents4from4withSayAC0D0C0I0OGAA3DOMO15GraphicsElementC_AE5StateVtFyAQXEfU_', symObjAddr: 0x1F60, symBinAddr: 0xE5ABC, symSize: 0x118 } + - { offset: 0x18193E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV12makeContents4from4withAC0D0C0H0OSgAA3DOMO15GraphicsElementC_AE5StateVtF', symObjAddr: 0x1A3C, symBinAddr: 0xE5598, symSize: 0x524 } + - { offset: 0x181D4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV13makeTransform3for5width6heightSayAC0H0OGAA3DOMO3SVGC7ViewBoxVSg_S2itFZTf4nnnd_n', symObjAddr: 0x4A10, symBinAddr: 0xE856C, symSize: 0x19C } + - { offset: 0x18239C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseRadialGradientsySayAA3DOMO0F8GradientCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0xE99E0, symSize: 0x2B0 } + - { offset: 0x182532, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseRadialGradientsySayAA3DOMO0F8GradientCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0xE99E0, symSize: 0x2B0 } + - { offset: 0x182A6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV19parseRadialGradientyAA3DOMO0fG0CAA3XMLO7ElementCKFTf4nx_n', symObjAddr: 0x2B0, symBinAddr: 0xE9C90, symSize: 0xAF0 } + - { offset: 0x182EEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOAGSYAAWl', symObjAddr: 0xE68, symBinAddr: 0xEA780, symSize: 0x40 } + - { offset: 0x182F02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parsePercentageySfSgSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_TG5TA', symObjAddr: 0xEF0, symBinAddr: 0xEA7C0, symSize: 0x18 } + - { offset: 0x182F16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOWOc', symObjAddr: 0xF08, symBinAddr: 0xEA7D8, symSize: 0x44 } + - { offset: 0x182F2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOWOh', symObjAddr: 0xF4C, symBinAddr: 0xEA81C, symSize: 0x3C } + - { offset: 0x182F3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOWOh', symObjAddr: 0xF88, symBinAddr: 0xEA858, symSize: 0x34 } + - { offset: 0x1838FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterCMa', symObjAddr: 0x2B8, symBinAddr: 0xEAA6C, symSize: 0x20 } + - { offset: 0x183911, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC4copy4withyp10ObjectiveC6NSZoneVSg_tF', symObjAddr: 0x870, symBinAddr: 0xEB024, symSize: 0xD4 } + - { offset: 0x1839C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC4copy4withyp10ObjectiveC6NSZoneVSg_tFTo', symObjAddr: 0x944, symBinAddr: 0xEB0F8, symSize: 0x60 } + - { offset: 0x183A7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleCMa', symObjAddr: 0x1378, symBinAddr: 0xEBB14, symSize: 0x20 } + - { offset: 0x183A8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOMa', symObjAddr: 0x1500, symBinAddr: 0xEBB34, symSize: 0x10 } + - { offset: 0x183B1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSHAASQWb', symObjAddr: 0x1A24, symBinAddr: 0xEBFF4, symSize: 0x4 } + - { offset: 0x183B31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOACSQAAWl', symObjAddr: 0x1A28, symBinAddr: 0xEBFF8, symSize: 0x40 } + - { offset: 0x183B45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOAFs0F3KeyAAWl', symObjAddr: 0x1AAC, symBinAddr: 0xEC038, symSize: 0x40 } + - { offset: 0x183B59, size: 0x8, addend: 0x0, symName: '_$sSaySiGMa', symObjAddr: 0x1AEC, symBinAddr: 0xEC078, symSize: 0x50 } + - { offset: 0x183B6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOAEs0F3KeyAAWl', symObjAddr: 0x1B3C, symBinAddr: 0xEC0C8, symSize: 0x40 } + - { offset: 0x183B81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOMa', symObjAddr: 0x1D9C, symBinAddr: 0xEC1A0, symSize: 0x10 } + - { offset: 0x183B95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOMa', symObjAddr: 0x1F00, symBinAddr: 0xEC1B0, symSize: 0x10 } + - { offset: 0x183BA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOSHAASQWb', symObjAddr: 0x1F10, symBinAddr: 0xEC1C0, symSize: 0x4 } + - { offset: 0x183BBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOAFSQAAWl', symObjAddr: 0x1F14, symBinAddr: 0xEC1C4, symSize: 0x40 } + - { offset: 0x183BD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSHAASQWb', symObjAddr: 0x1F54, symBinAddr: 0xEC204, symSize: 0x4 } + - { offset: 0x183BE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOAESQAAWl', symObjAddr: 0x1F58, symBinAddr: 0xEC208, symSize: 0x40 } + - { offset: 0x183BF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1F98, symBinAddr: 0xEC248, symSize: 0x4 } + - { offset: 0x183C0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1F9C, symBinAddr: 0xEC24C, symSize: 0x40 } + - { offset: 0x183C21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1FDC, symBinAddr: 0xEC28C, symSize: 0x4 } + - { offset: 0x183C35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1FE0, symBinAddr: 0xEC290, symSize: 0x40 } + - { offset: 0x183C49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2020, symBinAddr: 0xEC2D0, symSize: 0x4 } + - { offset: 0x183C5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2024, symBinAddr: 0xEC2D4, symSize: 0x40 } + - { offset: 0x183C71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x2064, symBinAddr: 0xEC314, symSize: 0x4 } + - { offset: 0x183C85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x2068, symBinAddr: 0xEC318, symSize: 0x40 } + - { offset: 0x183CC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x22C, symBinAddr: 0xEA9E0, symSize: 0x28 } + - { offset: 0x183CE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x254, symBinAddr: 0xEAA08, symSize: 0x28 } + - { offset: 0x183D63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x9A4, symBinAddr: 0xEB158, symSize: 0x11C } + - { offset: 0x183E79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0xAC0, symBinAddr: 0xEB274, symSize: 0xAC } + - { offset: 0x183F2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xB6C, symBinAddr: 0xEB320, symSize: 0x88 } + - { offset: 0x183F9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xBF4, symBinAddr: 0xEB3A8, symSize: 0xA8 } + - { offset: 0x184035, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0xDD8, symBinAddr: 0xEB574, symSize: 0x28 } + - { offset: 0x184051, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0xE00, symBinAddr: 0xEB59C, symSize: 0x28 } + - { offset: 0x18407C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1764, symBinAddr: 0xEBD34, symSize: 0xA8 } + - { offset: 0x18416B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSHAASH9hashValueSivgTW', symObjAddr: 0x180C, symBinAddr: 0xEBDDC, symSize: 0x84 } + - { offset: 0x18421F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1890, symBinAddr: 0xEBE60, symSize: 0x60 } + - { offset: 0x184291, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x18F0, symBinAddr: 0xEBEC0, symSize: 0x80 } + - { offset: 0x184385, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC13toggleOpenNowyyF', symObjAddr: 0x0, symBinAddr: 0xEA88C, symSize: 0x5C } + - { offset: 0x184400, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x11C, symBinAddr: 0xEA8E8, symSize: 0xD4 } + - { offset: 0x184430, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1F0, symBinAddr: 0xEA9BC, symSize: 0x24 } + - { offset: 0x18447D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterCfD', symObjAddr: 0x27C, symBinAddr: 0xEAA30, symSize: 0x3C } + - { offset: 0x1844B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC6encode2toys7Encoder_p_tKF', symObjAddr: 0x2D8, symBinAddr: 0xEAA8C, symSize: 0x26C } + - { offset: 0x1844E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x544, symBinAddr: 0xEACF8, symSize: 0x2E4 } + - { offset: 0x184518, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x850, symBinAddr: 0xEB004, symSize: 0x20 } + - { offset: 0x1845DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xC9C, symBinAddr: 0xEB450, symSize: 0x2C } + - { offset: 0x184603, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0xCC8, symBinAddr: 0xEB47C, symSize: 0x6C } + - { offset: 0x184649, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs0F3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xD34, symBinAddr: 0xEB4E8, symSize: 0x68 } + - { offset: 0x1846AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs0F3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0xD9C, symBinAddr: 0xEB550, symSize: 0x24 } + - { offset: 0x184722, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC6isOpenACSb_tcfc', symObjAddr: 0xE28, symBinAddr: 0xEB5C4, symSize: 0x1E4 } + - { offset: 0x1847A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC6encode2toys7Encoder_p_tKF', symObjAddr: 0x100C, symBinAddr: 0xEB7A8, symSize: 0x348 } + - { offset: 0x18485A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleCfD', symObjAddr: 0x1354, symBinAddr: 0xEBAF0, symSize: 0x24 } + - { offset: 0x18489B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x1510, symBinAddr: 0xEBB44, symSize: 0x1A8 } + - { offset: 0x1848CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1744, symBinAddr: 0xEBD14, symSize: 0x20 } + - { offset: 0x184929, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x1970, symBinAddr: 0xEBF40, symSize: 0x70 } + - { offset: 0x184976, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x19E0, symBinAddr: 0xEBFB0, symSize: 0x44 } + - { offset: 0x1849AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x20A8, symBinAddr: 0xEC358, symSize: 0x214 } + - { offset: 0x184AB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x22BC, symBinAddr: 0xEC56C, symSize: 0x5C } + - { offset: 0x184E93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xEC5C8, symSize: 0x10 } + - { offset: 0x1857CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17displayFilterData33_328DE9E08D573BB4E70209B25156AC30LLyyF', symObjAddr: 0x1AE4, symBinAddr: 0xEE0AC, symSize: 0x45C } + - { offset: 0x185C31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsCfETo', symObjAddr: 0x25EC, symBinAddr: 0xEEBB4, symSize: 0x138 } + - { offset: 0x185C60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsCMa', symObjAddr: 0x2724, symBinAddr: 0xEECEC, symSize: 0x20 } + - { offset: 0x185CB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC20toggleSelectionColor33_328DE9E08D573BB4E70209B25156AC30LL13containerView0P4Text5valueySo6UIViewC_So7UILabelCSbtFTf4nnnd_n', symObjAddr: 0x2744, symBinAddr: 0xEED0C, symSize: 0x1D8 } + - { offset: 0x185D85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC13isHighlightedSbvWyycfU0_TA', symObjAddr: 0x2984, symBinAddr: 0xEEF08, symSize: 0x8 } + - { offset: 0x185D99, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x298C, symBinAddr: 0xEEF10, symSize: 0x10 } + - { offset: 0x185DAD, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x299C, symBinAddr: 0xEEF20, symSize: 0x8 } + - { offset: 0x185DC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyFyycfU_TA', symObjAddr: 0x29E8, symBinAddr: 0xEEF28, symSize: 0x8 } + - { offset: 0x185DD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyFyycfU0_TA', symObjAddr: 0x29F0, symBinAddr: 0xEEF30, symSize: 0x8 } + - { offset: 0x185DE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC22customizeOpenNowFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_TA', symObjAddr: 0x2A00, symBinAddr: 0xEEF38, symSize: 0x8 } + - { offset: 0x185DFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC23customizeCategoryFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_TA', symObjAddr: 0x2A08, symBinAddr: 0xEEF40, symSize: 0x8 } + - { offset: 0x185E11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC22customizeAmenityFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_TA', symObjAddr: 0x2A10, symBinAddr: 0xEEF48, symSize: 0x8 } + - { offset: 0x185E25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC19customizeAllFilters33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_TA', symObjAddr: 0x2A18, symBinAddr: 0xEEF50, symSize: 0x8 } + - { offset: 0x1860E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xEC5C8, symSize: 0x10 } + - { offset: 0x1860FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xEC5C8, symSize: 0x10 } + - { offset: 0x186142, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11contentViewSo6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0xEC5D8, symSize: 0x34 } + - { offset: 0x186191, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC10filterViewAA06HapticG0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0xEC60C, symSize: 0x10 } + - { offset: 0x1861A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC10filterViewAA06HapticG0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0xEC60C, symSize: 0x10 } + - { offset: 0x1861E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC10filterViewAA06HapticG0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0xEC61C, symSize: 0x34 } + - { offset: 0x186238, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC8sortViewAA06HapticG0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0xEC650, symSize: 0x10 } + - { offset: 0x186250, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC8sortViewAA06HapticG0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0xEC650, symSize: 0x10 } + - { offset: 0x18628B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC8sortViewAA06HapticG0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0xEC660, symSize: 0x34 } + - { offset: 0x1862DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC15sortMethodLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0xEC694, symSize: 0x10 } + - { offset: 0x1862F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC15sortMethodLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0xEC694, symSize: 0x10 } + - { offset: 0x186332, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC15sortMethodLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0xEC6A4, symSize: 0x34 } + - { offset: 0x186381, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12categoryViewAA06HapticG0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0xEC6D8, symSize: 0x20 } + - { offset: 0x1863D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12categoryViewAA06HapticG0CSgvsTo', symObjAddr: 0x130, symBinAddr: 0xEC6F8, symSize: 0x14 } + - { offset: 0x186427, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13categoryLabelSo7UILabelCSgvgTo', symObjAddr: 0x144, symBinAddr: 0xEC70C, symSize: 0x20 } + - { offset: 0x18647C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13categoryLabelSo7UILabelCSgvsTo', symObjAddr: 0x164, symBinAddr: 0xEC72C, symSize: 0x14 } + - { offset: 0x1864CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13amenitiesViewAA06HapticG0CSgvgTo', symObjAddr: 0x178, symBinAddr: 0xEC740, symSize: 0x20 } + - { offset: 0x186522, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13amenitiesViewAA06HapticG0CSgvsTo', symObjAddr: 0x198, symBinAddr: 0xEC760, symSize: 0x14 } + - { offset: 0x186573, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC14amenitiesLabelSo7UILabelCSgvgTo', symObjAddr: 0x1AC, symBinAddr: 0xEC774, symSize: 0x20 } + - { offset: 0x1865C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC14amenitiesLabelSo7UILabelCSgvsTo', symObjAddr: 0x1CC, symBinAddr: 0xEC794, symSize: 0x14 } + - { offset: 0x186619, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11openNowViewAA06HapticH0CSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0xEC7A8, symSize: 0x10 } + - { offset: 0x186631, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11openNowViewAA06HapticH0CSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0xEC7A8, symSize: 0x10 } + - { offset: 0x18666C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11openNowViewAA06HapticH0CSgvsTo', symObjAddr: 0x1F0, symBinAddr: 0xEC7B8, symSize: 0x34 } + - { offset: 0x1866BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12openNowLabelSo7UILabelCSgvgTo', symObjAddr: 0x224, symBinAddr: 0xEC7EC, symSize: 0x20 } + - { offset: 0x186710, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12openNowLabelSo7UILabelCSgvsTo', symObjAddr: 0x244, symBinAddr: 0xEC80C, symSize: 0x14 } + - { offset: 0x186761, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC10scrollViewSo08UIScrollG0CSgvgTo', symObjAddr: 0x258, symBinAddr: 0xEC820, symSize: 0x20 } + - { offset: 0x1867BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC10scrollViewSo08UIScrollG0CSgvsTo', symObjAddr: 0x278, symBinAddr: 0xEC840, symSize: 0x14 } + - { offset: 0x18680C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12optionsStackSo11UIStackViewCSgvgTo', symObjAddr: 0x28C, symBinAddr: 0xEC854, symSize: 0x20 } + - { offset: 0x186866, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12optionsStackSo11UIStackViewCSgvsTo', symObjAddr: 0x2AC, symBinAddr: 0xEC874, symSize: 0x14 } + - { offset: 0x186A22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC5frameACSo6CGRectV_tcfc', symObjAddr: 0x2C0, symBinAddr: 0xEC888, symSize: 0x3C4 } + - { offset: 0x186C20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x684, symBinAddr: 0xECC4C, symSize: 0x20 } + - { offset: 0x186C34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x6A4, symBinAddr: 0xECC6C, symSize: 0x3B4 } + - { offset: 0x186E4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xA58, symBinAddr: 0xED020, symSize: 0x28 } + - { offset: 0x186F23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC09customized6FilterE0yyF', symObjAddr: 0xA80, symBinAddr: 0xED048, symSize: 0x67C } + - { offset: 0x187398, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyF', symObjAddr: 0x10FC, symBinAddr: 0xED6C4, symSize: 0x4B8 } + - { offset: 0x187796, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyFyycfU_', symObjAddr: 0x15B4, symBinAddr: 0xEDB7C, symSize: 0xC8 } + - { offset: 0x187828, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyFyycfU0_', symObjAddr: 0x167C, symBinAddr: 0xEDC44, symSize: 0x360 } + - { offset: 0x187B50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC22customizeOpenNowFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x19DC, symBinAddr: 0xEDFA4, symSize: 0x108 } + - { offset: 0x187C05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC31handleLocationNotAvailableToast33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x1F40, symBinAddr: 0xEE508, symSize: 0x160 } + - { offset: 0x187CD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC23customizeCategoryFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x20A0, symBinAddr: 0xEE668, symSize: 0xFC } + - { offset: 0x187D3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC22customizeAmenityFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x219C, symBinAddr: 0xEE764, symSize: 0xFC } + - { offset: 0x187DAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC19customizeAllFilters33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x2298, symBinAddr: 0xEE860, symSize: 0xDC } + - { offset: 0x187E10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13setSortOption4sortyAA0G6MethodO_tF', symObjAddr: 0x2374, symBinAddr: 0xEE93C, symSize: 0x248 } + - { offset: 0x187FD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsCfD', symObjAddr: 0x25BC, symBinAddr: 0xEEB84, symSize: 0x30 } + - { offset: 0x18839C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVMa', symObjAddr: 0x0, symBinAddr: 0xEEF70, symSize: 0x10 } + - { offset: 0x1883B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVMa', symObjAddr: 0x0, symBinAddr: 0xEEF70, symSize: 0x10 } + - { offset: 0x18889B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVwxx', symObjAddr: 0xA54, symBinAddr: 0xEF890, symSize: 0x28 } + - { offset: 0x1888AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVwcp', symObjAddr: 0xA7C, symBinAddr: 0xEF8B8, symSize: 0x5C } + - { offset: 0x1888C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVwca', symObjAddr: 0xAD8, symBinAddr: 0xEF914, symSize: 0x94 } + - { offset: 0x1888D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVwta', symObjAddr: 0xB80, symBinAddr: 0xEF9A8, symSize: 0x5C } + - { offset: 0x1888EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVMa', symObjAddr: 0xC70, symBinAddr: 0xEFA04, symSize: 0x10 } + - { offset: 0x1888FF, size: 0x8, addend: 0x0, symName: ___swift_memcpy28_4, symObjAddr: 0xC84, symBinAddr: 0xEFA14, symSize: 0x14 } + - { offset: 0x188913, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVwet', symObjAddr: 0xC98, symBinAddr: 0xEFA28, symSize: 0x54 } + - { offset: 0x188927, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVwst', symObjAddr: 0xCEC, symBinAddr: 0xEFA7C, symSize: 0x5C } + - { offset: 0x18893B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVMa', symObjAddr: 0xD48, symBinAddr: 0xEFAD8, symSize: 0x10 } + - { offset: 0x18894F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSHAASQWb', symObjAddr: 0xD58, symBinAddr: 0xEFAE8, symSize: 0x4 } + - { offset: 0x188963, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVAGSQAAWl', symObjAddr: 0xD5C, symBinAddr: 0xEFAEC, symSize: 0x40 } + - { offset: 0x188977, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSHAASQWb', symObjAddr: 0xD9C, symBinAddr: 0xEFB2C, symSize: 0x4 } + - { offset: 0x18898B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVAESQAAWl', symObjAddr: 0xDA0, symBinAddr: 0xEFB30, symSize: 0x40 } + - { offset: 0x18899F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV5UnitsOMa', symObjAddr: 0xF44, symBinAddr: 0xEFB70, symSize: 0x10 } + - { offset: 0x1889B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV5UnitsOSHAASQWb', symObjAddr: 0xF54, symBinAddr: 0xEFB80, symSize: 0x4 } + - { offset: 0x1889C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV5UnitsOAGSQAAWl', symObjAddr: 0xF58, symBinAddr: 0xEFB84, symSize: 0x40 } + - { offset: 0x1889DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwxx', symObjAddr: 0xF98, symBinAddr: 0xEFBC4, symSize: 0x28 } + - { offset: 0x1889EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwcp', symObjAddr: 0xFC0, symBinAddr: 0xEFBEC, symSize: 0x4C } + - { offset: 0x188A03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwca', symObjAddr: 0x100C, symBinAddr: 0xEFC38, symSize: 0x84 } + - { offset: 0x188A17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwta', symObjAddr: 0x10A4, symBinAddr: 0xEFCBC, symSize: 0x54 } + - { offset: 0x188A2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwet', symObjAddr: 0x10F8, symBinAddr: 0xEFD10, symSize: 0x48 } + - { offset: 0x188A3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwst', symObjAddr: 0x1140, symBinAddr: 0xEFD58, symSize: 0x48 } + - { offset: 0x188A53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVMa', symObjAddr: 0x1188, symBinAddr: 0xEFDA0, symSize: 0x10 } + - { offset: 0x188A67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSHAASQWb', symObjAddr: 0x1198, symBinAddr: 0xEFDB0, symSize: 0x4 } + - { offset: 0x188A7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVAESQAAWl', symObjAddr: 0x119C, symBinAddr: 0xEFDB4, symSize: 0x40 } + - { offset: 0x188BBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xB8, symBinAddr: 0xEF028, symSize: 0x38 } + - { offset: 0x188C2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x248, symBinAddr: 0xEF0F4, symSize: 0x40 } + - { offset: 0x188D07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x498, symBinAddr: 0xEF300, symSize: 0x38 } + - { offset: 0x188D72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x750, symBinAddr: 0xEF5B8, symSize: 0x38 } + - { offset: 0x188DC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopV4hash4intoys6HasherVz_tF', symObjAddr: 0x10, symBinAddr: 0xEEF80, symSize: 0x68 } + - { offset: 0x188E90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSHAASH9hashValueSivgTW', symObjAddr: 0x78, symBinAddr: 0xEEFE8, symSize: 0x3C } + - { offset: 0x188F0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xB4, symBinAddr: 0xEF024, symSize: 0x4 } + - { offset: 0x188F34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xF0, symBinAddr: 0xEF060, symSize: 0x48 } + - { offset: 0x188FBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVSHAASH9hashValueSivgTW', symObjAddr: 0x1FC, symBinAddr: 0xEF0A8, symSize: 0x44 } + - { offset: 0x189085, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x240, symBinAddr: 0xEF0EC, symSize: 0x8 } + - { offset: 0x18910E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x288, symBinAddr: 0xEF134, symSize: 0xC } + - { offset: 0x1891B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientV4hash4intoys6HasherVz_tF', symObjAddr: 0x2D8, symBinAddr: 0xEF140, symSize: 0x180 } + - { offset: 0x189636, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSHAASH9hashValueSivgTW', symObjAddr: 0x458, symBinAddr: 0xEF2C0, symSize: 0x3C } + - { offset: 0x1896B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x494, symBinAddr: 0xEF2FC, symSize: 0x4 } + - { offset: 0x1896DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x4D0, symBinAddr: 0xEF338, symSize: 0x98 } + - { offset: 0x189708, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientV4hash4intoys6HasherVz_tF', symObjAddr: 0x568, symBinAddr: 0xEF3D0, symSize: 0x1A8 } + - { offset: 0x189BDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSHAASH9hashValueSivgTW', symObjAddr: 0x710, symBinAddr: 0xEF578, symSize: 0x3C } + - { offset: 0x189C5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x74C, symBinAddr: 0xEF5B4, symSize: 0x4 } + - { offset: 0x189C83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x788, symBinAddr: 0xEF5F0, symSize: 0x44 } + - { offset: 0x189CCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x7CC, symBinAddr: 0xEF634, symSize: 0x98 } + - { offset: 0x189D55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x864, symBinAddr: 0xEF6CC, symSize: 0xB8 } + - { offset: 0x189E03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopV2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x91C, symBinAddr: 0xEF784, symSize: 0x10C } + - { offset: 0x18A334, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewCfETo', symObjAddr: 0xC58, symBinAddr: 0xF0A4C, symSize: 0x38 } + - { offset: 0x18A363, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewCMa', symObjAddr: 0xC90, symBinAddr: 0xF0A84, symSize: 0x20 } + - { offset: 0x18A377, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC05setupF033_C991B0327AE82E62E13D985A70F5DE62LLyyFyyScMYccfU_TA', symObjAddr: 0xCD4, symBinAddr: 0xF0AC8, symSize: 0x8 } + - { offset: 0x18A38B, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xCDC, symBinAddr: 0xF0AD0, symSize: 0x10 } + - { offset: 0x18A39F, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xCEC, symBinAddr: 0xF0AE0, symSize: 0x8 } + - { offset: 0x18A44B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x0, symBinAddr: 0xEFDF4, symSize: 0x274 } + - { offset: 0x18A51A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x274, symBinAddr: 0xF0068, symSize: 0x20 } + - { offset: 0x18A565, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x294, symBinAddr: 0xF0088, symSize: 0xB8 } + - { offset: 0x18A62F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC05setupF033_C991B0327AE82E62E13D985A70F5DE62LLyyF', symObjAddr: 0x34C, symBinAddr: 0xF0140, symSize: 0x7C4 } + - { offset: 0x18A6D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC05setupF033_C991B0327AE82E62E13D985A70F5DE62LLyyFyyScMYccfU_', symObjAddr: 0xB10, symBinAddr: 0xF0904, symSize: 0x118 } + - { offset: 0x18A706, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewCfD', symObjAddr: 0xC28, symBinAddr: 0xF0A1C, symSize: 0x30 } + - { offset: 0x18AAB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMOMa', symObjAddr: 0xE4, symBinAddr: 0xF0AE8, symSize: 0x10 } + - { offset: 0x18AAC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOMa', symObjAddr: 0x104, symBinAddr: 0xF0AF8, symSize: 0x10 } + - { offset: 0x18AADA, size: 0x8, addend: 0x0, symName: ___swift_memcpy8_4, symObjAddr: 0x114, symBinAddr: 0xF0B08, symSize: 0xC } + - { offset: 0x18AAEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5PointVwet', symObjAddr: 0x120, symBinAddr: 0xF0B14, symSize: 0x20 } + - { offset: 0x18AB02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5PointVwst', symObjAddr: 0x140, symBinAddr: 0xF0B34, symSize: 0x28 } + - { offset: 0x18AB16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5PointVMa', symObjAddr: 0x168, symBinAddr: 0xF0B5C, symSize: 0x10 } + - { offset: 0x18AB2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOwet', symObjAddr: 0x1B8, symBinAddr: 0xF0B6C, symSize: 0x48 } + - { offset: 0x18AB3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOwst', symObjAddr: 0x200, symBinAddr: 0xF0BB4, symSize: 0x48 } + - { offset: 0x18AB52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOwug', symObjAddr: 0x248, symBinAddr: 0xF0BFC, symSize: 0x8 } + - { offset: 0x18AB66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOwui', symObjAddr: 0x254, symBinAddr: 0xF0C04, symSize: 0x8 } + - { offset: 0x18AB7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOMa', symObjAddr: 0x25C, symBinAddr: 0xF0C0C, symSize: 0x10 } + - { offset: 0x18AB8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwCP', symObjAddr: 0x26C, symBinAddr: 0xF0C1C, symSize: 0xB8 } + - { offset: 0x18ABA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwxx', symObjAddr: 0x324, symBinAddr: 0xF0CD4, symSize: 0x48 } + - { offset: 0x18ABB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwcp', symObjAddr: 0x36C, symBinAddr: 0xF0D1C, symSize: 0x90 } + - { offset: 0x18ABCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwca', symObjAddr: 0x3FC, symBinAddr: 0xF0DAC, symSize: 0xA0 } + - { offset: 0x18ABDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOMa', symObjAddr: 0x4D8, symBinAddr: 0xF0E4C, symSize: 0x38 } + - { offset: 0x18ABF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwtk', symObjAddr: 0x510, symBinAddr: 0xF0E84, symSize: 0x90 } + - { offset: 0x18AC06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwta', symObjAddr: 0x5A0, symBinAddr: 0xF0F14, symSize: 0xA0 } + - { offset: 0x18AC1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwet', symObjAddr: 0x640, symBinAddr: 0xF0FB4, symSize: 0xC } + - { offset: 0x18AC2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwst', symObjAddr: 0x64C, symBinAddr: 0xF0FC0, symSize: 0xC } + - { offset: 0x18AC42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwug', symObjAddr: 0x658, symBinAddr: 0xF0FCC, symSize: 0x4 } + - { offset: 0x18AC56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwui', symObjAddr: 0x660, symBinAddr: 0xF0FD0, symSize: 0x10 } + - { offset: 0x18AC6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOMr', symObjAddr: 0x670, symBinAddr: 0xF0FE0, symSize: 0x6C } + - { offset: 0x18AF46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSHAASQWb', symObjAddr: 0x1310, symBinAddr: 0xF1C80, symSize: 0x4 } + - { offset: 0x18AF5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOAESQAAWl', symObjAddr: 0x1314, symBinAddr: 0xF1C84, symSize: 0x40 } + - { offset: 0x18AF6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillO_AEtWOh', symObjAddr: 0x17B4, symBinAddr: 0xF208C, symSize: 0x40 } + - { offset: 0x18AF82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ErrorOMa', symObjAddr: 0x1938, symBinAddr: 0xF20CC, symSize: 0x10 } + - { offset: 0x18AF96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOMa', symObjAddr: 0x1964, symBinAddr: 0xF20DC, symSize: 0x10 } + - { offset: 0x18AFAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOMa', symObjAddr: 0x1978, symBinAddr: 0xF20EC, symSize: 0x10 } + - { offset: 0x18AFBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOMa', symObjAddr: 0x1ACC, symBinAddr: 0xF20FC, symSize: 0x10 } + - { offset: 0x18AFD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOMa', symObjAddr: 0x1C3C, symBinAddr: 0xF210C, symSize: 0x10 } + - { offset: 0x18AFE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSHAASQWb', symObjAddr: 0x1C4C, symBinAddr: 0xF211C, symSize: 0x4 } + - { offset: 0x18AFFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOAESQAAWl', symObjAddr: 0x1C50, symBinAddr: 0xF2120, symSize: 0x40 } + - { offset: 0x18B00E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSHAASQWb', symObjAddr: 0x1C90, symBinAddr: 0xF2160, symSize: 0x4 } + - { offset: 0x18B022, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOAESQAAWl', symObjAddr: 0x1C94, symBinAddr: 0xF2164, symSize: 0x40 } + - { offset: 0x18B036, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSHAASQWb', symObjAddr: 0x1CD4, symBinAddr: 0xF21A4, symSize: 0x4 } + - { offset: 0x18B04A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOAESQAAWl', symObjAddr: 0x1CD8, symBinAddr: 0xF21A8, symSize: 0x40 } + - { offset: 0x18B05E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSHAASQWb', symObjAddr: 0x1D18, symBinAddr: 0xF21E8, symSize: 0x4 } + - { offset: 0x18B072, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOAESQAAWl', symObjAddr: 0x1D1C, symBinAddr: 0xF21EC, symSize: 0x40 } + - { offset: 0x18B0B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x70C, symBinAddr: 0xF107C, symSize: 0x84 } + - { offset: 0x18B1A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSHAASH9hashValueSivgTW', symObjAddr: 0x790, symBinAddr: 0xF1100, symSize: 0x74 } + - { offset: 0x18B255, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x804, symBinAddr: 0xF1174, symSize: 0x48 } + - { offset: 0x18B2C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x84C, symBinAddr: 0xF11BC, symSize: 0x70 } + - { offset: 0x18B368, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x900, symBinAddr: 0xF1270, symSize: 0x98 } + - { offset: 0x18B457, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSHAASH9hashValueSivgTW', symObjAddr: 0x998, symBinAddr: 0xF1308, symSize: 0x74 } + - { offset: 0x18B50B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xA0C, symBinAddr: 0xF137C, symSize: 0x50 } + - { offset: 0x18B57D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xA5C, symBinAddr: 0xF13CC, symSize: 0x70 } + - { offset: 0x18B61E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xB7C, symBinAddr: 0xF14EC, symSize: 0xE8 } + - { offset: 0x18B734, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSHAASH9hashValueSivgTW', symObjAddr: 0xC64, symBinAddr: 0xF15D4, symSize: 0x90 } + - { offset: 0x18B7E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xCF4, symBinAddr: 0xF1664, symSize: 0x6C } + - { offset: 0x18B858, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xD60, symBinAddr: 0xF16D0, symSize: 0x8C } + - { offset: 0x18B8FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xE70, symBinAddr: 0xF17E0, symSize: 0x64 } + - { offset: 0x18B9F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSHAASH9hashValueSivgTW', symObjAddr: 0xED4, symBinAddr: 0xF1844, symSize: 0x58 } + - { offset: 0x18BA9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xF2C, symBinAddr: 0xF189C, symSize: 0x2C } + - { offset: 0x18BB06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF58, symBinAddr: 0xF18C8, symSize: 0x54 } + - { offset: 0x18BBA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xFFC, symBinAddr: 0xF196C, symSize: 0xE4 } + - { offset: 0x18BCBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSHAASH9hashValueSivgTW', symObjAddr: 0x10E0, symBinAddr: 0xF1A50, symSize: 0x90 } + - { offset: 0x18BD6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1170, symBinAddr: 0xF1AE0, symSize: 0x6C } + - { offset: 0x18BDDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x11DC, symBinAddr: 0xF1B4C, symSize: 0x8C } + - { offset: 0x18BE8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5PointVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x6DC, symBinAddr: 0xF104C, symSize: 0x2C } + - { offset: 0x18BEBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x708, symBinAddr: 0xF1078, symSize: 0x4 } + - { offset: 0x18BED6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x708, symBinAddr: 0xF1078, symSize: 0x4 } + - { offset: 0x18BF0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x8C8, symBinAddr: 0xF1238, symSize: 0x38 } + - { offset: 0x18BF5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xB48, symBinAddr: 0xF14B8, symSize: 0x34 } + - { offset: 0x18BFC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xDEC, symBinAddr: 0xF175C, symSize: 0x34 } + - { offset: 0x18BFEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xE20, symBinAddr: 0xF1790, symSize: 0x50 } + - { offset: 0x18C050, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xFAC, symBinAddr: 0xF191C, symSize: 0x34 } + - { offset: 0x18C079, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xFE0, symBinAddr: 0xF1950, symSize: 0x1C } + - { offset: 0x18C0CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x1268, symBinAddr: 0xF1BD8, symSize: 0x34 } + - { offset: 0x18C0F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x129C, symBinAddr: 0xF1C0C, symSize: 0x50 } + - { offset: 0x18C13B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x12EC, symBinAddr: 0xF1C5C, symSize: 0x24 } + - { offset: 0x18C16B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x13A8, symBinAddr: 0xF1CC4, symSize: 0x214 } + - { offset: 0x18C1B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x15BC, symBinAddr: 0xF1ED8, symSize: 0x1B4 } + - { offset: 0x18CFF0, size: 0x8, addend: 0x0, symName: '_$sSE8PenNavUIE10dictionarySDySSypGSgvgAA20PositionTrackingDataV_Tg5', symObjAddr: 0x2B8, symBinAddr: 0xF2548, symSize: 0x204 } + - { offset: 0x18D080, size: 0x8, addend: 0x0, symName: '_$sSE8PenNavUIE10dictionarySDySSypGSgvgAA19NavigationEventDataV_Tg5', symObjAddr: 0x4BC, symBinAddr: 0xF274C, symSize: 0x1E8 } + - { offset: 0x18D110, size: 0x8, addend: 0x0, symName: '_$sSE8PenNavUIE10dictionarySDySSypGSgvgAA27LocationMessageTrackingDataV_Tg5', symObjAddr: 0x6A4, symBinAddr: 0xF2934, symSize: 0x218 } + - { offset: 0x18DE4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18initializeRendereryyF', symObjAddr: 0x9E0, symBinAddr: 0xF2C70, symSize: 0x778 } + - { offset: 0x18E5B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyF', symObjAddr: 0x11AC, symBinAddr: 0xF343C, symSize: 0x5CC } + - { offset: 0x18E8D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU_', symObjAddr: 0x12660, symBinAddr: 0x1048D4, symSize: 0x88 } + - { offset: 0x18E921, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU0_', symObjAddr: 0x126E8, symBinAddr: 0x10495C, symSize: 0x2A8 } + - { offset: 0x18EAF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU1_', symObjAddr: 0x12D24, symBinAddr: 0x104F98, symSize: 0x58 } + - { offset: 0x18EB20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU2_', symObjAddr: 0x12D7C, symBinAddr: 0x104FF0, symSize: 0x100 } + - { offset: 0x18EB8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU3_', symObjAddr: 0x12E7C, symBinAddr: 0x1050F0, symSize: 0x38C } + - { offset: 0x18EF08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCfETo', symObjAddr: 0x1A14, symBinAddr: 0xF3CA4, symSize: 0x220 } + - { offset: 0x18F35B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC16onLocationChange8locationy7Penguin10PILocationC_tF', symObjAddr: 0x2158, symBinAddr: 0xF43E8, symSize: 0x558 } + - { offset: 0x18F6D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC29controlUserLocationVisibility017_A507C9F1E7FC9E02P13BD01692CD1214LLyyF', symObjAddr: 0x26B0, symBinAddr: 0xF4940, symSize: 0x12EC } + - { offset: 0x18FB44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23setUserLocationAndFocus8location7showGPS0M7BlueDoty7Penguin10PILocationC_S2btF', symObjAddr: 0x399C, symBinAddr: 0xF5C2C, symSize: 0x2B8 } + - { offset: 0x19014D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11moveToFloor_12isManualMode010setsCamerahI0y7Penguin0I0CSg_S2btF', symObjAddr: 0x5284, symBinAddr: 0xF7514, symSize: 0x790 } + - { offset: 0x1908B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22deselectedUserLocation12dismissPanelySb_tF', symObjAddr: 0x5A14, symBinAddr: 0xF7CA4, symSize: 0x1A0 } + - { offset: 0x190E94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC32resetCategoryForIndoorWayfindingyyF', symObjAddr: 0x8C1C, symBinAddr: 0xFAEAC, symSize: 0x2B8 } + - { offset: 0x19101B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC05setupD12Restrictions017_A507C9F1E7FC9E02N13BD01692CD1214LL4modeyAA14LocationStatusO_tF', symObjAddr: 0x90A8, symBinAddr: 0xFB338, symSize: 0x200 } + - { offset: 0x1910F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC05setupD6Bounds017_A507C9F1E7FC9E02N13BD01692CD1214LL06enableH0ySb_tF', symObjAddr: 0x92A8, symBinAddr: 0xFB538, symSize: 0x11C } + - { offset: 0x1912E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20setupOffCampusCamera017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtF', symObjAddr: 0xA978, symBinAddr: 0xFCC08, symSize: 0x630 } + - { offset: 0x19166F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20setupOffCampusCamera017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtFyyScMYccfU_', symObjAddr: 0x10550, symBinAddr: 0x1027D8, symSize: 0x78 } + - { offset: 0x191726, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCMa', symObjAddr: 0xB9C0, symBinAddr: 0xFDC50, symSize: 0x20 } + - { offset: 0x1918D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC02onD5ReadyyyF', symObjAddr: 0xB9E0, symBinAddr: 0xFDC70, symSize: 0x958 } + - { offset: 0x1921D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC02onD5ReadyyyFyycfU_', symObjAddr: 0xC434, symBinAddr: 0xFE6C4, symSize: 0x268 } + - { offset: 0x19226E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC19startUpdateLocationyyF', symObjAddr: 0xC338, symBinAddr: 0xFE5C8, symSize: 0xFC } + - { offset: 0x19229F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC21puckLocationDidUpdate10coordinateySo22CLLocationCoordinate2DV_tF', symObjAddr: 0xC69C, symBinAddr: 0xFE92C, symSize: 0x20C } + - { offset: 0x19240F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22selectCampusInfoScreen10identifierySS_tF', symObjAddr: 0xC8A8, symBinAddr: 0xFEB38, symSize: 0x47C } + - { offset: 0x1926FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC15mapAlignedNorthyyF', symObjAddr: 0xCD28, symBinAddr: 0xFEFB4, symSize: 0xD4 } + - { offset: 0x192874, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC15cameraDidChangeyyF', symObjAddr: 0xCFD0, symBinAddr: 0xFF25C, symSize: 0x610 } + - { offset: 0x192CD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14onSelectSymbol10identifierySS_tF', symObjAddr: 0xD5E0, symBinAddr: 0xFF86C, symSize: 0x378 } + - { offset: 0x1930AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11onSelectPOI10identifierySS_tF', symObjAddr: 0xD958, symBinAddr: 0xFFBE4, symSize: 0x7FC } + - { offset: 0x1936EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC21selectVenueInfoScreen10identifierySS_tF', symObjAddr: 0xE154, symBinAddr: 0x1003E0, symSize: 0x7EC } + - { offset: 0x193CB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC12selectCampus017_A507C9F1E7FC9E02N13BD01692CD1214LL6campusy7Penguin5VenueC_tFyycfU_', symObjAddr: 0xE940, symBinAddr: 0x100BCC, symSize: 0x2C0 } + - { offset: 0x193EF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP27locationIndicatorCoordinateSo22CLLocationCoordinate2DVSgvgTW', symObjAddr: 0xEC00, symBinAddr: 0x100E8C, symSize: 0x18 } + - { offset: 0x193F14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP27locationIndicatorCoordinateSo22CLLocationCoordinate2DVSgvgTW', symObjAddr: 0xEC00, symBinAddr: 0x100E8C, symSize: 0x18 } + - { offset: 0x193F32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP27locationIndicatorCoordinateSo22CLLocationCoordinate2DVSgvgTW', symObjAddr: 0xEC00, symBinAddr: 0x100E8C, symSize: 0x18 } + - { offset: 0x193F6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP26isLocationIndicatorVisibleSbvgTW', symObjAddr: 0xEC18, symBinAddr: 0x100EA4, symSize: 0x14 } + - { offset: 0x193F8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP26isLocationIndicatorVisibleSbvgTW', symObjAddr: 0xEC18, symBinAddr: 0x100EA4, symSize: 0x14 } + - { offset: 0x193FAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP26isLocationIndicatorVisibleSbvgTW', symObjAddr: 0xEC18, symBinAddr: 0x100EA4, symSize: 0x14 } + - { offset: 0x193FCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP14onSelectSymbol10identifierySS_tFTW', symObjAddr: 0xEC44, symBinAddr: 0x100ECC, symSize: 0x4 } + - { offset: 0x193FE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP20onSelectUserLocationyyFTW', symObjAddr: 0xEC48, symBinAddr: 0x100ED0, symSize: 0x84 } + - { offset: 0x19406F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP15cameraDidChangeyyFTW', symObjAddr: 0xECCC, symBinAddr: 0x100F54, symSize: 0x4 } + - { offset: 0x19408B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP15mapAlignedNorthyyFTW', symObjAddr: 0xECD0, symBinAddr: 0x100F58, symSize: 0x4 } + - { offset: 0x1940A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP21puckLocationDidUpdate10coordinateySo22CLLocationCoordinate2DV_tFTW', symObjAddr: 0xECD4, symBinAddr: 0x100F5C, symSize: 0x4 } + - { offset: 0x1940E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC19firstUpdateLocation017_A507C9F1E7FC9E02O13BD01692CD1214LLyy7Penguin5FloorC_AF10PILocationC0R10INRenderer10PIRendererCS2btF', symObjAddr: 0xECD8, symBinAddr: 0x100F60, symSize: 0x5EC } + - { offset: 0x19460C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20setUserLocationColor017_A507C9F1E7FC9E02P13BD01692CD1214LLyyF', symObjAddr: 0xF2C4, symBinAddr: 0x10154C, symSize: 0x2A8 } + - { offset: 0x1947D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22initializeUserLocation017_A507C9F1E7FC9E02O13BD01692CD1214LL8locationy7Penguin10PILocationC_tF', symObjAddr: 0xF56C, symBinAddr: 0x1017F4, symSize: 0x11C } + - { offset: 0x1948C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC06updateD12LocationMode017_A507C9F1E7FC9E02O13BD01692CD1214LL8locationy7Penguin10PILocationC_tF', symObjAddr: 0xF688, symBinAddr: 0x101910, symSize: 0x2F0 } + - { offset: 0x194A3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23handleOffCampusLocation017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtF', symObjAddr: 0xF978, symBinAddr: 0x101C00, symSize: 0xE4 } + - { offset: 0x194B3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22handleOnCampusLocation017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtF', symObjAddr: 0xFA5C, symBinAddr: 0x101CE4, symSize: 0x534 } + - { offset: 0x194F38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC29setLocationProviderCoordinateyySo22CLLocationCoordinate2DVF', symObjAddr: 0xFF90, symBinAddr: 0x102218, symSize: 0xA4 } + - { offset: 0x195008, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC24handleUserLocationCamera017_A507C9F1E7FC9E02P13BD01692CD1214LL8locationy7Penguin10PILocationC_tF', symObjAddr: 0x10034, symBinAddr: 0x1022BC, symSize: 0xF8 } + - { offset: 0x1951B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC32onSourceConnectivityStatusChange6statusy7Penguin0h10ConnectionJ0O_tF', symObjAddr: 0x1012C, symBinAddr: 0x1023B4, symSize: 0x424 } + - { offset: 0x1955A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC13onVenueChange5venuey7Penguin0H0C_tF', symObjAddr: 0x105C8, symBinAddr: 0x102850, symSize: 0x564 } + - { offset: 0x195A2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC13onFloorChange5floory7Penguin0H0C_tF', symObjAddr: 0x10B2C, symBinAddr: 0x102DB4, symSize: 0x498 } + - { offset: 0x195F7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC28handleConnectedFloorOnChange017_A507C9F1E7FC9E02Q13BD01692CD1214LL5floory7Penguin0I0CSg_tF', symObjAddr: 0x10FC4, symBinAddr: 0x10324C, symSize: 0x384 } + - { offset: 0x196324, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC9drawFloor017_A507C9F1E7FC9E02N13BD01692CD1214LL_012setsCameraToH0y7Penguin0H0C_SbtF', symObjAddr: 0x11348, symBinAddr: 0x1035D0, symSize: 0xADC } + - { offset: 0x196992, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC16onRotationChange8rotationy7Penguin10PIRotationC_tF', symObjAddr: 0x11E24, symBinAddr: 0x1040AC, symSize: 0x3A4 } + - { offset: 0x196D52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC26onConnectivityStatusChange6statusy7Penguin06ServerhI0O_tF', symObjAddr: 0x121C8, symBinAddr: 0x104450, symSize: 0x1D8 } + - { offset: 0x196E9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22onBlePowerStatusChange6statusy7Penguin08BLEPowerJ0O_tFyyScMYccfU_', symObjAddr: 0x123F4, symBinAddr: 0x10467C, symSize: 0xD0 } + - { offset: 0x196EE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP16onLocationChange8locationyAD0H0C_tFTW', symObjAddr: 0x124C4, symBinAddr: 0x10474C, symSize: 0x4 } + - { offset: 0x196F00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP13onVenueChange5venueyAD0L0C_tFTW', symObjAddr: 0x124CC, symBinAddr: 0x104750, symSize: 0x4 } + - { offset: 0x196F1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP13onFloorChange5flooryAD0L0C_tFTW', symObjAddr: 0x124D0, symBinAddr: 0x104754, symSize: 0x4 } + - { offset: 0x196F38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP16onRotationChange8rotationyAD10PIRotationC_tFTW', symObjAddr: 0x124D4, symBinAddr: 0x104758, symSize: 0x4 } + - { offset: 0x196F54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP26onConnectivityStatusChange6statusyAD06ServerlM0O_tFTW', symObjAddr: 0x124D8, symBinAddr: 0x10475C, symSize: 0x4 } + - { offset: 0x196F70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP32onSourceConnectivityStatusChange6statusyAD0l10ConnectionN0O_tFTW', symObjAddr: 0x124DC, symBinAddr: 0x104760, symSize: 0x4 } + - { offset: 0x196FCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP017onGPSStatusChangeM06statusyAD25SourceGPSConnectionStatusO_tFTW', symObjAddr: 0x124E0, symBinAddr: 0x104764, symSize: 0xD0 } + - { offset: 0x197021, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP22onBlePowerStatusChange6statusyAD08BLEPowerN0O_tFTW', symObjAddr: 0x125C0, symBinAddr: 0x104834, symSize: 0x4 } + - { offset: 0x197041, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP22onBlePowerStatusChange6statusyAD08BLEPowerN0O_tFTW', symObjAddr: 0x125C0, symBinAddr: 0x104834, symSize: 0x4 } + - { offset: 0x197078, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC13setCameraMode017_A507C9F1E7FC9E02O13BD01692CD1214LLyyF', symObjAddr: 0x12990, symBinAddr: 0x104C04, symSize: 0x394 } + - { offset: 0x1973F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14selectCategory8categoryy7Penguin11POICategoryV_tF', symObjAddr: 0x13208, symBinAddr: 0x10547C, symSize: 0x32C } + - { offset: 0x197627, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC16deselectCategoryyyF', symObjAddr: 0x13534, symBinAddr: 0x1057A8, symSize: 0x370 } + - { offset: 0x197A9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18selectUserLocationyyF', symObjAddr: 0x138A4, symBinAddr: 0x105B18, symSize: 0x18C } + - { offset: 0x197C33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC15didTapPlaceLink5placey7Penguin10PoiPolygonV_tF', symObjAddr: 0x13A30, symBinAddr: 0x105CA4, symSize: 0x140 } + - { offset: 0x197D0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCAA16DeepLinkDelegateA2aDP011didTapPlaceH05placey7Penguin10PoiPolygonV_tFTW', symObjAddr: 0x13C38, symBinAddr: 0x105E88, symSize: 0x4 } + - { offset: 0x197D29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCAA16DeepLinkDelegateA2aDP011didTapVenueH05venuey7Penguin0L0C_tFTW', symObjAddr: 0x13C3C, symBinAddr: 0x105E8C, symSize: 0x1C } + - { offset: 0x197D45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCAA16DeepLinkDelegateA2aDP012didTapCampusH06campusy7Penguin5VenueC_tFTW', symObjAddr: 0x13C58, symBinAddr: 0x105EA8, symSize: 0x1C } + - { offset: 0x197D61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCAA16DeepLinkDelegateA2aDP018didTapUserLocationH08locationyAA5PlaceC_tFTW', symObjAddr: 0x13C74, symBinAddr: 0x105EC4, symSize: 0x1C } + - { offset: 0x197F2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17updateFavoritePOI017_A507C9F1E7FC9E02O13BD01692CD1214LL5poiIdySiSg_tF', symObjAddr: 0x13C90, symBinAddr: 0x105EE0, symSize: 0x80C } + - { offset: 0x198663, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC30reloadSelectedFavoriteLocation017_A507C9F1E7FC9E02P13BD01692CD1214LLyyF', symObjAddr: 0x1449C, symBinAddr: 0x1066EC, symSize: 0xCC } + - { offset: 0x198790, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC19updateFavoritePlace017_A507C9F1E7FC9E02O13BD01692CD1214LL8favorite7isAddedyAA0H0C_SbtF', symObjAddr: 0x14568, symBinAddr: 0x1067B8, symSize: 0x204 } + - { offset: 0x1989B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtF', symObjAddr: 0x1476C, symBinAddr: 0x1069BC, symSize: 0x7C8 } + - { offset: 0x198F2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFyycfU_', symObjAddr: 0x14F34, symBinAddr: 0x107184, symSize: 0x12C } + - { offset: 0x198FF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18handleUserLocation017_A507C9F1E7FC9E02O13BD01692CD1214LLyyF', symObjAddr: 0x15060, symBinAddr: 0x1072B0, symSize: 0x404 } + - { offset: 0x19946E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC35handleRecenterWhenLocationAvailable017_A507C9F1E7FC9E02Q13BD01692CD1214LLyyF', symObjAddr: 0x15464, symBinAddr: 0x1076B4, symSize: 0x2A8 } + - { offset: 0x1994E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC35handleRecenterWhenLocationAvailable017_A507C9F1E7FC9E02Q13BD01692CD1214LLyyFyyScMYccfU_', symObjAddr: 0x15860, symBinAddr: 0x107AB0, symSize: 0x104 } + - { offset: 0x1995DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC30handleSelectedLocationForToast017_A507C9F1E7FC9E02Q13BD01692CD1214LLyyF', symObjAddr: 0x1570C, symBinAddr: 0x10795C, symSize: 0x154 } + - { offset: 0x1997A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17getConnectedFloor06activeI07Penguin0I0CSgAI_tFTf4nd_n', symObjAddr: 0x15964, symBinAddr: 0x107BB4, symSize: 0x2C4 } + - { offset: 0x199B2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC35handlingUserLocationOnceFloorChange017_A507C9F1E7FC9E02R13BD01692CD1214LLyy17PenguinINRenderer10PIRendererC_0U010PILocationCSbAI0K0CSbAI5VenueCtFTf4nnnnndn_n', symObjAddr: 0x15E58, symBinAddr: 0x108024, symSize: 0x5F0 } + - { offset: 0x19A047, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC26handleVenueSymbolSelection017_A507C9F1E7FC9E02P13BD01692CD1214LL5venuey7Penguin0H0C_tFTf4dn_n', symObjAddr: 0x16448, symBinAddr: 0x108614, symSize: 0x420 } + - { offset: 0x19A367, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18updateUserLocation017_A507C9F1E7FC9E02O13BD01692CD1214LL8locationySo22CLLocationCoordinate2DV_tFTf4dn_n', symObjAddr: 0x16878, symBinAddr: 0x108A34, symSize: 0x578 } + - { offset: 0x19A7A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOWOh', symObjAddr: 0x17024, symBinAddr: 0x1091E0, symSize: 0x3C } + - { offset: 0x19A7B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOWOc', symObjAddr: 0x17060, symBinAddr: 0x10921C, symSize: 0x44 } + - { offset: 0x19A7CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC9drawFloor017_A507C9F1E7FC9E02N13BD01692CD1214LL_012setsCameraToH0y7Penguin0H0C_SbtFySbcfU0_TA', symObjAddr: 0x170C8, symBinAddr: 0x109284, symSize: 0x18 } + - { offset: 0x19A7E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVWOh', symObjAddr: 0x170E0, symBinAddr: 0x10929C, symSize: 0x34 } + - { offset: 0x19A7F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC12selectCampus017_A507C9F1E7FC9E02N13BD01692CD1214LL6campusy7Penguin5VenueC_tFyycfU_TA', symObjAddr: 0x17198, symBinAddr: 0x109328, symSize: 0x8 } + - { offset: 0x19A808, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22onBlePowerStatusChange6statusy7Penguin08BLEPowerJ0O_tFTf4nd_n', symObjAddr: 0x171B0, symBinAddr: 0x109330, symSize: 0x28C } + - { offset: 0x19A865, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22onBlePowerStatusChange6statusy7Penguin08BLEPowerJ0O_tFyyScMYccfU_TA', symObjAddr: 0x17490, symBinAddr: 0x1095CC, symSize: 0x8 } + - { offset: 0x19A879, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x17498, symBinAddr: 0x1095D4, symSize: 0x10 } + - { offset: 0x19A88D, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x174A8, symBinAddr: 0x1095E4, symSize: 0x8 } + - { offset: 0x19A8A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFyycfU_TA', symObjAddr: 0x175FC, symBinAddr: 0x1095EC, symSize: 0x8 } + - { offset: 0x19A8B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC35handleRecenterWhenLocationAvailable017_A507C9F1E7FC9E02Q13BD01692CD1214LLyyFyyScMYccfU_TA', symObjAddr: 0x17604, symBinAddr: 0x1095F4, symSize: 0x8 } + - { offset: 0x19A8C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20setupOffCampusCamera017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtFyyScMYccfU_TA', symObjAddr: 0x17630, symBinAddr: 0x109620, symSize: 0x8 } + - { offset: 0x19A8DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVACSEAAWl', symObjAddr: 0x17638, symBinAddr: 0x109628, symSize: 0x40 } + - { offset: 0x19A8F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVACSEAAWl', symObjAddr: 0x176C8, symBinAddr: 0x109668, symSize: 0x40 } + - { offset: 0x19A905, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVACSEAAWl', symObjAddr: 0x1774C, symBinAddr: 0x1096A8, symSize: 0x40 } + - { offset: 0x19A919, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20didTapRecenterButtonyyFyycACcfu_yycfu0_TA', symObjAddr: 0x1778C, symBinAddr: 0x1096E8, symSize: 0x20 } + - { offset: 0x19A94B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC34handleServerConnectionReconnectingyyFyyScMYccfU_TA', symObjAddr: 0x1781C, symBinAddr: 0x10972C, symSize: 0x8 } + - { offset: 0x19A95F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC28checkLocationDetectionStatus017_A507C9F1E7FC9E02P13BD01692CD1214LLyyFyyScMYccfU_TA', symObjAddr: 0x17824, symBinAddr: 0x109734, symSize: 0x8 } + - { offset: 0x19A973, size: 0x8, addend: 0x0, symName: '_$s7Penguin5FloorCSgSgWOe', symObjAddr: 0x1782C, symBinAddr: 0x10973C, symSize: 0x10 } + - { offset: 0x19A987, size: 0x8, addend: 0x0, symName: '_$s7Penguin5FloorCSgSgWOy', symObjAddr: 0x1783C, symBinAddr: 0x10974C, symSize: 0x10 } + - { offset: 0x19A99B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14viewWillAppearyySbFyycfU_TA', symObjAddr: 0x1784C, symBinAddr: 0x10975C, symSize: 0x18 } + - { offset: 0x19A9AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU0_TA', symObjAddr: 0x17864, symBinAddr: 0x109774, symSize: 0x8 } + - { offset: 0x19A9C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU1_TA', symObjAddr: 0x1786C, symBinAddr: 0x10977C, symSize: 0x8 } + - { offset: 0x19A9D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU2_TA', symObjAddr: 0x17874, symBinAddr: 0x109784, symSize: 0x8 } + - { offset: 0x19A9EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU3_TA', symObjAddr: 0x1787C, symBinAddr: 0x10978C, symSize: 0x8 } + - { offset: 0x19A9FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU_TA', symObjAddr: 0x17884, symBinAddr: 0x109794, symSize: 0x8 } + - { offset: 0x19AA13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18initializeRendereryyFyycACcfu0_yycfu1_TA', symObjAddr: 0x1788C, symBinAddr: 0x10979C, symSize: 0x20 } + - { offset: 0x19AA45, size: 0x8, addend: 0x0, symName: '_$s7Penguin13FloorSettingsVSgWOb', symObjAddr: 0x17940, symBinAddr: 0x109850, symSize: 0x48 } + - { offset: 0x19AA59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC02onD5ReadyyyFyycfU_TA', symObjAddr: 0x17988, symBinAddr: 0x109898, symSize: 0x34 } + - { offset: 0x19ABB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14toastContainerSo6UIViewCSgvgTo', symObjAddr: 0x8BC, symBinAddr: 0xF2B4C, symSize: 0x20 } + - { offset: 0x19AC10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14toastContainerSo6UIViewCSgvsTo', symObjAddr: 0x8DC, symBinAddr: 0xF2B6C, symSize: 0x14 } + - { offset: 0x19AC61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20toastContainerHeightSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x8F0, symBinAddr: 0xF2B80, symSize: 0x20 } + - { offset: 0x19ACBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20toastContainerHeightSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x910, symBinAddr: 0xF2BA0, symSize: 0x14 } + - { offset: 0x19AEE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11campusFloor7Penguin0H0CSgvg', symObjAddr: 0x924, symBinAddr: 0xF2BB4, symSize: 0xBC } + - { offset: 0x19B41D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x1778, symBinAddr: 0xF3A08, symSize: 0xF0 } + - { offset: 0x19B457, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCfD', symObjAddr: 0x1868, symBinAddr: 0xF3AF8, symSize: 0xCC } + - { offset: 0x19B497, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCfDTo', symObjAddr: 0x1934, symBinAddr: 0xF3BC4, symSize: 0xE0 } + - { offset: 0x19BC23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14viewWillAppearyySbF', symObjAddr: 0x1C34, symBinAddr: 0xF3EC4, symSize: 0x524 } + - { offset: 0x19C2BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0x3C54, symBinAddr: 0xF5EE4, symSize: 0x30 } + - { offset: 0x19C309, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC010setupDebugE0yyF', symObjAddr: 0x3C84, symBinAddr: 0xF5F14, symSize: 0x26C } + - { offset: 0x19C3BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18oneSecondDidElapseyyFTo', symObjAddr: 0x3EF0, symBinAddr: 0xF6180, symSize: 0x5C } + - { offset: 0x19C462, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC28checkLocationDetectionStatus017_A507C9F1E7FC9E02P13BD01692CD1214LLyyF', symObjAddr: 0x3F4C, symBinAddr: 0xF61DC, symSize: 0x33C } + - { offset: 0x19C4CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC28checkLocationDetectionStatus017_A507C9F1E7FC9E02P13BD01692CD1214LLyyFyyScMYccfU_', symObjAddr: 0x4288, symBinAddr: 0xF6518, symSize: 0x3DC } + - { offset: 0x19C7D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC25retryConnectivityCallback017_A507C9F1E7FC9E02O13BD01692CD1214LLyyF', symObjAddr: 0x4664, symBinAddr: 0xF68F4, symSize: 0xC4 } + - { offset: 0x19C88E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC34handleServerConnectionReconnectingyyF', symObjAddr: 0x4728, symBinAddr: 0xF69B8, symSize: 0x340 } + - { offset: 0x19C8F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC34handleServerConnectionReconnectingyyFyyScMYccfU_', symObjAddr: 0x4A68, symBinAddr: 0xF6CF8, symSize: 0x19C } + - { offset: 0x19CB74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11moveToPlace_8animatedyAA0I0CSg_SbtF', symObjAddr: 0x4C04, symBinAddr: 0xF6E94, symSize: 0x680 } + - { offset: 0x19D0C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC9moveToPoi_06sourceE08animatedy7Penguin0I7PolygonVSg_AA06SourceE0OSbtF', symObjAddr: 0x5BB4, symBinAddr: 0xF7E44, symSize: 0x350 } + - { offset: 0x19D31A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11moveToVenue_8animatedy7Penguin0I0CSg_SbtF', symObjAddr: 0x5F04, symBinAddr: 0xF8194, symSize: 0x758 } + - { offset: 0x19D75E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC12moveToCampus_8animatedy7Penguin5VenueCSg_SbtF', symObjAddr: 0x665C, symBinAddr: 0xF88EC, symSize: 0x294 } + - { offset: 0x19D8E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC06filterD016filteredFeatures6manualySayAA7POIDataCG_SbtF', symObjAddr: 0x68F0, symBinAddr: 0xF8B80, symSize: 0x720 } + - { offset: 0x19E2CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC13moveToFeature7featureyAA7POIDataCSg_tF', symObjAddr: 0x7010, symBinAddr: 0xF92A0, symSize: 0x658 } + - { offset: 0x19E87A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC05clearD6FilteryyF', symObjAddr: 0x7668, symBinAddr: 0xF98F8, symSize: 0xE4 } + - { offset: 0x19EA11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC19drawParkingLocation012setsCameraToH0ySb_tF', symObjAddr: 0x774C, symBinAddr: 0xF99DC, symSize: 0x3F4 } + - { offset: 0x19ED10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC21removeParkingLocationyyF', symObjAddr: 0x7B40, symBinAddr: 0xF9DD0, symSize: 0xD0 } + - { offset: 0x19EE5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC03getD7PaddingSo12UIEdgeInsetsVyF', symObjAddr: 0x7C10, symBinAddr: 0xF9EA0, symSize: 0x334 } + - { offset: 0x19F176, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17fitToCampusAction8animatedySb_tF', symObjAddr: 0x7F44, symBinAddr: 0xFA1D4, symSize: 0xCD8 } + - { offset: 0x19F936, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17fitToCampusAction8animatedySb_tFTo', symObjAddr: 0x8ED4, symBinAddr: 0xFB164, symSize: 0x30 } + - { offset: 0x19F94A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC26setupCameraToDisplayCampus017_A507C9F1E7FC9E02Q13BD01692CD1214LL8animated10completionySb_yycSgtF', symObjAddr: 0x8F04, symBinAddr: 0xFB194, symSize: 0x1A4 } + - { offset: 0x19FA85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18updateVenueSymbolsyyF', symObjAddr: 0x93C4, symBinAddr: 0xFB654, symSize: 0x344 } + - { offset: 0x19FE0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC16focusOnGPSCampus3loc9withFocusy7Penguin10PILocationC_SbtF', symObjAddr: 0x9708, symBinAddr: 0xFB998, symSize: 0x480 } + - { offset: 0x1A037E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20didTapRecenterButtonyyF', symObjAddr: 0x9B88, symBinAddr: 0xFBE18, symSize: 0x298 } + - { offset: 0x1A0547, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20didTapRecenterButtonyyFTo', symObjAddr: 0x9E20, symBinAddr: 0xFC0B0, symSize: 0x28 } + - { offset: 0x1A05D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC8recenteryyF', symObjAddr: 0x9E48, symBinAddr: 0xFC0D8, symSize: 0xB30 } + - { offset: 0x1A0F86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC06updateD8ControlsyyF', symObjAddr: 0xAFA8, symBinAddr: 0xFD238, symSize: 0x174 } + - { offset: 0x1A10EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xB11C, symBinAddr: 0xFD3AC, symSize: 0x424 } + - { offset: 0x1A11DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xB540, symBinAddr: 0xFD7D0, symSize: 0x60 } + - { offset: 0x1A1226, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB5A0, symBinAddr: 0xFD830, symSize: 0x3F8 } + - { offset: 0x1A130B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xB998, symBinAddr: 0xFDC28, symSize: 0x28 } + - { offset: 0x1A1962, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC010initializeE09withFocusySb_tFTf4dn_n', symObjAddr: 0x15CAC, symBinAddr: 0x107E78, symSize: 0x1AC } + - { offset: 0x1A1BCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC21selectParkingLocation_8animatedyAA5PlaceCSg_SbtFTf4ndn_n', symObjAddr: 0x16DF0, symBinAddr: 0x108FAC, symSize: 0x234 } + - { offset: 0x1A2120, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC12fetchRequestSo07NSFetchF0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x10991C, symSize: 0x70 } + - { offset: 0x1A21B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC12fetchRequestSo07NSFetchF0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x10991C, symSize: 0x70 } + - { offset: 0x1A220B, size: 0x8, addend: 0x0, symName: _keypath_get_selector_type, symObjAddr: 0x70, symBinAddr: 0x10998C, symSize: 0xC } + - { offset: 0x1A221F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC4typeSSSgvpACTK', symObjAddr: 0x7C, symBinAddr: 0x109998, symSize: 0x68 } + - { offset: 0x1A2237, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC4typeSSSgvpACTk', symObjAddr: 0xE8, symBinAddr: 0x109A04, symSize: 0x54 } + - { offset: 0x1A224F, size: 0x8, addend: 0x0, symName: _keypath_get_selector_value, symObjAddr: 0x140, symBinAddr: 0x109A5C, symSize: 0xC } + - { offset: 0x1A2263, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvpACTK', symObjAddr: 0x14C, symBinAddr: 0x109A68, symSize: 0x68 } + - { offset: 0x1A227B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvpACTk', symObjAddr: 0x1B8, symBinAddr: 0x109AD4, symSize: 0x5C } + - { offset: 0x1A2636, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineOMa', symObjAddr: 0xE4, symBinAddr: 0x109B34, symSize: 0x10 } + - { offset: 0x1A2BCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCMa', symObjAddr: 0x260, symBinAddr: 0x109D98, symSize: 0x20 } + - { offset: 0x1A2C1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15BehaviorAdapterCMa', symObjAddr: 0x320, symBinAddr: 0x109E58, symSize: 0x20 } + - { offset: 0x1A2C50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCACycfC', symObjAddr: 0x0, symBinAddr: 0x109B44, symSize: 0x28 } + - { offset: 0x1A2C83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCACycfc', symObjAddr: 0x28, symBinAddr: 0x109B6C, symSize: 0x10 } + - { offset: 0x1A2CB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x38, symBinAddr: 0x109B7C, symSize: 0x1C } + - { offset: 0x1A2CCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x38, symBinAddr: 0x109B7C, symSize: 0x1C } + - { offset: 0x1A2CE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate12CoreGraphics7CGFloatVvg', symObjAddr: 0x54, symBinAddr: 0x109B98, symSize: 0x1C } + - { offset: 0x1A2CFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x70, symBinAddr: 0x109BB4, symSize: 0xC } + - { offset: 0x1A2D0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime12CoreGraphics7CGFloatVvg', symObjAddr: 0x7C, symBinAddr: 0x109BC0, symSize: 0xC } + - { offset: 0x1A2D44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x88, symBinAddr: 0x109BCC, symSize: 0x10 } + - { offset: 0x1A2D5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x88, symBinAddr: 0x109BCC, symSize: 0x10 } + - { offset: 0x1A2D6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate12CoreGraphics7CGFloatVvg', symObjAddr: 0x98, symBinAddr: 0x109BDC, symSize: 0x10 } + - { offset: 0x1A2D89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC21redirectionalProgress_4from2to12CoreGraphics7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtF', symObjAddr: 0xA8, symBinAddr: 0x109BEC, symSize: 0x8 } + - { offset: 0x1A2DCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC21redirectionalProgress_4from2to12CoreGraphics7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtFTo', symObjAddr: 0xB0, symBinAddr: 0x109BF4, symSize: 0x8 } + - { offset: 0x1A2E1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0xC0, symBinAddr: 0x109BFC, symSize: 0x8 } + - { offset: 0x1A2E42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvgTo', symObjAddr: 0xC8, symBinAddr: 0x109C04, symSize: 0x3C } + - { offset: 0x1A2E75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvg', symObjAddr: 0x104, symBinAddr: 0x109C40, symSize: 0x30 } + - { offset: 0x1A2EBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x134, symBinAddr: 0x109C70, symSize: 0x48 } + - { offset: 0x1A2EF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvs', symObjAddr: 0x17C, symBinAddr: 0x109CB8, symSize: 0x3C } + - { offset: 0x1A2F20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvM', symObjAddr: 0x1B8, symBinAddr: 0x109CF4, symSize: 0x30 } + - { offset: 0x1A2F53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCfd', symObjAddr: 0x1EC, symBinAddr: 0x109D24, symSize: 0x8 } + - { offset: 0x1A2F78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCfD', symObjAddr: 0x1F4, symBinAddr: 0x109D2C, symSize: 0x10 } + - { offset: 0x1A2FB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15BehaviorAdapterCfD', symObjAddr: 0x2F4, symBinAddr: 0x109E2C, symSize: 0x2C } + - { offset: 0x1A339C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC07getFontD0SayAA03AppG0CGyF', symObjAddr: 0x0, symBinAddr: 0x109E78, symSize: 0x194 } + - { offset: 0x1A3563, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryCMa', symObjAddr: 0x1170, symBinAddr: 0x10AFC4, symSize: 0x20 } + - { offset: 0x1A3577, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC06insertD033_8B542D7846C5C7CE4D2E83195C6CABFALL5style4datayAA0abD4TypeO_10Foundation4DataVtFyyYbXEfU_TA', symObjAddr: 0x11FC, symBinAddr: 0x10B010, symSize: 0x10 } + - { offset: 0x1A358B, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1214, symBinAddr: 0x10B020, symSize: 0x10 } + - { offset: 0x1A359F, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1224, symBinAddr: 0x10B030, symSize: 0x8 } + - { offset: 0x1A35B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC05clearD033_8B542D7846C5C7CE4D2E83195C6CABFALLyyAA0abD4TypeOFyyYbXEfU_TA', symObjAddr: 0x1290, symBinAddr: 0x10B05C, symSize: 0xC } + - { offset: 0x1A35C7, size: 0x8, addend: 0x0, symName: '_$sSo11NSPredicateCMa', symObjAddr: 0x129C, symBinAddr: 0x10B068, symSize: 0x44 } + - { offset: 0x1A35DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC15getColorsStylesAA0G8ResponseVSgyFyyYbXEfU_TA', symObjAddr: 0x1390, symBinAddr: 0x10B0D8, symSize: 0xC } + - { offset: 0x1A35EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC07getFontD0SayAA03AppG0CGyFyyYbXEfU_TA', symObjAddr: 0x1440, symBinAddr: 0x10B118, symSize: 0x8 } + - { offset: 0x1A378E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC07getFontD0SayAA03AppG0CGyF', symObjAddr: 0x0, symBinAddr: 0x109E78, symSize: 0x194 } + - { offset: 0x1A3822, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC07getFontD0SayAA03AppG0CGyFyyYbXEfU_', symObjAddr: 0x194, symBinAddr: 0x10A00C, symSize: 0x344 } + - { offset: 0x1A3B16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC15getColorsStylesAA0G8ResponseVSgyF', symObjAddr: 0x4D8, symBinAddr: 0x10A350, symSize: 0x2AC } + - { offset: 0x1A3C6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC15getColorsStylesAA0G8ResponseVSgyFyyYbXEfU_', symObjAddr: 0x784, symBinAddr: 0x10A5FC, symSize: 0x1E4 } + - { offset: 0x1A3E42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC05clearD033_8B542D7846C5C7CE4D2E83195C6CABFALLyyAA0abD4TypeOF', symObjAddr: 0x968, symBinAddr: 0x10A7E0, symSize: 0x188 } + - { offset: 0x1A3EFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC05clearD033_8B542D7846C5C7CE4D2E83195C6CABFALLyyAA0abD4TypeOFyyYbXEfU_', symObjAddr: 0xAF0, symBinAddr: 0x10A968, symSize: 0x29C } + - { offset: 0x1A410C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC06insertD033_8B542D7846C5C7CE4D2E83195C6CABFALL5style4datayAA0abD4TypeO_10Foundation4DataVtF', symObjAddr: 0xD8C, symBinAddr: 0x10AC04, symSize: 0x1A8 } + - { offset: 0x1A41A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC06insertD033_8B542D7846C5C7CE4D2E83195C6CABFALL5style4datayAA0abD4TypeO_10Foundation4DataVtFyyYbXEfU_', symObjAddr: 0xF34, symBinAddr: 0x10ADAC, symSize: 0x218 } + - { offset: 0x1A4AE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCfE', symObjAddr: 0x13F4, symBinAddr: 0x10C538, symSize: 0x3C } + - { offset: 0x1A4B0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCfETo', symObjAddr: 0x1460, symBinAddr: 0x10C5A4, symSize: 0x48 } + - { offset: 0x1A4B3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCMa', symObjAddr: 0x14A8, symBinAddr: 0x10C5EC, symSize: 0x20 } + - { offset: 0x1A4B60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x14C8, symBinAddr: 0x10C60C, symSize: 0x4 } + - { offset: 0x1A4B80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x14C8, symBinAddr: 0x10C60C, symSize: 0x4 } + - { offset: 0x1A4C38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x14CC, symBinAddr: 0x10C610, symSize: 0x398 } + - { offset: 0x1A4EBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyycfU_', symObjAddr: 0x1864, symBinAddr: 0x10C9A8, symSize: 0x54 } + - { offset: 0x1A4EE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x18B8, symBinAddr: 0x10C9FC, symSize: 0xC8 } + - { offset: 0x1A4F1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1980, symBinAddr: 0x10CAC4, symSize: 0x94 } + - { offset: 0x1A4F7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x1A14, symBinAddr: 0x10CB58, symSize: 0x78 } + - { offset: 0x1A4FF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x1A8C, symBinAddr: 0x10CBD0, symSize: 0x24 } + - { offset: 0x1A5067, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC10setupPanelyyF', symObjAddr: 0x1AB0, symBinAddr: 0x10CBF4, symSize: 0x10C } + - { offset: 0x1A5152, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC10setupPanelyyFTo', symObjAddr: 0x1BBC, symBinAddr: 0x10CD00, symSize: 0x28 } + - { offset: 0x1A51A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1C60, symBinAddr: 0x10CD28, symSize: 0xC8 } + - { offset: 0x1A51D9, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1D54, symBinAddr: 0x10CE14, symSize: 0x10 } + - { offset: 0x1A51ED, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1D64, symBinAddr: 0x10CE24, symSize: 0x8 } + - { offset: 0x1A5201, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyycfU_TA', symObjAddr: 0x1DB0, symBinAddr: 0x10CE2C, symSize: 0x8 } + - { offset: 0x1A5215, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4ddd_n', symObjAddr: 0x1E48, symBinAddr: 0x10CE34, symSize: 0x8C } + - { offset: 0x1A52B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC014shareFormattedE0yySSFyyScMYccfU0_TA', symObjAddr: 0x1F44, symBinAddr: 0x10CEEC, symSize: 0x8 } + - { offset: 0x1A5544, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC12topContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x10B144, symSize: 0x10 } + - { offset: 0x1A555C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC12topContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x10B144, symSize: 0x10 } + - { offset: 0x1A55A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC12topContainerSo6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x10B154, symSize: 0x34 } + - { offset: 0x1A55F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x10B188, symSize: 0x10 } + - { offset: 0x1A5609, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x10B188, symSize: 0x10 } + - { offset: 0x1A5649, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x10B198, symSize: 0x34 } + - { offset: 0x1A5698, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x10B1CC, symSize: 0x10 } + - { offset: 0x1A56B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x10B1CC, symSize: 0x10 } + - { offset: 0x1A56F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x10B1DC, symSize: 0x34 } + - { offset: 0x1A58D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC11viewDidLoadyyF', symObjAddr: 0xCC, symBinAddr: 0x10B210, symSize: 0x250 } + - { offset: 0x1A5B2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x31C, symBinAddr: 0x10B460, symSize: 0x28 } + - { offset: 0x1A5B55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC7dismissyyFTo', symObjAddr: 0x344, symBinAddr: 0x10B488, symSize: 0x38 } + - { offset: 0x1A5B9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC014configureTableF0yyF', symObjAddr: 0x37C, symBinAddr: 0x10B4C0, symSize: 0x12C } + - { offset: 0x1A5CF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC06formatE6AsTextyyF', symObjAddr: 0x4A8, symBinAddr: 0x10B5EC, symSize: 0x4FC } + - { offset: 0x1A64D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC014shareFormattedE0yySSF', symObjAddr: 0x9A4, symBinAddr: 0x10BAE8, symSize: 0x824 } + - { offset: 0x1A6A41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC014shareFormattedE0yySSFyyScMYccfU0_', symObjAddr: 0x11C8, symBinAddr: 0x10C30C, symSize: 0x6C } + - { offset: 0x1A6B2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x1234, symBinAddr: 0x10C378, symSize: 0xA8 } + - { offset: 0x1A6B6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x12DC, symBinAddr: 0x10C420, symSize: 0x60 } + - { offset: 0x1A6BB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x133C, symBinAddr: 0x10C480, symSize: 0x90 } + - { offset: 0x1A6BE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x13CC, symBinAddr: 0x10C510, symSize: 0x28 } + - { offset: 0x1A6BFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCfD', symObjAddr: 0x1430, symBinAddr: 0x10C574, symSize: 0x30 } + - { offset: 0x1A709F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9IssueTypeOSHAASQWb', symObjAddr: 0x140, symBinAddr: 0x10CEFC, symSize: 0x4 } + - { offset: 0x1A70B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9IssueTypeOACSQAAWl', symObjAddr: 0x144, symBinAddr: 0x10CF00, symSize: 0x40 } + - { offset: 0x1A70C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9IssueTypeOMa', symObjAddr: 0x2E8, symBinAddr: 0x10CF40, symSize: 0x10 } + - { offset: 0x1A745B, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfC', symObjAddr: 0x0, symBinAddr: 0x10CF50, symSize: 0x14 } + - { offset: 0x1A74BB, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfC', symObjAddr: 0x0, symBinAddr: 0x10CF50, symSize: 0x14 } + - { offset: 0x1A74CF, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DV8PenNavUIE6encode2toys7Encoder_p_tKF', symObjAddr: 0x14, symBinAddr: 0x10CF64, symSize: 0xC4 } + - { offset: 0x1A751F, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DVSe8PenNavUISe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xD8, symBinAddr: 0x10D028, symSize: 0x28 } + - { offset: 0x1A75A5, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DVSE8PenNavUISE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x100, symBinAddr: 0x10D050, symSize: 0xC0 } + - { offset: 0x1A75F8, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x1C0, symBinAddr: 0x10D110, symSize: 0x100 } + - { offset: 0x1A7682, size: 0x8, addend: 0x0, symName: ___swift_mutable_project_boxed_opaque_existential_1, symObjAddr: 0x2E4, symBinAddr: 0x10D210, symSize: 0x28 } + - { offset: 0x1A7A4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwxx', symObjAddr: 0x2C, symBinAddr: 0x10D264, symSize: 0x8 } + - { offset: 0x1A7A62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwca', symObjAddr: 0x34, symBinAddr: 0x10D26C, symSize: 0x38 } + - { offset: 0x1A7A76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwta', symObjAddr: 0x78, symBinAddr: 0x10D2A4, symSize: 0x30 } + - { offset: 0x1A7A8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwet', symObjAddr: 0xA8, symBinAddr: 0x10D2D4, symSize: 0x5C } + - { offset: 0x1A7A9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwst', symObjAddr: 0x104, symBinAddr: 0x10D330, symSize: 0x50 } + - { offset: 0x1A7AB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVMa', symObjAddr: 0x154, symBinAddr: 0x10D380, symSize: 0x10 } + - { offset: 0x1A7E42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs0I3KeyAAWl', symObjAddr: 0x9CC, symBinAddr: 0x10D960, symSize: 0x40 } + - { offset: 0x1A7E56, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI26GetPoIByRefIDResultElementVGMa', symObjAddr: 0xA2C, symBinAddr: 0x10D9A0, symSize: 0x50 } + - { offset: 0x1A7E6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVACSeAAWl', symObjAddr: 0xA7C, symBinAddr: 0x10D9F0, symSize: 0x40 } + - { offset: 0x1A7E7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVACSEAAWl', symObjAddr: 0xB20, symBinAddr: 0x10DA94, symSize: 0x40 } + - { offset: 0x1A7E92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOMa', symObjAddr: 0xC44, symBinAddr: 0x10DAD4, symSize: 0x10 } + - { offset: 0x1A7EA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwxx', symObjAddr: 0xC80, symBinAddr: 0x10DAE4, symSize: 0x8 } + - { offset: 0x1A7EBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwcp', symObjAddr: 0xC88, symBinAddr: 0x10DAEC, symSize: 0x3C } + - { offset: 0x1A7ECE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwca', symObjAddr: 0xCC4, symBinAddr: 0x10DB28, symSize: 0x50 } + - { offset: 0x1A7EE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwta', symObjAddr: 0xD20, symBinAddr: 0x10DB78, symSize: 0x40 } + - { offset: 0x1A7EF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwet', symObjAddr: 0xD60, symBinAddr: 0x10DBB8, symSize: 0x5C } + - { offset: 0x1A7F0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwst', symObjAddr: 0xDBC, symBinAddr: 0x10DC14, symSize: 0x54 } + - { offset: 0x1A7F1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVMa', symObjAddr: 0xE10, symBinAddr: 0x10DC68, symSize: 0x10 } + - { offset: 0x1A7F32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOSHAASQWb', symObjAddr: 0xE20, symBinAddr: 0x10DC78, symSize: 0x4 } + - { offset: 0x1A7F46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFSQAAWl', symObjAddr: 0xE24, symBinAddr: 0x10DC7C, symSize: 0x40 } + - { offset: 0x1A7F5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0I3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xE64, symBinAddr: 0x10DCBC, symSize: 0x4 } + - { offset: 0x1A7F6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xE68, symBinAddr: 0x10DCC0, symSize: 0x40 } + - { offset: 0x1A7F82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0I3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0xEA8, symBinAddr: 0x10DD00, symSize: 0x4 } + - { offset: 0x1A7F96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0xEAC, symBinAddr: 0x10DD04, symSize: 0x40 } + - { offset: 0x1A7FAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs0J3KeyAAWl', symObjAddr: 0x104C, symBinAddr: 0x10DEA4, symSize: 0x40 } + - { offset: 0x1A7FBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOMa', symObjAddr: 0x11F0, symBinAddr: 0x10DEE4, symSize: 0x10 } + - { offset: 0x1A7FD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOSHAASQWb', symObjAddr: 0x1200, symBinAddr: 0x10DEF4, symSize: 0x4 } + - { offset: 0x1A7FE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFSQAAWl', symObjAddr: 0x1204, symBinAddr: 0x10DEF8, symSize: 0x40 } + - { offset: 0x1A7FFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0J3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1244, symBinAddr: 0x10DF38, symSize: 0x4 } + - { offset: 0x1A800E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1248, symBinAddr: 0x10DF3C, symSize: 0x40 } + - { offset: 0x1A8022, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0J3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1288, symBinAddr: 0x10DF7C, symSize: 0x4 } + - { offset: 0x1A8036, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x128C, symBinAddr: 0x10DF80, symSize: 0x40 } + - { offset: 0x1A8079, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x3D4, symBinAddr: 0x10D4AC, symSize: 0x28 } + - { offset: 0x1A8095, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x3FC, symBinAddr: 0x10D4D4, symSize: 0x28 } + - { offset: 0x1A80B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x774, symBinAddr: 0x10D770, symSize: 0x28 } + - { offset: 0x1A80D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x79C, symBinAddr: 0x10D798, symSize: 0x28 } + - { offset: 0x1A80F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV6encode2toys7Encoder_p_tKF', symObjAddr: 0x164, symBinAddr: 0x10D390, symSize: 0x11C } + - { offset: 0x1A8145, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x424, symBinAddr: 0x10D4FC, symSize: 0x28 } + - { offset: 0x1A816E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x44C, symBinAddr: 0x10D524, symSize: 0x18 } + - { offset: 0x1A8182, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV6encode2toys7Encoder_p_tKF', symObjAddr: 0x464, symBinAddr: 0x10D53C, symSize: 0x13C } + - { offset: 0x1A81D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0J3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x664, symBinAddr: 0x10D678, symSize: 0x2C } + - { offset: 0x1A821C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0J3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x690, symBinAddr: 0x10D6A4, symSize: 0xCC } + - { offset: 0x1A829D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x7C4, symBinAddr: 0x10D7C0, symSize: 0x34 } + - { offset: 0x1A82C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x7F8, symBinAddr: 0x10D7F4, symSize: 0x28 } + - { offset: 0x1A82DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x820, symBinAddr: 0x10D81C, symSize: 0x144 } + - { offset: 0x1A82FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0xEEC, symBinAddr: 0x10DD44, symSize: 0x160 } + - { offset: 0x1A889F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV22parseContainerChildrenySayAA3DOMO15GraphicsElementCGAA3XMLO0J0CKF', symObjAddr: 0x0, symBinAddr: 0x10DFC4, symSize: 0x620 } + - { offset: 0x1A9345, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseGraphicsElementyAA3DOMO0fG0CSgAA3XMLO0G0CKF', symObjAddr: 0x620, symBinAddr: 0x10E5E4, symSize: 0xB00 } + - { offset: 0x1A9939, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10parseGroupyAA3DOMO0F0CAA3XMLO7ElementCKF', symObjAddr: 0x1120, symBinAddr: 0x10F0E4, symSize: 0x14C } + - { offset: 0x1A9A49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseSwitchyAA3DOMO0F0CAA3XMLO7ElementCKF', symObjAddr: 0x126C, symBinAddr: 0x10F230, symSize: 0x154 } + - { offset: 0x1A9B41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseStyleAttributesyAA3DOMO012PresentationG0VAA3XMLO7ElementCKF', symObjAddr: 0x13C0, symBinAddr: 0x10F384, symSize: 0x11C } + - { offset: 0x1A9C01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV27parsePresentationAttributesyAA3DOMO0fG0VAA15AttributeParser_pKF', symObjAddr: 0x14DC, symBinAddr: 0x10F4A0, symSize: 0xC80 } + - { offset: 0x1A9CB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOAESYAAWl', symObjAddr: 0x2200, symBinAddr: 0x110120, symSize: 0x40 } + - { offset: 0x1A9CC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOAESYAAWl', symObjAddr: 0x2240, symBinAddr: 0x110160, symSize: 0x40 } + - { offset: 0x1A9CDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOAESYAAWl', symObjAddr: 0x2280, symBinAddr: 0x1101A0, symSize: 0x40 } + - { offset: 0x1A9CEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOAESYAAWl', symObjAddr: 0x22C0, symBinAddr: 0x1101E0, symSize: 0x40 } + - { offset: 0x1A9D03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOAESYAAWl', symObjAddr: 0x2300, symBinAddr: 0x110220, symSize: 0x40 } + - { offset: 0x1A9D76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV19parseStyleAttribute33_F9D38FD2680150F6E65C6F1BDEFE6498LLySS_SStAC7ScannerVzKFTf4nd_n', symObjAddr: 0x2384, symBinAddr: 0x110260, symSize: 0x21C } + - { offset: 0x1A9ED8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseStyleAttributesySDyS2SGSSKFTf4nd_n', symObjAddr: 0x25A0, symBinAddr: 0x11047C, symSize: 0x2C0 } + - { offset: 0x1AA0D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV15parseAttributesyAC0F0CAA3XMLO7ElementCKFTf4nx_n', symObjAddr: 0x2860, symBinAddr: 0x11073C, symSize: 0x1C0 } + - { offset: 0x1AA316, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseLineyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x2A20, symBinAddr: 0x1108FC, symSize: 0x1B8 } + - { offset: 0x1AA41D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseCircleyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x2BD8, symBinAddr: 0x110AB4, symSize: 0x184 } + - { offset: 0x1AA506, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseEllipseyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x2D5C, symBinAddr: 0x110C38, symSize: 0x1D0 } + - { offset: 0x1AA60F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseRectyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x2F2C, symBinAddr: 0x110E08, symSize: 0x2DC } + - { offset: 0x1AA701, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOWOc', symObjAddr: 0x3288, symBinAddr: 0x1110E4, symSize: 0x3C } + - { offset: 0x1AA715, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOSgWOh', symObjAddr: 0x32F8, symBinAddr: 0x111120, symSize: 0x40 } + - { offset: 0x1AA7AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV15logParsingError3for8filename7parsingys0G0_p_SSSgAA3XMLO7ElementCSgtFZTf4nnnd_n', symObjAddr: 0x3338, symBinAddr: 0x111160, symSize: 0x72C } + - { offset: 0x1AACF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVWOd', symObjAddr: 0x3A84, symBinAddr: 0x11188C, symSize: 0x44 } + - { offset: 0x1AAD30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parsePointsySayAA3DOMO5PointVGSSKFAISSKXEfU_AA9XMLParserV10AttributesC_TG5', symObjAddr: 0x3AC8, symBinAddr: 0x1118D0, symSize: 0x58 } + - { offset: 0x1AADB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parsePointsySayAA3DOMO5PointVGSSKFAISSKXEfU_AA9XMLParserV10AttributesC_TG5TA', symObjAddr: 0x3B20, symBinAddr: 0x111928, symSize: 0x18 } + - { offset: 0x1AB868, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataCMa', symObjAddr: 0xC4, symBinAddr: 0x1119BC, symSize: 0x20 } + - { offset: 0x1AB8E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x5C, symBinAddr: 0x111954, symSize: 0x68 } + - { offset: 0x1AB94F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xE4, symBinAddr: 0x1119DC, symSize: 0x54 } + - { offset: 0x1AB99A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataCfD', symObjAddr: 0x138, symBinAddr: 0x111A30, symSize: 0x30 } + - { offset: 0x1AC18A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationCfETo', symObjAddr: 0x1410, symBinAddr: 0x112E70, symSize: 0xB0 } + - { offset: 0x1AC1B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationCMa', symObjAddr: 0x14C0, symBinAddr: 0x112F20, symSize: 0x20 } + - { offset: 0x1AC3A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC13actionMessageSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x111A60, symSize: 0x20 } + - { offset: 0x1AC406, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC13actionMessageSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x111A80, symSize: 0x14 } + - { offset: 0x1AC457, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC12titleMessageSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x111A94, symSize: 0x20 } + - { offset: 0x1AC4AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC12titleMessageSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x111AB4, symSize: 0x14 } + - { offset: 0x1AC4FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9ignoreBtnSo8UIButtonCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x111AC8, symSize: 0x20 } + - { offset: 0x1AC557, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9ignoreBtnSo8UIButtonCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x111AE8, symSize: 0x14 } + - { offset: 0x1AC5A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9acceptBtnSo8UIButtonCSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x111AFC, symSize: 0x20 } + - { offset: 0x1AC5FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9acceptBtnSo8UIButtonCSgvsTo', symObjAddr: 0xBC, symBinAddr: 0x111B1C, symSize: 0x14 } + - { offset: 0x1AC64E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC4viewSo6UIViewCSgvgTo', symObjAddr: 0xD0, symBinAddr: 0x111B30, symSize: 0x10 } + - { offset: 0x1AC666, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC4viewSo6UIViewCSgvgTo', symObjAddr: 0xD0, symBinAddr: 0x111B30, symSize: 0x10 } + - { offset: 0x1AC6A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC4viewSo6UIViewCSgvsTo', symObjAddr: 0xE0, symBinAddr: 0x111B40, symSize: 0x34 } + - { offset: 0x1AC6F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9containerSo11UIStackViewCSgvgTo', symObjAddr: 0x114, symBinAddr: 0x111B74, symSize: 0x20 } + - { offset: 0x1AC74F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9containerSo11UIStackViewCSgvsTo', symObjAddr: 0x134, symBinAddr: 0x111B94, symSize: 0x14 } + - { offset: 0x1AC7A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC12containerYesSo6UIViewCSgvgTo', symObjAddr: 0x148, symBinAddr: 0x111BA8, symSize: 0x20 } + - { offset: 0x1AC7F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC12containerYesSo6UIViewCSgvsTo', symObjAddr: 0x168, symBinAddr: 0x111BC8, symSize: 0x14 } + - { offset: 0x1AC8A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC5frameACSo6CGRectV_tcfc', symObjAddr: 0x17C, symBinAddr: 0x111BDC, symSize: 0x288 } + - { offset: 0x1AC98A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x404, symBinAddr: 0x111E64, symSize: 0x20 } + - { offset: 0x1AC9ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x424, symBinAddr: 0x111E84, symSize: 0x118 } + - { offset: 0x1ACA22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x53C, symBinAddr: 0x111F9C, symSize: 0x28 } + - { offset: 0x1ACAD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC10commonInityyF', symObjAddr: 0x564, symBinAddr: 0x111FC4, symSize: 0xBA0 } + - { offset: 0x1ACF78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC14layoutSubviewsyyFTo', symObjAddr: 0x1104, symBinAddr: 0x112B64, symSize: 0x4 } + - { offset: 0x1ACF8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC11setupLayout9container8centerOfySo6UIViewC_AHtF', symObjAddr: 0x11B8, symBinAddr: 0x112C18, symSize: 0x228 } + - { offset: 0x1ACFD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationCfD', symObjAddr: 0x13E0, symBinAddr: 0x112E40, symSize: 0x30 } + - { offset: 0x1AD37B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x112F40, symSize: 0xAC } + - { offset: 0x1AD4DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewCfETo', symObjAddr: 0x720, symBinAddr: 0x113660, symSize: 0x10 } + - { offset: 0x1AD50C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewCMa', symObjAddr: 0x730, symBinAddr: 0x113670, symSize: 0x20 } + - { offset: 0x1AD520, size: 0x8, addend: 0x0, symName: '_$sSo8NSNumberCMa', symObjAddr: 0x7D8, symBinAddr: 0x113690, symSize: 0x44 } + - { offset: 0x1AD5ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x112F40, symSize: 0xAC } + - { offset: 0x1AD6FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xAC, symBinAddr: 0x112FEC, symSize: 0xB0 } + - { offset: 0x1AD773, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC14layoutSubviewsyyFTo', symObjAddr: 0x15C, symBinAddr: 0x11309C, symSize: 0x80 } + - { offset: 0x1AD7C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC05setupE033_31A9481671A2BC924BF3D57FBE295DCFLLyyF', symObjAddr: 0x1DC, symBinAddr: 0x11311C, symSize: 0x25C } + - { offset: 0x1AD8C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC14startAnimatingyyF', symObjAddr: 0x438, symBinAddr: 0x113378, symSize: 0x2B8 } + - { offset: 0x1ADA1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewCfD', symObjAddr: 0x6F0, symBinAddr: 0x113630, symSize: 0x30 } + - { offset: 0x1ADDA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17HoursScheduleDataV4data10isExpandedAcA09VenueViewF0CSg_SbtcfCTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1136D4, symSize: 0x1E0 } + - { offset: 0x1ADF50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17HoursScheduleDataV4data10isExpandedAcA09VenueViewF0CSg_SbtcfCTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1136D4, symSize: 0x1E0 } + - { offset: 0x1ADFF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17HoursScheduleDataV4data10isExpandedAcA07PoiViewF0CSg_SbtcfCTf4nnd_n', symObjAddr: 0x1E0, symBinAddr: 0x1138B4, symSize: 0x1E0 } + - { offset: 0x1AE421, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LiveObjectDrawingManagerV11drawObjects_5usingySayAA0dE0VGSg_17PenguinINRenderer10PIRendererCSgtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x113A94, symSize: 0x914 } + - { offset: 0x1AE7BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVWOc', symObjAddr: 0x958, symBinAddr: 0x1143A8, symSize: 0x44 } + - { offset: 0x1AE7D3, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized10targetSizeABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0x9C0, symBinAddr: 0x114410, symSize: 0xC } + - { offset: 0x1AE7E7, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x9E4, symBinAddr: 0x11442C, symSize: 0x10 } + - { offset: 0x1AE7FB, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x9F4, symBinAddr: 0x11443C, symSize: 0x8 } + - { offset: 0x1AE80F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVWOh', symObjAddr: 0x9FC, symBinAddr: 0x114444, symSize: 0x3C } + - { offset: 0x1AE823, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LiveObjectDrawingManagerV11drawObjects_5usingySayAA0dE0VGSg_17PenguinINRenderer10PIRendererCSgtFZySo7UIImageCcfU0_TA', symObjAddr: 0xA64, symBinAddr: 0x1144AC, symSize: 0x30 } + - { offset: 0x1AECBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LiveObjectDrawingManagerV11drawObjects_5usingySayAA0dE0VGSg_17PenguinINRenderer10PIRendererCSgtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x113A94, symSize: 0x914 } + - { offset: 0x1AF1BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LiveObjectDrawingManagerV13removeObjects_5usingySayAA0dE0VG_17PenguinINRenderer10PIRendererCSgtFZTf4nnd_n', symObjAddr: 0xB18, symBinAddr: 0x1144DC, symSize: 0x164 } + - { offset: 0x1AF71E, size: 0x8, addend: 0x0, symName: '_$s7Penguin12NearGateDataVSgWOh', symObjAddr: 0x50, symBinAddr: 0x11464C, symSize: 0x40 } + - { offset: 0x1AFA3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14drawNearFloors8locationy7Penguin10PILocationC_tF', symObjAddr: 0x840, symBinAddr: 0x114E30, symSize: 0xDAC } + - { offset: 0x1B045D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14drawNearFloors8locationy7Penguin10PILocationC_tFySbcfU1_', symObjAddr: 0x168C, symBinAddr: 0x115C7C, symSize: 0x17C } + - { offset: 0x1B06B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC25handleClosestFloorsToUser__19forceSelectedRedrawy17PenguinINRenderer10PIRendererC_0O010PILocationCSbtFySbcfU2_', symObjAddr: 0x15EC, symBinAddr: 0x115BDC, symSize: 0xA0 } + - { offset: 0x1B0742, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnFSf_Tg5', symObjAddr: 0x181C, symBinAddr: 0x115E0C, symSize: 0xF4 } + - { offset: 0x1B07D9, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x1B8C, symBinAddr: 0x11617C, symSize: 0x214 } + - { offset: 0x1B0993, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x1DA0, symBinAddr: 0x116390, symSize: 0xF4 } + - { offset: 0x1B0A5D, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnFSi_Tg5', symObjAddr: 0x1E94, symBinAddr: 0x116484, symSize: 0xDC } + - { offset: 0x1B0AD3, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF10Foundation3URLV_Tg5', symObjAddr: 0x1F70, symBinAddr: 0x116560, symSize: 0x218 } + - { offset: 0x1B0B5D, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtFSf_Tg5', symObjAddr: 0x2374, symBinAddr: 0x116964, symSize: 0x12C } + - { offset: 0x1B0BE9, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x2614, symBinAddr: 0x116C04, symSize: 0x254 } + - { offset: 0x1B0DAE, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x2868, symBinAddr: 0x116E58, symSize: 0x148 } + - { offset: 0x1B0E99, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtFSi_Tg5', symObjAddr: 0x29B0, symBinAddr: 0x116FA0, symSize: 0x11C } + - { offset: 0x1B0F25, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF10Foundation3URLV_Tg5', symObjAddr: 0x2ACC, symBinAddr: 0x1170BC, symSize: 0x1F8 } + - { offset: 0x1B0FA6, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyFSf_Tg5', symObjAddr: 0x2CC4, symBinAddr: 0x1172B4, symSize: 0x134 } + - { offset: 0x1B1023, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x2F34, symBinAddr: 0x117524, symSize: 0x134 } + - { offset: 0x1B10A0, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x3068, symBinAddr: 0x117658, symSize: 0x134 } + - { offset: 0x1B111D, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyFSi_Tg5', symObjAddr: 0x319C, symBinAddr: 0x11778C, symSize: 0x134 } + - { offset: 0x1B119A, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF10Foundation3URLV_Tg5', symObjAddr: 0x32D0, symBinAddr: 0x1178C0, symSize: 0x1C4 } + - { offset: 0x1B1225, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tFSf_Tg5', symObjAddr: 0x3494, symBinAddr: 0x117A84, symSize: 0x1F8 } + - { offset: 0x1B12DB, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x3890, symBinAddr: 0x117E80, symSize: 0x250 } + - { offset: 0x1B1407, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x3AE0, symBinAddr: 0x1180D0, symSize: 0x214 } + - { offset: 0x1B1511, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tFSi_Tg5', symObjAddr: 0x3CF4, symBinAddr: 0x1182E4, symSize: 0x1E4 } + - { offset: 0x1B15C7, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF10Foundation3URLV_Tg5', symObjAddr: 0x3ED8, symBinAddr: 0x1184C8, symSize: 0x294 } + - { offset: 0x1B1674, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tFSf_Tg5', symObjAddr: 0x416C, symBinAddr: 0x11875C, symSize: 0x22C } + - { offset: 0x1B1752, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x45B0, symBinAddr: 0x118BA0, symSize: 0x280 } + - { offset: 0x1B18A6, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x4830, symBinAddr: 0x118E20, symSize: 0x244 } + - { offset: 0x1B19D8, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tFSi_Tg5', symObjAddr: 0x4A74, symBinAddr: 0x119064, symSize: 0x218 } + - { offset: 0x1B1AB6, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF10Foundation3URLV_Tg5', symObjAddr: 0x4C8C, symBinAddr: 0x11927C, symSize: 0x2C4 } + - { offset: 0x1B1B75, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6removeyxSgxFSi_Tg5', symObjAddr: 0x4FD0, symBinAddr: 0x1195C0, symSize: 0xEC } + - { offset: 0x1B1BF2, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6removeyxSgxF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x50BC, symBinAddr: 0x1196AC, symSize: 0x108 } + - { offset: 0x1B1CCE, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV7_delete2atys10_HashTableV6BucketV_tFSi_Tg5', symObjAddr: 0x51C4, symBinAddr: 0x1197B4, symSize: 0x170 } + - { offset: 0x1B1D3A, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x5334, symBinAddr: 0x119924, symSize: 0x194 } + - { offset: 0x1B1E0E, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13extractSubset5using5countAByxGs13_UnsafeBitsetV_SitFSi_Tg5', symObjAddr: 0x54C8, symBinAddr: 0x119AB8, symSize: 0x1E0 } + - { offset: 0x1B1F35, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6filteryAByxGSbxKXEKFADs13_UnsafeBitsetVKXEfU_Si_Tg596$s8PenNavUI17MapViewControllerC19removeDistantFloors8locationy7Penguin10PILocationC_tFSbSiXEfU0_SaySiGTf1nnc_nTf4nng_n', symObjAddr: 0x56A8, symBinAddr: 0x119C98, symSize: 0x130 } + - { offset: 0x1B221E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC25handleClosestFloorsToUser__19forceSelectedRedrawy17PenguinINRenderer10PIRendererC_0O010PILocationCSbtFTf4dndn_n', symObjAddr: 0x57D8, symBinAddr: 0x119DC8, symSize: 0xFB8 } + - { offset: 0x1B2F72, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6filteryAByxGSbxKXEKFADs13_UnsafeBitsetVKXEfU_Si_Tg592$s8PenNavUI17MapViewControllerC15removeNearFloor8locationy7Penguin10PILocationC_tFSbSiXEfU0_SaySiGTf1nnc_nTf4nng_n', symObjAddr: 0x6790, symBinAddr: 0x11AD80, symSize: 0x128 } + - { offset: 0x1B30B4, size: 0x8, addend: 0x0, symName: '_$s7Penguin8MapLevelOSgWOd', symObjAddr: 0x6AE4, symBinAddr: 0x11B098, symSize: 0x48 } + - { offset: 0x1B30C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC25handleClosestFloorsToUser__19forceSelectedRedrawy17PenguinINRenderer10PIRendererC_0O010PILocationCSbtFySbcfU2_TA', symObjAddr: 0x6B7C, symBinAddr: 0x11B130, symSize: 0x8 } + - { offset: 0x1B30DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14drawNearFloors8locationy7Penguin10PILocationC_tFySbcfU1_TA', symObjAddr: 0x6BF0, symBinAddr: 0x11B16C, symSize: 0xC } + - { offset: 0x1B3CE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15NavigationStateOMa', symObjAddr: 0x164, symBinAddr: 0x11B1C0, symSize: 0x10 } + - { offset: 0x1B3CF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15NavigationStateOSHAASQWb', symObjAddr: 0x174, symBinAddr: 0x11B1D0, symSize: 0x4 } + - { offset: 0x1B3D0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15NavigationStateOACSQAAWl', symObjAddr: 0x178, symBinAddr: 0x11B1D4, symSize: 0x40 } + - { offset: 0x1B40C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC14sharedInstance33_3D6BD24F9690AB8735E9219D8905A864LLACSgvpZ', symObjAddr: 0x6240, symBinAddr: 0x379750, symSize: 0x0 } + - { offset: 0x1B476F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerCMa', symObjAddr: 0x3E84, symBinAddr: 0x11F078, symSize: 0x20 } + - { offset: 0x1B4849, size: 0x8, addend: 0x0, symName: '_$sSS11withCStringyxxSPys4Int8VGKXEKlFSb_Tg5024$sSdySdSgxcSyRzlufcSbSpyf6GXEfU_j5SPys4C7VGXEfU_SpySdGTf1cn_n', symObjAddr: 0x3EA4, symBinAddr: 0x11F098, symSize: 0xEC } + - { offset: 0x1B4A93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5shareyyFySSSgcfU_TA', symObjAddr: 0x510C, symBinAddr: 0x120300, symSize: 0x8 } + - { offset: 0x1B4AA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC17shareUserLocation33_D0641B0FFCA1271976891547CEED6A97LLyyFySSSgcfU_TA', symObjAddr: 0x5844, symBinAddr: 0x120944, symSize: 0x8 } + - { offset: 0x1B4ABB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5shareyySo8UIButtonCFySSSgcfU_TA', symObjAddr: 0x5D7C, symBinAddr: 0x120E7C, symSize: 0x8 } + - { offset: 0x1B4ACF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5shareyyFySSSgcfU_TA', symObjAddr: 0x5D84, symBinAddr: 0x120E84, symSize: 0x8 } + - { offset: 0x1B4AE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC016openUserLocationE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_TA', symObjAddr: 0x5E1C, symBinAddr: 0x120EDC, symSize: 0xC } + - { offset: 0x1B4AF7, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x5E28, symBinAddr: 0x120EE8, symSize: 0x10 } + - { offset: 0x1B4B0B, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x5E38, symBinAddr: 0x120EF8, symSize: 0x8 } + - { offset: 0x1B4B1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFyyScMYccfU_TA', symObjAddr: 0x5EE4, symBinAddr: 0x120F10, symSize: 0x8 } + - { offset: 0x1B4B33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFyyScMYccfU_ySo13UIAlertActionCcfU_TA', symObjAddr: 0x5EEC, symBinAddr: 0x120F18, symSize: 0x8 } + - { offset: 0x1B4B47, size: 0x8, addend: 0x0, symName: '_$sSdySdSgxcSyRzlufcSbSpySdGXEfU_SbSPys4Int8VGXEfU_TA', symObjAddr: 0x5F34, symBinAddr: 0x120F20, symSize: 0x78 } + - { offset: 0x1B4B68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC010openCampusE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_TA', symObjAddr: 0x5FB0, symBinAddr: 0x120F9C, symSize: 0x8 } + - { offset: 0x1B4B7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openVenueE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_TA', symObjAddr: 0x5FE4, symBinAddr: 0x120FA4, symSize: 0x8 } + - { offset: 0x1B4B90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openPlaceE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_TA', symObjAddr: 0x6058, symBinAddr: 0x121018, symSize: 0x30 } + - { offset: 0x1B4BA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC8delegateAA0dE8Delegate_pSgvWyyScMYccfU_TA', symObjAddr: 0x6088, symBinAddr: 0x121048, symSize: 0x8 } + - { offset: 0x1B4BB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5shareyyFySSSgcfU_TA', symObjAddr: 0x60D0, symBinAddr: 0x121050, symSize: 0x8 } + - { offset: 0x1B4F21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC02isD17LinkingConfiguredSbvg', symObjAddr: 0x20, symBinAddr: 0x11B214, symSize: 0x174 } + - { offset: 0x1B5002, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC8delegateAA0dE8Delegate_pSgvWyyScMYccfU_', symObjAddr: 0x194, symBinAddr: 0x11B388, symSize: 0x1A4 } + - { offset: 0x1B510A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC8delegateAA0dE8Delegate_pSgvs', symObjAddr: 0x338, symBinAddr: 0x11B52C, symSize: 0x26C } + - { offset: 0x1B51B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC03setdE0yy10Foundation3URLVSgF', symObjAddr: 0x5A4, symBinAddr: 0x11B798, symSize: 0x324 } + - { offset: 0x1B5308, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC014generateCampusdE08campusId10completionySiSg_ySSSgctFyAHcfU_', symObjAddr: 0x8C8, symBinAddr: 0x11BABC, symSize: 0x20 } + - { offset: 0x1B55B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openPlaceE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tF', symObjAddr: 0x8E8, symBinAddr: 0x11BADC, symSize: 0xCA8 } + - { offset: 0x1B6043, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openPlaceE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_', symObjAddr: 0x1590, symBinAddr: 0x11C784, symSize: 0x94 } + - { offset: 0x1B60F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openVenueE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tF', symObjAddr: 0x1624, symBinAddr: 0x11C818, symSize: 0xA88 } + - { offset: 0x1B6A23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openVenueE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_', symObjAddr: 0x20AC, symBinAddr: 0x11D2A0, symSize: 0x94 } + - { offset: 0x1B6A79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC010openCampusE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tF', symObjAddr: 0x2140, symBinAddr: 0x11D334, symSize: 0x754 } + - { offset: 0x1B7090, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC010openCampusE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_', symObjAddr: 0x2894, symBinAddr: 0x11DA88, symSize: 0x94 } + - { offset: 0x1B7179, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC016openUserLocationE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tF', symObjAddr: 0x2928, symBinAddr: 0x11DB1C, symSize: 0xF4C } + - { offset: 0x1B7FF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC016openUserLocationE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_', symObjAddr: 0x3874, symBinAddr: 0x11EA68, symSize: 0x154 } + - { offset: 0x1B8133, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFyyScMYccfU_', symObjAddr: 0x39C8, symBinAddr: 0x11EBBC, symSize: 0x3E4 } + - { offset: 0x1B831C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFyyScMYccfU_ySo13UIAlertActionCcfU_', symObjAddr: 0x3DAC, symBinAddr: 0x11EFA0, symSize: 0x84 } + - { offset: 0x1B8375, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerCfD', symObjAddr: 0x3E30, symBinAddr: 0x11F024, symSize: 0x54 } + - { offset: 0x1B8594, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC013generateVenuedE07venueId10completionySiSg_ySSSgctF03$s8ab4UI26H40DetailsViewControllerC5shareyyFySSSgcfU_AA0hnoP0CSgXwz_XxTf1ncn_nTf4nng_n', symObjAddr: 0x3F90, symBinAddr: 0x11F184, symSize: 0x3DC } + - { offset: 0x1B87CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC12getPlaceType33_3D6BD24F9690AB8735E9219D8905A864LL4fromAA0hI0OSgSS_tFTf4nd_n', symObjAddr: 0x4390, symBinAddr: 0x11F584, symSize: 0x9C } + - { offset: 0x1B8944, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC11isPathValid33_3D6BD24F9690AB8735E9219D8905A864LL3for4pathSbAA9PlaceTypeOSg_SStFTf4nnd_n', symObjAddr: 0x442C, symBinAddr: 0x11F620, symSize: 0x700 } + - { offset: 0x1B9098, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFTf4nd_n', symObjAddr: 0x4B2C, symBinAddr: 0x11FD20, symSize: 0x208 } + - { offset: 0x1B90F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC013generatePlacedE07placeId10completionySiSg_ySSSgctF03$s8aB47UI24PoiDetailsViewControllerC5shareyyFySSSgcfU_AA0nopQ0CSgXwz_XxTf1ncn_nTf4nng_n', symObjAddr: 0x4D34, symBinAddr: 0x11FF28, symSize: 0x3D8 } + - { offset: 0x1B96D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC6boundsAC4RectVvg', symObjAddr: 0x0, symBinAddr: 0x1210A4, symSize: 0x1EC } + - { offset: 0x1B9B65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC6boundsAC4RectVvg', symObjAddr: 0x0, symBinAddr: 0x1210A4, symSize: 0x1EC } + - { offset: 0x1BA39F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCMa', symObjAddr: 0x2954, symBinAddr: 0x1236D4, symSize: 0x20 } + - { offset: 0x1BA3B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOwet', symObjAddr: 0x29B8, symBinAddr: 0x1236F4, symSize: 0x48 } + - { offset: 0x1BA3C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOwst', symObjAddr: 0x2A00, symBinAddr: 0x12373C, symSize: 0x48 } + - { offset: 0x1BA3DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOwug', symObjAddr: 0x2A48, symBinAddr: 0x123784, symSize: 0x18 } + - { offset: 0x1BA3EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOwui', symObjAddr: 0x2A64, symBinAddr: 0x12379C, symSize: 0x1C } + - { offset: 0x1BA403, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOMa', symObjAddr: 0x2A80, symBinAddr: 0x1237B8, symSize: 0x10 } + - { offset: 0x1BA417, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSHAASQWb', symObjAddr: 0x2A90, symBinAddr: 0x1237C8, symSize: 0x4 } + - { offset: 0x1BA42B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOAGSQAAWl', symObjAddr: 0x2A94, symBinAddr: 0x1237CC, symSize: 0x40 } + - { offset: 0x1BA44A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSHAASQWb', symObjAddr: 0x2C2C, symBinAddr: 0x123964, symSize: 0x4 } + - { offset: 0x1BA45E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCAESQAAWl', symObjAddr: 0x2C30, symBinAddr: 0x123968, symSize: 0x40 } + - { offset: 0x1BA520, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8locationAC5PointVSgvg', symObjAddr: 0x2C70, symBinAddr: 0x1239A8, symSize: 0xEC } + - { offset: 0x1BA7EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8applying6matrixAeC9TransformO6MatrixV_tF', symObjAddr: 0x2D5C, symBinAddr: 0x123A94, symSize: 0x210 } + - { offset: 0x1BAB0A, size: 0x8, addend: 0x0, symName: '_$sSasSHRzlE4hash4intoys6HasherVz_tF8PenNavUI9LayerTreeO8GradientV4StopV_Tg5', symObjAddr: 0x2F6C, symBinAddr: 0x123CA4, symSize: 0x154 } + - { offset: 0x1BADBF, size: 0x8, addend: 0x0, symName: '_$sSasSHRzlE4hash4intoys6HasherVz_tF8PenNavUI9LayerTreeO4PathC7SegmentO_Tg5', symObjAddr: 0x30C0, symBinAddr: 0x123DF8, symSize: 0x158 } + - { offset: 0x1BB156, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOg', symObjAddr: 0x3218, symBinAddr: 0x123F50, symSize: 0xC } + - { offset: 0x1BB16A, size: 0x8, addend: 0x0, symName: '_$sSasSHRzlE4hash4intoys6HasherVz_tF8PenNavUI9LayerTreeO5PointV_Tg5', symObjAddr: 0x3224, symBinAddr: 0x123F5C, symSize: 0x78 } + - { offset: 0x1BB26F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOh', symObjAddr: 0x32D8, symBinAddr: 0x123FD4, symSize: 0x34 } + - { offset: 0x1BB283, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC9DirectionOMa', symObjAddr: 0x3590, symBinAddr: 0x124128, symSize: 0x10 } + - { offset: 0x1BB297, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC9DirectionOSHAASQWb', symObjAddr: 0x35A0, symBinAddr: 0x124138, symSize: 0x4 } + - { offset: 0x1BB2AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC9DirectionOAGSQAAWl', symObjAddr: 0x35A4, symBinAddr: 0x12413C, symSize: 0x40 } + - { offset: 0x1BB35C, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO8GradientV4StopV_Tt1g5', symObjAddr: 0x1EC, symBinAddr: 0x121290, symSize: 0x150 } + - { offset: 0x1BB37C, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO8GradientV4StopV_Tt1g5', symObjAddr: 0x1EC, symBinAddr: 0x121290, symSize: 0x150 } + - { offset: 0x1BB390, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO8GradientV4StopV_Tt1g5', symObjAddr: 0x1EC, symBinAddr: 0x121290, symSize: 0x150 } + - { offset: 0x1BB3A4, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO8GradientV4StopV_Tt1g5', symObjAddr: 0x1EC, symBinAddr: 0x121290, symSize: 0x150 } + - { offset: 0x1BB55E, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO0E0C8ContentsO_Tt1g5', symObjAddr: 0x33C, symBinAddr: 0x1213E0, symSize: 0x1568 } + - { offset: 0x1BC025, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO4PathC7SegmentO_Tt1g5', symObjAddr: 0x18A4, symBinAddr: 0x122948, symSize: 0x134 } + - { offset: 0x1BC03D, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO4PathC7SegmentO_Tt1g5', symObjAddr: 0x18A4, symBinAddr: 0x122948, symSize: 0x134 } + - { offset: 0x1BC051, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO4PathC7SegmentO_Tt1g5', symObjAddr: 0x18A4, symBinAddr: 0x122948, symSize: 0x134 } + - { offset: 0x1BC065, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO4PathC7SegmentO_Tt1g5', symObjAddr: 0x18A4, symBinAddr: 0x122948, symSize: 0x134 } + - { offset: 0x1BC1AA, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO9TransformO_Tt1g5', symObjAddr: 0x19D8, symBinAddr: 0x122A7C, symSize: 0x134 } + - { offset: 0x1BC1CA, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO9TransformO_Tt1g5', symObjAddr: 0x19D8, symBinAddr: 0x122A7C, symSize: 0x134 } + - { offset: 0x1BC1DE, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO9TransformO_Tt1g5', symObjAddr: 0x19D8, symBinAddr: 0x122A7C, symSize: 0x134 } + - { offset: 0x1BC1F2, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO9TransformO_Tt1g5', symObjAddr: 0x19D8, symBinAddr: 0x122A7C, symSize: 0x134 } + - { offset: 0x1BC332, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO5ShapeO_Tt1g5', symObjAddr: 0x1B0C, symBinAddr: 0x122BB0, symSize: 0x3A4 } + - { offset: 0x1BC8E1, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO6FilterC6EffectO_Tt1g5', symObjAddr: 0x1EB0, symBinAddr: 0x122F54, symSize: 0x5C } + - { offset: 0x1BC901, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO6FilterC6EffectO_Tt1g5', symObjAddr: 0x1EB0, symBinAddr: 0x122F54, symSize: 0x5C } + - { offset: 0x1BC915, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO6FilterC6EffectO_Tt1g5', symObjAddr: 0x1EB0, symBinAddr: 0x122F54, symSize: 0x5C } + - { offset: 0x1BC929, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO6FilterC6EffectO_Tt1g5', symObjAddr: 0x1EB0, symBinAddr: 0x122F54, symSize: 0x5C } + - { offset: 0x1BCA45, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO14RadialGradientC4StopV_Tt1g5', symObjAddr: 0x1F0C, symBinAddr: 0x122FB0, symSize: 0x23C } + - { offset: 0x1BCC17, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI11RouteOptionV_Tt1g5', symObjAddr: 0x2384, symBinAddr: 0x1231EC, symSize: 0x2CC } + - { offset: 0x1BCE7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x27EC, symBinAddr: 0x123654, symSize: 0x5C } + - { offset: 0x1BCEDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x2B74, symBinAddr: 0x1238AC, symSize: 0x54 } + - { offset: 0x1BD6C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentO4hash4intoys6HasherVz_tF', symObjAddr: 0x2650, symBinAddr: 0x1234B8, symSize: 0x12C } + - { offset: 0x1BDA23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSHAASH9hashValueSivgTW', symObjAddr: 0x277C, symBinAddr: 0x1235E4, symSize: 0x60 } + - { offset: 0x1BDAA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x27DC, symBinAddr: 0x123644, symSize: 0x10 } + - { offset: 0x1BDAB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x2848, symBinAddr: 0x1236B0, symSize: 0x24 } + - { offset: 0x1BDB2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSHAASH9hashValueSivgTW', symObjAddr: 0x2AD4, symBinAddr: 0x12380C, symSize: 0x58 } + - { offset: 0x1BDC03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x2B2C, symBinAddr: 0x123864, symSize: 0x48 } + - { offset: 0x1BDC69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x2BC8, symBinAddr: 0x123900, symSize: 0x64 } + - { offset: 0x1BDD38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentO2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x331C, symBinAddr: 0x124018, symSize: 0x110 } + - { offset: 0x1BE15D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO06layoutI0yAA0fI8Provider_pSgAA0dE10ControllerCF', symObjAddr: 0x0, symBinAddr: 0x12417C, symSize: 0x124 } + - { offset: 0x1BE27E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideO06layoutH02vcAA0fH8Provider_pSo16UIViewControllerC_tF', symObjAddr: 0x1F0, symBinAddr: 0x124344, symSize: 0x108 } + - { offset: 0x1BE338, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeOSHAASQWb', symObjAddr: 0x3BC, symBinAddr: 0x12450C, symSize: 0x4 } + - { offset: 0x1BE34C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeOACSQAAWl', symObjAddr: 0x3C0, symBinAddr: 0x124510, symSize: 0x40 } + - { offset: 0x1BE360, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideOSHAASQWb', symObjAddr: 0x400, symBinAddr: 0x124550, symSize: 0x4 } + - { offset: 0x1BE374, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideOACSQAAWl', symObjAddr: 0x404, symBinAddr: 0x124554, symSize: 0x40 } + - { offset: 0x1BE388, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideOSHAASQWb', symObjAddr: 0x444, symBinAddr: 0x124594, symSize: 0x4 } + - { offset: 0x1BE39C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideOACSQAAWl', symObjAddr: 0x448, symBinAddr: 0x124598, symSize: 0x40 } + - { offset: 0x1BE3B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeOMa', symObjAddr: 0x488, symBinAddr: 0x1245D8, symSize: 0x10 } + - { offset: 0x1BE3C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideOMa', symObjAddr: 0x498, symBinAddr: 0x1245E8, symSize: 0x10 } + - { offset: 0x1BE3D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideOMa', symObjAddr: 0x4A8, symBinAddr: 0x1245F8, symSize: 0x10 } + - { offset: 0x1BE419, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueACSgSi_tcfC', symObjAddr: 0x124, symBinAddr: 0x1242A0, symSize: 0x18 } + - { offset: 0x1BE43A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0x184, symBinAddr: 0x1242E8, symSize: 0x30 } + - { offset: 0x1BE469, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueACSgSi_tcfC', symObjAddr: 0x1C0, symBinAddr: 0x124318, symSize: 0x10 } + - { offset: 0x1BE4A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideOSYAASY8rawValuexSg03RawJ0Qz_tcfCTW', symObjAddr: 0x1D4, symBinAddr: 0x124328, symSize: 0x1C } + - { offset: 0x1BE4D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueACSgSi_tcfC', symObjAddr: 0x2F8, symBinAddr: 0x12444C, symSize: 0x10 } + - { offset: 0x1BE50B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideOSYAASY8rawValuexSg03RawK0Qz_tcfCTW', symObjAddr: 0x390, symBinAddr: 0x1244E0, symSize: 0x1C } + - { offset: 0x1BE534, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x3AC, symBinAddr: 0x1244FC, symSize: 0x10 } + - { offset: 0x1BE928, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC11placeholderSo7UIImageCSgvpZ', symObjAddr: 0xB940, symBinAddr: 0x397000, symSize: 0x0 } + - { offset: 0x1BE942, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC11placeholderSo7UIImageCSgvpZ', symObjAddr: 0xB948, symBinAddr: 0x397008, symSize: 0x0 } + - { offset: 0x1BEA73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC11placeholder_WZ', symObjAddr: 0x0, symBinAddr: 0x124618, symSize: 0x100 } + - { offset: 0x1BEB7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewCfETo', symObjAddr: 0x82C, symBinAddr: 0x124E44, symSize: 0x4 } + - { offset: 0x1BEBAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewCMa', symObjAddr: 0x830, symBinAddr: 0x124E48, symSize: 0x20 } + - { offset: 0x1BEBBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC11placeholder_WZ', symObjAddr: 0x850, symBinAddr: 0x124E68, symSize: 0x1C } + - { offset: 0x1BECF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewCfETo', symObjAddr: 0x137C, symBinAddr: 0x125964, symSize: 0x38 } + - { offset: 0x1BED28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewCMa', symObjAddr: 0x13B4, symBinAddr: 0x12599C, symSize: 0x20 } + - { offset: 0x1BEF50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC5image5width6height12cornerRadius11contentModeACSo7UIImageC_S3dSo013UIViewContentM0Vtcfc', symObjAddr: 0x100, symBinAddr: 0x124718, symSize: 0x69C } + - { offset: 0x1BF191, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x79C, symBinAddr: 0x124DB4, symSize: 0x58 } + - { offset: 0x1BF1F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x7F4, symBinAddr: 0x124E0C, symSize: 0x2C } + - { offset: 0x1BF262, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC11placeholderSo7UIImageCSgvpZfiAGyXEfU_', symObjAddr: 0x86C, symBinAddr: 0x124E84, symSize: 0x13C } + - { offset: 0x1BF2DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC5image11contentModeACSo7UIImageCSg_So013UIViewContentJ0Vtcfc', symObjAddr: 0x9A8, symBinAddr: 0x124FC0, symSize: 0x188 } + - { offset: 0x1BF34B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB30, symBinAddr: 0x125148, symSize: 0x100 } + - { offset: 0x1BF3AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xC30, symBinAddr: 0x125248, symSize: 0x28 } + - { offset: 0x1BF3D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC05setupG033_5BC7EB4CFBE79E2FDCB9A3883CF0BD47LLyyF', symObjAddr: 0xC58, symBinAddr: 0x125270, symSize: 0x348 } + - { offset: 0x1BF50F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC4drawyySo6CGRectVF', symObjAddr: 0xFA0, symBinAddr: 0x1255B8, symSize: 0x31C } + - { offset: 0x1BF70C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC4drawyySo6CGRectVFTo', symObjAddr: 0x12BC, symBinAddr: 0x1258D4, symSize: 0x58 } + - { offset: 0x1BF73E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1314, symBinAddr: 0x12592C, symSize: 0x2C } + - { offset: 0x1BFBA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC14sharedInstance33_FDD434C73DE549E6BD19BD9C4E1DE7EDLLACSgvpZ', symObjAddr: 0x1120, symBinAddr: 0x379A18, symSize: 0x0 } + - { offset: 0x1BFCB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerCMa', symObjAddr: 0x10, symBinAddr: 0x1259BC, symSize: 0x20 } + - { offset: 0x1BFCE7, size: 0x8, addend: 0x0, symName: '_$sSa36_reserveCapacityAssumingUniqueBuffer8oldCountySi_tF8PenNavUI5PlaceC_Tg5', symObjAddr: 0xE8, symBinAddr: 0x125A94, symSize: 0x44 } + - { offset: 0x1BFD5A, size: 0x8, addend: 0x0, symName: '_$sSa37_appendElementAssumeUniqueAndCapacity_03newB0ySi_xntF8PenNavUI5PlaceC_Tg5', symObjAddr: 0x12C, symBinAddr: 0x125AD8, symSize: 0x1C } + - { offset: 0x1BFF6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCSgxSgSEsSERzlWl', symObjAddr: 0xFBC, symBinAddr: 0x1268A0, symSize: 0x74 } + - { offset: 0x1BFF7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCSgMa', symObjAddr: 0x1030, symBinAddr: 0x126914, symSize: 0x54 } + - { offset: 0x1C014B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC3keySSSgvgTf4d_n', symObjAddr: 0x148, symBinAddr: 0x125AF4, symSize: 0x16C } + - { offset: 0x1C02E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC03getD8Location33_FDD434C73DE549E6BD19BD9C4E1DE7EDLLAA5PlaceCSgyFTf4d_n', symObjAddr: 0x2B4, symBinAddr: 0x125C60, symSize: 0x2AC } + - { offset: 0x1C060D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC04drawD16LocationIfNeeded2on5usingySay7Penguin5FloorCG_0L10INRenderer10PIRendererCSgtFTf4nnd_n', symObjAddr: 0x5A0, symBinAddr: 0x125F0C, symSize: 0x77C } + - { offset: 0x1C0A35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC04saveD8LocationyyAA5PlaceCSgFTf4nd_n', symObjAddr: 0xDA4, symBinAddr: 0x126688, symSize: 0x218 } + - { offset: 0x1C0E29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1269A8, symSize: 0x20 } + - { offset: 0x1C0FD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCfE', symObjAddr: 0x468, symBinAddr: 0x126E10, symSize: 0x40 } + - { offset: 0x1C1001, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCfETo', symObjAddr: 0x4D8, symBinAddr: 0x126E80, symSize: 0x4C } + - { offset: 0x1C1030, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCMa', symObjAddr: 0x524, symBinAddr: 0x126ECC, symSize: 0x20 } + - { offset: 0x1C1084, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x544, symBinAddr: 0x126EEC, symSize: 0x14 } + - { offset: 0x1C10A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x544, symBinAddr: 0x126EEC, symSize: 0x14 } + - { offset: 0x1C10C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x544, symBinAddr: 0x126EEC, symSize: 0x14 } + - { offset: 0x1C117F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x558, symBinAddr: 0x126F00, symSize: 0x180 } + - { offset: 0x1C1234, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0x6D8, symBinAddr: 0x127080, symSize: 0x138 } + - { offset: 0x1C12FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x810, symBinAddr: 0x1271B8, symSize: 0xC0 } + - { offset: 0x1C1329, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x8D0, symBinAddr: 0x127278, symSize: 0x14 } + - { offset: 0x1C1372, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x8E4, symBinAddr: 0x12728C, symSize: 0x24 } + - { offset: 0x1C13E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC10setupPanelyyF', symObjAddr: 0x908, symBinAddr: 0x1272B0, symSize: 0xCC } + - { offset: 0x1C1488, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC10setupPanelyyFTo', symObjAddr: 0x9D4, symBinAddr: 0x12737C, symSize: 0x28 } + - { offset: 0x1C14C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x9FC, symBinAddr: 0x1273A4, symSize: 0x224 } + - { offset: 0x1C16C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0xC20, symBinAddr: 0x1275C8, symSize: 0x50 } + - { offset: 0x1C16F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0xCEC, symBinAddr: 0x127618, symSize: 0xC } + - { offset: 0x1C1725, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4dnn_n', symObjAddr: 0xCF8, symBinAddr: 0x127624, symSize: 0xF8 } + - { offset: 0x1C1764, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xE1C, symBinAddr: 0x127740, symSize: 0x10 } + - { offset: 0x1C1778, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xE2C, symBinAddr: 0x127750, symSize: 0x8 } + - { offset: 0x1C193C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1269A8, symSize: 0x20 } + - { offset: 0x1C199C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0So07UITableE0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x1269C8, symSize: 0x14 } + - { offset: 0x1C19ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x34, symBinAddr: 0x1269DC, symSize: 0x5C } + - { offset: 0x1C1A2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC7dismissyySo8UIButtonCFTo', symObjAddr: 0x90, symBinAddr: 0x126A38, symSize: 0x38 } + - { offset: 0x1C1A73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC12registerCellyyF', symObjAddr: 0xC8, symBinAddr: 0x126A70, symSize: 0x1B0 } + - { offset: 0x1C1BCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x278, symBinAddr: 0x126C20, symSize: 0xC8 } + - { offset: 0x1C1C0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x340, symBinAddr: 0x126CE8, symSize: 0x60 } + - { offset: 0x1C1C57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3A0, symBinAddr: 0x126D48, symSize: 0xA0 } + - { offset: 0x1C1C8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x440, symBinAddr: 0x126DE8, symSize: 0x28 } + - { offset: 0x1C1C9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCfD', symObjAddr: 0x4A8, symBinAddr: 0x126E50, symSize: 0x30 } + - { offset: 0x1C2D23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCfE', symObjAddr: 0x179C, symBinAddr: 0x128EF4, symSize: 0x10C } + - { offset: 0x1C2D50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCfETo', symObjAddr: 0x18D8, symBinAddr: 0x129030, symSize: 0x118 } + - { offset: 0x1C2D7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCMa', symObjAddr: 0x19F0, symBinAddr: 0x129148, symSize: 0x20 } + - { offset: 0x1C2DC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1A10, symBinAddr: 0x129168, symSize: 0x14 } + - { offset: 0x1C2DE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1A10, symBinAddr: 0x129168, symSize: 0x14 } + - { offset: 0x1C2E04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1A10, symBinAddr: 0x129168, symSize: 0x14 } + - { offset: 0x1C2E6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x1A24, symBinAddr: 0x12917C, symSize: 0x60 } + - { offset: 0x1C30C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1A84, symBinAddr: 0x1291DC, symSize: 0x6FC } + - { offset: 0x1C3570, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU_', symObjAddr: 0x2180, symBinAddr: 0x1298D8, symSize: 0x174 } + - { offset: 0x1C365C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x22F4, symBinAddr: 0x129A4C, symSize: 0xC8 } + - { offset: 0x1C36A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x23BC, symBinAddr: 0x129B14, symSize: 0xF4 } + - { offset: 0x1C3731, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0x24B0, symBinAddr: 0x129C08, symSize: 0x2C4 } + - { offset: 0x1C3799, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_', symObjAddr: 0x2774, symBinAddr: 0x129ECC, symSize: 0x1B8 } + - { offset: 0x1C3851, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0x292C, symBinAddr: 0x12A084, symSize: 0x50 } + - { offset: 0x1C386D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC22didTapDirectionsActionyyF', symObjAddr: 0x297C, symBinAddr: 0x12A0D4, symSize: 0x474 } + - { offset: 0x1C3C78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC17showRouteOverview6sourceyAA5PlaceCSg_tF', symObjAddr: 0x2DF0, symBinAddr: 0x12A548, symSize: 0x2AC } + - { offset: 0x1C3EEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC22didTapDirectionsActionyyFTo', symObjAddr: 0x309C, symBinAddr: 0x12A7F4, symSize: 0x28 } + - { offset: 0x1C3F29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC18didTapVenuesActionyyFTo', symObjAddr: 0x30C4, symBinAddr: 0x12A81C, symSize: 0x70 } + - { offset: 0x1C3F74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20didTapExpandScheduleyyFTo', symObjAddr: 0x313C, symBinAddr: 0x12A88C, symSize: 0x2C } + - { offset: 0x1C3F90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC22didTapCollapseScheduleyyFTo', symObjAddr: 0x32A8, symBinAddr: 0x12A9F0, symSize: 0x2C } + - { offset: 0x1C3FCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20didExpandDescriptionyyFTo', symObjAddr: 0x32D4, symBinAddr: 0x12AA1C, symSize: 0x28 } + - { offset: 0x1C3FEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20didExpandDescriptionyyFTo', symObjAddr: 0x32D4, symBinAddr: 0x12AA1C, symSize: 0x28 } + - { offset: 0x1C4009, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20didExpandDescriptionyyFTo', symObjAddr: 0x32D4, symBinAddr: 0x12AA1C, symSize: 0x28 } + - { offset: 0x1C4053, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC17didTapPhoneActionyyF', symObjAddr: 0x32FC, symBinAddr: 0x12AA44, symSize: 0x228 } + - { offset: 0x1C4119, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC17didTapPhoneActionyyFTo', symObjAddr: 0x3524, symBinAddr: 0x12AC6C, symSize: 0x28 } + - { offset: 0x1C4135, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC19didTapWebsiteActionyyF', symObjAddr: 0x354C, symBinAddr: 0x12AC94, symSize: 0x3B8 } + - { offset: 0x1C4250, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC19didTapWebsiteActionyyFTo', symObjAddr: 0x3904, symBinAddr: 0x12B04C, symSize: 0x28 } + - { offset: 0x1C426C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16didTapMailActionyyF', symObjAddr: 0x392C, symBinAddr: 0x12B074, symSize: 0x1AC } + - { offset: 0x1C436D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16didTapMailActionyyFTo', symObjAddr: 0x3AD8, symBinAddr: 0x12B220, symSize: 0x28 } + - { offset: 0x1C43EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16venueGatesLoaded5gatesySayAA5PlaceCG_tF', symObjAddr: 0x3B00, symBinAddr: 0x12B248, symSize: 0x234 } + - { offset: 0x1C468F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC011mailComposeG0_13didFinishWith5errorySo06MFMailifG0C_So0nI6ResultVs5Error_pSgtFTo', symObjAddr: 0x3D34, symBinAddr: 0x12B47C, symSize: 0x18 } + - { offset: 0x1C4713, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x3D4C, symBinAddr: 0x12B494, symSize: 0x98 } + - { offset: 0x1C47C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x3DE4, symBinAddr: 0x12B52C, symSize: 0x24 } + - { offset: 0x1C4840, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x3E08, symBinAddr: 0x12B550, symSize: 0xBC } + - { offset: 0x1C48E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x3EC4, symBinAddr: 0x12B60C, symSize: 0x28 } + - { offset: 0x1C4924, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x3EEC, symBinAddr: 0x12B634, symSize: 0x204 } + - { offset: 0x1C4B17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x40F0, symBinAddr: 0x12B838, symSize: 0x50 } + - { offset: 0x1C4D1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC17venueDetailLoaded4datayAA05VenueF4DataC_tF', symObjAddr: 0x4140, symBinAddr: 0x12B888, symSize: 0x168 } + - { offset: 0x1C4DF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCAA011VenueDetailF19ModelOutputProtocolA2aDP05venueI6Loaded4datayAA0hF4DataC_tFTW', symObjAddr: 0x4510, symBinAddr: 0x12BC58, symSize: 0x4 } + - { offset: 0x1C4E0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCAA011VenueDetailF19ModelOutputProtocolA2aDP16venueGatesLoaded5gatesySayAA5PlaceCG_tFTW', symObjAddr: 0x4514, symBinAddr: 0x12BC5C, symSize: 0x4 } + - { offset: 0x1C4E4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x451C, symBinAddr: 0x12BC60, symSize: 0x37C } + - { offset: 0x1C5064, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x4914, symBinAddr: 0x12BFDC, symSize: 0x8 } + - { offset: 0x1C50A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x491C, symBinAddr: 0x12BFE4, symSize: 0x4 } + - { offset: 0x1C50C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x491C, symBinAddr: 0x12BFE4, symSize: 0x4 } + - { offset: 0x1C50DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16venueGatesLoaded5gatesySayAA5PlaceCG_tFyycfU0_TA', symObjAddr: 0x4944, symBinAddr: 0x12C00C, symSize: 0x8 } + - { offset: 0x1C50F0, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x494C, symBinAddr: 0x12C014, symSize: 0x10 } + - { offset: 0x1C5104, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x495C, symBinAddr: 0x12C024, symSize: 0x8 } + - { offset: 0x1C5118, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC22didTapDirectionsActionyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x4A84, symBinAddr: 0x12C054, symSize: 0x20 } + - { offset: 0x1C5152, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_TA', symObjAddr: 0x4B3C, symBinAddr: 0x12C0A0, symSize: 0x8 } + - { offset: 0x1C5166, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU_TA', symObjAddr: 0x4B98, symBinAddr: 0x12C0A8, symSize: 0x8 } + - { offset: 0x1C527E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x4BA0, symBinAddr: 0x12C0B0, symSize: 0x2B8 } + - { offset: 0x1C54CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5shareyyFySSSgcfU_TA', symObjAddr: 0x4E7C, symBinAddr: 0x12C368, symSize: 0x8 } + - { offset: 0x1C54E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC014generateCampusdE08campusId10completionySiSg_ySSSgctFyAHcfU_TA', symObjAddr: 0x4F78, symBinAddr: 0x12C394, symSize: 0x8 } + - { offset: 0x1C568D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x127758, symSize: 0x10 } + - { offset: 0x1C56A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x127758, symSize: 0x10 } + - { offset: 0x1C56EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x127768, symSize: 0x34 } + - { offset: 0x1C573A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x12779C, symSize: 0x10 } + - { offset: 0x1C5752, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x12779C, symSize: 0x10 } + - { offset: 0x1C5792, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1277AC, symSize: 0x34 } + - { offset: 0x1C57E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1277E0, symSize: 0x10 } + - { offset: 0x1C57F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1277E0, symSize: 0x10 } + - { offset: 0x1C5834, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x1277F0, symSize: 0x34 } + - { offset: 0x1C5883, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC09separatorF0AA09SeparatorF0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x127824, symSize: 0x10 } + - { offset: 0x1C589B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC09separatorF0AA09SeparatorF0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x127824, symSize: 0x10 } + - { offset: 0x1C58DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC09separatorF0AA09SeparatorF0CSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x127834, symSize: 0x34 } + - { offset: 0x1C592A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC010titleStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x127868, symSize: 0x10 } + - { offset: 0x1C5942, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC010titleStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x127868, symSize: 0x10 } + - { offset: 0x1C5982, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC010titleStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x127878, symSize: 0x34 } + - { offset: 0x1C59D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x1278AC, symSize: 0x10 } + - { offset: 0x1C59E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x1278AC, symSize: 0x10 } + - { offset: 0x1C5A29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x1278BC, symSize: 0x34 } + - { offset: 0x1C5A85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06campusE033_1B1727CC5BB5A738712554D2E2121BF2LLAA05VenueF4DataCvg', symObjAddr: 0x198, symBinAddr: 0x1278F0, symSize: 0x9C } + - { offset: 0x1C5BA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC9viewModel33_1B1727CC5BB5A738712554D2E2121BF2LLAA011VenueDetailfI0Cvg', symObjAddr: 0x234, symBinAddr: 0x12798C, symSize: 0x120 } + - { offset: 0x1C5E46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x354, symBinAddr: 0x127AAC, symSize: 0x180 } + - { offset: 0x1C5F79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x4D4, symBinAddr: 0x127C2C, symSize: 0x28 } + - { offset: 0x1C603E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC14viewWillAppearyySbF', symObjAddr: 0x4FC, symBinAddr: 0x127C54, symSize: 0x10C } + - { offset: 0x1C6111, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0x608, symBinAddr: 0x127D60, symSize: 0x30 } + - { offset: 0x1C6125, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC04loadD11Information33_1B1727CC5BB5A738712554D2E2121BF2LLyyF', symObjAddr: 0x638, symBinAddr: 0x127D90, symSize: 0xF0 } + - { offset: 0x1C61C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC13registerCellsyyF', symObjAddr: 0x728, symBinAddr: 0x127E80, symSize: 0xFC } + - { offset: 0x1C62B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC03setD11InformationyyF', symObjAddr: 0x824, symBinAddr: 0x127F7C, symSize: 0xD0 } + - { offset: 0x1C635B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x8F4, symBinAddr: 0x12804C, symSize: 0x88 } + - { offset: 0x1C6483, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5shareyyF', symObjAddr: 0x97C, symBinAddr: 0x1280D4, symSize: 0x420 } + - { offset: 0x1C6705, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0xD9C, symBinAddr: 0x1284F4, symSize: 0x494 } + - { offset: 0x1C695C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5shareyyFTo', symObjAddr: 0x1230, symBinAddr: 0x128988, symSize: 0x28 } + - { offset: 0x1C69AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC04loadD5GatesyyF', symObjAddr: 0x1258, symBinAddr: 0x1289B0, symSize: 0x1E0 } + - { offset: 0x1C6B62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x1438, symBinAddr: 0x128B90, symSize: 0x180 } + - { offset: 0x1C6BA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x15B8, symBinAddr: 0x128D10, symSize: 0x60 } + - { offset: 0x1C6BEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1618, symBinAddr: 0x128D70, symSize: 0x15C } + - { offset: 0x1C6C1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1774, symBinAddr: 0x128ECC, symSize: 0x28 } + - { offset: 0x1C6C32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCfD', symObjAddr: 0x18A8, symBinAddr: 0x129000, symSize: 0x30 } + - { offset: 0x1C75AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOMa', symObjAddr: 0x164, symBinAddr: 0x12C3C8, symSize: 0x10 } + - { offset: 0x1C7646, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASQWb', symObjAddr: 0xB20, symBinAddr: 0x12CD84, symSize: 0x4 } + - { offset: 0x1C765A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOACSQAAWl', symObjAddr: 0xB24, symBinAddr: 0x12CD88, symSize: 0x40 } + - { offset: 0x1C766E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOACSYAAWl', symObjAddr: 0xC04, symBinAddr: 0x12CE24, symSize: 0x40 } + - { offset: 0x1C7690, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE4hash4intoys6HasherVz_tF8PenNavUI8FavoriteC10CodingKeysO_Tg5', symObjAddr: 0x174, symBinAddr: 0x12C3D8, symSize: 0x110 } + - { offset: 0x1C76ED, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE4hash4intoys6HasherVz_tF8PenNavUI22SharedFavoriteLocationC10CodingKeysO_Tg5', symObjAddr: 0x284, symBinAddr: 0x12C4E8, symSize: 0x110 } + - { offset: 0x1C7768, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE08_rawHashB04seedS2i_tF8PenNavUI11RouteOptionV0iJ3KeyO_Tg5', symObjAddr: 0x394, symBinAddr: 0x12C5F8, symSize: 0x134 } + - { offset: 0x1C7815, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE08_rawHashB04seedS2i_tF8PenNavUI22SharedFavoriteLocationC10CodingKeysO_Tg5', symObjAddr: 0x4C8, symBinAddr: 0x12C72C, symSize: 0x134 } + - { offset: 0x1C78C2, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE08_rawHashB04seedS2i_tF8PenNavUI8FavoriteC10CodingKeysO_Tg5', symObjAddr: 0x5FC, symBinAddr: 0x12C860, symSize: 0x134 } + - { offset: 0x1C797E, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE08_rawHashB04seedS2i_tF8PenNavUI9PlaceTypeO_Tg5', symObjAddr: 0x730, symBinAddr: 0x12C994, symSize: 0x120 } + - { offset: 0x1C7A22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x850, symBinAddr: 0x12CAB4, symSize: 0xC } + - { offset: 0x1C7A5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x85C, symBinAddr: 0x12CAC0, symSize: 0xC } + - { offset: 0x1C7A7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x85C, symBinAddr: 0x12CAC0, symSize: 0xC } + - { offset: 0x1C7A90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x85C, symBinAddr: 0x12CAC0, symSize: 0xC } + - { offset: 0x1C7AA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x868, symBinAddr: 0x12CACC, symSize: 0xFC } + - { offset: 0x1C7B1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x964, symBinAddr: 0x12CBC8, symSize: 0x8 } + - { offset: 0x1C7B39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xA78, symBinAddr: 0x12CCDC, symSize: 0x5C } + - { offset: 0x1C7B5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xAD4, symBinAddr: 0x12CD38, symSize: 0x4C } + - { offset: 0x1C7C20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x96C, symBinAddr: 0x12CBD0, symSize: 0x2C } + - { offset: 0x1C7C49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x998, symBinAddr: 0x12CBFC, symSize: 0xE0 } + - { offset: 0x1C7C8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0xB64, symBinAddr: 0x12CDC8, symSize: 0x5C } + - { offset: 0x1C804D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierO8rawValueSSvg', symObjAddr: 0x0, symBinAddr: 0x12CE64, symSize: 0x174 } + - { offset: 0x1C8095, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x174, symBinAddr: 0x12CFD8, symSize: 0x84 } + - { offset: 0x1C8148, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSHAASH9hashValueSivgTW', symObjAddr: 0x1F8, symBinAddr: 0x12D05C, symSize: 0x60 } + - { offset: 0x1C81C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x258, symBinAddr: 0x12D0BC, symSize: 0x40 } + - { offset: 0x1C8218, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x298, symBinAddr: 0x12D0FC, symSize: 0x5C } + - { offset: 0x1C8493, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUISSRszlE12takeModifier33_87DA5707E664C852F4BDCF261BF8A634LLAA11CommandLineO0E0O_SSSgtSgyKF', symObjAddr: 0x348, symBinAddr: 0x12D1AC, symSize: 0x1D4 } + - { offset: 0x1C87C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ErrorOSHAASQWb', symObjAddr: 0x65C, symBinAddr: 0x12D380, symSize: 0x4 } + - { offset: 0x1C87D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ErrorOAESQAAWl', symObjAddr: 0x660, symBinAddr: 0x12D384, symSize: 0x40 } + - { offset: 0x1C87EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ErrorOMa', symObjAddr: 0x814, symBinAddr: 0x12D3C4, symSize: 0x10 } + - { offset: 0x1C8879, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO14parseModifiers4fromSDyAC8ModifierOSSSgGSaySSG_tKFZTf4nd_n', symObjAddr: 0x880, symBinAddr: 0x12D430, symSize: 0x278 } + - { offset: 0x1C8A60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierO_SSSgtSgWOe', symObjAddr: 0xB38, symBinAddr: 0x12D6A8, symSize: 0x14 } + - { offset: 0x1C8A74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOwet', symObjAddr: 0xB90, symBinAddr: 0x12D6BC, symSize: 0x90 } + - { offset: 0x1C8A88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOwst', symObjAddr: 0xC20, symBinAddr: 0x12D74C, symSize: 0xB0 } + - { offset: 0x1C8A9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOMa', symObjAddr: 0xCD4, symBinAddr: 0x12D7FC, symSize: 0x10 } + - { offset: 0x1C8AB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSHAASQWb', symObjAddr: 0xCE4, symBinAddr: 0x12D80C, symSize: 0x4 } + - { offset: 0x1C8AC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOAESQAAWl', symObjAddr: 0xCE8, symBinAddr: 0x12D810, symSize: 0x40 } + - { offset: 0x1C8AD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierO8rawValueSSvg', symObjAddr: 0x0, symBinAddr: 0x12CE64, symSize: 0x174 } + - { offset: 0x1C8B40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x2F4, symBinAddr: 0x12D158, symSize: 0x2C } + - { offset: 0x1C8B69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x320, symBinAddr: 0x12D184, symSize: 0x28 } + - { offset: 0x1C8BBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x824, symBinAddr: 0x12D3D4, symSize: 0x5C } + - { offset: 0x1C906E, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE13underlineTextyyF', symObjAddr: 0x0, symBinAddr: 0x12D850, symSize: 0x2BC } + - { offset: 0x1C918E, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE9fontStyleSSvsTo', symObjAddr: 0x2BC, symBinAddr: 0x12DB0C, symSize: 0x54 } + - { offset: 0x1C91B5, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE9fontStyleSSvs', symObjAddr: 0x310, symBinAddr: 0x12DB60, symSize: 0x1C4 } + - { offset: 0x1C92AF, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19textColorIdentifierSivgTo', symObjAddr: 0x4D4, symBinAddr: 0x12DD24, symSize: 0x8 } + - { offset: 0x1C92CB, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19textColorIdentifierSivsTo', symObjAddr: 0x4DC, symBinAddr: 0x12DD2C, symSize: 0x30 } + - { offset: 0x1C9303, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19textColorIdentifierSivs', symObjAddr: 0x50C, symBinAddr: 0x12DD5C, symSize: 0x124 } + - { offset: 0x1C9387, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x630, symBinAddr: 0x12DE80, symSize: 0x8 } + - { offset: 0x1C93A3, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x638, symBinAddr: 0x12DE88, symSize: 0x38 } + - { offset: 0x1C93BF, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19tintColorIdentifierSivgTo', symObjAddr: 0x67C, symBinAddr: 0x12DEC0, symSize: 0x8 } + - { offset: 0x1C93DB, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19tintColorIdentifierSivsTo', symObjAddr: 0x684, symBinAddr: 0x12DEC8, symSize: 0x38 } + - { offset: 0x1C9421, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE15localizationKeySSvsTo', symObjAddr: 0x80C, symBinAddr: 0x12E028, symSize: 0x98 } + - { offset: 0x1C9456, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyaABSHSCWl', symObjAddr: 0x8E8, symBinAddr: 0x12E0C0, symSize: 0x44 } + - { offset: 0x1C992B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC14SubpathBuilderV13appendSegmentyyAE0J0OF', symObjAddr: 0x0, symBinAddr: 0x12E10C, symSize: 0x41C } + - { offset: 0x1C9C70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC14SubpathBuilderV13appendSegmentyyAE0J0OF', symObjAddr: 0x0, symBinAddr: 0x12E10C, symSize: 0x41C } + - { offset: 0x1CA3CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC14SubpathBuilderV12makeSubpaths3forSayAEGAE_tFTf4nn_g', symObjAddr: 0x41C, symBinAddr: 0x12E528, symSize: 0x15C } + - { offset: 0x1CAA95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22FloatingPanelPresenterPAAE20applyDismissingRules2onyAA0dE11Presentable_pSg_tF', symObjAddr: 0x20, symBinAddr: 0x12E684, symSize: 0x408 } + - { offset: 0x1CAB11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22FloatingPanelPresenterPAAE20applyDismissingRules2onyAA0dE11Presentable_pSg_tF', symObjAddr: 0x20, symBinAddr: 0x12E684, symSize: 0x408 } + - { offset: 0x1CB0AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22FloatingPanelPresenterPAAE20removeViewControlleryyAA0dE11Presentable_pSgF', symObjAddr: 0x428, symBinAddr: 0x12EA8C, symSize: 0x464 } + - { offset: 0x1CB8E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtFyycfU_TA', symObjAddr: 0x8E4, symBinAddr: 0x12EF48, symSize: 0xC } + - { offset: 0x1CB8FB, size: 0x8, addend: 0x0, symName: '_$sSo8NSObjectCMa', symObjAddr: 0x8F0, symBinAddr: 0x12EF54, symSize: 0x44 } + - { offset: 0x1CB993, size: 0x8, addend: 0x0, symName: '_$sSMsE20_halfStablePartition15isSuffixElement5IndexQzSb0F0QzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg503$s8hi4UI22kl44PresenterPAAE20removeViewControlleryyAA0dE11M18_pSgFSbAaE_pXEfU2_AgH_pTf1cn_nTf4ng_n', symObjAddr: 0x9E8, symBinAddr: 0x12F04C, symSize: 0x1A8 } + - { offset: 0x1CBE27, size: 0x8, addend: 0x0, symName: '_$sSlsE10firstIndex5where0B0QzSgSb7ElementQzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg503$s8ef4UI22hi44PresenterPAAE20removeViewControlleryyAA0dE11J18_pSgFSbAaE_pXEfU2_AhI_pTf1cn_nTf4ng_n', symObjAddr: 0x934, symBinAddr: 0x12EF98, symSize: 0xB4 } + - { offset: 0x1CC48B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28DefaultFloatingPanelBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x12F1F4, symSize: 0x8 } + - { offset: 0x1CC4DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28DefaultFloatingPanelBehaviorCMa', symObjAddr: 0x18, symBinAddr: 0x12F1FC, symSize: 0x20 } + - { offset: 0x1CC508, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28DefaultFloatingPanelBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x12F1F4, symSize: 0x8 } + - { offset: 0x1CC8A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseLinearGradientsySayAA3DOMO0F8GradientCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0x12F21C, symSize: 0x2B0 } + - { offset: 0x1CCA54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseLinearGradientsySayAA3DOMO0F8GradientCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0x12F21C, symSize: 0x2B0 } + - { offset: 0x1CCF33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV19parseLinearGradientyAA3DOMO0fG0CAA3XMLO7ElementCKFTf4nx_n', symObjAddr: 0x2B0, symBinAddr: 0x12F4CC, symSize: 0xAF4 } + - { offset: 0x1CDA2F, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE9localizedSSyF', symObjAddr: 0x0, symBinAddr: 0x12FFC0, symSize: 0x1F0 } + - { offset: 0x1CDB79, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized10targetSizeABSgSo6CGSizeV_tF', symObjAddr: 0x1F0, symBinAddr: 0x1301B0, symSize: 0x1A0 } + - { offset: 0x1CDC9F, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized10targetSizeABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0x1074, symBinAddr: 0x131034, symSize: 0x20 } + - { offset: 0x1CDD26, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE22localizedWithArgumentsySSs7CVarArg_pd_tF', symObjAddr: 0x390, symBinAddr: 0x130350, symSize: 0x158 } + - { offset: 0x1CDE6F, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE8containsySbSaySSGF', symObjAddr: 0x4E8, symBinAddr: 0x1304A8, symSize: 0x94 } + - { offset: 0x1CE037, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE7trimmed12maximumWidth0E5Lines4fontSS12CoreGraphics7CGFloatV_SiSo6UIFontCtF', symObjAddr: 0x57C, symBinAddr: 0x13053C, symSize: 0x4F0 } + - { offset: 0x1CE4DE, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE9setInsets17forContentPadding010imageTitleI0ySo06UIEdgeF0V_12CoreGraphics7CGFloatVtF', symObjAddr: 0xF78, symBinAddr: 0x130F38, symSize: 0xFC } + - { offset: 0x1CE52D, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE6fadeIn_5delay10completionySd_SdySbctFyycfU_', symObjAddr: 0x1098, symBinAddr: 0x131054, symSize: 0x10 } + - { offset: 0x1CE556, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE7fadeOut_5delay10completionySd_SdySbctFyycfU_', symObjAddr: 0x10A8, symBinAddr: 0x131064, symSize: 0x10 } + - { offset: 0x1CE57F, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE16trimHorizontally33_16B44A3E237573F8ABE391799BEDA5FELL12maximumWidth4fonty12CoreGraphics7CGFloatV_So6UIFontCtF', symObjAddr: 0x10B8, symBinAddr: 0x131074, symSize: 0x2E8 } + - { offset: 0x1CE78B, size: 0x8, addend: 0x0, symName: '_$sSo13UIApplicationC8PenNavUIE21topMostViewControllerSo06UIViewH0CSgyFTf4d_n', symObjAddr: 0x13A0, symBinAddr: 0x13135C, symSize: 0x19C } + - { offset: 0x1CE8E1, size: 0x8, addend: 0x0, symName: '_$sSo13UIApplicationC8PenNavUIE16topSafeAreaInset12CoreGraphics7CGFloatVvgZTf4d_n', symObjAddr: 0x153C, symBinAddr: 0x1314F8, symSize: 0x128 } + - { offset: 0x1CEA10, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized10targetSizeABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0x17DC, symBinAddr: 0x131644, symSize: 0x1C } + - { offset: 0x1CEA4C, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1810, symBinAddr: 0x131670, symSize: 0x10 } + - { offset: 0x1CEA60, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1820, symBinAddr: 0x131680, symSize: 0x8 } + - { offset: 0x1CEBAB, size: 0x8, addend: 0x0, symName: '_$ss17_dictionaryUpCastySDyq0_q1_GSDyxq_GSHRzSHR0_r2_lFSS_S2SypTg5', symObjAddr: 0xA6C, symBinAddr: 0x130A2C, symSize: 0x24C } + - { offset: 0x1CED29, size: 0x8, addend: 0x0, symName: '_$ss17_dictionaryUpCastySDyq0_q1_GSDyxq_GSHRzSHR0_r2_lFSo21NSAttributedStringKeya_So6UIFontCAEypTg5', symObjAddr: 0xCB8, symBinAddr: 0x130C78, symSize: 0x2C0 } + - { offset: 0x1CFDFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellCfETo', symObjAddr: 0x26C8, symBinAddr: 0x133D50, symSize: 0xB8 } + - { offset: 0x1CFE2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellCMa', symObjAddr: 0x2780, symBinAddr: 0x133E08, symSize: 0x20 } + - { offset: 0x1CFE41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13configureIcon3foryAA5PlaceCSg_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x27F0, symBinAddr: 0x133E78, symSize: 0x8 } + - { offset: 0x1D0211, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x131688, symSize: 0x10 } + - { offset: 0x1D0229, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x131688, symSize: 0x10 } + - { offset: 0x1D026F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x131698, symSize: 0x34 } + - { offset: 0x1D02BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17subtitleStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1316CC, symSize: 0x10 } + - { offset: 0x1D02D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17subtitleStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1316CC, symSize: 0x10 } + - { offset: 0x1D0316, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17subtitleStackViewSo07UIStackI0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1316DC, symSize: 0x34 } + - { offset: 0x1D0365, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x131710, symSize: 0x10 } + - { offset: 0x1D037D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x131710, symSize: 0x10 } + - { offset: 0x1D03B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x131720, symSize: 0x34 } + - { offset: 0x1D0407, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x131754, symSize: 0x10 } + - { offset: 0x1D041F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x131754, symSize: 0x10 } + - { offset: 0x1D045A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x131764, symSize: 0x34 } + - { offset: 0x1D04A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x131798, symSize: 0x10 } + - { offset: 0x1D04C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x131798, symSize: 0x10 } + - { offset: 0x1D04FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x1317A8, symSize: 0x34 } + - { offset: 0x1D054B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC9iconImageSo11UIImageViewCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x1317DC, symSize: 0x10 } + - { offset: 0x1D0563, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC9iconImageSo11UIImageViewCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x1317DC, symSize: 0x10 } + - { offset: 0x1D05A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC9iconImageSo11UIImageViewCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x1317EC, symSize: 0x34 } + - { offset: 0x1D05F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC19scheduleStatusLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x131820, symSize: 0x10 } + - { offset: 0x1D060A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC19scheduleStatusLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x131820, symSize: 0x10 } + - { offset: 0x1D0645, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC19scheduleStatusLabelSo7UILabelCSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x131830, symSize: 0x34 } + - { offset: 0x1D0694, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC22scheduleTimeRangeLabelSo7UILabelCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x131864, symSize: 0x10 } + - { offset: 0x1D06AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC22scheduleTimeRangeLabelSo7UILabelCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x131864, symSize: 0x10 } + - { offset: 0x1D06E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC22scheduleTimeRangeLabelSo7UILabelCSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x131874, symSize: 0x34 } + - { offset: 0x1D0736, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17scheduleContainerSo11UIStackViewCSgvgTo', symObjAddr: 0x220, symBinAddr: 0x1318A8, symSize: 0x10 } + - { offset: 0x1D074E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17scheduleContainerSo11UIStackViewCSgvgTo', symObjAddr: 0x220, symBinAddr: 0x1318A8, symSize: 0x10 } + - { offset: 0x1D0789, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17scheduleContainerSo11UIStackViewCSgvsTo', symObjAddr: 0x230, symBinAddr: 0x1318B8, symSize: 0x34 } + - { offset: 0x1D07D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC12awakeFromNibyyFTo', symObjAddr: 0x264, symBinAddr: 0x1318EC, symSize: 0x3C } + - { offset: 0x1D084F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC14configureTitle10searchTextySSSg_tF', symObjAddr: 0x2A0, symBinAddr: 0x131928, symSize: 0x270 } + - { offset: 0x1D0AD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17configureSchedule010shouldShowH0ySb_tF', symObjAddr: 0x510, symBinAddr: 0x131B98, symSize: 0x87C } + - { offset: 0x1D13C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17configureSubtitleyyF', symObjAddr: 0xD8C, symBinAddr: 0x132414, symSize: 0x758 } + - { offset: 0x1D1868, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC19configureSeparatorsyyF', symObjAddr: 0x14E4, symBinAddr: 0x132B6C, symSize: 0x3A8 } + - { offset: 0x1D1CB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13configureIcon3foryAA5PlaceCSg_tF', symObjAddr: 0x188C, symBinAddr: 0x132F14, symSize: 0x924 } + - { offset: 0x1D20EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13configureIcon3foryAA5PlaceCSg_tFySo7UIImageCSgcfU_', symObjAddr: 0x21B0, symBinAddr: 0x133838, symSize: 0x13C } + - { offset: 0x1D2189, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC15prepareForReuseyyF', symObjAddr: 0x22EC, symBinAddr: 0x133974, symSize: 0x134 } + - { offset: 0x1D222B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC15prepareForReuseyyFTo', symObjAddr: 0x2420, symBinAddr: 0x133AA8, symSize: 0x28 } + - { offset: 0x1D223F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x2448, symBinAddr: 0x133AD0, symSize: 0xFC } + - { offset: 0x1D2280, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x2544, symBinAddr: 0x133BCC, symSize: 0x48 } + - { offset: 0x1D22B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x258C, symBinAddr: 0x133C14, symSize: 0xE4 } + - { offset: 0x1D22EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2670, symBinAddr: 0x133CF8, symSize: 0x28 } + - { offset: 0x1D22FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellCfD', symObjAddr: 0x2698, symBinAddr: 0x133D20, symSize: 0x30 } + - { offset: 0x1D26F8, size: 0x8, addend: 0x0, symName: '_$sSo9UIControlC8PenNavUIE13_handleAction33_5E6DC34DF67332EDC181E10990F14522LLyyF', symObjAddr: 0x0, symBinAddr: 0x133E80, symSize: 0xDC } + - { offset: 0x1D271C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10closureKey33_5E6DC34DF67332EDC181E10990F14522LLs5UInt8Vvp', symObjAddr: 0x188, symBinAddr: 0x379D98, symSize: 0x0 } + - { offset: 0x1D2735, size: 0x8, addend: 0x0, symName: '_$sSo9UIControlC8PenNavUIE13_handleAction33_5E6DC34DF67332EDC181E10990F14522LLyyF', symObjAddr: 0x0, symBinAddr: 0x133E80, symSize: 0xDC } + - { offset: 0x1D2779, size: 0x8, addend: 0x0, symName: '_$sSo9UIControlC8PenNavUIE13_handleAction33_5E6DC34DF67332EDC181E10990F14522LLyyFTo', symObjAddr: 0xDC, symBinAddr: 0x133F5C, symSize: 0x28 } + - { offset: 0x1D2B3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC4dataAE10Foundation4DataV_tc33_46DA244A1B05B1F166AC1DDE992677D0Llfc', symObjAddr: 0x0, symBinAddr: 0x133F84, symSize: 0x15C } + - { offset: 0x1D2D90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserCfETo', symObjAddr: 0x408, symBinAddr: 0x134358, symSize: 0x5C } + - { offset: 0x1D2DBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserCMa', symObjAddr: 0x464, symBinAddr: 0x1343B4, symSize: 0x20 } + - { offset: 0x1D2E13, size: 0x8, addend: 0x0, symName: '_$sSa17_customRemoveLastxSgyF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AC11CGTextTypesV_G_Tg5', symObjAddr: 0x484, symBinAddr: 0x1343D4, symSize: 0x94 } + - { offset: 0x1D2EAD, size: 0x8, addend: 0x0, symName: '_$sSa17_customRemoveLastxSgyF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AC7CGTypesV_G_Tg5', symObjAddr: 0x518, symBinAddr: 0x134468, symSize: 0x90 } + - { offset: 0x1D2F68, size: 0x8, addend: 0x0, symName: '_$sSa17_customRemoveLastxSgyF8PenNavUI3XMLO7ElementC_Tg5', symObjAddr: 0x5A8, symBinAddr: 0x1344F8, symSize: 0x60 } + - { offset: 0x1D32C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC4dataAE10Foundation4DataV_tc33_46DA244A1B05B1F166AC1DDE992677D0Llfc', symObjAddr: 0x0, symBinAddr: 0x133F84, symSize: 0x15C } + - { offset: 0x1D3339, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_15didStartElement12namespaceURI13qualifiedName10attributesySo11NSXMLParserC_S2SSgAMSDyS2SGtFTo', symObjAddr: 0x15C, symBinAddr: 0x1340E0, symSize: 0x108 } + - { offset: 0x1D336A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_13didEndElement12namespaceURI13qualifiedNameySo11NSXMLParserC_S2SSgALtFTo', symObjAddr: 0x264, symBinAddr: 0x1341E8, symSize: 0xD4 } + - { offset: 0x1D339B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_15foundCharactersySo11NSXMLParserC_SStFTo', symObjAddr: 0x338, symBinAddr: 0x1342BC, symSize: 0x70 } + - { offset: 0x1D33DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserCAEycfcTo', symObjAddr: 0x3A8, symBinAddr: 0x13432C, symSize: 0x2C } + - { offset: 0x1D345F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC5parse4dataAC7ElementC10Foundation4DataV_tKFZTf4nd_n', symObjAddr: 0x608, symBinAddr: 0x134558, symSize: 0x210 } + - { offset: 0x1D363B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_15didStartElement12namespaceURI13qualifiedName10attributesySo11NSXMLParserC_S2SSgAMSDyS2SGtFTf4nnndnn_n', symObjAddr: 0x818, symBinAddr: 0x134768, symSize: 0x314 } + - { offset: 0x1D39F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_13didEndElement12namespaceURI13qualifiedNameySo11NSXMLParserC_S2SSgALtFTf4dnndn_n', symObjAddr: 0xB2C, symBinAddr: 0x134A7C, symSize: 0x234 } + - { offset: 0x1D3D66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_15foundCharactersySo11NSXMLParserC_SStFTf4dnn_n', symObjAddr: 0xD60, symBinAddr: 0x134CB0, symSize: 0x17C } + - { offset: 0x1D42C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16PIEventsDelegateP19onBackButtonPressedyyF', symObjAddr: 0x0, symBinAddr: 0x134E2C, symSize: 0x7C } + - { offset: 0x1D431C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16PIEventsDelegateP19onBackButtonPressedyyF', symObjAddr: 0x0, symBinAddr: 0x134E2C, symSize: 0x7C } + - { offset: 0x1D46EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC10layerClassyXlXpvgZTo', symObjAddr: 0x0, symBinAddr: 0x134EC8, symSize: 0x14 } + - { offset: 0x1D499D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewCfETo', symObjAddr: 0x6BC, symBinAddr: 0x135584, symSize: 0x48 } + - { offset: 0x1D49CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewCMa', symObjAddr: 0x964, symBinAddr: 0x13582C, symSize: 0x20 } + - { offset: 0x1D4B09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerCMa', symObjAddr: 0xE88, symBinAddr: 0x135D50, symSize: 0x20 } + - { offset: 0x1D4B1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC21setupPropertyAnimator33_8C639E5594D44A54C22F58F98E146AE7LLyyFyycfU_TA', symObjAddr: 0xF4C, symBinAddr: 0x135D94, symSize: 0x8 } + - { offset: 0x1D4B31, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xF54, symBinAddr: 0x135D9C, symSize: 0x10 } + - { offset: 0x1D4B45, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xF64, symBinAddr: 0x135DAC, symSize: 0x8 } + - { offset: 0x1D4B79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC10layerClassyXlXpvgZTo', symObjAddr: 0x0, symBinAddr: 0x134EC8, symSize: 0x14 } + - { offset: 0x1D4C63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC9intensity12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x14, symBinAddr: 0x134EDC, symSize: 0x88 } + - { offset: 0x1D4CCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC9intensity12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x9C, symBinAddr: 0x134F64, symSize: 0x8C } + - { offset: 0x1D4E18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC6effectSo06UIBlurE0CvgTo', symObjAddr: 0x128, symBinAddr: 0x134FF0, symSize: 0x10 } + - { offset: 0x1D4E30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC6effectSo06UIBlurE0CvgTo', symObjAddr: 0x128, symBinAddr: 0x134FF0, symSize: 0x10 } + - { offset: 0x1D4E84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC6effectSo06UIBlurE0CvsTo', symObjAddr: 0x138, symBinAddr: 0x135000, symSize: 0x6C } + - { offset: 0x1D4F04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x1A4, symBinAddr: 0x13506C, symSize: 0x1A0 } + - { offset: 0x1D4F91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x344, symBinAddr: 0x13520C, symSize: 0x20 } + - { offset: 0x1D4FC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x364, symBinAddr: 0x13522C, symSize: 0x18C } + - { offset: 0x1D504E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x4F0, symBinAddr: 0x1353B8, symSize: 0x28 } + - { offset: 0x1D50A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC14layoutSubviewsyyF', symObjAddr: 0x518, symBinAddr: 0x1353E0, symSize: 0xB8 } + - { offset: 0x1D5161, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC14layoutSubviewsyyFTo', symObjAddr: 0x5D0, symBinAddr: 0x135498, symSize: 0x28 } + - { offset: 0x1D5175, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewCfD', symObjAddr: 0x5F8, symBinAddr: 0x1354C0, symSize: 0x50 } + - { offset: 0x1D51A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewCfDTo', symObjAddr: 0x648, symBinAddr: 0x135510, symSize: 0x74 } + - { offset: 0x1D520A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC21setupPropertyAnimator33_8C639E5594D44A54C22F58F98E146AE7LLyyF', symObjAddr: 0x704, symBinAddr: 0x1355CC, symSize: 0x134 } + - { offset: 0x1D52BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC21setupPropertyAnimator33_8C639E5594D44A54C22F58F98E146AE7LLyyFyycfU_', symObjAddr: 0x838, symBinAddr: 0x135700, symSize: 0xE0 } + - { offset: 0x1D535A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC7displayyySo7CALayerCFTo', symObjAddr: 0x918, symBinAddr: 0x1357E0, symSize: 0x4C } + - { offset: 0x1D5390, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC5layerACyp_tcfc', symObjAddr: 0x984, symBinAddr: 0x13584C, symSize: 0xEC } + - { offset: 0x1D53E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC5layerACyp_tcfcTo', symObjAddr: 0xA70, symBinAddr: 0x135938, symSize: 0x4C } + - { offset: 0x1D540F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerCACycfcTo', symObjAddr: 0xABC, symBinAddr: 0x135984, symSize: 0x3C } + - { offset: 0x1D5469, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xAF8, symBinAddr: 0x1359C0, symSize: 0x80 } + - { offset: 0x1D54F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC12needsDisplay6forKeySbSS_tFZTo', symObjAddr: 0xB78, symBinAddr: 0x135A40, symSize: 0x10C } + - { offset: 0x1D554C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC6action6forKeySo8CAAction_pSgSS_tF', symObjAddr: 0xC84, symBinAddr: 0x135B4C, symSize: 0x16C } + - { offset: 0x1D55D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC6action6forKeySo8CAAction_pSgSS_tFTo', symObjAddr: 0xDF0, symBinAddr: 0x135CB8, symSize: 0x68 } + - { offset: 0x1D55EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerCfD', symObjAddr: 0xE58, symBinAddr: 0x135D20, symSize: 0x30 } + - { offset: 0x1D560E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC7displayyySo7CALayerCFTf4dn_n', symObjAddr: 0xF6C, symBinAddr: 0x135DB4, symSize: 0x94 } + - { offset: 0x1D5A43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC10imagePlaceSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x135E48, symSize: 0x20 } + - { offset: 0x1D5E7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellCfETo', symObjAddr: 0xE3C, symBinAddr: 0x136C84, symSize: 0x88 } + - { offset: 0x1D5EAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellCMa', symObjAddr: 0xEC4, symBinAddr: 0x136D0C, symSize: 0x20 } + - { offset: 0x1D5EC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9configure3for6filteryAA7POIDataCSg_AA0D7FiltersVSgtFySo7UIImageCSgcfU_TA', symObjAddr: 0xF74, symBinAddr: 0x136D7C, symSize: 0x8 } + - { offset: 0x1D6031, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC10imagePlaceSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x135E48, symSize: 0x20 } + - { offset: 0x1D6091, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC10imagePlaceSo11UIImageViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x135E68, symSize: 0x14 } + - { offset: 0x1D60E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9placeNameSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x135E7C, symSize: 0x20 } + - { offset: 0x1D613C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9placeNameSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x135E9C, symSize: 0x14 } + - { offset: 0x1D618D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x135EB0, symSize: 0x20 } + - { offset: 0x1D61E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x135ED0, symSize: 0x14 } + - { offset: 0x1D6233, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9venueNameSo7UILabelCSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x135EE4, symSize: 0x20 } + - { offset: 0x1D6288, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9venueNameSo7UILabelCSgvsTo', symObjAddr: 0xBC, symBinAddr: 0x135F04, symSize: 0x14 } + - { offset: 0x1D62D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9floorNameSo7UILabelCSgvgTo', symObjAddr: 0xD0, symBinAddr: 0x135F18, symSize: 0x20 } + - { offset: 0x1D632E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9floorNameSo7UILabelCSgvsTo', symObjAddr: 0xF0, symBinAddr: 0x135F38, symSize: 0x14 } + - { offset: 0x1D637F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC16placeholderImageSo11UIImageViewCSgvgTo', symObjAddr: 0x104, symBinAddr: 0x135F4C, symSize: 0x20 } + - { offset: 0x1D63D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC16placeholderImageSo11UIImageViewCSgvsTo', symObjAddr: 0x124, symBinAddr: 0x135F6C, symSize: 0x14 } + - { offset: 0x1D6425, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC12awakeFromNibyyFTo', symObjAddr: 0x138, symBinAddr: 0x135F80, symSize: 0x3C } + - { offset: 0x1D64A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9configure3for6filteryAA7POIDataCSg_AA0D7FiltersVSgtF', symObjAddr: 0x174, symBinAddr: 0x135FBC, symSize: 0x2D4 } + - { offset: 0x1D65D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9configure3for6filteryAA7POIDataCSg_AA0D7FiltersVSgtFySo7UIImageCSgcfU_', symObjAddr: 0x448, symBinAddr: 0x136290, symSize: 0x188 } + - { offset: 0x1D66DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC34setPlaceDetailsForIndoorWayFinding5place6filteryAA7POIDataCSg_AA0D7FiltersVSgtF', symObjAddr: 0x5D0, symBinAddr: 0x136418, symSize: 0x32C } + - { offset: 0x1D67FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC15setPlaceDetails5placeyAA7POIDataCSg_tF', symObjAddr: 0x8FC, symBinAddr: 0x136744, symSize: 0x1E8 } + - { offset: 0x1D68AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC15prepareForReuseyyF', symObjAddr: 0xAE4, symBinAddr: 0x13692C, symSize: 0xA0 } + - { offset: 0x1D6918, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC15prepareForReuseyyFTo', symObjAddr: 0xB84, symBinAddr: 0x1369CC, symSize: 0x28 } + - { offset: 0x1D692C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0xBAC, symBinAddr: 0x1369F4, symSize: 0x10C } + - { offset: 0x1D696D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xCB8, symBinAddr: 0x136B00, symSize: 0x48 } + - { offset: 0x1D69A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xD00, symBinAddr: 0x136B48, symSize: 0xE4 } + - { offset: 0x1D69D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xDE4, symBinAddr: 0x136C2C, symSize: 0x28 } + - { offset: 0x1D69EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellCfD', symObjAddr: 0xE0C, symBinAddr: 0x136C54, symSize: 0x30 } + - { offset: 0x1D7061, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerCMa', symObjAddr: 0x1014, symBinAddr: 0x137D98, symSize: 0x20 } + - { offset: 0x1D70FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC10setBearing_7visible5usingySdSg_Sb17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0x0, symBinAddr: 0x136D84, symSize: 0xD4 } + - { offset: 0x1D7173, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC13setVisibility7visible5usingySb_17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0xD4, symBinAddr: 0x136E58, symSize: 0xC0 } + - { offset: 0x1D7225, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC20setBearingVisibility7visible5usingySb_17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0x194, symBinAddr: 0x136F18, symSize: 0x198 } + - { offset: 0x1D72BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC11setDotStyle5usingy17PenguinINRenderer10PIRendererCSg_tF', symObjAddr: 0x32C, symBinAddr: 0x1370B0, symSize: 0x278 } + - { offset: 0x1D7363, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC13setArrowStyle5usingy17PenguinINRenderer10PIRendererCSg_tF', symObjAddr: 0x5A4, symBinAddr: 0x137328, symSize: 0x218 } + - { offset: 0x1D745E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC6select5using8animatedy17PenguinINRenderer10PIRendererCSg_SbtF', symObjAddr: 0x7BC, symBinAddr: 0x137540, symSize: 0x358 } + - { offset: 0x1D7594, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC8deselect5usingy17PenguinINRenderer10PIRendererCSg_tF', symObjAddr: 0xB14, symBinAddr: 0x137898, symSize: 0x108 } + - { offset: 0x1D75C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC8setColor09indicatorH006strokeH0014accuracyCircleH05usingySo7UIColorC_A2J17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0xC1C, symBinAddr: 0x1379A0, symSize: 0x3C4 } + - { offset: 0x1D76AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerCfD', symObjAddr: 0xFE0, symBinAddr: 0x137D64, symSize: 0x34 } + - { offset: 0x1D76E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerCACycfc', symObjAddr: 0x1034, symBinAddr: 0x137DB8, symSize: 0xDC } + - { offset: 0x1D7AC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOMa', symObjAddr: 0x164, symBinAddr: 0x137E94, symSize: 0x10 } + - { offset: 0x1D7B5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSHAASQWb', symObjAddr: 0x4C4, symBinAddr: 0x1381F4, symSize: 0x4 } + - { offset: 0x1D7B72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOACSQAAWl', symObjAddr: 0x4C8, symBinAddr: 0x1381F8, symSize: 0x40 } + - { offset: 0x1D7B94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x174, symBinAddr: 0x137EA4, symSize: 0xC } + - { offset: 0x1D7BFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSHAASH9hashValueSivgTW', symObjAddr: 0x180, symBinAddr: 0x137EB0, symSize: 0xE0 } + - { offset: 0x1D7CA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x260, symBinAddr: 0x137F90, symSize: 0xBC } + - { offset: 0x1D7D0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x31C, symBinAddr: 0x13804C, symSize: 0xDC } + - { offset: 0x1D7DE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x3F8, symBinAddr: 0x138128, symSize: 0x2C } + - { offset: 0x1D7E0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x424, symBinAddr: 0x138154, symSize: 0xA0 } + - { offset: 0x1D7E3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x508, symBinAddr: 0x138238, symSize: 0x5C } + - { offset: 0x1D820E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOMa', symObjAddr: 0x164, symBinAddr: 0x138294, symSize: 0x10 } + - { offset: 0x1D8300, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSHAASQWb', symObjAddr: 0x824, symBinAddr: 0x138954, symSize: 0x4 } + - { offset: 0x1D8314, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOACSQAAWl', symObjAddr: 0x828, symBinAddr: 0x138958, symSize: 0x40 } + - { offset: 0x1D8363, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x580, symBinAddr: 0x1386B0, symSize: 0xC } + - { offset: 0x1D83CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSHAASH9hashValueSivgTW', symObjAddr: 0x58C, symBinAddr: 0x1386BC, symSize: 0xB4 } + - { offset: 0x1D846A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x640, symBinAddr: 0x138770, symSize: 0x90 } + - { offset: 0x1D84C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x6D0, symBinAddr: 0x138800, symSize: 0xB0 } + - { offset: 0x1D8578, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionO8isManualSbvg', symObjAddr: 0x174, symBinAddr: 0x1382A4, symSize: 0x164 } + - { offset: 0x1D8729, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionO16isTwoDimensionalSbvg', symObjAddr: 0x2D8, symBinAddr: 0x138408, symSize: 0x144 } + - { offset: 0x1D88D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionO18isThreeDimensionalSbvg', symObjAddr: 0x41C, symBinAddr: 0x13854C, symSize: 0x164 } + - { offset: 0x1D8AC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x780, symBinAddr: 0x1388B0, symSize: 0x2C } + - { offset: 0x1D8AEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x7AC, symBinAddr: 0x1388DC, symSize: 0x78 } + - { offset: 0x1D8B2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x868, symBinAddr: 0x138998, symSize: 0x5C } + - { offset: 0x1D8F0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12EdgesManagerC14sharedInstance33_1A4BCECDB650D7AA17333C6F73CF17CELLACSgvpZ', symObjAddr: 0x48, symBinAddr: 0x37A150, symSize: 0x0 } + - { offset: 0x1D8F1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12EdgesManagerCMa', symObjAddr: 0x24, symBinAddr: 0x1389F4, symSize: 0x20 } + - { offset: 0x1D92DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC05setupdE0012enableGoogleD0ySb_tF', symObjAddr: 0x0, symBinAddr: 0x138A14, symSize: 0x114 } + - { offset: 0x1D92FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC15_sharedInstance33_06CA1F9145C9A0D8436D32F3E461F428LLACSgvpZ', symObjAddr: 0x590, symBinAddr: 0x37A220, symSize: 0x0 } + - { offset: 0x1D9525, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerCMa', symObjAddr: 0x570, symBinAddr: 0x138F84, symSize: 0x20 } + - { offset: 0x1D96CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC05setupdE0012enableGoogleD0ySb_tF', symObjAddr: 0x0, symBinAddr: 0x138A14, symSize: 0x114 } + - { offset: 0x1D9815, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC5speak4textySSSg_tF', symObjAddr: 0x114, symBinAddr: 0x138B28, symSize: 0x1C0 } + - { offset: 0x1D99F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC4muteyyF', symObjAddr: 0x2D4, symBinAddr: 0x138CE8, symSize: 0x17C } + - { offset: 0x1D9B52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC6unmuteyyF', symObjAddr: 0x450, symBinAddr: 0x138E64, symSize: 0xF4 } + - { offset: 0x1D9C6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerCfD', symObjAddr: 0x544, symBinAddr: 0x138F58, symSize: 0x2C } + - { offset: 0x1DA044, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TagDisplayTypeOMa', symObjAddr: 0x178, symBinAddr: 0x138FA4, symSize: 0x10 } + - { offset: 0x1DA058, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TagDisplayTypeOSHAASQWb', symObjAddr: 0x188, symBinAddr: 0x138FB4, symSize: 0x4 } + - { offset: 0x1DA06C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TagDisplayTypeOACSQAAWl', symObjAddr: 0x18C, symBinAddr: 0x138FB8, symSize: 0x40 } + - { offset: 0x1DA400, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOMi', symObjAddr: 0x1C4, symBinAddr: 0x138FF8, symSize: 0x8 } + - { offset: 0x1DA418, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOMi', symObjAddr: 0x1C4, symBinAddr: 0x138FF8, symSize: 0x8 } + - { offset: 0x1DA42C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOMr', symObjAddr: 0x1CC, symBinAddr: 0x139000, symSize: 0x3E0 } + - { offset: 0x1DA440, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwCP', symObjAddr: 0x5AC, symBinAddr: 0x1393E0, symSize: 0x974 } + - { offset: 0x1DA454, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwxx', symObjAddr: 0xF20, symBinAddr: 0x139D54, symSize: 0x620 } + - { offset: 0x1DA468, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwcp', symObjAddr: 0x1540, symBinAddr: 0x13A374, symSize: 0x874 } + - { offset: 0x1DA47C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwca', symObjAddr: 0x1DB4, symBinAddr: 0x13ABE8, symSize: 0xB74 } + - { offset: 0x1DA490, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwtk', symObjAddr: 0x2928, symBinAddr: 0x13B75C, symSize: 0x874 } + - { offset: 0x1DA4A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwta', symObjAddr: 0x319C, symBinAddr: 0x13BFD0, symSize: 0xB74 } + - { offset: 0x1DA4B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwet', symObjAddr: 0x3D10, symBinAddr: 0x13CB44, symSize: 0x474 } + - { offset: 0x1DA4CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwst', symObjAddr: 0x4184, symBinAddr: 0x13CFB8, symSize: 0x4E0 } + - { offset: 0x1DA4E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwug', symObjAddr: 0x4664, symBinAddr: 0x13D498, symSize: 0x3E0 } + - { offset: 0x1DA4F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwui', symObjAddr: 0x4A48, symBinAddr: 0x13D878, symSize: 0x6EC } + - { offset: 0x1DA508, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOMa', symObjAddr: 0x5134, symBinAddr: 0x13DF64, symSize: 0xC } + - { offset: 0x1DA935, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateCMa', symObjAddr: 0xC4, symBinAddr: 0x13DFD8, symSize: 0x20 } + - { offset: 0x1DA9B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x5C, symBinAddr: 0x13DF70, symSize: 0x68 } + - { offset: 0x1DAA1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xE4, symBinAddr: 0x13DFF8, symSize: 0x54 } + - { offset: 0x1DAA67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateCfD', symObjAddr: 0x138, symBinAddr: 0x13E04C, symSize: 0x30 } + - { offset: 0x1DB59C, size: 0x8, addend: 0x0, symName: '_$ss13_parseInteger5ascii5radixq_Sgx_SitSyRzs010FixedWidthB0R_r0_lFSs_SuTg5', symObjAddr: 0x13A4, symBinAddr: 0x13F258, symSize: 0xFC } + - { offset: 0x1DB67B, size: 0x8, addend: 0x0, symName: '_$ss13_parseInteger5ascii5radixq_Sgx_SitSyRzs010FixedWidthB0R_r0_lFSS_SiTg5', symObjAddr: 0x14A0, symBinAddr: 0x13F354, symSize: 0xF0 } + - { offset: 0x1DB737, size: 0x8, addend: 0x0, symName: '_$ss13_parseInteger5ascii5radixq_Sgx_SitSyRzs010FixedWidthB0R_r0_lFADSRys5UInt8VGXEfU_Ss_SuTg5', symObjAddr: 0x1590, symBinAddr: 0x13F444, symSize: 0x284 } + - { offset: 0x1DB87B, size: 0x8, addend: 0x0, symName: '_$ss13_parseInteger5ascii5radixq_Sgx_SitSyRzs010FixedWidthB0R_r0_lFADSRys5UInt8VGXEfU_SS_SiTg5', symObjAddr: 0x1814, symBinAddr: 0x13F6C8, symSize: 0x284 } + - { offset: 0x1DB993, size: 0x8, addend: 0x0, symName: '_$sSS8_copyingyS2SFZ', symObjAddr: 0x1A98, symBinAddr: 0x13F94C, symSize: 0x50 } + - { offset: 0x1DB9AB, size: 0x8, addend: 0x0, symName: '_$sSlsEy11SubSequenceQzqd__cSXRd__5BoundQyd__5IndexRtzluigSS_s16PartialRangeFromVySSAEVGTgq5', symObjAddr: 0x1AE8, symBinAddr: 0x13F99C, symSize: 0x4C } + - { offset: 0x1DBA00, size: 0x8, addend: 0x0, symName: '_$sSS8_copyingySSSsFZ', symObjAddr: 0x1B34, symBinAddr: 0x13F9E8, symSize: 0x144 } + - { offset: 0x1DBA5A, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV19_uninitializedCount15minimumCapacityAByxGSi_SitcfCs5UInt8V_Tt1gq5', symObjAddr: 0x1C78, symBinAddr: 0x13FB2C, symSize: 0x68 } + - { offset: 0x1DBA92, size: 0x8, addend: 0x0, symName: '_$sSTsE21_copySequenceContents12initializing8IteratorQz_SitSry7ElementQzG_tFSs8UTF8ViewV_Tgq5', symObjAddr: 0x1CE0, symBinAddr: 0x13FB94, symSize: 0x21C } + - { offset: 0x1DBADF, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV27_slowEnsureMatchingEncodingySS5IndexVAEF', symObjAddr: 0x1EFC, symBinAddr: 0x13FDB0, symSize: 0x78 } + - { offset: 0x1DBB09, size: 0x8, addend: 0x0, symName: '_$ss17FixedWidthIntegerPsE_5radixxSgqd___SitcSyRd__lufcADSRys5UInt8VGXEfU_Su_SsTG5', symObjAddr: 0x1F74, symBinAddr: 0x13FE28, symSize: 0x27C } + - { offset: 0x1DBC5A, size: 0x8, addend: 0x0, symName: '_$ss17FixedWidthIntegerPsE_5radixxSgqd___SitcSyRd__lufcADSRys5UInt8VGXEfU_Su_SsTG5TA', symObjAddr: 0x2298, symBinAddr: 0x14014C, symSize: 0x18 } + - { offset: 0x1DBC6E, size: 0x8, addend: 0x0, symName: '_$sS2sSTsWl', symObjAddr: 0x22B0, symBinAddr: 0x140164, symSize: 0x40 } + - { offset: 0x1DBC98, size: 0x8, addend: 0x0, symName: '_$ss5SliceV32withContiguousStorageIfAvailableyqd__Sgqd__SRy7ElementQzGKXEKlFqd__AGKXEfU_SS8UTF8ViewV_SuSgTg5Tf4xnn_n', symObjAddr: 0x2BB0, symBinAddr: 0x140A20, symSize: 0x214 } + - { offset: 0x1DBD2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwxx', symObjAddr: 0x2DC8, symBinAddr: 0x140C38, symSize: 0x28 } + - { offset: 0x1DBD41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwca', symObjAddr: 0x2E2C, symBinAddr: 0x140C9C, symSize: 0x64 } + - { offset: 0x1DBD55, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_8, symObjAddr: 0x2E90, symBinAddr: 0x140D00, symSize: 0x14 } + - { offset: 0x1DBD69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwta', symObjAddr: 0x2EA4, symBinAddr: 0x140D14, symSize: 0x44 } + - { offset: 0x1DBD7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwet', symObjAddr: 0x2EE8, symBinAddr: 0x140D58, symSize: 0x48 } + - { offset: 0x1DBD91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwst', symObjAddr: 0x2F30, symBinAddr: 0x140DA0, symSize: 0x40 } + - { offset: 0x1DBDA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVMa', symObjAddr: 0x2F70, symBinAddr: 0x140DE0, symSize: 0x10 } + - { offset: 0x1DBDB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwxx', symObjAddr: 0x2FAC, symBinAddr: 0x140DF0, symSize: 0x30 } + - { offset: 0x1DBDCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwcp', symObjAddr: 0x2FDC, symBinAddr: 0x140E20, symSize: 0x5C } + - { offset: 0x1DBDE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwca', symObjAddr: 0x3038, symBinAddr: 0x140E7C, symSize: 0x94 } + - { offset: 0x1DBDF5, size: 0x8, addend: 0x0, symName: ___swift_memcpy49_8, symObjAddr: 0x30CC, symBinAddr: 0x140F10, symSize: 0x1C } + - { offset: 0x1DBE09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwta', symObjAddr: 0x30E8, symBinAddr: 0x140F2C, symSize: 0x5C } + - { offset: 0x1DBE1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwet', symObjAddr: 0x3144, symBinAddr: 0x140F88, symSize: 0x48 } + - { offset: 0x1DBE31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwst', symObjAddr: 0x318C, symBinAddr: 0x140FD0, symSize: 0x50 } + - { offset: 0x1DBE45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVMa', symObjAddr: 0x31DC, symBinAddr: 0x141020, symSize: 0x10 } + - { offset: 0x1DBE59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAFs0F3KeyAAWl', symObjAddr: 0x3210, symBinAddr: 0x141030, symSize: 0x40 } + - { offset: 0x1DBE6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVAESeAAWl', symObjAddr: 0x3270, symBinAddr: 0x141070, symSize: 0x40 } + - { offset: 0x1DBE81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVAESEAAWl', symObjAddr: 0x32B0, symBinAddr: 0x1410B0, symSize: 0x40 } + - { offset: 0x1DBE95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs0H3KeyAAWl', symObjAddr: 0x32F0, symBinAddr: 0x1410F0, symSize: 0x40 } + - { offset: 0x1DBEA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOMa', symObjAddr: 0x3494, symBinAddr: 0x141130, symSize: 0x10 } + - { offset: 0x1DBEBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOMa', symObjAddr: 0x34C4, symBinAddr: 0x141140, symSize: 0x10 } + - { offset: 0x1DBED1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwxx', symObjAddr: 0x34D8, symBinAddr: 0x141154, symSize: 0x28 } + - { offset: 0x1DBEE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwca', symObjAddr: 0x3534, symBinAddr: 0x1411B0, symSize: 0x5C } + - { offset: 0x1DBEF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwta', symObjAddr: 0x359C, symBinAddr: 0x14120C, symSize: 0x3C } + - { offset: 0x1DBF0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwet', symObjAddr: 0x35D8, symBinAddr: 0x141248, symSize: 0x48 } + - { offset: 0x1DBF21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwst', symObjAddr: 0x3620, symBinAddr: 0x141290, symSize: 0x3C } + - { offset: 0x1DBF35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVMa', symObjAddr: 0x365C, symBinAddr: 0x1412CC, symSize: 0x10 } + - { offset: 0x1DBF49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOSHAASQWb', symObjAddr: 0x366C, symBinAddr: 0x1412DC, symSize: 0x4 } + - { offset: 0x1DBF5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAFSQAAWl', symObjAddr: 0x3670, symBinAddr: 0x1412E0, symSize: 0x40 } + - { offset: 0x1DBF71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOSHAASQWb', symObjAddr: 0x36B0, symBinAddr: 0x141320, symSize: 0x4 } + - { offset: 0x1DBF85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHSQAAWl', symObjAddr: 0x36B4, symBinAddr: 0x141324, symSize: 0x40 } + - { offset: 0x1DBF99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x36F4, symBinAddr: 0x141364, symSize: 0x4 } + - { offset: 0x1DBFAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x36F8, symBinAddr: 0x141368, symSize: 0x40 } + - { offset: 0x1DBFC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x3738, symBinAddr: 0x1413A8, symSize: 0x4 } + - { offset: 0x1DBFD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x373C, symBinAddr: 0x1413AC, symSize: 0x40 } + - { offset: 0x1DBFE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x377C, symBinAddr: 0x1413EC, symSize: 0x4 } + - { offset: 0x1DBFFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x3780, symBinAddr: 0x1413F0, symSize: 0x40 } + - { offset: 0x1DC011, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x37C0, symBinAddr: 0x141430, symSize: 0x4 } + - { offset: 0x1DC025, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x37C4, symBinAddr: 0x141434, symSize: 0x40 } + - { offset: 0x1DC039, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOAGs0G3KeyAAWl', symObjAddr: 0x3804, symBinAddr: 0x141474, symSize: 0x40 } + - { offset: 0x1DC04D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVAESeAAWl', symObjAddr: 0x3844, symBinAddr: 0x1414B4, symSize: 0x40 } + - { offset: 0x1DC061, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVAESeAAWl', symObjAddr: 0x38C8, symBinAddr: 0x1414F4, symSize: 0x40 } + - { offset: 0x1DC075, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVAESEAAWl', symObjAddr: 0x397C, symBinAddr: 0x1415A8, symSize: 0x40 } + - { offset: 0x1DC089, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVAESEAAWl', symObjAddr: 0x3A30, symBinAddr: 0x14165C, symSize: 0x40 } + - { offset: 0x1DC09D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOMa', symObjAddr: 0x3A74, symBinAddr: 0x14169C, symSize: 0x10 } + - { offset: 0x1DC0B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwxx', symObjAddr: 0x3AB8, symBinAddr: 0x1416E0, symSize: 0x8 } + - { offset: 0x1DC0C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwca', symObjAddr: 0x3AC0, symBinAddr: 0x1416E8, symSize: 0x48 } + - { offset: 0x1DC0D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwta', symObjAddr: 0x3B08, symBinAddr: 0x141730, symSize: 0x38 } + - { offset: 0x1DC0ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwet', symObjAddr: 0x3B40, symBinAddr: 0x141768, symSize: 0x48 } + - { offset: 0x1DC101, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwst', symObjAddr: 0x3B88, symBinAddr: 0x1417B0, symSize: 0x40 } + - { offset: 0x1DC115, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVMa', symObjAddr: 0x3BC8, symBinAddr: 0x1417F0, symSize: 0x10 } + - { offset: 0x1DC129, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSHAASQWb', symObjAddr: 0x3BD8, symBinAddr: 0x141800, symSize: 0x4 } + - { offset: 0x1DC13D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOAGSQAAWl', symObjAddr: 0x3BDC, symBinAddr: 0x141804, symSize: 0x40 } + - { offset: 0x1DC151, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x3C1C, symBinAddr: 0x141844, symSize: 0x4 } + - { offset: 0x1DC165, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOAGs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x3C20, symBinAddr: 0x141848, symSize: 0x40 } + - { offset: 0x1DC179, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x3C60, symBinAddr: 0x141888, symSize: 0x4 } + - { offset: 0x1DC18D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOAGs23CustomStringConvertibleAAWl', symObjAddr: 0x3C64, symBinAddr: 0x14188C, symSize: 0x40 } + - { offset: 0x1DC1A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs0H3KeyAAWl', symObjAddr: 0x3CA4, symBinAddr: 0x1418CC, symSize: 0x40 } + - { offset: 0x1DC1B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOMa', symObjAddr: 0x3E28, symBinAddr: 0x14190C, symSize: 0x10 } + - { offset: 0x1DC1C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOSHAASQWb', symObjAddr: 0x3E38, symBinAddr: 0x14191C, symSize: 0x4 } + - { offset: 0x1DC1DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHSQAAWl', symObjAddr: 0x3E3C, symBinAddr: 0x141920, symSize: 0x40 } + - { offset: 0x1DC1F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x3E7C, symBinAddr: 0x141960, symSize: 0x4 } + - { offset: 0x1DC205, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x3E80, symBinAddr: 0x141964, symSize: 0x40 } + - { offset: 0x1DC219, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x3EC0, symBinAddr: 0x1419A4, symSize: 0x4 } + - { offset: 0x1DC22D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x3EC4, symBinAddr: 0x1419A8, symSize: 0x40 } + - { offset: 0x1DC273, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x190, symBinAddr: 0x13E20C, symSize: 0x84 } + - { offset: 0x1DC362, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x214, symBinAddr: 0x13E290, symSize: 0x74 } + - { offset: 0x1DC416, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x288, symBinAddr: 0x13E304, symSize: 0x48 } + - { offset: 0x1DC488, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x2D0, symBinAddr: 0x13E34C, symSize: 0x70 } + - { offset: 0x1DC535, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs28CustomDebugStringConvertibleAAsAHP16debugDescriptionSSvgTW', symObjAddr: 0x49C, symBinAddr: 0x13E50C, symSize: 0x28 } + - { offset: 0x1DC551, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs23CustomStringConvertibleAAsAHP11descriptionSSvgTW', symObjAddr: 0x4C4, symBinAddr: 0x13E534, symSize: 0x28 } + - { offset: 0x1DC59D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0xEC0, symBinAddr: 0x13EE64, symSize: 0x28 } + - { offset: 0x1DC5B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0xEE8, symBinAddr: 0x13EE8C, symSize: 0x28 } + - { offset: 0x1DC5DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x1094, symBinAddr: 0x13F020, symSize: 0x28 } + - { offset: 0x1DC5F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x10BC, symBinAddr: 0x13F048, symSize: 0x28 } + - { offset: 0x1DC619, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x1308, symBinAddr: 0x13F1BC, symSize: 0x28 } + - { offset: 0x1DC635, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x1330, symBinAddr: 0x13F1E4, symSize: 0x28 } + - { offset: 0x1DC669, size: 0x8, addend: 0x0, symName: '_$sSKsE6suffixy11SubSequenceQzSiFSS_Tg5Tf4ng_n', symObjAddr: 0x21F0, symBinAddr: 0x1400A4, symSize: 0xA8 } + - { offset: 0x1DC725, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x0, symBinAddr: 0x13E07C, symSize: 0x190 } + - { offset: 0x1DC7A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSYAASY8rawValuexSg03RawJ0Qz_tcfCTW', symObjAddr: 0x340, symBinAddr: 0x13E3BC, symSize: 0x70 } + - { offset: 0x1DC7F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSYAASY8rawValue03RawJ0QzvgTW', symObjAddr: 0x3B0, symBinAddr: 0x13E42C, symSize: 0x38 } + - { offset: 0x1DC837, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs0G3KeyAAsAHP11stringValueSSvgTW', symObjAddr: 0x3E8, symBinAddr: 0x13E464, symSize: 0x34 } + - { offset: 0x1DC89C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs0G3KeyAAsAHP11stringValuexSgSS_tcfCTW', symObjAddr: 0x41C, symBinAddr: 0x13E498, symSize: 0x74 } + - { offset: 0x1DC913, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x4EC, symBinAddr: 0x13E55C, symSize: 0x28 } + - { offset: 0x1DC93C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x514, symBinAddr: 0x13E584, symSize: 0x18 } + - { offset: 0x1DC977, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV11fillOpacitySdvg', symObjAddr: 0x52C, symBinAddr: 0x13E59C, symSize: 0x21C } + - { offset: 0x1DCAEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV13borderOpacitySdvg', symObjAddr: 0x748, symBinAddr: 0x13E7B8, symSize: 0x21C } + - { offset: 0x1DCC61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV6encode2toys7Encoder_p_tKF', symObjAddr: 0x964, symBinAddr: 0x13E9D4, symSize: 0x168 } + - { offset: 0x1DCC92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV6encode2toys7Encoder_p_tKF', symObjAddr: 0xACC, symBinAddr: 0x13EB3C, symSize: 0x13C } + - { offset: 0x1DCCC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV6encode2toys7Encoder_p_tKF', symObjAddr: 0xC08, symBinAddr: 0x13EC78, symSize: 0x13C } + - { offset: 0x1DCD17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0xE04, symBinAddr: 0x13EDB4, symSize: 0x80 } + - { offset: 0x1DCD3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0xE84, symBinAddr: 0x13EE34, symSize: 0x24 } + - { offset: 0x1DCD68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP8intValuexSgSi_tcfCTW', symObjAddr: 0xEB4, symBinAddr: 0x13EE58, symSize: 0xC } + - { offset: 0x1DCD8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xF10, symBinAddr: 0x13EEB4, symSize: 0x4C } + - { offset: 0x1DCDB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xF5C, symBinAddr: 0x13EF00, symSize: 0x14 } + - { offset: 0x1DCDE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0xF70, symBinAddr: 0x13EF14, symSize: 0x38 } + - { offset: 0x1DCE35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0xFA8, symBinAddr: 0x13EF4C, symSize: 0xD4 } + - { offset: 0x1DCEB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x10E4, symBinAddr: 0x13F070, symSize: 0x2C } + - { offset: 0x1DCEDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1110, symBinAddr: 0x13F09C, symSize: 0x1C } + - { offset: 0x1DCF16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x11F8, symBinAddr: 0x13F0B8, symSize: 0x30 } + - { offset: 0x1DCF5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1228, symBinAddr: 0x13F0E8, symSize: 0xD4 } + - { offset: 0x1DCFDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x1358, symBinAddr: 0x13F20C, symSize: 0x30 } + - { offset: 0x1DD006, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1388, symBinAddr: 0x13F23C, symSize: 0x1C } + - { offset: 0x1DD049, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x2334, symBinAddr: 0x1401A4, symSize: 0x1D8 } + - { offset: 0x1DD06C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x250C, symBinAddr: 0x14037C, symSize: 0x170 } + - { offset: 0x1DD123, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x267C, symBinAddr: 0x1404EC, symSize: 0x274 } + - { offset: 0x1DD146, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x28F0, symBinAddr: 0x140760, symSize: 0x154 } + - { offset: 0x1DD169, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x2A44, symBinAddr: 0x1408B4, symSize: 0x16C } + - { offset: 0x1DD5AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PIAnalyticsAPIClientC14sharedInstance33_DB679343185B7764DCFBEC6E7A080E97LLACSgvpZ', symObjAddr: 0x210, symBinAddr: 0x37A520, symSize: 0x0 } + - { offset: 0x1DD5FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PIAnalyticsAPIClientCMa', symObjAddr: 0x10, symBinAddr: 0x141A08, symSize: 0x20 } + - { offset: 0x1DD6C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PIAnalyticsAPIClientC20trackNavigationEvent010navigationH04typeyAA0gH4DataV_AA0gH4TypeOtFTf4nnd_n', symObjAddr: 0x30, symBinAddr: 0x141A28, symSize: 0x1E0 } + - { offset: 0x1DDB8D, size: 0x8, addend: 0x0, symName: '_$sSo23UIActivityIndicatorViewC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x0, symBinAddr: 0x141C08, symSize: 0x8 } + - { offset: 0x1DDBA5, size: 0x8, addend: 0x0, symName: '_$sSo23UIActivityIndicatorViewC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x0, symBinAddr: 0x141C08, symSize: 0x8 } + - { offset: 0x1DDBC1, size: 0x8, addend: 0x0, symName: '_$sSo23UIActivityIndicatorViewC8PenNavUIE15colorIdentifierSivsTo', symObjAddr: 0x8, symBinAddr: 0x141C10, symSize: 0x30 } + - { offset: 0x1DDBF9, size: 0x8, addend: 0x0, symName: '_$sSo23UIActivityIndicatorViewC8PenNavUIE15colorIdentifierSivs', symObjAddr: 0x38, symBinAddr: 0x141C40, symSize: 0x110 } + - { offset: 0x1DE9FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10makeBounds3svg4auto3forAA9LayerTreeO4RectVAA3DOMO3SVGC_AkC7VariantOtKF', symObjAddr: 0x1FD4, symBinAddr: 0x143CE0, symSize: 0x21C } + - { offset: 0x1DED09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantV11appendPaths33_8F409FCBEB799BD4B2CB8F30218B4645LL_4fromySayAA0D8RendererV10SymbolPathVG_AA9LayerTreeO4RectVtF', symObjAddr: 0x21F0, symBinAddr: 0x143EFC, symSize: 0x7C4 } + - { offset: 0x1DFA33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV14getSymbolPaths3for3ctmSayAC0G4PathVGAA9LayerTreeO0L0C_AK9TransformO6MatrixVtFZ', symObjAddr: 0x29B4, symBinAddr: 0x1446C0, symSize: 0xAD4 } + - { offset: 0x1E069D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwxx', symObjAddr: 0x3664, symBinAddr: 0x1452F4, symSize: 0x28 } + - { offset: 0x1E06B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwcp', symObjAddr: 0x368C, symBinAddr: 0x14531C, symSize: 0xB4 } + - { offset: 0x1E06C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwca', symObjAddr: 0x3740, symBinAddr: 0x1453D0, symSize: 0x13C } + - { offset: 0x1E06D9, size: 0x8, addend: 0x0, symName: ___swift_memcpy240_8, symObjAddr: 0x387C, symBinAddr: 0x14550C, symSize: 0x44 } + - { offset: 0x1E06ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwta', symObjAddr: 0x38C0, symBinAddr: 0x145550, symSize: 0x114 } + - { offset: 0x1E0701, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwet', symObjAddr: 0x39D4, symBinAddr: 0x145664, symSize: 0x48 } + - { offset: 0x1E0715, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwst', symObjAddr: 0x3A1C, symBinAddr: 0x1456AC, symSize: 0x7C } + - { offset: 0x1E0729, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVMa', symObjAddr: 0x3A98, symBinAddr: 0x145728, symSize: 0x10 } + - { offset: 0x1E09FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVWOc', symObjAddr: 0x47B8, symBinAddr: 0x1463F4, symSize: 0x34 } + - { offset: 0x1E0A15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVWOh', symObjAddr: 0x481C, symBinAddr: 0x146428, symSize: 0x2C } + - { offset: 0x1E0A29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorVAEsAdAWl', symObjAddr: 0x4848, symBinAddr: 0x146454, symSize: 0x40 } + - { offset: 0x1E0A3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV11printInsets3top4left6bottom5right7variantySd_S3dAC7VariantOtFZTf4nnnnnd_n', symObjAddr: 0x4888, symBinAddr: 0x146494, symSize: 0x3F8 } + - { offset: 0x1E0D03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVSgWOh', symObjAddr: 0x4D94, symBinAddr: 0x146988, symSize: 0x40 } + - { offset: 0x1E0D17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVWOc', symObjAddr: 0x4EA0, symBinAddr: 0x1469C8, symSize: 0x34 } + - { offset: 0x1E0D2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ContainerError33_8F409FCBEB799BD4B2CB8F30218B4645LLOADs0E0AAWl', symObjAddr: 0x4ED4, symBinAddr: 0x1469FC, symSize: 0x40 } + - { offset: 0x1E0D3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10SymbolPathVwxx', symObjAddr: 0x5028, symBinAddr: 0x146A40, symSize: 0x28 } + - { offset: 0x1E0D53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10SymbolPathVwca', symObjAddr: 0x508C, symBinAddr: 0x146AA4, symSize: 0x64 } + - { offset: 0x1E0D67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10SymbolPathVwta', symObjAddr: 0x5104, symBinAddr: 0x146B08, symSize: 0x44 } + - { offset: 0x1E0D7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10SymbolPathVMa', symObjAddr: 0x51D0, symBinAddr: 0x146B4C, symSize: 0x10 } + - { offset: 0x1E0D8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ContainerError33_8F409FCBEB799BD4B2CB8F30218B4645LLOMa', symObjAddr: 0x52E8, symBinAddr: 0x146B5C, symSize: 0x10 } + - { offset: 0x1E0DA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorVwet', symObjAddr: 0x5338, symBinAddr: 0x146B6C, symSize: 0x5C } + - { offset: 0x1E0DB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorVwst', symObjAddr: 0x5394, symBinAddr: 0x146BC8, symSize: 0x50 } + - { offset: 0x1E0DCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorVMa', symObjAddr: 0x53E4, symBinAddr: 0x146C18, symSize: 0x10 } + - { offset: 0x1E0DDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwxx', symObjAddr: 0x53F4, symBinAddr: 0x146C28, symSize: 0x68 } + - { offset: 0x1E0DF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwcp', symObjAddr: 0x545C, symBinAddr: 0x146C90, symSize: 0xB4 } + - { offset: 0x1E0E07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwca', symObjAddr: 0x5510, symBinAddr: 0x146D44, symSize: 0x11C } + - { offset: 0x1E0E1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwta', symObjAddr: 0x5648, symBinAddr: 0x146E60, symSize: 0x9C } + - { offset: 0x1E0E2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwet', symObjAddr: 0x56E4, symBinAddr: 0x146EFC, symSize: 0x48 } + - { offset: 0x1E0E43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwst', symObjAddr: 0x572C, symBinAddr: 0x146F44, symSize: 0x54 } + - { offset: 0x1E0E57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVMa', symObjAddr: 0x5780, symBinAddr: 0x146F98, symSize: 0x10 } + - { offset: 0x1E0E6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AAsADPWb', symObjAddr: 0x5790, symBinAddr: 0x146FA8, symSize: 0x4 } + - { offset: 0x1E0E7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwxx', symObjAddr: 0x5798, symBinAddr: 0x146FB0, symSize: 0x30 } + - { offset: 0x1E0E93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwca', symObjAddr: 0x5814, symBinAddr: 0x14702C, symSize: 0x74 } + - { offset: 0x1E0EA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwta', symObjAddr: 0x5888, symBinAddr: 0x1470A0, symSize: 0x4C } + - { offset: 0x1E0EBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwet', symObjAddr: 0x58D4, symBinAddr: 0x1470EC, symSize: 0x48 } + - { offset: 0x1E0ECF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwst', symObjAddr: 0x591C, symBinAddr: 0x147134, symSize: 0x40 } + - { offset: 0x1E0EE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVMa', symObjAddr: 0x595C, symBinAddr: 0x147174, symSize: 0x10 } + - { offset: 0x1E0EF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV8ContentsVMa', symObjAddr: 0x596C, symBinAddr: 0x147184, symSize: 0x10 } + - { offset: 0x1E0F0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV5GuideVMa', symObjAddr: 0x597C, symBinAddr: 0x147194, symSize: 0x10 } + - { offset: 0x1E1482, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV7options6insets0G10Ultralight0G5Black9precisionAcA3SVGC7OptionsV_AA11CommandLineO6InsetsVA2PSitcfC', symObjAddr: 0x0, symBinAddr: 0x141D50, symSize: 0x178 } + - { offset: 0x1E1551, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AafGP13failureReasonSSSgvgTW', symObjAddr: 0x34B4, symBinAddr: 0x1451C0, symSize: 0x4 } + - { offset: 0x1E156D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AafGP18recoverySuggestionSSSgvgTW', symObjAddr: 0x34B8, symBinAddr: 0x1451C4, symSize: 0x4 } + - { offset: 0x1E1589, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AafGP10helpAnchorSSSgvgTW', symObjAddr: 0x34BC, symBinAddr: 0x1451C8, symSize: 0x4 } + - { offset: 0x1E1607, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV6render7regular10ultralight5blackSS10Foundation3URLV_AJSgAKtKF', symObjAddr: 0x178, symBinAddr: 0x141EC8, symSize: 0x508 } + - { offset: 0x1E18EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV6render7default10ultralight5blackSSAA3DOMO3SVGC_AKSgALtKF', symObjAddr: 0x6C4, symBinAddr: 0x1423D0, symSize: 0x138C } + - { offset: 0x1E39F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV20makeSymbolStyleSheet4fromAA3DOMO0hI0VAI_tF', symObjAddr: 0x1A50, symBinAddr: 0x14375C, symSize: 0x584 } + - { offset: 0x1E3DD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AafGP16errorDescriptionSSSgvgTW', symObjAddr: 0x3488, symBinAddr: 0x145194, symSize: 0x2C } + - { offset: 0x1E3DED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV5GuideV1xSfvs', symObjAddr: 0x34C0, symBinAddr: 0x1451CC, symSize: 0x128 } + - { offset: 0x1E3F18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV20containsAcceptedNameySbSSSgFZTf4nd_n', symObjAddr: 0x3AFC, symBinAddr: 0x145738, symSize: 0x16C } + - { offset: 0x1E3F91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantV3svg4kindAeA3DOMO3SVGC_SStKcfCTf4nnd_n', symObjAddr: 0x3C68, symBinAddr: 0x1458A4, symSize: 0x9B4 } + - { offset: 0x1E4A04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV3svgAcA3DOMO3SVGC_tKcfCTf4nd_n', symObjAddr: 0x461C, symBinAddr: 0x146258, symSize: 0x19C } + - { offset: 0x1E4A7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantV6boundsAA9LayerTreeO4RectVvgTf4x_n', symObjAddr: 0x4C80, symBinAddr: 0x14688C, symSize: 0xFC } + - { offset: 0x1E4F36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwxx', symObjAddr: 0x2C, symBinAddr: 0x1471BC, symSize: 0x8 } + - { offset: 0x1E4F4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwcp', symObjAddr: 0x34, symBinAddr: 0x1471C4, symSize: 0xA4 } + - { offset: 0x1E4F5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwca', symObjAddr: 0xD8, symBinAddr: 0x147268, symSize: 0xCC } + - { offset: 0x1E4F72, size: 0x8, addend: 0x0, symName: ___swift_memcpy137_8, symObjAddr: 0x1A4, symBinAddr: 0x147334, symSize: 0x34 } + - { offset: 0x1E4F86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwta', symObjAddr: 0x1D8, symBinAddr: 0x147368, symSize: 0xAC } + - { offset: 0x1E4F9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwet', symObjAddr: 0x284, symBinAddr: 0x147414, symSize: 0x5C } + - { offset: 0x1E4FAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwst', symObjAddr: 0x2E0, symBinAddr: 0x147470, symSize: 0x78 } + - { offset: 0x1E4FC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVMa', symObjAddr: 0x358, symBinAddr: 0x1474E8, symSize: 0x10 } + - { offset: 0x1E4FD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVwca', symObjAddr: 0x3A4, symBinAddr: 0x14752C, symSize: 0x40 } + - { offset: 0x1E4FEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVwta', symObjAddr: 0x3F0, symBinAddr: 0x14756C, symSize: 0x38 } + - { offset: 0x1E4FFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVMa', symObjAddr: 0x4D4, symBinAddr: 0x1475A4, symSize: 0x10 } + - { offset: 0x1E53D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs0I3KeyAAWl', symObjAddr: 0x102C, symBinAddr: 0x147EE0, symSize: 0x40 } + - { offset: 0x1E53ED, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI9VenueGateVGMa', symObjAddr: 0x108C, symBinAddr: 0x147F20, symSize: 0x50 } + - { offset: 0x1E5401, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVACSeAAWl', symObjAddr: 0x10DC, symBinAddr: 0x147F70, symSize: 0x40 } + - { offset: 0x1E5415, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVACSEAAWl', symObjAddr: 0x1180, symBinAddr: 0x148014, symSize: 0x40 } + - { offset: 0x1E5429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs0F3KeyAAWl', symObjAddr: 0x1C98, symBinAddr: 0x148B2C, symSize: 0x40 } + - { offset: 0x1E544B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOMa', symObjAddr: 0x1F4C, symBinAddr: 0x148BAC, symSize: 0x10 } + - { offset: 0x1E545F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOMa', symObjAddr: 0x20B4, symBinAddr: 0x148BBC, symSize: 0x10 } + - { offset: 0x1E5473, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOSHAASQWb', symObjAddr: 0x20C4, symBinAddr: 0x148BCC, symSize: 0x4 } + - { offset: 0x1E5487, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFSQAAWl', symObjAddr: 0x20C8, symBinAddr: 0x148BD0, symSize: 0x40 } + - { offset: 0x1E549B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOSHAASQWb', symObjAddr: 0x2108, symBinAddr: 0x148C10, symSize: 0x4 } + - { offset: 0x1E54AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFSQAAWl', symObjAddr: 0x210C, symBinAddr: 0x148C14, symSize: 0x40 } + - { offset: 0x1E54C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x214C, symBinAddr: 0x148C54, symSize: 0x4 } + - { offset: 0x1E54D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2150, symBinAddr: 0x148C58, symSize: 0x40 } + - { offset: 0x1E54EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x2190, symBinAddr: 0x148C98, symSize: 0x4 } + - { offset: 0x1E54FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x2194, symBinAddr: 0x148C9C, symSize: 0x40 } + - { offset: 0x1E5513, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0I3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x21D4, symBinAddr: 0x148CDC, symSize: 0x4 } + - { offset: 0x1E5527, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x21D8, symBinAddr: 0x148CE0, symSize: 0x40 } + - { offset: 0x1E553B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0I3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x2218, symBinAddr: 0x148D20, symSize: 0x4 } + - { offset: 0x1E554F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x221C, symBinAddr: 0x148D24, symSize: 0x40 } + - { offset: 0x1E5592, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x81C, symBinAddr: 0x147810, symSize: 0x28 } + - { offset: 0x1E55AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x844, symBinAddr: 0x147838, symSize: 0x28 } + - { offset: 0x1E55DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0xD7C, symBinAddr: 0x147C98, symSize: 0x28 } + - { offset: 0x1E55FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0xDA4, symBinAddr: 0x147CC0, symSize: 0x28 } + - { offset: 0x1E5618, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV6encode2toys7Encoder_p_tKF', symObjAddr: 0x4E4, symBinAddr: 0x1475B4, symSize: 0x158 } + - { offset: 0x1E566C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0I3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x700, symBinAddr: 0x14770C, symSize: 0x30 } + - { offset: 0x1E56B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0I3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x730, symBinAddr: 0x14773C, symSize: 0xD4 } + - { offset: 0x1E5738, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x86C, symBinAddr: 0x147860, symSize: 0x30 } + - { offset: 0x1E5761, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x89C, symBinAddr: 0x147890, symSize: 0x1C } + - { offset: 0x1E5775, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLO11stringValueSSvg', symObjAddr: 0x8B8, symBinAddr: 0x1478AC, symSize: 0x128 } + - { offset: 0x1E57AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV6encode2toys7Encoder_p_tKF', symObjAddr: 0x9E0, symBinAddr: 0x1479D4, symSize: 0x298 } + - { offset: 0x1E57EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0xD38, symBinAddr: 0x147C6C, symSize: 0x8 } + - { offset: 0x1E5809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0xD40, symBinAddr: 0x147C74, symSize: 0x24 } + - { offset: 0x1E5845, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xDCC, symBinAddr: 0x147CE8, symSize: 0x58 } + - { offset: 0x1E586E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xE24, symBinAddr: 0x147D40, symSize: 0x14 } + - { offset: 0x1E5882, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0xE38, symBinAddr: 0x147D54, symSize: 0x18C } + - { offset: 0x1E58A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x11C0, symBinAddr: 0x148054, symSize: 0x318 } + - { offset: 0x1E5A66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x14D8, symBinAddr: 0x14836C, symSize: 0x7C0 } + - { offset: 0x1E5E36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOMa', symObjAddr: 0xE8, symBinAddr: 0x148D68, symSize: 0x10 } + - { offset: 0x1E5E4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixV12concatenatedyA2GF', symObjAddr: 0xF8, symBinAddr: 0x148D78, symSize: 0x60 } + - { offset: 0x1E5E86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixV12concatenatedyA2GF', symObjAddr: 0xF8, symBinAddr: 0x148D78, symSize: 0x60 } + - { offset: 0x1E6042, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSHAASQWb', symObjAddr: 0x48C, symBinAddr: 0x14910C, symSize: 0x4 } + - { offset: 0x1E6056, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOAESQAAWl', symObjAddr: 0x490, symBinAddr: 0x149110, symSize: 0x40 } + - { offset: 0x1E606A, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_4, symObjAddr: 0x664, symBinAddr: 0x1492E4, symSize: 0x14 } + - { offset: 0x1E607E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVwet', symObjAddr: 0x678, symBinAddr: 0x1492F8, symSize: 0x20 } + - { offset: 0x1E6092, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVwst', symObjAddr: 0x698, symBinAddr: 0x149318, symSize: 0x2C } + - { offset: 0x1E60A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVMa', symObjAddr: 0x6C4, symBinAddr: 0x149344, symSize: 0x10 } + - { offset: 0x1E60BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSHAASQWb', symObjAddr: 0x6D4, symBinAddr: 0x149354, symSize: 0x4 } + - { offset: 0x1E60CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVAGSQAAWl', symObjAddr: 0x6D8, symBinAddr: 0x149358, symSize: 0x40 } + - { offset: 0x1E6123, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x31C, symBinAddr: 0x148F9C, symSize: 0x38 } + - { offset: 0x1E618E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x40C, symBinAddr: 0x14908C, symSize: 0x5C } + - { offset: 0x1E61CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixV4hash4intoys6HasherVz_tF', symObjAddr: 0x158, symBinAddr: 0x148DD8, symSize: 0xA4 } + - { offset: 0x1E6308, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO4hash4intoys6HasherVz_tF', symObjAddr: 0x1FC, symBinAddr: 0x148E7C, symSize: 0xE0 } + - { offset: 0x1E6488, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSHAASH9hashValueSivgTW', symObjAddr: 0x2DC, symBinAddr: 0x148F5C, symSize: 0x3C } + - { offset: 0x1E6505, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x318, symBinAddr: 0x148F98, symSize: 0x4 } + - { offset: 0x1E6541, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x354, symBinAddr: 0x148FD4, symSize: 0x48 } + - { offset: 0x1E6588, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSHAASH9hashValueSivgTW', symObjAddr: 0x39C, symBinAddr: 0x14901C, symSize: 0x60 } + - { offset: 0x1E6607, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x3FC, symBinAddr: 0x14907C, symSize: 0x10 } + - { offset: 0x1E662E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x468, symBinAddr: 0x1490E8, symSize: 0x24 } + - { offset: 0x1E6657, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixV2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x4D0, symBinAddr: 0x149150, symSize: 0x6C } + - { offset: 0x1E6687, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x53C, symBinAddr: 0x1491BC, symSize: 0x128 } + - { offset: 0x1E6A78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOMa', symObjAddr: 0x168, symBinAddr: 0x149398, symSize: 0x10 } + - { offset: 0x1E6A8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x178, symBinAddr: 0x1493A8, symSize: 0x4 } + - { offset: 0x1E6AA0, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI20FloorSelectorSectionOGSayxGSlsWl', symObjAddr: 0x17C, symBinAddr: 0x1493AC, symSize: 0x44 } + - { offset: 0x1E6AB4, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI20FloorSelectorSectionOGMa', symObjAddr: 0x1C0, symBinAddr: 0x1493F0, symSize: 0x50 } + - { offset: 0x1E6B43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOSHAASQWb', symObjAddr: 0x338, symBinAddr: 0x149498, symSize: 0x4 } + - { offset: 0x1E6B57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOACSQAAWl', symObjAddr: 0x33C, symBinAddr: 0x14949C, symSize: 0x40 } + - { offset: 0x1E6BA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x2D4, symBinAddr: 0x149440, symSize: 0x20 } + - { offset: 0x1E6BDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOs12CaseIterableAAsADP8allCases03AllJ0QzvgZTW', symObjAddr: 0x300, symBinAddr: 0x149460, symSize: 0x38 } + - { offset: 0x1E6F9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC18addToFavoritesViewAA06HapticJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1494DC, symSize: 0x10 } + - { offset: 0x1E73DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellCfETo', symObjAddr: 0xEF0, symBinAddr: 0x14A3CC, symSize: 0x98 } + - { offset: 0x1E740C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellCMa', symObjAddr: 0xF88, symBinAddr: 0x14A464, symSize: 0x20 } + - { offset: 0x1E7420, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC05setUpE03foryAA11PoiViewDataCSg_tFyycfU_TA', symObjAddr: 0x1064, symBinAddr: 0x14A4A8, symSize: 0x8 } + - { offset: 0x1E759D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC18addToFavoritesViewAA06HapticJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1494DC, symSize: 0x10 } + - { offset: 0x1E75B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC18addToFavoritesViewAA06HapticJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1494DC, symSize: 0x10 } + - { offset: 0x1E75FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC18addToFavoritesViewAA06HapticJ0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1494EC, symSize: 0x34 } + - { offset: 0x1E76D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC19addToFavoritesLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x149520, symSize: 0x10 } + - { offset: 0x1E76F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC19addToFavoritesLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x149520, symSize: 0x10 } + - { offset: 0x1E7731, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC19addToFavoritesLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x149530, symSize: 0x34 } + - { offset: 0x1E7780, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC23addToFavoritesImageViewSo07UIImageK0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x149564, symSize: 0x10 } + - { offset: 0x1E7798, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC23addToFavoritesImageViewSo07UIImageK0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x149564, symSize: 0x10 } + - { offset: 0x1E77D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC23addToFavoritesImageViewSo07UIImageK0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x149574, symSize: 0x34 } + - { offset: 0x1E7827, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC15reportIssueViewAA06HapticI0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x1495A8, symSize: 0x20 } + - { offset: 0x1E787C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC15reportIssueViewAA06HapticI0CSgvsTo', symObjAddr: 0xEC, symBinAddr: 0x1495C8, symSize: 0x14 } + - { offset: 0x1E78CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC20reportIssueStackViewSo07UIStackJ0CSgvgTo', symObjAddr: 0x100, symBinAddr: 0x1495DC, symSize: 0x20 } + - { offset: 0x1E7927, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC20reportIssueStackViewSo07UIStackJ0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x1495FC, symSize: 0x14 } + - { offset: 0x1E7978, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC13seperatorViewAA09SeparatorH0CSgvgTo', symObjAddr: 0x134, symBinAddr: 0x149610, symSize: 0x20 } + - { offset: 0x1E79D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC13seperatorViewAA09SeparatorH0CSgvsTo', symObjAddr: 0x154, symBinAddr: 0x149630, symSize: 0x14 } + - { offset: 0x1E7A23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x168, symBinAddr: 0x149644, symSize: 0x70 } + - { offset: 0x1E7A6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC15prepareForReuseyyFTo', symObjAddr: 0x1D8, symBinAddr: 0x1496B4, symSize: 0x84 } + - { offset: 0x1E7B58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC05setUpE03foryAA11PoiViewDataCSg_tF', symObjAddr: 0x25C, symBinAddr: 0x149738, symSize: 0x55C } + - { offset: 0x1E7DED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC05setUpE03foryAA11PoiViewDataCSg_tFyycfU_', symObjAddr: 0x7B8, symBinAddr: 0x149C94, symSize: 0x160 } + - { offset: 0x1E7F7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC013setupFavoriteC0yyF', symObjAddr: 0x918, symBinAddr: 0x149DF4, symSize: 0x16C } + - { offset: 0x1E80DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC16setupReportIssue33_9AB79F14116E50BD905211A038D22488LLyyF', symObjAddr: 0xA84, symBinAddr: 0x149F60, symSize: 0x104 } + - { offset: 0x1E8185, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC16setupReportIssue33_9AB79F14116E50BD905211A038D22488LLyyFyycfU_', symObjAddr: 0xB88, symBinAddr: 0x14A064, symSize: 0xDC } + - { offset: 0x1E81AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0xC64, symBinAddr: 0x14A140, symSize: 0x108 } + - { offset: 0x1E81EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xD6C, symBinAddr: 0x14A248, symSize: 0x48 } + - { offset: 0x1E8227, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xDB4, symBinAddr: 0x14A290, symSize: 0xE4 } + - { offset: 0x1E825A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xE98, symBinAddr: 0x14A374, symSize: 0x28 } + - { offset: 0x1E826E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellCfD', symObjAddr: 0xEC0, symBinAddr: 0x14A39C, symSize: 0x30 } + - { offset: 0x1E8615, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionViewSo012UICollectionH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x14A4B0, symSize: 0x10 } + - { offset: 0x1E893B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellCfETo', symObjAddr: 0x7A8, symBinAddr: 0x14AC58, symSize: 0x6C } + - { offset: 0x1E896A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellCMa', symObjAddr: 0x814, symBinAddr: 0x14ACC4, symSize: 0x20 } + - { offset: 0x1E89A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionH0C_SitFTo', symObjAddr: 0x834, symBinAddr: 0x14ACE4, symSize: 0x14 } + - { offset: 0x1E89C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionH0C_SitFTo', symObjAddr: 0x834, symBinAddr: 0x14ACE4, symSize: 0x14 } + - { offset: 0x1E89ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionH0C_SitFTo', symObjAddr: 0x834, symBinAddr: 0x14ACE4, symSize: 0x14 } + - { offset: 0x1E8AB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionView_13cellForItemAtSo012UICollectionhF0CSo0mH0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x848, symBinAddr: 0x14ACF8, symSize: 0x124 } + - { offset: 0x1E8B58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC08validateE0yyFySSXEfU_ySo7UIImageCSgcfU_TA', symObjAddr: 0x9BC, symBinAddr: 0x14AE6C, symSize: 0xC } + - { offset: 0x1E8CAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionViewSo012UICollectionH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x14A4B0, symSize: 0x10 } + - { offset: 0x1E8CC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionViewSo012UICollectionH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x14A4B0, symSize: 0x10 } + - { offset: 0x1E8D09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionViewSo012UICollectionH0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x14A4C0, symSize: 0x34 } + - { offset: 0x1E8D58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC12awakeFromNibyyF', symObjAddr: 0x44, symBinAddr: 0x14A4F4, symSize: 0x11C } + - { offset: 0x1E8E05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC12awakeFromNibyyFTo', symObjAddr: 0x160, symBinAddr: 0x14A610, symSize: 0x28 } + - { offset: 0x1E8E7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC15prepareForReuseyyFTo', symObjAddr: 0x188, symBinAddr: 0x14A638, symSize: 0xD4 } + - { offset: 0x1E8F50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC08validateE0yyF', symObjAddr: 0x25C, symBinAddr: 0x14A70C, symSize: 0x13C } + - { offset: 0x1E911E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC08validateE0yyFySSXEfU_ySo7UIImageCSgcfU_', symObjAddr: 0x398, symBinAddr: 0x14A848, symSize: 0x1F4 } + - { offset: 0x1E948C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x58C, symBinAddr: 0x14AA3C, symSize: 0xCC } + - { offset: 0x1E94CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x658, symBinAddr: 0x14AB08, symSize: 0x48 } + - { offset: 0x1E9505, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x6A0, symBinAddr: 0x14AB50, symSize: 0xB0 } + - { offset: 0x1E9538, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x750, symBinAddr: 0x14AC00, symSize: 0x28 } + - { offset: 0x1E954C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellCfD', symObjAddr: 0x778, symBinAddr: 0x14AC28, symSize: 0x30 } + - { offset: 0x1E9910, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x14AE78, symSize: 0x38 } + - { offset: 0x1E9A6A, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV2eeoiySbAC_ACtFZSbSWXEfU_', symObjAddr: 0x38, symBinAddr: 0x14AEB0, symSize: 0x22C } + - { offset: 0x1E9BAA, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15withUnsafeBytesyxxSWKXEKlFSb_Tgq5015$s10Foundation4B26V2eeoiySbAC_ACtFZSbSWXEfU_ACTf1cn_n', symObjAddr: 0x264, symBinAddr: 0x14B0DC, symSize: 0x18C } + - { offset: 0x1E9C4C, size: 0x8, addend: 0x0, symName: '_$s10Foundation13__DataStorageC15withUnsafeBytes2in5applyxSnySiG_xSWKXEtKlFSb_Tgq5015$s10Foundation4B26V2eeoiySbAC_ACtFZSbSWXEfU_AA0B0VTf1ncn_nTf4nng_n', symObjAddr: 0x3F0, symBinAddr: 0x14B268, symSize: 0xB4 } + - { offset: 0x1E9C82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOWOy', symObjAddr: 0x860, symBinAddr: 0x14B658, symSize: 0x8 } + - { offset: 0x1E9C96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwxx', symObjAddr: 0x868, symBinAddr: 0x14B660, symSize: 0xC } + - { offset: 0x1E9CAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOWOe', symObjAddr: 0x874, symBinAddr: 0x14B66C, symSize: 0x8 } + - { offset: 0x1E9CBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwca', symObjAddr: 0x87C, symBinAddr: 0x14B674, symSize: 0x44 } + - { offset: 0x1E9CD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwta', symObjAddr: 0x8CC, symBinAddr: 0x14B6B8, symSize: 0x38 } + - { offset: 0x1E9CE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwet', symObjAddr: 0x904, symBinAddr: 0x14B6F0, symSize: 0x54 } + - { offset: 0x1E9CFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwst', symObjAddr: 0x958, symBinAddr: 0x14B744, symSize: 0x48 } + - { offset: 0x1E9D0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwug', symObjAddr: 0x9A0, symBinAddr: 0x14B78C, symSize: 0xC } + - { offset: 0x1E9D22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwup', symObjAddr: 0x9AC, symBinAddr: 0x14B798, symSize: 0x10 } + - { offset: 0x1E9D36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwui', symObjAddr: 0x9BC, symBinAddr: 0x14B7A8, symSize: 0x18 } + - { offset: 0x1E9D4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOMa', symObjAddr: 0x9D4, symBinAddr: 0x14B7C0, symSize: 0x10 } + - { offset: 0x1E9D8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x14AE78, symSize: 0x38 } + - { offset: 0x1E9DE3, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x4A4, symBinAddr: 0x14B31C, symSize: 0x160 } + - { offset: 0x1E9E0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageO8mimeType4dataAESgSS_10Foundation4DataVtcfCTf4nnd_n', symObjAddr: 0x684, symBinAddr: 0x14B47C, symSize: 0x1A0 } + - { offset: 0x1EA2EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleCMa', symObjAddr: 0xC4, symBinAddr: 0x14B83C, symSize: 0x20 } + - { offset: 0x1EA369, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x5C, symBinAddr: 0x14B7D4, symSize: 0x68 } + - { offset: 0x1EA3D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xE4, symBinAddr: 0x14B85C, symSize: 0x54 } + - { offset: 0x1EA41E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleCfD', symObjAddr: 0x138, symBinAddr: 0x14B8B0, symSize: 0x30 } + - { offset: 0x1EA7B4, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE07dismisscD12Notification_WZ', symObjAddr: 0x0, symBinAddr: 0x14B8E0, symSize: 0x34 } + - { offset: 0x1EA7D8, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE07dismisscD12NotificationABvpZ', symObjAddr: 0x4E78, symBinAddr: 0x397010, symSize: 0x0 } + - { offset: 0x1EA7F2, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE30oneSecondDidElapseNotificationABvpZ', symObjAddr: 0x4E80, symBinAddr: 0x397018, symSize: 0x0 } + - { offset: 0x1EA80C, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37networkInterfaceDidChangeNotificationABvpZ', symObjAddr: 0x4E88, symBinAddr: 0x397020, symSize: 0x0 } + - { offset: 0x1EA826, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE34locationStateDidChangeNotificationABvpZ', symObjAddr: 0x4E90, symBinAddr: 0x397028, symSize: 0x0 } + - { offset: 0x1EA840, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE35bluetoothStateDidChangeNotificationABvpZ', symObjAddr: 0x4E98, symBinAddr: 0x397030, symSize: 0x0 } + - { offset: 0x1EA85A, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37locationAccuracyDidChangeNotificationABvpZ', symObjAddr: 0x4EA0, symBinAddr: 0x397038, symSize: 0x0 } + - { offset: 0x1EA874, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37connectionStatusDidChangeNotificationABvpZ', symObjAddr: 0x4EA8, symBinAddr: 0x397040, symSize: 0x0 } + - { offset: 0x1EA88E, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE43directionsAvailabilityDidChangeNotificationABvpZ', symObjAddr: 0x4EB0, symBinAddr: 0x397048, symSize: 0x0 } + - { offset: 0x1EA8A8, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE43locationDetectionStateDidChangeNotificationABvpZ', symObjAddr: 0x4EB8, symBinAddr: 0x397050, symSize: 0x0 } + - { offset: 0x1EA8B6, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE07dismisscD12Notification_WZ', symObjAddr: 0x0, symBinAddr: 0x14B8E0, symSize: 0x34 } + - { offset: 0x1EA8E6, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE30oneSecondDidElapseNotification_WZ', symObjAddr: 0x34, symBinAddr: 0x14B914, symSize: 0x34 } + - { offset: 0x1EA916, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37networkInterfaceDidChangeNotification_WZ', symObjAddr: 0x68, symBinAddr: 0x14B948, symSize: 0x34 } + - { offset: 0x1EA946, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE34locationStateDidChangeNotification_WZ', symObjAddr: 0x9C, symBinAddr: 0x14B97C, symSize: 0x34 } + - { offset: 0x1EA976, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE35bluetoothStateDidChangeNotification_WZ', symObjAddr: 0xD0, symBinAddr: 0x14B9B0, symSize: 0x34 } + - { offset: 0x1EA9A6, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37locationAccuracyDidChangeNotification_WZ', symObjAddr: 0x104, symBinAddr: 0x14B9E4, symSize: 0x34 } + - { offset: 0x1EA9D6, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37connectionStatusDidChangeNotification_WZ', symObjAddr: 0x138, symBinAddr: 0x14BA18, symSize: 0x34 } + - { offset: 0x1EAA06, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE43directionsAvailabilityDidChangeNotification_WZ', symObjAddr: 0x16C, symBinAddr: 0x14BA4C, symSize: 0x34 } + - { offset: 0x1EAA36, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE43locationDetectionStateDidChangeNotification_WZ', symObjAddr: 0x1A0, symBinAddr: 0x14BA80, symSize: 0x34 } + - { offset: 0x1EAE39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0So012UICollectionE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x14BAB4, symSize: 0x20 } + - { offset: 0x1EB391, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCfE', symObjAddr: 0x728, symBinAddr: 0x14C1DC, symSize: 0x70 } + - { offset: 0x1EB3BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCfETo', symObjAddr: 0x7C8, symBinAddr: 0x14C27C, symSize: 0x7C } + - { offset: 0x1EB3ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCMa', symObjAddr: 0x844, symBinAddr: 0x14C2F8, symSize: 0x20 } + - { offset: 0x1EB401, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC16numberOfSections2inSiSo012UICollectionE0C_tFTo', symObjAddr: 0x864, symBinAddr: 0x14C318, symSize: 0x8 } + - { offset: 0x1EB45D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_22numberOfItemsInSectionSiSo012UICollectionE0C_SitFTo', symObjAddr: 0x86C, symBinAddr: 0x14C320, symSize: 0x14 } + - { offset: 0x1EB47D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_22numberOfItemsInSectionSiSo012UICollectionE0C_SitFTo', symObjAddr: 0x86C, symBinAddr: 0x14C320, symSize: 0x14 } + - { offset: 0x1EB4A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_22numberOfItemsInSectionSiSo012UICollectionE0C_SitFTo', symObjAddr: 0x86C, symBinAddr: 0x14C320, symSize: 0x14 } + - { offset: 0x1EB5AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_13cellForItemAtSo012UICollectionE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0x880, symBinAddr: 0x14C334, symSize: 0x3A8 } + - { offset: 0x1EBA20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_13cellForItemAtSo012UICollectionE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xC28, symBinAddr: 0x14C6DC, symSize: 0xC8 } + - { offset: 0x1EBA4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_15didSelectItemAtySo012UICollectionE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xCF0, symBinAddr: 0x14C7A4, symSize: 0xBC } + - { offset: 0x1EBA7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0xE84, symBinAddr: 0x14C860, symSize: 0x34 } + - { offset: 0x1EBAB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0xEB8, symBinAddr: 0x14C894, symSize: 0x24 } + - { offset: 0x1EBB2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC10setupPanelyyF', symObjAddr: 0xEDC, symBinAddr: 0x14C8B8, symSize: 0x228 } + - { offset: 0x1EBD74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC10setupPanelyyFTo', symObjAddr: 0x1104, symBinAddr: 0x14CAE0, symSize: 0x28 } + - { offset: 0x1EBDA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x112C, symBinAddr: 0x14CB08, symSize: 0x200 } + - { offset: 0x1EBF86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x132C, symBinAddr: 0x14CD08, symSize: 0x50 } + - { offset: 0x1EBFB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x137C, symBinAddr: 0x14CD58, symSize: 0x4 } + - { offset: 0x1EBFD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x137C, symBinAddr: 0x14CD58, symSize: 0x4 } + - { offset: 0x1EBFE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4ddn_n', symObjAddr: 0x1380, symBinAddr: 0x14CD5C, symSize: 0x1C0 } + - { offset: 0x1EC22B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_15didSelectItemAtySo012UICollectionE0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x1640, symBinAddr: 0x14CFD8, symSize: 0x1E4 } + - { offset: 0x1EC59E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0So012UICollectionE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x14BAB4, symSize: 0x20 } + - { offset: 0x1EC5FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0So012UICollectionE0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x14BAD4, symSize: 0x14 } + - { offset: 0x1EC64F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC09separatorE0So6UIViewCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x14BAE8, symSize: 0x20 } + - { offset: 0x1EC6A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC09separatorE0So6UIViewCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x14BB08, symSize: 0x14 } + - { offset: 0x1EC6FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC8tagTitleSo7UILabelCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x14BB1C, symSize: 0x20 } + - { offset: 0x1EC754, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC8tagTitleSo7UILabelCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x14BB3C, symSize: 0x14 } + - { offset: 0x1EC835, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC11viewDidLoadyyF', symObjAddr: 0x9C, symBinAddr: 0x14BB50, symSize: 0x2B8 } + - { offset: 0x1ECA25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x354, symBinAddr: 0x14BE08, symSize: 0x28 } + - { offset: 0x1ECA72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0x37C, symBinAddr: 0x14BE30, symSize: 0x94 } + - { offset: 0x1ECAD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC11applyFilteryySo8UIButtonCFTo', symObjAddr: 0x410, symBinAddr: 0x14BEC4, symSize: 0x4C } + - { offset: 0x1ECB17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC5closeyySo8UIButtonCFTo', symObjAddr: 0x45C, symBinAddr: 0x14BF10, symSize: 0x38 } + - { offset: 0x1ECB41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x494, symBinAddr: 0x14BF48, symSize: 0x118 } + - { offset: 0x1ECB82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x5AC, symBinAddr: 0x14C060, symSize: 0x60 } + - { offset: 0x1ECBCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x60C, symBinAddr: 0x14C0C0, symSize: 0xF4 } + - { offset: 0x1ECBFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x700, symBinAddr: 0x14C1B4, symSize: 0x28 } + - { offset: 0x1ECC11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCfD', symObjAddr: 0x798, symBinAddr: 0x14C24C, symSize: 0x30 } + - { offset: 0x1ECEA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC11applyFilteryySo8UIButtonCFTf4dn_n', symObjAddr: 0x1584, symBinAddr: 0x14CF1C, symSize: 0xBC } + - { offset: 0x1ED2D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVMa', symObjAddr: 0x0, symBinAddr: 0x14D1BC, symSize: 0x10 } + - { offset: 0x1ED34B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVMa', symObjAddr: 0x0, symBinAddr: 0x14D1BC, symSize: 0x10 } + - { offset: 0x1ED36A, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVAcA0B8ProtocolAAWl', symObjAddr: 0x2A0, symBinAddr: 0x14D41C, symSize: 0x40 } + - { offset: 0x1ED38C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVs010TextOutputF0AAsADP5_lockyyFTW', symObjAddr: 0x10, symBinAddr: 0x14D1CC, symSize: 0x4 } + - { offset: 0x1ED3A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVs010TextOutputF0AAsADP7_unlockyyFTW', symObjAddr: 0x14, symBinAddr: 0x14D1D0, symSize: 0x4 } + - { offset: 0x1ED3C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVs010TextOutputF0AAsADP11_writeASCIIyySRys5UInt8VGFTW', symObjAddr: 0x1C, symBinAddr: 0x14D1D8, symSize: 0x4 } + - { offset: 0x1ED3EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVs010TextOutputF0AAsADP5writeyySSFTW', symObjAddr: 0x18, symBinAddr: 0x14D1D4, symSize: 0x4 } + - { offset: 0x1ED406, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVs010TextOutputF0AAsADP5writeyySSFTW', symObjAddr: 0x18, symBinAddr: 0x14D1D4, symSize: 0x4 } + - { offset: 0x1ED42F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamV5writeyySSFTf4nd_n', symObjAddr: 0x20, symBinAddr: 0x14D1DC, symSize: 0x240 } + - { offset: 0x1ED81B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC21tableHeightConstraintSo08NSLayoutK0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x14D45C, symSize: 0x20 } + - { offset: 0x1EDBC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC09calculateF6HeightyyF', symObjAddr: 0x3A0, symBinAddr: 0x14D7FC, symSize: 0x4CC } + - { offset: 0x1EDF78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellCfETo', symObjAddr: 0xB64, symBinAddr: 0x14DFC0, symSize: 0x6C } + - { offset: 0x1EDFA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellCMa', symObjAddr: 0xBD0, symBinAddr: 0x14E02C, symSize: 0x20 } + - { offset: 0x1EDFCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0xBF0, symBinAddr: 0x14E04C, symSize: 0x20 } + - { offset: 0x1EE04D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0_12cellForRowAtSo07UITablegH0CSo0nG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xC10, symBinAddr: 0x14E06C, symSize: 0x140 } + - { offset: 0x1EE0D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0_21numberOfRowsInSectionSiSo07UITableG0C_SitFTf4ddn_n', symObjAddr: 0xDC0, symBinAddr: 0x14E1AC, symSize: 0x50 } + - { offset: 0x1EE108, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0_21numberOfRowsInSectionSiSo07UITableG0C_SitFTf4ddn_n', symObjAddr: 0xDC0, symBinAddr: 0x14E1AC, symSize: 0x50 } + - { offset: 0x1EE1FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC12awakeFromNibyyFyycfU_TA', symObjAddr: 0xE74, symBinAddr: 0x14E220, symSize: 0x8 } + - { offset: 0x1EE461, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC21tableHeightConstraintSo08NSLayoutK0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x14D45C, symSize: 0x20 } + - { offset: 0x1EE4C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC21tableHeightConstraintSo08NSLayoutK0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x14D47C, symSize: 0x14 } + - { offset: 0x1EE512, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0So07UITableG0CSgvgTo', symObjAddr: 0x34, symBinAddr: 0x14D490, symSize: 0x20 } + - { offset: 0x1EE56C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0So07UITableG0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x14D4B0, symSize: 0x14 } + - { offset: 0x1EE5BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC08showMoreG0AA06HapticG0CSgvgTo', symObjAddr: 0x68, symBinAddr: 0x14D4C4, symSize: 0x20 } + - { offset: 0x1EE617, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC08showMoreG0AA06HapticG0CSgvsTo', symObjAddr: 0x88, symBinAddr: 0x14D4E4, symSize: 0x14 } + - { offset: 0x1EE69F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC12awakeFromNibyyF', symObjAddr: 0x9C, symBinAddr: 0x14D4F8, symSize: 0x130 } + - { offset: 0x1EE775, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC12awakeFromNibyyFyycfU_', symObjAddr: 0x1CC, symBinAddr: 0x14D628, symSize: 0xE0 } + - { offset: 0x1EE88D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC12awakeFromNibyyFTo', symObjAddr: 0x2AC, symBinAddr: 0x14D708, symSize: 0x28 } + - { offset: 0x1EE8DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC7setData4dataySayAA0D0VG_tF', symObjAddr: 0x2D4, symBinAddr: 0x14D730, symSize: 0xCC } + - { offset: 0x1EEB32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0x86C, symBinAddr: 0x14DCC8, symSize: 0x54 } + - { offset: 0x1EEB75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC5style15reuseIdentifierACSo07UITablegH5StyleV_SSSgtcfc', symObjAddr: 0x8C0, symBinAddr: 0x14DD1C, symSize: 0x110 } + - { offset: 0x1EEBB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC5style15reuseIdentifierACSo07UITablegH5StyleV_SSSgtcfcTo', symObjAddr: 0x9D0, symBinAddr: 0x14DE2C, symSize: 0x48 } + - { offset: 0x1EEBEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xA18, symBinAddr: 0x14DE74, symSize: 0xF4 } + - { offset: 0x1EEC21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xB0C, symBinAddr: 0x14DF68, symSize: 0x28 } + - { offset: 0x1EEC35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellCfD', symObjAddr: 0xB34, symBinAddr: 0x14DF90, symSize: 0x30 } + - { offset: 0x1EF024, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC15_sharedInstance33_64A15AA8C9CFE359AAD8CEAC1C476F6DLLACSgvpZ', symObjAddr: 0x1DE0, symBinAddr: 0x37A878, symSize: 0x0 } + - { offset: 0x1EF230, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageCMa', symObjAddr: 0x107C, symBinAddr: 0x14F278, symSize: 0x20 } + - { offset: 0x1EF29A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV8getImage10completionyySo7UIImageCc_tFyAGSgcfU_TA', symObjAddr: 0x1928, symBinAddr: 0x14FAE0, symSize: 0x8 } + - { offset: 0x1EF2AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctFyyYbcfU_TA', symObjAddr: 0x1AE8, symBinAddr: 0x14FBD4, symSize: 0x78 } + - { offset: 0x1EF2C2, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1B60, symBinAddr: 0x14FC4C, symSize: 0x10 } + - { offset: 0x1EF2D6, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1B70, symBinAddr: 0x14FC5C, symSize: 0x8 } + - { offset: 0x1EF2EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctFyyYbcfU_ytSgyXEfU0_TA', symObjAddr: 0x1C0C, symBinAddr: 0x14FC64, symSize: 0x1C } + - { offset: 0x1EF2FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtFyyXEfU_TA', symObjAddr: 0x1D20, symBinAddr: 0x14FCD0, symSize: 0x1C } + - { offset: 0x1EF312, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtFyyScMYccfU0_TA', symObjAddr: 0x1D68, symBinAddr: 0x14FD18, symSize: 0x8 } + - { offset: 0x1EF331, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageCSgIegg_ACytIegnr_TRTA', symObjAddr: 0x1D70, symBinAddr: 0x14FD20, symSize: 0x24 } + - { offset: 0x1EF5FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctFyyYbcfU_', symObjAddr: 0x2C, symBinAddr: 0x14E228, symSize: 0x7B0 } + - { offset: 0x1EF786, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctFyyYbcfU_ytSgyXEfU0_', symObjAddr: 0x7DC, symBinAddr: 0x14E9D8, symSize: 0x370 } + - { offset: 0x1EF9D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtF', symObjAddr: 0xB4C, symBinAddr: 0x14ED48, symSize: 0x2B8 } + - { offset: 0x1EFA5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtFyyXEfU_', symObjAddr: 0xE04, symBinAddr: 0x14F000, symSize: 0x18C } + - { offset: 0x1EFB1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtFyyScMYccfU0_', symObjAddr: 0xF90, symBinAddr: 0x14F18C, symSize: 0xB8 } + - { offset: 0x1EFCAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageCfD', symObjAddr: 0x1048, symBinAddr: 0x14F244, symSize: 0x34 } + - { offset: 0x1EFD51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctF03$s8ab41UI10LiveObjectV8getImage10completionyySo7M14Cc_tFyAGSgcfU_AOIegg_Tf1nncn_nTf4nnng_n', symObjAddr: 0x109C, symBinAddr: 0x14F298, symSize: 0x824 } + - { offset: 0x1F02F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x14FD60, symSize: 0x68 } + - { offset: 0x1F038E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCfE', symObjAddr: 0x68, symBinAddr: 0x14FDC8, symSize: 0x34 } + - { offset: 0x1F03BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCMU', symObjAddr: 0x100, symBinAddr: 0x14FE60, symSize: 0x8 } + - { offset: 0x1F03CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCMa', symObjAddr: 0x108, symBinAddr: 0x14FE68, symSize: 0x38 } + - { offset: 0x1F03E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCMr', symObjAddr: 0x140, symBinAddr: 0x14FEA0, symSize: 0xA0 } + - { offset: 0x1F03F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOMa', symObjAddr: 0x39C, symBinAddr: 0x14FF40, symSize: 0x10 } + - { offset: 0x1F040B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVwet', symObjAddr: 0x3C0, symBinAddr: 0x14FF50, symSize: 0x48 } + - { offset: 0x1F041F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVwst', symObjAddr: 0x408, symBinAddr: 0x14FF98, symSize: 0x44 } + - { offset: 0x1F0433, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVMa', symObjAddr: 0x44C, symBinAddr: 0x14FFDC, symSize: 0x10 } + - { offset: 0x1F0456, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x45C, symBinAddr: 0x14FFEC, symSize: 0xC } + - { offset: 0x1F0510, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSHAASQWb', symObjAddr: 0x764, symBinAddr: 0x1502F4, symSize: 0x4 } + - { offset: 0x1F0524, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOAGSQAAWl', symObjAddr: 0x768, symBinAddr: 0x1502F8, symSize: 0x40 } + - { offset: 0x1F0538, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x7A8, symBinAddr: 0x150338, symSize: 0x15C } + - { offset: 0x1F05CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x468, symBinAddr: 0x14FFF8, symSize: 0xB4 } + - { offset: 0x1F0688, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSHAASH9hashValueSivgTW', symObjAddr: 0x51C, symBinAddr: 0x1500AC, symSize: 0x90 } + - { offset: 0x1F070A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5AC, symBinAddr: 0x15013C, symSize: 0x6C } + - { offset: 0x1F0748, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x618, symBinAddr: 0x1501A8, symSize: 0x8C } + - { offset: 0x1F07D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x14FD60, symSize: 0x68 } + - { offset: 0x1F083D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCfD', symObjAddr: 0x9C, symBinAddr: 0x14FDFC, symSize: 0x64 } + - { offset: 0x1F08A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0x6A4, symBinAddr: 0x150234, symSize: 0x70 } + - { offset: 0x1F08F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0x714, symBinAddr: 0x1502A4, symSize: 0x50 } + - { offset: 0x1F0C8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x150494, symSize: 0x10 } + - { offset: 0x1F146A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewCfETo', symObjAddr: 0xC04, symBinAddr: 0x151098, symSize: 0xC8 } + - { offset: 0x1F1499, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewCMa', symObjAddr: 0xCCC, symBinAddr: 0x151160, symSize: 0x20 } + - { offset: 0x1F150B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x150494, symSize: 0x10 } + - { offset: 0x1F1523, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x150494, symSize: 0x10 } + - { offset: 0x1F1569, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC07contentE0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1504A4, symSize: 0x34 } + - { offset: 0x1F15B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC16destinationLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1504D8, symSize: 0x10 } + - { offset: 0x1F15D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC16destinationLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1504D8, symSize: 0x10 } + - { offset: 0x1F1610, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC16destinationLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1504E8, symSize: 0x34 } + - { offset: 0x1F165F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC17destinationLetterSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x15051C, symSize: 0x10 } + - { offset: 0x1F1677, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC17destinationLetterSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x15051C, symSize: 0x10 } + - { offset: 0x1F16B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC17destinationLetterSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x15052C, symSize: 0x34 } + - { offset: 0x1F1701, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC027currentInstructionContainerE0So6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x150560, symSize: 0x10 } + - { offset: 0x1F1719, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC027currentInstructionContainerE0So6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x150560, symSize: 0x10 } + - { offset: 0x1F1754, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC027currentInstructionContainerE0So6UIViewCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x150570, symSize: 0x34 } + - { offset: 0x1F17A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC23currentInstructionLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x1505A4, symSize: 0x10 } + - { offset: 0x1F17BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC23currentInstructionLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x1505A4, symSize: 0x10 } + - { offset: 0x1F17F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC23currentInstructionLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x1505B4, symSize: 0x34 } + - { offset: 0x1F1845, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC023currentInstructionImageE0So07UIImageE0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x1505E8, symSize: 0x10 } + - { offset: 0x1F185D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC023currentInstructionImageE0So07UIImageE0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x1505E8, symSize: 0x10 } + - { offset: 0x1F189D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC023currentInstructionImageE0So07UIImageE0CSgvsTo', symObjAddr: 0x164, symBinAddr: 0x1505F8, symSize: 0x34 } + - { offset: 0x1F18EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22remainingDistanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x15062C, symSize: 0x10 } + - { offset: 0x1F1904, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22remainingDistanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x15062C, symSize: 0x10 } + - { offset: 0x1F193F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22remainingDistanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x15063C, symSize: 0x34 } + - { offset: 0x1F198E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC024nextInstructionContainerE0So6UIViewCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x150670, symSize: 0x10 } + - { offset: 0x1F19A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC024nextInstructionContainerE0So6UIViewCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x150670, symSize: 0x10 } + - { offset: 0x1F19E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC024nextInstructionContainerE0So6UIViewCSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x150680, symSize: 0x34 } + - { offset: 0x1F1A30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC020nextInstructionImageE0So07UIImageE0CSgvgTo', symObjAddr: 0x220, symBinAddr: 0x1506B4, symSize: 0x10 } + - { offset: 0x1F1A48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC020nextInstructionImageE0So07UIImageE0CSgvgTo', symObjAddr: 0x220, symBinAddr: 0x1506B4, symSize: 0x10 } + - { offset: 0x1F1A83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC020nextInstructionImageE0So07UIImageE0CSgvsTo', symObjAddr: 0x230, symBinAddr: 0x1506C4, symSize: 0x34 } + - { offset: 0x1F1AD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22topFloorIndicatorLabelSo7UILabelCSgvgTo', symObjAddr: 0x264, symBinAddr: 0x1506F8, symSize: 0x10 } + - { offset: 0x1F1AEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22topFloorIndicatorLabelSo7UILabelCSgvgTo', symObjAddr: 0x264, symBinAddr: 0x1506F8, symSize: 0x10 } + - { offset: 0x1F1B25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22topFloorIndicatorLabelSo7UILabelCSgvsTo', symObjAddr: 0x274, symBinAddr: 0x150708, symSize: 0x34 } + - { offset: 0x1F1B74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC25bottomFloorIndicatorLabelSo7UILabelCSgvgTo', symObjAddr: 0x2A8, symBinAddr: 0x15073C, symSize: 0x10 } + - { offset: 0x1F1B8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC25bottomFloorIndicatorLabelSo7UILabelCSgvgTo', symObjAddr: 0x2A8, symBinAddr: 0x15073C, symSize: 0x10 } + - { offset: 0x1F1BC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC25bottomFloorIndicatorLabelSo7UILabelCSgvsTo', symObjAddr: 0x2B8, symBinAddr: 0x15074C, symSize: 0x34 } + - { offset: 0x1F1C02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x2EC, symBinAddr: 0x150780, symSize: 0x108 } + - { offset: 0x1F1C37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x3F4, symBinAddr: 0x150888, symSize: 0x20 } + - { offset: 0x1F1C9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x414, symBinAddr: 0x1508A8, symSize: 0xF8 } + - { offset: 0x1F1CCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x50C, symBinAddr: 0x1509A0, symSize: 0x28 } + - { offset: 0x1F1D4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC10commonInit33_186C74DDBAE18BF1C3F293BBFBA9D952LLyyF', symObjAddr: 0x534, symBinAddr: 0x1509C8, symSize: 0x1CC } + - { offset: 0x1F1F3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC14setDestinationyyAA5PlaceCSgF', symObjAddr: 0x700, symBinAddr: 0x150B94, symSize: 0x4D4 } + - { offset: 0x1F23FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewCfD', symObjAddr: 0xBD4, symBinAddr: 0x151068, symSize: 0x30 } + - { offset: 0x1F2785, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationV7baseURL11serviceName8clientId0J3Key06campusK0ACSS_S3SSiSgtcfC', symObjAddr: 0x0, symBinAddr: 0x151180, symSize: 0x28 } + - { offset: 0x1F27D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwxx', symObjAddr: 0x54, symBinAddr: 0x1511A8, symSize: 0x38 } + - { offset: 0x1F27E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwcp', symObjAddr: 0x8C, symBinAddr: 0x1511E0, symSize: 0x74 } + - { offset: 0x1F27FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwca', symObjAddr: 0x100, symBinAddr: 0x151254, symSize: 0xBC } + - { offset: 0x1F2810, size: 0x8, addend: 0x0, symName: ___swift_memcpy73_8, symObjAddr: 0x1BC, symBinAddr: 0x151310, symSize: 0x24 } + - { offset: 0x1F2824, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwta', symObjAddr: 0x1E0, symBinAddr: 0x151334, symSize: 0x74 } + - { offset: 0x1F2838, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwet', symObjAddr: 0x254, symBinAddr: 0x1513A8, symSize: 0x48 } + - { offset: 0x1F284C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwst', symObjAddr: 0x29C, symBinAddr: 0x1513F0, symSize: 0x54 } + - { offset: 0x1F2860, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVMa', symObjAddr: 0x2F0, symBinAddr: 0x151444, symSize: 0x10 } + - { offset: 0x1F28A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationV7baseURL11serviceName8clientId0J3Key06campusK0ACSS_S3SSiSgtcfC', symObjAddr: 0x0, symBinAddr: 0x151180, symSize: 0x28 } + - { offset: 0x1F2C9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x151454, symSize: 0x10 } + - { offset: 0x1F2E09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewCfETo', symObjAddr: 0x2C0, symBinAddr: 0x151714, symSize: 0x10 } + - { offset: 0x1F2E38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewCMa', symObjAddr: 0x2D0, symBinAddr: 0x151724, symSize: 0x20 } + - { offset: 0x1F2EBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x151454, symSize: 0x10 } + - { offset: 0x1F2ED6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x151454, symSize: 0x10 } + - { offset: 0x1F2F1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC07contentE0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x151464, symSize: 0x34 } + - { offset: 0x1F2F7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x44, symBinAddr: 0x151498, symSize: 0x94 } + - { offset: 0x1F301D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xD8, symBinAddr: 0x15152C, symSize: 0x94 } + - { offset: 0x1F307D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC10commonInit33_DB4F7BE1755D04AFBF1EE63777EB3A0ALLyyF', symObjAddr: 0x16C, symBinAddr: 0x1515C0, symSize: 0x124 } + - { offset: 0x1F3147, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewCfD', symObjAddr: 0x290, symBinAddr: 0x1516E4, symSize: 0x30 } + - { offset: 0x1F34D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC12createEngine33_11376204CEA7C09CC43961F62E014BCBLLyyF', symObjAddr: 0x0, symBinAddr: 0x151744, symSize: 0x1AC } + - { offset: 0x1F3606, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerCMa', symObjAddr: 0x618, symBinAddr: 0x151D5C, symSize: 0x20 } + - { offset: 0x1F361A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC12createEngine33_11376204CEA7C09CC43961F62E014BCBLLyyFyycfU_TA', symObjAddr: 0x638, symBinAddr: 0x151D7C, symSize: 0x8 } + - { offset: 0x1F362E, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x640, symBinAddr: 0x151D84, symSize: 0x10 } + - { offset: 0x1F3642, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x650, symBinAddr: 0x151D94, symSize: 0x8 } + - { offset: 0x1F365D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC12createEngine33_11376204CEA7C09CC43961F62E014BCBLLyyF', symObjAddr: 0x0, symBinAddr: 0x151744, symSize: 0x1AC } + - { offset: 0x1F36D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC12createEngine33_11376204CEA7C09CC43961F62E014BCBLLyyFyycfU_', symObjAddr: 0x1AC, symBinAddr: 0x1518F0, symSize: 0xD8 } + - { offset: 0x1F37B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC04playD4File33_11376204CEA7C09CC43961F62E014BCBLL8fileNameySS_tF', symObjAddr: 0x284, symBinAddr: 0x1519C8, symSize: 0x370 } + - { offset: 0x1F386E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerCfD', symObjAddr: 0x5F4, symBinAddr: 0x151D38, symSize: 0x24 } + - { offset: 0x1F3C57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x151D9C, symSize: 0x94 } + - { offset: 0x1F3D6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonCfETo', symObjAddr: 0x36C, symBinAddr: 0x152108, symSize: 0x10 } + - { offset: 0x1F3D9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonCMa', symObjAddr: 0x37C, symBinAddr: 0x152118, symSize: 0x20 } + - { offset: 0x1F3DDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x151D9C, symSize: 0x94 } + - { offset: 0x1F3E86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x94, symBinAddr: 0x151E30, symSize: 0x94 } + - { offset: 0x1F3F85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonC05setupD9Indicator33_72C2D151F8AD46D59A57D53E2C1FBE11LLyyF', symObjAddr: 0x128, symBinAddr: 0x151EC4, symSize: 0x214 } + - { offset: 0x1F40A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonCfD', symObjAddr: 0x33C, symBinAddr: 0x1520D8, symSize: 0x30 } + - { offset: 0x1F4AB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperCfETo', symObjAddr: 0x1CA4, symBinAddr: 0x153DDC, symSize: 0xC0 } + - { offset: 0x1F4AE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperCMa', symObjAddr: 0x1D64, symBinAddr: 0x153E9C, symSize: 0x20 } + - { offset: 0x1F4DBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x152138, symSize: 0x10 } + - { offset: 0x1F4DD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x152138, symSize: 0x10 } + - { offset: 0x1F4E1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x152148, symSize: 0x34 } + - { offset: 0x1F4E69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x15217C, symSize: 0x10 } + - { offset: 0x1F4E81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x15217C, symSize: 0x10 } + - { offset: 0x1F4EBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x15218C, symSize: 0x34 } + - { offset: 0x1F4F0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1521C0, symSize: 0x10 } + - { offset: 0x1F4F23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1521C0, symSize: 0x10 } + - { offset: 0x1F4F63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC11contentViewSo6UIViewCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x1521D0, symSize: 0x34 } + - { offset: 0x1F4FB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10nextButtonSo8UIButtonCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x152204, symSize: 0x10 } + - { offset: 0x1F4FCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10nextButtonSo8UIButtonCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x152204, symSize: 0x10 } + - { offset: 0x1F500A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10nextButtonSo8UIButtonCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x152214, symSize: 0x34 } + - { offset: 0x1F5059, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC18nextSeparatorWidthSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x152248, symSize: 0x10 } + - { offset: 0x1F5071, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC18nextSeparatorWidthSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x152248, symSize: 0x10 } + - { offset: 0x1F50B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC18nextSeparatorWidthSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x152258, symSize: 0x34 } + - { offset: 0x1F5100, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC14previousButtonSo8UIButtonCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x15228C, symSize: 0x10 } + - { offset: 0x1F5118, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC14previousButtonSo8UIButtonCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x15228C, symSize: 0x10 } + - { offset: 0x1F5153, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC14previousButtonSo8UIButtonCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x15229C, symSize: 0x34 } + - { offset: 0x1F51A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC22previousSeparatorWidthSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x1522D0, symSize: 0x10 } + - { offset: 0x1F51BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC22previousSeparatorWidthSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x1522D0, symSize: 0x10 } + - { offset: 0x1F51F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC22previousSeparatorWidthSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x1522E0, symSize: 0x34 } + - { offset: 0x1F5244, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC15labelsStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x152314, symSize: 0x10 } + - { offset: 0x1F525C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC15labelsStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x152314, symSize: 0x10 } + - { offset: 0x1F529C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC15labelsStackViewSo07UIStackH0CSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x152324, symSize: 0x34 } + - { offset: 0x1F52D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC5frameACSo6CGRectV_tcfc', symObjAddr: 0x220, symBinAddr: 0x152358, symSize: 0x104 } + - { offset: 0x1F530C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x324, symBinAddr: 0x15245C, symSize: 0x20 } + - { offset: 0x1F536F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x344, symBinAddr: 0x15247C, symSize: 0xF4 } + - { offset: 0x1F53A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x438, symBinAddr: 0x152570, symSize: 0x28 } + - { offset: 0x1F541D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC9setupView33_B3F52FF1C7EB23C753FCB37EDFA4BFF4LLyyF', symObjAddr: 0x460, symBinAddr: 0x152598, symSize: 0x620 } + - { offset: 0x1F58C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC12updateLabelsyyF', symObjAddr: 0xA80, symBinAddr: 0x152BB8, symSize: 0xC3C } + - { offset: 0x1F63FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC13updateButtonsyyF', symObjAddr: 0x16BC, symBinAddr: 0x1537F4, symSize: 0x42C } + - { offset: 0x1F6775, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperCfD', symObjAddr: 0x1C74, symBinAddr: 0x153DAC, symSize: 0x30 } + - { offset: 0x1F7170, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellCfETo', symObjAddr: 0x13F0, symBinAddr: 0x15529C, symSize: 0xE8 } + - { offset: 0x1F719F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellCMa', symObjAddr: 0x14D8, symBinAddr: 0x155384, symSize: 0x20 } + - { offset: 0x1F71DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_21numberOfRowsInSectionSiSo07UITableH0C_SitFTo', symObjAddr: 0x14F8, symBinAddr: 0x1553A4, symSize: 0x30 } + - { offset: 0x1F721C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_21numberOfRowsInSectionSiSo07UITableH0C_SitFTo', symObjAddr: 0x14F8, symBinAddr: 0x1553A4, symSize: 0x30 } + - { offset: 0x1F72F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_12cellForRowAtSo07UITablehF0CSo0mH0C_10Foundation9IndexPathVtF', symObjAddr: 0x1528, symBinAddr: 0x1553D4, symSize: 0x228 } + - { offset: 0x1F751F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_12cellForRowAtSo07UITablehF0CSo0mH0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1750, symBinAddr: 0x1555FC, symSize: 0xC8 } + - { offset: 0x1F754A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_14didSelectRowAtySo07UITableH0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1818, symBinAddr: 0x1556C4, symSize: 0xBC } + - { offset: 0x1F757C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableH0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x18D4, symBinAddr: 0x155780, symSize: 0x84 } + - { offset: 0x1F75D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_14didSelectRowAtySo07UITableH0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x1958, symBinAddr: 0x155804, symSize: 0x110 } + - { offset: 0x1F7759, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC08setUIForE033_06DAFF211FBCAE864BD7FDDCE90583D9LL5venuey7Penguin0E0C_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x1B38, symBinAddr: 0x155964, symSize: 0x8 } + - { offset: 0x1F776D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSgWOc', symObjAddr: 0x1B40, symBinAddr: 0x15596C, symSize: 0x48 } + - { offset: 0x1F7A9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC25tableViewBottomConstraintSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x10, symBinAddr: 0x153EBC, symSize: 0x10 } + - { offset: 0x1F7AB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC25tableViewBottomConstraintSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x10, symBinAddr: 0x153EBC, symSize: 0x10 } + - { offset: 0x1F7AFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC25tableViewBottomConstraintSo08NSLayoutJ0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x153ECC, symSize: 0x34 } + - { offset: 0x1F7B4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC25tableViewHeightConstraintSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x54, symBinAddr: 0x153F00, symSize: 0x20 } + - { offset: 0x1F7BA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC25tableViewHeightConstraintSo08NSLayoutJ0CSgvsTo', symObjAddr: 0x74, symBinAddr: 0x153F20, symSize: 0x14 } + - { offset: 0x1F7BF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC09connectedE5TableSo11UITableViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x153F34, symSize: 0x20 } + - { offset: 0x1F7C4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC09connectedE5TableSo11UITableViewCSgvsTo', symObjAddr: 0xA8, symBinAddr: 0x153F54, symSize: 0x14 } + - { offset: 0x1F7C9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC15floorCountLabelSo7UILabelCSgvgTo', symObjAddr: 0xBC, symBinAddr: 0x153F68, symSize: 0x20 } + - { offset: 0x1F7CF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC15floorCountLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x153F88, symSize: 0x14 } + - { offset: 0x1F7D48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9venueNameSo7UILabelCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x153F9C, symSize: 0x20 } + - { offset: 0x1F7D9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9venueNameSo7UILabelCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x153FBC, symSize: 0x14 } + - { offset: 0x1F7DEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC10venueImageSo11UIImageViewCSgvgTo', symObjAddr: 0x124, symBinAddr: 0x153FD0, symSize: 0x20 } + - { offset: 0x1F7E48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC10venueImageSo11UIImageViewCSgvsTo', symObjAddr: 0x144, symBinAddr: 0x153FF0, symSize: 0x14 } + - { offset: 0x1F7E99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC12toggleButtonSo8UIButtonCSgvgTo', symObjAddr: 0x158, symBinAddr: 0x154004, symSize: 0x20 } + - { offset: 0x1F7EF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC12toggleButtonSo8UIButtonCSgvsTo', symObjAddr: 0x178, symBinAddr: 0x154024, symSize: 0x14 } + - { offset: 0x1F7F44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC14imageContainerSo6UIViewCSgvgTo', symObjAddr: 0x18C, symBinAddr: 0x154038, symSize: 0x20 } + - { offset: 0x1F7F9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC14imageContainerSo6UIViewCSgvsTo', symObjAddr: 0x1AC, symBinAddr: 0x154058, symSize: 0x14 } + - { offset: 0x1F7FEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9separatorSo6UIViewCSgvgTo', symObjAddr: 0x1C0, symBinAddr: 0x15406C, symSize: 0x10 } + - { offset: 0x1F8007, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9separatorSo6UIViewCSgvgTo', symObjAddr: 0x1C0, symBinAddr: 0x15406C, symSize: 0x10 } + - { offset: 0x1F8042, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9separatorSo6UIViewCSgvsTo', symObjAddr: 0x1D0, symBinAddr: 0x15407C, symSize: 0x34 } + - { offset: 0x1F8091, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC12awakeFromNibyyFTo', symObjAddr: 0x204, symBinAddr: 0x1540B0, symSize: 0x74 } + - { offset: 0x1F810E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC14configureTableyyF', symObjAddr: 0x278, symBinAddr: 0x154124, symSize: 0x390 } + - { offset: 0x1F8318, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC03sete5ImageC0yyF', symObjAddr: 0x608, symBinAddr: 0x1544B4, symSize: 0x390 } + - { offset: 0x1F84C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC08setUIForE033_06DAFF211FBCAE864BD7FDDCE90583D9LL5venuey7Penguin0E0C_tF', symObjAddr: 0x998, symBinAddr: 0x154844, symSize: 0x424 } + - { offset: 0x1F86C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC08setUIForE033_06DAFF211FBCAE864BD7FDDCE90583D9LL5venuey7Penguin0E0C_tFySo7UIImageCSgcfU_', symObjAddr: 0xDBC, symBinAddr: 0x154C68, symSize: 0x1D4 } + - { offset: 0x1F87CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC13toggleSectionyyF', symObjAddr: 0xF90, symBinAddr: 0x154E3C, symSize: 0xA4 } + - { offset: 0x1F8861, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC13toggleSectionyyFTo', symObjAddr: 0x1034, symBinAddr: 0x154EE0, symSize: 0x28 } + - { offset: 0x1F8875, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x105C, symBinAddr: 0x154F08, symSize: 0x18C } + - { offset: 0x1F88B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x11E8, symBinAddr: 0x155094, symSize: 0x48 } + - { offset: 0x1F88EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1230, symBinAddr: 0x1550DC, symSize: 0x168 } + - { offset: 0x1F8921, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1398, symBinAddr: 0x155244, symSize: 0x28 } + - { offset: 0x1F8935, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellCfD', symObjAddr: 0x13C0, symBinAddr: 0x15526C, symSize: 0x30 } + - { offset: 0x1F8D91, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE21makeBoundsLayoutGuideSo08UILayoutH0CyF', symObjAddr: 0x0, symBinAddr: 0x1559B4, symSize: 0x290 } + - { offset: 0x1F8F67, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE21makeBoundsLayoutGuideSo08UILayoutH0CyF', symObjAddr: 0x0, symBinAddr: 0x1559B4, symSize: 0x290 } + - { offset: 0x1F902C, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE7asImage15backgroundColor06borderH00I5WidthSo7UIImageCSgSo7UIColorCSg_AM12CoreGraphics7CGFloatVtF', symObjAddr: 0x290, symBinAddr: 0x155C44, symSize: 0x268 } + - { offset: 0x1F915A, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE21makeBoundsLayoutGuide12bottomAnchorSo08UILayoutH0C12CoreGraphics7CGFloatV_tF', symObjAddr: 0x4F8, symBinAddr: 0x155EAC, symSize: 0x2E0 } + - { offset: 0x1F922F, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15continuosCornerSbvgTo', symObjAddr: 0x7D8, symBinAddr: 0x15618C, symSize: 0x8 } + - { offset: 0x1F9275, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15continuosCornerSbvsTo', symObjAddr: 0x7E0, symBinAddr: 0x156194, symSize: 0x64 } + - { offset: 0x1F92B4, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x844, symBinAddr: 0x1561F8, symSize: 0x8 } + - { offset: 0x1F92D0, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15colorIdentifierSivsTo', symObjAddr: 0x84C, symBinAddr: 0x156200, symSize: 0x30 } + - { offset: 0x1F9308, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15colorIdentifierSivs', symObjAddr: 0x87C, symBinAddr: 0x156230, symSize: 0x120 } + - { offset: 0x1F93B4, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE18showSkeletonLoaderyyF', symObjAddr: 0x99C, symBinAddr: 0x156350, symSize: 0x3B4 } + - { offset: 0x1F9484, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE20removeSkeletonLoaderyyF', symObjAddr: 0xD50, symBinAddr: 0x156704, symSize: 0x268 } + - { offset: 0x1F9C54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x0, symBinAddr: 0x15696C, symSize: 0x164 } + - { offset: 0x1F9E43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewCfETo', symObjAddr: 0x8B4, symBinAddr: 0x157220, symSize: 0x4C } + - { offset: 0x1F9E72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewCMa', symObjAddr: 0x900, symBinAddr: 0x15726C, symSize: 0x20 } + - { offset: 0x1F9EE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x0, symBinAddr: 0x15696C, symSize: 0x164 } + - { offset: 0x1F9F56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x164, symBinAddr: 0x156AD0, symSize: 0x28 } + - { offset: 0x1F9FC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC14layoutSubviewsyyF', symObjAddr: 0x18C, symBinAddr: 0x156AF8, symSize: 0xB0 } + - { offset: 0x1FA0C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC14layoutSubviewsyyFTo', symObjAddr: 0x23C, symBinAddr: 0x156BA8, symSize: 0x28 } + - { offset: 0x1FA111, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC4drawyySo6CGRectVF', symObjAddr: 0x264, symBinAddr: 0x156BD0, symSize: 0x59C } + - { offset: 0x1FA461, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC4drawyySo6CGRectVFTo', symObjAddr: 0x800, symBinAddr: 0x15716C, symSize: 0x58 } + - { offset: 0x1FA498, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x858, symBinAddr: 0x1571C4, symSize: 0x2C } + - { offset: 0x1FA4F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewCfD', symObjAddr: 0x884, symBinAddr: 0x1571F0, symSize: 0x30 } + - { offset: 0x1FA8D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseStringySSSgSSKFAA9XMLParserV10AttributesC_Tg5', symObjAddr: 0x0, symBinAddr: 0x15728C, symSize: 0xC0 } + - { offset: 0x1FA92C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseStringySSSgSSKFAA9XMLParserV10AttributesC_Tg5', symObjAddr: 0x0, symBinAddr: 0x15728C, symSize: 0xC0 } + - { offset: 0x1FACAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV8parseSVGyAA3DOMO0F0CAA3XMLO7ElementCKF', symObjAddr: 0xC0, symBinAddr: 0x15734C, symSize: 0xA70 } + - { offset: 0x1FB25F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseSVGDefsyAA3DOMO3SVGC4DefsVAA3XMLO7ElementCKF', symObjAddr: 0xB70, symBinAddr: 0x157DBC, symSize: 0x3D0 } + - { offset: 0x1FB64A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseClipPathsySayAA3DOMO0F4PathVGAA3XMLO7ElementCKF', symObjAddr: 0xF40, symBinAddr: 0x15818C, symSize: 0x484 } + - { offset: 0x1FBD79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10parseMasksySayAA3DOMO4MaskVGAA3XMLO7ElementCKF', symObjAddr: 0x13C4, symBinAddr: 0x158610, symSize: 0x46C } + - { offset: 0x1FC4A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV13parsePatternsySayAA3DOMO7PatternVGAA3XMLO7ElementCKF', symObjAddr: 0x1830, symBinAddr: 0x158A7C, symSize: 0x498 } + - { offset: 0x1FCA68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV15findDefElements6withinSayAA3XMLO7ElementCGAI_tF', symObjAddr: 0x1CC8, symBinAddr: 0x158F14, symSize: 0x22C } + - { offset: 0x1FCE9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17parseDefsElementsySDySSAA3DOMO15GraphicsElementCGAA3XMLO0J0CKF', symObjAddr: 0x1EF4, symBinAddr: 0x159140, symSize: 0x374 } + - { offset: 0x1FD151, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE5parse_3expqd__SgSS_qd__SSKXEtKlFAA9XMLParserV10AttributesC_SfTg5', symObjAddr: 0x2268, symBinAddr: 0x1594B4, symSize: 0xE0 } + - { offset: 0x1FD1D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParser_pAA3DOMO22PresentationAttributesVs5Error_pIegnrzo_SDyS2SGAFsAG_pIeggrzo_TR', symObjAddr: 0x2348, symBinAddr: 0x159594, symSize: 0x88 } + - { offset: 0x1FD1EF, size: 0x8, addend: 0x0, symName: '_$sxq_xq_Iegnnrr_x3key_q_5valuetx_q_tIegnr_SHRzr0_lTRSS_8PenNavUI3DOMO15GraphicsElementCTG5071$sSD5merge_16uniquingKeysWithySDyxq_Gn_q_q__q_tKXEtKFx_q_tx_q_tcfU_SS_8cd9UI3DOMO15gH4CTG5Tf3nnpf_n', symObjAddr: 0x23D0, symBinAddr: 0x15961C, symSize: 0x34 } + - { offset: 0x1FD2AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parsePercentageySfSgSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_TG5', symObjAddr: 0x2404, symBinAddr: 0x159650, symSize: 0x28 } + - { offset: 0x1FD3A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parseCoordinateySfSgSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_TG5TA', symObjAddr: 0x2454, symBinAddr: 0x159678, symSize: 0x28 } + - { offset: 0x1FD48F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseViewBoxyAA3DOMO3SVGC0fG0VSgSSSgKFTf4nd_n', symObjAddr: 0x247C, symBinAddr: 0x1596A0, symSize: 0x33C } + - { offset: 0x1FD7B1, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV5merge_8isUnique16uniquingKeysWithyqd__n_Sbq_q__q_tKXEtKSTRd__x_q_t7ElementRtd__lFSS_8PenNavUI3DOMO08GraphicsI0Cs15LazyMapSequenceVySDySSALGSS_ALtGTg503$s8jk54UI9XMLParserV12parseSVGDefsyAA3DOMO3SVGC4DefsVAA3XMLO7i13CKFySDySSAF08N27K0CGz_ANtKXEfU_A2P_APtXEfU_Tf1nncn_nTf4gnn_n', symObjAddr: 0x27B8, symBinAddr: 0x1599DC, symSize: 0x280 } + - { offset: 0x1FD95E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV22parseStyleSheetElementyAA3DOMO0fG0VSSSgKFAF22PresentationAttributesVAA15AttributeParser_pKcACcfu_AkaL_pKcfu0_TA', symObjAddr: 0x2AC0, symBinAddr: 0x159C80, symSize: 0x1C } + - { offset: 0x1FD972, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParser_pAA3DOMO22PresentationAttributesVs5Error_pIegnrzo_SDyS2SGAFsAG_pIeggrzo_TRTA', symObjAddr: 0x2ADC, symBinAddr: 0x159C9C, symSize: 0x18 } + - { offset: 0x1FD9DA, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV9mapValuesyAByxqd__Gqd__q_KXEKlF8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGAG22PresentationAttributesVTg5010$sSDyS2SG8ef9UI3DOMO22lM35Vs5Error_pIggrzo_AaFsAG_pIegnrzo_TRAlNs0U0_pIggrzo_Tf1cn_nTf4ng_n', symObjAddr: 0x2AF4, symBinAddr: 0x159CB4, symSize: 0x230 } + - { offset: 0x1FDAA6, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI3DOMO15GraphicsElementCGWOh', symObjAddr: 0x2E10, symBinAddr: 0x159EE4, symSize: 0x40 } + - { offset: 0x1FE5D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientC2idAESS_tcfc', symObjAddr: 0x0, symBinAddr: 0x15A3C8, symSize: 0xA8 } + - { offset: 0x1FE683, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCfE', symObjAddr: 0x110, symBinAddr: 0x15A470, symSize: 0x34 } + - { offset: 0x1FE6B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCMU', symObjAddr: 0x1A8, symBinAddr: 0x15A508, symSize: 0x8 } + - { offset: 0x1FE6C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCMa', symObjAddr: 0x1B0, symBinAddr: 0x15A510, symSize: 0x38 } + - { offset: 0x1FE6D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCMr', symObjAddr: 0x1E8, symBinAddr: 0x15A548, symSize: 0xA4 } + - { offset: 0x1FE6EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientC4StopVMa', symObjAddr: 0x384, symBinAddr: 0x15A5EC, symSize: 0x10 } + - { offset: 0x1FE70F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x394, symBinAddr: 0x15A5FC, symSize: 0xC } + - { offset: 0x1FE74C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientC2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x3A0, symBinAddr: 0x15A608, symSize: 0xBC } + - { offset: 0x1FE7D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientC2idAESS_tcfc', symObjAddr: 0x0, symBinAddr: 0x15A3C8, symSize: 0xA8 } + - { offset: 0x1FE843, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCfD', symObjAddr: 0x144, symBinAddr: 0x15A4A4, symSize: 0x64 } + - { offset: 0x1FECD4, size: 0x8, addend: 0x0, symName: '_$sSbIegy_SbIeyBy_TR', symObjAddr: 0x0, symBinAddr: 0x15A6C4, symSize: 0x3C } + - { offset: 0x1FF046, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorCfETo', symObjAddr: 0x1054, symBinAddr: 0x15B718, symSize: 0x58 } + - { offset: 0x1FF075, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorCMa', symObjAddr: 0x10AC, symBinAddr: 0x15B770, symSize: 0x20 } + - { offset: 0x1FF089, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC15startAnimiation8typeEdgey7Penguin0I7TypeNewO_tFySbcfU_TA', symObjAddr: 0x10F0, symBinAddr: 0x15B7B4, symSize: 0x8 } + - { offset: 0x1FF09D, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE7fadeOut_5delay10completionySd_SdySbctFyycfU_TA', symObjAddr: 0x10F8, symBinAddr: 0x15B7BC, symSize: 0x8 } + - { offset: 0x1FF0B1, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1100, symBinAddr: 0x15B7C4, symSize: 0x10 } + - { offset: 0x1FF0C5, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1110, symBinAddr: 0x15B7D4, symSize: 0x8 } + - { offset: 0x1FF0D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC15startAnimiation8typeEdgey7Penguin0I7TypeNewO_tFySo7NSTimerCYbcfU0_TA', symObjAddr: 0x1118, symBinAddr: 0x15B7DC, symSize: 0x14 } + - { offset: 0x1FF10B, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE6fadeIn_5delay10completionySd_SdySbctFyycfU_TA', symObjAddr: 0x112C, symBinAddr: 0x15B7F0, symSize: 0x8 } + - { offset: 0x1FF11F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC10commonInityyFyyScMYccfU_TA', symObjAddr: 0x11BC, symBinAddr: 0x15B7F8, symSize: 0x8 } + - { offset: 0x1FF1F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC2upSo11UIImageViewCSgvgTo', symObjAddr: 0x3C, symBinAddr: 0x15A700, symSize: 0x20 } + - { offset: 0x1FF256, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC2upSo11UIImageViewCSgvsTo', symObjAddr: 0x5C, symBinAddr: 0x15A720, symSize: 0x14 } + - { offset: 0x1FF2A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC4viewSo6UIViewCSgvgTo', symObjAddr: 0x70, symBinAddr: 0x15A734, symSize: 0x10 } + - { offset: 0x1FF2BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC4viewSo6UIViewCSgvgTo', symObjAddr: 0x70, symBinAddr: 0x15A734, symSize: 0x10 } + - { offset: 0x1FF2FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC4viewSo6UIViewCSgvsTo', symObjAddr: 0x80, symBinAddr: 0x15A744, symSize: 0x34 } + - { offset: 0x1FF34E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC14topAnchorImageSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0xB4, symBinAddr: 0x15A778, symSize: 0x20 } + - { offset: 0x1FF3A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC14topAnchorImageSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0xD4, symBinAddr: 0x15A798, symSize: 0x14 } + - { offset: 0x1FF3F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5titleSo7UILabelCSgvgTo', symObjAddr: 0xE8, symBinAddr: 0x15A7AC, symSize: 0x20 } + - { offset: 0x1FF453, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5titleSo7UILabelCSgvsTo', symObjAddr: 0x108, symBinAddr: 0x15A7CC, symSize: 0x14 } + - { offset: 0x1FF4B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x11C, symBinAddr: 0x15A7E0, symSize: 0xD0 } + - { offset: 0x1FF4E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1EC, symBinAddr: 0x15A8B0, symSize: 0xBC } + - { offset: 0x1FF517, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2A8, symBinAddr: 0x15A96C, symSize: 0x28 } + - { offset: 0x1FF57B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC10commonInityyF', symObjAddr: 0x2D0, symBinAddr: 0x15A994, symSize: 0x33C } + - { offset: 0x1FF5FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC10commonInityyFyyScMYccfU_', symObjAddr: 0x60C, symBinAddr: 0x15ACD0, symSize: 0x1F4 } + - { offset: 0x1FF720, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC15startAnimiation8typeEdgey7Penguin0I7TypeNewO_tF', symObjAddr: 0x800, symBinAddr: 0x15AEC4, symSize: 0x6D0 } + - { offset: 0x1FF90E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC15startAnimiation8typeEdgey7Penguin0I7TypeNewO_tFySbcfU_', symObjAddr: 0xED0, symBinAddr: 0x15B594, symSize: 0x154 } + - { offset: 0x1FF9D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorCfD', symObjAddr: 0x1024, symBinAddr: 0x15B6E8, symSize: 0x30 } + - { offset: 0x1FFDA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC14sharedInstance33_85465E89B3ABB144AF46DA017B27447ELLACSgvpZ', symObjAddr: 0x1410, symBinAddr: 0x37AEC8, symSize: 0x0 } + - { offset: 0x2001C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerCMa', symObjAddr: 0x109C, symBinAddr: 0x15C8D4, symSize: 0x20 } + - { offset: 0x2001DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVWOh', symObjAddr: 0x1148, symBinAddr: 0x15C980, symSize: 0x34 } + - { offset: 0x2001F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF7ForEdgeyySiFySayAA13MessageDetailCGcfU_TA', symObjAddr: 0x126C, symBinAddr: 0x15C9D8, symSize: 0x8 } + - { offset: 0x200205, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF7ForEdgeyySiFySayAA13MessageDetailCGcfU_yyScMYccfU_TA', symObjAddr: 0x12B8, symBinAddr: 0x15C9E0, symSize: 0x20 } + - { offset: 0x200219, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x12D8, symBinAddr: 0x15CA00, symSize: 0x10 } + - { offset: 0x20022D, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x12E8, symBinAddr: 0x15CA10, symSize: 0x8 } + - { offset: 0x200241, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF8ForFlooryySiFySayAA13MessageDetailCGcfU_TA', symObjAddr: 0x1384, symBinAddr: 0x15CA18, symSize: 0x8 } + - { offset: 0x200255, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF8ForFlooryySiFySayAA13MessageDetailCGcfU_yyScMYccfU_TA', symObjAddr: 0x138C, symBinAddr: 0x15CA20, symSize: 0x20 } + - { offset: 0x200420, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF8ForFlooryySiF', symObjAddr: 0x10, symBinAddr: 0x15B848, symSize: 0x180 } + - { offset: 0x200528, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF8ForFlooryySiFySayAA13MessageDetailCGcfU_', symObjAddr: 0x190, symBinAddr: 0x15B9C8, symSize: 0x270 } + - { offset: 0x2005DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC011handleFloorF033_85465E89B3ABB144AF46DA017B27447ELLyyF', symObjAddr: 0x400, symBinAddr: 0x15BC38, symSize: 0x2D0 } + - { offset: 0x200B0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF7ForEdgeyySiF', symObjAddr: 0x6D0, symBinAddr: 0x15BF08, symSize: 0x140 } + - { offset: 0x200C16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF7ForEdgeyySiFySayAA13MessageDetailCGcfU_', symObjAddr: 0x810, symBinAddr: 0x15C048, symSize: 0x270 } + - { offset: 0x200C78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC06handleF7ForEdge33_85465E89B3ABB144AF46DA017B27447ELLyyF', symObjAddr: 0xAD8, symBinAddr: 0x15C310, symSize: 0x2D0 } + - { offset: 0x20122B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC20handleMessageDisplay33_85465E89B3ABB144AF46DA017B27447ELL7messageyAA0I6DetailC_tF', symObjAddr: 0xDA8, symBinAddr: 0x15C5E0, symSize: 0x2B0 } + - { offset: 0x201360, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerCfD', symObjAddr: 0x1058, symBinAddr: 0x15C890, symSize: 0x44 } + - { offset: 0x2013BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC6sharedACvgZTf4d_n', symObjAddr: 0x10BC, symBinAddr: 0x15C8F4, symSize: 0x8C } + - { offset: 0x2017DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7ElementCMa', symObjAddr: 0x50, symBinAddr: 0x15CA48, symSize: 0x20 } + - { offset: 0x2017F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementCfE', symObjAddr: 0x70, symBinAddr: 0x15CA68, symSize: 0x3C } + - { offset: 0x201859, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementCMU', symObjAddr: 0x118, symBinAddr: 0x15CB10, symSize: 0x8 } + - { offset: 0x20186D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementCMr', symObjAddr: 0x134, symBinAddr: 0x15CB2C, symSize: 0x78 } + - { offset: 0x201881, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4LineCMU', symObjAddr: 0x1B0, symBinAddr: 0x15CBA8, symSize: 0x8 } + - { offset: 0x201895, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6CircleCMU', symObjAddr: 0x1DC, symBinAddr: 0x15CBD4, symSize: 0x8 } + - { offset: 0x2018A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6CircleCMr', symObjAddr: 0x1F8, symBinAddr: 0x15CBF0, symSize: 0x50 } + - { offset: 0x2018BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7EllipseCMU', symObjAddr: 0x248, symBinAddr: 0x15CC40, symSize: 0x8 } + - { offset: 0x2018D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4RectCMU', symObjAddr: 0x308, symBinAddr: 0x15CD00, symSize: 0x8 } + - { offset: 0x2018E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4RectCMr', symObjAddr: 0x324, symBinAddr: 0x15CD1C, symSize: 0x54 } + - { offset: 0x2018F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8PolylineCfE', symObjAddr: 0x378, symBinAddr: 0x15CD70, symSize: 0x10 } + - { offset: 0x201926, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8PolylineCMU', symObjAddr: 0x394, symBinAddr: 0x15CD8C, symSize: 0x8 } + - { offset: 0x20193A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PolygonCfE', symObjAddr: 0x3B0, symBinAddr: 0x15CDA8, symSize: 0x10 } + - { offset: 0x201967, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PolygonCMU', symObjAddr: 0x3CC, symBinAddr: 0x15CDC4, symSize: 0x8 } + - { offset: 0x20197B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5GroupCfE', symObjAddr: 0x3EC, symBinAddr: 0x15CDE4, symSize: 0x10 } + - { offset: 0x2019A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5GroupCMU', symObjAddr: 0x470, symBinAddr: 0x15CE68, symSize: 0x8 } + - { offset: 0x2019EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementCfD', symObjAddr: 0xAC, symBinAddr: 0x15CAA4, symSize: 0x6C } + - { offset: 0x201A2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5GroupCAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0x500, symBinAddr: 0x15CEB4, symSize: 0x14 } + - { offset: 0x201E62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOMa', symObjAddr: 0x244, symBinAddr: 0x15D114, symSize: 0x38 } + - { offset: 0x201E76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwCP', symObjAddr: 0x340, symBinAddr: 0x15D14C, symSize: 0xE4 } + - { offset: 0x201E8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwxx', symObjAddr: 0x424, symBinAddr: 0x15D230, symSize: 0x68 } + - { offset: 0x201E9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwcp', symObjAddr: 0x48C, symBinAddr: 0x15D298, symSize: 0xC0 } + - { offset: 0x201EB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwca', symObjAddr: 0x54C, symBinAddr: 0x15D358, symSize: 0x11C } + - { offset: 0x201EC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwtk', symObjAddr: 0x6A4, symBinAddr: 0x15D474, symSize: 0xC0 } + - { offset: 0x201EDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwta', symObjAddr: 0x764, symBinAddr: 0x15D534, symSize: 0x11C } + - { offset: 0x201EEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwet', symObjAddr: 0x880, symBinAddr: 0x15D650, symSize: 0xC } + - { offset: 0x201F02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwst', symObjAddr: 0x8DC, symBinAddr: 0x15D6AC, symSize: 0xC } + - { offset: 0x201F16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwug', symObjAddr: 0x940, symBinAddr: 0x15D710, symSize: 0x3C } + - { offset: 0x201F2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwui', symObjAddr: 0x980, symBinAddr: 0x15D74C, symSize: 0x44 } + - { offset: 0x201F3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOMr', symObjAddr: 0x9C4, symBinAddr: 0x15D790, symSize: 0x54 } + - { offset: 0x201F66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x15CED0, symSize: 0x4 } + - { offset: 0x201F7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x15CED0, symSize: 0x4 } + - { offset: 0x201F90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x4, symBinAddr: 0x15CED4, symSize: 0x240 } + - { offset: 0x20237D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC8dayLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x15D7E4, symSize: 0x20 } + - { offset: 0x202583, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellCfETo', symObjAddr: 0x9F4, symBinAddr: 0x15E1D8, symSize: 0x38 } + - { offset: 0x2025B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellCMa', symObjAddr: 0xA2C, symBinAddr: 0x15E210, symSize: 0x20 } + - { offset: 0x2026C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC8dayLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x15D7E4, symSize: 0x20 } + - { offset: 0x202723, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC8dayLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x15D804, symSize: 0x14 } + - { offset: 0x202774, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC10hoursLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x15D818, symSize: 0x20 } + - { offset: 0x2027C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC10hoursLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x15D838, symSize: 0x14 } + - { offset: 0x20281A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC12awakeFromNibyyFTo', symObjAddr: 0x68, symBinAddr: 0x15D84C, symSize: 0x68 } + - { offset: 0x2029ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC9configure4withyAA0eD0VSg_tF', symObjAddr: 0xD0, symBinAddr: 0x15D8B4, symSize: 0x768 } + - { offset: 0x202E5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x838, symBinAddr: 0x15E01C, symSize: 0xE4 } + - { offset: 0x202EDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x91C, symBinAddr: 0x15E100, symSize: 0xA8 } + - { offset: 0x202F11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellCfD', symObjAddr: 0x9C4, symBinAddr: 0x15E1A8, symSize: 0x30 } + - { offset: 0x2032AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x15E230, symSize: 0xC } + - { offset: 0x203314, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0xC, symBinAddr: 0x15E23C, symSize: 0xD0 } + - { offset: 0x2033BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xDC, symBinAddr: 0x15E30C, symSize: 0xAC } + - { offset: 0x203426, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x188, symBinAddr: 0x15E3B8, symSize: 0xCC } + - { offset: 0x2034BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs28CustomDebugStringConvertibleAAsAHP16debugDescriptionSSvgTW', symObjAddr: 0x3D8, symBinAddr: 0x15E5F0, symSize: 0x28 } + - { offset: 0x2034D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs23CustomStringConvertibleAAsAHP11descriptionSSvgTW', symObjAddr: 0x400, symBinAddr: 0x15E618, symSize: 0x28 } + - { offset: 0x2034F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x848, symBinAddr: 0x15EA60, symSize: 0xC } + - { offset: 0x20355A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x854, symBinAddr: 0x15EA6C, symSize: 0xD4 } + - { offset: 0x203605, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x928, symBinAddr: 0x15EB40, symSize: 0xB0 } + - { offset: 0x20366C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x9D8, symBinAddr: 0x15EBF0, symSize: 0xD0 } + - { offset: 0x2036FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0xC34, symBinAddr: 0x15EE34, symSize: 0x28 } + - { offset: 0x203717, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0xC5C, symBinAddr: 0x15EE5C, symSize: 0x28 } + - { offset: 0x203A88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseCMa', symObjAddr: 0xCC0, symBinAddr: 0x15EEC0, symSize: 0x20 } + - { offset: 0x203A9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleCMa', symObjAddr: 0xF5C, symBinAddr: 0x15F15C, symSize: 0x20 } + - { offset: 0x203AB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOAEs0H3KeyAAWl', symObjAddr: 0x1348, symBinAddr: 0x15F47C, symSize: 0x40 } + - { offset: 0x203AC4, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI15LocalizedObjectVGMa', symObjAddr: 0x13A8, symBinAddr: 0x15F4BC, symSize: 0x50 } + - { offset: 0x203AD8, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI21GetCampusInfoResponseC8ScheduleCGMa', symObjAddr: 0x14B0, symBinAddr: 0x15F584, symSize: 0x50 } + - { offset: 0x203AEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOAGs0I3KeyAAWl', symObjAddr: 0x1500, symBinAddr: 0x15F5D4, symSize: 0x40 } + - { offset: 0x203B00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOMa', symObjAddr: 0x1774, symBinAddr: 0x15F6B4, symSize: 0x10 } + - { offset: 0x203B14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOMa', symObjAddr: 0x18D8, symBinAddr: 0x15F6C4, symSize: 0x10 } + - { offset: 0x203B28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x18E8, symBinAddr: 0x15F6D4, symSize: 0x4 } + - { offset: 0x203B3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x18EC, symBinAddr: 0x15F6D8, symSize: 0x40 } + - { offset: 0x203B50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSHAASQWb', symObjAddr: 0x192C, symBinAddr: 0x15F718, symSize: 0x4 } + - { offset: 0x203B64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOAGSQAAWl', symObjAddr: 0x1930, symBinAddr: 0x15F71C, symSize: 0x40 } + - { offset: 0x203B78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs0I3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1970, symBinAddr: 0x15F75C, symSize: 0x4 } + - { offset: 0x203B8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOAGs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1974, symBinAddr: 0x15F760, symSize: 0x40 } + - { offset: 0x203BA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs0I3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x19B4, symBinAddr: 0x15F7A0, symSize: 0x4 } + - { offset: 0x203BB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOAGs23CustomStringConvertibleAAWl', symObjAddr: 0x19B8, symBinAddr: 0x15F7A4, symSize: 0x40 } + - { offset: 0x203BC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x19F8, symBinAddr: 0x15F7E4, symSize: 0x4 } + - { offset: 0x203BDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x19FC, symBinAddr: 0x15F7E8, symSize: 0x40 } + - { offset: 0x203BF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1A3C, symBinAddr: 0x15F828, symSize: 0x4 } + - { offset: 0x203C04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1A40, symBinAddr: 0x15F82C, symSize: 0x40 } + - { offset: 0x203C50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSYAASY8rawValuexSg03RawL0Qz_tcfCTW', symObjAddr: 0x254, symBinAddr: 0x15E484, symSize: 0x2C } + - { offset: 0x203C79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSYAASY8rawValue03RawL0QzvgTW', symObjAddr: 0x280, symBinAddr: 0x15E4B0, symSize: 0x90 } + - { offset: 0x203CB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs0I3KeyAAsAHP11stringValueSSvgTW', symObjAddr: 0x310, symBinAddr: 0x15E540, symSize: 0x8C } + - { offset: 0x203D09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs0I3KeyAAsAHP11stringValuexSgSS_tcfCTW', symObjAddr: 0x39C, symBinAddr: 0x15E5CC, symSize: 0x24 } + - { offset: 0x203D7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleCfD', symObjAddr: 0x428, symBinAddr: 0x15E640, symSize: 0x2C } + - { offset: 0x203DB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC6encode2toys7Encoder_p_tKF', symObjAddr: 0x454, symBinAddr: 0x15E66C, symSize: 0x1C8 } + - { offset: 0x203DE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC4fromAEs7Decoder_p_tKcfc', symObjAddr: 0x61C, symBinAddr: 0x15E834, symSize: 0x1E4 } + - { offset: 0x203E15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x828, symBinAddr: 0x15EA40, symSize: 0x20 } + - { offset: 0x203E5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSYAASY8rawValuexSg03RawK0Qz_tcfCTW', symObjAddr: 0xAA8, symBinAddr: 0x15ECC0, symSize: 0x2C } + - { offset: 0x203E83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0xAD4, symBinAddr: 0x15ECEC, symSize: 0x94 } + - { offset: 0x203EBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xB68, symBinAddr: 0x15ED80, symSize: 0x90 } + - { offset: 0x203F0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0xBF8, symBinAddr: 0x15EE10, symSize: 0x24 } + - { offset: 0x203F6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseCfD', symObjAddr: 0xC84, symBinAddr: 0x15EE84, symSize: 0x3C } + - { offset: 0x203FA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0xCE0, symBinAddr: 0x15EEE0, symSize: 0x27C } + - { offset: 0x203FD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0xF7C, symBinAddr: 0x15F17C, symSize: 0x2B8 } + - { offset: 0x20400A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x12C0, symBinAddr: 0x15F45C, symSize: 0x20 } + - { offset: 0x204024, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysO8rawValueAGSgSS_tcfCTf4nd_n', symObjAddr: 0x1A80, symBinAddr: 0x15F86C, symSize: 0x5C } + - { offset: 0x20405B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x1ADC, symBinAddr: 0x15F8C8, symSize: 0x5C } + - { offset: 0x20489F, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin8ScheduleC_Tg5013$s8PenNavUI14F66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1cn_n', symObjAddr: 0x6E0, symBinAddr: 0x160004, symSize: 0x100 } + - { offset: 0x204C66, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin8ScheduleC_Tg5013$s8PenNavUI14F66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1nnncn_n', symObjAddr: 0x7E0, symBinAddr: 0x160104, symSize: 0x584 } + - { offset: 0x205225, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_Si3key_Say7Penguin8ScheduleCG5valuet_Tg5013$s8PenNavUI14G87HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbSi3key_AK5valuet_SiAM_AkNttXEfU0_Tf1nnncn_n', symObjAddr: 0xD64, symBinAddr: 0x160688, symSize: 0x39C } + - { offset: 0x2056F1, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry7Penguin8ScheduleCG_Tg5013$s8PenNavUI14J66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1nncn_n', symObjAddr: 0x1100, symBinAddr: 0x160A24, symSize: 0x148 } + - { offset: 0x205881, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin8ScheduleC_Tg5013$s8PenNavUI14G66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1nncn_n', symObjAddr: 0x1248, symBinAddr: 0x160B6C, symSize: 0x26C } + - { offset: 0x205C06, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKFSi3key_Say7Penguin8ScheduleCG5valuet_Tg5013$s8PenNavUI14H87HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbSi3key_AK5valuet_SiAM_AkNttXEfU0_Tf1nncn_n', symObjAddr: 0x14B4, symBinAddr: 0x160DD8, symSize: 0x26C } + - { offset: 0x205FA1, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin8ScheduleC_Tg5013$s8PenNavUI14H66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1nnnnc_n', symObjAddr: 0x1720, symBinAddr: 0x161044, symSize: 0x360 } + - { offset: 0x206122, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlFSi3key_Say7Penguin8ScheduleCG5valuet_Tg5013$s8PenNavUI14I87HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbSi3key_AK5valuet_SiAM_AkNttXEfU0_Tf1nnnnc_n', symObjAddr: 0x1A80, symBinAddr: 0x1613A4, symSize: 0x200 } + - { offset: 0x206243, size: 0x8, addend: 0x0, symName: '_$sSTsE21_copySequenceContents12initializing8IteratorQz_SitSry7ElementQzG_tFSDySiSay7Penguin8ScheduleCGG_Tg5', symObjAddr: 0x1DA0, symBinAddr: 0x1615B8, symSize: 0x154 } + - { offset: 0x20631D, size: 0x8, addend: 0x0, symName: '_$sSTsE21_copySequenceContents12initializing8IteratorQz_SitSry7ElementQzG_tFSD4KeysVyS2S_G_Tg5', symObjAddr: 0x1EF4, symBinAddr: 0x16170C, symSize: 0x154 } + - { offset: 0x2063EC, size: 0x8, addend: 0x0, symName: '_$sSTsE21_copySequenceContents12initializing8IteratorQz_SitSry7ElementQzG_tFShy10Foundation3URLVG_Tg5', symObjAddr: 0x2274, symBinAddr: 0x161A8C, symSize: 0x228 } + - { offset: 0x20648D, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x249C, symBinAddr: 0x161CB4, symSize: 0x14 } + - { offset: 0x2064C5, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF7Penguin8ScheduleC_Tg5', symObjAddr: 0x24B0, symBinAddr: 0x161CC8, symSize: 0x14 } + - { offset: 0x2064FD, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyFSi3key_Say7Penguin8ScheduleCG5valuet_Tg5', symObjAddr: 0x24C4, symBinAddr: 0x161CDC, symSize: 0x14 } + - { offset: 0x206535, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyFSS_Tg5', symObjAddr: 0x24D8, symBinAddr: 0x161CF0, symSize: 0x14 } + - { offset: 0x20656D, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI8FavoriteC_Tg5', symObjAddr: 0x24EC, symBinAddr: 0x161D04, symSize: 0x14 } + - { offset: 0x2065A5, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI5PlaceC_Tg5', symObjAddr: 0x2500, symBinAddr: 0x161D18, symSize: 0x14 } + - { offset: 0x2065DD, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF7Penguin11POICategoryV_Tg5', symObjAddr: 0x2514, symBinAddr: 0x161D2C, symSize: 0x14 } + - { offset: 0x206615, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF7Penguin5FloorC_Tg5', symObjAddr: 0x253C, symBinAddr: 0x161D40, symSize: 0x14 } + - { offset: 0x20664D, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x2550, symBinAddr: 0x161D54, symSize: 0x14 } + - { offset: 0x206685, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF7Penguin10PoiPolygonV_Tg5', symObjAddr: 0x2564, symBinAddr: 0x161D68, symSize: 0x14 } + - { offset: 0x206A88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA7CGTypesVGWOb', symObjAddr: 0x4894, symBinAddr: 0x163FE0, symSize: 0x48 } + - { offset: 0x206AB6, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tFSnySiG_Tg5', symObjAddr: 0x0, symBinAddr: 0x15F924, symSize: 0x88 } + - { offset: 0x206B63, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI15RendererCommandOyAC11CGTextTypesVG_Tg5', symObjAddr: 0x88, symBinAddr: 0x15F9AC, symSize: 0xA4 } + - { offset: 0x206C18, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AC11CGTextTypesV_G_Tg5', symObjAddr: 0x12C, symBinAddr: 0x15FA50, symSize: 0xA8 } + - { offset: 0x206CC5, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI15RendererCommandOyAC7CGTypesVG_Tg5', symObjAddr: 0x1E0, symBinAddr: 0x15FB04, symSize: 0xE4 } + - { offset: 0x206D82, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AC7CGTypesV_G_Tg5', symObjAddr: 0x2C4, symBinAddr: 0x15FBE8, symSize: 0xA8 } + - { offset: 0x206E37, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI16FileDownloadData_p_Tg5', symObjAddr: 0x378, symBinAddr: 0x15FC9C, symSize: 0x98 } + - { offset: 0x206EEC, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tFSi_Tg5', symObjAddr: 0x410, symBinAddr: 0x15FD34, symSize: 0x84 } + - { offset: 0x206FA7, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin8ScheduleCG_Tg5013$s8PenNavUI14G66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1cn_n', symObjAddr: 0x530, symBinAddr: 0x15FE54, symSize: 0x68 } + - { offset: 0x207063, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVySi3key_Say7Penguin8ScheduleCG5valuetG_Tg5013$s8PenNavUI14H87HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbSi3key_AK5valuet_SiAM_AkNttXEfU0_Tf1cn_n', symObjAddr: 0x598, symBinAddr: 0x15FEBC, symSize: 0x148 } + - { offset: 0x20770E, size: 0x8, addend: 0x0, symName: '_$sSD8grouping2bySDyxSay7ElementQyd__GGqd__n_xADKXEtKcAERs_STRd__lufCSi_Say7Penguin8ScheduleCGTt1g5013$s8PenNavUI14E61HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSiAJXEfU_Tf1nc_nTf4g_n', symObjAddr: 0x258C, symBinAddr: 0x161D7C, symSize: 0x2BC } + - { offset: 0x207A76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x2848, symBinAddr: 0x162038, symSize: 0x260 } + - { offset: 0x207FBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV10isTodayOffySbSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x2AA8, symBinAddr: 0x162298, symSize: 0x270 } + - { offset: 0x20829A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV6isOpenySbSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x2D18, symBinAddr: 0x162508, symSize: 0x514 } + - { offset: 0x208622, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV23getNextOpeningTimeRangeySSSgSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x322C, symBinAddr: 0x162A1C, symSize: 0x81C } + - { offset: 0x208EBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV26getCurrentOpeningTimeRange8scheduleSSSgSay7Penguin0D0CGSg_tFZTf4nd_n', symObjAddr: 0x3A48, symBinAddr: 0x163238, symSize: 0x5A4 } + - { offset: 0x2092B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV6isTime33_5560619FF73D588933C2A2D07617F087LL_20earlierThanOrEqualToSb10Foundation14DateComponentsV_AItFZTf4nnd_n', symObjAddr: 0x3FEC, symBinAddr: 0x1637DC, symSize: 0xBC } + - { offset: 0x20936E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV20getRecentClosingTimeySSSgSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x40A8, symBinAddr: 0x163898, symSize: 0x708 } + - { offset: 0x209BC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOMa', symObjAddr: 0x164, symBinAddr: 0x164028, symSize: 0x10 } + - { offset: 0x209BDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOwet', symObjAddr: 0x174, symBinAddr: 0x164038, symSize: 0x90 } + - { offset: 0x209BF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOwst', symObjAddr: 0x204, symBinAddr: 0x1640C8, symSize: 0xB0 } + - { offset: 0x209C05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOMa', symObjAddr: 0x2B8, symBinAddr: 0x164178, symSize: 0x10 } + - { offset: 0x209CC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSHAASQWb', symObjAddr: 0x628, symBinAddr: 0x1644E8, symSize: 0x4 } + - { offset: 0x209CD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOACSQAAWl', symObjAddr: 0x62C, symBinAddr: 0x1644EC, symSize: 0x40 } + - { offset: 0x209D68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSHAASQWb', symObjAddr: 0xA40, symBinAddr: 0x164900, symSize: 0x4 } + - { offset: 0x209D7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOACSQAAWl', symObjAddr: 0xA44, symBinAddr: 0x164904, symSize: 0x40 } + - { offset: 0x209E4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOACSYAAWl', symObjAddr: 0x1AE0, symBinAddr: 0x16595C, symSize: 0x40 } + - { offset: 0x209E8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x454, symBinAddr: 0x164314, symSize: 0x84 } + - { offset: 0x209F45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSHAASH9hashValueSivgTW', symObjAddr: 0x4D8, symBinAddr: 0x164398, symSize: 0x60 } + - { offset: 0x209FC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x538, symBinAddr: 0x1643F8, symSize: 0x40 } + - { offset: 0x20A015, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x578, symBinAddr: 0x164438, symSize: 0x5C } + - { offset: 0x20A086, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x66C, symBinAddr: 0x16452C, symSize: 0xF8 } + - { offset: 0x20A19C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSHAASH9hashValueSivgTW', symObjAddr: 0x764, symBinAddr: 0x164624, symSize: 0x9C } + - { offset: 0x20A250, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x800, symBinAddr: 0x1646C0, symSize: 0x78 } + - { offset: 0x20A2C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x878, symBinAddr: 0x164738, symSize: 0x98 } + - { offset: 0x20A358, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x998, symBinAddr: 0x164858, symSize: 0x5C } + - { offset: 0x20A37B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x9F4, symBinAddr: 0x1648B4, symSize: 0x4C } + - { offset: 0x20A402, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleO8rawValueSSvg', symObjAddr: 0x2C8, symBinAddr: 0x164188, symSize: 0x18C } + - { offset: 0x20A445, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x5D4, symBinAddr: 0x164494, symSize: 0x2C } + - { offset: 0x20A46E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x600, symBinAddr: 0x1644C0, symSize: 0x28 } + - { offset: 0x20A4B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x910, symBinAddr: 0x1647D0, symSize: 0x2C } + - { offset: 0x20A4DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x93C, symBinAddr: 0x1647FC, symSize: 0x5C } + - { offset: 0x20A5F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleO12defaultFontsSDyACSo6UIFontCGvgZTf4d_n', symObjAddr: 0xA84, symBinAddr: 0x164944, symSize: 0xF58 } + - { offset: 0x20ADF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x1A20, symBinAddr: 0x16589C, symSize: 0x64 } + - { offset: 0x20AE30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x1A84, symBinAddr: 0x165900, symSize: 0x5C } + - { offset: 0x20B200, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15GeofenceManagerC03getD4ByIdy7Penguin0D6RegionVSgSSF', symObjAddr: 0x0, symBinAddr: 0x16599C, symSize: 0x460 } + - { offset: 0x20B224, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15GeofenceManagerC14sharedInstance33_96AC6CA8D8EAACF3DB2766691F1A97FALLACSgvpZ', symObjAddr: 0x4A8, symBinAddr: 0x37BF08, symSize: 0x0 } + - { offset: 0x20B3A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15GeofenceManagerCMa', symObjAddr: 0x484, symBinAddr: 0x165DFC, symSize: 0x20 } + - { offset: 0x20B475, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15GeofenceManagerC03getD4ByIdy7Penguin0D6RegionVSgSSF', symObjAddr: 0x0, symBinAddr: 0x16599C, symSize: 0x460 } + - { offset: 0x20BC5A, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateV8PenNavUIE07currentB4TimeSSvg', symObjAddr: 0x0, symBinAddr: 0x165E1C, symSize: 0x1C8 } + - { offset: 0x20BD4C, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateV8PenNavUIE07currentB4TimeSSvg', symObjAddr: 0x0, symBinAddr: 0x165E1C, symSize: 0x1C8 } + - { offset: 0x20BE56, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateV8PenNavUIE7timeAgoSSvg', symObjAddr: 0x1C8, symBinAddr: 0x165FE4, symSize: 0x5AC } + - { offset: 0x20C20F, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateV8PenNavUIE8toString6formatS2S_tF', symObjAddr: 0x774, symBinAddr: 0x166590, symSize: 0x240 } + - { offset: 0x20C75B, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_4, symObjAddr: 0x0, symBinAddr: 0x1667D0, symSize: 0xC } + - { offset: 0x20C76F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVMa', symObjAddr: 0x58, symBinAddr: 0x1667DC, symSize: 0x10 } + - { offset: 0x20C783, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4SizeVMa', symObjAddr: 0xBC, symBinAddr: 0x1667EC, symSize: 0x10 } + - { offset: 0x20C797, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeOMa', symObjAddr: 0xCC, symBinAddr: 0x1667FC, symSize: 0x10 } + - { offset: 0x20C826, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4SizeVSHAASQWb', symObjAddr: 0x224, symBinAddr: 0x166914, symSize: 0x4 } + - { offset: 0x20C83A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4SizeVAESQAAWl', symObjAddr: 0x228, symBinAddr: 0x166918, symSize: 0x40 } + - { offset: 0x20C8FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSHAASQWb', symObjAddr: 0x3EC, symBinAddr: 0x166ADC, symSize: 0x4 } + - { offset: 0x20C910, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVAESQAAWl', symObjAddr: 0x3F0, symBinAddr: 0x166AE0, symSize: 0x40 } + - { offset: 0x20C924, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwxx', symObjAddr: 0x45C, symBinAddr: 0x166B20, symSize: 0x28 } + - { offset: 0x20C938, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwcp', symObjAddr: 0x4A4, symBinAddr: 0x166B48, symSize: 0x70 } + - { offset: 0x20C94C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwca', symObjAddr: 0x514, symBinAddr: 0x166BB8, symSize: 0xB8 } + - { offset: 0x20C960, size: 0x8, addend: 0x0, symName: ___swift_memcpy33_8, symObjAddr: 0x5CC, symBinAddr: 0x166C70, symSize: 0x14 } + - { offset: 0x20C974, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwta', symObjAddr: 0x5E0, symBinAddr: 0x166C84, symSize: 0x90 } + - { offset: 0x20C988, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwet', symObjAddr: 0x670, symBinAddr: 0x166D14, symSize: 0x3C } + - { offset: 0x20C99C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwst', symObjAddr: 0x6AC, symBinAddr: 0x166D50, symSize: 0x4C } + - { offset: 0x20C9B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwug', symObjAddr: 0x6F8, symBinAddr: 0x166D9C, symSize: 0x1C } + - { offset: 0x20C9C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwui', symObjAddr: 0x718, symBinAddr: 0x166DB8, symSize: 0x24 } + - { offset: 0x20C9D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOMa', symObjAddr: 0x73C, symBinAddr: 0x166DDC, symSize: 0x10 } + - { offset: 0x20C9EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointVMa', symObjAddr: 0x74C, symBinAddr: 0x166DEC, symSize: 0x10 } + - { offset: 0x20CA00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointVSHAASQWb', symObjAddr: 0x75C, symBinAddr: 0x166DFC, symSize: 0x4 } + - { offset: 0x20CA14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointVAESQAAWl', symObjAddr: 0x760, symBinAddr: 0x166E00, symSize: 0x40 } + - { offset: 0x20CABB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x354, symBinAddr: 0x166A44, symSize: 0x60 } + - { offset: 0x20CB78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectV4hash4intoys6HasherVz_tF', symObjAddr: 0x268, symBinAddr: 0x166958, symSize: 0x7C } + - { offset: 0x20CD0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSHAASH9hashValueSivgTW', symObjAddr: 0x2E4, symBinAddr: 0x1669D4, symSize: 0x64 } + - { offset: 0x20CD96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x348, symBinAddr: 0x166A38, symSize: 0xC } + - { offset: 0x20CDC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x3B4, symBinAddr: 0x166AA4, symSize: 0x38 } + - { offset: 0x20D18B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x166E58, symSize: 0xFC } + - { offset: 0x20D22E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewCMa', symObjAddr: 0x234, symBinAddr: 0x16708C, symSize: 0x20 } + - { offset: 0x20D26D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x166E58, symSize: 0xFC } + - { offset: 0x20D2D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xFC, symBinAddr: 0x166F54, symSize: 0xE0 } + - { offset: 0x20D307, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1DC, symBinAddr: 0x167034, symSize: 0x28 } + - { offset: 0x20D321, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewCfD', symObjAddr: 0x204, symBinAddr: 0x16705C, symSize: 0x30 } + - { offset: 0x20D6D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MapStateOMa', symObjAddr: 0x164, symBinAddr: 0x1670AC, symSize: 0x10 } + - { offset: 0x20D6E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MapStateOSHAASQWb', symObjAddr: 0x174, symBinAddr: 0x1670BC, symSize: 0x4 } + - { offset: 0x20D6FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MapStateOACSQAAWl', symObjAddr: 0x178, symBinAddr: 0x1670C0, symSize: 0x40 } + - { offset: 0x20DF1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewCfETo', symObjAddr: 0x1284, symBinAddr: 0x168384, symSize: 0x4C } + - { offset: 0x20DF4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewCMa', symObjAddr: 0x12D0, symBinAddr: 0x1683D0, symSize: 0x20 } + - { offset: 0x20DF5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC25adaptivePresentationStyle3forSo07UIModalgH0VSo24UIPresentationControllerC_tFTo', symObjAddr: 0x12F0, symBinAddr: 0x1683F0, symSize: 0x8 } + - { offset: 0x20DF99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC33presentationControllerWillDismissyySo014UIPresentationG0CFTo', symObjAddr: 0x12F8, symBinAddr: 0x1683F8, symSize: 0x34 } + - { offset: 0x20DFED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC13isHighlightedSbvWyycfU0_TA', symObjAddr: 0x1350, symBinAddr: 0x168450, symSize: 0x1C } + - { offset: 0x20E001, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x136C, symBinAddr: 0x16846C, symSize: 0x10 } + - { offset: 0x20E015, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x137C, symBinAddr: 0x16847C, symSize: 0x8 } + - { offset: 0x20E029, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC13isHighlightedSbvWyycfU_TA', symObjAddr: 0x1384, symBinAddr: 0x168484, symSize: 0x20 } + - { offset: 0x20E03D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC8showMenuyyFyycfU_TA', symObjAddr: 0x13F8, symBinAddr: 0x1684A4, symSize: 0x8 } + - { offset: 0x20E052, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x0, symBinAddr: 0x167100, symSize: 0x164 } + - { offset: 0x20E0C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x164, symBinAddr: 0x167264, symSize: 0x20 } + - { offset: 0x20E0F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x184, symBinAddr: 0x167284, symSize: 0x154 } + - { offset: 0x20E16E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2D8, symBinAddr: 0x1673D8, symSize: 0x28 } + - { offset: 0x20E188, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC13isHighlightedSbvW', symObjAddr: 0x300, symBinAddr: 0x167400, symSize: 0x15C } + - { offset: 0x20E290, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC8showMenuyyF', symObjAddr: 0x5BC, symBinAddr: 0x1676BC, symSize: 0x2BC } + - { offset: 0x20E42D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC8showMenuyyFyycfU_', symObjAddr: 0x878, symBinAddr: 0x167978, symSize: 0x160 } + - { offset: 0x20E574, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC15handleLongPress33_B7783B3256895AABB8F462833D3413D5LLyySo06UILongH17GestureRecognizerCF', symObjAddr: 0x9D8, symBinAddr: 0x167AD8, symSize: 0x824 } + - { offset: 0x20E977, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC15handleLongPress33_B7783B3256895AABB8F462833D3413D5LLyySo06UILongH17GestureRecognizerCFTo', symObjAddr: 0x11FC, symBinAddr: 0x1682FC, symSize: 0x50 } + - { offset: 0x20E99F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC17gestureRecognizer_33shouldRecognizeSimultaneouslyWithSbSo09UIGestureG0C_AGtFTo', symObjAddr: 0x124C, symBinAddr: 0x16834C, symSize: 0x8 } + - { offset: 0x20E9B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewCfD', symObjAddr: 0x1254, symBinAddr: 0x168354, symSize: 0x30 } + - { offset: 0x20ED5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x16850C, symSize: 0xD0 } + - { offset: 0x20EE5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewCMa', symObjAddr: 0x228, symBinAddr: 0x168734, symSize: 0x20 } + - { offset: 0x20EEBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x16850C, symSize: 0xD0 } + - { offset: 0x20EF3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xD0, symBinAddr: 0x1685DC, symSize: 0x58 } + - { offset: 0x20EF8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC4drawyySo6CGRectVFTo', symObjAddr: 0x128, symBinAddr: 0x168634, symSize: 0x4 } + - { offset: 0x20EFA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC4drawyySo6CGRectVFTo', symObjAddr: 0x128, symBinAddr: 0x168634, symSize: 0x4 } + - { offset: 0x20F052, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC7asImageSo7UIImageCyF', symObjAddr: 0x12C, symBinAddr: 0x168638, symSize: 0xCC } + - { offset: 0x20F0D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewCfD', symObjAddr: 0x1F8, symBinAddr: 0x168704, symSize: 0x30 } + - { offset: 0x20F133, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC4drawyySo6CGRectVFTf4nd_n', symObjAddr: 0x248, symBinAddr: 0x168754, symSize: 0x1E0 } + - { offset: 0x20F5C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC06updateD012fontResponseySayAA7AppFontCG_tF', symObjAddr: 0x0, symBinAddr: 0x168934, symSize: 0x5B4 } + - { offset: 0x20F5ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC14sharedInstance33_DA3E1E5F5878F3E7D999A070F7070CF4LLACSgvpZ', symObjAddr: 0x11F0, symBinAddr: 0x37C0A8, symSize: 0x0 } + - { offset: 0x20F8EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerCMa', symObjAddr: 0xAEC, symBinAddr: 0x169420, symSize: 0x20 } + - { offset: 0x20F961, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC12registerFont33_DA3E1E5F5878F3E7D999A070F7070CF4LL7fontUrlSSSgSS_tFTf4nd_n', symObjAddr: 0xD54, symBinAddr: 0x169644, symSize: 0x3C4 } + - { offset: 0x20FA7E, size: 0x8, addend: 0x0, symName: '_$sSo10CFErrorRefaABs5Error10FoundationWl', symObjAddr: 0x1158, symBinAddr: 0x169A08, symSize: 0x44 } + - { offset: 0x20FCE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC06updateD012fontResponseySayAA7AppFontCG_tF', symObjAddr: 0x0, symBinAddr: 0x168934, symSize: 0x5B4 } + - { offset: 0x21024A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC14updateFontName33_DA3E1E5F5878F3E7D999A070F7070CF4LL12fontResponseyAA03AppG0CSg_tF', symObjAddr: 0x5B4, symBinAddr: 0x168EE8, symSize: 0x18C } + - { offset: 0x2103AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC16updateFontStyles33_DA3E1E5F5878F3E7D999A070F7070CF4LL12fontResponseyAA03AppG0CSg_tF', symObjAddr: 0x740, symBinAddr: 0x169074, symSize: 0x380 } + - { offset: 0x210772, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerCfD', symObjAddr: 0xAC0, symBinAddr: 0x1693F4, symSize: 0x2C } + - { offset: 0x2107D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerCACycfc', symObjAddr: 0xB0C, symBinAddr: 0x169440, symSize: 0x204 } + - { offset: 0x210E91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x169A4C, symSize: 0x10 } + - { offset: 0x2112E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCfE', symObjAddr: 0x364, symBinAddr: 0x169DB0, symSize: 0xA8 } + - { offset: 0x21130E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCfETo', symObjAddr: 0x52C, symBinAddr: 0x169F78, symSize: 0xB4 } + - { offset: 0x21137C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCMa', symObjAddr: 0xC64, symBinAddr: 0x16A6B0, symSize: 0x20 } + - { offset: 0x211496, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutCMa', symObjAddr: 0xD2C, symBinAddr: 0x16A754, symSize: 0x20 } + - { offset: 0x2114CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC09layoutForF0AA08FloatingF6Layout_pyFTo', symObjAddr: 0xD4C, symBinAddr: 0x16A774, symSize: 0x74 } + - { offset: 0x211541, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC011behaviorForF0AA08FloatingF8Behavior_pyFTo', symObjAddr: 0xDC0, symBinAddr: 0x16A7E8, symSize: 0x24 } + - { offset: 0x211589, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC05setupF0yyF', symObjAddr: 0xDE4, symBinAddr: 0x16A80C, symSize: 0x130 } + - { offset: 0x211678, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC05setupF0yyFTo', symObjAddr: 0xF14, symBinAddr: 0x16A93C, symSize: 0x28 } + - { offset: 0x2116A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC08floatingF7DidMoveyyAA08FloatingfH0CF', symObjAddr: 0xF3C, symBinAddr: 0x16A964, symSize: 0x238 } + - { offset: 0x21189B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC08floatingF7DidMoveyyAA08FloatingfH0CFTo', symObjAddr: 0x1174, symBinAddr: 0x16AB9C, symSize: 0x50 } + - { offset: 0x2118ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0lQ0OSgtFTW', symObjAddr: 0x1240, symBinAddr: 0x16ABEC, symSize: 0xC8 } + - { offset: 0x211922, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1334, symBinAddr: 0x16ACD8, symSize: 0x10 } + - { offset: 0x211936, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1344, symBinAddr: 0x16ACE8, symSize: 0x8 } + - { offset: 0x2119CE, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8capacityAByxq_Gs07__CocoaB0Vn_SitcfC8PenNavUI18FloatingPanelStateC_AG0hI15LayoutAnchoring_pTt1g5', symObjAddr: 0x135C, symBinAddr: 0x16ACF0, symSize: 0x228 } + - { offset: 0x211AF0, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtF8PenNavUI18FloatingPanelStateC_AF0lM15LayoutAnchoring_pTg5Tf4ennn_nAF0lmO6AnchorC_Tg5', symObjAddr: 0x1584, symBinAddr: 0x16AF18, symSize: 0x13C } + - { offset: 0x211E20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x169A4C, symSize: 0x10 } + - { offset: 0x211E38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x169A4C, symSize: 0x10 } + - { offset: 0x211E7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x169A5C, symSize: 0x34 } + - { offset: 0x211ECD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17distanceUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x169A90, symSize: 0x10 } + - { offset: 0x211EE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17distanceUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x169A90, symSize: 0x10 } + - { offset: 0x211F20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17distanceUnitLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x169AA0, symSize: 0x34 } + - { offset: 0x211F6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x169AD4, symSize: 0x10 } + - { offset: 0x211F87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x169AD4, symSize: 0x10 } + - { offset: 0x211FC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13durationLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x169AE4, symSize: 0x34 } + - { offset: 0x212011, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17durationUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x169B18, symSize: 0x10 } + - { offset: 0x212029, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17durationUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x169B18, symSize: 0x10 } + - { offset: 0x212064, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17durationUnitLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x169B28, symSize: 0x34 } + - { offset: 0x2120B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16arrivalTimeLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x169B5C, symSize: 0x10 } + - { offset: 0x2120CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16arrivalTimeLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x169B5C, symSize: 0x10 } + - { offset: 0x212106, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16arrivalTimeLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x169B6C, symSize: 0x34 } + - { offset: 0x212155, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16directionsButtonSo8UIButtonCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x169BA0, symSize: 0x10 } + - { offset: 0x21216D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16directionsButtonSo8UIButtonCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x169BA0, symSize: 0x10 } + - { offset: 0x2121AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16directionsButtonSo8UIButtonCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x169BB0, symSize: 0x34 } + - { offset: 0x212212, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC11viewDidLoadyyF', symObjAddr: 0x198, symBinAddr: 0x169BE4, symSize: 0x1A4 } + - { offset: 0x2122A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x33C, symBinAddr: 0x169D88, symSize: 0x28 } + - { offset: 0x2122B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCfD', symObjAddr: 0x40C, symBinAddr: 0x169E58, symSize: 0x84 } + - { offset: 0x2122E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCfDTo', symObjAddr: 0x490, symBinAddr: 0x169EDC, symSize: 0x9C } + - { offset: 0x21233E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC03endE0yyFTo', symObjAddr: 0x5E0, symBinAddr: 0x16A02C, symSize: 0x70 } + - { offset: 0x2123A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC19showRouteDirectionsyySo8UIButtonCFTo', symObjAddr: 0x650, symBinAddr: 0x16A09C, symSize: 0x70 } + - { offset: 0x2123F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC9setLengthyySdF', symObjAddr: 0x6C0, symBinAddr: 0x16A10C, symSize: 0x130 } + - { offset: 0x2124A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC11setDurationyySdF', symObjAddr: 0x7F0, symBinAddr: 0x16A23C, symSize: 0x174 } + - { offset: 0x212578, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC14setArrivalTime8durationySd_tFTo', symObjAddr: 0x964, symBinAddr: 0x16A3B0, symSize: 0x98 } + - { offset: 0x2125E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x9FC, symBinAddr: 0x16A448, symSize: 0xFC } + - { offset: 0x212623, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xAF8, symBinAddr: 0x16A544, symSize: 0x60 } + - { offset: 0x212655, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB58, symBinAddr: 0x16A5A4, symSize: 0xE4 } + - { offset: 0x212688, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xC3C, symBinAddr: 0x16A688, symSize: 0x28 } + - { offset: 0x2126A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC8positionAA08FloatingF8PositionOvgTo', symObjAddr: 0xC84, symBinAddr: 0x16A6D0, symSize: 0x8 } + - { offset: 0x2126BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC8positionAA08FloatingF8PositionOvgTo', symObjAddr: 0xC84, symBinAddr: 0x16A6D0, symSize: 0x8 } + - { offset: 0x2126D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC12initialStateAA08FloatingfK0CvgTo', symObjAddr: 0xC8C, symBinAddr: 0x16A6D8, symSize: 0x8 } + - { offset: 0x2126EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC12initialStateAA08FloatingfK0CvgTo', symObjAddr: 0xC8C, symBinAddr: 0x16A6D8, symSize: 0x8 } + - { offset: 0x212705, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC7anchorsSDyAA08FloatingF5StateCAA0kfI9Anchoring_pGvgTo', symObjAddr: 0xC94, symBinAddr: 0x16A6E0, symSize: 0x6C } + - { offset: 0x21272F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA08FloatingF5StateC_tFTo', symObjAddr: 0xD00, symBinAddr: 0x16A74C, symSize: 0x8 } + - { offset: 0x212914, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC7anchorsSDyAA08FloatingF5StateCAA0kfI9Anchoring_pGvgTf4d_n', symObjAddr: 0x16C0, symBinAddr: 0x16B054, symSize: 0x258 } + - { offset: 0x213321, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellCfETo', symObjAddr: 0xD2C, symBinAddr: 0x16BFD8, symSize: 0xA8 } + - { offset: 0x213350, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellCMa', symObjAddr: 0xDD4, symBinAddr: 0x16C080, symSize: 0x20 } + - { offset: 0x213364, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtFyycfU_TA', symObjAddr: 0xE18, symBinAddr: 0x16C0C4, symSize: 0x20 } + - { offset: 0x213378, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtFyycfU0_TA', symObjAddr: 0xE48, symBinAddr: 0x16C0E4, symSize: 0x20 } + - { offset: 0x21338C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtFyycfU1_TA', symObjAddr: 0xE68, symBinAddr: 0x16C104, symSize: 0x20 } + - { offset: 0x2133A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtFyycfU2_TA', symObjAddr: 0xE88, symBinAddr: 0x16C124, symSize: 0x20 } + - { offset: 0x213500, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC22directionsTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x16B2AC, symSize: 0x10 } + - { offset: 0x213518, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC22directionsTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x16B2AC, symSize: 0x10 } + - { offset: 0x21355E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC22directionsTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x16B2BC, symSize: 0x34 } + - { offset: 0x2135AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16callTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x16B2F0, symSize: 0x10 } + - { offset: 0x2135C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16callTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x16B2F0, symSize: 0x10 } + - { offset: 0x213600, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16callTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x16B300, symSize: 0x34 } + - { offset: 0x21364F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16mailTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x16B334, symSize: 0x10 } + - { offset: 0x213667, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16mailTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x16B334, symSize: 0x10 } + - { offset: 0x2136A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16mailTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x16B344, symSize: 0x34 } + - { offset: 0x2136F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC19websiteTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x16B378, symSize: 0x10 } + - { offset: 0x213709, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC19websiteTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x16B378, symSize: 0x10 } + - { offset: 0x213744, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC19websiteTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x16B388, symSize: 0x34 } + - { offset: 0x213793, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16moreTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x16B3BC, symSize: 0x10 } + - { offset: 0x2137AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16moreTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x16B3BC, symSize: 0x10 } + - { offset: 0x2137E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16moreTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x16B3CC, symSize: 0x34 } + - { offset: 0x2138B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16buttonsStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x16B400, symSize: 0x10 } + - { offset: 0x2138CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16buttonsStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x16B400, symSize: 0x10 } + - { offset: 0x21390C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16buttonsStackViewSo07UIStackI0CSgvsTo', symObjAddr: 0x164, symBinAddr: 0x16B410, symSize: 0x34 } + - { offset: 0x21395B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC14directionLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x16B444, symSize: 0x20 } + - { offset: 0x2139B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC14directionLabelSo7UILabelCSgvsTo', symObjAddr: 0x1B8, symBinAddr: 0x16B464, symSize: 0x14 } + - { offset: 0x213A06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC13directionIconSo11UIImageViewCSgvgTo', symObjAddr: 0x1CC, symBinAddr: 0x16B478, symSize: 0x20 } + - { offset: 0x213A60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC13directionIconSo11UIImageViewCSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x16B498, symSize: 0x14 } + - { offset: 0x213AB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x200, symBinAddr: 0x16B4AC, symSize: 0x70 } + - { offset: 0x213AE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC15prepareForReuseyyF', symObjAddr: 0x270, symBinAddr: 0x16B51C, symSize: 0xBC } + - { offset: 0x213B8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC15prepareForReuseyyFTo', symObjAddr: 0x32C, symBinAddr: 0x16B5D8, symSize: 0x28 } + - { offset: 0x213BF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtF', symObjAddr: 0x354, symBinAddr: 0x16B600, symSize: 0x420 } + - { offset: 0x213EF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC10setUpViewsyyF', symObjAddr: 0x814, symBinAddr: 0x16BAC0, symSize: 0x164 } + - { offset: 0x213FC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC21updateDirectionToStopyyF', symObjAddr: 0x978, symBinAddr: 0x16BC24, symSize: 0x120 } + - { offset: 0x214054, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0xA98, symBinAddr: 0x16BD44, symSize: 0x10C } + - { offset: 0x214095, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xBA4, symBinAddr: 0x16BE50, symSize: 0x48 } + - { offset: 0x2140CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xBEC, symBinAddr: 0x16BE98, symSize: 0xE8 } + - { offset: 0x214100, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xCD4, symBinAddr: 0x16BF80, symSize: 0x28 } + - { offset: 0x214114, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellCfD', symObjAddr: 0xCFC, symBinAddr: 0x16BFA8, symSize: 0x30 } + - { offset: 0x2144AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ClosureAlertTypeO5titleSSvg', symObjAddr: 0x0, symBinAddr: 0x16C144, symSize: 0x100 } + - { offset: 0x21454F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ClosureAlertTypeO5titleSSvg', symObjAddr: 0x0, symBinAddr: 0x16C144, symSize: 0x100 } + - { offset: 0x214BEC, size: 0x8, addend: 0x0, symName: '_$sSTsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lF9CryptoKit12SHA256DigestV_SSs5NeverOTg540$sSS8PenNavUIE6sha256SSyFSSs5UInt8VXEfU_Tf1cn_n', symObjAddr: 0x160C, symBinAddr: 0x16D7CC, symSize: 0x324 } + - { offset: 0x21510A, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE17heightForWithFont4font5width6insets12CoreGraphics7CGFloatVSo6UIFontC_AHSo12UIEdgeInsetsVtF', symObjAddr: 0x0, symBinAddr: 0x16C244, symSize: 0x150 } + - { offset: 0x2151D6, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE10lineSpaced_4fontSo18NSAttributedStringC12CoreGraphics7CGFloatV_So6UIFontCtF', symObjAddr: 0x150, symBinAddr: 0x16C394, symSize: 0x208 } + - { offset: 0x2154A5, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE6sha256SSyF', symObjAddr: 0x84C, symBinAddr: 0x16CA90, symSize: 0x1E4 } + - { offset: 0x2155A4, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE6toDate6format10Foundation0E0VSgSS_tF', symObjAddr: 0xA30, symBinAddr: 0x16CC74, symSize: 0x280 } + - { offset: 0x2157D4, size: 0x8, addend: 0x0, symName: '_$sSo18NSAttributedStringC8PenNavUIE30updatingFontForWordsContaining_4fontABSS_So6UIFontCtF', symObjAddr: 0xCB0, symBinAddr: 0x16CEF4, symSize: 0x450 } + - { offset: 0x215B88, size: 0x8, addend: 0x0, symName: '_$sSo18NSAttributedStringC8PenNavUIE12applyingFont_5afterABSo6UIFontC_SaySSGtF', symObjAddr: 0x12A8, symBinAddr: 0x16D4EC, symSize: 0x288 } + - { offset: 0x215D49, size: 0x8, addend: 0x0, symName: '_$ss16PartialRangeFromVySS5IndexVGMa', symObjAddr: 0x15B4, symBinAddr: 0x16D774, symSize: 0x58 } + - { offset: 0x215ED1, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationO22withUnsafeMutableBytesyxxSwKXEKlFs16IndexingIteratorVySS8UTF8ViewVG_Sit_Tg5', symObjAddr: 0x1930, symBinAddr: 0x16DAF0, symSize: 0x398 } + - { offset: 0x216004, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufcAC15_RepresentationOSWXEfU_', symObjAddr: 0x1CC8, symBinAddr: 0x16DE88, symSize: 0x8C } + - { offset: 0x216079, size: 0x8, addend: 0x0, symName: '_$sSw17withMemoryRebound2to_q0_xm_q0_SryxGq_YKXEtq_YKs5ErrorR_Ri_zRi_0_r1_lFs5UInt8V_s5NeverOs16IndexingIteratorVySS8UTF8ViewVG_SitTt1g5', symObjAddr: 0x1D54, symBinAddr: 0x16DF14, symSize: 0x60 } + - { offset: 0x2160AC, size: 0x8, addend: 0x0, symName: '_$s10Foundation13__DataStorageC22withUnsafeMutableBytes2in5applyxSnySiG_xSwKXEtKlFs16IndexingIteratorVySS8UTF8ViewVG_Sit_Tg5', symObjAddr: 0x1DB4, symBinAddr: 0x16DF74, symSize: 0xAC } + - { offset: 0x216108, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufc8IteratorQz_SitSwXEfU1_AI_SitSryAEGXEfU_SS8UTF8ViewV_TG5', symObjAddr: 0x1E60, symBinAddr: 0x16E020, symSize: 0x4C } + - { offset: 0x2161E7, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationO15withUnsafeBytesyxxSWKXEKlFyt_Tg5063$s9CryptoKit12HashFunctionPAAE6update4datayqd___t10Foundation12B70ProtocolRd__lFy7Regions_7ElementQYd__XEfU_ySWXEfU_AA6SHA256V_AF0H0VTg50H3Kit0X0VTf1ncn_n', symObjAddr: 0x1EAC, symBinAddr: 0x16E06C, symSize: 0x1AC } + - { offset: 0x2162E3, size: 0x8, addend: 0x0, symName: '_$s10Foundation13__DataStorageC15withUnsafeBytes2in5applyxSnySiG_xSWKXEtKlFyt_Tg5063$s9CryptoKit12HashFunctionPAAE6update4datayqd___t10Foundation12B70ProtocolRd__lFy7Regions_7ElementQYd__XEfU_ySWXEfU_AA6SHA256V_AF0H0VTg50J3Kit0Z0VTf1nncn_n', symObjAddr: 0x2058, symBinAddr: 0x16E218, symSize: 0xC4 } + - { offset: 0x21634E, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV06InlineB0VyAESWcfCTf4nd_n', symObjAddr: 0x21EC, symBinAddr: 0x16E2DC, symSize: 0xB4 } + - { offset: 0x2163D1, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV10LargeSliceVyAESWcfCTf4nd_n', symObjAddr: 0x22A0, symBinAddr: 0x16E390, symSize: 0x78 } + - { offset: 0x2163FE, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV11InlineSliceVyAESWcfCTf4nd_n', symObjAddr: 0x2318, symBinAddr: 0x16E408, symSize: 0x80 } + - { offset: 0x216453, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationOyAESWcfCTf4nd_n', symObjAddr: 0x2398, symBinAddr: 0x16E488, symSize: 0x64 } + - { offset: 0x2164A4, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationO5countAESi_tcfCTf4nd_n', symObjAddr: 0x23FC, symBinAddr: 0x16E4EC, symSize: 0x9C } + - { offset: 0x21650F, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufc8IteratorQz_SitSwXEfU1_SS8UTF8ViewV_TG5TA', symObjAddr: 0x2498, symBinAddr: 0x16E588, symSize: 0x58 } + - { offset: 0x21654D, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufc8IteratorQz_SitSwXEfU1_AI_SitSryAEGXEfU_SS8UTF8ViewV_TG5TA', symObjAddr: 0x2560, symBinAddr: 0x16E5E0, symSize: 0x1C } + - { offset: 0x216561, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeya_yptWOc', symObjAddr: 0x257C, symBinAddr: 0x16E5FC, symSize: 0x48 } + - { offset: 0x21660E, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufCSS8UTF8ViewV_Tt0g5', symObjAddr: 0x358, symBinAddr: 0x16C59C, symSize: 0x4F4 } + - { offset: 0x216C26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC10backButtonSo8UIButtonCvg', symObjAddr: 0x0, symBinAddr: 0x16E644, symSize: 0x64 } + - { offset: 0x216DD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlCfETo', symObjAddr: 0x964, symBinAddr: 0x16EFA8, symSize: 0x3C } + - { offset: 0x216E03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlCMa', symObjAddr: 0x9A0, symBinAddr: 0x16EFE4, symSize: 0x20 } + - { offset: 0x216E87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC10backButtonSo8UIButtonCvg', symObjAddr: 0x0, symBinAddr: 0x16E644, symSize: 0x64 } + - { offset: 0x216EA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC10backButtonSo8UIButtonCvgAFyXEfU_', symObjAddr: 0x64, symBinAddr: 0x16E6A8, symSize: 0x288 } + - { offset: 0x216FA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlCACycfcTo', symObjAddr: 0x2EC, symBinAddr: 0x16E930, symSize: 0xA4 } + - { offset: 0x216FF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x390, symBinAddr: 0x16E9D4, symSize: 0xB0 } + - { offset: 0x21702A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x440, symBinAddr: 0x16EA84, symSize: 0x28 } + - { offset: 0x217071, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC9setupView33_5733A01A08E10C5381DDE5E0766214B3LLyyF', symObjAddr: 0x468, symBinAddr: 0x16EAAC, symSize: 0x430 } + - { offset: 0x2171B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC16backButtonTappedyyFTo', symObjAddr: 0x898, symBinAddr: 0x16EEDC, symSize: 0x70 } + - { offset: 0x21721C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x908, symBinAddr: 0x16EF4C, symSize: 0x2C } + - { offset: 0x21727B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlCfD', symObjAddr: 0x934, symBinAddr: 0x16EF78, symSize: 0x30 } + - { offset: 0x21765B, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE18substituteFontNameSSvgTo', symObjAddr: 0x0, symBinAddr: 0x16F004, symSize: 0x94 } + - { offset: 0x21769A, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE18substituteFontNameSSvsTo', symObjAddr: 0x94, symBinAddr: 0x16F098, symSize: 0x54 } + - { offset: 0x2176B6, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE18substituteFontNameSSvs', symObjAddr: 0xE8, symBinAddr: 0x16F0EC, symSize: 0xC38 } + - { offset: 0x2178B3, size: 0x8, addend: 0x0, symName: '_$s10Foundation6LocaleVSgWOh', symObjAddr: 0x1B50, symBinAddr: 0x170ACC, symSize: 0x40 } + - { offset: 0x217D11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC08insertOre4LastE4Data9tableName10dateStringyAA0abdL0O_SSSgtF', symObjAddr: 0x0, symBinAddr: 0x170B1C, symSize: 0x4C8 } + - { offset: 0x217E8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryCMa', symObjAddr: 0xB3C, symBinAddr: 0x171658, symSize: 0x20 } + - { offset: 0x217EA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC18getLastUpdatedDate9tableNameSSAA0abdL0O_tFyyYbXEfU_TA', symObjAddr: 0xB80, symBinAddr: 0x17169C, symSize: 0x8 } + - { offset: 0x217EB6, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xBA0, symBinAddr: 0x1716B4, symSize: 0x10 } + - { offset: 0x217ECA, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xBB0, symBinAddr: 0x1716C4, symSize: 0x8 } + - { offset: 0x217EDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC08insertOre4LastE4Data9tableName10dateStringyAA0abdL0O_SSSgtFyyYbXEfU_TA', symObjAddr: 0xCB4, symBinAddr: 0x171700, symSize: 0xC } + - { offset: 0x2180F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC08insertOre4LastE4Data9tableName10dateStringyAA0abdL0O_SSSgtF', symObjAddr: 0x0, symBinAddr: 0x170B1C, symSize: 0x4C8 } + - { offset: 0x218237, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC08insertOre4LastE4Data9tableName10dateStringyAA0abdL0O_SSSgtFyyYbXEfU_', symObjAddr: 0x4C8, symBinAddr: 0x170FE4, symSize: 0x250 } + - { offset: 0x218305, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC18getLastUpdatedDate9tableNameSSAA0abdL0O_tF', symObjAddr: 0x718, symBinAddr: 0x171234, symSize: 0x1A0 } + - { offset: 0x2183A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC18getLastUpdatedDate9tableNameSSAA0abdL0O_tFyyYbXEfU_', symObjAddr: 0x8B8, symBinAddr: 0x1713D4, symSize: 0x258 } + - { offset: 0x218630, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryCfD', symObjAddr: 0xB10, symBinAddr: 0x17162C, symSize: 0x2C } + - { offset: 0x218670, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC21deleteLastUpdatedDate9tableNameyAA0abdL0O_tFTf4dn_n', symObjAddr: 0xCC0, symBinAddr: 0x17170C, symSize: 0x260 } + - { offset: 0x218DFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CGTransformingPatternCMa', symObjAddr: 0x110, symBinAddr: 0x171A88, symSize: 0x20 } + - { offset: 0x218E13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwxx', symObjAddr: 0x15C, symBinAddr: 0x171AA8, symSize: 0x8 } + - { offset: 0x218E27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwcp', symObjAddr: 0x164, symBinAddr: 0x171AB0, symSize: 0x44 } + - { offset: 0x218E3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwca', symObjAddr: 0x1A8, symBinAddr: 0x171AF4, symSize: 0x74 } + - { offset: 0x218E4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwta', symObjAddr: 0x238, symBinAddr: 0x171B68, symSize: 0x4C } + - { offset: 0x218E63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwet', symObjAddr: 0x284, symBinAddr: 0x171BB4, symSize: 0x48 } + - { offset: 0x218E77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwst', symObjAddr: 0x2CC, symBinAddr: 0x171BFC, symSize: 0x4C } + - { offset: 0x218E8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVMa', symObjAddr: 0x318, symBinAddr: 0x171C48, symSize: 0x10 } + - { offset: 0x218E9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVMa', symObjAddr: 0x328, symBinAddr: 0x171C58, symSize: 0x10 } + - { offset: 0x218EB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA9BlendModeAaDP_SQWT', symObjAddr: 0x338, symBinAddr: 0x171C68, symSize: 0x30 } + - { offset: 0x218EC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA5ColorAaDP_SQWT', symObjAddr: 0x368, symBinAddr: 0x171C98, symSize: 0x30 } + - { offset: 0x218EDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA8FillRuleAaDP_SQWT', symObjAddr: 0x398, symBinAddr: 0x171CC8, symSize: 0x30 } + - { offset: 0x218EEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA5FloatAaDP_SQWT', symObjAddr: 0x3C8, symBinAddr: 0x171CF8, symSize: 0x4 } + - { offset: 0x218F03, size: 0x8, addend: 0x0, symName: '_$s12CoreGraphics7CGFloatVACSQAAWl', symObjAddr: 0x3CC, symBinAddr: 0x171CFC, symSize: 0x40 } + - { offset: 0x218F17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA8GradientAaDP_SQWT', symObjAddr: 0x40C, symBinAddr: 0x171D3C, symSize: 0x30 } + - { offset: 0x218F2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA5ImageAaDP_SQWT', symObjAddr: 0x43C, symBinAddr: 0x171D6C, symSize: 0x30 } + - { offset: 0x218F3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA7LineCapAaDP_SQWT', symObjAddr: 0x46C, symBinAddr: 0x171D9C, symSize: 0x30 } + - { offset: 0x218F53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA8LineJoinAaDP_SQWT', symObjAddr: 0x49C, symBinAddr: 0x171DCC, symSize: 0x30 } + - { offset: 0x218F67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA4PathAaDP_SQWT', symObjAddr: 0x4CC, symBinAddr: 0x171DFC, symSize: 0x30 } + - { offset: 0x218F7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA7PatternAaDP_SQWT', symObjAddr: 0x4FC, symBinAddr: 0x171E2C, symSize: 0x2C } + - { offset: 0x218F8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA5PointAaDP_SQWT', symObjAddr: 0x528, symBinAddr: 0x171E58, symSize: 0x30 } + - { offset: 0x218FA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA4RectAaDP_SQWT', symObjAddr: 0x558, symBinAddr: 0x171E88, symSize: 0x30 } + - { offset: 0x218FB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA4SizeAaDP_SQWT', symObjAddr: 0x588, symBinAddr: 0x171EB8, symSize: 0x30 } + - { offset: 0x218FCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA9TransformAaDP_SQWT', symObjAddr: 0x5B8, symBinAddr: 0x171EE8, symSize: 0x30 } + - { offset: 0x218FDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAcA13RendererTypesAAWl', symObjAddr: 0x628, symBinAddr: 0x171F18, symSize: 0x40 } + - { offset: 0x2193BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererV7setFill7patternyAA21CGTransformingPatternC_tFySo12CGContextRefacAGcfu_yAIcfu0_TA', symObjAddr: 0xC78, symBinAddr: 0x172554, symSize: 0x4 } + - { offset: 0x2193D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererV7setFill7patternyAA21CGTransformingPatternC_tFySo12CGContextRefacAGcfu_yAIcfu0_TA', symObjAddr: 0xC78, symBinAddr: 0x172554, symSize: 0x4 } + - { offset: 0x2193F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA7CGTypesVGWOc', symObjAddr: 0xCC0, symBinAddr: 0x172558, symSize: 0x48 } + - { offset: 0x219409, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA7CGTypesVGWOh', symObjAddr: 0xD08, symBinAddr: 0x1725A0, symSize: 0x40 } + - { offset: 0x219424, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVWOh', symObjAddr: 0xD48, symBinAddr: 0x1725E0, symSize: 0x28 } + - { offset: 0x219637, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderVMa', symObjAddr: 0x12CC, symBinAddr: 0x172B64, symSize: 0x10 } + - { offset: 0x219915, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CGTransformingPatternC4drawyySo12CGContextRefaF', symObjAddr: 0x0, symBinAddr: 0x171978, symSize: 0xEC } + - { offset: 0x219A98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CGTransformingPatternCfD', symObjAddr: 0xEC, symBinAddr: 0x171A64, symSize: 0x24 } + - { offset: 0x219BCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererV7setFill7patternyAA21CGTransformingPatternC_tF', symObjAddr: 0x67C, symBinAddr: 0x171F58, symSize: 0x1D4 } + - { offset: 0x219D70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV10createPath33_7E47ACCE2CDCE5B8B63E9B3009B7E758LL4fromSo9CGPathRefaAA9LayerTreeO0F0C_tFTf4nd_n', symObjAddr: 0x850, symBinAddr: 0x17212C, symSize: 0x164 } + - { offset: 0x219FF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV10createPath4fromSo9CGPathRefaAA9LayerTreeO5ShapeO_tFTf4nd_n', symObjAddr: 0x9B4, symBinAddr: 0x172290, symSize: 0x2C4 } + - { offset: 0x21A465, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV10createPath4from2at4withSo9CGPathRefaSgSS_AA9LayerTreeO5PointVAL14TextAttributesVtFTf4nnnd_n', symObjAddr: 0xD70, symBinAddr: 0x172608, symSize: 0xF4 } + - { offset: 0x21A55E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV10createPath4fromSo9CGPathRefaSayAGG_tFTf4nd_n', symObjAddr: 0xE64, symBinAddr: 0x1726FC, symSize: 0xF0 } + - { offset: 0x21A79E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV11createColor4fromSo10CGColorRefaAA9LayerTreeO0F0O_tFTf4nd_n', symObjAddr: 0xF54, symBinAddr: 0x1727EC, symSize: 0x174 } + - { offset: 0x21AAA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV14createGradient4fromSo13CGGradientRefaAA9LayerTreeO0F0V_tFTf4nd_n', symObjAddr: 0x10C8, symBinAddr: 0x172960, symSize: 0x204 } + - { offset: 0x21B2C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataC07poiViewG015showsMoreButtonAcA03PoiiG0C_Sbtcfc', symObjAddr: 0x0, symBinAddr: 0x172B7C, symSize: 0x94 } + - { offset: 0x21B352, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataCMa', symObjAddr: 0xC8, symBinAddr: 0x172C44, symSize: 0x20 } + - { offset: 0x21B367, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataC07poiViewG015showsMoreButtonAcA03PoiiG0C_Sbtcfc', symObjAddr: 0x0, symBinAddr: 0x172B7C, symSize: 0x94 } + - { offset: 0x21B3DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataCfD', symObjAddr: 0x94, symBinAddr: 0x172C10, symSize: 0x34 } + - { offset: 0x21B414, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataC13messageDetailAcA07MessageI0C_tcfcTf4gn_n', symObjAddr: 0xE8, symBinAddr: 0x172C64, symSize: 0x74 } + - { offset: 0x21B9C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseCMa', symObjAddr: 0x1C8, symBinAddr: 0x172D28, symSize: 0x20 } + - { offset: 0x21B9D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOAFs0G3KeyAAWl', symObjAddr: 0x55C, symBinAddr: 0x173054, symSize: 0x40 } + - { offset: 0x21B9E9, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI9AmenitiesVGMa', symObjAddr: 0x5BC, symBinAddr: 0x173094, symSize: 0x50 } + - { offset: 0x21B9FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOMa', symObjAddr: 0x7D4, symBinAddr: 0x173148, symSize: 0x10 } + - { offset: 0x21BA11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOSHAASQWb', symObjAddr: 0x7E4, symBinAddr: 0x173158, symSize: 0x4 } + - { offset: 0x21BA25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOAFSQAAWl', symObjAddr: 0x7E8, symBinAddr: 0x17315C, symSize: 0x40 } + - { offset: 0x21BA39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x828, symBinAddr: 0x17319C, symSize: 0x4 } + - { offset: 0x21BA4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x82C, symBinAddr: 0x1731A0, symSize: 0x40 } + - { offset: 0x21BA61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x86C, symBinAddr: 0x1731E0, symSize: 0x4 } + - { offset: 0x21BA75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x870, symBinAddr: 0x1731E4, symSize: 0x40 } + - { offset: 0x21BAA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x154, symBinAddr: 0x172CD8, symSize: 0x28 } + - { offset: 0x21BABF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x17C, symBinAddr: 0x172D00, symSize: 0x28 } + - { offset: 0x21BB03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x1E8, symBinAddr: 0x172D48, symSize: 0x120 } + - { offset: 0x21BB34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x308, symBinAddr: 0x172E68, symSize: 0x178 } + - { offset: 0x21BB72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x480, symBinAddr: 0x172FE0, symSize: 0x54 } + - { offset: 0x21BB9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x4D4, symBinAddr: 0x173034, symSize: 0x20 } + - { offset: 0x21C5E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC26extendPathToSharedLocationyy7Penguin03SubH0C_AE5FloorCtF', symObjAddr: 0x20, symBinAddr: 0x173224, symSize: 0x3EC } + - { offset: 0x21CD91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14setStartMarker9floorPath010startPointI08renderery7Penguin03SubK0C_So7UIImageCSg0O10INRenderer10PIRendererCSgtF', symObjAddr: 0x40C, symBinAddr: 0x173610, symSize: 0xA64 } + - { offset: 0x21D748, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEndMarker9floorPath08endPointI0y7Penguin03SubK0CSg_So7UIImageCSgtF', symObjAddr: 0xE70, symBinAddr: 0x174074, symSize: 0x68C } + - { offset: 0x21DD04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtF', symObjAddr: 0x14FC, symBinAddr: 0x174700, symSize: 0x7A0 } + - { offset: 0x21E62C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtFySo7UIImageCSgcfU_', symObjAddr: 0x1C9C, symBinAddr: 0x174EA0, symSize: 0x78 } + - { offset: 0x21E665, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtFySo7UIImageCSgcfU0_', symObjAddr: 0x1D14, symBinAddr: 0x174F18, symSize: 0x70 } + - { offset: 0x21E7AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tF', symObjAddr: 0x1D84, symBinAddr: 0x174F88, symSize: 0x1020 } + - { offset: 0x21F3E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tFySbcfU0_', symObjAddr: 0x2DA4, symBinAddr: 0x175FA8, symSize: 0x110 } + - { offset: 0x21F4C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tFySo7UIImageCSgcfU1_Tf4nndn_n', symObjAddr: 0x8874, symBinAddr: 0x17B9BC, symSize: 0x414 } + - { offset: 0x21F7A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC022removeConflictGateWithD6Marker33_135AC583F61BE0A660F84997D71AC5B4LLyy7Penguin10PILocationCSgF', symObjAddr: 0x2EB4, symBinAddr: 0x1760B8, symSize: 0xCB4 } + - { offset: 0x2202C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21drawRoutePathAndSigns5floor8location10refreshPOIy7Penguin5FloorCSg_AH10PILocationCSgSbtF', symObjAddr: 0x3B68, symBinAddr: 0x176D6C, symSize: 0x2D4 } + - { offset: 0x2205C5, size: 0x8, addend: 0x0, symName: '_$s7Penguin8NodeTypeOACSQAAWl', symObjAddr: 0x3E80, symBinAddr: 0x177040, symSize: 0x44 } + - { offset: 0x2205D9, size: 0x8, addend: 0x0, symName: '_$s7Penguin8NodeTypeOSgWOc', symObjAddr: 0x3EC4, symBinAddr: 0x177084, symSize: 0x48 } + - { offset: 0x220809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8getImage3for2onSo7UIImageCSg7Penguin11SubPathNodeCSg_AJ0mN0CSgtFTf4nnd_n', symObjAddr: 0x3FA8, symBinAddr: 0x1770F0, symSize: 0x1804 } + - { offset: 0x220E20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21detectStartMarkerType9floorPath10completiony7Penguin03SubL0C_ySo7UIImageCSgctF03$s8ab4UI24def37C010drawMapAndB4Line_5floory7Penguin7ol17C_AF5FloorCtFySo7P7CSgcfU_ACSgXwz_XxAI0N10INRenderer10PIRendererCTf1ncn_nTf4nnggg_n', symObjAddr: 0x57AC, symBinAddr: 0x1788F4, symSize: 0x18F8 } + - { offset: 0x221B6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21detectStartMarkerType9floorPath10completiony7Penguin03SubL0C_ySo7UIImageCSgctF03$s8ab4UI24def28C13drawRoutePathyy7Penguin03o10I0CSgFySo7P7CSgcfU_ACSgXwz_XxAITf1ncn_nTf4nngg_n', symObjAddr: 0x70A4, symBinAddr: 0x17A1EC, symSize: 0x17D0 } + - { offset: 0x2228E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19detectEndMarkerType9floorPath09isLastSubL010completiony7Penguin0oL0CSg_SbySo7UIImageCSgctF03$s8ab4UI24def47C23drawNextSubpathIfNeeded07currentI0y7Penguin7ol8C_tFySo7R8CSgcfU1_AJSi0Q10INRenderer10PIRendererCTf1nncn_nTf4nndgng_n', symObjAddr: 0x8C88, symBinAddr: 0x17BDD0, symSize: 0x5B8 } + - { offset: 0x222DB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tFySbcfU0_TA', symObjAddr: 0x986C, symBinAddr: 0x17C9B4, symSize: 0x8 } + - { offset: 0x222DC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tFySo7UIImageCSgcfU1_TA', symObjAddr: 0x9920, symBinAddr: 0x17CA24, symSize: 0xC } + - { offset: 0x222DEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtFySo7UIImageCSgcfU0_TA', symObjAddr: 0x9930, symBinAddr: 0x17CA34, symSize: 0x8 } + - { offset: 0x222E03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtFySo7UIImageCSgcfU_TA', symObjAddr: 0x996C, symBinAddr: 0x17CA70, symSize: 0xC } + - { offset: 0x222E17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13drawRoutePathyy7Penguin03SubI0CSgFySo7UIImageCSgcfU_TA', symObjAddr: 0x99AC, symBinAddr: 0x17CA7C, symSize: 0x8 } + - { offset: 0x223F57, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010venueGatesD0_WZ', symObjAddr: 0x0, symBinAddr: 0x17CA94, symSize: 0x248 } + - { offset: 0x223F7B, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010venueGatesD0ACvpZ', symObjAddr: 0x10D98, symBinAddr: 0x397118, symSize: 0x0 } + - { offset: 0x223F95, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010floorNodesD0ACvpZ', symObjAddr: 0x10DA0, symBinAddr: 0x397120, symSize: 0x0 } + - { offset: 0x223FAF, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010floorGatesD0ACvpZ', symObjAddr: 0x10DA8, symBinAddr: 0x397128, symSize: 0x0 } + - { offset: 0x223FC9, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012venueSymbolsD0ACvpZ', symObjAddr: 0x10DB0, symBinAddr: 0x397130, symSize: 0x0 } + - { offset: 0x223FE3, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012campusSymbolD0ACvpZ', symObjAddr: 0x10DB8, symBinAddr: 0x397138, symSize: 0x0 } + - { offset: 0x223FFD, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012campusBorderD0ACvpZ', symObjAddr: 0x10DC0, symBinAddr: 0x397140, symSize: 0x0 } + - { offset: 0x224017, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09routeLineD0ACvpZ', symObjAddr: 0x10DC8, symBinAddr: 0x397148, symSize: 0x0 } + - { offset: 0x224031, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE015routeLineCasingD0ACvpZ', symObjAddr: 0x10DD0, symBinAddr: 0x397150, symSize: 0x0 } + - { offset: 0x22404B, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012progressLineD0ACvpZ', symObjAddr: 0x10DD8, symBinAddr: 0x397158, symSize: 0x0 } + - { offset: 0x224065, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE015linkedRouteLineD0ACvpZ', symObjAddr: 0x10DE0, symBinAddr: 0x397160, symSize: 0x0 } + - { offset: 0x22407F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021linkedRouteLineCasingD0ACvpZ', symObjAddr: 0x10DE8, symBinAddr: 0x397168, symSize: 0x0 } + - { offset: 0x224099, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE018progressLineCasingD0ACvpZ', symObjAddr: 0x10DF0, symBinAddr: 0x397170, symSize: 0x0 } + - { offset: 0x2240B3, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013campusPolygonD0ACvpZ', symObjAddr: 0x10DF8, symBinAddr: 0x397178, symSize: 0x0 } + - { offset: 0x2240CD, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019campusPolygonBorderD0ACvpZ', symObjAddr: 0x10E00, symBinAddr: 0x397180, symSize: 0x0 } + - { offset: 0x2240E7, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE011venueModelsD0ACvpZ', symObjAddr: 0x10E08, symBinAddr: 0x397188, symSize: 0x0 } + - { offset: 0x224101, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021extrudedVenuePolygonsD0ACvpZ', symObjAddr: 0x10E10, symBinAddr: 0x397190, symSize: 0x0 } + - { offset: 0x22411B, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013venuePolygonsD0ACvpZ', symObjAddr: 0x10E18, symBinAddr: 0x397198, symSize: 0x0 } + - { offset: 0x224135, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019venuePolygonBordersD0ACvpZ', symObjAddr: 0x10E20, symBinAddr: 0x3971A0, symSize: 0x0 } + - { offset: 0x22414F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE018outdoorPoiPolygonsD0ACvpZ', symObjAddr: 0x10E28, symBinAddr: 0x3971A8, symSize: 0x0 } + - { offset: 0x224169, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE024outdoorPoiPolygonBordersD0ACvpZ', symObjAddr: 0x10E30, symBinAddr: 0x3971B0, symSize: 0x0 } + - { offset: 0x224183, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017outdoorPoiSymbolsD0ACvpZ', symObjAddr: 0x10E38, symBinAddr: 0x3971B8, symSize: 0x0 } + - { offset: 0x22419D, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09poiModelsD0ACvpZ', symObjAddr: 0x10E40, symBinAddr: 0x3971C0, symSize: 0x0 } + - { offset: 0x2241B7, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019extrudedPoiPolygonsD0ACvpZ', symObjAddr: 0x10E48, symBinAddr: 0x3971C8, symSize: 0x0 } + - { offset: 0x2241D1, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE016indoorPoiSymbolsD0ACvpZ', symObjAddr: 0x10E50, symBinAddr: 0x3971D0, symSize: 0x0 } + - { offset: 0x2241EB, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE022outdoorLandmarkSymbolsD0ACvpZ', symObjAddr: 0x10E58, symBinAddr: 0x3971D8, symSize: 0x0 } + - { offset: 0x224206, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021indoorLandmarkSymbolsD0ACvpZ', symObjAddr: 0x10E60, symBinAddr: 0x3971E0, symSize: 0x0 } + - { offset: 0x224221, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017indoorPoiPolygonsD0ACvpZ', symObjAddr: 0x10E68, symBinAddr: 0x3971E8, symSize: 0x0 } + - { offset: 0x22423C, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE023indoorPoiPolygonBordersD0ACvpZ', symObjAddr: 0x10E70, symBinAddr: 0x3971F0, symSize: 0x0 } + - { offset: 0x224257, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019highPrioritySymbolsD0ACvpZ', symObjAddr: 0x10E78, symBinAddr: 0x3971F8, symSize: 0x0 } + - { offset: 0x224272, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017destinationSymbolD0ACvpZ', symObjAddr: 0x10E80, symBinAddr: 0x397200, symSize: 0x0 } + - { offset: 0x22428D, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019indoorSelectedPlaceD0ACvpZ', symObjAddr: 0x10E88, symBinAddr: 0x397208, symSize: 0x0 } + - { offset: 0x2242A8, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE020outdoorSelectedPlaceD0ACvpZ', symObjAddr: 0x10E90, symBinAddr: 0x397210, symSize: 0x0 } + - { offset: 0x2242C3, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE05floorcD0ACvpZ', symObjAddr: 0x10E98, symBinAddr: 0x397218, symSize: 0x0 } + - { offset: 0x2242DE, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09pathNodesD0ACvpZ', symObjAddr: 0x10EA0, symBinAddr: 0x397220, symSize: 0x0 } + - { offset: 0x2242F9, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE022progressLineStartPointD0ACvpZ', symObjAddr: 0x10EA8, symBinAddr: 0x397228, symSize: 0x0 } + - { offset: 0x224314, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013objectSymbolsD0ACvpZ', symObjAddr: 0x10EB0, symBinAddr: 0x397230, symSize: 0x0 } + - { offset: 0x224322, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010venueGatesD0_WZ', symObjAddr: 0x0, symBinAddr: 0x17CA94, symSize: 0x248 } + - { offset: 0x224374, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010floorNodesD0_WZ', symObjAddr: 0x248, symBinAddr: 0x17CCDC, symSize: 0x24C } + - { offset: 0x2243C6, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010floorGatesD0_WZ', symObjAddr: 0x494, symBinAddr: 0x17CF28, symSize: 0x248 } + - { offset: 0x224418, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012venueSymbolsD0_WZ', symObjAddr: 0x6DC, symBinAddr: 0x17D170, symSize: 0x25C } + - { offset: 0x224455, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012campusSymbolD0_WZ', symObjAddr: 0x938, symBinAddr: 0x17D3CC, symSize: 0x254 } + - { offset: 0x224492, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012campusBorderD0_WZ', symObjAddr: 0xB8C, symBinAddr: 0x17D620, symSize: 0x1E0 } + - { offset: 0x2244E0, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09routeLineD0_WZ', symObjAddr: 0xD6C, symBinAddr: 0x17D800, symSize: 0x218 } + - { offset: 0x22453B, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE015routeLineCasingD0_WZ', symObjAddr: 0xF84, symBinAddr: 0x17DA18, symSize: 0x214 } + - { offset: 0x2245C0, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012progressLineD0_WZ', symObjAddr: 0x1198, symBinAddr: 0x17DC2C, symSize: 0x220 } + - { offset: 0x22460A, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE015linkedRouteLineD0_WZ', symObjAddr: 0x13B8, symBinAddr: 0x17DE4C, symSize: 0x218 } + - { offset: 0x224654, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021linkedRouteLineCasingD0_WZ', symObjAddr: 0x15D0, symBinAddr: 0x17E064, symSize: 0x214 } + - { offset: 0x2246D9, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE018progressLineCasingD0_WZ', symObjAddr: 0x17E4, symBinAddr: 0x17E278, symSize: 0x214 } + - { offset: 0x22474D, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013campusPolygonD0_WZ', symObjAddr: 0x19F8, symBinAddr: 0x17E48C, symSize: 0x1C4 } + - { offset: 0x224775, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019campusPolygonBorderD0_WZ', symObjAddr: 0x1BBC, symBinAddr: 0x17E650, symSize: 0x1C4 } + - { offset: 0x22479D, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE011venueModelsD0_WZ', symObjAddr: 0x1D80, symBinAddr: 0x17E814, symSize: 0x1B4 } + - { offset: 0x2247C5, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021extrudedVenuePolygonsD0_WZ', symObjAddr: 0x1F34, symBinAddr: 0x17E9C8, symSize: 0x1B4 } + - { offset: 0x2247ED, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013venuePolygonsD0_WZ', symObjAddr: 0x20E8, symBinAddr: 0x17EB7C, symSize: 0x1C4 } + - { offset: 0x224815, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019venuePolygonBordersD0_WZ', symObjAddr: 0x22AC, symBinAddr: 0x17ED40, symSize: 0x1C4 } + - { offset: 0x22483D, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE018outdoorPoiPolygonsD0_WZ', symObjAddr: 0x2470, symBinAddr: 0x17EF04, symSize: 0x1C4 } + - { offset: 0x224865, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE024outdoorPoiPolygonBordersD0_WZ', symObjAddr: 0x2634, symBinAddr: 0x17F0C8, symSize: 0x1C4 } + - { offset: 0x22488D, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017outdoorPoiSymbolsD0_WZ', symObjAddr: 0x27F8, symBinAddr: 0x17F28C, symSize: 0x230 } + - { offset: 0x2248B5, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09poiModelsD0_WZ', symObjAddr: 0x2A28, symBinAddr: 0x17F4BC, symSize: 0x1B4 } + - { offset: 0x2248DD, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019extrudedPoiPolygonsD0_WZ', symObjAddr: 0x2BDC, symBinAddr: 0x17F670, symSize: 0x1B4 } + - { offset: 0x224905, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE016indoorPoiSymbolsD0_WZ', symObjAddr: 0x2D90, symBinAddr: 0x17F824, symSize: 0x22C } + - { offset: 0x22492D, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE022outdoorLandmarkSymbolsD0_WZ', symObjAddr: 0x2FBC, symBinAddr: 0x17FA50, symSize: 0x238 } + - { offset: 0x224955, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021indoorLandmarkSymbolsD0_WZ', symObjAddr: 0x31F4, symBinAddr: 0x17FC88, symSize: 0x234 } + - { offset: 0x22497F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017indoorPoiPolygonsD0_WZ', symObjAddr: 0x3428, symBinAddr: 0x17FEBC, symSize: 0x1C4 } + - { offset: 0x2249A9, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE023indoorPoiPolygonBordersD0_WZ', symObjAddr: 0x35EC, symBinAddr: 0x180080, symSize: 0x1C4 } + - { offset: 0x2249D3, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019highPrioritySymbolsD0_WZ', symObjAddr: 0x37B0, symBinAddr: 0x180244, symSize: 0x22C } + - { offset: 0x224A28, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017destinationSymbolD0_WZ', symObjAddr: 0x3A20, symBinAddr: 0x180470, symSize: 0x244 } + - { offset: 0x224A93, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019indoorSelectedPlaceD0_WZ', symObjAddr: 0x3C64, symBinAddr: 0x1806B4, symSize: 0x244 } + - { offset: 0x224AFE, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE020outdoorSelectedPlaceD0_WZ', symObjAddr: 0x3EA8, symBinAddr: 0x1808F8, symSize: 0x254 } + - { offset: 0x224B69, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE05floorcD0_WZ', symObjAddr: 0x40FC, symBinAddr: 0x180B4C, symSize: 0x1B0 } + - { offset: 0x224B9B, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09pathNodesD0_WZ', symObjAddr: 0x42AC, symBinAddr: 0x180CFC, symSize: 0x254 } + - { offset: 0x224BF1, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE022progressLineStartPointD0_WZ', symObjAddr: 0x4500, symBinAddr: 0x180F50, symSize: 0x1B0 } + - { offset: 0x224C46, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013objectSymbolsD0_WZ', symObjAddr: 0x46B0, symBinAddr: 0x181100, symSize: 0x1C4 } + - { offset: 0x224C70, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE028getSelectedLocationIndicatorD07visibleACSb_tFZTf4nd_n', symObjAddr: 0x4874, symBinAddr: 0x1812C4, symSize: 0x1C8 } + - { offset: 0x224CFB, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017getAccuracyCircleD04fromAcD24LocationIndicatorManagerC_tFZTf4nd_n', symObjAddr: 0x4A3C, symBinAddr: 0x18148C, symSize: 0x208 } + - { offset: 0x224D9A, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE020getLocationIndicatorD04fromAA0ijcD0CAD0iJ7ManagerC_tFZTf4nd_n', symObjAddr: 0x4C44, symBinAddr: 0x181694, symSize: 0x3BC } + - { offset: 0x2254BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC11amenityNameSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x181A50, symSize: 0x20 } + - { offset: 0x2256CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellCfETo', symObjAddr: 0x628, symBinAddr: 0x182078, symSize: 0x38 } + - { offset: 0x2256FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellCMa', symObjAddr: 0x660, symBinAddr: 0x1820B0, symSize: 0x20 } + - { offset: 0x225812, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC11amenityNameSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x181A50, symSize: 0x20 } + - { offset: 0x225872, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC11amenityNameSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x181A70, symSize: 0x14 } + - { offset: 0x2258C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC12amenityImageSo07UIImageF0CSgvgTo', symObjAddr: 0x34, symBinAddr: 0x181A84, symSize: 0x20 } + - { offset: 0x22591D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC12amenityImageSo07UIImageF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x181AA4, symSize: 0x14 } + - { offset: 0x22596E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC12awakeFromNibyyFTo', symObjAddr: 0x68, symBinAddr: 0x181AB8, symSize: 0x3C } + - { offset: 0x2259A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC15prepareForReuseyyFTo', symObjAddr: 0xA4, symBinAddr: 0x181AF4, symSize: 0x4 } + - { offset: 0x2259FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0xA8, symBinAddr: 0x181AF8, symSize: 0x54 } + - { offset: 0x225B33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC7setData7amenityyAA9AmenitiesV_tF', symObjAddr: 0xFC, symBinAddr: 0x181B4C, symSize: 0x300 } + - { offset: 0x225CD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC7setData7amenityyAA9AmenitiesV_tFySo7UIImageCSgcfU_', symObjAddr: 0x3FC, symBinAddr: 0x181E4C, symSize: 0x74 } + - { offset: 0x225D7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfcTo', symObjAddr: 0x470, symBinAddr: 0x181EC0, symSize: 0xE4 } + - { offset: 0x225DD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x554, symBinAddr: 0x181FA4, symSize: 0xA4 } + - { offset: 0x225E0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellCfD', symObjAddr: 0x5F8, symBinAddr: 0x182048, symSize: 0x30 } + - { offset: 0x2263F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewCfETo', symObjAddr: 0x8E0, symBinAddr: 0x1829B0, symSize: 0x14 } + - { offset: 0x226424, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewCMa', symObjAddr: 0x8F4, symBinAddr: 0x1829C4, symSize: 0x20 } + - { offset: 0x22647D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC26placeholderLocalizationKeySSvgTo', symObjAddr: 0x0, symBinAddr: 0x1820D0, symSize: 0x1C } + - { offset: 0x2265CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC26placeholderLocalizationKeySSvsTo', symObjAddr: 0x1C, symBinAddr: 0x1820EC, symSize: 0x88 } + - { offset: 0x22663A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC4textSSSgvgTo', symObjAddr: 0xA4, symBinAddr: 0x182174, symSize: 0xAC } + - { offset: 0x22668F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC4textSSSgvsTo', symObjAddr: 0x150, symBinAddr: 0x182220, symSize: 0xAC } + - { offset: 0x2267DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC4drawyySo6CGRectVF', symObjAddr: 0x1FC, symBinAddr: 0x1822CC, symSize: 0x540 } + - { offset: 0x226A78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC4drawyySo6CGRectVFTo', symObjAddr: 0x73C, symBinAddr: 0x18280C, symSize: 0x58 } + - { offset: 0x226ABE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC5frame13textContainerACSo6CGRectV_So06NSTextJ0CSgtcfcTo', symObjAddr: 0x794, symBinAddr: 0x182864, symSize: 0x88 } + - { offset: 0x226B1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x81C, symBinAddr: 0x1828EC, symSize: 0x94 } + - { offset: 0x226B55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewCfD', symObjAddr: 0x8B0, symBinAddr: 0x182980, symSize: 0x30 } + - { offset: 0x226FD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CampaignMessageVMa', symObjAddr: 0x2BC, symBinAddr: 0x182A78, symSize: 0x10 } + - { offset: 0x226FEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CampaignMessageV5titleSSvs', symObjAddr: 0x2C, symBinAddr: 0x1829E4, symSize: 0x34 } + - { offset: 0x227024, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CampaignMessageV11descriptionSSvg', symObjAddr: 0x74, symBinAddr: 0x182A18, symSize: 0x2C } + - { offset: 0x227038, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CampaignMessageV11descriptionSSvs', symObjAddr: 0xA0, symBinAddr: 0x182A44, symSize: 0x34 } + - { offset: 0x2273F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCfE', symObjAddr: 0x0, symBinAddr: 0x182A88, symSize: 0x10 } + - { offset: 0x227409, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCfE', symObjAddr: 0x0, symBinAddr: 0x182A88, symSize: 0x10 } + - { offset: 0x227497, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCMU', symObjAddr: 0x78, symBinAddr: 0x182B00, symSize: 0x8 } + - { offset: 0x2274AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCMa', symObjAddr: 0x80, symBinAddr: 0x182B08, symSize: 0x38 } + - { offset: 0x2274F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCfD', symObjAddr: 0x10, symBinAddr: 0x182A98, symSize: 0x68 } + - { offset: 0x227557, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0xFC, symBinAddr: 0x182B40, symSize: 0x14 } + - { offset: 0x2278FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseFiltersySayAA3DOMO6FilterCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0x182B54, symSize: 0x29C } + - { offset: 0x227AAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseFiltersySayAA3DOMO6FilterCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0x182B54, symSize: 0x29C } + - { offset: 0x227FF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseFilteryAA3DOMO0F0CAA3XMLO7ElementCKFTf4nx_n', symObjAddr: 0xACC, symBinAddr: 0x183620, symSize: 0x410 } + - { offset: 0x228406, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE10parseFloatySfSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_TG5TA', symObjAddr: 0xF1C, symBinAddr: 0x183A30, symSize: 0x28 } + - { offset: 0x22848A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE10parseFloatySfSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_Tg5Tf4nd_n', symObjAddr: 0xFBC, symBinAddr: 0x183A58, symSize: 0x214 } + - { offset: 0x228780, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parseyxSS_xSSKXEtKlFSf_Tg5', symObjAddr: 0x29C, symBinAddr: 0x182DF0, symSize: 0x41C } + - { offset: 0x2289D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parseyxSS_xSSKXEtKlFSayAA3DOMO5PointVG_Tg5', symObjAddr: 0x6B8, symBinAddr: 0x18320C, symSize: 0x414 } + - { offset: 0x229059, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateC12asDictionarySDyS2SGvg', symObjAddr: 0x0, symBinAddr: 0x183C6C, symSize: 0x730 } + - { offset: 0x229133, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateCMa', symObjAddr: 0x79C, symBinAddr: 0x184408, symSize: 0x20 } + - { offset: 0x22921F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateC12asDictionarySDyS2SGvg', symObjAddr: 0x0, symBinAddr: 0x183C6C, symSize: 0x730 } + - { offset: 0x22982A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateCfd', symObjAddr: 0x730, symBinAddr: 0x18439C, symSize: 0x4C } + - { offset: 0x22984D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateCfD', symObjAddr: 0x77C, symBinAddr: 0x1843E8, symSize: 0x20 } + - { offset: 0x229896, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateC03newdE0ACyFZTf4d_n', symObjAddr: 0x7BC, symBinAddr: 0x184428, symSize: 0x100 } + - { offset: 0x229D0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x8, symBinAddr: 0x184528, symSize: 0x54 } + - { offset: 0x229DC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x18457C, symSize: 0x1C } + - { offset: 0x229DE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x18457C, symSize: 0x1C } + - { offset: 0x229DF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x18457C, symSize: 0x1C } + - { offset: 0x229E08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x18457C, symSize: 0x1C } + - { offset: 0x229E1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x18457C, symSize: 0x1C } + - { offset: 0x229E45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x78, symBinAddr: 0x184598, symSize: 0x50 } + - { offset: 0x229ED2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x128, symBinAddr: 0x18463C, symSize: 0x28 } + - { offset: 0x229EEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x150, symBinAddr: 0x184664, symSize: 0x28 } + - { offset: 0x229F55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x24C, symBinAddr: 0x18472C, symSize: 0x54 } + - { offset: 0x22A00E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x2A0, symBinAddr: 0x184780, symSize: 0x1C } + - { offset: 0x22A026, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x2A0, symBinAddr: 0x184780, symSize: 0x1C } + - { offset: 0x22A03A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x2A0, symBinAddr: 0x184780, symSize: 0x1C } + - { offset: 0x22A04E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x2A0, symBinAddr: 0x184780, symSize: 0x1C } + - { offset: 0x22A062, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x2A0, symBinAddr: 0x184780, symSize: 0x1C } + - { offset: 0x22A08B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x2BC, symBinAddr: 0x18479C, symSize: 0x50 } + - { offset: 0x22A118, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x444, symBinAddr: 0x18490C, symSize: 0x28 } + - { offset: 0x22A134, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x46C, symBinAddr: 0x184934, symSize: 0x28 } + - { offset: 0x22A16E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x9F0, symBinAddr: 0x184E64, symSize: 0x84 } + - { offset: 0x22A229, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0xA74, symBinAddr: 0x184EE8, symSize: 0x60 } + - { offset: 0x22A2A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xAD4, symBinAddr: 0x184F48, symSize: 0x40 } + - { offset: 0x22A2F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xB14, symBinAddr: 0x184F88, symSize: 0x5C } + - { offset: 0x22A35B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0xC18, symBinAddr: 0x185080, symSize: 0x28 } + - { offset: 0x22A377, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0xC40, symBinAddr: 0x1850A8, symSize: 0x28 } + - { offset: 0x22A450, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseCMa', symObjAddr: 0x178, symBinAddr: 0x18468C, symSize: 0x20 } + - { offset: 0x22A541, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseCMa', symObjAddr: 0x4B8, symBinAddr: 0x18495C, symSize: 0x20 } + - { offset: 0x22A719, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCMa', symObjAddr: 0xCEC, symBinAddr: 0x185154, symSize: 0x20 } + - { offset: 0x22A72D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOAEs0H3KeyAAWl', symObjAddr: 0x16C0, symBinAddr: 0x185AC0, symSize: 0x40 } + - { offset: 0x22A741, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI13MessageDetailCGMa', symObjAddr: 0x1720, symBinAddr: 0x185B00, symSize: 0x50 } + - { offset: 0x22A755, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOAEs0H3KeyAAWl', symObjAddr: 0x1770, symBinAddr: 0x185B50, symSize: 0x40 } + - { offset: 0x22A769, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOAEs0F3KeyAAWl', symObjAddr: 0x17B0, symBinAddr: 0x185B90, symSize: 0x40 } + - { offset: 0x22A77D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOwet', symObjAddr: 0x19E8, symBinAddr: 0x185C84, symSize: 0x90 } + - { offset: 0x22A791, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOwst', symObjAddr: 0x1A78, symBinAddr: 0x185D14, symSize: 0xB0 } + - { offset: 0x22A7A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOMa', symObjAddr: 0x1B3C, symBinAddr: 0x185DC4, symSize: 0x10 } + - { offset: 0x22A7B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOMa', symObjAddr: 0x1B68, symBinAddr: 0x185DDC, symSize: 0x10 } + - { offset: 0x22A7CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOMa', symObjAddr: 0x1C54, symBinAddr: 0x185DEC, symSize: 0x10 } + - { offset: 0x22A7E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x1C64, symBinAddr: 0x185DFC, symSize: 0x4 } + - { offset: 0x22A7F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x1C68, symBinAddr: 0x185E00, symSize: 0x40 } + - { offset: 0x22A809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x1CA8, symBinAddr: 0x185E40, symSize: 0x4 } + - { offset: 0x22A81D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x1CAC, symBinAddr: 0x185E44, symSize: 0x40 } + - { offset: 0x22A831, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSHAASQWb', symObjAddr: 0x1CEC, symBinAddr: 0x185E84, symSize: 0x4 } + - { offset: 0x22A845, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOAESQAAWl', symObjAddr: 0x1CF0, symBinAddr: 0x185E88, symSize: 0x40 } + - { offset: 0x22A859, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1D30, symBinAddr: 0x185EC8, symSize: 0x4 } + - { offset: 0x22A86D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1D34, symBinAddr: 0x185ECC, symSize: 0x40 } + - { offset: 0x22A881, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1D74, symBinAddr: 0x185F0C, symSize: 0x4 } + - { offset: 0x22A895, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1D78, symBinAddr: 0x185F10, symSize: 0x40 } + - { offset: 0x22A8A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1DB8, symBinAddr: 0x185F50, symSize: 0x4 } + - { offset: 0x22A8BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1DBC, symBinAddr: 0x185F54, symSize: 0x40 } + - { offset: 0x22A8D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1DFC, symBinAddr: 0x185F94, symSize: 0x4 } + - { offset: 0x22A8E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1E00, symBinAddr: 0x185F98, symSize: 0x40 } + - { offset: 0x22A8F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1E40, symBinAddr: 0x185FD8, symSize: 0x4 } + - { offset: 0x22A90D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1E44, symBinAddr: 0x185FDC, symSize: 0x40 } + - { offset: 0x22A921, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1E84, symBinAddr: 0x18601C, symSize: 0x4 } + - { offset: 0x22A935, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1E88, symBinAddr: 0x186020, symSize: 0x40 } + - { offset: 0x22A95E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0xD4, symBinAddr: 0x1845F4, symSize: 0x20 } + - { offset: 0x22A976, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0xD4, symBinAddr: 0x1845F4, symSize: 0x20 } + - { offset: 0x22A98A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0xD4, symBinAddr: 0x1845F4, symSize: 0x20 } + - { offset: 0x22A9A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xF4, symBinAddr: 0x184614, symSize: 0x1C } + - { offset: 0x22A9BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xF4, symBinAddr: 0x184614, symSize: 0x1C } + - { offset: 0x22A9D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xF4, symBinAddr: 0x184614, symSize: 0x1C } + - { offset: 0x22A9E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xF4, symBinAddr: 0x184614, symSize: 0x1C } + - { offset: 0x22A9F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x224, symBinAddr: 0x18470C, symSize: 0x20 } + - { offset: 0x22AA1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x37C, symBinAddr: 0x18485C, symSize: 0x20 } + - { offset: 0x22AA32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x37C, symBinAddr: 0x18485C, symSize: 0x20 } + - { offset: 0x22AA46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x37C, symBinAddr: 0x18485C, symSize: 0x20 } + - { offset: 0x22AA60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x39C, symBinAddr: 0x18487C, symSize: 0x1C } + - { offset: 0x22AA78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x39C, symBinAddr: 0x18487C, symSize: 0x1C } + - { offset: 0x22AA8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x39C, symBinAddr: 0x18487C, symSize: 0x1C } + - { offset: 0x22AAA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x39C, symBinAddr: 0x18487C, symSize: 0x1C } + - { offset: 0x22AACA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x898, symBinAddr: 0x184D10, symSize: 0x20 } + - { offset: 0x22AAF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xB70, symBinAddr: 0x184FE4, symSize: 0x2C } + - { offset: 0x22AB21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0xB9C, symBinAddr: 0x185010, symSize: 0x28 } + - { offset: 0x22AB35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xBC4, symBinAddr: 0x185038, symSize: 0x18 } + - { offset: 0x22AB60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0xBDC, symBinAddr: 0x185050, symSize: 0x24 } + - { offset: 0x22ABA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAsAFP8intValuexSgSi_tcfCTW', symObjAddr: 0xC0C, symBinAddr: 0x185074, symSize: 0xC } + - { offset: 0x22ABBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCfd', symObjAddr: 0xC68, symBinAddr: 0x1850D0, symSize: 0x64 } + - { offset: 0x22ABDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCfD', symObjAddr: 0xCCC, symBinAddr: 0x185134, symSize: 0x20 } + - { offset: 0x22AC02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC6encode2toys7Encoder_p_tKF', symObjAddr: 0xD0C, symBinAddr: 0x185174, symSize: 0x334 } + - { offset: 0x22AC33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x1040, symBinAddr: 0x1854A8, symSize: 0x5A4 } + - { offset: 0x22AC71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x15E4, symBinAddr: 0x185A4C, symSize: 0x54 } + - { offset: 0x22AC9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1638, symBinAddr: 0x185AA0, symSize: 0x20 } + - { offset: 0x22ACB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x1EC8, symBinAddr: 0x186060, symSize: 0x5C } + - { offset: 0x22B07D, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE8makePathAC9LayerTreeO0G0CyF', symObjAddr: 0x0, symBinAddr: 0x1860CC, symSize: 0x2D4 } + - { offset: 0x22B4B9, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE8makePathAC9LayerTreeO0G0CyF', symObjAddr: 0x0, symBinAddr: 0x1860CC, symSize: 0x2D4 } + - { offset: 0x22B8C8, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE6toPath4fontSo9CGPathRefaSgSo06CTFontH0a_tF', symObjAddr: 0x2D4, symBinAddr: 0x1863A0, symSize: 0x2FC } + - { offset: 0x22BC51, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7doApply6actionyySo0A7ElementVc_tFySpyyAGcGXEfU_ySvSg_SPyAGGtcfU_To', symObjAddr: 0x614, symBinAddr: 0x18669C, symSize: 0x50 } + - { offset: 0x22BCFA, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE8segmentsSayAbCE7SegmentOGyFySo0A7ElementVcfU_', symObjAddr: 0x6BC, symBinAddr: 0x186744, symSize: 0x3CC } + - { offset: 0x22C272, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefa_So06CTFontB0atWOh', symObjAddr: 0xBAC, symBinAddr: 0x186C34, symSize: 0x40 } + - { offset: 0x22C286, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaABSHSCWl', symObjAddr: 0xBEC, symBinAddr: 0x186C74, symSize: 0x44 } + - { offset: 0x22C29A, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE8segmentsSayAbCE7SegmentOGyFySo0A7ElementVcfU_TA', symObjAddr: 0xC54, symBinAddr: 0x186CDC, symSize: 0x8 } + - { offset: 0x22C2B9, size: 0x8, addend: 0x0, symName: '_$sSo13CGPathElementVIegy_ABytIegnr_TRTA', symObjAddr: 0xC80, symBinAddr: 0x186D08, symSize: 0x2C } + - { offset: 0x22C2E2, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOwet', symObjAddr: 0xCF8, symBinAddr: 0x186D34, symSize: 0x48 } + - { offset: 0x22C2F6, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOwst', symObjAddr: 0xD40, symBinAddr: 0x186D7C, symSize: 0x54 } + - { offset: 0x22C30A, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOwug', symObjAddr: 0xD94, symBinAddr: 0x186DD0, symSize: 0x18 } + - { offset: 0x22C31E, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOwui', symObjAddr: 0xDB0, symBinAddr: 0x186DE8, symSize: 0x28 } + - { offset: 0x22C332, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOMa', symObjAddr: 0xDD8, symBinAddr: 0x186E10, symSize: 0x10 } + - { offset: 0x22C40D, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOSQACSQ2eeoiySbx_xtFZTW', symObjAddr: 0x664, symBinAddr: 0x1866EC, symSize: 0x58 } + - { offset: 0x22C436, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0xA88, symBinAddr: 0x186B10, symSize: 0x124 } + - { offset: 0x22C857, size: 0x8, addend: 0x0, symName: '_$s7Penguin5FloorC8PenNavUIE5venueAA5VenueCSgvg', symObjAddr: 0x0, symBinAddr: 0x186E20, symSize: 0x168 } + - { offset: 0x22C8F3, size: 0x8, addend: 0x0, symName: '_$s7Penguin5FloorC8PenNavUIE5venueAA5VenueCSgvg', symObjAddr: 0x0, symBinAddr: 0x186E20, symSize: 0x168 } + - { offset: 0x22D098, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUIE13getMapElement4icon0A10INRenderer20FeatureConfigurationVSo7UIImageCSg_tF', symObjAddr: 0x2E8, symBinAddr: 0x18722C, symSize: 0x524 } + - { offset: 0x22D92F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC21remainingTripDistanceSdSgvg', symObjAddr: 0x0, symBinAddr: 0x187750, symSize: 0x174 } + - { offset: 0x22E5AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerCMa', symObjAddr: 0x1E3C, symBinAddr: 0x18958C, symSize: 0x20 } + - { offset: 0x22E65F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC21remainingTripDistanceSdSgvg', symObjAddr: 0x0, symBinAddr: 0x187750, symSize: 0x174 } + - { offset: 0x22E842, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC22distanceToUpcomingTurnSdSgvg', symObjAddr: 0x174, symBinAddr: 0x1878C4, symSize: 0x268 } + - { offset: 0x22E9EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC26distanceToNextUpcomingTurnSdSgvg', symObjAddr: 0x3DC, symBinAddr: 0x187B2C, symSize: 0x2B0 } + - { offset: 0x22EC9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC17instructionStringSo012NSAttributedG0CSgvg', symObjAddr: 0x68C, symBinAddr: 0x187DDC, symSize: 0xB00 } + - { offset: 0x22F40F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC11setLocationyy7Penguin10PILocationCSgF', symObjAddr: 0x118C, symBinAddr: 0x1888DC, symSize: 0x14C } + - { offset: 0x22F5BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC12getEstimates4from2to18isLastEdgeIncludedSd8distance_Sd8durationtSgAA5PlaceCSg_7Penguin07SubpathL0CSgSbtF', symObjAddr: 0x12D8, symBinAddr: 0x188A28, symSize: 0x7C4 } + - { offset: 0x230117, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC18mergeEdgesIfNeededyyF', symObjAddr: 0x1A9C, symBinAddr: 0x1891EC, symSize: 0x35C } + - { offset: 0x2305B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerCfD', symObjAddr: 0x1DF8, symBinAddr: 0x189548, symSize: 0x44 } + - { offset: 0x2305F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC17mergeSimilarEdgesyySay7Penguin11SubpathEdgeCGzFTf4nd_n', symObjAddr: 0x1E5C, symBinAddr: 0x1895AC, symSize: 0x358 } + - { offset: 0x230A48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC15getUpcomingTurn5after2in7Penguin11SubpathEdgeCSgAJ_SayAIGtFTf4nnd_n', symObjAddr: 0x21B4, symBinAddr: 0x189904, symSize: 0x1FC } + - { offset: 0x230E13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC15mergeShortEdgesyySay7Penguin11SubpathEdgeCGzFTf4nd_n', symObjAddr: 0x23B0, symBinAddr: 0x189B00, symSize: 0x668 } + - { offset: 0x23172B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC28mergeTransitionEdgesIfNeededySay7Penguin11SubpathEdgeCGAHzFTf4nd_n', symObjAddr: 0x2A18, symBinAddr: 0x18A168, symSize: 0x454 } + - { offset: 0x23207B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerCfD', symObjAddr: 0x0, symBinAddr: 0x18A5BC, symSize: 0x34 } + - { offset: 0x23209F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerC14sharedInstance33_167A10DA86CA0DE015B6435B6348F1E4LLACSgvpZ', symObjAddr: 0xE8, symBinAddr: 0x37D2F8, symSize: 0x0 } + - { offset: 0x232122, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerCMa', symObjAddr: 0x34, symBinAddr: 0x18A5F0, symSize: 0x20 } + - { offset: 0x23218E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerCfD', symObjAddr: 0x0, symBinAddr: 0x18A5BC, symSize: 0x34 } + - { offset: 0x2321F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerC6sharedACvgZTf4d_n', symObjAddr: 0x54, symBinAddr: 0x18A610, symSize: 0x90 } + - { offset: 0x232638, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVMr', symObjAddr: 0x8, symBinAddr: 0x18A6A0, symSize: 0x74 } + - { offset: 0x23264C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwCP', symObjAddr: 0x7C, symBinAddr: 0x18A714, symSize: 0x88 } + - { offset: 0x232660, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwxx', symObjAddr: 0x104, symBinAddr: 0x18A79C, symSize: 0x10 } + - { offset: 0x232674, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwcp', symObjAddr: 0x114, symBinAddr: 0x18A7AC, symSize: 0x48 } + - { offset: 0x232688, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwca', symObjAddr: 0x15C, symBinAddr: 0x18A7F4, symSize: 0x48 } + - { offset: 0x23269C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwtk', symObjAddr: 0x1A4, symBinAddr: 0x18A83C, symSize: 0x48 } + - { offset: 0x2326B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwta', symObjAddr: 0x1EC, symBinAddr: 0x18A884, symSize: 0x48 } + - { offset: 0x2326C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwet', symObjAddr: 0x234, symBinAddr: 0x18A8CC, symSize: 0x124 } + - { offset: 0x2326D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwst', symObjAddr: 0x358, symBinAddr: 0x18A9F0, symSize: 0x1D4 } + - { offset: 0x2326EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVMa', symObjAddr: 0x52C, symBinAddr: 0x18ABC4, symSize: 0xC } + - { offset: 0x232700, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVMi', symObjAddr: 0x538, symBinAddr: 0x18ABD0, symSize: 0x8 } + - { offset: 0x232714, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVMr', symObjAddr: 0x540, symBinAddr: 0x18ABD8, symSize: 0xD8 } + - { offset: 0x232728, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwCP', symObjAddr: 0x618, symBinAddr: 0x18ACB0, symSize: 0x224 } + - { offset: 0x23273C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwxx', symObjAddr: 0x83C, symBinAddr: 0x18AED4, symSize: 0x11C } + - { offset: 0x232750, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwcp', symObjAddr: 0x958, symBinAddr: 0x18AFF0, symSize: 0x1B8 } + - { offset: 0x232764, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwca', symObjAddr: 0xB10, symBinAddr: 0x18B1A8, symSize: 0x240 } + - { offset: 0x232778, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwtk', symObjAddr: 0xD50, symBinAddr: 0x18B3E8, symSize: 0x1B8 } + - { offset: 0x23278C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwta', symObjAddr: 0xF08, symBinAddr: 0x18B5A0, symSize: 0x240 } + - { offset: 0x2327A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwet', symObjAddr: 0x1148, symBinAddr: 0x18B7E0, symSize: 0x240 } + - { offset: 0x2327B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwst', symObjAddr: 0x1388, symBinAddr: 0x18BA20, symSize: 0x2BC } + - { offset: 0x2327C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVMa', symObjAddr: 0x1644, symBinAddr: 0x18BCDC, symSize: 0xC } + - { offset: 0x23292A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAA8IteratorST_StWT', symObjAddr: 0x20AC, symBinAddr: 0x18C744, symSize: 0x10 } + - { offset: 0x23293E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOMa', symObjAddr: 0x2310, symBinAddr: 0x18C804, symSize: 0xC } + - { offset: 0x232952, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSHAASQWb', symObjAddr: 0x231C, symBinAddr: 0x18C810, symSize: 0x10 } + - { offset: 0x232981, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV12makeIteratorAC0G0Vyx_GyF', symObjAddr: 0x1650, symBinAddr: 0x18BCE8, symSize: 0xFC } + - { offset: 0x2329F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1CA0, symBinAddr: 0x18C338, symSize: 0x3C } + - { offset: 0x232A32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST19underestimatedCountSivgTW', symObjAddr: 0x20EC, symBinAddr: 0x18C784, symSize: 0x8 } + - { offset: 0x232A63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST22_copyToContiguousArrays0hI0Vy7ElementQzGyFTW', symObjAddr: 0x20FC, symBinAddr: 0x18C78C, symSize: 0x50 } + - { offset: 0x232A94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST13_copyContents12initializing8IteratorQz_SitSry7ElementQzG_tFTW', symObjAddr: 0x214C, symBinAddr: 0x18C7DC, symSize: 0x4 } + - { offset: 0x232AB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST32withContiguousStorageIfAvailableyqd__Sgqd__SRy7ElementQzGKXEKlFTW', symObjAddr: 0x2150, symBinAddr: 0x18C7E0, symSize: 0x20 } + - { offset: 0x232AD3, size: 0x8, addend: 0x0, symName: '_$sSTsE22_copyToContiguousArrays0cD0Vy7ElementQzGyFTf4g_n', symObjAddr: 0x2170, symBinAddr: 0x18C800, symSize: 0x4 } + - { offset: 0x232B09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorV4next7ElementQz_AhFtSgyF', symObjAddr: 0x174C, symBinAddr: 0x18BDE4, symSize: 0x4C0 } + - { offset: 0x232B8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsO2eeoiySbAEyx_G_AGtFZ', symObjAddr: 0x1C0C, symBinAddr: 0x18C2A4, symSize: 0x10 } + - { offset: 0x232BE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsO4hash4intoys6HasherVz_tF', symObjAddr: 0x1C1C, symBinAddr: 0x18C2B4, symSize: 0x24 } + - { offset: 0x232C83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsO9hashValueSivg', symObjAddr: 0x1C40, symBinAddr: 0x18C2D8, symSize: 0x44 } + - { offset: 0x232D51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1C84, symBinAddr: 0x18C31C, symSize: 0xC } + - { offset: 0x232D65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSHAASH9hashValueSivgTW', symObjAddr: 0x1C90, symBinAddr: 0x18C328, symSize: 0x8 } + - { offset: 0x232D79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1C98, symBinAddr: 0x18C330, symSize: 0x8 } + - { offset: 0x232D99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorV_7optionsAEyx_GADQz_AC7OptionsOyx_GtcfC', symObjAddr: 0x1CDC, symBinAddr: 0x18C374, symSize: 0x108 } + - { offset: 0x232DDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorV21makeWrappedIfRequired33_A7C4A18C5B2715847F18D055251CDC17LL7ElementQz_AI4nexttSgyF', symObjAddr: 0x1DE4, symBinAddr: 0x18C47C, symSize: 0x2C4 } + - { offset: 0x232E3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVyx_GStAASt4next7ElementQzSgyFTW', symObjAddr: 0x20A8, symBinAddr: 0x18C740, symSize: 0x4 } + - { offset: 0x232E51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST12makeIterator0G0QzyFTW', symObjAddr: 0x20BC, symBinAddr: 0x18C754, symSize: 0x30 } + - { offset: 0x233264, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC14sharedInstance33_C354830B222D97D2F3184DA268CFF79DLLACSgvpZ', symObjAddr: 0x1810, symBinAddr: 0x37D5B0, symSize: 0x0 } + - { offset: 0x233417, size: 0x8, addend: 0x0, symName: '_$sSo13UIAlertActionCIegg_ABIeyBy_TR', symObjAddr: 0x0, symBinAddr: 0x18C820, symSize: 0x4C } + - { offset: 0x23353E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerCMa', symObjAddr: 0x13B4, symBinAddr: 0x18DBD4, symSize: 0x20 } + - { offset: 0x23358E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC21handleLimitedAccuracy33_C354830B222D97D2F3184DA268CFF79DLLyyF', symObjAddr: 0x13D4, symBinAddr: 0x18DBF4, symSize: 0x100 } + - { offset: 0x233651, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC21handleLimitedAccuracy33_C354830B222D97D2F3184DA268CFF79DLLyyFTo', symObjAddr: 0x14D4, symBinAddr: 0x18DCF4, symSize: 0x28 } + - { offset: 0x23366D, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyaABSHSCWl', symObjAddr: 0x16B0, symBinAddr: 0x18DE8C, symSize: 0x44 } + - { offset: 0x233681, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x174C, symBinAddr: 0x18DED4, symSize: 0x10 } + - { offset: 0x233695, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x175C, symBinAddr: 0x18DEE4, symSize: 0x8 } + - { offset: 0x2336A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC06handleD11InteractionyyFyycACcfu1_yycfu2_TA', symObjAddr: 0x17D0, symBinAddr: 0x18DF18, symSize: 0x8 } + - { offset: 0x23385A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC09preferredD4Type33_C354830B222D97D2F3184DA268CFF79DLLAA0dG0OSgvg', symObjAddr: 0x4C, symBinAddr: 0x18C86C, symSize: 0x138 } + - { offset: 0x2338E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC20isServerDisconnectedSbvg', symObjAddr: 0x184, symBinAddr: 0x18C9A4, symSize: 0xCC } + - { offset: 0x2339A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC14isReconnectingSbvg', symObjAddr: 0x250, symBinAddr: 0x18CA70, symSize: 0xC8 } + - { offset: 0x233A21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC25areDirectionsNotAvailableSbvg', symObjAddr: 0x318, symBinAddr: 0x18CB38, symSize: 0xC8 } + - { offset: 0x233AAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC17locationDetection6statusyAA08LocationG6StatusO_tF', symObjAddr: 0x3E0, symBinAddr: 0x18CC00, symSize: 0xE0 } + - { offset: 0x233B6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC25networkInterfaceDidChange2toy7Network11NWInterfaceV0G4TypeO_tF', symObjAddr: 0x4C0, symBinAddr: 0x18CCE0, symSize: 0x174 } + - { offset: 0x233C07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC24handleConnectivityAction10completionyyycSg_tFyycACcfu_yycfu0_', symObjAddr: 0x768, symBinAddr: 0x18CF88, symSize: 0x4 } + - { offset: 0x233C2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC24handleConnectivityAction10completionyyycSg_tFyycACcfu_yycfu0_', symObjAddr: 0x768, symBinAddr: 0x18CF88, symSize: 0x4 } + - { offset: 0x233C7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC06handleD11InteractionyyF', symObjAddr: 0x76C, symBinAddr: 0x18CF8C, symSize: 0x14C } + - { offset: 0x233CEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC06handleD11InteractionyyFyycACcfu1_yycfu2_', symObjAddr: 0x8B8, symBinAddr: 0x18D0D8, symSize: 0x164 } + - { offset: 0x233E61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC9showPopup33_C354830B222D97D2F3184DA268CFF79DLL9toastType10completionyAA0dP0O_yycSgtF', symObjAddr: 0xA1C, symBinAddr: 0x18D23C, symSize: 0x350 } + - { offset: 0x233F50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC17showSettingsPopup33_C354830B222D97D2F3184DA268CFF79DLL9toastType6action11closeActionyAA0dQ0O_yycSgAKtF', symObjAddr: 0xD6C, symBinAddr: 0x18D58C, symSize: 0x494 } + - { offset: 0x234091, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC06removeD033_C354830B222D97D2F3184DA268CFF79DLL4fromySo6UIViewC_tF', symObjAddr: 0x1200, symBinAddr: 0x18DA20, symSize: 0x170 } + - { offset: 0x23424E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerCfD', symObjAddr: 0x1370, symBinAddr: 0x18DB90, symSize: 0x44 } + - { offset: 0x23428E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC11showSetting33_C354830B222D97D2F3184DA268CFF79DLLyyFTf4d_n', symObjAddr: 0x14FC, symBinAddr: 0x18DD1C, symSize: 0x170 } + - { offset: 0x234A89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarCfETo', symObjAddr: 0x1A18, symBinAddr: 0x18F948, symSize: 0x68 } + - { offset: 0x234AB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarCMa', symObjAddr: 0x1A80, symBinAddr: 0x18F9B0, symSize: 0x20 } + - { offset: 0x234AEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC24textFieldDidBeginEditingyySo06UITextG0CFTo', symObjAddr: 0x1AA0, symBinAddr: 0x18F9D0, symSize: 0x90 } + - { offset: 0x234B35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC9textField_24shouldChangeCharactersIn17replacementStringSbSo06UITextG0C_So8_NSRangeVSStF', symObjAddr: 0x1B30, symBinAddr: 0x18FA60, symSize: 0x198 } + - { offset: 0x234C17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC9textField_24shouldChangeCharactersIn17replacementStringSbSo06UITextG0C_So8_NSRangeVSStFTo', symObjAddr: 0x1CC8, symBinAddr: 0x18FBF8, symSize: 0x98 } + - { offset: 0x234C5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC21textFieldShouldReturnySbSo06UITextG0CFTo', symObjAddr: 0x1D60, symBinAddr: 0x18FC90, symSize: 0xB8 } + - { offset: 0x234CB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldCMa', symObjAddr: 0x20A0, symBinAddr: 0x18FF78, symSize: 0x20 } + - { offset: 0x234CC6, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeya_yptWOh', symObjAddr: 0x2154, symBinAddr: 0x18FF98, symSize: 0x40 } + - { offset: 0x234D3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC5frameACSo6CGRectV_tcfc', symObjAddr: 0xA0, symBinAddr: 0x18DFD0, symSize: 0xFC } + - { offset: 0x234D9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x19C, symBinAddr: 0x18E0CC, symSize: 0x20 } + - { offset: 0x234EE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1BC, symBinAddr: 0x18E0EC, symSize: 0xEC } + - { offset: 0x234F49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2A8, symBinAddr: 0x18E1D8, symSize: 0x28 } + - { offset: 0x234FB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC05setupC033_43BDFA56F7E262D3F1D79FF4A74F188FLLyyF', symObjAddr: 0x2D0, symBinAddr: 0x18E200, symSize: 0x300 } + - { offset: 0x235164, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC05setupD9TextFieldyyF', symObjAddr: 0x5D0, symBinAddr: 0x18E500, symSize: 0x67C } + - { offset: 0x2355EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC17setupCancelButtonyyF', symObjAddr: 0xC4C, symBinAddr: 0x18EB7C, symSize: 0x3E0 } + - { offset: 0x2358CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC05setupD4IconyyF', symObjAddr: 0x102C, symBinAddr: 0x18EF5C, symSize: 0x204 } + - { offset: 0x235ACE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC16setupClearButtonyyF', symObjAddr: 0x1230, symBinAddr: 0x18F160, symSize: 0x4A0 } + - { offset: 0x235D54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC03setD4TextyySSSgF', symObjAddr: 0x16D0, symBinAddr: 0x18F600, symSize: 0x1A8 } + - { offset: 0x235E4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC18cancelButtonTapped33_43BDFA56F7E262D3F1D79FF4A74F188FLLyyFTo', symObjAddr: 0x1878, symBinAddr: 0x18F7A8, symSize: 0x90 } + - { offset: 0x235E8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC17clearButtonTapped33_43BDFA56F7E262D3F1D79FF4A74F188FLLyyF', symObjAddr: 0x1908, symBinAddr: 0x18F838, symSize: 0xDC } + - { offset: 0x235F38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC17clearButtonTapped33_43BDFA56F7E262D3F1D79FF4A74F188FLLyyFTo', symObjAddr: 0x19E4, symBinAddr: 0x18F914, symSize: 0x28 } + - { offset: 0x235F65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldC03hasF0SbvgTo', symObjAddr: 0x1E40, symBinAddr: 0x18FD48, symSize: 0x34 } + - { offset: 0x235F79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldC03hasF0Sbvg', symObjAddr: 0x1E74, symBinAddr: 0x18FD7C, symSize: 0x104 } + - { offset: 0x235FDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1F78, symBinAddr: 0x18FE80, symSize: 0x6C } + - { offset: 0x236033, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1FE4, symBinAddr: 0x18FEEC, symSize: 0x80 } + - { offset: 0x2364AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7PatternCMa', symObjAddr: 0x24, symBinAddr: 0x18FFD8, symSize: 0x20 } + - { offset: 0x236518, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7PatternCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x44, symBinAddr: 0x18FFF8, symSize: 0x64 } + - { offset: 0x2368CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC6cancelyyFTo', symObjAddr: 0x0, symBinAddr: 0x19005C, symSize: 0x70 } + - { offset: 0x2369B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCfE', symObjAddr: 0xBC, symBinAddr: 0x190118, symSize: 0x10 } + - { offset: 0x2369DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCfETo', symObjAddr: 0xFC, symBinAddr: 0x190158, symSize: 0x10 } + - { offset: 0x236A0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCMa', symObjAddr: 0x10C, symBinAddr: 0x190168, symSize: 0x20 } + - { offset: 0x236A30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC05trackd2ByE0_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFTf4dnnn_n', symObjAddr: 0x12C, symBinAddr: 0x190188, symSize: 0x43C } + - { offset: 0x236B59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC6cancelyyFTo', symObjAddr: 0x0, symBinAddr: 0x19005C, symSize: 0x70 } + - { offset: 0x236BCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC4mainyyFTo', symObjAddr: 0x70, symBinAddr: 0x1900CC, symSize: 0x20 } + - { offset: 0x236BE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC4mainyyFTo', symObjAddr: 0x70, symBinAddr: 0x1900CC, symSize: 0x20 } + - { offset: 0x236C03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC4mainyyFTo', symObjAddr: 0x70, symBinAddr: 0x1900CC, symSize: 0x20 } + - { offset: 0x236C47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCACycfcTo', symObjAddr: 0x90, symBinAddr: 0x1900EC, symSize: 0x2C } + - { offset: 0x236CA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCfD', symObjAddr: 0xCC, symBinAddr: 0x190128, symSize: 0x30 } + - { offset: 0x2370AA, size: 0x8, addend: 0x0, symName: '_$sSo30UIGraphicsImageRendererContextCIegg_ABIyBy_TR', symObjAddr: 0x20, symBinAddr: 0x1905C4, symSize: 0x38 } + - { offset: 0x237285, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE8svgNamed2in7optionsABSgSS_So8NSBundleCAC3SVGC7OptionsVtcfC', symObjAddr: 0x58, symBinAddr: 0x1905FC, symSize: 0x384 } + - { offset: 0x2374C7, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIEyAbC3SVGCcfC', symObjAddr: 0x3DC, symBinAddr: 0x190980, symSize: 0xF4 } + - { offset: 0x237549, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7svgDataABSg10Foundation0F0V_tcfC', symObjAddr: 0x4D0, symBinAddr: 0x190A74, symSize: 0x78 } + - { offset: 0x2375FA, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7svgDataABSg10Foundation0F0V_tcfc', symObjAddr: 0x548, symBinAddr: 0x190AEC, symSize: 0x224 } + - { offset: 0x237783, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7svgDataABSg10Foundation0F0V_tcfcTo', symObjAddr: 0x76C, symBinAddr: 0x190D10, symSize: 0x58 } + - { offset: 0x23779F, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE17contentsOfSVGFileABSgSS_tcfC', symObjAddr: 0x7C4, symBinAddr: 0x190D68, symSize: 0x74 } + - { offset: 0x2377BD, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE17contentsOfSVGFileABSgSS_tcfc', symObjAddr: 0x838, symBinAddr: 0x190DDC, symSize: 0x2B4 } + - { offset: 0x2379A8, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE17contentsOfSVGFileABSgSS_tcfcTo', symObjAddr: 0xAEC, symBinAddr: 0x191090, symSize: 0x28 } + - { offset: 0x2379C4, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE9_svgNamedyABSgSSFZ', symObjAddr: 0xB14, symBinAddr: 0x1910B8, symSize: 0x98 } + - { offset: 0x237A13, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE9_svgNamedyABSgSSFZTo', symObjAddr: 0xBAC, symBinAddr: 0x191150, symSize: 0x90 } + - { offset: 0x237A50, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE9_svgNamed_2inABSgSS_So8NSBundleCtFZ', symObjAddr: 0xC3C, symBinAddr: 0x1911E0, symSize: 0x7C } + - { offset: 0x237AB5, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE9_svgNamed_2inABSgSS_So8NSBundleCtFZTo', symObjAddr: 0xCB8, symBinAddr: 0x19125C, symSize: 0x7C } + - { offset: 0x237AF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC9rasterizeSo7UIImageCyF', symObjAddr: 0xD34, symBinAddr: 0x1912D8, symSize: 0x30 } + - { offset: 0x237B51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtF', symObjAddr: 0xD64, symBinAddr: 0x191308, symSize: 0x234 } + - { offset: 0x237C8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtFySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0x1124, symBinAddr: 0x1916C8, symSize: 0x78 } + - { offset: 0x237D95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC10makeBounds4size5scale6insetsSo6CGRectV6bounds_Si10pixelsWideSi0L4HightSo6CGSizeVSg_12CoreGraphics7CGFloatVAC6InsetsVtF', symObjAddr: 0xF98, symBinAddr: 0x19153C, symSize: 0x18C } + - { offset: 0x237EAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7pngData4size5scale6insets10Foundation0F0VSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtKF', symObjAddr: 0x119C, symBinAddr: 0x191740, symSize: 0xC8 } + - { offset: 0x237F50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC8jpegData4size5scale18compressionQuality6insets10Foundation0F0VSo6CGSizeVSg_12CoreGraphics7CGFloatVAQSo12UIEdgeInsetsVtKF', symObjAddr: 0x1264, symBinAddr: 0x191808, symSize: 0xE4 } + - { offset: 0x238004, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0x1474, symBinAddr: 0x191910, symSize: 0x10 } + - { offset: 0x238018, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x14B4, symBinAddr: 0x191930, symSize: 0x10 } + - { offset: 0x23802C, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x14C4, symBinAddr: 0x191940, symSize: 0x8 } + - { offset: 0x238040, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_64660464CF3F4A91161BC661976AF1A2LLVMa', symObjAddr: 0x1668, symBinAddr: 0x191948, symSize: 0x10 } + - { offset: 0x238054, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_64660464CF3F4A91161BC661976AF1A2LLV10Foundation09LocalizedE0AAsADPWb', symObjAddr: 0x1678, symBinAddr: 0x191958, symSize: 0x4 } + - { offset: 0x238D80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCfE', symObjAddr: 0x2938, symBinAddr: 0x194294, symSize: 0xFC } + - { offset: 0x238DAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCfETo', symObjAddr: 0x2A64, symBinAddr: 0x1943C0, symSize: 0x108 } + - { offset: 0x238DDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCMa', symObjAddr: 0x2B6C, symBinAddr: 0x1944C8, symSize: 0x20 } + - { offset: 0x238E2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x2B8C, symBinAddr: 0x1944E8, symSize: 0x98 } + - { offset: 0x238EDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x2C24, symBinAddr: 0x194580, symSize: 0x24 } + - { offset: 0x238F5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x2C48, symBinAddr: 0x1945A4, symSize: 0x84 } + - { offset: 0x238FCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x2CCC, symBinAddr: 0x194628, symSize: 0x28 } + - { offset: 0x23900C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x2CF4, symBinAddr: 0x194650, symSize: 0x20C } + - { offset: 0x23920E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x2F00, symBinAddr: 0x19485C, symSize: 0x50 } + - { offset: 0x23922A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x2F50, symBinAddr: 0x1948AC, symSize: 0x154 } + - { offset: 0x2392C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x3120, symBinAddr: 0x194A00, symSize: 0x8 } + - { offset: 0x2392FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x3128, symBinAddr: 0x194A08, symSize: 0x4 } + - { offset: 0x23931A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x3128, symBinAddr: 0x194A08, symSize: 0x4 } + - { offset: 0x239335, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x3158, symBinAddr: 0x194A30, symSize: 0x10 } + - { offset: 0x239349, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x3168, symBinAddr: 0x194A40, symSize: 0x8 } + - { offset: 0x23935D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC17showRouteOverviewyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x3294, symBinAddr: 0x194A6C, symSize: 0x20 } + - { offset: 0x239397, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11getDistance2toyAA5PlaceCSg_tFySdSgcfU_TA', symObjAddr: 0x338C, symBinAddr: 0x194A8C, symSize: 0xC } + - { offset: 0x2393AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11getDistance2toyAA5PlaceCSg_tFySdSgcfU_yycfU_TA', symObjAddr: 0x33BC, symBinAddr: 0x194ABC, symSize: 0xC } + - { offset: 0x2393BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyFyycfU_TA', symObjAddr: 0x33C8, symBinAddr: 0x194AC8, symSize: 0x8 } + - { offset: 0x2393D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyFyycfU0_TA', symObjAddr: 0x33D0, symBinAddr: 0x194AD0, symSize: 0x8 } + - { offset: 0x239851, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x19195C, symSize: 0x10 } + - { offset: 0x239869, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x19195C, symSize: 0x10 } + - { offset: 0x2398AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06scrollF0So08UIScrollF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x19196C, symSize: 0x34 } + - { offset: 0x2398FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1919A0, symSize: 0x10 } + - { offset: 0x239916, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1919A0, symSize: 0x10 } + - { offset: 0x239956, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1919B0, symSize: 0x34 } + - { offset: 0x2399A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11parkingTimeSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1919E4, symSize: 0x10 } + - { offset: 0x2399BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11parkingTimeSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1919E4, symSize: 0x10 } + - { offset: 0x2399F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11parkingTimeSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x1919F4, symSize: 0x34 } + - { offset: 0x239A47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x191A28, symSize: 0x10 } + - { offset: 0x239A5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x191A28, symSize: 0x10 } + - { offset: 0x239A9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x191A38, symSize: 0x34 } + - { offset: 0x239AE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC16directionsButtonAA06HapticF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x191A6C, symSize: 0x10 } + - { offset: 0x239B01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC16directionsButtonAA06HapticF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x191A6C, symSize: 0x10 } + - { offset: 0x239B41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC16directionsButtonAA06HapticF0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x191A7C, symSize: 0x34 } + - { offset: 0x239B90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06removeD6ButtonAA06HapticF0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x191AB0, symSize: 0x10 } + - { offset: 0x239BA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06removeD6ButtonAA06HapticF0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x191AB0, symSize: 0x10 } + - { offset: 0x239BE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06removeD6ButtonAA06HapticF0CSgvsTo', symObjAddr: 0x164, symBinAddr: 0x191AC0, symSize: 0x34 } + - { offset: 0x239C32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC010titleStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x191AF4, symSize: 0x10 } + - { offset: 0x239C4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC010titleStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x191AF4, symSize: 0x10 } + - { offset: 0x239C8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC010titleStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x191B04, symSize: 0x34 } + - { offset: 0x239CD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x191B38, symSize: 0x10 } + - { offset: 0x239CF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x191B38, symSize: 0x10 } + - { offset: 0x239D31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x191B48, symSize: 0x34 } + - { offset: 0x239DD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x220, symBinAddr: 0x191B7C, symSize: 0x110 } + - { offset: 0x239E89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x330, symBinAddr: 0x191C8C, symSize: 0x28 } + - { offset: 0x239ED4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyF', symObjAddr: 0x358, symBinAddr: 0x191CB4, symSize: 0x12C } + - { offset: 0x239F90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyFyycfU_', symObjAddr: 0x484, symBinAddr: 0x191DE0, symSize: 0x54 } + - { offset: 0x239FB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyFyycfU0_', symObjAddr: 0x4D8, symBinAddr: 0x191E34, symSize: 0x1C0 } + - { offset: 0x23A2E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC03setD7AddressyyF', symObjAddr: 0x698, symBinAddr: 0x191FF4, symSize: 0x4B8 } + - { offset: 0x23A846, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC014loadDistanceOfD0yyF', symObjAddr: 0xB50, symBinAddr: 0x1924AC, symSize: 0x1F4 } + - { offset: 0x23AA5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC03setD4DateyyF', symObjAddr: 0xD44, symBinAddr: 0x1926A0, symSize: 0x838 } + - { offset: 0x23AC49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11getDistance2toyAA5PlaceCSg_tFySdSgcfU_', symObjAddr: 0x157C, symBinAddr: 0x192ED8, symSize: 0x24C } + - { offset: 0x23AD82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11getDistance2toyAA5PlaceCSg_tFySdSgcfU_yycfU_', symObjAddr: 0x17C8, symBinAddr: 0x193124, symSize: 0x104 } + - { offset: 0x23AE5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC17showRouteOverviewyyF', symObjAddr: 0x18CC, symBinAddr: 0x193228, symSize: 0x474 } + - { offset: 0x23B327, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC22showNavigationOverview33_7A88AEBDF2F3A6A99527A4374A87C8B0LL6sourceyAA5PlaceCSg_tF', symObjAddr: 0x1D40, symBinAddr: 0x19369C, symSize: 0x284 } + - { offset: 0x23B586, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5shareyyF', symObjAddr: 0x1FC4, symBinAddr: 0x193920, symSize: 0x100 } + - { offset: 0x23B655, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0x20C4, symBinAddr: 0x193A20, symSize: 0x4C0 } + - { offset: 0x23B8BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5shareyyFTo', symObjAddr: 0x2584, symBinAddr: 0x193EE0, symSize: 0x28 } + - { offset: 0x23B8D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x25AC, symBinAddr: 0x193F08, symSize: 0x88 } + - { offset: 0x23B900, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x2634, symBinAddr: 0x193F90, symSize: 0x154 } + - { offset: 0x23B941, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x2788, symBinAddr: 0x1940E4, symSize: 0x60 } + - { offset: 0x23B955, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x27E8, symBinAddr: 0x194144, symSize: 0x128 } + - { offset: 0x23B988, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2910, symBinAddr: 0x19426C, symSize: 0x28 } + - { offset: 0x23B99C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCfD', symObjAddr: 0x2A34, symBinAddr: 0x194390, symSize: 0x30 } + - { offset: 0x23BE3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVMa', symObjAddr: 0x0, symBinAddr: 0x194AE8, symSize: 0x10 } + - { offset: 0x23BE56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVMa', symObjAddr: 0x0, symBinAddr: 0x194AE8, symSize: 0x10 } + - { offset: 0x23BF57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOAFs0F3KeyAAWl', symObjAddr: 0x220, symBinAddr: 0x194C68, symSize: 0x40 } + - { offset: 0x23BF6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOMa', symObjAddr: 0x260, symBinAddr: 0x194CA8, symSize: 0x10 } + - { offset: 0x23BF7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x270, symBinAddr: 0x194CB8, symSize: 0x4 } + - { offset: 0x23BF93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x274, symBinAddr: 0x194CBC, symSize: 0x40 } + - { offset: 0x23BFA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x2B4, symBinAddr: 0x194CFC, symSize: 0x4 } + - { offset: 0x23BFBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x2B8, symBinAddr: 0x194D00, symSize: 0x40 } + - { offset: 0x23BFE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x60, symBinAddr: 0x194B30, symSize: 0x28 } + - { offset: 0x23C005, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x88, symBinAddr: 0x194B58, symSize: 0x28 } + - { offset: 0x23C022, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x10, symBinAddr: 0x194AF8, symSize: 0xC } + - { offset: 0x23C03C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1C, symBinAddr: 0x194B04, symSize: 0x2C } + - { offset: 0x23C063, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xB0, symBinAddr: 0x194B80, symSize: 0x24 } + - { offset: 0x23C0A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xD4, symBinAddr: 0x194BA4, symSize: 0xC4 } + - { offset: 0x23C45A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOMa', symObjAddr: 0x0, symBinAddr: 0x194D40, symSize: 0x10 } + - { offset: 0x23C472, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOMa', symObjAddr: 0x0, symBinAddr: 0x194D40, symSize: 0x10 } + - { offset: 0x23C545, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOSHAASQWb', symObjAddr: 0x608, symBinAddr: 0x19527C, symSize: 0x4 } + - { offset: 0x23C559, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOACSQAAWl', symObjAddr: 0x60C, symBinAddr: 0x195280, symSize: 0x40 } + - { offset: 0x23C591, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO7messageSSvg', symObjAddr: 0x10, symBinAddr: 0x194D50, symSize: 0x158 } + - { offset: 0x23C5C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO10popupTitleSSvg', symObjAddr: 0x168, symBinAddr: 0x194EA8, symSize: 0x118 } + - { offset: 0x23C5FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO12popupMessageSSvg', symObjAddr: 0x280, symBinAddr: 0x194FC0, symSize: 0x144 } + - { offset: 0x23C634, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO16popupCloseActionSSvg', symObjAddr: 0x3C4, symBinAddr: 0x195104, symSize: 0x148 } + - { offset: 0x23C6B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x5CC, symBinAddr: 0x19524C, symSize: 0x30 } + - { offset: 0x23C6DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x64C, symBinAddr: 0x1952C0, symSize: 0x14 } + - { offset: 0x23CBEE, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelC8PenNavUIE14escalatorEdgesSayAA4EdgeCGvg', symObjAddr: 0x0, symBinAddr: 0x1952D4, symSize: 0x1D4 } + - { offset: 0x23CE3A, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelC8PenNavUIE14escalatorEdgesSayAA4EdgeCGvgSbAGXEfU_', symObjAddr: 0x1D4, symBinAddr: 0x1954A8, symSize: 0x330 } + - { offset: 0x23D3D4, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelCAA0C13Representable8PenNavUIAaDP13isUpEscalatorSbvgTW', symObjAddr: 0xD48, symBinAddr: 0x19601C, symSize: 0x24 } + - { offset: 0x23D3F0, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelCAA0C13Representable8PenNavUIAaDP15isDownEscalatorSbvgTW', symObjAddr: 0xD6C, symBinAddr: 0x196040, symSize: 0x24 } + - { offset: 0x23D40C, size: 0x8, addend: 0x0, symName: '_$s7Penguin11EdgeTypeNewOACSYAAWl', symObjAddr: 0xD90, symBinAddr: 0x196064, symSize: 0x44 } + - { offset: 0x23D6A3, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelCAA0C13Representable8PenNavUIAaDP8nodeTypeAA0cJ0OSgvgTW', symObjAddr: 0xD28, symBinAddr: 0x195FFC, symSize: 0x20 } + - { offset: 0x23DA54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOMa', symObjAddr: 0x168, symBinAddr: 0x1960A8, symSize: 0x10 } + - { offset: 0x23DA68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwxx', symObjAddr: 0x1A4, symBinAddr: 0x1960B8, symSize: 0x28 } + - { offset: 0x23DA7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwcp', symObjAddr: 0x1CC, symBinAddr: 0x1960E0, symSize: 0x6C } + - { offset: 0x23DA90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwca', symObjAddr: 0x238, symBinAddr: 0x19614C, symSize: 0xA4 } + - { offset: 0x23DAA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwta', symObjAddr: 0x2F8, symBinAddr: 0x1961F0, symSize: 0x74 } + - { offset: 0x23DAB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwet', symObjAddr: 0x36C, symBinAddr: 0x196264, symSize: 0x48 } + - { offset: 0x23DACC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwst', symObjAddr: 0x3B4, symBinAddr: 0x1962AC, symSize: 0x4C } + - { offset: 0x23DAE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVMa', symObjAddr: 0x400, symBinAddr: 0x1962F8, symSize: 0x10 } + - { offset: 0x23DB10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOSHAASQWb', symObjAddr: 0x418, symBinAddr: 0x196310, symSize: 0x4 } + - { offset: 0x23DB24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOAGSQAAWl', symObjAddr: 0x41C, symBinAddr: 0x196314, symSize: 0x40 } + - { offset: 0x23DBC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0x410, symBinAddr: 0x196308, symSize: 0x8 } + - { offset: 0x23DC0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x698, symBinAddr: 0x196354, symSize: 0x70 } + - { offset: 0x23E1C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCfE', symObjAddr: 0x294, symBinAddr: 0x196658, symSize: 0x94 } + - { offset: 0x23E1F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCMU', symObjAddr: 0x428, symBinAddr: 0x1967EC, symSize: 0x8 } + - { offset: 0x23E204, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCMa', symObjAddr: 0x430, symBinAddr: 0x1967F4, symSize: 0x38 } + - { offset: 0x23E218, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCMr', symObjAddr: 0x468, symBinAddr: 0x19682C, symSize: 0x68 } + - { offset: 0x23E22C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVwxx', symObjAddr: 0x4FC, symBinAddr: 0x196894, symSize: 0x50 } + - { offset: 0x23E240, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVwcp', symObjAddr: 0x54C, symBinAddr: 0x1968E4, symSize: 0x8C } + - { offset: 0x23E254, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVwca', symObjAddr: 0x5D8, symBinAddr: 0x196970, symSize: 0xD4 } + - { offset: 0x23E268, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVwta', symObjAddr: 0x6C8, symBinAddr: 0x196A44, symSize: 0x7C } + - { offset: 0x23E27C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVMa', symObjAddr: 0x7D8, symBinAddr: 0x196AC0, symSize: 0x10 } + - { offset: 0x23E290, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetVMa', symObjAddr: 0x7E8, symBinAddr: 0x196AD0, symSize: 0x10 } + - { offset: 0x23E2A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC7ViewBoxVMa', symObjAddr: 0x850, symBinAddr: 0x196AE0, symSize: 0x10 } + - { offset: 0x23E2CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4MaskVMa', symObjAddr: 0xC34, symBinAddr: 0x196E74, symSize: 0x10 } + - { offset: 0x23E2E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8ClipPathVMa', symObjAddr: 0xDD8, symBinAddr: 0x196F68, symSize: 0x10 } + - { offset: 0x23E2F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwxx', symObjAddr: 0xE04, symBinAddr: 0x196F7C, symSize: 0x10 } + - { offset: 0x23E30A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwca', symObjAddr: 0xE74, symBinAddr: 0x196FD4, symSize: 0x54 } + - { offset: 0x23E31E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwta', symObjAddr: 0xEDC, symBinAddr: 0x197028, symSize: 0x44 } + - { offset: 0x23E332, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwet', symObjAddr: 0xF20, symBinAddr: 0x19706C, symSize: 0x48 } + - { offset: 0x23E346, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwst', symObjAddr: 0xF68, symBinAddr: 0x1970B4, symSize: 0x44 } + - { offset: 0x23E35A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwug', symObjAddr: 0xFAC, symBinAddr: 0x1970F8, symSize: 0x8 } + - { offset: 0x23E36E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwui', symObjAddr: 0xFB8, symBinAddr: 0x197100, symSize: 0x8 } + - { offset: 0x23E382, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOMa', symObjAddr: 0xFC0, symBinAddr: 0x197108, symSize: 0x10 } + - { offset: 0x23E396, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOAGSQAAWl', symObjAddr: 0xFD0, symBinAddr: 0x197118, symSize: 0x40 } + - { offset: 0x23E3D6, size: 0x8, addend: 0x0, symName: '_$sSLsE2geoiySbx_xtFZ8PenNavUI3DOMO10StyleSheetV8SelectorO_Tt1g5', symObjAddr: 0x0, symBinAddr: 0x1963C4, symSize: 0xCC } + - { offset: 0x23E473, size: 0x8, addend: 0x0, symName: '_$sSLsE1goiySbx_xtFZ8PenNavUI3DOMO10StyleSheetV8SelectorO_Tt1g5', symObjAddr: 0xCC, symBinAddr: 0x196490, symSize: 0xD4 } + - { offset: 0x23E543, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x958, symBinAddr: 0x196BAC, symSize: 0x5C } + - { offset: 0x23E5FD, size: 0x8, addend: 0x0, symName: '_$sSLsE2leoiySbx_xtFZ8PenNavUI3DOMO10StyleSheetV8SelectorO_Tt1g5', symObjAddr: 0x9CC, symBinAddr: 0x196C20, symSize: 0xD4 } + - { offset: 0x23E6E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC5width6heightAESi_Sitcfc', symObjAddr: 0x1A0, symBinAddr: 0x196564, symSize: 0xB8 } + - { offset: 0x23E75B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC7ViewBoxVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x258, symBinAddr: 0x19661C, symSize: 0x3C } + - { offset: 0x23E7B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCfD', symObjAddr: 0x328, symBinAddr: 0x1966EC, symSize: 0x100 } + - { offset: 0x23E801, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0x860, symBinAddr: 0x196AF0, symSize: 0x14 } + - { offset: 0x23E86E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOSHAASH9hashValueSivgTW', symObjAddr: 0x8B8, symBinAddr: 0x196B0C, symSize: 0x60 } + - { offset: 0x23E971, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x918, symBinAddr: 0x196B6C, symSize: 0x40 } + - { offset: 0x23EA1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xAD8, symBinAddr: 0x196D2C, symSize: 0x64 } + - { offset: 0x23EA84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorO1loiySbAG_AGtFZTf4nnd_n', symObjAddr: 0xB3C, symBinAddr: 0x196D90, symSize: 0xCC } + - { offset: 0x23EE8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5frame9dotsCountACSo6CGRectV_Sitcfc', symObjAddr: 0x0, symBinAddr: 0x197180, symSize: 0x1C4 } + - { offset: 0x23F14B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorCfETo', symObjAddr: 0xCE4, symBinAddr: 0x197E64, symSize: 0x10 } + - { offset: 0x23F17A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorCMa', symObjAddr: 0xCF4, symBinAddr: 0x197E74, symSize: 0x20 } + - { offset: 0x23F2EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5frame9dotsCountACSo6CGRectV_Sitcfc', symObjAddr: 0x0, symBinAddr: 0x197180, symSize: 0x1C4 } + - { offset: 0x23F3FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5frameACSo6CGRectV_tcfc', symObjAddr: 0x1C4, symBinAddr: 0x197344, symSize: 0x1B4 } + - { offset: 0x23F4F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x378, symBinAddr: 0x1974F8, symSize: 0x20 } + - { offset: 0x23F531, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x398, symBinAddr: 0x197518, symSize: 0x1B8 } + - { offset: 0x23F63F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x550, symBinAddr: 0x1976D0, symSize: 0x28 } + - { offset: 0x23F814, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC14setUpAnimation2in4size5colorySo7CALayerC_So6CGSizeVSo7UIColorCtF', symObjAddr: 0x578, symBinAddr: 0x1976F8, symSize: 0x73C } + - { offset: 0x23FCE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorCfD', symObjAddr: 0xCB4, symBinAddr: 0x197E34, symSize: 0x30 } + - { offset: 0x2404A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerCMU', symObjAddr: 0x1C20, symBinAddr: 0x199AB4, symSize: 0x8 } + - { offset: 0x2404B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerCMa', symObjAddr: 0x1C28, symBinAddr: 0x199ABC, symSize: 0x38 } + - { offset: 0x2404CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerCMr', symObjAddr: 0x1C60, symBinAddr: 0x199AF4, symSize: 0x78 } + - { offset: 0x2404E0, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgWOf', symObjAddr: 0x1D70, symBinAddr: 0x199B6C, symSize: 0x48 } + - { offset: 0x2404F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC014getCategorizedD02in8categorySay7Penguin10PoiPolygonVGAG5VenueCSg_AG11POICategoryVSgtFSbAIXEfU_TA', symObjAddr: 0x1EA4, symBinAddr: 0x199BD8, symSize: 0x1C } + - { offset: 0x24091F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC6select_8category25setsCameraToSelectedPlace08animatesI0yAA0L0CSg_7Penguin11POICategoryVSgS2btF', symObjAddr: 0x0, symBinAddr: 0x197E94, symSize: 0xBEC } + - { offset: 0x240DF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC8deselectyyF', symObjAddr: 0xBEC, symBinAddr: 0x198A80, symSize: 0xD4 } + - { offset: 0x240E43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC22updateSymbolVisibility2ony7Penguin5FloorCSg_tF', symObjAddr: 0xCC0, symBinAddr: 0x198B54, symSize: 0x1F0 } + - { offset: 0x240EA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC16updateSymbolTextyySSF', symObjAddr: 0xEB0, symBinAddr: 0x198D44, symSize: 0x130 } + - { offset: 0x2410C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC16updateSymbolIconyyFySo7UIImageCSgcfU_', symObjAddr: 0xFE0, symBinAddr: 0x198E74, symSize: 0xBF0 } + - { offset: 0x2414C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerCfD', symObjAddr: 0x1BD0, symBinAddr: 0x199A64, symSize: 0x50 } + - { offset: 0x243BBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC05clearD12PathFeaturesyyF', symObjAddr: 0x4C, symBinAddr: 0x199BF4, symSize: 0x1DC } + - { offset: 0x243EC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCfETo', symObjAddr: 0x6F4, symBinAddr: 0x19A29C, symSize: 0x2A4 } + - { offset: 0x244039, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11setLocation33_00AFBD3210DA1B0197CE155260A7E798LL_28skipsIntermediateCoordinatesy7Penguin10PILocationCSg_SbtF', symObjAddr: 0xB18, symBinAddr: 0x19A6C0, symSize: 0x18C } + - { offset: 0x244147, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateCompassMarginsyyF', symObjAddr: 0xEDC, symBinAddr: 0x19AA84, symSize: 0x21C } + - { offset: 0x244380, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8setupMapyyF', symObjAddr: 0x1258, symBinAddr: 0x19AE00, symSize: 0x2E4 } + - { offset: 0x244643, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8setupMapyyFySbcfU_', symObjAddr: 0x131C0, symBinAddr: 0x1ACC5C, symSize: 0x54 } + - { offset: 0x244968, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSgSbIegny_ACSbIegny_TR', symObjAddr: 0x31E4, symBinAddr: 0x19CD8C, symSize: 0xC0 } + - { offset: 0x24522C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC09addBottomD5PanelyyF', symObjAddr: 0x7A70, symBinAddr: 0x1A15A8, symSize: 0x3DC } + - { offset: 0x2458ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23setToastBackgroundColoryySo7UIColorCF', symObjAddr: 0x7E4C, symBinAddr: 0x1A1984, symSize: 0x2C0 } + - { offset: 0x245D37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13getMapPaddingSo12UIEdgeInsetsVyF', symObjAddr: 0x9BC4, symBinAddr: 0x1A3670, symSize: 0x314 } + - { offset: 0x246250, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC24resetRecalculateAttempts33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0xB41C, symBinAddr: 0x1A4EC8, symSize: 0x144 } + - { offset: 0x24635D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC05resetD033_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0xB560, symBinAddr: 0x1A500C, symSize: 0xBC } + - { offset: 0x2465D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC018handleUserLocationC033_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0xC06C, symBinAddr: 0x1A5B18, symSize: 0x460 } + - { offset: 0x246918, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC04exitD0yyF', symObjAddr: 0xC4CC, symBinAddr: 0x1A5F78, symSize: 0x304 } + - { offset: 0x246BAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15getMapZoomLevel12CoreGraphics7CGFloatVSgyF', symObjAddr: 0xD754, symBinAddr: 0x1A7200, symSize: 0x274 } + - { offset: 0x246E0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11getMapPitch12CoreGraphics7CGFloatVSgyF', symObjAddr: 0xD9C8, symBinAddr: 0x1A7474, symSize: 0x88 } + - { offset: 0x246F36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCMa', symObjAddr: 0xEFBC, symBinAddr: 0x1A8A68, symSize: 0x20 } + - { offset: 0x246F4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA22FloatingPanelPresenterA2aDP08floatingH7DidMoveyyAA0ghF0CFTW', symObjAddr: 0xF064, symBinAddr: 0x1A8B0C, symSize: 0x4 } + - { offset: 0x246F66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0xF068, symBinAddr: 0x1A8B10, symSize: 0x3F4 } + - { offset: 0x247258, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0xF45C, symBinAddr: 0x1A8F04, symSize: 0x8 } + - { offset: 0x247274, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtF', symObjAddr: 0xF464, symBinAddr: 0x1A8F0C, symSize: 0xB48 } + - { offset: 0x247E09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC10onMapReadyyyF', symObjAddr: 0xFFAC, symBinAddr: 0x1A9A54, symSize: 0x27C } + - { offset: 0x247FEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC10onMapReadyyyFyycfU_', symObjAddr: 0x106D8, symBinAddr: 0x1AA180, symSize: 0x6A4 } + - { offset: 0x24863F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC30handleToastAppearanceOnMapLoad33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0x10228, symBinAddr: 0x1A9CD0, symSize: 0x3BC } + - { offset: 0x248A05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19startUpdateLocationyyF', symObjAddr: 0x105E4, symBinAddr: 0x1AA08C, symSize: 0xF4 } + - { offset: 0x248A45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18didFailToLoadRoute5errory7Penguin0K5ErrorOSg_tF', symObjAddr: 0x10E84, symBinAddr: 0x1AA92C, symSize: 0x310 } + - { offset: 0x248DAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEntrances9rerouting10completionySb_yyctFySayAA5PlaceCGcfU_', symObjAddr: 0x11194, symBinAddr: 0x1AAC3C, symSize: 0x290 } + - { offset: 0x2491B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11handleRetryyyF', symObjAddr: 0x11424, symBinAddr: 0x1AAECC, symSize: 0x140 } + - { offset: 0x249339, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15endTripIfNeededyyF', symObjAddr: 0x11564, symBinAddr: 0x1AB00C, symSize: 0x6E0 } + - { offset: 0x249AD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18onReachDestinationyyF', symObjAddr: 0x11C44, symBinAddr: 0x1AB6EC, symSize: 0xB80 } + - { offset: 0x24A566, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18onReachDestinationyyFyycfU0_', symObjAddr: 0x1C068, symBinAddr: 0x1B5950, symSize: 0x5C } + - { offset: 0x24A635, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21puckLocationDidUpdate10coordinateySo22CLLocationCoordinate2DV_tF', symObjAddr: 0x127C4, symBinAddr: 0x1AC26C, symSize: 0x2A8 } + - { offset: 0x24A857, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11mapDidPinchyyF', symObjAddr: 0x12A6C, symBinAddr: 0x1AC514, symSize: 0xB0 } + - { offset: 0x24A954, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15mapAlignedNorthyyF', symObjAddr: 0x12B20, symBinAddr: 0x1AC5C4, symSize: 0x298 } + - { offset: 0x24ABA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15cameraDidChangeyyF', symObjAddr: 0x12DB8, symBinAddr: 0x1AC85C, symSize: 0x270 } + - { offset: 0x24AD62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP27locationIndicatorCoordinateSo22CLLocationCoordinate2DVSgvgTW', symObjAddr: 0x130E4, symBinAddr: 0x1ACB88, symSize: 0x58 } + - { offset: 0x24ADB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP26isLocationIndicatorVisibleSbvgTW', symObjAddr: 0x1313C, symBinAddr: 0x1ACBE0, symSize: 0x44 } + - { offset: 0x24AE0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP9mapDidTapyyFTW', symObjAddr: 0x13180, symBinAddr: 0x1ACC24, symSize: 0x14 } + - { offset: 0x24AE2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP9mapDidTapyyFTW', symObjAddr: 0x13180, symBinAddr: 0x1ACC24, symSize: 0x14 } + - { offset: 0x24AE4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP9mapDidTapyyFTW', symObjAddr: 0x13180, symBinAddr: 0x1ACC24, symSize: 0x14 } + - { offset: 0x24AE79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP11mapDidPinchyyFTW', symObjAddr: 0x131A8, symBinAddr: 0x1ACC4C, symSize: 0x4 } + - { offset: 0x24AE95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP15cameraDidChangeyyFTW', symObjAddr: 0x131B4, symBinAddr: 0x1ACC50, symSize: 0x4 } + - { offset: 0x24AEB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP15mapAlignedNorthyyFTW', symObjAddr: 0x131B8, symBinAddr: 0x1ACC54, symSize: 0x4 } + - { offset: 0x24AECD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP21puckLocationDidUpdate10coordinateySo22CLLocationCoordinate2DV_tFTW', symObjAddr: 0x131BC, symBinAddr: 0x1ACC58, symSize: 0x4 } + - { offset: 0x24AEE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22setUserLocationBlueDot8location28skipsIntermediateCoordinatesy7Penguin10PILocationC_SbtF', symObjAddr: 0x132E4, symBinAddr: 0x1ACCB0, symSize: 0x140 } + - { offset: 0x24AFB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23updateUserLocationOnMap8location4edge28skipsIntermediateCoordinatesySo22CLLocationCoordinate2DV_7Penguin4EdgeCSbtF', symObjAddr: 0x13424, symBinAddr: 0x1ACDF0, symSize: 0xB48 } + - { offset: 0x24B852, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16onLocationChange8locationy7Penguin10PILocationC_tF', symObjAddr: 0x13F6C, symBinAddr: 0x1AD938, symSize: 0xD50 } + - { offset: 0x24C135, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC32onSourceConnectivityStatusChange6statusy7Penguin0h10ConnectionJ0O_tF', symObjAddr: 0x14CBC, symBinAddr: 0x1AE688, symSize: 0x3A4 } + - { offset: 0x24C4D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18drawLocationChange33_00AFBD3210DA1B0197CE155260A7E798LLyy7Penguin10PILocationCF', symObjAddr: 0x15060, symBinAddr: 0x1AEA2C, symSize: 0x370 } + - { offset: 0x24C858, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19evaluateRouteStatus8locationy7Penguin10PILocationC_tF', symObjAddr: 0x153D0, symBinAddr: 0x1AED9C, symSize: 0x158 } + - { offset: 0x24C972, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7reroute6reason014showsReroutingE0yAA13RerouteReasonO_SbtF', symObjAddr: 0x15528, symBinAddr: 0x1AEEF4, symSize: 0x628 } + - { offset: 0x24D137, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC27drawingFloorsAndRoutingPathyy7Penguin10PILocationCSgF', symObjAddr: 0x15B50, symBinAddr: 0x1AF51C, symSize: 0x7A4 } + - { offset: 0x24D97D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12onEdgeChange4edgey7Penguin0H0C_tF', symObjAddr: 0x162F4, symBinAddr: 0x1AFCC0, symSize: 0xFC } + - { offset: 0x24DA80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13onVenueChange5venuey7Penguin0H0C_tF', symObjAddr: 0x163F0, symBinAddr: 0x1AFDBC, symSize: 0x37C } + - { offset: 0x24DDDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13onFloorChange5floory7Penguin0H0C_tF', symObjAddr: 0x16770, symBinAddr: 0x1B0138, symSize: 0x54C } + - { offset: 0x24E2A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16onRotationChange8rotationy7Penguin10PIRotationC_tF', symObjAddr: 0x16CBC, symBinAddr: 0x1B0684, symSize: 0x3CC } + - { offset: 0x24E660, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC26onConnectivityStatusChange6statusy7Penguin06ServerhI0O_tF', symObjAddr: 0x17088, symBinAddr: 0x1B0A50, symSize: 0x218 } + - { offset: 0x24E798, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC28handleServerRetryWithNoRouteyyF', symObjAddr: 0x172A0, symBinAddr: 0x1B0C68, symSize: 0x2B8 } + - { offset: 0x24E9B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17handleServerRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0x17558, symBinAddr: 0x1B0F20, symSize: 0x3E0 } + - { offset: 0x24EA99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17handleServerRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyFyyScMYccfU_', symObjAddr: 0x17C84, symBinAddr: 0x1B164C, symSize: 0x19C } + - { offset: 0x24EBE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19handleLocationRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0x17938, symBinAddr: 0x1B1300, symSize: 0x34C } + - { offset: 0x24EC5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19handleLocationRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyFyyScMYccfU_', symObjAddr: 0x17E20, symBinAddr: 0x1B17E8, symSize: 0x31C } + - { offset: 0x24EE62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP16onLocationChange8locationyAD0H0C_tFTW', symObjAddr: 0x1813C, symBinAddr: 0x1B1B04, symSize: 0x4 } + - { offset: 0x24EE7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP12onEdgeChange4edgeyAD0L0C_tFTW', symObjAddr: 0x18140, symBinAddr: 0x1B1B08, symSize: 0x4 } + - { offset: 0x24EE9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP13onVenueChange5venueyAD0L0C_tFTW', symObjAddr: 0x18144, symBinAddr: 0x1B1B0C, symSize: 0x4 } + - { offset: 0x24EEB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP13onFloorChange5flooryAD0L0C_tFTW', symObjAddr: 0x18148, symBinAddr: 0x1B1B10, symSize: 0x4 } + - { offset: 0x24EED2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP16onRotationChange8rotationyAD10PIRotationC_tFTW', symObjAddr: 0x1814C, symBinAddr: 0x1B1B14, symSize: 0x4 } + - { offset: 0x24EEEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP26onConnectivityStatusChange6statusyAD06ServerlM0O_tFTW', symObjAddr: 0x18150, symBinAddr: 0x1B1B18, symSize: 0x4 } + - { offset: 0x24EF0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP32onSourceConnectivityStatusChange6statusyAD0l10ConnectionN0O_tFTW', symObjAddr: 0x18154, symBinAddr: 0x1B1B1C, symSize: 0x4 } + - { offset: 0x24EF35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP22onBlePowerStatusChange6statusyAD08BLEPowerN0O_tFTW', symObjAddr: 0x18238, symBinAddr: 0x1B1B20, symSize: 0x4 } + - { offset: 0x24EF55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP22onBlePowerStatusChange6statusyAD08BLEPowerN0O_tFTW', symObjAddr: 0x18238, symBinAddr: 0x1B1B20, symSize: 0x4 } + - { offset: 0x24EFE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15onSubPathChange03subI0y7Penguin0dhI0C_tF', symObjAddr: 0x1823C, symBinAddr: 0x1B1B24, symSize: 0x438 } + - { offset: 0x24F4B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20startAnimateSmoothlyyy7Penguin10PILocationCF', symObjAddr: 0x18674, symBinAddr: 0x1B1F5C, symSize: 0xD0 } + - { offset: 0x24F57B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC07onStartD0yyF', symObjAddr: 0x18798, symBinAddr: 0x1B2080, symSize: 0x610 } + - { offset: 0x24FBCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08logStartD5EventyyF', symObjAddr: 0x18DA8, symBinAddr: 0x1B2690, symSize: 0x634 } + - { offset: 0x25038B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15setCameraOnPathyyF', symObjAddr: 0x193DC, symBinAddr: 0x1B2CC4, symSize: 0x38C } + - { offset: 0x250711, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9didArrive2at10completionyAA5PlaceCSg_yycSgtF', symObjAddr: 0x19768, symBinAddr: 0x1B3050, symSize: 0xF08 } + - { offset: 0x25181E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9didArrive2at10completionyAA5PlaceCSg_yycSgtFyycfU1_', symObjAddr: 0x1A670, symBinAddr: 0x1B3F58, symSize: 0x154 } + - { offset: 0x251BEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08continueD0yyF', symObjAddr: 0x1A7C4, symBinAddr: 0x1B40AC, symSize: 0x10D4 } + - { offset: 0x2527BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC04showD8Feedback4stopyAA5PlaceCSg_tFyycfU_Tf0sn_n', symObjAddr: 0x1B938, symBinAddr: 0x1B5220, symSize: 0x730 } + - { offset: 0x252D57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16evaluateSchedule3forySayAA5PlaceCG_tF', symObjAddr: 0x1C0C4, symBinAddr: 0x1B59AC, symSize: 0xA40 } + - { offset: 0x253CCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11onErrorPath02isH0ySb_tF', symObjAddr: 0x1CB04, symBinAddr: 0x1B63EC, symSize: 0x1AC } + - { offset: 0x253F53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC013showReroutingE06reasonyAA13RerouteReasonO_tF', symObjAddr: 0x1CCB0, symBinAddr: 0x1B6598, symSize: 0x164 } + - { offset: 0x25403C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12onErrorFloor6statusySb_tF', symObjAddr: 0x1CE14, symBinAddr: 0x1B66FC, symSize: 0xA8 } + - { offset: 0x254127, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12onErrorVenue6statusySb_tF', symObjAddr: 0x1CEBC, symBinAddr: 0x1B67A4, symSize: 0x88 } + - { offset: 0x2541F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16onErrorPathReady10errorEdgesySay7Penguin0H4EdgeCGSg_tF', symObjAddr: 0x1CF44, symBinAddr: 0x1B682C, symSize: 0x70 } + - { offset: 0x2542D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP07onStartD0yyFTW', symObjAddr: 0x1CFBC, symBinAddr: 0x1B689C, symSize: 0x20 } + - { offset: 0x25430F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP06onStopD0yyFTW', symObjAddr: 0x1CFDC, symBinAddr: 0x1B68BC, symSize: 0x20 } + - { offset: 0x25434B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP11onErrorPath02isL0ySb_tFTW', symObjAddr: 0x1D000, symBinAddr: 0x1B68DC, symSize: 0x20 } + - { offset: 0x254367, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP12onErrorFloor6statusySb_tFTW', symObjAddr: 0x1D020, symBinAddr: 0x1B68FC, symSize: 0x20 } + - { offset: 0x254383, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP12onErrorVenue6statusySb_tFTW', symObjAddr: 0x1D040, symBinAddr: 0x1B691C, symSize: 0x20 } + - { offset: 0x25439F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP18onReachDestinationyyFTW', symObjAddr: 0x1D060, symBinAddr: 0x1B693C, symSize: 0x20 } + - { offset: 0x2543BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP16onErrorPathReady10errorEdgesySayAD0L4EdgeCGSg_tFTW', symObjAddr: 0x1D084, symBinAddr: 0x1B695C, symSize: 0x20 } + - { offset: 0x2543D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP15onSubPathChange03subM0yAD0dlM0C_tFTW', symObjAddr: 0x1D0A4, symBinAddr: 0x1B697C, symSize: 0x20 } + - { offset: 0x2543F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19drawConnectedFloors33_00AFBD3210DA1B0197CE155260A7E798LL4withy7Penguin5FloorCSg_tF', symObjAddr: 0x1D0C4, symBinAddr: 0x1B699C, symSize: 0x348 } + - { offset: 0x254668, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC03getD5Route9reroutingySb_tFy7Penguin0H0VSg_AF0H5ErrorOSgtcfU0_', symObjAddr: 0x1D4A8, symBinAddr: 0x1B6D80, symSize: 0x70 } + - { offset: 0x2546C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19handleRouteResponse5route5errory7Penguin0H0VSg_AG0H5ErrorOSgtF', symObjAddr: 0x1D518, symBinAddr: 0x1B6DF0, symSize: 0x754 } + - { offset: 0x254CFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8setRoute_5errory7Penguin0H0VSg_AF0H5ErrorOSgtF', symObjAddr: 0x1DC6C, symBinAddr: 0x1B7544, symSize: 0xEE8 } + - { offset: 0x2557CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21handleNoRouteResponse33_00AFBD3210DA1B0197CE155260A7E798LL5errory7Penguin0I5ErrorOSg_tF', symObjAddr: 0x1EB54, symBinAddr: 0x1B842C, symSize: 0x4E4 } + - { offset: 0x255B3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21handleNoRouteResponse33_00AFBD3210DA1B0197CE155260A7E798LL5errory7Penguin0I5ErrorOSg_tFyycACcfu_yycfu0_', symObjAddr: 0x1F038, symBinAddr: 0x1B8910, symSize: 0xCC } + - { offset: 0x255B75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19showRouteDirections33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0x1F15C, symBinAddr: 0x1B89DC, symSize: 0x4A8 } + - { offset: 0x256082, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA16DeepLinkDelegateA2aDP011didTapPlaceH05placey7Penguin10PoiPolygonV_tFTW', symObjAddr: 0x1F604, symBinAddr: 0x1B8E84, symSize: 0x28 } + - { offset: 0x2560F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC32updateSubpathsStepperConstraints33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0x1F658, symBinAddr: 0x1B8EB0, symSize: 0x31C } + - { offset: 0x2563BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC30stopReceivingDirectionsUpdatesyyF', symObjAddr: 0x1F9FC, symBinAddr: 0x1B91CC, symSize: 0x220 } + - { offset: 0x256552, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16setupPreviewMode02isH0ySb_tF', symObjAddr: 0x1FC1C, symBinAddr: 0x1B93EC, symSize: 0x2B8 } + - { offset: 0x25670D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC33updateBlueDotUIForLimitedAccuracyyyF', symObjAddr: 0x1FED4, symBinAddr: 0x1B96A4, symSize: 0x3C0 } + - { offset: 0x256A41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19loadMessageForFloor7messageyAA0H6DetailC_tF', symObjAddr: 0x20294, symBinAddr: 0x1B9A64, symSize: 0xB8 } + - { offset: 0x256B3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17showMessageDetail7messageyAA0hI0C_tF', symObjAddr: 0x2034C, symBinAddr: 0x1B9B1C, symSize: 0x3B4 } + - { offset: 0x256F6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17showMessageDetail7messageyAA0hI0C_tFyycfU_', symObjAddr: 0x20B94, symBinAddr: 0x1BA364, symSize: 0x64 } + - { offset: 0x256FEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18addStopForCampaign5placeyAA5PlaceCSg_tF', symObjAddr: 0x20700, symBinAddr: 0x1B9ED0, symSize: 0x494 } + - { offset: 0x2573EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14didUpdateStopsyyF', symObjAddr: 0x20BF8, symBinAddr: 0x1BA3C8, symSize: 0x334 } + - { offset: 0x257796, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA36LocationBasedMessagesManagerDelegateA2aDP19loadMessageForFloor7messageyAA0M6DetailC_tFTW', symObjAddr: 0x20F2C, symBinAddr: 0x1BA6FC, symSize: 0x4 } + - { offset: 0x2577F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16showClosureAlert4typeyAA0hI4TypeO_tF', symObjAddr: 0x20F30, symBinAddr: 0x1BA700, symSize: 0x698 } + - { offset: 0x257E3F, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x21690, symBinAddr: 0x1BAE14, symSize: 0x10 } + - { offset: 0x257E53, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x216A0, symBinAddr: 0x1BAE24, symSize: 0x8 } + - { offset: 0x257E67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17logStopReachEventyyFTf4d_n', symObjAddr: 0x21FEC, symBinAddr: 0x1BB604, symSize: 0x9C } + - { offset: 0x257FDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC03getD5Route9reroutingySb_tFTf4dn_n', symObjAddr: 0x22088, symBinAddr: 0x1BB6A0, symSize: 0x59C } + - { offset: 0x25839E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEntrances9rerouting10completionySb_yyctFySayAA5PlaceCGcfU_03$s8ab4UI24deF65C7reroute6reason014showsReroutingE0yAA13RerouteReasonO_SbtFyycfU_ACSgXwz_XxTf1nc_nTf4ng_n', symObjAddr: 0x23354, symBinAddr: 0x1BC96C, symSize: 0x2AC } + - { offset: 0x25879E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEntrances9rerouting10completionySb_yyctF03$s8ab4UI24deF65C7reroute6reason014showsReroutingE0yAA13RerouteReasonO_SbtFyycfU_ACSgXwz_XxTf1ncn_nTf4dng_n', symObjAddr: 0x23600, symBinAddr: 0x1BCC18, symSize: 0xAB8 } + - { offset: 0x2590C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22onBlePowerStatusChange6statusy7Penguin08BLEPowerJ0O_tFTf4nd_n', symObjAddr: 0x240B8, symBinAddr: 0x1BD6D0, symSize: 0x29C } + - { offset: 0x259123, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC26onConnectivityStatusChange6statusy7Penguin06ServerhI0O_tFyycfU_TA', symObjAddr: 0x243C0, symBinAddr: 0x1BD97C, symSize: 0x20 } + - { offset: 0x259137, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17handleServerRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyFyyScMYccfU_TA', symObjAddr: 0x243E0, symBinAddr: 0x1BD99C, symSize: 0x8 } + - { offset: 0x25914B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC03getD5Route9reroutingySb_tFy7Penguin0H0VSg_AF0H5ErrorOSgtcfU0_TA', symObjAddr: 0x243E8, symBinAddr: 0x1BD9A4, symSize: 0x8 } + - { offset: 0x25915F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18onReachDestinationyyFyycfU0_TA', symObjAddr: 0x24440, symBinAddr: 0x1BD9B8, symSize: 0x8 } + - { offset: 0x259173, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9didArrive2at10completionyAA5PlaceCSg_yycSgtFyycfU1_TA', symObjAddr: 0x2450C, symBinAddr: 0x1BDA38, symSize: 0x8 } + - { offset: 0x259187, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9didArrive2at10completionyAA5PlaceCSg_yycSgtFyycfU2_TA', symObjAddr: 0x24518, symBinAddr: 0x1BDA44, symSize: 0x1C } + - { offset: 0x25919B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC09addBottomD5PanelyyFyycfU_TA', symObjAddr: 0x24604, symBinAddr: 0x1BDA9C, symSize: 0x18 } + - { offset: 0x2591AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC09addBottomD5PanelyyFyycACcfu_yycfu0_TA', symObjAddr: 0x2461C, symBinAddr: 0x1BDAB4, symSize: 0x20 } + - { offset: 0x2591E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC09addBottomD5PanelyyFyAA08FloatingiF0CcACcfu1_yAFcfu2_TA', symObjAddr: 0x2463C, symBinAddr: 0x1BDAD4, symSize: 0x20 } + - { offset: 0x25921B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21handleNoRouteResponse33_00AFBD3210DA1B0197CE155260A7E798LL5errory7Penguin0I5ErrorOSg_tFyycACcfu_yycfu0_TA', symObjAddr: 0x2465C, symBinAddr: 0x1BDAF4, symSize: 0x8 } + - { offset: 0x25922F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16switchToOverviewyyFySbcfU_TA', symObjAddr: 0x24664, symBinAddr: 0x1BDAFC, symSize: 0x8 } + - { offset: 0x259243, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC28handleServerRetryWithNoRouteyyFyycfU_TA', symObjAddr: 0x2466C, symBinAddr: 0x1BDB04, symSize: 0x20 } + - { offset: 0x259275, size: 0x8, addend: 0x0, symName: '_$s7Penguin5RouteVSgWOb', symObjAddr: 0x24720, symBinAddr: 0x1BDBB8, symSize: 0x48 } + - { offset: 0x259289, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16switchToOverviewyyFySbcfU_yycfU1_TA', symObjAddr: 0x24768, symBinAddr: 0x1BDC00, symSize: 0x34 } + - { offset: 0x25929D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEntrances9rerouting10completionySb_yyctFySayAA5PlaceCGcfU_TA', symObjAddr: 0x2479C, symBinAddr: 0x1BDC34, symSize: 0x8 } + - { offset: 0x2592B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19handleLocationRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyFyyScMYccfU_TA', symObjAddr: 0x247D4, symBinAddr: 0x1BDC60, symSize: 0x8 } + - { offset: 0x2592C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19drawConnectedFloors33_00AFBD3210DA1B0197CE155260A7E798LL4withy7Penguin5FloorCSg_tFySbcfU_TA', symObjAddr: 0x247DC, symBinAddr: 0x1BDC68, symSize: 0x18 } + - { offset: 0x2592D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7reroute6reason014showsReroutingE0yAA13RerouteReasonO_SbtFyycfU_TA', symObjAddr: 0x24860, symBinAddr: 0x1BDC80, symSize: 0x20 } + - { offset: 0x2592ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23updateUserLocationOnMap8location4edge28skipsIntermediateCoordinatesySo22CLLocationCoordinate2DV_7Penguin4EdgeCSbtFyycfU_TA', symObjAddr: 0x24880, symBinAddr: 0x1BDCA0, symSize: 0x20 } + - { offset: 0x259301, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFyycfU_TA', symObjAddr: 0x248A0, symBinAddr: 0x1BDCC0, symSize: 0x8 } + - { offset: 0x259315, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFyycfU0_TA', symObjAddr: 0x248A8, symBinAddr: 0x1BDCC8, symSize: 0x20 } + - { offset: 0x259329, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17showMessageDetail7messageyAA0hI0C_tFyAA5PlaceCSgcACcfu_yAJcfu0_TA', symObjAddr: 0x248EC, symBinAddr: 0x1BDD0C, symSize: 0x20 } + - { offset: 0x259363, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17showMessageDetail7messageyAA0hI0C_tFyycfU_TA', symObjAddr: 0x2490C, symBinAddr: 0x1BDD2C, symSize: 0x8 } + - { offset: 0x259377, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18focusMapOnRecenter33_00AFBD3210DA1B0197CE155260A7E798LL12floorSetting4edgey7Penguin13FloorSettingsV_AH4EdgeCtFyycfU_TA', symObjAddr: 0x24914, symBinAddr: 0x1BDD34, symSize: 0x20 } + - { offset: 0x25938B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22setCameraOnDestinationyyFySbcfU_TA', symObjAddr: 0x24938, symBinAddr: 0x1BDD58, symSize: 0x8 } + - { offset: 0x25939F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9startTripyyFySbcfU_TA', symObjAddr: 0x249D4, symBinAddr: 0x1BDD64, symSize: 0x8 } + - { offset: 0x2593B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateRecenterButtonyyFyycfU_TA', symObjAddr: 0x24A6C, symBinAddr: 0x1BDDB8, symSize: 0xC } + - { offset: 0x2593C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21showDirectionsStepperyyFyAA14RouteDirectionVSg_SbtcACcfu_yAG_Sbtcfu0_TA', symObjAddr: 0x24B68, symBinAddr: 0x1BDDC4, symSize: 0x20 } + - { offset: 0x25940A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSgSbIegny_ACSbIegny_TRTA', symObjAddr: 0x24B88, symBinAddr: 0x1BDDE4, symSize: 0x8 } + - { offset: 0x25941E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC017setupUserTrackingE0yyFyycfU_TA', symObjAddr: 0x24BD0, symBinAddr: 0x1BDDEC, symSize: 0x20 } + - { offset: 0x259432, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8setupMapyyFySbcfU_TA', symObjAddr: 0x24C30, symBinAddr: 0x1BDE0C, symSize: 0x8 } + - { offset: 0x259446, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC10onMapReadyyyFyycfU_TA', symObjAddr: 0x24C38, symBinAddr: 0x1BDE14, symSize: 0x8 } + - { offset: 0x25945A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC10onMapReadyyyFyycfU_yycfU_TA', symObjAddr: 0x24C40, symBinAddr: 0x1BDE1C, symSize: 0x18 } + - { offset: 0x2594E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC014toastContainerE0So6UIViewCSgvgTo', symObjAddr: 0x228, symBinAddr: 0x199DD0, symSize: 0x20 } + - { offset: 0x259540, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC014toastContainerE0So6UIViewCSgvsTo', symObjAddr: 0x248, symBinAddr: 0x199DF0, symSize: 0x14 } + - { offset: 0x259598, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15renderingHelperAA09RenderingH0Cvg', symObjAddr: 0x25C, symBinAddr: 0x199E04, symSize: 0xF0 } + - { offset: 0x259633, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19routeOverviewHelperAA05RoutehI0Cvg', symObjAddr: 0x34C, symBinAddr: 0x199EF4, symSize: 0xBC } + - { offset: 0x25978F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11viewDidLoadyyF', symObjAddr: 0x408, symBinAddr: 0x199FB0, symSize: 0x134 } + - { offset: 0x25989D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x53C, symBinAddr: 0x19A0E4, symSize: 0x28 } + - { offset: 0x2598F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCfD', symObjAddr: 0x564, symBinAddr: 0x19A10C, symSize: 0x14C } + - { offset: 0x259976, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCfDTo', symObjAddr: 0x6B0, symBinAddr: 0x19A258, symSize: 0x44 } + - { offset: 0x25B035, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14viewWillAppearyySbF', symObjAddr: 0x998, symBinAddr: 0x19A540, symSize: 0x180 } + - { offset: 0x25B19E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0xCA4, symBinAddr: 0x19A84C, symSize: 0x30 } + - { offset: 0x25B1CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17viewWillDisappearyySbF', symObjAddr: 0xCD4, symBinAddr: 0x19A87C, symSize: 0x1D8 } + - { offset: 0x25B265, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17viewWillDisappearyySbFTo', symObjAddr: 0xEAC, symBinAddr: 0x19AA54, symSize: 0x30 } + - { offset: 0x25B28D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21viewDidLayoutSubviewsyyFTo', symObjAddr: 0x10F8, symBinAddr: 0x19ACA0, symSize: 0x5C } + - { offset: 0x25B2BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23preferredStatusBarStyleSo08UIStatusiJ0VvgTo', symObjAddr: 0x1154, symBinAddr: 0x19ACFC, symSize: 0x34 } + - { offset: 0x25B2E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23preferredStatusBarStyleSo08UIStatusiJ0Vvg', symObjAddr: 0x1188, symBinAddr: 0x19AD30, symSize: 0xD0 } + - { offset: 0x25B3E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC017setupInstructionsE0yyF', symObjAddr: 0x153C, symBinAddr: 0x19B0E4, symSize: 0x360 } + - { offset: 0x25B528, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC017setupUserTrackingE0yyF', symObjAddr: 0x189C, symBinAddr: 0x19B444, symSize: 0x300 } + - { offset: 0x25B631, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC019setupFloorIndicatorE0yyF', symObjAddr: 0x1B9C, symBinAddr: 0x19B744, symSize: 0x238 } + - { offset: 0x25B6B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC014setupReroutingE0yyF', symObjAddr: 0x1DD4, symBinAddr: 0x19B97C, symSize: 0x2F0 } + - { offset: 0x25B789, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC018setupSpeechControlE0yyF', symObjAddr: 0x20C4, symBinAddr: 0x19BC6C, symSize: 0x284 } + - { offset: 0x25B88C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC018setupChangingFloorE0yyF', symObjAddr: 0x2348, symBinAddr: 0x19BEF0, symSize: 0x354 } + - { offset: 0x25BA15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010setupDebugE0yyF', symObjAddr: 0x269C, symBinAddr: 0x19C244, symSize: 0x64C } + - { offset: 0x25BF08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18oneSecondDidElapseyyFTo', symObjAddr: 0x2CE8, symBinAddr: 0x19C890, symSize: 0x70 } + - { offset: 0x25BF69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12removePanelsyyF', symObjAddr: 0x2D58, symBinAddr: 0x19C900, symSize: 0xDC } + - { offset: 0x25C0EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12removePanelsyyFTo', symObjAddr: 0x2E34, symBinAddr: 0x19C9DC, symSize: 0x28 } + - { offset: 0x25C12D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21showDirectionsStepperyyF', symObjAddr: 0x2E5C, symBinAddr: 0x19CA04, symSize: 0x388 } + - { offset: 0x25C54A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16previewDirection_9redrawMapyAA05RouteH0VSg_SbtF', symObjAddr: 0x32A4, symBinAddr: 0x19CE4C, symSize: 0x117C } + - { offset: 0x25D079, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC29drawDestinationSymbolIfNeeded11destinationyAA5PlaceCSg_tF', symObjAddr: 0x4420, symBinAddr: 0x19DFC8, symSize: 0x430 } + - { offset: 0x25D4C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13drawRoutePathyy7Penguin03SubI0CSgF', symObjAddr: 0x4850, symBinAddr: 0x19E3F8, symSize: 0x6F8 } + - { offset: 0x25D9B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13drawRoutePathyy7Penguin03SubI0CSgFySo7UIImageCSgcfU_', symObjAddr: 0x4F48, symBinAddr: 0x19EAF0, symSize: 0xD4 } + - { offset: 0x25E635, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9drawFloor_012setsCameraToH0y7Penguin0H0CSg_SbtF', symObjAddr: 0x508C, symBinAddr: 0x19EBC4, symSize: 0xAE4 } + - { offset: 0x25EC90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9drawFloor_012setsCameraToH0y7Penguin0H0CSg_SbtFySbcfU_', symObjAddr: 0x5B70, symBinAddr: 0x19F6A8, symSize: 0x8C } + - { offset: 0x25ED2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14updateMapLevelyy7Penguin0hI0OSgF', symObjAddr: 0x5BFC, symBinAddr: 0x19F734, symSize: 0x1E8 } + - { offset: 0x25EDB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateRecenterButtonyyF', symObjAddr: 0x5DE4, symBinAddr: 0x19F91C, symSize: 0x210 } + - { offset: 0x25EE8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateRecenterButtonyyFyycfU_', symObjAddr: 0x5FF4, symBinAddr: 0x19FB2C, symSize: 0x22C } + - { offset: 0x25F060, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15updateRoutePathyyF', symObjAddr: 0x6220, symBinAddr: 0x19FD58, symSize: 0xBD0 } + - { offset: 0x25FD06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9startTripyyF', symObjAddr: 0x6DF0, symBinAddr: 0x1A0928, symSize: 0xDC } + - { offset: 0x25FD85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9startTripyyFySbcfU_', symObjAddr: 0x6ECC, symBinAddr: 0x1A0A04, symSize: 0x728 } + - { offset: 0x260422, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12previewRouteyyF', symObjAddr: 0x75F4, symBinAddr: 0x1A112C, symSize: 0x47C } + - { offset: 0x260A93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22setCameraOnDestinationyyF', symObjAddr: 0x810C, symBinAddr: 0x1A1C44, symSize: 0x1A2C } + - { offset: 0x26258A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16setCameraOnVenueyyF', symObjAddr: 0x9ED8, symBinAddr: 0x1A3984, symSize: 0x50C } + - { offset: 0x262AAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC03endD018switchesToOverviewySb_tF', symObjAddr: 0xA3E4, symBinAddr: 0x1A3E90, symSize: 0x264 } + - { offset: 0x262DC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16switchToOverviewyyFySbcfU_', symObjAddr: 0xA648, symBinAddr: 0x1A40F4, symSize: 0xDD4 } + - { offset: 0x263CF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16switchToOverviewyyFySbcfU_yycfU1_', symObjAddr: 0xB61C, symBinAddr: 0x1A50C8, symSize: 0xA50 } + - { offset: 0x2646A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFyycfU_', symObjAddr: 0xC7D0, symBinAddr: 0x1A627C, symSize: 0xEC } + - { offset: 0x26479E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFTo', symObjAddr: 0xC8BC, symBinAddr: 0x1A6368, symSize: 0x4C } + - { offset: 0x264825, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12addObserversyyF', symObjAddr: 0xC908, symBinAddr: 0x1A63B4, symSize: 0x190 } + - { offset: 0x2648CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15removeObserversyyF', symObjAddr: 0xCA98, symBinAddr: 0x1A6544, symSize: 0x128 } + - { offset: 0x2649FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20didTapRecenterButtonyyF', symObjAddr: 0xCBC0, symBinAddr: 0x1A666C, symSize: 0x674 } + - { offset: 0x264FE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20didTapRecenterButtonyyFTo', symObjAddr: 0xD234, symBinAddr: 0x1A6CE0, symSize: 0x28 } + - { offset: 0x265032, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8recenteryyF', symObjAddr: 0xD25C, symBinAddr: 0x1A6D08, symSize: 0x4F8 } + - { offset: 0x26547D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateRouteEstimatesyyF', symObjAddr: 0xDA50, symBinAddr: 0x1A74FC, symSize: 0x778 } + - { offset: 0x265DA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xE1C8, symBinAddr: 0x1A7C74, symSize: 0x6CC } + - { offset: 0x2660A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xE894, symBinAddr: 0x1A8340, symSize: 0x60 } + - { offset: 0x2660B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xE8F4, symBinAddr: 0x1A83A0, symSize: 0x6A0 } + - { offset: 0x2663B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xEF94, symBinAddr: 0x1A8A40, symSize: 0x28 } + - { offset: 0x2663C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvgTW', symObjAddr: 0xEFDC, symBinAddr: 0x1A8A88, symSize: 0x44 } + - { offset: 0x2663F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvMTW', symObjAddr: 0xF020, symBinAddr: 0x1A8ACC, symSize: 0x40 } + - { offset: 0x267123, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18focusMapOnRecenter33_00AFBD3210DA1B0197CE155260A7E798LL12floorSetting4edgey7Penguin13FloorSettingsV_AH4EdgeCtFTf4ndn_n', symObjAddr: 0x21814, symBinAddr: 0x1BAE2C, symSize: 0x43C } + - { offset: 0x267483, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFTf4dn_n', symObjAddr: 0x21C50, symBinAddr: 0x1BB268, symSize: 0x39C } + - { offset: 0x267CE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6FilterCfE', symObjAddr: 0x14, symBinAddr: 0x1BDF00, symSize: 0x1C } + - { offset: 0x267D16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6FilterCMa', symObjAddr: 0x7C, symBinAddr: 0x1BDF68, symSize: 0x20 } + - { offset: 0x267D2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6FilterC6EffectOMa', symObjAddr: 0x104, symBinAddr: 0x1BDF88, symSize: 0x10 } + - { offset: 0x267D7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6FilterCfD', symObjAddr: 0x30, symBinAddr: 0x1BDF1C, symSize: 0x4C } + - { offset: 0x26814A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserVwet', symObjAddr: 0x204, symBinAddr: 0x1BDF98, symSize: 0x5C } + - { offset: 0x26815E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserVwst', symObjAddr: 0x260, symBinAddr: 0x1BDFF4, symSize: 0x54 } + - { offset: 0x268172, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserVMa', symObjAddr: 0x2B4, symBinAddr: 0x1BE048, symSize: 0x10 } + - { offset: 0x268186, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVMa', symObjAddr: 0x2C4, symBinAddr: 0x1BE058, symSize: 0x10 } + - { offset: 0x2681F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseStringyS2SKF', symObjAddr: 0x368, symBinAddr: 0x1BE0FC, symSize: 0x4C } + - { offset: 0x268263, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE8parseRawyqd__SgSSKSYRd__SS0G5ValueRtd__lF', symObjAddr: 0x3B4, symBinAddr: 0x1BE148, symSize: 0x44 } + - { offset: 0x2682BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE8parseRawyqd__SgSSKSYRd__SS0G5ValueRtd__lFqd__SSKXEfU_', symObjAddr: 0x10B8, symBinAddr: 0x1BEC74, symSize: 0xA0 } + - { offset: 0x268335, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseStringySSSgSSKF', symObjAddr: 0x3F8, symBinAddr: 0x1BE18C, symSize: 0x48 } + - { offset: 0x268387, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parseCoordinateySfSSKF', symObjAddr: 0x480, symBinAddr: 0x1BE214, symSize: 0x54 } + - { offset: 0x268413, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE10parseColoryAA3DOMO0G0OSgSSKF', symObjAddr: 0x4D4, symBinAddr: 0x1BE268, symSize: 0x1D4 } + - { offset: 0x2684AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseFloatsySaySfGSgSSKF', symObjAddr: 0x748, symBinAddr: 0x1BE4DC, symSize: 0x90 } + - { offset: 0x2684FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseFloatsySaySfGSgSSKFAESSKXEfU_', symObjAddr: 0xE54, symBinAddr: 0x1BEA10, symSize: 0x80 } + - { offset: 0x26857B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs10SetAlgebraAASQWb', symObjAddr: 0xA9C, symBinAddr: 0x1BE658, symSize: 0x4 } + - { offset: 0x26858F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVAESQAAWl', symObjAddr: 0xAA0, symBinAddr: 0x1BE65C, symSize: 0x40 } + - { offset: 0x2685A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs10SetAlgebraAAs25ExpressibleByArrayLiteralPWb', symObjAddr: 0xAE0, symBinAddr: 0x1BE69C, symSize: 0x4 } + - { offset: 0x2685B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVAEs25ExpressibleByArrayLiteralAAWl', symObjAddr: 0xAE4, symBinAddr: 0x1BE6A0, symSize: 0x40 } + - { offset: 0x2685CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs9OptionSetAASYWb', symObjAddr: 0xB24, symBinAddr: 0x1BE6E0, symSize: 0x4 } + - { offset: 0x2685DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVAESYAAWl', symObjAddr: 0xB28, symBinAddr: 0x1BE6E4, symSize: 0x40 } + - { offset: 0x2685F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs9OptionSetAAs0G7AlgebraPWb', symObjAddr: 0xB68, symBinAddr: 0x1BE724, symSize: 0x4 } + - { offset: 0x268607, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVAEs10SetAlgebraAAWl', symObjAddr: 0xB6C, symBinAddr: 0x1BE728, symSize: 0x40 } + - { offset: 0x26861B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE5parse_3expqd__SgSS_qd__SSKXEtKlF', symObjAddr: 0xC7C, symBinAddr: 0x1BE838, symSize: 0x154 } + - { offset: 0x26876F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE16parseUrlSelectory10Foundation3URLVSgSSKFAGSSKXEfU_TA', symObjAddr: 0x1194, symBinAddr: 0x1BED50, symSize: 0x1C } + - { offset: 0x268783, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseFloatsySaySfGSgSSKFAESSKXEfU_TA', symObjAddr: 0x1244, symBinAddr: 0x1BED6C, symSize: 0x1C } + - { offset: 0x268797, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE10parseFloatySfSgSSKFSfSSKXEfU_TA', symObjAddr: 0x1260, symBinAddr: 0x1BED88, symSize: 0x24 } + - { offset: 0x2687AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ErrorOAEsAdAWl', symObjAddr: 0x1304, symBinAddr: 0x1BEDAC, symSize: 0x40 } + - { offset: 0x2687BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE8parseRawyqd__SgSSKSYRd__SS0G5ValueRtd__lFqd__SSKXEfU_TA', symObjAddr: 0x1344, symBinAddr: 0x1BEDEC, symSize: 0x20 } + - { offset: 0x2687D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parsePercentageySfSgSSKFSfSSKXEfU_TA', symObjAddr: 0x1364, symBinAddr: 0x1BEE0C, symSize: 0x24 } + - { offset: 0x2687E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parseCoordinateySfSSKFSfSSKXEfU_TA', symObjAddr: 0x1388, symBinAddr: 0x1BEE30, symSize: 0x24 } + - { offset: 0x2687FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE8parseUrly10Foundation3URLVSSKFAGSSKXEfU_TA', symObjAddr: 0x14C0, symBinAddr: 0x1BEEEC, symSize: 0x1C } + - { offset: 0x26880F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwxx', symObjAddr: 0x1508, symBinAddr: 0x1BEF08, symSize: 0xB4 } + - { offset: 0x268823, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwcp', symObjAddr: 0x15DC, symBinAddr: 0x1BEFBC, symSize: 0x140 } + - { offset: 0x268837, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwca', symObjAddr: 0x171C, symBinAddr: 0x1BF0FC, symSize: 0x1E8 } + - { offset: 0x26884B, size: 0x8, addend: 0x0, symName: ___swift_memcpy50_8, symObjAddr: 0x1904, symBinAddr: 0x1BF2E4, symSize: 0x1C } + - { offset: 0x26885F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwta', symObjAddr: 0x1920, symBinAddr: 0x1BF300, symSize: 0x174 } + - { offset: 0x268873, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwet', symObjAddr: 0x1A94, symBinAddr: 0x1BF474, symSize: 0x3C } + - { offset: 0x268887, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwst', symObjAddr: 0x1AD0, symBinAddr: 0x1BF4B0, symSize: 0x50 } + - { offset: 0x26889B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwug', symObjAddr: 0x1B20, symBinAddr: 0x1BF500, symSize: 0x1C } + - { offset: 0x2688AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwui', symObjAddr: 0x1B40, symBinAddr: 0x1BF51C, symSize: 0x2C } + - { offset: 0x2688C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOMa', symObjAddr: 0x1B6C, symBinAddr: 0x1BF548, symSize: 0x10 } + - { offset: 0x268945, size: 0x8, addend: 0x0, symName: '_$ss10SetAlgebraPs7ElementQz012ArrayLiteralC0RtzrlE05arrayE0xAFd_tcfC8PenNavUI3SVGC7OptionsV_Tg5', symObjAddr: 0x2D4, symBinAddr: 0x1BE068, symSize: 0x54 } + - { offset: 0x268A81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs25ExpressibleByArrayLiteralAAsAFP05arrayI0x0hI7ElementQzd_tcfCTW', symObjAddr: 0xA60, symBinAddr: 0x1BE61C, symSize: 0x3C } + - { offset: 0x268FC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC22directionsTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1BF5A8, symSize: 0x10 } + - { offset: 0x2691A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellCfETo', symObjAddr: 0x690, symBinAddr: 0x1BFC38, symSize: 0x48 } + - { offset: 0x2691D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellCMa', symObjAddr: 0x6D8, symBinAddr: 0x1BFC80, symSize: 0x20 } + - { offset: 0x2691E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtFyycfU_TA', symObjAddr: 0x71C, symBinAddr: 0x1BFCC4, symSize: 0x8 } + - { offset: 0x2691F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtFyycfU0_TA', symObjAddr: 0x734, symBinAddr: 0x1BFCCC, symSize: 0x8 } + - { offset: 0x2692D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC22directionsTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1BF5A8, symSize: 0x10 } + - { offset: 0x2692ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC22directionsTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1BF5A8, symSize: 0x10 } + - { offset: 0x269333, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC22directionsTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1BF5B8, symSize: 0x34 } + - { offset: 0x269382, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC17floorTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1BF5EC, symSize: 0x10 } + - { offset: 0x26939A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC17floorTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1BF5EC, symSize: 0x10 } + - { offset: 0x2693D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC17floorTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1BF5FC, symSize: 0x34 } + - { offset: 0x26942B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12awakeFromNibyyF', symObjAddr: 0x88, symBinAddr: 0x1BF630, symSize: 0xE8 } + - { offset: 0x2694B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12awakeFromNibyyFTo', symObjAddr: 0x170, symBinAddr: 0x1BF718, symSize: 0x28 } + - { offset: 0x2694F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtF', symObjAddr: 0x198, symBinAddr: 0x1BF740, symSize: 0x1F8 } + - { offset: 0x269656, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtFyycfU_', symObjAddr: 0x390, symBinAddr: 0x1BF938, symSize: 0x98 } + - { offset: 0x26969D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtFyycfU0_', symObjAddr: 0x428, symBinAddr: 0x1BF9D0, symSize: 0xA8 } + - { offset: 0x269764, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x4D0, symBinAddr: 0x1BFA78, symSize: 0xD0 } + - { offset: 0x2697C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x5A0, symBinAddr: 0x1BFB48, symSize: 0x98 } + - { offset: 0x2697FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x638, symBinAddr: 0x1BFBE0, symSize: 0x28 } + - { offset: 0x269810, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellCfD', symObjAddr: 0x660, symBinAddr: 0x1BFC08, symSize: 0x30 } + - { offset: 0x269BAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1BFCD4, symSize: 0x8 } + - { offset: 0x269D83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutCMa', symObjAddr: 0x3E0, symBinAddr: 0x1C0090, symSize: 0x20 } + - { offset: 0x269DD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1BFCD4, symSize: 0x8 } + - { offset: 0x269DED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1BFCD4, symSize: 0x8 } + - { offset: 0x269E06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvgTo', symObjAddr: 0x8, symBinAddr: 0x1BFCDC, symSize: 0x8 } + - { offset: 0x269E1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvgTo', symObjAddr: 0x8, symBinAddr: 0x1BFCDC, symSize: 0x8 } + - { offset: 0x269E3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvsTo', symObjAddr: 0x10, symBinAddr: 0x1BFCE4, symSize: 0x2C } + - { offset: 0x269E85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC7anchorsSDyAA18FloatingPanelStateCAA0ijG9Anchoring_pGvgTo', symObjAddr: 0x3C, symBinAddr: 0x1BFD10, symSize: 0x7C } + - { offset: 0x269F92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC7anchorsSDyAA18FloatingPanelStateCAA0ijG9Anchoring_pGvg', symObjAddr: 0xB8, symBinAddr: 0x1BFD8C, symSize: 0x25C } + - { offset: 0x26A165, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tFTo', symObjAddr: 0x314, symBinAddr: 0x1BFFE8, symSize: 0xA8 } + - { offset: 0x26A218, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC09topAnchorE012CoreGraphics7CGFloatVvgZTf4d_n', symObjAddr: 0x444, symBinAddr: 0x1C00B0, symSize: 0x148 } + - { offset: 0x26A6DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC11viewDidLoadyyF', symObjAddr: 0x0, symBinAddr: 0x1C01F8, symSize: 0x200 } + - { offset: 0x26AA32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerCfETo', symObjAddr: 0x880, symBinAddr: 0x1C0A78, symSize: 0x3C } + - { offset: 0x26AA61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerCMa', symObjAddr: 0x8BC, symBinAddr: 0x1C0AB4, symSize: 0x20 } + - { offset: 0x26AA7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC11viewDidLoadyyF', symObjAddr: 0x0, symBinAddr: 0x1C01F8, symSize: 0x200 } + - { offset: 0x26AAEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x200, symBinAddr: 0x1C03F8, symSize: 0x28 } + - { offset: 0x26ABBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x228, symBinAddr: 0x1C0420, symSize: 0x14 } + - { offset: 0x26ABD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x228, symBinAddr: 0x1C0420, symSize: 0x14 } + - { offset: 0x26ABFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x228, symBinAddr: 0x1C0420, symSize: 0x14 } + - { offset: 0x26ACE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0x23C, symBinAddr: 0x1C0434, symSize: 0x2F8 } + - { offset: 0x26AEE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x534, symBinAddr: 0x1C072C, symSize: 0xC8 } + - { offset: 0x26AEFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x5FC, symBinAddr: 0x1C07F4, symSize: 0xBC } + - { offset: 0x26AF4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x6B8, symBinAddr: 0x1C08B0, symSize: 0xF4 } + - { offset: 0x26AFA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x7AC, symBinAddr: 0x1C09A4, symSize: 0xA4 } + - { offset: 0x26AFDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerCfD', symObjAddr: 0x850, symBinAddr: 0x1C0A48, symSize: 0x30 } + - { offset: 0x26B012, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x940, symBinAddr: 0x1C0AD4, symSize: 0xC0 } + - { offset: 0x26B3EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC8positionAA08FloatingE8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1C0B94, symSize: 0x8 } + - { offset: 0x26B500, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutCMa', symObjAddr: 0xAC, symBinAddr: 0x1C0C1C, symSize: 0x20 } + - { offset: 0x26B5A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC8positionAA08FloatingE8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1C0B94, symSize: 0x8 } + - { offset: 0x26B5BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC8positionAA08FloatingE8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1C0B94, symSize: 0x8 } + - { offset: 0x26B5D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC12initialStateAA08FloatingeH0CvgTo', symObjAddr: 0x8, symBinAddr: 0x1C0B9C, symSize: 0x8 } + - { offset: 0x26B5EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC12initialStateAA08FloatingeH0CvgTo', symObjAddr: 0x8, symBinAddr: 0x1C0B9C, symSize: 0x8 } + - { offset: 0x26B696, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC7anchorsSDyAA08FloatingE5StateCAA0heF9Anchoring_pGvgTo', symObjAddr: 0x10, symBinAddr: 0x1C0BA4, symSize: 0x6C } + - { offset: 0x26B6C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA08FloatingE5StateC_tFTo', symObjAddr: 0x7C, symBinAddr: 0x1C0C10, symSize: 0xC } + - { offset: 0x26B764, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC14topAnchorInset12CoreGraphics7CGFloatVvgZTf4d_n', symObjAddr: 0xCC, symBinAddr: 0x1C0C3C, symSize: 0x148 } + - { offset: 0x26B907, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC7anchorsSDyAA08FloatingE5StateCAA0heF9Anchoring_pGvgTf4d_n', symObjAddr: 0x214, symBinAddr: 0x1C0D84, symSize: 0x128 } + - { offset: 0x26BDBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV9createArc4from4lastSayAC4PathC7SegmentOGSgAA3DOMOAICAKO_AC5PointVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1C0EAC, symSize: 0x170 } + - { offset: 0x26BF01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV9createArc4from4lastSayAC4PathC7SegmentOGSgAA3DOMOAICAKO_AC5PointVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1C0EAC, symSize: 0x170 } + - { offset: 0x26C61E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11makeSegment4from4last8previousAC4PathC0H0OSgAA3DOMOAJCALO_AC5PointVATSgtFZTf4nnnd_n', symObjAddr: 0x170, symBinAddr: 0x1C101C, symSize: 0x3A4 } + - { offset: 0x26CAB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV10createPath4fromAC0H0CAA3DOMOAHC_tKFZTf4nd_n', symObjAddr: 0x514, symBinAddr: 0x1C13C0, symSize: 0x2E0 } + - { offset: 0x26D3F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataCMa', symObjAddr: 0xC4, symBinAddr: 0x1C1718, symSize: 0x20 } + - { offset: 0x26D470, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x5C, symBinAddr: 0x1C16B0, symSize: 0x68 } + - { offset: 0x26D4DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xE4, symBinAddr: 0x1C1738, symSize: 0x54 } + - { offset: 0x26D525, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataCfD', symObjAddr: 0x138, symBinAddr: 0x1C178C, symSize: 0x30 } + - { offset: 0x26D8D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AlertActionStyleOMa', symObjAddr: 0x168, symBinAddr: 0x1C17BC, symSize: 0x10 } + - { offset: 0x26D8E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AlertActionStyleOSHAASQWb', symObjAddr: 0x178, symBinAddr: 0x1C17CC, symSize: 0x4 } + - { offset: 0x26D8FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AlertActionStyleOACSQAAWl', symObjAddr: 0x17C, symBinAddr: 0x1C17D0, symSize: 0x40 } + - { offset: 0x26DF57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperCMa', symObjAddr: 0x1680, symBinAddr: 0x1C2E90, symSize: 0x20 } + - { offset: 0x26DF97, size: 0x8, addend: 0x0, symName: '_$sSh9_subtractyyqd__7ElementQyd__RszSTRd__lF8PenNavUI9ToastTypeO_ShyAFGTg5', symObjAddr: 0x16E4, symBinAddr: 0x1C2EB0, symSize: 0xE4 } + - { offset: 0x26E053, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC12addObserversyyF', symObjAddr: 0x0, symBinAddr: 0x1C1810, symSize: 0x368 } + - { offset: 0x26E0D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC15removeObserversyyF', symObjAddr: 0x368, symBinAddr: 0x1C1B78, symSize: 0x2F4 } + - { offset: 0x26E3D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC22locationStateDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0x65C, symBinAddr: 0x1C1E6C, symSize: 0x1EC } + - { offset: 0x26E560, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC23bluetoothStateDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0x854, symBinAddr: 0x1C2064, symSize: 0x1A8 } + - { offset: 0x26E67D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC25locationAccuracyDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0xA58, symBinAddr: 0x1C2268, symSize: 0x1A8 } + - { offset: 0x26E7B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC31locationDetectionStateDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0xC0C, symBinAddr: 0x1C241C, symSize: 0x18C } + - { offset: 0x26E8B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC25networkInterfaceDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0xDA4, symBinAddr: 0x1C25B4, symSize: 0x2F4 } + - { offset: 0x26E9AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC25connectionStatusDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0x10A4, symBinAddr: 0x1C28B4, symSize: 0x368 } + - { offset: 0x26EC68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC31directionsAvailabilityDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0x1418, symBinAddr: 0x1C2C28, symSize: 0x1B8 } + - { offset: 0x26ED6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC25userLocationStatusChangedyyFTo', symObjAddr: 0x15DC, symBinAddr: 0x1C2DEC, symSize: 0x80 } + - { offset: 0x26EDAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperCfD', symObjAddr: 0x165C, symBinAddr: 0x1C2E6C, symSize: 0x24 } + - { offset: 0x26F18A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parseyxSS_xSSKXEtKlF', symObjAddr: 0x298, symBinAddr: 0x1C322C, symSize: 0x2C8 } + - { offset: 0x26F2AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCMa', symObjAddr: 0x744, symBinAddr: 0x1C36D8, symSize: 0x20 } + - { offset: 0x26F50E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserVMa', symObjAddr: 0x2044, symBinAddr: 0x1C4778, symSize: 0x10 } + - { offset: 0x26F6A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parseyxSS_xSSKXEtKlF', symObjAddr: 0x298, symBinAddr: 0x1C322C, symSize: 0x2C8 } + - { offset: 0x26F792, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parse_4with3forxSSSg_xSSKXESStKlF', symObjAddr: 0x560, symBinAddr: 0x1C34F4, symSize: 0x1B0 } + - { offset: 0x26F84A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCfD', symObjAddr: 0x710, symBinAddr: 0x1C36A4, symSize: 0x34 } + - { offset: 0x26F88A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCAA15AttributeParserA2aFP6parserAA0f5ValueG0_pvgTW', symObjAddr: 0x764, symBinAddr: 0x1C36F8, symSize: 0x10 } + - { offset: 0x26F8BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCAA15AttributeParserA2aFP7optionsAC7OptionsVvgTW', symObjAddr: 0x774, symBinAddr: 0x1C3708, symSize: 0xC } + - { offset: 0x26F8E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCAA15AttributeParserA2aFP5parseyqd__SS_qd__SSKXEtKlFTW', symObjAddr: 0x780, symBinAddr: 0x1C3714, symSize: 0x20 } + - { offset: 0x26FA99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV16parseUrlSelectory10Foundation3URLVSSKF', symObjAddr: 0x7A0, symBinAddr: 0x1C3734, symSize: 0x598 } + - { offset: 0x26FE63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV11parsePointsySayAA3DOMO5PointVGSSKF', symObjAddr: 0xD38, symBinAddr: 0x1C3CCC, symSize: 0x14 } + - { offset: 0x26FE77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV8parseRawyxSSKSYRzSS0hE0RtzlF', symObjAddr: 0xD4C, symBinAddr: 0x1C3CE0, symSize: 0x1AC } + - { offset: 0x26FF27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV11parsePointsySayAA3DOMO5PointVGSSKFTf4nd_n', symObjAddr: 0x12E0, symBinAddr: 0x1C3E8C, symSize: 0x478 } + - { offset: 0x27026C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV11parseFloatsySaySfGSSKFTf4nd_n', symObjAddr: 0x196C, symBinAddr: 0x1C4304, symSize: 0x474 } + - { offset: 0x270965, size: 0x8, addend: 0x0, symName: '_$sSlsE10firstIndex5where0B0QzSgSb7ElementQzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg5', symObjAddr: 0x98, symBinAddr: 0x1C479C, symSize: 0xC0 } + - { offset: 0x270AA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE06removeE08animated012restoresLastE010completionySb_SbyycSgtF', symObjAddr: 0x26C, symBinAddr: 0x1C4970, symSize: 0x270 } + - { offset: 0x270D11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE04moveE02to19ignoresCurrentState8animated10completionyAA0deK0CSg_S2byycSgtF', symObjAddr: 0x4DC, symBinAddr: 0x1C4BE0, symSize: 0x1C0 } + - { offset: 0x27102E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE010initializeE05levelySi_tF', symObjAddr: 0x69C, symBinAddr: 0x1C4DA0, symSize: 0x2C8 } + - { offset: 0x2711F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE010initializeE05levelySi_tFAA17SurfaceAppearanceCyXEfU_', symObjAddr: 0x964, symBinAddr: 0x1C5068, symSize: 0x100 } + - { offset: 0x2712F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE06removeE08animated012restoresLastE010completionySb_SbyycSgtFSbAaB_pXEfU_TA', symObjAddr: 0xA64, symBinAddr: 0x1C5168, symSize: 0x14 } + - { offset: 0x2713E3, size: 0x8, addend: 0x0, symName: '_$sSMsE20_halfStablePartition15isSuffixElement5IndexQzSb0F0QzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg5', symObjAddr: 0xA78, symBinAddr: 0x1C517C, symSize: 0x1DC } + - { offset: 0x271774, size: 0x8, addend: 0x0, symName: '_$sSlsE10firstIndex5where0B0QzSgSb7ElementQzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg5', symObjAddr: 0x98, symBinAddr: 0x1C479C, symSize: 0xC0 } + - { offset: 0x2718A2, size: 0x8, addend: 0x0, symName: '_$sSlsE10firstIndex5where0B0QzSgSb7ElementQzKXE_tKFSay8PenNavUI5PlaceCG_Tg5', symObjAddr: 0x158, symBinAddr: 0x1C485C, symSize: 0x114 } + - { offset: 0x27214E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22LocationIndicatorStyleOMa', symObjAddr: 0x168, symBinAddr: 0x1C5358, symSize: 0x10 } + - { offset: 0x272162, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22LocationIndicatorStyleOSHAASQWb', symObjAddr: 0x178, symBinAddr: 0x1C5368, symSize: 0x4 } + - { offset: 0x272176, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22LocationIndicatorStyleOACSQAAWl', symObjAddr: 0x17C, symBinAddr: 0x1C536C, symSize: 0x40 } + - { offset: 0x27252E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC4fullACvpZ', symObjAddr: 0x7B0, symBinAddr: 0x37E518, symSize: 0x0 } + - { offset: 0x27272E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC4halfACvpZ', symObjAddr: 0x7B8, symBinAddr: 0x37E520, symSize: 0x0 } + - { offset: 0x272748, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC3tipACvpZ', symObjAddr: 0x7C0, symBinAddr: 0x37E528, symSize: 0x0 } + - { offset: 0x272762, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC6hiddenACvpZ', symObjAddr: 0x7C8, symBinAddr: 0x37E530, symSize: 0x0 } + - { offset: 0x272770, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCMa', symObjAddr: 0xB4, symBinAddr: 0x1C5460, symSize: 0x20 } + - { offset: 0x2727A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCfETo', symObjAddr: 0x710, symBinAddr: 0x1C5A00, symSize: 0x14 } + - { offset: 0x2728AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValueACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x1C53AC, symSize: 0x68 } + - { offset: 0x2728EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValueACSgSS_tcfc', symObjAddr: 0x68, symBinAddr: 0x1C5414, symSize: 0x4C } + - { offset: 0x272945, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValue5orderACSS_SitcfC', symObjAddr: 0xD4, symBinAddr: 0x1C5480, symSize: 0x6C } + - { offset: 0x27298C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValue5orderACSS_Sitcfc', symObjAddr: 0x140, symBinAddr: 0x1C54EC, symSize: 0x4C } + - { offset: 0x2729DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValue5orderACSS_SitcfcTo', symObjAddr: 0x18C, symBinAddr: 0x1C5538, symSize: 0x64 } + - { offset: 0x272A24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC5orderSivg', symObjAddr: 0x1F0, symBinAddr: 0x1C559C, symSize: 0x10 } + - { offset: 0x272A4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC4copy4withyp10ObjectiveC6NSZoneVSg_tF', symObjAddr: 0x200, symBinAddr: 0x1C55AC, symSize: 0x2C } + - { offset: 0x272A98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC4copy4withyp10ObjectiveC6NSZoneVSg_tFTo', symObjAddr: 0x22C, symBinAddr: 0x1C55D8, symSize: 0x4 } + - { offset: 0x272AC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC11descriptionSSvgTo', symObjAddr: 0x230, symBinAddr: 0x1C55DC, symSize: 0x4C } + - { offset: 0x272AF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC11descriptionSSvg', symObjAddr: 0x27C, symBinAddr: 0x1C5628, symSize: 0x38 } + - { offset: 0x272B47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC16debugDescriptionSSvgTo', symObjAddr: 0x2B4, symBinAddr: 0x1C5660, symSize: 0xC0 } + - { offset: 0x272BE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCACycfc', symObjAddr: 0x688, symBinAddr: 0x1C5978, symSize: 0x2C } + - { offset: 0x272C3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCACycfcTo', symObjAddr: 0x6B4, symBinAddr: 0x1C59A4, symSize: 0x2C } + - { offset: 0x272C9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCfD', symObjAddr: 0x6E0, symBinAddr: 0x1C59D0, symSize: 0x30 } + - { offset: 0x272CBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x724, symBinAddr: 0x1C5A14, symSize: 0x30 } + - { offset: 0x272CE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x754, symBinAddr: 0x1C5A44, symSize: 0x1C } + - { offset: 0x273090, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11makeXOffset3for4withSfSS_AC14TextAttributesVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1C5A9C, symSize: 0x118 } + - { offset: 0x2730E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11makeXOffset3for4withSfSS_AC14TextAttributesVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1C5A9C, symSize: 0x118 } + - { offset: 0x273658, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCMa', symObjAddr: 0x480, symBinAddr: 0x1C5EF0, symSize: 0x20 } + - { offset: 0x27366C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCfETo', symObjAddr: 0x54C, symBinAddr: 0x1C5FBC, symSize: 0x10 } + - { offset: 0x2736A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC08completeE0yyF', symObjAddr: 0x0, symBinAddr: 0x1C5BB4, symSize: 0x64 } + - { offset: 0x2736D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC02isD0SbvgTo', symObjAddr: 0x64, symBinAddr: 0x1C5C18, symSize: 0x8 } + - { offset: 0x2736ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC11isExecutingSbvsTo', symObjAddr: 0x8C, symBinAddr: 0x1C5C2C, symSize: 0x54 } + - { offset: 0x273701, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC10isFinishedSbvsTo', symObjAddr: 0x1E8, symBinAddr: 0x1C5CF8, symSize: 0x50 } + - { offset: 0x27372E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC5startyyFTo', symObjAddr: 0x378, symBinAddr: 0x1C5E08, symSize: 0x70 } + - { offset: 0x2737C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCACycfc', symObjAddr: 0x408, symBinAddr: 0x1C5E78, symSize: 0x78 } + - { offset: 0x27381F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCACycfcTo', symObjAddr: 0x4A0, symBinAddr: 0x1C5F10, symSize: 0x7C } + - { offset: 0x27387F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCfD', symObjAddr: 0x51C, symBinAddr: 0x1C5F8C, symSize: 0x30 } + - { offset: 0x27425C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvpAETk', symObjAddr: 0x2A0, symBinAddr: 0x1C6294, symSize: 0x64 } + - { offset: 0x27429A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowCMa', symObjAddr: 0x940, symBinAddr: 0x1C6914, symSize: 0x20 } + - { offset: 0x2742AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avpACTK', symObjAddr: 0xDB4, symBinAddr: 0x1C6D88, symSize: 0x54 } + - { offset: 0x274304, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvpACTk', symObjAddr: 0xFF4, symBinAddr: 0x1C6FC8, symSize: 0x64 } + - { offset: 0x274363, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceCfETo', symObjAddr: 0x1504, symBinAddr: 0x1C74D8, symSize: 0x58 } + - { offset: 0x274CAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvpACTk', symObjAddr: 0x2084, symBinAddr: 0x1C7F30, symSize: 0x68 } + - { offset: 0x2750D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewCfETo', symObjAddr: 0x63A8, symBinAddr: 0x1CC21C, symSize: 0x128 } + - { offset: 0x275104, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceCMa', symObjAddr: 0x64D0, symBinAddr: 0x1CC344, symSize: 0x20 } + - { offset: 0x275118, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewCMa', symObjAddr: 0x64F0, symBinAddr: 0x1CC364, symSize: 0x20 } + - { offset: 0x27512C, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaAB5UIKit01_C23NumericRawRepresentableACWl', symObjAddr: 0x7230, symBinAddr: 0x1CCECC, symSize: 0x44 } + - { offset: 0x2753EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvgTo', symObjAddr: 0x0, symBinAddr: 0x1C5FF4, symSize: 0x44 } + - { offset: 0x275421, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvg', symObjAddr: 0x44, symBinAddr: 0x1C6038, symSize: 0x40 } + - { offset: 0x27546B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvsTo', symObjAddr: 0x84, symBinAddr: 0x1C6078, symSize: 0x50 } + - { offset: 0x2754A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvs', symObjAddr: 0xD4, symBinAddr: 0x1C60C8, symSize: 0x4C } + - { offset: 0x2754D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvM', symObjAddr: 0x120, symBinAddr: 0x1C6114, symSize: 0x40 } + - { offset: 0x2755CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvgTo', symObjAddr: 0x160, symBinAddr: 0x1C6154, symSize: 0x48 } + - { offset: 0x2755FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvg', symObjAddr: 0x1A8, symBinAddr: 0x1C619C, symSize: 0x40 } + - { offset: 0x275641, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvsTo', symObjAddr: 0x1E8, symBinAddr: 0x1C61DC, symSize: 0x64 } + - { offset: 0x27567C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvs', symObjAddr: 0x24C, symBinAddr: 0x1C6240, symSize: 0x54 } + - { offset: 0x2756A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvM', symObjAddr: 0x304, symBinAddr: 0x1C62F8, symSize: 0x40 } + - { offset: 0x2756EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvsTo', symObjAddr: 0x35C, symBinAddr: 0x1C6350, symSize: 0x54 } + - { offset: 0x27572E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvs', symObjAddr: 0x3B0, symBinAddr: 0x1C63A4, symSize: 0x54 } + - { offset: 0x275757, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvM', symObjAddr: 0x404, symBinAddr: 0x1C63F8, symSize: 0x40 } + - { offset: 0x275790, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvgTo', symObjAddr: 0x444, symBinAddr: 0x1C6438, symSize: 0x44 } + - { offset: 0x2757C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvg', symObjAddr: 0x488, symBinAddr: 0x1C647C, symSize: 0x44 } + - { offset: 0x275809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvsTo', symObjAddr: 0x4CC, symBinAddr: 0x1C64C0, symSize: 0x50 } + - { offset: 0x275847, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvs', symObjAddr: 0x51C, symBinAddr: 0x1C6510, symSize: 0x50 } + - { offset: 0x275870, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvM', symObjAddr: 0x56C, symBinAddr: 0x1C6560, symSize: 0x40 } + - { offset: 0x2758A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x5AC, symBinAddr: 0x1C65A0, symSize: 0x44 } + - { offset: 0x2758DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvg', symObjAddr: 0x5F0, symBinAddr: 0x1C65E4, symSize: 0x40 } + - { offset: 0x275920, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x630, symBinAddr: 0x1C6624, symSize: 0x50 } + - { offset: 0x27595C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvs', symObjAddr: 0x680, symBinAddr: 0x1C6674, symSize: 0x4C } + - { offset: 0x275985, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvM', symObjAddr: 0x6CC, symBinAddr: 0x1C66C0, symSize: 0x40 } + - { offset: 0x2759BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x70C, symBinAddr: 0x1C6700, symSize: 0x44 } + - { offset: 0x2759F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvg', symObjAddr: 0x750, symBinAddr: 0x1C6744, symSize: 0x40 } + - { offset: 0x275A30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x790, symBinAddr: 0x1C6784, symSize: 0x50 } + - { offset: 0x275A6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvs', symObjAddr: 0x7E0, symBinAddr: 0x1C67D4, symSize: 0x4C } + - { offset: 0x275A95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvM', symObjAddr: 0x82C, symBinAddr: 0x1C6820, symSize: 0x40 } + - { offset: 0x275AC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowCAEycfc', symObjAddr: 0x88C, symBinAddr: 0x1C6860, symSize: 0xB4 } + - { offset: 0x275AF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowCAEycfcTo', symObjAddr: 0x960, symBinAddr: 0x1C6934, symSize: 0xB8 } + - { offset: 0x275B28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowCfETo', symObjAddr: 0xA24, symBinAddr: 0x1C69F8, symSize: 0x10 } + - { offset: 0x275B66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvgTo', symObjAddr: 0xA34, symBinAddr: 0x1C6A08, symSize: 0x48 } + - { offset: 0x275B99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvg', symObjAddr: 0xA7C, symBinAddr: 0x1C6A50, symSize: 0x4C } + - { offset: 0x275BB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvs', symObjAddr: 0xAD4, symBinAddr: 0x1C6AA8, symSize: 0x54 } + - { offset: 0x275BE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvM', symObjAddr: 0xB28, symBinAddr: 0x1C6AFC, symSize: 0x40 } + - { offset: 0x275C1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvgTo', symObjAddr: 0xB68, symBinAddr: 0x1C6B3C, symSize: 0x44 } + - { offset: 0x275C4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvg', symObjAddr: 0xBAC, symBinAddr: 0x1C6B80, symSize: 0x40 } + - { offset: 0x275C8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvsTo', symObjAddr: 0xBEC, symBinAddr: 0x1C6BC0, symSize: 0x50 } + - { offset: 0x275CC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvs', symObjAddr: 0xC3C, symBinAddr: 0x1C6C10, symSize: 0x4C } + - { offset: 0x275CF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvM', symObjAddr: 0xC88, symBinAddr: 0x1C6C5C, symSize: 0x40 } + - { offset: 0x275D8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avgTo', symObjAddr: 0xCC8, symBinAddr: 0x1C6C9C, symSize: 0x50 } + - { offset: 0x275DE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avg', symObjAddr: 0xD18, symBinAddr: 0x1C6CEC, symSize: 0x50 } + - { offset: 0x275E67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avsTo', symObjAddr: 0xD68, symBinAddr: 0x1C6D3C, symSize: 0x34 } + - { offset: 0x275EC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avs', symObjAddr: 0xD9C, symBinAddr: 0x1C6D70, symSize: 0x18 } + - { offset: 0x275EF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avs', symObjAddr: 0xD9C, symBinAddr: 0x1C6D70, symSize: 0x18 } + - { offset: 0x275F15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM', symObjAddr: 0xE08, symBinAddr: 0x1C6DDC, symSize: 0x68 } + - { offset: 0x275F69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM.resume.0', symObjAddr: 0xE70, symBinAddr: 0x1C6E44, symSize: 0x14 } + - { offset: 0x275F8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM.resume.0', symObjAddr: 0xE70, symBinAddr: 0x1C6E44, symSize: 0x14 } + - { offset: 0x275FA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM.resume.0', symObjAddr: 0xE70, symBinAddr: 0x1C6E44, symSize: 0x14 } + - { offset: 0x276010, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvgTo', symObjAddr: 0xE84, symBinAddr: 0x1C6E58, symSize: 0x6C } + - { offset: 0x276043, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvg', symObjAddr: 0xEF0, symBinAddr: 0x1C6EC4, symSize: 0x44 } + - { offset: 0x276087, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvsTo', symObjAddr: 0xF34, symBinAddr: 0x1C6F08, symSize: 0x6C } + - { offset: 0x2760C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvs', symObjAddr: 0xFA0, symBinAddr: 0x1C6F74, symSize: 0x54 } + - { offset: 0x2760EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvM', symObjAddr: 0x1058, symBinAddr: 0x1C702C, symSize: 0x40 } + - { offset: 0x276124, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvgTo', symObjAddr: 0x1098, symBinAddr: 0x1C706C, symSize: 0x48 } + - { offset: 0x276157, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvg', symObjAddr: 0x10E0, symBinAddr: 0x1C70B4, symSize: 0x4C } + - { offset: 0x276176, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvs', symObjAddr: 0x1198, symBinAddr: 0x1C716C, symSize: 0x54 } + - { offset: 0x2761AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvM', symObjAddr: 0x124C, symBinAddr: 0x1C7220, symSize: 0x40 } + - { offset: 0x2761E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x128C, symBinAddr: 0x1C7260, symSize: 0x44 } + - { offset: 0x276217, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvg', symObjAddr: 0x12D0, symBinAddr: 0x1C72A4, symSize: 0x40 } + - { offset: 0x276256, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x1310, symBinAddr: 0x1C72E4, symSize: 0x50 } + - { offset: 0x276292, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvs', symObjAddr: 0x1360, symBinAddr: 0x1C7334, symSize: 0x4C } + - { offset: 0x2762BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvM', symObjAddr: 0x13AC, symBinAddr: 0x1C7380, symSize: 0x40 } + - { offset: 0x2762FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceCACycfc', symObjAddr: 0x13EC, symBinAddr: 0x1C73C0, symSize: 0xEC } + - { offset: 0x27639D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceCACycfcTo', symObjAddr: 0x14D8, symBinAddr: 0x1C74AC, symSize: 0x20 } + - { offset: 0x2763CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC13grabberHandleAA07GrabberE0CvgTo', symObjAddr: 0x155C, symBinAddr: 0x1C7530, symSize: 0x10 } + - { offset: 0x2763E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC13grabberHandleAA07GrabberE0CvgTo', symObjAddr: 0x155C, symBinAddr: 0x1C7530, symSize: 0x10 } + - { offset: 0x2763FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC13grabberHandleAA07GrabberE0Cvg', symObjAddr: 0x156C, symBinAddr: 0x1C7540, symSize: 0x10 } + - { offset: 0x276430, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x157C, symBinAddr: 0x1C7550, symSize: 0x44 } + - { offset: 0x276463, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvg', symObjAddr: 0x15C0, symBinAddr: 0x1C7594, symSize: 0x40 } + - { offset: 0x2764B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x1600, symBinAddr: 0x1C75D4, symSize: 0x60 } + - { offset: 0x27650F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvs', symObjAddr: 0x1660, symBinAddr: 0x1C7634, symSize: 0x5C } + - { offset: 0x276555, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvM', symObjAddr: 0x16BC, symBinAddr: 0x1C7690, symSize: 0x44 } + - { offset: 0x27658E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x1700, symBinAddr: 0x1C76D4, symSize: 0x44 } + - { offset: 0x2765C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvg', symObjAddr: 0x1744, symBinAddr: 0x1C7718, symSize: 0x40 } + - { offset: 0x276600, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x1784, symBinAddr: 0x1C7758, symSize: 0x50 } + - { offset: 0x27663C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvs', symObjAddr: 0x17D4, symBinAddr: 0x1C77A8, symSize: 0x4C } + - { offset: 0x276665, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvM', symObjAddr: 0x1820, symBinAddr: 0x1C77F4, symSize: 0x40 } + - { offset: 0x2766BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvsTo', symObjAddr: 0x18FC, symBinAddr: 0x1C78CC, symSize: 0x68 } + - { offset: 0x276718, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvs', symObjAddr: 0x1964, symBinAddr: 0x1C7934, symSize: 0x64 } + - { offset: 0x27675E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvM', symObjAddr: 0x19C8, symBinAddr: 0x1C7998, symSize: 0x44 } + - { offset: 0x276797, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x1A0C, symBinAddr: 0x1C79DC, symSize: 0x48 } + - { offset: 0x2767CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvg', symObjAddr: 0x1A54, symBinAddr: 0x1C7A24, symSize: 0x44 } + - { offset: 0x27680E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvsTo', symObjAddr: 0x1A98, symBinAddr: 0x1C7A68, symSize: 0x58 } + - { offset: 0x276849, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvs', symObjAddr: 0x1AF0, symBinAddr: 0x1C7AC0, symSize: 0x5C } + - { offset: 0x276872, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvM', symObjAddr: 0x1B4C, symBinAddr: 0x1C7B1C, symSize: 0x84 } + - { offset: 0x2768AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvM.resume.0', symObjAddr: 0x1BD0, symBinAddr: 0x1C7BA0, symSize: 0x6C } + - { offset: 0x2768CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvM', symObjAddr: 0x1C6C, symBinAddr: 0x1C7C3C, symSize: 0x44 } + - { offset: 0x276919, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvgTo', symObjAddr: 0x1CB4, symBinAddr: 0x1C7C84, symSize: 0x68 } + - { offset: 0x2769CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvsTo', symObjAddr: 0x1D88, symBinAddr: 0x1C7CEC, symSize: 0xC0 } + - { offset: 0x276A4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvgTo', symObjAddr: 0x1F00, symBinAddr: 0x1C7DAC, symSize: 0x48 } + - { offset: 0x276A7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvg', symObjAddr: 0x1F48, symBinAddr: 0x1C7DF4, symSize: 0x40 } + - { offset: 0x276ABC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvsTo', symObjAddr: 0x1F88, symBinAddr: 0x1C7E34, symSize: 0x8C } + - { offset: 0x276AF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvs', symObjAddr: 0x2014, symBinAddr: 0x1C7EC0, symSize: 0x70 } + - { offset: 0x276B23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvW', symObjAddr: 0x20EC, symBinAddr: 0x1C7F98, symSize: 0x1B4 } + - { offset: 0x276D90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvM', symObjAddr: 0x22A0, symBinAddr: 0x1C814C, symSize: 0x44 } + - { offset: 0x276DB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvM.resume.0', symObjAddr: 0x22E4, symBinAddr: 0x1C8190, symSize: 0x30 } + - { offset: 0x276DD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvM', symObjAddr: 0x251C, symBinAddr: 0x1C83C8, symSize: 0x44 } + - { offset: 0x276E0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC09containerE0So6UIViewCvgTo', symObjAddr: 0x25A0, symBinAddr: 0x1C844C, symSize: 0x10 } + - { offset: 0x276E27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC09containerE0So6UIViewCvgTo', symObjAddr: 0x25A0, symBinAddr: 0x1C844C, symSize: 0x10 } + - { offset: 0x276E44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC09containerE0So6UIViewCvg', symObjAddr: 0x25B0, symBinAddr: 0x1C845C, symSize: 0x10 } + - { offset: 0x276E75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17containerOverflow12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x25C0, symBinAddr: 0x1C846C, symSize: 0x10 } + - { offset: 0x276E8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17containerOverflow12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x25C0, symBinAddr: 0x1C846C, symSize: 0x10 } + - { offset: 0x276EDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17containerOverflow12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x25D0, symBinAddr: 0x1C847C, symSize: 0x18 } + - { offset: 0x276EF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17containerOverflow12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x25D0, symBinAddr: 0x1C847C, symSize: 0x18 } + - { offset: 0x276F49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x25E8, symBinAddr: 0x1C8494, symSize: 0x10 } + - { offset: 0x276F61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x25E8, symBinAddr: 0x1C8494, symSize: 0x10 } + - { offset: 0x276FA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC8positionAA21FloatingPanelPositionOvsTo', symObjAddr: 0x25F8, symBinAddr: 0x1C84A4, symSize: 0x3C } + - { offset: 0x2770CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC8positionAA21FloatingPanelPositionOvW', symObjAddr: 0x2634, symBinAddr: 0x1C84E0, symSize: 0x8D4 } + - { offset: 0x2774E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC16grabberAreaFrameSo6CGRectVvgTo', symObjAddr: 0x2F08, symBinAddr: 0x1C8DB4, symSize: 0x5C } + - { offset: 0x277581, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC16grabberAreaFrameSo6CGRectVvg', symObjAddr: 0x2F64, symBinAddr: 0x1C8E10, symSize: 0x21C } + - { offset: 0x277772, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC28grabberHandleWidthConstraint33_23B1F6B61A4C6FEE495E0270C601A94CLLSo08NSLayoutI0Cvg', symObjAddr: 0x32A8, symBinAddr: 0x1C9154, symSize: 0xD8 } + - { offset: 0x2777AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC29grabberHandleHeightConstraint33_23B1F6B61A4C6FEE495E0270C601A94CLLSo08NSLayoutI0Cvg', symObjAddr: 0x3380, symBinAddr: 0x1C922C, symSize: 0xDC } + - { offset: 0x2777EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC29grabberHandleCenterConstraint33_23B1F6B61A4C6FEE495E0270C601A94CLLSo08NSLayoutI0Cvg', symObjAddr: 0x345C, symBinAddr: 0x1C9308, symSize: 0xD4 } + - { offset: 0x27780B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC34grabberHandleEdgePaddingConstraint33_23B1F6B61A4C6FEE495E0270C601A94CLLSo08NSLayoutJ0Cvg', symObjAddr: 0x3530, symBinAddr: 0x1C93DC, symSize: 0xFC } + - { offset: 0x2778B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC12shadowLayers33_23B1F6B61A4C6FEE495E0270C601A94CLLSaySo7CALayerCGvs', symObjAddr: 0x362C, symBinAddr: 0x1C94D8, symSize: 0x1D0 } + - { offset: 0x277B61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC29requiresConstraintBasedLayoutSbvgZTo', symObjAddr: 0x37FC, symBinAddr: 0x1C96A8, symSize: 0x8 } + - { offset: 0x277BAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x380C, symBinAddr: 0x1C96B0, symSize: 0x23C } + - { offset: 0x277C39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x3A48, symBinAddr: 0x1C98EC, symSize: 0x20 } + - { offset: 0x277C4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5coderACSgSo7NSCoderC_tcfC', symObjAddr: 0x3A68, symBinAddr: 0x1C990C, symSize: 0x44 } + - { offset: 0x277C61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3AAC, symBinAddr: 0x1C9950, symSize: 0x224 } + - { offset: 0x277CEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x3CD0, symBinAddr: 0x1C9B74, symSize: 0x28 } + - { offset: 0x277CFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC11addSubViews33_23B1F6B61A4C6FEE495E0270C601A94CLLyyF', symObjAddr: 0x3CF8, symBinAddr: 0x1C9B9C, symSize: 0x870 } + - { offset: 0x278425, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17updateConstraintsyyF', symObjAddr: 0x4568, symBinAddr: 0x1CA40C, symSize: 0x60C } + - { offset: 0x278889, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17updateConstraintsyyFTo', symObjAddr: 0x4B74, symBinAddr: 0x1CAA18, symSize: 0x28 } + - { offset: 0x2788BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC14layoutSubviewsyyF', symObjAddr: 0x4B9C, symBinAddr: 0x1CAA40, symSize: 0x248 } + - { offset: 0x278A13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC14layoutSubviewsyyFTo', symObjAddr: 0x4DE4, symBinAddr: 0x1CAC88, symSize: 0x28 } + - { offset: 0x278A27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0x4E0C, symBinAddr: 0x1CACB0, symSize: 0x44 } + - { offset: 0x278A3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20intrinsicContentSizeSo6CGSizeVvg', symObjAddr: 0x4E50, symBinAddr: 0x1CACF4, symSize: 0x108 } + - { offset: 0x278BA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC12updateShadow33_23B1F6B61A4C6FEE495E0270C601A94CLLyyF', symObjAddr: 0x4F58, symBinAddr: 0x1CADFC, symSize: 0x748 } + - { offset: 0x2790AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC18updateCornerRadius33_23B1F6B61A4C6FEE495E0270C601A94CLLyyF', symObjAddr: 0x56A0, symBinAddr: 0x1CB544, symSize: 0x234 } + - { offset: 0x279161, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC12updateBorder33_23B1F6B61A4C6FEE495E0270C601A94CLLyyF', symObjAddr: 0x58D4, symBinAddr: 0x1CB778, symSize: 0x13C } + - { offset: 0x279203, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC3set07contentE04modeySo6UIViewC_AA23FloatingPanelControllerC11ContentModeOtF', symObjAddr: 0x5A10, symBinAddr: 0x1CB8B4, symSize: 0x570 } + - { offset: 0x27972F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC3set07contentE04modeySo6UIViewC_AA23FloatingPanelControllerC11ContentModeOtFTo', symObjAddr: 0x5F80, symBinAddr: 0x1CBE24, symSize: 0x58 } + - { offset: 0x279743, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC08hasStackE0SbyF', symObjAddr: 0x5FD8, symBinAddr: 0x1CBE7C, symSize: 0x194 } + - { offset: 0x2798D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC08hasStackE0SbyFTo', symObjAddr: 0x616C, symBinAddr: 0x1CC010, symSize: 0x34 } + - { offset: 0x2798EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC19grabberAreaContainsySbSo7CGPointVF', symObjAddr: 0x61A0, symBinAddr: 0x1CC044, symSize: 0x180 } + - { offset: 0x279A3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC19grabberAreaContainsySbSo7CGPointVFTo', symObjAddr: 0x6320, symBinAddr: 0x1CC1C4, symSize: 0x4C } + - { offset: 0x27A2F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewCfETo', symObjAddr: 0x1D48, symBinAddr: 0x1CEBBC, symSize: 0x38 } + - { offset: 0x27A326, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewCMa', symObjAddr: 0x1D80, symBinAddr: 0x1CEBF4, symSize: 0x20 } + - { offset: 0x27A33A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugModeOMa', symObjAddr: 0x1F08, symBinAddr: 0x1CEC14, symSize: 0x10 } + - { offset: 0x27A34E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugModeOSHAASQWb', symObjAddr: 0x1F18, symBinAddr: 0x1CEC24, symSize: 0x4 } + - { offset: 0x27A362, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugModeOACSQAAWl', symObjAddr: 0x1F1C, symBinAddr: 0x1CEC28, symSize: 0x40 } + - { offset: 0x27A376, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer19CameraConfigurationVSgWOc', symObjAddr: 0x1FA0, symBinAddr: 0x1CEC68, symSize: 0x48 } + - { offset: 0x27A38A, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer19CameraConfigurationVSgWOh', symObjAddr: 0x1FE8, symBinAddr: 0x1CECB0, symSize: 0x40 } + - { offset: 0x27A401, size: 0x8, addend: 0x0, symName: '_$s12CoreGraphics7CGFloatVACs7CVarArgAAWl', symObjAddr: 0x2534, symBinAddr: 0x1CF178, symSize: 0x40 } + - { offset: 0x27A6B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xC4, symBinAddr: 0x1CCF38, symSize: 0xE0 } + - { offset: 0x27A761, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1A4, symBinAddr: 0x1CD018, symSize: 0xCC } + - { offset: 0x27A7EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x270, symBinAddr: 0x1CD0E4, symSize: 0x28 } + - { offset: 0x27A851, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC5setup33_2F560D187A4C3D784FB69A11494F9267LLyyF', symObjAddr: 0x298, symBinAddr: 0x1CD10C, symSize: 0x348 } + - { offset: 0x27A99A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC06switchD4ModeyyF', symObjAddr: 0x5E0, symBinAddr: 0x1CD454, symSize: 0x128 } + - { offset: 0x27AA3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC21constrainLabelToEdges33_2F560D187A4C3D784FB69A11494F9267LLyySo7UILabelCF', symObjAddr: 0x708, symBinAddr: 0x1CD57C, symSize: 0x26C } + - { offset: 0x27AC7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC15setUserLocationyy7Penguin10PILocationCSgF', symObjAddr: 0x974, symBinAddr: 0x1CD7E8, symSize: 0x540 } + - { offset: 0x27B325, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC22setCameraConfiguration_12currentFloory17PenguinINRenderer0gH0VSg_0K00J0CSgtF', symObjAddr: 0xEB4, symBinAddr: 0x1CDD28, symSize: 0x820 } + - { offset: 0x27BAF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC9handleTap33_2F560D187A4C3D784FB69A11494F9267LLyyFTo', symObjAddr: 0x16D4, symBinAddr: 0x1CE548, symSize: 0x70 } + - { offset: 0x27BB49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC9handlePan33_2F560D187A4C3D784FB69A11494F9267LLyySo22UIPanGestureRecognizerCF', symObjAddr: 0x1744, symBinAddr: 0x1CE5B8, symSize: 0x584 } + - { offset: 0x27BE62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC9handlePan33_2F560D187A4C3D784FB69A11494F9267LLyySo22UIPanGestureRecognizerCFTo', symObjAddr: 0x1CC8, symBinAddr: 0x1CEB3C, symSize: 0x50 } + - { offset: 0x27BE76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewCfD', symObjAddr: 0x1D18, symBinAddr: 0x1CEB8C, symSize: 0x30 } + - { offset: 0x27BEB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC19getAttributedString33_2F560D187A4C3D784FB69A11494F9267LLySo012NSAttributedH0CSSFTf4nd_n', symObjAddr: 0x2028, symBinAddr: 0x1CECF0, symSize: 0x230 } + - { offset: 0x27C000, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC19getFormattedPadding33_2F560D187A4C3D784FB69A11494F9267LLySSSo12UIEdgeInsetsVSgFTf4nd_n', symObjAddr: 0x23E8, symBinAddr: 0x1CF0B0, symSize: 0xC8 } + - { offset: 0x27C46D, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x0, symBinAddr: 0x1CF1B8, symSize: 0x8 } + - { offset: 0x27C489, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE15colorIdentifierSivsTo', symObjAddr: 0x8, symBinAddr: 0x1CF1C0, symSize: 0x38 } + - { offset: 0x27C4A5, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x4C, symBinAddr: 0x1CF1F8, symSize: 0x8 } + - { offset: 0x27C4C1, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x54, symBinAddr: 0x1CF200, symSize: 0x38 } + - { offset: 0x27C4DD, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE12LanguageSafeSbvgTo', symObjAddr: 0x1B0, symBinAddr: 0x1CF238, symSize: 0x8 } + - { offset: 0x27C508, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE12LanguageSafeSbvsTo', symObjAddr: 0x1B8, symBinAddr: 0x1CF240, symSize: 0x28 } + - { offset: 0x27C550, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE12LanguageSafeSbvsTf4dn_n', symObjAddr: 0x1E0, symBinAddr: 0x1CF268, symSize: 0xBC } + - { offset: 0x27CA0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCACyc33_BDB7F6F569795A6AD4284161D4C54383Llfc', symObjAddr: 0x0, symBinAddr: 0x1CF324, symSize: 0xA8 } + - { offset: 0x27CA31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerC14sharedInstance33_BDB7F6F569795A6AD4284161D4C54383LLACSgvpZ', symObjAddr: 0x970, symBinAddr: 0x37E7A0, symSize: 0x0 } + - { offset: 0x27CC0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCfETo', symObjAddr: 0x700, symBinAddr: 0x1CFA20, symSize: 0x10 } + - { offset: 0x27CC3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCMa', symObjAddr: 0x710, symBinAddr: 0x1CFA30, symSize: 0x20 } + - { offset: 0x27CC4E, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVSgWOb', symObjAddr: 0x774, symBinAddr: 0x1CFA50, symSize: 0x48 } + - { offset: 0x27CD65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCACyc33_BDB7F6F569795A6AD4284161D4C54383Llfc', symObjAddr: 0x0, symBinAddr: 0x1CF324, symSize: 0xA8 } + - { offset: 0x27CE3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCACyc33_BDB7F6F569795A6AD4284161D4C54383LlfcTo', symObjAddr: 0xA8, symBinAddr: 0x1CF3CC, symSize: 0x20 } + - { offset: 0x27CF73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerC04sendE03fory7Penguin14GeofenceRegionV_tF', symObjAddr: 0xCC, symBinAddr: 0x1CF3EC, symSize: 0x268 } + - { offset: 0x27D0CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerC011willDisplayE02idSbSi_tF', symObjAddr: 0x334, symBinAddr: 0x1CF654, symSize: 0x39C } + - { offset: 0x27D1EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCfD', symObjAddr: 0x6D0, symBinAddr: 0x1CF9F0, symSize: 0x30 } + - { offset: 0x27D27E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerC19trackGeofenceRegion33_BDB7F6F569795A6AD4284161D4C54383LL8regionIdySi_tFTf4nd_n', symObjAddr: 0x7FC, symBinAddr: 0x1CFA98, symSize: 0x12C } + - { offset: 0x27D6E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerC29initializePersistentContaineryyF', symObjAddr: 0x0, symBinAddr: 0x1CFBC4, symSize: 0x640 } + - { offset: 0x27D70C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerC14sharedInstance33_B6E24855173BA72882FF864730241A42LLACSgvpZ', symObjAddr: 0xD48, symBinAddr: 0x37E7D8, symSize: 0x0 } + - { offset: 0x27D7C1, size: 0x8, addend: 0x0, symName: '_$sSo28NSPersistentStoreDescriptionCs5Error_pSgIeggg_ABSo7NSErrorCSgIeyByy_TR', symObjAddr: 0x644, symBinAddr: 0x1D0204, symSize: 0x78 } + - { offset: 0x27D8AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerCMa', symObjAddr: 0xBDC, symBinAddr: 0x1D0778, symSize: 0x20 } + - { offset: 0x27D8BE, size: 0x8, addend: 0x0, symName: '_$sSo28NSPersistentStoreDescriptionCMa', symObjAddr: 0xC40, symBinAddr: 0x1D0798, symSize: 0x44 } + - { offset: 0x27D8D2, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xD0C, symBinAddr: 0x1D07DC, symSize: 0x10 } + - { offset: 0x27D8E6, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xD1C, symBinAddr: 0x1D07EC, symSize: 0x8 } + - { offset: 0x27DBD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerC29initializePersistentContaineryyF', symObjAddr: 0x0, symBinAddr: 0x1CFBC4, symSize: 0x640 } + - { offset: 0x27DE2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerC13resetDatabaseyyF', symObjAddr: 0x6BC, symBinAddr: 0x1D027C, symSize: 0x4FC } + - { offset: 0x27E508, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC15show3dBuildingsyyF', symObjAddr: 0x0, symBinAddr: 0x1D07F4, symSize: 0x118 } + - { offset: 0x27E54F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC15hide3dBuildingsyyF', symObjAddr: 0x118, symBinAddr: 0x1D090C, symSize: 0xE8 } + - { offset: 0x27E647, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC13drawFavorites2on016includingOutdoorH0ySay7Penguin5FloorCSgG_SbtF', symObjAddr: 0x200, symBinAddr: 0x1D09F4, symSize: 0x550 } + - { offset: 0x27F2DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC12addFavoritesyySayAA8FavoriteCGF', symObjAddr: 0x750, symBinAddr: 0x1D0F44, symSize: 0x474 } + - { offset: 0x27F625, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC14downloadModelsyyF', symObjAddr: 0xBC4, symBinAddr: 0x1D13B8, symSize: 0x140 } + - { offset: 0x27FE16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC14add3dBuildings3forySay7Penguin0D7PolygonVG_tF', symObjAddr: 0x2E20, symBinAddr: 0x1D3614, symSize: 0xF90 } + - { offset: 0x280E44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerCMa', symObjAddr: 0x9878, symBinAddr: 0x1DA06C, symSize: 0x20 } + - { offset: 0x280E58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC8addModel3fory7Penguin0D7PolygonV_tF', symObjAddr: 0x9898, symBinAddr: 0x1DA08C, symSize: 0x19C } + - { offset: 0x280F27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC17downloadCompleted3foryAA16FileDownloadData_p_tF', symObjAddr: 0x9A34, symBinAddr: 0x1DA228, symSize: 0x19C } + - { offset: 0x280FFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerCAA27FileDownloadProcessProtocolA2aDP17downloadCompleted3foryAA0gH4Data_p_tFTW', symObjAddr: 0x9BD0, symBinAddr: 0x1DA3C4, symSize: 0x4 } + - { offset: 0x281084, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9loadImage3for10completion13reloadsSourcey7Penguin0D7PolygonV_yycSgSbtFySo7UIImageCSgcfU_TA', symObjAddr: 0xA964, symBinAddr: 0x1DB0B8, symSize: 0x5C } + - { offset: 0x281098, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xA9F8, symBinAddr: 0x1DB13C, symSize: 0x10 } + - { offset: 0x2810AC, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xAA08, symBinAddr: 0x1DB14C, symSize: 0x8 } + - { offset: 0x2810C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC013shouldDisplayD5OnMap3poiSb7Penguin0D7PolygonV_tFSbyKXEfu0_SbAA5PlaceCXEfU_TA', symObjAddr: 0xACE8, symBinAddr: 0x1DB2D4, symSize: 0x1C } + - { offset: 0x281CF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC15drawAllFeatures3for016includingOutdoorI0ySay7Penguin5FloorCG_SbtF', symObjAddr: 0xD04, symBinAddr: 0x1D14F8, symSize: 0xBF8 } + - { offset: 0x2829B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC14removeFeatures3forySay7Penguin5FloorCG_tF', symObjAddr: 0x18FC, symBinAddr: 0x1D20F0, symSize: 0x964 } + - { offset: 0x283572, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC013shouldDisplayD5OnMap3poiSb7Penguin0D7PolygonV_tF', symObjAddr: 0x2260, symBinAddr: 0x1D2A54, symSize: 0x13C } + - { offset: 0x2835F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC013shouldDisplayD5OnMap3poiSb7Penguin0D7PolygonV_tFSbyKXEfu0_SbAA5PlaceCXEfU_', symObjAddr: 0x239C, symBinAddr: 0x1D2B90, symSize: 0x164 } + - { offset: 0x28370B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC19drawOutdoorFeaturesyyF', symObjAddr: 0x2500, symBinAddr: 0x1D2CF4, symSize: 0x920 } + - { offset: 0x283EBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC03addD0yy7Penguin0D7PolygonVF', symObjAddr: 0x3DB0, symBinAddr: 0x1D45A4, symSize: 0x3E4 } + - { offset: 0x2840B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC06removeD0yy7Penguin0D7PolygonVF', symObjAddr: 0x4194, symBinAddr: 0x1D4988, symSize: 0x400 } + - { offset: 0x2843DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9drawNodes2onySay7Penguin5FloorCG_tF', symObjAddr: 0x4594, symBinAddr: 0x1D4D88, symSize: 0x1A68 } + - { offset: 0x28575F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC21drawDestinationSymbol3for2atyAA5PlaceCSg_So22CLLocationCoordinate2DVSgtF', symObjAddr: 0x5FFC, symBinAddr: 0x1D67F0, symSize: 0x9F4 } + - { offset: 0x285B79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC21drawDestinationSymbol3for2atyAA5PlaceCSg_So22CLLocationCoordinate2DVSgtFySo7UIImageCSgcfU1_', symObjAddr: 0x69F0, symBinAddr: 0x1D71E4, symSize: 0xD18 } + - { offset: 0x2861C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC16updateSymbolText3fory7Penguin0D7PolygonV_tF', symObjAddr: 0x7708, symBinAddr: 0x1D7EFC, symSize: 0x560 } + - { offset: 0x286662, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC06updateD6Source33_085DD519451CE0A7AAD2CF2829398ED6LL10isFavorite3poiySb_7Penguin0D7PolygonVtF', symObjAddr: 0x7C68, symBinAddr: 0x1D845C, symSize: 0x184 } + - { offset: 0x28674A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9loadImage3for10completion13reloadsSourcey7Penguin0D7PolygonV_yycSgSbtF', symObjAddr: 0x7DEC, symBinAddr: 0x1D85E0, symSize: 0xB68 } + - { offset: 0x286ACF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9loadImage3for10completion13reloadsSourcey7Penguin0D7PolygonV_yycSgSbtFySo7UIImageCSgcfU_', symObjAddr: 0x8954, symBinAddr: 0x1D9148, symSize: 0x30C } + - { offset: 0x286B4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9loadImage3for10completion13reloadsSourcey7Penguin0D7PolygonV_yycSgSbtFySo7UIImageCSgcfU_yyScMYccfU_', symObjAddr: 0x8C60, symBinAddr: 0x1D9454, symSize: 0x358 } + - { offset: 0x286E7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC8setImage5image10identifier5poiId13reloadsSourceySo7UIImageC_SSSiSbtFyyYbcfU_', symObjAddr: 0x8FB8, symBinAddr: 0x1D97AC, symSize: 0x2B8 } + - { offset: 0x286F36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC8setImage5image10identifier5poiId13reloadsSourceySo7UIImageC_SSSiSbtFyyYbcfU_yyScMYccfU_', symObjAddr: 0x9270, symBinAddr: 0x1D9A64, symSize: 0x308 } + - { offset: 0x2871EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC6filter11filteredIdsySaySSG_tF', symObjAddr: 0x9578, symBinAddr: 0x1D9D6C, symSize: 0x1A0 } + - { offset: 0x287245, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC11clearFilteryyF', symObjAddr: 0x9718, symBinAddr: 0x1D9F0C, symSize: 0x12C } + - { offset: 0x28727F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerCfD', symObjAddr: 0x9844, symBinAddr: 0x1DA038, symSize: 0x34 } + - { offset: 0x2872B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC11getSourceId3forSS7Penguin0D7PolygonV_tFTf4nd_n', symObjAddr: 0xA188, symBinAddr: 0x1DA944, symSize: 0xA4 } + - { offset: 0x2872DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC8renderer7mapModeAC17PenguinINRenderer10PIRendererCSg_AA8MapStateOtcfcTf4gnn_n', symObjAddr: 0xA22C, symBinAddr: 0x1DA9E8, symSize: 0x1B0 } + - { offset: 0x287412, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC14downloadImages3forySay7Penguin0D7PolygonVG_tFTf4nd_n', symObjAddr: 0xA3DC, symBinAddr: 0x1DAB98, symSize: 0x490 } + - { offset: 0x287D03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LanguageManagerC08selectedD033_74F133CCB03BCF72AC7567C3E94296E7LLAA03AppD0OSgvpZ', symObjAddr: 0x208, symBinAddr: 0x37EA58, symSize: 0x0 } + - { offset: 0x287DA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LanguageManagerCMa', symObjAddr: 0x10, symBinAddr: 0x1DB31C, symSize: 0x20 } + - { offset: 0x287EB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LanguageManagerC07defaultD033_74F133CCB03BCF72AC7567C3E94296E7LLAA03AppD0OvgZTf4d_n', symObjAddr: 0x50, symBinAddr: 0x1DB33C, symSize: 0x174 } + - { offset: 0x288383, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1DB4B0, symSize: 0x10 } + - { offset: 0x288695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewCfETo', symObjAddr: 0xA28, symBinAddr: 0x1DBED8, symSize: 0x7C } + - { offset: 0x2886C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewCMa', symObjAddr: 0xAA4, symBinAddr: 0x1DBF54, symSize: 0x20 } + - { offset: 0x2886D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10commonInit33_A8C7BD0ECF30E7FBA1FEB7676CEE783ELLyyFyycfU_TA', symObjAddr: 0xBB4, symBinAddr: 0x1DBF98, symSize: 0x8 } + - { offset: 0x2887DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1DB4B0, symSize: 0x10 } + - { offset: 0x2887F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1DB4B0, symSize: 0x10 } + - { offset: 0x28883A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC07contentF0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1DB4C0, symSize: 0x34 } + - { offset: 0x288889, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC06selectD6ButtonAA06HapticF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1DB4F4, symSize: 0x10 } + - { offset: 0x2888A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC06selectD6ButtonAA06HapticF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1DB4F4, symSize: 0x10 } + - { offset: 0x2888E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC06selectD6ButtonAA06HapticF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1DB504, symSize: 0x34 } + - { offset: 0x288930, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1DB538, symSize: 0x10 } + - { offset: 0x288948, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1DB538, symSize: 0x10 } + - { offset: 0x288988, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x1DB548, symSize: 0x34 } + - { offset: 0x2889D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x1DB57C, symSize: 0x10 } + - { offset: 0x2889EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x1DB57C, symSize: 0x10 } + - { offset: 0x288A2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x1DB58C, symSize: 0x34 } + - { offset: 0x288A79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC9dateLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x1DB5C0, symSize: 0x10 } + - { offset: 0x288A91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC9dateLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x1DB5C0, symSize: 0x10 } + - { offset: 0x288ACC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC9dateLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x1DB5D0, symSize: 0x34 } + - { offset: 0x288B07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x154, symBinAddr: 0x1DB604, symSize: 0xD0 } + - { offset: 0x288B3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x224, symBinAddr: 0x1DB6D4, symSize: 0x20 } + - { offset: 0x288B9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x244, symBinAddr: 0x1DB6F4, symSize: 0xC0 } + - { offset: 0x288BD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x304, symBinAddr: 0x1DB7B4, symSize: 0x28 } + - { offset: 0x288C48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10commonInit33_A8C7BD0ECF30E7FBA1FEB7676CEE783ELLyyF', symObjAddr: 0x32C, symBinAddr: 0x1DB7DC, symSize: 0x3E8 } + - { offset: 0x288DF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10commonInit33_A8C7BD0ECF30E7FBA1FEB7676CEE783ELLyyFyycfU_', symObjAddr: 0x714, symBinAddr: 0x1DBBC4, symSize: 0x88 } + - { offset: 0x288EA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC06updateD4InfoyyF', symObjAddr: 0x79C, symBinAddr: 0x1DBC4C, symSize: 0x25C } + - { offset: 0x288FB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewCfD', symObjAddr: 0x9F8, symBinAddr: 0x1DBEA8, symSize: 0x30 } + - { offset: 0x28982E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellCfETo', symObjAddr: 0x254C, symBinAddr: 0x1DE4EC, symSize: 0x68 } + - { offset: 0x28985D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellCMa', symObjAddr: 0x25B4, symBinAddr: 0x1DE554, symSize: 0x20 } + - { offset: 0x289871, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC10fetchImage33_7EC171285E5253B799C832B9B77543BELL3foryAA5PlaceCSg_tFySo7UIImageCSgcfU0_TA', symObjAddr: 0x25F8, symBinAddr: 0x1DE598, symSize: 0x18 } + - { offset: 0x289B4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC4iconSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1DBFA0, symSize: 0x10 } + - { offset: 0x289B64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC4iconSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1DBFA0, symSize: 0x10 } + - { offset: 0x289BAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC4iconSo11UIImageViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1DBFB0, symSize: 0x34 } + - { offset: 0x289BF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5labelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1DBFE4, symSize: 0x10 } + - { offset: 0x289C11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5labelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1DBFE4, symSize: 0x10 } + - { offset: 0x289C51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5labelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1DBFF4, symSize: 0x34 } + - { offset: 0x289CA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC13entranceLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1DC028, symSize: 0x10 } + - { offset: 0x289CB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC13entranceLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1DC028, symSize: 0x10 } + - { offset: 0x289CF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC13entranceLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x1DC038, symSize: 0x34 } + - { offset: 0x289D2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC9starBadgeSo11UIImageViewCSgvg', symObjAddr: 0xCC, symBinAddr: 0x1DC06C, symSize: 0x6C } + - { offset: 0x289D52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC9starBadgeSo11UIImageViewCSgvgAGyXEfU_', symObjAddr: 0x138, symBinAddr: 0x1DC0D8, symSize: 0x488 } + - { offset: 0x289EEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC12awakeFromNibyyFTo', symObjAddr: 0x5C0, symBinAddr: 0x1DC560, symSize: 0x7C } + - { offset: 0x289F2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC14layoutSubviewsyyFTo', symObjAddr: 0x63C, symBinAddr: 0x1DC5DC, symSize: 0x3C } + - { offset: 0x289FC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC9configure3for2at10showLetteryAA5PlaceCSg_SiSbtF', symObjAddr: 0x678, symBinAddr: 0x1DC618, symSize: 0x4F0 } + - { offset: 0x28A22B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC09configureD033_7EC171285E5253B799C832B9B77543BELL_10showLetteryAA5PlaceCSg_SbtF', symObjAddr: 0xB68, symBinAddr: 0x1DCB08, symSize: 0x4D0 } + - { offset: 0x28A44E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC09configureD6Letter33_7EC171285E5253B799C832B9B77543BELLyyF', symObjAddr: 0x1038, symBinAddr: 0x1DCFD8, symSize: 0x1D4 } + - { offset: 0x28A628, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC13configureIcon33_7EC171285E5253B799C832B9B77543BELL3foryAA5PlaceCSg_tF', symObjAddr: 0x120C, symBinAddr: 0x1DD1AC, symSize: 0x470 } + - { offset: 0x28A812, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC10fetchImage33_7EC171285E5253B799C832B9B77543BELL3foryAA5PlaceCSg_tF', symObjAddr: 0x167C, symBinAddr: 0x1DD61C, symSize: 0xA00 } + - { offset: 0x28AC06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC15prepareForReuseyyF', symObjAddr: 0x21C4, symBinAddr: 0x1DE164, symSize: 0x138 } + - { offset: 0x28AC8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC15prepareForReuseyyFTo', symObjAddr: 0x22FC, symBinAddr: 0x1DE29C, symSize: 0x28 } + - { offset: 0x28AC9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x2324, symBinAddr: 0x1DE2C4, symSize: 0xD0 } + - { offset: 0x28ACDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x23F4, symBinAddr: 0x1DE394, symSize: 0x48 } + - { offset: 0x28AD17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x243C, symBinAddr: 0x1DE3DC, symSize: 0xB8 } + - { offset: 0x28AD4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x24F4, symBinAddr: 0x1DE494, symSize: 0x28 } + - { offset: 0x28AD5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellCfD', symObjAddr: 0x251C, symBinAddr: 0x1DE4BC, symSize: 0x30 } + - { offset: 0x28AD9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC012getLetterForD033_7EC171285E5253B799C832B9B77543BELL2atSo7UIImageCSgSi_tFTf4nd_n', symObjAddr: 0x2684, symBinAddr: 0x1DE5B4, symSize: 0x304 } + - { offset: 0x28AEE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC9configure5title10stopsCount5imageySS_SiSo7UIImageCtFTf4nddn_n', symObjAddr: 0x29E8, symBinAddr: 0x1DE8B8, symSize: 0x3B4 } + - { offset: 0x28B439, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE9hexStringSSvg', symObjAddr: 0x0, symBinAddr: 0x1DEC78, symSize: 0x280 } + - { offset: 0x28B5BA, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE9hexStringSSvg', symObjAddr: 0x0, symBinAddr: 0x1DEC78, symSize: 0x280 } + - { offset: 0x28BA3F, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE9hexStringABSSSg_tcfC', symObjAddr: 0x280, symBinAddr: 0x1DEEF8, symSize: 0x46C } + - { offset: 0x28BCBD, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE6darker2byAB12CoreGraphics7CGFloatV_tF', symObjAddr: 0x72C, symBinAddr: 0x1DF364, symSize: 0x104 } + - { offset: 0x28BDD4, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE15opaqueHexStringSSvg', symObjAddr: 0x87C, symBinAddr: 0x1DF468, symSize: 0x3F8 } + - { offset: 0x28C580, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC37activityViewControllerPlaceholderItemyypSo010UIActivitygH0CFTo', symObjAddr: 0x0, symBinAddr: 0x1DF860, symSize: 0x58 } + - { offset: 0x28C6D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentCfETo', symObjAddr: 0x2F0, symBinAddr: 0x1DFB1C, symSize: 0x64 } + - { offset: 0x28C705, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentCMa', symObjAddr: 0x354, symBinAddr: 0x1DFB80, symSize: 0x20 } + - { offset: 0x28C7AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC37activityViewControllerPlaceholderItemyypSo010UIActivitygH0CFTo', symObjAddr: 0x0, symBinAddr: 0x1DF860, symSize: 0x58 } + - { offset: 0x28C7C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC37activityViewControllerPlaceholderItemyypSo010UIActivitygH0CFTo', symObjAddr: 0x0, symBinAddr: 0x1DF860, symSize: 0x58 } + - { offset: 0x28C802, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC22activityViewController_19itemForActivityTypeypSgSo010UIActivitygH0C_So0mL0aSgtF', symObjAddr: 0x58, symBinAddr: 0x1DF8B8, symSize: 0xD4 } + - { offset: 0x28C8FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC22activityViewController_19itemForActivityTypeypSgSo010UIActivitygH0C_So0mL0aSgtFTo', symObjAddr: 0x12C, symBinAddr: 0x1DF98C, symSize: 0x10C } + - { offset: 0x28C917, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC34activityViewControllerLinkMetadataySo06LPLinkJ0CSgSo010UIActivitygH0CFTo', symObjAddr: 0x238, symBinAddr: 0x1DFA98, symSize: 0x58 } + - { offset: 0x28C955, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentCACycfcTo', symObjAddr: 0x290, symBinAddr: 0x1DFAF0, symSize: 0x2C } + - { offset: 0x28CAA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC34activityViewControllerLinkMetadataySo06LPLinkJ0CSgSo010UIActivitygH0CFTf4dn_n', symObjAddr: 0x374, symBinAddr: 0x1DFBA0, symSize: 0x198 } + - { offset: 0x28D075, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellCfETo', symObjAddr: 0x454, symBinAddr: 0x1E018C, symSize: 0x48 } + - { offset: 0x28D0A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellCMa', symObjAddr: 0x49C, symBinAddr: 0x1E01D4, symSize: 0x20 } + - { offset: 0x28D0B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12awakeFromNibyyFyycfU_TA', symObjAddr: 0x4E0, symBinAddr: 0x1E0218, symSize: 0x20 } + - { offset: 0x28D0CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12awakeFromNibyyFyycfU0_TA', symObjAddr: 0x510, symBinAddr: 0x1E0238, symSize: 0x20 } + - { offset: 0x28D16E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC16directionsButtonAA10HapticViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1DFD38, symSize: 0x10 } + - { offset: 0x28D186, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC16directionsButtonAA10HapticViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1DFD38, symSize: 0x10 } + - { offset: 0x28D1CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC16directionsButtonAA10HapticViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1DFD48, symSize: 0x34 } + - { offset: 0x28D21B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12venuesButtonAA10HapticViewCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1DFD7C, symSize: 0x10 } + - { offset: 0x28D233, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12venuesButtonAA10HapticViewCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1DFD7C, symSize: 0x10 } + - { offset: 0x28D26E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12venuesButtonAA10HapticViewCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1DFD8C, symSize: 0x34 } + - { offset: 0x28D2D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12awakeFromNibyyF', symObjAddr: 0x88, symBinAddr: 0x1DFDC0, symSize: 0x148 } + - { offset: 0x28D38A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x270, symBinAddr: 0x1DFFA8, symSize: 0x28 } + - { offset: 0x28D3F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x298, symBinAddr: 0x1DFFD0, symSize: 0xD0 } + - { offset: 0x28D459, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x368, symBinAddr: 0x1E00A0, symSize: 0x94 } + - { offset: 0x28D48C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x3FC, symBinAddr: 0x1E0134, symSize: 0x28 } + - { offset: 0x28D4A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellCfD', symObjAddr: 0x424, symBinAddr: 0x1E015C, symSize: 0x30 } + - { offset: 0x28D82F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC9containerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1E0258, symSize: 0x10 } + - { offset: 0x28DE58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellCfETo', symObjAddr: 0x1A78, symBinAddr: 0x1E1CD0, symSize: 0xB0 } + - { offset: 0x28DE87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellCMa', symObjAddr: 0x1B28, symBinAddr: 0x1E1D80, symSize: 0x20 } + - { offset: 0x28DEBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC27didTapStartNavigationButtonyySo8UIButtonCFyycACcfu1_yycfu2_TA', symObjAddr: 0x2520, symBinAddr: 0x1E26D4, symSize: 0x20 } + - { offset: 0x28E144, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC9containerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1E0258, symSize: 0x10 } + - { offset: 0x28E15C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC9containerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1E0258, symSize: 0x10 } + - { offset: 0x28E1A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC9containerSo6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1E0268, symSize: 0x34 } + - { offset: 0x28E1F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1E029C, symSize: 0x10 } + - { offset: 0x28E209, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1E029C, symSize: 0x10 } + - { offset: 0x28E249, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC11lengthLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1E02AC, symSize: 0x34 } + - { offset: 0x28E298, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1E02E0, symSize: 0x10 } + - { offset: 0x28E2B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1E02E0, symSize: 0x10 } + - { offset: 0x28E2EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC13durationLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x1E02F0, symSize: 0x34 } + - { offset: 0x28E33A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC16arrivalTimeLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x1E0324, symSize: 0x10 } + - { offset: 0x28E352, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC16arrivalTimeLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x1E0324, symSize: 0x10 } + - { offset: 0x28E38D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC16arrivalTimeLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x1E0334, symSize: 0x34 } + - { offset: 0x28E3DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x1E0368, symSize: 0x10 } + - { offset: 0x28E3F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x1E0368, symSize: 0x10 } + - { offset: 0x28E42F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x1E0378, symSize: 0x34 } + - { offset: 0x28E47E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC21startNavigationButtonAA07LoadingH0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x1E03AC, symSize: 0x10 } + - { offset: 0x28E496, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC21startNavigationButtonAA07LoadingH0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x1E03AC, symSize: 0x10 } + - { offset: 0x28E4D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC21startNavigationButtonAA07LoadingH0CSgvsTo', symObjAddr: 0x164, symBinAddr: 0x1E03BC, symSize: 0x34 } + - { offset: 0x28E525, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC12awakeFromNibyyFTo', symObjAddr: 0x198, symBinAddr: 0x1E03F0, symSize: 0x68 } + - { offset: 0x28E7C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC6config4with6length8durationyAA5PlaceCSg_S2dtF', symObjAddr: 0x200, symBinAddr: 0x1E0458, symSize: 0xABC } + - { offset: 0x28EF8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC15updateSelection10isSelectedySb_tF', symObjAddr: 0xCBC, symBinAddr: 0x1E0F14, symSize: 0x6A4 } + - { offset: 0x28F356, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC27didTapStartNavigationButtonyySo8UIButtonCFTo', symObjAddr: 0x1360, symBinAddr: 0x1E15B8, symSize: 0x4C } + - { offset: 0x28F3A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC15startNavigationyyF', symObjAddr: 0x13AC, symBinAddr: 0x1E1604, symSize: 0x2A0 } + - { offset: 0x28F65B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC10showLoaderyyF', symObjAddr: 0x164C, symBinAddr: 0x1E18A4, symSize: 0x130 } + - { offset: 0x28F738, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC15prepareForReuseyyFTo', symObjAddr: 0x177C, symBinAddr: 0x1E19D4, symSize: 0x84 } + - { offset: 0x28F77A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x1800, symBinAddr: 0x1E1A58, symSize: 0xF8 } + - { offset: 0x28F7BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x18F8, symBinAddr: 0x1E1B50, symSize: 0x48 } + - { offset: 0x28F7F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1940, symBinAddr: 0x1E1B98, symSize: 0xE0 } + - { offset: 0x28F826, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1A20, symBinAddr: 0x1E1C78, symSize: 0x28 } + - { offset: 0x28F83A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellCfD', symObjAddr: 0x1A48, symBinAddr: 0x1E1CA0, symSize: 0x30 } + - { offset: 0x28F903, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC27didTapStartNavigationButtonyySo8UIButtonCFTf4dn_n', symObjAddr: 0x1BEC, symBinAddr: 0x1E1DA0, symSize: 0x910 } + - { offset: 0x29032F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorO6create4from7currentAeA3DOMOADO_AKtFZ', symObjAddr: 0x8, symBinAddr: 0x1E26F4, symSize: 0x11C } + - { offset: 0x290445, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorO6create4from7currentAeA3DOMOADO_AKtFZ', symObjAddr: 0x8, symBinAddr: 0x1E26F4, symSize: 0x11C } + - { offset: 0x29075E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LuminanceColorConverterVMa', symObjAddr: 0x428, symBinAddr: 0x1E2A4C, symSize: 0x10 } + - { offset: 0x290772, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21DefaultColorConverterVMa', symObjAddr: 0x438, symBinAddr: 0x1E2A5C, symSize: 0x10 } + - { offset: 0x290786, size: 0x8, addend: 0x0, symName: ___swift_memcpy17_4, symObjAddr: 0x448, symBinAddr: 0x1E2A6C, symSize: 0x14 } + - { offset: 0x29079A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwet', symObjAddr: 0x460, symBinAddr: 0x1E2A80, symSize: 0x54 } + - { offset: 0x2907AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwst', symObjAddr: 0x4B4, symBinAddr: 0x1E2AD4, symSize: 0x54 } + - { offset: 0x2907C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwug', symObjAddr: 0x508, symBinAddr: 0x1E2B28, symSize: 0x20 } + - { offset: 0x2907D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwup', symObjAddr: 0x528, symBinAddr: 0x1E2B48, symSize: 0x10 } + - { offset: 0x2907EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwui', symObjAddr: 0x538, symBinAddr: 0x1E2B58, symSize: 0x2C } + - { offset: 0x2907FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOMa', symObjAddr: 0x564, symBinAddr: 0x1E2B84, symSize: 0x10 } + - { offset: 0x290812, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSHAASQWb', symObjAddr: 0x574, symBinAddr: 0x1E2B94, symSize: 0x4 } + - { offset: 0x290826, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOAESQAAWl', symObjAddr: 0x578, symBinAddr: 0x1E2B98, symSize: 0x40 } + - { offset: 0x29083A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO10ColorSpaceOMa', symObjAddr: 0x7F4, symBinAddr: 0x1E2CB0, symSize: 0x10 } + - { offset: 0x29084E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO10ColorSpaceOSHAASQWb', symObjAddr: 0x804, symBinAddr: 0x1E2CC0, symSize: 0x4 } + - { offset: 0x290862, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO10ColorSpaceOAESQAAWl', symObjAddr: 0x808, symBinAddr: 0x1E2CC4, symSize: 0x40 } + - { offset: 0x2908C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x27C, symBinAddr: 0x1E2968, symSize: 0x54 } + - { offset: 0x29093F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorO4hash4intoys6HasherVz_tF', symObjAddr: 0x124, symBinAddr: 0x1E2810, symSize: 0xF4 } + - { offset: 0x290B7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSHAASH9hashValueSivgTW', symObjAddr: 0x218, symBinAddr: 0x1E2904, symSize: 0x58 } + - { offset: 0x290BF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x270, symBinAddr: 0x1E295C, symSize: 0xC } + - { offset: 0x290C26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x2D0, symBinAddr: 0x1E29BC, symSize: 0x1C } + - { offset: 0x290CD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LuminanceColorConverterVAA0eF0A2aDP06createE04fromAA9LayerTreeO0E0OAK_tFTW', symObjAddr: 0x3B4, symBinAddr: 0x1E29D8, symSize: 0x74 } + - { offset: 0x290D5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x5B8, symBinAddr: 0x1E2BD8, symSize: 0xD8 } + - { offset: 0x291240, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeC8PenNavUIE14escalatorEdgesSayAA4EdgeCGvg', symObjAddr: 0x0, symBinAddr: 0x1E2D04, symSize: 0x1D4 } + - { offset: 0x29148C, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeC8PenNavUIE14escalatorEdgesSayAA4EdgeCGvgSbAGXEfU_', symObjAddr: 0x1D4, symBinAddr: 0x1E2ED8, symSize: 0x2D4 } + - { offset: 0x291562, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeCAA17NodeRepresentable8PenNavUIAaDP13isUpEscalatorSbvgTW', symObjAddr: 0xCE8, symBinAddr: 0x1E345C, symSize: 0x24 } + - { offset: 0x29157E, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeCAA17NodeRepresentable8PenNavUIAaDP15isDownEscalatorSbvgTW', symObjAddr: 0xD0C, symBinAddr: 0x1E3480, symSize: 0x24 } + - { offset: 0x2916C2, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeCAA17NodeRepresentable8PenNavUIAaDP8nodeTypeAA0cI0OSgvgTW', symObjAddr: 0xCC8, symBinAddr: 0x1E343C, symSize: 0x20 } + - { offset: 0x291D7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ModalTransitionCMa', symObjAddr: 0x9C, symBinAddr: 0x1E3540, symSize: 0x20 } + - { offset: 0x291DFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerCMa', symObjAddr: 0x694, symBinAddr: 0x1E3B38, symSize: 0x20 } + - { offset: 0x291E12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalPresentTransitionCMa', symObjAddr: 0x6F0, symBinAddr: 0x1E3B94, symSize: 0x20 } + - { offset: 0x291E26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalDismissTransitionCMa', symObjAddr: 0x980, symBinAddr: 0x1E3DF4, symSize: 0x20 } + - { offset: 0x2920E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalDismissTransitionC21interruptibleAnimator5usingSo25UIViewImplicitlyAnimating_pSo0J30ControllerContextTransitioning_p_tFyycfU_TA', symObjAddr: 0x1558, symBinAddr: 0x1E49CC, symSize: 0x18 } + - { offset: 0x29226B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ModalTransitionC19animationController12forPresented10presenting6sourceSo06UIViewG21AnimatedTransitioning_pSgSo0lG0C_A2KtFTo', symObjAddr: 0x0, symBinAddr: 0x1E34A4, symSize: 0x24 } + - { offset: 0x2922BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ModalTransitionC19animationController12forDismissedSo06UIViewG21AnimatedTransitioning_pSgSo0jG0C_tFTo', symObjAddr: 0x24, symBinAddr: 0x1E34C8, symSize: 0x24 } + - { offset: 0x292336, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ModalTransitionC22presentationController12forPresented10presenting6sourceSo014UIPresentationG0CSgSo06UIViewG0C_ALSgALtFTo', symObjAddr: 0x48, symBinAddr: 0x1E34EC, symSize: 0x3C } + - { offset: 0x2923A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC31presentationTransitionWillBeginyyFTo', symObjAddr: 0xBC, symBinAddr: 0x1E3560, symSize: 0x28 } + - { offset: 0x2923EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC28presentationTransitionDidEndyySbFTo', symObjAddr: 0xE4, symBinAddr: 0x1E3588, symSize: 0x28 } + - { offset: 0x29241F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC25dismissalTransitionDidEndyySbFTo', symObjAddr: 0x10C, symBinAddr: 0x1E35B0, symSize: 0x28 } + - { offset: 0x2924D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC31containerViewWillLayoutSubviewsyyF', symObjAddr: 0x134, symBinAddr: 0x1E35D8, symSize: 0x2CC } + - { offset: 0x2925B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC31containerViewWillLayoutSubviewsyyFTo', symObjAddr: 0x400, symBinAddr: 0x1E38A4, symSize: 0x28 } + - { offset: 0x2925DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC14handleBackdrop10tapGestureySo05UITapI10RecognizerC_tFTo', symObjAddr: 0x428, symBinAddr: 0x1E38CC, symSize: 0x58 } + - { offset: 0x292607, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC16addFloatingPanel33_1A977BFC7DFC5A82775C8BDEF1543E18LLyyF', symObjAddr: 0x480, symBinAddr: 0x1E3924, symSize: 0x1B4 } + - { offset: 0x2926B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC013presentedViewE010presentingACSo06UIViewE0C_AGSgtcfcTo', symObjAddr: 0x634, symBinAddr: 0x1E3AD8, symSize: 0x54 } + - { offset: 0x29274A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC28presentationTransitionDidEndyySbFTf4dn_n', symObjAddr: 0x9A0, symBinAddr: 0x1E3E14, symSize: 0x110 } + - { offset: 0x2928B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC25dismissalTransitionDidEndyySbFTf4dn_n', symObjAddr: 0xAB0, symBinAddr: 0x1E3F24, symSize: 0x198 } + - { offset: 0x292AD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalPresentTransitionC18transitionDuration5usingSdSo36UIViewControllerContextTransitioning_pSg_tFTf4nd_n', symObjAddr: 0xC48, symBinAddr: 0x1E40BC, symSize: 0x24C } + - { offset: 0x292D08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalPresentTransitionC21interruptibleAnimator5usingSo25UIViewImplicitlyAnimating_pSo0J30ControllerContextTransitioning_p_tFTf4nd_n', symObjAddr: 0xE94, symBinAddr: 0x1E4308, symSize: 0x284 } + - { offset: 0x292F6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalDismissTransitionC18transitionDuration5usingSdSo36UIViewControllerContextTransitioning_pSg_tFTf4nd_n', symObjAddr: 0x1118, symBinAddr: 0x1E458C, symSize: 0x1F4 } + - { offset: 0x2930E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalDismissTransitionC21interruptibleAnimator5usingSo25UIViewImplicitlyAnimating_pSo0J30ControllerContextTransitioning_p_tFTf4nd_n', symObjAddr: 0x130C, symBinAddr: 0x1E4780, symSize: 0x224 } + - { offset: 0x2936EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC12awakeFromNibyyFTo', symObjAddr: 0x0, symBinAddr: 0x1E4A18, symSize: 0x68 } + - { offset: 0x293803, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellCMa', symObjAddr: 0x1F0, symBinAddr: 0x1E4C08, symSize: 0x20 } + - { offset: 0x293837, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC12awakeFromNibyyFTo', symObjAddr: 0x0, symBinAddr: 0x1E4A18, symSize: 0x68 } + - { offset: 0x2938C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0x68, symBinAddr: 0x1E4A80, symSize: 0x54 } + - { offset: 0x293953, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xBC, symBinAddr: 0x1E4AD4, symSize: 0x88 } + - { offset: 0x2939D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x144, symBinAddr: 0x1E4B5C, symSize: 0x7C } + - { offset: 0x293A08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellCfD', symObjAddr: 0x1C0, symBinAddr: 0x1E4BD8, symSize: 0x30 } + - { offset: 0x293DB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC11placeholderSo7UIImageCSgvpZ', symObjAddr: 0xF570, symBinAddr: 0x397280, symSize: 0x0 } + - { offset: 0x293DC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC11placeholder_WZ', symObjAddr: 0x0, symBinAddr: 0x1E4C28, symSize: 0x1C } + - { offset: 0x293FCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewCfETo', symObjAddr: 0xEFC, symBinAddr: 0x1E5B24, symSize: 0x4 } + - { offset: 0x293FF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewCMa', symObjAddr: 0xF00, symBinAddr: 0x1E5B28, symSize: 0x20 } + - { offset: 0x2941ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewCfE', symObjAddr: 0x1620, symBinAddr: 0x1E6248, symSize: 0x44 } + - { offset: 0x29421A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewCfETo', symObjAddr: 0x16A0, symBinAddr: 0x1E6298, symSize: 0x50 } + - { offset: 0x294249, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewCMa', symObjAddr: 0x16F0, symBinAddr: 0x1E62E8, symSize: 0x20 } + - { offset: 0x29425D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tFyyYbcfU_TA', symObjAddr: 0x19C8, symBinAddr: 0x1E6580, symSize: 0x18 } + - { offset: 0x294271, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x19E0, symBinAddr: 0x1E6598, symSize: 0x10 } + - { offset: 0x294285, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x19F0, symBinAddr: 0x1E65A8, symSize: 0x8 } + - { offset: 0x294299, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tFyyYbcfU_ytSgyScMYcXEfU_TA', symObjAddr: 0x1B48, symBinAddr: 0x1E6600, symSize: 0x18 } + - { offset: 0x294724, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC11placeholderSo7UIImageCSgvpZfiAGyXEfU_', symObjAddr: 0x1C, symBinAddr: 0x1E4C44, symSize: 0x6E8 } + - { offset: 0x2949A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x704, symBinAddr: 0x1E532C, symSize: 0x80 } + - { offset: 0x294A1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tF', symObjAddr: 0x784, symBinAddr: 0x1E53AC, symSize: 0x314 } + - { offset: 0x294AA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tFyyYbcfU_', symObjAddr: 0xA98, symBinAddr: 0x1E56C0, symSize: 0x378 } + - { offset: 0x294B58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tFyyYbcfU_ytSgyScMYcXEfU_', symObjAddr: 0xE10, symBinAddr: 0x1E5A38, symSize: 0xB4 } + - { offset: 0x294BDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xEC4, symBinAddr: 0x1E5AEC, symSize: 0x2C } + - { offset: 0x294C3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC10countLabel33_085A561E2153F72061B7D688048F063BLLSo7UILabelCvg', symObjAddr: 0xF20, symBinAddr: 0x1E5B48, symSize: 0x60 } + - { offset: 0x294C7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xF80, symBinAddr: 0x1E5BA8, symSize: 0xE4 } + - { offset: 0x294CB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1064, symBinAddr: 0x1E5C8C, symSize: 0x28 } + - { offset: 0x294D10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC11adjustFrameyyF', symObjAddr: 0x108C, symBinAddr: 0x1E5CB4, symSize: 0xBC } + - { offset: 0x294DDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC4drawyySo6CGRectVFTo', symObjAddr: 0x1148, symBinAddr: 0x1E5D70, symSize: 0xAC } + - { offset: 0x294E07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC18defaultCircleYAxis12CoreGraphics7CGFloatVyF', symObjAddr: 0x11F4, symBinAddr: 0x1E5E1C, symSize: 0x24 } + - { offset: 0x294E2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC18defaultCircleYAxis12CoreGraphics7CGFloatVyF', symObjAddr: 0x11F4, symBinAddr: 0x1E5E1C, symSize: 0x24 } + - { offset: 0x294E4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC18defaultCircleYAxis12CoreGraphics7CGFloatVyF', symObjAddr: 0x11F4, symBinAddr: 0x1E5E1C, symSize: 0x24 } + - { offset: 0x294F04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC14layoutSubviewsyyF', symObjAddr: 0x1218, symBinAddr: 0x1E5E40, symSize: 0x3E0 } + - { offset: 0x295110, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC14layoutSubviewsyyFTo', symObjAddr: 0x15F8, symBinAddr: 0x1E6220, symSize: 0x28 } + - { offset: 0x29529A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC19getPlaceholderImage5place8categorySo7UIImageCSgAA5PlaceCSg_7Penguin11POICategoryVSgtFZTf4nnd_n', symObjAddr: 0x1B60, symBinAddr: 0x1E6618, symSize: 0x50C } + - { offset: 0x295823, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin10PoiPolygonVG_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10gH19VGvpfiSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x130, symBinAddr: 0x1E6C5C, symSize: 0x80 } + - { offset: 0x295AC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellCfETo', symObjAddr: 0x848, symBinAddr: 0x1E7374, symSize: 0x70 } + - { offset: 0x295AF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellCMa', symObjAddr: 0x8B8, symBinAddr: 0x1E73E4, symSize: 0x20 } + - { offset: 0x295B30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0x8D8, symBinAddr: 0x1E7404, symSize: 0x20 } + - { offset: 0x295B50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0x8D8, symBinAddr: 0x1E7404, symSize: 0x20 } + - { offset: 0x295C45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_12cellForRowAtSo07UITablegE0CSo0lG0C_10Foundation9IndexPathVtF', symObjAddr: 0x8F8, symBinAddr: 0x1E7424, symSize: 0x1E4 } + - { offset: 0x295DE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_12cellForRowAtSo07UITablegE0CSo0lG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xADC, symBinAddr: 0x1E7608, symSize: 0xC8 } + - { offset: 0x295E02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xBA4, symBinAddr: 0x1E76D0, symSize: 0x84 } + - { offset: 0x295E1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_24heightForFooterInSection12CoreGraphics7CGFloatVSo07UITableG0C_SitFTo', symObjAddr: 0xC28, symBinAddr: 0x1E7754, symSize: 0xC } + - { offset: 0x295E45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_14didSelectRowAtySo07UITableG0C_10Foundation9IndexPathVtF', symObjAddr: 0xC34, symBinAddr: 0x1E7760, symSize: 0x134 } + - { offset: 0x295EFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_14didSelectRowAtySo07UITableG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xD68, symBinAddr: 0x1E7894, symSize: 0xC0 } + - { offset: 0x295F75, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin10PoiPolygonV_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10fG19VGvpfiSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0xE7C, symBinAddr: 0x1E7954, symSize: 0x108 } + - { offset: 0x2961B0, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin10PoiPolygonV_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10fG19VGvpfiSbAG_AGtXEfU_Tf1nnncn_n', symObjAddr: 0xF84, symBinAddr: 0x1E7A5C, symSize: 0x76C } + - { offset: 0x29660E, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry7Penguin10PoiPolygonVG_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10jK19VGvpfiSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x16F0, symBinAddr: 0x1E81C8, symSize: 0x21C } + - { offset: 0x29674E, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin10PoiPolygonV_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10gH19VGvpfiSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x190C, symBinAddr: 0x1E83E4, symSize: 0x284 } + - { offset: 0x296AD3, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin10PoiPolygonV_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10hI19VGvpfiSbAG_AGtXEfU_Tf1nnnnc_n', symObjAddr: 0x1B90, symBinAddr: 0x1E8668, symSize: 0x540 } + - { offset: 0x296BD6, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin10PoiPolygonVG_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10gH19VGvpfiSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x130, symBinAddr: 0x1E6C5C, symSize: 0x80 } + - { offset: 0x296DCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableViewAA014IntrinsicTableG0CSgvgTo', symObjAddr: 0x1B0, symBinAddr: 0x1E6CDC, symSize: 0x10 } + - { offset: 0x296DE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableViewAA014IntrinsicTableG0CSgvgTo', symObjAddr: 0x1B0, symBinAddr: 0x1E6CDC, symSize: 0x10 } + - { offset: 0x296E22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableViewAA014IntrinsicTableG0CSgvsTo', symObjAddr: 0x1C0, symBinAddr: 0x1E6CEC, symSize: 0x34 } + - { offset: 0x296F33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x1F4, symBinAddr: 0x1E6D20, symSize: 0x10 } + - { offset: 0x296F4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x1F4, symBinAddr: 0x1E6D20, symSize: 0x10 } + - { offset: 0x296F8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC12seeAllButtonSo8UIButtonCSgvsTo', symObjAddr: 0x204, symBinAddr: 0x1E6D30, symSize: 0x34 } + - { offset: 0x296FF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC12awakeFromNibyyF', symObjAddr: 0x238, symBinAddr: 0x1E6D64, symSize: 0x21C } + - { offset: 0x29716E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC12awakeFromNibyyFTo', symObjAddr: 0x454, symBinAddr: 0x1E6F80, symSize: 0x28 } + - { offset: 0x2971AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC04showD0yyFTo', symObjAddr: 0x47C, symBinAddr: 0x1E6FA8, symSize: 0x70 } + - { offset: 0x297265, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x4EC, symBinAddr: 0x1E7018, symSize: 0x170 } + - { offset: 0x297338, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x65C, symBinAddr: 0x1E7188, symSize: 0x48 } + - { offset: 0x297370, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x6A4, symBinAddr: 0x1E71D0, symSize: 0x14C } + - { offset: 0x297435, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x7F0, symBinAddr: 0x1E731C, symSize: 0x28 } + - { offset: 0x297449, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellCfD', symObjAddr: 0x818, symBinAddr: 0x1E7344, symSize: 0x30 } + - { offset: 0x29792E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x8, symBinAddr: 0x1E8BA8, symSize: 0x54 } + - { offset: 0x2979E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x1E8BFC, symSize: 0x1C } + - { offset: 0x2979FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x1E8BFC, symSize: 0x1C } + - { offset: 0x297A13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x1E8BFC, symSize: 0x1C } + - { offset: 0x297A27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x1E8BFC, symSize: 0x1C } + - { offset: 0x297A3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x1E8BFC, symSize: 0x1C } + - { offset: 0x297A64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x78, symBinAddr: 0x1E8C18, symSize: 0x50 } + - { offset: 0x297B06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x1E8, symBinAddr: 0x1E8D70, symSize: 0x28 } + - { offset: 0x297B22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x210, symBinAddr: 0x1E8D98, symSize: 0x28 } + - { offset: 0x297B44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x774, symBinAddr: 0x1E9200, symSize: 0x28 } + - { offset: 0x297B60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x79C, symBinAddr: 0x1E9228, symSize: 0x28 } + - { offset: 0x297D20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseCMa', symObjAddr: 0x25C, symBinAddr: 0x1E8DC0, symSize: 0x20 } + - { offset: 0x297F0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryCMa', symObjAddr: 0x808, symBinAddr: 0x1E9294, symSize: 0x20 } + - { offset: 0x297F23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOAEs0G3KeyAAWl', symObjAddr: 0xF38, symBinAddr: 0x1E98F8, symSize: 0x40 } + - { offset: 0x297F37, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI8CategoryCGMa', symObjAddr: 0xF98, symBinAddr: 0x1E9938, symSize: 0x50 } + - { offset: 0x297F4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOAFs0E3KeyAAWl', symObjAddr: 0xFE8, symBinAddr: 0x1E9988, symSize: 0x40 } + - { offset: 0x297F5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOMa', symObjAddr: 0x1374, symBinAddr: 0x1E9A7C, symSize: 0x10 } + - { offset: 0x297F73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOMa', symObjAddr: 0x1464, symBinAddr: 0x1E9A8C, symSize: 0x10 } + - { offset: 0x297F87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x1474, symBinAddr: 0x1E9A9C, symSize: 0x4 } + - { offset: 0x297F9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x1478, symBinAddr: 0x1E9AA0, symSize: 0x40 } + - { offset: 0x297FAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOSHAASQWb', symObjAddr: 0x14B8, symBinAddr: 0x1E9AE0, symSize: 0x4 } + - { offset: 0x297FC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOAFSQAAWl', symObjAddr: 0x14BC, symBinAddr: 0x1E9AE4, symSize: 0x40 } + - { offset: 0x297FD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x14FC, symBinAddr: 0x1E9B24, symSize: 0x4 } + - { offset: 0x297FEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1500, symBinAddr: 0x1E9B28, symSize: 0x40 } + - { offset: 0x297FFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1540, symBinAddr: 0x1E9B68, symSize: 0x4 } + - { offset: 0x298013, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x1544, symBinAddr: 0x1E9B6C, symSize: 0x40 } + - { offset: 0x298027, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1584, symBinAddr: 0x1E9BAC, symSize: 0x4 } + - { offset: 0x29803B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1588, symBinAddr: 0x1E9BB0, symSize: 0x40 } + - { offset: 0x29804F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x15C8, symBinAddr: 0x1E9BF0, symSize: 0x4 } + - { offset: 0x298063, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x15CC, symBinAddr: 0x1E9BF4, symSize: 0x40 } + - { offset: 0x2980C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSYAASY8rawValuexSg03RawJ0Qz_tcfCTW', symObjAddr: 0xC8, symBinAddr: 0x1E8C68, symSize: 0x64 } + - { offset: 0x298100, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSYAASY8rawValue03RawJ0QzvgTW', symObjAddr: 0x12C, symBinAddr: 0x1E8CCC, symSize: 0x20 } + - { offset: 0x298118, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSYAASY8rawValue03RawJ0QzvgTW', symObjAddr: 0x12C, symBinAddr: 0x1E8CCC, symSize: 0x20 } + - { offset: 0x29812C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSYAASY8rawValue03RawJ0QzvgTW', symObjAddr: 0x12C, symBinAddr: 0x1E8CCC, symSize: 0x20 } + - { offset: 0x298146, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x1E8CEC, symSize: 0x1C } + - { offset: 0x29815E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x1E8CEC, symSize: 0x1C } + - { offset: 0x298172, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x1E8CEC, symSize: 0x1C } + - { offset: 0x298186, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x1E8CEC, symSize: 0x1C } + - { offset: 0x2981AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x168, symBinAddr: 0x1E8D08, symSize: 0x68 } + - { offset: 0x298218, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x27C, symBinAddr: 0x1E8DE0, symSize: 0x128 } + - { offset: 0x298249, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x3A4, symBinAddr: 0x1E8F08, symSize: 0x180 } + - { offset: 0x29827A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x54C, symBinAddr: 0x1E90B0, symSize: 0x20 } + - { offset: 0x2982B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs0E3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x62C, symBinAddr: 0x1E90D0, symSize: 0x10C } + - { offset: 0x2982E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs0E3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x738, symBinAddr: 0x1E91DC, symSize: 0x24 } + - { offset: 0x298323, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryCfD', symObjAddr: 0x7C4, symBinAddr: 0x1E9250, symSize: 0x44 } + - { offset: 0x29835C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC6encode2toys7Encoder_p_tKF', symObjAddr: 0x828, symBinAddr: 0x1E92B4, symSize: 0x2E0 } + - { offset: 0x29838D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC4fromACs7Decoder_p_tKcfc', symObjAddr: 0xB08, symBinAddr: 0x1E9594, symSize: 0x31C } + - { offset: 0x2983BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xEB0, symBinAddr: 0x1E98D8, symSize: 0x20 } + - { offset: 0x2983D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x160C, symBinAddr: 0x1E9C34, symSize: 0x29C } + - { offset: 0x2988B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO8rawValueACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x1E9ED0, symSize: 0x138 } + - { offset: 0x298913, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x43C, symBinAddr: 0x1EA2C8, symSize: 0x98 } + - { offset: 0x2989DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSHAASH9hashValueSivgTW', symObjAddr: 0x4D4, symBinAddr: 0x1EA360, symSize: 0x64 } + - { offset: 0x298A74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x538, symBinAddr: 0x1EA3C4, symSize: 0x50 } + - { offset: 0x298AC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x588, symBinAddr: 0x1EA414, symSize: 0x60 } + - { offset: 0x298BEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSHAASQWb', symObjAddr: 0x778, symBinAddr: 0x1EA4A8, symSize: 0x4 } + - { offset: 0x298C03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOACSQAAWl', symObjAddr: 0x77C, symBinAddr: 0x1EA4AC, symSize: 0x40 } + - { offset: 0x298C17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO10Foundation14LocalizedErrorAAs0G0PWb', symObjAddr: 0x7BC, symBinAddr: 0x1EA4EC, symSize: 0x4 } + - { offset: 0x298C2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOACs5ErrorAAWl', symObjAddr: 0x7C0, symBinAddr: 0x1EA4F0, symSize: 0x40 } + - { offset: 0x298C3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ValidationErrorOSHAASQWb', symObjAddr: 0x800, symBinAddr: 0x1EA530, symSize: 0x4 } + - { offset: 0x298C53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ValidationErrorOACSQAAWl', symObjAddr: 0x804, symBinAddr: 0x1EA534, symSize: 0x40 } + - { offset: 0x298C67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOwet', symObjAddr: 0x854, symBinAddr: 0x1EA574, symSize: 0x90 } + - { offset: 0x298C7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOwst', symObjAddr: 0x8E4, symBinAddr: 0x1EA604, symSize: 0xB0 } + - { offset: 0x298C8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOMa', symObjAddr: 0x9A8, symBinAddr: 0x1EA6B4, symSize: 0x10 } + - { offset: 0x298CA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ValidationErrorOMa', symObjAddr: 0xAFC, symBinAddr: 0x1EA6C4, symSize: 0x10 } + - { offset: 0x298CBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO8rawValueACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x1E9ED0, symSize: 0x138 } + - { offset: 0x298CF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO16errorDescriptionSSvg', symObjAddr: 0x17C, symBinAddr: 0x1EA008, symSize: 0x58 } + - { offset: 0x298D1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO8rawValueSSvg', symObjAddr: 0x1D4, symBinAddr: 0x1EA060, symSize: 0x268 } + - { offset: 0x298EA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSYAASY8rawValuexSg03RawF0Qz_tcfCTW', symObjAddr: 0x5E8, symBinAddr: 0x1EA474, symSize: 0xC } + - { offset: 0x298EBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSYAASY8rawValue03RawF0QzvgTW', symObjAddr: 0x5F4, symBinAddr: 0x1EA480, symSize: 0x24 } + - { offset: 0x298EDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO10Foundation14LocalizedErrorAadEP16errorDescriptionSSSgvgTW', symObjAddr: 0x618, symBinAddr: 0x1EA4A4, symSize: 0x4 } + - { offset: 0x29933D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsCMa', symObjAddr: 0x10, symBinAddr: 0x1EA6D4, symSize: 0x20 } + - { offset: 0x2993E0, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVACSLAAWl', symObjAddr: 0xC5C, symBinAddr: 0x1EB258, symSize: 0x44 } + - { offset: 0x2995C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsC20isCurrentTimeBetween5start3endSbSS_SStFZTf4nnd_n', symObjAddr: 0x30, symBinAddr: 0x1EA6F4, symSize: 0x648 } + - { offset: 0x29988E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsC12coordinateAt8distance4from7towardsSo22CLLocationCoordinate2DVSgSdSg_A2JtFZTf4nnnd_n', symObjAddr: 0x678, symBinAddr: 0x1EAD3C, symSize: 0x1F4 } + - { offset: 0x299B46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsC13getDeviceUUIDSSyFZTf4d_n', symObjAddr: 0x86C, symBinAddr: 0x1EAF30, symSize: 0x190 } + - { offset: 0x299C1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsC16findNearestPoint4test6targetSo22CLLocationCoordinate2DVAH_SayAHGtFZTf4nnd_n', symObjAddr: 0xA40, symBinAddr: 0x1EB0C0, symSize: 0x154 } + - { offset: 0x29A1F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCfE', symObjAddr: 0x0, symBinAddr: 0x1EB29C, symSize: 0x38 } + - { offset: 0x29A20A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCfE', symObjAddr: 0x0, symBinAddr: 0x1EB29C, symSize: 0x38 } + - { offset: 0x29A272, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCMU', symObjAddr: 0xBC, symBinAddr: 0x1EB358, symSize: 0x8 } + - { offset: 0x29A286, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCMa', symObjAddr: 0xC4, symBinAddr: 0x1EB360, symSize: 0x38 } + - { offset: 0x29A29A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCMr', symObjAddr: 0xFC, symBinAddr: 0x1EB398, symSize: 0x78 } + - { offset: 0x29A2E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCfD', symObjAddr: 0x38, symBinAddr: 0x1EB2D4, symSize: 0x84 } + - { offset: 0x29A6AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17findStyleElements6withinSayAA3XMLO7ElementCGAI_tF', symObjAddr: 0x0, symBinAddr: 0x1EB410, symSize: 0x238 } + - { offset: 0x29A919, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17findStyleElements6withinSayAA3XMLO7ElementCGAI_tF', symObjAddr: 0x0, symBinAddr: 0x1EB410, symSize: 0x238 } + - { offset: 0x29ACCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV22parseStyleSheetElementyAA3DOMO0fG0VSSSgKFAF22PresentationAttributesVAA15AttributeParser_pKcACcfu_AkaL_pKcfu0_', symObjAddr: 0x238, symBinAddr: 0x1EB648, symSize: 0x14 } + - { offset: 0x29AEB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV15scanAtttributes33_29B34C3A129C6CB17D28971D563B2EC2LLSDyS2SGyKF', symObjAddr: 0x24C, symBinAddr: 0x1EB65C, symSize: 0x3C0 } + - { offset: 0x29B17F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV22scanNextAttributeValueSSyKF', symObjAddr: 0x60C, symBinAddr: 0x1EBA1C, symSize: 0x1B8 } + - { offset: 0x29B238, size: 0x8, addend: 0x0, symName: '_$sSD8PenNavUISSRszSSRs_rlE5parseyqd__SS_qd__SSKXEtKlF', symObjAddr: 0x7C4, symBinAddr: 0x1EBBD4, symSize: 0xF4 } + - { offset: 0x29B2E9, size: 0x8, addend: 0x0, symName: '_$sSDyxq_G8PenNavUI15AttributeParserABSSRszSSRs_rlAbCP6parserAB0d5ValueE0_pvgTW', symObjAddr: 0x8B8, symBinAddr: 0x1EBCC8, symSize: 0x18 } + - { offset: 0x29B309, size: 0x8, addend: 0x0, symName: '_$sSDyxq_G8PenNavUI15AttributeParserABSSRszSSRs_rlAbCP6parserAB0d5ValueE0_pvgTW', symObjAddr: 0x8B8, symBinAddr: 0x1EBCC8, symSize: 0x18 } + - { offset: 0x29B31B, size: 0x8, addend: 0x0, symName: '_$sSDyxq_G8PenNavUI15AttributeParserABSSRszSSRs_rlAbCP5parseyqd__SS_qd__SSKXEtKlFTW', symObjAddr: 0x8D8, symBinAddr: 0x1EBCE0, symSize: 0x18 } + - { offset: 0x29B4AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseEntriesySDyAA3DOMO10StyleSheetV8SelectorOSDyS2SGGSSSgKFZTf4nd_n', symObjAddr: 0x930, symBinAddr: 0x1EBCF8, symSize: 0x6B8 } + - { offset: 0x29B867, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGtSgWOe', symObjAddr: 0x1028, symBinAddr: 0x1EC3B0, symSize: 0x2C } + - { offset: 0x29BDCA, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE12cancelButtonSo8UIButtonCSgvg', symObjAddr: 0x0, symBinAddr: 0x1EC3DC, symSize: 0x104 } + - { offset: 0x29BE04, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE15cancelFontStyleSSvs', symObjAddr: 0x12C, symBinAddr: 0x1EC4EC, symSize: 0x1D4 } + - { offset: 0x29BEFE, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE9fontStyleSSvs', symObjAddr: 0x360, symBinAddr: 0x1EC720, symSize: 0x1A4 } + - { offset: 0x29C000, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE19textColorIdentifierSivgTo', symObjAddr: 0x504, symBinAddr: 0x1EC8C4, symSize: 0x8 } + - { offset: 0x29C01C, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE19textColorIdentifierSivsTo', symObjAddr: 0x50C, symBinAddr: 0x1EC8CC, symSize: 0x30 } + - { offset: 0x29C054, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE19textColorIdentifierSivs', symObjAddr: 0x53C, symBinAddr: 0x1EC8FC, symSize: 0x140 } + - { offset: 0x29C0D8, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE11cancelColorSivgTo', symObjAddr: 0x67C, symBinAddr: 0x1ECA3C, symSize: 0x8 } + - { offset: 0x29C0F4, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x6B8, symBinAddr: 0x1ECA74, symSize: 0x8 } + - { offset: 0x29C110, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x6C0, symBinAddr: 0x1ECA7C, symSize: 0x30 } + - { offset: 0x29C12C, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE25backgroundColorIdentifierSivs', symObjAddr: 0x6F0, symBinAddr: 0x1ECAAC, symSize: 0x224 } + - { offset: 0x29C1B0, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE16placeholderColorSivgTo', symObjAddr: 0x914, symBinAddr: 0x1ECCD0, symSize: 0x8 } + - { offset: 0x29C1CC, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE16placeholderColorSivsTo', symObjAddr: 0x91C, symBinAddr: 0x1ECCD8, symSize: 0x30 } + - { offset: 0x29C22A, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE16placeholderColorSivs', symObjAddr: 0x94C, symBinAddr: 0x1ECD08, symSize: 0x39C } + - { offset: 0x29C3D4, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE19tintColorIdentifierSivgTo', symObjAddr: 0xCE8, symBinAddr: 0x1ED0A4, symSize: 0x8 } + - { offset: 0x29C41A, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE26placeholderLocalizationKeySSvsTo', symObjAddr: 0xE10, symBinAddr: 0x1ED1CC, symSize: 0x94 } + - { offset: 0x29C479, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE21cancelLocalizationKeySSvsTo', symObjAddr: 0xEA4, symBinAddr: 0x1ED260, symSize: 0xC0 } + - { offset: 0x29CA37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC14sharedInstance33_A49337BBB7825CE36732F8C974911E0ALLACSgvpZ', symObjAddr: 0x2DA8, symBinAddr: 0x37F398, symSize: 0x0 } + - { offset: 0x29D21F, size: 0x8, addend: 0x0, symName: '_$s7Penguin5VenueC8PenNavUIE8assetURL10Foundation0G0VSgvg', symObjAddr: 0x1E74, symBinAddr: 0x1EF1AC, symSize: 0x184 } + - { offset: 0x29D24E, size: 0x8, addend: 0x0, symName: '_$s7Penguin5VenueC8PenNavUIE21getDownloadedModelUriSSSgyF', symObjAddr: 0x1FF8, symBinAddr: 0x1EF330, symSize: 0x1D4 } + - { offset: 0x29D2C8, size: 0x8, addend: 0x0, symName: '_$s7Penguin5VenueC8PenNavUI16FileDownloadDataA2dEP8assetURL10Foundation0J0VSgvgTW', symObjAddr: 0x21CC, symBinAddr: 0x1EF504, symSize: 0x20 } + - { offset: 0x29D302, size: 0x8, addend: 0x0, symName: '_$s7Penguin5VenueC8PenNavUI16FileDownloadDataA2dEP10downloadIdSiSgvgTW', symObjAddr: 0x21EC, symBinAddr: 0x1EF524, symSize: 0x24 } + - { offset: 0x29D33D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerCMa', symObjAddr: 0x2210, symBinAddr: 0x1EF548, symSize: 0x20 } + - { offset: 0x29D475, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI13VenueCardDataV_Tg503$s8ef43UI13VenuesManagerC16venuesWithFloorsSayAA13hiJ18VGvgSbAF_AFtXEfU0_Tf1nnncn_n', symObjAddr: 0x2274, symBinAddr: 0x1EF568, symSize: 0x3EC } + - { offset: 0x29D989, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI13VenueCardDataV_Tg503$s8fg43UI13VenuesManagerC16venuesWithFloorsSayAA13ijK18VGvgSbAF_AFtXEfU0_Tf1nncn_n', symObjAddr: 0x2660, symBinAddr: 0x1EF954, symSize: 0x274 } + - { offset: 0x29DD24, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI13VenueCardDataV_Tg503$s8gh43UI13VenuesManagerC16venuesWithFloorsSayAA13jkL18VGvgSbAF_AFtXEfU0_Tf1nnnnc_n', symObjAddr: 0x28D4, symBinAddr: 0x1EFBC8, symSize: 0x238 } + - { offset: 0x29DE21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC07loadAllD4Info10completionyyyc_tFySayAA9VenueDataCG_SSSgtcfU_yyScMYccfU_TA', symObjAddr: 0x2C28, symBinAddr: 0x1EFE60, symSize: 0x10 } + - { offset: 0x29DE35, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2C38, symBinAddr: 0x1EFE70, symSize: 0x10 } + - { offset: 0x29DE49, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2C48, symBinAddr: 0x1EFE80, symSize: 0x8 } + - { offset: 0x29DE5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC21loadCampusInformationyyFyAA9VenueDataCSgcfU_yyScMYccfU_TA', symObjAddr: 0x2D10, symBinAddr: 0x1EFEB4, symSize: 0x8 } + - { offset: 0x29DEC5, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFSay8PenNavUI13VenueCardDataVG_Tg503$s8de43UI13VenuesManagerC16venuesWithFloorsSayAA13ghI18VGvgSbAF_AFtXEfU0_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x1ED338, symSize: 0x160 } + - { offset: 0x29E493, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC03getD010completionyyycSg_tFySayAA13VenueCardDataVGcfU_', symObjAddr: 0x160, symBinAddr: 0x1ED498, symSize: 0x26C } + - { offset: 0x29E50A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC07loadAllD4Info10completionyyyc_tFySayAA9VenueDataCG_SSSgtcfU_', symObjAddr: 0x3CC, symBinAddr: 0x1ED704, symSize: 0x26C } + - { offset: 0x29E589, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC07loadAllD4Info10completionyyyc_tFySayAA9VenueDataCG_SSSgtcfU_yyScMYccfU_', symObjAddr: 0x638, symBinAddr: 0x1ED970, symSize: 0xF0 } + - { offset: 0x29E5DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC21loadCampusInformationyyFyAA9VenueDataCSgcfU_', symObjAddr: 0x728, symBinAddr: 0x1EDA60, symSize: 0x254 } + - { offset: 0x29E650, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC21loadCampusInformationyyFyAA9VenueDataCSgcfU_yyScMYccfU_', symObjAddr: 0x97C, symBinAddr: 0x1EDCB4, symSize: 0x78 } + - { offset: 0x29E688, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC16venuesWithFloorsSayAA13VenueCardDataVGvg', symObjAddr: 0x9F4, symBinAddr: 0x1EDD2C, symSize: 0x650 } + - { offset: 0x29F0F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC12getVenueByIdy7Penguin0G0CSgSiSgF', symObjAddr: 0x1044, symBinAddr: 0x1EE37C, symSize: 0x10C } + - { offset: 0x29F27D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC03getD5ByIdsySay7Penguin5VenueCGSgSaySiGF', symObjAddr: 0x1150, symBinAddr: 0x1EE488, symSize: 0x1B4 } + - { offset: 0x29F595, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC14getCampusVenue7Penguin0H0CSgyF', symObjAddr: 0x1304, symBinAddr: 0x1EE63C, symSize: 0x120 } + - { offset: 0x29F6F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC16getVenueCardById05venueJ0AA0gH4DataVSgSi_tF', symObjAddr: 0x1424, symBinAddr: 0x1EE75C, symSize: 0xB8 } + - { offset: 0x29F802, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC17getCacheVenueData7venueIdAA0hI0CSgSiSg_tF', symObjAddr: 0x14DC, symBinAddr: 0x1EE814, symSize: 0x170 } + - { offset: 0x29FA0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC16getCoverImageUrl7venueIdSSSgSiSg_tF', symObjAddr: 0x164C, symBinAddr: 0x1EE984, symSize: 0x1DC } + - { offset: 0x29FCD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC03getD18ListForDownloadingSay7Penguin5VenueCGyF', symObjAddr: 0x1828, symBinAddr: 0x1EEB60, symSize: 0x530 } + - { offset: 0x29FF92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerCfD', symObjAddr: 0x1D58, symBinAddr: 0x1EF090, symSize: 0x4C } + - { offset: 0x2A007E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerCACycfc', symObjAddr: 0x1DA4, symBinAddr: 0x1EF0DC, symSize: 0xD0 } + - { offset: 0x2A0544, size: 0x8, addend: 0x0, symName: '_$sSo16UICollectionViewC8PenNavUIE028dequeueReusableSupplementaryB06ofKind3forxSS_10Foundation9IndexPathVtSo0agB0CRbzlFAC18VenuesSectionLabelC_Tg5', symObjAddr: 0x0, symBinAddr: 0x1EFEF8, symSize: 0x118 } + - { offset: 0x2A05EC, size: 0x8, addend: 0x0, symName: '_$sSo16UICollectionViewC8PenNavUIE028dequeueReusableSupplementaryB06ofKind3forxSS_10Foundation9IndexPathVtSo0agB0CRbzlFAC18VenuesSectionLabelC_Tg5', symObjAddr: 0x0, symBinAddr: 0x1EFEF8, symSize: 0x118 } + - { offset: 0x2A08B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCfE', symObjAddr: 0x6CC, symBinAddr: 0x1F05C4, symSize: 0x50 } + - { offset: 0x2A08E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCfETo', symObjAddr: 0x74C, symBinAddr: 0x1F0644, symSize: 0x5C } + - { offset: 0x2A090F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCMa', symObjAddr: 0x7A8, symBinAddr: 0x1F06A0, symSize: 0x20 } + - { offset: 0x2A0963, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_22numberOfItemsInSectionSiSo012UICollectionF0C_SitFTo', symObjAddr: 0x7C8, symBinAddr: 0x1F06C0, symSize: 0x14 } + - { offset: 0x2A0983, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_22numberOfItemsInSectionSiSo012UICollectionF0C_SitFTo', symObjAddr: 0x7C8, symBinAddr: 0x1F06C0, symSize: 0x14 } + - { offset: 0x2A09A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_22numberOfItemsInSectionSiSo012UICollectionF0C_SitFTo', symObjAddr: 0x7C8, symBinAddr: 0x1F06C0, symSize: 0x14 } + - { offset: 0x2A0A3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_6layout13sizeForItemAtSo6CGSizeVSo012UICollectionF0C_So0oF6LayoutC10Foundation9IndexPathVtFTo', symObjAddr: 0x7DC, symBinAddr: 0x1F06D4, symSize: 0xC8 } + - { offset: 0x2A0ADC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_13cellForItemAtSo012UICollectionF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x8A4, symBinAddr: 0x1F079C, symSize: 0x1A8 } + - { offset: 0x2A0C07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_13cellForItemAtSo012UICollectionF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xA4C, symBinAddr: 0x1F0944, symSize: 0xC8 } + - { offset: 0x2A0C4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_6layout31referenceSizeForHeaderInSectionSo6CGSizeVSo012UICollectionF0C_So0qF6LayoutCSitFTo', symObjAddr: 0xB14, symBinAddr: 0x1F0A0C, symSize: 0x50 } + - { offset: 0x2A0CE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_33viewForSupplementaryElementOfKind2atSo020UICollectionReusableF0CSo0pF0C_SS10Foundation9IndexPathVtFTo', symObjAddr: 0xB64, symBinAddr: 0x1F0A5C, symSize: 0xDC } + - { offset: 0x2A0D3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_15didSelectItemAtySo012UICollectionF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xC40, symBinAddr: 0x1F0B38, symSize: 0xBC } + - { offset: 0x2A0D6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0xCFC, symBinAddr: 0x1F0BF4, symSize: 0x50 } + - { offset: 0x2A0DE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0xD4C, symBinAddr: 0x1F0C44, symSize: 0x50 } + - { offset: 0x2A0E03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0xE74, symBinAddr: 0x1F0C94, symSize: 0x34 } + - { offset: 0x2A0E53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0xEA8, symBinAddr: 0x1F0CC8, symSize: 0x24 } + - { offset: 0x2A0FA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC10setupPanelyyF', symObjAddr: 0xECC, symBinAddr: 0x1F0CEC, symSize: 0x2AC } + - { offset: 0x2A128D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC10setupPanelyyFTo', symObjAddr: 0x1178, symBinAddr: 0x1F0F98, symSize: 0x28 } + - { offset: 0x2A12B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x11A0, symBinAddr: 0x1F0FC0, symSize: 0x4 } + - { offset: 0x2A12D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x11A0, symBinAddr: 0x1F0FC0, symSize: 0x4 } + - { offset: 0x2A12EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0x11A4, symBinAddr: 0x1F0FC4, symSize: 0x1C0 } + - { offset: 0x2A14CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_15didSelectItemAtySo012UICollectionF0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x13A8, symBinAddr: 0x1F1184, symSize: 0xE8 } + - { offset: 0x2A16BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0AA019IntrinsicCollectionF0CSgvgTo', symObjAddr: 0x118, symBinAddr: 0x1F0010, symSize: 0x10 } + - { offset: 0x2A16D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0AA019IntrinsicCollectionF0CSgvgTo', symObjAddr: 0x118, symBinAddr: 0x1F0010, symSize: 0x10 } + - { offset: 0x2A171D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0AA019IntrinsicCollectionF0CSgvsTo', symObjAddr: 0x128, symBinAddr: 0x1F0020, symSize: 0x34 } + - { offset: 0x2A176C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC9separatorAA09SeparatorF0CSgvgTo', symObjAddr: 0x15C, symBinAddr: 0x1F0054, symSize: 0x10 } + - { offset: 0x2A1784, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC9separatorAA09SeparatorF0CSgvgTo', symObjAddr: 0x15C, symBinAddr: 0x1F0054, symSize: 0x10 } + - { offset: 0x2A17C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC9separatorAA09SeparatorF0CSgvsTo', symObjAddr: 0x16C, symBinAddr: 0x1F0064, symSize: 0x34 } + - { offset: 0x2A182F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC11viewDidLoadyyF', symObjAddr: 0x1A0, symBinAddr: 0x1F0098, symSize: 0x1D8 } + - { offset: 0x2A1962, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x378, symBinAddr: 0x1F0270, symSize: 0x28 } + - { offset: 0x2A198A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC10closePanelyyFTo', symObjAddr: 0x3A0, symBinAddr: 0x1F0298, symSize: 0x38 } + - { offset: 0x2A1A04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x3D8, symBinAddr: 0x1F02D0, symSize: 0x14C } + - { offset: 0x2A1A9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x524, symBinAddr: 0x1F041C, symSize: 0x60 } + - { offset: 0x2A1AE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x584, symBinAddr: 0x1F047C, symSize: 0x120 } + - { offset: 0x2A1B72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x6A4, symBinAddr: 0x1F059C, symSize: 0x28 } + - { offset: 0x2A1B86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCfD', symObjAddr: 0x71C, symBinAddr: 0x1F0614, symSize: 0x30 } + - { offset: 0x2A216B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorCMr', symObjAddr: 0x4, symBinAddr: 0x1F126C, symSize: 0xA4 } + - { offset: 0x2A23AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO17gradientEndpoints33_1CA5772D0B2BA5DF0D96EB96F03CEAC9LLAC5PointV5start_AI3endtSgvg', symObjAddr: 0xA8, symBinAddr: 0x1F1310, symSize: 0xF8 } + - { offset: 0x2A261C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO6bounds33_1CA5772D0B2BA5DF0D96EB96F03CEAC9LLAC4RectVSgvg', symObjAddr: 0x1A0, symBinAddr: 0x1F1408, symSize: 0xE4 } + - { offset: 0x2A2A7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorCMa', symObjAddr: 0x2F0, symBinAddr: 0x1F1528, symSize: 0xC } + - { offset: 0x2A2B30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV12convertColor33_1CA5772D0B2BA5DF0D96EB96F03CEAC9LL5usingAeA0H9Converter_p_tFAE4StopVAKXEfU_', symObjAddr: 0x2FC, symBinAddr: 0x1F1534, symSize: 0xF8 } + - { offset: 0x2A3191, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV12convertColor33_1CA5772D0B2BA5DF0D96EB96F03CEAC9LL5usingAeA0H9Converter_p_tFAE4StopVAKXEfU_TA', symObjAddr: 0x35E4, symBinAddr: 0x1F46E8, symSize: 0x1C } + - { offset: 0x2A31A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO_AC16StrokeAttributesVAC04FillH0VtWOc', symObjAddr: 0x36F8, symBinAddr: 0x1F4704, symSize: 0x48 } + - { offset: 0x2A34A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorCfD', symObjAddr: 0x2B4, symBinAddr: 0x1F14EC, symSize: 0x3C } + - { offset: 0x2A3C4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA14CGTextProviderV_Tg5Tf4nnnen_n', symObjAddr: 0x3F4, symBinAddr: 0x1F162C, symSize: 0x242C } + - { offset: 0x2A6A2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0D0C_AA05ColorL0_ptFAA14CGTextProviderV_Tg5Tf4nen_n', symObjAddr: 0x2900, symBinAddr: 0x1F3A58, symSize: 0xA7C } + - { offset: 0x2A7B92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0D0C8ContentsO_AA05ColorL0_ptFAA14CGTextProviderV_Tg5Tf4nen_n', symObjAddr: 0x337C, symBinAddr: 0x1F44D4, symSize: 0x214 } + - { offset: 0x2A8093, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE19createCircularImage4size15backgroundColor7paddingABSgSo6CGSizeV_So7UIColorCSdtF', symObjAddr: 0x0, symBinAddr: 0x1F4760, symSize: 0x200 } + - { offset: 0x2A80CE, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE19createCircularImage4size15backgroundColor7paddingABSgSo6CGSizeV_So7UIColorCSdtF', symObjAddr: 0x0, symBinAddr: 0x1F4760, symSize: 0x200 } + - { offset: 0x2A821B, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE13circularImage10outputSize11borderWidth0I5ColorABSgSo6CGSizeV_12CoreGraphics7CGFloatVSo7UIColorCtF', symObjAddr: 0x200, symBinAddr: 0x1F4960, symSize: 0x168 } + - { offset: 0x2A8317, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized2toABSgSo6CGSizeV_tF', symObjAddr: 0x368, symBinAddr: 0x1F4AC8, symSize: 0x194 } + - { offset: 0x2A83CB, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized2toABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0x890, symBinAddr: 0x1F4FF0, symSize: 0x7C } + - { offset: 0x2A8413, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE40adjustedForShareSheetPreviewIconProviderAByF', symObjAddr: 0x520, symBinAddr: 0x1F4C80, symSize: 0x2BC } + - { offset: 0x2A857E, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE40adjustedForShareSheetPreviewIconProviderAByFySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0x7DC, symBinAddr: 0x1F4F3C, symSize: 0xB4 } + - { offset: 0x2A85E9, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized2toABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0x930, symBinAddr: 0x1F5090, symSize: 0xC } + - { offset: 0x2A85FD, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x944, symBinAddr: 0x1F509C, symSize: 0x10 } + - { offset: 0x2A8611, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x954, symBinAddr: 0x1F50AC, symSize: 0x8 } + - { offset: 0x2A867D, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7appIconABSgvgZTf4d_n', symObjAddr: 0x95C, symBinAddr: 0x1F50B4, symSize: 0x304 } + - { offset: 0x2A8826, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE40adjustedForShareSheetPreviewIconProviderAByFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0xD4C, symBinAddr: 0x1F53E4, symSize: 0x8 } + - { offset: 0x2A8DAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4TextCfE', symObjAddr: 0x0, symBinAddr: 0x1F540C, symSize: 0x14 } + - { offset: 0x2A8E12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4TextCMU', symObjAddr: 0x80, symBinAddr: 0x1F548C, symSize: 0x8 } + - { offset: 0x2A8E26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4TextCMr', symObjAddr: 0x9C, symBinAddr: 0x1F54A8, symSize: 0x4C } + - { offset: 0x2A8E3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCfE', symObjAddr: 0xE8, symBinAddr: 0x1F54F4, symSize: 0x2C } + - { offset: 0x2A8EC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCMU', symObjAddr: 0x1A8, symBinAddr: 0x1F55B4, symSize: 0x8 } + - { offset: 0x2A8EDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCMr', symObjAddr: 0x1F4, symBinAddr: 0x1F55D0, symSize: 0x78 } + - { offset: 0x2A8F27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4TextCfD', symObjAddr: 0x14, symBinAddr: 0x1F5420, symSize: 0x6C } + - { offset: 0x2A8F86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCfD', symObjAddr: 0x114, symBinAddr: 0x1F5520, symSize: 0x94 } + - { offset: 0x2A8FE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0x2C0, symBinAddr: 0x1F5648, symSize: 0x14 } + - { offset: 0x2A9396, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE9delimeter33_EDFC4C304335B870668D77C553946433LL_WZ', symObjAddr: 0x0, symBinAddr: 0x1F565C, symSize: 0x50 } + - { offset: 0x2A93BA, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE9delimeter33_EDFC4C304335B870668D77C553946433LLACvpZ', symObjAddr: 0x1FD8, symBinAddr: 0x37F898, symSize: 0x0 } + - { offset: 0x2A93D4, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE8commands33_EDFC4C304335B870668D77C553946433LLACvpZ', symObjAddr: 0x1FF0, symBinAddr: 0x37F8B0, symSize: 0x0 } + - { offset: 0x2A9457, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE9delimeter33_EDFC4C304335B870668D77C553946433LL_WZ', symObjAddr: 0x0, symBinAddr: 0x1F565C, symSize: 0x50 } + - { offset: 0x2A9471, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE8commands33_EDFC4C304335B870668D77C553946433LL_WZ', symObjAddr: 0x50, symBinAddr: 0x1F56AC, symSize: 0x60 } + - { offset: 0x2A9857, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV16parseMoveSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0xB0, symBinAddr: 0x1F570C, symSize: 0x260 } + - { offset: 0x2A99B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV16parseLineSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0x310, symBinAddr: 0x1F596C, symSize: 0x260 } + - { offset: 0x2A9B1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17parseCubicSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0x570, symBinAddr: 0x1F5BCC, symSize: 0x498 } + - { offset: 0x2A9E79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV23parseCubicSmoothSegment3for4withAA3DOMO4PathC0H0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0xA08, symBinAddr: 0x1F6064, symSize: 0x380 } + - { offset: 0x2AA0DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV21parseQuadraticSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0xD88, symBinAddr: 0x1F63E4, symSize: 0x380 } + - { offset: 0x2AA33D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV27parseQuadraticSmoothSegment3for4withAA3DOMO4PathC0H0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0x1108, symBinAddr: 0x1F6764, symSize: 0x260 } + - { offset: 0x2AA49F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV15parseArcSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0x1368, symBinAddr: 0x1F69C4, symSize: 0x508 } + - { offset: 0x2AA9E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17parsePathSegmentsySayAA3DOMO0F0C7SegmentOGSSKFTf4nd_n', symObjAddr: 0x1870, symBinAddr: 0x1F6ECC, symSize: 0x6CC } + - { offset: 0x2AADFB, size: 0x8, addend: 0x0, symName: ___swift_project_value_buffer, symObjAddr: 0x1F3C, symBinAddr: 0x1F7598, symSize: 0x18 } + - { offset: 0x2AAE0F, size: 0x8, addend: 0x0, symName: ___swift_allocate_value_buffer, symObjAddr: 0x1F94, symBinAddr: 0x1F75B0, symSize: 0x40 } + - { offset: 0x2AB335, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC08progressF0So010UIProgressF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1F75F0, symSize: 0x10 } + - { offset: 0x2AB647, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCfE', symObjAddr: 0xE08, symBinAddr: 0x1F83F8, symSize: 0x4C } + - { offset: 0x2AB674, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCfETo', symObjAddr: 0xE84, symBinAddr: 0x1F8474, symSize: 0x58 } + - { offset: 0x2AB6A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCMa', symObjAddr: 0xEDC, symBinAddr: 0x1F84CC, symSize: 0x20 } + - { offset: 0x2AB6D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0xEFC, symBinAddr: 0x1F84EC, symSize: 0x78 } + - { offset: 0x2AB748, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0xF74, symBinAddr: 0x1F8564, symSize: 0x24 } + - { offset: 0x2AB790, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC10setupPanelyyF', symObjAddr: 0xF98, symBinAddr: 0x1F8588, symSize: 0xCC } + - { offset: 0x2AB82E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC10setupPanelyyFTo', symObjAddr: 0x1064, symBinAddr: 0x1F8654, symSize: 0x28 } + - { offset: 0x2AB880, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1108, symBinAddr: 0x1F867C, symSize: 0xC8 } + - { offset: 0x2AB8B5, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x11FC, symBinAddr: 0x1F8768, symSize: 0x10 } + - { offset: 0x2AB8C9, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x120C, symBinAddr: 0x1F8778, symSize: 0x8 } + - { offset: 0x2AB8DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC8setImageyyFySo7UIImageCSgcfU_TA', symObjAddr: 0x1298, symBinAddr: 0x1F8780, symSize: 0x8 } + - { offset: 0x2ABA96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC08progressF0So010UIProgressF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1F75F0, symSize: 0x10 } + - { offset: 0x2ABAAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC08progressF0So010UIProgressF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1F75F0, symSize: 0x10 } + - { offset: 0x2ABAF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC08progressF0So010UIProgressF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1F7600, symSize: 0x34 } + - { offset: 0x2ABB43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1F7634, symSize: 0x10 } + - { offset: 0x2ABB5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1F7634, symSize: 0x10 } + - { offset: 0x2ABB9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1F7644, symSize: 0x34 } + - { offset: 0x2ABBEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC05imageF0So07UIImageF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1F7678, symSize: 0x10 } + - { offset: 0x2ABC02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC05imageF0So07UIImageF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1F7678, symSize: 0x10 } + - { offset: 0x2ABC42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC05imageF0So07UIImageF0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x1F7688, symSize: 0x34 } + - { offset: 0x2ABDC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC11viewDidLoadyyF', symObjAddr: 0xCC, symBinAddr: 0x1F76BC, symSize: 0x314 } + - { offset: 0x2ABF49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x3E0, symBinAddr: 0x1F79D0, symSize: 0x28 } + - { offset: 0x2AC078, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC8setImageyyF', symObjAddr: 0x408, symBinAddr: 0x1F79F8, symSize: 0x48C } + - { offset: 0x2AC31D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC8setImageyyFySo7UIImageCSgcfU_', symObjAddr: 0x894, symBinAddr: 0x1F7E84, symSize: 0x148 } + - { offset: 0x2AC3FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC14updateProgressyyF', symObjAddr: 0x9DC, symBinAddr: 0x1F7FCC, symSize: 0x124 } + - { offset: 0x2AC507, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC14updateProgressyyFTo', symObjAddr: 0xB00, symBinAddr: 0x1F80F0, symSize: 0x28 } + - { offset: 0x2AC540, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC7dismissyyF', symObjAddr: 0xB28, symBinAddr: 0x1F8118, symSize: 0x80 } + - { offset: 0x2AC5F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xBA8, symBinAddr: 0x1F8198, symSize: 0xF8 } + - { offset: 0x2AC635, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xCA0, symBinAddr: 0x1F8290, symSize: 0x60 } + - { offset: 0x2AC649, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xD00, symBinAddr: 0x1F82F0, symSize: 0xE0 } + - { offset: 0x2AC67C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xDE0, symBinAddr: 0x1F83D0, symSize: 0x28 } + - { offset: 0x2AC690, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCfD', symObjAddr: 0xE54, symBinAddr: 0x1F8444, symSize: 0x30 } + - { offset: 0x2ACAEF, size: 0x8, addend: 0x0, symName: '_$sSlsE5first7ElementQzSgvgSS17UnicodeScalarViewV_Tg5', symObjAddr: 0x0, symBinAddr: 0x1F8788, symSize: 0xE0 } + - { offset: 0x2ADB6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterCMa', symObjAddr: 0x740, symBinAddr: 0x1F8EC8, symSize: 0x20 } + - { offset: 0x2ADB81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCfETo', symObjAddr: 0x840, symBinAddr: 0x1F8FC8, symSize: 0xC8 } + - { offset: 0x2AE597, size: 0x8, addend: 0x0, symName: '_$sSo7UITouchCSo8NSObjectCSH10ObjectiveCWl', symObjAddr: 0x968C, symBinAddr: 0x201DD8, symSize: 0x54 } + - { offset: 0x2AE5B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerCfETo', symObjAddr: 0xA018, symBinAddr: 0x202730, symSize: 0x38 } + - { offset: 0x2AE5E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLCfETo', symObjAddr: 0xA848, symBinAddr: 0x202F60, symSize: 0x60 } + - { offset: 0x2AE614, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV19validateScalarIndexySS0E0VAEF', symObjAddr: 0xAABC, symBinAddr: 0x2031D4, symSize: 0x94 } + - { offset: 0x2AE641, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV22validateSubscalarIndexySS0E0VAEF', symObjAddr: 0xAB50, symBinAddr: 0x203268, symSize: 0x6C } + - { offset: 0x2AE679, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV15scalarAlignSlowySS5IndexVAEF', symObjAddr: 0xABBC, symBinAddr: 0x2032D4, symSize: 0xDC } + - { offset: 0x2AE74C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCMa', symObjAddr: 0xB204, symBinAddr: 0x2038D8, symSize: 0x20 } + - { offset: 0x2AE760, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerCMa', symObjAddr: 0xB224, symBinAddr: 0x2038F8, symSize: 0x20 } + - { offset: 0x2AE774, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLCMa', symObjAddr: 0xB244, symBinAddr: 0x203918, symSize: 0x20 } + - { offset: 0x2AE788, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC10UnfairLockCMa', symObjAddr: 0xB264, symBinAddr: 0x203938, symSize: 0x20 } + - { offset: 0x2AE79C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC4DataVMa', symObjAddr: 0xB2DC, symBinAddr: 0x203958, symSize: 0x10 } + - { offset: 0x2AE7B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctFyAA21NumericSpringAnimatorAELLC4DataVcfU_TA', symObjAddr: 0xB3CC, symBinAddr: 0x203994, symSize: 0xC } + - { offset: 0x2AE7C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctFyycfU0_TA', symObjAddr: 0xB40C, symBinAddr: 0x2039D4, symSize: 0xC } + - { offset: 0x2AE7D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC10panningEnd33_06002278D796C453CD79A6217836F60ALL4with8velocityySo7CGPointV_AItFyycfU_TA', symObjAddr: 0xB418, symBinAddr: 0x2039E0, symSize: 0x8 } + - { offset: 0x2AE7EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyyScMYccfU0_TA', symObjAddr: 0xB500, symBinAddr: 0x203A88, symSize: 0x10 } + - { offset: 0x2AE81E, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xB510, symBinAddr: 0x203A98, symSize: 0x10 } + - { offset: 0x2AE832, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xB520, symBinAddr: 0x203AA8, symSize: 0x8 } + - { offset: 0x2AE846, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU1_TA', symObjAddr: 0xB5BC, symBinAddr: 0x203AB0, symSize: 0x8 } + - { offset: 0x2AE85A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU2_TA', symObjAddr: 0xB5C8, symBinAddr: 0x203ABC, symSize: 0x10 } + - { offset: 0x2AE86E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU3_TA', symObjAddr: 0xB628, symBinAddr: 0x203B0C, symSize: 0xC } + - { offset: 0x2AE882, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFySo23UIViewAnimatingPositionVcfU4_TA', symObjAddr: 0xB670, symBinAddr: 0x203B54, symSize: 0x10 } + - { offset: 0x2AE9A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC10scrollViewSo08UIScrollF0CSgvW', symObjAddr: 0x224, symBinAddr: 0x1F89AC, symSize: 0x1A8 } + - { offset: 0x2AEB23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC5stateAA18FloatingPanelStateCvW', symObjAddr: 0x3CC, symBinAddr: 0x1F8B54, symSize: 0x270 } + - { offset: 0x2AED45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvs', symObjAddr: 0x63C, symBinAddr: 0x1F8DC4, symSize: 0x104 } + - { offset: 0x2AEDCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCfD', symObjAddr: 0x760, symBinAddr: 0x1F8EE8, symSize: 0x64 } + - { offset: 0x2AEDFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCfDTo', symObjAddr: 0x7C4, symBinAddr: 0x1F8F4C, symSize: 0x7C } + - { offset: 0x2AEE38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtF', symObjAddr: 0x908, symBinAddr: 0x1F9090, symSize: 0xEBC } + - { offset: 0x2AF5BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU1_', symObjAddr: 0x17C4, symBinAddr: 0x1F9F4C, symSize: 0xE8 } + - { offset: 0x2AF635, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU2_', symObjAddr: 0x18AC, symBinAddr: 0x1FA034, symSize: 0x8C } + - { offset: 0x2AF67C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU3_', symObjAddr: 0x1938, symBinAddr: 0x1FA0C0, symSize: 0x320 } + - { offset: 0x2AF847, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFySo23UIViewAnimatingPositionVcfU4_', symObjAddr: 0x1C58, symBinAddr: 0x1FA3E0, symSize: 0x160 } + - { offset: 0x2AFB3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC14activateLayout05forceF030contentInsetAdjustmentBehaviorySb_AA23FloatingPanelControllerC07ContentijK0OtF', symObjAddr: 0x1DF4, symBinAddr: 0x1FA540, symSize: 0x208 } + - { offset: 0x2AFCEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC16getBackdropAlpha2at4with0D8Graphics7CGFloatVAI_AItF', symObjAddr: 0x1FFC, symBinAddr: 0x1FA748, symSize: 0x2E4 } + - { offset: 0x2B0003, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_33shouldRecognizeSimultaneouslyWithSbSo09UIGestureF0C_AGtF', symObjAddr: 0x22E0, symBinAddr: 0x1FAA2C, symSize: 0x340 } + - { offset: 0x2B01B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_33shouldRecognizeSimultaneouslyWithSbSo09UIGestureF0C_AGtFTo', symObjAddr: 0x2620, symBinAddr: 0x1FAD6C, symSize: 0x78 } + - { offset: 0x2B01CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_24shouldBeRequiredToFailBySbSo09UIGestureF0C_AGtF', symObjAddr: 0x2698, symBinAddr: 0x1FADE4, symSize: 0x148 } + - { offset: 0x2B0269, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_24shouldBeRequiredToFailBySbSo09UIGestureF0C_AGtFTo', symObjAddr: 0x27E0, symBinAddr: 0x1FAF2C, symSize: 0x78 } + - { offset: 0x2B02BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_22shouldRequireFailureOfSbSo09UIGestureF0C_AGtF', symObjAddr: 0x2858, symBinAddr: 0x1FAFA4, symSize: 0x49C } + - { offset: 0x2B0504, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_22shouldRequireFailureOfSbSo09UIGestureF0C_AGtFTo', symObjAddr: 0x2CF4, symBinAddr: 0x1FB440, symSize: 0x78 } + - { offset: 0x2B054D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC14handleBackdrop10tapGestureySo05UITapH10RecognizerC_tFTo', symObjAddr: 0x2D6C, symBinAddr: 0x1FB4B8, symSize: 0x6C } + - { offset: 0x2B0762, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC6handle10panGestureySo05UIPanG10RecognizerC_tF', symObjAddr: 0x2DD8, symBinAddr: 0x1FB524, symSize: 0x1388 } + - { offset: 0x2B1BAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC6handle10panGestureySo05UIPanG10RecognizerC_tFTo', symObjAddr: 0x4160, symBinAddr: 0x1FC8AC, symSize: 0x50 } + - { offset: 0x2B1BEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC26interruptAnimationIfNeeded33_06002278D796C453CD79A6217836F60ALLyyF', symObjAddr: 0x41B0, symBinAddr: 0x1FC8FC, symSize: 0x3B0 } + - { offset: 0x2B1E31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC12panningBegan33_06002278D796C453CD79A6217836F60ALL2atySo7CGPointV_tF', symObjAddr: 0x4560, symBinAddr: 0x1FCCAC, symSize: 0x1F8 } + - { offset: 0x2B2037, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC13panningChange33_06002278D796C453CD79A6217836F60ALL4withySo7CGPointV_tF', symObjAddr: 0x4758, symBinAddr: 0x1FCEA4, symSize: 0x410 } + - { offset: 0x2B25C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC30shouldScrollingContentInMoving33_06002278D796C453CD79A6217836F60ALL4from2toSb0D8Graphics7CGFloatV_AJtF', symObjAddr: 0x4B68, symBinAddr: 0x1FD2B4, symSize: 0x218 } + - { offset: 0x2B26FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC10panningEnd33_06002278D796C453CD79A6217836F60ALL4with8velocityySo7CGPointV_AItF', symObjAddr: 0x4D80, symBinAddr: 0x1FD4CC, symSize: 0x920 } + - { offset: 0x2B2ED6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC10panningEnd33_06002278D796C453CD79A6217836F60ALL4with8velocityySo7CGPointV_AItFyycfU_', symObjAddr: 0x56A0, symBinAddr: 0x1FDDEC, symSize: 0x58 } + - { offset: 0x2B2F3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC12shouldRemove33_06002278D796C453CD79A6217836F60ALL4withSbSo8CGVectorV_tF', symObjAddr: 0x56F8, symBinAddr: 0x1FDE44, symSize: 0x220 } + - { offset: 0x2B3156, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC16startInteraction33_06002278D796C453CD79A6217836F60ALL4with2atySo7CGPointV_AItF', symObjAddr: 0x5918, symBinAddr: 0x1FE064, symSize: 0x9B8 } + - { offset: 0x2B3CFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC14endInteraction33_06002278D796C453CD79A6217836F60ALL3foryAA18FloatingPanelStateC_tF', symObjAddr: 0x62D0, symBinAddr: 0x1FEA1C, symSize: 0x2C4 } + - { offset: 0x2B3F70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC15startAttraction33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_So7CGPointVyyctF', symObjAddr: 0x6594, symBinAddr: 0x1FECE0, symSize: 0x328 } + - { offset: 0x2B43E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctF', symObjAddr: 0x68BC, symBinAddr: 0x1FF008, symSize: 0x3D4 } + - { offset: 0x2B4637, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctFyAA21NumericSpringAnimatorAELLC4DataVcfU_', symObjAddr: 0x6C90, symBinAddr: 0x1FF3DC, symSize: 0x40C } + - { offset: 0x2B49E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctFyycfU0_', symObjAddr: 0x709C, symBinAddr: 0x1FF7E8, symSize: 0x258 } + - { offset: 0x2B4BA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC13endAttraction33_06002278D796C453CD79A6217836F60ALLyySbF', symObjAddr: 0x72F4, symBinAddr: 0x1FFA40, symSize: 0x4D4 } + - { offset: 0x2B5057, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC11targetState4from4withAA013FloatingPanelF0C0D8Graphics7CGFloatV_AKtF', symObjAddr: 0x77C8, symBinAddr: 0x1FFF14, symSize: 0xCAC } + - { offset: 0x2B5FCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC24followScrollViewBouncingyyF', symObjAddr: 0x8474, symBinAddr: 0x200BC0, symSize: 0x1B8 } + - { offset: 0x2B60CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC14lockScrollView33_06002278D796C453CD79A6217836F60ALL6strictySb_tF', symObjAddr: 0x862C, symBinAddr: 0x200D78, symSize: 0x440 } + - { offset: 0x2B633F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC16unlockScrollView33_06002278D796C453CD79A6217836F60ALLyyF', symObjAddr: 0x8A6C, symBinAddr: 0x2011B8, symSize: 0x1F8 } + - { offset: 0x2B6493, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC27shouldLooselyLockScrollView33_06002278D796C453CD79A6217836F60ALLSbvg07isSmallH25ContentAndFitToBoundsModeL_Sbvg', symObjAddr: 0x8C64, symBinAddr: 0x2013B0, symSize: 0x1B4 } + - { offset: 0x2B669B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC23contentOffsetForPinning33_06002278D796C453CD79A6217836F60ALL2ofSo7CGPointVSo12UIScrollViewC_tF', symObjAddr: 0x8E18, symBinAddr: 0x201564, symSize: 0x1B0 } + - { offset: 0x2B6783, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC12isScrollable5stateSbAA18FloatingPanelStateC_tF', symObjAddr: 0x8FC8, symBinAddr: 0x201714, symSize: 0x158 } + - { offset: 0x2B6885, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC32adjustScrollContentInsetIfNeededyyF', symObjAddr: 0x9120, symBinAddr: 0x20186C, symSize: 0x280 } + - { offset: 0x2B69F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCACycfcTo', symObjAddr: 0x93A0, symBinAddr: 0x201AEC, symSize: 0x2C } + - { offset: 0x2B6A56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerCACycfc', symObjAddr: 0x93CC, symBinAddr: 0x201B18, symSize: 0xDC } + - { offset: 0x2B6A8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerCACycfcTo', symObjAddr: 0x94A8, symBinAddr: 0x201BF4, symSize: 0x20 } + - { offset: 0x2B6A9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC12touchesBegan_4withyShySo7UITouchCG_So7UIEventCtF', symObjAddr: 0x94C8, symBinAddr: 0x201C14, symSize: 0x1C4 } + - { offset: 0x2B6B52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC12touchesBegan_4withyShySo7UITouchCG_So7UIEventCtFTo', symObjAddr: 0x96E0, symBinAddr: 0x201E2C, symSize: 0x98 } + - { offset: 0x2B6B80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvgTo', symObjAddr: 0x9778, symBinAddr: 0x201EC4, symSize: 0x44 } + - { offset: 0x2B6BB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvg', symObjAddr: 0x97BC, symBinAddr: 0x201F08, symSize: 0x38 } + - { offset: 0x2B6BD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvsTo', symObjAddr: 0x97F4, symBinAddr: 0x201F40, symSize: 0x40 } + - { offset: 0x2B6BE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvM', symObjAddr: 0x9834, symBinAddr: 0x201F80, symSize: 0x54 } + - { offset: 0x2B6C28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvM.resume.0', symObjAddr: 0x9888, symBinAddr: 0x201FD4, symSize: 0x44 } + - { offset: 0x2B6C4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvg', symObjAddr: 0x98CC, symBinAddr: 0x202018, symSize: 0x28 } + - { offset: 0x2B6C7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvg', symObjAddr: 0x98F4, symBinAddr: 0x202040, symSize: 0x44 } + - { offset: 0x2B6CA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvs', symObjAddr: 0x9938, symBinAddr: 0x202084, symSize: 0x24 } + - { offset: 0x2B6CB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvM', symObjAddr: 0x995C, symBinAddr: 0x2020A8, symSize: 0x84 } + - { offset: 0x2B6D04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvM.resume.0', symObjAddr: 0x99E0, symBinAddr: 0x20212C, symSize: 0xBC } + - { offset: 0x2B6D47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterC8responds2toSb10ObjectiveC8SelectorVSg_tF', symObjAddr: 0x9A9C, symBinAddr: 0x2021E8, symSize: 0xF8 } + - { offset: 0x2B6DAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterC8responds2toSb10ObjectiveC8SelectorVSg_tFTo', symObjAddr: 0x9B94, symBinAddr: 0x2022E0, symSize: 0x3C } + - { offset: 0x2B6DC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterC16forwardingTarget3forypSg10ObjectiveC8SelectorVSg_tF', symObjAddr: 0x9BD0, symBinAddr: 0x20231C, symSize: 0x184 } + - { offset: 0x2B6E56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterC16forwardingTarget3forypSg10ObjectiveC8SelectorVSg_tFTo', symObjAddr: 0x9D54, symBinAddr: 0x2024A0, symSize: 0xE0 } + - { offset: 0x2B6E84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterCAEycfcTo', symObjAddr: 0x9E34, symBinAddr: 0x202580, symSize: 0x2C } + - { offset: 0x2B6EE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterCfETo', symObjAddr: 0x9E64, symBinAddr: 0x2025B0, symSize: 0x10 } + - { offset: 0x2B6F11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC6target6actionACypSg_10ObjectiveC8SelectorVSgtcfC', symObjAddr: 0x9E74, symBinAddr: 0x2025C0, symSize: 0xF0 } + - { offset: 0x2B6F25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC6target6actionACypSg_10ObjectiveC8SelectorVSgtcfc', symObjAddr: 0x9F64, symBinAddr: 0x2026B0, symSize: 0x2C } + - { offset: 0x2B6FAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC6target6actionACypSg_10ObjectiveC8SelectorVSgtcfcTo', symObjAddr: 0x9F90, symBinAddr: 0x2026DC, symSize: 0x54 } + - { offset: 0x2B700B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC10UnfairLockCfD', symObjAddr: 0xA050, symBinAddr: 0x202768, symSize: 0x10 } + - { offset: 0x2B7081, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC11displayLinkSo09CADisplayM0Cvg', symObjAddr: 0xA060, symBinAddr: 0x202778, symSize: 0x8C } + - { offset: 0x2B711E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC14startAnimationSbyF', symObjAddr: 0xA0EC, symBinAddr: 0x202804, symSize: 0x290 } + - { offset: 0x2B732B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC13stopAnimationyySbF', symObjAddr: 0xA37C, symBinAddr: 0x202A94, symSize: 0x24C } + - { offset: 0x2B7619, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC6updateyySo13CADisplayLinkCF', symObjAddr: 0xA5C8, symBinAddr: 0x202CE0, symSize: 0x1D0 } + - { offset: 0x2B7873, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC6updateyySo13CADisplayLinkCFTo', symObjAddr: 0xA798, symBinAddr: 0x202EB0, symSize: 0x50 } + - { offset: 0x2B789C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLCADycfcTo', symObjAddr: 0xA7E8, symBinAddr: 0x202F00, symSize: 0x2C } + - { offset: 0x2B78FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLCfD', symObjAddr: 0xA814, symBinAddr: 0x202F2C, symSize: 0x34 } + - { offset: 0x2B7928, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC27shouldScrollViewHandleTouch33_06002278D796C453CD79A6217836F60ALL_5point8velocitySbSo08UIScrollG0CSg_So7CGPointV0D8Graphics7CGFloatVtFTf4ndnn_n', symObjAddr: 0xAC98, symBinAddr: 0x2033B0, symSize: 0x404 } + - { offset: 0x2B7CCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvsTf4gn_n', symObjAddr: 0xB09C, symBinAddr: 0x2037B4, symSize: 0x9C } + - { offset: 0x2B819E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC12fetchRequestSo07NSFetchG0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x203B94, symSize: 0x70 } + - { offset: 0x2B81F4, size: 0x8, addend: 0x0, symName: _keypath_get_selector_id, symObjAddr: 0x70, symBinAddr: 0x203C04, symSize: 0xC } + - { offset: 0x2B8208, size: 0x8, addend: 0x0, symName: _keypath_get_selector_coverImage, symObjAddr: 0xC0, symBinAddr: 0x203C54, symSize: 0xC } + - { offset: 0x2B821C, size: 0x8, addend: 0x0, symName: _keypath_get_selector_address, symObjAddr: 0x104, symBinAddr: 0x203C98, symSize: 0xC } + - { offset: 0x2B8230, size: 0x8, addend: 0x0, symName: _keypath_get_selector_buildingNumber, symObjAddr: 0x148, symBinAddr: 0x203CDC, symSize: 0xC } + - { offset: 0x2B8244, size: 0x8, addend: 0x0, symName: _keypath_get_selector_phone, symObjAddr: 0x18C, symBinAddr: 0x203D20, symSize: 0xC } + - { offset: 0x2B8258, size: 0x8, addend: 0x0, symName: _keypath_get_selector_email, symObjAddr: 0x1D0, symBinAddr: 0x203D64, symSize: 0xC } + - { offset: 0x2B826C, size: 0x8, addend: 0x0, symName: _keypath_get_selector_website, symObjAddr: 0x214, symBinAddr: 0x203DA8, symSize: 0xC } + - { offset: 0x2B8280, size: 0x8, addend: 0x0, symName: _keypath_get_selector_floorCount, symObjAddr: 0x318, symBinAddr: 0x203EAC, symSize: 0xC } + - { offset: 0x2B82D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC03setE4Data5venueyAA0eG0C_tF', symObjAddr: 0x368, symBinAddr: 0x203EFC, symSize: 0x378 } + - { offset: 0x2B880A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC15show3dBuildingsyyF', symObjAddr: 0x0, symBinAddr: 0x204274, symSize: 0x3C0 } + - { offset: 0x2B8851, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC15hide3dBuildingsyyF', symObjAddr: 0x3C0, symBinAddr: 0x204634, symSize: 0x100 } + - { offset: 0x2B88C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC17showCategoryCount8category12currentFloory7Penguin11POICategoryV_AG0L0CSgtF', symObjAddr: 0x4C0, symBinAddr: 0x204734, symSize: 0x144 } + - { offset: 0x2B89AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC015getLastSelectedD07Penguin0D0CSgyF', symObjAddr: 0x604, symBinAddr: 0x204878, symSize: 0xF4 } + - { offset: 0x2B8A19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC14downloadModelsyyF', symObjAddr: 0x6F8, symBinAddr: 0x20496C, symSize: 0x150 } + - { offset: 0x2B90A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC14add3dBuildings3forySay7Penguin0D0CG_tF', symObjAddr: 0x2214, symBinAddr: 0x206488, symSize: 0xF24 } + - { offset: 0x2B9B2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC17remove3dBuildings11identifiersySaySSG_tF', symObjAddr: 0x3714, symBinAddr: 0x207988, symSize: 0xCC } + - { offset: 0x2B9D6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCMU', symObjAddr: 0x72E8, symBinAddr: 0x20B55C, symSize: 0x8 } + - { offset: 0x2B9D7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCMa', symObjAddr: 0x72F0, symBinAddr: 0x20B564, symSize: 0x38 } + - { offset: 0x2B9D92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCMr', symObjAddr: 0x7328, symBinAddr: 0x20B59C, symSize: 0xC4 } + - { offset: 0x2B9DA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8addModel3fory7Penguin0D0C_tF', symObjAddr: 0x7438, symBinAddr: 0x20B660, symSize: 0x198 } + - { offset: 0x2B9E48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC17downloadCompleted3foryAA16FileDownloadData_p_tF', symObjAddr: 0x75D0, symBinAddr: 0x20B7F8, symSize: 0xF8 } + - { offset: 0x2B9EFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCAA27FileDownloadProcessProtocolA2aDP17downloadCompleted3foryAA0gH4Data_p_tFTW', symObjAddr: 0x76C8, symBinAddr: 0x20B8F0, symSize: 0x4 } + - { offset: 0x2BA00D, size: 0x8, addend: 0x0, symName: '_$s7Penguin8MapLevelOACSQAAWl', symObjAddr: 0x7CB8, symBinAddr: 0x20BE64, symSize: 0x44 } + - { offset: 0x2BA021, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x7D8C, symBinAddr: 0x20BECC, symSize: 0x8 } + - { offset: 0x2BA035, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tFySo7UIImageCSgcfU_yALcfU_TA', symObjAddr: 0x7D94, symBinAddr: 0x20BED4, symSize: 0x8 } + - { offset: 0x2BA049, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3fory7Penguin0D0CSg_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x7DE8, symBinAddr: 0x20BEE0, symSize: 0x8 } + - { offset: 0x2BA05D, size: 0x8, addend: 0x0, symName: '_$s7Penguin8MapLevelOSgWOf', symObjAddr: 0x7FC4, symBinAddr: 0x20BFFC, symSize: 0x48 } + - { offset: 0x2BA903, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC10drawCampusyyF', symObjAddr: 0x848, symBinAddr: 0x204ABC, symSize: 0x668 } + - { offset: 0x2BAB5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC16drawCampusBorderyyF', symObjAddr: 0xEB0, symBinAddr: 0x205124, symSize: 0x2A4 } + - { offset: 0x2BACBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC18removeCampusBorderyyF', symObjAddr: 0x1154, symBinAddr: 0x2053C8, symSize: 0x1A4 } + - { offset: 0x2BADE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC13drawAllVenues6exceptySay7Penguin0D0CSgG_tF', symObjAddr: 0x12F8, symBinAddr: 0x20556C, symSize: 0xF1C } + - { offset: 0x2BB61B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC15removeAllVenuesyyF', symObjAddr: 0x3138, symBinAddr: 0x2073AC, symSize: 0x5DC } + - { offset: 0x2BBD64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC04drawD0_14includesSymboly7Penguin0D0CSg_SbtF', symObjAddr: 0x37E0, symBinAddr: 0x207A54, symSize: 0xA08 } + - { offset: 0x2BC090, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC06removeD0yy7Penguin0D0CSgF', symObjAddr: 0x41E8, symBinAddr: 0x20845C, symSize: 0x6AC } + - { offset: 0x2BC71A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC9drawGates3fory7Penguin0D0CSg_tF', symObjAddr: 0x4894, symBinAddr: 0x208B08, symSize: 0xDD8 } + - { offset: 0x2BD47D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3fory7Penguin0D0CSg_tF', symObjAddr: 0x566C, symBinAddr: 0x2098E0, symSize: 0x494 } + - { offset: 0x2BD6BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3fory7Penguin0D0CSg_tFySo7UIImageCSgcfU_', symObjAddr: 0x5B00, symBinAddr: 0x209D74, symSize: 0x274 } + - { offset: 0x2BD781, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tF', symObjAddr: 0x5D74, symBinAddr: 0x209FE8, symSize: 0x510 } + - { offset: 0x2BDAEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tFySo7UIImageCSgcfU_', symObjAddr: 0x6284, symBinAddr: 0x20A4F8, symSize: 0xD50 } + - { offset: 0x2BDEE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tFySo7UIImageCSgcfU_yALcfU_', symObjAddr: 0x6FD4, symBinAddr: 0x20B248, symSize: 0xE0 } + - { offset: 0x2BE10C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC6filter14filteredVenuesySayAA5PlaceCG_tF', symObjAddr: 0x70B4, symBinAddr: 0x20B328, symSize: 0x1CC } + - { offset: 0x2BE38B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCfD', symObjAddr: 0x7280, symBinAddr: 0x20B4F4, symSize: 0x68 } + - { offset: 0x2BE3C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8getImage3forSo7UIImageCSg7Penguin13GateNodeModelC_tFTf4nd_n', symObjAddr: 0x7714, symBinAddr: 0x20B8F4, symSize: 0x570 } + - { offset: 0x2BE5B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8renderer8mapLevel0H4ModeAC17PenguinINRenderer10PIRendererCSg_0K003MapI0OSgAA0N5StateOtcfcTf4gnnn_n', symObjAddr: 0x7EB0, symBinAddr: 0x20BEE8, symSize: 0x114 } + - { offset: 0x2BE991, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvpACTk', symObjAddr: 0x0, symBinAddr: 0x20C04C, symSize: 0x7C } + - { offset: 0x2BEB85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvpACTk', symObjAddr: 0x0, symBinAddr: 0x20C04C, symSize: 0x7C } + - { offset: 0x2BEBE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewCMa', symObjAddr: 0x2E4, symBinAddr: 0x20C2EC, symSize: 0x20 } + - { offset: 0x2BEC0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewCfETo', symObjAddr: 0x8D8, symBinAddr: 0x20C75C, symSize: 0x10 } + - { offset: 0x2BECF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvg', symObjAddr: 0x7C, symBinAddr: 0x20C0C8, symSize: 0x40 } + - { offset: 0x2BED15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvs', symObjAddr: 0xBC, symBinAddr: 0x20C108, symSize: 0x8C } + - { offset: 0x2BED5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvM', symObjAddr: 0x148, symBinAddr: 0x20C194, symSize: 0x6C } + - { offset: 0x2BED94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvM.resume.0', symObjAddr: 0x1B4, symBinAddr: 0x20C200, symSize: 0x44 } + - { offset: 0x2BEE5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x23C, symBinAddr: 0x20C244, symSize: 0xA8 } + - { offset: 0x2BEED4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x304, symBinAddr: 0x20C30C, symSize: 0xC8 } + - { offset: 0x2BEF40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewCACycfcTo', symObjAddr: 0x3CC, symBinAddr: 0x20C3D4, symSize: 0xC4 } + - { offset: 0x2BEFC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC14layoutSubviewsyyFTo', symObjAddr: 0x4FC, symBinAddr: 0x20C498, symSize: 0x88 } + - { offset: 0x2BF061, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtFTo', symObjAddr: 0x69C, symBinAddr: 0x20C520, symSize: 0x10C } + - { offset: 0x2BF0A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5frameACSo6CGRectV_tcfC', symObjAddr: 0x7A8, symBinAddr: 0x20C62C, symSize: 0x50 } + - { offset: 0x2BF0BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x7F8, symBinAddr: 0x20C67C, symSize: 0x2C } + - { offset: 0x2BF12B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x824, symBinAddr: 0x20C6A8, symSize: 0x2C } + - { offset: 0x2BF18A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewCfD', symObjAddr: 0x850, symBinAddr: 0x20C6D4, symSize: 0x30 } + - { offset: 0x2BF554, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FloatingPanelPositionO19mainDimensionAnchorySo08NSLayoutH0CAA19LayoutGuideProvider_pFTf4en_n', symObjAddr: 0x118, symBinAddr: 0x20C7B0, symSize: 0xDC } + - { offset: 0x2BF5A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FloatingPanelPositionOSHAASQWb', symObjAddr: 0x204, symBinAddr: 0x20C88C, symSize: 0x4 } + - { offset: 0x2BF5B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FloatingPanelPositionOACSQAAWl', symObjAddr: 0x208, symBinAddr: 0x20C890, symSize: 0x40 } + - { offset: 0x2BF5C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FloatingPanelPositionOMa', symObjAddr: 0x248, symBinAddr: 0x20C8D0, symSize: 0x10 } + - { offset: 0x2BFCC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterCMa', symObjAddr: 0x10, symBinAddr: 0x20C8E0, symSize: 0x20 } + - { offset: 0x2BFFB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC20getOriginDescription6originSSAA5PlaceCSg_tFZTf4nd_n', symObjAddr: 0x30, symBinAddr: 0x20C900, symSize: 0x800 } + - { offset: 0x2C0970, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC25getDestinationDescription6origin11destinationSSAA5PlaceCSg_AItFZTf4nnd_n', symObjAddr: 0x830, symBinAddr: 0x20D100, symSize: 0xFEC } + - { offset: 0x2C1AB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC19getFormattedMinutesSSyFZTf4d_n', symObjAddr: 0x181C, symBinAddr: 0x20E0EC, symSize: 0x278 } + - { offset: 0x2C1D91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC20getFormattedDistance10directionsSSSayAA0D9DirectionVG_tFZTf4nd_n', symObjAddr: 0x1A94, symBinAddr: 0x20E364, symSize: 0x1A8 } + - { offset: 0x2C1F8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC012getFormattedE010directionsSSSayAA0D9DirectionVG_tFZTf4nd_n', symObjAddr: 0x1C3C, symBinAddr: 0x20E50C, symSize: 0x5BC } + - { offset: 0x2C2718, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataC03setD08favoriteyAA0D0C_tF', symObjAddr: 0x0, symBinAddr: 0x20EAC8, symSize: 0x230 } + - { offset: 0x2C27A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataC12fetchRequestSo07NSFetchH0CyACGyFZ', symObjAddr: 0x230, symBinAddr: 0x20ECF8, symSize: 0x6C } + - { offset: 0x2C27FC, size: 0x8, addend: 0x0, symName: _keypath_get_selector_createDate, symObjAddr: 0x29C, symBinAddr: 0x20ED64, symSize: 0xC } + - { offset: 0x2C2810, size: 0x8, addend: 0x0, symName: _keypath_get_selector_deviceId, symObjAddr: 0x2E0, symBinAddr: 0x20EDA8, symSize: 0xC } + - { offset: 0x2C2824, size: 0x8, addend: 0x0, symName: _keypath_get_selector_distance, symObjAddr: 0x368, symBinAddr: 0x20EE24, symSize: 0xC } + - { offset: 0x2C2838, size: 0x8, addend: 0x0, symName: _keypath_get_selector_label, symObjAddr: 0x3FC, symBinAddr: 0x20EEAC, symSize: 0xC } + - { offset: 0x2C284C, size: 0x8, addend: 0x0, symName: _keypath_get_selector_poiId, symObjAddr: 0x440, symBinAddr: 0x20EEF0, symSize: 0xC } + - { offset: 0x2C2860, size: 0x8, addend: 0x0, symName: _keypath_get_selector_userName, symObjAddr: 0x490, symBinAddr: 0x20EF40, symSize: 0xC } + - { offset: 0x2C2874, size: 0x8, addend: 0x0, symName: _keypath_get_selector_location, symObjAddr: 0x594, symBinAddr: 0x20EF84, symSize: 0xC } + - { offset: 0x2C2CC2, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PILocationC8PenNavUIE12toParametersSDySSypGvg', symObjAddr: 0x0, symBinAddr: 0x20EFDC, symSize: 0x1AC } + - { offset: 0x2C2D60, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PILocationC8PenNavUIE12toParametersSDySSypGvg', symObjAddr: 0x0, symBinAddr: 0x20EFDC, symSize: 0x1AC } + - { offset: 0x2C3261, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC11contentSizeSo6CGSizeVvgTo', symObjAddr: 0x0, symBinAddr: 0x20F188, symSize: 0x3C } + - { offset: 0x2C33AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewCMa', symObjAddr: 0x258, symBinAddr: 0x20F3E0, symSize: 0x20 } + - { offset: 0x2C33DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC11contentSizeSo6CGSizeVvgTo', symObjAddr: 0x0, symBinAddr: 0x20F188, symSize: 0x3C } + - { offset: 0x2C344C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC11contentSizeSo6CGSizeVvsTo', symObjAddr: 0x3C, symBinAddr: 0x20F1C4, symSize: 0x7C } + - { offset: 0x2C34A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0xB8, symBinAddr: 0x20F240, symSize: 0x80 } + - { offset: 0x2C3519, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC5frame5styleACSo6CGRectV_So07UITableF5StyleVtcfcTo', symObjAddr: 0x138, symBinAddr: 0x20F2C0, symSize: 0x74 } + - { offset: 0x2C35B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1AC, symBinAddr: 0x20F334, symSize: 0x7C } + - { offset: 0x2C35E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewCfD', symObjAddr: 0x228, symBinAddr: 0x20F3B0, symSize: 0x30 } + - { offset: 0x2C3BBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellCfETo', symObjAddr: 0x998, symBinAddr: 0x20FD98, symSize: 0x54 } + - { offset: 0x2C3BEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellCMa', symObjAddr: 0x9EC, symBinAddr: 0x20FDEC, symSize: 0x20 } + - { offset: 0x2C3C02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSgWOe', symObjAddr: 0xA94, symBinAddr: 0x20FE0C, symSize: 0x3C } + - { offset: 0x2C3C16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9configure4with10isSelectedyAA0D8CardDataV_SbtFySo7UIImageCSgcfU_TA', symObjAddr: 0xB30, symBinAddr: 0x20FEA8, symSize: 0xC } + - { offset: 0x2C3C2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSgWOy', symObjAddr: 0xB80, symBinAddr: 0x20FEB4, symSize: 0x3C } + - { offset: 0x2C3D4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9imageViewSo07UIImageG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x20F400, symSize: 0x10 } + - { offset: 0x2C3D67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9imageViewSo07UIImageG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x20F400, symSize: 0x10 } + - { offset: 0x2C3DAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9imageViewSo07UIImageG0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x20F410, symSize: 0x34 } + - { offset: 0x2C3DFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x20F444, symSize: 0x10 } + - { offset: 0x2C3E14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x20F444, symSize: 0x10 } + - { offset: 0x2C3E54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x20F454, symSize: 0x34 } + - { offset: 0x2C3EA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC12awakeFromNibyyFTo', symObjAddr: 0x88, symBinAddr: 0x20F488, symSize: 0xC8 } + - { offset: 0x2C3F22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9configure4with10isSelectedyAA0D8CardDataV_SbtF', symObjAddr: 0x150, symBinAddr: 0x20F550, symSize: 0x3D4 } + - { offset: 0x2C40B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9configure4with10isSelectedyAA0D8CardDataV_SbtFySo7UIImageCSgcfU_', symObjAddr: 0x524, symBinAddr: 0x20F924, symSize: 0x1FC } + - { offset: 0x2C41A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC15prepareForReuseyyF', symObjAddr: 0x720, symBinAddr: 0x20FB20, symSize: 0xC0 } + - { offset: 0x2C421C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC15prepareForReuseyyFTo', symObjAddr: 0x7E0, symBinAddr: 0x20FBE0, symSize: 0x28 } + - { offset: 0x2C4253, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x808, symBinAddr: 0x20FC08, symSize: 0x9C } + - { offset: 0x2C42AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x8A4, symBinAddr: 0x20FCA4, symSize: 0x9C } + - { offset: 0x2C42DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x940, symBinAddr: 0x20FD40, symSize: 0x28 } + - { offset: 0x2C42F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellCfD', symObjAddr: 0x968, symBinAddr: 0x20FD68, symSize: 0x30 } + - { offset: 0x2C46B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV13showsUsernameSbvpZ', symObjAddr: 0x3ED8, symBinAddr: 0x3972E8, symSize: 0x0 } + - { offset: 0x2C46D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV15showsBackButtonSbvpZ', symObjAddr: 0x3ED9, symBinAddr: 0x3972E9, symSize: 0x0 } + - { offset: 0x2C46EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV17showsDebugOptionsSbvpZ', symObjAddr: 0x3EDA, symBinAddr: 0x3972EA, symSize: 0x0 } + - { offset: 0x2C4706, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV27updatesUserLocationSmoothlySbvpZ', symObjAddr: 0x3EDB, symBinAddr: 0x3972EB, symSize: 0x0 } + - { offset: 0x2C4720, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV16isSimulationModeSbvpZ', symObjAddr: 0x3EDC, symBinAddr: 0x3972EC, symSize: 0x0 } + - { offset: 0x2C473A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV8mapStateAA03MapF0OvpZ', symObjAddr: 0x3EDD, symBinAddr: 0x3972ED, symSize: 0x0 } + - { offset: 0x2C4AC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x20FEF0, symSize: 0xFC } + - { offset: 0x2C4B6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorCMa', symObjAddr: 0x234, symBinAddr: 0x210124, symSize: 0x20 } + - { offset: 0x2C4BAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x20FEF0, symSize: 0xFC } + - { offset: 0x2C4C0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xFC, symBinAddr: 0x20FFEC, symSize: 0xE0 } + - { offset: 0x2C4C44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1DC, symBinAddr: 0x2100CC, symSize: 0x28 } + - { offset: 0x2C4C5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorCfD', symObjAddr: 0x204, symBinAddr: 0x2100F4, symSize: 0x30 } + - { offset: 0x2C52A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCfETo', symObjAddr: 0x1E48, symBinAddr: 0x211F8C, symSize: 0xC8 } + - { offset: 0x2C52D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCMa', symObjAddr: 0x1F10, symBinAddr: 0x212054, symSize: 0x20 } + - { offset: 0x2C52FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC21dimensionToggleButtonSo8UIButtonCvgAFyXEfU_yycfU_TA', symObjAddr: 0x20E0, symBinAddr: 0x212224, symSize: 0x20 } + - { offset: 0x2C530E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC19floorSelectorButtonSo8UIButtonCvgAFyXEfU_yycfU_TA', symObjAddr: 0x216C, symBinAddr: 0x212244, symSize: 0x20 } + - { offset: 0x2C5322, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC14recenterButtonSo8UIButtonCvgAFyXEfU_yycfU_TA', symObjAddr: 0x218C, symBinAddr: 0x212264, symSize: 0x20 } + - { offset: 0x2C5336, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerCMa', symObjAddr: 0x21D0, symBinAddr: 0x2122A8, symSize: 0x44 } + - { offset: 0x2C534A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC17fitToCampusButtonSo8UIButtonCvgAFyXEfU_yycfU_TA', symObjAddr: 0x2214, symBinAddr: 0x2122EC, symSize: 0x20 } + - { offset: 0x2C577F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCACycfc', symObjAddr: 0xF60, symBinAddr: 0x2110A4, symSize: 0x124 } + - { offset: 0x2C57CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCACycfcTo', symObjAddr: 0x1084, symBinAddr: 0x2111C8, symSize: 0x20 } + - { offset: 0x2C5832, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x10A4, symBinAddr: 0x2111E8, symSize: 0x134 } + - { offset: 0x2C5892, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x11D8, symBinAddr: 0x21131C, symSize: 0x28 } + - { offset: 0x2C58C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC9setupViewyyF', symObjAddr: 0x1200, symBinAddr: 0x211344, symSize: 0x5B4 } + - { offset: 0x2C59C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC15getOptionButton33_1FAC0ECA688D308BCC62BF45E6F7EADALL9imageNameSo8UIButtonCSS_tF', symObjAddr: 0x17B4, symBinAddr: 0x2118F8, symSize: 0x498 } + - { offset: 0x2C5AAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC8setFlooryy7Penguin0G0CSgF', symObjAddr: 0x1C4C, symBinAddr: 0x211D90, symSize: 0x1A0 } + - { offset: 0x2C5B94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1DEC, symBinAddr: 0x211F30, symSize: 0x2C } + - { offset: 0x2C5BF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCfD', symObjAddr: 0x1E18, symBinAddr: 0x211F5C, symSize: 0x30 } + - { offset: 0x2C5C24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC13separatorViewSo6UIViewCvgTf4d_n', symObjAddr: 0x1F30, symBinAddr: 0x212074, symSize: 0x18C } + - { offset: 0x2C603D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9stopLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x21231C, symSize: 0x10 } + - { offset: 0x2C628C, size: 0x8, addend: 0x0, symName: '_$sSlsE9dropFirsty11SubSequenceQzSiFSS_Tg5Tf4ng_n', symObjAddr: 0x1DF8, symBinAddr: 0x213FD4, symSize: 0x9C } + - { offset: 0x2C68CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellCfETo', symObjAddr: 0x1BE8, symBinAddr: 0x213F04, symSize: 0x68 } + - { offset: 0x2C68FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellCMa', symObjAddr: 0x1C50, symBinAddr: 0x213F6C, symSize: 0x20 } + - { offset: 0x2C690F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSgWOc', symObjAddr: 0x1CB4, symBinAddr: 0x213F8C, symSize: 0x48 } + - { offset: 0x2C694F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9configure4withyAA05RouteD0VSg_tFSbAA5PlaceCXEfU_TA', symObjAddr: 0x1EF8, symBinAddr: 0x214094, symSize: 0x1C } + - { offset: 0x2C6A06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9stopLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x21231C, symSize: 0x10 } + - { offset: 0x2C6A1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9stopLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x21231C, symSize: 0x10 } + - { offset: 0x2C6A64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9stopLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x21232C, symSize: 0x34 } + - { offset: 0x2C6AB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC15stopLetterLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x212360, symSize: 0x10 } + - { offset: 0x2C6ACB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC15stopLetterLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x212360, symSize: 0x10 } + - { offset: 0x2C6B06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC15stopLetterLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x212370, symSize: 0x34 } + - { offset: 0x2C6B55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x2123A4, symSize: 0x10 } + - { offset: 0x2C6B6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x2123A4, symSize: 0x10 } + - { offset: 0x2C6BA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x2123B4, symSize: 0x34 } + - { offset: 0x2C6BF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x2123E8, symSize: 0x10 } + - { offset: 0x2C6C0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x2123E8, symSize: 0x10 } + - { offset: 0x2C6C4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC11lengthLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x2123F8, symSize: 0x34 } + - { offset: 0x2C6C99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC09iconImageF0So07UIImageF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x21242C, symSize: 0x10 } + - { offset: 0x2C6CB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC09iconImageF0So07UIImageF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x21242C, symSize: 0x10 } + - { offset: 0x2C6CF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC09iconImageF0So07UIImageF0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x21243C, symSize: 0x34 } + - { offset: 0x2C6D40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC12awakeFromNibyyFTo', symObjAddr: 0x154, symBinAddr: 0x212470, symSize: 0x94 } + - { offset: 0x2C6E23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9configure4withyAA05RouteD0VSg_tF', symObjAddr: 0x1E8, symBinAddr: 0x212504, symSize: 0x688 } + - { offset: 0x2C70FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9configure4withyAA05RouteD0VSg_tFSbAA5PlaceCXEfU_', symObjAddr: 0x870, symBinAddr: 0x212B8C, symSize: 0x160 } + - { offset: 0x2C716A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC23showArrivalConfirmation33_2BE4A475C9A281DA0308C98892968072LL3foryAA5PlaceCSg_tF', symObjAddr: 0x9D0, symBinAddr: 0x212CEC, symSize: 0x554 } + - { offset: 0x2C7672, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC23showArrivalConfirmation33_2BE4A475C9A281DA0308C98892968072LL3foryAA5PlaceCSg_tFySo7UIImageCSgcfU0_', symObjAddr: 0xF24, symBinAddr: 0x213240, symSize: 0x90 } + - { offset: 0x2C7827, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC04showD4Info33_2BE4A475C9A281DA0308C98892968072LLyyAA05RouteD0VSgF', symObjAddr: 0xFB4, symBinAddr: 0x2132D0, symSize: 0xA8C } + - { offset: 0x2C7C9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1A40, symBinAddr: 0x213D5C, symSize: 0xA8 } + - { offset: 0x2C7CCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1AE8, symBinAddr: 0x213E04, symSize: 0xA8 } + - { offset: 0x2C7D02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1B90, symBinAddr: 0x213EAC, symSize: 0x28 } + - { offset: 0x2C7D16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellCfD', symObjAddr: 0x1BB8, symBinAddr: 0x213ED4, symSize: 0x30 } + - { offset: 0x2C80CB, size: 0x8, addend: 0x0, symName: '_$sSlsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lFSS17UnicodeScalarViewV_s0D0O0E0Vs5NeverOTg5076$s8PenNavUI9XMLParserV6padHex33_F79CF21C173C50BA5CDF33ADFD764F11LLySSSgSSFs7d2O6E8VAJXEfU_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x2140B0, symSize: 0x33C } + - { offset: 0x2C8279, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseFillyAA3DOMO0F0OSSKF', symObjAddr: 0x33C, symBinAddr: 0x2143EC, symSize: 0x418 } + - { offset: 0x2C85D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV16parseURLSelector33_F79CF21C173C50BA5CDF33ADFD764F11LL4data10Foundation3URLVSgSS_tKF', symObjAddr: 0x798, symBinAddr: 0x214804, symSize: 0x678 } + - { offset: 0x2C89C0, size: 0x8, addend: 0x0, symName: '_$sSS17UnicodeScalarViewV8distance4from2toSiSS5IndexV_AGtF', symObjAddr: 0xE10, symBinAddr: 0x214E7C, symSize: 0x20C } + - { offset: 0x2C89E5, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV28validateInclusiveScalarIndexySS0F0VAEF', symObjAddr: 0x101C, symBinAddr: 0x215088, symSize: 0x94 } + - { offset: 0x2C8A12, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV31validateInclusiveSubscalarIndexySS0F0VAEF', symObjAddr: 0x10B0, symBinAddr: 0x21511C, symSize: 0x6C } + - { offset: 0x2C8A3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseColorRGBf33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSS_tKFTf4nd_n', symObjAddr: 0x111C, symBinAddr: 0x215188, symSize: 0x798 } + - { offset: 0x2C9081, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseColorRGBi33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSS_tKFTf4nd_n', symObjAddr: 0x18B4, symBinAddr: 0x215920, symSize: 0x874 } + - { offset: 0x2C9755, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV13parseColorRGB33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSgSS_tKFTf4nd_n', symObjAddr: 0x2128, symBinAddr: 0x216194, symSize: 0x39C } + - { offset: 0x2C99F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV6padHex33_F79CF21C173C50BA5CDF33ADFD764F11LLySSSgSSFTf4nd_n', symObjAddr: 0x24C4, symBinAddr: 0x216530, symSize: 0x124 } + - { offset: 0x2C9D7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV13parseColorHex33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSgSS_tKFTf4nd_n', symObjAddr: 0x25E8, symBinAddr: 0x216654, symSize: 0x7E4 } + - { offset: 0x2CA33C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseColorP333_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSgSS_tKFTf4nd_n', symObjAddr: 0x2DCC, symBinAddr: 0x216E38, symSize: 0x944 } + - { offset: 0x2CAA81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseColorNone33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSgSS_tFTf4nd_n', symObjAddr: 0x3750, symBinAddr: 0x21777C, symSize: 0x150 } + - { offset: 0x2CAB68, size: 0x8, addend: 0x0, symName: '_$sSlsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lFSS17UnicodeScalarViewV_s0D0O0E0Vs5NeverOTg5076$s8PenNavUI9XMLParserV6padHex33_F79CF21C173C50BA5CDF33ADFD764F11LLySSSgSSFs7d2O6E8VAJXEfU_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x2140B0, symSize: 0x33C } + - { offset: 0x2CB47D, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE04hashB0Sivg8PenNavUI11RouteOptionV0gH3KeyO_Tg5', symObjAddr: 0x0, symBinAddr: 0x2178CC, symSize: 0x138 } + - { offset: 0x2CB4D4, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE04hashB0Sivg8PenNavUI11RouteOptionV0gH3KeyO_Tg5', symObjAddr: 0x0, symBinAddr: 0x2178CC, symSize: 0x138 } + - { offset: 0x2CB5AA, size: 0x8, addend: 0x0, symName: '_$ss30_dictionaryDownCastConditionalySDyq0_q1_GSgSDyxq_GSHRzSHR0_r2_lFSS_ypSSSbTg5', symObjAddr: 0x138, symBinAddr: 0x217A04, symSize: 0x254 } + - { offset: 0x2CB6E9, size: 0x8, addend: 0x0, symName: '_$ss30_dictionaryDownCastConditionalySDyq0_q1_GSgSDyxq_GSHRzSHR0_r2_lFSS_ypS2STg5', symObjAddr: 0x38C, symBinAddr: 0x217C58, symSize: 0x278 } + - { offset: 0x2CB81C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x604, symBinAddr: 0x217ED0, symSize: 0xC } + - { offset: 0x2CB838, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSHAASH9hashValueSivgTW', symObjAddr: 0x610, symBinAddr: 0x217EDC, symSize: 0x8 } + - { offset: 0x2CB854, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x618, symBinAddr: 0x217EE4, symSize: 0x110 } + - { offset: 0x2CB8BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x728, symBinAddr: 0x217FF4, symSize: 0x8 } + - { offset: 0x2CBDF0, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV5merge_8isUnique16uniquingKeysWithyqd__n_Sbq_q__q_tKXEtKSTRd__x_q_t7ElementRtd__lFSS_SbSaySS_SbtGTg5012$sSD20uniquegh33ValuesSDyxq_Gqd__n_tcSTRd__x_q_t7i31Rtd__lufcq_q__q_tKXEfU_SS_SbSayU8_SbtGTG5Tf1nncn_n', symObjAddr: 0x8C0, symBinAddr: 0x21818C, symSize: 0x36C } + - { offset: 0x2CC12F, size: 0x8, addend: 0x0, symName: '_$sSS3key_yp5valuetWOh', symObjAddr: 0x121C, symBinAddr: 0x218A68, symSize: 0x40 } + - { offset: 0x2CC19B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOMa', symObjAddr: 0x1A64, symBinAddr: 0x21914C, symSize: 0x10 } + - { offset: 0x2CC1AF, size: 0x8, addend: 0x0, symName: ___swift_memcpy2_1, symObjAddr: 0x1A74, symBinAddr: 0x21915C, symSize: 0xC } + - { offset: 0x2CC1C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionVwet', symObjAddr: 0x1A80, symBinAddr: 0x219168, symSize: 0xA4 } + - { offset: 0x2CC1D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionVwst', symObjAddr: 0x1B24, symBinAddr: 0x21920C, symSize: 0xB0 } + - { offset: 0x2CC1EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionVMa', symObjAddr: 0x1BD4, symBinAddr: 0x2192BC, symSize: 0x10 } + - { offset: 0x2CC1FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOs12CaseIterableAA8AllCasessAFP_SlWT', symObjAddr: 0x1BE4, symBinAddr: 0x2192CC, symSize: 0x4 } + - { offset: 0x2CC213, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI11RouteOptionV0dE3KeyOGSayxGSlsWl', symObjAddr: 0x1BE8, symBinAddr: 0x2192D0, symSize: 0x44 } + - { offset: 0x2CC227, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI11RouteOptionV0dE3KeyOGMa', symObjAddr: 0x1C2C, symBinAddr: 0x219314, symSize: 0x50 } + - { offset: 0x2CC23B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSHAASQWb', symObjAddr: 0x1C7C, symBinAddr: 0x219364, symSize: 0x4 } + - { offset: 0x2CC24F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOAESQAAWl', symObjAddr: 0x1C80, symBinAddr: 0x219368, symSize: 0x40 } + - { offset: 0x2CC2A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x730, symBinAddr: 0x217FFC, symSize: 0x2C } + - { offset: 0x2CC2CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x75C, symBinAddr: 0x218028, symSize: 0xF4 } + - { offset: 0x2CC308, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOs12CaseIterableAAsAFP8allCases03AllJ0QzvgZTW', symObjAddr: 0x850, symBinAddr: 0x21811C, symSize: 0x38 } + - { offset: 0x2CC36E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x888, symBinAddr: 0x218154, symSize: 0x38 } + - { offset: 0x2CC3D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV12routeOptionsSayACGvgZTf4d_n', symObjAddr: 0xC2C, symBinAddr: 0x2184F8, symSize: 0x2F4 } + - { offset: 0x2CC5B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV22routeOptionsDictionarySDySSSbGvgZTf4d_n', symObjAddr: 0xF20, symBinAddr: 0x2187EC, symSize: 0x27C } + - { offset: 0x2CC7F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV04saveD7OptionsyySayACGFZTf4nd_n', symObjAddr: 0x125C, symBinAddr: 0x218AA8, symSize: 0x380 } + - { offset: 0x2CCA88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV07enabledD7OptionsSayACGvgZTf4d_n', symObjAddr: 0x15DC, symBinAddr: 0x218E28, symSize: 0x324 } + - { offset: 0x2CCD6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x1CC0, symBinAddr: 0x2193A8, symSize: 0x5C } + - { offset: 0x2CD12B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5color12defaultColor4icon0G4IconACSo7UIColorCSg_AISo7UIImageCSgAMtcfc', symObjAddr: 0x0, symBinAddr: 0x219404, symSize: 0x2CC } + - { offset: 0x2CD42C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewCfETo', symObjAddr: 0xC14, symBinAddr: 0x21A018, symSize: 0x38 } + - { offset: 0x2CD45B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewCMa', symObjAddr: 0xC4C, symBinAddr: 0x21A050, symSize: 0x20 } + - { offset: 0x2CD59C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5color12defaultColor4icon0G4IconACSo7UIColorCSg_AISo7UIImageCSgAMtcfc', symObjAddr: 0x0, symBinAddr: 0x219404, symSize: 0x2CC } + - { offset: 0x2CD68B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC011adjustImageE5FrameyyF', symObjAddr: 0x2CC, symBinAddr: 0x2196D0, symSize: 0xE8 } + - { offset: 0x2CD7C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3B4, symBinAddr: 0x2197B8, symSize: 0x148 } + - { offset: 0x2CD830, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x4FC, symBinAddr: 0x219900, symSize: 0x28 } + - { offset: 0x2CD858, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC14layoutSubviewsyyFTo', symObjAddr: 0x524, symBinAddr: 0x219928, symSize: 0x5C } + - { offset: 0x2CD8B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC4drawyySo6CGRectVF', symObjAddr: 0x580, symBinAddr: 0x219984, symSize: 0x540 } + - { offset: 0x2CDC04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC4drawyySo6CGRectVFTo', symObjAddr: 0xAC0, symBinAddr: 0x219EC4, symSize: 0x58 } + - { offset: 0x2CDC18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC11adjustFrameyyF', symObjAddr: 0xB18, symBinAddr: 0x219F1C, symSize: 0x98 } + - { offset: 0x2CDC86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC18defaultCircleYAxis12CoreGraphics7CGFloatVyF', symObjAddr: 0xBB0, symBinAddr: 0x219FB4, symSize: 0x8 } + - { offset: 0x2CDCCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xBB8, symBinAddr: 0x219FBC, symSize: 0x2C } + - { offset: 0x2CDD29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewCfD', symObjAddr: 0xBE4, symBinAddr: 0x219FE8, symSize: 0x30 } + - { offset: 0x2CDDE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC12savedParkingACSgvgZTf4d_n', symObjAddr: 0xC6C, symBinAddr: 0x21A070, symSize: 0x3B8 } + - { offset: 0x2CDEFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC8locationACvgZTf4d_n', symObjAddr: 0x1024, symBinAddr: 0x21A428, symSize: 0x344 } + - { offset: 0x2CE38F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16MainPanelSectionO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x21A76C, symSize: 0x10 } + - { offset: 0x2CE3D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16MainPanelSectionO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x21A76C, symSize: 0x10 } + - { offset: 0x2CE884, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF', symObjAddr: 0x2C8, symBinAddr: 0x21A9D8, symSize: 0x1B8 } + - { offset: 0x2CEA33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC17layoutConstraints33_B3F6FCFEFDF39B31B996C92E79088F06LL_3forSaySo18NSLayoutConstraintCGAA0F13GuideProvider_p_So0s5YAxisG0CtF', symObjAddr: 0x480, symBinAddr: 0x21AB90, symSize: 0x39C } + - { offset: 0x2CEC0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC17layoutConstraints33_B3F6FCFEFDF39B31B996C92E79088F06LL_3forSaySo18NSLayoutConstraintCGAA0F13GuideProvider_p_So0s5XAxisG0CtF', symObjAddr: 0x81C, symBinAddr: 0x21AF2C, symSize: 0x3A0 } + - { offset: 0x2CEE72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF', symObjAddr: 0xDE4, symBinAddr: 0x21B4F4, symSize: 0x2C8 } + - { offset: 0x2CF108, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCfETo', symObjAddr: 0x13AC, symBinAddr: 0x21BA88, symSize: 0x10 } + - { offset: 0x2CF1F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF', symObjAddr: 0x13BC, symBinAddr: 0x21BA98, symSize: 0x390 } + - { offset: 0x2CF50E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorCMa', symObjAddr: 0x1828, symBinAddr: 0x21BEC0, symSize: 0x20 } + - { offset: 0x2CF522, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorCMa', symObjAddr: 0x1864, symBinAddr: 0x21BEFC, symSize: 0x20 } + - { offset: 0x2CF536, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCMa', symObjAddr: 0x18A0, symBinAddr: 0x21BF38, symSize: 0x20 } + - { offset: 0x2CF54A, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintCMa', symObjAddr: 0x18DC, symBinAddr: 0x21BF74, symSize: 0x44 } + - { offset: 0x2CF578, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC14referenceGuideAA0def9ReferenceI0OvgTo', symObjAddr: 0x21C, symBinAddr: 0x21A950, symSize: 0x10 } + - { offset: 0x2CF590, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC14referenceGuideAA0def9ReferenceI0OvgTo', symObjAddr: 0x21C, symBinAddr: 0x21A950, symSize: 0x10 } + - { offset: 0x2CF5AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC14referenceGuideAA0def9ReferenceI0Ovg', symObjAddr: 0x22C, symBinAddr: 0x21A960, symSize: 0x10 } + - { offset: 0x2CF5DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC13referenceEdgeAA0de9ReferenceI0OvgTo', symObjAddr: 0x23C, symBinAddr: 0x21A970, symSize: 0x10 } + - { offset: 0x2CF5F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC13referenceEdgeAA0de9ReferenceI0OvgTo', symObjAddr: 0x23C, symBinAddr: 0x21A970, symSize: 0x10 } + - { offset: 0x2CF61B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorCACycfc', symObjAddr: 0x26C, symBinAddr: 0x21A980, symSize: 0x2C } + - { offset: 0x2CF674, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorCACycfcTo', symObjAddr: 0x298, symBinAddr: 0x21A9AC, symSize: 0x2C } + - { offset: 0x2CF7A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0OvgTo', symObjAddr: 0xD6C, symBinAddr: 0x21B47C, symSize: 0x10 } + - { offset: 0x2CF7C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0OvgTo', symObjAddr: 0xD6C, symBinAddr: 0x21B47C, symSize: 0x10 } + - { offset: 0x2CF7DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovg', symObjAddr: 0xD7C, symBinAddr: 0x21B48C, symSize: 0x10 } + - { offset: 0x2CF7F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorCACycfc', symObjAddr: 0xD8C, symBinAddr: 0x21B49C, symSize: 0x2C } + - { offset: 0x2CF852, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorCACycfcTo', symObjAddr: 0xDB8, symBinAddr: 0x21B4C8, symSize: 0x2C } + - { offset: 0x2CF8D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0OvgTo', symObjAddr: 0x12E0, symBinAddr: 0x21B9F0, symSize: 0x10 } + - { offset: 0x2CF8EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0OvgTo', symObjAddr: 0x12E0, symBinAddr: 0x21B9F0, symSize: 0x10 } + - { offset: 0x2CF907, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovg', symObjAddr: 0x12F0, symBinAddr: 0x21BA00, symSize: 0x10 } + - { offset: 0x2CF938, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC20contentBoundingGuideAA0deg7ContentjK0OvgTo', symObjAddr: 0x1300, symBinAddr: 0x21BA10, symSize: 0x10 } + - { offset: 0x2CF950, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC20contentBoundingGuideAA0deg7ContentjK0OvgTo', symObjAddr: 0x1300, symBinAddr: 0x21BA10, symSize: 0x10 } + - { offset: 0x2CF96B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC20contentBoundingGuideAA0deg7ContentjK0Ovg', symObjAddr: 0x1310, symBinAddr: 0x21BA20, symSize: 0x10 } + - { offset: 0x2CF988, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCACycfc', symObjAddr: 0x1320, symBinAddr: 0x21BA30, symSize: 0x2C } + - { offset: 0x2CF9E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCACycfcTo', symObjAddr: 0x134C, symBinAddr: 0x21BA5C, symSize: 0x2C } + - { offset: 0x2CFDF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC15reportIssueViewAA06HapticJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x21BFB8, symSize: 0x20 } + - { offset: 0x2CFF58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellCfETo', symObjAddr: 0x340, symBinAddr: 0x21C2F8, symSize: 0x10 } + - { offset: 0x2CFF87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellCMa', symObjAddr: 0x350, symBinAddr: 0x21C308, symSize: 0x20 } + - { offset: 0x2D000F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC15reportIssueViewAA06HapticJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x21BFB8, symSize: 0x20 } + - { offset: 0x2D006F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC15reportIssueViewAA06HapticJ0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x21BFD8, symSize: 0x14 } + - { offset: 0x2D010B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x34, symBinAddr: 0x21BFEC, symSize: 0xB0 } + - { offset: 0x2D01A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC16setupReportIssue33_E2B55608484A2C4046C45CB8D998CE6DLLyyFyycfU_', symObjAddr: 0xE4, symBinAddr: 0x21C09C, symSize: 0xE0 } + - { offset: 0x2D0210, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0x1C4, symBinAddr: 0x21C17C, symSize: 0xBC } + - { offset: 0x2D028C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x280, symBinAddr: 0x21C238, symSize: 0x90 } + - { offset: 0x2D02C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellCfD', symObjAddr: 0x310, symBinAddr: 0x21C2C8, symSize: 0x30 } + - { offset: 0x2D064D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x2A4, symBinAddr: 0x21C5CC, symSize: 0x20 } + - { offset: 0x2D0B48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellCfETo', symObjAddr: 0xD80, symBinAddr: 0x21D0A8, symSize: 0x90 } + - { offset: 0x2D0B77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellCMa', symObjAddr: 0xE10, symBinAddr: 0x21D138, symSize: 0x20 } + - { offset: 0x2D0D18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x2A4, symBinAddr: 0x21C5CC, symSize: 0x20 } + - { offset: 0x2D0D78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12seeAllButtonSo8UIButtonCSgvsTo', symObjAddr: 0x2C4, symBinAddr: 0x21C5EC, symSize: 0x14 } + - { offset: 0x2D0DC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionViewSo012UICollectionG0CSgvgTo', symObjAddr: 0x2D8, symBinAddr: 0x21C600, symSize: 0x20 } + - { offset: 0x2D0E23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionViewSo012UICollectionG0CSgvsTo', symObjAddr: 0x2F8, symBinAddr: 0x21C620, symSize: 0x14 } + - { offset: 0x2D0E74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC10scrollViewSo08UIScrollG0CSgvgTo', symObjAddr: 0x30C, symBinAddr: 0x21C634, symSize: 0x20 } + - { offset: 0x2D0ECE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC10scrollViewSo08UIScrollG0CSgvsTo', symObjAddr: 0x32C, symBinAddr: 0x21C654, symSize: 0x14 } + - { offset: 0x2D0F1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC15collectionWidthSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x340, symBinAddr: 0x21C668, symSize: 0x20 } + - { offset: 0x2D0F79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC15collectionWidthSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x360, symBinAddr: 0x21C688, symSize: 0x14 } + - { offset: 0x2D104C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC19collectionViewWidth12CoreGraphics7CGFloatVvg', symObjAddr: 0x374, symBinAddr: 0x21C69C, symSize: 0x178 } + - { offset: 0x2D13E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12awakeFromNibyyFTo', symObjAddr: 0x4EC, symBinAddr: 0x21C814, symSize: 0xA0 } + - { offset: 0x2D1459, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC06updateD010categoriesySay7Penguin11POICategoryVG_tF', symObjAddr: 0x58C, symBinAddr: 0x21C8B4, symSize: 0x130 } + - { offset: 0x2D15AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12seeAllActionyySo8UIButtonCFTo', symObjAddr: 0x6BC, symBinAddr: 0x21C9E4, symSize: 0x70 } + - { offset: 0x2D15F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionG0C_SitFTo', symObjAddr: 0x72C, symBinAddr: 0x21CA54, symSize: 0x58 } + - { offset: 0x2D16A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_13cellForItemAtSo012UICollectiongE0CSo0lG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x784, symBinAddr: 0x21CAAC, symSize: 0x190 } + - { offset: 0x2D1755, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_6layout13sizeForItemAtSo6CGSizeVSo012UICollectionG0C_So0nG6LayoutC10Foundation9IndexPathVtFTo', symObjAddr: 0x914, symBinAddr: 0x21CC3C, symSize: 0x114 } + - { offset: 0x2D1821, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_15didSelectItemAtySo012UICollectionG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xA28, symBinAddr: 0x21CD50, symSize: 0xBC } + - { offset: 0x2D184B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0xAE4, symBinAddr: 0x21CE0C, symSize: 0x10C } + - { offset: 0x2D188C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0xBF0, symBinAddr: 0x21CF18, symSize: 0x48 } + - { offset: 0x2D18A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xC38, symBinAddr: 0x21CF60, symSize: 0xF0 } + - { offset: 0x2D18D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xD28, symBinAddr: 0x21D050, symSize: 0x28 } + - { offset: 0x2D18E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellCfD', symObjAddr: 0xD50, symBinAddr: 0x21D078, symSize: 0x30 } + - { offset: 0x2D190A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionG0C_SitFTf4ddn_n', symObjAddr: 0xE30, symBinAddr: 0x21D158, symSize: 0x7C } + - { offset: 0x2D1AC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_15didSelectItemAtySo012UICollectionG0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0xEAC, symBinAddr: 0x21D1D4, symSize: 0x10C } + - { offset: 0x2D1EA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x21D2E0, symSize: 0x10 } + - { offset: 0x2D2014, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewCfETo', symObjAddr: 0x2C0, symBinAddr: 0x21D5A0, symSize: 0x10 } + - { offset: 0x2D2043, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewCMa', symObjAddr: 0x2D0, symBinAddr: 0x21D5B0, symSize: 0x20 } + - { offset: 0x2D20C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x21D2E0, symSize: 0x10 } + - { offset: 0x2D20E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x21D2E0, symSize: 0x10 } + - { offset: 0x2D2127, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC07contentE0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x21D2F0, symSize: 0x34 } + - { offset: 0x2D2187, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x44, symBinAddr: 0x21D324, symSize: 0x94 } + - { offset: 0x2D2228, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xD8, symBinAddr: 0x21D3B8, symSize: 0x94 } + - { offset: 0x2D2288, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC10commonInit33_E415634ACC503914C6E8F859F84EEA83LLyyF', symObjAddr: 0x16C, symBinAddr: 0x21D44C, symSize: 0x124 } + - { offset: 0x2D2352, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewCfD', symObjAddr: 0x290, symBinAddr: 0x21D570, symSize: 0x30 } + - { offset: 0x2D29DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewCfETo', symObjAddr: 0xE6C, symBinAddr: 0x21E43C, symSize: 0x58 } + - { offset: 0x2D2A09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewCMa', symObjAddr: 0xEC4, symBinAddr: 0x21E494, symSize: 0x20 } + - { offset: 0x2D2A1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC16hideUnmuteButtonyyFyycfU_TA', symObjAddr: 0xF08, symBinAddr: 0x21E4D8, symSize: 0x20 } + - { offset: 0x2D2A31, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xF28, symBinAddr: 0x21E4F8, symSize: 0x10 } + - { offset: 0x2D2A45, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xF38, symBinAddr: 0x21E508, symSize: 0x8 } + - { offset: 0x2D2A59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC16hideUnmuteButtonyyFyycfU0_TA', symObjAddr: 0xF40, symBinAddr: 0x21E510, symSize: 0x20 } + - { offset: 0x2D2A6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC14hideMuteButtonyyFyycfU_TA', symObjAddr: 0xF60, symBinAddr: 0x21E530, symSize: 0x20 } + - { offset: 0x2D2A81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC14hideMuteButtonyyFyycfU0_TA', symObjAddr: 0xF80, symBinAddr: 0x21E550, symSize: 0x20 } + - { offset: 0x2D2A95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC16muteButtonTappedyyFyycfU_TA', symObjAddr: 0xFA0, symBinAddr: 0x21E570, symSize: 0x18 } + - { offset: 0x2D2BAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x21D5D0, symSize: 0x10 } + - { offset: 0x2D2BC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x21D5D0, symSize: 0x10 } + - { offset: 0x2D2C09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC07contentF0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x21D5E0, symSize: 0x34 } + - { offset: 0x2D2C58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC05stackF0So07UIStackF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x21D614, symSize: 0x10 } + - { offset: 0x2D2C70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC05stackF0So07UIStackF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x21D614, symSize: 0x10 } + - { offset: 0x2D2CB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC05stackF0So07UIStackF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x21D624, symSize: 0x34 } + - { offset: 0x2D2CFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC10muteButtonSo8UIButtonCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x21D658, symSize: 0x10 } + - { offset: 0x2D2D17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC10muteButtonSo8UIButtonCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x21D658, symSize: 0x10 } + - { offset: 0x2D2D57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC10muteButtonSo8UIButtonCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x21D668, symSize: 0x34 } + - { offset: 0x2D2DA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC12unmuteButtonSo8UIButtonCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x21D69C, symSize: 0x10 } + - { offset: 0x2D2DBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC12unmuteButtonSo8UIButtonCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x21D69C, symSize: 0x10 } + - { offset: 0x2D2DF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC12unmuteButtonSo8UIButtonCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x21D6AC, symSize: 0x34 } + - { offset: 0x2D2E59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x110, symBinAddr: 0x21D6E0, symSize: 0xB8 } + - { offset: 0x2D2ED5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1C8, symBinAddr: 0x21D798, symSize: 0xA4 } + - { offset: 0x2D2F0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x26C, symBinAddr: 0x21D83C, symSize: 0x28 } + - { offset: 0x2D2FE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC10commonInit33_67EF21852787D1A38B8194476BDF5B6FLLyyF', symObjAddr: 0x294, symBinAddr: 0x21D864, symSize: 0x494 } + - { offset: 0x2D31E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC16muteButtonTappedyyFTo', symObjAddr: 0x74C, symBinAddr: 0x21DD1C, symSize: 0x28 } + - { offset: 0x2D31FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC17unmuteButonTappedyyFTo', symObjAddr: 0xACC, symBinAddr: 0x21E09C, symSize: 0x28 } + - { offset: 0x2D320F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewCfD', symObjAddr: 0xE3C, symBinAddr: 0x21E40C, symSize: 0x30 } + - { offset: 0x2D35D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwcp', symObjAddr: 0x5C, symBinAddr: 0x21E5B4, symSize: 0x54 } + - { offset: 0x2D35E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwca', symObjAddr: 0xB0, symBinAddr: 0x21E608, symSize: 0x8C } + - { offset: 0x2D35F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwta', symObjAddr: 0x150, symBinAddr: 0x21E694, symSize: 0x54 } + - { offset: 0x2D360C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwet', symObjAddr: 0x1A4, symBinAddr: 0x21E6E8, symSize: 0x48 } + - { offset: 0x2D3620, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwst', symObjAddr: 0x1EC, symBinAddr: 0x21E730, symSize: 0x4C } + - { offset: 0x2D3634, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVMa', symObjAddr: 0x238, symBinAddr: 0x21E77C, symSize: 0x10 } + - { offset: 0x2D3B29, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin5FloorC_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5F17CGvgSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0xA28, symBinAddr: 0x21ED40, symSize: 0x100 } + - { offset: 0x2D3DA2, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin5FloorC_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5F17CGvgSbAG_AGtXEfU_Tf1nnncn_n', symObjAddr: 0xB28, symBinAddr: 0x21EE40, symSize: 0x484 } + - { offset: 0x2D427A, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry7Penguin5FloorCG_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5J17CGvgSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0xFAC, symBinAddr: 0x21F2C4, symSize: 0xF4 } + - { offset: 0x2D43EA, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin5FloorC_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5G17CGvgSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x10A0, symBinAddr: 0x21F3B8, symSize: 0x26C } + - { offset: 0x2D4785, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin5FloorC_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5H17CGvgSbAG_AGtXEfU_Tf1nnnnc_n', symObjAddr: 0x130C, symBinAddr: 0x21F624, symSize: 0x2E8 } + - { offset: 0x2D4A44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs0G3KeyAAWl', symObjAddr: 0x2128, symBinAddr: 0x2203D8, symSize: 0x40 } + - { offset: 0x2D4A58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseVMa', symObjAddr: 0x22BC, symBinAddr: 0x220418, symSize: 0x10 } + - { offset: 0x2D4A6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOMa', symObjAddr: 0x2430, symBinAddr: 0x220428, symSize: 0x10 } + - { offset: 0x2D4A80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOSHAASQWb', symObjAddr: 0x2440, symBinAddr: 0x220438, symSize: 0x4 } + - { offset: 0x2D4A94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFSQAAWl', symObjAddr: 0x2444, symBinAddr: 0x22043C, symSize: 0x40 } + - { offset: 0x2D4AA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2484, symBinAddr: 0x22047C, symSize: 0x4 } + - { offset: 0x2D4ABC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2488, symBinAddr: 0x220480, symSize: 0x40 } + - { offset: 0x2D4AD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x24C8, symBinAddr: 0x2204C0, symSize: 0x4 } + - { offset: 0x2D4AE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x24CC, symBinAddr: 0x2204C4, symSize: 0x40 } + - { offset: 0x2D4AF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs0H3KeyAAWl', symObjAddr: 0x250C, symBinAddr: 0x220504, symSize: 0x40 } + - { offset: 0x2D4B0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVACSeAAWl', symObjAddr: 0x2590, symBinAddr: 0x220544, symSize: 0x40 } + - { offset: 0x2D4B20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVACSEAAWl', symObjAddr: 0x2644, symBinAddr: 0x2205F8, symSize: 0x40 } + - { offset: 0x2D4B34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOMa', symObjAddr: 0x2764, symBinAddr: 0x220638, symSize: 0x10 } + - { offset: 0x2D4B48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOSHAASQWb', symObjAddr: 0x2774, symBinAddr: 0x220648, symSize: 0x4 } + - { offset: 0x2D4B5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFSQAAWl', symObjAddr: 0x2778, symBinAddr: 0x22064C, symSize: 0x40 } + - { offset: 0x2D4B70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x27B8, symBinAddr: 0x22068C, symSize: 0x4 } + - { offset: 0x2D4B84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x27BC, symBinAddr: 0x220690, symSize: 0x40 } + - { offset: 0x2D4B98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x27FC, symBinAddr: 0x2206D0, symSize: 0x4 } + - { offset: 0x2D4BAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x2800, symBinAddr: 0x2206D4, symSize: 0x40 } + - { offset: 0x2D4BDA, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin5FloorCG_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5G17CGvgSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x248, symBinAddr: 0x21E78C, symSize: 0x68 } + - { offset: 0x2D4CA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x520, symBinAddr: 0x21E910, symSize: 0x28 } + - { offset: 0x2D4CC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x548, symBinAddr: 0x21E938, symSize: 0x28 } + - { offset: 0x2D4CF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x8C4, symBinAddr: 0x21EBDC, symSize: 0x28 } + - { offset: 0x2D4D0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x8EC, symBinAddr: 0x21EC04, symSize: 0x28 } + - { offset: 0x2D4E5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV6encode2toys7Encoder_p_tKF', symObjAddr: 0x2B0, symBinAddr: 0x21E7F4, symSize: 0x11C } + - { offset: 0x2D4EB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x570, symBinAddr: 0x21E960, symSize: 0x28 } + - { offset: 0x2D4EDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x598, symBinAddr: 0x21E988, symSize: 0x18 } + - { offset: 0x2D4EF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x5B0, symBinAddr: 0x21E9A0, symSize: 0x1A0 } + - { offset: 0x2D4F45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0G3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x810, symBinAddr: 0x21EB40, symSize: 0x78 } + - { offset: 0x2D4F8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0G3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x888, symBinAddr: 0x21EBB8, symSize: 0x24 } + - { offset: 0x2D4FC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x914, symBinAddr: 0x21EC2C, symSize: 0x40 } + - { offset: 0x2D4FEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x954, symBinAddr: 0x21EC6C, symSize: 0x14 } + - { offset: 0x2D50F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5FloorCGvgTf4x_n', symObjAddr: 0x15F4, symBinAddr: 0x21F90C, symSize: 0x220 } + - { offset: 0x2D5380, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV13localizedNameSSvgTf4x_n', symObjAddr: 0x1814, symBinAddr: 0x21FB2C, symSize: 0x3C4 } + - { offset: 0x2D5904, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x1BD8, symBinAddr: 0x21FEF0, symSize: 0x144 } + - { offset: 0x2D5927, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x1D1C, symBinAddr: 0x220034, symSize: 0x168 } + - { offset: 0x2D59F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x1E84, symBinAddr: 0x22019C, symSize: 0x23C } + - { offset: 0x2D5DC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC15_sharedInstance33_6103213578448421EE2DA7F45067FF4BLLACSgvpZ', symObjAddr: 0x2BB0, symBinAddr: 0x380310, symSize: 0x0 } + - { offset: 0x2D620F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerCMa', symObjAddr: 0x18F4, symBinAddr: 0x221FD4, symSize: 0x20 } + - { offset: 0x2D622E, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciMSi_8PenNavUI5ColorVTg5', symObjAddr: 0x1914, symBinAddr: 0x221FF4, symSize: 0x88 } + - { offset: 0x2D6267, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x19A0, symBinAddr: 0x222080, symSize: 0x88 } + - { offset: 0x2D62D2, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciMSi_8PenNavUI5ColorVTg5', symObjAddr: 0x1A64, symBinAddr: 0x222144, symSize: 0x144 } + - { offset: 0x2D636A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciMSi_8PenNavUI5ColorVTg5.resume.0', symObjAddr: 0x1BA8, symBinAddr: 0x222288, symSize: 0xCC } + - { offset: 0x2D63F6, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x1C74, symBinAddr: 0x222354, symSize: 0x244 } + - { offset: 0x2D64E5, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5.resume.0', symObjAddr: 0x1EB8, symBinAddr: 0x222598, symSize: 0x1CC } + - { offset: 0x2D6560, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvMSi_8PenNavUI5ColorVTg5', symObjAddr: 0x2084, symBinAddr: 0x222764, symSize: 0x18 } + - { offset: 0x2D6583, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvMSi_8PenNavUI5ColorVTg5.resume.0', symObjAddr: 0x209C, symBinAddr: 0x22277C, symSize: 0xC } + - { offset: 0x2D659F, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvMSi_8PenNavUI5ColorVTg5.resume.0', symObjAddr: 0x209C, symBinAddr: 0x22277C, symSize: 0xC } + - { offset: 0x2D65B0, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x20A8, symBinAddr: 0x222788, symSize: 0x18 } + - { offset: 0x2D66BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVWOb', symObjAddr: 0x2640, symBinAddr: 0x222C54, symSize: 0x44 } + - { offset: 0x2D66CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC13updateObjects2on5using8mapStatey7Penguin5FloorCSg_0M10INRenderer10PIRendererCSgAA03MapL0OtFySayAA0dE0VGSgcfU_TA', symObjAddr: 0x27A8, symBinAddr: 0x222CF8, symSize: 0xC } + - { offset: 0x2D66E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC14scheduleUpdate5after2on5using8mapStateySd_7Penguin5FloorC0N10INRenderer10PIRendererCSgAA03MapM0OtFySo7NSTimerCYbcfU_TA', symObjAddr: 0x2A9C, symBinAddr: 0x222FB0, symSize: 0x10 } + - { offset: 0x2D66F6, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2AAC, symBinAddr: 0x222FC0, symSize: 0x10 } + - { offset: 0x2D670A, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2ABC, symBinAddr: 0x222FD0, symSize: 0x8 } + - { offset: 0x2D671E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ColorVSgWOy', symObjAddr: 0x2AFC, symBinAddr: 0x223010, symSize: 0x30 } + - { offset: 0x2D6732, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ColorVSgWOe', symObjAddr: 0x2B2C, symBinAddr: 0x223040, symSize: 0x30 } + - { offset: 0x2D6789, size: 0x8, addend: 0x0, symName: '_$sSDyq_Sgxcis8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x0, symBinAddr: 0x220714, symSize: 0xE4 } + - { offset: 0x2D6881, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxcisSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0xE4, symBinAddr: 0x2207F8, symSize: 0x1BC } + - { offset: 0x2D6A8B, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciMSi_8PenNavUI5ColorVTg5', symObjAddr: 0x1770, symBinAddr: 0x221E50, symSize: 0x64 } + - { offset: 0x2D6ABC, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x17D8, symBinAddr: 0x221EB8, symSize: 0x64 } + - { offset: 0x2D6D3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC11drawObjects2on5using8mapStatey7Penguin5FloorCSg_0M10INRenderer10PIRendererCSgAA03MapL0OtF', symObjAddr: 0x2D4, symBinAddr: 0x2209B4, symSize: 0x554 } + - { offset: 0x2D6F07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC14scheduleUpdate5after2on5using8mapStateySd_7Penguin5FloorC0N10INRenderer10PIRendererCSgAA03MapM0OtFySo7NSTimerCYbcfU_', symObjAddr: 0x828, symBinAddr: 0x220F08, symSize: 0x19C } + - { offset: 0x2D7069, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC13updateObjects2on5using8mapStatey7Penguin5FloorCSg_0M10INRenderer10PIRendererCSgAA03MapL0OtF', symObjAddr: 0x9C4, symBinAddr: 0x2210A4, symSize: 0x264 } + - { offset: 0x2D723F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC13updateObjects2on5using8mapStatey7Penguin5FloorCSg_0M10INRenderer10PIRendererCSgAA03MapL0OtFySayAA0dE0VGSgcfU_', symObjAddr: 0xC28, symBinAddr: 0x221308, symSize: 0x288 } + - { offset: 0x2D74BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC20removeExpiredObjects5usingy17PenguinINRenderer10PIRendererCSg_tF', symObjAddr: 0xEB0, symBinAddr: 0x221590, symSize: 0x8C0 } + - { offset: 0x2D791F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC21stopRefreshingObjectsyyF', symObjAddr: 0x186C, symBinAddr: 0x221F4C, symSize: 0x48 } + - { offset: 0x2D7984, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerCfD', symObjAddr: 0x18B4, symBinAddr: 0x221F94, symSize: 0x40 } + - { offset: 0x2D79DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC6sharedACvgZTf4d_n', symObjAddr: 0x20C0, symBinAddr: 0x2227A0, symSize: 0x8C } + - { offset: 0x2D7A84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC16getCachedObjects2onSayAA0dE0VG7Penguin5FloorCSg_tFTf4nd_n', symObjAddr: 0x214C, symBinAddr: 0x22282C, symSize: 0x428 } + - { offset: 0x2D7FD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC12cacheObjects_2onySayAA0dE0VG_Say7Penguin5FloorCSgGtFTf4nnd_n', symObjAddr: 0x27B4, symBinAddr: 0x222D04, symSize: 0x2AC } + - { offset: 0x2D85C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parsePatternyAA3DOMO0F0VAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x22308C, symSize: 0x3B0 } + - { offset: 0x2D8613, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parsePatternyAA3DOMO0F0VAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x22308C, symSize: 0x3B0 } + - { offset: 0x2D86ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOAGSYAAWl', symObjAddr: 0x408, symBinAddr: 0x22343C, symSize: 0x40 } + - { offset: 0x2D8D1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelCMa', symObjAddr: 0x684, symBinAddr: 0x223AF0, symSize: 0x20 } + - { offset: 0x2D8D30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC20processFetchResponse33_C0C62F0363BB654C05AA258EF929E3E6LL7poiDatayAA7POIDataCSg_tFyyScMYccfU_TA', symObjAddr: 0x738, symBinAddr: 0x223B60, symSize: 0x8 } + - { offset: 0x2D8D44, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x740, symBinAddr: 0x223B68, symSize: 0x10 } + - { offset: 0x2D8D58, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x750, symBinAddr: 0x223B78, symSize: 0x8 } + - { offset: 0x2D8D6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC05fetchD7Details33_C0C62F0363BB654C05AA258EF929E3E6LL3poi8location6sourcey7Penguin10PoiPolygonV_AI10PILocationCSgAA06SourceF0OtFyAA7POIDataCSgcACcfu0_yAScfu1_TA', symObjAddr: 0x880, symBinAddr: 0x223B80, symSize: 0x4 } + - { offset: 0x2D8D84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC05fetchD7Details33_C0C62F0363BB654C05AA258EF929E3E6LL3poi8location6sourcey7Penguin10PoiPolygonV_AI10PILocationCSgAA06SourceF0OtFyAA7POIDataCSgcACcfu0_yAScfu1_TA', symObjAddr: 0x880, symBinAddr: 0x223B80, symSize: 0x4 } + - { offset: 0x2D8DEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC05fetchD7Details33_C0C62F0363BB654C05AA258EF929E3E6LL3poi8location6sourcey7Penguin10PoiPolygonV_AI10PILocationCSgAA06SourceF0OtF', symObjAddr: 0x10, symBinAddr: 0x22347C, symSize: 0x2F4 } + - { offset: 0x2D905A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC20processFetchResponse33_C0C62F0363BB654C05AA258EF929E3E6LL7poiDatayAA7POIDataCSg_tF', symObjAddr: 0x304, symBinAddr: 0x223770, symSize: 0x234 } + - { offset: 0x2D90B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC20processFetchResponse33_C0C62F0363BB654C05AA258EF929E3E6LL7poiDatayAA7POIDataCSg_tFyyScMYccfU_', symObjAddr: 0x538, symBinAddr: 0x2239A4, symSize: 0x120 } + - { offset: 0x2D921C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelCfD', symObjAddr: 0x658, symBinAddr: 0x223AC4, symSize: 0x2C } + - { offset: 0x2D9601, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterVMa', symObjAddr: 0x20C, symBinAddr: 0x223B84, symSize: 0x10 } + - { offset: 0x2D977E, size: 0x8, addend: 0x0, symName: ___swift_memcpy9_8, symObjAddr: 0x4D0, symBinAddr: 0x223D70, symSize: 0x14 } + - { offset: 0x2D9792, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOwet', symObjAddr: 0x4E8, symBinAddr: 0x223D84, symSize: 0x20 } + - { offset: 0x2D97A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOwst', symObjAddr: 0x508, symBinAddr: 0x223DA4, symSize: 0x30 } + - { offset: 0x2D97BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOwug', symObjAddr: 0x538, symBinAddr: 0x223DD4, symSize: 0x1C } + - { offset: 0x2D97CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOwui', symObjAddr: 0x558, symBinAddr: 0x223DF0, symSize: 0x20 } + - { offset: 0x2D97E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOMa', symObjAddr: 0x578, symBinAddr: 0x223E10, symSize: 0x10 } + - { offset: 0x2D97F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVMa', symObjAddr: 0x6BC, symBinAddr: 0x223E20, symSize: 0x10 } + - { offset: 0x2D98C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV6format_9precisionSSSfd_AC9PrecisionOSgtF', symObjAddr: 0x21C, symBinAddr: 0x223B94, symSize: 0x1C4 } + - { offset: 0x2D9C2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x3E0, symBinAddr: 0x223D58, symSize: 0xC } + - { offset: 0x2D9C42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x3EC, symBinAddr: 0x223D64, symSize: 0xC } + - { offset: 0x2DA007, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC14sharedInstance33_F9EEFDC5370A00C4ACDB141165CBB172LLACSgvpZ', symObjAddr: 0x5820, symBinAddr: 0x3805B8, symSize: 0x0 } + - { offset: 0x2DA4D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF', symObjAddr: 0x3A0, symBinAddr: 0x2241D0, symSize: 0x368 } + - { offset: 0x2DA923, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFyAJcfU0_', symObjAddr: 0x36A8, symBinAddr: 0x227444, symSize: 0x230 } + - { offset: 0x2DA988, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFyAJcfU0_yyScMYccfU_', symObjAddr: 0x38D8, symBinAddr: 0x227674, symSize: 0x64 } + - { offset: 0x2DA9DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheCMa', symObjAddr: 0x3A94, symBinAddr: 0x227830, symSize: 0x20 } + - { offset: 0x2DAA2A, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFTf4nnd_n', symObjAddr: 0x3AD8, symBinAddr: 0x227874, symSize: 0x750 } + - { offset: 0x2DAF5E, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFyAJcfU0_TA', symObjAddr: 0x42B0, symBinAddr: 0x227FC8, symSize: 0x8 } + - { offset: 0x2DAF72, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFyAJcfU0_yyScMYccfU_TA', symObjAddr: 0x4350, symBinAddr: 0x228004, symSize: 0xC } + - { offset: 0x2DAF86, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x435C, symBinAddr: 0x228010, symSize: 0x10 } + - { offset: 0x2DAF9A, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x436C, symBinAddr: 0x228020, symSize: 0x8 } + - { offset: 0x2DB032, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC08downloadD033_F9EEFDC5370A00C4ACDB141165CBB172LL3urly10Foundation3URLV_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x45E0, symBinAddr: 0x2281C0, symSize: 0x8 } + - { offset: 0x2DB0E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF03$s8ab34UI5PlaceC7getIcon10completionyySo7L15CSgc_tFyAHcfU0_ALIegg_Tf1ncn_n0mab41UI16SelectionManagerC16updateSymbolIconyytrL7CSgcfU_AA0xY0CSgXwz_XxAA0O0CTf1nnc_nTf4nngg_n', symObjAddr: 0x4658, symBinAddr: 0x228238, symSize: 0x454 } + - { offset: 0x2DB2A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF03$s8ab62UI20AmenityTableViewCellC7setData7amenityyAA9AmenitiesV_tFySo7L7CSgcfU_AA0opqR0CTf1ncn_nTf4nng_n', symObjAddr: 0x4AAC, symBinAddr: 0x22868C, symSize: 0x458 } + - { offset: 0x2DB49B, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE18stopURLDownloading7withURLySS_tFTf4nd_n', symObjAddr: 0x4F04, symBinAddr: 0x228AE4, symSize: 0x1A4 } + - { offset: 0x2DB5AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOACSHAAWl', symObjAddr: 0x50B0, symBinAddr: 0x228C88, symSize: 0x40 } + - { offset: 0x2DB5C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC7setData7amenityyAA9AmenitiesV_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x5174, symBinAddr: 0x228D3C, symSize: 0x8 } + - { offset: 0x2DB5D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_TA', symObjAddr: 0x522C, symBinAddr: 0x228DF4, symSize: 0x4C } + - { offset: 0x2DB5E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_yyScMYccfU0_TA', symObjAddr: 0x5278, symBinAddr: 0x228E40, symSize: 0x24 } + - { offset: 0x2DB61D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_yyScMYccfU_TA', symObjAddr: 0x5328, symBinAddr: 0x228EF0, symSize: 0x48 } + - { offset: 0x2DB631, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC08downloadD033_F9EEFDC5370A00C4ACDB141165CBB172LL_10completiony10Foundation3URLV_ySo7UIImageCSgctFyAG4DataVSg_So13NSURLResponseCSgs5Error_pSgtYbcfU_yyScMYccfU0_TA', symObjAddr: 0x542C, symBinAddr: 0x228FF4, symSize: 0x60 } + - { offset: 0x2DB645, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC11downloadSvg33_F9EEFDC5370A00C4ACDB141165CBB172LL7withURL10completiony10Foundation0O0V_ySo7UIImageCSgctFyAH4DataVSg_So13NSURLResponseCSgs5Error_pSgtYbcfU_yyScMYccfU_TA', symObjAddr: 0x5728, symBinAddr: 0x229274, symSize: 0xC } + - { offset: 0x2DB6AE, size: 0x8, addend: 0x0, symName: '_$sShyShyxGqd__nc7ElementQyd__RszSTRd__lufC8PenNavUI18FloatingPanelStateC_SD4KeysVyAfD0eF15LayoutAnchoring_p_GTt0g5', symObjAddr: 0x0, symBinAddr: 0x223E30, symSize: 0x1E0 } + - { offset: 0x2DB81B, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay10Foundation3URLVG_Tg5', symObjAddr: 0x1E0, symBinAddr: 0x224010, symSize: 0xC8 } + - { offset: 0x2DB963, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay8PenNavUI13SearchSectionOG_Tg5', symObjAddr: 0x2A8, symBinAddr: 0x2240D8, symSize: 0x30 } + - { offset: 0x2DB983, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay8PenNavUI13SearchSectionOG_Tg5', symObjAddr: 0x2A8, symBinAddr: 0x2240D8, symSize: 0x30 } + - { offset: 0x2DB9A3, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay8PenNavUI13SearchSectionOG_Tg5', symObjAddr: 0x2A8, symBinAddr: 0x2240D8, symSize: 0x30 } + - { offset: 0x2DB9B7, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay8PenNavUI13SearchSectionOG_Tg5', symObjAddr: 0x2A8, symBinAddr: 0x2240D8, symSize: 0x30 } + - { offset: 0x2DB9CB, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay8PenNavUI13SearchSectionOG_Tg5', symObjAddr: 0x2A8, symBinAddr: 0x2240D8, symSize: 0x30 } + - { offset: 0x2DB9DF, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay8PenNavUI13SearchSectionOG_Tg5', symObjAddr: 0x2A8, symBinAddr: 0x2240D8, symSize: 0x30 } + - { offset: 0x2DBA66, size: 0x8, addend: 0x0, symName: '_$sSD11removeValue6forKeyq_Sgx_tF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x2D8, symBinAddr: 0x224108, symSize: 0xC8 } + - { offset: 0x2DBD37, size: 0x8, addend: 0x0, symName: '_$sShyShyxGqd__nc7ElementQyd__RszSTRd__lufCSf_SaySfGTt0g5Tf4g_n', symObjAddr: 0x43C8, symBinAddr: 0x228028, symSize: 0x70 } + - { offset: 0x2DBE68, size: 0x8, addend: 0x0, symName: '_$sShyShyxGqd__nc7ElementQyd__RszSTRd__lufC10Foundation3URLV_SayAFGTt0g5Tf4g_n', symObjAddr: 0x4438, symBinAddr: 0x228098, symSize: 0x128 } + - { offset: 0x2DBFBD, size: 0x8, addend: 0x0, symName: '_$sShyShyxGqd__nc7ElementQyd__RszSTRd__lufC8PenNavUI9ToastTypeO_SayAFGTt0g5Tf4g_n', symObjAddr: 0x45E8, symBinAddr: 0x2281C8, symSize: 0x70 } + - { offset: 0x2DC2EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC03getD0_10completiony10Foundation3URLV_ySo7UIImageCSgctF', symObjAddr: 0x708, symBinAddr: 0x224538, symSize: 0x1C8 } + - { offset: 0x2DC3BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctF', symObjAddr: 0x8D0, symBinAddr: 0x224700, symSize: 0x358 } + - { offset: 0x2DC438, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_', symObjAddr: 0xC28, symBinAddr: 0x224A58, symSize: 0x4B4 } + - { offset: 0x2DC525, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_yyScMYccfU_', symObjAddr: 0x10DC, symBinAddr: 0x224F0C, symSize: 0x110 } + - { offset: 0x2DC870, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC21handleInvalidResouces33_F9EEFDC5370A00C4ACDB141165CBB172LL3url8response5errory10Foundation3URLV_So13NSURLResponseCSgs5Error_pSgtF', symObjAddr: 0x1BFC, symBinAddr: 0x225A2C, symSize: 0x15C } + - { offset: 0x2DC9F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC06cancelD8Download6forURLy10Foundation0I0V_tF', symObjAddr: 0x1D58, symBinAddr: 0x225B88, symSize: 0xD4 } + - { offset: 0x2DCAD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC22cancelDownloadSequenceyyF', symObjAddr: 0x1E2C, symBinAddr: 0x225C5C, symSize: 0x210 } + - { offset: 0x2DCE03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC21downloadImagesToFiles4urlsySaySSG_tF', symObjAddr: 0x203C, symBinAddr: 0x225E6C, symSize: 0x5EC } + - { offset: 0x2DD62F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC08downloadD033_F9EEFDC5370A00C4ACDB141165CBB172LL3urly10Foundation3URLV_tFySo7UIImageCSgcfU_', symObjAddr: 0x2628, symBinAddr: 0x226458, symSize: 0xE8 } + - { offset: 0x2DD88F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC14getPathForFile33_F9EEFDC5370A00C4ACDB141165CBB172LL3url10Foundation3URLVAI_tF', symObjAddr: 0x2710, symBinAddr: 0x226540, symSize: 0x144 } + - { offset: 0x2DD9BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC03getD13FromDocuments3urlSo7UIImageCSg10Foundation3URLV_tF', symObjAddr: 0x2854, symBinAddr: 0x226684, symSize: 0x1EC } + - { offset: 0x2DDAA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheCfd', symObjAddr: 0x2A40, symBinAddr: 0x226870, symSize: 0x3C } + - { offset: 0x2DDAD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheCfD', symObjAddr: 0x2A7C, symBinAddr: 0x2268AC, symSize: 0x44 } + - { offset: 0x2DDC24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadd4FromE033_F9EEFDC5370A00C4ACDB141165CBB172LLySo7UIImageCSg10Foundation3URLVFTf4nd_n', symObjAddr: 0x393C, symBinAddr: 0x2276D8, symSize: 0x158 } + - { offset: 0x2DE263, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateC12fetchRequestSo07NSFetchG0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x2292F8, symSize: 0x6C } + - { offset: 0x2DE2BE, size: 0x8, addend: 0x0, symName: _keypath_get_selector_lastUpdateTime, symObjAddr: 0x6C, symBinAddr: 0x229364, symSize: 0xC } + - { offset: 0x2DE2D2, size: 0x8, addend: 0x0, symName: _keypath_get_selector_tableName, symObjAddr: 0xB0, symBinAddr: 0x2293A8, symSize: 0xC } + - { offset: 0x2DEB15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperCMa', symObjAddr: 0x13C4, symBinAddr: 0x22A7B0, symSize: 0x20 } + - { offset: 0x2DEB29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC03setD4Mode4mode10completionyAA0dG0O_ySbcSgtFyycfU_TA', symObjAddr: 0x1718, symBinAddr: 0x22AA6C, symSize: 0xC } + - { offset: 0x2DED58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC03setD4Mode4mode10completionyAA0dG0O_ySbcSgtF', symObjAddr: 0x0, symBinAddr: 0x2293EC, symSize: 0x5E4 } + - { offset: 0x2DEFAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC03setD4Mode4mode10completionyAA0dG0O_ySbcSgtFyycfU_', symObjAddr: 0x5E4, symBinAddr: 0x2299D0, symSize: 0x100 } + - { offset: 0x2DF158, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC7drawMap3for10completiony7Penguin5FloorCSg_ySbcSgtF', symObjAddr: 0x6E4, symBinAddr: 0x229AD0, symSize: 0x1F8 } + - { offset: 0x2DF23D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC13removeObjectsyyF', symObjAddr: 0x8DC, symBinAddr: 0x229CC8, symSize: 0x88 } + - { offset: 0x2DF36F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC19drawNavigationRoute7subpathy7Penguin7SubPathCSg_tF', symObjAddr: 0x964, symBinAddr: 0x229D50, symSize: 0x608 } + - { offset: 0x2DF6C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC29setLocationProviderCoordinate_28skipsIntermediateCoordinatesySo22CLLocationCoordinate2DVSg_SbtF', symObjAddr: 0xF6C, symBinAddr: 0x22A358, symSize: 0xC8 } + - { offset: 0x2DF76F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC30setLocationIndicatorCoordinate_5usingySo22CLLocationCoordinate2DV_17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0x1034, symBinAddr: 0x22A420, symSize: 0xEC } + - { offset: 0x2DF801, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC34setLocationIndicatorAccuracyRadiusyySdSgF', symObjAddr: 0x1218, symBinAddr: 0x22A604, symSize: 0xE8 } + - { offset: 0x2DF8A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC25setLocationIndicatorStyleyyAA0ghI0OF', symObjAddr: 0x1300, symBinAddr: 0x22A6EC, symSize: 0x80 } + - { offset: 0x2DF934, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperCfD', symObjAddr: 0x1380, symBinAddr: 0x22A76C, symSize: 0x44 } + - { offset: 0x2DF9C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC13renderingView17mapEventsDelegateACSo6UIViewC_17PenguinINRenderer05PIMapg5EventJ0_pSgtcfcTf4ngn_n', symObjAddr: 0x13E4, symBinAddr: 0x22A7D0, symSize: 0xE4 } + - { offset: 0x2DFA7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC16updateMapBearing4mode7bearing13isLowAccuracyyAA0G11CameraStateO_SdSgSbtFTf4nndn_n', symObjAddr: 0x14C8, symBinAddr: 0x22A8B4, symSize: 0x124 } + - { offset: 0x2DFEA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7pdfData4size6insets10Foundation0F0VSo6CGSizeVSg_AC6InsetsVtKF', symObjAddr: 0x0, symBinAddr: 0x22AA7C, symSize: 0x1D0 } + - { offset: 0x2E03F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8RendererPAAE7performyyAA0D7CommandOy5TypesQzGFAA06CGTextD0C_Tg5', symObjAddr: 0x1D0, symBinAddr: 0x22AC4C, symSize: 0xA24 } + - { offset: 0x2E1799, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8RendererPAAE7performyyAA0D7CommandOy5TypesQzGFAA10CGRendererV_Tg5', symObjAddr: 0xBF4, symBinAddr: 0x22B670, symSize: 0x40C } + - { offset: 0x2E21DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_03958A0088F2E35131ADBC7FF9D1DD6CLLVAFsAdAWl', symObjAddr: 0x1000, symBinAddr: 0x22BA7C, symSize: 0x40 } + - { offset: 0x2E22C9, size: 0x8, addend: 0x0, symName: '_$sSo12CGContextRefa8PenNavUIE4draw_2inyAC3SVGC_So6CGRectVSgtF', symObjAddr: 0x1040, symBinAddr: 0x22BABC, symSize: 0x1D4 } + - { offset: 0x2E24AC, size: 0x8, addend: 0x0, symName: '_$sSo12CGContextRefa8PenNavUIE4draw33_03958A0088F2E35131ADBC7FF9D1DD6CLL_2in5scaleySayAC15RendererCommandOyAC7CGTypesVGG_So6CGRectVSo6CGSizeVtF', symObjAddr: 0x128C, symBinAddr: 0x22BC90, symSize: 0x154 } + - { offset: 0x2E263A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_03958A0088F2E35131ADBC7FF9D1DD6CLLVMa', symObjAddr: 0x153C, symBinAddr: 0x22BDE4, symSize: 0x10 } + - { offset: 0x2E264E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_03958A0088F2E35131ADBC7FF9D1DD6CLLV10Foundation09LocalizedE0AAsADPWb', symObjAddr: 0x154C, symBinAddr: 0x22BDF4, symSize: 0x4 } + - { offset: 0x2E3315, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererV12makeExpanded4path9transform9precisionS2S_SSSitKFZ', symObjAddr: 0x0, symBinAddr: 0x22BDF8, symSize: 0x6CC } + - { offset: 0x2E3941, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererVMa', symObjAddr: 0xCA4, symBinAddr: 0x22C948, symSize: 0x10 } + - { offset: 0x2E3C08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererV12makeExpanded4path9transform9precisionS2S_SSSitKFZ', symObjAddr: 0x0, symBinAddr: 0x22BDF8, symSize: 0x6CC } + - { offset: 0x2E4657, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererV7makeDOM7segment9formatterSSAA9LayerTreeO4PathC7SegmentO_AA19CoordinateFormatterVtFZTf4nnd_n', symObjAddr: 0x710, symBinAddr: 0x22C4C4, symSize: 0x264 } + - { offset: 0x2E4B32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererV7makeDOM4path9precisionSSAA9LayerTreeO4PathC_SitFZTf4nnd_n', symObjAddr: 0x974, symBinAddr: 0x22C728, symSize: 0x220 } + - { offset: 0x2E525A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0CMa', symObjAddr: 0x2FC, symBinAddr: 0x22CC54, symSize: 0x20 } + - { offset: 0x2E526E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOy', symObjAddr: 0x348, symBinAddr: 0x22CC74, symSize: 0x140 } + - { offset: 0x2E5282, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0OWOy', symObjAddr: 0x4AC, symBinAddr: 0x22CDB4, symSize: 0x48 } + - { offset: 0x2E5296, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0OWOy', symObjAddr: 0x4F4, symBinAddr: 0x22CDFC, symSize: 0x60 } + - { offset: 0x2E52AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwxx', symObjAddr: 0x59C, symBinAddr: 0x22CE5C, symSize: 0x58 } + - { offset: 0x2E52BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOe', symObjAddr: 0x5F4, symBinAddr: 0x22CEB4, symSize: 0x140 } + - { offset: 0x2E52D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0OWOe', symObjAddr: 0x758, symBinAddr: 0x22CFF4, symSize: 0x48 } + - { offset: 0x2E52E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwcp', symObjAddr: 0x848, symBinAddr: 0x22D03C, symSize: 0x114 } + - { offset: 0x2E52FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwca', symObjAddr: 0x95C, symBinAddr: 0x22D150, symSize: 0x14C } + - { offset: 0x2E530E, size: 0x8, addend: 0x0, symName: ___swift_memcpy153_8, symObjAddr: 0xAA8, symBinAddr: 0x22D29C, symSize: 0x34 } + - { offset: 0x2E5322, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwta', symObjAddr: 0xADC, symBinAddr: 0x22D2D0, symSize: 0xA4 } + - { offset: 0x2E5336, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwet', symObjAddr: 0xB80, symBinAddr: 0x22D374, symSize: 0x5C } + - { offset: 0x2E534A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwst', symObjAddr: 0xBDC, symBinAddr: 0x22D3D0, symSize: 0x90 } + - { offset: 0x2E535E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwui', symObjAddr: 0xC88, symBinAddr: 0x22D460, symSize: 0x34 } + - { offset: 0x2E5372, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOMa', symObjAddr: 0xCBC, symBinAddr: 0x22D494, symSize: 0x10 } + - { offset: 0x2E5586, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwxx', symObjAddr: 0x1F2C, symBinAddr: 0x22E688, symSize: 0x8 } + - { offset: 0x2E559A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwcp', symObjAddr: 0x1F34, symBinAddr: 0x22E690, symSize: 0x4C } + - { offset: 0x2E55AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwca', symObjAddr: 0x1F80, symBinAddr: 0x22E6DC, symSize: 0x6C } + - { offset: 0x2E55C2, size: 0x8, addend: 0x0, symName: ___swift_memcpy45_8, symObjAddr: 0x1FEC, symBinAddr: 0x22E748, symSize: 0x14 } + - { offset: 0x2E55D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwta', symObjAddr: 0x2000, symBinAddr: 0x22E75C, symSize: 0x54 } + - { offset: 0x2E55EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwet', symObjAddr: 0x2054, symBinAddr: 0x22E7B0, symSize: 0x48 } + - { offset: 0x2E55FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwst', symObjAddr: 0x209C, symBinAddr: 0x22E7F8, symSize: 0x50 } + - { offset: 0x2E5612, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVMa', symObjAddr: 0x20EC, symBinAddr: 0x22E848, symSize: 0x10 } + - { offset: 0x2E5626, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwcp', symObjAddr: 0x20FC, symBinAddr: 0x22E858, symSize: 0x94 } + - { offset: 0x2E563A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwca', symObjAddr: 0x2190, symBinAddr: 0x22E8EC, symSize: 0xA8 } + - { offset: 0x2E564E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwta', symObjAddr: 0x2254, symBinAddr: 0x22E994, symSize: 0x64 } + - { offset: 0x2E5662, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwet', symObjAddr: 0x22B8, symBinAddr: 0x22E9F8, symSize: 0x44 } + - { offset: 0x2E5676, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwst', symObjAddr: 0x22FC, symBinAddr: 0x22EA3C, symSize: 0x54 } + - { offset: 0x2E568A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVMa', symObjAddr: 0x2350, symBinAddr: 0x22EA90, symSize: 0x10 } + - { offset: 0x2E569E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwcp', symObjAddr: 0x2360, symBinAddr: 0x22EAA0, symSize: 0x9C } + - { offset: 0x2E56B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwca', symObjAddr: 0x23FC, symBinAddr: 0x22EB3C, symSize: 0xB8 } + - { offset: 0x2E56C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwta', symObjAddr: 0x24C8, symBinAddr: 0x22EBF4, symSize: 0x6C } + - { offset: 0x2E56DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwet', symObjAddr: 0x2534, symBinAddr: 0x22EC60, symSize: 0x48 } + - { offset: 0x2E56EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwst', symObjAddr: 0x257C, symBinAddr: 0x22ECA8, symSize: 0x54 } + - { offset: 0x2E5702, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVMa', symObjAddr: 0x25D0, symBinAddr: 0x22ECFC, symSize: 0x10 } + - { offset: 0x2E5716, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0Owet', symObjAddr: 0x2634, symBinAddr: 0x22ED44, symSize: 0x48 } + - { offset: 0x2E572A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0Owst', symObjAddr: 0x267C, symBinAddr: 0x22ED8C, symSize: 0x54 } + - { offset: 0x2E573E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0OMa', symObjAddr: 0x26E4, symBinAddr: 0x22EDF0, symSize: 0x10 } + - { offset: 0x2E5752, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0Owet', symObjAddr: 0x28B8, symBinAddr: 0x22EFC4, symSize: 0x48 } + - { offset: 0x2E5766, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0Owst', symObjAddr: 0x2900, symBinAddr: 0x22F00C, symSize: 0x54 } + - { offset: 0x2E577A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0OMa', symObjAddr: 0x2958, symBinAddr: 0x22F060, symSize: 0x10 } + - { offset: 0x2E582E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x22C958, symSize: 0x94 } + - { offset: 0x2E585D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C14simpleContentsAE0G0OSgvg', symObjAddr: 0x94, symBinAddr: 0x22C9EC, symSize: 0x1AC } + - { offset: 0x2E594D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0Cfd', symObjAddr: 0x240, symBinAddr: 0x22CB98, symSize: 0x9C } + - { offset: 0x2E5972, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0CfD', symObjAddr: 0x2DC, symBinAddr: 0x22CC34, symSize: 0x20 } + - { offset: 0x2E59A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0CSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xCCC, symBinAddr: 0x22D4A4, symSize: 0xC } + - { offset: 0x2E59DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0OSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xCD8, symBinAddr: 0x22D4B0, symSize: 0x58 } + - { offset: 0x2E5A1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xD30, symBinAddr: 0x22D508, symSize: 0x48 } + - { offset: 0x2E5A57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0OSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xD78, symBinAddr: 0x22D550, symSize: 0x58 } + - { offset: 0x2E5AB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xDD0, symBinAddr: 0x22D5A8, symSize: 0xF0 } + - { offset: 0x2E5B87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xEC0, symBinAddr: 0x22D698, symSize: 0x48 } + - { offset: 0x2E5C55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0O2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0xF08, symBinAddr: 0x22D6E0, symSize: 0x280 } + - { offset: 0x2E5DD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x1188, symBinAddr: 0x22D960, symSize: 0x1B4 } + - { offset: 0x2E5F20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x133C, symBinAddr: 0x22DB14, symSize: 0x154 } + - { offset: 0x2E5F8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0O2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x1490, symBinAddr: 0x22DC68, symSize: 0x2D4 } + - { offset: 0x2E60EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x1764, symBinAddr: 0x22DF3C, symSize: 0xEC } + - { offset: 0x2E61C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x1850, symBinAddr: 0x22E028, symSize: 0x218 } + - { offset: 0x2E6334, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsO2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x1A68, symBinAddr: 0x22E240, symSize: 0x448 } + - { offset: 0x2E67DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC15campusNameLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x22F080, symSize: 0x20 } + - { offset: 0x2E6F8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC019handleFavoriteUIFordE0yyF', symObjAddr: 0x5D4, symBinAddr: 0x22F654, symSize: 0x5CC } + - { offset: 0x2E7222, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC019handleFavoriteUIFordE0yyFyycfU_', symObjAddr: 0x30A4, symBinAddr: 0x232124, symSize: 0x5C } + - { offset: 0x2E7495, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCfE', symObjAddr: 0x29E8, symBinAddr: 0x231A68, symSize: 0x14C } + - { offset: 0x2E74C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCfETo', symObjAddr: 0x2B64, symBinAddr: 0x231BE4, symSize: 0x158 } + - { offset: 0x2E74F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCMa', symObjAddr: 0x2CBC, symBinAddr: 0x231D3C, symSize: 0x20 } + - { offset: 0x2E7541, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC14layoutForPanelAA08FloatingK6Layout_pyFTo', symObjAddr: 0x2CDC, symBinAddr: 0x231D5C, symSize: 0x98 } + - { offset: 0x2E75ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC16behaviorForPanelAA08FloatingK8Behavior_pyFTo', symObjAddr: 0x2D74, symBinAddr: 0x231DF4, symSize: 0x24 } + - { offset: 0x2E7653, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x2D98, symBinAddr: 0x231E18, symSize: 0x98 } + - { offset: 0x2E76CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingjH0CF', symObjAddr: 0x2E30, symBinAddr: 0x231EB0, symSize: 0x224 } + - { offset: 0x2E78D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingjH0CFTo', symObjAddr: 0x3054, symBinAddr: 0x2320D4, symSize: 0x50 } + - { offset: 0x2E78ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC14handleFavorite33_BBE7875B2892A8418F35ED4165555988LL02isJ0ySb_tF', symObjAddr: 0x3100, symBinAddr: 0x232180, symSize: 0x1C0 } + - { offset: 0x2E7ABD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtF', symObjAddr: 0x32C0, symBinAddr: 0x232340, symSize: 0x258 } + - { offset: 0x2E7C77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0lQ0OSgtFTW', symObjAddr: 0x3594, symBinAddr: 0x232598, symSize: 0x8 } + - { offset: 0x2E7C93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC019handleFavoriteUIFordE0yyFyycfU_TA', symObjAddr: 0x35E4, symBinAddr: 0x2325E8, symSize: 0xC } + - { offset: 0x2E7CA7, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x365C, symBinAddr: 0x2325F4, symSize: 0x10 } + - { offset: 0x2E7CBB, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x366C, symBinAddr: 0x232604, symSize: 0x8 } + - { offset: 0x2E7CCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC17showRouteOverviewyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x3700, symBinAddr: 0x232630, symSize: 0x20 } + - { offset: 0x2E7D09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFyycfU_TA', symObjAddr: 0x38B0, symBinAddr: 0x232750, symSize: 0x8 } + - { offset: 0x2E7D1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFyycfU0_TA', symObjAddr: 0x38B8, symBinAddr: 0x232758, symSize: 0x8 } + - { offset: 0x2E828F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC15campusNameLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x22F080, symSize: 0x20 } + - { offset: 0x2E82EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC15campusNameLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x22F0A0, symSize: 0x14 } + - { offset: 0x2E8340, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC14venueNameLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x22F0B4, symSize: 0x20 } + - { offset: 0x2E8395, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC14venueNameLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x22F0D4, symSize: 0x14 } + - { offset: 0x2E83E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x22F0E8, symSize: 0x20 } + - { offset: 0x2E843B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x22F108, symSize: 0x14 } + - { offset: 0x2E848C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC010directionsG0AA06HapticG0CSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x22F11C, symSize: 0x20 } + - { offset: 0x2E84E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC010directionsG0AA06HapticG0CSgvsTo', symObjAddr: 0xBC, symBinAddr: 0x22F13C, symSize: 0x14 } + - { offset: 0x2E8537, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC011reportIssueG0AA06HapticG0CSgvgTo', symObjAddr: 0xD0, symBinAddr: 0x22F150, symSize: 0x20 } + - { offset: 0x2E858C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC011reportIssueG0AA06HapticG0CSgvsTo', symObjAddr: 0xF0, symBinAddr: 0x22F170, symSize: 0x14 } + - { offset: 0x2E85DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC016reportIssueStackG0So07UIStackG0CSgvgTo', symObjAddr: 0x104, symBinAddr: 0x22F184, symSize: 0x10 } + - { offset: 0x2E85F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC016reportIssueStackG0So07UIStackG0CSgvgTo', symObjAddr: 0x104, symBinAddr: 0x22F184, symSize: 0x10 } + - { offset: 0x2E8635, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC016reportIssueStackG0So07UIStackG0CSgvsTo', symObjAddr: 0x114, symBinAddr: 0x22F194, symSize: 0x34 } + - { offset: 0x2E8684, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC013addToFavoriteG0AA06HapticG0CSgvgTo', symObjAddr: 0x148, symBinAddr: 0x22F1C8, symSize: 0x20 } + - { offset: 0x2E86D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC013addToFavoriteG0AA06HapticG0CSgvsTo', symObjAddr: 0x168, symBinAddr: 0x22F1E8, symSize: 0x14 } + - { offset: 0x2E872A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC13favoriteLabelSo7UILabelCSgvgTo', symObjAddr: 0x17C, symBinAddr: 0x22F1FC, symSize: 0x20 } + - { offset: 0x2E877F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC13favoriteLabelSo7UILabelCSgvsTo', symObjAddr: 0x19C, symBinAddr: 0x22F21C, symSize: 0x14 } + - { offset: 0x2E87D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC13favoriteImageSo07UIImageG0CSgvgTo', symObjAddr: 0x1B0, symBinAddr: 0x22F230, symSize: 0x20 } + - { offset: 0x2E882A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC13favoriteImageSo07UIImageG0CSgvsTo', symObjAddr: 0x1D0, symBinAddr: 0x22F250, symSize: 0x14 } + - { offset: 0x2E887B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC9nameLabelAA09IntrinsicJ0CSgvgTo', symObjAddr: 0x1E4, symBinAddr: 0x22F264, symSize: 0x20 } + - { offset: 0x2E88D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC9nameLabelAA09IntrinsicJ0CSgvsTo', symObjAddr: 0x204, symBinAddr: 0x22F284, symSize: 0x14 } + - { offset: 0x2E8926, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x218, symBinAddr: 0x22F298, symSize: 0x10 } + - { offset: 0x2E893E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x218, symBinAddr: 0x22F298, symSize: 0x10 } + - { offset: 0x2E897E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x228, symBinAddr: 0x22F2A8, symSize: 0x34 } + - { offset: 0x2E8A5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x25C, symBinAddr: 0x22F2DC, symSize: 0x21C } + - { offset: 0x2E8BA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFyycfU_', symObjAddr: 0x478, symBinAddr: 0x22F4F8, symSize: 0x54 } + - { offset: 0x2E8BCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFyycfU0_', symObjAddr: 0x4CC, symBinAddr: 0x22F54C, symSize: 0x108 } + - { offset: 0x2E8C81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0xBA0, symBinAddr: 0x22FC20, symSize: 0x28 } + - { offset: 0x2E8DCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC03setC033_BBE7875B2892A8418F35ED4165555988LLyyF', symObjAddr: 0xBC8, symBinAddr: 0x22FC48, symSize: 0x154 } + - { offset: 0x2E8FFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC03setdeC0yyF', symObjAddr: 0xD1C, symBinAddr: 0x22FD9C, symSize: 0x5B4 } + - { offset: 0x2E9429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC31applyLanguageBasedTextAlignmentyyF', symObjAddr: 0x12D0, symBinAddr: 0x230350, symSize: 0x208 } + - { offset: 0x2E9748, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x14D8, symBinAddr: 0x230558, symSize: 0x88 } + - { offset: 0x2E9806, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5shareyySo8UIButtonCFySSSgcfU_', symObjAddr: 0x1560, symBinAddr: 0x2305E0, symSize: 0x4C8 } + - { offset: 0x2E99D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5shareyySo8UIButtonCFTo', symObjAddr: 0x1A28, symBinAddr: 0x230AA8, symSize: 0x4C } + - { offset: 0x2E9A89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC17showRouteOverviewyyF', symObjAddr: 0x1A74, symBinAddr: 0x230AF4, symSize: 0x474 } + - { offset: 0x2E9F9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC26presentRouteOverviewScreen33_BBE7875B2892A8418F35ED4165555988LL6sourceyAA5PlaceCSg_tF', symObjAddr: 0x1EE8, symBinAddr: 0x230F68, symSize: 0x3E4 } + - { offset: 0x2EA395, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC18removeFromFavoriteyyF', symObjAddr: 0x22CC, symBinAddr: 0x23134C, symSize: 0xB0 } + - { offset: 0x2EA46C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x237C, symBinAddr: 0x2313FC, symSize: 0x304 } + - { offset: 0x2EA63A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x2680, symBinAddr: 0x231700, symSize: 0x60 } + - { offset: 0x2EA682, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x26E0, symBinAddr: 0x231760, symSize: 0x2E0 } + - { offset: 0x2EA842, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x29C0, symBinAddr: 0x231A40, symSize: 0x28 } + - { offset: 0x2EA856, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCfD', symObjAddr: 0x2B34, symBinAddr: 0x231BB4, symSize: 0x30 } + - { offset: 0x2EA9B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5shareyySo8UIButtonCFTf4dn_n', symObjAddr: 0x3728, symBinAddr: 0x232650, symSize: 0x100 } + - { offset: 0x2EAE1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC18parkingDetailsViewAA0dgH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x232760, symSize: 0x10 } + - { offset: 0x2EAF6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellCfETo', symObjAddr: 0x358, symBinAddr: 0x232AB8, symSize: 0x3C } + - { offset: 0x2EAF99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellCMa', symObjAddr: 0x394, symBinAddr: 0x232AF4, symSize: 0x20 } + - { offset: 0x2EAFAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC12awakeFromNibyyFyycfU_TA', symObjAddr: 0x3D8, symBinAddr: 0x232B38, symSize: 0x8 } + - { offset: 0x2EB04F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC18parkingDetailsViewAA0dgH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x232760, symSize: 0x10 } + - { offset: 0x2EB067, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC18parkingDetailsViewAA0dgH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x232760, symSize: 0x10 } + - { offset: 0x2EB0AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC18parkingDetailsViewAA0dgH0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x232770, symSize: 0x34 } + - { offset: 0x2EB11F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC12awakeFromNibyyF', symObjAddr: 0x44, symBinAddr: 0x2327A4, symSize: 0xDC } + - { offset: 0x2EB19D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC12awakeFromNibyyFyycfU_', symObjAddr: 0x120, symBinAddr: 0x232880, symSize: 0x88 } + - { offset: 0x2EB1F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC12awakeFromNibyyFTo', symObjAddr: 0x1A8, symBinAddr: 0x232908, symSize: 0x28 } + - { offset: 0x2EB254, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x1D0, symBinAddr: 0x232930, symSize: 0xC0 } + - { offset: 0x2EB2D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x290, symBinAddr: 0x2329F0, symSize: 0x98 } + - { offset: 0x2EB309, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellCfD', symObjAddr: 0x328, symBinAddr: 0x232A88, symSize: 0x30 } + - { offset: 0x2EB69C, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUIE21getDownloadedModelUriSSSgyF', symObjAddr: 0x0, symBinAddr: 0x232B40, symSize: 0x2A0 } + - { offset: 0x2EB6C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC14sharedInstance33_7986A3E1D5A26839C9FF19770735FC58LLACSgvpZ', symObjAddr: 0x1198, symBinAddr: 0x380B58, symSize: 0x0 } + - { offset: 0x2EB7ED, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUIE21getDownloadedModelUriSSSgyF', symObjAddr: 0x0, symBinAddr: 0x232B40, symSize: 0x2A0 } + - { offset: 0x2EB9D7, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUIE8assetURL10Foundation0H0VSgvg', symObjAddr: 0xF50, symBinAddr: 0x233A6C, symSize: 0x100 } + - { offset: 0x2EB9F6, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUI16FileDownloadDataA2dEP8assetURL10Foundation0K0VSgvgTW', symObjAddr: 0x1050, symBinAddr: 0x233B6C, symSize: 0x4 } + - { offset: 0x2EBA30, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUI16FileDownloadDataA2dEP10downloadIdSiSgvgTW', symObjAddr: 0x1054, symBinAddr: 0x233B70, symSize: 0x18 } + - { offset: 0x2EBA6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerCMa', symObjAddr: 0x106C, symBinAddr: 0x233B88, symSize: 0x20 } + - { offset: 0x2EBC31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC03getD10ByFloorIdsySay7Penguin10PoiPolygonVGSaySiSgGF', symObjAddr: 0x2A0, symBinAddr: 0x232DE0, symSize: 0x218 } + - { offset: 0x2EBF72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC03getD12ByCategoryId05floorI008categoryI0Say7Penguin10PoiPolygonVGSi_SitF', symObjAddr: 0x4B8, symBinAddr: 0x232FF8, symSize: 0x20C } + - { offset: 0x2EC191, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC10getPoiByIdy7Penguin0G7PolygonVSgSiSgF', symObjAddr: 0x6C4, symBinAddr: 0x233204, symSize: 0x248 } + - { offset: 0x2EC446, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC014getCategorizedD02in8categorySay7Penguin10PoiPolygonVGAG5VenueCSg_AG11POICategoryVSgtFSbAIXEfU_', symObjAddr: 0x90C, symBinAddr: 0x23344C, symSize: 0x158 } + - { offset: 0x2EC48B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC24getPoiListForDownloadingSay7Penguin0G7PolygonVGyF', symObjAddr: 0xA64, symBinAddr: 0x2335A4, symSize: 0x4C8 } + - { offset: 0x2ED007, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC14loadCategoriesyyF', symObjAddr: 0x4BC, symBinAddr: 0x234064, symSize: 0xB4 } + - { offset: 0x2ED119, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCfE', symObjAddr: 0x598, symBinAddr: 0x234140, symSize: 0x15C } + - { offset: 0x2ED146, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCfETo', symObjAddr: 0x8A0, symBinAddr: 0x234448, symSize: 0x168 } + - { offset: 0x2ED32C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCMa', symObjAddr: 0x1364, symBinAddr: 0x234F0C, symSize: 0x20 } + - { offset: 0x2ED34F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC16numberOfSections2inSiSo07UITableE0C_tFTo', symObjAddr: 0x1384, symBinAddr: 0x234F2C, symSize: 0x4 } + - { offset: 0x2ED36F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC16numberOfSections2inSiSo07UITableE0C_tFTo', symObjAddr: 0x1384, symBinAddr: 0x234F2C, symSize: 0x4 } + - { offset: 0x2ED390, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x1388, symBinAddr: 0x234F30, symSize: 0x60 } + - { offset: 0x2ED67C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0x13E8, symBinAddr: 0x234F90, symSize: 0x960 } + - { offset: 0x2EDC53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyAA8FavoriteCcfU1_', symObjAddr: 0x1FB8, symBinAddr: 0x235B60, symSize: 0x90 } + - { offset: 0x2EDCAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFSb7Penguin11POICategoryV_AOtXEfU3_', symObjAddr: 0x20D0, symBinAddr: 0x235BF0, symSize: 0xA0 } + - { offset: 0x2EDCFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU4_', symObjAddr: 0x2170, symBinAddr: 0x235C90, symSize: 0xB0 } + - { offset: 0x2EDD72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU7_', symObjAddr: 0x22C4, symBinAddr: 0x235DE4, symSize: 0x90 } + - { offset: 0x2EDDC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU9_', symObjAddr: 0x2864, symBinAddr: 0x23632C, symSize: 0x1E4 } + - { offset: 0x2EDFE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC19showMyLocationSheet33_D0641B0FFCA1271976891547CEED6A97LLyyF', symObjAddr: 0x1D48, symBinAddr: 0x2358F0, symSize: 0x270 } + - { offset: 0x2EE200, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC17didTapShareButton33_D0641B0FFCA1271976891547CEED6A97LLyyF', symObjAddr: 0x23AC, symBinAddr: 0x235E74, symSize: 0x4B8 } + - { offset: 0x2EE5C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2A48, symBinAddr: 0x236510, symSize: 0xC8 } + - { offset: 0x2EE5FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2B10, symBinAddr: 0x2365D8, symSize: 0x94 } + - { offset: 0x2EE63B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC06scrollE9DidScrollyySo08UIScrollE0CF', symObjAddr: 0x2BA4, symBinAddr: 0x23666C, symSize: 0x50 } + - { offset: 0x2EE6B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC06scrollE9DidScrollyySo08UIScrollE0CFTo', symObjAddr: 0x2BF4, symBinAddr: 0x2366BC, symSize: 0x50 } + - { offset: 0x2EE738, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC17shareUserLocation33_D0641B0FFCA1271976891547CEED6A97LLyyF', symObjAddr: 0x2C44, symBinAddr: 0x23670C, symSize: 0xD8 } + - { offset: 0x2EE95A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x31F4, symBinAddr: 0x2367E4, symSize: 0x98 } + - { offset: 0x2EEA06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x328C, symBinAddr: 0x23687C, symSize: 0x24 } + - { offset: 0x2EEA7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC10setupPanelyyF', symObjAddr: 0x32B0, symBinAddr: 0x2368A0, symSize: 0xBC } + - { offset: 0x2EEB1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC10setupPanelyyFTo', symObjAddr: 0x336C, symBinAddr: 0x23695C, symSize: 0x28 } + - { offset: 0x2EEB5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x3394, symBinAddr: 0x236984, symSize: 0x214 } + - { offset: 0x2EED60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x35A8, symBinAddr: 0x236B98, symSize: 0x50 } + - { offset: 0x2EED9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC28searchBarTextDidBeginEditingyyAA06SearchH0CF', symObjAddr: 0x35F8, symBinAddr: 0x236BE8, symSize: 0x408 } + - { offset: 0x2EF109, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC28searchBarTextDidBeginEditingyyAA06SearchH0CFyycACcfu_yycfu0_', symObjAddr: 0x3A00, symBinAddr: 0x236FF0, symSize: 0x50 } + - { offset: 0x2EF159, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCAA17SearchBarDelegateA2aDP06searchH19TextDidBeginEditingyyAA0gH0CFTW', symObjAddr: 0x3A50, symBinAddr: 0x237040, symSize: 0x4 } + - { offset: 0x2EF180, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtF', symObjAddr: 0x3A54, symBinAddr: 0x237044, symSize: 0x27C } + - { offset: 0x2EF326, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x3D4C, symBinAddr: 0x2372C0, symSize: 0x8 } + - { offset: 0x2EF39D, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin11POICategoryV_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lo39C_10Foundation9IndexPathVtFSb7Penguin11F11V_AOtXEfU3_Tf1cn_n', symObjAddr: 0x3D98, symBinAddr: 0x2372C8, symSize: 0x108 } + - { offset: 0x2EF5CD, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin11POICategoryV_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lo39C_10Foundation9IndexPathVtFSb7Penguin11F11V_AOtXEfU3_Tf1nnncn_n', symObjAddr: 0x3EA0, symBinAddr: 0x2373D0, symSize: 0x834 } + - { offset: 0x2EFA42, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry7Penguin11POICategoryVG_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0ls15C_10Foundation9g19PathVtFSb7Penguin11J11V_AOtXEfU3_Tf1nncn_n', symObjAddr: 0x46D4, symBinAddr: 0x237C04, symSize: 0x290 } + - { offset: 0x2EFBAC, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin11POICategoryV_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lp39C_10Foundation9IndexPathVtFSb7Penguin11G11V_AOtXEfU3_Tf1nncn_n', symObjAddr: 0x4964, symBinAddr: 0x237E94, symSize: 0x284 } + - { offset: 0x2EFF31, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin11POICategoryV_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lq39C_10Foundation9IndexPathVtFSb7Penguin11H11V_AOtXEfU3_Tf1nnnnc_n', symObjAddr: 0x4BE8, symBinAddr: 0x238118, symSize: 0x5E4 } + - { offset: 0x2F0052, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC28searchBarTextDidBeginEditingyyAA06SearchH0CFyycACcfu_yycfu0_TA', symObjAddr: 0x51F0, symBinAddr: 0x238720, symSize: 0x8 } + - { offset: 0x2F0066, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x522C, symBinAddr: 0x23874C, symSize: 0x10 } + - { offset: 0x2F007A, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x523C, symBinAddr: 0x23875C, symSize: 0x8 } + - { offset: 0x2F008E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU8_TA', symObjAddr: 0x5270, symBinAddr: 0x238788, symSize: 0x20 } + - { offset: 0x2F00A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU9_TA', symObjAddr: 0x5290, symBinAddr: 0x2387A8, symSize: 0x8 } + - { offset: 0x2F00B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFy7Penguin10PoiPolygonVcfU6_TA', symObjAddr: 0x5298, symBinAddr: 0x2387B0, symSize: 0x30 } + - { offset: 0x2F00CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU7_TA', symObjAddr: 0x52D8, symBinAddr: 0x2387E0, symSize: 0x8 } + - { offset: 0x2F00DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU4_TA', symObjAddr: 0x52E0, symBinAddr: 0x2387E8, symSize: 0x8 } + - { offset: 0x2F00F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFy7Penguin11POICategoryVcfU5_TA', symObjAddr: 0x52E8, symBinAddr: 0x2387F0, symSize: 0x30 } + - { offset: 0x2F0106, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU2_TA', symObjAddr: 0x5318, symBinAddr: 0x238820, symSize: 0x20 } + - { offset: 0x2F011A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU0_TA', symObjAddr: 0x5338, symBinAddr: 0x238840, symSize: 0x20 } + - { offset: 0x2F012E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyAA8FavoriteCcfU1_TA', symObjAddr: 0x5358, symBinAddr: 0x238860, symSize: 0x8 } + - { offset: 0x2F0142, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU_TA', symObjAddr: 0x5360, symBinAddr: 0x238868, symSize: 0x20 } + - { offset: 0x2F0156, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC17didTapShareButton33_D0641B0FFCA1271976891547CEED6A97LLyyFyycACcfu_yycfu0_TA', symObjAddr: 0x5390, symBinAddr: 0x238888, symSize: 0x20 } + - { offset: 0x2F0188, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC16numberOfSections2inSiSo07UITableE0C_tFTf4dd_n', symObjAddr: 0x5654, symBinAddr: 0x238AC4, symSize: 0x8C } + - { offset: 0x2F02A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTf4dnn_n', symObjAddr: 0x56E0, symBinAddr: 0x238B50, symSize: 0x1C8 } + - { offset: 0x2F052B, size: 0x8, addend: 0x0, symName: '_$sSo15UITableViewCellCMa', symObjAddr: 0x58A8, symBinAddr: 0x238D18, symSize: 0x44 } + - { offset: 0x2F0559, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin11POICategoryVG_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lp39C_10Foundation9IndexPathVtFSb7Penguin11G11V_AOtXEfU3_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x233BA8, symSize: 0x80 } + - { offset: 0x2F0A61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC9searchBarAA06SearchH0CSgvgTo', symObjAddr: 0x80, symBinAddr: 0x233C28, symSize: 0x10 } + - { offset: 0x2F0A79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC9searchBarAA06SearchH0CSgvgTo', symObjAddr: 0x80, symBinAddr: 0x233C28, symSize: 0x10 } + - { offset: 0x2F0AB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC9searchBarAA06SearchH0CSgvsTo', symObjAddr: 0x90, symBinAddr: 0x233C38, symSize: 0x34 } + - { offset: 0x2F0CAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0xC4, symBinAddr: 0x233C6C, symSize: 0x10 } + - { offset: 0x2F0CC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0xC4, symBinAddr: 0x233C6C, symSize: 0x10 } + - { offset: 0x2F0D07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0So07UITableE0CSgvsTo', symObjAddr: 0xD4, symBinAddr: 0x233C7C, symSize: 0x34 } + - { offset: 0x2F0D56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC09separatorE0So6UIViewCSgvgTo', symObjAddr: 0x108, symBinAddr: 0x233CB0, symSize: 0x10 } + - { offset: 0x2F0D6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC09separatorE0So6UIViewCSgvgTo', symObjAddr: 0x108, symBinAddr: 0x233CB0, symSize: 0x10 } + - { offset: 0x2F0DAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC09separatorE0So6UIViewCSgvsTo', symObjAddr: 0x118, symBinAddr: 0x233CC0, symSize: 0x34 } + - { offset: 0x2F0DFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC14tryAgainButtonSo8UIButtonCSgvgTo', symObjAddr: 0x14C, symBinAddr: 0x233CF4, symSize: 0x10 } + - { offset: 0x2F0E15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC14tryAgainButtonSo8UIButtonCSgvgTo', symObjAddr: 0x14C, symBinAddr: 0x233CF4, symSize: 0x10 } + - { offset: 0x2F0E55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC14tryAgainButtonSo8UIButtonCSgvsTo', symObjAddr: 0x15C, symBinAddr: 0x233D04, symSize: 0x34 } + - { offset: 0x2F0FAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC11viewDidLoadyyF', symObjAddr: 0x190, symBinAddr: 0x233D38, symSize: 0x32C } + - { offset: 0x2F1224, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x570, symBinAddr: 0x234118, symSize: 0x28 } + - { offset: 0x2F1238, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCfD', symObjAddr: 0x6F4, symBinAddr: 0x23429C, symSize: 0xCC } + - { offset: 0x2F1278, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCfDTo', symObjAddr: 0x7C0, symBinAddr: 0x234368, symSize: 0xE0 } + - { offset: 0x2F12B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC24updateParkingElapsedTimeyyF', symObjAddr: 0xA08, symBinAddr: 0x2345B0, symSize: 0x17C } + - { offset: 0x2F14B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC24updateParkingElapsedTimeyyFTo', symObjAddr: 0xB84, symBinAddr: 0x23472C, symSize: 0x28 } + - { offset: 0x2F15A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC23feedbackSheetDidDismissyyF', symObjAddr: 0xBAC, symBinAddr: 0x234754, symSize: 0x128 } + - { offset: 0x2F176F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC15retryConnectionyyFTo', symObjAddr: 0xCD4, symBinAddr: 0x23487C, symSize: 0x94 } + - { offset: 0x2F1861, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xD68, symBinAddr: 0x234910, symSize: 0x2CC } + - { offset: 0x2F1A2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x1034, symBinAddr: 0x234BDC, symSize: 0x60 } + - { offset: 0x2F1A43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1094, symBinAddr: 0x234C3C, symSize: 0x2A8 } + - { offset: 0x2F1C03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x133C, symBinAddr: 0x234EE4, symSize: 0x28 } + - { offset: 0x2F233D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC24showsUserLocationSection33_D0641B0FFCA1271976891547CEED6A97LLSbvgTf4d_n', symObjAddr: 0x5438, symBinAddr: 0x2388A8, symSize: 0x190 } + - { offset: 0x2F248E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC19showsParkingSection33_D0641B0FFCA1271976891547CEED6A97LLSbvgTf4d_n', symObjAddr: 0x55C8, symBinAddr: 0x238A38, symSize: 0x8C } + - { offset: 0x2F2E3C, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE12scheduleDaysSayAA0E3DayVGvg', symObjAddr: 0x0, symBinAddr: 0x238D60, symSize: 0x258 } + - { offset: 0x2F32C8, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE10isTodayOffSbvg', symObjAddr: 0x258, symBinAddr: 0x238FB8, symSize: 0x270 } + - { offset: 0x2F35E5, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE6isOpenSbvg', symObjAddr: 0x4C8, symBinAddr: 0x239228, symSize: 0x514 } + - { offset: 0x2F3996, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE17todayOpeningHoursSSSgvg', symObjAddr: 0x9DC, symBinAddr: 0x23973C, symSize: 0x214 } + - { offset: 0x2F3B4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC7addressSSvg', symObjAddr: 0xDA0, symBinAddr: 0x239950, symSize: 0x1B0 } + - { offset: 0x2F3DD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataCMa', symObjAddr: 0x11B0, symBinAddr: 0x239D20, symSize: 0x20 } + - { offset: 0x2F3DE6, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE9isOpenNowSbvg', symObjAddr: 0x11D0, symBinAddr: 0x239D40, symSize: 0x3A4 } + - { offset: 0x2F43FD, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonVSgWOc', symObjAddr: 0x36BC, symBinAddr: 0x23A984, symSize: 0x48 } + - { offset: 0x2F4460, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVSgWOy', symObjAddr: 0x3C40, symBinAddr: 0x23AECC, symSize: 0x30 } + - { offset: 0x2F46AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC9amenitiesSayAA9AmenitiesVGSgvM', symObjAddr: 0xF50, symBinAddr: 0x239B00, symSize: 0x30 } + - { offset: 0x2F46C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC6imagesSaySSGSgvM', symObjAddr: 0xF80, symBinAddr: 0x239B30, symSize: 0x30 } + - { offset: 0x2F46D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC8scheduleSay7Penguin8ScheduleCGSgvM', symObjAddr: 0xFB4, symBinAddr: 0x239B60, symSize: 0x30 } + - { offset: 0x2F46EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC012setupOfflineF0yyF', symObjAddr: 0x1020, symBinAddr: 0x239B90, symSize: 0xFC } + - { offset: 0x2F475E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataCfd', symObjAddr: 0x111C, symBinAddr: 0x239C8C, symSize: 0x74 } + - { offset: 0x2F4781, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataCfD', symObjAddr: 0x1190, symBinAddr: 0x239D00, symSize: 0x20 } + - { offset: 0x2F48A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC3poiAC7Penguin0D7PolygonVSg_tcfCTf4nd_n', symObjAddr: 0x2E1C, symBinAddr: 0x23A0E4, symSize: 0x8A0 } + - { offset: 0x2F4CAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC05placeF0AcA7POIDataC_tcfCTf4nd_n', symObjAddr: 0x3740, symBinAddr: 0x23A9CC, symSize: 0x500 } + - { offset: 0x2F51AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC12messageTitleSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x23AEFC, symSize: 0x20 } + - { offset: 0x2F5399, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellCfETo', symObjAddr: 0x3E4, symBinAddr: 0x23B2E0, symSize: 0x38 } + - { offset: 0x2F53C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellCMa', symObjAddr: 0x41C, symBinAddr: 0x23B318, symSize: 0x20 } + - { offset: 0x2F546A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC12messageTitleSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x23AEFC, symSize: 0x20 } + - { offset: 0x2F54CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC12messageTitleSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x23AF1C, symSize: 0x14 } + - { offset: 0x2F551B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC18messageDescriptionSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x23AF30, symSize: 0x20 } + - { offset: 0x2F5570, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC18messageDescriptionSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x23AF50, symSize: 0x14 } + - { offset: 0x2F55C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC12awakeFromNibyyFTo', symObjAddr: 0x68, symBinAddr: 0x23AF64, symSize: 0x68 } + - { offset: 0x2F5633, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0xD0, symBinAddr: 0x23AFCC, symSize: 0x54 } + - { offset: 0x2F5676, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC03setdE07messageyAA0dE0C_tF', symObjAddr: 0x124, symBinAddr: 0x23B020, symSize: 0x108 } + - { offset: 0x2F570A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x22C, symBinAddr: 0x23B128, symSize: 0xE4 } + - { offset: 0x2F5786, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x310, symBinAddr: 0x23B20C, symSize: 0xA4 } + - { offset: 0x2F57BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellCfD', symObjAddr: 0x3B4, symBinAddr: 0x23B2B0, symSize: 0x30 } + - { offset: 0x2F5B48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10parseImageyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x23B338, symSize: 0x320 } + - { offset: 0x2F5BC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10parseImageyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x23B338, symSize: 0x320 } + - { offset: 0x2F610E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ScrollViewCMa', symObjAddr: 0x90, symBinAddr: 0x23B6E8, symSize: 0x20 } + - { offset: 0x2F616D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20InteractiveTableViewCMa', symObjAddr: 0x268, symBinAddr: 0x23B890, symSize: 0x20 } + - { offset: 0x2F61AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ScrollViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xC, symBinAddr: 0x23B664, symSize: 0x6C } + - { offset: 0x2F6235, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20InteractiveTableViewC5frame5styleACSo6CGRectV_So07UITableF5StyleVtcfcTo', symObjAddr: 0x130, symBinAddr: 0x23B788, symSize: 0x74 } + - { offset: 0x2F6929, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23displayFirstInstructionyyF', symObjAddr: 0x0, symBinAddr: 0x23B8B0, symSize: 0x63C } + - { offset: 0x2F6C8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22handleVoiceInstruction4text4type8distance06isLastI0ySSSg_AISdSgSbtF', symObjAddr: 0x63C, symBinAddr: 0x23BEEC, symSize: 0x430 } + - { offset: 0x2F72D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC31shouldDisplayGoAheadInstructionSbyF', symObjAddr: 0xA6C, symBinAddr: 0x23C31C, symSize: 0x340 } + - { offset: 0x2F752C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC25displayGoAheadInstructionyyF', symObjAddr: 0xDAC, symBinAddr: 0x23C65C, symSize: 0xB2C } + - { offset: 0x2F7BC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC30displayUpcomingTurnInstructionyyF', symObjAddr: 0x18D8, symBinAddr: 0x23D188, symSize: 0xF08 } + - { offset: 0x2F86EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC29displayLastGoAheadInstructionyyF', symObjAddr: 0x27E0, symBinAddr: 0x23E090, symSize: 0xDA4 } + - { offset: 0x2F9096, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC26displayElevatorInstruction12upcomingTurny7Penguin11SubpathEdgeC_tF', symObjAddr: 0x3584, symBinAddr: 0x23EE34, symSize: 0x520 } + - { offset: 0x2F94AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC27displayEscalatorInstruction12upcomingTurny7Penguin11SubpathEdgeC_tF', symObjAddr: 0x3AA4, symBinAddr: 0x23F354, symSize: 0x390 } + - { offset: 0x2F9776, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9speakText4textySS_tFTf4nd_n', symObjAddr: 0x3F18, symBinAddr: 0x23F7C8, symSize: 0x78 } + - { offset: 0x2F9806, size: 0x8, addend: 0x0, symName: '_$s7Penguin13FloorSettingsVSgWOh', symObjAddr: 0x41D4, symBinAddr: 0x23F9D0, symSize: 0x40 } + - { offset: 0x2FA019, size: 0x8, addend: 0x0, symName: '_$sSo19NSRegularExpressionC7pattern7optionsABSS_So0aB7OptionsVtKcfcTO', symObjAddr: 0x3E34, symBinAddr: 0x23F6E4, symSize: 0xE4 } + - { offset: 0x2FA3FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4zeroAEvpZ', symObjAddr: 0x7830, symBinAddr: 0x381048, symSize: 0x0 } + - { offset: 0x2FAA54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7fileURL7optionsACSg10Foundation0F0V_AC7OptionsVtcfC', symObjAddr: 0x0, symBinAddr: 0x23FA10, symSize: 0x14C } + - { offset: 0x2FABCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5named2in7optionsACSgSS_So8NSBundleCAC7OptionsVtcfC', symObjAddr: 0x15C, symBinAddr: 0x23FB64, symSize: 0x298 } + - { offset: 0x2FAD94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC4data7optionsACSg10Foundation4DataV_AC7OptionsVtcfC', symObjAddr: 0x3F4, symBinAddr: 0x23FDFC, symSize: 0xE0 } + - { offset: 0x2FAEB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGCfETo', symObjAddr: 0x7CC, symBinAddr: 0x23FFB8, symSize: 0x10 } + - { offset: 0x2FAEE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4zero_WZ', symObjAddr: 0x86C, symBinAddr: 0x240028, symSize: 0x14 } + - { offset: 0x2FAEFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4zero_WZ', symObjAddr: 0x86C, symBinAddr: 0x240028, symSize: 0x14 } + - { offset: 0x2FB6FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs9OptionSetAASYWb', symObjAddr: 0x730C, symBinAddr: 0x246A84, symSize: 0x4 } + - { offset: 0x2FB70E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVAESYAAWl', symObjAddr: 0x7310, symBinAddr: 0x246A88, symSize: 0x40 } + - { offset: 0x2FB722, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs9OptionSetAAs0G7AlgebraPWb', symObjAddr: 0x7350, symBinAddr: 0x246AC8, symSize: 0x4 } + - { offset: 0x2FB736, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVAEs10SetAlgebraAAWl', symObjAddr: 0x7354, symBinAddr: 0x246ACC, symSize: 0x40 } + - { offset: 0x2FB74A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs10SetAlgebraAASQWb', symObjAddr: 0x7394, symBinAddr: 0x246B0C, symSize: 0x4 } + - { offset: 0x2FB75E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVAESQAAWl', symObjAddr: 0x7398, symBinAddr: 0x246B10, symSize: 0x40 } + - { offset: 0x2FB772, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs10SetAlgebraAAs25ExpressibleByArrayLiteralPWb', symObjAddr: 0x73D8, symBinAddr: 0x246B50, symSize: 0x4 } + - { offset: 0x2FB786, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVAEs25ExpressibleByArrayLiteralAAWl', symObjAddr: 0x73DC, symBinAddr: 0x246B54, symSize: 0x40 } + - { offset: 0x2FB79A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGCMa', symObjAddr: 0x741C, symBinAddr: 0x246B94, symSize: 0x20 } + - { offset: 0x2FB7AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVMa', symObjAddr: 0x74A0, symBinAddr: 0x246BC0, symSize: 0x10 } + - { offset: 0x2FB7C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsVMa', symObjAddr: 0x7534, symBinAddr: 0x246BD0, symSize: 0x10 } + - { offset: 0x2FB815, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs25ExpressibleByArrayLiteralAAsAFP05arrayI0x0hI7ElementQzd_tcfCTW', symObjAddr: 0x71C, symBinAddr: 0x23FF5C, symSize: 0x4 } + - { offset: 0x2FBA6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsV8rawValueAESi_tcfC', symObjAddr: 0x14C, symBinAddr: 0x23FB5C, symSize: 0x8 } + - { offset: 0x2FBAC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4zeroAEvgZ', symObjAddr: 0x4D4, symBinAddr: 0x23FEDC, symSize: 0x58 } + - { offset: 0x2FBAEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC4sizeSo6CGSizeVvg', symObjAddr: 0x52C, symBinAddr: 0x23FF34, symSize: 0x14 } + - { offset: 0x2FBB11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsV8rawValueSivg', symObjAddr: 0x540, symBinAddr: 0x23FF48, symSize: 0x8 } + - { offset: 0x2FBB25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvgZ', symObjAddr: 0x548, symBinAddr: 0x23FF50, symSize: 0xC } + - { offset: 0x2FBB79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGCACycfc', symObjAddr: 0x740, symBinAddr: 0x23FF60, symSize: 0x2C } + - { offset: 0x2FBBD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGCACycfcTo', symObjAddr: 0x76C, symBinAddr: 0x23FF8C, symSize: 0x2C } + - { offset: 0x2FBC31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvg', symObjAddr: 0x7DC, symBinAddr: 0x23FFC8, symSize: 0x8 } + - { offset: 0x2FBC45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvs', symObjAddr: 0x7E4, symBinAddr: 0x23FFD0, symSize: 0x8 } + - { offset: 0x2FBC78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvg', symObjAddr: 0x800, symBinAddr: 0x23FFD8, symSize: 0x8 } + - { offset: 0x2FBC8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvs', symObjAddr: 0x808, symBinAddr: 0x23FFE0, symSize: 0x8 } + - { offset: 0x2FBCBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvM', symObjAddr: 0x810, symBinAddr: 0x23FFE8, symSize: 0x10 } + - { offset: 0x2FBCE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvg', symObjAddr: 0x824, symBinAddr: 0x23FFF8, symSize: 0x8 } + - { offset: 0x2FBCF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvs', symObjAddr: 0x82C, symBinAddr: 0x240000, symSize: 0x8 } + - { offset: 0x2FBD2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvg', symObjAddr: 0x848, symBinAddr: 0x240008, symSize: 0x8 } + - { offset: 0x2FBD3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvs', symObjAddr: 0x850, symBinAddr: 0x240010, symSize: 0x8 } + - { offset: 0x2FBD71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvM', symObjAddr: 0x858, symBinAddr: 0x240018, symSize: 0x10 } + - { offset: 0x2FBD9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV2eeoiySbAE_AEtFZ', symObjAddr: 0x880, symBinAddr: 0x24003C, symSize: 0x4 } + - { offset: 0x2FC693, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA10CGProviderV_Tg5Tf4nnnen_nAA09LuminanceuN0V_Tg5', symObjAddr: 0x888, symBinAddr: 0x240040, symSize: 0x21B4 } + - { offset: 0x2FEBB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA10CGProviderV_Tg5Tf4nnnen_nAA07DefaultuN0V_Tg5', symObjAddr: 0x2A3C, symBinAddr: 0x2421F4, symSize: 0x2004 } + - { offset: 0x3013D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0D0C_AA05ColorL0_ptFAA10CGProviderV_Tg5Tf4nen_nAA09LuminanceoL0V_Tg5', symObjAddr: 0x4A40, symBinAddr: 0x2441F8, symSize: 0xF78 } + - { offset: 0x302A57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0D0C_AA05ColorL0_ptFAA10CGProviderV_Tg5Tf4nen_nAA07DefaultoL0V_Tg5', symObjAddr: 0x59B8, symBinAddr: 0x245170, symSize: 0xF04 } + - { offset: 0x303FBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x68BC, symBinAddr: 0x246074, symSize: 0x3C } + - { offset: 0x304048, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC3dom7optionsAcA3DOMOABC_AC7OptionsVtcfcTf4gnn_n', symObjAddr: 0x71AC, symBinAddr: 0x246924, symSize: 0x160 } + - { offset: 0x304539, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18originalDismissImp33_73EE1AFD99A8C7D37AD8BE1B977755A6LLs13OpaquePointerVSgvp', symObjAddr: 0x6610, symBinAddr: 0x3810D0, symSize: 0x0 } + - { offset: 0x3053E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvpACTk', symObjAddr: 0x758, symBinAddr: 0x247230, symSize: 0x44 } + - { offset: 0x305575, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvpACTK', symObjAddr: 0x4A60, symBinAddr: 0x24B3D4, symSize: 0x6C } + - { offset: 0x3055D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvpACTk', symObjAddr: 0x4ACC, symBinAddr: 0x24B440, symSize: 0x64 } + - { offset: 0x305645, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerCfETo', symObjAddr: 0x4CA4, symBinAddr: 0x24B618, symSize: 0x78 } + - { offset: 0x3056A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16dismissSwizzling33_73EE1AFD99A8C7D37AD8BE1B977755A6LL_WZ', symObjAddr: 0x4D1C, symBinAddr: 0x24B690, symSize: 0x74 } + - { offset: 0x305706, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE18__swizzled_dismiss33_73EE1AFD99A8C7D37AD8BE1B977755A6LL8animated10completionySb_yycSgtF', symObjAddr: 0x4D90, symBinAddr: 0x24B704, symSize: 0x2E4 } + - { offset: 0x3057B9, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE18__swizzled_dismiss33_73EE1AFD99A8C7D37AD8BE1B977755A6LL8animated10completionySb_yycSgtFTo', symObjAddr: 0x5074, symBinAddr: 0x24B9E8, symSize: 0x90 } + - { offset: 0x3058FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerCMa', symObjAddr: 0x595C, symBinAddr: 0x24C24C, symSize: 0x20 } + - { offset: 0x305926, size: 0x8, addend: 0x0, symName: _keypath_get_selector_safeAreaInsets, symObjAddr: 0x5AEC, symBinAddr: 0x24C3DC, symSize: 0xC } + - { offset: 0x30593A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtFySo6UIViewC_10Foundation24NSKeyValueObservedChangeVySo12UIEdgeInsetsVGtYbcfU_TA', symObjAddr: 0x5B50, symBinAddr: 0x24C440, symSize: 0x8 } + - { offset: 0x30594E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtFyycfU_TA', symObjAddr: 0x5B94, symBinAddr: 0x24C484, symSize: 0xC } + - { offset: 0x305962, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorOSHAASQWb', symObjAddr: 0x5BF0, symBinAddr: 0x24C4C4, symSize: 0x4 } + - { offset: 0x305976, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorOAESQAAWl', symObjAddr: 0x5BF4, symBinAddr: 0x24C4C8, symSize: 0x40 } + - { offset: 0x30598A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11ContentModeOSHAASQWb', symObjAddr: 0x5C34, symBinAddr: 0x24C508, symSize: 0x4 } + - { offset: 0x30599E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11ContentModeOAESQAAWl', symObjAddr: 0x5C38, symBinAddr: 0x24C50C, symSize: 0x40 } + - { offset: 0x3059B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorOMa', symObjAddr: 0x6420, symBinAddr: 0x24CB18, symSize: 0x10 } + - { offset: 0x3059C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11ContentModeOMa', symObjAddr: 0x6430, symBinAddr: 0x24CB28, symSize: 0x10 } + - { offset: 0x3059E5, size: 0x8, addend: 0x0, symName: '_$sIeyB_Ieg_TRTA', symObjAddr: 0x6474, symBinAddr: 0x24CB5C, symSize: 0xC } + - { offset: 0x305A0E, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x6480, symBinAddr: 0x24CB68, symSize: 0x10 } + - { offset: 0x305A22, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x6490, symBinAddr: 0x24CB78, symSize: 0x8 } + - { offset: 0x305A36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyFyycfU0_TA', symObjAddr: 0x6498, symBinAddr: 0x24CB80, symSize: 0x8 } + - { offset: 0x305A4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyFyycfU_TA', symObjAddr: 0x64A0, symBinAddr: 0x24CB88, symSize: 0x8 } + - { offset: 0x305DB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvgTo', symObjAddr: 0x108, symBinAddr: 0x246BE0, symSize: 0x48 } + - { offset: 0x305DE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvg', symObjAddr: 0x150, symBinAddr: 0x246C28, symSize: 0x44 } + - { offset: 0x305E05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvsTo', symObjAddr: 0x194, symBinAddr: 0x246C6C, symSize: 0x40 } + - { offset: 0x305E97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvs', symObjAddr: 0x1D4, symBinAddr: 0x246CAC, symSize: 0x150 } + - { offset: 0x305FD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvM', symObjAddr: 0x324, symBinAddr: 0x246DFC, symSize: 0x84 } + - { offset: 0x30600B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvM.resume.0', symObjAddr: 0x3A8, symBinAddr: 0x246E80, symSize: 0x168 } + - { offset: 0x3061AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvgTo', symObjAddr: 0x580, symBinAddr: 0x247058, symSize: 0x38 } + - { offset: 0x3061DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvgTo', symObjAddr: 0x580, symBinAddr: 0x247058, symSize: 0x38 } + - { offset: 0x30622C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvg', symObjAddr: 0x5B8, symBinAddr: 0x247090, symSize: 0x28 } + - { offset: 0x30624C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvg', symObjAddr: 0x5B8, symBinAddr: 0x247090, symSize: 0x28 } + - { offset: 0x3062C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvgTo', symObjAddr: 0x668, symBinAddr: 0x247140, symSize: 0x3C } + - { offset: 0x30630C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvgTo', symObjAddr: 0x668, symBinAddr: 0x247140, symSize: 0x3C } + - { offset: 0x30635D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvg', symObjAddr: 0x6A4, symBinAddr: 0x24717C, symSize: 0x2C } + - { offset: 0x306392, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvg', symObjAddr: 0x6A4, symBinAddr: 0x24717C, symSize: 0x2C } + - { offset: 0x3063E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvsTo', symObjAddr: 0x6D0, symBinAddr: 0x2471A8, symSize: 0x5C } + - { offset: 0x30640B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvs', symObjAddr: 0x72C, symBinAddr: 0x247204, symSize: 0x2C } + - { offset: 0x30641F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvM', symObjAddr: 0x79C, symBinAddr: 0x247274, symSize: 0x60 } + - { offset: 0x3064BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvM.resume.0', symObjAddr: 0x7FC, symBinAddr: 0x2472D4, symSize: 0x74 } + - { offset: 0x30652D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvgTo', symObjAddr: 0x870, symBinAddr: 0x247348, symSize: 0x3C } + - { offset: 0x306573, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvgTo', symObjAddr: 0x870, symBinAddr: 0x247348, symSize: 0x3C } + - { offset: 0x3065A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvg', symObjAddr: 0x8AC, symBinAddr: 0x247384, symSize: 0x2C } + - { offset: 0x3065D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvg', symObjAddr: 0x8AC, symBinAddr: 0x247384, symSize: 0x2C } + - { offset: 0x306609, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvsTo', symObjAddr: 0x8D8, symBinAddr: 0x2473B0, symSize: 0x40 } + - { offset: 0x306660, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvs', symObjAddr: 0x918, symBinAddr: 0x2473F0, symSize: 0x2D0 } + - { offset: 0x306851, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvM', symObjAddr: 0xBE8, symBinAddr: 0x2476C0, symSize: 0x60 } + - { offset: 0x3068D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvM.resume.0', symObjAddr: 0xC48, symBinAddr: 0x247720, symSize: 0x44 } + - { offset: 0x30690C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0VvgTo', symObjAddr: 0xC8C, symBinAddr: 0x247764, symSize: 0x90 } + - { offset: 0x30693B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0VvgTo', symObjAddr: 0xC8C, symBinAddr: 0x247764, symSize: 0x90 } + - { offset: 0x30696B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0Vvg', symObjAddr: 0xD1C, symBinAddr: 0x2477F4, symSize: 0x80 } + - { offset: 0x3069D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvgTo', symObjAddr: 0xD9C, symBinAddr: 0x247874, symSize: 0x44 } + - { offset: 0x306A03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovg', symObjAddr: 0xDE0, symBinAddr: 0x2478B8, symSize: 0x40 } + - { offset: 0x306A47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvsTo', symObjAddr: 0xE20, symBinAddr: 0x2478F8, symSize: 0x50 } + - { offset: 0x306A82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovs', symObjAddr: 0xE70, symBinAddr: 0x247948, symSize: 0x4C } + - { offset: 0x306AAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvM', symObjAddr: 0xEBC, symBinAddr: 0x247994, symSize: 0x40 } + - { offset: 0x306B35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvsTo', symObjAddr: 0xF58, symBinAddr: 0x247A2C, symSize: 0x28 } + - { offset: 0x306B6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvsTo', symObjAddr: 0xF58, symBinAddr: 0x247A2C, symSize: 0x28 } + - { offset: 0x306BC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvs', symObjAddr: 0xF80, symBinAddr: 0x247A54, symSize: 0x2C } + - { offset: 0x306BE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvs', symObjAddr: 0xF80, symBinAddr: 0x247A54, symSize: 0x2C } + - { offset: 0x306C65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM', symObjAddr: 0xFAC, symBinAddr: 0x247A80, symSize: 0x40 } + - { offset: 0x306CE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM.resume.0', symObjAddr: 0xFEC, symBinAddr: 0x247AC0, symSize: 0x34 } + - { offset: 0x306D04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM.resume.0', symObjAddr: 0xFEC, symBinAddr: 0x247AC0, symSize: 0x34 } + - { offset: 0x306D18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM.resume.0', symObjAddr: 0xFEC, symBinAddr: 0x247AC0, symSize: 0x34 } + - { offset: 0x306DD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvg', symObjAddr: 0x1030, symBinAddr: 0x247B04, symSize: 0x30 } + - { offset: 0x306E37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvsTo', symObjAddr: 0x1060, symBinAddr: 0x247B34, symSize: 0x54 } + - { offset: 0x306E6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvs', symObjAddr: 0x10B4, symBinAddr: 0x247B88, symSize: 0x24 } + - { offset: 0x306E93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvM', symObjAddr: 0x10D8, symBinAddr: 0x247BAC, symSize: 0x40 } + - { offset: 0x306EE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvM.resume.0', symObjAddr: 0x1118, symBinAddr: 0x247BEC, symSize: 0x54 } + - { offset: 0x306F40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvg', symObjAddr: 0x116C, symBinAddr: 0x247C40, symSize: 0x98 } + - { offset: 0x30700E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvgTo', symObjAddr: 0x1204, symBinAddr: 0x247CD8, symSize: 0x44 } + - { offset: 0x307042, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovg', symObjAddr: 0x1248, symBinAddr: 0x247D1C, symSize: 0x40 } + - { offset: 0x307088, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvsTo', symObjAddr: 0x1288, symBinAddr: 0x247D5C, symSize: 0x68 } + - { offset: 0x3070BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovs', symObjAddr: 0x12F0, symBinAddr: 0x247DC4, symSize: 0x50 } + - { offset: 0x307131, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvW', symObjAddr: 0x1340, symBinAddr: 0x247E14, symSize: 0x11C } + - { offset: 0x307243, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvM', symObjAddr: 0x145C, symBinAddr: 0x247F30, symSize: 0x44 } + - { offset: 0x307269, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvM.resume.0', symObjAddr: 0x14A0, symBinAddr: 0x247F74, symSize: 0x30 } + - { offset: 0x3072D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1514, symBinAddr: 0x247FA4, symSize: 0x110 } + - { offset: 0x30731F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1624, symBinAddr: 0x2480B4, symSize: 0x28 } + - { offset: 0x307333, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x164C, symBinAddr: 0x2480DC, symSize: 0x114 } + - { offset: 0x307380, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x1760, symBinAddr: 0x2481F0, symSize: 0x54 } + - { offset: 0x307394, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAcA0deF8Delegate_pSg_tcfC', symObjAddr: 0x17B4, symBinAddr: 0x248244, symSize: 0x30 } + - { offset: 0x3073A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAcA0deF8Delegate_pSg_tcfc', symObjAddr: 0x17E4, symBinAddr: 0x248274, symSize: 0x134 } + - { offset: 0x3073F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAcA0deF8Delegate_pSg_tcfcTo', symObjAddr: 0x1918, symBinAddr: 0x2483A8, symSize: 0x30 } + - { offset: 0x307472, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5setUp33_73EE1AFD99A8C7D37AD8BE1B977755A6LLyyF', symObjAddr: 0x1948, symBinAddr: 0x2483D8, symSize: 0x19C } + - { offset: 0x307605, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8loadViewyyF', symObjAddr: 0x1AE4, symBinAddr: 0x248574, symSize: 0x1A0 } + - { offset: 0x3077DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8loadViewyyFTo', symObjAddr: 0x1C84, symBinAddr: 0x248714, symSize: 0x28 } + - { offset: 0x3077F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21viewDidLayoutSubviewsyyF', symObjAddr: 0x1CAC, symBinAddr: 0x24873C, symSize: 0x94 } + - { offset: 0x30786B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21viewDidLayoutSubviewsyyFTo', symObjAddr: 0x1D40, symBinAddr: 0x2487D0, symSize: 0x28 } + - { offset: 0x3078A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC13viewDidAppearyySbFTo', symObjAddr: 0x1DD0, symBinAddr: 0x2487F8, symSize: 0x8C } + - { offset: 0x307903, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18viewWillTransition2to4withySo6CGSizeV_So06UIViewfI11Coordinator_ptF', symObjAddr: 0x1E5C, symBinAddr: 0x248884, symSize: 0x274 } + - { offset: 0x307A4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18viewWillTransition2to4withySo6CGSizeV_So06UIViewfI11Coordinator_ptFTo', symObjAddr: 0x20D0, symBinAddr: 0x248AF8, symSize: 0x60 } + - { offset: 0x307A6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC14willTransition2to4withySo17UITraitCollectionC_So06UIViewfH11Coordinator_ptF', symObjAddr: 0x2130, symBinAddr: 0x248B58, symSize: 0x17C } + - { offset: 0x307B98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC14willTransition2to4withySo17UITraitCollectionC_So06UIViewfH11Coordinator_ptFTo', symObjAddr: 0x22AC, symBinAddr: 0x248CD4, symSize: 0x68 } + - { offset: 0x307C0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC17viewWillDisappearyySbFTo', symObjAddr: 0x2368, symBinAddr: 0x248D3C, symSize: 0x7C } + - { offset: 0x307CA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6update33_73EE1AFD99A8C7D37AD8BE1B977755A6LL14safeAreaInsetsySo06UIEdgeS0V_tF', symObjAddr: 0x23E4, symBinAddr: 0x248DB8, symSize: 0x360 } + - { offset: 0x3080AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyF', symObjAddr: 0x2744, symBinAddr: 0x249118, symSize: 0x2BC } + - { offset: 0x30823C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyFyycfU_', symObjAddr: 0x2A00, symBinAddr: 0x2493D4, symSize: 0xC0 } + - { offset: 0x3082B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyFyycfU0_', symObjAddr: 0x2AC0, symBinAddr: 0x249494, symSize: 0xF4 } + - { offset: 0x308351, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtF', symObjAddr: 0x2BB4, symBinAddr: 0x249588, symSize: 0x1F0 } + - { offset: 0x308559, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtFySo6UIViewC_10Foundation24NSKeyValueObservedChangeVySo12UIEdgeInsetsVGtYbcfU_', symObjAddr: 0x2DA4, symBinAddr: 0x249778, symSize: 0x238 } + - { offset: 0x30863A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtFTo', symObjAddr: 0x2FDC, symBinAddr: 0x2499B0, symSize: 0x90 } + - { offset: 0x30864E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4hide8animated10completionySb_yycSgtF', symObjAddr: 0x306C, symBinAddr: 0x249A40, symSize: 0xC0 } + - { offset: 0x30874C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4hide8animated10completionySb_yycSgtFTo', symObjAddr: 0x312C, symBinAddr: 0x249B00, symSize: 0x120 } + - { offset: 0x308879, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtF', symObjAddr: 0x324C, symBinAddr: 0x249C20, symSize: 0x798 } + - { offset: 0x308AB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtFyycfU_', symObjAddr: 0x39E4, symBinAddr: 0x24A3B8, symSize: 0x7C } + - { offset: 0x308B1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtFTo', symObjAddr: 0x3A60, symBinAddr: 0x24A434, symSize: 0xC0 } + - { offset: 0x308B30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtF', symObjAddr: 0x3B20, symBinAddr: 0x24A4F4, symSize: 0x1C4 } + - { offset: 0x308CA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtFyycfU_', symObjAddr: 0x3CE4, symBinAddr: 0x24A6B8, symSize: 0x134 } + - { offset: 0x308D33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtFTo', symObjAddr: 0x3E18, symBinAddr: 0x24A7EC, symSize: 0x90 } + - { offset: 0x308D47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4move2to8animated10completionyAA0dE5StateC_SbyycSgtF', symObjAddr: 0x3EA8, symBinAddr: 0x24A87C, symSize: 0x9C } + - { offset: 0x308E08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4move2to8animated10completionyAA0dE5StateC_SbyycSgtFTo', symObjAddr: 0x3F44, symBinAddr: 0x24A918, symSize: 0x108 } + - { offset: 0x308EEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC3set011contentViewF0ySo06UIViewF0CSg_tF', symObjAddr: 0x404C, symBinAddr: 0x24AA20, symSize: 0x194 } + - { offset: 0x30906A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5track10scrollViewySo08UIScrollI0C_tF', symObjAddr: 0x41E0, symBinAddr: 0x24ABB4, symSize: 0x1AC } + - { offset: 0x309213, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5track10scrollViewySo08UIScrollI0C_tFTo', symObjAddr: 0x438C, symBinAddr: 0x24AD60, symSize: 0x50 } + - { offset: 0x309227, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC24followScrollViewBouncingyyF', symObjAddr: 0x43DC, symBinAddr: 0x24ADB0, symSize: 0x3C } + - { offset: 0x309280, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC7untrack10scrollViewySo08UIScrollI0C_tF', symObjAddr: 0x4418, symBinAddr: 0x24ADEC, symSize: 0x118 } + - { offset: 0x30934C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC7untrack10scrollViewySo08UIScrollI0C_tFTo', symObjAddr: 0x4530, symBinAddr: 0x24AF04, symSize: 0x50 } + - { offset: 0x309375, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC26accessibilityPerformEscapeSbyFTo', symObjAddr: 0x45E0, symBinAddr: 0x24AF54, symSize: 0x5C } + - { offset: 0x3093BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC26accessibilityPerformEscapeSbyFTo', symObjAddr: 0x45E0, symBinAddr: 0x24AF54, symSize: 0x5C } + - { offset: 0x30940C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16invalidateLayoutyyF', symObjAddr: 0x463C, symBinAddr: 0x24AFB0, symSize: 0x134 } + - { offset: 0x309516, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16invalidateLayoutyyFTo', symObjAddr: 0x4770, symBinAddr: 0x24B0E4, symSize: 0x28 } + - { offset: 0x30952A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocation3forSo7CGPointVAA0dE5StateC_tF', symObjAddr: 0x4798, symBinAddr: 0x24B10C, symSize: 0x70 } + - { offset: 0x3095A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocation3forSo7CGPointVAA0dE5StateC_tFTo', symObjAddr: 0x4808, symBinAddr: 0x24B17C, symSize: 0xA0 } + - { offset: 0x3095E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocation3forSo7CGPointVAA0dE5StateC_tFTo', symObjAddr: 0x4808, symBinAddr: 0x24B17C, symSize: 0xA0 } + - { offset: 0x309613, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvgTo', symObjAddr: 0x48A8, symBinAddr: 0x24B21C, symSize: 0x78 } + - { offset: 0x309643, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvgTo', symObjAddr: 0x48A8, symBinAddr: 0x24B21C, symSize: 0x78 } + - { offset: 0x309674, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvg', symObjAddr: 0x4920, symBinAddr: 0x24B294, symSize: 0x68 } + - { offset: 0x3096ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvsTo', symObjAddr: 0x4988, symBinAddr: 0x24B2FC, symSize: 0x74 } + - { offset: 0x309727, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvsTo', symObjAddr: 0x4988, symBinAddr: 0x24B2FC, symSize: 0x74 } + - { offset: 0x309758, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvs', symObjAddr: 0x49FC, symBinAddr: 0x24B370, symSize: 0x64 } + - { offset: 0x3097B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM', symObjAddr: 0x4B30, symBinAddr: 0x24B4A4, symSize: 0x78 } + - { offset: 0x30981E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM.resume.0', symObjAddr: 0x4BA8, symBinAddr: 0x24B51C, symSize: 0x68 } + - { offset: 0x309843, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM.resume.0', symObjAddr: 0x4BA8, symBinAddr: 0x24B51C, symSize: 0x68 } + - { offset: 0x309857, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM.resume.0', symObjAddr: 0x4BA8, symBinAddr: 0x24B51C, symSize: 0x68 } + - { offset: 0x3098ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC13addTopPadding7paddingy12CoreGraphics7CGFloatV_tF', symObjAddr: 0x4C10, symBinAddr: 0x24B584, symSize: 0x64 } + - { offset: 0x309957, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerCfD', symObjAddr: 0x4C74, symBinAddr: 0x24B5E8, symSize: 0x30 } + - { offset: 0x309984, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvsTf4en_n', symObjAddr: 0x5104, symBinAddr: 0x24BA78, symSize: 0x2EC } + - { offset: 0x309CE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC_6layout8behaviorAcA23FloatingPanelControllerC_AA0gH6Layout_pAA0gH8Behavior_ptcfcTf4nnen_nAA0gh7DefaultK0C_Tg5', symObjAddr: 0x53F0, symBinAddr: 0x24BD64, symSize: 0x4E8 } + - { offset: 0x309EE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18shouldUpdateLayout33_73EE1AFD99A8C7D37AD8BE1B977755A6LL4from2toSbSo17UITraitCollectionC_AItFTf4nnd_n', symObjAddr: 0x597C, symBinAddr: 0x24C26C, symSize: 0x170 } + - { offset: 0x30A3E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC13insertCampign10geofenceIdySiSg_tF', symObjAddr: 0x0, symBinAddr: 0x24CBE4, symSize: 0x198 } + - { offset: 0x30A55F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryCMa', symObjAddr: 0x874, symBinAddr: 0x24D434, symSize: 0x20 } + - { offset: 0x30A573, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC13insertCampign10geofenceIdySiSg_tFyyYbXEfU_TA', symObjAddr: 0x940, symBinAddr: 0x24D478, symSize: 0x8 } + - { offset: 0x30A587, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x960, symBinAddr: 0x24D490, symSize: 0x10 } + - { offset: 0x30A59B, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x970, symBinAddr: 0x24D4A0, symSize: 0x8 } + - { offset: 0x30A706, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC13insertCampign10geofenceIdySiSg_tF', symObjAddr: 0x0, symBinAddr: 0x24CBE4, symSize: 0x198 } + - { offset: 0x30A7AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC13insertCampign10geofenceIdySiSg_tFyyYbXEfU_', symObjAddr: 0x198, symBinAddr: 0x24CD7C, symSize: 0x228 } + - { offset: 0x30A864, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC06removeD033_4371A12B79815A679BB985BCBBAFD484LL2idySi_tF', symObjAddr: 0x3C0, symBinAddr: 0x24CFA4, symSize: 0x258 } + - { offset: 0x30AADD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC15getNotification2idAA0D8TrackingCSgSi_tF', symObjAddr: 0x618, symBinAddr: 0x24D1FC, symSize: 0x238 } + - { offset: 0x30B0BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC14placeImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x24D4A8, symSize: 0x10 } + - { offset: 0x30B521, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellCfETo', symObjAddr: 0x12D0, symBinAddr: 0x24E778, symSize: 0x98 } + - { offset: 0x30B550, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellCMa', symObjAddr: 0x1368, symBinAddr: 0x24E810, symSize: 0x20 } + - { offset: 0x30B564, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC8setImage3foryAA5PlaceCSg_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x141C, symBinAddr: 0x24E880, symSize: 0x8 } + - { offset: 0x30B6ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC14placeImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x24D4A8, symSize: 0x10 } + - { offset: 0x30B705, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC14placeImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x24D4A8, symSize: 0x10 } + - { offset: 0x30B74B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC14placeImageViewSo07UIImageH0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x24D4B8, symSize: 0x34 } + - { offset: 0x30B79A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x24D4EC, symSize: 0x10 } + - { offset: 0x30B7B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x24D4EC, symSize: 0x10 } + - { offset: 0x30B7F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x24D4FC, symSize: 0x34 } + - { offset: 0x30B841, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17distanceStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x24D530, symSize: 0x10 } + - { offset: 0x30B859, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17distanceStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x24D530, symSize: 0x10 } + - { offset: 0x30B899, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17distanceStackViewSo07UIStackH0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x24D540, symSize: 0x34 } + - { offset: 0x30B8E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x24D574, symSize: 0x10 } + - { offset: 0x30B900, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x24D574, symSize: 0x10 } + - { offset: 0x30B93B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x24D584, symSize: 0x34 } + - { offset: 0x30B98A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13categoryLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x24D5B8, symSize: 0x10 } + - { offset: 0x30B9A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13categoryLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x24D5B8, symSize: 0x10 } + - { offset: 0x30B9DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13categoryLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x24D5C8, symSize: 0x34 } + - { offset: 0x30BA2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x24D5FC, symSize: 0x10 } + - { offset: 0x30BA44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x24D5FC, symSize: 0x10 } + - { offset: 0x30BA7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x24D60C, symSize: 0x34 } + - { offset: 0x30BACE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17subtitleStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x24D640, symSize: 0x10 } + - { offset: 0x30BAE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17subtitleStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x24D640, symSize: 0x10 } + - { offset: 0x30BB21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17subtitleStackViewSo07UIStackH0CSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x24D650, symSize: 0x34 } + - { offset: 0x30BB70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC12awakeFromNibyyFTo', symObjAddr: 0x1DC, symBinAddr: 0x24D684, symSize: 0x3C } + - { offset: 0x30BC3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC9configure3for12showsDetailsyAA5PlaceCSg_SbtF', symObjAddr: 0x218, symBinAddr: 0x24D6C0, symSize: 0x874 } + - { offset: 0x30C067, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC8setImage3foryAA5PlaceCSg_tF', symObjAddr: 0xA8C, symBinAddr: 0x24DF34, symSize: 0x368 } + - { offset: 0x30C1CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC8setImage3foryAA5PlaceCSg_tFySo7UIImageCSgcfU_', symObjAddr: 0xDF4, symBinAddr: 0x24E29C, symSize: 0x150 } + - { offset: 0x30C27E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC15prepareForReuseyyF', symObjAddr: 0xF44, symBinAddr: 0x24E3EC, symSize: 0x114 } + - { offset: 0x30C302, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC15prepareForReuseyyFTo', symObjAddr: 0x1058, symBinAddr: 0x24E500, symSize: 0x28 } + - { offset: 0x30C316, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x1080, symBinAddr: 0x24E528, symSize: 0xE4 } + - { offset: 0x30C357, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x1164, symBinAddr: 0x24E60C, symSize: 0x48 } + - { offset: 0x30C38F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x11AC, symBinAddr: 0x24E654, symSize: 0xCC } + - { offset: 0x30C3C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1278, symBinAddr: 0x24E720, symSize: 0x28 } + - { offset: 0x30C3D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellCfD', symObjAddr: 0x12A0, symBinAddr: 0x24E748, symSize: 0x30 } + - { offset: 0x30D031, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22FloatingPanelPresenterPAAE7present_5level5state8animated10completionyAA0dE11Presentable_pSg_SiAA0dE5StateCSgSbyycSgtFAA18HomeViewControllerC_Tg5', symObjAddr: 0xC0, symBinAddr: 0x24E888, symSize: 0x3C8 } + - { offset: 0x30D6B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tF', symObjAddr: 0x1838, symBinAddr: 0x250000, symSize: 0x774 } + - { offset: 0x30DE91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycAA03MapeF0Ccfu5_yycfu6_', symObjAddr: 0x606C, symBinAddr: 0x254834, symSize: 0x88 } + - { offset: 0x30DF25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycfU0_', symObjAddr: 0x60F4, symBinAddr: 0x2548BC, symSize: 0xC8 } + - { offset: 0x30E54F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showPoiDetails3poi06sourceE0y7Penguin0H7PolygonV_AA06SourceE0OtF', symObjAddr: 0x2C80, symBinAddr: 0x251448, symSize: 0x698 } + - { offset: 0x30ED94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC16showVenueDetails5venuey7Penguin0H0C_tF', symObjAddr: 0x3318, symBinAddr: 0x251AE0, symSize: 0x640 } + - { offset: 0x30F5E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showCampusDetails6campusy7Penguin5VenueCSg_tF', symObjAddr: 0x3958, symBinAddr: 0x252120, symSize: 0x650 } + - { offset: 0x30FD12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showCampusDetails6campusy7Penguin5VenueCSg_tFyycfU_', symObjAddr: 0x8E28, symBinAddr: 0x257550, symSize: 0xF4 } + - { offset: 0x30FE2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tF', symObjAddr: 0x3FA8, symBinAddr: 0x252770, symSize: 0x4D0 } + - { offset: 0x31033D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tFyycfU_', symObjAddr: 0x9CFC, symBinAddr: 0x258424, symSize: 0x198 } + - { offset: 0x3104CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tFyycfU0_', symObjAddr: 0x9E94, symBinAddr: 0x2585BC, symSize: 0x13C } + - { offset: 0x3106E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC19showCategoryResults8category7filtersy7Penguin11POICategoryV_AA0H7FiltersVSgtF', symObjAddr: 0x4580, symBinAddr: 0x252D48, symSize: 0x318 } + - { offset: 0x310A2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showSharedUserLocation8locationyAA5PlaceCSg_tF', symObjAddr: 0x4898, symBinAddr: 0x253060, symSize: 0x4E8 } + - { offset: 0x311130, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCfETo', symObjAddr: 0x5538, symBinAddr: 0x253D00, symSize: 0x118 } + - { offset: 0x31115F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCMa', symObjAddr: 0x5650, symBinAddr: 0x253E18, symSize: 0x20 } + - { offset: 0x311173, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA22FloatingPanelPresenterA2aDP08floatingH7DidMoveyyAA0ghF0CFTW', symObjAddr: 0x573C, symBinAddr: 0x253F04, symSize: 0x4 } + - { offset: 0x3111CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x5740, symBinAddr: 0x253F08, symSize: 0x184 } + - { offset: 0x3113A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13showDirectoryyyF', symObjAddr: 0x58C4, symBinAddr: 0x25408C, symSize: 0x3E4 } + - { offset: 0x311824, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showCategories10categoriesySay7Penguin11POICategoryVG_tF', symObjAddr: 0x5CA8, symBinAddr: 0x254470, symSize: 0x3C4 } + - { offset: 0x311C63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showCategories10categoriesySay7Penguin11POICategoryVG_tFyAHcfU0_', symObjAddr: 0x7360, symBinAddr: 0x255A88, symSize: 0x4C } + - { offset: 0x311E03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15showSearchPanel4overyAA08FloatingI11Presentable_pSg_tF', symObjAddr: 0x61BC, symBinAddr: 0x254984, symSize: 0x470 } + - { offset: 0x31239D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC16showAllFavoritesyyF', symObjAddr: 0x662C, symBinAddr: 0x254DF4, symSize: 0x3D8 } + - { offset: 0x312897, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12showFavorite8favoriteyAA0H0C_tF', symObjAddr: 0x6A04, symBinAddr: 0x2551CC, symSize: 0x274 } + - { offset: 0x3129C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC20handleFiltersDisplay11displayType11selectedIdsyAA03TagiK0O_SaySiGtF', symObjAddr: 0x6C78, symBinAddr: 0x255440, symSize: 0x120 } + - { offset: 0x312BAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showAllFilters33_A0A4D0656B505EF3DF25D7EB9947CEF6LL06searchI0yAA12SearchFilterCSg_tF', symObjAddr: 0x6D98, symBinAddr: 0x255560, symSize: 0x3AC } + - { offset: 0x312FEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showAllFilters33_A0A4D0656B505EF3DF25D7EB9947CEF6LL06searchI0yAA12SearchFilterCSg_tFyAIcfU_', symObjAddr: 0xA90C, symBinAddr: 0x259034, symSize: 0x10C } + - { offset: 0x313128, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtF', symObjAddr: 0x73AC, symBinAddr: 0x255AD4, symSize: 0x558 } + - { offset: 0x31371C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFySaySSGcAA03MapeF0Ccfu_yAKcfu0_', symObjAddr: 0x7904, symBinAddr: 0x25602C, symSize: 0x154 } + - { offset: 0x3137A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyycfU0_', symObjAddr: 0x7A58, symBinAddr: 0x256180, symSize: 0x1F4 } + - { offset: 0x3138D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyAA0H7FiltersVSgcAA0hieF0Ccfu1_yAMcfu2_', symObjAddr: 0x7C4C, symBinAddr: 0x256374, symSize: 0xD4 } + - { offset: 0x313A1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showVenueSelector33_A0A4D0656B505EF3DF25D7EB9947CEF6LL07currentH2IdySiSg_tF', symObjAddr: 0x7D20, symBinAddr: 0x256448, symSize: 0x3AC } + - { offset: 0x313F01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25displayFloorSelectorPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL7venueId11closeActionySiSg_yAHcSgtF', symObjAddr: 0x80CC, symBinAddr: 0x2567F4, symSize: 0x438 } + - { offset: 0x3143E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25displayFloorSelectorPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL7venueId11closeActionySiSg_yAHcSgtFy7Penguin0H0CcfU_', symObjAddr: 0x8504, symBinAddr: 0x256C2C, symSize: 0xEC } + - { offset: 0x3144C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showNavigationFeedback11destination5titleyAA5PlaceCSg_SSSgtF', symObjAddr: 0x85F0, symBinAddr: 0x256D18, symSize: 0x414 } + - { offset: 0x314985, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showNavigationFeedback11destination5titleyAA5PlaceCSg_SSSgtFyycfU_', symObjAddr: 0x8F1C, symBinAddr: 0x257644, symSize: 0x1DC } + - { offset: 0x314B05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25chooseSourceForNavigation10completionyyAA5PlaceCSgc_tF', symObjAddr: 0x8A04, symBinAddr: 0x25712C, symSize: 0x424 } + - { offset: 0x314FAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25chooseSourceForNavigation10completionyyAA5PlaceCSgc_tFyAHcfU_', symObjAddr: 0xBF3C, symBinAddr: 0x25A664, symSize: 0xA34 } + - { offset: 0x3156EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21showUserLocationPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LLyyF', symObjAddr: 0x90F8, symBinAddr: 0x257820, symSize: 0x4E4 } + - { offset: 0x315CA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21showUserLocationPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LLyyFyycfU0_', symObjAddr: 0x9660, symBinAddr: 0x257D88, symSize: 0xF0 } + - { offset: 0x315D9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC35showFavoriteDetailForSharedLocation11sharedPlaceyAA0N0C_tF', symObjAddr: 0x9980, symBinAddr: 0x2580A8, symSize: 0x37C } + - { offset: 0x316278, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15didCancelSearchyyF', symObjAddr: 0x9FD0, symBinAddr: 0x2586F8, symSize: 0x4C0 } + - { offset: 0x316925, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC019showFilterSelectionF033_A0A4D0656B505EF3DF25D7EB9947CEF6LL4type4data11selectedIdsyAA14TagDisplayTypeO_SayAA0W10DataSource_pGSaySiGtF', symObjAddr: 0xA490, symBinAddr: 0x258BB8, symSize: 0x3EC } + - { offset: 0x316DCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC019showFilterSelectionF033_A0A4D0656B505EF3DF25D7EB9947CEF6LL4type4data11selectedIdsyAA14TagDisplayTypeO_SayAA0W10DataSource_pGSaySiGtFyAJSg_AMtcfU_', symObjAddr: 0xA87C, symBinAddr: 0x258FA4, symSize: 0x90 } + - { offset: 0x316E38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC19showFavoriteDetails3foryAA0H0C_tF', symObjAddr: 0xAA18, symBinAddr: 0x259140, symSize: 0x34C } + - { offset: 0x317264, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17locationDidChangeyyF', symObjAddr: 0xAD64, symBinAddr: 0x25948C, symSize: 0xBC } + - { offset: 0x317389, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23locationStatusDidChange6statusyAA08LocationH0O_tF', symObjAddr: 0xAE20, symBinAddr: 0x259548, symSize: 0x4AC } + - { offset: 0x317878, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25userLocationStatusChangedyyF', symObjAddr: 0xB2CC, symBinAddr: 0x2599F4, symSize: 0x224 } + - { offset: 0x317D38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtF', symObjAddr: 0xB4F0, symBinAddr: 0x259C18, symSize: 0x228 } + - { offset: 0x31827A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15favoritesLoadedyyF', symObjAddr: 0xB718, symBinAddr: 0x259E40, symSize: 0x2D0 } + - { offset: 0x3186AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC29sharedLocationAddedToFavorite8favoriteyAA0K0C_tF', symObjAddr: 0xB9E8, symBinAddr: 0x25A110, symSize: 0x22C } + - { offset: 0x318986, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC33sharedLocationRemovedFromFavorite8favoriteyAA0K0C_tF', symObjAddr: 0xBC14, symBinAddr: 0x25A33C, symSize: 0x178 } + - { offset: 0x318B9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21sharedLocationUpdated8favoriteyAA8FavoriteC_tF', symObjAddr: 0xBD8C, symBinAddr: 0x25A4B4, symSize: 0x1B0 } + - { offset: 0x318F50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7addGate33_A0A4D0656B505EF3DF25D7EB9947CEF6LL2in10completionyAA5PlaceCSg_yAJctF', symObjAddr: 0xC970, symBinAddr: 0x25B098, symSize: 0x3D8 } + - { offset: 0x3193AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7addGate33_A0A4D0656B505EF3DF25D7EB9947CEF6LL2in10completionyAA5PlaceCSg_yAJctFyAJcfU_', symObjAddr: 0xCD48, symBinAddr: 0x25B470, symSize: 0x128 } + - { offset: 0x31941A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showMessageDetail7messageyAA0hI0C_tF', symObjAddr: 0xCE70, symBinAddr: 0x25B598, symSize: 0x410 } + - { offset: 0x3198B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showMessageDetail7messageyAA0hI0C_tFyycfU_', symObjAddr: 0xD528, symBinAddr: 0x25BC50, symSize: 0x64 } + - { offset: 0x319954, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showRouteOverview33_A0A4D0656B505EF3DF25D7EB9947CEF6LL5placeyAA5PlaceCSg_tF', symObjAddr: 0xD280, symBinAddr: 0x25B9A8, symSize: 0x2A8 } + - { offset: 0x319C27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA36LocationBasedMessagesManagerDelegateA2aDP19loadMessageForFloor7messageyAA0M6DetailC_tFTW', symObjAddr: 0xD58C, symBinAddr: 0x25BCB4, symSize: 0x4 } + - { offset: 0x319C47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA36LocationBasedMessagesManagerDelegateA2aDP19loadMessageForFloor7messageyAA0M6DetailC_tFTW', symObjAddr: 0xD58C, symBinAddr: 0x25BCB4, symSize: 0x4 } + - { offset: 0x319C6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0xD590, symBinAddr: 0x25BCB8, symSize: 0x8 } + - { offset: 0x319C87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0xD598, symBinAddr: 0x25BCC0, symSize: 0x4 } + - { offset: 0x319D27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21showUserLocationPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LLyyFyycfU_TA', symObjAddr: 0xEB0C, symBinAddr: 0x25BDBC, symSize: 0x20 } + - { offset: 0x319D3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21showUserLocationPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LLyyFyycfU0_TA', symObjAddr: 0xEB2C, symBinAddr: 0x25BDDC, symSize: 0x8 } + - { offset: 0x319F16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tFyycfU_TA', symObjAddr: 0xECEC, symBinAddr: 0x25BF8C, symSize: 0x8 } + - { offset: 0x319F2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tFyycfU0_TA', symObjAddr: 0xECF4, symBinAddr: 0x25BF94, symSize: 0x8 } + - { offset: 0x319F3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25chooseSourceForNavigation10completionyyAA5PlaceCSgc_tFyAHcfU_TA', symObjAddr: 0xECFC, symBinAddr: 0x25BF9C, symSize: 0xC } + - { offset: 0x319F52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7addGate33_A0A4D0656B505EF3DF25D7EB9947CEF6LL2in10completionyAA5PlaceCSg_yAJctFyAJcfU_TA', symObjAddr: 0xED34, symBinAddr: 0x25BFD4, symSize: 0xC } + - { offset: 0x319F66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showNavigationFeedback11destination5titleyAA5PlaceCSg_SSSgtFyycfU_TA', symObjAddr: 0xED40, symBinAddr: 0x25BFE0, symSize: 0x8 } + - { offset: 0x319F7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showMessageDetail7messageyAA0hI0C_tFyAA5PlaceCSgcACcfu_yAJcfu0_TA', symObjAddr: 0xED90, symBinAddr: 0x25BFE8, symSize: 0x20 } + - { offset: 0x319FB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showMessageDetail7messageyAA0hI0C_tFyycfU_TA', symObjAddr: 0xEDB0, symBinAddr: 0x25C008, symSize: 0x8 } + - { offset: 0x319FC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyycAA04MaineF0Ccfu_yycfu0_TA', symObjAddr: 0xEDB8, symBinAddr: 0x25C010, symSize: 0x28 } + - { offset: 0x31A04E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFy7Penguin10PoiPolygonV_AA06SourceE0OtcACcfu1_yAG_AItcfu2_TA', symObjAddr: 0xEDE0, symBinAddr: 0x25C038, symSize: 0x20 } + - { offset: 0x31A091, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFy7Penguin5VenueCcACcfu3_yAGcfu4_TA', symObjAddr: 0xEE00, symBinAddr: 0x25C058, symSize: 0x20 } + - { offset: 0x31A0CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFy7Penguin5VenueCSgcACcfu5_yAHcfu6_TA', symObjAddr: 0xEE20, symBinAddr: 0x25C078, symSize: 0x20 } + - { offset: 0x31A105, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyAA5PlaceCSgcACcfu7_yAGcfu8_TA', symObjAddr: 0xEE40, symBinAddr: 0x25C098, symSize: 0x20 } + - { offset: 0x31A13F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFySiSgcACcfu9_yAEcfu10_TA', symObjAddr: 0xEE60, symBinAddr: 0x25C0B8, symSize: 0xC } + - { offset: 0x31A153, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFy7Penguin11POICategoryV_AA15CategoryFiltersVSgtcACcfu11_yAG_AJtcfu12_TA', symObjAddr: 0xEE6C, symBinAddr: 0x25C0C4, symSize: 0x34 } + - { offset: 0x31A198, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyAA5PlaceCSgcACcfu13_yAGcfu14_TA', symObjAddr: 0xEEA0, symBinAddr: 0x25C0F8, symSize: 0x20 } + - { offset: 0x31A1D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyycyKXEfu17_yycAA0aB9UIManagerCcfu18_yycfu19_TA', symObjAddr: 0xEEC0, symBinAddr: 0x25C118, symSize: 0x20 } + - { offset: 0x31A204, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyycAA16PIEventsDelegate_pcfu15_yycfu16_TA', symObjAddr: 0xEFE4, symBinAddr: 0x25C180, symSize: 0x44 } + - { offset: 0x31A225, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showSharedUserLocation8locationyAA5PlaceCSg_tFyAGcACcfu5_yAGcfu6_TA', symObjAddr: 0xF04C, symBinAddr: 0x25C1C4, symSize: 0x20 } + - { offset: 0x31A25F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFySaySSGcAA03MapeF0Ccfu_yAKcfu0_TA', symObjAddr: 0xF06C, symBinAddr: 0x25C1E4, symSize: 0x8 } + - { offset: 0x31A273, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyycfU0_TA', symObjAddr: 0xF074, symBinAddr: 0x25C1EC, symSize: 0x8 } + - { offset: 0x31A287, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyycfU1_TA', symObjAddr: 0xF07C, symBinAddr: 0x25C1F4, symSize: 0x20 } + - { offset: 0x31A29B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyAA0H7FiltersVSgcAA0hieF0Ccfu1_yAMcfu2_TA', symObjAddr: 0xF09C, symBinAddr: 0x25C214, symSize: 0x14 } + - { offset: 0x31A2D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC19floorSelectorTapped33_A0A4D0656B505EF3DF25D7EB9947CEF6LL14currentVenueIdySiSg_tFyAGcACcfu_yAGcfu0_TA', symObjAddr: 0xF0B0, symBinAddr: 0x25C228, symSize: 0x24 } + - { offset: 0x31A30E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25displayFloorSelectorPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL7venueId11closeActionySiSg_yAHcSgtFy7Penguin0H0CcfU_TA', symObjAddr: 0xF0D4, symBinAddr: 0x25C24C, symSize: 0x8 } + - { offset: 0x31A322, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showCampusDetails6campusy7Penguin5VenueCSg_tFyycfU_TA', symObjAddr: 0xF110, symBinAddr: 0x25C278, symSize: 0x8 } + - { offset: 0x31A363, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC16showVenueDetails5venuey7Penguin0H0C_tFySiSgcACcfu2_yAIcfu3_TA', symObjAddr: 0xF118, symBinAddr: 0x25C280, symSize: 0x2C } + - { offset: 0x31A3C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showPoiDetails3poi06sourceE0y7Penguin0H7PolygonV_AA06SourceE0OtFyAA5PlaceCSg_SSSgtcACcfu0_yAN_AOtcfu1_TA', symObjAddr: 0xF188, symBinAddr: 0x25C2AC, symSize: 0x20 } + - { offset: 0x31A40C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showPoiDetails3poi06sourceE0y7Penguin0H7PolygonV_AA06SourceE0OtFyycAA16SelectionManagerCcfu2_yycfu3_TA', symObjAddr: 0xF1A8, symBinAddr: 0x25C2CC, symSize: 0x18 } + - { offset: 0x31A420, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showPoiDetails3poi06sourceE0y7Penguin0H7PolygonV_AA06SourceE0OtFyyAA5PlaceCSgccACcfu4_yyANccfu5_TA', symObjAddr: 0xF1C0, symBinAddr: 0x25C2E4, symSize: 0x20 } + - { offset: 0x31A45C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC07loadAllD4Info10completionyyyc_tFySayAA9VenueDataCG_SSSgtcfU_TA', symObjAddr: 0xF210, symBinAddr: 0x25C334, symSize: 0xC } + - { offset: 0x31A470, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC21loadCampusInformationyyFyAA9VenueDataCSgcfU_TA', symObjAddr: 0xF258, symBinAddr: 0x25C340, symSize: 0x8 } + - { offset: 0x31A508, size: 0x8, addend: 0x0, symName: '_$sSo7UISceneCSo8NSObjectCSH10ObjectiveCWl', symObjAddr: 0xF790, symBinAddr: 0x25C878, symSize: 0x54 } + - { offset: 0x31A51C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyFyyScMYccfU_TA', symObjAddr: 0xF824, symBinAddr: 0x25C8CC, symSize: 0x20 } + - { offset: 0x31A530, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xF844, symBinAddr: 0x25C8EC, symSize: 0x10 } + - { offset: 0x31A544, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xF854, symBinAddr: 0x25C8FC, symSize: 0x8 } + - { offset: 0x31A558, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC13loadAmenitiesyyFySayAA0G0VGcfU_TA', symObjAddr: 0xF8F0, symBinAddr: 0x25C904, symSize: 0x8 } + - { offset: 0x31A56C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyFyycfU0_TA', symObjAddr: 0xF924, symBinAddr: 0x25C930, symSize: 0x8 } + - { offset: 0x31A580, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC03getD010completionyyycSg_tFySayAA13VenueCardDataVGcfU_TA', symObjAddr: 0xF964, symBinAddr: 0x25C970, symSize: 0xC } + - { offset: 0x31A594, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycACcfu_yycfu0_TA', symObjAddr: 0xF970, symBinAddr: 0x25C97C, symSize: 0x20 } + - { offset: 0x31A5C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFySay7Penguin11POICategoryVGcACcfu1_yAJcfu2_TA', symObjAddr: 0xF990, symBinAddr: 0x25C99C, symSize: 0x20 } + - { offset: 0x31A600, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFy7Penguin11POICategoryVcAA03MapeF0Ccfu3_yAIcfu4_TA', symObjAddr: 0xF9B0, symBinAddr: 0x25C9BC, symSize: 0x20 } + - { offset: 0x31A63B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycAA03MapeF0Ccfu5_yycfu6_TA', symObjAddr: 0xF9D0, symBinAddr: 0x25C9DC, symSize: 0x8 } + - { offset: 0x31A64F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycAA03MapeF0Ccfu7_yycfu8_TA', symObjAddr: 0xF9D8, symBinAddr: 0x25C9E4, symSize: 0x20 } + - { offset: 0x31A681, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFy7Penguin10PoiPolygonVcfU_TA', symObjAddr: 0xF9F8, symBinAddr: 0x25CA04, symSize: 0x18 } + - { offset: 0x31A695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycfU0_TA', symObjAddr: 0xFA10, symBinAddr: 0x25CA1C, symSize: 0x8 } + - { offset: 0x31A6A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycfU1_TA', symObjAddr: 0xFA18, symBinAddr: 0x25CA24, symSize: 0x20 } + - { offset: 0x31A6BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycfU2_TA', symObjAddr: 0xFA38, symBinAddr: 0x25CA44, symSize: 0x18 } + - { offset: 0x31A6D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycACcfu9_yycfu10_TA', symObjAddr: 0xFA50, symBinAddr: 0x25CA5C, symSize: 0x20 } + - { offset: 0x31A703, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyAA8FavoriteCcACcfu11_yAHcfu12_TA', symObjAddr: 0xFA70, symBinAddr: 0x25CA7C, symSize: 0x20 } + - { offset: 0x31A73D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC16showAllFavoritesyyFyAA8FavoriteCcACcfu_yAFcfu0_TA', symObjAddr: 0xFAD4, symBinAddr: 0x25CA9C, symSize: 0x20 } + - { offset: 0x31A777, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15showSearchPanel4overyAA08FloatingI11Presentable_pSg_tFyAA14TagDisplayTypeO_SaySiGtcACcfu_yAI_AJtcfu0_TA', symObjAddr: 0xFAF4, symBinAddr: 0x25CABC, symSize: 0x24 } + - { offset: 0x31A7B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15showSearchPanel4overyAA08FloatingI11Presentable_pSg_tFyAA0H6FilterCSgcACcfu1_yAJcfu2_TA', symObjAddr: 0xFB18, symBinAddr: 0x25CAE0, symSize: 0x20 } + - { offset: 0x31A7EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showAllFilters33_A0A4D0656B505EF3DF25D7EB9947CEF6LL06searchI0yAA12SearchFilterCSg_tFyAIcfU_TA', symObjAddr: 0xFB38, symBinAddr: 0x25CB00, symSize: 0x8 } + - { offset: 0x31A7FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC019showFilterSelectionF033_A0A4D0656B505EF3DF25D7EB9947CEF6LL4type4data11selectedIdsyAA14TagDisplayTypeO_SayAA0W10DataSource_pGSaySiGtFyAJSg_AMtcfU_TA', symObjAddr: 0xFB40, symBinAddr: 0x25CB08, symSize: 0x8 } + - { offset: 0x31A813, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showCategories10categoriesySay7Penguin11POICategoryVG_tFyAHcfU0_TA', symObjAddr: 0xFB48, symBinAddr: 0x25CB10, symSize: 0x8 } + - { offset: 0x31A827, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13showDirectoryyyFyycfU_TA', symObjAddr: 0xFB50, symBinAddr: 0x25CB18, symSize: 0x20 } + - { offset: 0x31A90A, size: 0x8, addend: 0x0, symName: '_$sSh9formUnionyyqd__n7ElementQyd__RszSTRd__lF8PenNavUI9ToastTypeO_ShyAFGTg5', symObjAddr: 0x1104, symBinAddr: 0x24F8CC, symSize: 0xCC } + - { offset: 0x31B383, size: 0x8, addend: 0x0, symName: '_$sSh9formUnionyyqd__n7ElementQyd__RszSTRd__lF8PenNavUI18FloatingPanelStateC_SayAFGTg5Tf4gn_n', symObjAddr: 0xE9D0, symBinAddr: 0x25BCC4, symSize: 0xD4 } + - { offset: 0x31B695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC09presentedE11ControllersSayAA24FloatingPanelPresentable_pGvM', symObjAddr: 0x11D0, symBinAddr: 0x24F998, symSize: 0x6C } + - { offset: 0x31B6C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC09presentedE11ControllersSayAA24FloatingPanelPresentable_pGvM.resume.0', symObjAddr: 0x123C, symBinAddr: 0x24FA04, symSize: 0x88 } + - { offset: 0x31B9F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyF', symObjAddr: 0x12C4, symBinAddr: 0x24FA8C, symSize: 0x574 } + - { offset: 0x31BCFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyFyycfU0_', symObjAddr: 0x1FAC, symBinAddr: 0x250774, symSize: 0x74 } + - { offset: 0x31BF8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x2020, symBinAddr: 0x2507E8, symSize: 0x28 } + - { offset: 0x31C030, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0x2048, symBinAddr: 0x250810, symSize: 0xB8 } + - { offset: 0x31C15D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13viewDidAppearyySbF', symObjAddr: 0x2100, symBinAddr: 0x2508C8, symSize: 0x104 } + - { offset: 0x31C22C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13viewDidAppearyySbFyycfU_', symObjAddr: 0x2204, symBinAddr: 0x2509CC, symSize: 0x194 } + - { offset: 0x31C3FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0x2398, symBinAddr: 0x250B60, symSize: 0x30 } + - { offset: 0x31C425, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyF', symObjAddr: 0x23C8, symBinAddr: 0x250B90, symSize: 0x8B8 } + - { offset: 0x31C83A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFySiSgcACcfu9_yAEcfu10_', symObjAddr: 0x4478, symBinAddr: 0x252C40, symSize: 0x108 } + - { offset: 0x31D1D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC9removeMapyyF', symObjAddr: 0x4D80, symBinAddr: 0x253548, symSize: 0xD0 } + - { offset: 0x31D391, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC012deinitializeaB0yyF', symObjAddr: 0x4E50, symBinAddr: 0x253618, symSize: 0x2CC } + - { offset: 0x31D635, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x511C, symBinAddr: 0x2538E4, symSize: 0x1C8 } + - { offset: 0x31D676, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x52E4, symBinAddr: 0x253AAC, symSize: 0x60 } + - { offset: 0x31D6BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x5344, symBinAddr: 0x253B0C, symSize: 0x19C } + - { offset: 0x31D6F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x54E0, symBinAddr: 0x253CA8, symSize: 0x28 } + - { offset: 0x31D705, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCfD', symObjAddr: 0x5508, symBinAddr: 0x253CD0, symSize: 0x30 } + - { offset: 0x31D728, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvgTW', symObjAddr: 0x5670, symBinAddr: 0x253E38, symSize: 0x44 } + - { offset: 0x31D75B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvMTW', symObjAddr: 0x56B4, symBinAddr: 0x253E7C, symSize: 0x5C } + - { offset: 0x31D784, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvMTW.resume.0', symObjAddr: 0x5710, symBinAddr: 0x253ED8, symSize: 0x2C } + - { offset: 0x31E560, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22deinitializeSingletonsyyFTf4d_n', symObjAddr: 0xEB34, symBinAddr: 0x25BDE4, symSize: 0x1A8 } + - { offset: 0x31E782, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15addSessionLabelyyFTf4d_n', symObjAddr: 0xF260, symBinAddr: 0x25C348, symSize: 0x530 } + - { offset: 0x31EF0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesCMa', symObjAddr: 0x254, symBinAddr: 0x25CD94, symSize: 0x20 } + - { offset: 0x31EF1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOAFs0E3KeyAAWl', symObjAddr: 0x7C4, symBinAddr: 0x25D29C, symSize: 0x40 } + - { offset: 0x31EF32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOACSeAAWl', symObjAddr: 0x824, symBinAddr: 0x25D2DC, symSize: 0x40 } + - { offset: 0x31EF46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOACSEAAWl', symObjAddr: 0x864, symBinAddr: 0x25D31C, symSize: 0x40 } + - { offset: 0x31EF5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOMa', symObjAddr: 0xA08, symBinAddr: 0x25D35C, symSize: 0x10 } + - { offset: 0x31EF6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOSHAASQWb', symObjAddr: 0xA18, symBinAddr: 0x25D36C, symSize: 0x4 } + - { offset: 0x31EF82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOAFSQAAWl', symObjAddr: 0xA1C, symBinAddr: 0x25D370, symSize: 0x40 } + - { offset: 0x31EF96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xA5C, symBinAddr: 0x25D3B0, symSize: 0x4 } + - { offset: 0x31EFAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xA60, symBinAddr: 0x25D3B4, symSize: 0x40 } + - { offset: 0x31EFBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0xAA0, symBinAddr: 0x25D3F4, symSize: 0x4 } + - { offset: 0x31EFD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0xAA4, symBinAddr: 0x25D3F8, symSize: 0x40 } + - { offset: 0x31F00B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x1D8, symBinAddr: 0x25CD18, symSize: 0x28 } + - { offset: 0x31F027, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x200, symBinAddr: 0x25CD40, symSize: 0x28 } + - { offset: 0x31F07C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs0E3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0xC0, symBinAddr: 0x25CC18, symSize: 0xDC } + - { offset: 0x31F0AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs0E3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x19C, symBinAddr: 0x25CCF4, symSize: 0x24 } + - { offset: 0x31F0FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesCfD', symObjAddr: 0x228, symBinAddr: 0x25CD68, symSize: 0x2C } + - { offset: 0x31F137, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC6encode2toys7Encoder_p_tKF', symObjAddr: 0x274, symBinAddr: 0x25CDB4, symSize: 0x200 } + - { offset: 0x31F168, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x474, symBinAddr: 0x25CFB4, symSize: 0x274 } + - { offset: 0x31F1A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x6E8, symBinAddr: 0x25D228, symSize: 0x54 } + - { offset: 0x31F1CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x73C, symBinAddr: 0x25D27C, symSize: 0x20 } + - { offset: 0x31F1E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0xAE4, symBinAddr: 0x25D438, symSize: 0x210 } + - { offset: 0x31F67A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV07makeUseD8Contents4from4withAC0D0C0I0OAA3DOMO0H0C_AE5StateVtKF', symObjAddr: 0x0, symBinAddr: 0x25D648, symSize: 0x358 } + - { offset: 0x31F6A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV07makeUseD8Contents4from4withAC0D0C0I0OAA3DOMO0H0C_AE5StateVtKF', symObjAddr: 0x0, symBinAddr: 0x25D648, symSize: 0x358 } + - { offset: 0x31F819, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV16makeTextContents4from4withAC0D0C0I0OAA3DOMO0H0C_AE5StateVtFZTf4nnd_n', symObjAddr: 0x358, symBinAddr: 0x25D9A0, symSize: 0x238 } + - { offset: 0x31F8B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVWOc', symObjAddr: 0x590, symBinAddr: 0x25DBD8, symSize: 0x3C } + - { offset: 0x31F8C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOi1_', symObjAddr: 0x5CC, symBinAddr: 0x25DC14, symSize: 0x34 } + - { offset: 0x31F8D8, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVACs23CustomStringConvertibleAAWl', symObjAddr: 0x640, symBinAddr: 0x25DC48, symSize: 0x44 } + - { offset: 0x31FD3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22NavigationEventTrackerVMa', symObjAddr: 0x0, symBinAddr: 0x25DC8C, symSize: 0x10 } + - { offset: 0x31FD56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22NavigationEventTrackerVMa', symObjAddr: 0x0, symBinAddr: 0x25DC8C, symSize: 0x10 } + - { offset: 0x31FF91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVWOc', symObjAddr: 0x1B2C, symBinAddr: 0x25F6EC, symSize: 0x34 } + - { offset: 0x31FFA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwxx', symObjAddr: 0x2630, symBinAddr: 0x260198, symSize: 0x50 } + - { offset: 0x31FFB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwcp', symObjAddr: 0x2680, symBinAddr: 0x2601E8, symSize: 0x1C4 } + - { offset: 0x31FFCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwca', symObjAddr: 0x2844, symBinAddr: 0x2603AC, symSize: 0x234 } + - { offset: 0x31FFE1, size: 0x8, addend: 0x0, symName: ___swift_memcpy401_8, symObjAddr: 0x2A78, symBinAddr: 0x2605E0, symSize: 0x8 } + - { offset: 0x31FFF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwta', symObjAddr: 0x2A80, symBinAddr: 0x2605E8, symSize: 0x1C4 } + - { offset: 0x320009, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwet', symObjAddr: 0x2C44, symBinAddr: 0x2607AC, symSize: 0x5C } + - { offset: 0x32001D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwst', symObjAddr: 0x2CA0, symBinAddr: 0x260808, symSize: 0xC0 } + - { offset: 0x320031, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVMa', symObjAddr: 0x2D60, symBinAddr: 0x2608C8, symSize: 0x10 } + - { offset: 0x320045, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOAFs0G3KeyAAWl', symObjAddr: 0x2DD8, symBinAddr: 0x2608D8, symSize: 0x40 } + - { offset: 0x320059, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOwet', symObjAddr: 0x2E68, symBinAddr: 0x260918, symSize: 0x90 } + - { offset: 0x32006D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOwst', symObjAddr: 0x2EF8, symBinAddr: 0x2609A8, symSize: 0xB0 } + - { offset: 0x320081, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOMa', symObjAddr: 0x2FBC, symBinAddr: 0x260A58, symSize: 0x10 } + - { offset: 0x320095, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOSHAASQWb', symObjAddr: 0x2FCC, symBinAddr: 0x260A68, symSize: 0x4 } + - { offset: 0x3200A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOAFSQAAWl', symObjAddr: 0x2FD0, symBinAddr: 0x260A6C, symSize: 0x40 } + - { offset: 0x3200BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x3010, symBinAddr: 0x260AAC, symSize: 0x4 } + - { offset: 0x3200D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x3014, symBinAddr: 0x260AB0, symSize: 0x40 } + - { offset: 0x3200E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x3054, symBinAddr: 0x260AF0, symSize: 0x4 } + - { offset: 0x3200F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x3058, symBinAddr: 0x260AF4, symSize: 0x40 } + - { offset: 0x32014A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x94C, symBinAddr: 0x25E50C, symSize: 0x28 } + - { offset: 0x320166, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x974, symBinAddr: 0x25E534, symSize: 0x28 } + - { offset: 0x320236, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLO11stringValueSSvg', symObjAddr: 0x10, symBinAddr: 0x25DC9C, symSize: 0x2E4 } + - { offset: 0x3202E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x2F4, symBinAddr: 0x25DF80, symSize: 0x554 } + - { offset: 0x320325, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x908, symBinAddr: 0x25E4D4, symSize: 0x8 } + - { offset: 0x320340, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x910, symBinAddr: 0x25E4DC, symSize: 0x24 } + - { offset: 0x320369, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x940, symBinAddr: 0x25E500, symSize: 0xC } + - { offset: 0x32037D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x99C, symBinAddr: 0x25E55C, symSize: 0x14 } + - { offset: 0x3203F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV6source11destination9eventTypeAcA5PlaceC_AHSgAA0deJ0OtcfCTf4nnnd_n', symObjAddr: 0x9B0, symBinAddr: 0x25E570, symSize: 0xB64 } + - { offset: 0x3205EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV9eventType6rating8feedbackAcA0deH0O_SiSSSgtcfCTf4nnnd_n', symObjAddr: 0x1514, symBinAddr: 0x25F0D4, symSize: 0x618 } + - { offset: 0x32069D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV12userLocation011destinationH00I4Type0I6EdgeId05eventJ013isDestinationAC7Penguin10PILocationC_AJ0O0CSgAA05PlaceJ0OSgSiSgAA0deJ0OSbtcfCTf4nnnnnnd_n', symObjAddr: 0x1B8C, symBinAddr: 0x25F720, symSize: 0xA78 } + - { offset: 0x320787, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x3098, symBinAddr: 0x260B34, symSize: 0x878 } + - { offset: 0x320FFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22LocationMessageTrackerCMa', symObjAddr: 0x10, symBinAddr: 0x261494, symSize: 0x20 } + - { offset: 0x3211CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVWOc', symObjAddr: 0xC08, symBinAddr: 0x261FB4, symSize: 0x34 } + - { offset: 0x3211E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwxx', symObjAddr: 0xC94, symBinAddr: 0x261FE8, symSize: 0x38 } + - { offset: 0x3211F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwcp', symObjAddr: 0xCCC, symBinAddr: 0x262020, symSize: 0xF4 } + - { offset: 0x32120A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwca', symObjAddr: 0xDC0, symBinAddr: 0x262114, symSize: 0x13C } + - { offset: 0x32121E, size: 0x8, addend: 0x0, symName: ___swift_memcpy201_8, symObjAddr: 0xEFC, symBinAddr: 0x262250, symSize: 0x44 } + - { offset: 0x321232, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwta', symObjAddr: 0xF40, symBinAddr: 0x262294, symSize: 0xF4 } + - { offset: 0x321246, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwet', symObjAddr: 0x1034, symBinAddr: 0x262388, symSize: 0x5C } + - { offset: 0x32125A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwst', symObjAddr: 0x1090, symBinAddr: 0x2623E4, symSize: 0x88 } + - { offset: 0x32126E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVMa', symObjAddr: 0x1118, symBinAddr: 0x26246C, symSize: 0x10 } + - { offset: 0x321282, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOAFs0H3KeyAAWl', symObjAddr: 0x1190, symBinAddr: 0x26247C, symSize: 0x40 } + - { offset: 0x321296, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOMa', symObjAddr: 0x1374, symBinAddr: 0x2624BC, symSize: 0x10 } + - { offset: 0x3212AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOSHAASQWb', symObjAddr: 0x1384, symBinAddr: 0x2624CC, symSize: 0x4 } + - { offset: 0x3212BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOAFSQAAWl', symObjAddr: 0x1388, symBinAddr: 0x2624D0, symSize: 0x40 } + - { offset: 0x3212D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x13C8, symBinAddr: 0x262510, symSize: 0x4 } + - { offset: 0x3212E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x13CC, symBinAddr: 0x262514, symSize: 0x40 } + - { offset: 0x3212FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x140C, symBinAddr: 0x262554, symSize: 0x4 } + - { offset: 0x32130E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x1410, symBinAddr: 0x262558, symSize: 0x40 } + - { offset: 0x321361, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x568, symBinAddr: 0x261914, symSize: 0x28 } + - { offset: 0x32137D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x590, symBinAddr: 0x26193C, symSize: 0x28 } + - { offset: 0x3213AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLO11stringValueSSvg', symObjAddr: 0x30, symBinAddr: 0x2614B4, symSize: 0x130 } + - { offset: 0x3213D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x160, symBinAddr: 0x2615E4, symSize: 0x304 } + - { offset: 0x321414, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs0H3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x524, symBinAddr: 0x2618E8, symSize: 0x8 } + - { offset: 0x32142F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs0H3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x52C, symBinAddr: 0x2618F0, symSize: 0x24 } + - { offset: 0x321458, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x5B8, symBinAddr: 0x261964, symSize: 0x14 } + - { offset: 0x3214A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV4from4adIdAC7Penguin10PILocationC_SiSgtcfCTf4nnd_n', symObjAddr: 0x5CC, symBinAddr: 0x261978, symSize: 0x63C } + - { offset: 0x321576, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x1450, symBinAddr: 0x262598, symSize: 0x400 } + - { offset: 0x3227F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCfE', symObjAddr: 0x25FC, symBinAddr: 0x264E8C, symSize: 0xF4 } + - { offset: 0x32281F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCfETo', symObjAddr: 0x2724, symBinAddr: 0x264FB4, symSize: 0x100 } + - { offset: 0x32284E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCMU', symObjAddr: 0x2824, symBinAddr: 0x2650B4, symSize: 0x8 } + - { offset: 0x322862, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCMa', symObjAddr: 0x282C, symBinAddr: 0x2650BC, symSize: 0x38 } + - { offset: 0x322876, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCMr', symObjAddr: 0x2864, symBinAddr: 0x2650F4, symSize: 0xC8 } + - { offset: 0x32288A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x292C, symBinAddr: 0x2651BC, symSize: 0x8 } + - { offset: 0x3228B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x2934, symBinAddr: 0x2651C4, symSize: 0x60 } + - { offset: 0x322BFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x2994, symBinAddr: 0x265224, symSize: 0xA54 } + - { offset: 0x323324, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyycfU_', symObjAddr: 0x33E8, symBinAddr: 0x265C78, symSize: 0x70 } + - { offset: 0x323396, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU0_', symObjAddr: 0x3458, symBinAddr: 0x265CE8, symSize: 0x174 } + - { offset: 0x3234A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x35CC, symBinAddr: 0x265E5C, symSize: 0xC8 } + - { offset: 0x3234F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x3694, symBinAddr: 0x265F24, symSize: 0xC4 } + - { offset: 0x323584, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0x3758, symBinAddr: 0x265FE8, symSize: 0x2A4 } + - { offset: 0x3235F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_', symObjAddr: 0x39FC, symBinAddr: 0x26628C, symSize: 0x1C8 } + - { offset: 0x3236C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0x3BC4, symBinAddr: 0x266454, symSize: 0x50 } + - { offset: 0x3236FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC22didTapDirectionsActionyyF', symObjAddr: 0x3C14, symBinAddr: 0x2664A4, symSize: 0x474 } + - { offset: 0x323B13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC17showRouteOverview6sourceyAA5PlaceCSg_tF', symObjAddr: 0x4088, symBinAddr: 0x266918, symSize: 0x330 } + - { offset: 0x323D90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC22didTapDirectionsActionyyFTo', symObjAddr: 0x43B8, symBinAddr: 0x266C48, symSize: 0x28 } + - { offset: 0x323DCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC17didTapPhoneActionyyF', symObjAddr: 0x43E0, symBinAddr: 0x266C70, symSize: 0x230 } + - { offset: 0x323E99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC17didTapPhoneActionyyFTo', symObjAddr: 0x4610, symBinAddr: 0x266EA0, symSize: 0x28 } + - { offset: 0x323EB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC19didTapWebsiteActionyyF', symObjAddr: 0x4638, symBinAddr: 0x266EC8, symSize: 0x3C8 } + - { offset: 0x323FD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC19didTapWebsiteActionyyFTo', symObjAddr: 0x4A00, symBinAddr: 0x267290, symSize: 0x28 } + - { offset: 0x324015, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC16didTapMailActionyyF', symObjAddr: 0x4A28, symBinAddr: 0x2672B8, symSize: 0x198 } + - { offset: 0x324116, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC16didTapMailActionyyFTo', symObjAddr: 0x4BC0, symBinAddr: 0x267450, symSize: 0x28 } + - { offset: 0x324152, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20didExpandDescriptionyyFTo', symObjAddr: 0x4BE8, symBinAddr: 0x267478, symSize: 0x30 } + - { offset: 0x324172, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20didExpandDescriptionyyFTo', symObjAddr: 0x4BE8, symBinAddr: 0x267478, symSize: 0x30 } + - { offset: 0x324192, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20didExpandDescriptionyyFTo', symObjAddr: 0x4BE8, symBinAddr: 0x267478, symSize: 0x30 } + - { offset: 0x3241F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20didTapExpandScheduleyyFTo', symObjAddr: 0x4C20, symBinAddr: 0x2674A8, symSize: 0x2C } + - { offset: 0x32420E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC22didTapCollapseScheduleyyFTo', symObjAddr: 0x4E2C, symBinAddr: 0x2676AC, symSize: 0x2C } + - { offset: 0x324257, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20didTapAddToFavorites10isFavoriteySb_tFTo', symObjAddr: 0x4E58, symBinAddr: 0x2676D8, symSize: 0x30 } + - { offset: 0x3242AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC017didTapTodayStatusF0yyF', symObjAddr: 0x4E88, symBinAddr: 0x267708, symSize: 0x1A8 } + - { offset: 0x324371, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC017didTapTodayStatusF0yyFTo', symObjAddr: 0x5030, symBinAddr: 0x2678B0, symSize: 0x28 } + - { offset: 0x3243BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC011mailComposeG0_13didFinishWith5errorySo06MFMailifG0C_So0nI6ResultVs5Error_pSgtFTo', symObjAddr: 0x5058, symBinAddr: 0x2678D8, symSize: 0x18 } + - { offset: 0x324400, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC25adaptivePresentationStyle3forSo07UIModaliJ0VSo014UIPresentationG0C_tFTo', symObjAddr: 0x5070, symBinAddr: 0x2678F0, symSize: 0x8 } + - { offset: 0x32445A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x5078, symBinAddr: 0x2678F8, symSize: 0x98 } + - { offset: 0x32450A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x5110, symBinAddr: 0x267990, symSize: 0x24 } + - { offset: 0x324581, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x5134, symBinAddr: 0x2679B4, symSize: 0x110 } + - { offset: 0x32462D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x5244, symBinAddr: 0x267AC4, symSize: 0x28 } + - { offset: 0x32466B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x526C, symBinAddr: 0x267AEC, symSize: 0x244 } + - { offset: 0x324897, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x54B0, symBinAddr: 0x267D30, symSize: 0x50 } + - { offset: 0x3248B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC15placeDataLoaded0hI0yAA0dfI0C_tF', symObjAddr: 0x5500, symBinAddr: 0x267D80, symSize: 0x128 } + - { offset: 0x324984, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x5628, symBinAddr: 0x267EA8, symSize: 0x374 } + - { offset: 0x324BA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC25userLocationStatusChangedyyF', symObjAddr: 0x5A18, symBinAddr: 0x26821C, symSize: 0x158 } + - { offset: 0x324C7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x5B70, symBinAddr: 0x268374, symSize: 0x8 } + - { offset: 0x324C96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x5B78, symBinAddr: 0x26837C, symSize: 0x4 } + - { offset: 0x324CB2, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x5D70, symBinAddr: 0x2683A4, symSize: 0x10 } + - { offset: 0x324CC6, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x5D80, symBinAddr: 0x2683B4, symSize: 0x8 } + - { offset: 0x324CDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC22didTapDirectionsActionyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x5DFC, symBinAddr: 0x2683E0, symSize: 0x20 } + - { offset: 0x324D14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_TA', symObjAddr: 0x5EA4, symBinAddr: 0x26842C, symSize: 0x8 } + - { offset: 0x324D28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU0_TA', symObjAddr: 0x5FA0, symBinAddr: 0x268434, symSize: 0x8 } + - { offset: 0x324D3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyycfU_TA', symObjAddr: 0x5FA8, symBinAddr: 0x26843C, symSize: 0x8 } + - { offset: 0x324E49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x5FB0, symBinAddr: 0x268444, symSize: 0x268 } + - { offset: 0x325067, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonVSgWOd', symObjAddr: 0x62C4, symBinAddr: 0x2686AC, symSize: 0x48 } + - { offset: 0x32507B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9menuItemsSayAA8MenuItemVGvgyycfU_TA', symObjAddr: 0x6348, symBinAddr: 0x2686F4, symSize: 0x8 } + - { offset: 0x3250C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC15placeTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x37C, symBinAddr: 0x262D14, symSize: 0x10 } + - { offset: 0x3250DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC15placeTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x37C, symBinAddr: 0x262D14, symSize: 0x10 } + - { offset: 0x325125, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC15placeTitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x38C, symBinAddr: 0x262D24, symSize: 0x34 } + - { offset: 0x325174, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC18categoryTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x3C0, symBinAddr: 0x262D58, symSize: 0x10 } + - { offset: 0x32518C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC18categoryTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x3C0, symBinAddr: 0x262D58, symSize: 0x10 } + - { offset: 0x3251C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC18categoryTitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x3D0, symBinAddr: 0x262D68, symSize: 0x34 } + - { offset: 0x325216, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9separatorSo6UIViewCSgvgTo', symObjAddr: 0x404, symBinAddr: 0x262D9C, symSize: 0x10 } + - { offset: 0x32522E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9separatorSo6UIViewCSgvgTo', symObjAddr: 0x404, symBinAddr: 0x262D9C, symSize: 0x10 } + - { offset: 0x32526E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9separatorSo6UIViewCSgvsTo', symObjAddr: 0x414, symBinAddr: 0x262DAC, symSize: 0x34 } + - { offset: 0x3252BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x448, symBinAddr: 0x262DE0, symSize: 0x10 } + - { offset: 0x3252D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x448, symBinAddr: 0x262DE0, symSize: 0x10 } + - { offset: 0x325315, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x458, symBinAddr: 0x262DF0, symSize: 0x34 } + - { offset: 0x325364, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x48C, symBinAddr: 0x262E24, symSize: 0x10 } + - { offset: 0x32537C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x48C, symBinAddr: 0x262E24, symSize: 0x10 } + - { offset: 0x3253BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x49C, symBinAddr: 0x262E34, symSize: 0x34 } + - { offset: 0x32542C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9placeDataAA0dfI0Cvg', symObjAddr: 0x4D0, symBinAddr: 0x262E68, symSize: 0xCC } + - { offset: 0x32561B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9menuItemsSayAA8MenuItemVGvg', symObjAddr: 0x59C, symBinAddr: 0x262F34, symSize: 0x3F0 } + - { offset: 0x325964, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9menuItemsSayAA8MenuItemVGvgyycfU_', symObjAddr: 0x98C, symBinAddr: 0x263324, symSize: 0xD8 } + - { offset: 0x325A65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9viewModel33_64DA4970C83DEE4A6AFA2A73E139E454LLAA011PlaceDetailfI0Cvg', symObjAddr: 0xB6C, symBinAddr: 0x2633FC, symSize: 0xB4 } + - { offset: 0x325BFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0xC20, symBinAddr: 0x2634B0, symSize: 0x2A8 } + - { offset: 0x325DD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0xEC8, symBinAddr: 0x263758, symSize: 0x28 } + - { offset: 0x325E24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0xEF0, symBinAddr: 0x263780, symSize: 0x98 } + - { offset: 0x325E84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC13registerCellsyyF', symObjAddr: 0xF88, symBinAddr: 0x263818, symSize: 0x1D8 } + - { offset: 0x326009, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC14setupPlaceInfoyyF', symObjAddr: 0x1160, symBinAddr: 0x2639F0, symSize: 0x344 } + - { offset: 0x326230, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC19sendFavoriteRequest02isI0ySb_tF', symObjAddr: 0x14A4, symBinAddr: 0x263D34, symSize: 0x484 } + - { offset: 0x32648B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x1928, symBinAddr: 0x2641B8, symSize: 0x88 } + - { offset: 0x3264C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5shareyyF', symObjAddr: 0x19B0, symBinAddr: 0x264240, symSize: 0x194 } + - { offset: 0x326597, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0x1B44, symBinAddr: 0x2643D4, symSize: 0x5C8 } + - { offset: 0x326811, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5shareyyFTo', symObjAddr: 0x210C, symBinAddr: 0x26499C, symSize: 0x28 } + - { offset: 0x326825, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC17handleOfflineDatayyF', symObjAddr: 0x2134, symBinAddr: 0x2649C4, symSize: 0x11C } + - { offset: 0x326920, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x2250, symBinAddr: 0x264AE0, symSize: 0x1A8 } + - { offset: 0x326961, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x23F8, symBinAddr: 0x264C88, symSize: 0x60 } + - { offset: 0x3269A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x2458, symBinAddr: 0x264CE8, symSize: 0x17C } + - { offset: 0x3269DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x25D4, symBinAddr: 0x264E64, symSize: 0x28 } + - { offset: 0x3269F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCfD', symObjAddr: 0x26F0, symBinAddr: 0x264F80, symSize: 0x34 } + - { offset: 0x327471, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFShySSG_Tg577$s8PenNavUI9XMLParserV7ScannerV10scanString11matchingAnySSShySSG_tKFSbSSXEfU_0eF2UI0H0V0J0VTf1cn_n', symObjAddr: 0x0, symBinAddr: 0x268704, symSize: 0x14C } + - { offset: 0x3274AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseMatrix33_892AF320A73F92CC7AB19393F72C04FDLLyAA3DOMO9TransformOSgAC7ScannerVzKFTf4nd_n', symObjAddr: 0x14C, symBinAddr: 0x268850, symSize: 0x3F0 } + - { offset: 0x327750, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseRotate33_892AF320A73F92CC7AB19393F72C04FDLLyAA3DOMO9TransformOSgAC7ScannerVzKFTf4nd_n', symObjAddr: 0x53C, symBinAddr: 0x268C40, symSize: 0x2C8 } + - { offset: 0x327B52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseTransformySayAA3DOMO0F0OGSSKFTf4nd_n', symObjAddr: 0x804, symBinAddr: 0x268F08, symSize: 0x14C8 } + - { offset: 0x328C5D, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFShySSG_Tg577$s8PenNavUI9XMLParserV7ScannerV10scanString11matchingAnySSShySSG_tKFSbSSXEfU_0eF2UI0H0V0J0VTf1cn_n', symObjAddr: 0x0, symBinAddr: 0x268704, symSize: 0x14C } + - { offset: 0x3293B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOwet', symObjAddr: 0x10, symBinAddr: 0x26A3D0, symSize: 0x90 } + - { offset: 0x3293C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOwst', symObjAddr: 0xA0, symBinAddr: 0x26A460, symSize: 0xB0 } + - { offset: 0x3293DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOMa', symObjAddr: 0x164, symBinAddr: 0x26A510, symSize: 0x10 } + - { offset: 0x3293F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x174, symBinAddr: 0x26A520, symSize: 0x4 } + - { offset: 0x329405, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI14DetailsSectionOGSayxGSlsWl', symObjAddr: 0x178, symBinAddr: 0x26A524, symSize: 0x44 } + - { offset: 0x329419, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI14DetailsSectionOGMa', symObjAddr: 0x1BC, symBinAddr: 0x26A568, symSize: 0x50 } + - { offset: 0x3294CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOSHAASQWb', symObjAddr: 0x338, symBinAddr: 0x26A618, symSize: 0x4 } + - { offset: 0x3294DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOACSQAAWl', symObjAddr: 0x33C, symBinAddr: 0x26A61C, symSize: 0x40 } + - { offset: 0x32952F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x2CC, symBinAddr: 0x26A5B8, symSize: 0x28 } + - { offset: 0x32956C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOs12CaseIterableAAsADP8allCases03AllI0QzvgZTW', symObjAddr: 0x300, symBinAddr: 0x26A5E0, symSize: 0x38 } + - { offset: 0x3295BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x37C, symBinAddr: 0x26A65C, symSize: 0x10 } + - { offset: 0x329966, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC16instructionImageSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x26A66C, symSize: 0x10 } + - { offset: 0x329D6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellCfETo', symObjAddr: 0x11E4, symBinAddr: 0x26B850, symSize: 0x48 } + - { offset: 0x329D9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellCMa', symObjAddr: 0x122C, symBinAddr: 0x26B898, symSize: 0x20 } + - { offset: 0x329DB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC18setInstructionIcon3foryAA05RouteD0V_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x139C, symBinAddr: 0x26B980, symSize: 0x40 } + - { offset: 0x329FD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC16instructionImageSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x26A66C, symSize: 0x10 } + - { offset: 0x329FEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC16instructionImageSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x26A66C, symSize: 0x10 } + - { offset: 0x32A035, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC16instructionImageSo11UIImageViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x26A67C, symSize: 0x34 } + - { offset: 0x32A084, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5titleSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x26A6B0, symSize: 0x10 } + - { offset: 0x32A09C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5titleSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x26A6B0, symSize: 0x10 } + - { offset: 0x32A0DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5titleSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x26A6C0, symSize: 0x34 } + - { offset: 0x32A12B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC8subtitleSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x26A6F4, symSize: 0x10 } + - { offset: 0x32A143, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC8subtitleSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x26A6F4, symSize: 0x10 } + - { offset: 0x32A17E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC8subtitleSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x26A704, symSize: 0x34 } + - { offset: 0x32A1FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC12awakeFromNibyyF', symObjAddr: 0xCC, symBinAddr: 0x26A738, symSize: 0x1BC } + - { offset: 0x32A2D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC12awakeFromNibyyFTo', symObjAddr: 0x288, symBinAddr: 0x26A8F4, symSize: 0x28 } + - { offset: 0x32A432, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC9configure3foryAA05RouteD0V_tF', symObjAddr: 0x2B0, symBinAddr: 0x26A91C, symSize: 0x8DC } + - { offset: 0x32A78C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC18setInstructionIcon3foryAA05RouteD0V_tFySo7UIImageCSgcfU_', symObjAddr: 0xB8C, symBinAddr: 0x26B1F8, symSize: 0x310 } + - { offset: 0x32A931, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC15prepareForReuseyyF', symObjAddr: 0xE9C, symBinAddr: 0x26B508, symSize: 0x178 } + - { offset: 0x32AA09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC15prepareForReuseyyFTo', symObjAddr: 0x1014, symBinAddr: 0x26B680, symSize: 0x28 } + - { offset: 0x32AA4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x103C, symBinAddr: 0x26B6A8, symSize: 0xC0 } + - { offset: 0x32AA8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x10FC, symBinAddr: 0x26B768, symSize: 0x90 } + - { offset: 0x32AABE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x118C, symBinAddr: 0x26B7F8, symSize: 0x28 } + - { offset: 0x32AAD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellCfD', symObjAddr: 0x11B4, symBinAddr: 0x26B820, symSize: 0x30 } + - { offset: 0x32AE66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC06detailF0So11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x26B9C0, symSize: 0x20 } + - { offset: 0x32B037, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellCfETo', symObjAddr: 0x2DC, symBinAddr: 0x26BC9C, symSize: 0x38 } + - { offset: 0x32B066, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellCMa', symObjAddr: 0x314, symBinAddr: 0x26BCD4, symSize: 0x20 } + - { offset: 0x32B138, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC06detailF0So11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x26B9C0, symSize: 0x20 } + - { offset: 0x32B198, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC06detailF0So11UIImageViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x26B9E0, symSize: 0x14 } + - { offset: 0x32B1E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC21imageHeightConstraintSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x34, symBinAddr: 0x26B9F4, symSize: 0x20 } + - { offset: 0x32B243, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC21imageHeightConstraintSo08NSLayoutJ0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x26BA14, symSize: 0x14 } + - { offset: 0x32B294, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC12awakeFromNibyyFTo', symObjAddr: 0x68, symBinAddr: 0x26BA28, symSize: 0x68 } + - { offset: 0x32B306, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0xD0, symBinAddr: 0x26BA90, symSize: 0x54 } + - { offset: 0x32B36C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0x124, symBinAddr: 0x26BAE4, symSize: 0xE4 } + - { offset: 0x32B3E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x208, symBinAddr: 0x26BBC8, symSize: 0xA4 } + - { offset: 0x32B41F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellCfD', symObjAddr: 0x2AC, symBinAddr: 0x26BC6C, symSize: 0x30 } + - { offset: 0x32B7C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwxx', symObjAddr: 0x50, symBinAddr: 0x26BCF4, symSize: 0x14 } + - { offset: 0x32B7D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwcp', symObjAddr: 0x88, symBinAddr: 0x26BD08, symSize: 0x5C } + - { offset: 0x32B7E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwca', symObjAddr: 0xE4, symBinAddr: 0x26BD64, symSize: 0x6C } + - { offset: 0x32B7FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwta', symObjAddr: 0x164, symBinAddr: 0x26BDD0, symSize: 0x4C } + - { offset: 0x32B811, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwet', symObjAddr: 0x1B0, symBinAddr: 0x26BE1C, symSize: 0x48 } + - { offset: 0x32B825, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwst', symObjAddr: 0x1F8, symBinAddr: 0x26BE64, symSize: 0x48 } + - { offset: 0x32B839, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOMa', symObjAddr: 0x254, symBinAddr: 0x26BEAC, symSize: 0x10 } + - { offset: 0x32BA1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSHAASQWb', symObjAddr: 0x50C, symBinAddr: 0x26C164, symSize: 0x4 } + - { offset: 0x32BB48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC3arc33_3D1849BFB3F9132BAB159E8D460AA85ALL2to5large5radiiyAC5PointV_SbAC4SizeVtF', symObjAddr: 0x550, symBinAddr: 0x26C168, symSize: 0x194 } + - { offset: 0x32BE58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8makeLine7betweenAESayAC5PointVG_tFZTf4nd_n', symObjAddr: 0x934, symBinAddr: 0x26C54C, symSize: 0x160 } + - { offset: 0x32C249, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8makeRect6within5radiiAeC0H0V_AC4SizeVtFZTf4nnd_n', symObjAddr: 0xAD8, symBinAddr: 0x26C6AC, symSize: 0x688 } + - { offset: 0x32CD1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC11makeEllipse6withinAeC4RectV_tFZTf4nd_n', symObjAddr: 0x1160, symBinAddr: 0x26CD34, symSize: 0x1DC } + - { offset: 0x32D024, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC11makePolygon7betweenAESayAC5PointVG_tFZTf4nd_n', symObjAddr: 0x133C, symBinAddr: 0x26CF10, symSize: 0xF0 } + - { offset: 0x32D2D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x48C, symBinAddr: 0x26C0E4, symSize: 0x5C } + - { offset: 0x32D52A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO4hash4intoys6HasherVz_tF', symObjAddr: 0x264, symBinAddr: 0x26BEBC, symSize: 0x1B8 } + - { offset: 0x32DAEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSHAASH9hashValueSivgTW', symObjAddr: 0x41C, symBinAddr: 0x26C074, symSize: 0x60 } + - { offset: 0x32DB6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x47C, symBinAddr: 0x26C0D4, symSize: 0x10 } + - { offset: 0x32DB91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x4E8, symBinAddr: 0x26C140, symSize: 0x24 } + - { offset: 0x32DC52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x6E4, symBinAddr: 0x26C2FC, symSize: 0x250 } + - { offset: 0x32E3C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvgTo', symObjAddr: 0x0, symBinAddr: 0x26D000, symSize: 0x48 } + - { offset: 0x32E533, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvpACTk', symObjAddr: 0x140, symBinAddr: 0x26D140, symSize: 0x64 } + - { offset: 0x32E587, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewCMa', symObjAddr: 0x3CC, symBinAddr: 0x26D378, symSize: 0x20 } + - { offset: 0x32E59B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewCfETo', symObjAddr: 0x444, symBinAddr: 0x26D3F0, symSize: 0x10 } + - { offset: 0x32E633, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvgTo', symObjAddr: 0x0, symBinAddr: 0x26D000, symSize: 0x48 } + - { offset: 0x32E666, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvg', symObjAddr: 0x48, symBinAddr: 0x26D048, symSize: 0x40 } + - { offset: 0x32E6B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvsTo', symObjAddr: 0x88, symBinAddr: 0x26D088, symSize: 0x64 } + - { offset: 0x32E6EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvs', symObjAddr: 0xEC, symBinAddr: 0x26D0EC, symSize: 0x54 } + - { offset: 0x32E714, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvM', symObjAddr: 0x1A4, symBinAddr: 0x26D1A4, symSize: 0x40 } + - { offset: 0x32E761, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewCACycfcTo', symObjAddr: 0x1E8, symBinAddr: 0x26D1E4, symSize: 0xB4 } + - { offset: 0x32E814, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x29C, symBinAddr: 0x26D298, symSize: 0x58 } + - { offset: 0x32E85C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x344, symBinAddr: 0x26D2F0, symSize: 0x2C } + - { offset: 0x32E8CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x370, symBinAddr: 0x26D31C, symSize: 0x2C } + - { offset: 0x32E929, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewCfD', symObjAddr: 0x39C, symBinAddr: 0x26D348, symSize: 0x30 } + - { offset: 0x32ECD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6campus33_2D041EA7C21D1E6F1ABCD9FDC43C0821LL7Penguin5VenueCSgvp', symObjAddr: 0x3160, symBinAddr: 0x3816B0, symSize: 0x0 } + - { offset: 0x32ECE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6campus33_2D041EA7C21D1E6F1ABCD9FDC43C0821LL_WZ', symObjAddr: 0x0, symBinAddr: 0x26D40C, symSize: 0x84 } + - { offset: 0x32F283, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCMU', symObjAddr: 0x22D4, symBinAddr: 0x26F6C8, symSize: 0x8 } + - { offset: 0x32F297, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCMa', symObjAddr: 0x22DC, symBinAddr: 0x26F6D0, symSize: 0x38 } + - { offset: 0x32F2AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCMr', symObjAddr: 0x2314, symBinAddr: 0x26F708, symSize: 0x9C } + - { offset: 0x32F2BF, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonVSgMa', symObjAddr: 0x2684, symBinAddr: 0x26FA78, symSize: 0x54 } + - { offset: 0x32F2D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOMa', symObjAddr: 0x2840, symBinAddr: 0x26FACC, symSize: 0x10 } + - { offset: 0x32F2F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSHAASQWb', symObjAddr: 0x2BF4, symBinAddr: 0x26FE80, symSize: 0x4 } + - { offset: 0x32F306, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOACSQAAWl', symObjAddr: 0x2BF8, symBinAddr: 0x26FE84, symSize: 0x40 } + - { offset: 0x32F31A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOAEs0E3KeyAAWl', symObjAddr: 0x2CA0, symBinAddr: 0x26FEC4, symSize: 0x40 } + - { offset: 0x32F32E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOACSeAAWl', symObjAddr: 0x2D00, symBinAddr: 0x26FF04, symSize: 0x40 } + - { offset: 0x32F342, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOACSYAAWl', symObjAddr: 0x2D88, symBinAddr: 0x26FF44, symSize: 0x40 } + - { offset: 0x32F356, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOACSEAAWl', symObjAddr: 0x2DC8, symBinAddr: 0x26FF84, symSize: 0x40 } + - { offset: 0x32F36A, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonVSgWOh', symObjAddr: 0x2E90, symBinAddr: 0x270004, symSize: 0x40 } + - { offset: 0x32F37E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOMa', symObjAddr: 0x3024, symBinAddr: 0x270044, symSize: 0x10 } + - { offset: 0x32F392, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASQWb', symObjAddr: 0x3034, symBinAddr: 0x270054, symSize: 0x4 } + - { offset: 0x32F3A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOAESQAAWl', symObjAddr: 0x3038, symBinAddr: 0x270058, symSize: 0x40 } + - { offset: 0x32F3BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x3078, symBinAddr: 0x270098, symSize: 0x4 } + - { offset: 0x32F3CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x307C, symBinAddr: 0x27009C, symSize: 0x40 } + - { offset: 0x32F3E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x30BC, symBinAddr: 0x2700DC, symSize: 0x4 } + - { offset: 0x32F3F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x30C0, symBinAddr: 0x2700E0, symSize: 0x40 } + - { offset: 0x32F432, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0x26D5EC, symSize: 0xC } + - { offset: 0x32F46C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x1EC, symBinAddr: 0x26D5F8, symSize: 0xC } + - { offset: 0x32F48C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x1EC, symBinAddr: 0x26D5F8, symSize: 0xC } + - { offset: 0x32F4A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x1EC, symBinAddr: 0x26D5F8, symSize: 0xC } + - { offset: 0x32F4B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1F8, symBinAddr: 0x26D604, symSize: 0x8 } + - { offset: 0x32F4CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x200, symBinAddr: 0x26D60C, symSize: 0x8 } + - { offset: 0x32F502, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x454, symBinAddr: 0x26D848, symSize: 0x28 } + - { offset: 0x32F51E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x47C, symBinAddr: 0x26D870, symSize: 0x28 } + - { offset: 0x32F681, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x28C8, symBinAddr: 0x26FB54, symSize: 0x9C } + - { offset: 0x32F768, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x2964, symBinAddr: 0x26FBF0, symSize: 0x78 } + - { offset: 0x32F81C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x29DC, symBinAddr: 0x26FC68, symSize: 0x54 } + - { offset: 0x32F88E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x2A30, symBinAddr: 0x26FCBC, symSize: 0x74 } + - { offset: 0x32F920, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x2B4C, symBinAddr: 0x26FDD8, symSize: 0x5C } + - { offset: 0x32F943, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x2BA8, symBinAddr: 0x26FE34, symSize: 0x4C } + - { offset: 0x32FA51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10identifierSSvg', symObjAddr: 0x84, symBinAddr: 0x26D490, symSize: 0x15C } + - { offset: 0x32FAF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x208, symBinAddr: 0x26D614, symSize: 0x2C } + - { offset: 0x32FB32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x234, symBinAddr: 0x26D640, symSize: 0xF4 } + - { offset: 0x32FB6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs0E3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x328, symBinAddr: 0x26D734, symSize: 0xF0 } + - { offset: 0x32FBC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs0E3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x418, symBinAddr: 0x26D824, symSize: 0x24 } + - { offset: 0x32FCFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC9cacheDataAcA0d5CacheF0C_tcfc', symObjAddr: 0x4A4, symBinAddr: 0x26D898, symSize: 0x428 } + - { offset: 0x32FF06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC5placeAcA5PlaceCSg_tcfc', symObjAddr: 0x8CC, symBinAddr: 0x26DCC0, symSize: 0x30C } + - { offset: 0x330076, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC4fromACs7Decoder_p_tKcfc', symObjAddr: 0xBD8, symBinAddr: 0x26DFCC, symSize: 0x430 } + - { offset: 0x330123, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC13favoriteAliasSSvg', symObjAddr: 0x1008, symBinAddr: 0x26E3FC, symSize: 0x158 } + - { offset: 0x330170, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC12favoriteNameSSvg', symObjAddr: 0x1160, symBinAddr: 0x26E554, symSize: 0x168 } + - { offset: 0x3302C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC27favoriteDistanceInformationSSvg', symObjAddr: 0x12C8, symBinAddr: 0x26E6BC, symSize: 0x610 } + - { offset: 0x330808, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC16favoriteCategory7Penguin11POICategoryVSgvg', symObjAddr: 0x18D8, symBinAddr: 0x26ECCC, symSize: 0x1D0 } + - { offset: 0x330934, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC7iconUrlSSSgvg', symObjAddr: 0x1AA8, symBinAddr: 0x26EE9C, symSize: 0x16C } + - { offset: 0x3309E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC15favoriteAddressSSvg', symObjAddr: 0x1C14, symBinAddr: 0x26F008, symSize: 0x668 } + - { offset: 0x330EB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCfD', symObjAddr: 0x227C, symBinAddr: 0x26F670, symSize: 0x58 } + - { offset: 0x330EF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC6encode2toys7Encoder_p_tKF', symObjAddr: 0x23B0, symBinAddr: 0x26F7A4, symSize: 0x2D4 } + - { offset: 0x330F2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x2850, symBinAddr: 0x26FADC, symSize: 0x58 } + - { offset: 0x330F58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x28A8, symBinAddr: 0x26FB34, symSize: 0x20 } + - { offset: 0x330F90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x2AA4, symBinAddr: 0x26FD30, symSize: 0x70 } + - { offset: 0x330FDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x2B14, symBinAddr: 0x26FDA0, symSize: 0x38 } + - { offset: 0x331011, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x3100, symBinAddr: 0x270120, symSize: 0x5C } + - { offset: 0x3313EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV10scanStringySbSSKF', symObjAddr: 0x0, symBinAddr: 0x27017C, symSize: 0x160 } + - { offset: 0x3316D4, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE8scanBoolSbyKF', symObjAddr: 0x4FC, symBinAddr: 0x270634, symSize: 0x410 } + - { offset: 0x3317D0, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE5ErrorOAEsAdCWl', symObjAddr: 0xB00, symBinAddr: 0x270B0C, symSize: 0x40 } + - { offset: 0x3317E4, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE5ErrorOMa', symObjAddr: 0xC24, symBinAddr: 0x270B4C, symSize: 0x10 } + - { offset: 0x3317F8, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE5ErrorOSHACSQWb', symObjAddr: 0xC34, symBinAddr: 0x270B5C, symSize: 0x4 } + - { offset: 0x33180C, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE5ErrorOAESQACWl', symObjAddr: 0xC38, symBinAddr: 0x270B60, symSize: 0x40 } + - { offset: 0x331876, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV10scanStringySbSSKF', symObjAddr: 0x0, symBinAddr: 0x27017C, symSize: 0x160 } + - { offset: 0x3319BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV14scanPercentageSfyKF', symObjAddr: 0x1A4, symBinAddr: 0x2702DC, symSize: 0x1C8 } + - { offset: 0x331AAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV13scanCharacter11matchingAnySJ10Foundation0G3SetV_tKF', symObjAddr: 0x36C, symBinAddr: 0x2704A4, symSize: 0x190 } + - { offset: 0x331BC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV10scanString11matchingAnySS10Foundation12CharacterSetV_tKF', symObjAddr: 0x90C, symBinAddr: 0x270A44, symSize: 0xC8 } + - { offset: 0x3322CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellCfETo', symObjAddr: 0xC5C, symBinAddr: 0x2717FC, symSize: 0x58 } + - { offset: 0x3322F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellCMa', symObjAddr: 0xCB4, symBinAddr: 0x271854, symSize: 0x20 } + - { offset: 0x33230D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC8setImage3foryAA0D0C_tFySo7UIImageCSgcfU_TA', symObjAddr: 0xDEC, symBinAddr: 0x2718C4, symSize: 0x8 } + - { offset: 0x332321, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvWyycfU0_TA', symObjAddr: 0xDF4, symBinAddr: 0x2718CC, symSize: 0x30 } + - { offset: 0x332335, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xE24, symBinAddr: 0x2718FC, symSize: 0x10 } + - { offset: 0x332349, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xE34, symBinAddr: 0x27190C, symSize: 0x8 } + - { offset: 0x33235D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvWyycfU_TA', symObjAddr: 0xE3C, symBinAddr: 0x271914, symSize: 0x30 } + - { offset: 0x3324B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC09containerF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x270BA0, symSize: 0x10 } + - { offset: 0x3324C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC09containerF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x270BA0, symSize: 0x10 } + - { offset: 0x33250E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC09containerF0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x270BB0, symSize: 0x34 } + - { offset: 0x33255D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC05imageF0So07UIImageF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x270BE4, symSize: 0x20 } + - { offset: 0x3325B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC05imageF0So07UIImageF0CSgvsTo', symObjAddr: 0x64, symBinAddr: 0x270C04, symSize: 0x14 } + - { offset: 0x332608, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x78, symBinAddr: 0x270C18, symSize: 0x20 } + - { offset: 0x332662, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x270C38, symSize: 0x14 } + - { offset: 0x3326B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC12awakeFromNibyyFTo', symObjAddr: 0xAC, symBinAddr: 0x270C4C, symSize: 0x3C } + - { offset: 0x33270E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvgTo', symObjAddr: 0xE8, symBinAddr: 0x270C88, symSize: 0x3C } + - { offset: 0x332766, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvsTo', symObjAddr: 0x124, symBinAddr: 0x270CC4, symSize: 0x68 } + - { offset: 0x33279B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvW', symObjAddr: 0x18C, symBinAddr: 0x270D2C, symSize: 0x160 } + - { offset: 0x3327E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC7setData3foryAA0D0C_tF', symObjAddr: 0x3AC, symBinAddr: 0x270F4C, symSize: 0xAC } + - { offset: 0x332875, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC8setImage3foryAA0D0C_tF', symObjAddr: 0x458, symBinAddr: 0x270FF8, symSize: 0x300 } + - { offset: 0x33296A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC8setImage3foryAA0D0C_tFySo7UIImageCSgcfU_', symObjAddr: 0x758, symBinAddr: 0x2712F8, symSize: 0x1B8 } + - { offset: 0x332A47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC15prepareForReuseyyF', symObjAddr: 0x910, symBinAddr: 0x2714B0, symSize: 0x174 } + - { offset: 0x332AE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC15prepareForReuseyyFTo', symObjAddr: 0xA84, symBinAddr: 0x271624, symSize: 0x28 } + - { offset: 0x332B1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xAAC, symBinAddr: 0x27164C, symSize: 0xAC } + - { offset: 0x332B73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB58, symBinAddr: 0x2716F8, symSize: 0xAC } + - { offset: 0x332BA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xC04, symBinAddr: 0x2717A4, symSize: 0x28 } + - { offset: 0x332BBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellCfD', symObjAddr: 0xC2C, symBinAddr: 0x2717CC, symSize: 0x30 } + - { offset: 0x332F62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewC5frame5colorACSo6CGRectV_So7UIColorCtcfc', symObjAddr: 0x0, symBinAddr: 0x27194C, symSize: 0x384 } + - { offset: 0x33312F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewCMa', symObjAddr: 0x460, symBinAddr: 0x271DAC, symSize: 0x20 } + - { offset: 0x333218, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewC5frame5colorACSo6CGRectV_So7UIColorCtcfc', symObjAddr: 0x0, symBinAddr: 0x27194C, symSize: 0x384 } + - { offset: 0x333414, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x384, symBinAddr: 0x271CD0, symSize: 0x80 } + - { offset: 0x33346E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x404, symBinAddr: 0x271D50, symSize: 0x2C } + - { offset: 0x3334CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewCfD', symObjAddr: 0x430, symBinAddr: 0x271D7C, symSize: 0x30 } + - { offset: 0x33386C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5frame11circleColor05arrowJ0ACSo6CGRectV_So7UIColorCAJtcfc', symObjAddr: 0x0, symBinAddr: 0x271DCC, symSize: 0x140 } + - { offset: 0x333AAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewCfETo', symObjAddr: 0x718, symBinAddr: 0x2724E4, symSize: 0x38 } + - { offset: 0x333ADB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewCMa', symObjAddr: 0x750, symBinAddr: 0x27251C, symSize: 0x20 } + - { offset: 0x333AF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5frame11circleColor05arrowJ0ACSo6CGRectV_So7UIColorCAJtcfc', symObjAddr: 0x0, symBinAddr: 0x271DCC, symSize: 0x140 } + - { offset: 0x333BA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x140, symBinAddr: 0x271F0C, symSize: 0xF0 } + - { offset: 0x333C08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x230, symBinAddr: 0x271FFC, symSize: 0x28 } + - { offset: 0x333C39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC015setupArrowImageG033_1FCC85171C0AF7556E3C336142678B89LL10arrowColorySo7UIColorC_tF', symObjAddr: 0x258, symBinAddr: 0x272024, symSize: 0x11C } + - { offset: 0x333CEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC14layoutSubviewsyyF', symObjAddr: 0x374, symBinAddr: 0x272140, symSize: 0xC8 } + - { offset: 0x333DAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC14layoutSubviewsyyFTo', symObjAddr: 0x43C, symBinAddr: 0x272208, symSize: 0x28 } + - { offset: 0x333DCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC4drawyySo6CGRectVF', symObjAddr: 0x464, symBinAddr: 0x272230, symSize: 0x200 } + - { offset: 0x333E70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC4drawyySo6CGRectVFTo', symObjAddr: 0x664, symBinAddr: 0x272430, symSize: 0x58 } + - { offset: 0x333EAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x6BC, symBinAddr: 0x272488, symSize: 0x2C } + - { offset: 0x333F0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewCfD', symObjAddr: 0x6E8, symBinAddr: 0x2724B4, symSize: 0x30 } + - { offset: 0x3342CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19FloorDrawingManagerV04drawD0_5using012setsCameraToD010completiony7Penguin0D0CSg_0M10INRenderer10PIRendererCSgSbySbcSgtFZySbcfU_', symObjAddr: 0x0, symBinAddr: 0x27253C, symSize: 0x14C } + - { offset: 0x3343E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19FloorDrawingManagerV04drawD0_5using012setsCameraToD010completiony7Penguin0D0CSg_0M10INRenderer10PIRendererCSgSbySbcSgtFZySbcfU_', symObjAddr: 0x0, symBinAddr: 0x27253C, symSize: 0x14C } + - { offset: 0x334494, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19FloorDrawingManagerV04drawD0_5using012setsCameraToD010completiony7Penguin0D0CSg_0M10INRenderer10PIRendererCSgSbySbcSgtFZTf4nnnnd_n', symObjAddr: 0x14C, symBinAddr: 0x272688, symSize: 0x3BC } + - { offset: 0x3348D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC4size14indicatorColor06strokeI0AC12CoreGraphics7CGFloatV_So7UIColorCAKtcfc', symObjAddr: 0x0, symBinAddr: 0x272A80, symSize: 0x12C } + - { offset: 0x334A15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewCfETo', symObjAddr: 0x50C, symBinAddr: 0x272F8C, symSize: 0x38 } + - { offset: 0x334A44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewCMa', symObjAddr: 0x544, symBinAddr: 0x272FC4, symSize: 0x20 } + - { offset: 0x334AAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC4size14indicatorColor06strokeI0AC12CoreGraphics7CGFloatV_So7UIColorCAKtcfc', symObjAddr: 0x0, symBinAddr: 0x272A80, symSize: 0x12C } + - { offset: 0x334B3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x12C, symBinAddr: 0x272BAC, symSize: 0x120 } + - { offset: 0x334B6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x24C, symBinAddr: 0x272CCC, symSize: 0x28 } + - { offset: 0x334BE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC4drawyySo6CGRectVF', symObjAddr: 0x274, symBinAddr: 0x272CF4, symSize: 0x1E4 } + - { offset: 0x334CD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC4drawyySo6CGRectVFTo', symObjAddr: 0x458, symBinAddr: 0x272ED8, symSize: 0x58 } + - { offset: 0x334D0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x4B0, symBinAddr: 0x272F30, symSize: 0x2C } + - { offset: 0x334D6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewCfD', symObjAddr: 0x4DC, symBinAddr: 0x272F5C, symSize: 0x30 } + - { offset: 0x335154, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC04pathE00D006NWPathE0CSgvpZ', symObjAddr: 0x82C8, symBinAddr: 0x397348, symSize: 0x0 } + - { offset: 0x33516E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC13interfaceType0D011NWInterfaceV09InterfaceG0OvpZ', symObjAddr: 0x82D0, symBinAddr: 0x397350, symSize: 0x0 } + - { offset: 0x335188, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC17monitoringStartedSbvpZ', symObjAddr: 0x82E8, symBinAddr: 0x397368, symSize: 0x0 } + - { offset: 0x335281, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC13interfaceType_WZ', symObjAddr: 0x294, symBinAddr: 0x273278, symSize: 0x58 } + - { offset: 0x3352AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorCMa', symObjAddr: 0x8B8, symBinAddr: 0x273884, symSize: 0x20 } + - { offset: 0x3352C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC5startyyFZy0D06NWPathVcfU_TA', symObjAddr: 0x8F4, symBinAddr: 0x2738C0, symSize: 0x8 } + - { offset: 0x3352E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC25networkInterfaceDidChange33_91F7F947D07FC5BC8196B21D1F1C565BLL2toy0D011NWInterfaceV0G4TypeO_tFZyyScMYccfU_TA', symObjAddr: 0x117C, symBinAddr: 0x274058, symSize: 0x2C } + - { offset: 0x3352F9, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x11A8, symBinAddr: 0x274084, symSize: 0x10 } + - { offset: 0x33530D, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x11B8, symBinAddr: 0x274094, symSize: 0x8 } + - { offset: 0x335321, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZy0D06NWPathVcfU_TA', symObjAddr: 0x1278, symBinAddr: 0x2740C8, symSize: 0xC } + - { offset: 0x335335, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZy0D06NWPathVcfU_yyScMYccfU_TA', symObjAddr: 0x12F0, symBinAddr: 0x274140, symSize: 0x30 } + - { offset: 0x335477, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC5startyyFZ', symObjAddr: 0x0, symBinAddr: 0x272FE4, symSize: 0x294 } + - { offset: 0x335513, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC5startyyFZy0D06NWPathVcfU_', symObjAddr: 0x668, symBinAddr: 0x27364C, symSize: 0x11C } + - { offset: 0x33556F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZy0D06NWPathVcfU_', symObjAddr: 0x2EC, symBinAddr: 0x2732D0, symSize: 0x28C } + - { offset: 0x3355DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZy0D06NWPathVcfU_yyScMYccfU_', symObjAddr: 0x578, symBinAddr: 0x27355C, symSize: 0xF0 } + - { offset: 0x335636, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC25networkInterfaceDidChange33_91F7F947D07FC5BC8196B21D1F1C565BLL2toy0D011NWInterfaceV0G4TypeO_tFZyyScMYccfU_', symObjAddr: 0x784, symBinAddr: 0x273768, symSize: 0x11C } + - { offset: 0x335675, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZTf4nd_n', symObjAddr: 0x9D4, symBinAddr: 0x273908, symSize: 0x25C } + - { offset: 0x335729, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC6cancelyyFZTf4d_n', symObjAddr: 0xC30, symBinAddr: 0x273B64, symSize: 0x15C } + - { offset: 0x33574B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC25networkInterfaceDidChange33_91F7F947D07FC5BC8196B21D1F1C565BLL2toy0D011NWInterfaceV0G4TypeO_tFZTf4nd_n', symObjAddr: 0xD8C, symBinAddr: 0x273CC0, symSize: 0x340 } + - { offset: 0x335B72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ScheduleDayVMa', symObjAddr: 0x134, symBinAddr: 0x274178, symSize: 0x10 } + - { offset: 0x335F33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ScheduleDayV10timeRangesSSvg', symObjAddr: 0x144, symBinAddr: 0x274188, symSize: 0x488 } + - { offset: 0x33637E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ScheduleDayV05shortE4NameSSvgTf4x_n', symObjAddr: 0x7B8, symBinAddr: 0x274778, symSize: 0xFC } + - { offset: 0x336443, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ScheduleDayV04longE4NameSSSgvgTf4x_n', symObjAddr: 0x8B4, symBinAddr: 0x274874, symSize: 0x144 } + - { offset: 0x336884, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5labelSo7UILabelCvpfiAFyXEfU_', symObjAddr: 0x0, symBinAddr: 0x2749B8, symSize: 0x1DC } + - { offset: 0x3369C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelCfETo', symObjAddr: 0x47C, symBinAddr: 0x274E34, symSize: 0x10 } + - { offset: 0x3369F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelCMa', symObjAddr: 0x48C, symBinAddr: 0x274E44, symSize: 0x20 } + - { offset: 0x336AC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5labelSo7UILabelCvpfiAFyXEfU_', symObjAddr: 0x0, symBinAddr: 0x2749B8, symSize: 0x1DC } + - { offset: 0x336BC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5frameACSo6CGRectV_tcfc', symObjAddr: 0x1DC, symBinAddr: 0x274B94, symSize: 0x1E0 } + - { offset: 0x336BFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x3BC, symBinAddr: 0x274D74, symSize: 0x20 } + - { offset: 0x336C46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x3DC, symBinAddr: 0x274D94, symSize: 0x70 } + - { offset: 0x336C8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelCfD', symObjAddr: 0x44C, symBinAddr: 0x274E04, symSize: 0x30 } + - { offset: 0x33703F, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15updateFontStyleyyAC0fG0OF', symObjAddr: 0x0, symBinAddr: 0x274E64, symSize: 0x140 } + - { offset: 0x337151, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15updateFontStyle3for5styleySaySSG_AC0fG0OtF', symObjAddr: 0x140, symBinAddr: 0x274FA4, symSize: 0x1F4 } + - { offset: 0x3372CD, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE33updateFontStyleForWordsContaining_5styleySS_AC0fG0OtF', symObjAddr: 0x334, symBinAddr: 0x275198, symSize: 0x1FC } + - { offset: 0x337415, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE9fontStyleSSvsTo', symObjAddr: 0x530, symBinAddr: 0x275394, symSize: 0x54 } + - { offset: 0x337431, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x708, symBinAddr: 0x2753E8, symSize: 0x8 } + - { offset: 0x33744D, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15colorIdentifierSivsTo', symObjAddr: 0x710, symBinAddr: 0x2753F0, symSize: 0x38 } + - { offset: 0x337469, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x754, symBinAddr: 0x275428, symSize: 0x8 } + - { offset: 0x337485, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x75C, symBinAddr: 0x275430, symSize: 0x38 } + - { offset: 0x3374CB, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15localizationKeySSvsTo', symObjAddr: 0x8D4, symBinAddr: 0x275468, symSize: 0x94 } + - { offset: 0x337A07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x275504, symSize: 0x10 } + - { offset: 0x337D02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellCfETo', symObjAddr: 0x808, symBinAddr: 0x275D08, symSize: 0x4C } + - { offset: 0x337D31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellCMa', symObjAddr: 0x854, symBinAddr: 0x275D54, symSize: 0x20 } + - { offset: 0x337D45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC25adaptivePresentationStyle3forSo07UIModalhI0VSo24UIPresentationControllerC_tFTo', symObjAddr: 0x874, symBinAddr: 0x275D74, symSize: 0x8 } + - { offset: 0x337D61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC05shareD0yyFyycfU_TA', symObjAddr: 0x8E4, symBinAddr: 0x275DA0, symSize: 0x8 } + - { offset: 0x337E85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x275504, symSize: 0x10 } + - { offset: 0x337E9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x275504, symSize: 0x10 } + - { offset: 0x337EE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x275514, symSize: 0x34 } + - { offset: 0x337F32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC17reportIssueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x275548, symSize: 0x10 } + - { offset: 0x337F4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC17reportIssueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x275548, symSize: 0x10 } + - { offset: 0x337F85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC17reportIssueButtonSo8UIButtonCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x275558, symSize: 0x34 } + - { offset: 0x337FD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC12awakeFromNibyyF', symObjAddr: 0x88, symBinAddr: 0x27558C, symSize: 0xDC } + - { offset: 0x338020, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC12awakeFromNibyyFTo', symObjAddr: 0x164, symBinAddr: 0x275668, symSize: 0x28 } + - { offset: 0x33803B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC13reportAnIssueyySo8UIButtonCFTo', symObjAddr: 0x18C, symBinAddr: 0x275690, symSize: 0x4 } + - { offset: 0x338053, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC13reportAnIssueyySo8UIButtonCFTo', symObjAddr: 0x18C, symBinAddr: 0x275690, symSize: 0x4 } + - { offset: 0x3380E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC05shareD0yyF', symObjAddr: 0x190, symBinAddr: 0x275694, symSize: 0x414 } + - { offset: 0x33832B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC05shareD0yyFyycfU_', symObjAddr: 0x5A4, symBinAddr: 0x275AA8, symSize: 0x88 } + - { offset: 0x338393, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC05shareD0yyFTo', symObjAddr: 0x630, symBinAddr: 0x275B30, symSize: 0x28 } + - { offset: 0x3383D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x658, symBinAddr: 0x275B58, symSize: 0xC4 } + - { offset: 0x33843E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x71C, symBinAddr: 0x275C1C, symSize: 0x94 } + - { offset: 0x338471, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x7B0, symBinAddr: 0x275CB0, symSize: 0x28 } + - { offset: 0x338485, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellCfD', symObjAddr: 0x7D8, symBinAddr: 0x275CD8, symSize: 0x30 } + - { offset: 0x3384A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC13reportAnIssueyySo8UIButtonCFTf4dd_n', symObjAddr: 0x90C, symBinAddr: 0x275DA8, symSize: 0xE0 } + - { offset: 0x338849, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4fromSSAA9LayerTreeO5ShapeO_tF', symObjAddr: 0x0, symBinAddr: 0x275E88, symSize: 0x1BC } + - { offset: 0x33891A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4fromSSAA9LayerTreeO5ShapeO_tF', symObjAddr: 0x0, symBinAddr: 0x275E88, symSize: 0x1BC } + - { offset: 0x338BA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderRect33_7CD13BB8671B7C502D9AF163B5323DF8LL4fromSSAA9LayerTreeO0G0V_tF', symObjAddr: 0x1BC, symBinAddr: 0x276044, symSize: 0x274 } + - { offset: 0x338F69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC14renderRectPath5frame5radiiSSAA9LayerTreeO0G0V_AH4SizeVtF', symObjAddr: 0x430, symBinAddr: 0x2762B8, symSize: 0x15C } + - { offset: 0x3391F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC17renderPolygonPath7betweenSSSayAA9LayerTreeO5PointVG_tF', symObjAddr: 0x58C, symBinAddr: 0x276414, symSize: 0x3A0 } + - { offset: 0x339817, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4from9formatterSSAA9LayerTreeO0G0C_AA19CoordinateFormatterVtFZ0F5PointL_AESSAH0N0V_tF', symObjAddr: 0x92C, symBinAddr: 0x2767B4, symSize: 0x160 } + - { offset: 0x339A6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4from9formatterSSAA9LayerTreeO0G0C_AA19CoordinateFormatterVtFZTf4nnd_n', symObjAddr: 0xA8C, symBinAddr: 0x276914, symSize: 0x364 } + - { offset: 0x33A43A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwCP', symObjAddr: 0x0, symBinAddr: 0x276C78, symSize: 0xE0 } + - { offset: 0x33A44E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwxx', symObjAddr: 0xE0, symBinAddr: 0x276D58, symSize: 0x4C } + - { offset: 0x33A462, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwcp', symObjAddr: 0x12C, symBinAddr: 0x276DA4, symSize: 0xB4 } + - { offset: 0x33A476, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwca', symObjAddr: 0x1E0, symBinAddr: 0x276E58, symSize: 0xD4 } + - { offset: 0x33A48A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwtk', symObjAddr: 0x2B4, symBinAddr: 0x276F2C, symSize: 0x90 } + - { offset: 0x33A49E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwta', symObjAddr: 0x344, symBinAddr: 0x276FBC, symSize: 0xA4 } + - { offset: 0x33A4B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwet', symObjAddr: 0x3E8, symBinAddr: 0x277060, symSize: 0xC } + - { offset: 0x33A4C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwst', symObjAddr: 0x470, symBinAddr: 0x2770E8, symSize: 0xC } + - { offset: 0x33A4DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVMa', symObjAddr: 0x4F0, symBinAddr: 0x277168, symSize: 0x38 } + - { offset: 0x33A4EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVMr', symObjAddr: 0x528, symBinAddr: 0x2771A0, symSize: 0x9C } + - { offset: 0x33A6FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOAFs0F3KeyAAWl', symObjAddr: 0xF28, symBinAddr: 0x277A90, symSize: 0x40 } + - { offset: 0x33A71C, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10LiveObjectVGSayxGSesSeRzlWl', symObjAddr: 0x1654, symBinAddr: 0x278014, symSize: 0x7C } + - { offset: 0x33A730, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10LiveObjectVGMa', symObjAddr: 0x16D0, symBinAddr: 0x278090, symSize: 0x54 } + - { offset: 0x33A744, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOMa', symObjAddr: 0x1904, symBinAddr: 0x2780E4, symSize: 0x10 } + - { offset: 0x33A758, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOSHAASQWb', symObjAddr: 0x1914, symBinAddr: 0x2780F4, symSize: 0x4 } + - { offset: 0x33A76C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOAFSQAAWl', symObjAddr: 0x1918, symBinAddr: 0x2780F8, symSize: 0x40 } + - { offset: 0x33A780, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1958, symBinAddr: 0x278138, symSize: 0x4 } + - { offset: 0x33A794, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x195C, symBinAddr: 0x27813C, symSize: 0x40 } + - { offset: 0x33A7A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x199C, symBinAddr: 0x27817C, symSize: 0x4 } + - { offset: 0x33A7BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x19A0, symBinAddr: 0x278180, symSize: 0x40 } + - { offset: 0x33A801, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0xE6C, symBinAddr: 0x277A18, symSize: 0x28 } + - { offset: 0x33A81D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0xE94, symBinAddr: 0x277A40, symSize: 0x28 } + - { offset: 0x33A8D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV8getImage10completionyySo7UIImageCc_tFyAGSgcfU_', symObjAddr: 0x5C4, symBinAddr: 0x27723C, symSize: 0x40 } + - { offset: 0x33A921, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLO11stringValueSSvg', symObjAddr: 0x604, symBinAddr: 0x27727C, symSize: 0x108 } + - { offset: 0x33A944, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0x70C, symBinAddr: 0x277384, symSize: 0x26C } + - { offset: 0x33A97B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV4fromACs7Decoder_p_tKcfC', symObjAddr: 0x978, symBinAddr: 0x2775F0, symSize: 0x3F0 } + - { offset: 0x33A9AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0xE28, symBinAddr: 0x2779E0, symSize: 0x8 } + - { offset: 0x33A9CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0xE30, symBinAddr: 0x2779E8, symSize: 0x24 } + - { offset: 0x33A9F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0xE60, symBinAddr: 0x277A0C, symSize: 0xC } + - { offset: 0x33AA0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xEBC, symBinAddr: 0x277A68, symSize: 0x14 } + - { offset: 0x33AA21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xED0, symBinAddr: 0x277A7C, symSize: 0x14 } + - { offset: 0x33AAE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV6decode4fromSayACGSg10Foundation4DataVSg_tFZTf4nd_n', symObjAddr: 0xFE8, symBinAddr: 0x277AD0, symSize: 0x544 } + - { offset: 0x33AC06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x19E0, symBinAddr: 0x2781C0, symSize: 0x2E4 } + - { offset: 0x33B178, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC6colorsAA14ColorsResponseVSgvpZ', symObjAddr: 0x94E0, symBinAddr: 0x397370, symSize: 0x0 } + - { offset: 0x33B1D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC20panelBackgroundColorSo7UIColorCvpZ', symObjAddr: 0x94F8, symBinAddr: 0x397388, symSize: 0x0 } + - { offset: 0x33B1ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC29secondaryPanelBackgroundColorSo7UIColorCvpZ', symObjAddr: 0x9500, symBinAddr: 0x397390, symSize: 0x0 } + - { offset: 0x33B207, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC10labelColorSo7UIColorCvpZ', symObjAddr: 0x9508, symBinAddr: 0x397398, symSize: 0x0 } + - { offset: 0x33B221, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC19secondaryLabelColorSo7UIColorCvpZ', symObjAddr: 0x9510, symBinAddr: 0x3973A0, symSize: 0x0 } + - { offset: 0x33B23B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC27borderColorOnGrayBackgroundSo7UIColorCvpZ', symObjAddr: 0x9518, symBinAddr: 0x3973A8, symSize: 0x0 } + - { offset: 0x33B255, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC28borderColorOnWhiteBackgroundSo7UIColorCvpZ', symObjAddr: 0x9520, symBinAddr: 0x3973B0, symSize: 0x0 } + - { offset: 0x33B26F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC11buttonColorSo7UIColorCvpZ', symObjAddr: 0x9528, symBinAddr: 0x3973B8, symSize: 0x0 } + - { offset: 0x33B289, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC22locationIndicatorColorSo7UIColorCvpZ', symObjAddr: 0x9530, symBinAddr: 0x3973C0, symSize: 0x0 } + - { offset: 0x33B2A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC19accuracyCircleColorSo7UIColorCvpZ', symObjAddr: 0x9538, symBinAddr: 0x3973C8, symSize: 0x0 } + - { offset: 0x33B2BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC14routeLineColorSo7UIColorCvpZ', symObjAddr: 0x9540, symBinAddr: 0x3973D0, symSize: 0x0 } + - { offset: 0x33B2D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC20routeLineCasingColorSo7UIColorCvpZ', symObjAddr: 0x9548, symBinAddr: 0x3973D8, symSize: 0x0 } + - { offset: 0x33B2F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC18openingStatusColorSo7UIColorCvpZ', symObjAddr: 0x9550, symBinAddr: 0x3973E0, symSize: 0x0 } + - { offset: 0x33B30B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC18closureStatusColorSo7UIColorCvpZ', symObjAddr: 0x9558, symBinAddr: 0x3973E8, symSize: 0x0 } + - { offset: 0x33B325, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC23panelGrabberHandleColorSo7UIColorCvpZ', symObjAddr: 0x9560, symBinAddr: 0x3973F0, symSize: 0x0 } + - { offset: 0x33B33F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC16closeButtonColorSo7UIColorCvpZ', symObjAddr: 0x9568, symBinAddr: 0x3973F8, symSize: 0x0 } + - { offset: 0x33B359, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC16placeholderColorSo7UIColorCvpZ', symObjAddr: 0x9570, symBinAddr: 0x397400, symSize: 0x0 } + - { offset: 0x33B373, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC14selectionColorSo7UIColorCvpZ', symObjAddr: 0x9578, symBinAddr: 0x397408, symSize: 0x0 } + - { offset: 0x33B381, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC14selectionColor_WZ', symObjAddr: 0x224, symBinAddr: 0x2786C8, symSize: 0x48 } + - { offset: 0x33B57A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeCMa', symObjAddr: 0x27C, symBinAddr: 0x278710, symSize: 0x20 } + - { offset: 0x33B6C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC020floorExtrudedPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0x2E0, symBinAddr: 0x278730, symSize: 0x12C } + - { offset: 0x33B7FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC012venuePolygonD0AA14ColorsResponseV0fD0VvgZTf4d_n', symObjAddr: 0x40C, symBinAddr: 0x27885C, symSize: 0x128 } + - { offset: 0x33B92F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC012venue3dModelD0AA14ColorsResponseV07PolygonD0VvgZTf4d_n', symObjAddr: 0x540, symBinAddr: 0x278990, symSize: 0x144 } + - { offset: 0x33BA64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC020venueExtrudedPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0x684, symBinAddr: 0x278AD4, symSize: 0x144 } + - { offset: 0x33BB99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC016indoorPoiPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0x7C8, symBinAddr: 0x278C18, symSize: 0x138 } + - { offset: 0x33BCCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC017outdoorPoiPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0x900, symBinAddr: 0x278D50, symSize: 0x138 } + - { offset: 0x33BE51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC010getPolygonD03forSS9fillColor_Sd0H7OpacitySS06borderI0Sd0kJ0t7Penguin03PoiF0V_tFZTf4nd_n', symObjAddr: 0xA38, symBinAddr: 0x278E88, symSize: 0x2BC } + - { offset: 0x33C04F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC010poi3dModelD0AA14ColorsResponseV07PolygonD0VvgZTf4d_n', symObjAddr: 0xCF4, symBinAddr: 0x279144, symSize: 0x13C } + - { offset: 0x33C184, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC018poiExtrudedPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0xE30, symBinAddr: 0x279280, symSize: 0x144 } + - { offset: 0x33C2B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC13campusPolygonAA14ColorsResponseV0fD0VvgZTf4d_n', symObjAddr: 0xFA8, symBinAddr: 0x2793C4, symSize: 0x128 } + - { offset: 0x33C779, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC14sharedInstance33_1714430FC00978376F0CBFC2182C8579LLACSgvpZ', symObjAddr: 0x3340, symBinAddr: 0x381CF8, symSize: 0x0 } + - { offset: 0x33CA34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC22startMonitoringRegions20forceLocationUpdatesySb_tF', symObjAddr: 0x64, symBinAddr: 0x279700, symSize: 0x30C } + - { offset: 0x33CCED, size: 0x8, addend: 0x0, symName: '_$sSbs5Error_pSgIeghyg_SbSo7NSErrorCSgIeyBhyy_TR', symObjAddr: 0x370, symBinAddr: 0x279A0C, symSize: 0x64 } + - { offset: 0x33CD3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCMa', symObjAddr: 0x544, symBinAddr: 0x279BA4, symSize: 0x20 } + - { offset: 0x33CD91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC9sendError5errorySSSg_tF', symObjAddr: 0x93C, symBinAddr: 0x279F9C, symSize: 0x230 } + - { offset: 0x33CDF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC9sendError5errorySSSg_tFyyScMYccfU_', symObjAddr: 0x2810, symBinAddr: 0x27BDE8, symSize: 0xD4 } + - { offset: 0x33CE53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC20startGeofenceProcess33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0xB6C, symBinAddr: 0x27A1CC, symSize: 0x2B0 } + - { offset: 0x33CF34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC20startGeofenceProcess33_1714430FC00978376F0CBFC2182C8579LLyyFySSSg_7Penguin9ErrorCodeOSgtcfU_', symObjAddr: 0x19A8, symBinAddr: 0x27AF80, symSize: 0x94 } + - { offset: 0x33CFC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC21stopMonitoringRegions33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0x1060, symBinAddr: 0x27A6C0, symSize: 0x240 } + - { offset: 0x33D125, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVWOc', symObjAddr: 0x1668, symBinAddr: 0x27ACC8, symSize: 0x3C } + - { offset: 0x33D139, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25PIGeofenceManagerDelegate_pSgWOd', symObjAddr: 0x172C, symBinAddr: 0x27AD04, symSize: 0x48 } + - { offset: 0x33D14D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCfETo', symObjAddr: 0x18D0, symBinAddr: 0x27AEA8, symSize: 0x7C } + - { offset: 0x33D17C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_22didChangeAuthorizationySo010CLLocationE0C_So21CLAuthorizationStatusVtF', symObjAddr: 0x194C, symBinAddr: 0x27AF24, symSize: 0x8 } + - { offset: 0x33D19F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_22didChangeAuthorizationySo010CLLocationE0C_So21CLAuthorizationStatusVtFTo', symObjAddr: 0x1954, symBinAddr: 0x27AF2C, symSize: 0x54 } + - { offset: 0x33D1DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC11handleError5errory7Penguin0G4CodeO_tF', symObjAddr: 0x1A3C, symBinAddr: 0x27B014, symSize: 0x74 } + - { offset: 0x33D284, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC21loadCampusInformation33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0x1AB0, symBinAddr: 0x27B088, symSize: 0x304 } + - { offset: 0x33D30C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC21loadCampusInformation33_1714430FC00978376F0CBFC2182C8579LLyyFySay7Penguin0G0CGSgcfU_', symObjAddr: 0x1DB4, symBinAddr: 0x27B38C, symSize: 0x284 } + - { offset: 0x33D3AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC18loadRemoteSettings33_1714430FC00978376F0CBFC2182C8579LLyyFy7Penguin9ErrorCodeOSgcfU_', symObjAddr: 0x2038, symBinAddr: 0x27B610, symSize: 0x170 } + - { offset: 0x33D430, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC12loadGeofence33_1714430FC00978376F0CBFC2182C8579LLyyFySay7Penguin0G6RegionVG_So7NSErrorCSgtcfU_', symObjAddr: 0x21A8, symBinAddr: 0x27B780, symSize: 0xF4 } + - { offset: 0x33D4F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC24registerRegionMonitoring33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0x229C, symBinAddr: 0x27B874, symSize: 0x38C } + - { offset: 0x33D66B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC24registerRegionMonitoring33_1714430FC00978376F0CBFC2182C8579LLyyFyyScMYccfU_', symObjAddr: 0x2628, symBinAddr: 0x27BC00, symSize: 0x1E8 } + - { offset: 0x33D716, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_14didEnterRegionySo010CLLocationE0C_So8CLRegionCtF', symObjAddr: 0x28E4, symBinAddr: 0x27BEBC, symSize: 0x8 } + - { offset: 0x33D739, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_14didEnterRegionySo010CLLocationE0C_So8CLRegionCtFTo', symObjAddr: 0x28EC, symBinAddr: 0x27BEC4, symSize: 0x68 } + - { offset: 0x33D76C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC14stopGeofencingyyFyyScMYccfU_TA', symObjAddr: 0x2978, symBinAddr: 0x27BF50, symSize: 0x8 } + - { offset: 0x33D780, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2980, symBinAddr: 0x27BF58, symSize: 0x10 } + - { offset: 0x33D794, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2990, symBinAddr: 0x27BF68, symSize: 0x8 } + - { offset: 0x33D7A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC12loadGeofence33_1714430FC00978376F0CBFC2182C8579LLyyFySay7Penguin0G6RegionVG_So7NSErrorCSgtcfU_TA', symObjAddr: 0x2A50, symBinAddr: 0x27BF94, symSize: 0x8 } + - { offset: 0x33D7BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_22didChangeAuthorizationySo010CLLocationE0C_So21CLAuthorizationStatusVtFTf4dnn_n', symObjAddr: 0x2A58, symBinAddr: 0x27BF9C, symSize: 0xB8 } + - { offset: 0x33D880, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_14didEnterRegionySo010CLLocationE0C_So8CLRegionCtFTf4dnd_n', symObjAddr: 0x2B10, symBinAddr: 0x27C054, symSize: 0x1EC } + - { offset: 0x33D96E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorO10Foundation09LocalizedE0AAs0E0PWb', symObjAddr: 0x2CFC, symBinAddr: 0x27C240, symSize: 0x4 } + - { offset: 0x33D982, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOACs0E0AAWl', symObjAddr: 0x2D00, symBinAddr: 0x27C244, symSize: 0x40 } + - { offset: 0x33D996, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwxx', symObjAddr: 0x2D44, symBinAddr: 0x27C288, symSize: 0x18 } + - { offset: 0x33D9AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwca', symObjAddr: 0x2DA8, symBinAddr: 0x27C2EC, symSize: 0xA0 } + - { offset: 0x33D9BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwta', symObjAddr: 0x2E54, symBinAddr: 0x27C38C, symSize: 0x78 } + - { offset: 0x33D9D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwet', symObjAddr: 0x2ECC, symBinAddr: 0x27C404, symSize: 0x5C } + - { offset: 0x33D9E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwst', symObjAddr: 0x2F28, symBinAddr: 0x27C460, symSize: 0x50 } + - { offset: 0x33D9FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwug', symObjAddr: 0x2F78, symBinAddr: 0x27C4B0, symSize: 0x18 } + - { offset: 0x33DA0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwui', symObjAddr: 0x2F94, symBinAddr: 0x27C4C8, symSize: 0x20 } + - { offset: 0x33DA22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOMa', symObjAddr: 0x2FB4, symBinAddr: 0x27C4E8, symSize: 0x10 } + - { offset: 0x33DA36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVSgWOe', symObjAddr: 0x3098, symBinAddr: 0x27C554, symSize: 0x50 } + - { offset: 0x33DA4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC24registerRegionMonitoring33_1714430FC00978376F0CBFC2182C8579LLyyFyyScMYccfU_TA', symObjAddr: 0x30E8, symBinAddr: 0x27C5A4, symSize: 0x8 } + - { offset: 0x33DA5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC20startGeofenceProcess33_1714430FC00978376F0CBFC2182C8579LLyyFySSSg_7Penguin9ErrorCodeOSgtcfU_TA', symObjAddr: 0x31D0, symBinAddr: 0x27C5AC, symSize: 0xC } + - { offset: 0x33DA72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC21loadCampusInformation33_1714430FC00978376F0CBFC2182C8579LLyyFySay7Penguin0G0CGSgcfU_TA', symObjAddr: 0x31DC, symBinAddr: 0x27C5B8, symSize: 0x8 } + - { offset: 0x33DA86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC18loadRemoteSettings33_1714430FC00978376F0CBFC2182C8579LLyyFy7Penguin9ErrorCodeOSgcfU_TA', symObjAddr: 0x3228, symBinAddr: 0x27C5C0, symSize: 0xC } + - { offset: 0x33DA9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC9sendError5errorySSSg_tFyyScMYccfU_TA', symObjAddr: 0x3260, symBinAddr: 0x27C5F8, symSize: 0xC } + - { offset: 0x33DCD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC6sharedACvgZ', symObjAddr: 0x0, symBinAddr: 0x27969C, symSize: 0x64 } + - { offset: 0x33DE94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvg', symObjAddr: 0x3D4, symBinAddr: 0x279A70, symSize: 0x130 } + - { offset: 0x33DF39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorO10Foundation09LocalizedE0AadEP16errorDescriptionSSSgvgTW', symObjAddr: 0x514, symBinAddr: 0x279BA0, symSize: 0x4 } + - { offset: 0x33E001, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC018initializeLocationE0yyF', symObjAddr: 0x564, symBinAddr: 0x279BC4, symSize: 0x10C } + - { offset: 0x33E185, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC28setGeofenceSDKConfigurationsyyAA0G13ConfigurationVF', symObjAddr: 0x670, symBinAddr: 0x279CD0, symSize: 0xC0 } + - { offset: 0x33E1F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC19setGeofenceDelegate8delegateyAA0deH0_p_tF', symObjAddr: 0x730, symBinAddr: 0x279D90, symSize: 0x58 } + - { offset: 0x33E2D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC15startGeofencing8delegateyAA0dE8Delegate_p_tF', symObjAddr: 0x788, symBinAddr: 0x279DE8, symSize: 0x1B4 } + - { offset: 0x33E561, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC14stopGeofencingyyF', symObjAddr: 0xE1C, symBinAddr: 0x27A47C, symSize: 0x244 } + - { offset: 0x33E5F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC14stopGeofencingyyFyyScMYccfU_', symObjAddr: 0x12A0, symBinAddr: 0x27A900, symSize: 0xC0 } + - { offset: 0x33E67C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC16updateGeofencingyyF', symObjAddr: 0x1360, symBinAddr: 0x27A9C0, symSize: 0x118 } + - { offset: 0x33E762, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC30enableBackgroundLocationUpdate33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0x1478, symBinAddr: 0x27AAD8, symSize: 0x1F0 } + - { offset: 0x33E7F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCACycfc', symObjAddr: 0x1774, symBinAddr: 0x27AD4C, symSize: 0x90 } + - { offset: 0x33E82B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCACycfcTo', symObjAddr: 0x1804, symBinAddr: 0x27ADDC, symSize: 0x9C } + - { offset: 0x33E860, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCfD', symObjAddr: 0x18A0, symBinAddr: 0x27AE78, symSize: 0x30 } + - { offset: 0x33ECF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC9imageViewSo07UIImageG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x27C628, symSize: 0x10 } + - { offset: 0x33F19D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCfE', symObjAddr: 0x16C4, symBinAddr: 0x27DCEC, symSize: 0xB8 } + - { offset: 0x33F1CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCfETo', symObjAddr: 0x17AC, symBinAddr: 0x27DDD4, symSize: 0xC4 } + - { offset: 0x33F1F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCMa', symObjAddr: 0x1870, symBinAddr: 0x27DE98, symSize: 0x20 } + - { offset: 0x33F20D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC14layoutForPanelAA08FloatingH6Layout_pyFTo', symObjAddr: 0x1968, symBinAddr: 0x27DEB8, symSize: 0x34 } + - { offset: 0x33F23A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC16behaviorForPanelAA08FloatingH8Behavior_pyFTo', symObjAddr: 0x199C, symBinAddr: 0x27DEEC, symSize: 0x24 } + - { offset: 0x33F2B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC10setupPanelyyF', symObjAddr: 0x19C0, symBinAddr: 0x27DF10, symSize: 0x228 } + - { offset: 0x33F4FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC10setupPanelyyFTo', symObjAddr: 0x1BE8, symBinAddr: 0x27E138, symSize: 0x28 } + - { offset: 0x33F529, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTW', symObjAddr: 0x1C10, symBinAddr: 0x27E160, symSize: 0x4 } + - { offset: 0x33F549, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTW', symObjAddr: 0x1C10, symBinAddr: 0x27E160, symSize: 0x4 } + - { offset: 0x33F55B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC23onToastVisibilityChange7visible9toastTypeySb_AA0gL0OSgtFTf4ddn_n', symObjAddr: 0x1C14, symBinAddr: 0x27E164, symSize: 0x1C0 } + - { offset: 0x33F740, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC14startCountdownyyFySo7NSTimerCYbcfU_TA', symObjAddr: 0x1E4C, symBinAddr: 0x27E348, symSize: 0x8 } + - { offset: 0x33F754, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1E54, symBinAddr: 0x27E350, symSize: 0x10 } + - { offset: 0x33F768, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1E64, symBinAddr: 0x27E360, symSize: 0x8 } + - { offset: 0x33F77C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC12setupButtonsyyFyycfU0_TA', symObjAddr: 0x1EB8, symBinAddr: 0x27E3A4, symSize: 0xC } + - { offset: 0x33FB36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC9imageViewSo07UIImageG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x27C628, symSize: 0x10 } + - { offset: 0x33FB4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC9imageViewSo07UIImageG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x27C628, symSize: 0x10 } + - { offset: 0x33FB94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC9imageViewSo07UIImageG0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x27C638, symSize: 0x34 } + - { offset: 0x33FBE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x27C66C, symSize: 0x10 } + - { offset: 0x33FBFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x27C66C, symSize: 0x10 } + - { offset: 0x33FC3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x27C67C, symSize: 0x34 } + - { offset: 0x33FC8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC13subtitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x27C6B0, symSize: 0x10 } + - { offset: 0x33FCA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC13subtitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x27C6B0, symSize: 0x10 } + - { offset: 0x33FCDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC13subtitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x27C6C0, symSize: 0x34 } + - { offset: 0x33FD2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC16buttonsStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x27C6F4, symSize: 0x10 } + - { offset: 0x33FD44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC16buttonsStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x27C6F4, symSize: 0x10 } + - { offset: 0x33FD84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC16buttonsStackViewSo07UIStackH0CSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x27C704, symSize: 0x34 } + - { offset: 0x33FE0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC11viewDidLoadyyF', symObjAddr: 0x110, symBinAddr: 0x27C738, symSize: 0x1E4 } + - { offset: 0x33FF5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC11viewDidLoadyyFTo', symObjAddr: 0x2F4, symBinAddr: 0x27C91C, symSize: 0x28 } + - { offset: 0x33FF70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC12setupButtonsyyF', symObjAddr: 0x31C, symBinAddr: 0x27C944, symSize: 0xC94 } + - { offset: 0x3405A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC12setupButtonsyyFyycfU0_', symObjAddr: 0xFB0, symBinAddr: 0x27D5D8, symSize: 0xDC } + - { offset: 0x3407A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC11setSubtitle4text5style5colorySSSg_AA9FontStyleOSgSo7UIColorCSgtF', symObjAddr: 0x108C, symBinAddr: 0x27D6B4, symSize: 0x17C } + - { offset: 0x3408B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC14startCountdownyyF', symObjAddr: 0x1208, symBinAddr: 0x27D830, symSize: 0xEC } + - { offset: 0x340901, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC14startCountdownyyFySo7NSTimerCYbcfU_', symObjAddr: 0x12F4, symBinAddr: 0x27D91C, symSize: 0xF8 } + - { offset: 0x340A1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x13EC, symBinAddr: 0x27DA14, symSize: 0x134 } + - { offset: 0x340A5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x1520, symBinAddr: 0x27DB48, symSize: 0x60 } + - { offset: 0x340A6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1580, symBinAddr: 0x27DBA8, symSize: 0x11C } + - { offset: 0x340AA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x169C, symBinAddr: 0x27DCC4, symSize: 0x28 } + - { offset: 0x340AB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCfD', symObjAddr: 0x177C, symBinAddr: 0x27DDA4, symSize: 0x30 } + - { offset: 0x3417C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6render7fileURL4size7options3api9precisionSS10Foundation0H0V_Si5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ', symObjAddr: 0x4DC0, symBinAddr: 0x283170, symSize: 0x18 } + - { offset: 0x341956, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC21logUnsupportedFiltersyySayAA3DOMO6FilterC6EffectOGFAA14CGTextProviderV_Tg5', symObjAddr: 0x4E4C, symBinAddr: 0x2831FC, symSize: 0x254 } + - { offset: 0x341C17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC21logUnsupportedFiltersyySayAA3DOMO6FilterC6EffectOGFAA10CGProviderV_Tg5', symObjAddr: 0x50A0, symBinAddr: 0x283450, symSize: 0x254 } + - { offset: 0x3429B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC18logUnsupportedMaskyyFAA14CGTextProviderV_Tg5', symObjAddr: 0x685C, symBinAddr: 0x284C0C, symSize: 0xC4 } + - { offset: 0x342A53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC18logUnsupportedMaskyyFAA10CGProviderV_Tg5', symObjAddr: 0x6920, symBinAddr: 0x284CD0, symSize: 0xC4 } + - { offset: 0x342AEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC22logUnsupportedGradientyyFAA14CGTextProviderV_Tg5', symObjAddr: 0x69E4, symBinAddr: 0x284D94, symSize: 0xC4 } + - { offset: 0x342B8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC22logUnsupportedGradientyyFAA10CGProviderV_Tg5', symObjAddr: 0x6AA8, symBinAddr: 0x284E58, symSize: 0xC4 } + - { offset: 0x342C3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6render5named2in4size7options3api9precisionS2S_So8NSBundleCSi5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ', symObjAddr: 0x6B6C, symBinAddr: 0x284F1C, symSize: 0x1D0 } + - { offset: 0x342F53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6render4data7options3api9precisionSS10Foundation4DataV_AA3SVGC7OptionsVAC3APIOSitKFZ', symObjAddr: 0x6D3C, symBinAddr: 0x2850EC, symSize: 0x408 } + - { offset: 0x3434BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4fromS2S_tKFZ', symObjAddr: 0x7144, symBinAddr: 0x2854F4, symSize: 0x250 } + - { offset: 0x3436F9, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x73DC, symBinAddr: 0x285744, symSize: 0x98 } + - { offset: 0x343788, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSS_SSTg5', symObjAddr: 0x7474, symBinAddr: 0x2857DC, symSize: 0x50 } + - { offset: 0x34382D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x74C4, symBinAddr: 0x28582C, symSize: 0x98 } + - { offset: 0x3438C7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSi_8PenNavUI5ColorVTg5', symObjAddr: 0x755C, symBinAddr: 0x2858C4, symSize: 0x4C } + - { offset: 0x343961, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSS_ypTg5', symObjAddr: 0x75A8, symBinAddr: 0x285910, symSize: 0x68 } + - { offset: 0x3439FB, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x7610, symBinAddr: 0x285978, symSize: 0x48 } + - { offset: 0x343A95, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0x7658, symBinAddr: 0x2859C0, symSize: 0x48 } + - { offset: 0x343B33, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x76A0, symBinAddr: 0x285A08, symSize: 0x44 } + - { offset: 0x343BD1, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF8PenNavUI9LayerTreeO8GradientV_SSTg5', symObjAddr: 0x76E4, symBinAddr: 0x285A4C, symSize: 0x48 } + - { offset: 0x344330, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6render7fileURL4size7options3api9precisionSS10Foundation0H0V_Si5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZTf4nnnnnd_n', symObjAddr: 0xE188, symBinAddr: 0x28C4F0, symSize: 0x668 } + - { offset: 0x3447E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC5Error33_6F9262CB821AA9E5A3E1381913BD0F9CLLVAFsAdAWl', symObjAddr: 0xE7F0, symBinAddr: 0x28CB58, symSize: 0x40 } + - { offset: 0x3447F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC5Error33_6F9262CB821AA9E5A3E1381913BD0F9CLLVMa', symObjAddr: 0xEA0C, symBinAddr: 0x28CB98, symSize: 0x10 } + - { offset: 0x34480D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC5Error33_6F9262CB821AA9E5A3E1381913BD0F9CLLV10Foundation09LocalizedF0AAsADPWb', symObjAddr: 0xEA1C, symBinAddr: 0x28CBA8, symSize: 0x4 } + - { offset: 0x344821, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA11CGTextTypesVGSgWOe', symObjAddr: 0xEA30, symBinAddr: 0x28CBAC, symSize: 0x14 } + - { offset: 0x344835, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA11CGTextTypesVGWOe', symObjAddr: 0xEA44, symBinAddr: 0x28CBC0, symSize: 0x94 } + - { offset: 0x344B33, size: 0x8, addend: 0x0, symName: '_$sSlsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lFSay8PenNavUI9LayerTreeO8GradientV4StopVG_ALs5NeverOTg5', symObjAddr: 0x4C70, symBinAddr: 0x283020, symSize: 0x150 } + - { offset: 0x344CE4, size: 0x8, addend: 0x0, symName: '_$sSTsE10allSatisfyyS2b7ElementQzKXEKFSay8PenNavUI9LayerTreeO8GradientV4StopVG_Tg503$s8de3UI9gh2O8i19V8isOpaqueSbvgSbAE4J52Vcfu_33_67bbb279b13e8c472f24efacf0d06563AHSbTf3npk_nTf1cn_n', symObjAddr: 0x4DD8, symBinAddr: 0x283188, symSize: 0x74 } + - { offset: 0x34512F, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC10Foundation3URLV_So20NSURLSessionDataTaskCTt0g5Tf4g_n', symObjAddr: 0xCB6C, symBinAddr: 0x28AED4, symSize: 0x170 } + - { offset: 0x345260, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_SSTt0g5Tf4g_n', symObjAddr: 0xCCDC, symBinAddr: 0x28B044, symSize: 0x108 } + - { offset: 0x3453A1, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTt0g5Tf4g_n', symObjAddr: 0xCDE4, symBinAddr: 0x28B14C, symSize: 0x168 } + - { offset: 0x3454E2, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSi_8PenNavUI5ColorVTt0g5Tf4g_n', symObjAddr: 0xCF4C, symBinAddr: 0x28B2B4, symSize: 0x130 } + - { offset: 0x34561F, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI18FloatingPanelStateC_AC0fG15LayoutAnchoring_pTt0g5Tf4g_n', symObjAddr: 0xD07C, symBinAddr: 0x28B3E4, symSize: 0xEC } + - { offset: 0x345766, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI18FloatingPanelStateC_SaySo18NSLayoutConstraintCGTt0g5Tf4g_n', symObjAddr: 0xD168, symBinAddr: 0x28B4D0, symSize: 0xEC } + - { offset: 0x3458AD, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_SbTt0g5Tf4g_n', symObjAddr: 0xD254, symBinAddr: 0x28B5BC, symSize: 0xF0 } + - { offset: 0x3459EE, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_ypTt0g5Tf4g_n', symObjAddr: 0xD344, symBinAddr: 0x28B6AC, symSize: 0x118 } + - { offset: 0x345B2B, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI9FontStyleO_So6UIFontCTt0g5Tf4g_n', symObjAddr: 0xD478, symBinAddr: 0x28B7E0, symSize: 0xE8 } + - { offset: 0x345C6C, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI13AppFontWeightO_SSTt0g5Tf4g_n', symObjAddr: 0xD560, symBinAddr: 0x28B8C8, symSize: 0xEC } + - { offset: 0x345DB3, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI8MenuItemV0fG9AttributeO_SbTt0g5Tf4g_n', symObjAddr: 0xD64C, symBinAddr: 0x28B9B4, symSize: 0xD4 } + - { offset: 0x345EFA, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSo21NSAttributedStringKeya_So6UIFontCTt0g5Tf4g_n', symObjAddr: 0xD720, symBinAddr: 0x28BA88, symSize: 0xF0 } + - { offset: 0x346041, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_SSSgTt0g5Tf4g_n', symObjAddr: 0xD810, symBinAddr: 0x28BB78, symSize: 0x108 } + - { offset: 0x346182, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI9LayerTreeO8GradientV_SSTt0g5Tf4g_n', symObjAddr: 0xD918, symBinAddr: 0x28BC80, symSize: 0x124 } + - { offset: 0x3462BF, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGTt0g5Tf4g_n', symObjAddr: 0xDA3C, symBinAddr: 0x28BDA4, symSize: 0x118 } + - { offset: 0x3463F6, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI3DOMO10StyleSheetV8SelectorO_AE22PresentationAttributesVTt0g5Tf4g_n', symObjAddr: 0xDB54, symBinAddr: 0x28BEBC, symSize: 0x18C } + - { offset: 0x346533, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSo11CFStringRefa_So06CTFontD0aTt0g5Tf4g_n', symObjAddr: 0xDCE0, symBinAddr: 0x28C048, symSize: 0xF0 } + - { offset: 0x34667A, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_SdTt0g5Tf4g_n', symObjAddr: 0xDDD0, symBinAddr: 0x28C138, symSize: 0xF8 } + - { offset: 0x346918, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC7optionsAEy_xGAA0G7OptionsV_tcfcAA11CGTextTypesV_Tg5', symObjAddr: 0x0, symBinAddr: 0x27E3B0, symSize: 0x58 } + - { offset: 0x34695B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC7optionsAEy_xGAA0G7OptionsV_tcfcAA7CGTypesV_Tg5', symObjAddr: 0x58, symBinAddr: 0x27E408, symSize: 0x6C } + - { offset: 0x346AC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC011filterStateF03forAA08RendererF0OyxGSgAJ_tFAA11CGTextTypesV_Tg5', symObjAddr: 0xC4, symBinAddr: 0x27E474, symSize: 0x1F8C } + - { offset: 0x347F14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC011filterStateF03forAA08RendererF0OyxGSgAJ_tFAA7CGTypesV_Tg5', symObjAddr: 0x2050, symBinAddr: 0x280400, symSize: 0x1D78 } + - { offset: 0x34925A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackV3topxvsAA9LayerTreeO16CommandOptimizerC5StateVy_AA11CGTextTypesV_G_Tg5', symObjAddr: 0x3DC8, symBinAddr: 0x282178, symSize: 0x1AC } + - { offset: 0x3494B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackV3topxvsAA9LayerTreeO16CommandOptimizerC5StateVy_AA7CGTypesV_G_Tg5', symObjAddr: 0x3F74, symBinAddr: 0x282324, symSize: 0x1A4 } + - { offset: 0x34970A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackV3popSbyFAA9LayerTreeO16CommandOptimizerC5StateVy_AA11CGTextTypesV_G_Tg5', symObjAddr: 0x4118, symBinAddr: 0x2824C8, symSize: 0xF8 } + - { offset: 0x349863, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC16optimizeCommandsySayAA08RendererF0OyxGGAJFAA11CGTextTypesV_Tg5', symObjAddr: 0x4210, symBinAddr: 0x2825C0, symSize: 0x44C } + - { offset: 0x349CC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC16optimizeCommandsySayAA08RendererF0OyxGGAJFAA7CGTypesV_Tg5', symObjAddr: 0x465C, symBinAddr: 0x282A0C, symSize: 0x614 } + - { offset: 0x34A39D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands7forMaskSayAA08RendererF0Oy5TypesQzGGAC0D0CSg_tFAA14CGTextProviderV_Tg5', symObjAddr: 0x52F4, symBinAddr: 0x2836A4, symSize: 0x5A8 } + - { offset: 0x34B013, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands7forMaskSayAA08RendererF0Oy5TypesQzGGAC0D0CSg_tFAA10CGProviderV_Tg5', symObjAddr: 0x589C, symBinAddr: 0x283C4C, symSize: 0xA78 } + - { offset: 0x34C160, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands9forRadial2in7opacity14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0K8GradientV_AC4RectVSfAA05ColorO0_ptFAA14CGTextProviderV_Tg5', symObjAddr: 0x6314, symBinAddr: 0x2846C4, symSize: 0x548 } + - { offset: 0x34CF3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA14CGTextProviderV_Tg5Tf4nnnen_nAA09LuminanceuN0V_Tg5', symObjAddr: 0x772C, symBinAddr: 0x285A94, symSize: 0x241C } + - { offset: 0x34FC9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA14CGTextProviderV_Tg5Tf4nnnen_nAA07DefaultuN0V_Tg5', symObjAddr: 0x9B48, symBinAddr: 0x287EB0, symSize: 0x241C } + - { offset: 0x352A94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands7forClip5usingSayAA08RendererF0Oy5TypesQzGGSayAC5ShapeOG_AA3DOMO8FillRuleOSgtFAA14CGTextProviderV_Tg5Tf4nnd_n', symObjAddr: 0xDFF0, symBinAddr: 0x28C358, symSize: 0x198 } + - { offset: 0x352E4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands7forClip5usingSayAA08RendererF0Oy5TypesQzGGSayAC5ShapeOG_AA3DOMO8FillRuleOSgtFAA10CGProviderV_Tg5Tf4nnd_n', symObjAddr: 0xEEBC, symBinAddr: 0x28CC54, symSize: 0x238 } + - { offset: 0x3534E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC05sharedE6ButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x28CE8C, symSize: 0x20 } + - { offset: 0x3538A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellCfETo', symObjAddr: 0x81C, symBinAddr: 0x28D6A8, symSize: 0x8C } + - { offset: 0x3538D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellCMa', symObjAddr: 0x8A8, symBinAddr: 0x28D734, symSize: 0x20 } + - { offset: 0x3538EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC06showMyE0yycSgvWyycfU_TA', symObjAddr: 0x8FC, symBinAddr: 0x28D778, symSize: 0x8 } + - { offset: 0x353A6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC05sharedE6ButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x28CE8C, symSize: 0x20 } + - { offset: 0x353ACA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC05sharedE6ButtonSo8UIButtonCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x28CEAC, symSize: 0x14 } + - { offset: 0x353B1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC19markAsParkingButtonSo8UIButtonCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x28CEC0, symSize: 0x20 } + - { offset: 0x353B70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC19markAsParkingButtonSo8UIButtonCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x28CEE0, symSize: 0x14 } + - { offset: 0x353BC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC17reportIssueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x28CEF4, symSize: 0x20 } + - { offset: 0x353C16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC17reportIssueButtonSo8UIButtonCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x28CF14, symSize: 0x14 } + - { offset: 0x353C67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE4ViewAA06HapticH0CSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x28CF28, symSize: 0x20 } + - { offset: 0x353CC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE4ViewAA06HapticH0CSgvsTo', symObjAddr: 0xBC, symBinAddr: 0x28CF48, symSize: 0x14 } + - { offset: 0x353D12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE5LabelSo7UILabelCSgvgTo', symObjAddr: 0xD0, symBinAddr: 0x28CF5C, symSize: 0x20 } + - { offset: 0x353D6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE5LabelSo7UILabelCSgvsTo', symObjAddr: 0xF0, symBinAddr: 0x28CF7C, symSize: 0x14 } + - { offset: 0x353DBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE10FloorLabelSo7UILabelCSgvgTo', symObjAddr: 0x104, symBinAddr: 0x28CF90, symSize: 0x20 } + - { offset: 0x353E12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE10FloorLabelSo7UILabelCSgvsTo', symObjAddr: 0x124, symBinAddr: 0x28CFB0, symSize: 0x14 } + - { offset: 0x353E6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC06showMyE0yycSgvWyycfU_', symObjAddr: 0x138, symBinAddr: 0x28CFC4, symSize: 0x88 } + - { offset: 0x353EF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC06showMyE0yycSgvs', symObjAddr: 0x1C0, symBinAddr: 0x28D04C, symSize: 0xC0 } + - { offset: 0x353FAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC12awakeFromNibyyFTo', symObjAddr: 0x280, symBinAddr: 0x28D10C, symSize: 0x68 } + - { offset: 0x354021, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0x2E8, symBinAddr: 0x28D174, symSize: 0x54 } + - { offset: 0x354064, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC7setData04userE06campusy7Penguin10PILocationCSg_AG5VenueCSgtF', symObjAddr: 0x33C, symBinAddr: 0x28D1C8, symSize: 0x240 } + - { offset: 0x35414B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x57C, symBinAddr: 0x28D408, symSize: 0x110 } + - { offset: 0x35418C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x68C, symBinAddr: 0x28D518, symSize: 0x48 } + - { offset: 0x3541C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x6D4, symBinAddr: 0x28D560, symSize: 0xF0 } + - { offset: 0x3541F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x7C4, symBinAddr: 0x28D650, symSize: 0x28 } + - { offset: 0x35420B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellCfD', symObjAddr: 0x7EC, symBinAddr: 0x28D678, symSize: 0x30 } + - { offset: 0x3545C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x0, symBinAddr: 0x28D780, symSize: 0x68 } + - { offset: 0x354810, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCfETo', symObjAddr: 0x2AC, symBinAddr: 0x28DA2C, symSize: 0x48 } + - { offset: 0x35483F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCMa', symObjAddr: 0x2F4, symBinAddr: 0x28DA74, symSize: 0x20 } + - { offset: 0x354853, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC05setupE0yyFTo', symObjAddr: 0x31C, symBinAddr: 0x28DA9C, symSize: 0x4 } + - { offset: 0x35487E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP09layoutForE0AA0dE6Layout_pSgyFTW', symObjAddr: 0x44C, symBinAddr: 0x28DBCC, symSize: 0x24 } + - { offset: 0x3548BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP011behaviorForE0AA0dE8Behavior_pSgyFTW', symObjAddr: 0x470, symBinAddr: 0x28DBF0, symSize: 0x24 } + - { offset: 0x354900, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP05setupE0yyFTW', symObjAddr: 0x494, symBinAddr: 0x28DC14, symSize: 0x10 } + - { offset: 0x354943, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC08floatingE7DidMoveyyAA0deG0CF', symObjAddr: 0x4A4, symBinAddr: 0x28DC24, symSize: 0x15C } + - { offset: 0x354A9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC08floatingE7DidMoveyyAA0deG0CFTo', symObjAddr: 0x600, symBinAddr: 0x28DD80, symSize: 0x50 } + - { offset: 0x354AB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC08floatingE10WillRemoveyyAA0deG0CF', symObjAddr: 0x650, symBinAddr: 0x28DDD0, symSize: 0xC4 } + - { offset: 0x354B52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC08floatingE10WillRemoveyyAA0deG0CFTo', symObjAddr: 0x714, symBinAddr: 0x28DE94, symSize: 0x50 } + - { offset: 0x354B8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x0, symBinAddr: 0x28D780, symSize: 0x68 } + - { offset: 0x354CA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x68, symBinAddr: 0x28D7E8, symSize: 0xD8 } + - { offset: 0x354CE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x140, symBinAddr: 0x28D8C0, symSize: 0x60 } + - { offset: 0x354D2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1A0, symBinAddr: 0x28D920, symSize: 0xB4 } + - { offset: 0x354D5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x254, symBinAddr: 0x28D9D4, symSize: 0x28 } + - { offset: 0x354D71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCfD', symObjAddr: 0x27C, symBinAddr: 0x28D9FC, symSize: 0x30 } + - { offset: 0x354DA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP5panelAA0deG0CSgvgTW', symObjAddr: 0x320, symBinAddr: 0x28DAA0, symSize: 0x30 } + - { offset: 0x354E00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP5panelAA0deG0CSgvsTW', symObjAddr: 0x350, symBinAddr: 0x28DAD0, symSize: 0x18 } + - { offset: 0x354E18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP5panelAA0deG0CSgvsTW', symObjAddr: 0x350, symBinAddr: 0x28DAD0, symSize: 0x18 } + - { offset: 0x354E4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelLevelSiSgvgTW', symObjAddr: 0x368, symBinAddr: 0x28DAE8, symSize: 0x18 } + - { offset: 0x354E67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelLevelSiSgvgTW', symObjAddr: 0x368, symBinAddr: 0x28DAE8, symSize: 0x18 } + - { offset: 0x354EA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelLevelSiSgvsTW', symObjAddr: 0x380, symBinAddr: 0x28DB00, symSize: 0x1C } + - { offset: 0x354EBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelLevelSiSgvsTW', symObjAddr: 0x380, symBinAddr: 0x28DB00, symSize: 0x1C } + - { offset: 0x354EF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelStateAA0deJ0CSgvgTW', symObjAddr: 0x39C, symBinAddr: 0x28DB1C, symSize: 0x30 } + - { offset: 0x354F50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelStateAA0deJ0CSgvsTW', symObjAddr: 0x3CC, symBinAddr: 0x28DB4C, symSize: 0x18 } + - { offset: 0x354F68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelStateAA0deJ0CSgvsTW', symObjAddr: 0x3CC, symBinAddr: 0x28DB4C, symSize: 0x18 } + - { offset: 0x354F9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP9presenterAA0dE9Presenter_pSgvgTW', symObjAddr: 0x3E4, symBinAddr: 0x28DB64, symSize: 0x30 } + - { offset: 0x354FF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP9presenterAA0dE9Presenter_pSgvsTW', symObjAddr: 0x414, symBinAddr: 0x28DB94, symSize: 0x38 } + - { offset: 0x355731, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryCMa', symObjAddr: 0x10BC, symBinAddr: 0x28EF44, symSize: 0x20 } + - { offset: 0x355745, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC06updateD09venueDatayAA0dH0C_tFyyYbXEfU_TA', symObjAddr: 0x1170, symBinAddr: 0x28EF70, symSize: 0xC } + - { offset: 0x355759, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x119C, symBinAddr: 0x28EF7C, symSize: 0x10 } + - { offset: 0x35576D, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x11AC, symBinAddr: 0x28EF8C, symSize: 0x8 } + - { offset: 0x355781, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12getAllVenuesSayAA0D4DataCGyFyyYbXEfU_TA', symObjAddr: 0x11D8, symBinAddr: 0x28EFB8, symSize: 0x8 } + - { offset: 0x355795, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12insertVenues6venuesySayAA0D4DataCG_tFyyYbXEfU_TA', symObjAddr: 0x1224, symBinAddr: 0x28F004, symSize: 0xC } + - { offset: 0x3557A9, size: 0x8, addend: 0x0, symName: '_$s7Penguin12UpdateStatusOACSYAAWl', symObjAddr: 0x1240, symBinAddr: 0x28F020, symSize: 0x44 } + - { offset: 0x355983, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12insertVenues6venuesySayAA0D4DataCG_tF', symObjAddr: 0x40, symBinAddr: 0x28DEEC, symSize: 0x1A0 } + - { offset: 0x355A10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12insertVenues6venuesySayAA0D4DataCG_tFyyYbXEfU_', symObjAddr: 0x1E0, symBinAddr: 0x28E08C, symSize: 0x514 } + - { offset: 0x355DBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12getAllVenuesSayAA0D4DataCGyF', symObjAddr: 0x6F4, symBinAddr: 0x28E5A0, symSize: 0x194 } + - { offset: 0x355E71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12getAllVenuesSayAA0D4DataCGyFyyYbXEfU_', symObjAddr: 0x888, symBinAddr: 0x28E734, symSize: 0x20C } + - { offset: 0x35612B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC06updateD09venueDatayAA0dH0C_tF', symObjAddr: 0xA94, symBinAddr: 0x28E940, symSize: 0x1A0 } + - { offset: 0x3561B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC06updateD09venueDatayAA0dH0C_tFyyYbXEfU_', symObjAddr: 0xC34, symBinAddr: 0x28EAE0, symSize: 0xF0 } + - { offset: 0x356204, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC09insertNewD033_D6148AF0073D78926608A03AA9FA7FD1LL9venueDatayAA0dP0C_tF', symObjAddr: 0xD24, symBinAddr: 0x28EBD0, symSize: 0x104 } + - { offset: 0x35628C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC06removeD033_D6148AF0073D78926608A03AA9FA7FD1LL5venueyAA0D4DataC_tF', symObjAddr: 0xE28, symBinAddr: 0x28ECD4, symSize: 0x270 } + - { offset: 0x356AE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelCMa', symObjAddr: 0xC70, symBinAddr: 0x28FCD4, symSize: 0x20 } + - { offset: 0x356AF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC012handleCampusE8Response33_6E592137D65A8EF25B4559D528B849A4LL9venueDatayAA0dT0CSg_tFyyScMYccfU_TA', symObjAddr: 0xD04, symBinAddr: 0x28FD24, symSize: 0x8 } + - { offset: 0x356B0A, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xD0C, symBinAddr: 0x28FD2C, symSize: 0x10 } + - { offset: 0x356B1E, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xD1C, symBinAddr: 0x28FD3C, symSize: 0x8 } + - { offset: 0x356B32, size: 0x8, addend: 0x0, symName: '_$sSS_SStWOh', symObjAddr: 0xDFC, symBinAddr: 0x28FD44, symSize: 0x40 } + - { offset: 0x356B46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC15fetchCampusData33_6E592137D65A8EF25B4559D528B849A4LL8campusIdySi_tFyAA0dJ0CSgcACcfu_yAIcfu0_TA', symObjAddr: 0xE3C, symBinAddr: 0x28FD84, symSize: 0x4 } + - { offset: 0x356B5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC15fetchCampusData33_6E592137D65A8EF25B4559D528B849A4LL8campusIdySi_tFyAA0dJ0CSgcACcfu_yAIcfu0_TA', symObjAddr: 0xE3C, symBinAddr: 0x28FD84, symSize: 0x4 } + - { offset: 0x356B80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tFySayAA5PlaceCGcfU_TA', symObjAddr: 0xE40, symBinAddr: 0x28FD88, symSize: 0x8 } + - { offset: 0x356B94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tFySayAA5PlaceCGcfU_yyScMYccfU_TA', symObjAddr: 0xE94, symBinAddr: 0x28FDD0, symSize: 0x8 } + - { offset: 0x356BA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC06handledE8Response33_6E592137D65A8EF25B4559D528B849A4LL9venueDatayAA0dS0CSg_tFyyScMYccfU_TA', symObjAddr: 0xED4, symBinAddr: 0x28FDD8, symSize: 0x8 } + - { offset: 0x356BBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD4Data33_6E592137D65A8EF25B4559D528B849A4LL7venueIdySi_tFyAA0dI0CSgcACcfu_yAIcfu0_TA', symObjAddr: 0xEDC, symBinAddr: 0x28FDE0, symSize: 0x4 } + - { offset: 0x356BD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD4Data33_6E592137D65A8EF25B4559D528B849A4LL7venueIdySi_tFyAA0dI0CSgcACcfu_yAIcfu0_TA', symObjAddr: 0xEDC, symBinAddr: 0x28FDE0, symSize: 0x4 } + - { offset: 0x356C14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD4Data33_6E592137D65A8EF25B4559D528B849A4LL7venueIdySi_tF', symObjAddr: 0x18, symBinAddr: 0x28F07C, symSize: 0x10C } + - { offset: 0x356E8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tF', symObjAddr: 0x284, symBinAddr: 0x28F2E8, symSize: 0x1E4 } + - { offset: 0x356FBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tFySayAA5PlaceCGcfU_', symObjAddr: 0x468, symBinAddr: 0x28F4CC, symSize: 0x25C } + - { offset: 0x35701C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tFySayAA5PlaceCGcfU_yyScMYccfU_', symObjAddr: 0x6C4, symBinAddr: 0x28F728, symSize: 0x94 } + - { offset: 0x357092, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC15fetchCampusData33_6E592137D65A8EF25B4559D528B849A4LL8campusIdySi_tF', symObjAddr: 0x758, symBinAddr: 0x28F7BC, symSize: 0xFC } + - { offset: 0x357216, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelCfD', symObjAddr: 0xC3C, symBinAddr: 0x28FCA0, symSize: 0x34 } + - { offset: 0x3575E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC8positionAA0eF8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x28FDFC, symSize: 0x8 } + - { offset: 0x357797, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutCMa', symObjAddr: 0x204, symBinAddr: 0x290000, symSize: 0x20 } + - { offset: 0x3577B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC8positionAA0eF8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x28FDFC, symSize: 0x8 } + - { offset: 0x3577CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC8positionAA0eF8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x28FDFC, symSize: 0x8 } + - { offset: 0x3577E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC12initialStateAA0efI0CvgTo', symObjAddr: 0x8, symBinAddr: 0x28FE04, symSize: 0x8 } + - { offset: 0x3577FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC12initialStateAA0efI0CvgTo', symObjAddr: 0x8, symBinAddr: 0x28FE04, symSize: 0x8 } + - { offset: 0x35782C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC7anchorsSDyAA0eF5StateCAA0efG9Anchoring_pGvgTo', symObjAddr: 0x10, symBinAddr: 0x28FE0C, symSize: 0x7C } + - { offset: 0x357934, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC7anchorsSDyAA0eF5StateCAA0efG9Anchoring_pGvg', symObjAddr: 0x8C, symBinAddr: 0x28FE88, symSize: 0x144 } + - { offset: 0x357A6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA0eF5StateC_tFTo', symObjAddr: 0x1D0, symBinAddr: 0x28FFCC, symSize: 0x8 } + - { offset: 0x357A84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA0eF5StateC_tFTo', symObjAddr: 0x1D0, symBinAddr: 0x28FFCC, symSize: 0x8 } + - { offset: 0x357AB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutCfD', symObjAddr: 0x1D8, symBinAddr: 0x28FFD4, symSize: 0x2C } + - { offset: 0x357E81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ColorVMa', symObjAddr: 0x1D4, symBinAddr: 0x290020, symSize: 0x10 } + - { offset: 0x358215, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC22getAddressWithBuildingSSyF', symObjAddr: 0x0, symBinAddr: 0x290030, symSize: 0xCC } + - { offset: 0x358308, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC22getAddressWithBuildingSSyF', symObjAddr: 0x0, symBinAddr: 0x290030, symSize: 0xCC } + - { offset: 0x3584FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataCMa', symObjAddr: 0xEE4, symBinAddr: 0x290F10, symSize: 0x20 } + - { offset: 0x35851B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC6imagesSaySSGSgvM', symObjAddr: 0xCC, symBinAddr: 0x2900FC, symSize: 0x30 } + - { offset: 0x35852F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC8scheduleSay7Penguin8ScheduleCGSgvM', symObjAddr: 0x100, symBinAddr: 0x29012C, symSize: 0x30 } + - { offset: 0x358674, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC05venueF0AcA0dF0C_tcfc', symObjAddr: 0x130, symBinAddr: 0x29015C, symSize: 0x330 } + - { offset: 0x3587A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC5venueAC7Penguin0D0CSg_tcfc', symObjAddr: 0x460, symBinAddr: 0x29048C, symSize: 0x4E0 } + - { offset: 0x358951, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC12campusDetailAC7Penguin0D0CSg_tcfc', symObjAddr: 0x940, symBinAddr: 0x29096C, symSize: 0x450 } + - { offset: 0x358AFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC29setupOfflineCampusInformationyyF', symObjAddr: 0xD90, symBinAddr: 0x290DBC, symSize: 0xC8 } + - { offset: 0x358B5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataCfd', symObjAddr: 0xE58, symBinAddr: 0x290E84, symSize: 0x6C } + - { offset: 0x358B7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataCfD', symObjAddr: 0xEC4, symBinAddr: 0x290EF0, symSize: 0x20 } + - { offset: 0x358F28, size: 0x8, addend: 0x0, symName: '_$sSo11UIStackViewC8PenNavUIE13arabicSpacing12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x0, symBinAddr: 0x290F30, symSize: 0x8 } + - { offset: 0x358F40, size: 0x8, addend: 0x0, symName: '_$sSo11UIStackViewC8PenNavUIE13arabicSpacing12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x0, symBinAddr: 0x290F30, symSize: 0x8 } + - { offset: 0x358F5C, size: 0x8, addend: 0x0, symName: '_$sSo11UIStackViewC8PenNavUIE13arabicSpacing12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x8, symBinAddr: 0x290F38, symSize: 0x38 } + - { offset: 0x358F8E, size: 0x8, addend: 0x0, symName: '_$sSo11UIStackViewC8PenNavUIE13arabicSpacing12CoreGraphics7CGFloatVvs', symObjAddr: 0x40, symBinAddr: 0x290F70, symSize: 0x90 } + - { offset: 0x359424, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x291000, symSize: 0x8 } + - { offset: 0x35962B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutCMa', symObjAddr: 0x3F4, symBinAddr: 0x2913D0, symSize: 0x20 } + - { offset: 0x35967D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x291000, symSize: 0x8 } + - { offset: 0x359695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x291000, symSize: 0x8 } + - { offset: 0x3596B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvsTo', symObjAddr: 0x8, symBinAddr: 0x291008, symSize: 0x8 } + - { offset: 0x3596CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvsTo', symObjAddr: 0x8, symBinAddr: 0x291008, symSize: 0x8 } + - { offset: 0x3596E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvgTo', symObjAddr: 0x10, symBinAddr: 0x291010, symSize: 0x8 } + - { offset: 0x3596FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvgTo', symObjAddr: 0x10, symBinAddr: 0x291010, symSize: 0x8 } + - { offset: 0x359716, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvsTo', symObjAddr: 0x18, symBinAddr: 0x291018, symSize: 0x2C } + - { offset: 0x35975E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC7anchorsSDyAA18FloatingPanelStateCAA0ijG9Anchoring_pGvgTo', symObjAddr: 0x44, symBinAddr: 0x291044, symSize: 0x7C } + - { offset: 0x3598AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC7anchorsSDyAA18FloatingPanelStateCAA0ijG9Anchoring_pGvg', symObjAddr: 0xC0, symBinAddr: 0x2910C0, symSize: 0x268 } + - { offset: 0x359A7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tFTo', symObjAddr: 0x328, symBinAddr: 0x291328, symSize: 0xA8 } + - { offset: 0x359B30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC09topAnchorE012CoreGraphics7CGFloatVvgZTf4d_n', symObjAddr: 0x458, symBinAddr: 0x2913F0, symSize: 0x148 } + - { offset: 0x35A33D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwxx', symObjAddr: 0x2C, symBinAddr: 0x291538, symSize: 0x30 } + - { offset: 0x35A351, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwcp', symObjAddr: 0x5C, symBinAddr: 0x291568, symSize: 0x4C } + - { offset: 0x35A365, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwca', symObjAddr: 0xA8, symBinAddr: 0x2915B4, symSize: 0x7C } + - { offset: 0x35A379, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwta', symObjAddr: 0x130, symBinAddr: 0x291630, symSize: 0x54 } + - { offset: 0x35A38D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwet', symObjAddr: 0x184, symBinAddr: 0x291684, symSize: 0x48 } + - { offset: 0x35A3A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwst', symObjAddr: 0x1CC, symBinAddr: 0x2916CC, symSize: 0x40 } + - { offset: 0x35A3B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVMa', symObjAddr: 0x20C, symBinAddr: 0x29170C, symSize: 0x10 } + - { offset: 0x35A99E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegV13getDirections12subPathIndexSayAA14RouteDirectionVGSi_tF', symObjAddr: 0x21C, symBinAddr: 0x29171C, symSize: 0x220 } + - { offset: 0x35AD22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegV13getDirections12subPathIndexSayAA14RouteDirectionVGSi_tFy7Penguin11SubpathEdgeCXEfU_Tf4nxnnn_n', symObjAddr: 0xFD0, symBinAddr: 0x2924D0, symSize: 0x14A0 } + - { offset: 0x35C72B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegV10directionsSayAA14RouteDirectionVGvg', symObjAddr: 0x43C, symBinAddr: 0x29193C, symSize: 0xB94 } + - { offset: 0x35D580, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegV8durationSdvgTf4x_n', symObjAddr: 0x2470, symBinAddr: 0x293970, symSize: 0x24C } + - { offset: 0x35DB74, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE9fontStyleSSvgTo', symObjAddr: 0x0, symBinAddr: 0x293BBC, symSize: 0x1C } + - { offset: 0x35DB90, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE9fontStyleSSvsTo', symObjAddr: 0x1C, symBinAddr: 0x293BD8, symSize: 0x54 } + - { offset: 0x35DBAC, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE19textColorIdentifierSivgTo', symObjAddr: 0x1F4, symBinAddr: 0x293C2C, symSize: 0x8 } + - { offset: 0x35DBC8, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE19textColorIdentifierSivsTo', symObjAddr: 0x1FC, symBinAddr: 0x293C34, symSize: 0x38 } + - { offset: 0x35DBE4, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x240, symBinAddr: 0x293C6C, symSize: 0x8 } + - { offset: 0x35DC00, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x248, symBinAddr: 0x293C74, symSize: 0x38 } + - { offset: 0x35DC1C, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE19tintColorIdentifierSivgTo', symObjAddr: 0x28C, symBinAddr: 0x293CAC, symSize: 0x8 } + - { offset: 0x35DC38, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE19tintColorIdentifierSivsTo', symObjAddr: 0x294, symBinAddr: 0x293CB4, symSize: 0x38 } + - { offset: 0x35E01C, size: 0x8, addend: 0x0, symName: '_$ss14_ArrayProtocolPsE6filterySay7ElementQzGSbAEKXEKFSay7Penguin10PoiPolygonVG_Tg5', symObjAddr: 0x0, symBinAddr: 0x293CEC, symSize: 0x22C } + - { offset: 0x35E040, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC14sharedInstance33_DB5F0CED90D641A8D90FE1F51FA03EE5LLACSgvpZ', symObjAddr: 0x1D70, symBinAddr: 0x3825C0, symSize: 0x0 } + - { offset: 0x35E2EB, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryV8PenNavUI13TagDataSourceA2dEP5tagIdSivgTW', symObjAddr: 0x7A8, symBinAddr: 0x2943C8, symSize: 0x1C } + - { offset: 0x35E345, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryV8PenNavUI13TagDataSourceA2dEP7tagNameSSvgTW', symObjAddr: 0x7C4, symBinAddr: 0x2943E4, symSize: 0x24 } + - { offset: 0x35E381, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerCMa', symObjAddr: 0x7E8, symBinAddr: 0x294408, symSize: 0x20 } + - { offset: 0x35E395, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11POICategoryVGFSbAE10PoiPolygonVXEfU_TA', symObjAddr: 0x808, symBinAddr: 0x294428, symSize: 0x64 } + - { offset: 0x35E42E, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin11POICategoryV_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11F17VGFSbAG_AGtXEfU0_Tf1cn_n', symObjAddr: 0x86C, symBinAddr: 0x29448C, symSize: 0x108 } + - { offset: 0x35E653, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin11POICategoryV_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11F17VGFSbAG_AGtXEfU0_Tf1nnncn_n', symObjAddr: 0x974, symBinAddr: 0x294594, symSize: 0x834 } + - { offset: 0x35EB15, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin11POICategoryV_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11G17VGFSbAG_AGtXEfU0_Tf1nncn_n', symObjAddr: 0x1438, symBinAddr: 0x294DC8, symSize: 0x284 } + - { offset: 0x35EE9A, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin11POICategoryV_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11H17VGFSbAG_AGtXEfU0_Tf1nnnnc_n', symObjAddr: 0x16BC, symBinAddr: 0x29504C, symSize: 0x5EC } + - { offset: 0x35F013, size: 0x8, addend: 0x0, symName: '_$ss14_ArrayProtocolPsE6filterySay7ElementQzGSbAEKXEKFSay7Penguin10PoiPolygonVG_Tg5', symObjAddr: 0x0, symBinAddr: 0x293CEC, symSize: 0x22C } + - { offset: 0x35F19E, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin11POICategoryVG_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11G17VGFSbAG_AGtXEfU0_Tf1cn_n', symObjAddr: 0x22C, symBinAddr: 0x293F18, symSize: 0x80 } + - { offset: 0x35F457, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11POICategoryVGF', symObjAddr: 0x2AC, symBinAddr: 0x293F98, symSize: 0x2A0 } + - { offset: 0x35F80C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC17getCategoryWithIdy7Penguin11POICategoryVSgSiSgF', symObjAddr: 0x5EC, symBinAddr: 0x294238, symSize: 0x168 } + - { offset: 0x35F95A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC13loadAmenitiesyyFySayAA0G0VGcfU_', symObjAddr: 0x754, symBinAddr: 0x2943A0, symSize: 0x28 } + - { offset: 0x3600AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellCfETo', symObjAddr: 0x8DC, symBinAddr: 0x295FDC, symSize: 0x48 } + - { offset: 0x3600DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellCMa', symObjAddr: 0x924, symBinAddr: 0x296024, symSize: 0x20 } + - { offset: 0x3600F0, size: 0x8, addend: 0x0, symName: '_$sypSgWOc', symObjAddr: 0x944, symBinAddr: 0x296044, symSize: 0x48 } + - { offset: 0x360104, size: 0x8, addend: 0x0, symName: '_$sypSgWOd', symObjAddr: 0xA10, symBinAddr: 0x29608C, symSize: 0x48 } + - { offset: 0x360234, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC16descriptionLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x295700, symSize: 0x10 } + - { offset: 0x36024C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC16descriptionLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x295700, symSize: 0x10 } + - { offset: 0x360292, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC16descriptionLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x295710, symSize: 0x34 } + - { offset: 0x3602E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC12awakeFromNibyyFTo', symObjAddr: 0x44, symBinAddr: 0x295744, symSize: 0x68 } + - { offset: 0x3603A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC10updateInfo3for21isDescriptionExpandedyAA11PoiViewDataCSg_SbtF', symObjAddr: 0xAC, symBinAddr: 0x2957AC, symSize: 0x210 } + - { offset: 0x3604FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC10updateInfo3for21isDescriptionExpandedyAA13VenueViewDataCSg_SbtF', symObjAddr: 0x2BC, symBinAddr: 0x2959BC, symSize: 0x210 } + - { offset: 0x360679, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC17expandDescriptionyyF', symObjAddr: 0x4CC, symBinAddr: 0x295BCC, symSize: 0x1CC } + - { offset: 0x360784, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC17expandDescriptionyyFTo', symObjAddr: 0x698, symBinAddr: 0x295D98, symSize: 0x28 } + - { offset: 0x360798, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x6C0, symBinAddr: 0x295DC0, symSize: 0xCC } + - { offset: 0x3607D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x78C, symBinAddr: 0x295E8C, symSize: 0x48 } + - { offset: 0x3607ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x7D4, symBinAddr: 0x295ED4, symSize: 0xB0 } + - { offset: 0x360820, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x884, symBinAddr: 0x295F84, symSize: 0x28 } + - { offset: 0x360834, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellCfD', symObjAddr: 0x8AC, symBinAddr: 0x295FAC, symSize: 0x30 } + - { offset: 0x3608EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC7trimmedySo18NSAttributedStringCSSFTf4nd_n', symObjAddr: 0xA58, symBinAddr: 0x2960D4, symSize: 0x434 } + - { offset: 0x360EEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorC06allowseF03forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x296508, symSize: 0xC } + - { offset: 0x360F69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorCMa', symObjAddr: 0x1C, symBinAddr: 0x296514, symSize: 0x20 } + - { offset: 0x360FC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorC06allowseF03forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x296508, symSize: 0xC } + - { offset: 0x360FE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorC06allowseF03forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x296508, symSize: 0xC } + - { offset: 0x360FFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorC06allowseF03forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x296508, symSize: 0xC } + - { offset: 0x361012, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorC06allowseF03forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x296508, symSize: 0xC } + - { offset: 0x3613B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV6colors33_616753A7FF7E0F369F73FFA5ED6E61FBLL_WZ', symObjAddr: 0x0, symBinAddr: 0x296534, symSize: 0x60 } + - { offset: 0x3613D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV6colors33_616753A7FF7E0F369F73FFA5ED6E61FBLLSDySiAA0D0VGvpZ', symObjAddr: 0x1C8, symBinAddr: 0x3827B8, symSize: 0x0 } + - { offset: 0x361414, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV6colors33_616753A7FF7E0F369F73FFA5ED6E61FBLL_WZ', symObjAddr: 0x0, symBinAddr: 0x296534, symSize: 0x60 } + - { offset: 0x361674, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV06updatedE003newdE0ySayAA14ColorsResponseV0E4ItemVG_tFZTf4nd_n', symObjAddr: 0xA4, symBinAddr: 0x296594, symSize: 0x120 } + - { offset: 0x361C0E, size: 0x8, addend: 0x0, symName: '_$sSo6UIFontCMa', symObjAddr: 0x1218, symBinAddr: 0x297848, symSize: 0x44 } + - { offset: 0x361C22, size: 0x8, addend: 0x0, symName: '_$sSnySS5IndexVGMa', symObjAddr: 0x12D8, symBinAddr: 0x29788C, symSize: 0x58 } + - { offset: 0x361D0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TimeFormatterV20getFormattedDuration7seconds23includesMeasurementUnitSSSd_SbtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x2966B4, symSize: 0x240 } + - { offset: 0x361FB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TimeFormatterV019getFormattedArrivalD05afterSSSgSd_tFZTf4nd_n', symObjAddr: 0x240, symBinAddr: 0x2968F4, symSize: 0x404 } + - { offset: 0x3621D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TimeFormatterV019getFormattedArrivalD05afterSo18NSAttributedStringCSgSd_tFZTf4nd_n', symObjAddr: 0x6C8, symBinAddr: 0x296CF8, symSize: 0xB50 } + - { offset: 0x362A3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC8tagTitleSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2978E4, symSize: 0x20 } + - { offset: 0x362C15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellCfETo', symObjAddr: 0x588, symBinAddr: 0x297E6C, symSize: 0x10 } + - { offset: 0x362C44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellCMa', symObjAddr: 0x598, symBinAddr: 0x297E7C, symSize: 0x20 } + - { offset: 0x362CF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC8tagTitleSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2978E4, symSize: 0x20 } + - { offset: 0x362D55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC8tagTitleSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x297904, symSize: 0x14 } + - { offset: 0x362DA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC12awakeFromNibyyFTo', symObjAddr: 0x34, symBinAddr: 0x297918, symSize: 0x3C } + - { offset: 0x362E43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC15handleSelection33_8D5042F874946FF25E371E94CE6EE3E9LL10isSelectedySb_tF', symObjAddr: 0x70, symBinAddr: 0x297954, symSize: 0x3D4 } + - { offset: 0x362FEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x444, symBinAddr: 0x297D28, symSize: 0x80 } + - { offset: 0x363066, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x4C4, symBinAddr: 0x297DA8, symSize: 0x94 } + - { offset: 0x36309D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellCfD', symObjAddr: 0x558, symBinAddr: 0x297E3C, symSize: 0x30 } + - { offset: 0x36344A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVwxx', symObjAddr: 0x2C, symBinAddr: 0x297E9C, symSize: 0x4C } + - { offset: 0x36345E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVwcp', symObjAddr: 0x78, symBinAddr: 0x297EE8, symSize: 0x84 } + - { offset: 0x363472, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVwca', symObjAddr: 0xFC, symBinAddr: 0x297F6C, symSize: 0xDC } + - { offset: 0x363486, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVwta', symObjAddr: 0x1F4, symBinAddr: 0x298048, symSize: 0xB0 } + - { offset: 0x36349A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVMa', symObjAddr: 0x338, symBinAddr: 0x2980F8, symSize: 0x10 } + - { offset: 0x3634AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV14ImagePlacementOMa', symObjAddr: 0x570, symBinAddr: 0x298108, symSize: 0x10 } + - { offset: 0x3634C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV0dE9AttributeOMa', symObjAddr: 0x6D4, symBinAddr: 0x298118, symSize: 0x10 } + - { offset: 0x3634D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV0dE9AttributeOSHAASQWb', symObjAddr: 0x6E4, symBinAddr: 0x298128, symSize: 0x4 } + - { offset: 0x3634EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV0dE9AttributeOAESQAAWl', symObjAddr: 0x6E8, symBinAddr: 0x29812C, symSize: 0x40 } + - { offset: 0x3634FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV14ImagePlacementOSHAASQWb', symObjAddr: 0x728, symBinAddr: 0x29816C, symSize: 0x4 } + - { offset: 0x363512, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV14ImagePlacementOAESQAAWl', symObjAddr: 0x72C, symBinAddr: 0x298170, symSize: 0x40 } + - { offset: 0x365131, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperCMa', symObjAddr: 0x7570, symBinAddr: 0x29F6A8, symSize: 0x20 } + - { offset: 0x365154, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP18onReachDestinationyyFTW', symObjAddr: 0x75B0, symBinAddr: 0x29F6E8, symSize: 0x4 } + - { offset: 0x365174, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP18onReachDestinationyyFTW', symObjAddr: 0x75B0, symBinAddr: 0x29F6E8, symSize: 0x4 } + - { offset: 0x36538D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC18onReachDestinationyyFTf4d_n', symObjAddr: 0xC0E0, symBinAddr: 0x2A4218, symSize: 0x114 } + - { offset: 0x365521, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC24addNavigationSearchPanel4stop5index11closeActionyAA5PlaceCSg_SiyycSgtFyAJcfU_TA', symObjAddr: 0xC288, symBinAddr: 0x2A437C, symSize: 0xC } + - { offset: 0x365535, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20addGateSelectorPanel5venue5indexyAA5PlaceCSg_SitFyAIcfU_TA', symObjAddr: 0xC2C8, symBinAddr: 0x2A43AC, symSize: 0x8 } + - { offset: 0x365549, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12OptionsPanelyyFyycfU_TA', symObjAddr: 0xC2D0, symBinAddr: 0x2A43B4, symSize: 0x8 } + - { offset: 0x36555D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycAA24NavigationViewControllerCcfu1_yycfu2_TA', symObjAddr: 0xC31C, symBinAddr: 0x2A43E0, symSize: 0x20 } + - { offset: 0x36558F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycAA24NavigationViewControllerCcfu3_yycfu4_TA', symObjAddr: 0xC33C, symBinAddr: 0x2A4400, symSize: 0x20 } + - { offset: 0x3655C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu5_yycfu6_TA', symObjAddr: 0xC35C, symBinAddr: 0x2A4420, symSize: 0x4 } + - { offset: 0x3655D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu5_yycfu6_TA', symObjAddr: 0xC35C, symBinAddr: 0x2A4420, symSize: 0x4 } + - { offset: 0x3655F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyAA08FloatingI10ControllerCcACcfu7_yAHcfu8_TA', symObjAddr: 0xC360, symBinAddr: 0x2A4424, symSize: 0x4 } + - { offset: 0x36560B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyAA08FloatingI10ControllerCcACcfu7_yAHcfu8_TA', symObjAddr: 0xC360, symBinAddr: 0x2A4424, symSize: 0x4 } + - { offset: 0x36562D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu9_yycfu10_TA', symObjAddr: 0xC364, symBinAddr: 0x2A4428, symSize: 0x4 } + - { offset: 0x365645, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu9_yycfu10_TA', symObjAddr: 0xC364, symBinAddr: 0x2A4428, symSize: 0x4 } + - { offset: 0x36565F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyAA5PlaceCSg_SitcACcfu11_yAI_Sitcfu12_TA', symObjAddr: 0xC368, symBinAddr: 0x2A442C, symSize: 0x4 } + - { offset: 0x365677, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyAA5PlaceCSg_SitcACcfu11_yAI_Sitcfu12_TA', symObjAddr: 0xC368, symBinAddr: 0x2A442C, symSize: 0x4 } + - { offset: 0x3656A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu13_yycfu14_TA', symObjAddr: 0xC36C, symBinAddr: 0x2A4430, symSize: 0x4 } + - { offset: 0x3656B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu13_yycfu14_TA', symObjAddr: 0xC36C, symBinAddr: 0x2A4430, symSize: 0x4 } + - { offset: 0x3656D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycAA24NavigationViewControllerCcfu15_yycfu16_TA', symObjAddr: 0xC370, symBinAddr: 0x2A4434, symSize: 0x20 } + - { offset: 0x365705, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySbcfU1_TA', symObjAddr: 0xC464, symBinAddr: 0x2A44A4, symSize: 0x8 } + - { offset: 0x365719, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySo7UIImageCSgcfU0_TA', symObjAddr: 0xC4F0, symBinAddr: 0x2A44EC, symSize: 0xC } + - { offset: 0x36572D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySo7UIImageCSgcfU_TA', symObjAddr: 0xC530, symBinAddr: 0x2A452C, symSize: 0xC } + - { offset: 0x365741, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20setupSubpathsStepperyyFyycfU_TA', symObjAddr: 0xC580, symBinAddr: 0x2A4538, symSize: 0x20 } + - { offset: 0x365755, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20setupSubpathsStepperyyFyycfU0_TA', symObjAddr: 0xC5A0, symBinAddr: 0x2A4558, symSize: 0x20 } + - { offset: 0x365769, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC013getNavigationD0yyFy7Penguin0D0VSg_AE0D5ErrorOSgtcACcfu_yAH_AKtcfu0_TA', symObjAddr: 0xC698, symBinAddr: 0x2A4578, symSize: 0x4 } + - { offset: 0x365781, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC013getNavigationD0yyFy7Penguin0D0VSg_AE0D5ErrorOSgtcACcfu_yAH_AKtcfu0_TA', symObjAddr: 0xC698, symBinAddr: 0x2A4578, symSize: 0x4 } + - { offset: 0x366144, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC013getNavigationD0yyF', symObjAddr: 0x0, symBinAddr: 0x2981B0, symSize: 0x658 } + - { offset: 0x366711, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP02onD9PathReady5routeyAD0D0VSg_tFTW', symObjAddr: 0x7590, symBinAddr: 0x29F6C8, symSize: 0x4 } + - { offset: 0x36672D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP010onFailLoadD09errorCodeyAD05ErrorO0O_tFTW', symObjAddr: 0x7594, symBinAddr: 0x29F6CC, symSize: 0x4 } + - { offset: 0x366749, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP17onStartNavigationyyFTW', symObjAddr: 0x7598, symBinAddr: 0x29F6D0, symSize: 0x4 } + - { offset: 0x366765, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP16onStopNavigationyyFTW', symObjAddr: 0x759C, symBinAddr: 0x29F6D4, symSize: 0x4 } + - { offset: 0x366781, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP18onInstructionReady15instructionListySayAD09DirectionL0CG_tFTW', symObjAddr: 0x75A0, symBinAddr: 0x29F6D8, symSize: 0x4 } + - { offset: 0x36679D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP11onErrorPath02isL0ySb_tFTW', symObjAddr: 0x75A4, symBinAddr: 0x29F6DC, symSize: 0x4 } + - { offset: 0x3667B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP12onErrorFloor6statusySb_tFTW', symObjAddr: 0x75A8, symBinAddr: 0x29F6E0, symSize: 0x4 } + - { offset: 0x3667D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP12onErrorVenue6statusySb_tFTW', symObjAddr: 0x75AC, symBinAddr: 0x29F6E4, symSize: 0x4 } + - { offset: 0x3667F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP19onReachedEndSubPath4typeyAD8NodeTypeO_tFTW', symObjAddr: 0x75B4, symBinAddr: 0x29F6EC, symSize: 0x4 } + - { offset: 0x36680D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP16onErrorPathReady10errorEdgesySayAD0L4EdgeCGSg_tFTW', symObjAddr: 0x75B8, symBinAddr: 0x29F6F0, symSize: 0x4 } + - { offset: 0x366829, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP15onSubPathChange03subM0yAD010NavigationlM0C_tFTW', symObjAddr: 0x75BC, symBinAddr: 0x29F6F4, symSize: 0x4 } + - { offset: 0x366993, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC06handleD8Response5route5errory7Penguin0D0VSg_AG0D5ErrorOSgtF', symObjAddr: 0x658, symBinAddr: 0x298808, symSize: 0x74C } + - { offset: 0x366F7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03setD0_5errory7Penguin0D0VSg_AF0D5ErrorOSgtF', symObjAddr: 0xDA4, symBinAddr: 0x298F54, symSize: 0x32C } + - { offset: 0x3672A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20setupSubpathsStepperyyF', symObjAddr: 0x10D0, symBinAddr: 0x299280, symSize: 0x500 } + - { offset: 0x36742B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC15drawNextSubpathyyF', symObjAddr: 0x1628, symBinAddr: 0x299780, symSize: 0x59C } + - { offset: 0x367AAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC19drawPreviousSubpathyyF', symObjAddr: 0x1BC4, symBinAddr: 0x299D1C, symSize: 0x488 } + - { offset: 0x367FAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC25showUserLocationIndicator2at8selectedySo22CLLocationCoordinate2DVSg_SbtF', symObjAddr: 0x206C, symBinAddr: 0x29A1A4, symSize: 0x130 } + - { offset: 0x368175, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC13drawFirstNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath16startPointMarker11coordinatesy7Penguin7SubPathCSg_So7UIImageCSgSaySo22CLLocationCoordinate2DVGtF', symObjAddr: 0x219C, symBinAddr: 0x29A2D4, symSize: 0x7A8 } + - { offset: 0x368A5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgF', symObjAddr: 0x2944, symBinAddr: 0x29AA7C, symSize: 0x21E0 } + - { offset: 0x36A7EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySo7UIImageCSgcfU_', symObjAddr: 0x4B24, symBinAddr: 0x29CC5C, symSize: 0xA0 } + - { offset: 0x36A828, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySo7UIImageCSgcfU0_', symObjAddr: 0x4BC4, symBinAddr: 0x29CCFC, symSize: 0x254 } + - { offset: 0x36AA9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySbcfU1_', symObjAddr: 0x4E18, symBinAddr: 0x29CF50, symSize: 0xB8 } + - { offset: 0x36ABF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC32updateUserLocationIndicatorColoryyF', symObjAddr: 0x4ED0, symBinAddr: 0x29D008, symSize: 0x528 } + - { offset: 0x36AF96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tF', symObjAddr: 0x53F8, symBinAddr: 0x29D530, symSize: 0x588 } + - { offset: 0x36B852, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12DetailsPanelyyF', symObjAddr: 0x5980, symBinAddr: 0x29DAB8, symSize: 0x2EC } + - { offset: 0x36BBE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12OptionsPanelyyF', symObjAddr: 0x5C6C, symBinAddr: 0x29DDA4, symSize: 0x34C } + - { offset: 0x36BF7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12OptionsPanelyyFyycfU_', symObjAddr: 0x5FB8, symBinAddr: 0x29E0F0, symSize: 0xE4 } + - { offset: 0x36BFC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC24addNavigationSearchPanel4stop5index11closeActionyAA5PlaceCSg_SiyycSgtFyAJcfU_', symObjAddr: 0x609C, symBinAddr: 0x29E1D4, symSize: 0x78 } + - { offset: 0x36C061, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20addGateSelectorPanel5venue5indexyAA5PlaceCSg_SitF', symObjAddr: 0x6114, symBinAddr: 0x29E24C, symSize: 0x390 } + - { offset: 0x36C43A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20addGateSelectorPanel5venue5indexyAA5PlaceCSg_SitFyAIcfU_', symObjAddr: 0x64A4, symBinAddr: 0x29E5DC, symSize: 0x21C } + - { offset: 0x36C5B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20floatingPanelDidMoveyyAA08FloatingH10ControllerCF', symObjAddr: 0x66C0, symBinAddr: 0x29E7F8, symSize: 0x25C } + - { offset: 0x36C71F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC10didTapStop_2atyAA5PlaceCSg_SitF', symObjAddr: 0x691C, symBinAddr: 0x29EA54, symSize: 0x118 } + - { offset: 0x36C918, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC21didSelectSearchResult_9replacing2atyAA5PlaceCSg_AISitF', symObjAddr: 0x6A34, symBinAddr: 0x29EB6C, symSize: 0xB08 } + - { offset: 0x36D069, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperCfD', symObjAddr: 0x753C, symBinAddr: 0x29F674, symSize: 0x34 } + - { offset: 0x36D0BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03getD11Coordinates4fromSaySo22CLLocationCoordinate2DVG7Penguin7SubPathCSg_tFTf4nd_n', symObjAddr: 0x75C0, symBinAddr: 0x29F6F8, symSize: 0xE50 } + - { offset: 0x36E3E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC8getImage3for2onSo7UIImageCSg7Penguin11SubPathNodeCSg_AJ0mN0CSgtFTf4nnd_n', symObjAddr: 0x8410, symBinAddr: 0x2A0548, symSize: 0x18B0 } + - { offset: 0x36E9A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC15detectFirstNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath10completiony7Penguin7SubPathCSg_ySo7UIImageCSgctF03$s8ab4UI19def25C11drawSubpathyy7Penguin7st8CSgFySo7U7CSgcfU_ACSgXwz_XxAKSaySo22CLLocationCoordinate2DVGz_XxTf1ncn_nTf4nnggg_n', symObjAddr: 0x9CC0, symBinAddr: 0x2A1DF8, symSize: 0x728 } + - { offset: 0x36EE71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC12drawLastNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath14endPointMarker0Q5Title11coordinatesy7Penguin7SubPathCSg_So7UIImageCSgSSSaySo22CLLocationCoordinate2DVGtFTf4nndnn_n', symObjAddr: 0xA3E8, symBinAddr: 0x2A2520, symSize: 0xCA8 } + - { offset: 0x36F925, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC14detectLastNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath11coordinates10completiony7Penguin7SubPathCSg_SaySo22CLLocationCoordinate2DVGySo7UIImageCSgctF03$s8ab4UI19def25C11drawSubpathyy7Penguin7tu8CSgFySo7X8CSgcfU0_ACSgXwz_XxAlOz_XxTf1nncn_nTf4nnnggg_n', symObjAddr: 0xB090, symBinAddr: 0x2A31C8, symSize: 0xBC4 } + - { offset: 0x37055F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC24addNavigationSearchPanel4stop5index11closeActionyAA5PlaceCSg_SiyycSgtFTf4nndn_n', symObjAddr: 0xBC54, symBinAddr: 0x2A3D8C, symSize: 0x48C } + - { offset: 0x370D75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV8parseUseyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x2A458C, symSize: 0x210 } + - { offset: 0x370DD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV8parseUseyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x2A458C, symSize: 0x210 } + - { offset: 0x37125D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC07contentG0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2A479C, symSize: 0x10 } + - { offset: 0x37141A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewCfETo', symObjAddr: 0x72C, symBinAddr: 0x2A4EC8, symSize: 0x38 } + - { offset: 0x371449, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewCMa', symObjAddr: 0x764, symBinAddr: 0x2A4F00, symSize: 0x20 } + - { offset: 0x37155A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC07contentG0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2A479C, symSize: 0x10 } + - { offset: 0x371572, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC07contentG0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2A479C, symSize: 0x10 } + - { offset: 0x3715B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC07contentG0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x2A47AC, symSize: 0x34 } + - { offset: 0x371607, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC18selectedVenueTitleSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x2A47E0, symSize: 0x10 } + - { offset: 0x37161F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC18selectedVenueTitleSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x2A47E0, symSize: 0x10 } + - { offset: 0x37165F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC18selectedVenueTitleSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x2A47F0, symSize: 0x34 } + - { offset: 0x371740, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x88, symBinAddr: 0x2A4824, symSize: 0x31C } + - { offset: 0x37183B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x3A4, symBinAddr: 0x2A4B40, symSize: 0x20 } + - { offset: 0x37184F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3C4, symBinAddr: 0x2A4B60, symSize: 0x310 } + - { offset: 0x37195B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x6D4, symBinAddr: 0x2A4E70, symSize: 0x28 } + - { offset: 0x37196F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewCfD', symObjAddr: 0x6FC, symBinAddr: 0x2A4E98, symSize: 0x30 } + - { offset: 0x371D3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14resourceBundle33_8254639E4C1A24707C71223CBC54B699LLSo8NSBundleCvp', symObjAddr: 0xDC0, symBinAddr: 0x382A10, symSize: 0x0 } + - { offset: 0x371D59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV5arrowACvpZ', symObjAddr: 0x8628, symBinAddr: 0x397410, symSize: 0x0 } + - { offset: 0x371D7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7bicycleACvpZ', symObjAddr: 0x8640, symBinAddr: 0x397428, symSize: 0x0 } + - { offset: 0x371D99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10campusGateACvpZ', symObjAddr: 0x8658, symBinAddr: 0x397440, symSize: 0x0 } + - { offset: 0x371DB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV3carACvpZ', symObjAddr: 0x8670, symBinAddr: 0x397458, symSize: 0x0 } + - { offset: 0x371DCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV5clockACvpZ', symObjAddr: 0x8688, symBinAddr: 0x397470, symSize: 0x0 } + - { offset: 0x371DE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7compassACvpZ', symObjAddr: 0x86A0, symBinAddr: 0x397488, symSize: 0x0 } + - { offset: 0x371E01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4gateACvpZ', symObjAddr: 0x86B8, symBinAddr: 0x3974A0, symSize: 0x0 } + - { offset: 0x371E1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12groupedStopsACvpZ', symObjAddr: 0x86D0, symBinAddr: 0x3974B8, symSize: 0x0 } + - { offset: 0x371E35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV16mapDownEscalatorACvpZ', symObjAddr: 0x86E8, symBinAddr: 0x3974D0, symSize: 0x0 } + - { offset: 0x371E4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV11mapElevatorACvpZ', symObjAddr: 0x8700, symBinAddr: 0x3974E8, symSize: 0x0 } + - { offset: 0x371E69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12mapEscalatorACvpZ', symObjAddr: 0x8718, symBinAddr: 0x397500, symSize: 0x0 } + - { offset: 0x371E83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7mapGateACvpZ', symObjAddr: 0x8730, symBinAddr: 0x397518, symSize: 0x0 } + - { offset: 0x371E9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7mapRampACvpZ', symObjAddr: 0x8748, symBinAddr: 0x397530, symSize: 0x0 } + - { offset: 0x371EB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9mapStairsACvpZ', symObjAddr: 0x8760, symBinAddr: 0x397548, symSize: 0x0 } + - { offset: 0x371ED1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV14mapUpEscalatorACvpZ', symObjAddr: 0x8778, symBinAddr: 0x397560, symSize: 0x0 } + - { offset: 0x371EEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV8sharePDFACvpZ', symObjAddr: 0x8790, symBinAddr: 0x397578, symSize: 0x0 } + - { offset: 0x371F05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9shareTextACvpZ', symObjAddr: 0x87A8, symBinAddr: 0x397590, symSize: 0x0 } + - { offset: 0x371F1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7transitACvpZ', symObjAddr: 0x87C0, symBinAddr: 0x3975A8, symSize: 0x0 } + - { offset: 0x371F39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4walkACvpZ', symObjAddr: 0x87D8, symBinAddr: 0x3975C0, symSize: 0x0 } + - { offset: 0x371F53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4waveACvpZ', symObjAddr: 0x87F0, symBinAddr: 0x3975D8, symSize: 0x0 } + - { offset: 0x371F6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12buildingFillACvpZ', symObjAddr: 0x8808, symBinAddr: 0x3975F0, symSize: 0x0 } + - { offset: 0x371F89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV14currentAlignedACvpZ', symObjAddr: 0x8820, symBinAddr: 0x397608, symSize: 0x0 } + - { offset: 0x371FA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10currentlocACvpZ', symObjAddr: 0x8838, symBinAddr: 0x397620, symSize: 0x0 } + - { offset: 0x371FBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV16currentlocFilledACvpZ', symObjAddr: 0x8850, symBinAddr: 0x397638, symSize: 0x0 } + - { offset: 0x371FDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV15exclamationMarkACvpZ', symObjAddr: 0x8868, symBinAddr: 0x397650, symSize: 0x0 } + - { offset: 0x371FF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV19feedbackDestinationACvpZ', symObjAddr: 0x8880, symBinAddr: 0x397668, symSize: 0x0 } + - { offset: 0x372010, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV11fitToCampusACvpZ', symObjAddr: 0x8898, symBinAddr: 0x397680, symSize: 0x0 } + - { offset: 0x37202B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV17fitToCampusFilledACvpZ', symObjAddr: 0x88B0, symBinAddr: 0x397698, symSize: 0x0 } + - { offset: 0x372046, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10myLocationACvpZ', symObjAddr: 0x88C8, symBinAddr: 0x3976B0, symSize: 0x0 } + - { offset: 0x372061, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV13pinCircleFillACvpZ', symObjAddr: 0x88E0, symBinAddr: 0x3976C8, symSize: 0x0 } + - { offset: 0x37207C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV20selectedUserLocationACvpZ', symObjAddr: 0x88F8, symBinAddr: 0x3976E0, symSize: 0x0 } + - { offset: 0x372097, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV6updownACvpZ', symObjAddr: 0x8910, symBinAddr: 0x3976F8, symSize: 0x0 } + - { offset: 0x3720B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9usingGateACvpZ', symObjAddr: 0x8928, symBinAddr: 0x397710, symSize: 0x0 } + - { offset: 0x3720C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19ResourceBundleClass33_8254639E4C1A24707C71223CBC54B699LLCMa', symObjAddr: 0x10, symBinAddr: 0x2A4F20, symSize: 0x20 } + - { offset: 0x3720D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14resourceBundle33_8254639E4C1A24707C71223CBC54B699LL_WZ', symObjAddr: 0x30, symBinAddr: 0x2A4F40, symSize: 0x54 } + - { offset: 0x372115, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV5arrow_WZ', symObjAddr: 0x84, symBinAddr: 0x2A4F94, symSize: 0x60 } + - { offset: 0x37213D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7bicycle_WZ', symObjAddr: 0xE4, symBinAddr: 0x2A4FF4, symSize: 0x64 } + - { offset: 0x372165, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10campusGate_WZ', symObjAddr: 0x148, symBinAddr: 0x2A5058, symSize: 0x68 } + - { offset: 0x37218D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV3car_WZ', symObjAddr: 0x1B0, symBinAddr: 0x2A50C0, symSize: 0x5C } + - { offset: 0x3721B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV5clock_WZ', symObjAddr: 0x20C, symBinAddr: 0x2A511C, symSize: 0x60 } + - { offset: 0x3721DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7compass_WZ', symObjAddr: 0x26C, symBinAddr: 0x2A517C, symSize: 0x64 } + - { offset: 0x372205, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4gate_WZ', symObjAddr: 0x2D0, symBinAddr: 0x2A51E0, symSize: 0x5C } + - { offset: 0x37222D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12groupedStops_WZ', symObjAddr: 0x32C, symBinAddr: 0x2A523C, symSize: 0x6C } + - { offset: 0x372255, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV16mapDownEscalator_WZ', symObjAddr: 0x398, symBinAddr: 0x2A52A8, symSize: 0x68 } + - { offset: 0x372292, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV11mapElevator_WZ', symObjAddr: 0x400, symBinAddr: 0x2A5310, symSize: 0x6C } + - { offset: 0x3722BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12mapEscalator_WZ', symObjAddr: 0x46C, symBinAddr: 0x2A537C, symSize: 0x6C } + - { offset: 0x3722E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7mapGate_WZ', symObjAddr: 0x4D8, symBinAddr: 0x2A53E8, symSize: 0x64 } + - { offset: 0x37230A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7mapRamp_WZ', symObjAddr: 0x53C, symBinAddr: 0x2A544C, symSize: 0x64 } + - { offset: 0x372332, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9mapStairs_WZ', symObjAddr: 0x5A0, symBinAddr: 0x2A54B0, symSize: 0x68 } + - { offset: 0x37235A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV14mapUpEscalator_WZ', symObjAddr: 0x608, symBinAddr: 0x2A5518, symSize: 0x70 } + - { offset: 0x372382, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV8sharePDF_WZ', symObjAddr: 0x678, symBinAddr: 0x2A5588, symSize: 0x64 } + - { offset: 0x3723AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9shareText_WZ', symObjAddr: 0x6DC, symBinAddr: 0x2A55EC, symSize: 0x68 } + - { offset: 0x3723D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7transit_WZ', symObjAddr: 0x744, symBinAddr: 0x2A5654, symSize: 0x64 } + - { offset: 0x3723FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4walk_WZ', symObjAddr: 0x7A8, symBinAddr: 0x2A56B8, symSize: 0x5C } + - { offset: 0x372422, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4wave_WZ', symObjAddr: 0x804, symBinAddr: 0x2A5714, symSize: 0x5C } + - { offset: 0x37244A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12buildingFill_WZ', symObjAddr: 0x860, symBinAddr: 0x2A5770, symSize: 0x70 } + - { offset: 0x372474, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV14currentAligned_WZ', symObjAddr: 0x8D0, symBinAddr: 0x2A57E0, symSize: 0x70 } + - { offset: 0x37249E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10currentloc_WZ', symObjAddr: 0x940, symBinAddr: 0x2A5850, symSize: 0x68 } + - { offset: 0x3724C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV16currentlocFilled_WZ', symObjAddr: 0x9A8, symBinAddr: 0x2A58B8, symSize: 0x68 } + - { offset: 0x372508, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV15exclamationMark_WZ', symObjAddr: 0xA10, symBinAddr: 0x2A5920, symSize: 0x68 } + - { offset: 0x372548, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV19feedbackDestination_WZ', symObjAddr: 0xA78, symBinAddr: 0x2A5988, symSize: 0x68 } + - { offset: 0x372588, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV11fitToCampus_WZ', symObjAddr: 0xAE0, symBinAddr: 0x2A59F0, symSize: 0x70 } + - { offset: 0x3725B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV17fitToCampusFilled_WZ', symObjAddr: 0xB50, symBinAddr: 0x2A5A60, symSize: 0x68 } + - { offset: 0x3725F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10myLocation_WZ', symObjAddr: 0xBB8, symBinAddr: 0x2A5AC8, symSize: 0x68 } + - { offset: 0x37261C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV13pinCircleFill_WZ', symObjAddr: 0xC20, symBinAddr: 0x2A5B30, symSize: 0x70 } + - { offset: 0x372646, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV20selectedUserLocation_WZ', symObjAddr: 0xC90, symBinAddr: 0x2A5BA0, symSize: 0x68 } + - { offset: 0x372686, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV6updown_WZ', symObjAddr: 0xCF8, symBinAddr: 0x2A5C08, symSize: 0x60 } + - { offset: 0x3726B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9usingGate_WZ', symObjAddr: 0xD58, symBinAddr: 0x2A5C68, symSize: 0x68 } +... diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AboutCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AboutCell.nib new file mode 100644 index 00000000..070a3825 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AboutCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ActionCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ActionCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..eba77606 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ActionCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ActionCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ActionCell.nib/runtime.nib new file mode 100644 index 00000000..2ed8cd11 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ActionCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AlertSheet.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AlertSheet.nib new file mode 100644 index 00000000..a4e634e5 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AlertSheet.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Black.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Black.ttf new file mode 100644 index 00000000..bb8766db Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Black.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Bold.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Bold.ttf new file mode 100644 index 00000000..54ae58c5 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Bold.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-ExtraBold.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-ExtraBold.ttf new file mode 100644 index 00000000..4d02c428 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-ExtraBold.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-ExtraLight.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-ExtraLight.ttf new file mode 100644 index 00000000..d966714a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-ExtraLight.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Light.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Light.ttf new file mode 100644 index 00000000..7790e5cb Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Light.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Medium.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Medium.ttf new file mode 100644 index 00000000..aab105e3 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Medium.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Regular.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Regular.ttf new file mode 100644 index 00000000..f8a4c6d4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Regular.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-SemiBold.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-SemiBold.ttf new file mode 100644 index 00000000..857e7535 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-SemiBold.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Thin.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Thin.ttf new file mode 100644 index 00000000..0fbcc06f Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-Thin.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-VariableFont_wght.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-VariableFont_wght.ttf new file mode 100644 index 00000000..7f0bedbe Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Alexandria-VariableFont_wght.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AllFilterViewController.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AllFilterViewController.nib new file mode 100644 index 00000000..cfe95b20 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AllFilterViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AmenitiesDetailTableViewCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AmenitiesDetailTableViewCell.nib new file mode 100644 index 00000000..96435f18 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AmenitiesDetailTableViewCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AmenityTableViewCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AmenityTableViewCell.nib new file mode 100644 index 00000000..1fe39fd4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/AmenityTableViewCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Assets.car b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Assets.car new file mode 100644 index 00000000..382aaabe Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Assets.car differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/BottomActionsCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/BottomActionsCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..a5441bfd Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/BottomActionsCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/BottomActionsCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/BottomActionsCell.nib/runtime.nib new file mode 100644 index 00000000..374130d9 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/BottomActionsCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/BottomNavigationPanelViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/BottomNavigationPanelViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..4dcf21c6 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/BottomNavigationPanelViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/BottomNavigationPanelViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/BottomNavigationPanelViewController.nib/runtime.nib new file mode 100644 index 00000000..bbe0722f Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/BottomNavigationPanelViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Calibrate.mp4 b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Calibrate.mp4 new file mode 100644 index 00000000..1a69fc8a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Calibrate.mp4 differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CalibrateMessage.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CalibrateMessage.nib new file mode 100644 index 00000000..11d40872 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CalibrateMessage.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CampusActionsCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CampusActionsCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..09d41cf5 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CampusActionsCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CampusActionsCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CampusActionsCell.nib/runtime.nib new file mode 100644 index 00000000..09d41cf5 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CampusActionsCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CampusDetailsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CampusDetailsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..a35a1507 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CampusDetailsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CampusDetailsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CampusDetailsViewController.nib/runtime.nib new file mode 100644 index 00000000..5a6273b1 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CampusDetailsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoriesCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoriesCell.nib new file mode 100644 index 00000000..23ded5bb Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoriesCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoriesViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoriesViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..45eebbfb Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoriesViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoriesViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoriesViewController.nib/runtime.nib new file mode 100644 index 00000000..d11c72fa Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoriesViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryCollectionViewCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryCollectionViewCell.nib new file mode 100644 index 00000000..4f689c95 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryCollectionViewCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryResultCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryResultCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..acd75d39 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryResultCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryResultCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryResultCell.nib/runtime.nib new file mode 100644 index 00000000..e8f47e7b Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryResultCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryResultsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryResultsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..4fd53d2e Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryResultsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryResultsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryResultsViewController.nib/runtime.nib new file mode 100644 index 00000000..a48b540d Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryResultsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryTableViewCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryTableViewCell.nib new file mode 100644 index 00000000..6effdc89 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/CategoryTableViewCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ChangingFloor.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ChangingFloor.nib new file mode 100644 index 00000000..0a8021e0 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ChangingFloor.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ConnectedVenueCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ConnectedVenueCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..58a2b0b8 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ConnectedVenueCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ConnectedVenueCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ConnectedVenueCell.nib/runtime.nib new file mode 100644 index 00000000..19cc7c03 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ConnectedVenueCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ContactDetailsCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ContactDetailsCell.nib new file mode 100644 index 00000000..8e78feb0 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ContactDetailsCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DayScheduleCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DayScheduleCell.nib new file mode 100644 index 00000000..e2aa3866 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DayScheduleCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DetailsHeaderCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DetailsHeaderCell.nib new file mode 100644 index 00000000..4091bd4e Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DetailsHeaderCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DetailsTextCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DetailsTextCell.nib new file mode 100644 index 00000000..a91cae93 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DetailsTextCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectionCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectionCell.nib new file mode 100644 index 00000000..09a93ac3 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectionCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectionCollectionViewCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectionCollectionViewCell.nib new file mode 100644 index 00000000..f969e369 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectionCollectionViewCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectionsFooterCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectionsFooterCell.nib new file mode 100644 index 00000000..9dd4175d Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectionsFooterCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectionsStepper.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectionsStepper.nib new file mode 100644 index 00000000..e782274a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectionsStepper.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectoryCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectoryCell.nib new file mode 100644 index 00000000..64bf450a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectoryCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectoryViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectoryViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..065858a0 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectoryViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectoryViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectoryViewController.nib/runtime.nib new file mode 100644 index 00000000..354a4615 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/DirectoryViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteCollectionViewCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteCollectionViewCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..aa697bc5 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteCollectionViewCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteCollectionViewCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteCollectionViewCell.nib/runtime.nib new file mode 100644 index 00000000..0fbfc45d Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteCollectionViewCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteDetailsViewController.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteDetailsViewController.nib new file mode 100644 index 00000000..acb09075 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteDetailsViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteTableViewCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteTableViewCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..077aa457 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteTableViewCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteTableViewCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteTableViewCell.nib/runtime.nib new file mode 100644 index 00000000..44f9079c Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoriteTableViewCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoritesCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoritesCell.nib new file mode 100644 index 00000000..d6a3f061 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoritesCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoritesViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoritesViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..f38b22f9 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoritesViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoritesViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoritesViewController.nib/runtime.nib new file mode 100644 index 00000000..f5cbe191 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FavoritesViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FloorCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FloorCell.nib new file mode 100644 index 00000000..e6cf98fc Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FloorCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FloorIndicatorView.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FloorIndicatorView.nib new file mode 100644 index 00000000..72a5e52a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FloorIndicatorView.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FloorSelectorHeaderView.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FloorSelectorHeaderView.nib new file mode 100644 index 00000000..32ef9051 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FloorSelectorHeaderView.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FloorSelectorViewController.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FloorSelectorViewController.nib new file mode 100644 index 00000000..ca2fccb6 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/FloorSelectorViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/GateCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/GateCell.nib new file mode 100644 index 00000000..d5e998fd Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/GateCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/GateSelectorViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/GateSelectorViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..786137f5 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/GateSelectorViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/GateSelectorViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/GateSelectorViewController.nib/runtime.nib new file mode 100644 index 00000000..42cc527f Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/GateSelectorViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Headers/PenNavUI-Swift.h b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Headers/PenNavUI-Swift.h new file mode 100644 index 00000000..344b72fc --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Headers/PenNavUI-Swift.h @@ -0,0 +1,2102 @@ +#if 0 +#elif defined(__arm64__) && __arm64__ +// Generated by Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1) +#ifndef PENNAVUI_SWIFT_H +#define PENNAVUI_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wnon-modular-include-in-framework-module" +#if defined(__arm64e__) && __has_include() +# include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +# ifndef __ptrauth_swift_value_witness_function_pointer +# define __ptrauth_swift_value_witness_function_pointer(x) +# endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop +#endif +#pragma clang diagnostic pop +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef unsigned char char8_t; +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +# if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +# else +# define SWIFT_RUNTIME_NAME(X) +# endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +# if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +# else +# define SWIFT_COMPILE_NAME(X) +# endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +# if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +# else +# define SWIFT_METHOD_FAMILY(X) +# endif +#endif +#if !defined(SWIFT_NOESCAPE) +# if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +# else +# define SWIFT_NOESCAPE +# endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +# if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +# else +# define SWIFT_RELEASES_ARGUMENT +# endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +# if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +# else +# define SWIFT_WARN_UNUSED_RESULT +# endif +#endif +#if !defined(SWIFT_NORETURN) +# if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +# else +# define SWIFT_NORETURN +# endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +# if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +# else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +# endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +# define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +# define SWIFT_NOEXCEPT noexcept +#else +# define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import CoreData; +@import CoreFoundation; +@import CoreLocation; +@import Foundation; +@import ObjectiveC; +@import Penguin; +@import QuartzCore; +@import UIKit; +@import UIUtilities; +#endif + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" +#pragma clang diagnostic ignored "-Wunsafe-buffer-usage" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="PenNavUI",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) + +/// Asynchronous operation base class +/// This is abstract to class performs all of the necessary KVN of isFinished and +/// isExecuting for a concurrent Operation subclass. You can subclass this and +/// implement asynchronous operations. All you must do is: +///
    +///
  • +/// override main() with the tasks that initiate the asynchronous task; +///
  • +///
  • +/// call completeOperation() function when the asynchronous task is done; +///
  • +///
  • +/// optionally, periodically check self.cancelled status, performing any clean-up +/// necessary and then ensuring that completeOperation() is called; or +/// override cancel method, calling super.cancel() and then cleaning-up +/// and ensuring completeOperation() is called. +///
  • +///
+SWIFT_CLASS("_TtC8PenNavUI21AsynchronousOperation") +@interface AsynchronousOperation : NSOperation +@property (nonatomic, readonly, getter=isAsynchronous) BOOL asynchronous; +@property (nonatomic, readonly, getter=isExecuting) BOOL executing; +@property (nonatomic, readonly, getter=isFinished) BOOL finished; +- (void)start; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +@class UITapGestureRecognizer; +@class NSCoder; +/// A view that presents a backdrop interface behind a panel. +SWIFT_CLASS_NAMED("BackdropView") +@interface FloatingPanelBackdropView : UIView +/// The gesture recognizer for tap gestures to dismiss a panel. +/// By default, this gesture recognizer is disabled as following the default behavior of iOS modalities. +/// To dismiss a panel by tap gestures on the backdrop, dismissalTapGestureRecognizer.isEnabled is set to true. +@property (nonatomic, strong) UITapGestureRecognizer * _Nonnull dismissalTapGestureRecognizer; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE; +- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE; +@end + +@class NSEntityDescription; +@class NSManagedObjectContext; +SWIFT_CLASS_NAMED("CachedVenue") +@interface CachedVenue : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@class NSString; +@interface CachedVenue (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic) int16_t id; +@property (nonatomic, copy) NSString * _Nullable coverImage; +@property (nonatomic, copy) NSString * _Nullable address; +@property (nonatomic, copy) NSString * _Nullable buildingNumber; +@property (nonatomic, copy) NSString * _Nullable phone; +@property (nonatomic, copy) NSString * _Nullable email; +@property (nonatomic, copy) NSString * _Nullable website; +@property (nonatomic) int16_t floorCount; +@end + +SWIFT_CLASS_NAMED("CampaignTracking") +@interface CampaignTracking : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@class NSDate; +@interface CampaignTracking (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic) int16_t campaignId; +@property (nonatomic, copy) NSDate * _Nullable lastNotificationDate; +@end + +SWIFT_CLASS_NAMED("FavoriteCacheData") +@interface FavoriteCacheData : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@class SharedLocationCacheData; +@interface FavoriteCacheData (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic, copy) NSString * _Nullable createDate; +@property (nonatomic, copy) NSString * _Nullable deviceId; +@property (nonatomic, copy) NSString * _Nullable type; +@property (nonatomic) double distance; +@property (nonatomic, copy) NSString * _Nullable id; +@property (nonatomic, copy) NSString * _Nullable label; +@property (nonatomic) int16_t poiId; +@property (nonatomic, copy) NSString * _Nullable userName; +@property (nonatomic, strong) SharedLocationCacheData * _Nullable location; +@end + +enum FloatingPanelLayoutReferenceGuide : NSInteger; +@class FloatingPanelController; +enum FloatingPanelPosition : NSInteger; +@class NSLayoutConstraint; +/// An interface for implementing custom layout anchor objects. +SWIFT_PROTOCOL("_TtP8PenNavUI28FloatingPanelLayoutAnchoring_") +@protocol FloatingPanelLayoutAnchoring +@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide; +- (NSArray * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)fpc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT; +@end + +@class UILayoutGuide; +enum FloatingPanelLayoutContentBoundingGuide : NSInteger; +/// An object that defines how to settles a panel with a layout guide of a content view. +SWIFT_CLASS("_TtC8PenNavUI33FloatingPanelAdaptiveLayoutAnchor") +@interface FloatingPanelAdaptiveLayoutAnchor : NSObject +/// Returns a layout anchor with the specified offset by an absolute value to display a panel with its intrinsic content size. +/// The offset is an amount to offset a position of panel that displays the entire content of the specified guide from an edge of +/// the reference guide. The edge refers to a panel positioning. +/// contentBoundingGuide restricts the content size which a panel displays. For example, given referenceGuide is .superview and contentBoundingGuide is .safeArea for a bottom positioned panel, the panel content is laid out inside the superview of the view of FloatingPanelController(not its safe area), but its content size is limited to its safe area size. Normally both of referenceGuide and contentBoundingGuide are specified with the same rectangle area. +/// warning: +/// If contentBoundingGuide is set to none, the panel may expand out of the screen size, depending on the intrinsic size of its content. +/// \param absoluteOffset An absolute offset from the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel. +/// +/// \param contentLayout The content layout guide to calculate the content size in the panel. +/// +/// \param referenceGuide The rectangular area to lay out the content of a panel. If it’s set to .safeArea, the panel content displays inside the safe area of its FloatingPanelController‘s view. This argument doesn’t limit its content size. +/// +/// \param contentBoundingGuide The rectangular area to restrict the content size of a panel in the main dimension(i.e. y axis is the main dimension for a bottom panel). +/// +- (nonnull instancetype)initWithAbsoluteOffset:(CGFloat)offset contentLayout:(UILayoutGuide * _Nonnull)contentLayout referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide contentBoundingGuide:(enum FloatingPanelLayoutContentBoundingGuide)contentBoundingGuide OBJC_DESIGNATED_INITIALIZER; +/// Returns a layout anchor with the specified offset by a fractional value to display a panel with its intrinsic content size. +/// The offset value is a floating-point number in the range 0.0 to 1.0, where 0.0 represents the full content +/// is displayed and 0.5 represents the half of content is displayed. +/// contentBoundingGuide restricts the content size which a panel displays. For example, given referenceGuide is .superview and contentBoundingGuide is .safeArea for a bottom positioned panel, the panel content is laid out inside the superview of the view of FloatingPanelController(not its safe area), but its content size is limited to its safe area size. Normally both of referenceGuide and contentBoundingGuide are specified with the same rectangle area. +/// warning: +/// If contentBoundingGuide is set to none, the panel may expand out of the screen size, depending on the intrinsic size of its content. +/// \param fractionalOffset A fractional offset of the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel. +/// +/// \param contentLayout The content layout guide to calculate the content size in the panel. +/// +/// \param referenceGuide The rectangular area to lay out the content of a panel. If it’s set to .safeArea, the panel content displays inside the safe area of its FloatingPanelController‘s view. This argument doesn’t limit its content size. +/// +/// \param contentBoundingGuide The rectangular area to restrict the content size of a panel in the main dimension(i.e. y axis is the main dimension for a bottom panel). +/// +- (nonnull instancetype)initWithFractionalOffset:(CGFloat)offset contentLayout:(UILayoutGuide * _Nonnull)contentLayout referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide contentBoundingGuide:(enum FloatingPanelLayoutContentBoundingGuide)contentBoundingGuide OBJC_DESIGNATED_INITIALIZER; +@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide; +@property (nonatomic, readonly) enum FloatingPanelLayoutContentBoundingGuide contentBoundingGuide; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@interface FloatingPanelAdaptiveLayoutAnchor (SWIFT_EXTENSION(PenNavUI)) +- (NSArray * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT; +@end + +@class FloatingPanelState; +/// An interface for generating behavior information to fine-tune the behavior of a panel. +SWIFT_PROTOCOL("_TtP8PenNavUI21FloatingPanelBehavior_") +@protocol FloatingPanelBehavior +@optional +/// A floating-point value that determines the rate of oscillation magnitude reduction after the user lifts their finger. +/// The oscillation magnitude to attract a panel to an anchor can be adjusted this value between 0.979 and 1.0 +/// in increments of 0.001. When this value is around 0.979, the attraction uses a critically damped spring system. +/// When this value is between 0.978 and 1.0, it uses a underdamped spring system with a damping ratio computed by +/// this value. You shouldn’t return less than 0.979 because the system is overdamped. If the pan gesture’s velocity +/// is less than 300, this value is ignored and a panel applies a critically damped system. +@property (nonatomic, readonly) CGFloat springDecelerationRate; +/// A floating-point value that determines the approximate time until a panel stops to an anchor after the user lifts their finger. +@property (nonatomic, readonly) CGFloat springResponseTime; +/// Returns a deceleration rate to calculate a target position projected a dragging momentum. +/// The default implementation of this method returns the normal deceleration rate of UIScrollView. +@property (nonatomic, readonly) CGFloat momentumProjectionRate; +/// Asks the behavior if a panel should project a momentum of a user interaction to move the +/// proposed state. +/// The default implementation of this method returns false. This method is called for called +/// for all states defined by the current layout object. +- (BOOL)shouldProjectMomentum:(FloatingPanelController * _Nonnull)fpc to:(FloatingPanelState * _Nonnull)proposedState SWIFT_WARN_UNUSED_RESULT; +/// Returns the progress to redirect to the previous position. +/// The progress is represented by a floating-point value between 0.0 and 1.0, inclusive, where 1.0 indicates a panel is impossible to move to the next position. The default value is 0.5. Values less than 0.0 and greater than 1.0 are pinned to those limits. +- (CGFloat)redirectionalProgress:(FloatingPanelController * _Nonnull)fpc from:(FloatingPanelState * _Nonnull)from to:(FloatingPanelState * _Nonnull)to SWIFT_WARN_UNUSED_RESULT; +/// Asks the behavior whether the rubber band effect is enabled in moving over a given edge of the surface view. +/// This method allows a panel to activate the rubber band effect to a given edge of the surface view. By default, the effect is disabled. +- (BOOL)allowsRubberBandingFor:(UIRectEdge)edge SWIFT_WARN_UNUSED_RESULT; +/// Returns the velocity threshold for the default interactive removal gesture. +/// In case FloatingPanel/FloatingPanelControllerDelegate/floatingPanel(_:shouldRemoveAt:with:) is implemented, this value will not be used. The default value of FloatingPanelDefaultBehavior is 5.5 +@property (nonatomic, readonly) CGFloat removalInteractionVelocityThreshold; +@end + +/// An interface for generating layout information for a panel. +SWIFT_PROTOCOL("_TtP8PenNavUI19FloatingPanelLayout_") +@protocol FloatingPanelLayout +/// Returns the position of a panel in a FloatingPanelController view . +@property (nonatomic, readonly) enum FloatingPanelPosition position; +/// Returns the initial state when a panel is presented. +@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull initialState; +/// Returns the layout anchors to specify the snapping locations for each state. +@property (nonatomic, readonly, copy) NSDictionary> * _Nonnull anchors; +@optional +/// Returns layout constraints to determine the cross dimension of a panel. +- (NSArray * _Nonnull)prepareLayoutWithSurfaceView:(UIView * _Nonnull)surfaceView in:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT; +/// Returns the alpha value of the backdrop of a panel for each state. +- (CGFloat)backdropAlphaFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +@end + +/// A layout object that lays out a panel in bottom sheet style. +SWIFT_CLASS("_TtC8PenNavUI25FloatingPanelBottomLayout") +@interface FloatingPanelBottomLayout : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull initialState; +@property (nonatomic, readonly, copy) NSDictionary> * _Nonnull anchors; +@property (nonatomic, readonly) enum FloatingPanelPosition position; +- (NSArray * _Nonnull)prepareLayoutWithSurfaceView:(UIView * _Nonnull)surfaceView in:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT; +- (CGFloat)backdropAlphaFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +@end + +@protocol FloatingPanelControllerDelegate; +@class FloatingPanelSurfaceView; +@class UIScrollView; +@class FloatingPanelPanGestureRecognizer; +enum ContentInsetAdjustmentBehavior : NSInteger; +enum ContentMode : NSInteger; +@class NSBundle; +@protocol UIViewControllerTransitionCoordinator; +@class UITraitCollection; +/// A container view controller to display a panel to present contents in parallel as a user wants. +SWIFT_CLASS("_TtC8PenNavUI23FloatingPanelController") +@interface FloatingPanelController : UIViewController +/// The delegate of a panel controller object. +@property (nonatomic, weak) id _Nullable delegate; +/// Returns the surface view managed by the controller object. It’s the same as self.view. +@property (nonatomic, readonly, strong) FloatingPanelSurfaceView * _Null_unspecified surfaceView; +/// Returns the backdrop view managed by the controller object. +@property (nonatomic, readonly, strong) FloatingPanelBackdropView * _Null_unspecified backdropView; +/// Returns the scroll view that the controller tracks. +@property (nonatomic, readonly, weak) UIScrollView * _Nullable trackingScrollView; +@property (nonatomic, readonly, strong) FloatingPanelPanGestureRecognizer * _Nonnull panGestureRecognizer; +/// The current position of a panel controller’s contents. +@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull state; +/// A Boolean value indicating whether a panel controller is attracting the surface to a state anchor. +@property (nonatomic, readonly) BOOL isAttracting; +/// The layout object that the controller manages +/// You need to call invalidateLayout() if you want to apply a new layout object into the panel +/// immediately. +@property (nonatomic, strong) id _Nonnull layout; +/// The behavior object that the controller manages +@property (nonatomic, strong) id _Nonnull behavior; +/// The content insets of the tracking scroll view derived from this safe area +@property (nonatomic, readonly) UIEdgeInsets adjustedContentInsets; +/// The behavior for determining the adjusted content offsets. +/// This property specifies how the content area of the tracking scroll view is modified using adjustedContentInsets. The default value of this property is FloatingPanelController.ContentInsetAdjustmentBehavior.always. +@property (nonatomic) enum ContentInsetAdjustmentBehavior contentInsetAdjustmentBehavior; +/// A Boolean value that determines whether the removal interaction is enabled. +@property (nonatomic, setter=setRemovalInteractionEnabled:) BOOL isRemovalInteractionEnabled; +/// The view controller responsible for the content portion of a panel. +@property (nonatomic, strong) UIViewController * _Nullable contentViewController; +/// Constants that define how a panel content fills in the surface. +@property (nonatomic) enum ContentMode contentMode; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil SWIFT_UNAVAILABLE; +/// Initialize a newly created panel controller. +- (nonnull instancetype)initWithDelegate:(id _Nullable)delegate OBJC_DESIGNATED_INITIALIZER; +/// Creates the view that the controller manages. +- (void)loadView; +- (void)viewDidLayoutSubviews; +- (void)viewDidAppear:(BOOL)animated; +- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id _Nonnull)coordinator; +- (void)willTransitionToTraitCollection:(UITraitCollection * _Nonnull)newCollection withTransitionCoordinator:(id _Nonnull)coordinator; +- (void)viewWillDisappear:(BOOL)animated; +@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForStatusBarStyle; +@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForStatusBarHidden; +@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForScreenEdgesDeferringSystemGestures; +@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForHomeIndicatorAutoHidden; +/// Shows the surface view at the initial position defined by the current layout +/// \param animated Pass true to animate the presentation; otherwise, pass false. +/// +/// \param completion The block to execute after the presentation finishes. This block has no return value and takes no parameters. You may specify nil for this parameter. +/// +- (void)show:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Hides the surface view to the hidden position +- (void)hide:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Adds the view managed by the controller as a child of the specified view controller. +/// \param parent A parent view controller object that displays FloatingPanelController’s view. A container view controller object isn’t applicable. +/// +/// \param viewIndex Insert the surface view managed by the controller below the specified view index. By default, the surface view will be added to the end of the parent list of subviews. +/// +/// \param animated Pass true to animate the presentation; otherwise, pass false. +/// +/// \param completion The block to execute after the presentation finishes. This block has no return value and takes no parameters. You may specify nil for this parameter. +/// +- (void)addPanelToParent:(UIViewController * _Nonnull)parent at:(NSInteger)viewIndex animated:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Removes the controller and the managed view from its parent view controller +/// \param animated Pass true to animate the presentation; otherwise, pass false. +/// +/// \param completion The block to execute after the view controller is dismissed. This block has no return value and takes no parameters. You may specify nil for this parameter. +/// +- (void)removePanelFromParent:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Moves the position to the specified position. +/// \param to Pass a FloatingPanelPosition value to move the surface view to the position. +/// +/// \param animated Pass true to animate the presentation; otherwise, pass false. +/// +/// \param completion The block to execute after the view controller has finished moving. This block has no return value and takes no parameters. You may specify nil for this parameter. +/// +- (void)moveToState:(FloatingPanelState * _Nonnull)to animated:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Tracks the specified scroll view to correspond with the scroll. +/// \param scrollView Specify a scroll view to continuously and seamlessly work in concert with interactions of the surface view +/// +- (void)trackScrollView:(UIScrollView * _Nonnull)scrollView; +/// Cancel tracking the specify scroll view. +- (void)untrackScrollView:(UIScrollView * _Nonnull)scrollView; +- (BOOL)accessibilityPerformEscape SWIFT_WARN_UNUSED_RESULT; +/// Invalidates all layout information of the panel and apply the layout property into it immediately. +/// This lays out subviews of the view that the controller manages with the layout property by +/// calling the view’s layoutIfNeeded(). Thus this method can be called in an animation block to +/// animate the panel’s changes. +/// If the controller has a delegate object, this will lay them out using the layout object returned by +/// floatingPanel(_:layoutFor:) delegate method for the current UITraitCollection. +- (void)invalidateLayout; +/// Returns the surface’s position in a panel controller’s view for the specified state. +/// If a panel is top positioned, this returns a point of the bottom-left corner of the surface. If it is left positioned +/// this returns a point of top-right corner of the surface. If it is bottom or right positioned, this returns a point +/// of the top-left corner of the surface. +- (CGPoint)surfaceLocationFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +/// The surface’s position in a panel controller’s view. +/// If a panel is top positioned, this returns a point of the bottom-left corner of the surface. If it is left positioned +/// this returns a point of top-right corner of the surface. If it is bottom or right positioned, this returns a point +/// of the top-left corner of the surface. +@property (nonatomic) CGPoint surfaceLocation; +@end + +/// Constants indicating how safe area insets are added to the adjusted content inset. +typedef SWIFT_ENUM(NSInteger, ContentInsetAdjustmentBehavior, open) { + ContentInsetAdjustmentBehaviorAlways = 0, + ContentInsetAdjustmentBehaviorNever = 1, +}; + +/// A flag used to determine how the controller object lays out the content view when the surface position changes. +typedef SWIFT_ENUM(NSInteger, ContentMode, open) { +/// The option to fix the content to keep the height of the top most position. + ContentModeStatic = 0, +/// The option to scale the content to fit the bounds of the root view by changing the surface position. + ContentModeFitToBounds = 1, +}; + +@class UIViewPropertyAnimator; +/// A set of methods implemented by the delegate of a panel controller allows the adopting delegate to respond to +/// messages from the FloatingPanelController class and thus respond to, and in some affect, operations such as +/// dragging, attracting a panel, layout of a panel and the content, and transition animations. +SWIFT_PROTOCOL("_TtP8PenNavUI31FloatingPanelControllerDelegate_") +@protocol FloatingPanelControllerDelegate +@optional +/// Returns a FloatingPanelLayout object. If you use the default one, you can use a FloatingPanelBottomLayout object. +- (id _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc layoutForTraitCollection:(UITraitCollection * _Nonnull)newCollection SWIFT_WARN_UNUSED_RESULT; +/// Returns a FloatingPanelLayout object. If you use the default one, you can use a FloatingPanelBottomLayout object. +- (id _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc layoutForSize:(CGSize)size SWIFT_WARN_UNUSED_RESULT; +/// Returns a UIViewPropertyAnimator object to add/present the panel to a position. +/// Default is the spring animation with 0.25 secs. +- (UIViewPropertyAnimator * _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc animatorForPresentingToState:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +/// Returns a UIViewPropertyAnimator object to remove/dismiss a panel from a position. +/// Default is the spring animator with 0.25 secs. +- (UIViewPropertyAnimator * _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc animatorForDismissingWithVelocity:(CGVector)velocity SWIFT_WARN_UNUSED_RESULT; +/// Called when a panel has changed to a new state. +/// This can be called inside an animation block for presenting, dismissing a panel or moving a panel with your +/// animation. So any view properties set inside this function will be automatically animated alongside a panel. +- (void)floatingPanelDidChangeState:(FloatingPanelController * _Nonnull)fpc; +/// Asks the delegate if dragging should begin by the pan gesture recognizer. +- (BOOL)floatingPanelShouldBeginDragging:(FloatingPanelController * _Nonnull)fpc SWIFT_WARN_UNUSED_RESULT; +/// Called while the user drags the surface or the surface moves to a state anchor. +- (void)floatingPanelDidMove:(FloatingPanelController * _Nonnull)fpc; +/// Called on start of dragging (may require some time and or distance to move) +- (void)floatingPanelWillBeginDragging:(FloatingPanelController * _Nonnull)fpc; +/// Called on finger up if the user dragged. velocity is in points/second. +- (void)floatingPanelWillEndDragging:(FloatingPanelController * _Nonnull)fpc withVelocity:(CGPoint)velocity targetState:(FloatingPanelState * _Nonnull * _Nonnull)targetState; +/// Called on finger up if the user dragged. +/// If attract is true, the panel continues moving towards the nearby state +/// anchor. Otherwise, it stops at the closest state anchor. +/// note: +/// If attract is false, FloatingPanelController.state property has +/// already changed to the closest anchor’s state by the time this delegate method +/// is called. +- (void)floatingPanelDidEndDragging:(FloatingPanelController * _Nonnull)fpc willAttract:(BOOL)attract; +/// Called when it is about to be attracted to a state anchor. +- (void)floatingPanelWillBeginAttracting:(FloatingPanelController * _Nonnull)fpc to:(FloatingPanelState * _Nonnull)state; +/// Called when attracting it is completed. +- (void)floatingPanelDidEndAttracting:(FloatingPanelController * _Nonnull)fpc; +/// Asks the delegate whether a panel should be removed when dragging ended at the specified location +/// This delegate method is called only where FloatingPanel/FloatingPanelController/isRemovalInteractionEnabled is true. +/// The velocity vector is calculated from the distance to a point of the hidden state and the pan gesture’s velocity. +- (BOOL)floatingPanel:(FloatingPanelController * _Nonnull)fpc shouldRemoveAtLocation:(CGPoint)location withVelocity:(CGVector)velocity SWIFT_WARN_UNUSED_RESULT; +/// Called on start to remove its view controller from the parent view controller. +- (void)floatingPanelWillRemove:(FloatingPanelController * _Nonnull)fpc; +/// Called when a panel is removed from the parent view controller. +- (void)floatingPanelDidRemove:(FloatingPanelController * _Nonnull)fpc; +/// Asks the delegate for a content offset of the tracking scroll view to be pinned when a panel moves +/// If you do not implement this method, the controller uses a value of the content offset plus the content insets +/// of the tracked scroll view. Your implementation of this method can return a value for a navigation bar with a large +/// title, for example. +/// This method will not be called if the controller doesn’t track any scroll view. +- (CGPoint)floatingPanel:(FloatingPanelController * _Nonnull)fpc contentOffsetForPinningScrollView:(UIScrollView * _Nonnull)trackingScrollView SWIFT_WARN_UNUSED_RESULT; +/// Returns a Boolean value that determines whether the tracking scroll view should +/// scroll or not +/// If you return true, the scroll content scrolls when its scroll position is not +/// at the top of the content. If the delegate doesn’t implement this method, its +/// content can be scrolled only in the most expanded state. +/// Basically, the decision to scroll is based on the state property like the +/// following code. +/// \code +/// func floatingPanel( +/// _ fpc: FloatingPanelController, +/// shouldAllowToScroll scrollView: UIScrollView, +/// in state: FloatingPanelState +/// ) -> Bool { +/// return state == .full || state == .half +/// } +/// +/// \endcodeattention: +/// It is recommended that this method always returns the most expanded state(i.e. +/// .full). If it excludes the state, the panel might do unexpected behaviors. +- (BOOL)floatingPanel:(FloatingPanelController * _Nonnull)fpc shouldAllowToScroll:(UIScrollView * _Nonnull)scrollView in:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +@end + +/// An object that defines how to settles a panel with the intrinsic size for a content. +SWIFT_CLASS("_TtC8PenNavUI34FloatingPanelIntrinsicLayoutAnchor") +@interface FloatingPanelIntrinsicLayoutAnchor : NSObject +/// Returns a layout anchor with the specified offset by an absolute value and reference guide for a panel. +/// The offset is an amount to offset a position of panel that displays the entire content from an edge of +/// the reference guide. The edge refers to a panel positioning. +/// \param absoluteOffset An absolute offset from the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel. +/// +/// \param referenceGuide The rectangular area to lay out the content. If it’s set to .safeArea, the panel content lays out inside the safe area of its FloatingPanelController’s view. +/// +- (nonnull instancetype)initWithAbsoluteOffset:(CGFloat)offset referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER; +/// Returns a layout anchor with the specified offset by a fractional value and reference guide for a panel. +/// The offset value is a floating-point number in the range 0.0 to 1.0, where 0.0 represents the full content +/// is displayed and 0.5 represents the half of content is displayed. +/// \param fractionalOffset A fractional offset of the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel. +/// +/// \param referenceGuide The rectangular area to lay out the content. If it’s set to .safeArea, the panel content lays out inside the safe area of its FloatingPanelController’s view. +/// +- (nonnull instancetype)initWithFractionalOffset:(CGFloat)offset referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER; +/// The reference rectangle area for the offset +@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@interface FloatingPanelIntrinsicLayoutAnchor (SWIFT_EXTENSION(PenNavUI)) +- (NSArray * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT; +@end + +enum FloatingPanelReferenceEdge : NSInteger; +/// An object that defines how to settles a panel with insets from an edge of a reference rectangle. +SWIFT_CLASS("_TtC8PenNavUI25FloatingPanelLayoutAnchor") +@interface FloatingPanelLayoutAnchor : NSObject +/// Returns a layout anchor with the specified inset by an absolute value, edge and reference guide for a panel. +/// The inset is an amount to inset a panel from an edge of the reference guide. The edge refers to a panel +/// positioning. +/// \param absoluteOffset An absolute offset to attach the panel from the edge. +/// +/// \param edge Specify the edge of FloatingPanelController’s view. This is the staring point of the offset. +/// +/// \param referenceGuide The rectangular area to lay out the content. If it’s set to .safeArea, the panel content lays out inside the safe area of its FloatingPanelController’s view. +/// +- (nonnull instancetype)initWithAbsoluteInset:(CGFloat)absoluteInset edge:(enum FloatingPanelReferenceEdge)edge referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER; +/// Returns a layout anchor with the specified inset by a fractional value, edge and reference guide for a panel. +/// The inset is an amount to inset a panel from the edge of the specified reference guide. The value is +/// a floating-point number in the range 0.0 to 1.0, where 0.0 represents zero distance from the edge and +/// 1.0 represents a distance to the opposite edge. +/// \param fractionalOffset A fractional value of the size of FloatingPanelController’s view to attach the panel from the edge. +/// +/// \param edge Specify the edge of FloatingPanelController’s view. This is the staring point of the offset. +/// +/// \param referenceGuide The rectangular area to lay out the content. If it’s set to .safeArea, the panel content lays out inside the safe area of its FloatingPanelController’s view. +/// +- (nonnull instancetype)initWithFractionalInset:(CGFloat)fractionalInset edge:(enum FloatingPanelReferenceEdge)edge referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER; +/// The reference rectangle area for the inset. +@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@interface FloatingPanelLayoutAnchor (SWIFT_EXTENSION(PenNavUI)) +- (NSArray * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT; +@end + +/// A representation to specify a bounding box which limit the content size of a panel. +typedef SWIFT_ENUM(NSInteger, FloatingPanelLayoutContentBoundingGuide, open) { + FloatingPanelLayoutContentBoundingGuideNone = 0, + FloatingPanelLayoutContentBoundingGuideSuperview = 1, + FloatingPanelLayoutContentBoundingGuideSafeArea = 2, +}; + +/// A representation to specify a rectangular area to lay out a panel. +typedef SWIFT_ENUM(NSInteger, FloatingPanelLayoutReferenceGuide, open) { + FloatingPanelLayoutReferenceGuideSuperview = 0, + FloatingPanelLayoutReferenceGuideSafeArea = 1, +}; + +@class UITouch; +@class UIEvent; +@protocol UIGestureRecognizerDelegate; +/// A gesture recognizer that looks for panning (dragging) gestures in a panel. +SWIFT_CLASS("_TtC8PenNavUI33FloatingPanelPanGestureRecognizer") +@interface FloatingPanelPanGestureRecognizer : UIPanGestureRecognizer +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +- (void)touchesBegan:(NSSet * _Nonnull)touches withEvent:(UIEvent * _Nonnull)event; +/// The delegate of the gesture recognizer. +/// note: +/// The delegate is used by FloatingPanel itself. If you set your own delegate object, an +/// exception is raised. If you want to handle the methods of UIGestureRecognizerDelegate, you can use delegateProxy. +@property (nonatomic, weak) id _Nullable delegate; +- (nonnull instancetype)initWithTarget:(id _Nullable)target action:(SEL _Nullable)action SWIFT_UNAVAILABLE; +@end + +/// Constants describing the position of a panel in a screen +typedef SWIFT_ENUM(NSInteger, FloatingPanelPosition, open) { + FloatingPanelPositionTop = 0, + FloatingPanelPositionLeft = 1, + FloatingPanelPositionBottom = 2, + FloatingPanelPositionRight = 3, +}; + +/// Constants that specify the edge of the container of a panel. +typedef SWIFT_ENUM(NSInteger, FloatingPanelReferenceEdge, open) { + FloatingPanelReferenceEdgeTop = 0, + FloatingPanelReferenceEdgeLeft = 1, + FloatingPanelReferenceEdgeBottom = 2, + FloatingPanelReferenceEdgeRight = 3, +}; + +/// An object that represents the display state of a panel in a screen. +SWIFT_CLASS("_TtC8PenNavUI18FloatingPanelState") +@interface FloatingPanelState : NSObject +- (nonnull instancetype)initWithRawValue:(NSString * _Nonnull)rawValue order:(NSInteger)order OBJC_DESIGNATED_INITIALIZER; +- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +@property (nonatomic, readonly, copy) NSString * _Nonnull debugDescription; +/// A panel state indicates the entire panel is shown. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Full;) ++ (FloatingPanelState * _Nonnull)Full SWIFT_WARN_UNUSED_RESULT; +/// A panel state indicates the half of a panel is shown. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Half;) ++ (FloatingPanelState * _Nonnull)Half SWIFT_WARN_UNUSED_RESULT; +/// A panel state indicates the tip of a panel is shown. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Tip;) ++ (FloatingPanelState * _Nonnull)Tip SWIFT_WARN_UNUSED_RESULT; +/// A panel state indicates it is hidden. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Hidden;) ++ (FloatingPanelState * _Nonnull)Hidden SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +/// A view that presents a grabber handle in the surface of a panel. +SWIFT_CLASS_NAMED("GrabberView") +@interface FloatingPanelGrabberView : UIView +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +- (void)layoutSubviews; +- (UIView * _Nullable)hitTest:(CGPoint)point withEvent:(UIEvent * _Nullable)event SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE; +@end + +SWIFT_CLASS("_TtC8PenNavUI17PIGeofenceManager") +@interface PIGeofenceManager : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +@class CLLocationManager; +@interface PIGeofenceManager (SWIFT_EXTENSION(PenNavUI)) +/// CLLocationManager Delegate - Called when permission changes +- (void)locationManager:(CLLocationManager * _Nonnull)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status; +@end + +@class CLRegion; +@interface PIGeofenceManager (SWIFT_EXTENSION(PenNavUI)) +- (void)locationManager:(CLLocationManager * _Nonnull)manager didEnterRegion:(CLRegion * _Nonnull)region; +@end + +SWIFT_CLASS_NAMED("PenNavStyle") +@interface PenNavStyle : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@class NSData; +@interface PenNavStyle (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic, copy) NSString * _Nullable type; +@property (nonatomic, copy) NSData * _Nullable value; +@end + +SWIFT_CLASS("_TtC8PenNavUI15PenNavUIManager") +@interface PenNavUIManager : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +@interface PenNavUIManager (SWIFT_EXTENSION(PenNavUI)) +- (void)onReadyWithWarning:(enum WarningCode)warning; +- (void)onInitilzationErrorWithError:(enum ErrorCode)error; +- (void)onInitializationProgressChangeWithStatus:(enum SDKOperation)status; +@end + +@interface PenNavUIManager (SWIFT_EXTENSION(PenNavUI)) +- (void)locationManagerDidChangeAuthorization:(CLLocationManager * _Nonnull)manager; +- (void)locationManager:(CLLocationManager * _Nonnull)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status; +@end + +SWIFT_CLASS_NAMED("PenNavUITableUpdate") +@interface PenNavUITableUpdate : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@interface PenNavUITableUpdate (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic, copy) NSString * _Nullable lastUpdateTime; +@property (nonatomic, copy) NSString * _Nullable tableName; +@end + +SWIFT_CLASS_NAMED("SVG") +@interface SVGImage : NSObject +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +SWIFT_CLASS_NAMED("SharedLocationCacheData") +@interface SharedLocationCacheData : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@interface SharedLocationCacheData (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic) int16_t edgeId; +@property (nonatomic) int16_t floorId; +@property (nonatomic) double latitude; +@property (nonatomic) double longitude; +@property (nonatomic, copy) NSString * _Nullable navigationAvoid; +@property (nonatomic) int16_t venueId; +@property (nonatomic) int16_t x; +@property (nonatomic) int16_t y; +@end + +@class UIColor; +@class FloatingPanelSurfaceAppearanceShadow; +/// An object for customizing the appearance of a surface view +SWIFT_CLASS_NAMED("SurfaceAppearance") +@interface FloatingPanelSurfaceAppearance : NSObject +/// The background color of a surface view +@property (nonatomic, strong) UIColor * _Nullable backgroundColor; +/// The radius to use when drawing the top rounded corners. +/// self.contentView is masked with the top rounded corners automatically on iOS 11 and later. +/// On iOS 10, they are not automatically masked because of a UIVisualEffectView issue. See https://forums.developer.apple.com/thread/50854 +@property (nonatomic) CGFloat cornerRadius; +/// Defines the curve used for rendering the rounded corners of the layer. +/// Defaults to .circular. +@property (nonatomic) CALayerCornerCurve _Nonnull cornerCurve SWIFT_AVAILABILITY(ios,introduced=13.0); +/// An array of shadows used to create drop shadows underneath a surface view. +@property (nonatomic, copy) NSArray * _Nonnull shadows; +/// The border width of a surface view. +@property (nonatomic, strong) UIColor * _Nullable borderColor; +/// The border color of a surface view. +@property (nonatomic) CGFloat borderWidth; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +/// An object that represents information to render a shadow +SWIFT_CLASS_NAMED("Shadow") +@interface FloatingPanelSurfaceAppearanceShadow : NSObject +/// A Boolean indicating whether a shadow is displayed. +@property (nonatomic) BOOL hidden; +/// The color of a shadow. +@property (nonatomic, strong) UIColor * _Nonnull color; +/// The offset (in points) of a shadow. +@property (nonatomic) CGSize offset; +/// The opacity of a shadow. +@property (nonatomic) float opacity; +/// The blur radius (in points) used to render a shadow. +@property (nonatomic) CGFloat radius; +/// The inflated amount of a shadow prior to applying the blur. +@property (nonatomic) CGFloat spread; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +/// A view that presents a surface interface in a panel. +SWIFT_CLASS_NAMED("SurfaceView") +@interface FloatingPanelSurfaceView : UIView +/// A FloatingPanelGrabberView object displayed at the top of the surface view. +/// To use a custom grabber, hide this and then add it to the surface view at appropriate point. +@property (nonatomic, readonly, strong) FloatingPanelGrabberView * _Nonnull grabberHandle; +/// Offset of the grabber handle from the interactive edge. +@property (nonatomic) CGFloat grabberHandlePadding; +/// The offset from the move edge to prevent the content scroll +@property (nonatomic) CGFloat grabberAreaOffset; +/// The grabber handle size +/// On left/right positioned panel the width dimension is used as the height of grabberHandle, and vice versa. +@property (nonatomic) CGSize grabberHandleSize; +/// The content view to be assigned a view of the content view controller of FloatingPanelController +@property (nonatomic, weak) UIView * _Nullable contentView; +/// The content insets specifying the insets around the content view. +@property (nonatomic) UIEdgeInsets contentPadding; +@property (nonatomic, strong) UIColor * _Nullable backgroundColor; +/// The appearance settings for a surface view. +@property (nonatomic, strong) FloatingPanelSurfaceAppearance * _Nonnull appearance; +/// The margins to use when laying out the container view wrapping content. +@property (nonatomic) UIEdgeInsets containerMargins; +/// The view that displays an actual surface shape. +/// It renders the background color, border line and top rounded corners, +/// specified by other properties. The reason why they’re not be applied to +/// a content view directly is because it avoids any side-effects to the +/// content view. +@property (nonatomic, readonly, strong) UIView * _Nonnull containerView; +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) BOOL requiresConstraintBasedLayout;) ++ (BOOL)requiresConstraintBasedLayout SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (void)updateConstraints; +- (void)layoutSubviews; +@property (nonatomic, readonly) CGSize intrinsicContentSize; +@end + +@class UICollectionViewLayoutAttributes; +SWIFT_CLASS("_TtC8PenNavUI13TagFlowLayout") +@interface TagFlowLayout : UICollectionViewFlowLayout +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder SWIFT_UNAVAILABLE; +- (NSArray * _Nullable)layoutAttributesForElementsInRect:(CGRect)rect SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) BOOL flipsHorizontallyInOppositeLayoutDirection; +@property (nonatomic, readonly) UIUserInterfaceLayoutDirection developmentLayoutDirection; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@interface UIImage (SWIFT_EXTENSION(PenNavUI)) +- (nullable instancetype)initWithSVGData:(NSData * _Nonnull)svgData; +- (nullable instancetype)initWithContentsOfSVGFile:(NSString * _Nonnull)path; ++ (UIImage * _Nullable)svgNamed:(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT; ++ (UIImage * _Nullable)svgNamed:(NSString * _Nonnull)name inBundle:(NSBundle * _Nonnull)bundle SWIFT_WARN_UNUSED_RESULT; +@end + +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#if defined(__cplusplus) +#endif +#pragma clang diagnostic pop +#endif + +#elif defined(__x86_64__) && __x86_64__ +// Generated by Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1) +#ifndef PENNAVUI_SWIFT_H +#define PENNAVUI_SWIFT_H +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#if defined(__OBJC__) +#include +#endif +#if defined(__cplusplus) +#include +#include +#include +#include +#include +#include +#include +#else +#include +#include +#include +#include +#endif +#if defined(__cplusplus) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wnon-modular-include-in-framework-module" +#if defined(__arm64e__) && __has_include() +# include +#else +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wreserved-macro-identifier" +# ifndef __ptrauth_swift_value_witness_function_pointer +# define __ptrauth_swift_value_witness_function_pointer(x) +# endif +# ifndef __ptrauth_swift_class_method_pointer +# define __ptrauth_swift_class_method_pointer(x) +# endif +#pragma clang diagnostic pop +#endif +#pragma clang diagnostic pop +#endif + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) +typedef unsigned char char8_t; +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif +#if !defined(SWIFT_RUNTIME_NAME) +# if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +# else +# define SWIFT_RUNTIME_NAME(X) +# endif +#endif +#if !defined(SWIFT_COMPILE_NAME) +# if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +# else +# define SWIFT_COMPILE_NAME(X) +# endif +#endif +#if !defined(SWIFT_METHOD_FAMILY) +# if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +# else +# define SWIFT_METHOD_FAMILY(X) +# endif +#endif +#if !defined(SWIFT_NOESCAPE) +# if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +# else +# define SWIFT_NOESCAPE +# endif +#endif +#if !defined(SWIFT_RELEASES_ARGUMENT) +# if __has_attribute(ns_consumed) +# define SWIFT_RELEASES_ARGUMENT __attribute__((ns_consumed)) +# else +# define SWIFT_RELEASES_ARGUMENT +# endif +#endif +#if !defined(SWIFT_WARN_UNUSED_RESULT) +# if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +# else +# define SWIFT_WARN_UNUSED_RESULT +# endif +#endif +#if !defined(SWIFT_NORETURN) +# if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +# else +# define SWIFT_NORETURN +# endif +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif +#if !defined(SWIFT_RESILIENT_CLASS) +# if __has_attribute(objc_class_stub) +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) __attribute__((objc_class_stub)) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_class_stub)) SWIFT_CLASS_NAMED(SWIFT_NAME) +# else +# define SWIFT_RESILIENT_CLASS(SWIFT_NAME) SWIFT_CLASS(SWIFT_NAME) +# define SWIFT_RESILIENT_CLASS_NAMED(SWIFT_NAME) SWIFT_CLASS_NAMED(SWIFT_NAME) +# endif +#endif +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR(_extensibility) __attribute__((enum_extensibility(_extensibility))) +# else +# define SWIFT_ENUM_ATTR(_extensibility) +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name, _extensibility) enum _name : _type _name; enum SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR(_extensibility) SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME, _extensibility) SWIFT_ENUM(_type, _name, _extensibility) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_WEAK_IMPORT) +# define SWIFT_WEAK_IMPORT __attribute__((weak_import)) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED_OBJC) +# if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +# else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +# endif +#endif +#if defined(__OBJC__) +#if !defined(IBSegueAction) +# define IBSegueAction +#endif +#endif +#if !defined(SWIFT_EXTERN) +# if defined(__cplusplus) +# define SWIFT_EXTERN extern "C" +# else +# define SWIFT_EXTERN extern +# endif +#endif +#if !defined(SWIFT_CALL) +# define SWIFT_CALL __attribute__((swiftcall)) +#endif +#if !defined(SWIFT_INDIRECT_RESULT) +# define SWIFT_INDIRECT_RESULT __attribute__((swift_indirect_result)) +#endif +#if !defined(SWIFT_CONTEXT) +# define SWIFT_CONTEXT __attribute__((swift_context)) +#endif +#if !defined(SWIFT_ERROR_RESULT) +# define SWIFT_ERROR_RESULT __attribute__((swift_error_result)) +#endif +#if defined(__cplusplus) +# define SWIFT_NOEXCEPT noexcept +#else +# define SWIFT_NOEXCEPT +#endif +#if !defined(SWIFT_C_INLINE_THUNK) +# if __has_attribute(always_inline) +# if __has_attribute(nodebug) +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) __attribute__((nodebug)) +# else +# define SWIFT_C_INLINE_THUNK inline __attribute__((always_inline)) +# endif +# else +# define SWIFT_C_INLINE_THUNK inline +# endif +#endif +#if defined(_WIN32) +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL __declspec(dllimport) +#endif +#else +#if !defined(SWIFT_IMPORT_STDLIB_SYMBOL) +# define SWIFT_IMPORT_STDLIB_SYMBOL +#endif +#endif +#if defined(__OBJC__) +#if __has_feature(objc_modules) +#if __has_warning("-Watimport-in-framework-header") +#pragma clang diagnostic ignored "-Watimport-in-framework-header" +#endif +@import CoreData; +@import CoreFoundation; +@import CoreLocation; +@import Foundation; +@import ObjectiveC; +@import Penguin; +@import QuartzCore; +@import UIKit; +@import UIUtilities; +#endif + +#endif +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" +#pragma clang diagnostic ignored "-Wdollar-in-identifier-extension" +#pragma clang diagnostic ignored "-Wunsafe-buffer-usage" + +#if __has_attribute(external_source_symbol) +# pragma push_macro("any") +# undef any +# pragma clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in="PenNavUI",generated_declaration))), apply_to=any(function,enum,objc_interface,objc_category,objc_protocol)) +# pragma pop_macro("any") +#endif + +#if defined(__OBJC__) + +/// Asynchronous operation base class +/// This is abstract to class performs all of the necessary KVN of isFinished and +/// isExecuting for a concurrent Operation subclass. You can subclass this and +/// implement asynchronous operations. All you must do is: +///
    +///
  • +/// override main() with the tasks that initiate the asynchronous task; +///
  • +///
  • +/// call completeOperation() function when the asynchronous task is done; +///
  • +///
  • +/// optionally, periodically check self.cancelled status, performing any clean-up +/// necessary and then ensuring that completeOperation() is called; or +/// override cancel method, calling super.cancel() and then cleaning-up +/// and ensuring completeOperation() is called. +///
  • +///
+SWIFT_CLASS("_TtC8PenNavUI21AsynchronousOperation") +@interface AsynchronousOperation : NSOperation +@property (nonatomic, readonly, getter=isAsynchronous) BOOL asynchronous; +@property (nonatomic, readonly, getter=isExecuting) BOOL executing; +@property (nonatomic, readonly, getter=isFinished) BOOL finished; +- (void)start; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +@class UITapGestureRecognizer; +@class NSCoder; +/// A view that presents a backdrop interface behind a panel. +SWIFT_CLASS_NAMED("BackdropView") +@interface FloatingPanelBackdropView : UIView +/// The gesture recognizer for tap gestures to dismiss a panel. +/// By default, this gesture recognizer is disabled as following the default behavior of iOS modalities. +/// To dismiss a panel by tap gestures on the backdrop, dismissalTapGestureRecognizer.isEnabled is set to true. +@property (nonatomic, strong) UITapGestureRecognizer * _Nonnull dismissalTapGestureRecognizer; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)coder SWIFT_UNAVAILABLE; +- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE; +@end + +@class NSEntityDescription; +@class NSManagedObjectContext; +SWIFT_CLASS_NAMED("CachedVenue") +@interface CachedVenue : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@class NSString; +@interface CachedVenue (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic) int16_t id; +@property (nonatomic, copy) NSString * _Nullable coverImage; +@property (nonatomic, copy) NSString * _Nullable address; +@property (nonatomic, copy) NSString * _Nullable buildingNumber; +@property (nonatomic, copy) NSString * _Nullable phone; +@property (nonatomic, copy) NSString * _Nullable email; +@property (nonatomic, copy) NSString * _Nullable website; +@property (nonatomic) int16_t floorCount; +@end + +SWIFT_CLASS_NAMED("CampaignTracking") +@interface CampaignTracking : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@class NSDate; +@interface CampaignTracking (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic) int16_t campaignId; +@property (nonatomic, copy) NSDate * _Nullable lastNotificationDate; +@end + +SWIFT_CLASS_NAMED("FavoriteCacheData") +@interface FavoriteCacheData : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@class SharedLocationCacheData; +@interface FavoriteCacheData (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic, copy) NSString * _Nullable createDate; +@property (nonatomic, copy) NSString * _Nullable deviceId; +@property (nonatomic, copy) NSString * _Nullable type; +@property (nonatomic) double distance; +@property (nonatomic, copy) NSString * _Nullable id; +@property (nonatomic, copy) NSString * _Nullable label; +@property (nonatomic) int16_t poiId; +@property (nonatomic, copy) NSString * _Nullable userName; +@property (nonatomic, strong) SharedLocationCacheData * _Nullable location; +@end + +enum FloatingPanelLayoutReferenceGuide : NSInteger; +@class FloatingPanelController; +enum FloatingPanelPosition : NSInteger; +@class NSLayoutConstraint; +/// An interface for implementing custom layout anchor objects. +SWIFT_PROTOCOL("_TtP8PenNavUI28FloatingPanelLayoutAnchoring_") +@protocol FloatingPanelLayoutAnchoring +@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide; +- (NSArray * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)fpc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT; +@end + +@class UILayoutGuide; +enum FloatingPanelLayoutContentBoundingGuide : NSInteger; +/// An object that defines how to settles a panel with a layout guide of a content view. +SWIFT_CLASS("_TtC8PenNavUI33FloatingPanelAdaptiveLayoutAnchor") +@interface FloatingPanelAdaptiveLayoutAnchor : NSObject +/// Returns a layout anchor with the specified offset by an absolute value to display a panel with its intrinsic content size. +/// The offset is an amount to offset a position of panel that displays the entire content of the specified guide from an edge of +/// the reference guide. The edge refers to a panel positioning. +/// contentBoundingGuide restricts the content size which a panel displays. For example, given referenceGuide is .superview and contentBoundingGuide is .safeArea for a bottom positioned panel, the panel content is laid out inside the superview of the view of FloatingPanelController(not its safe area), but its content size is limited to its safe area size. Normally both of referenceGuide and contentBoundingGuide are specified with the same rectangle area. +/// warning: +/// If contentBoundingGuide is set to none, the panel may expand out of the screen size, depending on the intrinsic size of its content. +/// \param absoluteOffset An absolute offset from the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel. +/// +/// \param contentLayout The content layout guide to calculate the content size in the panel. +/// +/// \param referenceGuide The rectangular area to lay out the content of a panel. If it’s set to .safeArea, the panel content displays inside the safe area of its FloatingPanelController‘s view. This argument doesn’t limit its content size. +/// +/// \param contentBoundingGuide The rectangular area to restrict the content size of a panel in the main dimension(i.e. y axis is the main dimension for a bottom panel). +/// +- (nonnull instancetype)initWithAbsoluteOffset:(CGFloat)offset contentLayout:(UILayoutGuide * _Nonnull)contentLayout referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide contentBoundingGuide:(enum FloatingPanelLayoutContentBoundingGuide)contentBoundingGuide OBJC_DESIGNATED_INITIALIZER; +/// Returns a layout anchor with the specified offset by a fractional value to display a panel with its intrinsic content size. +/// The offset value is a floating-point number in the range 0.0 to 1.0, where 0.0 represents the full content +/// is displayed and 0.5 represents the half of content is displayed. +/// contentBoundingGuide restricts the content size which a panel displays. For example, given referenceGuide is .superview and contentBoundingGuide is .safeArea for a bottom positioned panel, the panel content is laid out inside the superview of the view of FloatingPanelController(not its safe area), but its content size is limited to its safe area size. Normally both of referenceGuide and contentBoundingGuide are specified with the same rectangle area. +/// warning: +/// If contentBoundingGuide is set to none, the panel may expand out of the screen size, depending on the intrinsic size of its content. +/// \param fractionalOffset A fractional offset of the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel. +/// +/// \param contentLayout The content layout guide to calculate the content size in the panel. +/// +/// \param referenceGuide The rectangular area to lay out the content of a panel. If it’s set to .safeArea, the panel content displays inside the safe area of its FloatingPanelController‘s view. This argument doesn’t limit its content size. +/// +/// \param contentBoundingGuide The rectangular area to restrict the content size of a panel in the main dimension(i.e. y axis is the main dimension for a bottom panel). +/// +- (nonnull instancetype)initWithFractionalOffset:(CGFloat)offset contentLayout:(UILayoutGuide * _Nonnull)contentLayout referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide contentBoundingGuide:(enum FloatingPanelLayoutContentBoundingGuide)contentBoundingGuide OBJC_DESIGNATED_INITIALIZER; +@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide; +@property (nonatomic, readonly) enum FloatingPanelLayoutContentBoundingGuide contentBoundingGuide; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@interface FloatingPanelAdaptiveLayoutAnchor (SWIFT_EXTENSION(PenNavUI)) +- (NSArray * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT; +@end + +@class FloatingPanelState; +/// An interface for generating behavior information to fine-tune the behavior of a panel. +SWIFT_PROTOCOL("_TtP8PenNavUI21FloatingPanelBehavior_") +@protocol FloatingPanelBehavior +@optional +/// A floating-point value that determines the rate of oscillation magnitude reduction after the user lifts their finger. +/// The oscillation magnitude to attract a panel to an anchor can be adjusted this value between 0.979 and 1.0 +/// in increments of 0.001. When this value is around 0.979, the attraction uses a critically damped spring system. +/// When this value is between 0.978 and 1.0, it uses a underdamped spring system with a damping ratio computed by +/// this value. You shouldn’t return less than 0.979 because the system is overdamped. If the pan gesture’s velocity +/// is less than 300, this value is ignored and a panel applies a critically damped system. +@property (nonatomic, readonly) CGFloat springDecelerationRate; +/// A floating-point value that determines the approximate time until a panel stops to an anchor after the user lifts their finger. +@property (nonatomic, readonly) CGFloat springResponseTime; +/// Returns a deceleration rate to calculate a target position projected a dragging momentum. +/// The default implementation of this method returns the normal deceleration rate of UIScrollView. +@property (nonatomic, readonly) CGFloat momentumProjectionRate; +/// Asks the behavior if a panel should project a momentum of a user interaction to move the +/// proposed state. +/// The default implementation of this method returns false. This method is called for called +/// for all states defined by the current layout object. +- (BOOL)shouldProjectMomentum:(FloatingPanelController * _Nonnull)fpc to:(FloatingPanelState * _Nonnull)proposedState SWIFT_WARN_UNUSED_RESULT; +/// Returns the progress to redirect to the previous position. +/// The progress is represented by a floating-point value between 0.0 and 1.0, inclusive, where 1.0 indicates a panel is impossible to move to the next position. The default value is 0.5. Values less than 0.0 and greater than 1.0 are pinned to those limits. +- (CGFloat)redirectionalProgress:(FloatingPanelController * _Nonnull)fpc from:(FloatingPanelState * _Nonnull)from to:(FloatingPanelState * _Nonnull)to SWIFT_WARN_UNUSED_RESULT; +/// Asks the behavior whether the rubber band effect is enabled in moving over a given edge of the surface view. +/// This method allows a panel to activate the rubber band effect to a given edge of the surface view. By default, the effect is disabled. +- (BOOL)allowsRubberBandingFor:(UIRectEdge)edge SWIFT_WARN_UNUSED_RESULT; +/// Returns the velocity threshold for the default interactive removal gesture. +/// In case FloatingPanel/FloatingPanelControllerDelegate/floatingPanel(_:shouldRemoveAt:with:) is implemented, this value will not be used. The default value of FloatingPanelDefaultBehavior is 5.5 +@property (nonatomic, readonly) CGFloat removalInteractionVelocityThreshold; +@end + +/// An interface for generating layout information for a panel. +SWIFT_PROTOCOL("_TtP8PenNavUI19FloatingPanelLayout_") +@protocol FloatingPanelLayout +/// Returns the position of a panel in a FloatingPanelController view . +@property (nonatomic, readonly) enum FloatingPanelPosition position; +/// Returns the initial state when a panel is presented. +@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull initialState; +/// Returns the layout anchors to specify the snapping locations for each state. +@property (nonatomic, readonly, copy) NSDictionary> * _Nonnull anchors; +@optional +/// Returns layout constraints to determine the cross dimension of a panel. +- (NSArray * _Nonnull)prepareLayoutWithSurfaceView:(UIView * _Nonnull)surfaceView in:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT; +/// Returns the alpha value of the backdrop of a panel for each state. +- (CGFloat)backdropAlphaFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +@end + +/// A layout object that lays out a panel in bottom sheet style. +SWIFT_CLASS("_TtC8PenNavUI25FloatingPanelBottomLayout") +@interface FloatingPanelBottomLayout : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull initialState; +@property (nonatomic, readonly, copy) NSDictionary> * _Nonnull anchors; +@property (nonatomic, readonly) enum FloatingPanelPosition position; +- (NSArray * _Nonnull)prepareLayoutWithSurfaceView:(UIView * _Nonnull)surfaceView in:(UIView * _Nonnull)view SWIFT_WARN_UNUSED_RESULT; +- (CGFloat)backdropAlphaFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +@end + +@protocol FloatingPanelControllerDelegate; +@class FloatingPanelSurfaceView; +@class UIScrollView; +@class FloatingPanelPanGestureRecognizer; +enum ContentInsetAdjustmentBehavior : NSInteger; +enum ContentMode : NSInteger; +@class NSBundle; +@protocol UIViewControllerTransitionCoordinator; +@class UITraitCollection; +/// A container view controller to display a panel to present contents in parallel as a user wants. +SWIFT_CLASS("_TtC8PenNavUI23FloatingPanelController") +@interface FloatingPanelController : UIViewController +/// The delegate of a panel controller object. +@property (nonatomic, weak) id _Nullable delegate; +/// Returns the surface view managed by the controller object. It’s the same as self.view. +@property (nonatomic, readonly, strong) FloatingPanelSurfaceView * _Null_unspecified surfaceView; +/// Returns the backdrop view managed by the controller object. +@property (nonatomic, readonly, strong) FloatingPanelBackdropView * _Null_unspecified backdropView; +/// Returns the scroll view that the controller tracks. +@property (nonatomic, readonly, weak) UIScrollView * _Nullable trackingScrollView; +@property (nonatomic, readonly, strong) FloatingPanelPanGestureRecognizer * _Nonnull panGestureRecognizer; +/// The current position of a panel controller’s contents. +@property (nonatomic, readonly, strong) FloatingPanelState * _Nonnull state; +/// A Boolean value indicating whether a panel controller is attracting the surface to a state anchor. +@property (nonatomic, readonly) BOOL isAttracting; +/// The layout object that the controller manages +/// You need to call invalidateLayout() if you want to apply a new layout object into the panel +/// immediately. +@property (nonatomic, strong) id _Nonnull layout; +/// The behavior object that the controller manages +@property (nonatomic, strong) id _Nonnull behavior; +/// The content insets of the tracking scroll view derived from this safe area +@property (nonatomic, readonly) UIEdgeInsets adjustedContentInsets; +/// The behavior for determining the adjusted content offsets. +/// This property specifies how the content area of the tracking scroll view is modified using adjustedContentInsets. The default value of this property is FloatingPanelController.ContentInsetAdjustmentBehavior.always. +@property (nonatomic) enum ContentInsetAdjustmentBehavior contentInsetAdjustmentBehavior; +/// A Boolean value that determines whether the removal interaction is enabled. +@property (nonatomic, setter=setRemovalInteractionEnabled:) BOOL isRemovalInteractionEnabled; +/// The view controller responsible for the content portion of a panel. +@property (nonatomic, strong) UIViewController * _Nullable contentViewController; +/// Constants that define how a panel content fills in the surface. +@property (nonatomic) enum ContentMode contentMode; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)initWithNibName:(NSString * _Nullable)nibNameOrNil bundle:(NSBundle * _Nullable)nibBundleOrNil SWIFT_UNAVAILABLE; +/// Initialize a newly created panel controller. +- (nonnull instancetype)initWithDelegate:(id _Nullable)delegate OBJC_DESIGNATED_INITIALIZER; +/// Creates the view that the controller manages. +- (void)loadView; +- (void)viewDidLayoutSubviews; +- (void)viewDidAppear:(BOOL)animated; +- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id _Nonnull)coordinator; +- (void)willTransitionToTraitCollection:(UITraitCollection * _Nonnull)newCollection withTransitionCoordinator:(id _Nonnull)coordinator; +- (void)viewWillDisappear:(BOOL)animated; +@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForStatusBarStyle; +@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForStatusBarHidden; +@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForScreenEdgesDeferringSystemGestures; +@property (nonatomic, readonly, strong) UIViewController * _Nullable childViewControllerForHomeIndicatorAutoHidden; +/// Shows the surface view at the initial position defined by the current layout +/// \param animated Pass true to animate the presentation; otherwise, pass false. +/// +/// \param completion The block to execute after the presentation finishes. This block has no return value and takes no parameters. You may specify nil for this parameter. +/// +- (void)show:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Hides the surface view to the hidden position +- (void)hide:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Adds the view managed by the controller as a child of the specified view controller. +/// \param parent A parent view controller object that displays FloatingPanelController’s view. A container view controller object isn’t applicable. +/// +/// \param viewIndex Insert the surface view managed by the controller below the specified view index. By default, the surface view will be added to the end of the parent list of subviews. +/// +/// \param animated Pass true to animate the presentation; otherwise, pass false. +/// +/// \param completion The block to execute after the presentation finishes. This block has no return value and takes no parameters. You may specify nil for this parameter. +/// +- (void)addPanelToParent:(UIViewController * _Nonnull)parent at:(NSInteger)viewIndex animated:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Removes the controller and the managed view from its parent view controller +/// \param animated Pass true to animate the presentation; otherwise, pass false. +/// +/// \param completion The block to execute after the view controller is dismissed. This block has no return value and takes no parameters. You may specify nil for this parameter. +/// +- (void)removePanelFromParent:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Moves the position to the specified position. +/// \param to Pass a FloatingPanelPosition value to move the surface view to the position. +/// +/// \param animated Pass true to animate the presentation; otherwise, pass false. +/// +/// \param completion The block to execute after the view controller has finished moving. This block has no return value and takes no parameters. You may specify nil for this parameter. +/// +- (void)moveToState:(FloatingPanelState * _Nonnull)to animated:(BOOL)animated completion:(void (^ _Nullable)(void))completion; +/// Tracks the specified scroll view to correspond with the scroll. +/// \param scrollView Specify a scroll view to continuously and seamlessly work in concert with interactions of the surface view +/// +- (void)trackScrollView:(UIScrollView * _Nonnull)scrollView; +/// Cancel tracking the specify scroll view. +- (void)untrackScrollView:(UIScrollView * _Nonnull)scrollView; +- (BOOL)accessibilityPerformEscape SWIFT_WARN_UNUSED_RESULT; +/// Invalidates all layout information of the panel and apply the layout property into it immediately. +/// This lays out subviews of the view that the controller manages with the layout property by +/// calling the view’s layoutIfNeeded(). Thus this method can be called in an animation block to +/// animate the panel’s changes. +/// If the controller has a delegate object, this will lay them out using the layout object returned by +/// floatingPanel(_:layoutFor:) delegate method for the current UITraitCollection. +- (void)invalidateLayout; +/// Returns the surface’s position in a panel controller’s view for the specified state. +/// If a panel is top positioned, this returns a point of the bottom-left corner of the surface. If it is left positioned +/// this returns a point of top-right corner of the surface. If it is bottom or right positioned, this returns a point +/// of the top-left corner of the surface. +- (CGPoint)surfaceLocationFor:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +/// The surface’s position in a panel controller’s view. +/// If a panel is top positioned, this returns a point of the bottom-left corner of the surface. If it is left positioned +/// this returns a point of top-right corner of the surface. If it is bottom or right positioned, this returns a point +/// of the top-left corner of the surface. +@property (nonatomic) CGPoint surfaceLocation; +@end + +/// Constants indicating how safe area insets are added to the adjusted content inset. +typedef SWIFT_ENUM(NSInteger, ContentInsetAdjustmentBehavior, open) { + ContentInsetAdjustmentBehaviorAlways = 0, + ContentInsetAdjustmentBehaviorNever = 1, +}; + +/// A flag used to determine how the controller object lays out the content view when the surface position changes. +typedef SWIFT_ENUM(NSInteger, ContentMode, open) { +/// The option to fix the content to keep the height of the top most position. + ContentModeStatic = 0, +/// The option to scale the content to fit the bounds of the root view by changing the surface position. + ContentModeFitToBounds = 1, +}; + +@class UIViewPropertyAnimator; +/// A set of methods implemented by the delegate of a panel controller allows the adopting delegate to respond to +/// messages from the FloatingPanelController class and thus respond to, and in some affect, operations such as +/// dragging, attracting a panel, layout of a panel and the content, and transition animations. +SWIFT_PROTOCOL("_TtP8PenNavUI31FloatingPanelControllerDelegate_") +@protocol FloatingPanelControllerDelegate +@optional +/// Returns a FloatingPanelLayout object. If you use the default one, you can use a FloatingPanelBottomLayout object. +- (id _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc layoutForTraitCollection:(UITraitCollection * _Nonnull)newCollection SWIFT_WARN_UNUSED_RESULT; +/// Returns a FloatingPanelLayout object. If you use the default one, you can use a FloatingPanelBottomLayout object. +- (id _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc layoutForSize:(CGSize)size SWIFT_WARN_UNUSED_RESULT; +/// Returns a UIViewPropertyAnimator object to add/present the panel to a position. +/// Default is the spring animation with 0.25 secs. +- (UIViewPropertyAnimator * _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc animatorForPresentingToState:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +/// Returns a UIViewPropertyAnimator object to remove/dismiss a panel from a position. +/// Default is the spring animator with 0.25 secs. +- (UIViewPropertyAnimator * _Nonnull)floatingPanel:(FloatingPanelController * _Nonnull)fpc animatorForDismissingWithVelocity:(CGVector)velocity SWIFT_WARN_UNUSED_RESULT; +/// Called when a panel has changed to a new state. +/// This can be called inside an animation block for presenting, dismissing a panel or moving a panel with your +/// animation. So any view properties set inside this function will be automatically animated alongside a panel. +- (void)floatingPanelDidChangeState:(FloatingPanelController * _Nonnull)fpc; +/// Asks the delegate if dragging should begin by the pan gesture recognizer. +- (BOOL)floatingPanelShouldBeginDragging:(FloatingPanelController * _Nonnull)fpc SWIFT_WARN_UNUSED_RESULT; +/// Called while the user drags the surface or the surface moves to a state anchor. +- (void)floatingPanelDidMove:(FloatingPanelController * _Nonnull)fpc; +/// Called on start of dragging (may require some time and or distance to move) +- (void)floatingPanelWillBeginDragging:(FloatingPanelController * _Nonnull)fpc; +/// Called on finger up if the user dragged. velocity is in points/second. +- (void)floatingPanelWillEndDragging:(FloatingPanelController * _Nonnull)fpc withVelocity:(CGPoint)velocity targetState:(FloatingPanelState * _Nonnull * _Nonnull)targetState; +/// Called on finger up if the user dragged. +/// If attract is true, the panel continues moving towards the nearby state +/// anchor. Otherwise, it stops at the closest state anchor. +/// note: +/// If attract is false, FloatingPanelController.state property has +/// already changed to the closest anchor’s state by the time this delegate method +/// is called. +- (void)floatingPanelDidEndDragging:(FloatingPanelController * _Nonnull)fpc willAttract:(BOOL)attract; +/// Called when it is about to be attracted to a state anchor. +- (void)floatingPanelWillBeginAttracting:(FloatingPanelController * _Nonnull)fpc to:(FloatingPanelState * _Nonnull)state; +/// Called when attracting it is completed. +- (void)floatingPanelDidEndAttracting:(FloatingPanelController * _Nonnull)fpc; +/// Asks the delegate whether a panel should be removed when dragging ended at the specified location +/// This delegate method is called only where FloatingPanel/FloatingPanelController/isRemovalInteractionEnabled is true. +/// The velocity vector is calculated from the distance to a point of the hidden state and the pan gesture’s velocity. +- (BOOL)floatingPanel:(FloatingPanelController * _Nonnull)fpc shouldRemoveAtLocation:(CGPoint)location withVelocity:(CGVector)velocity SWIFT_WARN_UNUSED_RESULT; +/// Called on start to remove its view controller from the parent view controller. +- (void)floatingPanelWillRemove:(FloatingPanelController * _Nonnull)fpc; +/// Called when a panel is removed from the parent view controller. +- (void)floatingPanelDidRemove:(FloatingPanelController * _Nonnull)fpc; +/// Asks the delegate for a content offset of the tracking scroll view to be pinned when a panel moves +/// If you do not implement this method, the controller uses a value of the content offset plus the content insets +/// of the tracked scroll view. Your implementation of this method can return a value for a navigation bar with a large +/// title, for example. +/// This method will not be called if the controller doesn’t track any scroll view. +- (CGPoint)floatingPanel:(FloatingPanelController * _Nonnull)fpc contentOffsetForPinningScrollView:(UIScrollView * _Nonnull)trackingScrollView SWIFT_WARN_UNUSED_RESULT; +/// Returns a Boolean value that determines whether the tracking scroll view should +/// scroll or not +/// If you return true, the scroll content scrolls when its scroll position is not +/// at the top of the content. If the delegate doesn’t implement this method, its +/// content can be scrolled only in the most expanded state. +/// Basically, the decision to scroll is based on the state property like the +/// following code. +/// \code +/// func floatingPanel( +/// _ fpc: FloatingPanelController, +/// shouldAllowToScroll scrollView: UIScrollView, +/// in state: FloatingPanelState +/// ) -> Bool { +/// return state == .full || state == .half +/// } +/// +/// \endcodeattention: +/// It is recommended that this method always returns the most expanded state(i.e. +/// .full). If it excludes the state, the panel might do unexpected behaviors. +- (BOOL)floatingPanel:(FloatingPanelController * _Nonnull)fpc shouldAllowToScroll:(UIScrollView * _Nonnull)scrollView in:(FloatingPanelState * _Nonnull)state SWIFT_WARN_UNUSED_RESULT; +@end + +/// An object that defines how to settles a panel with the intrinsic size for a content. +SWIFT_CLASS("_TtC8PenNavUI34FloatingPanelIntrinsicLayoutAnchor") +@interface FloatingPanelIntrinsicLayoutAnchor : NSObject +/// Returns a layout anchor with the specified offset by an absolute value and reference guide for a panel. +/// The offset is an amount to offset a position of panel that displays the entire content from an edge of +/// the reference guide. The edge refers to a panel positioning. +/// \param absoluteOffset An absolute offset from the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel. +/// +/// \param referenceGuide The rectangular area to lay out the content. If it’s set to .safeArea, the panel content lays out inside the safe area of its FloatingPanelController’s view. +/// +- (nonnull instancetype)initWithAbsoluteOffset:(CGFloat)offset referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER; +/// Returns a layout anchor with the specified offset by a fractional value and reference guide for a panel. +/// The offset value is a floating-point number in the range 0.0 to 1.0, where 0.0 represents the full content +/// is displayed and 0.5 represents the half of content is displayed. +/// \param fractionalOffset A fractional offset of the content size in the main dimension(i.e. y axis for a bottom panel) to attach the panel. +/// +/// \param referenceGuide The rectangular area to lay out the content. If it’s set to .safeArea, the panel content lays out inside the safe area of its FloatingPanelController’s view. +/// +- (nonnull instancetype)initWithFractionalOffset:(CGFloat)offset referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER; +/// The reference rectangle area for the offset +@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@interface FloatingPanelIntrinsicLayoutAnchor (SWIFT_EXTENSION(PenNavUI)) +- (NSArray * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT; +@end + +enum FloatingPanelReferenceEdge : NSInteger; +/// An object that defines how to settles a panel with insets from an edge of a reference rectangle. +SWIFT_CLASS("_TtC8PenNavUI25FloatingPanelLayoutAnchor") +@interface FloatingPanelLayoutAnchor : NSObject +/// Returns a layout anchor with the specified inset by an absolute value, edge and reference guide for a panel. +/// The inset is an amount to inset a panel from an edge of the reference guide. The edge refers to a panel +/// positioning. +/// \param absoluteOffset An absolute offset to attach the panel from the edge. +/// +/// \param edge Specify the edge of FloatingPanelController’s view. This is the staring point of the offset. +/// +/// \param referenceGuide The rectangular area to lay out the content. If it’s set to .safeArea, the panel content lays out inside the safe area of its FloatingPanelController’s view. +/// +- (nonnull instancetype)initWithAbsoluteInset:(CGFloat)absoluteInset edge:(enum FloatingPanelReferenceEdge)edge referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER; +/// Returns a layout anchor with the specified inset by a fractional value, edge and reference guide for a panel. +/// The inset is an amount to inset a panel from the edge of the specified reference guide. The value is +/// a floating-point number in the range 0.0 to 1.0, where 0.0 represents zero distance from the edge and +/// 1.0 represents a distance to the opposite edge. +/// \param fractionalOffset A fractional value of the size of FloatingPanelController’s view to attach the panel from the edge. +/// +/// \param edge Specify the edge of FloatingPanelController’s view. This is the staring point of the offset. +/// +/// \param referenceGuide The rectangular area to lay out the content. If it’s set to .safeArea, the panel content lays out inside the safe area of its FloatingPanelController’s view. +/// +- (nonnull instancetype)initWithFractionalInset:(CGFloat)fractionalInset edge:(enum FloatingPanelReferenceEdge)edge referenceGuide:(enum FloatingPanelLayoutReferenceGuide)referenceGuide OBJC_DESIGNATED_INITIALIZER; +/// The reference rectangle area for the inset. +@property (nonatomic, readonly) enum FloatingPanelLayoutReferenceGuide referenceGuide; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@interface FloatingPanelLayoutAnchor (SWIFT_EXTENSION(PenNavUI)) +- (NSArray * _Nonnull)layoutConstraints:(FloatingPanelController * _Nonnull)vc for:(enum FloatingPanelPosition)position SWIFT_WARN_UNUSED_RESULT; +@end + +/// A representation to specify a bounding box which limit the content size of a panel. +typedef SWIFT_ENUM(NSInteger, FloatingPanelLayoutContentBoundingGuide, open) { + FloatingPanelLayoutContentBoundingGuideNone = 0, + FloatingPanelLayoutContentBoundingGuideSuperview = 1, + FloatingPanelLayoutContentBoundingGuideSafeArea = 2, +}; + +/// A representation to specify a rectangular area to lay out a panel. +typedef SWIFT_ENUM(NSInteger, FloatingPanelLayoutReferenceGuide, open) { + FloatingPanelLayoutReferenceGuideSuperview = 0, + FloatingPanelLayoutReferenceGuideSafeArea = 1, +}; + +@class UITouch; +@class UIEvent; +@protocol UIGestureRecognizerDelegate; +/// A gesture recognizer that looks for panning (dragging) gestures in a panel. +SWIFT_CLASS("_TtC8PenNavUI33FloatingPanelPanGestureRecognizer") +@interface FloatingPanelPanGestureRecognizer : UIPanGestureRecognizer +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +- (void)touchesBegan:(NSSet * _Nonnull)touches withEvent:(UIEvent * _Nonnull)event; +/// The delegate of the gesture recognizer. +/// note: +/// The delegate is used by FloatingPanel itself. If you set your own delegate object, an +/// exception is raised. If you want to handle the methods of UIGestureRecognizerDelegate, you can use delegateProxy. +@property (nonatomic, weak) id _Nullable delegate; +- (nonnull instancetype)initWithTarget:(id _Nullable)target action:(SEL _Nullable)action SWIFT_UNAVAILABLE; +@end + +/// Constants describing the position of a panel in a screen +typedef SWIFT_ENUM(NSInteger, FloatingPanelPosition, open) { + FloatingPanelPositionTop = 0, + FloatingPanelPositionLeft = 1, + FloatingPanelPositionBottom = 2, + FloatingPanelPositionRight = 3, +}; + +/// Constants that specify the edge of the container of a panel. +typedef SWIFT_ENUM(NSInteger, FloatingPanelReferenceEdge, open) { + FloatingPanelReferenceEdgeTop = 0, + FloatingPanelReferenceEdgeLeft = 1, + FloatingPanelReferenceEdgeBottom = 2, + FloatingPanelReferenceEdgeRight = 3, +}; + +/// An object that represents the display state of a panel in a screen. +SWIFT_CLASS("_TtC8PenNavUI18FloatingPanelState") +@interface FloatingPanelState : NSObject +- (nonnull instancetype)initWithRawValue:(NSString * _Nonnull)rawValue order:(NSInteger)order OBJC_DESIGNATED_INITIALIZER; +- (id _Nonnull)copyWithZone:(struct _NSZone * _Nullable)zone SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly, copy) NSString * _Nonnull description; +@property (nonatomic, readonly, copy) NSString * _Nonnull debugDescription; +/// A panel state indicates the entire panel is shown. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Full;) ++ (FloatingPanelState * _Nonnull)Full SWIFT_WARN_UNUSED_RESULT; +/// A panel state indicates the half of a panel is shown. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Half;) ++ (FloatingPanelState * _Nonnull)Half SWIFT_WARN_UNUSED_RESULT; +/// A panel state indicates the tip of a panel is shown. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Tip;) ++ (FloatingPanelState * _Nonnull)Tip SWIFT_WARN_UNUSED_RESULT; +/// A panel state indicates it is hidden. +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly, strong) FloatingPanelState * _Nonnull Hidden;) ++ (FloatingPanelState * _Nonnull)Hidden SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +/// A view that presents a grabber handle in the surface of a panel. +SWIFT_CLASS_NAMED("GrabberView") +@interface FloatingPanelGrabberView : UIView +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +- (void)layoutSubviews; +- (UIView * _Nullable)hitTest:(CGPoint)point withEvent:(UIEvent * _Nullable)event SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE; +@end + +SWIFT_CLASS("_TtC8PenNavUI17PIGeofenceManager") +@interface PIGeofenceManager : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +@class CLLocationManager; +@interface PIGeofenceManager (SWIFT_EXTENSION(PenNavUI)) +/// CLLocationManager Delegate - Called when permission changes +- (void)locationManager:(CLLocationManager * _Nonnull)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status; +@end + +@class CLRegion; +@interface PIGeofenceManager (SWIFT_EXTENSION(PenNavUI)) +- (void)locationManager:(CLLocationManager * _Nonnull)manager didEnterRegion:(CLRegion * _Nonnull)region; +@end + +SWIFT_CLASS_NAMED("PenNavStyle") +@interface PenNavStyle : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@class NSData; +@interface PenNavStyle (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic, copy) NSString * _Nullable type; +@property (nonatomic, copy) NSData * _Nullable value; +@end + +SWIFT_CLASS("_TtC8PenNavUI15PenNavUIManager") +@interface PenNavUIManager : NSObject +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +@interface PenNavUIManager (SWIFT_EXTENSION(PenNavUI)) +- (void)onReadyWithWarning:(enum WarningCode)warning; +- (void)onInitilzationErrorWithError:(enum ErrorCode)error; +- (void)onInitializationProgressChangeWithStatus:(enum SDKOperation)status; +@end + +@interface PenNavUIManager (SWIFT_EXTENSION(PenNavUI)) +- (void)locationManagerDidChangeAuthorization:(CLLocationManager * _Nonnull)manager; +- (void)locationManager:(CLLocationManager * _Nonnull)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status; +@end + +SWIFT_CLASS_NAMED("PenNavUITableUpdate") +@interface PenNavUITableUpdate : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@interface PenNavUITableUpdate (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic, copy) NSString * _Nullable lastUpdateTime; +@property (nonatomic, copy) NSString * _Nullable tableName; +@end + +SWIFT_CLASS_NAMED("SVG") +@interface SVGImage : NSObject +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +SWIFT_CLASS_NAMED("SharedLocationCacheData") +@interface SharedLocationCacheData : NSManagedObject +- (nonnull instancetype)initWithEntity:(NSEntityDescription * _Nonnull)entity insertIntoManagedObjectContext:(NSManagedObjectContext * _Nullable)context OBJC_DESIGNATED_INITIALIZER; +@end + +@interface SharedLocationCacheData (SWIFT_EXTENSION(PenNavUI)) +@property (nonatomic) int16_t edgeId; +@property (nonatomic) int16_t floorId; +@property (nonatomic) double latitude; +@property (nonatomic) double longitude; +@property (nonatomic, copy) NSString * _Nullable navigationAvoid; +@property (nonatomic) int16_t venueId; +@property (nonatomic) int16_t x; +@property (nonatomic) int16_t y; +@end + +@class UIColor; +@class FloatingPanelSurfaceAppearanceShadow; +/// An object for customizing the appearance of a surface view +SWIFT_CLASS_NAMED("SurfaceAppearance") +@interface FloatingPanelSurfaceAppearance : NSObject +/// The background color of a surface view +@property (nonatomic, strong) UIColor * _Nullable backgroundColor; +/// The radius to use when drawing the top rounded corners. +/// self.contentView is masked with the top rounded corners automatically on iOS 11 and later. +/// On iOS 10, they are not automatically masked because of a UIVisualEffectView issue. See https://forums.developer.apple.com/thread/50854 +@property (nonatomic) CGFloat cornerRadius; +/// Defines the curve used for rendering the rounded corners of the layer. +/// Defaults to .circular. +@property (nonatomic) CALayerCornerCurve _Nonnull cornerCurve SWIFT_AVAILABILITY(ios,introduced=13.0); +/// An array of shadows used to create drop shadows underneath a surface view. +@property (nonatomic, copy) NSArray * _Nonnull shadows; +/// The border width of a surface view. +@property (nonatomic, strong) UIColor * _Nullable borderColor; +/// The border color of a surface view. +@property (nonatomic) CGFloat borderWidth; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +/// An object that represents information to render a shadow +SWIFT_CLASS_NAMED("Shadow") +@interface FloatingPanelSurfaceAppearanceShadow : NSObject +/// A Boolean indicating whether a shadow is displayed. +@property (nonatomic) BOOL hidden; +/// The color of a shadow. +@property (nonatomic, strong) UIColor * _Nonnull color; +/// The offset (in points) of a shadow. +@property (nonatomic) CGSize offset; +/// The opacity of a shadow. +@property (nonatomic) float opacity; +/// The blur radius (in points) used to render a shadow. +@property (nonatomic) CGFloat radius; +/// The inflated amount of a shadow prior to applying the blur. +@property (nonatomic) CGFloat spread; +- (nonnull instancetype)init OBJC_DESIGNATED_INITIALIZER; +@end + +/// A view that presents a surface interface in a panel. +SWIFT_CLASS_NAMED("SurfaceView") +@interface FloatingPanelSurfaceView : UIView +/// A FloatingPanelGrabberView object displayed at the top of the surface view. +/// To use a custom grabber, hide this and then add it to the surface view at appropriate point. +@property (nonatomic, readonly, strong) FloatingPanelGrabberView * _Nonnull grabberHandle; +/// Offset of the grabber handle from the interactive edge. +@property (nonatomic) CGFloat grabberHandlePadding; +/// The offset from the move edge to prevent the content scroll +@property (nonatomic) CGFloat grabberAreaOffset; +/// The grabber handle size +/// On left/right positioned panel the width dimension is used as the height of grabberHandle, and vice versa. +@property (nonatomic) CGSize grabberHandleSize; +/// The content view to be assigned a view of the content view controller of FloatingPanelController +@property (nonatomic, weak) UIView * _Nullable contentView; +/// The content insets specifying the insets around the content view. +@property (nonatomic) UIEdgeInsets contentPadding; +@property (nonatomic, strong) UIColor * _Nullable backgroundColor; +/// The appearance settings for a surface view. +@property (nonatomic, strong) FloatingPanelSurfaceAppearance * _Nonnull appearance; +/// The margins to use when laying out the container view wrapping content. +@property (nonatomic) UIEdgeInsets containerMargins; +/// The view that displays an actual surface shape. +/// It renders the background color, border line and top rounded corners, +/// specified by other properties. The reason why they’re not be applied to +/// a content view directly is because it avoids any side-effects to the +/// content view. +@property (nonatomic, readonly, strong) UIView * _Nonnull containerView; +SWIFT_CLASS_PROPERTY(@property (nonatomic, class, readonly) BOOL requiresConstraintBasedLayout;) ++ (BOOL)requiresConstraintBasedLayout SWIFT_WARN_UNUSED_RESULT; +- (nonnull instancetype)initWithFrame:(CGRect)frame SWIFT_UNAVAILABLE; +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder OBJC_DESIGNATED_INITIALIZER; +- (void)updateConstraints; +- (void)layoutSubviews; +@property (nonatomic, readonly) CGSize intrinsicContentSize; +@end + +@class UICollectionViewLayoutAttributes; +SWIFT_CLASS("_TtC8PenNavUI13TagFlowLayout") +@interface TagFlowLayout : UICollectionViewFlowLayout +- (nullable instancetype)initWithCoder:(NSCoder * _Nonnull)aDecoder SWIFT_UNAVAILABLE; +- (NSArray * _Nullable)layoutAttributesForElementsInRect:(CGRect)rect SWIFT_WARN_UNUSED_RESULT; +@property (nonatomic, readonly) BOOL flipsHorizontallyInOppositeLayoutDirection; +@property (nonatomic, readonly) UIUserInterfaceLayoutDirection developmentLayoutDirection; +- (nonnull instancetype)init SWIFT_UNAVAILABLE; ++ (nonnull instancetype)new SWIFT_UNAVAILABLE_MSG("-init is unavailable"); +@end + +@interface UIImage (SWIFT_EXTENSION(PenNavUI)) +- (nullable instancetype)initWithSVGData:(NSData * _Nonnull)svgData; +- (nullable instancetype)initWithContentsOfSVGFile:(NSString * _Nonnull)path; ++ (UIImage * _Nullable)svgNamed:(NSString * _Nonnull)name SWIFT_WARN_UNUSED_RESULT; ++ (UIImage * _Nullable)svgNamed:(NSString * _Nonnull)name inBundle:(NSBundle * _Nonnull)bundle SWIFT_WARN_UNUSED_RESULT; +@end + +#endif +#if __has_attribute(external_source_symbol) +# pragma clang attribute pop +#endif +#if defined(__cplusplus) +#endif +#pragma clang diagnostic pop +#endif + +#else +#error unsupported Swift architecture +#endif diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Headers/PenNavUI.h b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Headers/PenNavUI.h new file mode 100644 index 00000000..ffae1357 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Headers/PenNavUI.h @@ -0,0 +1,18 @@ +// +// PenNavUI.h +// PenNavUI +// +// Created by Fawzi Rifai on 18/08/2023. +// + +#import + +//! Project version number for PenNavUI. +FOUNDATION_EXPORT double PenNavUIVersionNumber; + +//! Project version string for PenNavUI. +FOUNDATION_EXPORT const unsigned char PenNavUIVersionString[]; + +// In this header, you should import all the public headers of your framework using statements like #import + + diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/HomeViewController.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/HomeViewController.nib new file mode 100644 index 00000000..3e0e422c Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/HomeViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/HoursCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/HoursCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..cec2d1c6 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/HoursCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/HoursCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/HoursCell.nib/runtime.nib new file mode 100644 index 00000000..a57bd4dc Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/HoursCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Info.plist b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Info.plist new file mode 100644 index 00000000..eff210f1 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Info.plist differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/InstructionsView.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/InstructionsView.nib new file mode 100644 index 00000000..42abca09 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/InstructionsView.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/LeadingIconMenuCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/LeadingIconMenuCell.nib new file mode 100644 index 00000000..ad4158e4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/LeadingIconMenuCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/LegCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/LegCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..6c3259c1 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/LegCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/LegCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/LegCell.nib/runtime.nib new file mode 100644 index 00000000..9d10f82f Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/LegCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MainPanelActionsCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MainPanelActionsCell.nib new file mode 100644 index 00000000..e66e6054 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MainPanelActionsCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MainViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MainViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..fb5f1581 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MainViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MainViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MainViewController.nib/runtime.nib new file mode 100644 index 00000000..0624b638 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MainViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Maneuver.ahap b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Maneuver.ahap new file mode 100644 index 00000000..4424517d --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Maneuver.ahap @@ -0,0 +1,21 @@ +{ + "Pattern": [ + { + "Event": { + "Time": 0.0, + "EventType": "HapticContinuous", + "EventDuration": 0.3, + "EventParameters": [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.50 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.50 + } + ] + } + } + ] +} diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MapViewController.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MapViewController.nib new file mode 100644 index 00000000..53d60969 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MapViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MessageDetailCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MessageDetailCell.nib new file mode 100644 index 00000000..ed8c8e49 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MessageDetailCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MessageDetailImageCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MessageDetailImageCell.nib new file mode 100644 index 00000000..6abcb4b3 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MessageDetailImageCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MessageDetailsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MessageDetailsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..ecfa0531 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MessageDetailsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MessageDetailsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MessageDetailsViewController.nib/runtime.nib new file mode 100644 index 00000000..a1921c01 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/MessageDetailsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.abi.json b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.abi.json new file mode 100644 index 00000000..c4a30ffa --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.abi.json @@ -0,0 +1,43582 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "PenNavUI", + "printedName": "PenNavUI", + "children": [ + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayout", + "printedName": "FloatingPanelLayout", + "children": [ + { + "kind": "Var", + "name": "position", + "printedName": "position", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(py)position", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP8positionAA0dE8PositionOvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)position", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP8positionAA0dE8PositionOvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "initialState", + "printedName": "initialState", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(py)initialState", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP12initialStateAA0deH0Cvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)initialState", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP12initialStateAA0deH0Cvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "anchors", + "printedName": "anchors", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring]", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "any PenNavUI.FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring" + } + ], + "usr": "s:SD" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(py)anchors", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP7anchorsSDyAA0dE5StateCAA0deF9Anchoring_pGvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring]", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "any PenNavUI.FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring" + } + ], + "usr": "s:SD" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)anchors", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP7anchorsSDyAA0dE5StateCAA0deF9Anchoring_pGvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "prepareLayout", + "printedName": "prepareLayout(surfaceView:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)prepareLayoutWithSurfaceView:in:", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP07prepareF011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "prepareLayoutWithSurfaceView:in:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "backdropAlpha", + "printedName": "backdropAlpha(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)backdropAlphaFor:", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP13backdropAlpha3for12CoreGraphics7CGFloatVAA0dE5StateC_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "backdropAlphaFor:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 : AnyObject>", + "sugared_genericSig": "", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelBottomLayout", + "printedName": "FloatingPanelBottomLayout", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelBottomLayout", + "printedName": "PenNavUI.FloatingPanelBottomLayout", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)init", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override", + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "initialState", + "printedName": "initialState", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(py)initialState", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0Cvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "initialState", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)initialState", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0Cvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "initialState", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "anchors", + "printedName": "anchors", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring]", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "any PenNavUI.FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring" + } + ], + "usr": "s:SD" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(py)anchors", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "anchors", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring]", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "any PenNavUI.FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring" + } + ], + "usr": "s:SD" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)anchors", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "anchors", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "position", + "printedName": "position", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(py)position", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC8positionAA0dE8PositionOvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "position", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)position", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC8positionAA0dE8PositionOvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "position", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "prepareLayout", + "printedName": "prepareLayout(surfaceView:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)prepareLayoutWithSurfaceView:in:", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC07prepareG011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtF", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "prepareLayoutWithSurfaceView:in:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "backdropAlpha", + "printedName": "backdropAlpha(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)backdropAlphaFor:", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA0dE5StateC_tF", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "backdropAlphaFor:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC", + "moduleName": "PenNavUI", + "isOpen": true, + "declAttributes": [ + "AccessControl", + "ObjCMembers", + "RawDocComment", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "FloatingPanelLayout", + "printedName": "FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "AVFoundation", + "printedName": "AVFoundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "PILocationDelegate", + "printedName": "PILocationDelegate", + "children": [ + { + "kind": "Function", + "name": "onLocationOffCampus", + "printedName": "onLocationOffCampus(location:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationCoordinate2D", + "printedName": "_LocationEssentials.CLLocationCoordinate2D", + "usr": "c:@S@CLLocationCoordinate2D" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI18PILocationDelegateP19onLocationOffCampus8locationySo22CLLocationCoordinate2DV_tF", + "mangledName": "$s8PenNavUI18PILocationDelegateP19onLocationOffCampus8locationySo22CLLocationCoordinate2DV_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PILocationDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onLocationMessage", + "printedName": "onLocationMessage(message:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CampaignMessage", + "printedName": "PenNavUI.CampaignMessage", + "usr": "s:8PenNavUI15CampaignMessageV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI18PILocationDelegateP17onLocationMessage7messageyAA08CampaignH0V_tF", + "mangledName": "$s8PenNavUI18PILocationDelegateP17onLocationMessage7messageyAA08CampaignH0V_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PILocationDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onLocationOffCampus", + "printedName": "onLocationOffCampus(location:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationCoordinate2D", + "printedName": "_LocationEssentials.CLLocationCoordinate2D", + "usr": "c:@S@CLLocationCoordinate2D" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI18PILocationDelegatePAAE19onLocationOffCampus8locationySo22CLLocationCoordinate2DV_tF", + "mangledName": "$s8PenNavUI18PILocationDelegatePAAE19onLocationOffCampus8locationySo22CLLocationCoordinate2DV_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PILocationDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onLocationMessage", + "printedName": "onLocationMessage(message:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CampaignMessage", + "printedName": "PenNavUI.CampaignMessage", + "usr": "s:8PenNavUI15CampaignMessageV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI18PILocationDelegatePAAE17onLocationMessage7messageyAA08CampaignH0V_tF", + "mangledName": "$s8PenNavUI18PILocationDelegatePAAE17onLocationMessage7messageyAA08CampaignH0V_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PILocationDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "s:8PenNavUI18PILocationDelegateP", + "mangledName": "$s8PenNavUI18PILocationDelegateP", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "CachedVenue", + "printedName": "CachedVenue", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CachedVenue", + "printedName": "PenNavUI.CachedVenue", + "usr": "c:@M@PenNavUI@objc(cs)CachedVenue" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)CachedVenue(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "CachedVenue", + "printedName": "PenNavUI.CachedVenue", + "usr": "c:@M@PenNavUI@objc(cs)CachedVenue" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CachedVenueC12fetchRequestSo07NSFetchG0CyACGyFZ", + "mangledName": "$s8PenNavUI11CachedVenueC12fetchRequestSo07NSFetchG0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "id", + "printedName": "id", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)id", + "mangledName": "$s8PenNavUI11CachedVenueC2ids5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)id", + "mangledName": "$s8PenNavUI11CachedVenueC2ids5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setId:", + "mangledName": "$s8PenNavUI11CachedVenueC2ids5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "coverImage", + "printedName": "coverImage", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)coverImage", + "mangledName": "$s8PenNavUI11CachedVenueC10coverImageSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)coverImage", + "mangledName": "$s8PenNavUI11CachedVenueC10coverImageSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setCoverImage:", + "mangledName": "$s8PenNavUI11CachedVenueC10coverImageSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "address", + "printedName": "address", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)address", + "mangledName": "$s8PenNavUI11CachedVenueC7addressSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)address", + "mangledName": "$s8PenNavUI11CachedVenueC7addressSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setAddress:", + "mangledName": "$s8PenNavUI11CachedVenueC7addressSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "buildingNumber", + "printedName": "buildingNumber", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)buildingNumber", + "mangledName": "$s8PenNavUI11CachedVenueC14buildingNumberSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)buildingNumber", + "mangledName": "$s8PenNavUI11CachedVenueC14buildingNumberSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setBuildingNumber:", + "mangledName": "$s8PenNavUI11CachedVenueC14buildingNumberSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "phone", + "printedName": "phone", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)phone", + "mangledName": "$s8PenNavUI11CachedVenueC5phoneSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)phone", + "mangledName": "$s8PenNavUI11CachedVenueC5phoneSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setPhone:", + "mangledName": "$s8PenNavUI11CachedVenueC5phoneSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "email", + "printedName": "email", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)email", + "mangledName": "$s8PenNavUI11CachedVenueC5emailSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)email", + "mangledName": "$s8PenNavUI11CachedVenueC5emailSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setEmail:", + "mangledName": "$s8PenNavUI11CachedVenueC5emailSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "website", + "printedName": "website", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)website", + "mangledName": "$s8PenNavUI11CachedVenueC7websiteSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)website", + "mangledName": "$s8PenNavUI11CachedVenueC7websiteSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setWebsite:", + "mangledName": "$s8PenNavUI11CachedVenueC7websiteSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "floorCount", + "printedName": "floorCount", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)floorCount", + "mangledName": "$s8PenNavUI11CachedVenueC10floorCounts5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)floorCount", + "mangledName": "$s8PenNavUI11CachedVenueC10floorCounts5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setFloorCount:", + "mangledName": "$s8PenNavUI11CachedVenueC10floorCounts5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)CachedVenue", + "mangledName": "$s8PenNavUI11CachedVenueC", + "moduleName": "PenNavUI", + "objc_name": "CachedVenue", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "CampaignTracking", + "printedName": "CampaignTracking", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CampaignTracking", + "printedName": "PenNavUI.CampaignTracking", + "usr": "c:@M@PenNavUI@objc(cs)CampaignTracking" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)CampaignTracking(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI16CampaignTrackingC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "CampaignTracking", + "printedName": "PenNavUI.CampaignTracking", + "usr": "c:@M@PenNavUI@objc(cs)CampaignTracking" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16CampaignTrackingC12fetchRequestSo07NSFetchG0CyACGyFZ", + "mangledName": "$s8PenNavUI16CampaignTrackingC12fetchRequestSo07NSFetchG0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "campaignId", + "printedName": "campaignId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(py)campaignId", + "mangledName": "$s8PenNavUI16CampaignTrackingC10campaignIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(im)campaignId", + "mangledName": "$s8PenNavUI16CampaignTrackingC10campaignIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(im)setCampaignId:", + "mangledName": "$s8PenNavUI16CampaignTrackingC10campaignIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "lastNotificationDate", + "printedName": "lastNotificationDate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Date?", + "children": [ + { + "kind": "TypeNominal", + "name": "Date", + "printedName": "Foundation.Date", + "usr": "s:10Foundation4DateV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(py)lastNotificationDate", + "mangledName": "$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Date?", + "children": [ + { + "kind": "TypeNominal", + "name": "Date", + "printedName": "Foundation.Date", + "usr": "s:10Foundation4DateV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(im)lastNotificationDate", + "mangledName": "$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Date?", + "children": [ + { + "kind": "TypeNominal", + "name": "Date", + "printedName": "Foundation.Date", + "usr": "s:10Foundation4DateV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(im)setLastNotificationDate:", + "mangledName": "$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)CampaignTracking", + "mangledName": "$s8PenNavUI16CampaignTrackingC", + "moduleName": "PenNavUI", + "objc_name": "CampaignTracking", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "Campus", + "printedName": "Campus", + "children": [ + { + "kind": "Var", + "name": "id", + "printedName": "id", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI6CampusC2idSiSgvp", + "mangledName": "$s8PenNavUI6CampusC2idSiSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC2idSiSgvg", + "mangledName": "$s8PenNavUI6CampusC2idSiSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC2idSiSgvs", + "mangledName": "$s8PenNavUI6CampusC2idSiSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC2idSiSgvM", + "mangledName": "$s8PenNavUI6CampusC2idSiSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "name", + "printedName": "name", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI6CampusC4nameSSSgvp", + "mangledName": "$s8PenNavUI6CampusC4nameSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC4nameSSSgvg", + "mangledName": "$s8PenNavUI6CampusC4nameSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC4nameSSSgvs", + "mangledName": "$s8PenNavUI6CampusC4nameSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC4nameSSSgvM", + "mangledName": "$s8PenNavUI6CampusC4nameSSSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "coverImage", + "printedName": "coverImage", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI6CampusC10coverImageSSSgvp", + "mangledName": "$s8PenNavUI6CampusC10coverImageSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC10coverImageSSSgvg", + "mangledName": "$s8PenNavUI6CampusC10coverImageSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC10coverImageSSSgvs", + "mangledName": "$s8PenNavUI6CampusC10coverImageSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC10coverImageSSSgvM", + "mangledName": "$s8PenNavUI6CampusC10coverImageSSSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI6CampusC", + "mangledName": "$s8PenNavUI6CampusC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "AVFoundation", + "printedName": "AVFoundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "CGTextRenderer", + "printedName": "CGTextRenderer", + "children": [ + { + "kind": "TypeDecl", + "name": "API", + "printedName": "API", + "children": [ + { + "kind": "Var", + "name": "uiKit", + "printedName": "uiKit", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CGTextRenderer.API.Type) -> PenNavUI.CGTextRenderer.API", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CGTextRenderer.API.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI14CGTextRendererC3APIO5uiKityA2EmF", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO5uiKityA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "appKit", + "printedName": "appKit", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CGTextRenderer.API.Type) -> PenNavUI.CGTextRenderer.API", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CGTextRenderer.API.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI14CGTextRendererC3APIO6appKityA2EmF", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO6appKityA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC3APIO2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI14CGTextRendererC3APIO9hashValueSivp", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI14CGTextRendererC3APIO9hashValueSivg", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC3APIO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI14CGTextRendererC3APIO", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + } + ] + }, + { + "kind": "Function", + "name": "render", + "printedName": "render(named:in:size:options:api:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bundle", + "printedName": "Foundation.Bundle", + "hasDefaultArg": true, + "usr": "c:objc(cs)NSBundle" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(width: Swift.Int, height: Swift.Int)?", + "children": [ + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(width: Swift.Int, height: Swift.Int)", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC6render5named2in4size7options3api9precisionS2S_So8NSBundleCSi5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC6render5named2in4size7options3api9precisionS2S_So8NSBundleCSi5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "render", + "printedName": "render(fileURL:size:options:api:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(width: Swift.Int, height: Swift.Int)?", + "children": [ + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(width: Swift.Int, height: Swift.Int)", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC6render7fileURL4size7options3api9precisionSS10Foundation0H0V_Si5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC6render7fileURL4size7options3api9precisionSS10Foundation0H0V_Si5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "render", + "printedName": "render(data:options:api:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC6render4data7options3api9precisionSS10Foundation4DataV_AA3SVGC7OptionsVAC3APIOSitKFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC6render4data7options3api9precisionSS10Foundation4DataV_AA3SVGC7OptionsVAC3APIOSitKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "renderPath", + "printedName": "renderPath(from:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC10renderPath4fromS2S_tKFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC10renderPath4fromS2S_tKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI14CGTextRendererC", + "mangledName": "$s8PenNavUI14CGTextRendererC", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "AVFoundation", + "printedName": "AVFoundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "TagFlowLayout", + "printedName": "TagFlowLayout", + "children": [ + { + "kind": "Function", + "name": "layoutAttributesForElements", + "printedName": "layoutAttributesForElements(in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "[UIKit.UICollectionViewLayoutAttributes]?", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.UICollectionViewLayoutAttributes]", + "children": [ + { + "kind": "TypeNominal", + "name": "UICollectionViewLayoutAttributes", + "printedName": "UIKit.UICollectionViewLayoutAttributes", + "usr": "c:objc(cs)UICollectionViewLayoutAttributes" + } + ], + "usr": "s:Sa" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGRect", + "printedName": "CoreFoundation.CGRect", + "usr": "c:@S@CGRect" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(im)layoutAttributesForElementsInRect:", + "mangledName": "$s8PenNavUI13TagFlowLayoutC27layoutAttributesForElements2inSaySo016UICollectionViewfH0CGSgSo6CGRectV_tF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "layoutAttributesForElementsInRect:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "flipsHorizontallyInOppositeLayoutDirection", + "printedName": "flipsHorizontallyInOppositeLayoutDirection", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(py)flipsHorizontallyInOppositeLayoutDirection", + "mangledName": "$s8PenNavUI13TagFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "flipsHorizontallyInOppositeLayoutDirection", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(im)flipsHorizontallyInOppositeLayoutDirection", + "mangledName": "$s8PenNavUI13TagFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "flipsHorizontallyInOppositeLayoutDirection", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "developmentLayoutDirection", + "printedName": "developmentLayoutDirection", + "children": [ + { + "kind": "TypeNominal", + "name": "UIUserInterfaceLayoutDirection", + "printedName": "UIKit.UIUserInterfaceLayoutDirection", + "usr": "c:@E@UIUserInterfaceLayoutDirection" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(py)developmentLayoutDirection", + "mangledName": "$s8PenNavUI13TagFlowLayoutC011developmentF9DirectionSo015UIUserInterfacefH0Vvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "developmentLayoutDirection", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIUserInterfaceLayoutDirection", + "printedName": "UIKit.UIUserInterfaceLayoutDirection", + "usr": "c:@E@UIUserInterfaceLayoutDirection" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(im)developmentLayoutDirection", + "mangledName": "$s8PenNavUI13TagFlowLayoutC011developmentF9DirectionSo015UIUserInterfacefH0Vvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "developmentLayoutDirection", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "TagFlowLayout", + "printedName": "PenNavUI.TagFlowLayout", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(im)init", + "mangledName": "$s8PenNavUI13TagFlowLayoutCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "TypeDecl", + "name": "LayoutAlignment", + "printedName": "LayoutAlignment", + "children": [ + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.TagFlowLayout.LayoutAlignment.Type) -> PenNavUI.TagFlowLayout.LayoutAlignment", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO4leftyA2EmF", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO4leftyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "center", + "printedName": "center", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.TagFlowLayout.LayoutAlignment.Type) -> PenNavUI.TagFlowLayout.LayoutAlignment", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO6centeryA2EmF", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO6centeryA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.TagFlowLayout.LayoutAlignment.Type) -> PenNavUI.TagFlowLayout.LayoutAlignment", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO5rightyA2EmF", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO5rightyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment?", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueAESgSi_tcfc", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueAESgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivp", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivg", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO", + "moduleName": "PenNavUI", + "isFromExtension": true, + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout", + "mangledName": "$s8PenNavUI13TagFlowLayoutC", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)UICollectionViewFlowLayout", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "UIKit.UICollectionViewFlowLayout", + "UIKit.UICollectionViewLayout", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavUIManager", + "printedName": "PenNavUIManager", + "children": [ + { + "kind": "Var", + "name": "shared", + "printedName": "shared", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB9UIManagerC6sharedACvpZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC6sharedACvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC6sharedACvgZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC6sharedACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC6sharedACvsZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC6sharedACvsZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC6sharedACvMZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC6sharedACvMZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "initializationDelegate", + "printedName": "initializationDelegate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PenNavInitializationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavInitializationDelegate", + "printedName": "any PenNavUI.PenNavInitializationDelegate", + "usr": "s:8PenNavUI0aB22InitializationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvp", + "mangledName": "$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PenNavInitializationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavInitializationDelegate", + "printedName": "any PenNavUI.PenNavInitializationDelegate", + "usr": "s:8PenNavUI0aB22InitializationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvg", + "mangledName": "$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PenNavInitializationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavInitializationDelegate", + "printedName": "any PenNavUI.PenNavInitializationDelegate", + "usr": "s:8PenNavUI0aB22InitializationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvs", + "mangledName": "$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvM", + "mangledName": "$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "eventsDelegate", + "printedName": "eventsDelegate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PIEventsDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PIEventsDelegate", + "printedName": "any PenNavUI.PIEventsDelegate", + "usr": "s:8PenNavUI16PIEventsDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvp", + "mangledName": "$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PIEventsDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PIEventsDelegate", + "printedName": "any PenNavUI.PIEventsDelegate", + "usr": "s:8PenNavUI16PIEventsDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvg", + "mangledName": "$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PIEventsDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PIEventsDelegate", + "printedName": "any PenNavUI.PIEventsDelegate", + "usr": "s:8PenNavUI16PIEventsDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvs", + "mangledName": "$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvM", + "mangledName": "$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "locationDelegate", + "printedName": "locationDelegate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PILocationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PILocationDelegate", + "printedName": "any PenNavUI.PILocationDelegate", + "usr": "s:8PenNavUI18PILocationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvp", + "mangledName": "$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PILocationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PILocationDelegate", + "printedName": "any PenNavUI.PILocationDelegate", + "usr": "s:8PenNavUI18PILocationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvg", + "mangledName": "$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PILocationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PILocationDelegate", + "printedName": "any PenNavUI.PILocationDelegate", + "usr": "s:8PenNavUI18PILocationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvs", + "mangledName": "$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvM", + "mangledName": "$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Function", + "name": "build", + "printedName": "build()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC5buildyyF", + "mangledName": "$s8PenNavUI0aB9UIManagerC5buildyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setLanguage", + "printedName": "setLanguage(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setLanguageyACSSF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setLanguageyACSSF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setLanguage", + "printedName": "setLanguage(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setLanguageyySSFZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setLanguageyySSFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setDeepLinkComponents", + "printedName": "setDeepLinkComponents(scheme:host:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC21setDeepLinkComponents6scheme4hostACSS_SStF", + "mangledName": "$s8PenNavUI0aB9UIManagerC21setDeepLinkComponents6scheme4hostACSS_SStF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setDeepLink", + "printedName": "setDeepLink(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setDeepLinkyy10Foundation3URLVSgF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setDeepLinkyy10Foundation3URLVSgF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setEnableReportIssue", + "printedName": "setEnableReportIssue(enable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC20setEnableReportIssue6enableACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC20setEnableReportIssue6enableACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setShareLocationCallback", + "printedName": "setShareLocationCallback(enabled:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC24setShareLocationCallback7enabledACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC24setShareLocationCallback7enabledACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "navigate", + "printedName": "navigate(to:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "((Swift.Bool, PenNavUI.PenNavUIError?) -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(Swift.Bool, PenNavUI.PenNavUIError?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(Swift.Bool, PenNavUI.PenNavUIError?)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.PenNavUIError?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ], + "usr": "s:Sq" + } + ] + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtF", + "mangledName": "$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getCampusListing", + "printedName": "getCampusListing(baseURL:serviceName:clientID:clientKey:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "([PenNavUI.Campus]?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "[PenNavUI.Campus]?", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[PenNavUI.Campus]", + "children": [ + { + "kind": "TypeNominal", + "name": "Campus", + "printedName": "PenNavUI.Campus", + "usr": "s:8PenNavUI6CampusC" + } + ], + "usr": "s:Sa" + } + ], + "usr": "s:Sq" + } + ] + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctF", + "mangledName": "$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setAppColor", + "printedName": "setAppColor(color:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setAppColor5colorACSo7UIColorC_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setAppColor5colorACSo7UIColorC_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getVersion", + "printedName": "getVersion()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC10getVersionSSyFZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC10getVersionSSyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "present", + "printedName": "present(root:view:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC7present4root4viewySo16UIViewControllerC_So0H0CtF", + "mangledName": "$s8PenNavUI0aB9UIManagerC7present4root4viewySo16UIViewControllerC_So0H0CtF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "dismiss", + "printedName": "dismiss()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC7dismissyyF", + "mangledName": "$s8PenNavUI0aB9UIManagerC7dismissyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setClientKey", + "printedName": "setClientKey(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC12setClientKeyyACSSF", + "mangledName": "$s8PenNavUI0aB9UIManagerC12setClientKeyyACSSF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setClientID", + "printedName": "setClientID(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setClientIDyACSSF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setClientIDyACSSF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setUsername", + "printedName": "setUsername(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setUsernameyACSSF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setUsernameyACSSF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setServiceName", + "printedName": "setServiceName(dataServiceName:positionServiceName:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC14setServiceName04datafG008positionfG0ACSS_SStF", + "mangledName": "$s8PenNavUI0aB9UIManagerC14setServiceName04datafG008positionfG0ACSS_SStF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setBaseURL", + "printedName": "setBaseURL(dataURL:positionURL:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC10setBaseURL04dataG008positionG0ACSS_SStF", + "mangledName": "$s8PenNavUI0aB9UIManagerC10setBaseURL04dataG008positionG0ACSS_SStF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setIsShowUserName", + "printedName": "setIsShowUserName(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC17setIsShowUserNameyACSbF", + "mangledName": "$s8PenNavUI0aB9UIManagerC17setIsShowUserNameyACSbF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setBackButtonVisibility", + "printedName": "setBackButtonVisibility(visible:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC23setBackButtonVisibility7visibleACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC23setBackButtonVisibility7visibleACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setDebugOptionsVisibility", + "printedName": "setDebugOptionsVisibility(visible:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC25setDebugOptionsVisibility7visibleACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC25setDebugOptionsVisibility7visibleACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setCampusID", + "printedName": "setCampusID(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setCampusIDyACSiF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setCampusIDyACSiF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setIsUpdateUserLocationSmoothly", + "printedName": "setIsUpdateUserLocationSmoothly(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC31setIsUpdateUserLocationSmoothlyyACSbF", + "mangledName": "$s8PenNavUI0aB9UIManagerC31setIsUpdateUserLocationSmoothlyyACSbF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setOutdoorEnable", + "printedName": "setOutdoorEnable(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC16setOutdoorEnable02isG0ACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC16setOutdoorEnable02isG0ACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setSimulationModeEnabled", + "printedName": "setSimulationModeEnabled(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC24setSimulationModeEnabled8isEnableACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC24setSimulationModeEnabled8isEnableACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setStepDetectionEnable", + "printedName": "setStepDetectionEnable(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC22setStepDetectionEnable02isH0ACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC22setStepDetectionEnable02isH0ACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setTransitionEnable", + "printedName": "setTransitionEnable(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC19setTransitionEnable02isG0ACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC19setTransitionEnable02isG0ACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setGeographicCoordinateEnable", + "printedName": "setGeographicCoordinateEnable(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC29setGeographicCoordinateEnable02isH0ACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC29setGeographicCoordinateEnable02isH0ACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getToken", + "printedName": "getToken(clientID:clientKey:showProgress:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(Swift.String?, Penguin.ErrorCode?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(Swift.String?, Penguin.ErrorCode?)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Penguin.ErrorCode?", + "children": [ + { + "kind": "TypeNominal", + "name": "ErrorCode", + "printedName": "Penguin.ErrorCode", + "usr": "c:@M@Penguin@E@ErrorCode" + } + ], + "usr": "s:Sq" + } + ] + } + ] + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctF", + "mangledName": "$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setToken", + "printedName": "setToken(token:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC8setToken5tokenySS_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC8setToken5tokenySS_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "clearDatabase", + "printedName": "clearDatabase()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC13clearDatabaseyyF", + "mangledName": "$s8PenNavUI0aB9UIManagerC13clearDatabaseyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getVersion", + "printedName": "getVersion()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC10getVersionSSSgyF", + "mangledName": "$s8PenNavUI0aB9UIManagerC10getVersionSSSgyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager(im)init", + "mangledName": "$s8PenNavUI0aB9UIManagerCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "locationManagerDidChangeAuthorization", + "printedName": "locationManagerDidChangeAuthorization(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationManager", + "printedName": "CoreLocation.CLLocationManager", + "usr": "c:objc(cs)CLLocationManager" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)locationManagerDidChangeAuthorization:", + "mangledName": "$s8PenNavUI0aB9UIManagerC37locationManagerDidChangeAuthorizationyySo010CLLocationF0CF", + "moduleName": "PenNavUI", + "objc_name": "locationManagerDidChangeAuthorization:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "locationManager", + "printedName": "locationManager(_:didChangeAuthorization:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationManager", + "printedName": "CoreLocation.CLLocationManager", + "usr": "c:objc(cs)CLLocationManager" + }, + { + "kind": "TypeNominal", + "name": "CLAuthorizationStatus", + "printedName": "CoreLocation.CLAuthorizationStatus", + "usr": "c:@E@CLAuthorizationStatus" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)locationManager:didChangeAuthorizationStatus:", + "mangledName": "$s8PenNavUI0aB9UIManagerC15locationManager_22didChangeAuthorizationySo010CLLocationF0C_So21CLAuthorizationStatusVtF", + "moduleName": "PenNavUI", + "objc_name": "locationManager:didChangeAuthorizationStatus:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onReady", + "printedName": "onReady(warning:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "WarningCode", + "printedName": "Penguin.WarningCode", + "usr": "c:@M@Penguin@E@WarningCode" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)onReadyWithWarning:", + "mangledName": "$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tF", + "moduleName": "PenNavUI", + "objc_name": "onReadyWithWarning:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onInitilzationError", + "printedName": "onInitilzationError(error:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "ErrorCode", + "printedName": "Penguin.ErrorCode", + "usr": "c:@M@Penguin@E@ErrorCode" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)onInitilzationErrorWithError:", + "mangledName": "$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tF", + "moduleName": "PenNavUI", + "objc_name": "onInitilzationErrorWithError:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onInitializationProgressChange", + "printedName": "onInitializationProgressChange(status:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "SDKOperation", + "printedName": "Penguin.SDKOperation", + "usr": "c:@M@Penguin@E@SDKOperation" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)onInitializationProgressChangeWithStatus:", + "mangledName": "$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tF", + "moduleName": "PenNavUI", + "objc_name": "onInitializationProgressChangeWithStatus:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager", + "mangledName": "$s8PenNavUI0aB9UIManagerC", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "PIInitializerDelegate", + "printedName": "PIInitializerDelegate", + "usr": "c:@M@Penguin@objc(pl)PIInitializerDelegate", + "mangledName": "$s7Penguin21PIInitializerDelegateP" + } + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "MessageUI", + "printedName": "MessageUI", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "SafariServices", + "printedName": "SafariServices", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "DOM", + "printedName": "DOM", + "declKind": "Enum", + "usr": "s:8PenNavUI3DOMO", + "mangledName": "$s8PenNavUI3DOMO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "CommandLine", + "printedName": "CommandLine", + "children": [ + { + "kind": "Function", + "name": "processImage", + "printedName": "processImage(with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "PenNavUI.CommandLine.Configuration", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO12processImage4with10Foundation4DataVAC13ConfigurationV_tKFZ", + "mangledName": "$s8PenNavUI11CommandLineO12processImage4with10Foundation4DataVAC13ConfigurationV_tKFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "makeSVGOptions", + "printedName": "makeSVGOptions(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "PenNavUI.CommandLine.Configuration", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO14makeSVGOptions3forAA3SVGC7OptionsVAC13ConfigurationV_tFZ", + "mangledName": "$s8PenNavUI11CommandLineO14makeSVGOptions3forAA3SVGC7OptionsVAC13ConfigurationV_tFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "makeTextAPI", + "printedName": "makeTextAPI(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO11makeTextAPI3forAA14CGTextRendererC0H0OAcHOSg_tFZ", + "mangledName": "$s8PenNavUI11CommandLineO11makeTextAPI3forAA14CGTextRendererC0H0OAcHOSg_tFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "processImage", + "printedName": "processImage(_:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + }, + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "PenNavUI.CommandLine.Configuration", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO12processImage_4with10Foundation4DataVAA3SVGC_AC13ConfigurationVtKFZ", + "mangledName": "$s8PenNavUI11CommandLineO12processImage_4with10Foundation4DataVAA3SVGC_AC13ConfigurationVtKFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "makeImageInsets", + "printedName": "makeImageInsets(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO15makeImageInsets3forAA3SVGC0H0VAcHV_tKFZ", + "mangledName": "$s8PenNavUI11CommandLineO15makeImageInsets3forAA3SVGC0H0VAcHV_tKFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "TypeDecl", + "name": "Configuration", + "printedName": "Configuration", + "children": [ + { + "kind": "Var", + "name": "input", + "printedName": "input", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "inputUltralight", + "printedName": "inputUltralight", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "inputBlack", + "printedName": "inputBlack", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "output", + "printedName": "output", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "format", + "printedName": "format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "size", + "printedName": "size", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "api", + "printedName": "api", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "insets", + "printedName": "insets", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "insetsUltralight", + "printedName": "insetsUltralight", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "insetsBlack", + "printedName": "insetsBlack", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "scale", + "printedName": "scale", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "options", + "printedName": "options", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "precision", + "printedName": "precision", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Format", + "printedName": "Format", + "children": [ + { + "kind": "Var", + "name": "jpeg", + "printedName": "jpeg", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO4jpegyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO4jpegyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "pdf", + "printedName": "pdf", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO3pdfyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO3pdfyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "png", + "printedName": "png", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO3pngyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO3pngyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "swift", + "printedName": "swift", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO5swiftyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO5swiftyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "sfsymbol", + "printedName": "sfsymbol", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO8sfsymbolyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO8sfsymbolyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Format?", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI11CommandLineO6FormatO8rawValueAESgSS_tcfc", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO8rawValueAESgSS_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6FormatO8rawValueSSvp", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO8rawValueSSvp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6FormatO8rawValueSSvg", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO8rawValueSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO6FormatO", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "enumRawTypeName": "String", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "API", + "printedName": "API", + "children": [ + { + "kind": "Var", + "name": "appkit", + "printedName": "appkit", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.API.Type) -> PenNavUI.CommandLine.API", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.API.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO3APIO6appkityA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO3APIO6appkityA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "uikit", + "printedName": "uikit", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.API.Type) -> PenNavUI.CommandLine.API", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.API.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO3APIO5uikityA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO3APIO5uikityA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI11CommandLineO3APIO8rawValueAESgSS_tcfc", + "mangledName": "$s8PenNavUI11CommandLineO3APIO8rawValueAESgSS_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO3APIO8rawValueSSvp", + "mangledName": "$s8PenNavUI11CommandLineO3APIO8rawValueSSvp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO3APIO8rawValueSSvg", + "mangledName": "$s8PenNavUI11CommandLineO3APIO8rawValueSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO3APIO", + "mangledName": "$s8PenNavUI11CommandLineO3APIO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "enumRawTypeName": "String", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Size", + "printedName": "Size", + "children": [ + { + "kind": "Var", + "name": "default", + "printedName": "default", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Size.Type) -> PenNavUI.CommandLine.Size", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Size.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO4SizeO7defaultyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO4SizeO7defaultyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "custom", + "printedName": "custom", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Size.Type) -> (Swift.Int, Swift.Int) -> PenNavUI.CommandLine.Size", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(Swift.Int, Swift.Int) -> PenNavUI.CommandLine.Size", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + }, + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(width: Swift.Int, height: Swift.Int)", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ] + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Size.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO4SizeO6customyAESi_SitcAEmF", + "mangledName": "$s8PenNavUI11CommandLineO4SizeO6customyAESi_SitcAEmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + }, + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO4SizeO2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI11CommandLineO4SizeO2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO4SizeO", + "mangledName": "$s8PenNavUI11CommandLineO4SizeO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Scale", + "printedName": "Scale", + "children": [ + { + "kind": "Var", + "name": "default", + "printedName": "default", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Scale.Type) -> PenNavUI.CommandLine.Scale", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Scale.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ScaleO7defaultyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO7defaultyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "retina", + "printedName": "retina", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Scale.Type) -> PenNavUI.CommandLine.Scale", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Scale.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ScaleO6retinayA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO6retinayA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "superRetina", + "printedName": "superRetina", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Scale.Type) -> PenNavUI.CommandLine.Scale", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Scale.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ScaleO11superRetinayA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO11superRetinayA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO5ScaleO9hashValueSivp", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO5ScaleO9hashValueSivg", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO5ScaleO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + }, + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO5ScaleO2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO5ScaleO", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Insets", + "printedName": "Insets", + "children": [ + { + "kind": "Var", + "name": "top", + "printedName": "top", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3topSdSgvp", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3topSdSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3topSdSgvg", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3topSdSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3topSdSgvs", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3topSdSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3topSdSgvM", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3topSdSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6InsetsV4leftSdSgvp", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV4leftSdSgvg", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV4leftSdSgvs", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV4leftSdSgvM", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "bottom", + "printedName": "bottom", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6InsetsV6bottomSdSgvp", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV6bottomSdSgvg", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV6bottomSdSgvs", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV6bottomSdSgvM", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6InsetsV5rightSdSgvp", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV5rightSdSgvg", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV5rightSdSgvs", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV5rightSdSgvM", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(top:left:bottom:right:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3top4left6bottom5rightAESdSg_A3Jtcfc", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3top4left6bottom5rightAESdSg_A3Jtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO6InsetsV2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI11CommandLineO6InsetsV", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + }, + { + "kind": "Function", + "name": "parseConfiguration", + "printedName": "parseConfiguration(from:baseDirectory:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "PenNavUI.CommandLine.Configuration", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV" + }, + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[Swift.String]", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO18parseConfiguration4from13baseDirectoryAC0G0VSaySSG_10Foundation3URLVtKFZ", + "mangledName": "$s8PenNavUI11CommandLineO18parseConfiguration4from13baseDirectoryAC0G0VSaySSG_10Foundation3URLVtKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "TypeDecl", + "name": "Error", + "printedName": "Error", + "children": [ + { + "kind": "Var", + "name": "invalid", + "printedName": "invalid", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Error.Type) -> PenNavUI.CommandLine.Error", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Error.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ErrorO7invalidyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO7invalidyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "unsupported", + "printedName": "unsupported", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Error.Type) -> PenNavUI.CommandLine.Error", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Error.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ErrorO11unsupportedyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO11unsupportedyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "fileNotFound", + "printedName": "fileNotFound", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Error.Type) -> PenNavUI.CommandLine.Error", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Error.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ErrorO12fileNotFoundyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO12fileNotFoundyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + }, + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO5ErrorO2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO5ErrorO9hashValueSivp", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO5ErrorO9hashValueSivg", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO5ErrorO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO5ErrorO", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Error", + "printedName": "Error", + "usr": "s:s5ErrorP", + "mangledName": "$ss5ErrorP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO", + "mangledName": "$s8PenNavUI11CommandLineO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelBehavior", + "printedName": "FloatingPanelBehavior", + "children": [ + { + "kind": "Var", + "name": "springDecelerationRate", + "printedName": "springDecelerationRate", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(py)springDecelerationRate", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP22springDecelerationRate12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)springDecelerationRate", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP22springDecelerationRate12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "springResponseTime", + "printedName": "springResponseTime", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(py)springResponseTime", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP18springResponseTime12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)springResponseTime", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP18springResponseTime12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "momentumProjectionRate", + "printedName": "momentumProjectionRate", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(py)momentumProjectionRate", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP22momentumProjectionRate12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)momentumProjectionRate", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP22momentumProjectionRate12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "shouldProjectMomentum", + "printedName": "shouldProjectMomentum(_:to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)shouldProjectMomentum:to:", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP21shouldProjectMomentum_2toSbAA0dE10ControllerC_AA0dE5StateCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "redirectionalProgress", + "printedName": "redirectionalProgress(_:from:to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)redirectionalProgress:from:to:", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP21redirectionalProgress_4from2to12CoreGraphics7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "allowsRubberBanding", + "printedName": "allowsRubberBanding(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "UIRectEdge", + "printedName": "UIUtilities.UIRectEdge", + "usr": "c:@E@UIRectEdge" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)allowsRubberBandingFor:", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP19allowsRubberBanding3forSbSo10UIRectEdgeV_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "allowsRubberBandingFor:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "removalInteractionVelocityThreshold", + "printedName": "removalInteractionVelocityThreshold", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(py)removalInteractionVelocityThreshold", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)removalInteractionVelocityThreshold", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Protocol", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 : AnyObject>", + "sugared_genericSig": "", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelDefaultBehavior", + "printedName": "FloatingPanelDefaultBehavior", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelDefaultBehavior", + "printedName": "PenNavUI.FloatingPanelDefaultBehavior", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorCACycfc", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorCACycfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "springDecelerationRate", + "printedName": "springDecelerationRate", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "springDecelerationRate", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "springDecelerationRate", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "springResponseTime", + "printedName": "springResponseTime", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "springResponseTime", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "springResponseTime", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "momentumProjectionRate", + "printedName": "momentumProjectionRate", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "momentumProjectionRate", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "momentumProjectionRate", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "redirectionalProgress", + "printedName": "redirectionalProgress(_:from:to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC21redirectionalProgress_4from2to14CoreFoundation7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtF", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC21redirectionalProgress_4from2to12CoreGraphics7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtF", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "redirectionalProgress:from:to:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "allowsRubberBanding", + "printedName": "allowsRubberBanding(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "UIRectEdge", + "printedName": "UIUtilities.UIRectEdge", + "usr": "c:@E@UIRectEdge" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tF", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tF", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "allowsRubberBandingFor:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "removalInteractionVelocityThreshold", + "printedName": "removalInteractionVelocityThreshold", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "removalInteractionVelocityThreshold", + "declAttributes": [ + "HasInitialValue", + "ObjC", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "isOpen": true, + "objc_name": "removalInteractionVelocityThreshold", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "isOpen": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "isOpen": true, + "accessorKind": "_modify" + } + ] + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC", + "moduleName": "PenNavUI", + "isOpen": true, + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "FloatingPanelBehavior", + "printedName": "FloatingPanelBehavior", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "IssueType", + "printedName": "IssueType", + "children": [ + { + "kind": "Var", + "name": "poi", + "printedName": "poi", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.IssueType.Type) -> PenNavUI.IssueType", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.IssueType.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI9IssueTypeO3poiyA2CmF", + "mangledName": "$s8PenNavUI9IssueTypeO3poiyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "venue", + "printedName": "venue", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.IssueType.Type) -> PenNavUI.IssueType", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.IssueType.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI9IssueTypeO5venueyA2CmF", + "mangledName": "$s8PenNavUI9IssueTypeO5venueyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "location", + "printedName": "location", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.IssueType.Type) -> PenNavUI.IssueType", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.IssueType.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI9IssueTypeO8locationyA2CmF", + "mangledName": "$s8PenNavUI9IssueTypeO8locationyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "navigation", + "printedName": "navigation", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.IssueType.Type) -> PenNavUI.IssueType", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.IssueType.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI9IssueTypeO10navigationyA2CmF", + "mangledName": "$s8PenNavUI9IssueTypeO10navigationyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI9IssueTypeO2eeoiySbAC_ACtFZ", + "mangledName": "$s8PenNavUI9IssueTypeO2eeoiySbAC_ACtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI9IssueTypeO9hashValueSivp", + "mangledName": "$s8PenNavUI9IssueTypeO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI9IssueTypeO9hashValueSivg", + "mangledName": "$s8PenNavUI9IssueTypeO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI9IssueTypeO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI9IssueTypeO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI9IssueTypeO", + "mangledName": "$s8PenNavUI9IssueTypeO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + } + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "MapKit", + "printedName": "MapKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "FavoriteCacheData", + "printedName": "FavoriteCacheData", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FavoriteCacheData", + "printedName": "PenNavUI.FavoriteCacheData", + "usr": "c:@M@PenNavUI@objc(cs)FavoriteCacheData" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FavoriteCacheData(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "FavoriteCacheData", + "printedName": "PenNavUI.FavoriteCacheData", + "usr": "c:@M@PenNavUI@objc(cs)FavoriteCacheData" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17FavoriteCacheDataC12fetchRequestSo07NSFetchH0CyACGyFZ", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC12fetchRequestSo07NSFetchH0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "createDate", + "printedName": "createDate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)createDate", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC10createDateSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)createDate", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC10createDateSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setCreateDate:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC10createDateSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "deviceId", + "printedName": "deviceId", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)deviceId", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8deviceIdSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)deviceId", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8deviceIdSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setDeviceId:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8deviceIdSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "type", + "printedName": "type", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)type", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC4typeSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)type", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC4typeSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setType:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC4typeSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "distance", + "printedName": "distance", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)distance", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8distanceSdvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)distance", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8distanceSdvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setDistance:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8distanceSdvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "id", + "printedName": "id", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)id", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC2idSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)id", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC2idSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setId:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC2idSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "label", + "printedName": "label", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)label", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5labelSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)label", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5labelSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setLabel:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5labelSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "poiId", + "printedName": "poiId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)poiId", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5poiIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)poiId", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5poiIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setPoiId:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5poiIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "userName", + "printedName": "userName", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)userName", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8userNameSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)userName", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8userNameSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setUserName:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8userNameSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "location", + "printedName": "location", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SharedLocationCacheData?", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)location", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8locationAA014SharedLocationeF0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SharedLocationCacheData?", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)location", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8locationAA014SharedLocationeF0CSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SharedLocationCacheData?", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setLocation:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8locationAA014SharedLocationeF0CSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FavoriteCacheData", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC", + "moduleName": "PenNavUI", + "objc_name": "FavoriteCacheData", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelReferenceEdge", + "printedName": "FloatingPanelReferenceEdge", + "children": [ + { + "kind": "Var", + "name": "top", + "printedName": "top", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelReferenceEdge.Type) -> PenNavUI.FloatingPanelReferenceEdge", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelReferenceEdge.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge@FloatingPanelReferenceEdgeTop", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO3topyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelReferenceEdge.Type) -> PenNavUI.FloatingPanelReferenceEdge", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelReferenceEdge.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge@FloatingPanelReferenceEdgeLeft", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO4leftyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Var", + "name": "bottom", + "printedName": "bottom", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelReferenceEdge.Type) -> PenNavUI.FloatingPanelReferenceEdge", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelReferenceEdge.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge@FloatingPanelReferenceEdgeBottom", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO6bottomyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 2 + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelReferenceEdge.Type) -> PenNavUI.FloatingPanelReferenceEdge", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelReferenceEdge.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge@FloatingPanelReferenceEdgeRight", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO5rightyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 3 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelReferenceEdge?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI26FloatingPanelReferenceEdgeO8rawValueACSgSi_tcfc", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueACSgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI26FloatingPanelReferenceEdgeO8rawValueSivp", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI26FloatingPanelReferenceEdgeO8rawValueSivg", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "FloatingPanelLayoutReferenceGuide", + "children": [ + { + "kind": "Var", + "name": "superview", + "printedName": "superview", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutReferenceGuide.Type) -> PenNavUI.FloatingPanelLayoutReferenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide@FloatingPanelLayoutReferenceGuideSuperview", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO9superviewyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "safeArea", + "printedName": "safeArea", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutReferenceGuide.Type) -> PenNavUI.FloatingPanelLayoutReferenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide@FloatingPanelLayoutReferenceGuideSafeArea", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8safeAreayA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueACSgSi_tcfc", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueACSgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueSivp", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueSivg", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "FloatingPanelLayoutContentBoundingGuide", + "children": [ + { + "kind": "Var", + "name": "none", + "printedName": "none", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type) -> PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide@FloatingPanelLayoutContentBoundingGuideNone", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO4noneyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "superview", + "printedName": "superview", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type) -> PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide@FloatingPanelLayoutContentBoundingGuideSuperview", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO9superviewyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Var", + "name": "safeArea", + "printedName": "safeArea", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type) -> PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide@FloatingPanelLayoutContentBoundingGuideSafeArea", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8safeAreayA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 2 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueACSgSi_tcfc", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueACSgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueSivp", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueSivg", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "MessageUI", + "printedName": "MessageUI", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "SafariServices", + "printedName": "SafariServices", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "PIEventsDelegate", + "printedName": "PIEventsDelegate", + "children": [ + { + "kind": "Function", + "name": "onBackButtonPressed", + "printedName": "onBackButtonPressed()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP19onBackButtonPressedyyF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP19onBackButtonPressedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onPenNavUIDismiss", + "printedName": "onPenNavUIDismiss()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP02onaB9UIDismissyyF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP02onaB9UIDismissyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onReportIssue", + "printedName": "onReportIssue(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP13onReportIssueyyAA0H4TypeOF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP13onReportIssueyyAA0H4TypeOF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onShareLocation", + "printedName": "onShareLocation(link:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP15onShareLocation4linkySSSg_tF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP15onShareLocation4linkySSSg_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onSwitchCampus", + "printedName": "onSwitchCampus(campusId:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP14onSwitchCampus8campusIdySi_tF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP14onSwitchCampus8campusIdySi_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onBackButtonPressed", + "printedName": "onBackButtonPressed()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE19onBackButtonPressedyyF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE19onBackButtonPressedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onPenNavUIDismiss", + "printedName": "onPenNavUIDismiss()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE02onaB9UIDismissyyF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE02onaB9UIDismissyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onReportIssue", + "printedName": "onReportIssue(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE13onReportIssueyyAA0H4TypeOF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE13onReportIssueyyAA0H4TypeOF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onShareLocation", + "printedName": "onShareLocation(link:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE15onShareLocation4linkySSSg_tF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE15onShareLocation4linkySSSg_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onSwitchCampus", + "printedName": "onSwitchCampus(campusId:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE14onSwitchCampus8campusIdySi_tF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE14onSwitchCampus8campusIdySi_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "s:8PenNavUI16PIEventsDelegateP", + "mangledName": "$s8PenNavUI16PIEventsDelegateP", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "QuartzCore", + "printedName": "QuartzCore", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavUITableUpdate", + "printedName": "PenNavUITableUpdate", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUITableUpdate", + "printedName": "PenNavUI.PenNavUITableUpdate", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUITableUpdate" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUITableUpdate(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUITableUpdate", + "printedName": "PenNavUI.PenNavUITableUpdate", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUITableUpdate" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB13UITableUpdateC12fetchRequestSo07NSFetchG0CyACGyFZ", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC12fetchRequestSo07NSFetchG0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "lastUpdateTime", + "printedName": "lastUpdateTime", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(py)lastUpdateTime", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC04lastE4TimeSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(im)lastUpdateTime", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC04lastE4TimeSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(im)setLastUpdateTime:", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC04lastE4TimeSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "tableName", + "printedName": "tableName", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(py)tableName", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC9tableNameSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(im)tableName", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC9tableNameSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(im)setTableName:", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC9tableNameSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUITableUpdate", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC", + "moduleName": "PenNavUI", + "objc_name": "PenNavUITableUpdate", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "SFSymbolRenderer", + "printedName": "SFSymbolRenderer", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(options:insets:insetsUltralight:insetsBlack:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "SFSymbolRenderer", + "printedName": "PenNavUI.SFSymbolRenderer", + "usr": "s:8PenNavUI16SFSymbolRendererV" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI16SFSymbolRendererV7options6insets0G10Ultralight0G5Black9precisionAcA3SVGC7OptionsV_AA11CommandLineO6InsetsVA2PSitcfc", + "mangledName": "$s8PenNavUI16SFSymbolRendererV7options6insets0G10Ultralight0G5Black9precisionAcA3SVGC7OptionsV_AA11CommandLineO6InsetsVA2PSitcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "render", + "printedName": "render(regular:ultralight:black:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16SFSymbolRendererV6render7regular10ultralight5blackSS10Foundation3URLV_AJSgAKtKF", + "mangledName": "$s8PenNavUI16SFSymbolRendererV6render7regular10ultralight5blackSS10Foundation3URLV_AJSgAKtKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "throwing": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI16SFSymbolRendererV", + "mangledName": "$s8PenNavUI16SFSymbolRendererV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Darwin", + "printedName": "Darwin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavStyle", + "printedName": "PenNavStyle", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavStyle", + "printedName": "PenNavUI.PenNavStyle", + "usr": "c:@M@PenNavUI@objc(cs)PenNavStyle" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)PenNavStyle(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI0aB5StyleC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavStyle", + "printedName": "PenNavUI.PenNavStyle", + "usr": "c:@M@PenNavUI@objc(cs)PenNavStyle" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB5StyleC12fetchRequestSo07NSFetchF0CyACGyFZ", + "mangledName": "$s8PenNavUI0aB5StyleC12fetchRequestSo07NSFetchF0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "type", + "printedName": "type", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(py)type", + "mangledName": "$s8PenNavUI0aB5StyleC4typeSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(im)type", + "mangledName": "$s8PenNavUI0aB5StyleC4typeSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(im)setType:", + "mangledName": "$s8PenNavUI0aB5StyleC4typeSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "value", + "printedName": "value", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Data?", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(py)value", + "mangledName": "$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Data?", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(im)value", + "mangledName": "$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Data?", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(im)setValue:", + "mangledName": "$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)PenNavStyle", + "mangledName": "$s8PenNavUI0aB5StyleC", + "moduleName": "PenNavUI", + "objc_name": "PenNavStyle", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "GeofenceConfiguration", + "printedName": "GeofenceConfiguration", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(baseURL:serviceName:clientId:clientKey:campusId:)", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceConfiguration", + "printedName": "PenNavUI.GeofenceConfiguration", + "usr": "s:8PenNavUI21GeofenceConfigurationV" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI21GeofenceConfigurationV7baseURL11serviceName8clientId0J3Key06campusK0ACSS_S3SSiSgtcfc", + "mangledName": "$s8PenNavUI21GeofenceConfigurationV7baseURL11serviceName8clientId0J3Key06campusK0ACSS_S3SSiSgtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI21GeofenceConfigurationV", + "mangledName": "$s8PenNavUI21GeofenceConfigurationV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "AVFoundation", + "printedName": "AVFoundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreHaptics", + "printedName": "CoreHaptics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CryptoKit", + "printedName": "CryptoKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreText", + "printedName": "CoreText", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "CampaignMessage", + "printedName": "CampaignMessage", + "children": [ + { + "kind": "Var", + "name": "title", + "printedName": "title", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI15CampaignMessageV5titleSSvp", + "mangledName": "$s8PenNavUI15CampaignMessageV5titleSSvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV5titleSSvg", + "mangledName": "$s8PenNavUI15CampaignMessageV5titleSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV5titleSSvs", + "mangledName": "$s8PenNavUI15CampaignMessageV5titleSSvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV5titleSSvM", + "mangledName": "$s8PenNavUI15CampaignMessageV5titleSSvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "description", + "printedName": "description", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI15CampaignMessageV11descriptionSSvp", + "mangledName": "$s8PenNavUI15CampaignMessageV11descriptionSSvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV11descriptionSSvg", + "mangledName": "$s8PenNavUI15CampaignMessageV11descriptionSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV11descriptionSSvs", + "mangledName": "$s8PenNavUI15CampaignMessageV11descriptionSSvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV11descriptionSSvM", + "mangledName": "$s8PenNavUI15CampaignMessageV11descriptionSSvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI15CampaignMessageV", + "mangledName": "$s8PenNavUI15CampaignMessageV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreText", + "printedName": "CoreText", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Network", + "printedName": "Network", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavInitializationDelegate", + "printedName": "PenNavInitializationDelegate", + "children": [ + { + "kind": "Function", + "name": "onPenNavInitializationSuccess", + "printedName": "onPenNavInitializationSuccess()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB22InitializationDelegateP02onabD7SuccessyyF", + "mangledName": "$s8PenNavUI0aB22InitializationDelegateP02onabD7SuccessyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PenNavInitializationDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onPenNavInitializationError", + "printedName": "onPenNavInitializationError(errorType:errorDescription:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB22InitializationDelegateP02onabD5Error9errorType0H11DescriptionyAA0aB7UIErrorO_SStF", + "mangledName": "$s8PenNavUI0aB22InitializationDelegateP02onabD5Error9errorType0H11DescriptionyAA0aB7UIErrorO_SStF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PenNavInitializationDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "s:8PenNavUI0aB22InitializationDelegateP", + "mangledName": "$s8PenNavUI0aB22InitializationDelegateP", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "SharedLocationCacheData", + "printedName": "SharedLocationCacheData", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI23SharedLocationCacheDataC12fetchRequestSo07NSFetchI0CyACGyFZ", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC12fetchRequestSo07NSFetchI0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "edgeId", + "printedName": "edgeId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)edgeId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC6edgeIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)edgeId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC6edgeIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setEdgeId:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC6edgeIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "floorId", + "printedName": "floorId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)floorId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7floorIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)floorId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7floorIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setFloorId:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7floorIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "latitude", + "printedName": "latitude", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)latitude", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC8latitudeSdvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)latitude", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC8latitudeSdvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setLatitude:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC8latitudeSdvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "longitude", + "printedName": "longitude", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)longitude", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC9longitudeSdvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)longitude", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC9longitudeSdvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setLongitude:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC9longitudeSdvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "navigationAvoid", + "printedName": "navigationAvoid", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)navigationAvoid", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)navigationAvoid", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setNavigationAvoid:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "venueId", + "printedName": "venueId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)venueId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7venueIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)venueId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7venueIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setVenueId:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7venueIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "x", + "printedName": "x", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)x", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1xs5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)x", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1xs5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setX:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1xs5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "y", + "printedName": "y", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)y", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1ys5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)y", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1ys5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setY:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1ys5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC", + "moduleName": "PenNavUI", + "objc_name": "SharedLocationCacheData", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Network", + "printedName": "Network", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelState", + "printedName": "FloatingPanelState", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelState?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI18FloatingPanelStateC8rawValueACSgSS_tcfc", + "mangledName": "$s8PenNavUI18FloatingPanelStateC8rawValueACSgSS_tcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "Required" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:order:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)initWithRawValue:order:", + "mangledName": "$s8PenNavUI18FloatingPanelStateC8rawValue5orderACSS_Sitcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithRawValue:order:", + "declAttributes": [ + "AccessControl", + "ObjC" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI18FloatingPanelStateC8rawValueSSvp", + "mangledName": "$s8PenNavUI18FloatingPanelStateC8rawValueSSvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "HasStorage", + "AccessControl", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI18FloatingPanelStateC8rawValueSSvg", + "mangledName": "$s8PenNavUI18FloatingPanelStateC8rawValueSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "order", + "printedName": "order", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI18FloatingPanelStateC5orderSivp", + "mangledName": "$s8PenNavUI18FloatingPanelStateC5orderSivp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "HasStorage", + "AccessControl", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI18FloatingPanelStateC5orderSivg", + "mangledName": "$s8PenNavUI18FloatingPanelStateC5orderSivg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "copy", + "printedName": "copy(with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "ProtocolComposition", + "printedName": "Any" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "ObjectiveC.NSZone?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSZone", + "printedName": "ObjectiveC.NSZone", + "usr": "s:10ObjectiveC6NSZoneV" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)copyWithZone:", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4copy4withyp10ObjectiveC6NSZoneVSg_tF", + "moduleName": "PenNavUI", + "objc_name": "copyWithZone:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "description", + "printedName": "description", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(py)description", + "mangledName": "$s8PenNavUI18FloatingPanelStateC11descriptionSSvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "description", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)description", + "mangledName": "$s8PenNavUI18FloatingPanelStateC11descriptionSSvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "description", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "debugDescription", + "printedName": "debugDescription", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(py)debugDescription", + "mangledName": "$s8PenNavUI18FloatingPanelStateC16debugDescriptionSSvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "debugDescription", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)debugDescription", + "mangledName": "$s8PenNavUI18FloatingPanelStateC16debugDescriptionSSvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "debugDescription", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "full", + "printedName": "full", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cpy)Full", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4fullACvpZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "Full", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cm)Full", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4fullACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "half", + "printedName": "half", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cpy)Half", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4halfACvpZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "Half", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cm)Half", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4halfACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "tip", + "printedName": "tip", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cpy)Tip", + "mangledName": "$s8PenNavUI18FloatingPanelStateC3tipACvpZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "Tip", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cm)Tip", + "mangledName": "$s8PenNavUI18FloatingPanelStateC3tipACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "hidden", + "printedName": "hidden", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cpy)Hidden", + "mangledName": "$s8PenNavUI18FloatingPanelStateC6hiddenACvpZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "Hidden", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cm)Hidden", + "mangledName": "$s8PenNavUI18FloatingPanelStateC6hiddenACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)init", + "mangledName": "$s8PenNavUI18FloatingPanelStateCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState", + "mangledName": "$s8PenNavUI18FloatingPanelStateC", + "moduleName": "PenNavUI", + "isOpen": true, + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreText", + "printedName": "CoreText", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "AsynchronousOperation", + "printedName": "AsynchronousOperation", + "children": [ + { + "kind": "Var", + "name": "isAsynchronous", + "printedName": "isAsynchronous", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(py)asynchronous", + "mangledName": "$s8PenNavUI21AsynchronousOperationC02isD0Sbvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "asynchronous", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "Override" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)isAsynchronous", + "mangledName": "$s8PenNavUI21AsynchronousOperationC02isD0Sbvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "isAsynchronous", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isExecuting", + "printedName": "isExecuting", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(py)executing", + "mangledName": "$s8PenNavUI21AsynchronousOperationC11isExecutingSbvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "executing", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "SetterAccess", + "Override" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)isExecuting", + "mangledName": "$s8PenNavUI21AsynchronousOperationC11isExecutingSbvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "isExecuting", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isFinished", + "printedName": "isFinished", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(py)finished", + "mangledName": "$s8PenNavUI21AsynchronousOperationC10isFinishedSbvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "finished", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "SetterAccess", + "Override" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)isFinished", + "mangledName": "$s8PenNavUI21AsynchronousOperationC10isFinishedSbvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "isFinished", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "completeOperation", + "printedName": "completeOperation()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI21AsynchronousOperationC08completeE0yyF", + "mangledName": "$s8PenNavUI21AsynchronousOperationC08completeE0yyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "start", + "printedName": "start()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)start", + "mangledName": "$s8PenNavUI21AsynchronousOperationC5startyyF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "start", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "Override" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "AsynchronousOperation", + "printedName": "PenNavUI.AsynchronousOperation", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)init", + "mangledName": "$s8PenNavUI21AsynchronousOperationCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation", + "mangledName": "$s8PenNavUI21AsynchronousOperationC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSOperation", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "Foundation.Operation", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "SurfaceAppearance", + "printedName": "SurfaceAppearance", + "children": [ + { + "kind": "TypeDecl", + "name": "Shadow", + "printedName": "Shadow", + "children": [ + { + "kind": "Var", + "name": "hidden", + "printedName": "hidden", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "color", + "printedName": "color", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "offset", + "printedName": "offset", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "opacity", + "printedName": "opacity", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "radius", + "printedName": "radius", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6radius14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6radius14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6radius14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6radius14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "spread", + "printedName": "spread", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6spread14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6spread14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6spread14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6spread14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "Shadow", + "printedName": "PenNavUI.SurfaceAppearance.Shadow", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowCAEycfc", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowCAEycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelSurfaceAppearanceShadow", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Var", + "name": "backgroundColor", + "printedName": "backgroundColor", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)backgroundColor", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)backgroundColor", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setBackgroundColor:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "cornerRadius", + "printedName": "cornerRadius", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)cornerRadius", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)cornerRadius", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setCornerRadius:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC12cornerRadius14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "cornerCurve", + "printedName": "cornerCurve", + "children": [ + { + "kind": "TypeNominal", + "name": "CALayerCornerCurve", + "printedName": "QuartzCore.CALayerCornerCurve", + "usr": "c:@T@CALayerCornerCurve" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)cornerCurve", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avp", + "moduleName": "PenNavUI", + "intro_iOS": "13.0", + "declAttributes": [ + "AccessControl", + "Available", + "RawDocComment", + "ObjC" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CALayerCornerCurve", + "printedName": "QuartzCore.CALayerCornerCurve", + "usr": "c:@T@CALayerCornerCurve" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)cornerCurve", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CALayerCornerCurve", + "printedName": "QuartzCore.CALayerCornerCurve", + "usr": "c:@T@CALayerCornerCurve" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setCornerCurve:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM", + "moduleName": "PenNavUI", + "implicit": true, + "intro_iOS": "13.0", + "declAttributes": [ + "Available" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "shadows", + "printedName": "shadows", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[PenNavUI.SurfaceAppearance.Shadow]", + "children": [ + { + "kind": "TypeNominal", + "name": "Shadow", + "printedName": "PenNavUI.SurfaceAppearance.Shadow", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC" + } + ], + "usr": "s:Sa" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)shadows", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[PenNavUI.SurfaceAppearance.Shadow]", + "children": [ + { + "kind": "TypeNominal", + "name": "Shadow", + "printedName": "PenNavUI.SurfaceAppearance.Shadow", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC" + } + ], + "usr": "s:Sa" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)shadows", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[PenNavUI.SurfaceAppearance.Shadow]", + "children": [ + { + "kind": "TypeNominal", + "name": "Shadow", + "printedName": "PenNavUI.SurfaceAppearance.Shadow", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC" + } + ], + "usr": "s:Sa" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setShadows:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "borderColor", + "printedName": "borderColor", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)borderColor", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)borderColor", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setBorderColor:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "borderWidth", + "printedName": "borderWidth", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)borderWidth", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)borderWidth", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setBorderWidth:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC11borderWidth14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceAppearance", + "printedName": "PenNavUI.SurfaceAppearance", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)init", + "mangledName": "$s8PenNavUI17SurfaceAppearanceCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelSurfaceAppearance", + "declAttributes": [ + "AccessControl", + "ObjCMembers", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "SurfaceView", + "printedName": "SurfaceView", + "children": [ + { + "kind": "Var", + "name": "grabberHandle", + "printedName": "grabberHandle", + "children": [ + { + "kind": "TypeNominal", + "name": "GrabberView", + "printedName": "PenNavUI.GrabberView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)grabberHandle", + "mangledName": "$s8PenNavUI11SurfaceViewC13grabberHandleAA07GrabberE0Cvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "GrabberView", + "printedName": "PenNavUI.GrabberView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)grabberHandle", + "mangledName": "$s8PenNavUI11SurfaceViewC13grabberHandleAA07GrabberE0Cvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "grabberHandlePadding", + "printedName": "grabberHandlePadding", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)grabberHandlePadding", + "mangledName": "$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)grabberHandlePadding", + "mangledName": "$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setGrabberHandlePadding:", + "mangledName": "$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC20grabberHandlePadding14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "grabberAreaOffset", + "printedName": "grabberAreaOffset", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)grabberAreaOffset", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)grabberAreaOffset", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setGrabberAreaOffset:", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC17grabberAreaOffset14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "grabberHandleSize", + "printedName": "grabberHandleSize", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)grabberHandleSize", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)grabberHandleSize", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setGrabberHandleSize:", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "contentView", + "printedName": "contentView", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "UIKit.UIView?" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)contentView", + "mangledName": "$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "ReferenceOwnership", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "ownership": 1, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIView?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)contentView", + "mangledName": "$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIView?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setContentView:", + "mangledName": "$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvM", + "mangledName": "$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "contentPadding", + "printedName": "contentPadding", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)contentPadding", + "mangledName": "$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)contentPadding", + "mangledName": "$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setContentPadding:", + "mangledName": "$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "backgroundColor", + "printedName": "backgroundColor", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)backgroundColor", + "mangledName": "$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "backgroundColor", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)backgroundColor", + "mangledName": "$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "backgroundColor", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setBackgroundColor:", + "mangledName": "$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvs", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "setBackgroundColor:", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "appearance", + "printedName": "appearance", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceAppearance", + "printedName": "PenNavUI.SurfaceAppearance", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)appearance", + "mangledName": "$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceAppearance", + "printedName": "PenNavUI.SurfaceAppearance", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)appearance", + "mangledName": "$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "SurfaceAppearance", + "printedName": "PenNavUI.SurfaceAppearance", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setAppearance:", + "mangledName": "$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvM", + "mangledName": "$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "containerMargins", + "printedName": "containerMargins", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)containerMargins", + "mangledName": "$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)containerMargins", + "mangledName": "$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setContainerMargins:", + "mangledName": "$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "containerView", + "printedName": "containerView", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)containerView", + "mangledName": "$s8PenNavUI11SurfaceViewC09containerE0So6UIViewCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)containerView", + "mangledName": "$s8PenNavUI11SurfaceViewC09containerE0So6UIViewCvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "requiresConstraintBasedLayout", + "printedName": "requiresConstraintBasedLayout", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(cpy)requiresConstraintBasedLayout", + "mangledName": "$s8PenNavUI11SurfaceViewC29requiresConstraintBasedLayoutSbvpZ", + "moduleName": "PenNavUI", + "static": true, + "overriding": true, + "objc_name": "requiresConstraintBasedLayout", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(cm)requiresConstraintBasedLayout", + "mangledName": "$s8PenNavUI11SurfaceViewC29requiresConstraintBasedLayoutSbvgZ", + "moduleName": "PenNavUI", + "static": true, + "overriding": true, + "objc_name": "requiresConstraintBasedLayout", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(coder:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SurfaceView?", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceView", + "printedName": "PenNavUI.SurfaceView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "NSCoder", + "printedName": "Foundation.NSCoder", + "usr": "c:objc(cs)NSCoder" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)initWithCoder:", + "mangledName": "$s8PenNavUI11SurfaceViewC5coderACSgSo7NSCoderC_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "initWithCoder:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "AccessControl", + "Required" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "updateConstraints", + "printedName": "updateConstraints()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)updateConstraints", + "mangledName": "$s8PenNavUI11SurfaceViewC17updateConstraintsyyF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "updateConstraints", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "layoutSubviews", + "printedName": "layoutSubviews()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)layoutSubviews", + "mangledName": "$s8PenNavUI11SurfaceViewC14layoutSubviewsyyF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "layoutSubviews", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "intrinsicContentSize", + "printedName": "intrinsicContentSize", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)intrinsicContentSize", + "mangledName": "$s8PenNavUI11SurfaceViewC20intrinsicContentSizeSo6CGSizeVvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "intrinsicContentSize", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)intrinsicContentSize", + "mangledName": "$s8PenNavUI11SurfaceViewC20intrinsicContentSizeSo6CGSizeVvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "intrinsicContentSize", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView", + "mangledName": "$s8PenNavUI11SurfaceViewC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelSurfaceView", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjCMembers", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)UIView", + "hasMissingDesignatedInitializers": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "UIKit.UIView", + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + }, + { + "kind": "Conformance", + "name": "__DefaultCustomPlaygroundQuickLookable", + "printedName": "__DefaultCustomPlaygroundQuickLookable", + "usr": "s:s38__DefaultCustomPlaygroundQuickLookableP", + "mangledName": "$ss38__DefaultCustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UserNotifications", + "printedName": "UserNotifications", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "LinkPresentation", + "printedName": "LinkPresentation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavUIError", + "printedName": "PenNavUIError", + "children": [ + { + "kind": "Var", + "name": "missingBaseUrl", + "printedName": "missingBaseUrl", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO14missingBaseUrlyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO14missingBaseUrlyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingDataServiceName", + "printedName": "missingDataServiceName", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO22missingDataServiceNameyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO22missingDataServiceNameyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingPositionServiceName", + "printedName": "missingPositionServiceName", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO26missingPositionServiceNameyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO26missingPositionServiceNameyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingRootController", + "printedName": "missingRootController", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO21missingRootControlleryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO21missingRootControlleryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingViewContainer", + "printedName": "missingViewContainer", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO20missingViewContaineryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO20missingViewContaineryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingClientId", + "printedName": "missingClientId", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO15missingClientIdyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO15missingClientIdyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingClientName", + "printedName": "missingClientName", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO17missingClientNameyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO17missingClientNameyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "invalidClientKey", + "printedName": "invalidClientKey", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO16invalidClientKeyyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO16invalidClientKeyyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "unauthorized", + "printedName": "unauthorized", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO12unauthorizedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO12unauthorizedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noInternetConnection", + "printedName": "noInternetConnection", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO20noInternetConnectionyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO20noInternetConnectionyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "bluetoothTurnedOff", + "printedName": "bluetoothTurnedOff", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO18bluetoothTurnedOffyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO18bluetoothTurnedOffyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "locationServicesTurnedOff", + "printedName": "locationServicesTurnedOff", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO25locationServicesTurnedOffyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO25locationServicesTurnedOffyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "loadingDataError", + "printedName": "loadingDataError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO16loadingDataErroryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO16loadingDataErroryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "osNotSupported", + "printedName": "osNotSupported", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO14osNotSupportedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO14osNotSupportedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "permissionsNotGranted", + "printedName": "permissionsNotGranted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO21permissionsNotGrantedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO21permissionsNotGrantedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "sensorsInitializationError", + "printedName": "sensorsInitializationError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO26sensorsInitializationErroryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO26sensorsInitializationErroryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "unknownError", + "printedName": "unknownError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO12unknownErroryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO12unknownErroryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "locationPermissionNotGranted", + "printedName": "locationPermissionNotGranted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO28locationPermissionNotGrantedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO28locationPermissionNotGrantedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "bluetoothPermissionNotGranted", + "printedName": "bluetoothPermissionNotGranted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO29bluetoothPermissionNotGrantedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO29bluetoothPermissionNotGrantedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "invalidCampusId", + "printedName": "invalidCampusId", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO15invalidCampusIdyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO15invalidCampusIdyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noCampusListFound", + "printedName": "noCampusListFound", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO17noCampusListFoundyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO17noCampusListFoundyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "buildCancelled", + "printedName": "buildCancelled", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO14buildCancelledyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO14buildCancelledyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "errorDescription", + "printedName": "errorDescription", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB7UIErrorO16errorDescriptionSSvp", + "mangledName": "$s8PenNavUI0aB7UIErrorO16errorDescriptionSSvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB7UIErrorO16errorDescriptionSSvg", + "mangledName": "$s8PenNavUI0aB7UIErrorO16errorDescriptionSSvg", + "moduleName": "PenNavUI", + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.PenNavUIError?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI0aB7UIErrorO8rawValueACSgSS_tcfc", + "mangledName": "$s8PenNavUI0aB7UIErrorO8rawValueACSgSS_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB7UIErrorO8rawValueSSvp", + "mangledName": "$s8PenNavUI0aB7UIErrorO8rawValueSSvp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB7UIErrorO8rawValueSSvg", + "mangledName": "$s8PenNavUI0aB7UIErrorO8rawValueSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI0aB7UIErrorO", + "mangledName": "$s8PenNavUI0aB7UIErrorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "enumRawTypeName": "String", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + }, + { + "kind": "Conformance", + "name": "LocalizedError", + "printedName": "LocalizedError", + "usr": "s:10Foundation14LocalizedErrorP", + "mangledName": "$s10Foundation14LocalizedErrorP" + }, + { + "kind": "Conformance", + "name": "Error", + "printedName": "Error", + "usr": "s:s5ErrorP", + "mangledName": "$ss5ErrorP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "ValidationError", + "printedName": "ValidationError", + "children": [ + { + "kind": "Var", + "name": "noClientID", + "printedName": "noClientID", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO10noClientIDyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO10noClientIDyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noClientNameKey", + "printedName": "noClientNameKey", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO15noClientNameKeyyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO15noClientNameKeyyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noServiesName", + "printedName": "noServiesName", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO13noServiesNameyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO13noServiesNameyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noBaseUrl", + "printedName": "noBaseUrl", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO9noBaseUrlyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO9noBaseUrlyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingFonts", + "printedName": "missingFonts", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO12missingFontsyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO12missingFontsyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI15ValidationErrorO2eeoiySbAC_ACtFZ", + "mangledName": "$s8PenNavUI15ValidationErrorO2eeoiySbAC_ACtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI15ValidationErrorO9hashValueSivp", + "mangledName": "$s8PenNavUI15ValidationErrorO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15ValidationErrorO9hashValueSivg", + "mangledName": "$s8PenNavUI15ValidationErrorO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI15ValidationErrorO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI15ValidationErrorO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI15ValidationErrorO", + "mangledName": "$s8PenNavUI15ValidationErrorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Error", + "printedName": "Error", + "usr": "s:s5ErrorP", + "mangledName": "$ss5ErrorP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelPanGestureRecognizer", + "printedName": "FloatingPanelPanGestureRecognizer", + "children": [ + { + "kind": "Function", + "name": "touchesBegan", + "printedName": "touchesBegan(_:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Set", + "printedName": "Swift.Set", + "children": [ + { + "kind": "TypeNominal", + "name": "UITouch", + "printedName": "UIKit.UITouch", + "usr": "c:objc(cs)UITouch" + } + ], + "usr": "s:Sh" + }, + { + "kind": "TypeNominal", + "name": "UIEvent", + "printedName": "UIKit.UIEvent", + "usr": "c:objc(cs)UIEvent" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(im)touchesBegan:withEvent:", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC12touchesBegan_4withyShySo7UITouchCG_So7UIEventCtF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "touchesBegan:withEvent:", + "declAttributes": [ + "Final", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "delegate", + "printedName": "delegate", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(py)delegate", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "delegate", + "declAttributes": [ + "Final", + "ObjC", + "Preconcurrency", + "Custom", + "ReferenceOwnership", + "Override", + "AccessControl", + "RawDocComment" + ], + "ownership": 1, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(im)delegate", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "delegate", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(im)setDelegate:", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvs", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "setDelegate:", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvM", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "delegateOrigin", + "printedName": "delegateOrigin", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvp", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "Preconcurrency", + "Custom", + "AccessControl", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvg", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "delegateProxy", + "printedName": "delegateProxy", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvp", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "Preconcurrency", + "Custom", + "HasStorage", + "ReferenceOwnership", + "AccessControl", + "RawDocComment" + ], + "ownership": 1, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvg", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvs", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvM", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(target:action:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPanGestureRecognizer", + "printedName": "PenNavUI.FloatingPanelPanGestureRecognizer", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Any?", + "children": [ + { + "kind": "TypeNominal", + "name": "ProtocolComposition", + "printedName": "Any" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "ObjectiveC.Selector?", + "children": [ + { + "kind": "TypeNominal", + "name": "Selector", + "printedName": "ObjectiveC.Selector", + "usr": "s:10ObjectiveC8SelectorV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(im)initWithTarget:action:", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC6target6actionACypSg_10ObjectiveC8SelectorVSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithTarget:action:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "Final", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "superclassUsr": "c:objc(cs)UIPanGestureRecognizer", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "UIKit.UIPanGestureRecognizer", + "UIKit.UIGestureRecognizer", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "GrabberView", + "printedName": "GrabberView", + "children": [ + { + "kind": "Var", + "name": "barColor", + "printedName": "barColor", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11GrabberViewC8barColorSo7UIColorCvp", + "mangledName": "$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11GrabberViewC8barColorSo7UIColorCvg", + "mangledName": "$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11GrabberViewC8barColorSo7UIColorCvs", + "mangledName": "$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11GrabberViewC8barColorSo7UIColorCvM", + "mangledName": "$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(coder:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.GrabberView?", + "children": [ + { + "kind": "TypeNominal", + "name": "GrabberView", + "printedName": "PenNavUI.GrabberView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "NSCoder", + "printedName": "Foundation.NSCoder", + "usr": "c:objc(cs)NSCoder" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView(im)initWithCoder:", + "mangledName": "$s8PenNavUI11GrabberViewC5coderACSgSo7NSCoderC_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "initWithCoder:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "AccessControl", + "Required" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "layoutSubviews", + "printedName": "layoutSubviews()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView(im)layoutSubviews", + "mangledName": "$s8PenNavUI11GrabberViewC14layoutSubviewsyyF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "layoutSubviews", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "hitTest", + "printedName": "hitTest(_:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIView?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIEvent?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEvent", + "printedName": "UIKit.UIEvent", + "usr": "c:objc(cs)UIEvent" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView(im)hitTest:withEvent:", + "mangledName": "$s8PenNavUI11GrabberViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "hitTest:withEvent:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(frame:)", + "children": [ + { + "kind": "TypeNominal", + "name": "GrabberView", + "printedName": "PenNavUI.GrabberView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView" + }, + { + "kind": "TypeNominal", + "name": "CGRect", + "printedName": "CoreFoundation.CGRect", + "usr": "c:@S@CGRect" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView(im)initWithFrame:", + "mangledName": "$s8PenNavUI11GrabberViewC5frameACSo6CGRectV_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithFrame:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView", + "mangledName": "$s8PenNavUI11GrabberViewC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelGrabberView", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)UIView", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "UIKit.UIView", + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + }, + { + "kind": "Conformance", + "name": "__DefaultCustomPlaygroundQuickLookable", + "printedName": "__DefaultCustomPlaygroundQuickLookable", + "usr": "s:s38__DefaultCustomPlaygroundQuickLookableP", + "mangledName": "$ss38__DefaultCustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelPosition", + "printedName": "FloatingPanelPosition", + "children": [ + { + "kind": "Var", + "name": "top", + "printedName": "top", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelPosition.Type) -> PenNavUI.FloatingPanelPosition", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelPosition.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition@FloatingPanelPositionTop", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO3topyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelPosition.Type) -> PenNavUI.FloatingPanelPosition", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelPosition.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition@FloatingPanelPositionLeft", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO4leftyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Var", + "name": "bottom", + "printedName": "bottom", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelPosition.Type) -> PenNavUI.FloatingPanelPosition", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelPosition.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition@FloatingPanelPositionBottom", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO6bottomyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 2 + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelPosition.Type) -> PenNavUI.FloatingPanelPosition", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelPosition.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition@FloatingPanelPositionRight", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO5rightyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 3 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelPosition?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI21FloatingPanelPositionO8rawValueACSgSi_tcfc", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO8rawValueACSgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI21FloatingPanelPositionO8rawValueSivp", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI21FloatingPanelPositionO8rawValueSivg", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "FloatingPanelLayoutAnchoring", + "children": [ + { + "kind": "Var", + "name": "referenceGuide", + "printedName": "referenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring(py)referenceGuide", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP14referenceGuideAA0def9ReferenceI0Ovp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring(im)referenceGuide", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP14referenceGuideAA0def9ReferenceI0Ovg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayoutAnchoring>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "layoutConstraints", + "printedName": "layoutConstraints(_:for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring(im)layoutConstraints:for:", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayoutAnchoring>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 : AnyObject>", + "sugared_genericSig": "", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayoutAnchor", + "printedName": "FloatingPanelLayoutAnchor", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(absoluteInset:edge:referenceGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)initWithAbsoluteInset:edge:referenceGuide:", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC13absoluteInset4edge14referenceGuideAC12CoreGraphics7CGFloatV_AA0dE13ReferenceEdgeOAA0defpL0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithAbsoluteInset:edge:referenceGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(fractionalInset:edge:referenceGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)initWithFractionalInset:edge:referenceGuide:", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC15fractionalInset4edge14referenceGuideAC12CoreGraphics7CGFloatV_AA0dE13ReferenceEdgeOAA0defpL0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithFractionalInset:edge:referenceGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "referenceGuide", + "printedName": "referenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(py)referenceGuide", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC14referenceGuideAA0def9ReferenceI0Ovp", + "moduleName": "PenNavUI", + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC", + "HasStorage", + "AccessControl", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)referenceGuide", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC14referenceGuideAA0def9ReferenceI0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)init", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "layoutConstraints", + "printedName": "layoutConstraints(_:for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)layoutConstraints:for:", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF", + "moduleName": "PenNavUI", + "objc_name": "layoutConstraints:for:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "Final", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelIntrinsicLayoutAnchor", + "printedName": "FloatingPanelIntrinsicLayoutAnchor", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(absoluteOffset:referenceGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelIntrinsicLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelIntrinsicLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "hasDefaultArg": true, + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)initWithAbsoluteOffset:referenceGuide:", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14absoluteOffset14referenceGuideAC12CoreGraphics7CGFloatV_AA0deg9ReferenceL0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithAbsoluteOffset:referenceGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(fractionalOffset:referenceGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelIntrinsicLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelIntrinsicLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "hasDefaultArg": true, + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)initWithFractionalOffset:referenceGuide:", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC16fractionalOffset14referenceGuideAC12CoreGraphics7CGFloatV_AA0deg9ReferenceL0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithFractionalOffset:referenceGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "referenceGuide", + "printedName": "referenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(py)referenceGuide", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovp", + "moduleName": "PenNavUI", + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC", + "HasStorage", + "AccessControl", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)referenceGuide", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelIntrinsicLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelIntrinsicLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)init", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "layoutConstraints", + "printedName": "layoutConstraints(_:for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)layoutConstraints:for:", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF", + "moduleName": "PenNavUI", + "objc_name": "layoutConstraints:for:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "Final", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelAdaptiveLayoutAnchor", + "printedName": "FloatingPanelAdaptiveLayoutAnchor", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(absoluteOffset:contentLayout:referenceGuide:contentBoundingGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelAdaptiveLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelAdaptiveLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UILayoutGuide", + "printedName": "UIKit.UILayoutGuide", + "usr": "c:objc(cs)UILayoutGuide" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "hasDefaultArg": true, + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)initWithAbsoluteOffset:contentLayout:referenceGuide:contentBoundingGuide:", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14absoluteOffset07contentG014referenceGuide0k8BoundingM0AC12CoreGraphics7CGFloatV_So08UILayoutM0CAA0deg9ReferenceM0OAA0deg7ContentnM0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithAbsoluteOffset:contentLayout:referenceGuide:contentBoundingGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(fractionalOffset:contentLayout:referenceGuide:contentBoundingGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelAdaptiveLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelAdaptiveLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UILayoutGuide", + "printedName": "UIKit.UILayoutGuide", + "usr": "c:objc(cs)UILayoutGuide" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "hasDefaultArg": true, + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)initWithFractionalOffset:contentLayout:referenceGuide:contentBoundingGuide:", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC16fractionalOffset07contentG014referenceGuide0k8BoundingM0AC12CoreGraphics7CGFloatV_So08UILayoutM0CAA0deg9ReferenceM0OAA0deg7ContentnM0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithFractionalOffset:contentLayout:referenceGuide:contentBoundingGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "referenceGuide", + "printedName": "referenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(py)referenceGuide", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovp", + "moduleName": "PenNavUI", + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)referenceGuide", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "contentBoundingGuide", + "printedName": "contentBoundingGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(py)contentBoundingGuide", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC20contentBoundingGuideAA0deg7ContentjK0Ovp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "HasStorage", + "AccessControl", + "ObjC" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)contentBoundingGuide", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC20contentBoundingGuideAA0deg7ContentjK0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelAdaptiveLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelAdaptiveLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)init", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "layoutConstraints", + "printedName": "layoutConstraints(_:for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)layoutConstraints:for:", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF", + "moduleName": "PenNavUI", + "objc_name": "layoutConstraints:for:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "Final", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "ImageCache", + "printedName": "ImageCache", + "children": [ + { + "kind": "Function", + "name": "getImage", + "printedName": "getImage(_:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(UIKit.UIImage?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + } + ] + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI10ImageCacheC03getD0_10completiony10Foundation3URLV_ySo7UIImageCSgctF", + "mangledName": "$s8PenNavUI10ImageCacheC03getD0_10completiony10Foundation3URLV_ySo7UIImageCSgctF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getImageFromDocuments", + "printedName": "getImageFromDocuments(url:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI10ImageCacheC03getD13FromDocuments3urlSo7UIImageCSg10Foundation3URLV_tF", + "mangledName": "$s8PenNavUI10ImageCacheC03getD13FromDocuments3urlSo7UIImageCSg10Foundation3URLV_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getSVG", + "printedName": "getSVG(withURL:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(UIKit.UIImage?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + } + ] + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF", + "mangledName": "$s8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI10ImageCacheC", + "mangledName": "$s8PenNavUI10ImageCacheC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "SVGRenderer", + "printedName": "SVGRenderer", + "children": [ + { + "kind": "Function", + "name": "makeExpanded", + "printedName": "makeExpanded(path:transform:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "hasDefaultArg": true, + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11SVGRendererV12makeExpanded4path9transform9precisionS2S_SSSitKFZ", + "mangledName": "$s8PenNavUI11SVGRendererV12makeExpanded4path9transform9precisionS2S_SSSitKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "throwing": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI11SVGRendererV", + "mangledName": "$s8PenNavUI11SVGRendererV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "SVG", + "printedName": "SVG", + "children": [ + { + "kind": "Var", + "name": "size", + "printedName": "size", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC4sizeSo6CGSizeVvp", + "mangledName": "$s8PenNavUI3SVGC4sizeSo6CGSizeVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC4sizeSo6CGSizeVvg", + "mangledName": "$s8PenNavUI3SVGC4sizeSo6CGSizeVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Options", + "printedName": "Options", + "children": [ + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC7OptionsV8rawValueSivp", + "mangledName": "$s8PenNavUI3SVGC7OptionsV8rawValueSivp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC7OptionsV8rawValueSivg", + "mangledName": "$s8PenNavUI3SVGC7OptionsV8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI3SVGC7OptionsV8rawValueAESi_tcfc", + "mangledName": "$s8PenNavUI3SVGC7OptionsV8rawValueAESi_tcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "hideUnsupportedFilters", + "printedName": "hideUnsupportedFilters", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvpZ", + "mangledName": "$s8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvgZ", + "mangledName": "$s8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "default", + "printedName": "default", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC7OptionsV7defaultAEvpZ", + "mangledName": "$s8PenNavUI3SVGC7OptionsV7defaultAEvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC7OptionsV7defaultAEvgZ", + "mangledName": "$s8PenNavUI3SVGC7OptionsV7defaultAEvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI3SVGC7OptionsV", + "mangledName": "$s8PenNavUI3SVGC7OptionsV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "OptionSet", + "printedName": "OptionSet", + "children": [ + { + "kind": "TypeWitness", + "name": "Element", + "printedName": "Element", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ] + } + ], + "usr": "s:s9OptionSetP", + "mangledName": "$ss9OptionSetP" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + }, + { + "kind": "Conformance", + "name": "SetAlgebra", + "printedName": "SetAlgebra", + "children": [ + { + "kind": "TypeWitness", + "name": "Element", + "printedName": "Element", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ] + } + ], + "usr": "s:s10SetAlgebraP", + "mangledName": "$ss10SetAlgebraP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "ExpressibleByArrayLiteral", + "printedName": "ExpressibleByArrayLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "ArrayLiteralElement", + "printedName": "ArrayLiteralElement", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ] + } + ], + "usr": "s:s25ExpressibleByArrayLiteralP", + "mangledName": "$ss25ExpressibleByArrayLiteralP" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage(im)init", + "mangledName": "$s8PenNavUI3SVGCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "rasterize", + "printedName": "rasterize()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC9rasterizeSo7UIImageCyF", + "mangledName": "$s8PenNavUI3SVGC9rasterizeSo7UIImageCyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "rasterize", + "printedName": "rasterize(with:scale:insets:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGSize?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "hasDefaultArg": true, + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "hasDefaultArg": true, + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_14CoreFoundation7CGFloatVSo12UIEdgeInsetsVtF", + "mangledName": "$s8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "pngData", + "printedName": "pngData(size:scale:insets:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGSize?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "hasDefaultArg": true, + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "hasDefaultArg": true, + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC7pngData4size5scale6insets10Foundation0F0VSo6CGSizeVSg_04CoreJ07CGFloatVSo12UIEdgeInsetsVtKF", + "mangledName": "$s8PenNavUI3SVGC7pngData4size5scale6insets10Foundation0F0VSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "jpegData", + "printedName": "jpegData(size:scale:compressionQuality:insets:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGSize?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "hasDefaultArg": true, + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "hasDefaultArg": true, + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "hasDefaultArg": true, + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC8jpegData4size5scale18compressionQuality6insets10Foundation0F0VSo6CGSizeVSg_04CoreL07CGFloatVAQSo12UIEdgeInsetsVtKF", + "mangledName": "$s8PenNavUI3SVGC8jpegData4size5scale18compressionQuality6insets10Foundation0F0VSo6CGSizeVSg_12CoreGraphics7CGFloatVAQSo12UIEdgeInsetsVtKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "pdfData", + "printedName": "pdfData(size:insets:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGSize?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC6InsetsV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC7pdfData4size6insets10Foundation0F0VSo6CGSizeVSg_AC6InsetsVtKF", + "mangledName": "$s8PenNavUI3SVGC7pdfData4size6insets10Foundation0F0VSo6CGSizeVSg_AC6InsetsVtKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(fileURL:options:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SVG?", + "children": [ + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI3SVGC7fileURL7optionsACSg10Foundation0F0V_AC7OptionsVtcfc", + "mangledName": "$s8PenNavUI3SVGC7fileURL7optionsACSg10Foundation0F0V_AC7OptionsVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(named:in:options:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SVG?", + "children": [ + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bundle", + "printedName": "Foundation.Bundle", + "hasDefaultArg": true, + "usr": "c:objc(cs)NSBundle" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI3SVGC5named2in7optionsACSgSS_So8NSBundleCAC7OptionsVtcfc", + "mangledName": "$s8PenNavUI3SVGC5named2in7optionsACSgSS_So8NSBundleCAC7OptionsVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(data:options:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SVG?", + "children": [ + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI3SVGC4data7optionsACSg10Foundation4DataV_AC7OptionsVtcfc", + "mangledName": "$s8PenNavUI3SVGC4data7optionsACSg10Foundation4DataV_AC7OptionsVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "TypeDecl", + "name": "Insets", + "printedName": "Insets", + "children": [ + { + "kind": "Var", + "name": "top", + "printedName": "top", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV3top14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV3top14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV3top14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV3top14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV4left14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV4left14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV4left14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV4left14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "bottom", + "printedName": "bottom", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV6bottom14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV6bottom14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV6bottom14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV6bottom14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV5right14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV5right14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV5right14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV5right14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "zero", + "printedName": "zero", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV4zeroAEvpZ", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4zeroAEvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV4zeroAEvgZ", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4zeroAEvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC6InsetsV2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI3SVGC6InsetsV2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI3SVGC6InsetsV", + "mangledName": "$s8PenNavUI3SVGC6InsetsV", + "moduleName": "PenNavUI", + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage", + "mangledName": "$s8PenNavUI3SVGC", + "moduleName": "PenNavUI", + "objc_name": "SVGImage", + "declAttributes": [ + "Final", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelControllerDelegate", + "printedName": "FloatingPanelControllerDelegate", + "children": [ + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:layoutFor:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "UITraitCollection", + "printedName": "UIKit.UITraitCollection", + "usr": "c:objc(cs)UITraitCollection" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:layoutForTraitCollection:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_9layoutForAA0dE6Layout_pAA0deF0C_So17UITraitCollectionCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:layoutForTraitCollection:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:layoutFor:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:layoutForSize:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_9layoutForAA0dE6Layout_pAA0deF0C_So6CGSizeVtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:layoutForSize:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:animatorForPresentingTo:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewPropertyAnimator", + "printedName": "UIKit.UIViewPropertyAnimator", + "usr": "c:objc(cs)UIViewPropertyAnimator" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:animatorForPresentingToState:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_23animatorForPresentingToSo22UIViewPropertyAnimatorCAA0deF0C_AA0dE5StateCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:animatorForPresentingToState:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:animatorForDismissingWith:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewPropertyAnimator", + "printedName": "UIKit.UIViewPropertyAnimator", + "usr": "c:objc(cs)UIViewPropertyAnimator" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "CGVector", + "printedName": "CoreFoundation.CGVector", + "usr": "c:@S@CGVector" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:animatorForDismissingWithVelocity:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_25animatorForDismissingWithSo22UIViewPropertyAnimatorCAA0deF0C_So8CGVectorVtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:animatorForDismissingWithVelocity:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidChangeState", + "printedName": "floatingPanelDidChangeState(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidChangeState:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE14DidChangeStateyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelShouldBeginDragging", + "printedName": "floatingPanelShouldBeginDragging(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelShouldBeginDragging:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE19ShouldBeginDraggingySbAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidMove", + "printedName": "floatingPanelDidMove(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidMove:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE7DidMoveyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelWillBeginDragging", + "printedName": "floatingPanelWillBeginDragging(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelWillBeginDragging:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE17WillBeginDraggingyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelWillEndDragging", + "printedName": "floatingPanelWillEndDragging(_:withVelocity:targetState:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "UnsafeMutablePointer", + "printedName": "Swift.UnsafeMutablePointer", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "usr": "s:Sp" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelWillEndDragging:withVelocity:targetState:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE15WillEndDragging_12withVelocity11targetStateyAA0deF0C_So7CGPointVSpyAA0deO0CGtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidEndDragging", + "printedName": "floatingPanelDidEndDragging(_:willAttract:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidEndDragging:willAttract:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE14DidEndDragging_11willAttractyAA0deF0C_SbtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelWillBeginAttracting", + "printedName": "floatingPanelWillBeginAttracting(_:to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelWillBeginAttracting:to:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE19WillBeginAttracting_2toyAA0deF0C_AA0dE5StateCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidEndAttracting", + "printedName": "floatingPanelDidEndAttracting(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidEndAttracting:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE16DidEndAttractingyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:shouldRemoveAt:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "CGVector", + "printedName": "CoreFoundation.CGVector", + "usr": "c:@S@CGVector" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:shouldRemoveAtLocation:withVelocity:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_14shouldRemoveAt4withSbAA0deF0C_So7CGPointVSo8CGVectorVtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:shouldRemoveAtLocation:withVelocity:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelWillRemove", + "printedName": "floatingPanelWillRemove(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelWillRemove:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE10WillRemoveyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanelWillRemove:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidRemove", + "printedName": "floatingPanelDidRemove(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidRemove:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE9DidRemoveyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:contentOffsetForPinning:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:contentOffsetForPinningScrollView:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_23contentOffsetForPinningSo7CGPointVAA0deF0C_So12UIScrollViewCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:contentOffsetForPinningScrollView:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:shouldAllowToScroll:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:shouldAllowToScroll:in:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_19shouldAllowToScroll2inSbAA0deF0C_So12UIScrollViewCAA0dE5StateCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:shouldAllowToScroll:in:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 : AnyObject>", + "sugared_genericSig": "", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelController", + "printedName": "FloatingPanelController", + "children": [ + { + "kind": "TypeDecl", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "ContentInsetAdjustmentBehavior", + "children": [ + { + "kind": "Var", + "name": "always", + "printedName": "always", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior.Type) -> PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO6alwaysyA2EmF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO6alwaysyA2EmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "never", + "printedName": "never", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior.Type) -> PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO5neveryA2EmF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO5neveryA2EmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior?", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueAESgSi_tcfc", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueAESgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueSivp", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueSivg", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "ContentMode", + "printedName": "ContentMode", + "children": [ + { + "kind": "Var", + "name": "static", + "printedName": "static", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelController.ContentMode.Type) -> PenNavUI.FloatingPanelController.ContentMode", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelController.ContentMode.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO6staticyA2EmF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO6staticyA2EmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment", + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "fitToBounds", + "printedName": "fitToBounds", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelController.ContentMode.Type) -> PenNavUI.FloatingPanelController.ContentMode", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelController.ContentMode.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO11fitToBoundsyA2EmF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO11fitToBoundsyA2EmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment", + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelController.ContentMode?", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueAESgSi_tcfc", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueAESgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueSivp", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueSivg", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "Var", + "name": "delegate", + "printedName": "delegate", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "(any PenNavUI.FloatingPanelControllerDelegate)?" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)delegate", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "ReferenceOwnership", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "ownership": 1, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.FloatingPanelControllerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelControllerDelegate", + "printedName": "any PenNavUI.FloatingPanelControllerDelegate", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)delegate", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.FloatingPanelControllerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelControllerDelegate", + "printedName": "any PenNavUI.FloatingPanelControllerDelegate", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setDelegate:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "surfaceView", + "printedName": "surfaceView", + "children": [ + { + "kind": "TypeNominal", + "name": "ImplicitlyUnwrappedOptional", + "printedName": "PenNavUI.SurfaceView?", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceView", + "printedName": "PenNavUI.SurfaceView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)surfaceView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11surfaceViewAA07SurfaceH0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "ImplicitlyUnwrappedOptional", + "printedName": "PenNavUI.SurfaceView?", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceView", + "printedName": "PenNavUI.SurfaceView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)surfaceView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11surfaceViewAA07SurfaceH0CSgvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "backdropView", + "printedName": "backdropView", + "children": [ + { + "kind": "TypeNominal", + "name": "ImplicitlyUnwrappedOptional", + "printedName": "PenNavUI.BackdropView?", + "children": [ + { + "kind": "TypeNominal", + "name": "BackdropView", + "printedName": "PenNavUI.BackdropView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)backdropView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC12backdropViewAA08BackdropH0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "ImplicitlyUnwrappedOptional", + "printedName": "PenNavUI.BackdropView?", + "children": [ + { + "kind": "TypeNominal", + "name": "BackdropView", + "printedName": "PenNavUI.BackdropView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)backdropView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC12backdropViewAA08BackdropH0CSgvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "trackingScrollView", + "printedName": "trackingScrollView", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "UIKit.UIScrollView?" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)trackingScrollView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "ReferenceOwnership", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "ownership": 1, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIScrollView?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)trackingScrollView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "panGestureRecognizer", + "printedName": "panGestureRecognizer", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPanGestureRecognizer", + "printedName": "PenNavUI.FloatingPanelPanGestureRecognizer", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)panGestureRecognizer", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC20panGestureRecognizerAA0de3PanhI0Cvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPanGestureRecognizer", + "printedName": "PenNavUI.FloatingPanelPanGestureRecognizer", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)panGestureRecognizer", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC20panGestureRecognizerAA0de3PanhI0Cvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "state", + "printedName": "state", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)state", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC5stateAA0dE5StateCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)state", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC5stateAA0dE5StateCvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isAttracting", + "printedName": "isAttracting", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)isAttracting", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC12isAttractingSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)isAttracting", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC12isAttractingSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "layout", + "printedName": "layout", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)layout", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)layout", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setLayout:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "behavior", + "printedName": "behavior", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelBehavior", + "printedName": "any PenNavUI.FloatingPanelBehavior", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)behavior", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelBehavior", + "printedName": "any PenNavUI.FloatingPanelBehavior", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)behavior", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelBehavior", + "printedName": "any PenNavUI.FloatingPanelBehavior", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setBehavior:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "adjustedContentInsets", + "printedName": "adjustedContentInsets", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)adjustedContentInsets", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)adjustedContentInsets", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0Vvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "contentInsetAdjustmentBehavior", + "printedName": "contentInsetAdjustmentBehavior", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)contentInsetAdjustmentBehavior", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)contentInsetAdjustmentBehavior", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setContentInsetAdjustmentBehavior:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "isRemovalInteractionEnabled", + "printedName": "isRemovalInteractionEnabled", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)isRemovalInteractionEnabled", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)isRemovalInteractionEnabled", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvg", + "moduleName": "PenNavUI", + "objc_name": "isRemovalInteractionEnabled", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setRemovalInteractionEnabled:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvs", + "moduleName": "PenNavUI", + "objc_name": "setRemovalInteractionEnabled:", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "contentViewController", + "printedName": "contentViewController", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)contentViewController", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)contentViewController", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setContentViewController:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "nearbyState", + "printedName": "nearbyState", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvp", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvg", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvg", + "moduleName": "PenNavUI", + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "contentMode", + "printedName": "contentMode", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)contentMode", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)contentMode", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setContentMode:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(coder:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelController?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "NSCoder", + "printedName": "Foundation.NSCoder", + "usr": "c:objc(cs)NSCoder" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)initWithCoder:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC5coderACSgSo7NSCoderC_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "initWithCoder:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "AccessControl", + "Required" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(delegate:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.FloatingPanelControllerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelControllerDelegate", + "printedName": "any PenNavUI.FloatingPanelControllerDelegate", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)initWithDelegate:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAcA0deF8Delegate_pSg_tcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithDelegate:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "loadView", + "printedName": "loadView()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)loadView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8loadViewyyF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "loadView", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "viewDidLayoutSubviews", + "printedName": "viewDidLayoutSubviews()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)viewDidLayoutSubviews", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC21viewDidLayoutSubviewsyyF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "viewDidLayoutSubviews", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "viewDidAppear", + "printedName": "viewDidAppear(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)viewDidAppear:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC13viewDidAppearyySbF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "viewDidAppear:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "viewWillTransition", + "printedName": "viewWillTransition(to:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + }, + { + "kind": "TypeNominal", + "name": "UIViewControllerTransitionCoordinator", + "printedName": "any UIKit.UIViewControllerTransitionCoordinator", + "usr": "c:objc(pl)UIViewControllerTransitionCoordinator" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)viewWillTransitionToSize:withTransitionCoordinator:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC18viewWillTransition2to4withySo6CGSizeV_So06UIViewfI11Coordinator_ptF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "viewWillTransitionToSize:withTransitionCoordinator:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "willTransition", + "printedName": "willTransition(to:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UITraitCollection", + "printedName": "UIKit.UITraitCollection", + "usr": "c:objc(cs)UITraitCollection" + }, + { + "kind": "TypeNominal", + "name": "UIViewControllerTransitionCoordinator", + "printedName": "any UIKit.UIViewControllerTransitionCoordinator", + "usr": "c:objc(pl)UIViewControllerTransitionCoordinator" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)willTransitionToTraitCollection:withTransitionCoordinator:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC14willTransition2to4withySo17UITraitCollectionC_So06UIViewfH11Coordinator_ptF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "willTransitionToTraitCollection:withTransitionCoordinator:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "viewWillDisappear", + "printedName": "viewWillDisappear(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)viewWillDisappear:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC17viewWillDisappearyySbF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "viewWillDisappear:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "childForStatusBarStyle", + "printedName": "childForStatusBarStyle", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)childViewControllerForStatusBarStyle", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC22childForStatusBarStyleSo06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForStatusBarStyle", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)childViewControllerForStatusBarStyle", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC22childForStatusBarStyleSo06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForStatusBarStyle", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "childForStatusBarHidden", + "printedName": "childForStatusBarHidden", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)childViewControllerForStatusBarHidden", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC23childForStatusBarHiddenSo06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForStatusBarHidden", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)childViewControllerForStatusBarHidden", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC23childForStatusBarHiddenSo06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForStatusBarHidden", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "childForScreenEdgesDeferringSystemGestures", + "printedName": "childForScreenEdgesDeferringSystemGestures", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)childViewControllerForScreenEdgesDeferringSystemGestures", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC42childForScreenEdgesDeferringSystemGesturesSo06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForScreenEdgesDeferringSystemGestures", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)childViewControllerForScreenEdgesDeferringSystemGestures", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC42childForScreenEdgesDeferringSystemGesturesSo06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForScreenEdgesDeferringSystemGestures", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "childForHomeIndicatorAutoHidden", + "printedName": "childForHomeIndicatorAutoHidden", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)childViewControllerForHomeIndicatorAutoHidden", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC31childForHomeIndicatorAutoHiddenSo06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForHomeIndicatorAutoHidden", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)childViewControllerForHomeIndicatorAutoHidden", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC31childForHomeIndicatorAutoHiddenSo06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForHomeIndicatorAutoHidden", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "show", + "printedName": "show(animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "hasDefaultArg": true, + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)show:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtF", + "moduleName": "PenNavUI", + "objc_name": "show:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "hide", + "printedName": "hide(animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "hasDefaultArg": true, + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)hide:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC4hide8animated10completionySb_yycSgtF", + "moduleName": "PenNavUI", + "objc_name": "hide:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "addPanel", + "printedName": "addPanel(toParent:at:animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "hasDefaultArg": true, + "usr": "s:Si" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "hasDefaultArg": true, + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)addPanelToParent:at:animated:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtF", + "moduleName": "PenNavUI", + "objc_name": "addPanelToParent:at:animated:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "removePanelFromParent", + "printedName": "removePanelFromParent(animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)removePanelFromParent:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtF", + "moduleName": "PenNavUI", + "objc_name": "removePanelFromParent:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "move", + "printedName": "move(to:animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)moveToState:animated:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC4move2to8animated10completionyAA0dE5StateC_SbyycSgtF", + "moduleName": "PenNavUI", + "objc_name": "moveToState:animated:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "set", + "printedName": "set(contentViewController:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI23FloatingPanelControllerC3set011contentViewF0ySo06UIViewF0CSg_tF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC3set011contentViewF0ySo06UIViewF0CSg_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "track", + "printedName": "track(scrollView:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)trackScrollView:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC5track10scrollViewySo08UIScrollI0C_tF", + "moduleName": "PenNavUI", + "objc_name": "trackScrollView:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "followScrollViewBouncing", + "printedName": "followScrollViewBouncing()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI23FloatingPanelControllerC24followScrollViewBouncingyyF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC24followScrollViewBouncingyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "untrack", + "printedName": "untrack(scrollView:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)untrackScrollView:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC7untrack10scrollViewySo08UIScrollI0C_tF", + "moduleName": "PenNavUI", + "objc_name": "untrackScrollView:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "accessibilityPerformEscape", + "printedName": "accessibilityPerformEscape()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)accessibilityPerformEscape", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC26accessibilityPerformEscapeSbyF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "accessibilityPerformEscape", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "invalidateLayout", + "printedName": "invalidateLayout()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)invalidateLayout", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC16invalidateLayoutyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "surfaceLocation", + "printedName": "surfaceLocation(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)surfaceLocationFor:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocation3forSo7CGPointVAA0dE5StateC_tF", + "moduleName": "PenNavUI", + "objc_name": "surfaceLocationFor:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "surfaceLocation", + "printedName": "surfaceLocation", + "children": [ + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)surfaceLocation", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)surfaceLocation", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setSurfaceLocation:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Function", + "name": "addTopPadding", + "printedName": "addTopPadding(padding:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI23FloatingPanelControllerC13addTopPadding7paddingy14CoreFoundation7CGFloatV_tF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC13addTopPadding7paddingy12CoreGraphics7CGFloatV_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC", + "moduleName": "PenNavUI", + "isOpen": true, + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)UIViewController", + "hasMissingDesignatedInitializers": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "UIKit.UIViewController", + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "MessageUI", + "printedName": "MessageUI", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "SafariServices", + "printedName": "SafariServices", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "BackdropView", + "printedName": "BackdropView", + "children": [ + { + "kind": "Var", + "name": "dismissalTapGestureRecognizer", + "printedName": "dismissalTapGestureRecognizer", + "children": [ + { + "kind": "TypeNominal", + "name": "UITapGestureRecognizer", + "printedName": "UIKit.UITapGestureRecognizer", + "usr": "c:objc(cs)UITapGestureRecognizer" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView(py)dismissalTapGestureRecognizer", + "mangledName": "$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UITapGestureRecognizer", + "printedName": "UIKit.UITapGestureRecognizer", + "usr": "c:objc(cs)UITapGestureRecognizer" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView(im)dismissalTapGestureRecognizer", + "mangledName": "$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UITapGestureRecognizer", + "printedName": "UIKit.UITapGestureRecognizer", + "usr": "c:objc(cs)UITapGestureRecognizer" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView(im)setDismissalTapGestureRecognizer:", + "mangledName": "$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvM", + "mangledName": "$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(frame:)", + "children": [ + { + "kind": "TypeNominal", + "name": "BackdropView", + "printedName": "PenNavUI.BackdropView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView" + }, + { + "kind": "TypeNominal", + "name": "CGRect", + "printedName": "CoreFoundation.CGRect", + "usr": "c:@S@CGRect" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView(im)initWithFrame:", + "mangledName": "$s8PenNavUI12BackdropViewC5frameACSo6CGRectV_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithFrame:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView", + "mangledName": "$s8PenNavUI12BackdropViewC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelBackdropView", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)UIView", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "UIKit.UIView", + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + }, + { + "kind": "Conformance", + "name": "__DefaultCustomPlaygroundQuickLookable", + "printedName": "__DefaultCustomPlaygroundQuickLookable", + "usr": "s:s38__DefaultCustomPlaygroundQuickLookableP", + "mangledName": "$ss38__DefaultCustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "SystemConfiguration", + "printedName": "SystemConfiguration", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Network", + "printedName": "Network", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "NetworkMonitor", + "printedName": "NetworkMonitor", + "declKind": "Class", + "usr": "s:8PenNavUI14NetworkMonitorC", + "mangledName": "$s8PenNavUI14NetworkMonitorC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "GeofenceError", + "printedName": "GeofenceError", + "children": [ + { + "kind": "Var", + "name": "permissionDenied", + "printedName": "permissionDenied", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO16permissionDeniedyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO16permissionDeniedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "errorInConfiguration", + "printedName": "errorInConfiguration", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO20errorInConfigurationyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO20errorInConfigurationyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "authenticationFailed", + "printedName": "authenticationFailed", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO20authenticationFailedyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO20authenticationFailedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "indoorDeloymentOnly", + "printedName": "indoorDeloymentOnly", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO19indoorDeloymentOnlyyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO19indoorDeloymentOnlyyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "geofenceConfigurationsMissing", + "printedName": "geofenceConfigurationsMissing", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO29geofenceConfigurationsMissingyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO29geofenceConfigurationsMissingyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "geofenceSDKNotStarted", + "printedName": "geofenceSDKNotStarted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO21geofenceSDKNotStartedyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO21geofenceSDKNotStartedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "geofenceSDKAlreadyStarted", + "printedName": "geofenceSDKAlreadyStarted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO25geofenceSDKAlreadyStartedyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO25geofenceSDKAlreadyStartedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "sdkError", + "printedName": "sdkError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> (Swift.String) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(Swift.String) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO03sdkE0yACSScACmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO03sdkE0yACSScACmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "errorDescription", + "printedName": "errorDescription", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvp", + "mangledName": "$s8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvg", + "mangledName": "$s8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvg", + "moduleName": "PenNavUI", + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI13GeofenceErrorO", + "mangledName": "$s8PenNavUI13GeofenceErrorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Error", + "printedName": "Error", + "usr": "s:s5ErrorP", + "mangledName": "$ss5ErrorP" + }, + { + "kind": "Conformance", + "name": "LocalizedError", + "printedName": "LocalizedError", + "usr": "s:10Foundation14LocalizedErrorP", + "mangledName": "$s10Foundation14LocalizedErrorP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "PIGeofenceManagerDelegate", + "printedName": "PIGeofenceManagerDelegate", + "children": [ + { + "kind": "Function", + "name": "geofenceStarted", + "printedName": "geofenceStarted()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP15geofenceStartedyyF", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP15geofenceStartedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIGeofenceManagerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "geofenceFailedToStart", + "printedName": "geofenceFailedToStart(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP21geofenceFailedToStartyySSSgF", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP21geofenceFailedToStartyySSSgF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIGeofenceManagerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "geofenceStopped", + "printedName": "geofenceStopped()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP15geofenceStoppedyyF", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP15geofenceStoppedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIGeofenceManagerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "geofenceUpdated", + "printedName": "geofenceUpdated()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP15geofenceUpdatedyyF", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP15geofenceUpdatedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIGeofenceManagerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "PIGeofenceManager", + "printedName": "PIGeofenceManager", + "children": [ + { + "kind": "Var", + "name": "shared", + "printedName": "shared", + "children": [ + { + "kind": "TypeNominal", + "name": "PIGeofenceManager", + "printedName": "PenNavUI.PIGeofenceManager", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17PIGeofenceManagerC6sharedACvpZ", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC6sharedACvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "PIGeofenceManager", + "printedName": "PenNavUI.PIGeofenceManager", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17PIGeofenceManagerC6sharedACvgZ", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC6sharedACvgZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "initializeLocationManager", + "printedName": "initializeLocationManager()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC018initializeLocationE0yyF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC018initializeLocationE0yyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setGeofenceSDKConfigurations", + "printedName": "setGeofenceSDKConfigurations(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "GeofenceConfiguration", + "printedName": "PenNavUI.GeofenceConfiguration", + "usr": "s:8PenNavUI21GeofenceConfigurationV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC28setGeofenceSDKConfigurationsyyAA0G13ConfigurationVF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC28setGeofenceSDKConfigurationsyyAA0G13ConfigurationVF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setGeofenceDelegate", + "printedName": "setGeofenceDelegate(delegate:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "PIGeofenceManagerDelegate", + "printedName": "any PenNavUI.PIGeofenceManagerDelegate", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC19setGeofenceDelegate8delegateyAA0deH0_p_tF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC19setGeofenceDelegate8delegateyAA0deH0_p_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "startGeofencing", + "printedName": "startGeofencing(delegate:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "PIGeofenceManagerDelegate", + "printedName": "any PenNavUI.PIGeofenceManagerDelegate", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC15startGeofencing8delegateyAA0dE8Delegate_p_tF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC15startGeofencing8delegateyAA0dE8Delegate_p_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "stopGeofencing", + "printedName": "stopGeofencing()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC14stopGeofencingyyF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC14stopGeofencingyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "updateGeofencing", + "printedName": "updateGeofencing()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC16updateGeofencingyyF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC16updateGeofencingyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "PIGeofenceManager", + "printedName": "PenNavUI.PIGeofenceManager", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager(im)init", + "mangledName": "$s8PenNavUI17PIGeofenceManagerCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "locationManager", + "printedName": "locationManager(_:didChangeAuthorization:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationManager", + "printedName": "CoreLocation.CLLocationManager", + "usr": "c:objc(cs)CLLocationManager" + }, + { + "kind": "TypeNominal", + "name": "CLAuthorizationStatus", + "printedName": "CoreLocation.CLAuthorizationStatus", + "usr": "c:@E@CLAuthorizationStatus" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PIGeofenceManager(im)locationManager:didChangeAuthorizationStatus:", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC08locationE0_22didChangeAuthorizationySo010CLLocationE0C_So21CLAuthorizationStatusVtF", + "moduleName": "PenNavUI", + "objc_name": "locationManager:didChangeAuthorizationStatus:", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "RawDocComment" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "locationManager", + "printedName": "locationManager(_:didEnterRegion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationManager", + "printedName": "CoreLocation.CLLocationManager", + "usr": "c:objc(cs)CLLocationManager" + }, + { + "kind": "TypeNominal", + "name": "CLRegion", + "printedName": "CoreLocation.CLRegion", + "usr": "c:objc(cs)CLRegion" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PIGeofenceManager(im)locationManager:didEnterRegion:", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC08locationE0_14didEnterRegionySo010CLLocationE0C_So8CLRegionCtF", + "moduleName": "PenNavUI", + "objc_name": "locationManager:didEnterRegion:", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "SwiftUI", + "printedName": "SwiftUI", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "DeveloperToolsSupport", + "printedName": "DeveloperToolsSupport", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "UILayoutGuide", + "printedName": "UILayoutGuide", + "declKind": "Class", + "usr": "c:objc(cs)UILayoutGuide", + "moduleName": "UIKit", + "isOpen": true, + "intro_iOS": "9.0", + "objc_name": "UILayoutGuide", + "declAttributes": [ + "Preconcurrency", + "Available", + "ObjC", + "NonSendable", + "Custom", + "Dynamic" + ], + "superclassUsr": "c:objc(cs)NSObject", + "isExternal": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "UIView", + "printedName": "UIView", + "declKind": "Class", + "usr": "c:objc(cs)UIView", + "moduleName": "UIKit", + "isOpen": true, + "intro_iOS": "2.0", + "objc_name": "UIView", + "declAttributes": [ + "Preconcurrency", + "Available", + "ObjC", + "NonSendable", + "Custom", + "Dynamic" + ], + "superclassUsr": "c:objc(cs)UIResponder", + "isExternal": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + }, + { + "kind": "Conformance", + "name": "__DefaultCustomPlaygroundQuickLookable", + "printedName": "__DefaultCustomPlaygroundQuickLookable", + "usr": "s:s38__DefaultCustomPlaygroundQuickLookableP", + "mangledName": "$ss38__DefaultCustomPlaygroundQuickLookableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "UISpringTimingParameters", + "printedName": "UISpringTimingParameters", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(decelerationRate:frequencyResponse:initialVelocity:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UISpringTimingParameters", + "printedName": "UIKit.UISpringTimingParameters", + "usr": "c:objc(cs)UISpringTimingParameters" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGVector", + "printedName": "CoreFoundation.CGVector", + "hasDefaultArg": true, + "usr": "c:@S@CGVector" + } + ], + "declKind": "Constructor", + "usr": "s:So24UISpringTimingParametersC8PenNavUIE16decelerationRate17frequencyResponse15initialVelocityAB14CoreFoundation7CGFloatV_AISo8CGVectorVtcfc", + "mangledName": "$sSo24UISpringTimingParametersC8PenNavUIE16decelerationRate17frequencyResponse15initialVelocityAB12CoreGraphics7CGFloatV_AISo8CGVectorVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "Convenience", + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(dampingRatio:frequencyResponse:initialVelocity:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UISpringTimingParameters", + "printedName": "UIKit.UISpringTimingParameters", + "usr": "c:objc(cs)UISpringTimingParameters" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGVector", + "printedName": "CoreFoundation.CGVector", + "hasDefaultArg": true, + "usr": "c:@S@CGVector" + } + ], + "declKind": "Constructor", + "usr": "s:So24UISpringTimingParametersC8PenNavUIE12dampingRatio17frequencyResponse15initialVelocityAB14CoreFoundation7CGFloatV_AISo8CGVectorVtcfc", + "mangledName": "$sSo24UISpringTimingParametersC8PenNavUIE12dampingRatio17frequencyResponse15initialVelocityAB12CoreGraphics7CGFloatV_AISo8CGVectorVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "Convenience", + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Convenience" + } + ], + "declKind": "Class", + "usr": "c:objc(cs)UISpringTimingParameters", + "moduleName": "UIKit", + "isOpen": true, + "intro_iOS": "10.0", + "objc_name": "UISpringTimingParameters", + "declAttributes": [ + "Preconcurrency", + "Available", + "ObjC", + "NonSendable", + "Custom", + "Dynamic" + ], + "superclassUsr": "c:objc(cs)NSObject", + "isExternal": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "CLLocationCoordinate2D", + "printedName": "CLLocationCoordinate2D", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(from:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CLLocationCoordinate2D", + "printedName": "_LocationEssentials.CLLocationCoordinate2D", + "usr": "c:@S@CLLocationCoordinate2D" + }, + { + "kind": "TypeNominal", + "name": "Decoder", + "printedName": "any Swift.Decoder", + "usr": "s:s7DecoderP" + } + ], + "declKind": "Constructor", + "usr": "s:So22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfc", + "mangledName": "$sSo22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "throwing": true, + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "encode", + "printedName": "encode(to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Encoder", + "printedName": "any Swift.Encoder", + "usr": "s:s7EncoderP" + } + ], + "declKind": "Func", + "usr": "s:So22CLLocationCoordinate2DV8PenNavUIE6encode2toys7Encoder_p_tKF", + "mangledName": "$sSo22CLLocationCoordinate2DV8PenNavUIE6encode2toys7Encoder_p_tKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "c:@S@CLLocationCoordinate2D", + "moduleName": "_LocationEssentials", + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSValue", + "printedName": "Foundation.NSValue", + "usr": "c:objc(cs)NSValue" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + }, + { + "kind": "TypeDecl", + "name": "UIImage", + "printedName": "UIImage", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(svgNamed:in:options:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bundle", + "printedName": "Foundation.Bundle", + "hasDefaultArg": true, + "usr": "c:objc(cs)NSBundle" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Constructor", + "usr": "s:So7UIImageC8PenNavUIE8svgNamed2in7optionsABSgSS_So8NSBundleCAC3SVGC7OptionsVtcfc", + "mangledName": "$sSo7UIImageC8PenNavUIE8svgNamed2in7optionsABSgSS_So8NSBundleCAC3SVGC7OptionsVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(svgData:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + } + ], + "declKind": "Constructor", + "usr": "c:@CM@PenNavUI@@objc(cs)UIImage(im)initWithSVGData:", + "mangledName": "$sSo7UIImageC8PenNavUIE7svgDataABSg10Foundation0F0V_tcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithSVGData:", + "declAttributes": [ + "Dynamic", + "Convenience", + "ObjC" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(contentsOfSVGFile:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "c:@CM@PenNavUI@@objc(cs)UIImage(im)initWithContentsOfSVGFile:", + "mangledName": "$sSo7UIImageC8PenNavUIE17contentsOfSVGFileABSgSS_tcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithContentsOfSVGFile:", + "declAttributes": [ + "Dynamic", + "Convenience", + "ObjC" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Function", + "name": "_svgNamed", + "printedName": "_svgNamed(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@@objc(cs)UIImage(cm)svgNamed:", + "mangledName": "$sSo7UIImageC8PenNavUIE9_svgNamedyABSgSSFZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "svgNamed:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "_svgNamed", + "printedName": "_svgNamed(_:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bundle", + "printedName": "Foundation.Bundle", + "usr": "c:objc(cs)NSBundle" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@@objc(cs)UIImage(cm)svgNamed:inBundle:", + "mangledName": "$sSo7UIImageC8PenNavUIE9_svgNamed_2inABSgSS_So8NSBundleCtFZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "svgNamed:inBundle:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + }, + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "declKind": "Constructor", + "usr": "s:So7UIImageC8PenNavUIEyAbC3SVGCcfc", + "mangledName": "$sSo7UIImageC8PenNavUIEyAbC3SVGCcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + } + ], + "declKind": "Class", + "usr": "c:objc(cs)UIImage", + "moduleName": "UIKit", + "isOpen": true, + "intro_iOS": "2.0", + "objc_name": "UIImage", + "declAttributes": [ + "Available", + "ObjC", + "SynthesizedProtocol", + "NonSendable", + "Sendable", + "Dynamic" + ], + "superclassUsr": "c:objc(cs)NSObject", + "isExternal": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + }, + { + "kind": "Conformance", + "name": "_ExpressibleByImageLiteral", + "printedName": "_ExpressibleByImageLiteral", + "usr": "s:s26_ExpressibleByImageLiteralP", + "mangledName": "$ss26_ExpressibleByImageLiteralP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "PoiPolygon", + "printedName": "PoiPolygon", + "declKind": "Struct", + "usr": "s:7Penguin10PoiPolygonV", + "mangledName": "$s7Penguin10PoiPolygonV", + "moduleName": "Penguin", + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "GateNodeModel", + "printedName": "GateNodeModel", + "children": [ + { + "kind": "Var", + "name": "isUpEscalator", + "printedName": "isUpEscalator", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:7Penguin13GateNodeModelC8PenNavUIE13isUpEscalatorSbvp", + "mangledName": "$s7Penguin13GateNodeModelC8PenNavUIE13isUpEscalatorSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:7Penguin13GateNodeModelC8PenNavUIE13isUpEscalatorSbvg", + "mangledName": "$s7Penguin13GateNodeModelC8PenNavUIE13isUpEscalatorSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isDownEscalator", + "printedName": "isDownEscalator", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:7Penguin13GateNodeModelC8PenNavUIE15isDownEscalatorSbvp", + "mangledName": "$s7Penguin13GateNodeModelC8PenNavUIE15isDownEscalatorSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:7Penguin13GateNodeModelC8PenNavUIE15isDownEscalatorSbvg", + "mangledName": "$s7Penguin13GateNodeModelC8PenNavUIE15isDownEscalatorSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Class", + "usr": "s:7Penguin13GateNodeModelC", + "mangledName": "$s7Penguin13GateNodeModelC", + "moduleName": "Penguin", + "declAttributes": [ + "Final" + ], + "isExternal": true, + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "NodeRepresentable", + "printedName": "NodeRepresentable", + "usr": "s:7Penguin17NodeRepresentableP", + "mangledName": "$s7Penguin17NodeRepresentableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Gnode", + "printedName": "Gnode", + "children": [ + { + "kind": "Var", + "name": "isUpEscalator", + "printedName": "isUpEscalator", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:7Penguin5GnodeC8PenNavUIE13isUpEscalatorSbvp", + "mangledName": "$s7Penguin5GnodeC8PenNavUIE13isUpEscalatorSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:7Penguin5GnodeC8PenNavUIE13isUpEscalatorSbvg", + "mangledName": "$s7Penguin5GnodeC8PenNavUIE13isUpEscalatorSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isDownEscalator", + "printedName": "isDownEscalator", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:7Penguin5GnodeC8PenNavUIE15isDownEscalatorSbvp", + "mangledName": "$s7Penguin5GnodeC8PenNavUIE15isDownEscalatorSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:7Penguin5GnodeC8PenNavUIE15isDownEscalatorSbvg", + "mangledName": "$s7Penguin5GnodeC8PenNavUIE15isDownEscalatorSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Class", + "usr": "s:7Penguin5GnodeC", + "mangledName": "$s7Penguin5GnodeC", + "moduleName": "Penguin", + "declAttributes": [ + "Final" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "NodeRepresentable", + "printedName": "NodeRepresentable", + "usr": "s:7Penguin17NodeRepresentableP", + "mangledName": "$s7Penguin17NodeRepresentableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Dictionary", + "printedName": "Dictionary", + "declKind": "Struct", + "usr": "s:SD", + "mangledName": "$sSD", + "moduleName": "Swift", + "genericSig": "<τ_0_0, τ_0_1 where τ_0_0 : Swift.Hashable>", + "sugared_genericSig": "", + "declAttributes": [ + "EagerMove", + "Frozen" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Sequence", + "printedName": "Sequence", + "children": [ + { + "kind": "TypeWitness", + "name": "Element", + "printedName": "Element", + "children": [ + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(key: τ_0_0, value: τ_0_1)", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ] + } + ] + }, + { + "kind": "TypeWitness", + "name": "Iterator", + "printedName": "Iterator", + "children": [ + { + "kind": "TypeNominal", + "name": "Iterator", + "printedName": "Swift.Dictionary<τ_0_0, τ_0_1>.Iterator", + "usr": "s:SD8IteratorV" + } + ] + } + ], + "usr": "s:ST", + "mangledName": "$sST" + }, + { + "kind": "Conformance", + "name": "Collection", + "printedName": "Collection", + "children": [ + { + "kind": "TypeWitness", + "name": "Element", + "printedName": "Element", + "children": [ + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(key: τ_0_0, value: τ_0_1)", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ] + } + ] + }, + { + "kind": "TypeWitness", + "name": "Index", + "printedName": "Index", + "children": [ + { + "kind": "TypeNominal", + "name": "Index", + "printedName": "Swift.Dictionary<τ_0_0, τ_0_1>.Index", + "usr": "s:SD5IndexV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "Iterator", + "printedName": "Iterator", + "children": [ + { + "kind": "TypeNominal", + "name": "Iterator", + "printedName": "Swift.Dictionary<τ_0_0, τ_0_1>.Iterator", + "usr": "s:SD8IteratorV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SubSequence", + "printedName": "SubSequence", + "children": [ + { + "kind": "TypeNominal", + "name": "Slice", + "printedName": "Swift.Slice<[τ_0_0 : τ_0_1]>", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[τ_0_0 : τ_0_1]", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ], + "usr": "s:SD" + } + ], + "usr": "s:s5SliceV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "Indices", + "printedName": "Indices", + "children": [ + { + "kind": "TypeNominal", + "name": "DefaultIndices", + "printedName": "Swift.DefaultIndices<[τ_0_0 : τ_0_1]>", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[τ_0_0 : τ_0_1]", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ], + "usr": "s:SD" + } + ], + "usr": "s:SI" + } + ] + } + ], + "usr": "s:Sl", + "mangledName": "$sSl" + }, + { + "kind": "Conformance", + "name": "ExpressibleByDictionaryLiteral", + "printedName": "ExpressibleByDictionaryLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "Key", + "printedName": "Key", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + } + ] + }, + { + "kind": "TypeWitness", + "name": "Value", + "printedName": "Value", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ] + } + ], + "usr": "s:s30ExpressibleByDictionaryLiteralP", + "mangledName": "$ss30ExpressibleByDictionaryLiteralP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "_HasCustomAnyHashableRepresentation", + "printedName": "_HasCustomAnyHashableRepresentation", + "usr": "s:s35_HasCustomAnyHashableRepresentationP", + "mangledName": "$ss35_HasCustomAnyHashableRepresentationP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomReflectable", + "printedName": "CustomReflectable", + "usr": "s:s17CustomReflectableP", + "mangledName": "$ss17CustomReflectableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSDictionary", + "printedName": "Foundation.NSDictionary", + "usr": "c:objc(cs)NSDictionary" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[Swift.String : Any?]", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Any?", + "children": [ + { + "kind": "TypeNominal", + "name": "ProtocolComposition", + "printedName": "Any" + } + ], + "usr": "s:Sq" + } + ], + "usr": "s:SD" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + }, + { + "kind": "Conformance", + "name": "ExpressionArgumentConvertible", + "printedName": "ExpressionArgumentConvertible", + "usr": "s:10MapboxMaps29ExpressionArgumentConvertibleP", + "mangledName": "$s10MapboxMaps29ExpressionArgumentConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Venue", + "printedName": "Venue", + "declKind": "Class", + "usr": "c:@M@Penguin@objc(cs)Venue", + "mangledName": "$s7Penguin5VenueC", + "moduleName": "Penguin", + "declAttributes": [ + "Final", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "isExternal": true, + "hasMissingDesignatedInitializers": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "CGContext", + "printedName": "CGContext", + "children": [ + { + "kind": "Function", + "name": "draw", + "printedName": "draw(_:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGRect?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGRect", + "printedName": "CoreFoundation.CGRect", + "usr": "c:@S@CGRect" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:So12CGContextRefa8PenNavUIE4draw_2inyAC3SVGC_So6CGRectVSgtF", + "mangledName": "$sSo12CGContextRefa8PenNavUIE4draw_2inyAC3SVGC_So6CGRectVSgtF", + "moduleName": "PenNavUI", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@T@CGContextRef", + "moduleName": "CoreGraphics", + "declAttributes": [ + "SynthesizedProtocol", + "ObjC", + "Dynamic" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "_CFObject", + "printedName": "_CFObject", + "usr": "s:14CoreFoundation9_CFObjectP", + "mangledName": "$s14CoreFoundation9_CFObjectP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "_CGContextInit", + "printedName": "_CGContextInit", + "usr": "s:12CoreGraphics14_CGContextInitP", + "mangledName": "$s12CoreGraphics14_CGContextInitP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "POICategory", + "printedName": "POICategory", + "declKind": "Struct", + "usr": "s:7Penguin11POICategoryV", + "mangledName": "$s7Penguin11POICategoryV", + "moduleName": "Penguin", + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + } + ], + "json_format_version": 8 + }, + "ConstValues": [ + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 509, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 521, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 638, + "length": 4, + "value": "0.33" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 697, + "length": 4, + "value": "0.33" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 786, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 798, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "IntegerLiteral", + "offset": 915, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "IntegerLiteral", + "offset": 971, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandOptimizer.swift", + "kind": "IntegerLiteral", + "offset": 4827, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandOptimizer.swift", + "kind": "IntegerLiteral", + "offset": 4895, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Element.swift", + "kind": "Dictionary", + "offset": 1423, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Formatters\/DistanceFormatter.swift", + "kind": "BooleanLiteral", + "offset": 207, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "FloatLiteral", + "offset": 1402, + "length": 4, + "value": "18.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "FloatLiteral", + "offset": 1510, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "FloatLiteral", + "offset": 1617, + "length": 4, + "value": "69.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "FloatLiteral", + "offset": 2877, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "Array", + "offset": 2939, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "Dictionary", + "offset": 3022, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "Array", + "offset": 3081, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "BooleanLiteral", + "offset": 32085, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueDetails\/VenueDetailsViewController.swift", + "kind": "Array", + "offset": 581, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueDetails\/VenueDetailsViewController.swift", + "kind": "Array", + "offset": 629, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueDetails\/VenueDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 669, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueDetails\/VenueDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 897, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "Array", + "offset": 950, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "Array", + "offset": 986, + "length": 4, + "value": "[\"\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "IntegerLiteral", + "offset": 1014, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "BooleanLiteral", + "offset": 1040, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "BooleanLiteral", + "offset": 1076, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "FloatLiteral", + "offset": 1123, + "length": 3, + "value": "0.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "IntegerLiteral", + "offset": 1166, + "length": 2, + "value": "80" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/AppleSynthesizer.swift", + "kind": "BooleanLiteral", + "offset": 164, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Path+Reversed.swift", + "kind": "Array", + "offset": 2868, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoritesCell.swift", + "kind": "Array", + "offset": 292, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Directory\/DirectoryViewController.swift", + "kind": "Array", + "offset": 464, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Directory\/DirectoryViewController.swift", + "kind": "IntegerLiteral", + "offset": 490, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Directory\/DirectoryViewController.swift", + "kind": "BooleanLiteral", + "offset": 516, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/NavigationEventType.swift", + "kind": "StringLiteral", + "offset": 159, + "length": 14, + "value": "\"shortestPath\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/NavigationEventType.swift", + "kind": "StringLiteral", + "offset": 201, + "length": 7, + "value": "\"start\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/NavigationEventType.swift", + "kind": "StringLiteral", + "offset": 234, + "length": 5, + "value": "\"end\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/NavigationEventType.swift", + "kind": "StringLiteral", + "offset": 270, + "length": 7, + "value": "\"reach\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.swift", + "kind": "IntegerLiteral", + "offset": 1203, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.swift", + "kind": "IntegerLiteral", + "offset": 1470, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/VenueInfoResponse.swift", + "kind": "StringLiteral", + "offset": 309, + "length": 20, + "value": "\"GetVenueInfoResult\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/VenueInfoResponse.swift", + "kind": "StringLiteral", + "offset": 1582, + "length": 14, + "value": "\"scheduleList\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2764, + "length": 3, + "value": "\"M\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2800, + "length": 3, + "value": "\"m\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2828, + "length": 3, + "value": "\"L\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2864, + "length": 3, + "value": "\"l\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2898, + "length": 3, + "value": "\"H\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2940, + "length": 3, + "value": "\"h\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2972, + "length": 3, + "value": "\"V\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3012, + "length": 3, + "value": "\"v\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3041, + "length": 3, + "value": "\"C\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3078, + "length": 3, + "value": "\"c\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3113, + "length": 3, + "value": "\"S\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3156, + "length": 3, + "value": "\"s\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3189, + "length": 3, + "value": "\"Q\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3230, + "length": 3, + "value": "\"q\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3269, + "length": 3, + "value": "\"T\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3316, + "length": 3, + "value": "\"t\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3343, + "length": 3, + "value": "\"A\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3378, + "length": 3, + "value": "\"a\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3407, + "length": 3, + "value": "\"Z\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3441, + "length": 3, + "value": "\"z\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/NodeSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 340, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/NodeSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 937, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/InstrinsicLabel.swift", + "kind": "IntegerLiteral", + "offset": 212, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/InstrinsicLabel.swift", + "kind": "IntegerLiteral", + "offset": 216, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/RouteOptions\/RouteOptionsViewController.swift", + "kind": "IntegerLiteral", + "offset": 2951, + "length": 3, + "value": "320" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/RouteOptions\/RouteOptionsViewController.swift", + "kind": "IntegerLiteral", + "offset": 2957, + "length": 3, + "value": "420" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "IntegerLiteral", + "offset": 662, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 782, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "Array", + "offset": 825, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 949, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 4985, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/GateSelector\/GateSelectorViewController.swift", + "kind": "Array", + "offset": 330, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Route\/RouteDirection.swift", + "kind": "BooleanLiteral", + "offset": 293, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/DownloadManager.swift", + "kind": "IntegerLiteral", + "offset": 1261, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/DownloadManager.swift", + "kind": "StringLiteral", + "offset": 1414, + "length": 10, + "value": "\"download\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/LocationDetectionStatus.swift", + "kind": "IntegerLiteral", + "offset": 182, + "length": 13, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/LocationDetectionStatus.swift", + "kind": "IntegerLiteral", + "offset": 205, + "length": 16, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "StringLiteral", + "offset": 985, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "StringLiteral", + "offset": 1019, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "StringLiteral", + "offset": 1054, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "BooleanLiteral", + "offset": 1085, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "Array", + "offset": 1212, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "Array", + "offset": 1250, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "BooleanLiteral", + "offset": 1453, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "StringLiteral", + "offset": 540, + "length": 61, + "value": "\"https:\/\/texttospeech.googleapis.com\/v1beta1\/text:synthesize\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "Array", + "offset": 732, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "FloatLiteral", + "offset": 822, + "length": 4, + "value": "0.89" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "FloatLiteral", + "offset": 858, + "length": 4, + "value": "-4.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "StringLiteral", + "offset": 889, + "length": 38, + "value": "\"small-bluetooth-speaker-class-device\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "BooleanLiteral", + "offset": 995, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "Dictionary", + "offset": 2610, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/FloorsManager.swift", + "kind": "Array", + "offset": 220, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Array", + "offset": 7523, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7567, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7611, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7660, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7720, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7767, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/RoutePlanner\/RoutePlannerViewController.swift", + "kind": "BooleanLiteral", + "offset": 1141, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/RoutePlanner\/RoutePlannerViewController.swift", + "kind": "IntegerLiteral", + "offset": 1610, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 137, + "length": 7, + "value": "\"Right\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 168, + "length": 11, + "value": "\"VeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 202, + "length": 12, + "value": "\"SharpRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 235, + "length": 6, + "value": "\"Left\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 264, + "length": 10, + "value": "\"VeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 296, + "length": 11, + "value": "\"SharpLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 336, + "length": 10, + "value": "\"Straight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 202, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 206, + "length": 2, + "value": "30" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 211, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 234, + "length": 4, + "value": "1000" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "StringLiteral", + "offset": 673, + "length": 27, + "value": "\"chevron.right.circle.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "StringLiteral", + "offset": 703, + "length": 26, + "value": "\"chevron.left.circle.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 906, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/Calibrate\/CalibrateMessage.swift", + "kind": "FloatLiteral", + "offset": 384, + "length": 4, + "value": "20.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "Array", + "offset": 723, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "Array", + "offset": 763, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "IntegerLiteral", + "offset": 796, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 916, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "Array", + "offset": 959, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 1130, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 6058, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "IntegerLiteral", + "offset": 2461, + "length": 6, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "IntegerLiteral", + "offset": 2481, + "length": 5, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "IntegerLiteral", + "offset": 2719, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "IntegerLiteral", + "offset": 2752, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "BooleanLiteral", + "offset": 6620, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/FavoritesManager.swift", + "kind": "Array", + "offset": 493, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/FavoritesManager.swift", + "kind": "BooleanLiteral", + "offset": 1293, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/FavoritesManager.swift", + "kind": "BooleanLiteral", + "offset": 4715, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.PresentationAttributes.swift", + "kind": "StringLiteral", + "offset": 2942, + "length": 3, + "value": "\" \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ThemeManager.swift", + "kind": "Array", + "offset": 853, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ThemeManager.swift", + "kind": "Array", + "offset": 906, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ThemeManager.swift", + "kind": "Array", + "offset": 949, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CommandLine.Configuration.swift", + "kind": "IntegerLiteral", + "offset": 7909, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CommandLine.Configuration.swift", + "kind": "IntegerLiteral", + "offset": 7914, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CommandLine.Configuration.swift", + "kind": "IntegerLiteral", + "offset": 7961, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CommandLine.Configuration.swift", + "kind": "IntegerLiteral", + "offset": 7966, + "length": 1, + "value": "9" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/FloatingPanelExtensions.swift", + "kind": "FloatLiteral", + "offset": 2765, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/FloatingPanelExtensions.swift", + "kind": "FloatLiteral", + "offset": 2797, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "Array", + "offset": 528, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "Array", + "offset": 553, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "IntegerLiteral", + "offset": 929, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "IntegerLiteral", + "offset": 1030, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "IntegerLiteral", + "offset": 1487, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "Array", + "offset": 3523, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "BooleanLiteral", + "offset": 3556, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "Array", + "offset": 3587, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "BooleanLiteral", + "offset": 14096, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Favorites\/FavoritesViewController.swift", + "kind": "Array", + "offset": 320, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Favorites\/FavoritesViewController.swift", + "kind": "StringLiteral", + "offset": 474, + "length": 8, + "value": "\"remove\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Favorites\/FavoritesViewController.swift", + "kind": "IntegerLiteral", + "offset": 670, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 202, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 242, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 280, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "FloatLiteral", + "offset": 359, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "FloatLiteral", + "offset": 379, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 477, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 483, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/FileDownloader.swift", + "kind": "Array", + "offset": 668, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/APIs\/PenApi.swift", + "kind": "StringLiteral", + "offset": 178, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/APIs\/PenApi.swift", + "kind": "StringLiteral", + "offset": 203, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/APIs\/PenApi.swift", + "kind": "StringLiteral", + "offset": 232, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/APIs\/PenApi.swift", + "kind": "StringLiteral", + "offset": 265, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/AlertAction.swift", + "kind": "BooleanLiteral", + "offset": 316, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "StringLiteral", + "offset": 806, + "length": 15, + "value": "\"reached_to %@\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "StringLiteral", + "offset": 867, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 1016, + "length": 2, + "value": "90" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 1037, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 1076, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 1081, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4435, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4708, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4795, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4907, + "length": 3, + "value": "624" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4956, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 5067, + "length": 3, + "value": "290" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 344, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 375, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "StringLiteral", + "offset": 398, + "length": 4, + "value": "\"-1\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "StringLiteral", + "offset": 423, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "StringLiteral", + "offset": 445, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 482, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 509, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 768, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 1084, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 1213, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 25236, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 136, + "length": 31, + "value": "\"DataAPI.svc\/SetNavigationRate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 204, + "length": 47, + "value": "\"PathAPI.svc\/getVenueGatesShortestPathDistance\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 279, + "length": 29, + "value": "\"DataAPI.svc\/GetPaletteColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 330, + "length": 19, + "value": "\"company\/-1\/colors\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 370, + "length": 22, + "value": "\"DataAPI.svc\/GetFonts\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 415, + "length": 11, + "value": "\"icons\/poi\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 453, + "length": 14, + "value": "\"favorite\/set\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 493, + "length": 27, + "value": "\"DataAPI.svc\/GetVenueCards\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 550, + "length": 32, + "value": "\"DataAPI.svc\/getPoIInfoByFilter\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 608, + "length": 29, + "value": "\"DataAPI.svc\/GetSearchDataV2\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 663, + "length": 27, + "value": "\"DataAPI.svc\/GetCategories\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 715, + "length": 14, + "value": "\"Poi\/Amenites\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 754, + "length": 14, + "value": "\"favorite\/get\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 798, + "length": 17, + "value": "\"favorite\/delete\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 844, + "length": 17, + "value": "\"favorite\/update\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 885, + "length": 11, + "value": "\"path\/trip\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 937, + "length": 11, + "value": "\"sharedurl\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 977, + "length": 27, + "value": "\"DataAPI.svc\/GetCampusInfo\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1032, + "length": 26, + "value": "\"DataAPI.svc\/GetVenueInfo\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1084, + "length": 24, + "value": "\"DataAPI.svc\/getPoIById\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1140, + "length": 27, + "value": "\"DataAPI.svc\/getPoIByRefId\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1196, + "length": 27, + "value": "\"DataAPI.svc\/GetVenuesInfo\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1247, + "length": 27, + "value": "\"DataAPI.svc\/getAdsOnFloor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1297, + "length": 26, + "value": "\"DataAPI.svc\/getAdsOnEdge\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1352, + "length": 17, + "value": "\"images\/campaign\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1400, + "length": 29, + "value": "\"company\/log\/navigationEvent\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1470, + "length": 17, + "value": "\"company\/log\/LBM\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1518, + "length": 32, + "value": "\"DataAPI.svc\/savePenNavPosition\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1579, + "length": 25, + "value": "\"DataAPI.svc\/GetCampuses\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1627, + "length": 13, + "value": "\"map\/objects\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/GatesManager.swift", + "kind": "Array", + "offset": 224, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/FloorSelectorViewController.swift", + "kind": "Array", + "offset": 650, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/FloorSelectorViewController.swift", + "kind": "Array", + "offset": 679, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/CustomFlowLayout.swift", + "kind": "BooleanLiteral", + "offset": 242, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITapGestureRecognizer.swift", + "kind": "IntegerLiteral", + "offset": 162, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetPoIByIdResponse.swift", + "kind": "StringLiteral", + "offset": 5404, + "length": 10, + "value": "\"imageUrl\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetPoIByIdResponse.swift", + "kind": "StringLiteral", + "offset": 5671, + "length": 11, + "value": "\"openState\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetPoIByIdResponse.swift", + "kind": "StringLiteral", + "offset": 5701, + "length": 13, + "value": "\"closedState\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetPoIByIdResponse.swift", + "kind": "StringLiteral", + "offset": 5738, + "length": 18, + "value": "\"closedTodayState\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Logging.swift", + "kind": "StringLiteral", + "offset": 114, + "length": 12, + "value": "\"%{public}@\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Logging.swift", + "kind": "StringLiteral", + "offset": 388, + "length": 26, + "value": "\"com.scenee.FloatingPanel\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Logging.swift", + "kind": "StringLiteral", + "offset": 441, + "length": 15, + "value": "\"FloatingPanel\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Path+Bounds.swift", + "kind": "IntegerLiteral", + "offset": 6349, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Path+Bounds.swift", + "kind": "IntegerLiteral", + "offset": 6412, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "FloatLiteral", + "offset": 302, + "length": 3, + "value": "0.8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "FloatLiteral", + "offset": 340, + "length": 5, + "value": "0.125" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "FloatLiteral", + "offset": 385, + "length": 4, + "value": "0.04" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "FloatLiteral", + "offset": 425, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "BooleanLiteral", + "offset": 581, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "IntegerLiteral", + "offset": 3503, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/LegCell\/LegCell.swift", + "kind": "IntegerLiteral", + "offset": 589, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 458, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "IntegerLiteral", + "offset": 514, + "length": 3, + "value": "120" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "IntegerLiteral", + "offset": 559, + "length": 2, + "value": "55" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "IntegerLiteral", + "offset": 624, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "IntegerLiteral", + "offset": 668, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "Array", + "offset": 583, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "Array", + "offset": 637, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "Array", + "offset": 687, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "Array", + "offset": 736, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "IntegerLiteral", + "offset": 994, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "IntegerLiteral", + "offset": 1018, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "IntegerLiteral", + "offset": 1087, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "IntegerLiteral", + "offset": 1111, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 3968, + "length": 4, + "value": "\"id\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 4010, + "length": 7, + "value": "\"style\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 4084, + "length": 7, + "value": "\"class\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 17532, + "length": 10, + "value": "\".\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 17541, + "length": 1, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 17663, + "length": 10, + "value": "\"#\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 17672, + "length": 1, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "IntegerLiteral", + "offset": 17767, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/BadgeView.swift", + "kind": "IntegerLiteral", + "offset": 186, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/BadgeView.swift", + "kind": "IntegerLiteral", + "offset": 226, + "length": 2, + "value": "25" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Builder.swift", + "kind": "Array", + "offset": 2925, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "StringLiteral", + "offset": 168, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "Array", + "offset": 244, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "Array", + "offset": 275, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "StringLiteral", + "offset": 454, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "Array", + "offset": 521, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "Array", + "offset": 545, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "BooleanLiteral", + "offset": 1551, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "BooleanLiteral", + "offset": 1780, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "StringLiteral", + "offset": 2316, + "length": 10, + "value": "\"distance\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "StringLiteral", + "offset": 2348, + "length": 11, + "value": "\"bestMatch\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Gradient.swift", + "kind": "Array", + "offset": 2307, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Gradient.swift", + "kind": "Array", + "offset": 2588, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 495, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 523, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 646, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 768, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 802, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 833, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "FloatLiteral", + "offset": 1000, + "length": 5, + "value": "134.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1104, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1191, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1405, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1547, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1580, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2079, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "FloatLiteral", + "offset": 2117, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2854, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2864, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2876, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2887, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 2930, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 8832, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 9316, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 10293, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 13057, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 13261, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 14022, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 15462, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 16673, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 17801, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 52907, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Behavior.swift", + "kind": "FloatLiteral", + "offset": 3499, + "length": 5, + "value": "0.001" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Behavior.swift", + "kind": "FloatLiteral", + "offset": 3570, + "length": 3, + "value": "0.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Behavior.swift", + "kind": "FloatLiteral", + "offset": 4011, + "length": 3, + "value": "5.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Repositories\/PenNavStyleRepository.swift", + "kind": "StringLiteral", + "offset": 183, + "length": 6, + "value": "\"Font\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Repositories\/PenNavStyleRepository.swift", + "kind": "StringLiteral", + "offset": 207, + "length": 7, + "value": "\"Color\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/FeatureIdentifiers.swift", + "kind": "StringLiteral", + "offset": 184, + "length": 16, + "value": "\"selected-place\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/FeatureIdentifiers.swift", + "kind": "StringLiteral", + "offset": 245, + "length": 19, + "value": "\"destination-place\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/FeatureIdentifiers.swift", + "kind": "StringLiteral", + "offset": 310, + "length": 20, + "value": "\"location-indicator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/FeatureIdentifiers.swift", + "kind": "StringLiteral", + "offset": 362, + "length": 16, + "value": "\"maneuver-arrow\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3202, + "length": 3, + "value": "\"g\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3243, + "length": 6, + "value": "\"line\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3288, + "length": 8, + "value": "\"circle\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3337, + "length": 9, + "value": "\"ellipse\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3388, + "length": 6, + "value": "\"rect\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3433, + "length": 10, + "value": "\"polyline\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3486, + "length": 9, + "value": "\"polygon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3537, + "length": 6, + "value": "\"path\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3582, + "length": 6, + "value": "\"text\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3705, + "length": 3, + "value": "\"a\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3831, + "length": 5, + "value": "\"use\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3874, + "length": 8, + "value": "\"switch\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3921, + "length": 7, + "value": "\"image\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 10223, + "length": 4, + "value": "\"id\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 10269, + "length": 7, + "value": "\"class\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/HourScheduleData.swift", + "kind": "Array", + "offset": 173, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/HourScheduleData.swift", + "kind": "BooleanLiteral", + "offset": 203, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/HourScheduleData.swift", + "kind": "BooleanLiteral", + "offset": 235, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/HourScheduleData.swift", + "kind": "BooleanLiteral", + "offset": 268, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Path.swift", + "kind": "Array", + "offset": 1279, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 229, + "length": 4, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 243, + "length": 6, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 259, + "length": 5, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 895, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 917, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 1369, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 1392, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 1414, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 359, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "FloatLiteral", + "offset": 2136, + "length": 4, + "value": "37.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 2150, + "length": 2, + "value": "30" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 2259, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 2409, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 2420, + "length": 1, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "FloatLiteral", + "offset": 2506, + "length": 3, + "value": "3.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "FloatLiteral", + "offset": 2621, + "length": 3, + "value": "4.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Categories\/CategoriesViewController.swift", + "kind": "Array", + "offset": 257, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CampusDetails\/CampusDetailsViewController.swift", + "kind": "Array", + "offset": 745, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CampusDetails\/CampusDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 788, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CampusDetails\/CampusDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 831, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 153, + "length": 5, + "value": "\"poi\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 176, + "length": 7, + "value": "\"venue\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 208, + "length": 9, + "value": "\"parking\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 245, + "length": 18, + "value": "\"current-location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 284, + "length": 10, + "value": "\"location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 320, + "length": 15, + "value": "\"referencedPOI\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 354, + "length": 8, + "value": "\"campus\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresenter.swift", + "kind": "BooleanLiteral", + "offset": 497, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 763, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 816, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 4482, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 4509, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 4848, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 4875, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 8177, + "length": 3, + "value": "100" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 8202, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "StringLiteral", + "offset": 8233, + "length": 9, + "value": "\"Poppins\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 8250, + "length": 2, + "value": "14" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 8277, + "length": 2, + "value": "14" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UIControl.swift", + "kind": "IntegerLiteral", + "offset": 149, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.SAXParser.swift", + "kind": "StringLiteral", + "offset": 1533, + "length": 28, + "value": "\"http:\/\/www.w3.org\/2000\/svg\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.SAXParser.swift", + "kind": "Dictionary", + "offset": 2851, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "BooleanLiteral", + "offset": 338, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "BooleanLiteral", + "offset": 362, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "BooleanLiteral", + "offset": 391, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "FloatLiteral", + "offset": 447, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "FloatLiteral", + "offset": 604, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "IntegerLiteral", + "offset": 650, + "length": 2, + "value": "26" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "BooleanLiteral", + "offset": 3692, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 146, + "length": 5, + "value": "\"map\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 172, + "length": 10, + "value": "\"deepLink\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 201, + "length": 8, + "value": "\"search\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 231, + "length": 11, + "value": "\"directory\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 266, + "length": 13, + "value": "\"referenceId\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/EdgesManager.swift", + "kind": "Array", + "offset": 215, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Styles\/ColorsResponse.swift", + "kind": "StringLiteral", + "offset": 364, + "length": 9, + "value": "\"Polygon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Styles\/ColorsResponse.swift", + "kind": "StringLiteral", + "offset": 401, + "length": 9, + "value": "\"Palette\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "IntegerLiteral", + "offset": 6810, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "Array", + "offset": 6826, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "StringLiteral", + "offset": 6889, + "length": 10, + "value": "\"Warning:\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "StringLiteral", + "offset": 6901, + "length": 38, + "value": "\"clip-path unsupported in SF Symbols.\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "Array", + "offset": 6981, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "StringLiteral", + "offset": 7051, + "length": 10, + "value": "\"Warning:\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "StringLiteral", + "offset": 7063, + "length": 33, + "value": "\"mask unsupported in SF Symbols.\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "Array", + "offset": 7138, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "IntegerLiteral", + "offset": 19538, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "IntegerLiteral", + "offset": 19543, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetVenueGatesDistancesResponse.swift", + "kind": "BooleanLiteral", + "offset": 443, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetVenueGatesDistancesResponse.swift", + "kind": "BooleanLiteral", + "offset": 479, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2084, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2090, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2096, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2102, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2109, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2116, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/FloorSelectorSection.swift", + "kind": "IntegerLiteral", + "offset": 198, + "length": 6, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/PlaceImages\/PlaceImagesCell.swift", + "kind": "Array", + "offset": 245, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/PlaceImages\/PlaceImagesCell.swift", + "kind": "Array", + "offset": 286, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/PlaceImages\/PlaceImagesCell.swift", + "kind": "Array", + "offset": 370, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 209, + "length": 27, + "value": "\"dismissPenNavNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 304, + "length": 32, + "value": "\"oneSecondDidElapseNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 411, + "length": 39, + "value": "\"networkInterfaceDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 522, + "length": 36, + "value": "\"locationStateDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 631, + "length": 37, + "value": "\"bluetoothStateDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 743, + "length": 39, + "value": "\"locationAccuracyDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 857, + "length": 39, + "value": "\"connectionStatusDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 977, + "length": 45, + "value": "\"directionsAvailabilityDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 1103, + "length": 45, + "value": "\"locationDetectionStateDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/TagsViewController\/TagsViewController.swift", + "kind": "Array", + "offset": 399, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/TagsViewController\/TagsViewController.swift", + "kind": "Array", + "offset": 474, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/TagsViewController\/TagsViewController.swift", + "kind": "BooleanLiteral", + "offset": 509, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/GoodToKnowSectionCell\/AmenitiesDetailTableViewCell.swift", + "kind": "BooleanLiteral", + "offset": 419, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/GoodToKnowSectionCell\/AmenitiesDetailTableViewCell.swift", + "kind": "Array", + "offset": 532, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/GoodToKnowSectionCell\/AmenitiesDetailTableViewCell.swift", + "kind": "IntegerLiteral", + "offset": 559, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/GoodToKnowSectionCell\/AmenitiesDetailTableViewCell.swift", + "kind": "IntegerLiteral", + "offset": 599, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/ImageStorage.swift", + "kind": "Dictionary", + "offset": 591, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/ImageStorage.swift", + "kind": "StringLiteral", + "offset": 644, + "length": 35, + "value": "\"com.penNav.imageStorage.taskQueue\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.LinearGradient.swift", + "kind": "FloatLiteral", + "offset": 1900, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/ConnectedVenueCell.swift", + "kind": "IntegerLiteral", + "offset": 827, + "length": 2, + "value": "64" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/ConnectedVenueCell.swift", + "kind": "Array", + "offset": 902, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/ConnectedVenueCell.swift", + "kind": "BooleanLiteral", + "offset": 968, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UIView.swift", + "kind": "IntegerLiteral", + "offset": 3359, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "FloatLiteral", + "offset": 237, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "FloatLiteral", + "offset": 284, + "length": 4, + "value": "0.08" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "FloatLiteral", + "offset": 337, + "length": 4, + "value": "0.04" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "FloatLiteral", + "offset": 385, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "BooleanLiteral", + "offset": 636, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.RadialGradient.swift", + "kind": "FloatLiteral", + "offset": 2001, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Geofence\/LocationBasedMessagesManager.swift", + "kind": "Array", + "offset": 456, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Geofence\/LocationBasedMessagesManager.swift", + "kind": "Array", + "offset": 499, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Geofence\/LocationBasedMessagesManager.swift", + "kind": "Array", + "offset": 544, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Geofence\/LocationBasedMessagesManager.swift", + "kind": "Array", + "offset": 588, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 393, + "length": 11, + "value": "\"DayNumber\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 436, + "length": 13, + "value": "\"OpeningTime\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 481, + "length": 13, + "value": "\"ClosingTime\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 521, + "length": 8, + "value": "\"OffDay\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 748, + "length": 10, + "value": "\"imageUrl\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 810, + "length": 14, + "value": "\"scheduleList\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2831, + "length": 9, + "value": "\"regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2859, + "length": 8, + "value": "\"medium\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2888, + "length": 10, + "value": "\"semiBold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2944, + "length": 17, + "value": "\"Poppins-Regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2980, + "length": 16, + "value": "\"Poppins-Medium\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 3017, + "length": 18, + "value": "\"Poppins-SemiBold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 3223, + "length": 20, + "value": "\"Alexandria-Regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 3262, + "length": 19, + "value": "\"Alexandria-Medium\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 3302, + "length": 21, + "value": "\"Alexandria-SemiBold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/GeofenceManager.swift", + "kind": "Array", + "offset": 259, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Date+Extension.swift", + "kind": "StringLiteral", + "offset": 1539, + "length": 8, + "value": "\"h:mm a\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "BooleanLiteral", + "offset": 256, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "IntegerLiteral", + "offset": 378, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "IntegerLiteral", + "offset": 384, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1179, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1191, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1352, + "length": 4, + "value": "0.33" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1463, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1475, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "IntegerLiteral", + "offset": 1636, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "BooleanLiteral", + "offset": 1078, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "BooleanLiteral", + "offset": 2116, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "IntegerLiteral", + "offset": 2145, + "length": 2, + "value": "60" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "IntegerLiteral", + "offset": 2150, + "length": 2, + "value": "60" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "StringLiteral", + "offset": 2193, + "length": 5, + "value": "\"min\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "StringLiteral", + "offset": 2266, + "length": 4, + "value": "\"hr\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "IntegerLiteral", + "offset": 2950, + "length": 3, + "value": "112" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "IntegerLiteral", + "offset": 3150, + "length": 3, + "value": "192" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/String+Extension.swift", + "kind": "StringLiteral", + "offset": 5520, + "length": 8, + "value": "\"h:mm a\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "IntegerLiteral", + "offset": 184, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "IntegerLiteral", + "offset": 219, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "StringLiteral", + "offset": 404, + "length": 14, + "value": "\"chevron.left\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "BooleanLiteral", + "offset": 611, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "BooleanLiteral", + "offset": 696, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "BooleanLiteral", + "offset": 782, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Repositories\/TableUpdateRespository.swift", + "kind": "StringLiteral", + "offset": 190, + "length": 13, + "value": "\"CachedVenue\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Repositories\/TableUpdateRespository.swift", + "kind": "StringLiteral", + "offset": 319, + "length": 22, + "value": "\"1\/1\/2001 01:00:00 AM\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Helpers\/RoutePathDrawingHelper.swift", + "kind": "BooleanLiteral", + "offset": 16348, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 376, + "length": 4, + "value": "17.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 400, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 467, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 491, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 582, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 844, + "length": 4, + "value": "12.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 868, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 935, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 959, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 1050, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 1309, + "length": 4, + "value": "17.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 1333, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 1400, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 1424, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 1515, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 1774, + "length": 2, + "value": "17" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 1796, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 1863, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 1887, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 1978, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 2243, + "length": 4, + "value": "12.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 2273, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 2297, + "length": 45, + "value": "[\"Poppins SemiBold\", \"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 2362, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 2475, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 2742, + "length": 4, + "value": "12.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 2766, + "length": 45, + "value": "[\"Poppins SemiBold\", \"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 2831, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 2944, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 3213, + "length": 4, + "value": "14.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 3242, + "length": 6, + "value": "[1, 2]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 3553, + "length": 54, + "value": "[(12, 4.0), (16, 5.5), (18, 6.5), (19, 8), (19.5, 10)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 3932, + "length": 56, + "value": "[(12, 7.0), (16, 7.5), (18, 8.5), (19, 9.5), (19.5, 11)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 4317, + "length": 54, + "value": "[(12, 4.0), (16, 5.5), (18, 6.5), (19, 8), (19.5, 10)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 4693, + "length": 54, + "value": "[(12, 4.0), (16, 5.5), (18, 6.5), (19, 8), (19.5, 10)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 5090, + "length": 56, + "value": "[(12, 7.0), (16, 7.5), (18, 8.5), (19, 9.5), (19.5, 11)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 5485, + "length": 56, + "value": "[(12, 7.0), (16, 7.5), (18, 8.5), (19, 9.5), (19.5, 11)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 5820, + "length": 4, + "value": "14.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 6116, + "length": 4, + "value": "14.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 6388, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 6682, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 6952, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 7247, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 7539, + "length": 4, + "value": "16.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 7847, + "length": 4, + "value": "16.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 8134, + "length": 4, + "value": "16.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 8164, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 8188, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 8301, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 8556, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 8844, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 9123, + "length": 4, + "value": "17.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 9153, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 9178, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 9291, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 9585, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 9615, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 9639, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 9752, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 10048, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 10078, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 10103, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 10216, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 10500, + "length": 4, + "value": "17.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 10805, + "length": 4, + "value": "17.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 11098, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 11122, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 11235, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 11529, + "length": 25, + "value": "[\"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 11574, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 11687, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 11990, + "length": 25, + "value": "[\"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 12035, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 12148, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 12460, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 12484, + "length": 25, + "value": "[\"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 12529, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 12642, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 12907, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 13166, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 13233, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 13257, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 13320, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 13352, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 13412, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 13442, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 13473, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 16047, + "length": 4, + "value": "12.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 16079, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 16114, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/PlaceholderEnabledTextView.swift", + "kind": "StringLiteral", + "offset": 386, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 151, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 182, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 213, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 244, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 327, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 250, + "length": 21, + "value": "\"getAdsOnFloorResult\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 414, + "length": 20, + "value": "\"getAdsOnEdgeResult\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1128, + "length": 4, + "value": "\"ID\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1153, + "length": 6, + "value": "\"Name\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1187, + "length": 13, + "value": "\"Description\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1222, + "length": 8, + "value": "\"PoI_ID\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1254, + "length": 10, + "value": "\"PoI_Name\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1290, + "length": 11, + "value": "\"StartDate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1325, + "length": 9, + "value": "\"EndDate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1359, + "length": 10, + "value": "\"Location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1395, + "length": 11, + "value": "\"isAllTime\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1427, + "length": 6, + "value": "\"Icon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1455, + "length": 7, + "value": "\"phone\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1484, + "length": 7, + "value": "\"email\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1515, + "length": 9, + "value": "\"website\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/ImageIds.swift", + "kind": "StringLiteral", + "offset": 166, + "length": 30, + "value": "\"location-indicator-top-image\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/ImageIds.swift", + "kind": "StringLiteral", + "offset": 250, + "length": 39, + "value": "\"selected-location-indicator-top-image\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/ImageIds.swift", + "kind": "StringLiteral", + "offset": 339, + "length": 34, + "value": "\"location-indicator-bearing-image\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "Array", + "offset": 218, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "Array", + "offset": 323, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "Array", + "offset": 357, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "Array", + "offset": 399, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "BooleanLiteral", + "offset": 3254, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "BooleanLiteral", + "offset": 4620, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Log\/PIAnalyticsManager.swift", + "kind": "StringLiteral", + "offset": 723, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Utilities\/PairedSequence.swift", + "kind": "BooleanLiteral", + "offset": 3345, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Toast\/ToastManager.swift", + "kind": "Array", + "offset": 278, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Toast\/ToastManager.swift", + "kind": "Array", + "offset": 331, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchBar\/SearchBar.swift", + "kind": "BooleanLiteral", + "offset": 381, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchBar\/SearchBar.swift", + "kind": "BooleanLiteral", + "offset": 522, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/UIImage+Image.swift", + "kind": "IntegerLiteral", + "offset": 2792, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/UIImage+Image.swift", + "kind": "IntegerLiteral", + "offset": 3368, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/UIImage+Image.swift", + "kind": "IntegerLiteral", + "offset": 3684, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/UIImage+Image.swift", + "kind": "IntegerLiteral", + "offset": 3725, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/General\/Constants.swift", + "kind": "IntegerLiteral", + "offset": 166, + "length": 2, + "value": "40" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 156, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 167, + "length": 20, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 197, + "length": 8, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 215, + "length": 9, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 234, + "length": 15, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 259, + "length": 22, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 291, + "length": 13, + "value": "7" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 314, + "length": 17, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 341, + "length": 12, + "value": "9" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Pattern.swift", + "kind": "Array", + "offset": 1493, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.SVG.swift", + "kind": "Dictionary", + "offset": 2587, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/ReroutingView\/BouncingDotsActivityIndicator.swift", + "kind": "IntegerLiteral", + "offset": 255, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/SelectionManager.swift", + "kind": "BooleanLiteral", + "offset": 456, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/SelectionManager.swift", + "kind": "BooleanLiteral", + "offset": 486, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "Array", + "offset": 1211, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "Array", + "offset": 1282, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 1369, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1471, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1514, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1546, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1576, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1713, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1794, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1829, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1857, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "Array", + "offset": 2346, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "StringLiteral", + "offset": 2375, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2401, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2430, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2467, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2501, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2536, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2571, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2601, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2636, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2671, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "StringLiteral", + "offset": 2767, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2798, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2825, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2883, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2963, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2991, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3171, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3217, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "FloatLiteral", + "offset": 3250, + "length": 4, + "value": "25.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 3303, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3362, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3372, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3384, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3395, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3824, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 5142, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 5176, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 15150, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 23887, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 37072, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 43635, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 44343, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 56207, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 73269, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 78630, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.swift", + "kind": "Array", + "offset": 1485, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.swift", + "kind": "IntegerLiteral", + "offset": 1690, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.swift", + "kind": "IntegerLiteral", + "offset": 1748, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/AbsoluteInsetDrivenLayout.swift", + "kind": "IntegerLiteral", + "offset": 899, + "length": 2, + "value": "69" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/MenuViewController.swift", + "kind": "Array", + "offset": 225, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Attributes.swift", + "kind": "Array", + "offset": 1702, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresentable.swift", + "kind": "BooleanLiteral", + "offset": 1703, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresentable.swift", + "kind": "BooleanLiteral", + "offset": 1726, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresentable.swift", + "kind": "BooleanLiteral", + "offset": 2078, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresentable.swift", + "kind": "BooleanLiteral", + "offset": 2110, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 937, + "length": 82, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 1176, + "length": 6, + "value": "\"full\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "IntegerLiteral", + "offset": 1191, + "length": 4, + "value": "1000" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 1349, + "length": 6, + "value": "\"half\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "IntegerLiteral", + "offset": 1364, + "length": 3, + "value": "500" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 1518, + "length": 5, + "value": "\"tip\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "IntegerLiteral", + "offset": 1532, + "length": 3, + "value": "100" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 1677, + "length": 8, + "value": "\"hidden\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "IntegerLiteral", + "offset": 1694, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/AsynchronousOperation.swift", + "kind": "BooleanLiteral", + "offset": 946, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/AsynchronousOperation.swift", + "kind": "BooleanLiteral", + "offset": 1030, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/AsynchronousOperation.swift", + "kind": "BooleanLiteral", + "offset": 1467, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "BooleanLiteral", + "offset": 523, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 735, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 748, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 841, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "IntegerLiteral", + "offset": 962, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "IntegerLiteral", + "offset": 1088, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 1693, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 2329, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 2825, + "length": 3, + "value": "6.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 2997, + "length": 4, + "value": "36.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 3219, + "length": 4, + "value": "36.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 3233, + "length": 3, + "value": "5.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 4682, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 8962, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 9085, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 9214, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 9340, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "IntegerLiteral", + "offset": 10606, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "Array", + "offset": 10345, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "BooleanLiteral", + "offset": 10715, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "IntegerLiteral", + "offset": 352, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "IntegerLiteral", + "offset": 364, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "IntegerLiteral", + "offset": 484, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "IntegerLiteral", + "offset": 496, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 739, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 778, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 1015, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 17661, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 18367, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Language\/LanguageManager.swift", + "kind": "StringLiteral", + "offset": 734, + "length": 4, + "value": "\"en\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Language\/LanguageManager.swift", + "kind": "StringLiteral", + "offset": 757, + "length": 4, + "value": "\"ar\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 296, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "StringLiteral", + "offset": 450, + "length": 11, + "value": "\"star.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 544, + "length": 1, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 550, + "length": 1, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 669, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 789, + "length": 2, + "value": "-3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 804, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 898, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 912, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 980, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 995, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 1095, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 1144, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 1180, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UIColor.swift", + "kind": "FloatLiteral", + "offset": 2055, + "length": 4, + "value": "20.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 358, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 3313, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 3354, + "length": 2, + "value": "35" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 3519, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "StringLiteral", + "offset": 3795, + "length": 17, + "value": "\"Poppins-Regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 3820, + "length": 4, + "value": "16.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 3976, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 4080, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "BooleanLiteral", + "offset": 4200, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Directory\/DirectoryCell.swift", + "kind": "IntegerLiteral", + "offset": 321, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Directory\/DirectoryCell.swift", + "kind": "IntegerLiteral", + "offset": 334, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetCategoryResponse.swift", + "kind": "StringLiteral", + "offset": 244, + "length": 21, + "value": "\"GetCategoriesResult\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 209, + "length": 16, + "value": "\"base_url_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 260, + "length": 20, + "value": "\"service_name_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 319, + "length": 29, + "value": "\"position_service_name_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 382, + "length": 23, + "value": "\"root_controller_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 438, + "length": 22, + "value": "\"view_container_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 488, + "length": 17, + "value": "\"client_id_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 535, + "length": 23, + "value": "\"client_name_key_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 587, + "length": 19, + "value": "\"invalid_key_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 631, + "length": 20, + "value": "\"unauthorized_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 684, + "length": 19, + "value": "\"no_internet_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 734, + "length": 21, + "value": "\"bluetooth_off_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 793, + "length": 15, + "value": "\"gps_off_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 837, + "length": 28, + "value": "\"pen_nav_loading_data_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 892, + "length": 24, + "value": "\"os_not_supported_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 950, + "length": 19, + "value": "\"permissions_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1008, + "length": 22, + "value": "\"sensor_initial_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1055, + "length": 15, + "value": "\"unknown_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1111, + "length": 27, + "value": "\"location_permission_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1180, + "length": 28, + "value": "\"bluetooth_permission_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1236, + "length": 19, + "value": "\"invalid_campus_id\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1285, + "length": 14, + "value": "\"campus_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1326, + "length": 17, + "value": "\"build_cancelled\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/MUtils.swift", + "kind": "IntegerLiteral", + "offset": 4302, + "length": 3, + "value": "256" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 130, + "length": 10, + "value": "\"Straight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 158, + "length": 7, + "value": "\"Venue\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 186, + "length": 10, + "value": "\"Elevator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 218, + "length": 11, + "value": "\"Escalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 248, + "length": 8, + "value": "\"Stairs\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 273, + "length": 6, + "value": "\"Ramp\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 296, + "length": 6, + "value": "\"Back\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 165, + "length": 30, + "value": "\"high-priority-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 232, + "length": 20, + "value": "\"floor-nodes-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 288, + "length": 19, + "value": "\"path-nodes-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 344, + "length": 20, + "value": "\"floor-gates-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 400, + "length": 19, + "value": "\"poi-models-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 465, + "length": 30, + "value": "\"extruded-poi-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 547, + "length": 37, + "value": "\"hidden-extruded-poi-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 628, + "length": 28, + "value": "\"outdoor-poi-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 699, + "length": 27, + "value": "\"indoor-poi-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 774, + "length": 32, + "value": "\"indoor-landmark-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 855, + "length": 33, + "value": "\"outdoor-landmark-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 933, + "length": 29, + "value": "\"outdoor-poi-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1013, + "length": 36, + "value": "\"outdoor-poi-polygon-borders-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1093, + "length": 28, + "value": "\"indoor-poi-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1171, + "length": 35, + "value": "\"indoor-poi-polygon-borders-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1246, + "length": 23, + "value": "\"venue-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1309, + "length": 23, + "value": "\"campus-polygon-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1378, + "length": 30, + "value": "\"campus-polygon-border-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1447, + "length": 22, + "value": "\"campus-border-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1508, + "length": 22, + "value": "\"venue-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1576, + "length": 30, + "value": "\"venue-polygon-borders-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1643, + "length": 20, + "value": "\"venue-gates-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1701, + "length": 21, + "value": "\"venue-models-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1770, + "length": 32, + "value": "\"extruded-venue-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1856, + "length": 39, + "value": "\"hidden-extruded-venue-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1939, + "length": 27, + "value": "\"destination-symbol-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2012, + "length": 30, + "value": "\"indoor-selected-place-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2089, + "length": 31, + "value": "\"outdoor-selected-place-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2152, + "length": 14, + "value": "\"floor-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2205, + "length": 22, + "value": "\"campus-symbol-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2265, + "length": 21, + "value": "\"campus-gates-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2322, + "length": 19, + "value": "\"route-line-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2383, + "length": 26, + "value": "\"route-line-casing-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2448, + "length": 22, + "value": "\"progress-line-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2515, + "length": 29, + "value": "\"progress-line-casing-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2593, + "length": 34, + "value": "\"progress-line-start-point-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2668, + "length": 43, + "value": "\"location-indicator-accuracy-circle-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2755, + "length": 27, + "value": "\"location-indicator-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2834, + "length": 36, + "value": "\"selected-location-indicator-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2910, + "length": 23, + "value": "\"object-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2973, + "length": 23, + "value": "\"maneuver-arrow-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 3038, + "length": 26, + "value": "\"linked-route-line-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 3112, + "length": 33, + "value": "\"linked-route-line-casing-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/VenuesManager.swift", + "kind": "Array", + "offset": 221, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/VenuesManager.swift", + "kind": "Array", + "offset": 270, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/VenuesManager.swift", + "kind": "Array", + "offset": 320, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandGenerator.swift", + "kind": "BooleanLiteral", + "offset": 1483, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandGenerator.swift", + "kind": "BooleanLiteral", + "offset": 1536, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandGenerator.swift", + "kind": "BooleanLiteral", + "offset": 1585, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandGenerator.swift", + "kind": "FloatLiteral", + "offset": 1665, + "length": 3, + "value": "3.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UIImage.swift", + "kind": "IntegerLiteral", + "offset": 1302, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Path.swift", + "kind": "StringLiteral", + "offset": 8104, + "length": 4, + "value": "\",;\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Path.swift", + "kind": "StringLiteral", + "offset": 8161, + "length": 22, + "value": "\"MmLlHhVvCcSsQqTtAaZz\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/WelcomeScreen\/WelcomeScreenViewController.swift", + "kind": "FloatLiteral", + "offset": 367, + "length": 4, + "value": "0.01" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/WelcomeScreen\/WelcomeScreenViewController.swift", + "kind": "FloatLiteral", + "offset": 398, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/WelcomeScreen\/WelcomeScreenViewController.swift", + "kind": "FloatLiteral", + "offset": 427, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/WelcomeScreen\/WelcomeScreenViewController.swift", + "kind": "BooleanLiteral", + "offset": 464, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 1034, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "StringLiteral", + "offset": 1340, + "length": 40, + "value": "\"state changed: \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "StringLiteral", + "offset": 1367, + "length": 2, + "value": "\" -> \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "StringLiteral", + "offset": 1379, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 1703, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 1750, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 2175, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 2210, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 2392, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 2438, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "FloatLiteral", + "offset": 2493, + "length": 5, + "value": "-30.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 7768, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 46462, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 56621, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "IntegerLiteral", + "offset": 59040, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "IntegerLiteral", + "offset": 59095, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "IntegerLiteral", + "offset": 59116, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 59146, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/VenueDrawingManager.swift", + "kind": "Array", + "offset": 2723, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/VenueDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 5574, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/GrabberView.swift", + "kind": "FloatLiteral", + "offset": 275, + "length": 4, + "value": "0.76" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/GrabberView.swift", + "kind": "FloatLiteral", + "offset": 288, + "length": 4, + "value": "0.77" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/GrabberView.swift", + "kind": "FloatLiteral", + "offset": 300, + "length": 4, + "value": "0.76" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/GrabberView.swift", + "kind": "FloatLiteral", + "offset": 313, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Position.swift", + "kind": "IntegerLiteral", + "offset": 220, + "length": 4, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Position.swift", + "kind": "IntegerLiteral", + "offset": 234, + "length": 6, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Position.swift", + "kind": "IntegerLiteral", + "offset": 250, + "length": 5, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 154, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 193, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 234, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 285, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 325, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "IntegerLiteral", + "offset": 181, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "IntegerLiteral", + "offset": 216, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "StringLiteral", + "offset": 529, + "length": 15, + "value": "\"fit-to-campus\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 915, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1015, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1116, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "StringLiteral", + "offset": 1482, + "length": 19, + "value": "\"currentloc_filled\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1562, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1647, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1733, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "StringLiteral", + "offset": 2028, + "length": 17, + "value": "\"binoculars.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 2387, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 2472, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 2558, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "StringLiteral", + "offset": 2917, + "length": 4, + "value": "\"2D\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 3179, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 3264, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 3350, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "IntegerLiteral", + "offset": 3510, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/RouteOption.swift", + "kind": "BooleanLiteral", + "offset": 1587, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 162, + "length": 29, + "value": "\"high-priority-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 226, + "length": 18, + "value": "\"path-nodes-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 280, + "length": 19, + "value": "\"floor-nodes-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 335, + "length": 19, + "value": "\"floor-gates-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 389, + "length": 18, + "value": "\"poi-models-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 452, + "length": 29, + "value": "\"extruded-poi-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 532, + "length": 36, + "value": "\"hidden-extruded-poi-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 611, + "length": 27, + "value": "\"outdoor-poi-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 680, + "length": 26, + "value": "\"indoor-poi-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 753, + "length": 31, + "value": "\"indoor-landmark-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 832, + "length": 32, + "value": "\"outdoor-landmark-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 908, + "length": 28, + "value": "\"outdoor-poi-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 986, + "length": 35, + "value": "\"outdoor-poi-polygon-borders-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1064, + "length": 27, + "value": "\"indoor-poi-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1140, + "length": 34, + "value": "\"indoor-poi-polygon-borders-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1213, + "length": 22, + "value": "\"venue-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1280, + "length": 29, + "value": "\"venue-polygon-borders-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1348, + "length": 22, + "value": "\"campus-polygon-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1415, + "length": 29, + "value": "\"campus-polygon-border-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1482, + "length": 21, + "value": "\"campus-border-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1541, + "length": 21, + "value": "\"venue-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1598, + "length": 19, + "value": "\"venue-gates-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1654, + "length": 20, + "value": "\"venue-models-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1721, + "length": 31, + "value": "\"extruded-venue-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1805, + "length": 38, + "value": "\"hidden-extruded-venue-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1886, + "length": 26, + "value": "\"destination-symbol-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1957, + "length": 29, + "value": "\"indoor-selected-place-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2032, + "length": 30, + "value": "\"outdoor-selected-place-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2093, + "length": 13, + "value": "\"floor-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2144, + "length": 21, + "value": "\"campus-symbol-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2202, + "length": 20, + "value": "\"campus-gates-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2257, + "length": 18, + "value": "\"route-line-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2316, + "length": 25, + "value": "\"route-line-casing-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2379, + "length": 21, + "value": "\"progress-line-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2444, + "length": 28, + "value": "\"progress-line-casing-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2520, + "length": 33, + "value": "\"progress-line-start-point-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2593, + "length": 42, + "value": "\"location-indicator-accuracy-circle-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2678, + "length": 26, + "value": "\"location-indicator-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2755, + "length": 35, + "value": "\"selected-location-indicator-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2829, + "length": 22, + "value": "\"object-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2890, + "length": 22, + "value": "\"maneuver-arrow-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2953, + "length": 25, + "value": "\"linked-route-line-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 3025, + "length": 32, + "value": "\"linked-route-line-casing-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "BooleanLiteral", + "offset": 664, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "FloatLiteral", + "offset": 707, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "FloatLiteral", + "offset": 745, + "length": 4, + "value": "0.08" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "FloatLiteral", + "offset": 789, + "length": 4, + "value": "0.04" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "BooleanLiteral", + "offset": 951, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "StringLiteral", + "offset": 1069, + "length": 9, + "value": "\"#FF453A\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 203, + "length": 7, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 220, + "length": 9, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 239, + "length": 10, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 259, + "length": 9, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 278, + "length": 7, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoriesCell.swift", + "kind": "Array", + "offset": 567, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LiveObjectManager.swift", + "kind": "Dictionary", + "offset": 699, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CoordinateFormatter.swift", + "kind": "IntegerLiteral", + "offset": 1376, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CoordinateFormatter.swift", + "kind": "StringLiteral", + "offset": 1758, + "length": 3, + "value": "\" \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CoordinateFormatter.swift", + "kind": "StringLiteral", + "offset": 1810, + "length": 3, + "value": "\",\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CoordinateFormatter.swift", + "kind": "StringLiteral", + "offset": 1867, + "length": 4, + "value": "\", \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ImageDownloader.swift", + "kind": "Dictionary", + "offset": 492, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ImageDownloader.swift", + "kind": "Array", + "offset": 540, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ImageDownloader.swift", + "kind": "Array", + "offset": 712, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/RenderingHelper.swift", + "kind": "BooleanLiteral", + "offset": 3841, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image+CoreGraphics.swift", + "kind": "FloatLiteral", + "offset": 1857, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image+CoreGraphics.swift", + "kind": "FloatLiteral", + "offset": 1870, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SVG.swift", + "kind": "IntegerLiteral", + "offset": 1598, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "Array", + "offset": 1181, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "FloatLiteral", + "offset": 1213, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "Array", + "offset": 1254, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "Array", + "offset": 1285, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "Array", + "offset": 1377, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "FloatLiteral", + "offset": 3333, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/PoisManager.swift", + "kind": "Array", + "offset": 215, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/MainViewController.swift", + "kind": "Array", + "offset": 419, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/PoiViewData.swift", + "kind": "IntegerLiteral", + "offset": 161, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/MessageDetailEnum.swift", + "kind": "IntegerLiteral", + "offset": 193, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/MessageDetailEnum.swift", + "kind": "IntegerLiteral", + "offset": 204, + "length": 6, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/MessageDetailEnum.swift", + "kind": "IntegerLiteral", + "offset": 220, + "length": 11, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Helpers\/InstructionPresenter.swift", + "kind": "BooleanLiteral", + "offset": 9087, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 2475, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 2480, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "Array", + "offset": 2531, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 5244, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 5253, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 5264, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 5274, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "IntegerLiteral", + "offset": 7013, + "length": 5, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "IntegerLiteral", + "offset": 7426, + "length": 11, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 11742, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 17869, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 19246, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 20975, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "IntegerLiteral", + "offset": 21975, + "length": 2, + "value": "-1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 21996, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Home\/HomeViewController.swift", + "kind": "IntegerLiteral", + "offset": 1442, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Home\/HomeViewController.swift", + "kind": "Array", + "offset": 1320, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/FontWeight.swift", + "kind": "StringLiteral", + "offset": 132, + "length": 10, + "value": "\"SemiBold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/FontWeight.swift", + "kind": "StringLiteral", + "offset": 162, + "length": 9, + "value": "\"Regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/FontWeight.swift", + "kind": "StringLiteral", + "offset": 188, + "length": 6, + "value": "\"Bold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Log\/NavigationEventTracker.swift", + "kind": "IntegerLiteral", + "offset": 1139, + "length": 2, + "value": "-1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Log\/NavigationEventTracker.swift", + "kind": "BooleanLiteral", + "offset": 1380, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Log\/NavigationEventTracker.swift", + "kind": "IntegerLiteral", + "offset": 4084, + "length": 2, + "value": "-1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/PoiDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 673, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/PoiDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 710, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/PoiDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 745, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 172, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 183, + "length": 13, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 206, + "length": 6, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 222, + "length": 15, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 247, + "length": 11, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 268, + "length": 5, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 283, + "length": 5, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 298, + "length": 7, + "value": "7" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 315, + "length": 13, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Shape.swift", + "kind": "BooleanLiteral", + "offset": 4279, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Favorites\/Favorite.swift", + "kind": "StringLiteral", + "offset": 5536, + "length": 5, + "value": "\"poi\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Favorites\/Favorite.swift", + "kind": "StringLiteral", + "offset": 5562, + "length": 10, + "value": "\"location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Scanner.swift", + "kind": "StringLiteral", + "offset": 7465, + "length": 7, + "value": "\"FALSE\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Scanner.swift", + "kind": "StringLiteral", + "offset": 7494, + "length": 6, + "value": "\"TRUE\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Scanner.swift", + "kind": "StringLiteral", + "offset": 7517, + "length": 3, + "value": "\"0\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Scanner.swift", + "kind": "StringLiteral", + "offset": 7536, + "length": 3, + "value": "\"1\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoriteCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 552, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoriteCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 564, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoriteCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 799, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoriteCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 811, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/FloorDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 281, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/NetworkMonitor.swift", + "kind": "BooleanLiteral", + "offset": 325, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueSelector\/VenuesSectionLabel.swift", + "kind": "StringLiteral", + "offset": 363, + "length": 8, + "value": "\"venues\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/General\/UserDefaultsKey.swift", + "kind": "StringLiteral", + "offset": 173, + "length": 22, + "value": "\"IsSpeechManagerMuted\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4285, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4363, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4422, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4490, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4566, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4643, + "length": 1, + "value": "7" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4703, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4844, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4913, + "length": 2, + "value": "11" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4977, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5047, + "length": 2, + "value": "13" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5115, + "length": 2, + "value": "14" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5183, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5252, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5316, + "length": 2, + "value": "17" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5389, + "length": 2, + "value": "18" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5455, + "length": 2, + "value": "19" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5521, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "StringLiteral", + "offset": 5596, + "length": 9, + "value": "\"#C8E6FF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "StringLiteral", + "offset": 5668, + "length": 9, + "value": "\"#818181\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "StringLiteral", + "offset": 5730, + "length": 11, + "value": "\"#D1D1D6FF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PIGeofenceInterface\/PIGeofenceManager.swift", + "kind": "BooleanLiteral", + "offset": 1807, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PIGeofenceInterface\/PIGeofenceManager.swift", + "kind": "BooleanLiteral", + "offset": 1852, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/AlertSheet\/AlertSheet.swift", + "kind": "Array", + "offset": 494, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/AdaptiveFloatingPanelLayout.swift", + "kind": "FloatLiteral", + "offset": 320, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/AdaptiveFloatingPanelLayout.swift", + "kind": "FloatLiteral", + "offset": 433, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/AdaptiveFloatingPanelLayout.swift", + "kind": "IntegerLiteral", + "offset": 706, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/FractionalInsetDrivenLayout.swift", + "kind": "IntegerLiteral", + "offset": 489, + "length": 2, + "value": "69" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/FractionalInsetDrivenLayout.swift", + "kind": "FloatLiteral", + "offset": 786, + "length": 4, + "value": "0.45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/FractionalInsetDrivenLayout.swift", + "kind": "IntegerLiteral", + "offset": 1056, + "length": 2, + "value": "69" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Route\/Leg.swift", + "kind": "Array", + "offset": 194, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Route\/Leg.swift", + "kind": "IntegerLiteral", + "offset": 222, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITextView.swift", + "kind": "IntegerLiteral", + "offset": 978, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITextView.swift", + "kind": "IntegerLiteral", + "offset": 988, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITextView.swift", + "kind": "IntegerLiteral", + "offset": 1000, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITextView.swift", + "kind": "IntegerLiteral", + "offset": 1011, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/CategoriesManager.swift", + "kind": "Array", + "offset": 242, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/CategoriesManager.swift", + "kind": "Array", + "offset": 286, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/Details\/AboutCell.swift", + "kind": "IntegerLiteral", + "offset": 257, + "length": 3, + "value": "200" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 189, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 204, + "length": 22, + "value": "\"panelBackgroundColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 235, + "length": 9, + "value": "\"#FFFFFF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 255, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 270, + "length": 31, + "value": "\"secondaryPanelBackgroundColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 310, + "length": 9, + "value": "\"#F3F3F3\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 330, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 345, + "length": 12, + "value": "\"labelColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 366, + "length": 9, + "value": "\"#292929\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 386, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 401, + "length": 21, + "value": "\"secondaryLabelColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 431, + "length": 9, + "value": "\"#818181\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 451, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 466, + "length": 29, + "value": "\"borderColorOnGrayBackground\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 504, + "length": 9, + "value": "\"#BFBFBF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 524, + "length": 1, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 539, + "length": 29, + "value": "\"borderColorOnGrayBackground\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 577, + "length": 9, + "value": "\"#F3F3F3\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 597, + "length": 1, + "value": "7" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 612, + "length": 30, + "value": "\"borderColorOnWhiteBackground\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 651, + "length": 9, + "value": "\"#EFEFEF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 671, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 686, + "length": 13, + "value": "\"buttonColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 708, + "length": 9, + "value": "\"#5390E9\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 728, + "length": 1, + "value": "9" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 743, + "length": 12, + "value": "\"brandColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 764, + "length": 9, + "value": "\"#1C3968\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 784, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 800, + "length": 24, + "value": "\"locationIndicatorColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 833, + "length": 9, + "value": "\"#3478F5\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 853, + "length": 2, + "value": "11" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 869, + "length": 28, + "value": "\"locationIndicatorAuraColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 906, + "length": 11, + "value": "\"#3478F51A\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 928, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 944, + "length": 16, + "value": "\"routeLineColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 969, + "length": 9, + "value": "\"#00B0FF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 989, + "length": 2, + "value": "13" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1005, + "length": 22, + "value": "\"routeLineCasingColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1036, + "length": 9, + "value": "\"#1967D1\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1056, + "length": 2, + "value": "14" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1072, + "length": 20, + "value": "\"openingStatusColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1101, + "length": 9, + "value": "\"#63C26C\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1121, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1137, + "length": 20, + "value": "\"closureStatusColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1166, + "length": 9, + "value": "\"#EA4F3D\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1186, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1202, + "length": 21, + "value": "\"secondaryBrandColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1232, + "length": 9, + "value": "\"#264E8F\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1252, + "length": 2, + "value": "17" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1268, + "length": 16, + "value": "\"secondaryColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1293, + "length": 9, + "value": "\"#00A79E\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1313, + "length": 2, + "value": "18" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1329, + "length": 25, + "value": "\"panelGrabberHandleColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1363, + "length": 9, + "value": "\"#CCCCCC\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1383, + "length": 2, + "value": "19" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1399, + "length": 18, + "value": "\"closeButtonColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1426, + "length": 9, + "value": "\"#E6E6E6\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1446, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1462, + "length": 18, + "value": "\"placeholderColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1489, + "length": 9, + "value": "\"#A5A5A5\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Formatters\/TimeFormatter.swift", + "kind": "BooleanLiteral", + "offset": 222, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/MenuItem.swift", + "kind": "Dictionary", + "offset": 221, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 635, + "length": 18, + "value": "\"LightYellowColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 878, + "length": 7, + "value": "\"Arrow\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1003, + "length": 6, + "value": "\"Back\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1133, + "length": 9, + "value": "\"Bicycle\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1272, + "length": 12, + "value": "\"CampusGate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1430, + "length": 20, + "value": "\"CampusGateSelector\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1566, + "length": 5, + "value": "\"Car\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1707, + "length": 15, + "value": "\"CheckmarkIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1842, + "length": 7, + "value": "\"Clock\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1973, + "length": 9, + "value": "\"Compass\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2116, + "length": 14, + "value": "\"DistanceIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2256, + "length": 10, + "value": "\"Elevator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2401, + "length": 15, + "value": "\"ElevatorDown-\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2550, + "length": 14, + "value": "\"ElevatorIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2695, + "length": 13, + "value": "\"ElevatorUp-\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2836, + "length": 11, + "value": "\"Escalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2983, + "length": 15, + "value": "\"EscalatorDown\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3134, + "length": 15, + "value": "\"EscalatorIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3281, + "length": 13, + "value": "\"EscalatorUp\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3424, + "length": 12, + "value": "\"FilterIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3554, + "length": 6, + "value": "\"Gate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3694, + "length": 14, + "value": "\"GroupedStops\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3832, + "length": 9, + "value": "\"Indoors\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3959, + "length": 6, + "value": "\"Left\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4091, + "length": 10, + "value": "\"LeftLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4229, + "length": 11, + "value": "\"LeftRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4374, + "length": 14, + "value": "\"LeftVeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4524, + "length": 15, + "value": "\"LeftVeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4681, + "length": 18, + "value": "\"MapDownEscalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4855, + "length": 25, + "value": "\"MapDownloaderBackground\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5012, + "length": 13, + "value": "\"MapElevator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5159, + "length": 14, + "value": "\"MapEscalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5297, + "length": 9, + "value": "\"MapGate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5430, + "length": 9, + "value": "\"MapRamp\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5567, + "length": 11, + "value": "\"MapStairs\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5716, + "length": 16, + "value": "\"MapUpEscalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5858, + "length": 10, + "value": "\"MuteIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5994, + "length": 10, + "value": "\"Outdoors\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6120, + "length": 5, + "value": "\"Pin\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6243, + "length": 6, + "value": "\"Ramp\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6373, + "length": 9, + "value": "\"Reached\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6502, + "length": 7, + "value": "\"Right\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6637, + "length": 11, + "value": "\"RightLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6778, + "length": 12, + "value": "\"RightRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6926, + "length": 15, + "value": "\"RightVeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7079, + "length": 16, + "value": "\"RightVeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7223, + "length": 11, + "value": "\"ShareIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7360, + "length": 10, + "value": "\"SharePDF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7498, + "length": 11, + "value": "\"ShareText\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7637, + "length": 11, + "value": "\"SharpLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7778, + "length": 12, + "value": "\"SharpRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7912, + "length": 8, + "value": "\"Stairs\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8046, + "length": 10, + "value": "\"Straight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8180, + "length": 9, + "value": "\"Transit\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8319, + "length": 12, + "value": "\"UnMuteIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8457, + "length": 10, + "value": "\"VeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8601, + "length": 14, + "value": "\"VeerLeftLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8751, + "length": 15, + "value": "\"VeerLeftRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8908, + "length": 18, + "value": "\"VeerLeftVeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9070, + "length": 19, + "value": "\"VeerLeftVeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9217, + "length": 11, + "value": "\"VeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9364, + "length": 15, + "value": "\"VeerRightLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9517, + "length": 16, + "value": "\"VeerRightRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9677, + "length": 19, + "value": "\"VeerRightVeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9842, + "length": 20, + "value": "\"VeerRightVeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9994, + "length": 13, + "value": "\"VenueChange\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10147, + "length": 17, + "value": "\"VenueChangeININ\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10306, + "length": 18, + "value": "\"VenueChangeINOUT\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10466, + "length": 18, + "value": "\"VenueChangeOUTIN\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10628, + "length": 19, + "value": "\"VenueSelectorIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10765, + "length": 6, + "value": "\"Walk\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10903, + "length": 13, + "value": "\"WarningIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11034, + "length": 6, + "value": "\"Wave\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11173, + "length": 14, + "value": "\"back_covered\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11322, + "length": 15, + "value": "\"building.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11475, + "length": 16, + "value": "\"currentAligned\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11621, + "length": 12, + "value": "\"currentloc\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11776, + "length": 19, + "value": "\"currentloc_filled\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11927, + "length": 13, + "value": "\"destination\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12066, + "length": 10, + "value": "\"doorDark\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12204, + "length": 11, + "value": "\"doorWhite\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12341, + "length": 10, + "value": "\"elevDark\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12479, + "length": 11, + "value": "\"elevWhite\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12624, + "length": 14, + "value": "\"escalterDark\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12774, + "length": 15, + "value": "\"escalterWhite\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12930, + "length": 18, + "value": "\"exclamation-mark\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13105, + "length": 26, + "value": "\"exclamationmark.triangle\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13280, + "length": 22, + "value": "\"feedback_destination\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13436, + "length": 15, + "value": "\"fit-to-campus\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13598, + "length": 22, + "value": "\"fit-to-campus-filled\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13760, + "length": 18, + "value": "\"map-location-dot\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13933, + "length": 26, + "value": "\"map-location-dot-success\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14089, + "length": 12, + "value": "\"myLocation\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14241, + "length": 18, + "value": "\"my_location_icon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14414, + "length": 26, + "value": "\"my_location_parking_icon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14570, + "length": 13, + "value": "\"out_of_area\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14695, + "length": 3, + "value": "\"p\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14822, + "length": 9, + "value": "\"parking\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14963, + "length": 13, + "value": "\"parkingIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15115, + "length": 17, + "value": "\"parking_reached\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15270, + "length": 17, + "value": "\"pin.circle.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15411, + "length": 9, + "value": "\"rating1\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15544, + "length": 9, + "value": "\"rating2\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15677, + "length": 9, + "value": "\"rating3\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15810, + "length": 9, + "value": "\"rating4\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15943, + "length": 9, + "value": "\"rating5\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16085, + "length": 14, + "value": "\"reached-icon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16251, + "length": 24, + "value": "\"selected_user_location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16395, + "length": 7, + "value": "\"start\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16524, + "length": 8, + "value": "\"updown\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16660, + "length": 11, + "value": "\"usingGate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16796, + "length": 10, + "value": "\"wifi_off\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16929, + "length": 9, + "value": "\"wifi_on\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 17065, + "length": 11, + "value": "\"wifi_slow\"" + } + ] +} \ No newline at end of file diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface new file mode 100644 index 00000000..8bea02d2 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface @@ -0,0 +1,1211 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1) +// swift-module-flags: -target arm64-apple-ios13.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name PenNavUI +// swift-module-flags-ignorable: -no-verify-emitted-module-interface -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2 +import AVFoundation +import CoreData +import CoreGraphics +import CoreHaptics +import CoreLocation +import CoreText +import CryptoKit +import Darwin +import DeveloperToolsSupport +import Foundation +import LinkPresentation +import MapKit +import MessageUI +import Network +@_exported import PenNavUI +import Penguin +import PenguinINRenderer +import QuartzCore +import SafariServices +import Swift +import SwiftUI +import SystemConfiguration +import UIKit +import UserNotifications +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +import os.log +import os +@objc public protocol FloatingPanelLayout { + @objc var position: PenNavUI.FloatingPanelPosition { get } + @objc var initialState: PenNavUI.FloatingPanelState { get } + @objc var anchors: [PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring] { get } + @objc optional func prepareLayout(surfaceView: UIKit.UIView, in view: UIKit.UIView) -> [UIKit.NSLayoutConstraint] + @objc optional func backdropAlpha(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat +} +@objc @_inheritsConvenienceInitializers @objcMembers open class FloatingPanelBottomLayout : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayout { + @objc override dynamic public init() + @objc open var initialState: PenNavUI.FloatingPanelState { + @objc get + } + @objc open var anchors: [PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring] { + @objc get + } + @objc open var position: PenNavUI.FloatingPanelPosition { + @objc get + } + @objc open func prepareLayout(surfaceView: UIKit.UIView, in view: UIKit.UIView) -> [UIKit.NSLayoutConstraint] + @objc open func backdropAlpha(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc deinit +} +extension PenNavUI.CampaignTracking { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var campaignId: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var lastNotificationDate: Foundation.Date? { + @objc get + @objc set + } + #endif +} +public protocol PILocationDelegate { + func onLocationOffCampus(location: _LocationEssentials.CLLocationCoordinate2D) + func onLocationMessage(message: PenNavUI.CampaignMessage) +} +extension PenNavUI.PILocationDelegate { + public func onLocationOffCampus(location: _LocationEssentials.CLLocationCoordinate2D) + public func onLocationMessage(message: PenNavUI.CampaignMessage) +} +@_inheritsConvenienceInitializers @objc(CachedVenue) nonisolated public class CachedVenue : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +extension PenNavUI.SharedLocationCacheData { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var edgeId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var floorId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var latitude: Swift.Double { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var longitude: Swift.Double { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var navigationAvoid: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var venueId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var x: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var y: Swift.Int16 { + @objc get + @objc set + } +} +@_inheritsConvenienceInitializers @objc(CampaignTracking) nonisolated public class CampaignTracking : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@_hasMissingDesignatedInitializers public class Campus { + public var id: Swift.Int? + public var name: Swift.String? + public var coverImage: Swift.String? + @objc deinit +} +@_hasMissingDesignatedInitializers final public class CGTextRenderer { + public enum API { + case uiKit + case appKit + public static func == (a: PenNavUI.CGTextRenderer.API, b: PenNavUI.CGTextRenderer.API) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } + @objc deinit +} +extension PenNavUI.CommandLine { + public static func processImage(with config: PenNavUI.CommandLine.Configuration) throws -> Foundation.Data + public static func makeSVGOptions(for config: PenNavUI.CommandLine.Configuration) -> PenNavUI.SVG.Options + #if compiler(>=5.3) && $NonescapableTypes + public static func makeTextAPI(for api: PenNavUI.CommandLine.API?) -> PenNavUI.CGTextRenderer.API + #endif + public static func processImage(_ image: PenNavUI.SVG, with config: PenNavUI.CommandLine.Configuration) throws -> Foundation.Data + public static func makeImageInsets(for insets: PenNavUI.CommandLine.Insets) throws -> PenNavUI.SVG.Insets +} +extension PenNavUI.TagFlowLayout { + public enum LayoutAlignment : Swift.Int { + case left + case center + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } +} +@objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency public class TagFlowLayout : UIKit.UICollectionViewFlowLayout { + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutAttributesForElements(in rect: CoreFoundation.CGRect) -> [UIKit.UICollectionViewLayoutAttributes]? + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var flipsHorizontallyInOppositeLayoutDirection: Swift.Bool { + @objc get + } + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var developmentLayoutDirection: UIKit.UIUserInterfaceLayoutDirection { + @objc get + } + @objc deinit +} +extension PenNavUI.CommandLine { + public struct Configuration { + public var input: Foundation.URL + public var inputUltralight: Foundation.URL? + public var inputBlack: Foundation.URL? + public var output: Foundation.URL + public var format: PenNavUI.CommandLine.Format + public var size: PenNavUI.CommandLine.Size + public var api: PenNavUI.CommandLine.API? + public var insets: PenNavUI.CommandLine.Insets + public var insetsUltralight: PenNavUI.CommandLine.Insets? + public var insetsBlack: PenNavUI.CommandLine.Insets? + public var scale: PenNavUI.CommandLine.Scale + public var options: PenNavUI.SVG.Options + public var precision: Swift.Int? + } + public enum Format : Swift.String { + case jpeg + case pdf + case png + case swift + case sfsymbol + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } + } + public enum API : Swift.String { + case appkit + case uikit + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } + } + public enum Size : Swift.Equatable { + case `default` + case custom(width: Swift.Int, height: Swift.Int) + public static func == (a: PenNavUI.CommandLine.Size, b: PenNavUI.CommandLine.Size) -> Swift.Bool + } + public enum Scale : Swift.Equatable { + case `default` + case retina + case superRetina + public static func == (a: PenNavUI.CommandLine.Scale, b: PenNavUI.CommandLine.Scale) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } + public struct Insets : Swift.Equatable { + public var top: Swift.Double? + public var left: Swift.Double? + public var bottom: Swift.Double? + public var right: Swift.Double? + #if compiler(>=5.3) && $NonescapableTypes + public init(top: Swift.Double? = nil, left: Swift.Double? = nil, bottom: Swift.Double? = nil, right: Swift.Double? = nil) + #endif + public static func == (a: PenNavUI.CommandLine.Insets, b: PenNavUI.CommandLine.Insets) -> Swift.Bool + } + public static func parseConfiguration(from args: [Swift.String], baseDirectory: Foundation.URL) throws -> PenNavUI.CommandLine.Configuration +} +extension UIKit.UISpringTimingParameters { + @_Concurrency.MainActor @preconcurrency convenience public init(decelerationRate: CoreFoundation.CGFloat, frequencyResponse: CoreFoundation.CGFloat, initialVelocity: CoreFoundation.CGVector = .zero) + @_Concurrency.MainActor @preconcurrency convenience public init(dampingRatio: CoreFoundation.CGFloat, frequencyResponse: CoreFoundation.CGFloat, initialVelocity: CoreFoundation.CGVector = .zero) +} +@objc @_inheritsConvenienceInitializers final public class PenNavUIManager : ObjectiveC.NSObject { + public static var shared: PenNavUI.PenNavUIManager + final public var initializationDelegate: (any PenNavUI.PenNavInitializationDelegate)? + final public var eventsDelegate: (any PenNavUI.PIEventsDelegate)? + final public var locationDelegate: (any PenNavUI.PILocationDelegate)? + final public func build() + @discardableResult + final public func setLanguage(_ language: Swift.String) -> PenNavUI.PenNavUIManager + public static func setLanguage(_ language: Swift.String) + @discardableResult + final public func setDeepLinkComponents(scheme: Swift.String, host: Swift.String) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func setDeepLink(_ url: Foundation.URL?) + #endif + @discardableResult + final public func setEnableReportIssue(enable: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setShareLocationCallback(enabled: Swift.Bool) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func navigate(to referenceID: Swift.String, completion: ((Swift.Bool, PenNavUI.PenNavUIError?) -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func getCampusListing(baseURL: Swift.String, serviceName: Swift.String, clientID: Swift.String, clientKey: Swift.String, completion: @escaping ([PenNavUI.Campus]?) -> ()) + #endif + final public func setAppColor(color: UIKit.UIColor) -> PenNavUI.PenNavUIManager + public static func getVersion() -> Swift.String + final public func present(root: UIKit.UIViewController, view: UIKit.UIView) + final public func dismiss() + @discardableResult + final public func setClientKey(_ key: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setClientID(_ ID: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setUsername(_ userID: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setServiceName(dataServiceName: Swift.String, positionServiceName: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setBaseURL(dataURL: Swift.String, positionURL: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setIsShowUserName(_ isShowUserName: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setBackButtonVisibility(visible: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setDebugOptionsVisibility(visible: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setCampusID(_ campusID: Swift.Int) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setIsUpdateUserLocationSmoothly(_ isUpdateUserLocationSmoothly: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setOutdoorEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setSimulationModeEnabled(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setStepDetectionEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setTransitionEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setGeographicCoordinateEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func getToken(clientID: Swift.String, clientKey: Swift.String, showProgress: Swift.Bool, completion: @escaping (Swift.String?, Penguin.ErrorCode?) -> Swift.Void) + #endif + final public func setToken(token: Swift.String) + final public func clearDatabase() + #if compiler(>=5.3) && $NonescapableTypes + final public func getVersion() -> Swift.String? + #endif + @objc override dynamic public init() + @objc deinit +} +extension PenNavUI.PenNavUIManager : CoreLocation.CLLocationManagerDelegate { + @objc final public func locationManagerDidChangeAuthorization(_ manager: CoreLocation.CLLocationManager) + @objc final public func locationManager(_ manager: CoreLocation.CLLocationManager, didChangeAuthorization status: CoreLocation.CLAuthorizationStatus) +} +extension PenNavUI.PenNavUIManager : Penguin.PIInitializerDelegate { + @objc final public func onReady(warning: Penguin.WarningCode) + @objc final public func onInitilzationError(error: Penguin.ErrorCode) + @objc final public func onInitializationProgressChange(status: Penguin.SDKOperation) +} +public enum DOM { +} +extension PenNavUI.DOM { + public typealias Float = Swift.Float + public typealias Coordinate = Swift.Float + public typealias Length = Swift.Int + public typealias Opacity = Swift.Float + public typealias Bool = Swift.Bool + public typealias URL = Foundation.URL +} +extension PenNavUI.PenNavStyle { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var type: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var value: Foundation.Data? { + @objc get + @objc set + } + #endif +} +public enum CommandLine { +} +@objc public protocol FloatingPanelBehavior { + @objc optional var springDecelerationRate: CoreFoundation.CGFloat { get } + @objc optional var springResponseTime: CoreFoundation.CGFloat { get } + @objc optional var momentumProjectionRate: CoreFoundation.CGFloat { get } + @objc optional func shouldProjectMomentum(_ fpc: PenNavUI.FloatingPanelController, to proposedState: PenNavUI.FloatingPanelState) -> Swift.Bool + @objc optional func redirectionalProgress(_ fpc: PenNavUI.FloatingPanelController, from: PenNavUI.FloatingPanelState, to: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc optional func allowsRubberBanding(for edge: UIUtilities.UIRectEdge) -> Swift.Bool + @objc optional var removalInteractionVelocityThreshold: CoreFoundation.CGFloat { get } +} +open class FloatingPanelDefaultBehavior : PenNavUI.FloatingPanelBehavior { + public init() + @objc open var springDecelerationRate: CoreFoundation.CGFloat { + @objc get + } + @objc open var springResponseTime: CoreFoundation.CGFloat { + @objc get + } + @objc open var momentumProjectionRate: CoreFoundation.CGFloat { + @objc get + } + @objc open func redirectionalProgress(_ fpc: PenNavUI.FloatingPanelController, from: PenNavUI.FloatingPanelState, to: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc open func allowsRubberBanding(for edge: UIUtilities.UIRectEdge) -> Swift.Bool + @objc open var removalInteractionVelocityThreshold: CoreFoundation.CGFloat + @objc deinit +} +public enum IssueType { + case poi + case venue + case location + case navigation + public static func == (a: PenNavUI.IssueType, b: PenNavUI.IssueType) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } +} +extension _LocationEssentials.CLLocationCoordinate2D : Swift.Codable { + public init(from decoder: any Swift.Decoder) throws + public func encode(to encoder: any Swift.Encoder) throws +} +@_inheritsConvenienceInitializers @objc(FavoriteCacheData) nonisolated public class FavoriteCacheData : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@objc public enum FloatingPanelReferenceEdge : Swift.Int { + case top + case left + case bottom + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@objc public enum FloatingPanelLayoutReferenceGuide : Swift.Int { + case superview = 0 + case safeArea = 1 + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@objc public enum FloatingPanelLayoutContentBoundingGuide : Swift.Int { + case none = 0 + case superview = 1 + case safeArea = 2 + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension PenNavUI.CommandLine { + public enum Error : Swift.Error { + case invalid + case unsupported + case fileNotFound + public static func == (a: PenNavUI.CommandLine.Error, b: PenNavUI.CommandLine.Error) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } +} +public protocol PIEventsDelegate { + func onBackButtonPressed() + func onPenNavUIDismiss() + func onReportIssue(_ issue: PenNavUI.IssueType) + #if compiler(>=5.3) && $NonescapableTypes + func onShareLocation(link: Swift.String?) + #endif + func onSwitchCampus(campusId: Swift.Int) +} +extension PenNavUI.PIEventsDelegate { + public func onBackButtonPressed() + public func onPenNavUIDismiss() + public func onReportIssue(_ issue: PenNavUI.IssueType) + #if compiler(>=5.3) && $NonescapableTypes + public func onShareLocation(link: Swift.String?) + #endif + public func onSwitchCampus(campusId: Swift.Int) +} +@_inheritsConvenienceInitializers @objc(PenNavUITableUpdate) nonisolated public class PenNavUITableUpdate : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +public struct SFSymbolRenderer { + public init(options: PenNavUI.SVG.Options, insets: PenNavUI.CommandLine.Insets, insetsUltralight: PenNavUI.CommandLine.Insets, insetsBlack: PenNavUI.CommandLine.Insets, precision: Swift.Int) + #if compiler(>=5.3) && $NonescapableTypes + public func render(regular: Foundation.URL, ultralight: Foundation.URL?, black: Foundation.URL?) throws -> Swift.String + #endif +} +@_inheritsConvenienceInitializers @objc(PenNavStyle) nonisolated public class PenNavStyle : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +public struct GeofenceConfiguration { + #if compiler(>=5.3) && $NonescapableTypes + public init(baseURL: Swift.String, serviceName: Swift.String, clientId: Swift.String, clientKey: Swift.String, campusId: Swift.Int? = nil) + #endif +} +public struct CampaignMessage { + public var title: Swift.String + public var description: Swift.String +} +extension UIKit.UIImage { + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(svgNamed name: Swift.String, in bundle: Foundation.Bundle = .main, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(initWithSVGData:) convenience dynamic public init?(svgData: Foundation.Data) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(initWithContentsOfSVGFile:) convenience dynamic public init?(contentsOfSVGFile path: Swift.String) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(svgNamed:) public static func _svgNamed(_ name: Swift.String) -> UIKit.UIImage? + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(svgNamed:inBundle:) public static func _svgNamed(_ name: Swift.String, in bundle: Foundation.Bundle) -> UIKit.UIImage? + #endif + convenience public init(_ image: PenNavUI.SVG) +} +extension PenNavUI.SVG { + final public func rasterize() -> UIKit.UIImage + #if compiler(>=5.3) && $NonescapableTypes + final public func rasterize(with size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, insets: UIKit.UIEdgeInsets = .zero) -> UIKit.UIImage + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func pngData(size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, insets: UIKit.UIEdgeInsets = .zero) throws -> Foundation.Data + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func jpegData(size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, compressionQuality quality: CoreFoundation.CGFloat = 1, insets: UIKit.UIEdgeInsets = .zero) throws -> Foundation.Data + #endif +} +public protocol PenNavInitializationDelegate { + func onPenNavInitializationSuccess() + func onPenNavInitializationError(errorType: PenNavUI.PenNavUIError, errorDescription: Swift.String) +} +extension Penguin.GateNodeModel : Penguin.NodeRepresentable { + final public var isUpEscalator: Swift.Bool { + get + } + final public var isDownEscalator: Swift.Bool { + get + } +} +@_inheritsConvenienceInitializers @objc(SharedLocationCacheData) nonisolated public class SharedLocationCacheData : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@objc open class FloatingPanelState : ObjectiveC.NSObject, Foundation.NSCopying, Swift.RawRepresentable { + public typealias RawValue = Swift.String + #if compiler(>=5.3) && $NonescapableTypes + required public init?(rawValue: PenNavUI.FloatingPanelState.RawValue) + #endif + @objc public init(rawValue: PenNavUI.FloatingPanelState.RawValue, order: Swift.Int) + final public let rawValue: PenNavUI.FloatingPanelState.RawValue + final public let order: Swift.Int + #if compiler(>=5.3) && $NonescapableTypes + @objc public func copy(with zone: ObjectiveC.NSZone? = nil) -> Any + #endif + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc override dynamic public var debugDescription: Swift.String { + @objc get + } + @objc(Full) public static let full: PenNavUI.FloatingPanelState + @objc(Half) public static let half: PenNavUI.FloatingPanelState + @objc(Tip) public static let tip: PenNavUI.FloatingPanelState + @objc(Hidden) public static let hidden: PenNavUI.FloatingPanelState + @objc deinit +} +@objc @_inheritsConvenienceInitializers public class AsynchronousOperation : Foundation.Operation { + @objc override dynamic public var isAsynchronous: Swift.Bool { + @objc get + } + @objc override dynamic public var isExecuting: Swift.Bool { + @objc get + } + @objc override dynamic public var isFinished: Swift.Bool { + @objc get + } + public func completeOperation() + @objc override dynamic public func start() + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @objc(FloatingPanelSurfaceAppearance) @objcMembers public class SurfaceAppearance : ObjectiveC.NSObject { + @_inheritsConvenienceInitializers @objc(FloatingPanelSurfaceAppearanceShadow) public class Shadow : ObjectiveC.NSObject { + @objc public var hidden: Swift.Bool + @objc public var color: UIKit.UIColor + @objc public var offset: CoreFoundation.CGSize + @objc public var opacity: Swift.Float + @objc public var radius: CoreFoundation.CGFloat + @objc public var spread: CoreFoundation.CGFloat + @objc override dynamic public init() + @objc deinit + } + @objc public var backgroundColor: UIKit.UIColor? + @objc public var cornerRadius: CoreFoundation.CGFloat + @objc @available(iOS 13.0, *) + public var cornerCurve: QuartzCore.CALayerCornerCurve { + @objc get + @objc set + } + @objc public var shadows: [PenNavUI.SurfaceAppearance.Shadow] + @objc public var borderColor: UIKit.UIColor? + @objc public var borderWidth: CoreFoundation.CGFloat + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc(FloatingPanelSurfaceView) @objcMembers @_Concurrency.MainActor @preconcurrency public class SurfaceView : UIKit.UIView { + @objc @_Concurrency.MainActor @preconcurrency final public let grabberHandle: PenNavUI.GrabberView + @objc @_Concurrency.MainActor @preconcurrency public var grabberHandlePadding: CoreFoundation.CGFloat { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var grabberAreaOffset: CoreFoundation.CGFloat + @objc @_Concurrency.MainActor @preconcurrency public var grabberHandleSize: CoreFoundation.CGSize { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency weak public var contentView: UIKit.UIView? + @objc @_Concurrency.MainActor @preconcurrency public var contentPadding: UIKit.UIEdgeInsets { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var backgroundColor: UIKit.UIColor? { + @objc get + @objc set + } + #endif + @objc @_Concurrency.MainActor @preconcurrency public var appearance: PenNavUI.SurfaceAppearance { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var containerMargins: UIKit.UIEdgeInsets { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency final public let containerView: UIKit.UIView + @_Concurrency.MainActor @preconcurrency @objc override dynamic public class var requiresConstraintBasedLayout: Swift.Bool { + @objc get + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func updateConstraints() + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutSubviews() + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var intrinsicContentSize: CoreFoundation.CGSize { + @objc get + } + @objc deinit +} +extension Penguin.Gnode : Penguin.NodeRepresentable { + final public var isUpEscalator: Swift.Bool { + get + } + final public var isDownEscalator: Swift.Bool { + get + } +} +public enum PenNavUIError : Swift.String, Foundation.LocalizedError { + case missingBaseUrl + case missingDataServiceName + case missingPositionServiceName + case missingRootController + case missingViewContainer + case missingClientId + case missingClientName + case invalidClientKey + case unauthorized + case noInternetConnection + case bluetoothTurnedOff + case locationServicesTurnedOff + case loadingDataError + case osNotSupported + case permissionsNotGranted + case sensorsInitializationError + case unknownError + case locationPermissionNotGranted + case bluetoothPermissionNotGranted + case invalidCampusId + case noCampusListFound + case buildCancelled + public var errorDescription: Swift.String { + get + } + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } +} +public enum ValidationError : Swift.Error { + case noClientID + case noClientNameKey + case noServiesName + case noBaseUrl + case missingFonts + public static func == (a: PenNavUI.ValidationError, b: PenNavUI.ValidationError) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } +} +@objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency final public class FloatingPanelPanGestureRecognizer : UIKit.UIPanGestureRecognizer { + @_Concurrency.MainActor @preconcurrency @objc override final public func touchesBegan(_ touches: Swift.Set, with event: UIKit.UIEvent) + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override weak final public var delegate: (any UIKit.UIGestureRecognizerDelegate)? { + @objc get + @objc set + } + #endif + @_Concurrency.MainActor @preconcurrency final public var delegateOrigin: any UIKit.UIGestureRecognizerDelegate { + get + } + @_Concurrency.MainActor @preconcurrency weak final public var delegateProxy: (any UIKit.UIGestureRecognizerDelegate)? { + get + set + } + @objc deinit +} +extension PenNavUI.CachedVenue { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var id: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var coverImage: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var address: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var buildingNumber: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var phone: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var email: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var website: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var floorCount: Swift.Int16 { + @objc get + @objc set + } +} +@_hasMissingDesignatedInitializers @objc(FloatingPanelGrabberView) @_Concurrency.MainActor @preconcurrency public class GrabberView : UIKit.UIView { + @_Concurrency.MainActor @preconcurrency public var barColor: UIKit.UIColor { + get + set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutSubviews() + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func hitTest(_ point: CoreFoundation.CGPoint, with event: UIKit.UIEvent?) -> UIKit.UIView? + #endif + @objc deinit +} +@objc public enum FloatingPanelPosition : Swift.Int { + case top + case left + case bottom + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension PenNavUI.FavoriteCacheData { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var createDate: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var deviceId: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var type: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var distance: Swift.Double { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var id: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var label: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var poiId: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var userName: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var location: PenNavUI.SharedLocationCacheData? { + @objc get + @objc set + } + #endif +} +@objc public protocol FloatingPanelLayoutAnchoring { + @objc var referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide { get } + @objc func layoutConstraints(_ fpc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteInset: CoreFoundation.CGFloat, edge: PenNavUI.FloatingPanelReferenceEdge, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide) + @objc public init(fractionalInset: CoreFoundation.CGFloat, edge: PenNavUI.FloatingPanelReferenceEdge, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc deinit +} +extension PenNavUI.FloatingPanelLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelIntrinsicLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteOffset offset: CoreFoundation.CGFloat, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide = .safeArea) + @objc public init(fractionalOffset offset: CoreFoundation.CGFloat, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide = .safeArea) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc deinit +} +extension PenNavUI.FloatingPanelIntrinsicLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelAdaptiveLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteOffset offset: CoreFoundation.CGFloat, contentLayout: UIKit.UILayoutGuide, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide, contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide = .none) + @objc public init(fractionalOffset offset: CoreFoundation.CGFloat, contentLayout: UIKit.UILayoutGuide, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide, contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide = .none) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc final public let contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide + @objc deinit +} +extension PenNavUI.FloatingPanelAdaptiveLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@_hasMissingDesignatedInitializers public class ImageCache { + #if compiler(>=5.3) && $NonescapableTypes + public func getImage(_ url: Foundation.URL, completion: @escaping (UIKit.UIImage?) -> Swift.Void) + #endif + #if compiler(>=5.3) && $NonescapableTypes + public func getImageFromDocuments(url: Foundation.URL) -> UIKit.UIImage? + #endif + @objc deinit +} +extension PenNavUI.ImageCache { + #if compiler(>=5.3) && $NonescapableTypes + public func getSVG(withURL url: Foundation.URL, completion: @escaping (UIKit.UIImage?) -> Swift.Void) + #endif +} +extension PenNavUI.PenNavUITableUpdate { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var lastUpdateTime: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var tableName: Swift.String? { + @objc get + @objc set + } + #endif +} +extension CoreGraphics.CGContext { + #if compiler(>=5.3) && $NonescapableTypes + public func draw(_ image: PenNavUI.SVG, in rect: CoreFoundation.CGRect? = nil) + #endif +} +extension PenNavUI.SVG { + #if compiler(>=5.3) && $NonescapableTypes + final public func pdfData(size: CoreFoundation.CGSize? = nil, insets: PenNavUI.SVG.Insets = .zero) throws -> Foundation.Data + #endif +} +public struct SVGRenderer { + public static func makeExpanded(path: Swift.String, transform: Swift.String, precision: Swift.Int = 4) throws -> Swift.String +} +@_hasMissingDesignatedInitializers @objc(SVGImage) final public class SVG : ObjectiveC.NSObject { + final public let size: CoreFoundation.CGSize + public struct Options : Swift.OptionSet { + public let rawValue: Swift.Int + public init(rawValue: Swift.Int) + public static let hideUnsupportedFilters: PenNavUI.SVG.Options + public static let `default`: PenNavUI.SVG.Options + public typealias ArrayLiteralElement = PenNavUI.SVG.Options + public typealias Element = PenNavUI.SVG.Options + public typealias RawValue = Swift.Int + } + @objc deinit +} +@available(*, deprecated, renamed: "SVG") +public typealias Image = PenNavUI.SVG +extension PenNavUI.SVG { + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(fileURL url: Foundation.URL, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(named name: Swift.String, in bundle: Foundation.Bundle = Bundle.main, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(data: Foundation.Data, options: PenNavUI.SVG.Options = .default) + #endif + public struct Insets : Swift.Equatable { + public var top: CoreFoundation.CGFloat + public var left: CoreFoundation.CGFloat + public var bottom: CoreFoundation.CGFloat + public var right: CoreFoundation.CGFloat + public static let zero: PenNavUI.SVG.Insets + public static func == (a: PenNavUI.SVG.Insets, b: PenNavUI.SVG.Insets) -> Swift.Bool + } +} +@objc public protocol FloatingPanelControllerDelegate { + @objc(floatingPanel:layoutForTraitCollection:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, layoutFor newCollection: UIKit.UITraitCollection) -> any PenNavUI.FloatingPanelLayout + @objc(floatingPanel:layoutForSize:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, layoutFor size: CoreFoundation.CGSize) -> any PenNavUI.FloatingPanelLayout + @objc(floatingPanel:animatorForPresentingToState:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, animatorForPresentingTo state: PenNavUI.FloatingPanelState) -> UIKit.UIViewPropertyAnimator + @objc(floatingPanel:animatorForDismissingWithVelocity:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, animatorForDismissingWith velocity: CoreFoundation.CGVector) -> UIKit.UIViewPropertyAnimator + @objc optional func floatingPanelDidChangeState(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelShouldBeginDragging(_ fpc: PenNavUI.FloatingPanelController) -> Swift.Bool + @objc optional func floatingPanelDidMove(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelWillBeginDragging(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelWillEndDragging(_ fpc: PenNavUI.FloatingPanelController, withVelocity velocity: CoreFoundation.CGPoint, targetState: Swift.UnsafeMutablePointer) + @objc optional func floatingPanelDidEndDragging(_ fpc: PenNavUI.FloatingPanelController, willAttract attract: Swift.Bool) + @objc optional func floatingPanelWillBeginAttracting(_ fpc: PenNavUI.FloatingPanelController, to state: PenNavUI.FloatingPanelState) + @objc optional func floatingPanelDidEndAttracting(_ fpc: PenNavUI.FloatingPanelController) + @objc(floatingPanel:shouldRemoveAtLocation:withVelocity:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, shouldRemoveAt location: CoreFoundation.CGPoint, with velocity: CoreFoundation.CGVector) -> Swift.Bool + @objc(floatingPanelWillRemove:) optional func floatingPanelWillRemove(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelDidRemove(_ fpc: PenNavUI.FloatingPanelController) + @objc(floatingPanel:contentOffsetForPinningScrollView:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, contentOffsetForPinning trackingScrollView: UIKit.UIScrollView) -> CoreFoundation.CGPoint + @objc(floatingPanel:shouldAllowToScroll:in:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, shouldAllowToScroll scrollView: UIKit.UIScrollView, in state: PenNavUI.FloatingPanelState) -> Swift.Bool +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc @_Concurrency.MainActor @preconcurrency open class FloatingPanelController : UIKit.UIViewController { + @objc public enum ContentInsetAdjustmentBehavior : Swift.Int { + case always + case never + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc public enum ContentMode : Swift.Int { + case `static` + case fitToBounds + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc @_Concurrency.MainActor @preconcurrency weak public var delegate: (any PenNavUI.FloatingPanelControllerDelegate)? { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var surfaceView: PenNavUI.SurfaceView! { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var backdropView: PenNavUI.BackdropView! { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency weak public var trackingScrollView: UIKit.UIScrollView? { + @objc get + } + #endif + @objc @_Concurrency.MainActor @preconcurrency public var panGestureRecognizer: PenNavUI.FloatingPanelPanGestureRecognizer { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var state: PenNavUI.FloatingPanelState { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var isAttracting: Swift.Bool { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var layout: any PenNavUI.FloatingPanelLayout { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var behavior: any PenNavUI.FloatingPanelBehavior { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var adjustedContentInsets: UIKit.UIEdgeInsets { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var contentInsetAdjustmentBehavior: PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior + @objc @_Concurrency.MainActor @preconcurrency public var isRemovalInteractionEnabled: Swift.Bool { + @objc(isRemovalInteractionEnabled) get + @objc(setRemovalInteractionEnabled:) set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var contentViewController: UIKit.UIViewController? { + @objc get + @objc set + } + #endif + @_Concurrency.MainActor @preconcurrency public var nearbyState: PenNavUI.FloatingPanelState { + get + } + @objc @_Concurrency.MainActor @preconcurrency public var contentMode: PenNavUI.FloatingPanelController.ContentMode { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public init(delegate: (any PenNavUI.FloatingPanelControllerDelegate)? = nil) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func loadView() + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewDidLayoutSubviews() + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewDidAppear(_ animated: Swift.Bool) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewWillTransition(to size: CoreFoundation.CGSize, with coordinator: any UIKit.UIViewControllerTransitionCoordinator) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func willTransition(to newCollection: UIKit.UITraitCollection, with coordinator: any UIKit.UIViewControllerTransitionCoordinator) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewWillDisappear(_ animated: Swift.Bool) + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForStatusBarStyle: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForStatusBarHidden: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForScreenEdgesDeferringSystemGestures: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForHomeIndicatorAutoHidden: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(show:completion:) @_Concurrency.MainActor @preconcurrency public func show(animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(hide:completion:) @_Concurrency.MainActor @preconcurrency public func hide(animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(addPanelToParent:at:animated:completion:) @_Concurrency.MainActor @preconcurrency public func addPanel(toParent parent: UIKit.UIViewController, at viewIndex: Swift.Int = -1, animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(removePanelFromParent:completion:) @_Concurrency.MainActor @preconcurrency public func removePanelFromParent(animated: Swift.Bool, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(moveToState:animated:completion:) @_Concurrency.MainActor @preconcurrency public func move(to: PenNavUI.FloatingPanelState, animated: Swift.Bool, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency public func set(contentViewController: UIKit.UIViewController?) + #endif + @objc(trackScrollView:) @_Concurrency.MainActor @preconcurrency public func track(scrollView: UIKit.UIScrollView) + @_Concurrency.MainActor @preconcurrency public func followScrollViewBouncing() + @objc(untrackScrollView:) @_Concurrency.MainActor @preconcurrency public func untrack(scrollView: UIKit.UIScrollView) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func accessibilityPerformEscape() -> Swift.Bool + @objc @_Concurrency.MainActor @preconcurrency public func invalidateLayout() + @objc @_Concurrency.MainActor @preconcurrency public func surfaceLocation(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGPoint + @objc @_Concurrency.MainActor @preconcurrency public var surfaceLocation: CoreFoundation.CGPoint { + @objc get + @objc set + } + @_Concurrency.MainActor @preconcurrency public func addTopPadding(padding: CoreFoundation.CGFloat) + @objc deinit +} +@_hasMissingDesignatedInitializers @objc(FloatingPanelBackdropView) @_Concurrency.MainActor @preconcurrency public class BackdropView : UIKit.UIView { + @objc @_Concurrency.MainActor @preconcurrency public var dismissalTapGestureRecognizer: UIKit.UITapGestureRecognizer + @objc deinit +} +@_hasMissingDesignatedInitializers public class NetworkMonitor { + @objc deinit +} +public enum GeofenceError : Swift.Error, Foundation.LocalizedError { + case permissionDenied + case errorInConfiguration + case authenticationFailed + case indoorDeloymentOnly + case geofenceConfigurationsMissing + case geofenceSDKNotStarted + case geofenceSDKAlreadyStarted + case sdkError(Swift.String) + #if compiler(>=5.3) && $NonescapableTypes + public var errorDescription: Swift.String? { + get + } + #endif +} +public protocol PIGeofenceManagerDelegate { + func geofenceStarted() + #if compiler(>=5.3) && $NonescapableTypes + func geofenceFailedToStart(_ error: Swift.String?) + #endif + func geofenceStopped() + func geofenceUpdated() +} +@objc @_inheritsConvenienceInitializers public class PIGeofenceManager : ObjectiveC.NSObject { + public static var shared: PenNavUI.PIGeofenceManager { + get + } + public func initializeLocationManager() + public func setGeofenceSDKConfigurations(_ configurations: PenNavUI.GeofenceConfiguration) + public func setGeofenceDelegate(delegate: any PenNavUI.PIGeofenceManagerDelegate) + public func startGeofencing(delegate: any PenNavUI.PIGeofenceManagerDelegate) + public func stopGeofencing() + public func updateGeofencing() + @objc override dynamic public init() + @objc deinit +} +extension PenNavUI.PIGeofenceManager : CoreLocation.CLLocationManagerDelegate { + @objc dynamic public func locationManager(_ manager: CoreLocation.CLLocationManager, didChangeAuthorization status: CoreLocation.CLAuthorizationStatus) +} +extension PenNavUI.PIGeofenceManager { + @objc dynamic public func locationManager(_ manager: CoreLocation.CLLocationManager, didEnterRegion region: CoreLocation.CLRegion) +} +extension PenNavUI.CGTextRenderer { + public typealias Size = (width: Swift.Int, height: Swift.Int) + #if compiler(>=5.3) && $NonescapableTypes + public static func render(named name: Swift.String, in bundle: Foundation.Bundle = Bundle.main, size: PenNavUI.CGTextRenderer.Size? = nil, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + #endif + #if compiler(>=5.3) && $NonescapableTypes + public static func render(fileURL: Foundation.URL, size: PenNavUI.CGTextRenderer.Size? = nil, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + #endif + public static func render(data: Foundation.Data, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + public static func renderPath(from svgPath: Swift.String) throws -> Swift.String +} +extension PenNavUI.CGTextRenderer.API : Swift.Equatable {} +extension PenNavUI.CGTextRenderer.API : Swift.Hashable {} +extension PenNavUI.CommandLine.Scale : Swift.Hashable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.Equatable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.Hashable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.Format : Swift.Equatable {} +extension PenNavUI.CommandLine.Format : Swift.Hashable {} +extension PenNavUI.CommandLine.Format : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.API : Swift.Equatable {} +extension PenNavUI.CommandLine.API : Swift.Hashable {} +extension PenNavUI.CommandLine.API : Swift.RawRepresentable {} +extension PenNavUI.IssueType : Swift.Equatable {} +extension PenNavUI.IssueType : Swift.Hashable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.Equatable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.Hashable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.Equatable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.Hashable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.Equatable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.Hashable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.Error : Swift.Equatable {} +extension PenNavUI.CommandLine.Error : Swift.Hashable {} +extension PenNavUI.PenNavUIError : Swift.Equatable {} +extension PenNavUI.PenNavUIError : Swift.Hashable {} +extension PenNavUI.PenNavUIError : Swift.RawRepresentable {} +extension PenNavUI.ValidationError : Swift.Equatable {} +extension PenNavUI.ValidationError : Swift.Hashable {} +extension PenNavUI.FloatingPanelPosition : Swift.Equatable {} +extension PenNavUI.FloatingPanelPosition : Swift.Hashable {} +extension PenNavUI.FloatingPanelPosition : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.Equatable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.Hashable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.Equatable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.Hashable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.RawRepresentable {} diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.swiftdoc b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.swiftdoc new file mode 100644 index 00000000..7c271353 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.swiftdoc differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.swiftinterface b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.swiftinterface new file mode 100644 index 00000000..8bea02d2 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.swiftinterface @@ -0,0 +1,1211 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1) +// swift-module-flags: -target arm64-apple-ios13.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name PenNavUI +// swift-module-flags-ignorable: -no-verify-emitted-module-interface -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2 +import AVFoundation +import CoreData +import CoreGraphics +import CoreHaptics +import CoreLocation +import CoreText +import CryptoKit +import Darwin +import DeveloperToolsSupport +import Foundation +import LinkPresentation +import MapKit +import MessageUI +import Network +@_exported import PenNavUI +import Penguin +import PenguinINRenderer +import QuartzCore +import SafariServices +import Swift +import SwiftUI +import SystemConfiguration +import UIKit +import UserNotifications +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +import os.log +import os +@objc public protocol FloatingPanelLayout { + @objc var position: PenNavUI.FloatingPanelPosition { get } + @objc var initialState: PenNavUI.FloatingPanelState { get } + @objc var anchors: [PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring] { get } + @objc optional func prepareLayout(surfaceView: UIKit.UIView, in view: UIKit.UIView) -> [UIKit.NSLayoutConstraint] + @objc optional func backdropAlpha(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat +} +@objc @_inheritsConvenienceInitializers @objcMembers open class FloatingPanelBottomLayout : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayout { + @objc override dynamic public init() + @objc open var initialState: PenNavUI.FloatingPanelState { + @objc get + } + @objc open var anchors: [PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring] { + @objc get + } + @objc open var position: PenNavUI.FloatingPanelPosition { + @objc get + } + @objc open func prepareLayout(surfaceView: UIKit.UIView, in view: UIKit.UIView) -> [UIKit.NSLayoutConstraint] + @objc open func backdropAlpha(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc deinit +} +extension PenNavUI.CampaignTracking { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var campaignId: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var lastNotificationDate: Foundation.Date? { + @objc get + @objc set + } + #endif +} +public protocol PILocationDelegate { + func onLocationOffCampus(location: _LocationEssentials.CLLocationCoordinate2D) + func onLocationMessage(message: PenNavUI.CampaignMessage) +} +extension PenNavUI.PILocationDelegate { + public func onLocationOffCampus(location: _LocationEssentials.CLLocationCoordinate2D) + public func onLocationMessage(message: PenNavUI.CampaignMessage) +} +@_inheritsConvenienceInitializers @objc(CachedVenue) nonisolated public class CachedVenue : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +extension PenNavUI.SharedLocationCacheData { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var edgeId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var floorId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var latitude: Swift.Double { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var longitude: Swift.Double { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var navigationAvoid: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var venueId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var x: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var y: Swift.Int16 { + @objc get + @objc set + } +} +@_inheritsConvenienceInitializers @objc(CampaignTracking) nonisolated public class CampaignTracking : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@_hasMissingDesignatedInitializers public class Campus { + public var id: Swift.Int? + public var name: Swift.String? + public var coverImage: Swift.String? + @objc deinit +} +@_hasMissingDesignatedInitializers final public class CGTextRenderer { + public enum API { + case uiKit + case appKit + public static func == (a: PenNavUI.CGTextRenderer.API, b: PenNavUI.CGTextRenderer.API) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } + @objc deinit +} +extension PenNavUI.CommandLine { + public static func processImage(with config: PenNavUI.CommandLine.Configuration) throws -> Foundation.Data + public static func makeSVGOptions(for config: PenNavUI.CommandLine.Configuration) -> PenNavUI.SVG.Options + #if compiler(>=5.3) && $NonescapableTypes + public static func makeTextAPI(for api: PenNavUI.CommandLine.API?) -> PenNavUI.CGTextRenderer.API + #endif + public static func processImage(_ image: PenNavUI.SVG, with config: PenNavUI.CommandLine.Configuration) throws -> Foundation.Data + public static func makeImageInsets(for insets: PenNavUI.CommandLine.Insets) throws -> PenNavUI.SVG.Insets +} +extension PenNavUI.TagFlowLayout { + public enum LayoutAlignment : Swift.Int { + case left + case center + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } +} +@objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency public class TagFlowLayout : UIKit.UICollectionViewFlowLayout { + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutAttributesForElements(in rect: CoreFoundation.CGRect) -> [UIKit.UICollectionViewLayoutAttributes]? + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var flipsHorizontallyInOppositeLayoutDirection: Swift.Bool { + @objc get + } + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var developmentLayoutDirection: UIKit.UIUserInterfaceLayoutDirection { + @objc get + } + @objc deinit +} +extension PenNavUI.CommandLine { + public struct Configuration { + public var input: Foundation.URL + public var inputUltralight: Foundation.URL? + public var inputBlack: Foundation.URL? + public var output: Foundation.URL + public var format: PenNavUI.CommandLine.Format + public var size: PenNavUI.CommandLine.Size + public var api: PenNavUI.CommandLine.API? + public var insets: PenNavUI.CommandLine.Insets + public var insetsUltralight: PenNavUI.CommandLine.Insets? + public var insetsBlack: PenNavUI.CommandLine.Insets? + public var scale: PenNavUI.CommandLine.Scale + public var options: PenNavUI.SVG.Options + public var precision: Swift.Int? + } + public enum Format : Swift.String { + case jpeg + case pdf + case png + case swift + case sfsymbol + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } + } + public enum API : Swift.String { + case appkit + case uikit + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } + } + public enum Size : Swift.Equatable { + case `default` + case custom(width: Swift.Int, height: Swift.Int) + public static func == (a: PenNavUI.CommandLine.Size, b: PenNavUI.CommandLine.Size) -> Swift.Bool + } + public enum Scale : Swift.Equatable { + case `default` + case retina + case superRetina + public static func == (a: PenNavUI.CommandLine.Scale, b: PenNavUI.CommandLine.Scale) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } + public struct Insets : Swift.Equatable { + public var top: Swift.Double? + public var left: Swift.Double? + public var bottom: Swift.Double? + public var right: Swift.Double? + #if compiler(>=5.3) && $NonescapableTypes + public init(top: Swift.Double? = nil, left: Swift.Double? = nil, bottom: Swift.Double? = nil, right: Swift.Double? = nil) + #endif + public static func == (a: PenNavUI.CommandLine.Insets, b: PenNavUI.CommandLine.Insets) -> Swift.Bool + } + public static func parseConfiguration(from args: [Swift.String], baseDirectory: Foundation.URL) throws -> PenNavUI.CommandLine.Configuration +} +extension UIKit.UISpringTimingParameters { + @_Concurrency.MainActor @preconcurrency convenience public init(decelerationRate: CoreFoundation.CGFloat, frequencyResponse: CoreFoundation.CGFloat, initialVelocity: CoreFoundation.CGVector = .zero) + @_Concurrency.MainActor @preconcurrency convenience public init(dampingRatio: CoreFoundation.CGFloat, frequencyResponse: CoreFoundation.CGFloat, initialVelocity: CoreFoundation.CGVector = .zero) +} +@objc @_inheritsConvenienceInitializers final public class PenNavUIManager : ObjectiveC.NSObject { + public static var shared: PenNavUI.PenNavUIManager + final public var initializationDelegate: (any PenNavUI.PenNavInitializationDelegate)? + final public var eventsDelegate: (any PenNavUI.PIEventsDelegate)? + final public var locationDelegate: (any PenNavUI.PILocationDelegate)? + final public func build() + @discardableResult + final public func setLanguage(_ language: Swift.String) -> PenNavUI.PenNavUIManager + public static func setLanguage(_ language: Swift.String) + @discardableResult + final public func setDeepLinkComponents(scheme: Swift.String, host: Swift.String) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func setDeepLink(_ url: Foundation.URL?) + #endif + @discardableResult + final public func setEnableReportIssue(enable: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setShareLocationCallback(enabled: Swift.Bool) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func navigate(to referenceID: Swift.String, completion: ((Swift.Bool, PenNavUI.PenNavUIError?) -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func getCampusListing(baseURL: Swift.String, serviceName: Swift.String, clientID: Swift.String, clientKey: Swift.String, completion: @escaping ([PenNavUI.Campus]?) -> ()) + #endif + final public func setAppColor(color: UIKit.UIColor) -> PenNavUI.PenNavUIManager + public static func getVersion() -> Swift.String + final public func present(root: UIKit.UIViewController, view: UIKit.UIView) + final public func dismiss() + @discardableResult + final public func setClientKey(_ key: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setClientID(_ ID: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setUsername(_ userID: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setServiceName(dataServiceName: Swift.String, positionServiceName: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setBaseURL(dataURL: Swift.String, positionURL: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setIsShowUserName(_ isShowUserName: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setBackButtonVisibility(visible: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setDebugOptionsVisibility(visible: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setCampusID(_ campusID: Swift.Int) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setIsUpdateUserLocationSmoothly(_ isUpdateUserLocationSmoothly: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setOutdoorEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setSimulationModeEnabled(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setStepDetectionEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setTransitionEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setGeographicCoordinateEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func getToken(clientID: Swift.String, clientKey: Swift.String, showProgress: Swift.Bool, completion: @escaping (Swift.String?, Penguin.ErrorCode?) -> Swift.Void) + #endif + final public func setToken(token: Swift.String) + final public func clearDatabase() + #if compiler(>=5.3) && $NonescapableTypes + final public func getVersion() -> Swift.String? + #endif + @objc override dynamic public init() + @objc deinit +} +extension PenNavUI.PenNavUIManager : CoreLocation.CLLocationManagerDelegate { + @objc final public func locationManagerDidChangeAuthorization(_ manager: CoreLocation.CLLocationManager) + @objc final public func locationManager(_ manager: CoreLocation.CLLocationManager, didChangeAuthorization status: CoreLocation.CLAuthorizationStatus) +} +extension PenNavUI.PenNavUIManager : Penguin.PIInitializerDelegate { + @objc final public func onReady(warning: Penguin.WarningCode) + @objc final public func onInitilzationError(error: Penguin.ErrorCode) + @objc final public func onInitializationProgressChange(status: Penguin.SDKOperation) +} +public enum DOM { +} +extension PenNavUI.DOM { + public typealias Float = Swift.Float + public typealias Coordinate = Swift.Float + public typealias Length = Swift.Int + public typealias Opacity = Swift.Float + public typealias Bool = Swift.Bool + public typealias URL = Foundation.URL +} +extension PenNavUI.PenNavStyle { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var type: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var value: Foundation.Data? { + @objc get + @objc set + } + #endif +} +public enum CommandLine { +} +@objc public protocol FloatingPanelBehavior { + @objc optional var springDecelerationRate: CoreFoundation.CGFloat { get } + @objc optional var springResponseTime: CoreFoundation.CGFloat { get } + @objc optional var momentumProjectionRate: CoreFoundation.CGFloat { get } + @objc optional func shouldProjectMomentum(_ fpc: PenNavUI.FloatingPanelController, to proposedState: PenNavUI.FloatingPanelState) -> Swift.Bool + @objc optional func redirectionalProgress(_ fpc: PenNavUI.FloatingPanelController, from: PenNavUI.FloatingPanelState, to: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc optional func allowsRubberBanding(for edge: UIUtilities.UIRectEdge) -> Swift.Bool + @objc optional var removalInteractionVelocityThreshold: CoreFoundation.CGFloat { get } +} +open class FloatingPanelDefaultBehavior : PenNavUI.FloatingPanelBehavior { + public init() + @objc open var springDecelerationRate: CoreFoundation.CGFloat { + @objc get + } + @objc open var springResponseTime: CoreFoundation.CGFloat { + @objc get + } + @objc open var momentumProjectionRate: CoreFoundation.CGFloat { + @objc get + } + @objc open func redirectionalProgress(_ fpc: PenNavUI.FloatingPanelController, from: PenNavUI.FloatingPanelState, to: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc open func allowsRubberBanding(for edge: UIUtilities.UIRectEdge) -> Swift.Bool + @objc open var removalInteractionVelocityThreshold: CoreFoundation.CGFloat + @objc deinit +} +public enum IssueType { + case poi + case venue + case location + case navigation + public static func == (a: PenNavUI.IssueType, b: PenNavUI.IssueType) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } +} +extension _LocationEssentials.CLLocationCoordinate2D : Swift.Codable { + public init(from decoder: any Swift.Decoder) throws + public func encode(to encoder: any Swift.Encoder) throws +} +@_inheritsConvenienceInitializers @objc(FavoriteCacheData) nonisolated public class FavoriteCacheData : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@objc public enum FloatingPanelReferenceEdge : Swift.Int { + case top + case left + case bottom + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@objc public enum FloatingPanelLayoutReferenceGuide : Swift.Int { + case superview = 0 + case safeArea = 1 + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@objc public enum FloatingPanelLayoutContentBoundingGuide : Swift.Int { + case none = 0 + case superview = 1 + case safeArea = 2 + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension PenNavUI.CommandLine { + public enum Error : Swift.Error { + case invalid + case unsupported + case fileNotFound + public static func == (a: PenNavUI.CommandLine.Error, b: PenNavUI.CommandLine.Error) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } +} +public protocol PIEventsDelegate { + func onBackButtonPressed() + func onPenNavUIDismiss() + func onReportIssue(_ issue: PenNavUI.IssueType) + #if compiler(>=5.3) && $NonescapableTypes + func onShareLocation(link: Swift.String?) + #endif + func onSwitchCampus(campusId: Swift.Int) +} +extension PenNavUI.PIEventsDelegate { + public func onBackButtonPressed() + public func onPenNavUIDismiss() + public func onReportIssue(_ issue: PenNavUI.IssueType) + #if compiler(>=5.3) && $NonescapableTypes + public func onShareLocation(link: Swift.String?) + #endif + public func onSwitchCampus(campusId: Swift.Int) +} +@_inheritsConvenienceInitializers @objc(PenNavUITableUpdate) nonisolated public class PenNavUITableUpdate : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +public struct SFSymbolRenderer { + public init(options: PenNavUI.SVG.Options, insets: PenNavUI.CommandLine.Insets, insetsUltralight: PenNavUI.CommandLine.Insets, insetsBlack: PenNavUI.CommandLine.Insets, precision: Swift.Int) + #if compiler(>=5.3) && $NonescapableTypes + public func render(regular: Foundation.URL, ultralight: Foundation.URL?, black: Foundation.URL?) throws -> Swift.String + #endif +} +@_inheritsConvenienceInitializers @objc(PenNavStyle) nonisolated public class PenNavStyle : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +public struct GeofenceConfiguration { + #if compiler(>=5.3) && $NonescapableTypes + public init(baseURL: Swift.String, serviceName: Swift.String, clientId: Swift.String, clientKey: Swift.String, campusId: Swift.Int? = nil) + #endif +} +public struct CampaignMessage { + public var title: Swift.String + public var description: Swift.String +} +extension UIKit.UIImage { + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(svgNamed name: Swift.String, in bundle: Foundation.Bundle = .main, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(initWithSVGData:) convenience dynamic public init?(svgData: Foundation.Data) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(initWithContentsOfSVGFile:) convenience dynamic public init?(contentsOfSVGFile path: Swift.String) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(svgNamed:) public static func _svgNamed(_ name: Swift.String) -> UIKit.UIImage? + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(svgNamed:inBundle:) public static func _svgNamed(_ name: Swift.String, in bundle: Foundation.Bundle) -> UIKit.UIImage? + #endif + convenience public init(_ image: PenNavUI.SVG) +} +extension PenNavUI.SVG { + final public func rasterize() -> UIKit.UIImage + #if compiler(>=5.3) && $NonescapableTypes + final public func rasterize(with size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, insets: UIKit.UIEdgeInsets = .zero) -> UIKit.UIImage + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func pngData(size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, insets: UIKit.UIEdgeInsets = .zero) throws -> Foundation.Data + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func jpegData(size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, compressionQuality quality: CoreFoundation.CGFloat = 1, insets: UIKit.UIEdgeInsets = .zero) throws -> Foundation.Data + #endif +} +public protocol PenNavInitializationDelegate { + func onPenNavInitializationSuccess() + func onPenNavInitializationError(errorType: PenNavUI.PenNavUIError, errorDescription: Swift.String) +} +extension Penguin.GateNodeModel : Penguin.NodeRepresentable { + final public var isUpEscalator: Swift.Bool { + get + } + final public var isDownEscalator: Swift.Bool { + get + } +} +@_inheritsConvenienceInitializers @objc(SharedLocationCacheData) nonisolated public class SharedLocationCacheData : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@objc open class FloatingPanelState : ObjectiveC.NSObject, Foundation.NSCopying, Swift.RawRepresentable { + public typealias RawValue = Swift.String + #if compiler(>=5.3) && $NonescapableTypes + required public init?(rawValue: PenNavUI.FloatingPanelState.RawValue) + #endif + @objc public init(rawValue: PenNavUI.FloatingPanelState.RawValue, order: Swift.Int) + final public let rawValue: PenNavUI.FloatingPanelState.RawValue + final public let order: Swift.Int + #if compiler(>=5.3) && $NonescapableTypes + @objc public func copy(with zone: ObjectiveC.NSZone? = nil) -> Any + #endif + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc override dynamic public var debugDescription: Swift.String { + @objc get + } + @objc(Full) public static let full: PenNavUI.FloatingPanelState + @objc(Half) public static let half: PenNavUI.FloatingPanelState + @objc(Tip) public static let tip: PenNavUI.FloatingPanelState + @objc(Hidden) public static let hidden: PenNavUI.FloatingPanelState + @objc deinit +} +@objc @_inheritsConvenienceInitializers public class AsynchronousOperation : Foundation.Operation { + @objc override dynamic public var isAsynchronous: Swift.Bool { + @objc get + } + @objc override dynamic public var isExecuting: Swift.Bool { + @objc get + } + @objc override dynamic public var isFinished: Swift.Bool { + @objc get + } + public func completeOperation() + @objc override dynamic public func start() + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @objc(FloatingPanelSurfaceAppearance) @objcMembers public class SurfaceAppearance : ObjectiveC.NSObject { + @_inheritsConvenienceInitializers @objc(FloatingPanelSurfaceAppearanceShadow) public class Shadow : ObjectiveC.NSObject { + @objc public var hidden: Swift.Bool + @objc public var color: UIKit.UIColor + @objc public var offset: CoreFoundation.CGSize + @objc public var opacity: Swift.Float + @objc public var radius: CoreFoundation.CGFloat + @objc public var spread: CoreFoundation.CGFloat + @objc override dynamic public init() + @objc deinit + } + @objc public var backgroundColor: UIKit.UIColor? + @objc public var cornerRadius: CoreFoundation.CGFloat + @objc @available(iOS 13.0, *) + public var cornerCurve: QuartzCore.CALayerCornerCurve { + @objc get + @objc set + } + @objc public var shadows: [PenNavUI.SurfaceAppearance.Shadow] + @objc public var borderColor: UIKit.UIColor? + @objc public var borderWidth: CoreFoundation.CGFloat + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc(FloatingPanelSurfaceView) @objcMembers @_Concurrency.MainActor @preconcurrency public class SurfaceView : UIKit.UIView { + @objc @_Concurrency.MainActor @preconcurrency final public let grabberHandle: PenNavUI.GrabberView + @objc @_Concurrency.MainActor @preconcurrency public var grabberHandlePadding: CoreFoundation.CGFloat { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var grabberAreaOffset: CoreFoundation.CGFloat + @objc @_Concurrency.MainActor @preconcurrency public var grabberHandleSize: CoreFoundation.CGSize { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency weak public var contentView: UIKit.UIView? + @objc @_Concurrency.MainActor @preconcurrency public var contentPadding: UIKit.UIEdgeInsets { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var backgroundColor: UIKit.UIColor? { + @objc get + @objc set + } + #endif + @objc @_Concurrency.MainActor @preconcurrency public var appearance: PenNavUI.SurfaceAppearance { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var containerMargins: UIKit.UIEdgeInsets { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency final public let containerView: UIKit.UIView + @_Concurrency.MainActor @preconcurrency @objc override dynamic public class var requiresConstraintBasedLayout: Swift.Bool { + @objc get + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func updateConstraints() + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutSubviews() + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var intrinsicContentSize: CoreFoundation.CGSize { + @objc get + } + @objc deinit +} +extension Penguin.Gnode : Penguin.NodeRepresentable { + final public var isUpEscalator: Swift.Bool { + get + } + final public var isDownEscalator: Swift.Bool { + get + } +} +public enum PenNavUIError : Swift.String, Foundation.LocalizedError { + case missingBaseUrl + case missingDataServiceName + case missingPositionServiceName + case missingRootController + case missingViewContainer + case missingClientId + case missingClientName + case invalidClientKey + case unauthorized + case noInternetConnection + case bluetoothTurnedOff + case locationServicesTurnedOff + case loadingDataError + case osNotSupported + case permissionsNotGranted + case sensorsInitializationError + case unknownError + case locationPermissionNotGranted + case bluetoothPermissionNotGranted + case invalidCampusId + case noCampusListFound + case buildCancelled + public var errorDescription: Swift.String { + get + } + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } +} +public enum ValidationError : Swift.Error { + case noClientID + case noClientNameKey + case noServiesName + case noBaseUrl + case missingFonts + public static func == (a: PenNavUI.ValidationError, b: PenNavUI.ValidationError) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } +} +@objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency final public class FloatingPanelPanGestureRecognizer : UIKit.UIPanGestureRecognizer { + @_Concurrency.MainActor @preconcurrency @objc override final public func touchesBegan(_ touches: Swift.Set, with event: UIKit.UIEvent) + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override weak final public var delegate: (any UIKit.UIGestureRecognizerDelegate)? { + @objc get + @objc set + } + #endif + @_Concurrency.MainActor @preconcurrency final public var delegateOrigin: any UIKit.UIGestureRecognizerDelegate { + get + } + @_Concurrency.MainActor @preconcurrency weak final public var delegateProxy: (any UIKit.UIGestureRecognizerDelegate)? { + get + set + } + @objc deinit +} +extension PenNavUI.CachedVenue { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var id: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var coverImage: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var address: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var buildingNumber: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var phone: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var email: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var website: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var floorCount: Swift.Int16 { + @objc get + @objc set + } +} +@_hasMissingDesignatedInitializers @objc(FloatingPanelGrabberView) @_Concurrency.MainActor @preconcurrency public class GrabberView : UIKit.UIView { + @_Concurrency.MainActor @preconcurrency public var barColor: UIKit.UIColor { + get + set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutSubviews() + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func hitTest(_ point: CoreFoundation.CGPoint, with event: UIKit.UIEvent?) -> UIKit.UIView? + #endif + @objc deinit +} +@objc public enum FloatingPanelPosition : Swift.Int { + case top + case left + case bottom + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension PenNavUI.FavoriteCacheData { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var createDate: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var deviceId: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var type: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var distance: Swift.Double { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var id: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var label: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var poiId: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var userName: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var location: PenNavUI.SharedLocationCacheData? { + @objc get + @objc set + } + #endif +} +@objc public protocol FloatingPanelLayoutAnchoring { + @objc var referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide { get } + @objc func layoutConstraints(_ fpc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteInset: CoreFoundation.CGFloat, edge: PenNavUI.FloatingPanelReferenceEdge, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide) + @objc public init(fractionalInset: CoreFoundation.CGFloat, edge: PenNavUI.FloatingPanelReferenceEdge, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc deinit +} +extension PenNavUI.FloatingPanelLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelIntrinsicLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteOffset offset: CoreFoundation.CGFloat, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide = .safeArea) + @objc public init(fractionalOffset offset: CoreFoundation.CGFloat, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide = .safeArea) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc deinit +} +extension PenNavUI.FloatingPanelIntrinsicLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelAdaptiveLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteOffset offset: CoreFoundation.CGFloat, contentLayout: UIKit.UILayoutGuide, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide, contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide = .none) + @objc public init(fractionalOffset offset: CoreFoundation.CGFloat, contentLayout: UIKit.UILayoutGuide, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide, contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide = .none) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc final public let contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide + @objc deinit +} +extension PenNavUI.FloatingPanelAdaptiveLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@_hasMissingDesignatedInitializers public class ImageCache { + #if compiler(>=5.3) && $NonescapableTypes + public func getImage(_ url: Foundation.URL, completion: @escaping (UIKit.UIImage?) -> Swift.Void) + #endif + #if compiler(>=5.3) && $NonescapableTypes + public func getImageFromDocuments(url: Foundation.URL) -> UIKit.UIImage? + #endif + @objc deinit +} +extension PenNavUI.ImageCache { + #if compiler(>=5.3) && $NonescapableTypes + public func getSVG(withURL url: Foundation.URL, completion: @escaping (UIKit.UIImage?) -> Swift.Void) + #endif +} +extension PenNavUI.PenNavUITableUpdate { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var lastUpdateTime: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var tableName: Swift.String? { + @objc get + @objc set + } + #endif +} +extension CoreGraphics.CGContext { + #if compiler(>=5.3) && $NonescapableTypes + public func draw(_ image: PenNavUI.SVG, in rect: CoreFoundation.CGRect? = nil) + #endif +} +extension PenNavUI.SVG { + #if compiler(>=5.3) && $NonescapableTypes + final public func pdfData(size: CoreFoundation.CGSize? = nil, insets: PenNavUI.SVG.Insets = .zero) throws -> Foundation.Data + #endif +} +public struct SVGRenderer { + public static func makeExpanded(path: Swift.String, transform: Swift.String, precision: Swift.Int = 4) throws -> Swift.String +} +@_hasMissingDesignatedInitializers @objc(SVGImage) final public class SVG : ObjectiveC.NSObject { + final public let size: CoreFoundation.CGSize + public struct Options : Swift.OptionSet { + public let rawValue: Swift.Int + public init(rawValue: Swift.Int) + public static let hideUnsupportedFilters: PenNavUI.SVG.Options + public static let `default`: PenNavUI.SVG.Options + public typealias ArrayLiteralElement = PenNavUI.SVG.Options + public typealias Element = PenNavUI.SVG.Options + public typealias RawValue = Swift.Int + } + @objc deinit +} +@available(*, deprecated, renamed: "SVG") +public typealias Image = PenNavUI.SVG +extension PenNavUI.SVG { + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(fileURL url: Foundation.URL, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(named name: Swift.String, in bundle: Foundation.Bundle = Bundle.main, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(data: Foundation.Data, options: PenNavUI.SVG.Options = .default) + #endif + public struct Insets : Swift.Equatable { + public var top: CoreFoundation.CGFloat + public var left: CoreFoundation.CGFloat + public var bottom: CoreFoundation.CGFloat + public var right: CoreFoundation.CGFloat + public static let zero: PenNavUI.SVG.Insets + public static func == (a: PenNavUI.SVG.Insets, b: PenNavUI.SVG.Insets) -> Swift.Bool + } +} +@objc public protocol FloatingPanelControllerDelegate { + @objc(floatingPanel:layoutForTraitCollection:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, layoutFor newCollection: UIKit.UITraitCollection) -> any PenNavUI.FloatingPanelLayout + @objc(floatingPanel:layoutForSize:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, layoutFor size: CoreFoundation.CGSize) -> any PenNavUI.FloatingPanelLayout + @objc(floatingPanel:animatorForPresentingToState:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, animatorForPresentingTo state: PenNavUI.FloatingPanelState) -> UIKit.UIViewPropertyAnimator + @objc(floatingPanel:animatorForDismissingWithVelocity:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, animatorForDismissingWith velocity: CoreFoundation.CGVector) -> UIKit.UIViewPropertyAnimator + @objc optional func floatingPanelDidChangeState(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelShouldBeginDragging(_ fpc: PenNavUI.FloatingPanelController) -> Swift.Bool + @objc optional func floatingPanelDidMove(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelWillBeginDragging(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelWillEndDragging(_ fpc: PenNavUI.FloatingPanelController, withVelocity velocity: CoreFoundation.CGPoint, targetState: Swift.UnsafeMutablePointer) + @objc optional func floatingPanelDidEndDragging(_ fpc: PenNavUI.FloatingPanelController, willAttract attract: Swift.Bool) + @objc optional func floatingPanelWillBeginAttracting(_ fpc: PenNavUI.FloatingPanelController, to state: PenNavUI.FloatingPanelState) + @objc optional func floatingPanelDidEndAttracting(_ fpc: PenNavUI.FloatingPanelController) + @objc(floatingPanel:shouldRemoveAtLocation:withVelocity:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, shouldRemoveAt location: CoreFoundation.CGPoint, with velocity: CoreFoundation.CGVector) -> Swift.Bool + @objc(floatingPanelWillRemove:) optional func floatingPanelWillRemove(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelDidRemove(_ fpc: PenNavUI.FloatingPanelController) + @objc(floatingPanel:contentOffsetForPinningScrollView:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, contentOffsetForPinning trackingScrollView: UIKit.UIScrollView) -> CoreFoundation.CGPoint + @objc(floatingPanel:shouldAllowToScroll:in:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, shouldAllowToScroll scrollView: UIKit.UIScrollView, in state: PenNavUI.FloatingPanelState) -> Swift.Bool +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc @_Concurrency.MainActor @preconcurrency open class FloatingPanelController : UIKit.UIViewController { + @objc public enum ContentInsetAdjustmentBehavior : Swift.Int { + case always + case never + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc public enum ContentMode : Swift.Int { + case `static` + case fitToBounds + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc @_Concurrency.MainActor @preconcurrency weak public var delegate: (any PenNavUI.FloatingPanelControllerDelegate)? { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var surfaceView: PenNavUI.SurfaceView! { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var backdropView: PenNavUI.BackdropView! { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency weak public var trackingScrollView: UIKit.UIScrollView? { + @objc get + } + #endif + @objc @_Concurrency.MainActor @preconcurrency public var panGestureRecognizer: PenNavUI.FloatingPanelPanGestureRecognizer { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var state: PenNavUI.FloatingPanelState { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var isAttracting: Swift.Bool { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var layout: any PenNavUI.FloatingPanelLayout { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var behavior: any PenNavUI.FloatingPanelBehavior { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var adjustedContentInsets: UIKit.UIEdgeInsets { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var contentInsetAdjustmentBehavior: PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior + @objc @_Concurrency.MainActor @preconcurrency public var isRemovalInteractionEnabled: Swift.Bool { + @objc(isRemovalInteractionEnabled) get + @objc(setRemovalInteractionEnabled:) set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var contentViewController: UIKit.UIViewController? { + @objc get + @objc set + } + #endif + @_Concurrency.MainActor @preconcurrency public var nearbyState: PenNavUI.FloatingPanelState { + get + } + @objc @_Concurrency.MainActor @preconcurrency public var contentMode: PenNavUI.FloatingPanelController.ContentMode { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public init(delegate: (any PenNavUI.FloatingPanelControllerDelegate)? = nil) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func loadView() + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewDidLayoutSubviews() + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewDidAppear(_ animated: Swift.Bool) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewWillTransition(to size: CoreFoundation.CGSize, with coordinator: any UIKit.UIViewControllerTransitionCoordinator) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func willTransition(to newCollection: UIKit.UITraitCollection, with coordinator: any UIKit.UIViewControllerTransitionCoordinator) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewWillDisappear(_ animated: Swift.Bool) + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForStatusBarStyle: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForStatusBarHidden: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForScreenEdgesDeferringSystemGestures: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForHomeIndicatorAutoHidden: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(show:completion:) @_Concurrency.MainActor @preconcurrency public func show(animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(hide:completion:) @_Concurrency.MainActor @preconcurrency public func hide(animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(addPanelToParent:at:animated:completion:) @_Concurrency.MainActor @preconcurrency public func addPanel(toParent parent: UIKit.UIViewController, at viewIndex: Swift.Int = -1, animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(removePanelFromParent:completion:) @_Concurrency.MainActor @preconcurrency public func removePanelFromParent(animated: Swift.Bool, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(moveToState:animated:completion:) @_Concurrency.MainActor @preconcurrency public func move(to: PenNavUI.FloatingPanelState, animated: Swift.Bool, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency public func set(contentViewController: UIKit.UIViewController?) + #endif + @objc(trackScrollView:) @_Concurrency.MainActor @preconcurrency public func track(scrollView: UIKit.UIScrollView) + @_Concurrency.MainActor @preconcurrency public func followScrollViewBouncing() + @objc(untrackScrollView:) @_Concurrency.MainActor @preconcurrency public func untrack(scrollView: UIKit.UIScrollView) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func accessibilityPerformEscape() -> Swift.Bool + @objc @_Concurrency.MainActor @preconcurrency public func invalidateLayout() + @objc @_Concurrency.MainActor @preconcurrency public func surfaceLocation(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGPoint + @objc @_Concurrency.MainActor @preconcurrency public var surfaceLocation: CoreFoundation.CGPoint { + @objc get + @objc set + } + @_Concurrency.MainActor @preconcurrency public func addTopPadding(padding: CoreFoundation.CGFloat) + @objc deinit +} +@_hasMissingDesignatedInitializers @objc(FloatingPanelBackdropView) @_Concurrency.MainActor @preconcurrency public class BackdropView : UIKit.UIView { + @objc @_Concurrency.MainActor @preconcurrency public var dismissalTapGestureRecognizer: UIKit.UITapGestureRecognizer + @objc deinit +} +@_hasMissingDesignatedInitializers public class NetworkMonitor { + @objc deinit +} +public enum GeofenceError : Swift.Error, Foundation.LocalizedError { + case permissionDenied + case errorInConfiguration + case authenticationFailed + case indoorDeloymentOnly + case geofenceConfigurationsMissing + case geofenceSDKNotStarted + case geofenceSDKAlreadyStarted + case sdkError(Swift.String) + #if compiler(>=5.3) && $NonescapableTypes + public var errorDescription: Swift.String? { + get + } + #endif +} +public protocol PIGeofenceManagerDelegate { + func geofenceStarted() + #if compiler(>=5.3) && $NonescapableTypes + func geofenceFailedToStart(_ error: Swift.String?) + #endif + func geofenceStopped() + func geofenceUpdated() +} +@objc @_inheritsConvenienceInitializers public class PIGeofenceManager : ObjectiveC.NSObject { + public static var shared: PenNavUI.PIGeofenceManager { + get + } + public func initializeLocationManager() + public func setGeofenceSDKConfigurations(_ configurations: PenNavUI.GeofenceConfiguration) + public func setGeofenceDelegate(delegate: any PenNavUI.PIGeofenceManagerDelegate) + public func startGeofencing(delegate: any PenNavUI.PIGeofenceManagerDelegate) + public func stopGeofencing() + public func updateGeofencing() + @objc override dynamic public init() + @objc deinit +} +extension PenNavUI.PIGeofenceManager : CoreLocation.CLLocationManagerDelegate { + @objc dynamic public func locationManager(_ manager: CoreLocation.CLLocationManager, didChangeAuthorization status: CoreLocation.CLAuthorizationStatus) +} +extension PenNavUI.PIGeofenceManager { + @objc dynamic public func locationManager(_ manager: CoreLocation.CLLocationManager, didEnterRegion region: CoreLocation.CLRegion) +} +extension PenNavUI.CGTextRenderer { + public typealias Size = (width: Swift.Int, height: Swift.Int) + #if compiler(>=5.3) && $NonescapableTypes + public static func render(named name: Swift.String, in bundle: Foundation.Bundle = Bundle.main, size: PenNavUI.CGTextRenderer.Size? = nil, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + #endif + #if compiler(>=5.3) && $NonescapableTypes + public static func render(fileURL: Foundation.URL, size: PenNavUI.CGTextRenderer.Size? = nil, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + #endif + public static func render(data: Foundation.Data, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + public static func renderPath(from svgPath: Swift.String) throws -> Swift.String +} +extension PenNavUI.CGTextRenderer.API : Swift.Equatable {} +extension PenNavUI.CGTextRenderer.API : Swift.Hashable {} +extension PenNavUI.CommandLine.Scale : Swift.Hashable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.Equatable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.Hashable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.Format : Swift.Equatable {} +extension PenNavUI.CommandLine.Format : Swift.Hashable {} +extension PenNavUI.CommandLine.Format : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.API : Swift.Equatable {} +extension PenNavUI.CommandLine.API : Swift.Hashable {} +extension PenNavUI.CommandLine.API : Swift.RawRepresentable {} +extension PenNavUI.IssueType : Swift.Equatable {} +extension PenNavUI.IssueType : Swift.Hashable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.Equatable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.Hashable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.Equatable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.Hashable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.Equatable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.Hashable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.Error : Swift.Equatable {} +extension PenNavUI.CommandLine.Error : Swift.Hashable {} +extension PenNavUI.PenNavUIError : Swift.Equatable {} +extension PenNavUI.PenNavUIError : Swift.Hashable {} +extension PenNavUI.PenNavUIError : Swift.RawRepresentable {} +extension PenNavUI.ValidationError : Swift.Equatable {} +extension PenNavUI.ValidationError : Swift.Hashable {} +extension PenNavUI.FloatingPanelPosition : Swift.Equatable {} +extension PenNavUI.FloatingPanelPosition : Swift.Hashable {} +extension PenNavUI.FloatingPanelPosition : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.Equatable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.Hashable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.Equatable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.Hashable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.RawRepresentable {} diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.abi.json b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.abi.json new file mode 100644 index 00000000..c4a30ffa --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.abi.json @@ -0,0 +1,43582 @@ +{ + "ABIRoot": { + "kind": "Root", + "name": "PenNavUI", + "printedName": "PenNavUI", + "children": [ + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayout", + "printedName": "FloatingPanelLayout", + "children": [ + { + "kind": "Var", + "name": "position", + "printedName": "position", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(py)position", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP8positionAA0dE8PositionOvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)position", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP8positionAA0dE8PositionOvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "initialState", + "printedName": "initialState", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(py)initialState", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP12initialStateAA0deH0Cvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)initialState", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP12initialStateAA0deH0Cvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "anchors", + "printedName": "anchors", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring]", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "any PenNavUI.FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring" + } + ], + "usr": "s:SD" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(py)anchors", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP7anchorsSDyAA0dE5StateCAA0deF9Anchoring_pGvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring]", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "any PenNavUI.FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring" + } + ], + "usr": "s:SD" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)anchors", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP7anchorsSDyAA0dE5StateCAA0deF9Anchoring_pGvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "prepareLayout", + "printedName": "prepareLayout(surfaceView:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)prepareLayoutWithSurfaceView:in:", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP07prepareF011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "prepareLayoutWithSurfaceView:in:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "backdropAlpha", + "printedName": "backdropAlpha(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout(im)backdropAlphaFor:", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP13backdropAlpha3for12CoreGraphics7CGFloatVAA0dE5StateC_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayout>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "backdropAlphaFor:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 : AnyObject>", + "sugared_genericSig": "", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelBottomLayout", + "printedName": "FloatingPanelBottomLayout", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelBottomLayout", + "printedName": "PenNavUI.FloatingPanelBottomLayout", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)init", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override", + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "initialState", + "printedName": "initialState", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(py)initialState", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0Cvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "initialState", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)initialState", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0Cvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "initialState", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "anchors", + "printedName": "anchors", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring]", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "any PenNavUI.FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring" + } + ], + "usr": "s:SD" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(py)anchors", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "anchors", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring]", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "any PenNavUI.FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring" + } + ], + "usr": "s:SD" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)anchors", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "anchors", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "position", + "printedName": "position", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(py)position", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC8positionAA0dE8PositionOvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "position", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)position", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC8positionAA0dE8PositionOvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "position", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "prepareLayout", + "printedName": "prepareLayout(surfaceView:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)prepareLayoutWithSurfaceView:in:", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC07prepareG011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtF", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "prepareLayoutWithSurfaceView:in:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "backdropAlpha", + "printedName": "backdropAlpha(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout(im)backdropAlphaFor:", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA0dE5StateC_tF", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "backdropAlphaFor:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBottomLayout", + "mangledName": "$s8PenNavUI25FloatingPanelBottomLayoutC", + "moduleName": "PenNavUI", + "isOpen": true, + "declAttributes": [ + "AccessControl", + "ObjCMembers", + "RawDocComment", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "FloatingPanelLayout", + "printedName": "FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout", + "mangledName": "$s8PenNavUI19FloatingPanelLayoutP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "AVFoundation", + "printedName": "AVFoundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "PILocationDelegate", + "printedName": "PILocationDelegate", + "children": [ + { + "kind": "Function", + "name": "onLocationOffCampus", + "printedName": "onLocationOffCampus(location:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationCoordinate2D", + "printedName": "_LocationEssentials.CLLocationCoordinate2D", + "usr": "c:@S@CLLocationCoordinate2D" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI18PILocationDelegateP19onLocationOffCampus8locationySo22CLLocationCoordinate2DV_tF", + "mangledName": "$s8PenNavUI18PILocationDelegateP19onLocationOffCampus8locationySo22CLLocationCoordinate2DV_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PILocationDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onLocationMessage", + "printedName": "onLocationMessage(message:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CampaignMessage", + "printedName": "PenNavUI.CampaignMessage", + "usr": "s:8PenNavUI15CampaignMessageV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI18PILocationDelegateP17onLocationMessage7messageyAA08CampaignH0V_tF", + "mangledName": "$s8PenNavUI18PILocationDelegateP17onLocationMessage7messageyAA08CampaignH0V_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PILocationDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onLocationOffCampus", + "printedName": "onLocationOffCampus(location:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationCoordinate2D", + "printedName": "_LocationEssentials.CLLocationCoordinate2D", + "usr": "c:@S@CLLocationCoordinate2D" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI18PILocationDelegatePAAE19onLocationOffCampus8locationySo22CLLocationCoordinate2DV_tF", + "mangledName": "$s8PenNavUI18PILocationDelegatePAAE19onLocationOffCampus8locationySo22CLLocationCoordinate2DV_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PILocationDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onLocationMessage", + "printedName": "onLocationMessage(message:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CampaignMessage", + "printedName": "PenNavUI.CampaignMessage", + "usr": "s:8PenNavUI15CampaignMessageV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI18PILocationDelegatePAAE17onLocationMessage7messageyAA08CampaignH0V_tF", + "mangledName": "$s8PenNavUI18PILocationDelegatePAAE17onLocationMessage7messageyAA08CampaignH0V_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PILocationDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "s:8PenNavUI18PILocationDelegateP", + "mangledName": "$s8PenNavUI18PILocationDelegateP", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "CachedVenue", + "printedName": "CachedVenue", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CachedVenue", + "printedName": "PenNavUI.CachedVenue", + "usr": "c:@M@PenNavUI@objc(cs)CachedVenue" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)CachedVenue(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "CachedVenue", + "printedName": "PenNavUI.CachedVenue", + "usr": "c:@M@PenNavUI@objc(cs)CachedVenue" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CachedVenueC12fetchRequestSo07NSFetchG0CyACGyFZ", + "mangledName": "$s8PenNavUI11CachedVenueC12fetchRequestSo07NSFetchG0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "id", + "printedName": "id", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)id", + "mangledName": "$s8PenNavUI11CachedVenueC2ids5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)id", + "mangledName": "$s8PenNavUI11CachedVenueC2ids5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setId:", + "mangledName": "$s8PenNavUI11CachedVenueC2ids5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "coverImage", + "printedName": "coverImage", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)coverImage", + "mangledName": "$s8PenNavUI11CachedVenueC10coverImageSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)coverImage", + "mangledName": "$s8PenNavUI11CachedVenueC10coverImageSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setCoverImage:", + "mangledName": "$s8PenNavUI11CachedVenueC10coverImageSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "address", + "printedName": "address", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)address", + "mangledName": "$s8PenNavUI11CachedVenueC7addressSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)address", + "mangledName": "$s8PenNavUI11CachedVenueC7addressSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setAddress:", + "mangledName": "$s8PenNavUI11CachedVenueC7addressSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "buildingNumber", + "printedName": "buildingNumber", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)buildingNumber", + "mangledName": "$s8PenNavUI11CachedVenueC14buildingNumberSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)buildingNumber", + "mangledName": "$s8PenNavUI11CachedVenueC14buildingNumberSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setBuildingNumber:", + "mangledName": "$s8PenNavUI11CachedVenueC14buildingNumberSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "phone", + "printedName": "phone", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)phone", + "mangledName": "$s8PenNavUI11CachedVenueC5phoneSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)phone", + "mangledName": "$s8PenNavUI11CachedVenueC5phoneSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setPhone:", + "mangledName": "$s8PenNavUI11CachedVenueC5phoneSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "email", + "printedName": "email", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)email", + "mangledName": "$s8PenNavUI11CachedVenueC5emailSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)email", + "mangledName": "$s8PenNavUI11CachedVenueC5emailSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setEmail:", + "mangledName": "$s8PenNavUI11CachedVenueC5emailSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "website", + "printedName": "website", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)website", + "mangledName": "$s8PenNavUI11CachedVenueC7websiteSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)website", + "mangledName": "$s8PenNavUI11CachedVenueC7websiteSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setWebsite:", + "mangledName": "$s8PenNavUI11CachedVenueC7websiteSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "floorCount", + "printedName": "floorCount", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(py)floorCount", + "mangledName": "$s8PenNavUI11CachedVenueC10floorCounts5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)floorCount", + "mangledName": "$s8PenNavUI11CachedVenueC10floorCounts5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CachedVenue(im)setFloorCount:", + "mangledName": "$s8PenNavUI11CachedVenueC10floorCounts5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)CachedVenue", + "mangledName": "$s8PenNavUI11CachedVenueC", + "moduleName": "PenNavUI", + "objc_name": "CachedVenue", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "CampaignTracking", + "printedName": "CampaignTracking", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CampaignTracking", + "printedName": "PenNavUI.CampaignTracking", + "usr": "c:@M@PenNavUI@objc(cs)CampaignTracking" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)CampaignTracking(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI16CampaignTrackingC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "CampaignTracking", + "printedName": "PenNavUI.CampaignTracking", + "usr": "c:@M@PenNavUI@objc(cs)CampaignTracking" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16CampaignTrackingC12fetchRequestSo07NSFetchG0CyACGyFZ", + "mangledName": "$s8PenNavUI16CampaignTrackingC12fetchRequestSo07NSFetchG0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "campaignId", + "printedName": "campaignId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(py)campaignId", + "mangledName": "$s8PenNavUI16CampaignTrackingC10campaignIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(im)campaignId", + "mangledName": "$s8PenNavUI16CampaignTrackingC10campaignIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(im)setCampaignId:", + "mangledName": "$s8PenNavUI16CampaignTrackingC10campaignIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "lastNotificationDate", + "printedName": "lastNotificationDate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Date?", + "children": [ + { + "kind": "TypeNominal", + "name": "Date", + "printedName": "Foundation.Date", + "usr": "s:10Foundation4DateV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(py)lastNotificationDate", + "mangledName": "$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Date?", + "children": [ + { + "kind": "TypeNominal", + "name": "Date", + "printedName": "Foundation.Date", + "usr": "s:10Foundation4DateV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(im)lastNotificationDate", + "mangledName": "$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Date?", + "children": [ + { + "kind": "TypeNominal", + "name": "Date", + "printedName": "Foundation.Date", + "usr": "s:10Foundation4DateV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)CampaignTracking(im)setLastNotificationDate:", + "mangledName": "$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)CampaignTracking", + "mangledName": "$s8PenNavUI16CampaignTrackingC", + "moduleName": "PenNavUI", + "objc_name": "CampaignTracking", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "Campus", + "printedName": "Campus", + "children": [ + { + "kind": "Var", + "name": "id", + "printedName": "id", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI6CampusC2idSiSgvp", + "mangledName": "$s8PenNavUI6CampusC2idSiSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC2idSiSgvg", + "mangledName": "$s8PenNavUI6CampusC2idSiSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC2idSiSgvs", + "mangledName": "$s8PenNavUI6CampusC2idSiSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC2idSiSgvM", + "mangledName": "$s8PenNavUI6CampusC2idSiSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "name", + "printedName": "name", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI6CampusC4nameSSSgvp", + "mangledName": "$s8PenNavUI6CampusC4nameSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC4nameSSSgvg", + "mangledName": "$s8PenNavUI6CampusC4nameSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC4nameSSSgvs", + "mangledName": "$s8PenNavUI6CampusC4nameSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC4nameSSSgvM", + "mangledName": "$s8PenNavUI6CampusC4nameSSSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "coverImage", + "printedName": "coverImage", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI6CampusC10coverImageSSSgvp", + "mangledName": "$s8PenNavUI6CampusC10coverImageSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC10coverImageSSSgvg", + "mangledName": "$s8PenNavUI6CampusC10coverImageSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC10coverImageSSSgvs", + "mangledName": "$s8PenNavUI6CampusC10coverImageSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI6CampusC10coverImageSSSgvM", + "mangledName": "$s8PenNavUI6CampusC10coverImageSSSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI6CampusC", + "mangledName": "$s8PenNavUI6CampusC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "AVFoundation", + "printedName": "AVFoundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "CGTextRenderer", + "printedName": "CGTextRenderer", + "children": [ + { + "kind": "TypeDecl", + "name": "API", + "printedName": "API", + "children": [ + { + "kind": "Var", + "name": "uiKit", + "printedName": "uiKit", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CGTextRenderer.API.Type) -> PenNavUI.CGTextRenderer.API", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CGTextRenderer.API.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI14CGTextRendererC3APIO5uiKityA2EmF", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO5uiKityA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "appKit", + "printedName": "appKit", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CGTextRenderer.API.Type) -> PenNavUI.CGTextRenderer.API", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CGTextRenderer.API.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI14CGTextRendererC3APIO6appKityA2EmF", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO6appKityA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC3APIO2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI14CGTextRendererC3APIO9hashValueSivp", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI14CGTextRendererC3APIO9hashValueSivg", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC3APIO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI14CGTextRendererC3APIO", + "mangledName": "$s8PenNavUI14CGTextRendererC3APIO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + } + ] + }, + { + "kind": "Function", + "name": "render", + "printedName": "render(named:in:size:options:api:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bundle", + "printedName": "Foundation.Bundle", + "hasDefaultArg": true, + "usr": "c:objc(cs)NSBundle" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(width: Swift.Int, height: Swift.Int)?", + "children": [ + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(width: Swift.Int, height: Swift.Int)", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC6render5named2in4size7options3api9precisionS2S_So8NSBundleCSi5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC6render5named2in4size7options3api9precisionS2S_So8NSBundleCSi5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "render", + "printedName": "render(fileURL:size:options:api:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(width: Swift.Int, height: Swift.Int)?", + "children": [ + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(width: Swift.Int, height: Swift.Int)", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC6render7fileURL4size7options3api9precisionSS10Foundation0H0V_Si5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC6render7fileURL4size7options3api9precisionSS10Foundation0H0V_Si5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "render", + "printedName": "render(data:options:api:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC6render4data7options3api9precisionSS10Foundation4DataV_AA3SVGC7OptionsVAC3APIOSitKFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC6render4data7options3api9precisionSS10Foundation4DataV_AA3SVGC7OptionsVAC3APIOSitKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "renderPath", + "printedName": "renderPath(from:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI14CGTextRendererC10renderPath4fromS2S_tKFZ", + "mangledName": "$s8PenNavUI14CGTextRendererC10renderPath4fromS2S_tKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI14CGTextRendererC", + "mangledName": "$s8PenNavUI14CGTextRendererC", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "AVFoundation", + "printedName": "AVFoundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "TagFlowLayout", + "printedName": "TagFlowLayout", + "children": [ + { + "kind": "Function", + "name": "layoutAttributesForElements", + "printedName": "layoutAttributesForElements(in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "[UIKit.UICollectionViewLayoutAttributes]?", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.UICollectionViewLayoutAttributes]", + "children": [ + { + "kind": "TypeNominal", + "name": "UICollectionViewLayoutAttributes", + "printedName": "UIKit.UICollectionViewLayoutAttributes", + "usr": "c:objc(cs)UICollectionViewLayoutAttributes" + } + ], + "usr": "s:Sa" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGRect", + "printedName": "CoreFoundation.CGRect", + "usr": "c:@S@CGRect" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(im)layoutAttributesForElementsInRect:", + "mangledName": "$s8PenNavUI13TagFlowLayoutC27layoutAttributesForElements2inSaySo016UICollectionViewfH0CGSgSo6CGRectV_tF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "layoutAttributesForElementsInRect:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "flipsHorizontallyInOppositeLayoutDirection", + "printedName": "flipsHorizontallyInOppositeLayoutDirection", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(py)flipsHorizontallyInOppositeLayoutDirection", + "mangledName": "$s8PenNavUI13TagFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "flipsHorizontallyInOppositeLayoutDirection", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(im)flipsHorizontallyInOppositeLayoutDirection", + "mangledName": "$s8PenNavUI13TagFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "flipsHorizontallyInOppositeLayoutDirection", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "developmentLayoutDirection", + "printedName": "developmentLayoutDirection", + "children": [ + { + "kind": "TypeNominal", + "name": "UIUserInterfaceLayoutDirection", + "printedName": "UIKit.UIUserInterfaceLayoutDirection", + "usr": "c:@E@UIUserInterfaceLayoutDirection" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(py)developmentLayoutDirection", + "mangledName": "$s8PenNavUI13TagFlowLayoutC011developmentF9DirectionSo015UIUserInterfacefH0Vvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "developmentLayoutDirection", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIUserInterfaceLayoutDirection", + "printedName": "UIKit.UIUserInterfaceLayoutDirection", + "usr": "c:@E@UIUserInterfaceLayoutDirection" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(im)developmentLayoutDirection", + "mangledName": "$s8PenNavUI13TagFlowLayoutC011developmentF9DirectionSo015UIUserInterfacefH0Vvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "developmentLayoutDirection", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "TagFlowLayout", + "printedName": "PenNavUI.TagFlowLayout", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout(im)init", + "mangledName": "$s8PenNavUI13TagFlowLayoutCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "TypeDecl", + "name": "LayoutAlignment", + "printedName": "LayoutAlignment", + "children": [ + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.TagFlowLayout.LayoutAlignment.Type) -> PenNavUI.TagFlowLayout.LayoutAlignment", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO4leftyA2EmF", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO4leftyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "center", + "printedName": "center", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.TagFlowLayout.LayoutAlignment.Type) -> PenNavUI.TagFlowLayout.LayoutAlignment", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO6centeryA2EmF", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO6centeryA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.TagFlowLayout.LayoutAlignment.Type) -> PenNavUI.TagFlowLayout.LayoutAlignment", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO5rightyA2EmF", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO5rightyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment?", + "children": [ + { + "kind": "TypeNominal", + "name": "LayoutAlignment", + "printedName": "PenNavUI.TagFlowLayout.LayoutAlignment", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueAESgSi_tcfc", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueAESgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivp", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivg", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI13TagFlowLayoutC0F9AlignmentO", + "mangledName": "$s8PenNavUI13TagFlowLayoutC0F9AlignmentO", + "moduleName": "PenNavUI", + "isFromExtension": true, + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)TagFlowLayout", + "mangledName": "$s8PenNavUI13TagFlowLayoutC", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)UICollectionViewFlowLayout", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "UIKit.UICollectionViewFlowLayout", + "UIKit.UICollectionViewLayout", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavUIManager", + "printedName": "PenNavUIManager", + "children": [ + { + "kind": "Var", + "name": "shared", + "printedName": "shared", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB9UIManagerC6sharedACvpZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC6sharedACvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC6sharedACvgZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC6sharedACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC6sharedACvsZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC6sharedACvsZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC6sharedACvMZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC6sharedACvMZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "initializationDelegate", + "printedName": "initializationDelegate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PenNavInitializationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavInitializationDelegate", + "printedName": "any PenNavUI.PenNavInitializationDelegate", + "usr": "s:8PenNavUI0aB22InitializationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvp", + "mangledName": "$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PenNavInitializationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavInitializationDelegate", + "printedName": "any PenNavUI.PenNavInitializationDelegate", + "usr": "s:8PenNavUI0aB22InitializationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvg", + "mangledName": "$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PenNavInitializationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavInitializationDelegate", + "printedName": "any PenNavUI.PenNavInitializationDelegate", + "usr": "s:8PenNavUI0aB22InitializationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvs", + "mangledName": "$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvM", + "mangledName": "$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "eventsDelegate", + "printedName": "eventsDelegate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PIEventsDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PIEventsDelegate", + "printedName": "any PenNavUI.PIEventsDelegate", + "usr": "s:8PenNavUI16PIEventsDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvp", + "mangledName": "$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PIEventsDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PIEventsDelegate", + "printedName": "any PenNavUI.PIEventsDelegate", + "usr": "s:8PenNavUI16PIEventsDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvg", + "mangledName": "$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PIEventsDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PIEventsDelegate", + "printedName": "any PenNavUI.PIEventsDelegate", + "usr": "s:8PenNavUI16PIEventsDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvs", + "mangledName": "$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvM", + "mangledName": "$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "locationDelegate", + "printedName": "locationDelegate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PILocationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PILocationDelegate", + "printedName": "any PenNavUI.PILocationDelegate", + "usr": "s:8PenNavUI18PILocationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvp", + "mangledName": "$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PILocationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PILocationDelegate", + "printedName": "any PenNavUI.PILocationDelegate", + "usr": "s:8PenNavUI18PILocationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvg", + "mangledName": "$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.PILocationDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "PILocationDelegate", + "printedName": "any PenNavUI.PILocationDelegate", + "usr": "s:8PenNavUI18PILocationDelegateP" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvs", + "mangledName": "$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvM", + "mangledName": "$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Function", + "name": "build", + "printedName": "build()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC5buildyyF", + "mangledName": "$s8PenNavUI0aB9UIManagerC5buildyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setLanguage", + "printedName": "setLanguage(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setLanguageyACSSF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setLanguageyACSSF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setLanguage", + "printedName": "setLanguage(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setLanguageyySSFZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setLanguageyySSFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setDeepLinkComponents", + "printedName": "setDeepLinkComponents(scheme:host:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC21setDeepLinkComponents6scheme4hostACSS_SStF", + "mangledName": "$s8PenNavUI0aB9UIManagerC21setDeepLinkComponents6scheme4hostACSS_SStF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setDeepLink", + "printedName": "setDeepLink(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setDeepLinkyy10Foundation3URLVSgF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setDeepLinkyy10Foundation3URLVSgF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setEnableReportIssue", + "printedName": "setEnableReportIssue(enable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC20setEnableReportIssue6enableACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC20setEnableReportIssue6enableACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setShareLocationCallback", + "printedName": "setShareLocationCallback(enabled:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC24setShareLocationCallback7enabledACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC24setShareLocationCallback7enabledACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "navigate", + "printedName": "navigate(to:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "((Swift.Bool, PenNavUI.PenNavUIError?) -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(Swift.Bool, PenNavUI.PenNavUIError?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(Swift.Bool, PenNavUI.PenNavUIError?)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.PenNavUIError?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ], + "usr": "s:Sq" + } + ] + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtF", + "mangledName": "$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getCampusListing", + "printedName": "getCampusListing(baseURL:serviceName:clientID:clientKey:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "([PenNavUI.Campus]?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "[PenNavUI.Campus]?", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[PenNavUI.Campus]", + "children": [ + { + "kind": "TypeNominal", + "name": "Campus", + "printedName": "PenNavUI.Campus", + "usr": "s:8PenNavUI6CampusC" + } + ], + "usr": "s:Sa" + } + ], + "usr": "s:Sq" + } + ] + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctF", + "mangledName": "$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setAppColor", + "printedName": "setAppColor(color:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setAppColor5colorACSo7UIColorC_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setAppColor5colorACSo7UIColorC_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getVersion", + "printedName": "getVersion()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC10getVersionSSyFZ", + "mangledName": "$s8PenNavUI0aB9UIManagerC10getVersionSSyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "present", + "printedName": "present(root:view:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + }, + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC7present4root4viewySo16UIViewControllerC_So0H0CtF", + "mangledName": "$s8PenNavUI0aB9UIManagerC7present4root4viewySo16UIViewControllerC_So0H0CtF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "dismiss", + "printedName": "dismiss()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC7dismissyyF", + "mangledName": "$s8PenNavUI0aB9UIManagerC7dismissyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setClientKey", + "printedName": "setClientKey(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC12setClientKeyyACSSF", + "mangledName": "$s8PenNavUI0aB9UIManagerC12setClientKeyyACSSF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setClientID", + "printedName": "setClientID(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setClientIDyACSSF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setClientIDyACSSF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setUsername", + "printedName": "setUsername(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setUsernameyACSSF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setUsernameyACSSF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setServiceName", + "printedName": "setServiceName(dataServiceName:positionServiceName:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC14setServiceName04datafG008positionfG0ACSS_SStF", + "mangledName": "$s8PenNavUI0aB9UIManagerC14setServiceName04datafG008positionfG0ACSS_SStF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setBaseURL", + "printedName": "setBaseURL(dataURL:positionURL:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC10setBaseURL04dataG008positionG0ACSS_SStF", + "mangledName": "$s8PenNavUI0aB9UIManagerC10setBaseURL04dataG008positionG0ACSS_SStF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setIsShowUserName", + "printedName": "setIsShowUserName(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC17setIsShowUserNameyACSbF", + "mangledName": "$s8PenNavUI0aB9UIManagerC17setIsShowUserNameyACSbF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setBackButtonVisibility", + "printedName": "setBackButtonVisibility(visible:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC23setBackButtonVisibility7visibleACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC23setBackButtonVisibility7visibleACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setDebugOptionsVisibility", + "printedName": "setDebugOptionsVisibility(visible:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC25setDebugOptionsVisibility7visibleACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC25setDebugOptionsVisibility7visibleACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setCampusID", + "printedName": "setCampusID(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC11setCampusIDyACSiF", + "mangledName": "$s8PenNavUI0aB9UIManagerC11setCampusIDyACSiF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setIsUpdateUserLocationSmoothly", + "printedName": "setIsUpdateUserLocationSmoothly(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC31setIsUpdateUserLocationSmoothlyyACSbF", + "mangledName": "$s8PenNavUI0aB9UIManagerC31setIsUpdateUserLocationSmoothlyyACSbF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setOutdoorEnable", + "printedName": "setOutdoorEnable(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC16setOutdoorEnable02isG0ACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC16setOutdoorEnable02isG0ACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setSimulationModeEnabled", + "printedName": "setSimulationModeEnabled(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC24setSimulationModeEnabled8isEnableACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC24setSimulationModeEnabled8isEnableACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "DiscardableResult" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setStepDetectionEnable", + "printedName": "setStepDetectionEnable(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC22setStepDetectionEnable02isH0ACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC22setStepDetectionEnable02isH0ACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setTransitionEnable", + "printedName": "setTransitionEnable(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC19setTransitionEnable02isG0ACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC19setTransitionEnable02isG0ACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setGeographicCoordinateEnable", + "printedName": "setGeographicCoordinateEnable(isEnable:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC29setGeographicCoordinateEnable02isH0ACSb_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC29setGeographicCoordinateEnable02isH0ACSb_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getToken", + "printedName": "getToken(clientID:clientKey:showProgress:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(Swift.String?, Penguin.ErrorCode?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(Swift.String?, Penguin.ErrorCode?)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Penguin.ErrorCode?", + "children": [ + { + "kind": "TypeNominal", + "name": "ErrorCode", + "printedName": "Penguin.ErrorCode", + "usr": "c:@M@Penguin@E@ErrorCode" + } + ], + "usr": "s:Sq" + } + ] + } + ] + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctF", + "mangledName": "$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setToken", + "printedName": "setToken(token:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC8setToken5tokenySS_tF", + "mangledName": "$s8PenNavUI0aB9UIManagerC8setToken5tokenySS_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "clearDatabase", + "printedName": "clearDatabase()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC13clearDatabaseyyF", + "mangledName": "$s8PenNavUI0aB9UIManagerC13clearDatabaseyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getVersion", + "printedName": "getVersion()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB9UIManagerC10getVersionSSSgyF", + "mangledName": "$s8PenNavUI0aB9UIManagerC10getVersionSSSgyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIManager", + "printedName": "PenNavUI.PenNavUIManager", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager(im)init", + "mangledName": "$s8PenNavUI0aB9UIManagerCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "locationManagerDidChangeAuthorization", + "printedName": "locationManagerDidChangeAuthorization(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationManager", + "printedName": "CoreLocation.CLLocationManager", + "usr": "c:objc(cs)CLLocationManager" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)locationManagerDidChangeAuthorization:", + "mangledName": "$s8PenNavUI0aB9UIManagerC37locationManagerDidChangeAuthorizationyySo010CLLocationF0CF", + "moduleName": "PenNavUI", + "objc_name": "locationManagerDidChangeAuthorization:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "locationManager", + "printedName": "locationManager(_:didChangeAuthorization:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationManager", + "printedName": "CoreLocation.CLLocationManager", + "usr": "c:objc(cs)CLLocationManager" + }, + { + "kind": "TypeNominal", + "name": "CLAuthorizationStatus", + "printedName": "CoreLocation.CLAuthorizationStatus", + "usr": "c:@E@CLAuthorizationStatus" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)locationManager:didChangeAuthorizationStatus:", + "mangledName": "$s8PenNavUI0aB9UIManagerC15locationManager_22didChangeAuthorizationySo010CLLocationF0C_So21CLAuthorizationStatusVtF", + "moduleName": "PenNavUI", + "objc_name": "locationManager:didChangeAuthorizationStatus:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onReady", + "printedName": "onReady(warning:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "WarningCode", + "printedName": "Penguin.WarningCode", + "usr": "c:@M@Penguin@E@WarningCode" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)onReadyWithWarning:", + "mangledName": "$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tF", + "moduleName": "PenNavUI", + "objc_name": "onReadyWithWarning:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onInitilzationError", + "printedName": "onInitilzationError(error:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "ErrorCode", + "printedName": "Penguin.ErrorCode", + "usr": "c:@M@Penguin@E@ErrorCode" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)onInitilzationErrorWithError:", + "mangledName": "$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tF", + "moduleName": "PenNavUI", + "objc_name": "onInitilzationErrorWithError:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onInitializationProgressChange", + "printedName": "onInitializationProgressChange(status:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "SDKOperation", + "printedName": "Penguin.SDKOperation", + "usr": "c:@M@Penguin@E@SDKOperation" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUIManager(im)onInitializationProgressChangeWithStatus:", + "mangledName": "$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tF", + "moduleName": "PenNavUI", + "objc_name": "onInitializationProgressChangeWithStatus:", + "declAttributes": [ + "Final", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUIManager", + "mangledName": "$s8PenNavUI0aB9UIManagerC", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "PIInitializerDelegate", + "printedName": "PIInitializerDelegate", + "usr": "c:@M@Penguin@objc(pl)PIInitializerDelegate", + "mangledName": "$s7Penguin21PIInitializerDelegateP" + } + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "MessageUI", + "printedName": "MessageUI", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "SafariServices", + "printedName": "SafariServices", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "DOM", + "printedName": "DOM", + "declKind": "Enum", + "usr": "s:8PenNavUI3DOMO", + "mangledName": "$s8PenNavUI3DOMO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "CommandLine", + "printedName": "CommandLine", + "children": [ + { + "kind": "Function", + "name": "processImage", + "printedName": "processImage(with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "PenNavUI.CommandLine.Configuration", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO12processImage4with10Foundation4DataVAC13ConfigurationV_tKFZ", + "mangledName": "$s8PenNavUI11CommandLineO12processImage4with10Foundation4DataVAC13ConfigurationV_tKFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "makeSVGOptions", + "printedName": "makeSVGOptions(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "PenNavUI.CommandLine.Configuration", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO14makeSVGOptions3forAA3SVGC7OptionsVAC13ConfigurationV_tFZ", + "mangledName": "$s8PenNavUI11CommandLineO14makeSVGOptions3forAA3SVGC7OptionsVAC13ConfigurationV_tFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "makeTextAPI", + "printedName": "makeTextAPI(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CGTextRenderer.API", + "usr": "s:8PenNavUI14CGTextRendererC3APIO" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO11makeTextAPI3forAA14CGTextRendererC0H0OAcHOSg_tFZ", + "mangledName": "$s8PenNavUI11CommandLineO11makeTextAPI3forAA14CGTextRendererC0H0OAcHOSg_tFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "processImage", + "printedName": "processImage(_:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + }, + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "PenNavUI.CommandLine.Configuration", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO12processImage_4with10Foundation4DataVAA3SVGC_AC13ConfigurationVtKFZ", + "mangledName": "$s8PenNavUI11CommandLineO12processImage_4with10Foundation4DataVAA3SVGC_AC13ConfigurationVtKFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "makeImageInsets", + "printedName": "makeImageInsets(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO15makeImageInsets3forAA3SVGC0H0VAcHV_tKFZ", + "mangledName": "$s8PenNavUI11CommandLineO15makeImageInsets3forAA3SVGC0H0VAcHV_tKFZ", + "moduleName": "PenNavUI", + "static": true, + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "TypeDecl", + "name": "Configuration", + "printedName": "Configuration", + "children": [ + { + "kind": "Var", + "name": "input", + "printedName": "input", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "inputUltralight", + "printedName": "inputUltralight", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "inputBlack", + "printedName": "inputBlack", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "output", + "printedName": "output", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "format", + "printedName": "format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "size", + "printedName": "size", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "api", + "printedName": "api", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "insets", + "printedName": "insets", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "insetsUltralight", + "printedName": "insetsUltralight", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "insetsBlack", + "printedName": "insetsBlack", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Insets?", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "scale", + "printedName": "scale", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "options", + "printedName": "options", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "precision", + "printedName": "precision", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvp", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvg", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvs", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvM", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV", + "mangledName": "$s8PenNavUI11CommandLineO13ConfigurationV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Format", + "printedName": "Format", + "children": [ + { + "kind": "Var", + "name": "jpeg", + "printedName": "jpeg", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO4jpegyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO4jpegyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "pdf", + "printedName": "pdf", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO3pdfyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO3pdfyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "png", + "printedName": "png", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO3pngyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO3pngyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "swift", + "printedName": "swift", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO5swiftyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO5swiftyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "sfsymbol", + "printedName": "sfsymbol", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Format.Type) -> PenNavUI.CommandLine.Format", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Format.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO6FormatO8sfsymbolyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO8sfsymbolyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.Format?", + "children": [ + { + "kind": "TypeNominal", + "name": "Format", + "printedName": "PenNavUI.CommandLine.Format", + "usr": "s:8PenNavUI11CommandLineO6FormatO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI11CommandLineO6FormatO8rawValueAESgSS_tcfc", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO8rawValueAESgSS_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6FormatO8rawValueSSvp", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO8rawValueSSvp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6FormatO8rawValueSSvg", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO8rawValueSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO6FormatO", + "mangledName": "$s8PenNavUI11CommandLineO6FormatO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "enumRawTypeName": "String", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "API", + "printedName": "API", + "children": [ + { + "kind": "Var", + "name": "appkit", + "printedName": "appkit", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.API.Type) -> PenNavUI.CommandLine.API", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.API.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO3APIO6appkityA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO3APIO6appkityA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "uikit", + "printedName": "uikit", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.API.Type) -> PenNavUI.CommandLine.API", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.API.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO3APIO5uikityA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO3APIO5uikityA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.CommandLine.API?", + "children": [ + { + "kind": "TypeNominal", + "name": "API", + "printedName": "PenNavUI.CommandLine.API", + "usr": "s:8PenNavUI11CommandLineO3APIO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI11CommandLineO3APIO8rawValueAESgSS_tcfc", + "mangledName": "$s8PenNavUI11CommandLineO3APIO8rawValueAESgSS_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO3APIO8rawValueSSvp", + "mangledName": "$s8PenNavUI11CommandLineO3APIO8rawValueSSvp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO3APIO8rawValueSSvg", + "mangledName": "$s8PenNavUI11CommandLineO3APIO8rawValueSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO3APIO", + "mangledName": "$s8PenNavUI11CommandLineO3APIO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "enumRawTypeName": "String", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Size", + "printedName": "Size", + "children": [ + { + "kind": "Var", + "name": "default", + "printedName": "default", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Size.Type) -> PenNavUI.CommandLine.Size", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Size.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO4SizeO7defaultyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO4SizeO7defaultyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "custom", + "printedName": "custom", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Size.Type) -> (Swift.Int, Swift.Int) -> PenNavUI.CommandLine.Size", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(Swift.Int, Swift.Int) -> PenNavUI.CommandLine.Size", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + }, + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(width: Swift.Int, height: Swift.Int)", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ] + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Size.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO4SizeO6customyAESi_SitcAEmF", + "mangledName": "$s8PenNavUI11CommandLineO4SizeO6customyAESi_SitcAEmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + }, + { + "kind": "TypeNominal", + "name": "Size", + "printedName": "PenNavUI.CommandLine.Size", + "usr": "s:8PenNavUI11CommandLineO4SizeO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO4SizeO2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI11CommandLineO4SizeO2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO4SizeO", + "mangledName": "$s8PenNavUI11CommandLineO4SizeO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Scale", + "printedName": "Scale", + "children": [ + { + "kind": "Var", + "name": "default", + "printedName": "default", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Scale.Type) -> PenNavUI.CommandLine.Scale", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Scale.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ScaleO7defaultyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO7defaultyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "retina", + "printedName": "retina", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Scale.Type) -> PenNavUI.CommandLine.Scale", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Scale.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ScaleO6retinayA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO6retinayA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "superRetina", + "printedName": "superRetina", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Scale.Type) -> PenNavUI.CommandLine.Scale", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Scale.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ScaleO11superRetinayA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO11superRetinayA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO5ScaleO9hashValueSivp", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO5ScaleO9hashValueSivg", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO5ScaleO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + }, + { + "kind": "TypeNominal", + "name": "Scale", + "printedName": "PenNavUI.CommandLine.Scale", + "usr": "s:8PenNavUI11CommandLineO5ScaleO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO5ScaleO2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO5ScaleO", + "mangledName": "$s8PenNavUI11CommandLineO5ScaleO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Insets", + "printedName": "Insets", + "children": [ + { + "kind": "Var", + "name": "top", + "printedName": "top", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3topSdSgvp", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3topSdSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3topSdSgvg", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3topSdSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3topSdSgvs", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3topSdSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3topSdSgvM", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3topSdSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6InsetsV4leftSdSgvp", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV4leftSdSgvg", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV4leftSdSgvs", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV4leftSdSgvM", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "bottom", + "printedName": "bottom", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6InsetsV6bottomSdSgvp", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV6bottomSdSgvg", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV6bottomSdSgvs", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV6bottomSdSgvM", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO6InsetsV5rightSdSgvp", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV5rightSdSgvg", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV5rightSdSgvs", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV5rightSdSgvM", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(top:left:bottom:right:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Double?", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI11CommandLineO6InsetsV3top4left6bottom5rightAESdSg_A3Jtcfc", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV3top4left6bottom5rightAESdSg_A3Jtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO6InsetsV2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI11CommandLineO6InsetsV", + "mangledName": "$s8PenNavUI11CommandLineO6InsetsV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + }, + { + "kind": "Function", + "name": "parseConfiguration", + "printedName": "parseConfiguration(from:baseDirectory:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Configuration", + "printedName": "PenNavUI.CommandLine.Configuration", + "usr": "s:8PenNavUI11CommandLineO13ConfigurationV" + }, + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[Swift.String]", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO18parseConfiguration4from13baseDirectoryAC0G0VSaySSG_10Foundation3URLVtKFZ", + "mangledName": "$s8PenNavUI11CommandLineO18parseConfiguration4from13baseDirectoryAC0G0VSaySSG_10Foundation3URLVtKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "TypeDecl", + "name": "Error", + "printedName": "Error", + "children": [ + { + "kind": "Var", + "name": "invalid", + "printedName": "invalid", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Error.Type) -> PenNavUI.CommandLine.Error", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Error.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ErrorO7invalidyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO7invalidyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "unsupported", + "printedName": "unsupported", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Error.Type) -> PenNavUI.CommandLine.Error", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Error.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ErrorO11unsupportedyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO11unsupportedyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "fileNotFound", + "printedName": "fileNotFound", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.CommandLine.Error.Type) -> PenNavUI.CommandLine.Error", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.CommandLine.Error.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI11CommandLineO5ErrorO12fileNotFoundyA2EmF", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO12fileNotFoundyA2EmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + }, + { + "kind": "TypeNominal", + "name": "Error", + "printedName": "PenNavUI.CommandLine.Error", + "usr": "s:8PenNavUI11CommandLineO5ErrorO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO5ErrorO2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11CommandLineO5ErrorO9hashValueSivp", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11CommandLineO5ErrorO9hashValueSivg", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11CommandLineO5ErrorO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO5ErrorO", + "mangledName": "$s8PenNavUI11CommandLineO5ErrorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Error", + "printedName": "Error", + "usr": "s:s5ErrorP", + "mangledName": "$ss5ErrorP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI11CommandLineO", + "mangledName": "$s8PenNavUI11CommandLineO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelBehavior", + "printedName": "FloatingPanelBehavior", + "children": [ + { + "kind": "Var", + "name": "springDecelerationRate", + "printedName": "springDecelerationRate", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(py)springDecelerationRate", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP22springDecelerationRate12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)springDecelerationRate", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP22springDecelerationRate12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "springResponseTime", + "printedName": "springResponseTime", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(py)springResponseTime", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP18springResponseTime12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)springResponseTime", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP18springResponseTime12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "momentumProjectionRate", + "printedName": "momentumProjectionRate", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(py)momentumProjectionRate", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP22momentumProjectionRate12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)momentumProjectionRate", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP22momentumProjectionRate12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "shouldProjectMomentum", + "printedName": "shouldProjectMomentum(_:to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)shouldProjectMomentum:to:", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP21shouldProjectMomentum_2toSbAA0dE10ControllerC_AA0dE5StateCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "redirectionalProgress", + "printedName": "redirectionalProgress(_:from:to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)redirectionalProgress:from:to:", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP21redirectionalProgress_4from2to12CoreGraphics7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "allowsRubberBanding", + "printedName": "allowsRubberBanding(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "UIRectEdge", + "printedName": "UIUtilities.UIRectEdge", + "usr": "c:@E@UIRectEdge" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)allowsRubberBandingFor:", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP19allowsRubberBanding3forSbSo10UIRectEdgeV_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "allowsRubberBandingFor:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "removalInteractionVelocityThreshold", + "printedName": "removalInteractionVelocityThreshold", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(py)removalInteractionVelocityThreshold", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior(im)removalInteractionVelocityThreshold", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelBehavior>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Protocol", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 : AnyObject>", + "sugared_genericSig": "", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelDefaultBehavior", + "printedName": "FloatingPanelDefaultBehavior", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelDefaultBehavior", + "printedName": "PenNavUI.FloatingPanelDefaultBehavior", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorCACycfc", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorCACycfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "springDecelerationRate", + "printedName": "springDecelerationRate", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "springDecelerationRate", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "springDecelerationRate", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "springResponseTime", + "printedName": "springResponseTime", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "springResponseTime", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "springResponseTime", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "momentumProjectionRate", + "printedName": "momentumProjectionRate", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "momentumProjectionRate", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "momentumProjectionRate", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "redirectionalProgress", + "printedName": "redirectionalProgress(_:from:to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC21redirectionalProgress_4from2to14CoreFoundation7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtF", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC21redirectionalProgress_4from2to12CoreGraphics7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtF", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "redirectionalProgress:from:to:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "allowsRubberBanding", + "printedName": "allowsRubberBanding(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "UIRectEdge", + "printedName": "UIUtilities.UIRectEdge", + "usr": "c:@E@UIRectEdge" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tF", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tF", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "allowsRubberBandingFor:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "removalInteractionVelocityThreshold", + "printedName": "removalInteractionVelocityThreshold", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "isOpen": true, + "objc_name": "removalInteractionVelocityThreshold", + "declAttributes": [ + "HasInitialValue", + "ObjC", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "isOpen": true, + "objc_name": "removalInteractionVelocityThreshold", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "isOpen": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "isOpen": true, + "accessorKind": "_modify" + } + ] + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI28FloatingPanelDefaultBehaviorC", + "mangledName": "$s8PenNavUI28FloatingPanelDefaultBehaviorC", + "moduleName": "PenNavUI", + "isOpen": true, + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "FloatingPanelBehavior", + "printedName": "FloatingPanelBehavior", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior", + "mangledName": "$s8PenNavUI21FloatingPanelBehaviorP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "IssueType", + "printedName": "IssueType", + "children": [ + { + "kind": "Var", + "name": "poi", + "printedName": "poi", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.IssueType.Type) -> PenNavUI.IssueType", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.IssueType.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI9IssueTypeO3poiyA2CmF", + "mangledName": "$s8PenNavUI9IssueTypeO3poiyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "venue", + "printedName": "venue", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.IssueType.Type) -> PenNavUI.IssueType", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.IssueType.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI9IssueTypeO5venueyA2CmF", + "mangledName": "$s8PenNavUI9IssueTypeO5venueyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "location", + "printedName": "location", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.IssueType.Type) -> PenNavUI.IssueType", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.IssueType.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI9IssueTypeO8locationyA2CmF", + "mangledName": "$s8PenNavUI9IssueTypeO8locationyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "navigation", + "printedName": "navigation", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.IssueType.Type) -> PenNavUI.IssueType", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.IssueType.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI9IssueTypeO10navigationyA2CmF", + "mangledName": "$s8PenNavUI9IssueTypeO10navigationyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + }, + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI9IssueTypeO2eeoiySbAC_ACtFZ", + "mangledName": "$s8PenNavUI9IssueTypeO2eeoiySbAC_ACtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI9IssueTypeO9hashValueSivp", + "mangledName": "$s8PenNavUI9IssueTypeO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI9IssueTypeO9hashValueSivg", + "mangledName": "$s8PenNavUI9IssueTypeO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI9IssueTypeO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI9IssueTypeO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI9IssueTypeO", + "mangledName": "$s8PenNavUI9IssueTypeO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + } + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "MapKit", + "printedName": "MapKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "FavoriteCacheData", + "printedName": "FavoriteCacheData", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FavoriteCacheData", + "printedName": "PenNavUI.FavoriteCacheData", + "usr": "c:@M@PenNavUI@objc(cs)FavoriteCacheData" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FavoriteCacheData(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "FavoriteCacheData", + "printedName": "PenNavUI.FavoriteCacheData", + "usr": "c:@M@PenNavUI@objc(cs)FavoriteCacheData" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17FavoriteCacheDataC12fetchRequestSo07NSFetchH0CyACGyFZ", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC12fetchRequestSo07NSFetchH0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "createDate", + "printedName": "createDate", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)createDate", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC10createDateSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)createDate", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC10createDateSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setCreateDate:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC10createDateSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "deviceId", + "printedName": "deviceId", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)deviceId", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8deviceIdSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)deviceId", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8deviceIdSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setDeviceId:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8deviceIdSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "type", + "printedName": "type", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)type", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC4typeSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)type", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC4typeSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setType:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC4typeSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "distance", + "printedName": "distance", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)distance", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8distanceSdvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)distance", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8distanceSdvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setDistance:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8distanceSdvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "id", + "printedName": "id", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)id", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC2idSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)id", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC2idSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setId:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC2idSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "label", + "printedName": "label", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)label", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5labelSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)label", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5labelSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setLabel:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5labelSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "poiId", + "printedName": "poiId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)poiId", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5poiIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)poiId", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5poiIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setPoiId:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC5poiIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "userName", + "printedName": "userName", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)userName", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8userNameSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)userName", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8userNameSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setUserName:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8userNameSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "location", + "printedName": "location", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SharedLocationCacheData?", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(py)location", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8locationAA014SharedLocationeF0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SharedLocationCacheData?", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)location", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8locationAA014SharedLocationeF0CSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SharedLocationCacheData?", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)FavoriteCacheData(im)setLocation:", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC8locationAA014SharedLocationeF0CSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FavoriteCacheData", + "mangledName": "$s8PenNavUI17FavoriteCacheDataC", + "moduleName": "PenNavUI", + "objc_name": "FavoriteCacheData", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelReferenceEdge", + "printedName": "FloatingPanelReferenceEdge", + "children": [ + { + "kind": "Var", + "name": "top", + "printedName": "top", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelReferenceEdge.Type) -> PenNavUI.FloatingPanelReferenceEdge", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelReferenceEdge.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge@FloatingPanelReferenceEdgeTop", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO3topyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelReferenceEdge.Type) -> PenNavUI.FloatingPanelReferenceEdge", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelReferenceEdge.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge@FloatingPanelReferenceEdgeLeft", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO4leftyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Var", + "name": "bottom", + "printedName": "bottom", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelReferenceEdge.Type) -> PenNavUI.FloatingPanelReferenceEdge", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelReferenceEdge.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge@FloatingPanelReferenceEdgeBottom", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO6bottomyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 2 + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelReferenceEdge.Type) -> PenNavUI.FloatingPanelReferenceEdge", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelReferenceEdge.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge@FloatingPanelReferenceEdgeRight", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO5rightyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 3 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelReferenceEdge?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI26FloatingPanelReferenceEdgeO8rawValueACSgSi_tcfc", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueACSgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI26FloatingPanelReferenceEdgeO8rawValueSivp", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI26FloatingPanelReferenceEdgeO8rawValueSivg", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge", + "mangledName": "$s8PenNavUI26FloatingPanelReferenceEdgeO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "FloatingPanelLayoutReferenceGuide", + "children": [ + { + "kind": "Var", + "name": "superview", + "printedName": "superview", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutReferenceGuide.Type) -> PenNavUI.FloatingPanelLayoutReferenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide@FloatingPanelLayoutReferenceGuideSuperview", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO9superviewyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "safeArea", + "printedName": "safeArea", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutReferenceGuide.Type) -> PenNavUI.FloatingPanelLayoutReferenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide@FloatingPanelLayoutReferenceGuideSafeArea", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8safeAreayA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueACSgSi_tcfc", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueACSgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueSivp", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueSivg", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide", + "mangledName": "$s8PenNavUI33FloatingPanelLayoutReferenceGuideO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "FloatingPanelLayoutContentBoundingGuide", + "children": [ + { + "kind": "Var", + "name": "none", + "printedName": "none", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type) -> PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide@FloatingPanelLayoutContentBoundingGuideNone", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO4noneyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "superview", + "printedName": "superview", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type) -> PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide@FloatingPanelLayoutContentBoundingGuideSuperview", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO9superviewyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Var", + "name": "safeArea", + "printedName": "safeArea", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type) -> PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide@FloatingPanelLayoutContentBoundingGuideSafeArea", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8safeAreayA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 2 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueACSgSi_tcfc", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueACSgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueSivp", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueSivg", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide", + "mangledName": "$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "MessageUI", + "printedName": "MessageUI", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "SafariServices", + "printedName": "SafariServices", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "PIEventsDelegate", + "printedName": "PIEventsDelegate", + "children": [ + { + "kind": "Function", + "name": "onBackButtonPressed", + "printedName": "onBackButtonPressed()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP19onBackButtonPressedyyF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP19onBackButtonPressedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onPenNavUIDismiss", + "printedName": "onPenNavUIDismiss()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP02onaB9UIDismissyyF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP02onaB9UIDismissyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onReportIssue", + "printedName": "onReportIssue(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP13onReportIssueyyAA0H4TypeOF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP13onReportIssueyyAA0H4TypeOF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onShareLocation", + "printedName": "onShareLocation(link:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP15onShareLocation4linkySSSg_tF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP15onShareLocation4linkySSSg_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onSwitchCampus", + "printedName": "onSwitchCampus(campusId:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegateP14onSwitchCampus8campusIdySi_tF", + "mangledName": "$s8PenNavUI16PIEventsDelegateP14onSwitchCampus8campusIdySi_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onBackButtonPressed", + "printedName": "onBackButtonPressed()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE19onBackButtonPressedyyF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE19onBackButtonPressedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onPenNavUIDismiss", + "printedName": "onPenNavUIDismiss()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE02onaB9UIDismissyyF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE02onaB9UIDismissyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onReportIssue", + "printedName": "onReportIssue(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "IssueType", + "printedName": "PenNavUI.IssueType", + "usr": "s:8PenNavUI9IssueTypeO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE13onReportIssueyyAA0H4TypeOF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE13onReportIssueyyAA0H4TypeOF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onShareLocation", + "printedName": "onShareLocation(link:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE15onShareLocation4linkySSSg_tF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE15onShareLocation4linkySSSg_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onSwitchCampus", + "printedName": "onSwitchCampus(campusId:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16PIEventsDelegatePAAE14onSwitchCampus8campusIdySi_tF", + "mangledName": "$s8PenNavUI16PIEventsDelegatePAAE14onSwitchCampus8campusIdySi_tF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIEventsDelegate>", + "sugared_genericSig": "", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "s:8PenNavUI16PIEventsDelegateP", + "mangledName": "$s8PenNavUI16PIEventsDelegateP", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "QuartzCore", + "printedName": "QuartzCore", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavUITableUpdate", + "printedName": "PenNavUITableUpdate", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUITableUpdate", + "printedName": "PenNavUI.PenNavUITableUpdate", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUITableUpdate" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUITableUpdate(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUITableUpdate", + "printedName": "PenNavUI.PenNavUITableUpdate", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUITableUpdate" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB13UITableUpdateC12fetchRequestSo07NSFetchG0CyACGyFZ", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC12fetchRequestSo07NSFetchG0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "lastUpdateTime", + "printedName": "lastUpdateTime", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(py)lastUpdateTime", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC04lastE4TimeSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(im)lastUpdateTime", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC04lastE4TimeSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(im)setLastUpdateTime:", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC04lastE4TimeSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "tableName", + "printedName": "tableName", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(py)tableName", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC9tableNameSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(im)tableName", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC9tableNameSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavUITableUpdate(im)setTableName:", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC9tableNameSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)PenNavUITableUpdate", + "mangledName": "$s8PenNavUI0aB13UITableUpdateC", + "moduleName": "PenNavUI", + "objc_name": "PenNavUITableUpdate", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "SFSymbolRenderer", + "printedName": "SFSymbolRenderer", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(options:insets:insetsUltralight:insetsBlack:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "SFSymbolRenderer", + "printedName": "PenNavUI.SFSymbolRenderer", + "usr": "s:8PenNavUI16SFSymbolRendererV" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.CommandLine.Insets", + "usr": "s:8PenNavUI11CommandLineO6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI16SFSymbolRendererV7options6insets0G10Ultralight0G5Black9precisionAcA3SVGC7OptionsV_AA11CommandLineO6InsetsVA2PSitcfc", + "mangledName": "$s8PenNavUI16SFSymbolRendererV7options6insets0G10Ultralight0G5Black9precisionAcA3SVGC7OptionsV_AA11CommandLineO6InsetsVA2PSitcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "render", + "printedName": "render(regular:ultralight:black:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.URL?", + "children": [ + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI16SFSymbolRendererV6render7regular10ultralight5blackSS10Foundation3URLV_AJSgAKtKF", + "mangledName": "$s8PenNavUI16SFSymbolRendererV6render7regular10ultralight5blackSS10Foundation3URLV_AJSgAKtKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "throwing": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI16SFSymbolRendererV", + "mangledName": "$s8PenNavUI16SFSymbolRendererV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Darwin", + "printedName": "Darwin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavStyle", + "printedName": "PenNavStyle", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavStyle", + "printedName": "PenNavUI.PenNavStyle", + "usr": "c:@M@PenNavUI@objc(cs)PenNavStyle" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)PenNavStyle(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI0aB5StyleC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavStyle", + "printedName": "PenNavUI.PenNavStyle", + "usr": "c:@M@PenNavUI@objc(cs)PenNavStyle" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB5StyleC12fetchRequestSo07NSFetchF0CyACGyFZ", + "mangledName": "$s8PenNavUI0aB5StyleC12fetchRequestSo07NSFetchF0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "type", + "printedName": "type", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(py)type", + "mangledName": "$s8PenNavUI0aB5StyleC4typeSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(im)type", + "mangledName": "$s8PenNavUI0aB5StyleC4typeSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(im)setType:", + "mangledName": "$s8PenNavUI0aB5StyleC4typeSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "value", + "printedName": "value", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Data?", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(py)value", + "mangledName": "$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Data?", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(im)value", + "mangledName": "$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Foundation.Data?", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)PenNavStyle(im)setValue:", + "mangledName": "$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)PenNavStyle", + "mangledName": "$s8PenNavUI0aB5StyleC", + "moduleName": "PenNavUI", + "objc_name": "PenNavStyle", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "GeofenceConfiguration", + "printedName": "GeofenceConfiguration", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(baseURL:serviceName:clientId:clientKey:campusId:)", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceConfiguration", + "printedName": "PenNavUI.GeofenceConfiguration", + "usr": "s:8PenNavUI21GeofenceConfigurationV" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.Int?", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI21GeofenceConfigurationV7baseURL11serviceName8clientId0J3Key06campusK0ACSS_S3SSiSgtcfc", + "mangledName": "$s8PenNavUI21GeofenceConfigurationV7baseURL11serviceName8clientId0J3Key06campusK0ACSS_S3SSiSgtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI21GeofenceConfigurationV", + "mangledName": "$s8PenNavUI21GeofenceConfigurationV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "AVFoundation", + "printedName": "AVFoundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreHaptics", + "printedName": "CoreHaptics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CryptoKit", + "printedName": "CryptoKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreText", + "printedName": "CoreText", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "CampaignMessage", + "printedName": "CampaignMessage", + "children": [ + { + "kind": "Var", + "name": "title", + "printedName": "title", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI15CampaignMessageV5titleSSvp", + "mangledName": "$s8PenNavUI15CampaignMessageV5titleSSvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV5titleSSvg", + "mangledName": "$s8PenNavUI15CampaignMessageV5titleSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV5titleSSvs", + "mangledName": "$s8PenNavUI15CampaignMessageV5titleSSvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV5titleSSvM", + "mangledName": "$s8PenNavUI15CampaignMessageV5titleSSvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "description", + "printedName": "description", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI15CampaignMessageV11descriptionSSvp", + "mangledName": "$s8PenNavUI15CampaignMessageV11descriptionSSvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV11descriptionSSvg", + "mangledName": "$s8PenNavUI15CampaignMessageV11descriptionSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV11descriptionSSvs", + "mangledName": "$s8PenNavUI15CampaignMessageV11descriptionSSvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15CampaignMessageV11descriptionSSvM", + "mangledName": "$s8PenNavUI15CampaignMessageV11descriptionSSvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI15CampaignMessageV", + "mangledName": "$s8PenNavUI15CampaignMessageV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreText", + "printedName": "CoreText", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Network", + "printedName": "Network", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavInitializationDelegate", + "printedName": "PenNavInitializationDelegate", + "children": [ + { + "kind": "Function", + "name": "onPenNavInitializationSuccess", + "printedName": "onPenNavInitializationSuccess()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB22InitializationDelegateP02onabD7SuccessyyF", + "mangledName": "$s8PenNavUI0aB22InitializationDelegateP02onabD7SuccessyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PenNavInitializationDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "onPenNavInitializationError", + "printedName": "onPenNavInitializationError(errorType:errorDescription:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI0aB22InitializationDelegateP02onabD5Error9errorType0H11DescriptionyAA0aB7UIErrorO_SStF", + "mangledName": "$s8PenNavUI0aB22InitializationDelegateP02onabD5Error9errorType0H11DescriptionyAA0aB7UIErrorO_SStF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PenNavInitializationDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "s:8PenNavUI0aB22InitializationDelegateP", + "mangledName": "$s8PenNavUI0aB22InitializationDelegateP", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "SharedLocationCacheData", + "printedName": "SharedLocationCacheData", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(entity:insertInto:)", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + }, + { + "kind": "TypeNominal", + "name": "NSEntityDescription", + "printedName": "CoreData.NSEntityDescription", + "usr": "c:objc(cs)NSEntityDescription" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreData.NSManagedObjectContext?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSManagedObjectContext", + "printedName": "CoreData.NSManagedObjectContext", + "usr": "c:objc(cs)NSManagedObjectContext" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData(im)initWithEntity:insertIntoManagedObjectContext:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithEntity:insertIntoManagedObjectContext:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Nonisolated", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "fetchRequest", + "printedName": "fetchRequest()", + "children": [ + { + "kind": "TypeNominal", + "name": "NSFetchRequest", + "printedName": "CoreData.NSFetchRequest", + "children": [ + { + "kind": "TypeNominal", + "name": "SharedLocationCacheData", + "printedName": "PenNavUI.SharedLocationCacheData", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData" + } + ], + "usr": "c:objc(cs)NSFetchRequest" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI23SharedLocationCacheDataC12fetchRequestSo07NSFetchI0CyACGyFZ", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC12fetchRequestSo07NSFetchI0CyACGyFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "NonObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "edgeId", + "printedName": "edgeId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)edgeId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC6edgeIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)edgeId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC6edgeIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setEdgeId:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC6edgeIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "floorId", + "printedName": "floorId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)floorId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7floorIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)floorId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7floorIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setFloorId:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7floorIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "latitude", + "printedName": "latitude", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)latitude", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC8latitudeSdvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)latitude", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC8latitudeSdvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setLatitude:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC8latitudeSdvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "longitude", + "printedName": "longitude", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)longitude", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC9longitudeSdvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)longitude", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC9longitudeSdvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Double", + "printedName": "Swift.Double", + "usr": "s:Sd" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setLongitude:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC9longitudeSdvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "navigationAvoid", + "printedName": "navigationAvoid", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)navigationAvoid", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)navigationAvoid", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setNavigationAvoid:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "venueId", + "printedName": "venueId", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)venueId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7venueIds5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)venueId", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7venueIds5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setVenueId:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC7venueIds5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "x", + "printedName": "x", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)x", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1xs5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)x", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1xs5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setX:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1xs5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "y", + "printedName": "y", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Var", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(py)y", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1ys5Int16Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Dynamic", + "Nonisolated", + "AccessControl", + "NSManaged", + "ObjC" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)y", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1ys5Int16Vvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Int16", + "printedName": "Swift.Int16", + "usr": "s:s5Int16V" + } + ], + "declKind": "Accessor", + "usr": "c:@CM@PenNavUI@objc(cs)SharedLocationCacheData(im)setY:", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC1ys5Int16Vvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "isFromExtension": true, + "accessorKind": "set" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)SharedLocationCacheData", + "mangledName": "$s8PenNavUI23SharedLocationCacheDataC", + "moduleName": "PenNavUI", + "objc_name": "SharedLocationCacheData", + "declAttributes": [ + "Nonisolated", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSManagedObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "CoreData.NSManagedObject", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "ObservableObject", + "printedName": "ObservableObject", + "children": [ + { + "kind": "TypeWitness", + "name": "ObjectWillChangePublisher", + "printedName": "ObjectWillChangePublisher", + "children": [ + { + "kind": "TypeNominal", + "name": "ObservableObjectPublisher", + "printedName": "Combine.ObservableObjectPublisher", + "usr": "s:7Combine25ObservableObjectPublisherC" + } + ] + } + ], + "usr": "s:7Combine16ObservableObjectP", + "mangledName": "$s7Combine16ObservableObjectP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Network", + "printedName": "Network", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelState", + "printedName": "FloatingPanelState", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelState?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI18FloatingPanelStateC8rawValueACSgSS_tcfc", + "mangledName": "$s8PenNavUI18FloatingPanelStateC8rawValueACSgSS_tcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "Required" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:order:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)initWithRawValue:order:", + "mangledName": "$s8PenNavUI18FloatingPanelStateC8rawValue5orderACSS_Sitcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithRawValue:order:", + "declAttributes": [ + "AccessControl", + "ObjC" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI18FloatingPanelStateC8rawValueSSvp", + "mangledName": "$s8PenNavUI18FloatingPanelStateC8rawValueSSvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "HasStorage", + "AccessControl", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI18FloatingPanelStateC8rawValueSSvg", + "mangledName": "$s8PenNavUI18FloatingPanelStateC8rawValueSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "order", + "printedName": "order", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI18FloatingPanelStateC5orderSivp", + "mangledName": "$s8PenNavUI18FloatingPanelStateC5orderSivp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "HasStorage", + "AccessControl", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI18FloatingPanelStateC5orderSivg", + "mangledName": "$s8PenNavUI18FloatingPanelStateC5orderSivg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "copy", + "printedName": "copy(with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "ProtocolComposition", + "printedName": "Any" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "ObjectiveC.NSZone?", + "children": [ + { + "kind": "TypeNominal", + "name": "NSZone", + "printedName": "ObjectiveC.NSZone", + "usr": "s:10ObjectiveC6NSZoneV" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)copyWithZone:", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4copy4withyp10ObjectiveC6NSZoneVSg_tF", + "moduleName": "PenNavUI", + "objc_name": "copyWithZone:", + "declAttributes": [ + "ObjC", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "description", + "printedName": "description", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(py)description", + "mangledName": "$s8PenNavUI18FloatingPanelStateC11descriptionSSvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "description", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)description", + "mangledName": "$s8PenNavUI18FloatingPanelStateC11descriptionSSvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "description", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "debugDescription", + "printedName": "debugDescription", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(py)debugDescription", + "mangledName": "$s8PenNavUI18FloatingPanelStateC16debugDescriptionSSvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "debugDescription", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)debugDescription", + "mangledName": "$s8PenNavUI18FloatingPanelStateC16debugDescriptionSSvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "debugDescription", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "full", + "printedName": "full", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cpy)Full", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4fullACvpZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "Full", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cm)Full", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4fullACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "half", + "printedName": "half", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cpy)Half", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4halfACvpZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "Half", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cm)Half", + "mangledName": "$s8PenNavUI18FloatingPanelStateC4halfACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "tip", + "printedName": "tip", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cpy)Tip", + "mangledName": "$s8PenNavUI18FloatingPanelStateC3tipACvpZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "Tip", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cm)Tip", + "mangledName": "$s8PenNavUI18FloatingPanelStateC3tipACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "hidden", + "printedName": "hidden", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cpy)Hidden", + "mangledName": "$s8PenNavUI18FloatingPanelStateC6hiddenACvpZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "Hidden", + "declAttributes": [ + "HasInitialValue", + "Final", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(cm)Hidden", + "mangledName": "$s8PenNavUI18FloatingPanelStateC6hiddenACvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState(im)init", + "mangledName": "$s8PenNavUI18FloatingPanelStateCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState", + "mangledName": "$s8PenNavUI18FloatingPanelStateC", + "moduleName": "PenNavUI", + "isOpen": true, + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreText", + "printedName": "CoreText", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "AsynchronousOperation", + "printedName": "AsynchronousOperation", + "children": [ + { + "kind": "Var", + "name": "isAsynchronous", + "printedName": "isAsynchronous", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(py)asynchronous", + "mangledName": "$s8PenNavUI21AsynchronousOperationC02isD0Sbvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "asynchronous", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "Override" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)isAsynchronous", + "mangledName": "$s8PenNavUI21AsynchronousOperationC02isD0Sbvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "isAsynchronous", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isExecuting", + "printedName": "isExecuting", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(py)executing", + "mangledName": "$s8PenNavUI21AsynchronousOperationC11isExecutingSbvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "executing", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "SetterAccess", + "Override" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)isExecuting", + "mangledName": "$s8PenNavUI21AsynchronousOperationC11isExecutingSbvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "isExecuting", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isFinished", + "printedName": "isFinished", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(py)finished", + "mangledName": "$s8PenNavUI21AsynchronousOperationC10isFinishedSbvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "finished", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "SetterAccess", + "Override" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)isFinished", + "mangledName": "$s8PenNavUI21AsynchronousOperationC10isFinishedSbvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "isFinished", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "completeOperation", + "printedName": "completeOperation()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI21AsynchronousOperationC08completeE0yyF", + "mangledName": "$s8PenNavUI21AsynchronousOperationC08completeE0yyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "start", + "printedName": "start()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)start", + "mangledName": "$s8PenNavUI21AsynchronousOperationC5startyyF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "start", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "Override" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "AsynchronousOperation", + "printedName": "PenNavUI.AsynchronousOperation", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation(im)init", + "mangledName": "$s8PenNavUI21AsynchronousOperationCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)AsynchronousOperation", + "mangledName": "$s8PenNavUI21AsynchronousOperationC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSOperation", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "Foundation.Operation", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "SurfaceAppearance", + "printedName": "SurfaceAppearance", + "children": [ + { + "kind": "TypeDecl", + "name": "Shadow", + "printedName": "Shadow", + "children": [ + { + "kind": "Var", + "name": "hidden", + "printedName": "hidden", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "color", + "printedName": "color", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "offset", + "printedName": "offset", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "opacity", + "printedName": "opacity", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Float", + "printedName": "Swift.Float", + "usr": "s:Sf" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "radius", + "printedName": "radius", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6radius14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6radius14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6radius14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6radius14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "spread", + "printedName": "spread", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6spread14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6spread14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6spread14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC6spread14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "Shadow", + "printedName": "PenNavUI.SurfaceAppearance.Shadow", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowCAEycfc", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowCAEycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC6ShadowC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelSurfaceAppearanceShadow", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Var", + "name": "backgroundColor", + "printedName": "backgroundColor", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)backgroundColor", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)backgroundColor", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setBackgroundColor:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "cornerRadius", + "printedName": "cornerRadius", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)cornerRadius", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)cornerRadius", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setCornerRadius:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC12cornerRadius14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "cornerCurve", + "printedName": "cornerCurve", + "children": [ + { + "kind": "TypeNominal", + "name": "CALayerCornerCurve", + "printedName": "QuartzCore.CALayerCornerCurve", + "usr": "c:@T@CALayerCornerCurve" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)cornerCurve", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avp", + "moduleName": "PenNavUI", + "intro_iOS": "13.0", + "declAttributes": [ + "AccessControl", + "Available", + "RawDocComment", + "ObjC" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CALayerCornerCurve", + "printedName": "QuartzCore.CALayerCornerCurve", + "usr": "c:@T@CALayerCornerCurve" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)cornerCurve", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CALayerCornerCurve", + "printedName": "QuartzCore.CALayerCornerCurve", + "usr": "c:@T@CALayerCornerCurve" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setCornerCurve:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM", + "moduleName": "PenNavUI", + "implicit": true, + "intro_iOS": "13.0", + "declAttributes": [ + "Available" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "shadows", + "printedName": "shadows", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[PenNavUI.SurfaceAppearance.Shadow]", + "children": [ + { + "kind": "TypeNominal", + "name": "Shadow", + "printedName": "PenNavUI.SurfaceAppearance.Shadow", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC" + } + ], + "usr": "s:Sa" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)shadows", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[PenNavUI.SurfaceAppearance.Shadow]", + "children": [ + { + "kind": "TypeNominal", + "name": "Shadow", + "printedName": "PenNavUI.SurfaceAppearance.Shadow", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC" + } + ], + "usr": "s:Sa" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)shadows", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[PenNavUI.SurfaceAppearance.Shadow]", + "children": [ + { + "kind": "TypeNominal", + "name": "Shadow", + "printedName": "PenNavUI.SurfaceAppearance.Shadow", + "usr": "s:8PenNavUI17SurfaceAppearanceC6ShadowC" + } + ], + "usr": "s:Sa" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setShadows:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "borderColor", + "printedName": "borderColor", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)borderColor", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)borderColor", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setBorderColor:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "borderWidth", + "printedName": "borderWidth", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(py)borderWidth", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)borderWidth", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)setBorderWidth:", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17SurfaceAppearanceC11borderWidth14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceAppearance", + "printedName": "PenNavUI.SurfaceAppearance", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance(im)init", + "mangledName": "$s8PenNavUI17SurfaceAppearanceCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance", + "mangledName": "$s8PenNavUI17SurfaceAppearanceC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelSurfaceAppearance", + "declAttributes": [ + "AccessControl", + "ObjCMembers", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "SurfaceView", + "printedName": "SurfaceView", + "children": [ + { + "kind": "Var", + "name": "grabberHandle", + "printedName": "grabberHandle", + "children": [ + { + "kind": "TypeNominal", + "name": "GrabberView", + "printedName": "PenNavUI.GrabberView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)grabberHandle", + "mangledName": "$s8PenNavUI11SurfaceViewC13grabberHandleAA07GrabberE0Cvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "GrabberView", + "printedName": "PenNavUI.GrabberView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)grabberHandle", + "mangledName": "$s8PenNavUI11SurfaceViewC13grabberHandleAA07GrabberE0Cvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "grabberHandlePadding", + "printedName": "grabberHandlePadding", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)grabberHandlePadding", + "mangledName": "$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)grabberHandlePadding", + "mangledName": "$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setGrabberHandlePadding:", + "mangledName": "$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC20grabberHandlePadding14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "grabberAreaOffset", + "printedName": "grabberAreaOffset", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)grabberAreaOffset", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)grabberAreaOffset", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setGrabberAreaOffset:", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC17grabberAreaOffset14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "grabberHandleSize", + "printedName": "grabberHandleSize", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)grabberHandleSize", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)grabberHandleSize", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setGrabberHandleSize:", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "contentView", + "printedName": "contentView", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "UIKit.UIView?" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)contentView", + "mangledName": "$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "ReferenceOwnership", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "ownership": 1, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIView?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)contentView", + "mangledName": "$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIView?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setContentView:", + "mangledName": "$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvM", + "mangledName": "$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "contentPadding", + "printedName": "contentPadding", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)contentPadding", + "mangledName": "$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)contentPadding", + "mangledName": "$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setContentPadding:", + "mangledName": "$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "backgroundColor", + "printedName": "backgroundColor", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)backgroundColor", + "mangledName": "$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "backgroundColor", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)backgroundColor", + "mangledName": "$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "backgroundColor", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIColor?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setBackgroundColor:", + "mangledName": "$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvs", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "setBackgroundColor:", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "set" + } + ] + }, + { + "kind": "Var", + "name": "appearance", + "printedName": "appearance", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceAppearance", + "printedName": "PenNavUI.SurfaceAppearance", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)appearance", + "mangledName": "$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceAppearance", + "printedName": "PenNavUI.SurfaceAppearance", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)appearance", + "mangledName": "$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "SurfaceAppearance", + "printedName": "PenNavUI.SurfaceAppearance", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceAppearance" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setAppearance:", + "mangledName": "$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvM", + "mangledName": "$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "containerMargins", + "printedName": "containerMargins", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)containerMargins", + "mangledName": "$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)containerMargins", + "mangledName": "$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)setContainerMargins:", + "mangledName": "$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvM", + "mangledName": "$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "containerView", + "printedName": "containerView", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)containerView", + "mangledName": "$s8PenNavUI11SurfaceViewC09containerE0So6UIViewCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)containerView", + "mangledName": "$s8PenNavUI11SurfaceViewC09containerE0So6UIViewCvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "requiresConstraintBasedLayout", + "printedName": "requiresConstraintBasedLayout", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(cpy)requiresConstraintBasedLayout", + "mangledName": "$s8PenNavUI11SurfaceViewC29requiresConstraintBasedLayoutSbvpZ", + "moduleName": "PenNavUI", + "static": true, + "overriding": true, + "objc_name": "requiresConstraintBasedLayout", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(cm)requiresConstraintBasedLayout", + "mangledName": "$s8PenNavUI11SurfaceViewC29requiresConstraintBasedLayoutSbvgZ", + "moduleName": "PenNavUI", + "static": true, + "overriding": true, + "objc_name": "requiresConstraintBasedLayout", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(coder:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SurfaceView?", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceView", + "printedName": "PenNavUI.SurfaceView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "NSCoder", + "printedName": "Foundation.NSCoder", + "usr": "c:objc(cs)NSCoder" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)initWithCoder:", + "mangledName": "$s8PenNavUI11SurfaceViewC5coderACSgSo7NSCoderC_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "initWithCoder:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "AccessControl", + "Required" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "updateConstraints", + "printedName": "updateConstraints()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)updateConstraints", + "mangledName": "$s8PenNavUI11SurfaceViewC17updateConstraintsyyF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "updateConstraints", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "layoutSubviews", + "printedName": "layoutSubviews()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)layoutSubviews", + "mangledName": "$s8PenNavUI11SurfaceViewC14layoutSubviewsyyF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "layoutSubviews", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "intrinsicContentSize", + "printedName": "intrinsicContentSize", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(py)intrinsicContentSize", + "mangledName": "$s8PenNavUI11SurfaceViewC20intrinsicContentSizeSo6CGSizeVvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "intrinsicContentSize", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView(im)intrinsicContentSize", + "mangledName": "$s8PenNavUI11SurfaceViewC20intrinsicContentSizeSo6CGSizeVvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "intrinsicContentSize", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView", + "mangledName": "$s8PenNavUI11SurfaceViewC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelSurfaceView", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjCMembers", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)UIView", + "hasMissingDesignatedInitializers": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "UIKit.UIView", + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + }, + { + "kind": "Conformance", + "name": "__DefaultCustomPlaygroundQuickLookable", + "printedName": "__DefaultCustomPlaygroundQuickLookable", + "usr": "s:s38__DefaultCustomPlaygroundQuickLookableP", + "mangledName": "$ss38__DefaultCustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UserNotifications", + "printedName": "UserNotifications", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "LinkPresentation", + "printedName": "LinkPresentation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "PenNavUIError", + "printedName": "PenNavUIError", + "children": [ + { + "kind": "Var", + "name": "missingBaseUrl", + "printedName": "missingBaseUrl", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO14missingBaseUrlyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO14missingBaseUrlyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingDataServiceName", + "printedName": "missingDataServiceName", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO22missingDataServiceNameyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO22missingDataServiceNameyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingPositionServiceName", + "printedName": "missingPositionServiceName", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO26missingPositionServiceNameyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO26missingPositionServiceNameyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingRootController", + "printedName": "missingRootController", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO21missingRootControlleryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO21missingRootControlleryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingViewContainer", + "printedName": "missingViewContainer", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO20missingViewContaineryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO20missingViewContaineryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingClientId", + "printedName": "missingClientId", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO15missingClientIdyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO15missingClientIdyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingClientName", + "printedName": "missingClientName", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO17missingClientNameyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO17missingClientNameyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "invalidClientKey", + "printedName": "invalidClientKey", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO16invalidClientKeyyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO16invalidClientKeyyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "unauthorized", + "printedName": "unauthorized", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO12unauthorizedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO12unauthorizedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noInternetConnection", + "printedName": "noInternetConnection", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO20noInternetConnectionyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO20noInternetConnectionyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "bluetoothTurnedOff", + "printedName": "bluetoothTurnedOff", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO18bluetoothTurnedOffyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO18bluetoothTurnedOffyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "locationServicesTurnedOff", + "printedName": "locationServicesTurnedOff", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO25locationServicesTurnedOffyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO25locationServicesTurnedOffyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "loadingDataError", + "printedName": "loadingDataError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO16loadingDataErroryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO16loadingDataErroryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "osNotSupported", + "printedName": "osNotSupported", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO14osNotSupportedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO14osNotSupportedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "permissionsNotGranted", + "printedName": "permissionsNotGranted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO21permissionsNotGrantedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO21permissionsNotGrantedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "sensorsInitializationError", + "printedName": "sensorsInitializationError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO26sensorsInitializationErroryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO26sensorsInitializationErroryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "unknownError", + "printedName": "unknownError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO12unknownErroryA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO12unknownErroryA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "locationPermissionNotGranted", + "printedName": "locationPermissionNotGranted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO28locationPermissionNotGrantedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO28locationPermissionNotGrantedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "bluetoothPermissionNotGranted", + "printedName": "bluetoothPermissionNotGranted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO29bluetoothPermissionNotGrantedyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO29bluetoothPermissionNotGrantedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "invalidCampusId", + "printedName": "invalidCampusId", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO15invalidCampusIdyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO15invalidCampusIdyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noCampusListFound", + "printedName": "noCampusListFound", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO17noCampusListFoundyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO17noCampusListFoundyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "buildCancelled", + "printedName": "buildCancelled", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.PenNavUIError.Type) -> PenNavUI.PenNavUIError", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.PenNavUIError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI0aB7UIErrorO14buildCancelledyA2CmF", + "mangledName": "$s8PenNavUI0aB7UIErrorO14buildCancelledyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "errorDescription", + "printedName": "errorDescription", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB7UIErrorO16errorDescriptionSSvp", + "mangledName": "$s8PenNavUI0aB7UIErrorO16errorDescriptionSSvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB7UIErrorO16errorDescriptionSSvg", + "mangledName": "$s8PenNavUI0aB7UIErrorO16errorDescriptionSSvg", + "moduleName": "PenNavUI", + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.PenNavUIError?", + "children": [ + { + "kind": "TypeNominal", + "name": "PenNavUIError", + "printedName": "PenNavUI.PenNavUIError", + "usr": "s:8PenNavUI0aB7UIErrorO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI0aB7UIErrorO8rawValueACSgSS_tcfc", + "mangledName": "$s8PenNavUI0aB7UIErrorO8rawValueACSgSS_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI0aB7UIErrorO8rawValueSSvp", + "mangledName": "$s8PenNavUI0aB7UIErrorO8rawValueSSvp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI0aB7UIErrorO8rawValueSSvg", + "mangledName": "$s8PenNavUI0aB7UIErrorO8rawValueSSvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI0aB7UIErrorO", + "mangledName": "$s8PenNavUI0aB7UIErrorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "enumRawTypeName": "String", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + }, + { + "kind": "Conformance", + "name": "LocalizedError", + "printedName": "LocalizedError", + "usr": "s:10Foundation14LocalizedErrorP", + "mangledName": "$s10Foundation14LocalizedErrorP" + }, + { + "kind": "Conformance", + "name": "Error", + "printedName": "Error", + "usr": "s:s5ErrorP", + "mangledName": "$ss5ErrorP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "ValidationError", + "printedName": "ValidationError", + "children": [ + { + "kind": "Var", + "name": "noClientID", + "printedName": "noClientID", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO10noClientIDyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO10noClientIDyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noClientNameKey", + "printedName": "noClientNameKey", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO15noClientNameKeyyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO15noClientNameKeyyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noServiesName", + "printedName": "noServiesName", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO13noServiesNameyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO13noServiesNameyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "noBaseUrl", + "printedName": "noBaseUrl", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO9noBaseUrlyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO9noBaseUrlyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "missingFonts", + "printedName": "missingFonts", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.ValidationError.Type) -> PenNavUI.ValidationError", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.ValidationError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI15ValidationErrorO12missingFontsyA2CmF", + "mangledName": "$s8PenNavUI15ValidationErrorO12missingFontsyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + }, + { + "kind": "TypeNominal", + "name": "ValidationError", + "printedName": "PenNavUI.ValidationError", + "usr": "s:8PenNavUI15ValidationErrorO" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI15ValidationErrorO2eeoiySbAC_ACtFZ", + "mangledName": "$s8PenNavUI15ValidationErrorO2eeoiySbAC_ACtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "hashValue", + "printedName": "hashValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI15ValidationErrorO9hashValueSivp", + "mangledName": "$s8PenNavUI15ValidationErrorO9hashValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI15ValidationErrorO9hashValueSivg", + "mangledName": "$s8PenNavUI15ValidationErrorO9hashValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "hash", + "printedName": "hash(into:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Hasher", + "printedName": "Swift.Hasher", + "paramValueOwnership": "InOut", + "usr": "s:s6HasherV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI15ValidationErrorO4hash4intoys6HasherVz_tF", + "mangledName": "$s8PenNavUI15ValidationErrorO4hash4intoys6HasherVz_tF", + "moduleName": "PenNavUI", + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI15ValidationErrorO", + "mangledName": "$s8PenNavUI15ValidationErrorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Error", + "printedName": "Error", + "usr": "s:s5ErrorP", + "mangledName": "$ss5ErrorP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelPanGestureRecognizer", + "printedName": "FloatingPanelPanGestureRecognizer", + "children": [ + { + "kind": "Function", + "name": "touchesBegan", + "printedName": "touchesBegan(_:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Set", + "printedName": "Swift.Set", + "children": [ + { + "kind": "TypeNominal", + "name": "UITouch", + "printedName": "UIKit.UITouch", + "usr": "c:objc(cs)UITouch" + } + ], + "usr": "s:Sh" + }, + { + "kind": "TypeNominal", + "name": "UIEvent", + "printedName": "UIKit.UIEvent", + "usr": "c:objc(cs)UIEvent" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(im)touchesBegan:withEvent:", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC12touchesBegan_4withyShySo7UITouchCG_So7UIEventCtF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "touchesBegan:withEvent:", + "declAttributes": [ + "Final", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "delegate", + "printedName": "delegate", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(py)delegate", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "delegate", + "declAttributes": [ + "Final", + "ObjC", + "Preconcurrency", + "Custom", + "ReferenceOwnership", + "Override", + "AccessControl", + "RawDocComment" + ], + "ownership": 1, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(im)delegate", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "delegate", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(im)setDelegate:", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvs", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "setDelegate:", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvM", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "delegateOrigin", + "printedName": "delegateOrigin", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvp", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "Preconcurrency", + "Custom", + "AccessControl", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvg", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "delegateProxy", + "printedName": "delegateProxy", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvp", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Final", + "Preconcurrency", + "Custom", + "HasStorage", + "ReferenceOwnership", + "AccessControl", + "RawDocComment" + ], + "ownership": 1, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvg", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any UIKit.UIGestureRecognizerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIGestureRecognizerDelegate", + "printedName": "any UIKit.UIGestureRecognizerDelegate", + "usr": "c:objc(pl)UIGestureRecognizerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvs", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvM", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(target:action:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPanGestureRecognizer", + "printedName": "PenNavUI.FloatingPanelPanGestureRecognizer", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Any?", + "children": [ + { + "kind": "TypeNominal", + "name": "ProtocolComposition", + "printedName": "Any" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "ObjectiveC.Selector?", + "children": [ + { + "kind": "TypeNominal", + "name": "Selector", + "printedName": "ObjectiveC.Selector", + "usr": "s:10ObjectiveC8SelectorV" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer(im)initWithTarget:action:", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC6target6actionACypSg_10ObjectiveC8SelectorVSgtcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithTarget:action:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer", + "mangledName": "$s8PenNavUI33FloatingPanelPanGestureRecognizerC", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "Final", + "AccessControl", + "RawDocComment", + "ObjC" + ], + "superclassUsr": "c:objc(cs)UIPanGestureRecognizer", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "UIKit.UIPanGestureRecognizer", + "UIKit.UIGestureRecognizer", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "GrabberView", + "printedName": "GrabberView", + "children": [ + { + "kind": "Var", + "name": "barColor", + "printedName": "barColor", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI11GrabberViewC8barColorSo7UIColorCvp", + "mangledName": "$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11GrabberViewC8barColorSo7UIColorCvg", + "mangledName": "$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIColor", + "printedName": "UIKit.UIColor", + "usr": "c:objc(cs)UIColor" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11GrabberViewC8barColorSo7UIColorCvs", + "mangledName": "$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI11GrabberViewC8barColorSo7UIColorCvM", + "mangledName": "$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(coder:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.GrabberView?", + "children": [ + { + "kind": "TypeNominal", + "name": "GrabberView", + "printedName": "PenNavUI.GrabberView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "NSCoder", + "printedName": "Foundation.NSCoder", + "usr": "c:objc(cs)NSCoder" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView(im)initWithCoder:", + "mangledName": "$s8PenNavUI11GrabberViewC5coderACSgSo7NSCoderC_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "initWithCoder:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "AccessControl", + "Required" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "layoutSubviews", + "printedName": "layoutSubviews()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView(im)layoutSubviews", + "mangledName": "$s8PenNavUI11GrabberViewC14layoutSubviewsyyF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "layoutSubviews", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "hitTest", + "printedName": "hitTest(_:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIView?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIView", + "printedName": "UIKit.UIView", + "usr": "c:objc(cs)UIView" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIEvent?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEvent", + "printedName": "UIKit.UIEvent", + "usr": "c:objc(cs)UIEvent" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView(im)hitTest:withEvent:", + "mangledName": "$s8PenNavUI11GrabberViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtF", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "hitTest:withEvent:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(frame:)", + "children": [ + { + "kind": "TypeNominal", + "name": "GrabberView", + "printedName": "PenNavUI.GrabberView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView" + }, + { + "kind": "TypeNominal", + "name": "CGRect", + "printedName": "CoreFoundation.CGRect", + "usr": "c:@S@CGRect" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView(im)initWithFrame:", + "mangledName": "$s8PenNavUI11GrabberViewC5frameACSo6CGRectV_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithFrame:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelGrabberView", + "mangledName": "$s8PenNavUI11GrabberViewC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelGrabberView", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)UIView", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "UIKit.UIView", + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + }, + { + "kind": "Conformance", + "name": "__DefaultCustomPlaygroundQuickLookable", + "printedName": "__DefaultCustomPlaygroundQuickLookable", + "usr": "s:s38__DefaultCustomPlaygroundQuickLookableP", + "mangledName": "$ss38__DefaultCustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelPosition", + "printedName": "FloatingPanelPosition", + "children": [ + { + "kind": "Var", + "name": "top", + "printedName": "top", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelPosition.Type) -> PenNavUI.FloatingPanelPosition", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelPosition.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition@FloatingPanelPositionTop", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO3topyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelPosition.Type) -> PenNavUI.FloatingPanelPosition", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelPosition.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition@FloatingPanelPositionLeft", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO4leftyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Var", + "name": "bottom", + "printedName": "bottom", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelPosition.Type) -> PenNavUI.FloatingPanelPosition", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelPosition.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition@FloatingPanelPositionBottom", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO6bottomyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 2 + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelPosition.Type) -> PenNavUI.FloatingPanelPosition", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelPosition.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition@FloatingPanelPositionRight", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO5rightyA2CmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 3 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelPosition?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI21FloatingPanelPositionO8rawValueACSgSi_tcfc", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO8rawValueACSgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI21FloatingPanelPositionO8rawValueSivp", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI21FloatingPanelPositionO8rawValueSivg", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition", + "mangledName": "$s8PenNavUI21FloatingPanelPositionO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "FloatingPanelLayoutAnchoring", + "children": [ + { + "kind": "Var", + "name": "referenceGuide", + "printedName": "referenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring(py)referenceGuide", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP14referenceGuideAA0def9ReferenceI0Ovp", + "moduleName": "PenNavUI", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring(im)referenceGuide", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP14referenceGuideAA0def9ReferenceI0Ovg", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayoutAnchoring>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "layoutConstraints", + "printedName": "layoutConstraints(_:for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring(im)layoutConstraints:for:", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelLayoutAnchoring>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "ObjC" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 : AnyObject>", + "sugared_genericSig": "", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelLayoutAnchor", + "printedName": "FloatingPanelLayoutAnchor", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(absoluteInset:edge:referenceGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)initWithAbsoluteInset:edge:referenceGuide:", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC13absoluteInset4edge14referenceGuideAC12CoreGraphics7CGFloatV_AA0dE13ReferenceEdgeOAA0defpL0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithAbsoluteInset:edge:referenceGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(fractionalInset:edge:referenceGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelReferenceEdge", + "printedName": "PenNavUI.FloatingPanelReferenceEdge", + "usr": "c:@M@PenNavUI@E@FloatingPanelReferenceEdge" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)initWithFractionalInset:edge:referenceGuide:", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC15fractionalInset4edge14referenceGuideAC12CoreGraphics7CGFloatV_AA0dE13ReferenceEdgeOAA0defpL0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithFractionalInset:edge:referenceGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "referenceGuide", + "printedName": "referenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(py)referenceGuide", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC14referenceGuideAA0def9ReferenceI0Ovp", + "moduleName": "PenNavUI", + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC", + "HasStorage", + "AccessControl", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)referenceGuide", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC14referenceGuideAA0def9ReferenceI0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)init", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "layoutConstraints", + "printedName": "layoutConstraints(_:for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)FloatingPanelLayoutAnchor(im)layoutConstraints:for:", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF", + "moduleName": "PenNavUI", + "objc_name": "layoutConstraints:for:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelLayoutAnchor", + "mangledName": "$s8PenNavUI25FloatingPanelLayoutAnchorC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "Final", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelIntrinsicLayoutAnchor", + "printedName": "FloatingPanelIntrinsicLayoutAnchor", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(absoluteOffset:referenceGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelIntrinsicLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelIntrinsicLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "hasDefaultArg": true, + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)initWithAbsoluteOffset:referenceGuide:", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14absoluteOffset14referenceGuideAC12CoreGraphics7CGFloatV_AA0deg9ReferenceL0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithAbsoluteOffset:referenceGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(fractionalOffset:referenceGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelIntrinsicLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelIntrinsicLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "hasDefaultArg": true, + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)initWithFractionalOffset:referenceGuide:", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC16fractionalOffset14referenceGuideAC12CoreGraphics7CGFloatV_AA0deg9ReferenceL0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithFractionalOffset:referenceGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "referenceGuide", + "printedName": "referenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(py)referenceGuide", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovp", + "moduleName": "PenNavUI", + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC", + "HasStorage", + "AccessControl", + "RawDocComment" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)referenceGuide", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelIntrinsicLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelIntrinsicLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)init", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "layoutConstraints", + "printedName": "layoutConstraints(_:for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor(im)layoutConstraints:for:", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF", + "moduleName": "PenNavUI", + "objc_name": "layoutConstraints:for:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelIntrinsicLayoutAnchor", + "mangledName": "$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "Final", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelAdaptiveLayoutAnchor", + "printedName": "FloatingPanelAdaptiveLayoutAnchor", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(absoluteOffset:contentLayout:referenceGuide:contentBoundingGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelAdaptiveLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelAdaptiveLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UILayoutGuide", + "printedName": "UIKit.UILayoutGuide", + "usr": "c:objc(cs)UILayoutGuide" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "hasDefaultArg": true, + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)initWithAbsoluteOffset:contentLayout:referenceGuide:contentBoundingGuide:", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14absoluteOffset07contentG014referenceGuide0k8BoundingM0AC12CoreGraphics7CGFloatV_So08UILayoutM0CAA0deg9ReferenceM0OAA0deg7ContentnM0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithAbsoluteOffset:contentLayout:referenceGuide:contentBoundingGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(fractionalOffset:contentLayout:referenceGuide:contentBoundingGuide:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelAdaptiveLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelAdaptiveLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UILayoutGuide", + "printedName": "UIKit.UILayoutGuide", + "usr": "c:objc(cs)UILayoutGuide" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "hasDefaultArg": true, + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)initWithFractionalOffset:contentLayout:referenceGuide:contentBoundingGuide:", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC16fractionalOffset07contentG014referenceGuide0k8BoundingM0AC12CoreGraphics7CGFloatV_So08UILayoutM0CAA0deg9ReferenceM0OAA0deg7ContentnM0Otcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithFractionalOffset:contentLayout:referenceGuide:contentBoundingGuide:", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "referenceGuide", + "printedName": "referenceGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(py)referenceGuide", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovp", + "moduleName": "PenNavUI", + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutReferenceGuide", + "printedName": "PenNavUI.FloatingPanelLayoutReferenceGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutReferenceGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)referenceGuide", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "objc_name": "referenceGuide", + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "contentBoundingGuide", + "printedName": "contentBoundingGuide", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(py)contentBoundingGuide", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC20contentBoundingGuideAA0deg7ContentjK0Ovp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "HasStorage", + "AccessControl", + "ObjC" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayoutContentBoundingGuide", + "printedName": "PenNavUI.FloatingPanelLayoutContentBoundingGuide", + "usr": "c:@M@PenNavUI@E@FloatingPanelLayoutContentBoundingGuide" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)contentBoundingGuide", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC20contentBoundingGuideAA0deg7ContentjK0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelAdaptiveLayoutAnchor", + "printedName": "PenNavUI.FloatingPanelAdaptiveLayoutAnchor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)init", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "layoutConstraints", + "printedName": "layoutConstraints(_:for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Array", + "printedName": "[UIKit.NSLayoutConstraint]", + "children": [ + { + "kind": "TypeNominal", + "name": "NSLayoutConstraint", + "printedName": "UIKit.NSLayoutConstraint", + "usr": "c:objc(cs)NSLayoutConstraint" + } + ], + "usr": "s:Sa" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelPosition", + "printedName": "PenNavUI.FloatingPanelPosition", + "usr": "c:@M@PenNavUI@E@FloatingPanelPosition" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor(im)layoutConstraints:for:", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF", + "moduleName": "PenNavUI", + "objc_name": "layoutConstraints:for:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelAdaptiveLayoutAnchor", + "mangledName": "$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "Final", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)NSObject", + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "FloatingPanelLayoutAnchoring", + "printedName": "FloatingPanelLayoutAnchoring", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayoutAnchoring", + "mangledName": "$s8PenNavUI28FloatingPanelLayoutAnchoringP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "ImageCache", + "printedName": "ImageCache", + "children": [ + { + "kind": "Function", + "name": "getImage", + "printedName": "getImage(_:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(UIKit.UIImage?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + } + ] + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI10ImageCacheC03getD0_10completiony10Foundation3URLV_ySo7UIImageCSgctF", + "mangledName": "$s8PenNavUI10ImageCacheC03getD0_10completiony10Foundation3URLV_ySo7UIImageCSgctF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getImageFromDocuments", + "printedName": "getImageFromDocuments(url:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI10ImageCacheC03getD13FromDocuments3urlSo7UIImageCSg10Foundation3URLV_tF", + "mangledName": "$s8PenNavUI10ImageCacheC03getD13FromDocuments3urlSo7UIImageCSg10Foundation3URLV_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "getSVG", + "printedName": "getSVG(withURL:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(UIKit.UIImage?) -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + } + ] + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF", + "mangledName": "$s8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "s:8PenNavUI10ImageCacheC", + "mangledName": "$s8PenNavUI10ImageCacheC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "SVGRenderer", + "printedName": "SVGRenderer", + "children": [ + { + "kind": "Function", + "name": "makeExpanded", + "printedName": "makeExpanded(path:transform:precision:)", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "hasDefaultArg": true, + "usr": "s:Si" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI11SVGRendererV12makeExpanded4path9transform9precisionS2S_SSSitKFZ", + "mangledName": "$s8PenNavUI11SVGRendererV12makeExpanded4path9transform9precisionS2S_SSSitKFZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "throwing": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI11SVGRendererV", + "mangledName": "$s8PenNavUI11SVGRendererV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreGraphics", + "printedName": "CoreGraphics", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "SVG", + "printedName": "SVG", + "children": [ + { + "kind": "Var", + "name": "size", + "printedName": "size", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC4sizeSo6CGSizeVvp", + "mangledName": "$s8PenNavUI3SVGC4sizeSo6CGSizeVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC4sizeSo6CGSizeVvg", + "mangledName": "$s8PenNavUI3SVGC4sizeSo6CGSizeVvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Options", + "printedName": "Options", + "children": [ + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC7OptionsV8rawValueSivp", + "mangledName": "$s8PenNavUI3SVGC7OptionsV8rawValueSivp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC7OptionsV8rawValueSivg", + "mangledName": "$s8PenNavUI3SVGC7OptionsV8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI3SVGC7OptionsV8rawValueAESi_tcfc", + "mangledName": "$s8PenNavUI3SVGC7OptionsV8rawValueAESi_tcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "hideUnsupportedFilters", + "printedName": "hideUnsupportedFilters", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvpZ", + "mangledName": "$s8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvgZ", + "mangledName": "$s8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "default", + "printedName": "default", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC7OptionsV7defaultAEvpZ", + "mangledName": "$s8PenNavUI3SVGC7OptionsV7defaultAEvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC7OptionsV7defaultAEvgZ", + "mangledName": "$s8PenNavUI3SVGC7OptionsV7defaultAEvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI3SVGC7OptionsV", + "mangledName": "$s8PenNavUI3SVGC7OptionsV", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "OptionSet", + "printedName": "OptionSet", + "children": [ + { + "kind": "TypeWitness", + "name": "Element", + "printedName": "Element", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ] + } + ], + "usr": "s:s9OptionSetP", + "mangledName": "$ss9OptionSetP" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + }, + { + "kind": "Conformance", + "name": "SetAlgebra", + "printedName": "SetAlgebra", + "children": [ + { + "kind": "TypeWitness", + "name": "Element", + "printedName": "Element", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ] + } + ], + "usr": "s:s10SetAlgebraP", + "mangledName": "$ss10SetAlgebraP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "ExpressibleByArrayLiteral", + "printedName": "ExpressibleByArrayLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "ArrayLiteralElement", + "printedName": "ArrayLiteralElement", + "children": [ + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ] + } + ], + "usr": "s:s25ExpressibleByArrayLiteralP", + "mangledName": "$ss25ExpressibleByArrayLiteralP" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage(im)init", + "mangledName": "$s8PenNavUI3SVGCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "rasterize", + "printedName": "rasterize()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC9rasterizeSo7UIImageCyF", + "mangledName": "$s8PenNavUI3SVGC9rasterizeSo7UIImageCyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "rasterize", + "printedName": "rasterize(with:scale:insets:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGSize?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "hasDefaultArg": true, + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "hasDefaultArg": true, + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_14CoreFoundation7CGFloatVSo12UIEdgeInsetsVtF", + "mangledName": "$s8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "pngData", + "printedName": "pngData(size:scale:insets:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGSize?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "hasDefaultArg": true, + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "hasDefaultArg": true, + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC7pngData4size5scale6insets10Foundation0F0VSo6CGSizeVSg_04CoreJ07CGFloatVSo12UIEdgeInsetsVtKF", + "mangledName": "$s8PenNavUI3SVGC7pngData4size5scale6insets10Foundation0F0VSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "jpegData", + "printedName": "jpegData(size:scale:compressionQuality:insets:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGSize?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "hasDefaultArg": true, + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "hasDefaultArg": true, + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "hasDefaultArg": true, + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC8jpegData4size5scale18compressionQuality6insets10Foundation0F0VSo6CGSizeVSg_04CoreL07CGFloatVAQSo12UIEdgeInsetsVtKF", + "mangledName": "$s8PenNavUI3SVGC8jpegData4size5scale18compressionQuality6insets10Foundation0F0VSo6CGSizeVSg_12CoreGraphics7CGFloatVAQSo12UIEdgeInsetsVtKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "pdfData", + "printedName": "pdfData(size:insets:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGSize?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC6InsetsV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC7pdfData4size6insets10Foundation0F0VSo6CGSizeVSg_AC6InsetsVtKF", + "mangledName": "$s8PenNavUI3SVGC7pdfData4size6insets10Foundation0F0VSo6CGSizeVSg_AC6InsetsVtKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(fileURL:options:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SVG?", + "children": [ + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "URL", + "printedName": "Foundation.URL", + "usr": "s:10Foundation3URLV" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI3SVGC7fileURL7optionsACSg10Foundation0F0V_AC7OptionsVtcfc", + "mangledName": "$s8PenNavUI3SVGC7fileURL7optionsACSg10Foundation0F0V_AC7OptionsVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(named:in:options:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SVG?", + "children": [ + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bundle", + "printedName": "Foundation.Bundle", + "hasDefaultArg": true, + "usr": "c:objc(cs)NSBundle" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI3SVGC5named2in7optionsACSgSS_So8NSBundleCAC7OptionsVtcfc", + "mangledName": "$s8PenNavUI3SVGC5named2in7optionsACSgSS_So8NSBundleCAC7OptionsVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(data:options:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.SVG?", + "children": [ + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI3SVGC4data7optionsACSg10Foundation4DataV_AC7OptionsVtcfc", + "mangledName": "$s8PenNavUI3SVGC4data7optionsACSg10Foundation4DataV_AC7OptionsVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "TypeDecl", + "name": "Insets", + "printedName": "Insets", + "children": [ + { + "kind": "Var", + "name": "top", + "printedName": "top", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV3top14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV3top14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV3top14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV3top14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "left", + "printedName": "left", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV4left14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV4left14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV4left14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV4left14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "bottom", + "printedName": "bottom", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV6bottom14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV6bottom14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV6bottom14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV6bottom14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "right", + "printedName": "right", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV5right14CoreFoundation7CGFloatVvp", + "mangledName": "$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasStorage", + "AccessControl" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV5right14CoreFoundation7CGFloatVvg", + "mangledName": "$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV5right14CoreFoundation7CGFloatVvs", + "mangledName": "$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvs", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV5right14CoreFoundation7CGFloatVvM", + "mangledName": "$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "zero", + "printedName": "zero", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI3SVGC6InsetsV4zeroAEvpZ", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4zeroAEvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "HasInitialValue", + "HasStorage", + "AccessControl" + ], + "isLet": true, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI3SVGC6InsetsV4zeroAEvgZ", + "mangledName": "$s8PenNavUI3SVGC6InsetsV4zeroAEvgZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "==", + "printedName": "==(_:_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + }, + { + "kind": "TypeNominal", + "name": "Insets", + "printedName": "PenNavUI.SVG.Insets", + "usr": "s:8PenNavUI3SVGC6InsetsV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI3SVGC6InsetsV2eeoiySbAE_AEtFZ", + "mangledName": "$s8PenNavUI3SVGC6InsetsV2eeoiySbAE_AEtFZ", + "moduleName": "PenNavUI", + "static": true, + "implicit": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "s:8PenNavUI3SVGC6InsetsV", + "mangledName": "$s8PenNavUI3SVGC6InsetsV", + "moduleName": "PenNavUI", + "isFromExtension": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage", + "mangledName": "$s8PenNavUI3SVGC", + "moduleName": "PenNavUI", + "objc_name": "SVGImage", + "declAttributes": [ + "Final", + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "os.log", + "printedName": "os.log", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelControllerDelegate", + "printedName": "FloatingPanelControllerDelegate", + "children": [ + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:layoutFor:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "UITraitCollection", + "printedName": "UIKit.UITraitCollection", + "usr": "c:objc(cs)UITraitCollection" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:layoutForTraitCollection:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_9layoutForAA0dE6Layout_pAA0deF0C_So17UITraitCollectionCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:layoutForTraitCollection:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:layoutFor:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:layoutForSize:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_9layoutForAA0dE6Layout_pAA0deF0C_So6CGSizeVtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:layoutForSize:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:animatorForPresentingTo:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewPropertyAnimator", + "printedName": "UIKit.UIViewPropertyAnimator", + "usr": "c:objc(cs)UIViewPropertyAnimator" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:animatorForPresentingToState:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_23animatorForPresentingToSo22UIViewPropertyAnimatorCAA0deF0C_AA0dE5StateCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:animatorForPresentingToState:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:animatorForDismissingWith:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewPropertyAnimator", + "printedName": "UIKit.UIViewPropertyAnimator", + "usr": "c:objc(cs)UIViewPropertyAnimator" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "CGVector", + "printedName": "CoreFoundation.CGVector", + "usr": "c:@S@CGVector" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:animatorForDismissingWithVelocity:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_25animatorForDismissingWithSo22UIViewPropertyAnimatorCAA0deF0C_So8CGVectorVtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:animatorForDismissingWithVelocity:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidChangeState", + "printedName": "floatingPanelDidChangeState(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidChangeState:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE14DidChangeStateyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelShouldBeginDragging", + "printedName": "floatingPanelShouldBeginDragging(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelShouldBeginDragging:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE19ShouldBeginDraggingySbAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidMove", + "printedName": "floatingPanelDidMove(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidMove:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE7DidMoveyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelWillBeginDragging", + "printedName": "floatingPanelWillBeginDragging(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelWillBeginDragging:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE17WillBeginDraggingyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelWillEndDragging", + "printedName": "floatingPanelWillEndDragging(_:withVelocity:targetState:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "UnsafeMutablePointer", + "printedName": "Swift.UnsafeMutablePointer", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "usr": "s:Sp" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelWillEndDragging:withVelocity:targetState:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE15WillEndDragging_12withVelocity11targetStateyAA0deF0C_So7CGPointVSpyAA0deO0CGtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidEndDragging", + "printedName": "floatingPanelDidEndDragging(_:willAttract:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidEndDragging:willAttract:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE14DidEndDragging_11willAttractyAA0deF0C_SbtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelWillBeginAttracting", + "printedName": "floatingPanelWillBeginAttracting(_:to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelWillBeginAttracting:to:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE19WillBeginAttracting_2toyAA0deF0C_AA0dE5StateCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidEndAttracting", + "printedName": "floatingPanelDidEndAttracting(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidEndAttracting:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE16DidEndAttractingyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:shouldRemoveAt:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "CGVector", + "printedName": "CoreFoundation.CGVector", + "usr": "c:@S@CGVector" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:shouldRemoveAtLocation:withVelocity:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_14shouldRemoveAt4withSbAA0deF0C_So7CGPointVSo8CGVectorVtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:shouldRemoveAtLocation:withVelocity:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelWillRemove", + "printedName": "floatingPanelWillRemove(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelWillRemove:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE10WillRemoveyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanelWillRemove:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanelDidRemove", + "printedName": "floatingPanelDidRemove(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanelDidRemove:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE9DidRemoveyyAA0deF0CF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:contentOffsetForPinning:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:contentOffsetForPinningScrollView:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_23contentOffsetForPinningSo7CGPointVAA0deF0C_So12UIScrollViewCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:contentOffsetForPinningScrollView:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "floatingPanel", + "printedName": "floatingPanel(_:shouldAllowToScroll:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate(im)floatingPanel:shouldAllowToScroll:in:", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP08floatingE0_19shouldAllowToScroll2inSbAA0deF0C_So12UIScrollViewCAA0dE5StateCtF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.FloatingPanelControllerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "objc_name": "floatingPanel:shouldAllowToScroll:in:", + "declAttributes": [ + "Optional", + "ObjC", + "RawDocComment" + ], + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate", + "mangledName": "$s8PenNavUI31FloatingPanelControllerDelegateP", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 : AnyObject>", + "sugared_genericSig": "", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "FloatingPanelController", + "printedName": "FloatingPanelController", + "children": [ + { + "kind": "TypeDecl", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "ContentInsetAdjustmentBehavior", + "children": [ + { + "kind": "Var", + "name": "always", + "printedName": "always", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior.Type) -> PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO6alwaysyA2EmF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO6alwaysyA2EmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "never", + "printedName": "never", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior.Type) -> PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO5neveryA2EmF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO5neveryA2EmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior?", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueAESgSi_tcfc", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueAESgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueSivp", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueSivg", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "TypeDecl", + "name": "ContentMode", + "printedName": "ContentMode", + "children": [ + { + "kind": "Var", + "name": "static", + "printedName": "static", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelController.ContentMode.Type) -> PenNavUI.FloatingPanelController.ContentMode", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelController.ContentMode.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO6staticyA2EmF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO6staticyA2EmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment", + "ObjC" + ], + "fixedbinaryorder": 0 + }, + { + "kind": "Var", + "name": "fitToBounds", + "printedName": "fitToBounds", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.FloatingPanelController.ContentMode.Type) -> PenNavUI.FloatingPanelController.ContentMode", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.FloatingPanelController.ContentMode.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO11fitToBoundsyA2EmF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO11fitToBoundsyA2EmF", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment", + "ObjC" + ], + "fixedbinaryorder": 1 + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(rawValue:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelController.ContentMode?", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Constructor", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueAESgSi_tcfc", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueAESgSi_tcfc", + "moduleName": "PenNavUI", + "implicit": true, + "init_kind": "Designated" + }, + { + "kind": "Var", + "name": "rawValue", + "printedName": "rawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueSivp", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueSivp", + "moduleName": "PenNavUI", + "implicit": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueSivg", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO8rawValueSivg", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11ContentModeO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC", + "RawDocComment" + ], + "enumRawTypeName": "Int", + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "usr": "s:Si" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + } + ] + }, + { + "kind": "Var", + "name": "delegate", + "printedName": "delegate", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "(any PenNavUI.FloatingPanelControllerDelegate)?" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)delegate", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "ReferenceOwnership", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "ownership": 1, + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.FloatingPanelControllerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelControllerDelegate", + "printedName": "any PenNavUI.FloatingPanelControllerDelegate", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)delegate", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.FloatingPanelControllerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelControllerDelegate", + "printedName": "any PenNavUI.FloatingPanelControllerDelegate", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setDelegate:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "surfaceView", + "printedName": "surfaceView", + "children": [ + { + "kind": "TypeNominal", + "name": "ImplicitlyUnwrappedOptional", + "printedName": "PenNavUI.SurfaceView?", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceView", + "printedName": "PenNavUI.SurfaceView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)surfaceView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11surfaceViewAA07SurfaceH0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "ImplicitlyUnwrappedOptional", + "printedName": "PenNavUI.SurfaceView?", + "children": [ + { + "kind": "TypeNominal", + "name": "SurfaceView", + "printedName": "PenNavUI.SurfaceView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelSurfaceView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)surfaceView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11surfaceViewAA07SurfaceH0CSgvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "backdropView", + "printedName": "backdropView", + "children": [ + { + "kind": "TypeNominal", + "name": "ImplicitlyUnwrappedOptional", + "printedName": "PenNavUI.BackdropView?", + "children": [ + { + "kind": "TypeNominal", + "name": "BackdropView", + "printedName": "PenNavUI.BackdropView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)backdropView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC12backdropViewAA08BackdropH0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "ImplicitlyUnwrappedOptional", + "printedName": "PenNavUI.BackdropView?", + "children": [ + { + "kind": "TypeNominal", + "name": "BackdropView", + "printedName": "PenNavUI.BackdropView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)backdropView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC12backdropViewAA08BackdropH0CSgvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "trackingScrollView", + "printedName": "trackingScrollView", + "children": [ + { + "kind": "TypeNominal", + "name": "WeakStorage", + "printedName": "UIKit.UIScrollView?" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)trackingScrollView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "ReferenceOwnership", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "ownership": 1, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIScrollView?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)trackingScrollView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "panGestureRecognizer", + "printedName": "panGestureRecognizer", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPanGestureRecognizer", + "printedName": "PenNavUI.FloatingPanelPanGestureRecognizer", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)panGestureRecognizer", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC20panGestureRecognizerAA0de3PanhI0Cvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelPanGestureRecognizer", + "printedName": "PenNavUI.FloatingPanelPanGestureRecognizer", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelPanGestureRecognizer" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)panGestureRecognizer", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC20panGestureRecognizerAA0de3PanhI0Cvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "state", + "printedName": "state", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)state", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC5stateAA0dE5StateCvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)state", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC5stateAA0dE5StateCvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isAttracting", + "printedName": "isAttracting", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)isAttracting", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC12isAttractingSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)isAttracting", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC12isAttractingSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "layout", + "printedName": "layout", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)layout", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)layout", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelLayout", + "printedName": "any PenNavUI.FloatingPanelLayout", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelLayout" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setLayout:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "behavior", + "printedName": "behavior", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelBehavior", + "printedName": "any PenNavUI.FloatingPanelBehavior", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)behavior", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelBehavior", + "printedName": "any PenNavUI.FloatingPanelBehavior", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)behavior", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelBehavior", + "printedName": "any PenNavUI.FloatingPanelBehavior", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelBehavior" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setBehavior:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "adjustedContentInsets", + "printedName": "adjustedContentInsets", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)adjustedContentInsets", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0Vvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UIEdgeInsets", + "printedName": "UIKit.UIEdgeInsets", + "usr": "c:@S@UIEdgeInsets" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)adjustedContentInsets", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0Vvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "contentInsetAdjustmentBehavior", + "printedName": "contentInsetAdjustmentBehavior", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)contentInsetAdjustmentBehavior", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)contentInsetAdjustmentBehavior", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "ContentInsetAdjustmentBehavior", + "printedName": "PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior", + "usr": "s:8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorO" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setContentInsetAdjustmentBehavior:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "isRemovalInteractionEnabled", + "printedName": "isRemovalInteractionEnabled", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)isRemovalInteractionEnabled", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)isRemovalInteractionEnabled", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvg", + "moduleName": "PenNavUI", + "objc_name": "isRemovalInteractionEnabled", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setRemovalInteractionEnabled:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvs", + "moduleName": "PenNavUI", + "objc_name": "setRemovalInteractionEnabled:", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "contentViewController", + "printedName": "contentViewController", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)contentViewController", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)contentViewController", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setContentViewController:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Var", + "name": "nearbyState", + "printedName": "nearbyState", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvp", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvg", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvg", + "moduleName": "PenNavUI", + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "contentMode", + "printedName": "contentMode", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)contentMode", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovp", + "moduleName": "PenNavUI", + "declAttributes": [ + "HasInitialValue", + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)contentMode", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "ContentMode", + "printedName": "PenNavUI.FloatingPanelController.ContentMode", + "usr": "s:8PenNavUI23FloatingPanelControllerC11ContentModeO" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setContentMode:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(coder:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "PenNavUI.FloatingPanelController?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "NSCoder", + "printedName": "Foundation.NSCoder", + "usr": "c:objc(cs)NSCoder" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)initWithCoder:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC5coderACSgSo7NSCoderC_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "objc_name": "initWithCoder:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "AccessControl", + "Required" + ], + "init_kind": "Designated" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(delegate:)", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelController", + "printedName": "PenNavUI.FloatingPanelController", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(any PenNavUI.FloatingPanelControllerDelegate)?", + "children": [ + { + "kind": "TypeNominal", + "name": "FloatingPanelControllerDelegate", + "printedName": "any PenNavUI.FloatingPanelControllerDelegate", + "usr": "c:@M@PenNavUI@objc(pl)FloatingPanelControllerDelegate" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)initWithDelegate:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8delegateAcA0deF8Delegate_pSg_tcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithDelegate:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "loadView", + "printedName": "loadView()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)loadView", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC8loadViewyyF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "loadView", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "viewDidLayoutSubviews", + "printedName": "viewDidLayoutSubviews()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)viewDidLayoutSubviews", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC21viewDidLayoutSubviewsyyF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "viewDidLayoutSubviews", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "viewDidAppear", + "printedName": "viewDidAppear(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)viewDidAppear:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC13viewDidAppearyySbF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "viewDidAppear:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "viewWillTransition", + "printedName": "viewWillTransition(to:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGSize", + "printedName": "CoreFoundation.CGSize", + "usr": "c:@S@CGSize" + }, + { + "kind": "TypeNominal", + "name": "UIViewControllerTransitionCoordinator", + "printedName": "any UIKit.UIViewControllerTransitionCoordinator", + "usr": "c:objc(pl)UIViewControllerTransitionCoordinator" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)viewWillTransitionToSize:withTransitionCoordinator:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC18viewWillTransition2to4withySo6CGSizeV_So06UIViewfI11Coordinator_ptF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "viewWillTransitionToSize:withTransitionCoordinator:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "willTransition", + "printedName": "willTransition(to:with:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UITraitCollection", + "printedName": "UIKit.UITraitCollection", + "usr": "c:objc(cs)UITraitCollection" + }, + { + "kind": "TypeNominal", + "name": "UIViewControllerTransitionCoordinator", + "printedName": "any UIKit.UIViewControllerTransitionCoordinator", + "usr": "c:objc(pl)UIViewControllerTransitionCoordinator" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)willTransitionToTraitCollection:withTransitionCoordinator:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC14willTransition2to4withySo17UITraitCollectionC_So06UIViewfH11Coordinator_ptF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "willTransitionToTraitCollection:withTransitionCoordinator:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "viewWillDisappear", + "printedName": "viewWillDisappear(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)viewWillDisappear:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC17viewWillDisappearyySbF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "viewWillDisappear:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "childForStatusBarStyle", + "printedName": "childForStatusBarStyle", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)childViewControllerForStatusBarStyle", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC22childForStatusBarStyleSo06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForStatusBarStyle", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)childViewControllerForStatusBarStyle", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC22childForStatusBarStyleSo06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForStatusBarStyle", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "childForStatusBarHidden", + "printedName": "childForStatusBarHidden", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)childViewControllerForStatusBarHidden", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC23childForStatusBarHiddenSo06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForStatusBarHidden", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)childViewControllerForStatusBarHidden", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC23childForStatusBarHiddenSo06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForStatusBarHidden", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "childForScreenEdgesDeferringSystemGestures", + "printedName": "childForScreenEdgesDeferringSystemGestures", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)childViewControllerForScreenEdgesDeferringSystemGestures", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC42childForScreenEdgesDeferringSystemGesturesSo06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForScreenEdgesDeferringSystemGestures", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)childViewControllerForScreenEdgesDeferringSystemGestures", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC42childForScreenEdgesDeferringSystemGesturesSo06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForScreenEdgesDeferringSystemGestures", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "childForHomeIndicatorAutoHidden", + "printedName": "childForHomeIndicatorAutoHidden", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)childViewControllerForHomeIndicatorAutoHidden", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC31childForHomeIndicatorAutoHiddenSo06UIViewF0CSgvp", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForHomeIndicatorAutoHidden", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)childViewControllerForHomeIndicatorAutoHidden", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC31childForHomeIndicatorAutoHiddenSo06UIViewF0CSgvg", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "childViewControllerForHomeIndicatorAutoHidden", + "declAttributes": [ + "Dynamic", + "ObjC" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "show", + "printedName": "show(animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "hasDefaultArg": true, + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)show:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtF", + "moduleName": "PenNavUI", + "objc_name": "show:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "hide", + "printedName": "hide(animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "hasDefaultArg": true, + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)hide:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC4hide8animated10completionySb_yycSgtF", + "moduleName": "PenNavUI", + "objc_name": "hide:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "addPanel", + "printedName": "addPanel(toParent:at:animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + }, + { + "kind": "TypeNominal", + "name": "Int", + "printedName": "Swift.Int", + "hasDefaultArg": true, + "usr": "s:Si" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "hasDefaultArg": true, + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)addPanelToParent:at:animated:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtF", + "moduleName": "PenNavUI", + "objc_name": "addPanelToParent:at:animated:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "removePanelFromParent", + "printedName": "removePanelFromParent(animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)removePanelFromParent:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtF", + "moduleName": "PenNavUI", + "objc_name": "removePanelFromParent:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "move", + "printedName": "move(to:animated:completion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + }, + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "(() -> ())?", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "() -> ()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ] + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)moveToState:animated:completion:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC4move2to8animated10completionyAA0dE5StateC_SbyycSgtF", + "moduleName": "PenNavUI", + "objc_name": "moveToState:animated:completion:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "set", + "printedName": "set(contentViewController:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIViewController?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIViewController", + "printedName": "UIKit.UIViewController", + "usr": "c:objc(cs)UIViewController" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI23FloatingPanelControllerC3set011contentViewF0ySo06UIViewF0CSg_tF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC3set011contentViewF0ySo06UIViewF0CSg_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "track", + "printedName": "track(scrollView:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)trackScrollView:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC5track10scrollViewySo08UIScrollI0C_tF", + "moduleName": "PenNavUI", + "objc_name": "trackScrollView:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "followScrollViewBouncing", + "printedName": "followScrollViewBouncing()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI23FloatingPanelControllerC24followScrollViewBouncingyyF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC24followScrollViewBouncingyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "untrack", + "printedName": "untrack(scrollView:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UIScrollView", + "printedName": "UIKit.UIScrollView", + "usr": "c:objc(cs)UIScrollView" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)untrackScrollView:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC7untrack10scrollViewySo08UIScrollI0C_tF", + "moduleName": "PenNavUI", + "objc_name": "untrackScrollView:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "accessibilityPerformEscape", + "printedName": "accessibilityPerformEscape()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)accessibilityPerformEscape", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC26accessibilityPerformEscapeSbyF", + "moduleName": "PenNavUI", + "overriding": true, + "isOpen": true, + "objc_name": "accessibilityPerformEscape", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override", + "AccessControl", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "invalidateLayout", + "printedName": "invalidateLayout()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)invalidateLayout", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC16invalidateLayoutyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "surfaceLocation", + "printedName": "surfaceLocation(for:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + }, + { + "kind": "TypeNominal", + "name": "FloatingPanelState", + "printedName": "PenNavUI.FloatingPanelState", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelState" + } + ], + "declKind": "Func", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)surfaceLocationFor:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocation3forSo7CGPointVAA0dE5StateC_tF", + "moduleName": "PenNavUI", + "objc_name": "surfaceLocationFor:", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Var", + "name": "surfaceLocation", + "printedName": "surfaceLocation", + "children": [ + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(py)surfaceLocation", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)surfaceLocation", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGPoint", + "printedName": "CoreFoundation.CGPoint", + "usr": "c:@S@CGPoint" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController(im)setSurfaceLocation:", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvs", + "moduleName": "PenNavUI", + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Function", + "name": "addTopPadding", + "printedName": "addTopPadding(padding:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI23FloatingPanelControllerC13addTopPadding7paddingy14CoreFoundation7CGFloatV_tF", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC13addTopPadding7paddingy12CoreGraphics7CGFloatV_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl" + ], + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelController", + "mangledName": "$s8PenNavUI23FloatingPanelControllerC", + "moduleName": "PenNavUI", + "isOpen": true, + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)UIViewController", + "hasMissingDesignatedInitializers": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "UIKit.UIViewController", + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "MessageUI", + "printedName": "MessageUI", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "SafariServices", + "printedName": "SafariServices", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "TypeDecl", + "name": "BackdropView", + "printedName": "BackdropView", + "children": [ + { + "kind": "Var", + "name": "dismissalTapGestureRecognizer", + "printedName": "dismissalTapGestureRecognizer", + "children": [ + { + "kind": "TypeNominal", + "name": "UITapGestureRecognizer", + "printedName": "UIKit.UITapGestureRecognizer", + "usr": "c:objc(cs)UITapGestureRecognizer" + } + ], + "declKind": "Var", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView(py)dismissalTapGestureRecognizer", + "mangledName": "$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "HasStorage", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "hasStorage": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "UITapGestureRecognizer", + "printedName": "UIKit.UITapGestureRecognizer", + "usr": "c:objc(cs)UITapGestureRecognizer" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView(im)dismissalTapGestureRecognizer", + "mangledName": "$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvg", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "get" + }, + { + "kind": "Accessor", + "name": "Set", + "printedName": "Set()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "UITapGestureRecognizer", + "printedName": "UIKit.UITapGestureRecognizer", + "usr": "c:objc(cs)UITapGestureRecognizer" + } + ], + "declKind": "Accessor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView(im)setDismissalTapGestureRecognizer:", + "mangledName": "$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvs", + "moduleName": "PenNavUI", + "implicit": true, + "declAttributes": [ + "ObjC" + ], + "accessorKind": "set" + }, + { + "kind": "Accessor", + "name": "Modify", + "printedName": "Modify()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvM", + "mangledName": "$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvM", + "moduleName": "PenNavUI", + "implicit": true, + "accessorKind": "_modify" + } + ] + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(frame:)", + "children": [ + { + "kind": "TypeNominal", + "name": "BackdropView", + "printedName": "PenNavUI.BackdropView", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView" + }, + { + "kind": "TypeNominal", + "name": "CGRect", + "printedName": "CoreFoundation.CGRect", + "usr": "c:@S@CGRect" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView(im)initWithFrame:", + "mangledName": "$s8PenNavUI12BackdropViewC5frameACSo6CGRectV_tcfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "initWithFrame:", + "declAttributes": [ + "Dynamic", + "ObjC", + "Preconcurrency", + "Custom", + "Override" + ], + "init_kind": "Designated" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)FloatingPanelBackdropView", + "mangledName": "$s8PenNavUI12BackdropViewC", + "moduleName": "PenNavUI", + "objc_name": "FloatingPanelBackdropView", + "declAttributes": [ + "Preconcurrency", + "Custom", + "AccessControl", + "ObjC", + "RawDocComment" + ], + "superclassUsr": "c:objc(cs)UIView", + "hasMissingDesignatedInitializers": true, + "superclassNames": [ + "UIKit.UIView", + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + }, + { + "kind": "Conformance", + "name": "__DefaultCustomPlaygroundQuickLookable", + "printedName": "__DefaultCustomPlaygroundQuickLookable", + "usr": "s:s38__DefaultCustomPlaygroundQuickLookableP", + "mangledName": "$ss38__DefaultCustomPlaygroundQuickLookableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "SystemConfiguration", + "printedName": "SystemConfiguration", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Network", + "printedName": "Network", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "NetworkMonitor", + "printedName": "NetworkMonitor", + "declKind": "Class", + "usr": "s:8PenNavUI14NetworkMonitorC", + "mangledName": "$s8PenNavUI14NetworkMonitorC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "GeofenceError", + "printedName": "GeofenceError", + "children": [ + { + "kind": "Var", + "name": "permissionDenied", + "printedName": "permissionDenied", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO16permissionDeniedyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO16permissionDeniedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "errorInConfiguration", + "printedName": "errorInConfiguration", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO20errorInConfigurationyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO20errorInConfigurationyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "authenticationFailed", + "printedName": "authenticationFailed", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO20authenticationFailedyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO20authenticationFailedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "indoorDeloymentOnly", + "printedName": "indoorDeloymentOnly", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO19indoorDeloymentOnlyyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO19indoorDeloymentOnlyyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "geofenceConfigurationsMissing", + "printedName": "geofenceConfigurationsMissing", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO29geofenceConfigurationsMissingyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO29geofenceConfigurationsMissingyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "geofenceSDKNotStarted", + "printedName": "geofenceSDKNotStarted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO21geofenceSDKNotStartedyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO21geofenceSDKNotStartedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "geofenceSDKAlreadyStarted", + "printedName": "geofenceSDKAlreadyStarted", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO25geofenceSDKAlreadyStartedyA2CmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO25geofenceSDKAlreadyStartedyA2CmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "sdkError", + "printedName": "sdkError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(PenNavUI.GeofenceError.Type) -> (Swift.String) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeFunc", + "name": "Function", + "printedName": "(Swift.String) -> PenNavUI.GeofenceError", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ] + }, + { + "kind": "TypeNominal", + "name": "Metatype", + "printedName": "PenNavUI.GeofenceError.Type", + "children": [ + { + "kind": "TypeNominal", + "name": "GeofenceError", + "printedName": "PenNavUI.GeofenceError", + "usr": "s:8PenNavUI13GeofenceErrorO" + } + ] + } + ] + } + ], + "declKind": "EnumElement", + "usr": "s:8PenNavUI13GeofenceErrorO03sdkE0yACSScACmF", + "mangledName": "$s8PenNavUI13GeofenceErrorO03sdkE0yACSScACmF", + "moduleName": "PenNavUI" + }, + { + "kind": "Var", + "name": "errorDescription", + "printedName": "errorDescription", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvp", + "mangledName": "$s8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvg", + "mangledName": "$s8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvg", + "moduleName": "PenNavUI", + "accessorKind": "get" + } + ] + } + ], + "declKind": "Enum", + "usr": "s:8PenNavUI13GeofenceErrorO", + "mangledName": "$s8PenNavUI13GeofenceErrorO", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Error", + "printedName": "Error", + "usr": "s:s5ErrorP", + "mangledName": "$ss5ErrorP" + }, + { + "kind": "Conformance", + "name": "LocalizedError", + "printedName": "LocalizedError", + "usr": "s:10Foundation14LocalizedErrorP", + "mangledName": "$s10Foundation14LocalizedErrorP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "PIGeofenceManagerDelegate", + "printedName": "PIGeofenceManagerDelegate", + "children": [ + { + "kind": "Function", + "name": "geofenceStarted", + "printedName": "geofenceStarted()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP15geofenceStartedyyF", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP15geofenceStartedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIGeofenceManagerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "geofenceFailedToStart", + "printedName": "geofenceFailedToStart(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Swift.String?", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP21geofenceFailedToStartyySSSgF", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP21geofenceFailedToStartyySSSgF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIGeofenceManagerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "geofenceStopped", + "printedName": "geofenceStopped()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP15geofenceStoppedyyF", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP15geofenceStoppedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIGeofenceManagerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "geofenceUpdated", + "printedName": "geofenceUpdated()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP15geofenceUpdatedyyF", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP15geofenceUpdatedyyF", + "moduleName": "PenNavUI", + "genericSig": "<τ_0_0 where τ_0_0 : PenNavUI.PIGeofenceManagerDelegate>", + "sugared_genericSig": "", + "protocolReq": true, + "reqNewWitnessTableEntry": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Protocol", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP", + "mangledName": "$s8PenNavUI25PIGeofenceManagerDelegateP", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "PIGeofenceManager", + "printedName": "PIGeofenceManager", + "children": [ + { + "kind": "Var", + "name": "shared", + "printedName": "shared", + "children": [ + { + "kind": "TypeNominal", + "name": "PIGeofenceManager", + "printedName": "PenNavUI.PIGeofenceManager", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager" + } + ], + "declKind": "Var", + "usr": "s:8PenNavUI17PIGeofenceManagerC6sharedACvpZ", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC6sharedACvpZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final", + "AccessControl" + ], + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "PIGeofenceManager", + "printedName": "PenNavUI.PIGeofenceManager", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager" + } + ], + "declKind": "Accessor", + "usr": "s:8PenNavUI17PIGeofenceManagerC6sharedACvgZ", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC6sharedACvgZ", + "moduleName": "PenNavUI", + "static": true, + "declAttributes": [ + "Final" + ], + "accessorKind": "get" + } + ] + }, + { + "kind": "Function", + "name": "initializeLocationManager", + "printedName": "initializeLocationManager()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC018initializeLocationE0yyF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC018initializeLocationE0yyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setGeofenceSDKConfigurations", + "printedName": "setGeofenceSDKConfigurations(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "GeofenceConfiguration", + "printedName": "PenNavUI.GeofenceConfiguration", + "usr": "s:8PenNavUI21GeofenceConfigurationV" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC28setGeofenceSDKConfigurationsyyAA0G13ConfigurationVF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC28setGeofenceSDKConfigurationsyyAA0G13ConfigurationVF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "setGeofenceDelegate", + "printedName": "setGeofenceDelegate(delegate:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "PIGeofenceManagerDelegate", + "printedName": "any PenNavUI.PIGeofenceManagerDelegate", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC19setGeofenceDelegate8delegateyAA0deH0_p_tF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC19setGeofenceDelegate8delegateyAA0deH0_p_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "startGeofencing", + "printedName": "startGeofencing(delegate:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "PIGeofenceManagerDelegate", + "printedName": "any PenNavUI.PIGeofenceManagerDelegate", + "usr": "s:8PenNavUI25PIGeofenceManagerDelegateP" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC15startGeofencing8delegateyAA0dE8Delegate_p_tF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC15startGeofencing8delegateyAA0dE8Delegate_p_tF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "stopGeofencing", + "printedName": "stopGeofencing()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC14stopGeofencingyyF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC14stopGeofencingyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "updateGeofencing", + "printedName": "updateGeofencing()", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + } + ], + "declKind": "Func", + "usr": "s:8PenNavUI17PIGeofenceManagerC16updateGeofencingyyF", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC16updateGeofencingyyF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init()", + "children": [ + { + "kind": "TypeNominal", + "name": "PIGeofenceManager", + "printedName": "PenNavUI.PIGeofenceManager", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager" + } + ], + "declKind": "Constructor", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager(im)init", + "mangledName": "$s8PenNavUI17PIGeofenceManagerCACycfc", + "moduleName": "PenNavUI", + "overriding": true, + "implicit": true, + "objc_name": "init", + "declAttributes": [ + "Dynamic", + "ObjC", + "Override" + ], + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "locationManager", + "printedName": "locationManager(_:didChangeAuthorization:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationManager", + "printedName": "CoreLocation.CLLocationManager", + "usr": "c:objc(cs)CLLocationManager" + }, + { + "kind": "TypeNominal", + "name": "CLAuthorizationStatus", + "printedName": "CoreLocation.CLAuthorizationStatus", + "usr": "c:@E@CLAuthorizationStatus" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PIGeofenceManager(im)locationManager:didChangeAuthorizationStatus:", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC08locationE0_22didChangeAuthorizationySo010CLLocationE0C_So21CLAuthorizationStatusVtF", + "moduleName": "PenNavUI", + "objc_name": "locationManager:didChangeAuthorizationStatus:", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl", + "RawDocComment" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "locationManager", + "printedName": "locationManager(_:didEnterRegion:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "CLLocationManager", + "printedName": "CoreLocation.CLLocationManager", + "usr": "c:objc(cs)CLLocationManager" + }, + { + "kind": "TypeNominal", + "name": "CLRegion", + "printedName": "CoreLocation.CLRegion", + "usr": "c:objc(cs)CLRegion" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@objc(cs)PIGeofenceManager(im)locationManager:didEnterRegion:", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC08locationE0_14didEnterRegionySo010CLLocationE0C_So8CLRegionCtF", + "moduleName": "PenNavUI", + "objc_name": "locationManager:didEnterRegion:", + "declAttributes": [ + "Dynamic", + "ObjC", + "AccessControl" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@M@PenNavUI@objc(cs)PIGeofenceManager", + "mangledName": "$s8PenNavUI17PIGeofenceManagerC", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreData", + "printedName": "CoreData", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "CoreLocation", + "printedName": "CoreLocation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "Penguin", + "printedName": "Penguin", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "PenguinINRenderer", + "printedName": "PenguinINRenderer", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI", + "declAttributes": [ + "RawDocComment" + ] + }, + { + "kind": "Import", + "name": "Foundation", + "printedName": "Foundation", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "UIKit", + "printedName": "UIKit", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "SwiftUI", + "printedName": "SwiftUI", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "Import", + "name": "DeveloperToolsSupport", + "printedName": "DeveloperToolsSupport", + "declKind": "Import", + "moduleName": "PenNavUI" + }, + { + "kind": "TypeDecl", + "name": "UILayoutGuide", + "printedName": "UILayoutGuide", + "declKind": "Class", + "usr": "c:objc(cs)UILayoutGuide", + "moduleName": "UIKit", + "isOpen": true, + "intro_iOS": "9.0", + "objc_name": "UILayoutGuide", + "declAttributes": [ + "Preconcurrency", + "Available", + "ObjC", + "NonSendable", + "Custom", + "Dynamic" + ], + "superclassUsr": "c:objc(cs)NSObject", + "isExternal": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "UIView", + "printedName": "UIView", + "declKind": "Class", + "usr": "c:objc(cs)UIView", + "moduleName": "UIKit", + "isOpen": true, + "intro_iOS": "2.0", + "objc_name": "UIView", + "declAttributes": [ + "Preconcurrency", + "Available", + "ObjC", + "NonSendable", + "Custom", + "Dynamic" + ], + "superclassUsr": "c:objc(cs)UIResponder", + "isExternal": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "UIKit.UIResponder", + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "UITraitChangeObservable", + "printedName": "UITraitChangeObservable", + "usr": "s:5UIKit23UITraitChangeObservableP", + "mangledName": "$s5UIKit23UITraitChangeObservableP" + }, + { + "kind": "Conformance", + "name": "__DefaultCustomPlaygroundQuickLookable", + "printedName": "__DefaultCustomPlaygroundQuickLookable", + "usr": "s:s38__DefaultCustomPlaygroundQuickLookableP", + "mangledName": "$ss38__DefaultCustomPlaygroundQuickLookableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "UISpringTimingParameters", + "printedName": "UISpringTimingParameters", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(decelerationRate:frequencyResponse:initialVelocity:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UISpringTimingParameters", + "printedName": "UIKit.UISpringTimingParameters", + "usr": "c:objc(cs)UISpringTimingParameters" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGVector", + "printedName": "CoreFoundation.CGVector", + "hasDefaultArg": true, + "usr": "c:@S@CGVector" + } + ], + "declKind": "Constructor", + "usr": "s:So24UISpringTimingParametersC8PenNavUIE16decelerationRate17frequencyResponse15initialVelocityAB14CoreFoundation7CGFloatV_AISo8CGVectorVtcfc", + "mangledName": "$sSo24UISpringTimingParametersC8PenNavUIE16decelerationRate17frequencyResponse15initialVelocityAB12CoreGraphics7CGFloatV_AISo8CGVectorVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "Convenience", + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(dampingRatio:frequencyResponse:initialVelocity:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UISpringTimingParameters", + "printedName": "UIKit.UISpringTimingParameters", + "usr": "c:objc(cs)UISpringTimingParameters" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGFloat", + "printedName": "CoreGraphics.CGFloat", + "usr": "s:14CoreFoundation7CGFloatV" + }, + { + "kind": "TypeNominal", + "name": "CGVector", + "printedName": "CoreFoundation.CGVector", + "hasDefaultArg": true, + "usr": "c:@S@CGVector" + } + ], + "declKind": "Constructor", + "usr": "s:So24UISpringTimingParametersC8PenNavUIE12dampingRatio17frequencyResponse15initialVelocityAB14CoreFoundation7CGFloatV_AISo8CGVectorVtcfc", + "mangledName": "$sSo24UISpringTimingParametersC8PenNavUIE12dampingRatio17frequencyResponse15initialVelocityAB12CoreGraphics7CGFloatV_AISo8CGVectorVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Preconcurrency", + "Custom", + "Convenience", + "AccessControl" + ], + "isFromExtension": true, + "init_kind": "Convenience" + } + ], + "declKind": "Class", + "usr": "c:objc(cs)UISpringTimingParameters", + "moduleName": "UIKit", + "isOpen": true, + "intro_iOS": "10.0", + "objc_name": "UISpringTimingParameters", + "declAttributes": [ + "Preconcurrency", + "Available", + "ObjC", + "NonSendable", + "Custom", + "Dynamic" + ], + "superclassUsr": "c:objc(cs)NSObject", + "isExternal": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "CLLocationCoordinate2D", + "printedName": "CLLocationCoordinate2D", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(from:)", + "children": [ + { + "kind": "TypeNominal", + "name": "CLLocationCoordinate2D", + "printedName": "_LocationEssentials.CLLocationCoordinate2D", + "usr": "c:@S@CLLocationCoordinate2D" + }, + { + "kind": "TypeNominal", + "name": "Decoder", + "printedName": "any Swift.Decoder", + "usr": "s:s7DecoderP" + } + ], + "declKind": "Constructor", + "usr": "s:So22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfc", + "mangledName": "$sSo22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "throwing": true, + "init_kind": "Designated" + }, + { + "kind": "Function", + "name": "encode", + "printedName": "encode(to:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "Encoder", + "printedName": "any Swift.Encoder", + "usr": "s:s7EncoderP" + } + ], + "declKind": "Func", + "usr": "s:So22CLLocationCoordinate2DV8PenNavUIE6encode2toys7Encoder_p_tKF", + "mangledName": "$sSo22CLLocationCoordinate2DV8PenNavUIE6encode2toys7Encoder_p_tKF", + "moduleName": "PenNavUI", + "declAttributes": [ + "AccessControl" + ], + "isFromExtension": true, + "throwing": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Struct", + "usr": "c:@S@CLLocationCoordinate2D", + "moduleName": "_LocationEssentials", + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSValue", + "printedName": "Foundation.NSValue", + "usr": "c:objc(cs)NSValue" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + } + ] + }, + { + "kind": "TypeDecl", + "name": "UIImage", + "printedName": "UIImage", + "children": [ + { + "kind": "Constructor", + "name": "init", + "printedName": "init(svgNamed:in:options:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bundle", + "printedName": "Foundation.Bundle", + "hasDefaultArg": true, + "usr": "c:objc(cs)NSBundle" + }, + { + "kind": "TypeNominal", + "name": "Options", + "printedName": "PenNavUI.SVG.Options", + "hasDefaultArg": true, + "usr": "s:8PenNavUI3SVGC7OptionsV" + } + ], + "declKind": "Constructor", + "usr": "s:So7UIImageC8PenNavUIE8svgNamed2in7optionsABSgSS_So8NSBundleCAC3SVGC7OptionsVtcfc", + "mangledName": "$sSo7UIImageC8PenNavUIE8svgNamed2in7optionsABSgSS_So8NSBundleCAC3SVGC7OptionsVtcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(svgData:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "Data", + "printedName": "Foundation.Data", + "usr": "s:10Foundation4DataV" + } + ], + "declKind": "Constructor", + "usr": "c:@CM@PenNavUI@@objc(cs)UIImage(im)initWithSVGData:", + "mangledName": "$sSo7UIImageC8PenNavUIE7svgDataABSg10Foundation0F0V_tcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithSVGData:", + "declAttributes": [ + "Dynamic", + "Convenience", + "ObjC" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(contentsOfSVGFile:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Constructor", + "usr": "c:@CM@PenNavUI@@objc(cs)UIImage(im)initWithContentsOfSVGFile:", + "mangledName": "$sSo7UIImageC8PenNavUIE17contentsOfSVGFileABSgSS_tcfc", + "moduleName": "PenNavUI", + "objc_name": "initWithContentsOfSVGFile:", + "declAttributes": [ + "Dynamic", + "Convenience", + "ObjC" + ], + "isFromExtension": true, + "init_kind": "Convenience" + }, + { + "kind": "Function", + "name": "_svgNamed", + "printedName": "_svgNamed(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@@objc(cs)UIImage(cm)svgNamed:", + "mangledName": "$sSo7UIImageC8PenNavUIE9_svgNamedyABSgSSFZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "svgNamed:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Function", + "name": "_svgNamed", + "printedName": "_svgNamed(_:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "UIKit.UIImage?", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + } + ], + "usr": "s:Sq" + }, + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Bundle", + "printedName": "Foundation.Bundle", + "usr": "c:objc(cs)NSBundle" + } + ], + "declKind": "Func", + "usr": "c:@CM@PenNavUI@@objc(cs)UIImage(cm)svgNamed:inBundle:", + "mangledName": "$sSo7UIImageC8PenNavUIE9_svgNamed_2inABSgSS_So8NSBundleCtFZ", + "moduleName": "PenNavUI", + "static": true, + "objc_name": "svgNamed:inBundle:", + "declAttributes": [ + "Final", + "ObjC" + ], + "isFromExtension": true, + "funcSelfKind": "NonMutating" + }, + { + "kind": "Constructor", + "name": "init", + "printedName": "init(_:)", + "children": [ + { + "kind": "TypeNominal", + "name": "UIImage", + "printedName": "UIKit.UIImage", + "usr": "c:objc(cs)UIImage" + }, + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + } + ], + "declKind": "Constructor", + "usr": "s:So7UIImageC8PenNavUIEyAbC3SVGCcfc", + "mangledName": "$sSo7UIImageC8PenNavUIEyAbC3SVGCcfc", + "moduleName": "PenNavUI", + "declAttributes": [ + "Convenience" + ], + "isFromExtension": true, + "init_kind": "Convenience" + } + ], + "declKind": "Class", + "usr": "c:objc(cs)UIImage", + "moduleName": "UIKit", + "isOpen": true, + "intro_iOS": "2.0", + "objc_name": "UIImage", + "declAttributes": [ + "Available", + "ObjC", + "SynthesizedProtocol", + "NonSendable", + "Sendable", + "Dynamic" + ], + "superclassUsr": "c:objc(cs)NSObject", + "isExternal": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + }, + { + "kind": "Conformance", + "name": "_ExpressibleByImageLiteral", + "printedName": "_ExpressibleByImageLiteral", + "usr": "s:s26_ExpressibleByImageLiteralP", + "mangledName": "$ss26_ExpressibleByImageLiteralP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "PoiPolygon", + "printedName": "PoiPolygon", + "declKind": "Struct", + "usr": "s:7Penguin10PoiPolygonV", + "mangledName": "$s7Penguin10PoiPolygonV", + "moduleName": "Penguin", + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "GateNodeModel", + "printedName": "GateNodeModel", + "children": [ + { + "kind": "Var", + "name": "isUpEscalator", + "printedName": "isUpEscalator", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:7Penguin13GateNodeModelC8PenNavUIE13isUpEscalatorSbvp", + "mangledName": "$s7Penguin13GateNodeModelC8PenNavUIE13isUpEscalatorSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:7Penguin13GateNodeModelC8PenNavUIE13isUpEscalatorSbvg", + "mangledName": "$s7Penguin13GateNodeModelC8PenNavUIE13isUpEscalatorSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isDownEscalator", + "printedName": "isDownEscalator", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:7Penguin13GateNodeModelC8PenNavUIE15isDownEscalatorSbvp", + "mangledName": "$s7Penguin13GateNodeModelC8PenNavUIE15isDownEscalatorSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:7Penguin13GateNodeModelC8PenNavUIE15isDownEscalatorSbvg", + "mangledName": "$s7Penguin13GateNodeModelC8PenNavUIE15isDownEscalatorSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Class", + "usr": "s:7Penguin13GateNodeModelC", + "mangledName": "$s7Penguin13GateNodeModelC", + "moduleName": "Penguin", + "declAttributes": [ + "Final" + ], + "isExternal": true, + "hasMissingDesignatedInitializers": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "NodeRepresentable", + "printedName": "NodeRepresentable", + "usr": "s:7Penguin17NodeRepresentableP", + "mangledName": "$s7Penguin17NodeRepresentableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Gnode", + "printedName": "Gnode", + "children": [ + { + "kind": "Var", + "name": "isUpEscalator", + "printedName": "isUpEscalator", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:7Penguin5GnodeC8PenNavUIE13isUpEscalatorSbvp", + "mangledName": "$s7Penguin5GnodeC8PenNavUIE13isUpEscalatorSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:7Penguin5GnodeC8PenNavUIE13isUpEscalatorSbvg", + "mangledName": "$s7Penguin5GnodeC8PenNavUIE13isUpEscalatorSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "accessorKind": "get" + } + ] + }, + { + "kind": "Var", + "name": "isDownEscalator", + "printedName": "isDownEscalator", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Var", + "usr": "s:7Penguin5GnodeC8PenNavUIE15isDownEscalatorSbvp", + "mangledName": "$s7Penguin5GnodeC8PenNavUIE15isDownEscalatorSbvp", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final", + "AccessControl" + ], + "isFromExtension": true, + "accessors": [ + { + "kind": "Accessor", + "name": "Get", + "printedName": "Get()", + "children": [ + { + "kind": "TypeNominal", + "name": "Bool", + "printedName": "Swift.Bool", + "usr": "s:Sb" + } + ], + "declKind": "Accessor", + "usr": "s:7Penguin5GnodeC8PenNavUIE15isDownEscalatorSbvg", + "mangledName": "$s7Penguin5GnodeC8PenNavUIE15isDownEscalatorSbvg", + "moduleName": "PenNavUI", + "declAttributes": [ + "Final" + ], + "isFromExtension": true, + "accessorKind": "get" + } + ] + } + ], + "declKind": "Class", + "usr": "s:7Penguin5GnodeC", + "mangledName": "$s7Penguin5GnodeC", + "moduleName": "Penguin", + "declAttributes": [ + "Final" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "NodeRepresentable", + "printedName": "NodeRepresentable", + "usr": "s:7Penguin17NodeRepresentableP", + "mangledName": "$s7Penguin17NodeRepresentableP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Dictionary", + "printedName": "Dictionary", + "declKind": "Struct", + "usr": "s:SD", + "mangledName": "$sSD", + "moduleName": "Swift", + "genericSig": "<τ_0_0, τ_0_1 where τ_0_0 : Swift.Hashable>", + "sugared_genericSig": "", + "declAttributes": [ + "EagerMove", + "Frozen" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Sequence", + "printedName": "Sequence", + "children": [ + { + "kind": "TypeWitness", + "name": "Element", + "printedName": "Element", + "children": [ + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(key: τ_0_0, value: τ_0_1)", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ] + } + ] + }, + { + "kind": "TypeWitness", + "name": "Iterator", + "printedName": "Iterator", + "children": [ + { + "kind": "TypeNominal", + "name": "Iterator", + "printedName": "Swift.Dictionary<τ_0_0, τ_0_1>.Iterator", + "usr": "s:SD8IteratorV" + } + ] + } + ], + "usr": "s:ST", + "mangledName": "$sST" + }, + { + "kind": "Conformance", + "name": "Collection", + "printedName": "Collection", + "children": [ + { + "kind": "TypeWitness", + "name": "Element", + "printedName": "Element", + "children": [ + { + "kind": "TypeNominal", + "name": "Tuple", + "printedName": "(key: τ_0_0, value: τ_0_1)", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ] + } + ] + }, + { + "kind": "TypeWitness", + "name": "Index", + "printedName": "Index", + "children": [ + { + "kind": "TypeNominal", + "name": "Index", + "printedName": "Swift.Dictionary<τ_0_0, τ_0_1>.Index", + "usr": "s:SD5IndexV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "Iterator", + "printedName": "Iterator", + "children": [ + { + "kind": "TypeNominal", + "name": "Iterator", + "printedName": "Swift.Dictionary<τ_0_0, τ_0_1>.Iterator", + "usr": "s:SD8IteratorV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "SubSequence", + "printedName": "SubSequence", + "children": [ + { + "kind": "TypeNominal", + "name": "Slice", + "printedName": "Swift.Slice<[τ_0_0 : τ_0_1]>", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[τ_0_0 : τ_0_1]", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ], + "usr": "s:SD" + } + ], + "usr": "s:s5SliceV" + } + ] + }, + { + "kind": "TypeWitness", + "name": "Indices", + "printedName": "Indices", + "children": [ + { + "kind": "TypeNominal", + "name": "DefaultIndices", + "printedName": "Swift.DefaultIndices<[τ_0_0 : τ_0_1]>", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[τ_0_0 : τ_0_1]", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + }, + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ], + "usr": "s:SD" + } + ], + "usr": "s:SI" + } + ] + } + ], + "usr": "s:Sl", + "mangledName": "$sSl" + }, + { + "kind": "Conformance", + "name": "ExpressibleByDictionaryLiteral", + "printedName": "ExpressibleByDictionaryLiteral", + "children": [ + { + "kind": "TypeWitness", + "name": "Key", + "printedName": "Key", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_0" + } + ] + }, + { + "kind": "TypeWitness", + "name": "Value", + "printedName": "Value", + "children": [ + { + "kind": "TypeNominal", + "name": "GenericTypeParam", + "printedName": "τ_0_1" + } + ] + } + ], + "usr": "s:s30ExpressibleByDictionaryLiteralP", + "mangledName": "$ss30ExpressibleByDictionaryLiteralP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "_HasCustomAnyHashableRepresentation", + "printedName": "_HasCustomAnyHashableRepresentation", + "usr": "s:s35_HasCustomAnyHashableRepresentationP", + "mangledName": "$ss35_HasCustomAnyHashableRepresentationP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomReflectable", + "printedName": "CustomReflectable", + "usr": "s:s17CustomReflectableP", + "mangledName": "$ss17CustomReflectableP" + }, + { + "kind": "Conformance", + "name": "Sendable", + "printedName": "Sendable", + "usr": "s:s8SendableP", + "mangledName": "$ss8SendableP" + }, + { + "kind": "Conformance", + "name": "SendableMetatype", + "printedName": "SendableMetatype", + "usr": "s:s16SendableMetatypeP", + "mangledName": "$ss16SendableMetatypeP" + }, + { + "kind": "Conformance", + "name": "_ObjectiveCBridgeable", + "printedName": "_ObjectiveCBridgeable", + "children": [ + { + "kind": "TypeWitness", + "name": "_ObjectiveCType", + "printedName": "_ObjectiveCType", + "children": [ + { + "kind": "TypeNominal", + "name": "NSDictionary", + "printedName": "Foundation.NSDictionary", + "usr": "c:objc(cs)NSDictionary" + } + ] + } + ], + "usr": "s:s21_ObjectiveCBridgeableP", + "mangledName": "$ss21_ObjectiveCBridgeableP" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "RawRepresentable", + "printedName": "RawRepresentable", + "children": [ + { + "kind": "TypeWitness", + "name": "RawValue", + "printedName": "RawValue", + "children": [ + { + "kind": "TypeNominal", + "name": "Dictionary", + "printedName": "[Swift.String : Any?]", + "children": [ + { + "kind": "TypeNominal", + "name": "String", + "printedName": "Swift.String", + "usr": "s:SS" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "Any?", + "children": [ + { + "kind": "TypeNominal", + "name": "ProtocolComposition", + "printedName": "Any" + } + ], + "usr": "s:Sq" + } + ], + "usr": "s:SD" + } + ] + } + ], + "usr": "s:SY", + "mangledName": "$sSY" + }, + { + "kind": "Conformance", + "name": "ExpressionArgumentConvertible", + "printedName": "ExpressionArgumentConvertible", + "usr": "s:10MapboxMaps29ExpressionArgumentConvertibleP", + "mangledName": "$s10MapboxMaps29ExpressionArgumentConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "Venue", + "printedName": "Venue", + "declKind": "Class", + "usr": "c:@M@Penguin@objc(cs)Venue", + "mangledName": "$s7Penguin5VenueC", + "moduleName": "Penguin", + "declAttributes": [ + "Final", + "ObjC" + ], + "superclassUsr": "c:objc(cs)NSObject", + "isExternal": true, + "hasMissingDesignatedInitializers": true, + "inheritsConvenienceInitializers": true, + "superclassNames": [ + "ObjectiveC.NSObject" + ], + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "CVarArg", + "printedName": "CVarArg", + "usr": "s:s7CVarArgP", + "mangledName": "$ss7CVarArgP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObservingPublishing", + "printedName": "_KeyValueCodingAndObservingPublishing", + "usr": "s:10Foundation37_KeyValueCodingAndObservingPublishingP", + "mangledName": "$s10Foundation37_KeyValueCodingAndObservingPublishingP" + }, + { + "kind": "Conformance", + "name": "_KeyValueCodingAndObserving", + "printedName": "_KeyValueCodingAndObserving", + "usr": "s:10Foundation27_KeyValueCodingAndObservingP", + "mangledName": "$s10Foundation27_KeyValueCodingAndObservingP" + }, + { + "kind": "Conformance", + "name": "CustomStringConvertible", + "printedName": "CustomStringConvertible", + "usr": "s:s23CustomStringConvertibleP", + "mangledName": "$ss23CustomStringConvertibleP" + }, + { + "kind": "Conformance", + "name": "CustomDebugStringConvertible", + "printedName": "CustomDebugStringConvertible", + "usr": "s:s28CustomDebugStringConvertibleP", + "mangledName": "$ss28CustomDebugStringConvertibleP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "CGContext", + "printedName": "CGContext", + "children": [ + { + "kind": "Function", + "name": "draw", + "printedName": "draw(_:in:)", + "children": [ + { + "kind": "TypeNominal", + "name": "Void", + "printedName": "()" + }, + { + "kind": "TypeNominal", + "name": "SVG", + "printedName": "PenNavUI.SVG", + "usr": "c:@M@PenNavUI@objc(cs)SVGImage" + }, + { + "kind": "TypeNominal", + "name": "Optional", + "printedName": "CoreFoundation.CGRect?", + "children": [ + { + "kind": "TypeNominal", + "name": "CGRect", + "printedName": "CoreFoundation.CGRect", + "usr": "c:@S@CGRect" + } + ], + "hasDefaultArg": true, + "usr": "s:Sq" + } + ], + "declKind": "Func", + "usr": "s:So12CGContextRefa8PenNavUIE4draw_2inyAC3SVGC_So6CGRectVSgtF", + "mangledName": "$sSo12CGContextRefa8PenNavUIE4draw_2inyAC3SVGC_So6CGRectVSgtF", + "moduleName": "PenNavUI", + "isFromExtension": true, + "funcSelfKind": "NonMutating" + } + ], + "declKind": "Class", + "usr": "c:@T@CGContextRef", + "moduleName": "CoreGraphics", + "declAttributes": [ + "SynthesizedProtocol", + "ObjC", + "Dynamic" + ], + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + }, + { + "kind": "Conformance", + "name": "_CFObject", + "printedName": "_CFObject", + "usr": "s:14CoreFoundation9_CFObjectP", + "mangledName": "$s14CoreFoundation9_CFObjectP" + }, + { + "kind": "Conformance", + "name": "Hashable", + "printedName": "Hashable", + "usr": "s:SH", + "mangledName": "$sSH" + }, + { + "kind": "Conformance", + "name": "Equatable", + "printedName": "Equatable", + "usr": "s:SQ", + "mangledName": "$sSQ" + }, + { + "kind": "Conformance", + "name": "_CGContextInit", + "printedName": "_CGContextInit", + "usr": "s:12CoreGraphics14_CGContextInitP", + "mangledName": "$s12CoreGraphics14_CGContextInitP" + } + ] + }, + { + "kind": "TypeDecl", + "name": "POICategory", + "printedName": "POICategory", + "declKind": "Struct", + "usr": "s:7Penguin11POICategoryV", + "mangledName": "$s7Penguin11POICategoryV", + "moduleName": "Penguin", + "isExternal": true, + "conformances": [ + { + "kind": "Conformance", + "name": "Decodable", + "printedName": "Decodable", + "usr": "s:Se", + "mangledName": "$sSe" + }, + { + "kind": "Conformance", + "name": "Encodable", + "printedName": "Encodable", + "usr": "s:SE", + "mangledName": "$sSE" + }, + { + "kind": "Conformance", + "name": "Copyable", + "printedName": "Copyable", + "usr": "s:s8CopyableP", + "mangledName": "$ss8CopyableP" + }, + { + "kind": "Conformance", + "name": "Escapable", + "printedName": "Escapable", + "usr": "s:s9EscapableP", + "mangledName": "$ss9EscapableP" + } + ] + } + ], + "json_format_version": 8 + }, + "ConstValues": [ + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 509, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 521, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 638, + "length": 4, + "value": "0.33" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 697, + "length": 4, + "value": "0.33" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 786, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 798, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "IntegerLiteral", + "offset": 915, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoryCollectionViewCell.swift", + "kind": "IntegerLiteral", + "offset": 971, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandOptimizer.swift", + "kind": "IntegerLiteral", + "offset": 4827, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandOptimizer.swift", + "kind": "IntegerLiteral", + "offset": 4895, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Element.swift", + "kind": "Dictionary", + "offset": 1423, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Formatters\/DistanceFormatter.swift", + "kind": "BooleanLiteral", + "offset": 207, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "FloatLiteral", + "offset": 1402, + "length": 4, + "value": "18.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "FloatLiteral", + "offset": 1510, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "FloatLiteral", + "offset": 1617, + "length": 4, + "value": "69.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "FloatLiteral", + "offset": 2877, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "Array", + "offset": 2939, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "Dictionary", + "offset": 3022, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "Array", + "offset": 3081, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Layout.swift", + "kind": "BooleanLiteral", + "offset": 32085, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueDetails\/VenueDetailsViewController.swift", + "kind": "Array", + "offset": 581, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueDetails\/VenueDetailsViewController.swift", + "kind": "Array", + "offset": 629, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueDetails\/VenueDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 669, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueDetails\/VenueDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 897, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "Array", + "offset": 950, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "Array", + "offset": 986, + "length": 4, + "value": "[\"\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "IntegerLiteral", + "offset": 1014, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "BooleanLiteral", + "offset": 1040, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "BooleanLiteral", + "offset": 1076, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "FloatLiteral", + "offset": 1123, + "length": 3, + "value": "0.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CategoryResults\/CategoryResultsViewController.swift", + "kind": "IntegerLiteral", + "offset": 1166, + "length": 2, + "value": "80" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/AppleSynthesizer.swift", + "kind": "BooleanLiteral", + "offset": 164, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Path+Reversed.swift", + "kind": "Array", + "offset": 2868, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoritesCell.swift", + "kind": "Array", + "offset": 292, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Directory\/DirectoryViewController.swift", + "kind": "Array", + "offset": 464, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Directory\/DirectoryViewController.swift", + "kind": "IntegerLiteral", + "offset": 490, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Directory\/DirectoryViewController.swift", + "kind": "BooleanLiteral", + "offset": 516, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/NavigationEventType.swift", + "kind": "StringLiteral", + "offset": 159, + "length": 14, + "value": "\"shortestPath\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/NavigationEventType.swift", + "kind": "StringLiteral", + "offset": 201, + "length": 7, + "value": "\"start\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/NavigationEventType.swift", + "kind": "StringLiteral", + "offset": 234, + "length": 5, + "value": "\"end\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/NavigationEventType.swift", + "kind": "StringLiteral", + "offset": 270, + "length": 7, + "value": "\"reach\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.swift", + "kind": "IntegerLiteral", + "offset": 1203, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.swift", + "kind": "IntegerLiteral", + "offset": 1470, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/VenueInfoResponse.swift", + "kind": "StringLiteral", + "offset": 309, + "length": 20, + "value": "\"GetVenueInfoResult\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/VenueInfoResponse.swift", + "kind": "StringLiteral", + "offset": 1582, + "length": 14, + "value": "\"scheduleList\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2764, + "length": 3, + "value": "\"M\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2800, + "length": 3, + "value": "\"m\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2828, + "length": 3, + "value": "\"L\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2864, + "length": 3, + "value": "\"l\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2898, + "length": 3, + "value": "\"H\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2940, + "length": 3, + "value": "\"h\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 2972, + "length": 3, + "value": "\"V\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3012, + "length": 3, + "value": "\"v\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3041, + "length": 3, + "value": "\"C\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3078, + "length": 3, + "value": "\"c\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3113, + "length": 3, + "value": "\"S\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3156, + "length": 3, + "value": "\"s\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3189, + "length": 3, + "value": "\"Q\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3230, + "length": 3, + "value": "\"q\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3269, + "length": 3, + "value": "\"T\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3316, + "length": 3, + "value": "\"t\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3343, + "length": 3, + "value": "\"A\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3378, + "length": 3, + "value": "\"a\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3407, + "length": 3, + "value": "\"Z\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Path.swift", + "kind": "StringLiteral", + "offset": 3441, + "length": 3, + "value": "\"z\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/NodeSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 340, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/NodeSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 937, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/InstrinsicLabel.swift", + "kind": "IntegerLiteral", + "offset": 212, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/InstrinsicLabel.swift", + "kind": "IntegerLiteral", + "offset": 216, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/RouteOptions\/RouteOptionsViewController.swift", + "kind": "IntegerLiteral", + "offset": 2951, + "length": 3, + "value": "320" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/RouteOptions\/RouteOptionsViewController.swift", + "kind": "IntegerLiteral", + "offset": 2957, + "length": 3, + "value": "420" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "IntegerLiteral", + "offset": 662, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 782, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "Array", + "offset": 825, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 949, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 4985, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/GateSelector\/GateSelectorViewController.swift", + "kind": "Array", + "offset": 330, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Route\/RouteDirection.swift", + "kind": "BooleanLiteral", + "offset": 293, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/DownloadManager.swift", + "kind": "IntegerLiteral", + "offset": 1261, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/DownloadManager.swift", + "kind": "StringLiteral", + "offset": 1414, + "length": 10, + "value": "\"download\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/LocationDetectionStatus.swift", + "kind": "IntegerLiteral", + "offset": 182, + "length": 13, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/LocationDetectionStatus.swift", + "kind": "IntegerLiteral", + "offset": 205, + "length": 16, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "StringLiteral", + "offset": 985, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "StringLiteral", + "offset": 1019, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "StringLiteral", + "offset": 1054, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "BooleanLiteral", + "offset": 1085, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "Array", + "offset": 1212, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "Array", + "offset": 1250, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Place\/Place.swift", + "kind": "BooleanLiteral", + "offset": 1453, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "StringLiteral", + "offset": 540, + "length": 61, + "value": "\"https:\/\/texttospeech.googleapis.com\/v1beta1\/text:synthesize\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "Array", + "offset": 732, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "FloatLiteral", + "offset": 822, + "length": 4, + "value": "0.89" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "FloatLiteral", + "offset": 858, + "length": 4, + "value": "-4.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "StringLiteral", + "offset": 889, + "length": 38, + "value": "\"small-bluetooth-speaker-class-device\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "BooleanLiteral", + "offset": 995, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Speech\/GoogleSynthesizer.swift", + "kind": "Dictionary", + "offset": 2610, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/FloorsManager.swift", + "kind": "Array", + "offset": 220, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Array", + "offset": 7523, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7567, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7611, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7660, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7720, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.CGText.swift", + "kind": "Dictionary", + "offset": 7767, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/RoutePlanner\/RoutePlannerViewController.swift", + "kind": "BooleanLiteral", + "offset": 1141, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/RoutePlanner\/RoutePlannerViewController.swift", + "kind": "IntegerLiteral", + "offset": 1610, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 137, + "length": 7, + "value": "\"Right\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 168, + "length": 11, + "value": "\"VeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 202, + "length": 12, + "value": "\"SharpRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 235, + "length": 6, + "value": "\"Left\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 264, + "length": 10, + "value": "\"VeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 296, + "length": 11, + "value": "\"SharpLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/ManeuverType.swift", + "kind": "StringLiteral", + "offset": 336, + "length": 10, + "value": "\"Straight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 202, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 206, + "length": 2, + "value": "30" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 211, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 234, + "length": 4, + "value": "1000" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "StringLiteral", + "offset": 673, + "length": 27, + "value": "\"chevron.right.circle.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "StringLiteral", + "offset": 703, + "length": 26, + "value": "\"chevron.left.circle.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/ToastView.swift", + "kind": "IntegerLiteral", + "offset": 906, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/Calibrate\/CalibrateMessage.swift", + "kind": "FloatLiteral", + "offset": 384, + "length": 4, + "value": "20.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "Array", + "offset": 723, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "Array", + "offset": 763, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "IntegerLiteral", + "offset": 796, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 916, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "Array", + "offset": 959, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 1130, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/Search\/NavigationSearchViewController.swift", + "kind": "BooleanLiteral", + "offset": 6058, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "IntegerLiteral", + "offset": 2461, + "length": 6, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "IntegerLiteral", + "offset": 2481, + "length": 5, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "IntegerLiteral", + "offset": 2719, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "IntegerLiteral", + "offset": 2752, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/Views\/TagFlowLayout.swift", + "kind": "BooleanLiteral", + "offset": 6620, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/FavoritesManager.swift", + "kind": "Array", + "offset": 493, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/FavoritesManager.swift", + "kind": "BooleanLiteral", + "offset": 1293, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/FavoritesManager.swift", + "kind": "BooleanLiteral", + "offset": 4715, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.PresentationAttributes.swift", + "kind": "StringLiteral", + "offset": 2942, + "length": 3, + "value": "\" \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ThemeManager.swift", + "kind": "Array", + "offset": 853, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ThemeManager.swift", + "kind": "Array", + "offset": 906, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ThemeManager.swift", + "kind": "Array", + "offset": 949, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CommandLine.Configuration.swift", + "kind": "IntegerLiteral", + "offset": 7909, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CommandLine.Configuration.swift", + "kind": "IntegerLiteral", + "offset": 7914, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CommandLine.Configuration.swift", + "kind": "IntegerLiteral", + "offset": 7961, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CommandLine.Configuration.swift", + "kind": "IntegerLiteral", + "offset": 7966, + "length": 1, + "value": "9" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/FloatingPanelExtensions.swift", + "kind": "FloatLiteral", + "offset": 2765, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/FloatingPanelExtensions.swift", + "kind": "FloatLiteral", + "offset": 2797, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "Array", + "offset": 528, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "Array", + "offset": 553, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "IntegerLiteral", + "offset": 929, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "IntegerLiteral", + "offset": 1030, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "IntegerLiteral", + "offset": 1487, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "Array", + "offset": 3523, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "BooleanLiteral", + "offset": 3556, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "Array", + "offset": 3587, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Route\/NavigationManager.swift", + "kind": "BooleanLiteral", + "offset": 14096, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Favorites\/FavoritesViewController.swift", + "kind": "Array", + "offset": 320, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Favorites\/FavoritesViewController.swift", + "kind": "StringLiteral", + "offset": 474, + "length": 8, + "value": "\"remove\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Favorites\/FavoritesViewController.swift", + "kind": "IntegerLiteral", + "offset": 670, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 202, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 242, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 280, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "FloatLiteral", + "offset": 359, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "FloatLiteral", + "offset": 379, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 477, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FavoriteBadgeView.swift", + "kind": "IntegerLiteral", + "offset": 483, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/FileDownloader.swift", + "kind": "Array", + "offset": 668, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/APIs\/PenApi.swift", + "kind": "StringLiteral", + "offset": 178, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/APIs\/PenApi.swift", + "kind": "StringLiteral", + "offset": 203, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/APIs\/PenApi.swift", + "kind": "StringLiteral", + "offset": 232, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/APIs\/PenApi.swift", + "kind": "StringLiteral", + "offset": 265, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/AlertAction.swift", + "kind": "BooleanLiteral", + "offset": 316, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "StringLiteral", + "offset": 806, + "length": 15, + "value": "\"reached_to %@\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "StringLiteral", + "offset": 867, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 1016, + "length": 2, + "value": "90" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 1037, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 1076, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 1081, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4435, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4708, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4795, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4907, + "length": 3, + "value": "624" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 4956, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/NavigationFeedback\/NavigationFeedbackViewController.swift", + "kind": "IntegerLiteral", + "offset": 5067, + "length": 3, + "value": "290" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 344, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 375, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "StringLiteral", + "offset": 398, + "length": 4, + "value": "\"-1\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "StringLiteral", + "offset": 423, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "StringLiteral", + "offset": 445, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 482, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 509, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 768, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 1084, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 1213, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PenNavUIManager.swift", + "kind": "BooleanLiteral", + "offset": 25236, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 136, + "length": 31, + "value": "\"DataAPI.svc\/SetNavigationRate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 204, + "length": 47, + "value": "\"PathAPI.svc\/getVenueGatesShortestPathDistance\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 279, + "length": 29, + "value": "\"DataAPI.svc\/GetPaletteColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 330, + "length": 19, + "value": "\"company\/-1\/colors\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 370, + "length": 22, + "value": "\"DataAPI.svc\/GetFonts\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 415, + "length": 11, + "value": "\"icons\/poi\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 453, + "length": 14, + "value": "\"favorite\/set\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 493, + "length": 27, + "value": "\"DataAPI.svc\/GetVenueCards\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 550, + "length": 32, + "value": "\"DataAPI.svc\/getPoIInfoByFilter\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 608, + "length": 29, + "value": "\"DataAPI.svc\/GetSearchDataV2\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 663, + "length": 27, + "value": "\"DataAPI.svc\/GetCategories\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 715, + "length": 14, + "value": "\"Poi\/Amenites\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 754, + "length": 14, + "value": "\"favorite\/get\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 798, + "length": 17, + "value": "\"favorite\/delete\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 844, + "length": 17, + "value": "\"favorite\/update\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 885, + "length": 11, + "value": "\"path\/trip\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 937, + "length": 11, + "value": "\"sharedurl\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 977, + "length": 27, + "value": "\"DataAPI.svc\/GetCampusInfo\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1032, + "length": 26, + "value": "\"DataAPI.svc\/GetVenueInfo\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1084, + "length": 24, + "value": "\"DataAPI.svc\/getPoIById\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1140, + "length": 27, + "value": "\"DataAPI.svc\/getPoIByRefId\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1196, + "length": 27, + "value": "\"DataAPI.svc\/GetVenuesInfo\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1247, + "length": 27, + "value": "\"DataAPI.svc\/getAdsOnFloor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1297, + "length": 26, + "value": "\"DataAPI.svc\/getAdsOnEdge\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1352, + "length": 17, + "value": "\"images\/campaign\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1400, + "length": 29, + "value": "\"company\/log\/navigationEvent\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1470, + "length": 17, + "value": "\"company\/log\/LBM\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1518, + "length": 32, + "value": "\"DataAPI.svc\/savePenNavPosition\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1579, + "length": 25, + "value": "\"DataAPI.svc\/GetCampuses\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/APIMethod.swift", + "kind": "StringLiteral", + "offset": 1627, + "length": 13, + "value": "\"map\/objects\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/GatesManager.swift", + "kind": "Array", + "offset": 224, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/FloorSelectorViewController.swift", + "kind": "Array", + "offset": 650, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/FloorSelectorViewController.swift", + "kind": "Array", + "offset": 679, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/CustomFlowLayout.swift", + "kind": "BooleanLiteral", + "offset": 242, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITapGestureRecognizer.swift", + "kind": "IntegerLiteral", + "offset": 162, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetPoIByIdResponse.swift", + "kind": "StringLiteral", + "offset": 5404, + "length": 10, + "value": "\"imageUrl\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetPoIByIdResponse.swift", + "kind": "StringLiteral", + "offset": 5671, + "length": 11, + "value": "\"openState\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetPoIByIdResponse.swift", + "kind": "StringLiteral", + "offset": 5701, + "length": 13, + "value": "\"closedState\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetPoIByIdResponse.swift", + "kind": "StringLiteral", + "offset": 5738, + "length": 18, + "value": "\"closedTodayState\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Logging.swift", + "kind": "StringLiteral", + "offset": 114, + "length": 12, + "value": "\"%{public}@\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Logging.swift", + "kind": "StringLiteral", + "offset": 388, + "length": 26, + "value": "\"com.scenee.FloatingPanel\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Logging.swift", + "kind": "StringLiteral", + "offset": 441, + "length": 15, + "value": "\"FloatingPanel\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Path+Bounds.swift", + "kind": "IntegerLiteral", + "offset": 6349, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Path+Bounds.swift", + "kind": "IntegerLiteral", + "offset": 6412, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "FloatLiteral", + "offset": 302, + "length": 3, + "value": "0.8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "FloatLiteral", + "offset": 340, + "length": 5, + "value": "0.125" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "FloatLiteral", + "offset": 385, + "length": 4, + "value": "0.04" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "FloatLiteral", + "offset": 425, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "BooleanLiteral", + "offset": 581, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SelectedLocationIndicatorView.swift", + "kind": "IntegerLiteral", + "offset": 3503, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/LegCell\/LegCell.swift", + "kind": "IntegerLiteral", + "offset": 589, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 458, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "IntegerLiteral", + "offset": 514, + "length": 3, + "value": "120" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "IntegerLiteral", + "offset": 559, + "length": 2, + "value": "55" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "IntegerLiteral", + "offset": 624, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FavoriteDetails\/FavoriteDetailsViewController.swift", + "kind": "IntegerLiteral", + "offset": 668, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "Array", + "offset": 583, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "Array", + "offset": 637, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "Array", + "offset": 687, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "Array", + "offset": 736, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "IntegerLiteral", + "offset": 994, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "IntegerLiteral", + "offset": 1018, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "IntegerLiteral", + "offset": 1087, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/AllFilterViewController.swift", + "kind": "IntegerLiteral", + "offset": 1111, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 3968, + "length": 4, + "value": "\"id\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 4010, + "length": 7, + "value": "\"style\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 4084, + "length": 7, + "value": "\"class\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 17532, + "length": 10, + "value": "\".\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 17541, + "length": 1, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 17663, + "length": 10, + "value": "\"#\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "StringLiteral", + "offset": 17672, + "length": 1, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.Formatter.SVG.swift", + "kind": "IntegerLiteral", + "offset": 17767, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/BadgeView.swift", + "kind": "IntegerLiteral", + "offset": 186, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/BadgeView.swift", + "kind": "IntegerLiteral", + "offset": 226, + "length": 2, + "value": "25" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Builder.swift", + "kind": "Array", + "offset": 2925, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "StringLiteral", + "offset": 168, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "Array", + "offset": 244, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "Array", + "offset": 275, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "StringLiteral", + "offset": 454, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "Array", + "offset": 521, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "Array", + "offset": 545, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "BooleanLiteral", + "offset": 1551, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "BooleanLiteral", + "offset": 1780, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "StringLiteral", + "offset": 2316, + "length": 10, + "value": "\"distance\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchFilters.swift", + "kind": "StringLiteral", + "offset": 2348, + "length": 11, + "value": "\"bestMatch\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Gradient.swift", + "kind": "Array", + "offset": 2307, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Gradient.swift", + "kind": "Array", + "offset": 2588, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 495, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 523, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 646, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 768, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 802, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 833, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "FloatLiteral", + "offset": 1000, + "length": 5, + "value": "134.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1104, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1191, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1405, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1547, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 1580, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2079, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "FloatLiteral", + "offset": 2117, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2854, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2864, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2876, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "IntegerLiteral", + "offset": 2887, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 2930, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 8832, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 9316, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 10293, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 13057, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 13261, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 14022, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 15462, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 16673, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 17801, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Map\/MapViewController.swift", + "kind": "BooleanLiteral", + "offset": 52907, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Behavior.swift", + "kind": "FloatLiteral", + "offset": 3499, + "length": 5, + "value": "0.001" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Behavior.swift", + "kind": "FloatLiteral", + "offset": 3570, + "length": 3, + "value": "0.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Behavior.swift", + "kind": "FloatLiteral", + "offset": 4011, + "length": 3, + "value": "5.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Repositories\/PenNavStyleRepository.swift", + "kind": "StringLiteral", + "offset": 183, + "length": 6, + "value": "\"Font\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Repositories\/PenNavStyleRepository.swift", + "kind": "StringLiteral", + "offset": 207, + "length": 7, + "value": "\"Color\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/FeatureIdentifiers.swift", + "kind": "StringLiteral", + "offset": 184, + "length": 16, + "value": "\"selected-place\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/FeatureIdentifiers.swift", + "kind": "StringLiteral", + "offset": 245, + "length": 19, + "value": "\"destination-place\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/FeatureIdentifiers.swift", + "kind": "StringLiteral", + "offset": 310, + "length": 20, + "value": "\"location-indicator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/FeatureIdentifiers.swift", + "kind": "StringLiteral", + "offset": 362, + "length": 16, + "value": "\"maneuver-arrow\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3202, + "length": 3, + "value": "\"g\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3243, + "length": 6, + "value": "\"line\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3288, + "length": 8, + "value": "\"circle\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3337, + "length": 9, + "value": "\"ellipse\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3388, + "length": 6, + "value": "\"rect\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3433, + "length": 10, + "value": "\"polyline\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3486, + "length": 9, + "value": "\"polygon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3537, + "length": 6, + "value": "\"path\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3582, + "length": 6, + "value": "\"text\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3705, + "length": 3, + "value": "\"a\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3831, + "length": 5, + "value": "\"use\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3874, + "length": 8, + "value": "\"switch\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 3921, + "length": 7, + "value": "\"image\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 10223, + "length": 4, + "value": "\"id\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Element.swift", + "kind": "StringLiteral", + "offset": 10269, + "length": 7, + "value": "\"class\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/HourScheduleData.swift", + "kind": "Array", + "offset": 173, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/HourScheduleData.swift", + "kind": "BooleanLiteral", + "offset": 203, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/HourScheduleData.swift", + "kind": "BooleanLiteral", + "offset": 235, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/HourScheduleData.swift", + "kind": "BooleanLiteral", + "offset": 268, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Path.swift", + "kind": "Array", + "offset": 1279, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 229, + "length": 4, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 243, + "length": 6, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 259, + "length": 5, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 895, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 917, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 1369, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 1392, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/LayoutProperties.swift", + "kind": "IntegerLiteral", + "offset": 1414, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 359, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "FloatLiteral", + "offset": 2136, + "length": 4, + "value": "37.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 2150, + "length": 2, + "value": "30" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 2259, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 2409, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 2420, + "length": 1, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "FloatLiteral", + "offset": 2506, + "length": 3, + "value": "3.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/CampusSymbolView.swift", + "kind": "FloatLiteral", + "offset": 2621, + "length": 3, + "value": "4.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Categories\/CategoriesViewController.swift", + "kind": "Array", + "offset": 257, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CampusDetails\/CampusDetailsViewController.swift", + "kind": "Array", + "offset": 745, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CampusDetails\/CampusDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 788, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/CampusDetails\/CampusDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 831, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 153, + "length": 5, + "value": "\"poi\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 176, + "length": 7, + "value": "\"venue\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 208, + "length": 9, + "value": "\"parking\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 245, + "length": 18, + "value": "\"current-location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 284, + "length": 10, + "value": "\"location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 320, + "length": 15, + "value": "\"referencedPOI\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PlaceType.swift", + "kind": "StringLiteral", + "offset": 354, + "length": 8, + "value": "\"campus\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresenter.swift", + "kind": "BooleanLiteral", + "offset": 497, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 763, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 816, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 4482, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 4509, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 4848, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "FloatLiteral", + "offset": 4875, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 8177, + "length": 3, + "value": "100" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 8202, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "StringLiteral", + "offset": 8233, + "length": 9, + "value": "\"Poppins\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 8250, + "length": 2, + "value": "14" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Extensions.swift", + "kind": "IntegerLiteral", + "offset": 8277, + "length": 2, + "value": "14" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UIControl.swift", + "kind": "IntegerLiteral", + "offset": 149, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.SAXParser.swift", + "kind": "StringLiteral", + "offset": 1533, + "length": 28, + "value": "\"http:\/\/www.w3.org\/2000\/svg\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/XML.SAXParser.swift", + "kind": "Dictionary", + "offset": 2851, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "BooleanLiteral", + "offset": 338, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "BooleanLiteral", + "offset": 362, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "BooleanLiteral", + "offset": 391, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "FloatLiteral", + "offset": 447, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "FloatLiteral", + "offset": 604, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "IntegerLiteral", + "offset": 650, + "length": 2, + "value": "26" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LocationIndicatorManager.swift", + "kind": "BooleanLiteral", + "offset": 3692, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 146, + "length": 5, + "value": "\"map\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 172, + "length": 10, + "value": "\"deepLink\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 201, + "length": 8, + "value": "\"search\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 231, + "length": 11, + "value": "\"directory\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/SourceView.swift", + "kind": "StringLiteral", + "offset": 266, + "length": 13, + "value": "\"referenceId\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/EdgesManager.swift", + "kind": "Array", + "offset": 215, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Styles\/ColorsResponse.swift", + "kind": "StringLiteral", + "offset": 364, + "length": 9, + "value": "\"Polygon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Styles\/ColorsResponse.swift", + "kind": "StringLiteral", + "offset": 401, + "length": 9, + "value": "\"Palette\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "IntegerLiteral", + "offset": 6810, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "Array", + "offset": 6826, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "StringLiteral", + "offset": 6889, + "length": 10, + "value": "\"Warning:\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "StringLiteral", + "offset": 6901, + "length": 38, + "value": "\"clip-path unsupported in SF Symbols.\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "Array", + "offset": 6981, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "StringLiteral", + "offset": 7051, + "length": 10, + "value": "\"Warning:\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "StringLiteral", + "offset": 7063, + "length": 33, + "value": "\"mask unsupported in SF Symbols.\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "Array", + "offset": 7138, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "IntegerLiteral", + "offset": 19538, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SFSymbol.swift", + "kind": "IntegerLiteral", + "offset": 19543, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetVenueGatesDistancesResponse.swift", + "kind": "BooleanLiteral", + "offset": 443, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetVenueGatesDistancesResponse.swift", + "kind": "BooleanLiteral", + "offset": 479, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2084, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2090, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2096, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2102, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2109, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Transform.swift", + "kind": "IntegerLiteral", + "offset": 2116, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/FloorSelectorSection.swift", + "kind": "IntegerLiteral", + "offset": 198, + "length": 6, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/PlaceImages\/PlaceImagesCell.swift", + "kind": "Array", + "offset": 245, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/PlaceImages\/PlaceImagesCell.swift", + "kind": "Array", + "offset": 286, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/PlaceImages\/PlaceImagesCell.swift", + "kind": "Array", + "offset": 370, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 209, + "length": 27, + "value": "\"dismissPenNavNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 304, + "length": 32, + "value": "\"oneSecondDidElapseNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 411, + "length": 39, + "value": "\"networkInterfaceDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 522, + "length": 36, + "value": "\"locationStateDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 631, + "length": 37, + "value": "\"bluetoothStateDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 743, + "length": 39, + "value": "\"locationAccuracyDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 857, + "length": 39, + "value": "\"connectionStatusDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 977, + "length": 45, + "value": "\"directionsAvailabilityDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Notification.Name.swift", + "kind": "StringLiteral", + "offset": 1103, + "length": 45, + "value": "\"locationDetectionStateDidChangeNotification\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/TagsViewController\/TagsViewController.swift", + "kind": "Array", + "offset": 399, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/TagsViewController\/TagsViewController.swift", + "kind": "Array", + "offset": 474, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/TagsViewController\/TagsViewController.swift", + "kind": "BooleanLiteral", + "offset": 509, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/GoodToKnowSectionCell\/AmenitiesDetailTableViewCell.swift", + "kind": "BooleanLiteral", + "offset": 419, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/GoodToKnowSectionCell\/AmenitiesDetailTableViewCell.swift", + "kind": "Array", + "offset": 532, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/GoodToKnowSectionCell\/AmenitiesDetailTableViewCell.swift", + "kind": "IntegerLiteral", + "offset": 559, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/GoodToKnowSectionCell\/AmenitiesDetailTableViewCell.swift", + "kind": "IntegerLiteral", + "offset": 599, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/ImageStorage.swift", + "kind": "Dictionary", + "offset": 591, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/ImageStorage.swift", + "kind": "StringLiteral", + "offset": 644, + "length": 35, + "value": "\"com.penNav.imageStorage.taskQueue\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.LinearGradient.swift", + "kind": "FloatLiteral", + "offset": 1900, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/ConnectedVenueCell.swift", + "kind": "IntegerLiteral", + "offset": 827, + "length": 2, + "value": "64" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/ConnectedVenueCell.swift", + "kind": "Array", + "offset": 902, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/FloorSelector\/ConnectedVenueCell.swift", + "kind": "BooleanLiteral", + "offset": 968, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UIView.swift", + "kind": "IntegerLiteral", + "offset": 3359, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "FloatLiteral", + "offset": 237, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "FloatLiteral", + "offset": 284, + "length": 4, + "value": "0.08" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "FloatLiteral", + "offset": 337, + "length": 4, + "value": "0.04" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "FloatLiteral", + "offset": 385, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SelectedPlaceView.swift", + "kind": "BooleanLiteral", + "offset": 636, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.RadialGradient.swift", + "kind": "FloatLiteral", + "offset": 2001, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Geofence\/LocationBasedMessagesManager.swift", + "kind": "Array", + "offset": 456, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Geofence\/LocationBasedMessagesManager.swift", + "kind": "Array", + "offset": 499, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Geofence\/LocationBasedMessagesManager.swift", + "kind": "Array", + "offset": 544, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Geofence\/LocationBasedMessagesManager.swift", + "kind": "Array", + "offset": 588, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 393, + "length": 11, + "value": "\"DayNumber\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 436, + "length": 13, + "value": "\"OpeningTime\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 481, + "length": 13, + "value": "\"ClosingTime\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 521, + "length": 8, + "value": "\"OffDay\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 748, + "length": 10, + "value": "\"imageUrl\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/CampusInfoScreen.swift", + "kind": "StringLiteral", + "offset": 810, + "length": 14, + "value": "\"scheduleList\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2831, + "length": 9, + "value": "\"regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2859, + "length": 8, + "value": "\"medium\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2888, + "length": 10, + "value": "\"semiBold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2944, + "length": 17, + "value": "\"Poppins-Regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 2980, + "length": 16, + "value": "\"Poppins-Medium\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 3017, + "length": 18, + "value": "\"Poppins-SemiBold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 3223, + "length": 20, + "value": "\"Alexandria-Regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 3262, + "length": 19, + "value": "\"Alexandria-Medium\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/FontManager\/FontStyle.swift", + "kind": "StringLiteral", + "offset": 3302, + "length": 21, + "value": "\"Alexandria-SemiBold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/GeofenceManager.swift", + "kind": "Array", + "offset": 259, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/Date+Extension.swift", + "kind": "StringLiteral", + "offset": 1539, + "length": 8, + "value": "\"h:mm a\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "BooleanLiteral", + "offset": 256, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "IntegerLiteral", + "offset": 378, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "IntegerLiteral", + "offset": 384, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1179, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1191, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1352, + "length": 4, + "value": "0.33" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1463, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "FloatLiteral", + "offset": 1475, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "IntegerLiteral", + "offset": 1636, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/HapticView.swift", + "kind": "BooleanLiteral", + "offset": 1078, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "BooleanLiteral", + "offset": 2116, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "IntegerLiteral", + "offset": 2145, + "length": 2, + "value": "60" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "IntegerLiteral", + "offset": 2150, + "length": 2, + "value": "60" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "StringLiteral", + "offset": 2193, + "length": 5, + "value": "\"min\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "StringLiteral", + "offset": 2266, + "length": 4, + "value": "\"hr\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "IntegerLiteral", + "offset": 2950, + "length": 3, + "value": "112" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/BottomPanel\/BottomNavigationPanelViewController.swift", + "kind": "IntegerLiteral", + "offset": 3150, + "length": 3, + "value": "192" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/String+Extension.swift", + "kind": "StringLiteral", + "offset": 5520, + "length": 8, + "value": "\"h:mm a\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "IntegerLiteral", + "offset": 184, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "IntegerLiteral", + "offset": 219, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "StringLiteral", + "offset": 404, + "length": 14, + "value": "\"chevron.left\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "BooleanLiteral", + "offset": 611, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "BooleanLiteral", + "offset": 696, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/BackButton.swift", + "kind": "BooleanLiteral", + "offset": 782, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Repositories\/TableUpdateRespository.swift", + "kind": "StringLiteral", + "offset": 190, + "length": 13, + "value": "\"CachedVenue\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Repositories\/TableUpdateRespository.swift", + "kind": "StringLiteral", + "offset": 319, + "length": 22, + "value": "\"1\/1\/2001 01:00:00 AM\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Helpers\/RoutePathDrawingHelper.swift", + "kind": "BooleanLiteral", + "offset": 16348, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 376, + "length": 4, + "value": "17.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 400, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 467, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 491, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 582, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 844, + "length": 4, + "value": "12.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 868, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 935, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 959, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 1050, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 1309, + "length": 4, + "value": "17.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 1333, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 1400, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 1424, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 1515, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 1774, + "length": 2, + "value": "17" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 1796, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 1863, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 1887, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 1978, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 2243, + "length": 4, + "value": "12.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 2273, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 2297, + "length": 45, + "value": "[\"Poppins SemiBold\", \"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 2362, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 2475, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 2742, + "length": 4, + "value": "12.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 2766, + "length": 45, + "value": "[\"Poppins SemiBold\", \"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 2831, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 2944, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 3213, + "length": 4, + "value": "14.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 3242, + "length": 6, + "value": "[1, 2]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 3553, + "length": 54, + "value": "[(12, 4.0), (16, 5.5), (18, 6.5), (19, 8), (19.5, 10)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 3932, + "length": 56, + "value": "[(12, 7.0), (16, 7.5), (18, 8.5), (19, 9.5), (19.5, 11)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 4317, + "length": 54, + "value": "[(12, 4.0), (16, 5.5), (18, 6.5), (19, 8), (19.5, 10)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 4693, + "length": 54, + "value": "[(12, 4.0), (16, 5.5), (18, 6.5), (19, 8), (19.5, 10)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 5090, + "length": 56, + "value": "[(12, 7.0), (16, 7.5), (18, 8.5), (19, 9.5), (19.5, 11)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 5485, + "length": 56, + "value": "[(12, 7.0), (16, 7.5), (18, 8.5), (19, 9.5), (19.5, 11)]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 5820, + "length": 4, + "value": "14.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 6116, + "length": 4, + "value": "14.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 6388, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 6682, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 6952, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 7247, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 7539, + "length": 4, + "value": "16.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 7847, + "length": 4, + "value": "16.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 8134, + "length": 4, + "value": "16.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 8164, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 8188, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 8301, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 8556, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 8844, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 9123, + "length": 4, + "value": "17.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 9153, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 9178, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 9291, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 9585, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 9615, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 9639, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 9752, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 10048, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 10078, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 10103, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 10216, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 10500, + "length": 4, + "value": "17.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 10805, + "length": 4, + "value": "17.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 11098, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 11122, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 11235, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 11529, + "length": 25, + "value": "[\"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 11574, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 11687, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 11990, + "length": 25, + "value": "[\"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 12035, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 12148, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 12460, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 12484, + "length": 25, + "value": "[\"Arial Unicode MS Bold\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 12529, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 12642, + "length": 4, + "value": "0.75" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 12907, + "length": 4, + "value": "15.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 13166, + "length": 47, + "value": "[\"Poppins Regular\", \"Arial Unicode MS Regular\"]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "IntegerLiteral", + "offset": 13233, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "Array", + "offset": 13257, + "length": 9, + "value": "[0, 0.75]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 13320, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 13352, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 13412, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 13442, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 13473, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "FloatLiteral", + "offset": 16047, + "length": 4, + "value": "12.4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 16079, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/LayerConfiguration.swift", + "kind": "BooleanLiteral", + "offset": 16114, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/PlaceholderEnabledTextView.swift", + "kind": "StringLiteral", + "offset": 386, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 151, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 182, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 213, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 244, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Rating\/ServiceRate.swift", + "kind": "StringLiteral", + "offset": 327, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 250, + "length": 21, + "value": "\"getAdsOnFloorResult\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 414, + "length": 20, + "value": "\"getAdsOnEdgeResult\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1128, + "length": 4, + "value": "\"ID\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1153, + "length": 6, + "value": "\"Name\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1187, + "length": 13, + "value": "\"Description\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1222, + "length": 8, + "value": "\"PoI_ID\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1254, + "length": 10, + "value": "\"PoI_Name\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1290, + "length": 11, + "value": "\"StartDate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1325, + "length": 9, + "value": "\"EndDate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1359, + "length": 10, + "value": "\"Location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1395, + "length": 11, + "value": "\"isAllTime\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1427, + "length": 6, + "value": "\"Icon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1455, + "length": 7, + "value": "\"phone\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1484, + "length": 7, + "value": "\"email\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetFloorAdsResponse.swift", + "kind": "StringLiteral", + "offset": 1515, + "length": 9, + "value": "\"website\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/ImageIds.swift", + "kind": "StringLiteral", + "offset": 166, + "length": 30, + "value": "\"location-indicator-top-image\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/ImageIds.swift", + "kind": "StringLiteral", + "offset": 250, + "length": 39, + "value": "\"selected-location-indicator-top-image\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/ImageIds.swift", + "kind": "StringLiteral", + "offset": 339, + "length": 34, + "value": "\"location-indicator-bearing-image\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "Array", + "offset": 218, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "Array", + "offset": 323, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "Array", + "offset": 357, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "Array", + "offset": 399, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "BooleanLiteral", + "offset": 3254, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Instructions\/InstructionManager.swift", + "kind": "BooleanLiteral", + "offset": 4620, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Log\/PIAnalyticsManager.swift", + "kind": "StringLiteral", + "offset": 723, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Utilities\/PairedSequence.swift", + "kind": "BooleanLiteral", + "offset": 3345, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Toast\/ToastManager.swift", + "kind": "Array", + "offset": 278, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Toast\/ToastManager.swift", + "kind": "Array", + "offset": 331, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchBar\/SearchBar.swift", + "kind": "BooleanLiteral", + "offset": 381, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Search\/SearchBar\/SearchBar.swift", + "kind": "BooleanLiteral", + "offset": 522, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/UIImage+Image.swift", + "kind": "IntegerLiteral", + "offset": 2792, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/UIImage+Image.swift", + "kind": "IntegerLiteral", + "offset": 3368, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/UIImage+Image.swift", + "kind": "IntegerLiteral", + "offset": 3684, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/UIImage+Image.swift", + "kind": "IntegerLiteral", + "offset": 3725, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/General\/Constants.swift", + "kind": "IntegerLiteral", + "offset": 166, + "length": 2, + "value": "40" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 156, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 167, + "length": 20, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 197, + "length": 8, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 215, + "length": 9, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 234, + "length": 15, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 259, + "length": 22, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 291, + "length": 13, + "value": "7" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 314, + "length": 17, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/ToastType.swift", + "kind": "IntegerLiteral", + "offset": 341, + "length": 12, + "value": "9" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.Pattern.swift", + "kind": "Array", + "offset": 1493, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/DOM.SVG.swift", + "kind": "Dictionary", + "offset": 2587, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/ReroutingView\/BouncingDotsActivityIndicator.swift", + "kind": "IntegerLiteral", + "offset": 255, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/SelectionManager.swift", + "kind": "BooleanLiteral", + "offset": 456, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/SelectionManager.swift", + "kind": "BooleanLiteral", + "offset": 486, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "Array", + "offset": 1211, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "Array", + "offset": 1282, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 1369, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1471, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1514, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1546, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1576, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1713, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1794, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1829, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 1857, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "Array", + "offset": 2346, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "StringLiteral", + "offset": 2375, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2401, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2430, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2467, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2501, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2536, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2571, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2601, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2636, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2671, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "StringLiteral", + "offset": 2767, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2798, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2825, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2883, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2963, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 2991, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3171, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3217, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "FloatLiteral", + "offset": 3250, + "length": 4, + "value": "25.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 3303, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3362, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3372, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3384, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3395, + "length": 2, + "value": "32" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "IntegerLiteral", + "offset": 3824, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 5142, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 5176, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 15150, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 23887, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 37072, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 43635, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 44343, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 56207, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 73269, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/NavigationViewController.swift", + "kind": "BooleanLiteral", + "offset": 78630, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.swift", + "kind": "Array", + "offset": 1485, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.swift", + "kind": "IntegerLiteral", + "offset": 1690, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.swift", + "kind": "IntegerLiteral", + "offset": 1748, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/AbsoluteInsetDrivenLayout.swift", + "kind": "IntegerLiteral", + "offset": 899, + "length": 2, + "value": "69" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/MenuViewController.swift", + "kind": "Array", + "offset": 225, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Attributes.swift", + "kind": "Array", + "offset": 1702, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresentable.swift", + "kind": "BooleanLiteral", + "offset": 1703, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresentable.swift", + "kind": "BooleanLiteral", + "offset": 1726, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresentable.swift", + "kind": "BooleanLiteral", + "offset": 2078, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Protocols\/FloatingPanelPresentable.swift", + "kind": "BooleanLiteral", + "offset": 2110, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 937, + "length": 82, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 1176, + "length": 6, + "value": "\"full\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "IntegerLiteral", + "offset": 1191, + "length": 4, + "value": "1000" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 1349, + "length": 6, + "value": "\"half\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "IntegerLiteral", + "offset": 1364, + "length": 3, + "value": "500" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 1518, + "length": 5, + "value": "\"tip\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "IntegerLiteral", + "offset": 1532, + "length": 3, + "value": "100" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "StringLiteral", + "offset": 1677, + "length": 8, + "value": "\"hidden\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/State.swift", + "kind": "IntegerLiteral", + "offset": 1694, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/AsynchronousOperation.swift", + "kind": "BooleanLiteral", + "offset": 946, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/AsynchronousOperation.swift", + "kind": "BooleanLiteral", + "offset": 1030, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/AsynchronousOperation.swift", + "kind": "BooleanLiteral", + "offset": 1467, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "BooleanLiteral", + "offset": 523, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 735, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 748, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 841, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "IntegerLiteral", + "offset": 962, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "IntegerLiteral", + "offset": 1088, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 1693, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 2329, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 2825, + "length": 3, + "value": "6.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 2997, + "length": 4, + "value": "36.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 3219, + "length": 4, + "value": "36.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 3233, + "length": 3, + "value": "5.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 4682, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 8962, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 9085, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 9214, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "FloatLiteral", + "offset": 9340, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "IntegerLiteral", + "offset": 10606, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "Array", + "offset": 10345, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/SurfaceView.swift", + "kind": "BooleanLiteral", + "offset": 10715, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "IntegerLiteral", + "offset": 352, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "IntegerLiteral", + "offset": 364, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "IntegerLiteral", + "offset": 484, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "IntegerLiteral", + "offset": 496, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 739, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 778, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 1015, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 17661, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/PoiDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 18367, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Language\/LanguageManager.swift", + "kind": "StringLiteral", + "offset": 734, + "length": 4, + "value": "\"en\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Language\/LanguageManager.swift", + "kind": "StringLiteral", + "offset": 757, + "length": 4, + "value": "\"ar\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 296, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "StringLiteral", + "offset": 450, + "length": 11, + "value": "\"star.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 544, + "length": 1, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 550, + "length": 1, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 669, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 789, + "length": 2, + "value": "-3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 804, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 898, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 912, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 980, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 995, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 1095, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "IntegerLiteral", + "offset": 1144, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Cells\/StopCell\/StopCell.swift", + "kind": "BooleanLiteral", + "offset": 1180, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UIColor.swift", + "kind": "FloatLiteral", + "offset": 2055, + "length": 4, + "value": "20.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 358, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 3313, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "IntegerLiteral", + "offset": 3354, + "length": 2, + "value": "35" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 3519, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "StringLiteral", + "offset": 3795, + "length": 17, + "value": "\"Poppins-Regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 3820, + "length": 4, + "value": "16.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 3976, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "FloatLiteral", + "offset": 4080, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/VenueSymbolView.swift", + "kind": "BooleanLiteral", + "offset": 4200, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Directory\/DirectoryCell.swift", + "kind": "IntegerLiteral", + "offset": 321, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Directory\/DirectoryCell.swift", + "kind": "IntegerLiteral", + "offset": 334, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Responses\/GetCategoryResponse.swift", + "kind": "StringLiteral", + "offset": 244, + "length": 21, + "value": "\"GetCategoriesResult\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 209, + "length": 16, + "value": "\"base_url_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 260, + "length": 20, + "value": "\"service_name_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 319, + "length": 29, + "value": "\"position_service_name_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 382, + "length": 23, + "value": "\"root_controller_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 438, + "length": 22, + "value": "\"view_container_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 488, + "length": 17, + "value": "\"client_id_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 535, + "length": 23, + "value": "\"client_name_key_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 587, + "length": 19, + "value": "\"invalid_key_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 631, + "length": 20, + "value": "\"unauthorized_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 684, + "length": 19, + "value": "\"no_internet_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 734, + "length": 21, + "value": "\"bluetooth_off_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 793, + "length": 15, + "value": "\"gps_off_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 837, + "length": 28, + "value": "\"pen_nav_loading_data_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 892, + "length": 24, + "value": "\"os_not_supported_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 950, + "length": 19, + "value": "\"permissions_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1008, + "length": 22, + "value": "\"sensor_initial_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1055, + "length": 15, + "value": "\"unknown_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1111, + "length": 27, + "value": "\"location_permission_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1180, + "length": 28, + "value": "\"bluetooth_permission_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1236, + "length": 19, + "value": "\"invalid_campus_id\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1285, + "length": 14, + "value": "\"campus_error\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/PenNavUIError.swift", + "kind": "StringLiteral", + "offset": 1326, + "length": 17, + "value": "\"build_cancelled\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/MUtils.swift", + "kind": "IntegerLiteral", + "offset": 4302, + "length": 3, + "value": "256" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 130, + "length": 10, + "value": "\"Straight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 158, + "length": 7, + "value": "\"Venue\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 186, + "length": 10, + "value": "\"Elevator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 218, + "length": 11, + "value": "\"Escalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 248, + "length": 8, + "value": "\"Stairs\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 273, + "length": 6, + "value": "\"Ramp\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/Direction.swift", + "kind": "StringLiteral", + "offset": 296, + "length": 6, + "value": "\"Back\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 165, + "length": 30, + "value": "\"high-priority-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 232, + "length": 20, + "value": "\"floor-nodes-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 288, + "length": 19, + "value": "\"path-nodes-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 344, + "length": 20, + "value": "\"floor-gates-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 400, + "length": 19, + "value": "\"poi-models-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 465, + "length": 30, + "value": "\"extruded-poi-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 547, + "length": 37, + "value": "\"hidden-extruded-poi-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 628, + "length": 28, + "value": "\"outdoor-poi-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 699, + "length": 27, + "value": "\"indoor-poi-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 774, + "length": 32, + "value": "\"indoor-landmark-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 855, + "length": 33, + "value": "\"outdoor-landmark-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 933, + "length": 29, + "value": "\"outdoor-poi-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1013, + "length": 36, + "value": "\"outdoor-poi-polygon-borders-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1093, + "length": 28, + "value": "\"indoor-poi-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1171, + "length": 35, + "value": "\"indoor-poi-polygon-borders-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1246, + "length": 23, + "value": "\"venue-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1309, + "length": 23, + "value": "\"campus-polygon-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1378, + "length": 30, + "value": "\"campus-polygon-border-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1447, + "length": 22, + "value": "\"campus-border-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1508, + "length": 22, + "value": "\"venue-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1576, + "length": 30, + "value": "\"venue-polygon-borders-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1643, + "length": 20, + "value": "\"venue-gates-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1701, + "length": 21, + "value": "\"venue-models-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1770, + "length": 32, + "value": "\"extruded-venue-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1856, + "length": 39, + "value": "\"hidden-extruded-venue-polygons-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1939, + "length": 27, + "value": "\"destination-symbol-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2012, + "length": 30, + "value": "\"indoor-selected-place-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2089, + "length": 31, + "value": "\"outdoor-selected-place-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2152, + "length": 14, + "value": "\"floor-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2205, + "length": 22, + "value": "\"campus-symbol-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2265, + "length": 21, + "value": "\"campus-gates-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2322, + "length": 19, + "value": "\"route-line-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2383, + "length": 26, + "value": "\"route-line-casing-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2448, + "length": 22, + "value": "\"progress-line-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2515, + "length": 29, + "value": "\"progress-line-casing-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2593, + "length": 34, + "value": "\"progress-line-start-point-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2668, + "length": 43, + "value": "\"location-indicator-accuracy-circle-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2755, + "length": 27, + "value": "\"location-indicator-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2834, + "length": 36, + "value": "\"selected-location-indicator-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2910, + "length": 23, + "value": "\"object-symbols-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2973, + "length": 23, + "value": "\"maneuver-arrow-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 3038, + "length": 26, + "value": "\"linked-route-line-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/SourceIdentifiers.swift", + "kind": "StringLiteral", + "offset": 3112, + "length": 33, + "value": "\"linked-route-line-casing-source\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/VenuesManager.swift", + "kind": "Array", + "offset": 221, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/VenuesManager.swift", + "kind": "Array", + "offset": 270, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/VenuesManager.swift", + "kind": "Array", + "offset": 320, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandGenerator.swift", + "kind": "BooleanLiteral", + "offset": 1483, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandGenerator.swift", + "kind": "BooleanLiteral", + "offset": 1536, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandGenerator.swift", + "kind": "BooleanLiteral", + "offset": 1585, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.CommandGenerator.swift", + "kind": "FloatLiteral", + "offset": 1665, + "length": 3, + "value": "3.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UIImage.swift", + "kind": "IntegerLiteral", + "offset": 1302, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Path.swift", + "kind": "StringLiteral", + "offset": 8104, + "length": 4, + "value": "\",;\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Path.swift", + "kind": "StringLiteral", + "offset": 8161, + "length": 22, + "value": "\"MmLlHhVvCcSsQqTtAaZz\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/WelcomeScreen\/WelcomeScreenViewController.swift", + "kind": "FloatLiteral", + "offset": 367, + "length": 4, + "value": "0.01" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/WelcomeScreen\/WelcomeScreenViewController.swift", + "kind": "FloatLiteral", + "offset": 398, + "length": 3, + "value": "2.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/WelcomeScreen\/WelcomeScreenViewController.swift", + "kind": "FloatLiteral", + "offset": 427, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/WelcomeScreen\/WelcomeScreenViewController.swift", + "kind": "BooleanLiteral", + "offset": 464, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 1034, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "StringLiteral", + "offset": 1340, + "length": 40, + "value": "\"state changed: \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "StringLiteral", + "offset": 1367, + "length": 2, + "value": "\" -> \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "StringLiteral", + "offset": 1379, + "length": 2, + "value": "\"\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 1703, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 1750, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 2175, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 2210, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 2392, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 2438, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "FloatLiteral", + "offset": 2493, + "length": 5, + "value": "-30.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 7768, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 46462, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 56621, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "IntegerLiteral", + "offset": 59040, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "IntegerLiteral", + "offset": 59095, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "IntegerLiteral", + "offset": 59116, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Core.swift", + "kind": "BooleanLiteral", + "offset": 59146, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/VenueDrawingManager.swift", + "kind": "Array", + "offset": 2723, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/VenueDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 5574, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/GrabberView.swift", + "kind": "FloatLiteral", + "offset": 275, + "length": 4, + "value": "0.76" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/GrabberView.swift", + "kind": "FloatLiteral", + "offset": 288, + "length": 4, + "value": "0.77" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/GrabberView.swift", + "kind": "FloatLiteral", + "offset": 300, + "length": 4, + "value": "0.76" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/GrabberView.swift", + "kind": "FloatLiteral", + "offset": 313, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Position.swift", + "kind": "IntegerLiteral", + "offset": 220, + "length": 4, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Position.swift", + "kind": "IntegerLiteral", + "offset": 234, + "length": 6, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Position.swift", + "kind": "IntegerLiteral", + "offset": 250, + "length": 5, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 154, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 193, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 234, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 285, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Settings.swift", + "kind": "BooleanLiteral", + "offset": 325, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "IntegerLiteral", + "offset": 181, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "IntegerLiteral", + "offset": 216, + "length": 2, + "value": "45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "StringLiteral", + "offset": 529, + "length": 15, + "value": "\"fit-to-campus\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 915, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1015, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1116, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "StringLiteral", + "offset": 1482, + "length": 19, + "value": "\"currentloc_filled\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1562, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1647, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 1733, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "StringLiteral", + "offset": 2028, + "length": 17, + "value": "\"binoculars.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 2387, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 2472, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 2558, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "StringLiteral", + "offset": 2917, + "length": 4, + "value": "\"2D\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 3179, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 3264, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "BooleanLiteral", + "offset": 3350, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/MapControls\/MapControls.swift", + "kind": "IntegerLiteral", + "offset": 3510, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/RouteOption.swift", + "kind": "BooleanLiteral", + "offset": 1587, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 162, + "length": 29, + "value": "\"high-priority-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 226, + "length": 18, + "value": "\"path-nodes-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 280, + "length": 19, + "value": "\"floor-nodes-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 335, + "length": 19, + "value": "\"floor-gates-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 389, + "length": 18, + "value": "\"poi-models-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 452, + "length": 29, + "value": "\"extruded-poi-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 532, + "length": 36, + "value": "\"hidden-extruded-poi-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 611, + "length": 27, + "value": "\"outdoor-poi-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 680, + "length": 26, + "value": "\"indoor-poi-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 753, + "length": 31, + "value": "\"indoor-landmark-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 832, + "length": 32, + "value": "\"outdoor-landmark-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 908, + "length": 28, + "value": "\"outdoor-poi-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 986, + "length": 35, + "value": "\"outdoor-poi-polygon-borders-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1064, + "length": 27, + "value": "\"indoor-poi-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1140, + "length": 34, + "value": "\"indoor-poi-polygon-borders-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1213, + "length": 22, + "value": "\"venue-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1280, + "length": 29, + "value": "\"venue-polygon-borders-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1348, + "length": 22, + "value": "\"campus-polygon-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1415, + "length": 29, + "value": "\"campus-polygon-border-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1482, + "length": 21, + "value": "\"campus-border-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1541, + "length": 21, + "value": "\"venue-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1598, + "length": 19, + "value": "\"venue-gates-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1654, + "length": 20, + "value": "\"venue-models-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1721, + "length": 31, + "value": "\"extruded-venue-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1805, + "length": 38, + "value": "\"hidden-extruded-venue-polygons-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1886, + "length": 26, + "value": "\"destination-symbol-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 1957, + "length": 29, + "value": "\"indoor-selected-place-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2032, + "length": 30, + "value": "\"outdoor-selected-place-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2093, + "length": 13, + "value": "\"floor-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2144, + "length": 21, + "value": "\"campus-symbol-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2202, + "length": 20, + "value": "\"campus-gates-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2257, + "length": 18, + "value": "\"route-line-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2316, + "length": 25, + "value": "\"route-line-casing-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2379, + "length": 21, + "value": "\"progress-line-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2444, + "length": 28, + "value": "\"progress-line-casing-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2520, + "length": 33, + "value": "\"progress-line-start-point-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2593, + "length": 42, + "value": "\"location-indicator-accuracy-circle-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2678, + "length": 26, + "value": "\"location-indicator-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2755, + "length": 35, + "value": "\"selected-location-indicator-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2829, + "length": 22, + "value": "\"object-symbols-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2890, + "length": 22, + "value": "\"maneuver-arrow-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 2953, + "length": 25, + "value": "\"linked-route-line-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/MapIdentifiers\/LayerIdentifiers.swift", + "kind": "StringLiteral", + "offset": 3025, + "length": 32, + "value": "\"linked-route-line-casing-layer\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "BooleanLiteral", + "offset": 664, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "FloatLiteral", + "offset": 707, + "length": 3, + "value": "0.5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "FloatLiteral", + "offset": 745, + "length": 4, + "value": "0.08" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "FloatLiteral", + "offset": 789, + "length": 4, + "value": "0.04" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "BooleanLiteral", + "offset": 951, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/SymbolViews\/SymbolView.swift", + "kind": "StringLiteral", + "offset": 1069, + "length": 9, + "value": "\"#FF453A\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 203, + "length": 7, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 220, + "length": 9, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 239, + "length": 10, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 259, + "length": 9, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/MainPanelSection.swift", + "kind": "IntegerLiteral", + "offset": 278, + "length": 7, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Categories\/CategoriesCell.swift", + "kind": "Array", + "offset": 567, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/LiveObjectManager.swift", + "kind": "Dictionary", + "offset": 699, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CoordinateFormatter.swift", + "kind": "IntegerLiteral", + "offset": 1376, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CoordinateFormatter.swift", + "kind": "StringLiteral", + "offset": 1758, + "length": 3, + "value": "\" \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CoordinateFormatter.swift", + "kind": "StringLiteral", + "offset": 1810, + "length": 3, + "value": "\",\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/CoordinateFormatter.swift", + "kind": "StringLiteral", + "offset": 1867, + "length": 4, + "value": "\", \"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ImageDownloader.swift", + "kind": "Dictionary", + "offset": 492, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ImageDownloader.swift", + "kind": "Array", + "offset": 540, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Downloads\/ImageDownloader.swift", + "kind": "Array", + "offset": 712, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/RenderingHelper.swift", + "kind": "BooleanLiteral", + "offset": 3841, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image+CoreGraphics.swift", + "kind": "FloatLiteral", + "offset": 1857, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image+CoreGraphics.swift", + "kind": "FloatLiteral", + "offset": 1870, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Renderer.SVG.swift", + "kind": "IntegerLiteral", + "offset": 1598, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "Array", + "offset": 1181, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "FloatLiteral", + "offset": 1213, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "Array", + "offset": 1254, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "Array", + "offset": 1285, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "Array", + "offset": 1377, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Layer.swift", + "kind": "FloatLiteral", + "offset": 3333, + "length": 3, + "value": "1.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/PoisManager.swift", + "kind": "Array", + "offset": 215, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/MainViewController.swift", + "kind": "Array", + "offset": 419, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Model\/PoiViewData.swift", + "kind": "IntegerLiteral", + "offset": 161, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/MessageDetailEnum.swift", + "kind": "IntegerLiteral", + "offset": 193, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/MessageDetailEnum.swift", + "kind": "IntegerLiteral", + "offset": 204, + "length": 6, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MessageDetails\/Enum\/MessageDetailEnum.swift", + "kind": "IntegerLiteral", + "offset": 220, + "length": 11, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Helpers\/InstructionPresenter.swift", + "kind": "BooleanLiteral", + "offset": 9087, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 2475, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 2480, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "Array", + "offset": 2531, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 5244, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 5253, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 5264, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Image.swift", + "kind": "IntegerLiteral", + "offset": 5274, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "IntegerLiteral", + "offset": 7013, + "length": 5, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "IntegerLiteral", + "offset": 7426, + "length": 11, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 11742, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 17869, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 19246, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 20975, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "IntegerLiteral", + "offset": 21975, + "length": 2, + "value": "-1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/FloatingPanel\/Controller.swift", + "kind": "BooleanLiteral", + "offset": 21996, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Home\/HomeViewController.swift", + "kind": "IntegerLiteral", + "offset": 1442, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Home\/HomeViewController.swift", + "kind": "Array", + "offset": 1320, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/FontWeight.swift", + "kind": "StringLiteral", + "offset": 132, + "length": 10, + "value": "\"SemiBold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/FontWeight.swift", + "kind": "StringLiteral", + "offset": 162, + "length": 9, + "value": "\"Regular\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Enums\/FontWeight.swift", + "kind": "StringLiteral", + "offset": 188, + "length": 6, + "value": "\"Bold\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Log\/NavigationEventTracker.swift", + "kind": "IntegerLiteral", + "offset": 1139, + "length": 2, + "value": "-1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Log\/NavigationEventTracker.swift", + "kind": "BooleanLiteral", + "offset": 1380, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Log\/NavigationEventTracker.swift", + "kind": "IntegerLiteral", + "offset": 4084, + "length": 2, + "value": "-1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/PoiDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 673, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/PoiDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 710, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/PoiDetailsViewController.swift", + "kind": "BooleanLiteral", + "offset": 745, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 172, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 183, + "length": 13, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 206, + "length": 6, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 222, + "length": 15, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 247, + "length": 11, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 268, + "length": 5, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 283, + "length": 5, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 298, + "length": 7, + "value": "7" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/POIDetailSection.swift", + "kind": "IntegerLiteral", + "offset": 315, + "length": 13, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/LayerTree.Shape.swift", + "kind": "BooleanLiteral", + "offset": 4279, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Favorites\/Favorite.swift", + "kind": "StringLiteral", + "offset": 5536, + "length": 5, + "value": "\"poi\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Favorites\/Favorite.swift", + "kind": "StringLiteral", + "offset": 5562, + "length": 10, + "value": "\"location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Scanner.swift", + "kind": "StringLiteral", + "offset": 7465, + "length": 7, + "value": "\"FALSE\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Scanner.swift", + "kind": "StringLiteral", + "offset": 7494, + "length": 6, + "value": "\"TRUE\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Scanner.swift", + "kind": "StringLiteral", + "offset": 7517, + "length": 3, + "value": "\"0\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/SwiftDraw\/Parser.XML.Scanner.swift", + "kind": "StringLiteral", + "offset": 7536, + "length": 3, + "value": "\"1\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoriteCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 552, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoriteCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 564, + "length": 3, + "value": "0.0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoriteCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 799, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/MainPanel\/Sections\/Favorites\/FavoriteCollectionViewCell.swift", + "kind": "FloatLiteral", + "offset": 811, + "length": 3, + "value": "0.1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/Drawings\/FloorDrawingManager.swift", + "kind": "BooleanLiteral", + "offset": 281, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/NetworkMonitor.swift", + "kind": "BooleanLiteral", + "offset": 325, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/VenueSelector\/VenuesSectionLabel.swift", + "kind": "StringLiteral", + "offset": 363, + "length": 8, + "value": "\"venues\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/General\/UserDefaultsKey.swift", + "kind": "StringLiteral", + "offset": 173, + "length": 22, + "value": "\"IsSpeechManagerMuted\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4285, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4363, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4422, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4490, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4566, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4643, + "length": 1, + "value": "7" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4703, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4844, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4913, + "length": 2, + "value": "11" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 4977, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5047, + "length": 2, + "value": "13" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5115, + "length": 2, + "value": "14" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5183, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5252, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5316, + "length": 2, + "value": "17" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5389, + "length": 2, + "value": "18" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5455, + "length": 2, + "value": "19" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "IntegerLiteral", + "offset": 5521, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "StringLiteral", + "offset": 5596, + "length": 9, + "value": "\"#C8E6FF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "StringLiteral", + "offset": 5668, + "length": 9, + "value": "\"#818181\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/Theme.swift", + "kind": "StringLiteral", + "offset": 5730, + "length": 11, + "value": "\"#D1D1D6FF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PIGeofenceInterface\/PIGeofenceManager.swift", + "kind": "BooleanLiteral", + "offset": 1807, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/PIGeofenceInterface\/PIGeofenceManager.swift", + "kind": "BooleanLiteral", + "offset": 1852, + "length": 5, + "value": "false" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Navigation\/Views\/AlertSheet\/AlertSheet.swift", + "kind": "Array", + "offset": 494, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/AdaptiveFloatingPanelLayout.swift", + "kind": "FloatLiteral", + "offset": 320, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/AdaptiveFloatingPanelLayout.swift", + "kind": "FloatLiteral", + "offset": 433, + "length": 3, + "value": "0.2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/AdaptiveFloatingPanelLayout.swift", + "kind": "IntegerLiteral", + "offset": 706, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/FractionalInsetDrivenLayout.swift", + "kind": "IntegerLiteral", + "offset": 489, + "length": 2, + "value": "69" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/FractionalInsetDrivenLayout.swift", + "kind": "FloatLiteral", + "offset": 786, + "length": 4, + "value": "0.45" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/PanelLayouts\/FractionalInsetDrivenLayout.swift", + "kind": "IntegerLiteral", + "offset": 1056, + "length": 2, + "value": "69" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Route\/Leg.swift", + "kind": "Array", + "offset": 194, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Route\/Leg.swift", + "kind": "IntegerLiteral", + "offset": 222, + "length": 1, + "value": "0" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITextView.swift", + "kind": "IntegerLiteral", + "offset": 978, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITextView.swift", + "kind": "IntegerLiteral", + "offset": 988, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITextView.swift", + "kind": "IntegerLiteral", + "offset": 1000, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Extensions\/UITextView.swift", + "kind": "IntegerLiteral", + "offset": 1011, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/CategoriesManager.swift", + "kind": "Array", + "offset": 242, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Managers\/DataStore\/CategoriesManager.swift", + "kind": "Array", + "offset": 286, + "length": 2, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/PoiDetails\/Cells\/Details\/AboutCell.swift", + "kind": "IntegerLiteral", + "offset": 257, + "length": 3, + "value": "200" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 189, + "length": 1, + "value": "1" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 204, + "length": 22, + "value": "\"panelBackgroundColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 235, + "length": 9, + "value": "\"#FFFFFF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 255, + "length": 1, + "value": "2" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 270, + "length": 31, + "value": "\"secondaryPanelBackgroundColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 310, + "length": 9, + "value": "\"#F3F3F3\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 330, + "length": 1, + "value": "3" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 345, + "length": 12, + "value": "\"labelColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 366, + "length": 9, + "value": "\"#292929\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 386, + "length": 1, + "value": "4" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 401, + "length": 21, + "value": "\"secondaryLabelColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 431, + "length": 9, + "value": "\"#818181\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 451, + "length": 1, + "value": "5" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 466, + "length": 29, + "value": "\"borderColorOnGrayBackground\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 504, + "length": 9, + "value": "\"#BFBFBF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 524, + "length": 1, + "value": "6" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 539, + "length": 29, + "value": "\"borderColorOnGrayBackground\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 577, + "length": 9, + "value": "\"#F3F3F3\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 597, + "length": 1, + "value": "7" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 612, + "length": 30, + "value": "\"borderColorOnWhiteBackground\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 651, + "length": 9, + "value": "\"#EFEFEF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 671, + "length": 1, + "value": "8" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 686, + "length": 13, + "value": "\"buttonColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 708, + "length": 9, + "value": "\"#5390E9\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 728, + "length": 1, + "value": "9" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 743, + "length": 12, + "value": "\"brandColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 764, + "length": 9, + "value": "\"#1C3968\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 784, + "length": 2, + "value": "10" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 800, + "length": 24, + "value": "\"locationIndicatorColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 833, + "length": 9, + "value": "\"#3478F5\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 853, + "length": 2, + "value": "11" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 869, + "length": 28, + "value": "\"locationIndicatorAuraColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 906, + "length": 11, + "value": "\"#3478F51A\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 928, + "length": 2, + "value": "12" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 944, + "length": 16, + "value": "\"routeLineColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 969, + "length": 9, + "value": "\"#00B0FF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 989, + "length": 2, + "value": "13" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1005, + "length": 22, + "value": "\"routeLineCasingColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1036, + "length": 9, + "value": "\"#1967D1\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1056, + "length": 2, + "value": "14" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1072, + "length": 20, + "value": "\"openingStatusColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1101, + "length": 9, + "value": "\"#63C26C\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1121, + "length": 2, + "value": "15" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1137, + "length": 20, + "value": "\"closureStatusColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1166, + "length": 9, + "value": "\"#EA4F3D\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1186, + "length": 2, + "value": "16" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1202, + "length": 21, + "value": "\"secondaryBrandColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1232, + "length": 9, + "value": "\"#264E8F\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1252, + "length": 2, + "value": "17" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1268, + "length": 16, + "value": "\"secondaryColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1293, + "length": 9, + "value": "\"#00A79E\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1313, + "length": 2, + "value": "18" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1329, + "length": 25, + "value": "\"panelGrabberHandleColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1363, + "length": 9, + "value": "\"#CCCCCC\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1383, + "length": 2, + "value": "19" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1399, + "length": 18, + "value": "\"closeButtonColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1426, + "length": 9, + "value": "\"#E6E6E6\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "IntegerLiteral", + "offset": 1446, + "length": 2, + "value": "20" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1462, + "length": 18, + "value": "\"placeholderColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Utils\/Theme\/ColorPalette.swift", + "kind": "StringLiteral", + "offset": 1489, + "length": 9, + "value": "\"#A5A5A5\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/Models\/Formatters\/TimeFormatter.swift", + "kind": "BooleanLiteral", + "offset": 222, + "length": 4, + "value": "true" + }, + { + "filePath": "\/Users\/fawzialrifai\/Downloads\/PenNavPandP-iOS-release-4.4.3\/PenNavUI\/PenNavUI\/UI\/Views\/HapticControl\/MenuItem.swift", + "kind": "Dictionary", + "offset": 221, + "length": 3, + "value": "[]" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 635, + "length": 18, + "value": "\"LightYellowColor\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 878, + "length": 7, + "value": "\"Arrow\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1003, + "length": 6, + "value": "\"Back\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1133, + "length": 9, + "value": "\"Bicycle\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1272, + "length": 12, + "value": "\"CampusGate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1430, + "length": 20, + "value": "\"CampusGateSelector\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1566, + "length": 5, + "value": "\"Car\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1707, + "length": 15, + "value": "\"CheckmarkIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1842, + "length": 7, + "value": "\"Clock\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 1973, + "length": 9, + "value": "\"Compass\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2116, + "length": 14, + "value": "\"DistanceIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2256, + "length": 10, + "value": "\"Elevator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2401, + "length": 15, + "value": "\"ElevatorDown-\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2550, + "length": 14, + "value": "\"ElevatorIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2695, + "length": 13, + "value": "\"ElevatorUp-\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2836, + "length": 11, + "value": "\"Escalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 2983, + "length": 15, + "value": "\"EscalatorDown\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3134, + "length": 15, + "value": "\"EscalatorIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3281, + "length": 13, + "value": "\"EscalatorUp\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3424, + "length": 12, + "value": "\"FilterIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3554, + "length": 6, + "value": "\"Gate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3694, + "length": 14, + "value": "\"GroupedStops\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3832, + "length": 9, + "value": "\"Indoors\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 3959, + "length": 6, + "value": "\"Left\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4091, + "length": 10, + "value": "\"LeftLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4229, + "length": 11, + "value": "\"LeftRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4374, + "length": 14, + "value": "\"LeftVeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4524, + "length": 15, + "value": "\"LeftVeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4681, + "length": 18, + "value": "\"MapDownEscalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 4855, + "length": 25, + "value": "\"MapDownloaderBackground\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5012, + "length": 13, + "value": "\"MapElevator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5159, + "length": 14, + "value": "\"MapEscalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5297, + "length": 9, + "value": "\"MapGate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5430, + "length": 9, + "value": "\"MapRamp\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5567, + "length": 11, + "value": "\"MapStairs\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5716, + "length": 16, + "value": "\"MapUpEscalator\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5858, + "length": 10, + "value": "\"MuteIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 5994, + "length": 10, + "value": "\"Outdoors\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6120, + "length": 5, + "value": "\"Pin\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6243, + "length": 6, + "value": "\"Ramp\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6373, + "length": 9, + "value": "\"Reached\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6502, + "length": 7, + "value": "\"Right\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6637, + "length": 11, + "value": "\"RightLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6778, + "length": 12, + "value": "\"RightRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 6926, + "length": 15, + "value": "\"RightVeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7079, + "length": 16, + "value": "\"RightVeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7223, + "length": 11, + "value": "\"ShareIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7360, + "length": 10, + "value": "\"SharePDF\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7498, + "length": 11, + "value": "\"ShareText\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7637, + "length": 11, + "value": "\"SharpLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7778, + "length": 12, + "value": "\"SharpRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 7912, + "length": 8, + "value": "\"Stairs\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8046, + "length": 10, + "value": "\"Straight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8180, + "length": 9, + "value": "\"Transit\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8319, + "length": 12, + "value": "\"UnMuteIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8457, + "length": 10, + "value": "\"VeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8601, + "length": 14, + "value": "\"VeerLeftLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8751, + "length": 15, + "value": "\"VeerLeftRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 8908, + "length": 18, + "value": "\"VeerLeftVeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9070, + "length": 19, + "value": "\"VeerLeftVeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9217, + "length": 11, + "value": "\"VeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9364, + "length": 15, + "value": "\"VeerRightLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9517, + "length": 16, + "value": "\"VeerRightRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9677, + "length": 19, + "value": "\"VeerRightVeerLeft\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9842, + "length": 20, + "value": "\"VeerRightVeerRight\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 9994, + "length": 13, + "value": "\"VenueChange\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10147, + "length": 17, + "value": "\"VenueChangeININ\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10306, + "length": 18, + "value": "\"VenueChangeINOUT\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10466, + "length": 18, + "value": "\"VenueChangeOUTIN\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10628, + "length": 19, + "value": "\"VenueSelectorIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10765, + "length": 6, + "value": "\"Walk\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 10903, + "length": 13, + "value": "\"WarningIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11034, + "length": 6, + "value": "\"Wave\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11173, + "length": 14, + "value": "\"back_covered\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11322, + "length": 15, + "value": "\"building.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11475, + "length": 16, + "value": "\"currentAligned\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11621, + "length": 12, + "value": "\"currentloc\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11776, + "length": 19, + "value": "\"currentloc_filled\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 11927, + "length": 13, + "value": "\"destination\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12066, + "length": 10, + "value": "\"doorDark\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12204, + "length": 11, + "value": "\"doorWhite\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12341, + "length": 10, + "value": "\"elevDark\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12479, + "length": 11, + "value": "\"elevWhite\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12624, + "length": 14, + "value": "\"escalterDark\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12774, + "length": 15, + "value": "\"escalterWhite\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 12930, + "length": 18, + "value": "\"exclamation-mark\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13105, + "length": 26, + "value": "\"exclamationmark.triangle\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13280, + "length": 22, + "value": "\"feedback_destination\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13436, + "length": 15, + "value": "\"fit-to-campus\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13598, + "length": 22, + "value": "\"fit-to-campus-filled\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13760, + "length": 18, + "value": "\"map-location-dot\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 13933, + "length": 26, + "value": "\"map-location-dot-success\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14089, + "length": 12, + "value": "\"myLocation\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14241, + "length": 18, + "value": "\"my_location_icon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14414, + "length": 26, + "value": "\"my_location_parking_icon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14570, + "length": 13, + "value": "\"out_of_area\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14695, + "length": 3, + "value": "\"p\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14822, + "length": 9, + "value": "\"parking\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 14963, + "length": 13, + "value": "\"parkingIcon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15115, + "length": 17, + "value": "\"parking_reached\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15270, + "length": 17, + "value": "\"pin.circle.fill\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15411, + "length": 9, + "value": "\"rating1\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15544, + "length": 9, + "value": "\"rating2\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15677, + "length": 9, + "value": "\"rating3\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15810, + "length": 9, + "value": "\"rating4\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 15943, + "length": 9, + "value": "\"rating5\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16085, + "length": 14, + "value": "\"reached-icon\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16251, + "length": 24, + "value": "\"selected_user_location\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16395, + "length": 7, + "value": "\"start\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16524, + "length": 8, + "value": "\"updown\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16660, + "length": 11, + "value": "\"usingGate\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16796, + "length": 10, + "value": "\"wifi_off\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 16929, + "length": 9, + "value": "\"wifi_on\"" + }, + { + "filePath": "\/Users\/fawzialrifai\/Library\/Developer\/Xcode\/DerivedData\/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm\/Build\/Intermediates.noindex\/ArchiveIntermediates\/PenNavDemo\/IntermediateBuildFilesPath\/PenNavUI.build\/Release-iphonesimulator\/PenNavUI.build\/DerivedSources\/GeneratedAssetSymbols.swift", + "kind": "StringLiteral", + "offset": 17065, + "length": 11, + "value": "\"wifi_slow\"" + } + ] +} \ No newline at end of file diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface new file mode 100644 index 00000000..d839a1b2 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface @@ -0,0 +1,1211 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1) +// swift-module-flags: -target x86_64-apple-ios13.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name PenNavUI +// swift-module-flags-ignorable: -no-verify-emitted-module-interface -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2 +import AVFoundation +import CoreData +import CoreGraphics +import CoreHaptics +import CoreLocation +import CoreText +import CryptoKit +import Darwin +import DeveloperToolsSupport +import Foundation +import LinkPresentation +import MapKit +import MessageUI +import Network +@_exported import PenNavUI +import Penguin +import PenguinINRenderer +import QuartzCore +import SafariServices +import Swift +import SwiftUI +import SystemConfiguration +import UIKit +import UserNotifications +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +import os.log +import os +@objc public protocol FloatingPanelLayout { + @objc var position: PenNavUI.FloatingPanelPosition { get } + @objc var initialState: PenNavUI.FloatingPanelState { get } + @objc var anchors: [PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring] { get } + @objc optional func prepareLayout(surfaceView: UIKit.UIView, in view: UIKit.UIView) -> [UIKit.NSLayoutConstraint] + @objc optional func backdropAlpha(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat +} +@objc @_inheritsConvenienceInitializers @objcMembers open class FloatingPanelBottomLayout : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayout { + @objc override dynamic public init() + @objc open var initialState: PenNavUI.FloatingPanelState { + @objc get + } + @objc open var anchors: [PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring] { + @objc get + } + @objc open var position: PenNavUI.FloatingPanelPosition { + @objc get + } + @objc open func prepareLayout(surfaceView: UIKit.UIView, in view: UIKit.UIView) -> [UIKit.NSLayoutConstraint] + @objc open func backdropAlpha(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc deinit +} +extension PenNavUI.CampaignTracking { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var campaignId: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var lastNotificationDate: Foundation.Date? { + @objc get + @objc set + } + #endif +} +public protocol PILocationDelegate { + func onLocationOffCampus(location: _LocationEssentials.CLLocationCoordinate2D) + func onLocationMessage(message: PenNavUI.CampaignMessage) +} +extension PenNavUI.PILocationDelegate { + public func onLocationOffCampus(location: _LocationEssentials.CLLocationCoordinate2D) + public func onLocationMessage(message: PenNavUI.CampaignMessage) +} +@_inheritsConvenienceInitializers @objc(CachedVenue) nonisolated public class CachedVenue : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +extension PenNavUI.SharedLocationCacheData { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var edgeId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var floorId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var latitude: Swift.Double { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var longitude: Swift.Double { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var navigationAvoid: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var venueId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var x: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var y: Swift.Int16 { + @objc get + @objc set + } +} +@_inheritsConvenienceInitializers @objc(CampaignTracking) nonisolated public class CampaignTracking : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@_hasMissingDesignatedInitializers public class Campus { + public var id: Swift.Int? + public var name: Swift.String? + public var coverImage: Swift.String? + @objc deinit +} +@_hasMissingDesignatedInitializers final public class CGTextRenderer { + public enum API { + case uiKit + case appKit + public static func == (a: PenNavUI.CGTextRenderer.API, b: PenNavUI.CGTextRenderer.API) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } + @objc deinit +} +extension PenNavUI.CommandLine { + public static func processImage(with config: PenNavUI.CommandLine.Configuration) throws -> Foundation.Data + public static func makeSVGOptions(for config: PenNavUI.CommandLine.Configuration) -> PenNavUI.SVG.Options + #if compiler(>=5.3) && $NonescapableTypes + public static func makeTextAPI(for api: PenNavUI.CommandLine.API?) -> PenNavUI.CGTextRenderer.API + #endif + public static func processImage(_ image: PenNavUI.SVG, with config: PenNavUI.CommandLine.Configuration) throws -> Foundation.Data + public static func makeImageInsets(for insets: PenNavUI.CommandLine.Insets) throws -> PenNavUI.SVG.Insets +} +extension PenNavUI.TagFlowLayout { + public enum LayoutAlignment : Swift.Int { + case left + case center + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } +} +@objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency public class TagFlowLayout : UIKit.UICollectionViewFlowLayout { + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutAttributesForElements(in rect: CoreFoundation.CGRect) -> [UIKit.UICollectionViewLayoutAttributes]? + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var flipsHorizontallyInOppositeLayoutDirection: Swift.Bool { + @objc get + } + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var developmentLayoutDirection: UIKit.UIUserInterfaceLayoutDirection { + @objc get + } + @objc deinit +} +extension PenNavUI.CommandLine { + public struct Configuration { + public var input: Foundation.URL + public var inputUltralight: Foundation.URL? + public var inputBlack: Foundation.URL? + public var output: Foundation.URL + public var format: PenNavUI.CommandLine.Format + public var size: PenNavUI.CommandLine.Size + public var api: PenNavUI.CommandLine.API? + public var insets: PenNavUI.CommandLine.Insets + public var insetsUltralight: PenNavUI.CommandLine.Insets? + public var insetsBlack: PenNavUI.CommandLine.Insets? + public var scale: PenNavUI.CommandLine.Scale + public var options: PenNavUI.SVG.Options + public var precision: Swift.Int? + } + public enum Format : Swift.String { + case jpeg + case pdf + case png + case swift + case sfsymbol + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } + } + public enum API : Swift.String { + case appkit + case uikit + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } + } + public enum Size : Swift.Equatable { + case `default` + case custom(width: Swift.Int, height: Swift.Int) + public static func == (a: PenNavUI.CommandLine.Size, b: PenNavUI.CommandLine.Size) -> Swift.Bool + } + public enum Scale : Swift.Equatable { + case `default` + case retina + case superRetina + public static func == (a: PenNavUI.CommandLine.Scale, b: PenNavUI.CommandLine.Scale) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } + public struct Insets : Swift.Equatable { + public var top: Swift.Double? + public var left: Swift.Double? + public var bottom: Swift.Double? + public var right: Swift.Double? + #if compiler(>=5.3) && $NonescapableTypes + public init(top: Swift.Double? = nil, left: Swift.Double? = nil, bottom: Swift.Double? = nil, right: Swift.Double? = nil) + #endif + public static func == (a: PenNavUI.CommandLine.Insets, b: PenNavUI.CommandLine.Insets) -> Swift.Bool + } + public static func parseConfiguration(from args: [Swift.String], baseDirectory: Foundation.URL) throws -> PenNavUI.CommandLine.Configuration +} +extension UIKit.UISpringTimingParameters { + @_Concurrency.MainActor @preconcurrency convenience public init(decelerationRate: CoreFoundation.CGFloat, frequencyResponse: CoreFoundation.CGFloat, initialVelocity: CoreFoundation.CGVector = .zero) + @_Concurrency.MainActor @preconcurrency convenience public init(dampingRatio: CoreFoundation.CGFloat, frequencyResponse: CoreFoundation.CGFloat, initialVelocity: CoreFoundation.CGVector = .zero) +} +@objc @_inheritsConvenienceInitializers final public class PenNavUIManager : ObjectiveC.NSObject { + public static var shared: PenNavUI.PenNavUIManager + final public var initializationDelegate: (any PenNavUI.PenNavInitializationDelegate)? + final public var eventsDelegate: (any PenNavUI.PIEventsDelegate)? + final public var locationDelegate: (any PenNavUI.PILocationDelegate)? + final public func build() + @discardableResult + final public func setLanguage(_ language: Swift.String) -> PenNavUI.PenNavUIManager + public static func setLanguage(_ language: Swift.String) + @discardableResult + final public func setDeepLinkComponents(scheme: Swift.String, host: Swift.String) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func setDeepLink(_ url: Foundation.URL?) + #endif + @discardableResult + final public func setEnableReportIssue(enable: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setShareLocationCallback(enabled: Swift.Bool) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func navigate(to referenceID: Swift.String, completion: ((Swift.Bool, PenNavUI.PenNavUIError?) -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func getCampusListing(baseURL: Swift.String, serviceName: Swift.String, clientID: Swift.String, clientKey: Swift.String, completion: @escaping ([PenNavUI.Campus]?) -> ()) + #endif + final public func setAppColor(color: UIKit.UIColor) -> PenNavUI.PenNavUIManager + public static func getVersion() -> Swift.String + final public func present(root: UIKit.UIViewController, view: UIKit.UIView) + final public func dismiss() + @discardableResult + final public func setClientKey(_ key: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setClientID(_ ID: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setUsername(_ userID: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setServiceName(dataServiceName: Swift.String, positionServiceName: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setBaseURL(dataURL: Swift.String, positionURL: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setIsShowUserName(_ isShowUserName: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setBackButtonVisibility(visible: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setDebugOptionsVisibility(visible: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setCampusID(_ campusID: Swift.Int) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setIsUpdateUserLocationSmoothly(_ isUpdateUserLocationSmoothly: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setOutdoorEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setSimulationModeEnabled(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setStepDetectionEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setTransitionEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setGeographicCoordinateEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func getToken(clientID: Swift.String, clientKey: Swift.String, showProgress: Swift.Bool, completion: @escaping (Swift.String?, Penguin.ErrorCode?) -> Swift.Void) + #endif + final public func setToken(token: Swift.String) + final public func clearDatabase() + #if compiler(>=5.3) && $NonescapableTypes + final public func getVersion() -> Swift.String? + #endif + @objc override dynamic public init() + @objc deinit +} +extension PenNavUI.PenNavUIManager : CoreLocation.CLLocationManagerDelegate { + @objc final public func locationManagerDidChangeAuthorization(_ manager: CoreLocation.CLLocationManager) + @objc final public func locationManager(_ manager: CoreLocation.CLLocationManager, didChangeAuthorization status: CoreLocation.CLAuthorizationStatus) +} +extension PenNavUI.PenNavUIManager : Penguin.PIInitializerDelegate { + @objc final public func onReady(warning: Penguin.WarningCode) + @objc final public func onInitilzationError(error: Penguin.ErrorCode) + @objc final public func onInitializationProgressChange(status: Penguin.SDKOperation) +} +public enum DOM { +} +extension PenNavUI.DOM { + public typealias Float = Swift.Float + public typealias Coordinate = Swift.Float + public typealias Length = Swift.Int + public typealias Opacity = Swift.Float + public typealias Bool = Swift.Bool + public typealias URL = Foundation.URL +} +extension PenNavUI.PenNavStyle { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var type: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var value: Foundation.Data? { + @objc get + @objc set + } + #endif +} +public enum CommandLine { +} +@objc public protocol FloatingPanelBehavior { + @objc optional var springDecelerationRate: CoreFoundation.CGFloat { get } + @objc optional var springResponseTime: CoreFoundation.CGFloat { get } + @objc optional var momentumProjectionRate: CoreFoundation.CGFloat { get } + @objc optional func shouldProjectMomentum(_ fpc: PenNavUI.FloatingPanelController, to proposedState: PenNavUI.FloatingPanelState) -> Swift.Bool + @objc optional func redirectionalProgress(_ fpc: PenNavUI.FloatingPanelController, from: PenNavUI.FloatingPanelState, to: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc optional func allowsRubberBanding(for edge: UIUtilities.UIRectEdge) -> Swift.Bool + @objc optional var removalInteractionVelocityThreshold: CoreFoundation.CGFloat { get } +} +open class FloatingPanelDefaultBehavior : PenNavUI.FloatingPanelBehavior { + public init() + @objc open var springDecelerationRate: CoreFoundation.CGFloat { + @objc get + } + @objc open var springResponseTime: CoreFoundation.CGFloat { + @objc get + } + @objc open var momentumProjectionRate: CoreFoundation.CGFloat { + @objc get + } + @objc open func redirectionalProgress(_ fpc: PenNavUI.FloatingPanelController, from: PenNavUI.FloatingPanelState, to: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc open func allowsRubberBanding(for edge: UIUtilities.UIRectEdge) -> Swift.Bool + @objc open var removalInteractionVelocityThreshold: CoreFoundation.CGFloat + @objc deinit +} +public enum IssueType { + case poi + case venue + case location + case navigation + public static func == (a: PenNavUI.IssueType, b: PenNavUI.IssueType) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } +} +extension _LocationEssentials.CLLocationCoordinate2D : Swift.Codable { + public init(from decoder: any Swift.Decoder) throws + public func encode(to encoder: any Swift.Encoder) throws +} +@_inheritsConvenienceInitializers @objc(FavoriteCacheData) nonisolated public class FavoriteCacheData : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@objc public enum FloatingPanelReferenceEdge : Swift.Int { + case top + case left + case bottom + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@objc public enum FloatingPanelLayoutReferenceGuide : Swift.Int { + case superview = 0 + case safeArea = 1 + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@objc public enum FloatingPanelLayoutContentBoundingGuide : Swift.Int { + case none = 0 + case superview = 1 + case safeArea = 2 + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension PenNavUI.CommandLine { + public enum Error : Swift.Error { + case invalid + case unsupported + case fileNotFound + public static func == (a: PenNavUI.CommandLine.Error, b: PenNavUI.CommandLine.Error) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } +} +public protocol PIEventsDelegate { + func onBackButtonPressed() + func onPenNavUIDismiss() + func onReportIssue(_ issue: PenNavUI.IssueType) + #if compiler(>=5.3) && $NonescapableTypes + func onShareLocation(link: Swift.String?) + #endif + func onSwitchCampus(campusId: Swift.Int) +} +extension PenNavUI.PIEventsDelegate { + public func onBackButtonPressed() + public func onPenNavUIDismiss() + public func onReportIssue(_ issue: PenNavUI.IssueType) + #if compiler(>=5.3) && $NonescapableTypes + public func onShareLocation(link: Swift.String?) + #endif + public func onSwitchCampus(campusId: Swift.Int) +} +@_inheritsConvenienceInitializers @objc(PenNavUITableUpdate) nonisolated public class PenNavUITableUpdate : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +public struct SFSymbolRenderer { + public init(options: PenNavUI.SVG.Options, insets: PenNavUI.CommandLine.Insets, insetsUltralight: PenNavUI.CommandLine.Insets, insetsBlack: PenNavUI.CommandLine.Insets, precision: Swift.Int) + #if compiler(>=5.3) && $NonescapableTypes + public func render(regular: Foundation.URL, ultralight: Foundation.URL?, black: Foundation.URL?) throws -> Swift.String + #endif +} +@_inheritsConvenienceInitializers @objc(PenNavStyle) nonisolated public class PenNavStyle : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +public struct GeofenceConfiguration { + #if compiler(>=5.3) && $NonescapableTypes + public init(baseURL: Swift.String, serviceName: Swift.String, clientId: Swift.String, clientKey: Swift.String, campusId: Swift.Int? = nil) + #endif +} +public struct CampaignMessage { + public var title: Swift.String + public var description: Swift.String +} +extension UIKit.UIImage { + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(svgNamed name: Swift.String, in bundle: Foundation.Bundle = .main, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(initWithSVGData:) convenience dynamic public init?(svgData: Foundation.Data) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(initWithContentsOfSVGFile:) convenience dynamic public init?(contentsOfSVGFile path: Swift.String) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(svgNamed:) public static func _svgNamed(_ name: Swift.String) -> UIKit.UIImage? + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(svgNamed:inBundle:) public static func _svgNamed(_ name: Swift.String, in bundle: Foundation.Bundle) -> UIKit.UIImage? + #endif + convenience public init(_ image: PenNavUI.SVG) +} +extension PenNavUI.SVG { + final public func rasterize() -> UIKit.UIImage + #if compiler(>=5.3) && $NonescapableTypes + final public func rasterize(with size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, insets: UIKit.UIEdgeInsets = .zero) -> UIKit.UIImage + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func pngData(size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, insets: UIKit.UIEdgeInsets = .zero) throws -> Foundation.Data + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func jpegData(size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, compressionQuality quality: CoreFoundation.CGFloat = 1, insets: UIKit.UIEdgeInsets = .zero) throws -> Foundation.Data + #endif +} +public protocol PenNavInitializationDelegate { + func onPenNavInitializationSuccess() + func onPenNavInitializationError(errorType: PenNavUI.PenNavUIError, errorDescription: Swift.String) +} +extension Penguin.GateNodeModel : Penguin.NodeRepresentable { + final public var isUpEscalator: Swift.Bool { + get + } + final public var isDownEscalator: Swift.Bool { + get + } +} +@_inheritsConvenienceInitializers @objc(SharedLocationCacheData) nonisolated public class SharedLocationCacheData : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@objc open class FloatingPanelState : ObjectiveC.NSObject, Foundation.NSCopying, Swift.RawRepresentable { + public typealias RawValue = Swift.String + #if compiler(>=5.3) && $NonescapableTypes + required public init?(rawValue: PenNavUI.FloatingPanelState.RawValue) + #endif + @objc public init(rawValue: PenNavUI.FloatingPanelState.RawValue, order: Swift.Int) + final public let rawValue: PenNavUI.FloatingPanelState.RawValue + final public let order: Swift.Int + #if compiler(>=5.3) && $NonescapableTypes + @objc public func copy(with zone: ObjectiveC.NSZone? = nil) -> Any + #endif + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc override dynamic public var debugDescription: Swift.String { + @objc get + } + @objc(Full) public static let full: PenNavUI.FloatingPanelState + @objc(Half) public static let half: PenNavUI.FloatingPanelState + @objc(Tip) public static let tip: PenNavUI.FloatingPanelState + @objc(Hidden) public static let hidden: PenNavUI.FloatingPanelState + @objc deinit +} +@objc @_inheritsConvenienceInitializers public class AsynchronousOperation : Foundation.Operation { + @objc override dynamic public var isAsynchronous: Swift.Bool { + @objc get + } + @objc override dynamic public var isExecuting: Swift.Bool { + @objc get + } + @objc override dynamic public var isFinished: Swift.Bool { + @objc get + } + public func completeOperation() + @objc override dynamic public func start() + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @objc(FloatingPanelSurfaceAppearance) @objcMembers public class SurfaceAppearance : ObjectiveC.NSObject { + @_inheritsConvenienceInitializers @objc(FloatingPanelSurfaceAppearanceShadow) public class Shadow : ObjectiveC.NSObject { + @objc public var hidden: Swift.Bool + @objc public var color: UIKit.UIColor + @objc public var offset: CoreFoundation.CGSize + @objc public var opacity: Swift.Float + @objc public var radius: CoreFoundation.CGFloat + @objc public var spread: CoreFoundation.CGFloat + @objc override dynamic public init() + @objc deinit + } + @objc public var backgroundColor: UIKit.UIColor? + @objc public var cornerRadius: CoreFoundation.CGFloat + @objc @available(iOS 13.0, *) + public var cornerCurve: QuartzCore.CALayerCornerCurve { + @objc get + @objc set + } + @objc public var shadows: [PenNavUI.SurfaceAppearance.Shadow] + @objc public var borderColor: UIKit.UIColor? + @objc public var borderWidth: CoreFoundation.CGFloat + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc(FloatingPanelSurfaceView) @objcMembers @_Concurrency.MainActor @preconcurrency public class SurfaceView : UIKit.UIView { + @objc @_Concurrency.MainActor @preconcurrency final public let grabberHandle: PenNavUI.GrabberView + @objc @_Concurrency.MainActor @preconcurrency public var grabberHandlePadding: CoreFoundation.CGFloat { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var grabberAreaOffset: CoreFoundation.CGFloat + @objc @_Concurrency.MainActor @preconcurrency public var grabberHandleSize: CoreFoundation.CGSize { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency weak public var contentView: UIKit.UIView? + @objc @_Concurrency.MainActor @preconcurrency public var contentPadding: UIKit.UIEdgeInsets { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var backgroundColor: UIKit.UIColor? { + @objc get + @objc set + } + #endif + @objc @_Concurrency.MainActor @preconcurrency public var appearance: PenNavUI.SurfaceAppearance { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var containerMargins: UIKit.UIEdgeInsets { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency final public let containerView: UIKit.UIView + @_Concurrency.MainActor @preconcurrency @objc override dynamic public class var requiresConstraintBasedLayout: Swift.Bool { + @objc get + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func updateConstraints() + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutSubviews() + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var intrinsicContentSize: CoreFoundation.CGSize { + @objc get + } + @objc deinit +} +extension Penguin.Gnode : Penguin.NodeRepresentable { + final public var isUpEscalator: Swift.Bool { + get + } + final public var isDownEscalator: Swift.Bool { + get + } +} +public enum PenNavUIError : Swift.String, Foundation.LocalizedError { + case missingBaseUrl + case missingDataServiceName + case missingPositionServiceName + case missingRootController + case missingViewContainer + case missingClientId + case missingClientName + case invalidClientKey + case unauthorized + case noInternetConnection + case bluetoothTurnedOff + case locationServicesTurnedOff + case loadingDataError + case osNotSupported + case permissionsNotGranted + case sensorsInitializationError + case unknownError + case locationPermissionNotGranted + case bluetoothPermissionNotGranted + case invalidCampusId + case noCampusListFound + case buildCancelled + public var errorDescription: Swift.String { + get + } + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } +} +public enum ValidationError : Swift.Error { + case noClientID + case noClientNameKey + case noServiesName + case noBaseUrl + case missingFonts + public static func == (a: PenNavUI.ValidationError, b: PenNavUI.ValidationError) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } +} +@objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency final public class FloatingPanelPanGestureRecognizer : UIKit.UIPanGestureRecognizer { + @_Concurrency.MainActor @preconcurrency @objc override final public func touchesBegan(_ touches: Swift.Set, with event: UIKit.UIEvent) + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override weak final public var delegate: (any UIKit.UIGestureRecognizerDelegate)? { + @objc get + @objc set + } + #endif + @_Concurrency.MainActor @preconcurrency final public var delegateOrigin: any UIKit.UIGestureRecognizerDelegate { + get + } + @_Concurrency.MainActor @preconcurrency weak final public var delegateProxy: (any UIKit.UIGestureRecognizerDelegate)? { + get + set + } + @objc deinit +} +extension PenNavUI.CachedVenue { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var id: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var coverImage: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var address: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var buildingNumber: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var phone: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var email: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var website: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var floorCount: Swift.Int16 { + @objc get + @objc set + } +} +@_hasMissingDesignatedInitializers @objc(FloatingPanelGrabberView) @_Concurrency.MainActor @preconcurrency public class GrabberView : UIKit.UIView { + @_Concurrency.MainActor @preconcurrency public var barColor: UIKit.UIColor { + get + set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutSubviews() + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func hitTest(_ point: CoreFoundation.CGPoint, with event: UIKit.UIEvent?) -> UIKit.UIView? + #endif + @objc deinit +} +@objc public enum FloatingPanelPosition : Swift.Int { + case top + case left + case bottom + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension PenNavUI.FavoriteCacheData { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var createDate: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var deviceId: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var type: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var distance: Swift.Double { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var id: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var label: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var poiId: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var userName: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var location: PenNavUI.SharedLocationCacheData? { + @objc get + @objc set + } + #endif +} +@objc public protocol FloatingPanelLayoutAnchoring { + @objc var referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide { get } + @objc func layoutConstraints(_ fpc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteInset: CoreFoundation.CGFloat, edge: PenNavUI.FloatingPanelReferenceEdge, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide) + @objc public init(fractionalInset: CoreFoundation.CGFloat, edge: PenNavUI.FloatingPanelReferenceEdge, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc deinit +} +extension PenNavUI.FloatingPanelLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelIntrinsicLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteOffset offset: CoreFoundation.CGFloat, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide = .safeArea) + @objc public init(fractionalOffset offset: CoreFoundation.CGFloat, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide = .safeArea) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc deinit +} +extension PenNavUI.FloatingPanelIntrinsicLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelAdaptiveLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteOffset offset: CoreFoundation.CGFloat, contentLayout: UIKit.UILayoutGuide, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide, contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide = .none) + @objc public init(fractionalOffset offset: CoreFoundation.CGFloat, contentLayout: UIKit.UILayoutGuide, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide, contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide = .none) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc final public let contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide + @objc deinit +} +extension PenNavUI.FloatingPanelAdaptiveLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@_hasMissingDesignatedInitializers public class ImageCache { + #if compiler(>=5.3) && $NonescapableTypes + public func getImage(_ url: Foundation.URL, completion: @escaping (UIKit.UIImage?) -> Swift.Void) + #endif + #if compiler(>=5.3) && $NonescapableTypes + public func getImageFromDocuments(url: Foundation.URL) -> UIKit.UIImage? + #endif + @objc deinit +} +extension PenNavUI.ImageCache { + #if compiler(>=5.3) && $NonescapableTypes + public func getSVG(withURL url: Foundation.URL, completion: @escaping (UIKit.UIImage?) -> Swift.Void) + #endif +} +extension PenNavUI.PenNavUITableUpdate { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var lastUpdateTime: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var tableName: Swift.String? { + @objc get + @objc set + } + #endif +} +extension CoreGraphics.CGContext { + #if compiler(>=5.3) && $NonescapableTypes + public func draw(_ image: PenNavUI.SVG, in rect: CoreFoundation.CGRect? = nil) + #endif +} +extension PenNavUI.SVG { + #if compiler(>=5.3) && $NonescapableTypes + final public func pdfData(size: CoreFoundation.CGSize? = nil, insets: PenNavUI.SVG.Insets = .zero) throws -> Foundation.Data + #endif +} +public struct SVGRenderer { + public static func makeExpanded(path: Swift.String, transform: Swift.String, precision: Swift.Int = 4) throws -> Swift.String +} +@_hasMissingDesignatedInitializers @objc(SVGImage) final public class SVG : ObjectiveC.NSObject { + final public let size: CoreFoundation.CGSize + public struct Options : Swift.OptionSet { + public let rawValue: Swift.Int + public init(rawValue: Swift.Int) + public static let hideUnsupportedFilters: PenNavUI.SVG.Options + public static let `default`: PenNavUI.SVG.Options + public typealias ArrayLiteralElement = PenNavUI.SVG.Options + public typealias Element = PenNavUI.SVG.Options + public typealias RawValue = Swift.Int + } + @objc deinit +} +@available(*, deprecated, renamed: "SVG") +public typealias Image = PenNavUI.SVG +extension PenNavUI.SVG { + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(fileURL url: Foundation.URL, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(named name: Swift.String, in bundle: Foundation.Bundle = Bundle.main, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(data: Foundation.Data, options: PenNavUI.SVG.Options = .default) + #endif + public struct Insets : Swift.Equatable { + public var top: CoreFoundation.CGFloat + public var left: CoreFoundation.CGFloat + public var bottom: CoreFoundation.CGFloat + public var right: CoreFoundation.CGFloat + public static let zero: PenNavUI.SVG.Insets + public static func == (a: PenNavUI.SVG.Insets, b: PenNavUI.SVG.Insets) -> Swift.Bool + } +} +@objc public protocol FloatingPanelControllerDelegate { + @objc(floatingPanel:layoutForTraitCollection:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, layoutFor newCollection: UIKit.UITraitCollection) -> any PenNavUI.FloatingPanelLayout + @objc(floatingPanel:layoutForSize:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, layoutFor size: CoreFoundation.CGSize) -> any PenNavUI.FloatingPanelLayout + @objc(floatingPanel:animatorForPresentingToState:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, animatorForPresentingTo state: PenNavUI.FloatingPanelState) -> UIKit.UIViewPropertyAnimator + @objc(floatingPanel:animatorForDismissingWithVelocity:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, animatorForDismissingWith velocity: CoreFoundation.CGVector) -> UIKit.UIViewPropertyAnimator + @objc optional func floatingPanelDidChangeState(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelShouldBeginDragging(_ fpc: PenNavUI.FloatingPanelController) -> Swift.Bool + @objc optional func floatingPanelDidMove(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelWillBeginDragging(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelWillEndDragging(_ fpc: PenNavUI.FloatingPanelController, withVelocity velocity: CoreFoundation.CGPoint, targetState: Swift.UnsafeMutablePointer) + @objc optional func floatingPanelDidEndDragging(_ fpc: PenNavUI.FloatingPanelController, willAttract attract: Swift.Bool) + @objc optional func floatingPanelWillBeginAttracting(_ fpc: PenNavUI.FloatingPanelController, to state: PenNavUI.FloatingPanelState) + @objc optional func floatingPanelDidEndAttracting(_ fpc: PenNavUI.FloatingPanelController) + @objc(floatingPanel:shouldRemoveAtLocation:withVelocity:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, shouldRemoveAt location: CoreFoundation.CGPoint, with velocity: CoreFoundation.CGVector) -> Swift.Bool + @objc(floatingPanelWillRemove:) optional func floatingPanelWillRemove(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelDidRemove(_ fpc: PenNavUI.FloatingPanelController) + @objc(floatingPanel:contentOffsetForPinningScrollView:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, contentOffsetForPinning trackingScrollView: UIKit.UIScrollView) -> CoreFoundation.CGPoint + @objc(floatingPanel:shouldAllowToScroll:in:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, shouldAllowToScroll scrollView: UIKit.UIScrollView, in state: PenNavUI.FloatingPanelState) -> Swift.Bool +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc @_Concurrency.MainActor @preconcurrency open class FloatingPanelController : UIKit.UIViewController { + @objc public enum ContentInsetAdjustmentBehavior : Swift.Int { + case always + case never + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc public enum ContentMode : Swift.Int { + case `static` + case fitToBounds + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc @_Concurrency.MainActor @preconcurrency weak public var delegate: (any PenNavUI.FloatingPanelControllerDelegate)? { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var surfaceView: PenNavUI.SurfaceView! { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var backdropView: PenNavUI.BackdropView! { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency weak public var trackingScrollView: UIKit.UIScrollView? { + @objc get + } + #endif + @objc @_Concurrency.MainActor @preconcurrency public var panGestureRecognizer: PenNavUI.FloatingPanelPanGestureRecognizer { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var state: PenNavUI.FloatingPanelState { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var isAttracting: Swift.Bool { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var layout: any PenNavUI.FloatingPanelLayout { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var behavior: any PenNavUI.FloatingPanelBehavior { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var adjustedContentInsets: UIKit.UIEdgeInsets { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var contentInsetAdjustmentBehavior: PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior + @objc @_Concurrency.MainActor @preconcurrency public var isRemovalInteractionEnabled: Swift.Bool { + @objc(isRemovalInteractionEnabled) get + @objc(setRemovalInteractionEnabled:) set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var contentViewController: UIKit.UIViewController? { + @objc get + @objc set + } + #endif + @_Concurrency.MainActor @preconcurrency public var nearbyState: PenNavUI.FloatingPanelState { + get + } + @objc @_Concurrency.MainActor @preconcurrency public var contentMode: PenNavUI.FloatingPanelController.ContentMode { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public init(delegate: (any PenNavUI.FloatingPanelControllerDelegate)? = nil) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func loadView() + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewDidLayoutSubviews() + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewDidAppear(_ animated: Swift.Bool) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewWillTransition(to size: CoreFoundation.CGSize, with coordinator: any UIKit.UIViewControllerTransitionCoordinator) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func willTransition(to newCollection: UIKit.UITraitCollection, with coordinator: any UIKit.UIViewControllerTransitionCoordinator) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewWillDisappear(_ animated: Swift.Bool) + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForStatusBarStyle: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForStatusBarHidden: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForScreenEdgesDeferringSystemGestures: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForHomeIndicatorAutoHidden: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(show:completion:) @_Concurrency.MainActor @preconcurrency public func show(animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(hide:completion:) @_Concurrency.MainActor @preconcurrency public func hide(animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(addPanelToParent:at:animated:completion:) @_Concurrency.MainActor @preconcurrency public func addPanel(toParent parent: UIKit.UIViewController, at viewIndex: Swift.Int = -1, animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(removePanelFromParent:completion:) @_Concurrency.MainActor @preconcurrency public func removePanelFromParent(animated: Swift.Bool, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(moveToState:animated:completion:) @_Concurrency.MainActor @preconcurrency public func move(to: PenNavUI.FloatingPanelState, animated: Swift.Bool, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency public func set(contentViewController: UIKit.UIViewController?) + #endif + @objc(trackScrollView:) @_Concurrency.MainActor @preconcurrency public func track(scrollView: UIKit.UIScrollView) + @_Concurrency.MainActor @preconcurrency public func followScrollViewBouncing() + @objc(untrackScrollView:) @_Concurrency.MainActor @preconcurrency public func untrack(scrollView: UIKit.UIScrollView) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func accessibilityPerformEscape() -> Swift.Bool + @objc @_Concurrency.MainActor @preconcurrency public func invalidateLayout() + @objc @_Concurrency.MainActor @preconcurrency public func surfaceLocation(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGPoint + @objc @_Concurrency.MainActor @preconcurrency public var surfaceLocation: CoreFoundation.CGPoint { + @objc get + @objc set + } + @_Concurrency.MainActor @preconcurrency public func addTopPadding(padding: CoreFoundation.CGFloat) + @objc deinit +} +@_hasMissingDesignatedInitializers @objc(FloatingPanelBackdropView) @_Concurrency.MainActor @preconcurrency public class BackdropView : UIKit.UIView { + @objc @_Concurrency.MainActor @preconcurrency public var dismissalTapGestureRecognizer: UIKit.UITapGestureRecognizer + @objc deinit +} +@_hasMissingDesignatedInitializers public class NetworkMonitor { + @objc deinit +} +public enum GeofenceError : Swift.Error, Foundation.LocalizedError { + case permissionDenied + case errorInConfiguration + case authenticationFailed + case indoorDeloymentOnly + case geofenceConfigurationsMissing + case geofenceSDKNotStarted + case geofenceSDKAlreadyStarted + case sdkError(Swift.String) + #if compiler(>=5.3) && $NonescapableTypes + public var errorDescription: Swift.String? { + get + } + #endif +} +public protocol PIGeofenceManagerDelegate { + func geofenceStarted() + #if compiler(>=5.3) && $NonescapableTypes + func geofenceFailedToStart(_ error: Swift.String?) + #endif + func geofenceStopped() + func geofenceUpdated() +} +@objc @_inheritsConvenienceInitializers public class PIGeofenceManager : ObjectiveC.NSObject { + public static var shared: PenNavUI.PIGeofenceManager { + get + } + public func initializeLocationManager() + public func setGeofenceSDKConfigurations(_ configurations: PenNavUI.GeofenceConfiguration) + public func setGeofenceDelegate(delegate: any PenNavUI.PIGeofenceManagerDelegate) + public func startGeofencing(delegate: any PenNavUI.PIGeofenceManagerDelegate) + public func stopGeofencing() + public func updateGeofencing() + @objc override dynamic public init() + @objc deinit +} +extension PenNavUI.PIGeofenceManager : CoreLocation.CLLocationManagerDelegate { + @objc dynamic public func locationManager(_ manager: CoreLocation.CLLocationManager, didChangeAuthorization status: CoreLocation.CLAuthorizationStatus) +} +extension PenNavUI.PIGeofenceManager { + @objc dynamic public func locationManager(_ manager: CoreLocation.CLLocationManager, didEnterRegion region: CoreLocation.CLRegion) +} +extension PenNavUI.CGTextRenderer { + public typealias Size = (width: Swift.Int, height: Swift.Int) + #if compiler(>=5.3) && $NonescapableTypes + public static func render(named name: Swift.String, in bundle: Foundation.Bundle = Bundle.main, size: PenNavUI.CGTextRenderer.Size? = nil, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + #endif + #if compiler(>=5.3) && $NonescapableTypes + public static func render(fileURL: Foundation.URL, size: PenNavUI.CGTextRenderer.Size? = nil, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + #endif + public static func render(data: Foundation.Data, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + public static func renderPath(from svgPath: Swift.String) throws -> Swift.String +} +extension PenNavUI.CGTextRenderer.API : Swift.Equatable {} +extension PenNavUI.CGTextRenderer.API : Swift.Hashable {} +extension PenNavUI.CommandLine.Scale : Swift.Hashable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.Equatable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.Hashable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.Format : Swift.Equatable {} +extension PenNavUI.CommandLine.Format : Swift.Hashable {} +extension PenNavUI.CommandLine.Format : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.API : Swift.Equatable {} +extension PenNavUI.CommandLine.API : Swift.Hashable {} +extension PenNavUI.CommandLine.API : Swift.RawRepresentable {} +extension PenNavUI.IssueType : Swift.Equatable {} +extension PenNavUI.IssueType : Swift.Hashable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.Equatable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.Hashable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.Equatable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.Hashable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.Equatable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.Hashable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.Error : Swift.Equatable {} +extension PenNavUI.CommandLine.Error : Swift.Hashable {} +extension PenNavUI.PenNavUIError : Swift.Equatable {} +extension PenNavUI.PenNavUIError : Swift.Hashable {} +extension PenNavUI.PenNavUIError : Swift.RawRepresentable {} +extension PenNavUI.ValidationError : Swift.Equatable {} +extension PenNavUI.ValidationError : Swift.Hashable {} +extension PenNavUI.FloatingPanelPosition : Swift.Equatable {} +extension PenNavUI.FloatingPanelPosition : Swift.Hashable {} +extension PenNavUI.FloatingPanelPosition : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.Equatable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.Hashable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.Equatable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.Hashable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.RawRepresentable {} diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.swiftdoc b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.swiftdoc new file mode 100644 index 00000000..8dd44a60 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.swiftdoc differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.swiftinterface b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.swiftinterface new file mode 100644 index 00000000..d839a1b2 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.swiftinterface @@ -0,0 +1,1211 @@ +// swift-interface-format-version: 1.0 +// swift-compiler-version: Apple Swift version 6.2 effective-5.10 (swiftlang-6.2.0.19.9 clang-1700.3.19.1) +// swift-module-flags: -target x86_64-apple-ios13.0-simulator -enable-objc-interop -enable-library-evolution -swift-version 5 -enforce-exclusivity=checked -O -enable-experimental-feature DebugDescriptionMacro -enable-bare-slash-regex -module-name PenNavUI +// swift-module-flags-ignorable: -no-verify-emitted-module-interface -formal-cxx-interoperability-mode=off -interface-compiler-version 6.2 +import AVFoundation +import CoreData +import CoreGraphics +import CoreHaptics +import CoreLocation +import CoreText +import CryptoKit +import Darwin +import DeveloperToolsSupport +import Foundation +import LinkPresentation +import MapKit +import MessageUI +import Network +@_exported import PenNavUI +import Penguin +import PenguinINRenderer +import QuartzCore +import SafariServices +import Swift +import SwiftUI +import SystemConfiguration +import UIKit +import UserNotifications +import _Concurrency +import _StringProcessing +import _SwiftConcurrencyShims +import os.log +import os +@objc public protocol FloatingPanelLayout { + @objc var position: PenNavUI.FloatingPanelPosition { get } + @objc var initialState: PenNavUI.FloatingPanelState { get } + @objc var anchors: [PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring] { get } + @objc optional func prepareLayout(surfaceView: UIKit.UIView, in view: UIKit.UIView) -> [UIKit.NSLayoutConstraint] + @objc optional func backdropAlpha(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat +} +@objc @_inheritsConvenienceInitializers @objcMembers open class FloatingPanelBottomLayout : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayout { + @objc override dynamic public init() + @objc open var initialState: PenNavUI.FloatingPanelState { + @objc get + } + @objc open var anchors: [PenNavUI.FloatingPanelState : any PenNavUI.FloatingPanelLayoutAnchoring] { + @objc get + } + @objc open var position: PenNavUI.FloatingPanelPosition { + @objc get + } + @objc open func prepareLayout(surfaceView: UIKit.UIView, in view: UIKit.UIView) -> [UIKit.NSLayoutConstraint] + @objc open func backdropAlpha(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc deinit +} +extension PenNavUI.CampaignTracking { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var campaignId: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var lastNotificationDate: Foundation.Date? { + @objc get + @objc set + } + #endif +} +public protocol PILocationDelegate { + func onLocationOffCampus(location: _LocationEssentials.CLLocationCoordinate2D) + func onLocationMessage(message: PenNavUI.CampaignMessage) +} +extension PenNavUI.PILocationDelegate { + public func onLocationOffCampus(location: _LocationEssentials.CLLocationCoordinate2D) + public func onLocationMessage(message: PenNavUI.CampaignMessage) +} +@_inheritsConvenienceInitializers @objc(CachedVenue) nonisolated public class CachedVenue : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +extension PenNavUI.SharedLocationCacheData { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var edgeId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var floorId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var latitude: Swift.Double { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var longitude: Swift.Double { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var navigationAvoid: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var venueId: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var x: Swift.Int16 { + @objc get + @objc set + } + @objc @NSManaged nonisolated dynamic public var y: Swift.Int16 { + @objc get + @objc set + } +} +@_inheritsConvenienceInitializers @objc(CampaignTracking) nonisolated public class CampaignTracking : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@_hasMissingDesignatedInitializers public class Campus { + public var id: Swift.Int? + public var name: Swift.String? + public var coverImage: Swift.String? + @objc deinit +} +@_hasMissingDesignatedInitializers final public class CGTextRenderer { + public enum API { + case uiKit + case appKit + public static func == (a: PenNavUI.CGTextRenderer.API, b: PenNavUI.CGTextRenderer.API) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } + @objc deinit +} +extension PenNavUI.CommandLine { + public static func processImage(with config: PenNavUI.CommandLine.Configuration) throws -> Foundation.Data + public static func makeSVGOptions(for config: PenNavUI.CommandLine.Configuration) -> PenNavUI.SVG.Options + #if compiler(>=5.3) && $NonescapableTypes + public static func makeTextAPI(for api: PenNavUI.CommandLine.API?) -> PenNavUI.CGTextRenderer.API + #endif + public static func processImage(_ image: PenNavUI.SVG, with config: PenNavUI.CommandLine.Configuration) throws -> Foundation.Data + public static func makeImageInsets(for insets: PenNavUI.CommandLine.Insets) throws -> PenNavUI.SVG.Insets +} +extension PenNavUI.TagFlowLayout { + public enum LayoutAlignment : Swift.Int { + case left + case center + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } +} +@objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency public class TagFlowLayout : UIKit.UICollectionViewFlowLayout { + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutAttributesForElements(in rect: CoreFoundation.CGRect) -> [UIKit.UICollectionViewLayoutAttributes]? + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var flipsHorizontallyInOppositeLayoutDirection: Swift.Bool { + @objc get + } + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var developmentLayoutDirection: UIKit.UIUserInterfaceLayoutDirection { + @objc get + } + @objc deinit +} +extension PenNavUI.CommandLine { + public struct Configuration { + public var input: Foundation.URL + public var inputUltralight: Foundation.URL? + public var inputBlack: Foundation.URL? + public var output: Foundation.URL + public var format: PenNavUI.CommandLine.Format + public var size: PenNavUI.CommandLine.Size + public var api: PenNavUI.CommandLine.API? + public var insets: PenNavUI.CommandLine.Insets + public var insetsUltralight: PenNavUI.CommandLine.Insets? + public var insetsBlack: PenNavUI.CommandLine.Insets? + public var scale: PenNavUI.CommandLine.Scale + public var options: PenNavUI.SVG.Options + public var precision: Swift.Int? + } + public enum Format : Swift.String { + case jpeg + case pdf + case png + case swift + case sfsymbol + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } + } + public enum API : Swift.String { + case appkit + case uikit + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } + } + public enum Size : Swift.Equatable { + case `default` + case custom(width: Swift.Int, height: Swift.Int) + public static func == (a: PenNavUI.CommandLine.Size, b: PenNavUI.CommandLine.Size) -> Swift.Bool + } + public enum Scale : Swift.Equatable { + case `default` + case retina + case superRetina + public static func == (a: PenNavUI.CommandLine.Scale, b: PenNavUI.CommandLine.Scale) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } + public struct Insets : Swift.Equatable { + public var top: Swift.Double? + public var left: Swift.Double? + public var bottom: Swift.Double? + public var right: Swift.Double? + #if compiler(>=5.3) && $NonescapableTypes + public init(top: Swift.Double? = nil, left: Swift.Double? = nil, bottom: Swift.Double? = nil, right: Swift.Double? = nil) + #endif + public static func == (a: PenNavUI.CommandLine.Insets, b: PenNavUI.CommandLine.Insets) -> Swift.Bool + } + public static func parseConfiguration(from args: [Swift.String], baseDirectory: Foundation.URL) throws -> PenNavUI.CommandLine.Configuration +} +extension UIKit.UISpringTimingParameters { + @_Concurrency.MainActor @preconcurrency convenience public init(decelerationRate: CoreFoundation.CGFloat, frequencyResponse: CoreFoundation.CGFloat, initialVelocity: CoreFoundation.CGVector = .zero) + @_Concurrency.MainActor @preconcurrency convenience public init(dampingRatio: CoreFoundation.CGFloat, frequencyResponse: CoreFoundation.CGFloat, initialVelocity: CoreFoundation.CGVector = .zero) +} +@objc @_inheritsConvenienceInitializers final public class PenNavUIManager : ObjectiveC.NSObject { + public static var shared: PenNavUI.PenNavUIManager + final public var initializationDelegate: (any PenNavUI.PenNavInitializationDelegate)? + final public var eventsDelegate: (any PenNavUI.PIEventsDelegate)? + final public var locationDelegate: (any PenNavUI.PILocationDelegate)? + final public func build() + @discardableResult + final public func setLanguage(_ language: Swift.String) -> PenNavUI.PenNavUIManager + public static func setLanguage(_ language: Swift.String) + @discardableResult + final public func setDeepLinkComponents(scheme: Swift.String, host: Swift.String) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func setDeepLink(_ url: Foundation.URL?) + #endif + @discardableResult + final public func setEnableReportIssue(enable: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setShareLocationCallback(enabled: Swift.Bool) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func navigate(to referenceID: Swift.String, completion: ((Swift.Bool, PenNavUI.PenNavUIError?) -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func getCampusListing(baseURL: Swift.String, serviceName: Swift.String, clientID: Swift.String, clientKey: Swift.String, completion: @escaping ([PenNavUI.Campus]?) -> ()) + #endif + final public func setAppColor(color: UIKit.UIColor) -> PenNavUI.PenNavUIManager + public static func getVersion() -> Swift.String + final public func present(root: UIKit.UIViewController, view: UIKit.UIView) + final public func dismiss() + @discardableResult + final public func setClientKey(_ key: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setClientID(_ ID: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setUsername(_ userID: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setServiceName(dataServiceName: Swift.String, positionServiceName: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setBaseURL(dataURL: Swift.String, positionURL: Swift.String) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setIsShowUserName(_ isShowUserName: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setBackButtonVisibility(visible: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setDebugOptionsVisibility(visible: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setCampusID(_ campusID: Swift.Int) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setIsUpdateUserLocationSmoothly(_ isUpdateUserLocationSmoothly: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setOutdoorEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + @discardableResult + final public func setSimulationModeEnabled(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setStepDetectionEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setTransitionEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + final public func setGeographicCoordinateEnable(isEnable: Swift.Bool) -> PenNavUI.PenNavUIManager + #if compiler(>=5.3) && $NonescapableTypes + final public func getToken(clientID: Swift.String, clientKey: Swift.String, showProgress: Swift.Bool, completion: @escaping (Swift.String?, Penguin.ErrorCode?) -> Swift.Void) + #endif + final public func setToken(token: Swift.String) + final public func clearDatabase() + #if compiler(>=5.3) && $NonescapableTypes + final public func getVersion() -> Swift.String? + #endif + @objc override dynamic public init() + @objc deinit +} +extension PenNavUI.PenNavUIManager : CoreLocation.CLLocationManagerDelegate { + @objc final public func locationManagerDidChangeAuthorization(_ manager: CoreLocation.CLLocationManager) + @objc final public func locationManager(_ manager: CoreLocation.CLLocationManager, didChangeAuthorization status: CoreLocation.CLAuthorizationStatus) +} +extension PenNavUI.PenNavUIManager : Penguin.PIInitializerDelegate { + @objc final public func onReady(warning: Penguin.WarningCode) + @objc final public func onInitilzationError(error: Penguin.ErrorCode) + @objc final public func onInitializationProgressChange(status: Penguin.SDKOperation) +} +public enum DOM { +} +extension PenNavUI.DOM { + public typealias Float = Swift.Float + public typealias Coordinate = Swift.Float + public typealias Length = Swift.Int + public typealias Opacity = Swift.Float + public typealias Bool = Swift.Bool + public typealias URL = Foundation.URL +} +extension PenNavUI.PenNavStyle { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var type: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var value: Foundation.Data? { + @objc get + @objc set + } + #endif +} +public enum CommandLine { +} +@objc public protocol FloatingPanelBehavior { + @objc optional var springDecelerationRate: CoreFoundation.CGFloat { get } + @objc optional var springResponseTime: CoreFoundation.CGFloat { get } + @objc optional var momentumProjectionRate: CoreFoundation.CGFloat { get } + @objc optional func shouldProjectMomentum(_ fpc: PenNavUI.FloatingPanelController, to proposedState: PenNavUI.FloatingPanelState) -> Swift.Bool + @objc optional func redirectionalProgress(_ fpc: PenNavUI.FloatingPanelController, from: PenNavUI.FloatingPanelState, to: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc optional func allowsRubberBanding(for edge: UIUtilities.UIRectEdge) -> Swift.Bool + @objc optional var removalInteractionVelocityThreshold: CoreFoundation.CGFloat { get } +} +open class FloatingPanelDefaultBehavior : PenNavUI.FloatingPanelBehavior { + public init() + @objc open var springDecelerationRate: CoreFoundation.CGFloat { + @objc get + } + @objc open var springResponseTime: CoreFoundation.CGFloat { + @objc get + } + @objc open var momentumProjectionRate: CoreFoundation.CGFloat { + @objc get + } + @objc open func redirectionalProgress(_ fpc: PenNavUI.FloatingPanelController, from: PenNavUI.FloatingPanelState, to: PenNavUI.FloatingPanelState) -> CoreFoundation.CGFloat + @objc open func allowsRubberBanding(for edge: UIUtilities.UIRectEdge) -> Swift.Bool + @objc open var removalInteractionVelocityThreshold: CoreFoundation.CGFloat + @objc deinit +} +public enum IssueType { + case poi + case venue + case location + case navigation + public static func == (a: PenNavUI.IssueType, b: PenNavUI.IssueType) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } +} +extension _LocationEssentials.CLLocationCoordinate2D : Swift.Codable { + public init(from decoder: any Swift.Decoder) throws + public func encode(to encoder: any Swift.Encoder) throws +} +@_inheritsConvenienceInitializers @objc(FavoriteCacheData) nonisolated public class FavoriteCacheData : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@objc public enum FloatingPanelReferenceEdge : Swift.Int { + case top + case left + case bottom + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@objc public enum FloatingPanelLayoutReferenceGuide : Swift.Int { + case superview = 0 + case safeArea = 1 + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +@objc public enum FloatingPanelLayoutContentBoundingGuide : Swift.Int { + case none = 0 + case superview = 1 + case safeArea = 2 + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension PenNavUI.CommandLine { + public enum Error : Swift.Error { + case invalid + case unsupported + case fileNotFound + public static func == (a: PenNavUI.CommandLine.Error, b: PenNavUI.CommandLine.Error) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } + } +} +public protocol PIEventsDelegate { + func onBackButtonPressed() + func onPenNavUIDismiss() + func onReportIssue(_ issue: PenNavUI.IssueType) + #if compiler(>=5.3) && $NonescapableTypes + func onShareLocation(link: Swift.String?) + #endif + func onSwitchCampus(campusId: Swift.Int) +} +extension PenNavUI.PIEventsDelegate { + public func onBackButtonPressed() + public func onPenNavUIDismiss() + public func onReportIssue(_ issue: PenNavUI.IssueType) + #if compiler(>=5.3) && $NonescapableTypes + public func onShareLocation(link: Swift.String?) + #endif + public func onSwitchCampus(campusId: Swift.Int) +} +@_inheritsConvenienceInitializers @objc(PenNavUITableUpdate) nonisolated public class PenNavUITableUpdate : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +public struct SFSymbolRenderer { + public init(options: PenNavUI.SVG.Options, insets: PenNavUI.CommandLine.Insets, insetsUltralight: PenNavUI.CommandLine.Insets, insetsBlack: PenNavUI.CommandLine.Insets, precision: Swift.Int) + #if compiler(>=5.3) && $NonescapableTypes + public func render(regular: Foundation.URL, ultralight: Foundation.URL?, black: Foundation.URL?) throws -> Swift.String + #endif +} +@_inheritsConvenienceInitializers @objc(PenNavStyle) nonisolated public class PenNavStyle : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +public struct GeofenceConfiguration { + #if compiler(>=5.3) && $NonescapableTypes + public init(baseURL: Swift.String, serviceName: Swift.String, clientId: Swift.String, clientKey: Swift.String, campusId: Swift.Int? = nil) + #endif +} +public struct CampaignMessage { + public var title: Swift.String + public var description: Swift.String +} +extension UIKit.UIImage { + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(svgNamed name: Swift.String, in bundle: Foundation.Bundle = .main, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(initWithSVGData:) convenience dynamic public init?(svgData: Foundation.Data) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(initWithContentsOfSVGFile:) convenience dynamic public init?(contentsOfSVGFile path: Swift.String) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(svgNamed:) public static func _svgNamed(_ name: Swift.String) -> UIKit.UIImage? + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(svgNamed:inBundle:) public static func _svgNamed(_ name: Swift.String, in bundle: Foundation.Bundle) -> UIKit.UIImage? + #endif + convenience public init(_ image: PenNavUI.SVG) +} +extension PenNavUI.SVG { + final public func rasterize() -> UIKit.UIImage + #if compiler(>=5.3) && $NonescapableTypes + final public func rasterize(with size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, insets: UIKit.UIEdgeInsets = .zero) -> UIKit.UIImage + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func pngData(size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, insets: UIKit.UIEdgeInsets = .zero) throws -> Foundation.Data + #endif + #if compiler(>=5.3) && $NonescapableTypes + final public func jpegData(size: CoreFoundation.CGSize? = nil, scale: CoreFoundation.CGFloat = 0, compressionQuality quality: CoreFoundation.CGFloat = 1, insets: UIKit.UIEdgeInsets = .zero) throws -> Foundation.Data + #endif +} +public protocol PenNavInitializationDelegate { + func onPenNavInitializationSuccess() + func onPenNavInitializationError(errorType: PenNavUI.PenNavUIError, errorDescription: Swift.String) +} +extension Penguin.GateNodeModel : Penguin.NodeRepresentable { + final public var isUpEscalator: Swift.Bool { + get + } + final public var isDownEscalator: Swift.Bool { + get + } +} +@_inheritsConvenienceInitializers @objc(SharedLocationCacheData) nonisolated public class SharedLocationCacheData : CoreData.NSManagedObject { + #if compiler(>=5.3) && $NonescapableTypes + @objc override nonisolated dynamic public init(entity: CoreData.NSEntityDescription, insertInto context: CoreData.NSManagedObjectContext?) + #endif + @objc deinit +} +@objc open class FloatingPanelState : ObjectiveC.NSObject, Foundation.NSCopying, Swift.RawRepresentable { + public typealias RawValue = Swift.String + #if compiler(>=5.3) && $NonescapableTypes + required public init?(rawValue: PenNavUI.FloatingPanelState.RawValue) + #endif + @objc public init(rawValue: PenNavUI.FloatingPanelState.RawValue, order: Swift.Int) + final public let rawValue: PenNavUI.FloatingPanelState.RawValue + final public let order: Swift.Int + #if compiler(>=5.3) && $NonescapableTypes + @objc public func copy(with zone: ObjectiveC.NSZone? = nil) -> Any + #endif + @objc override dynamic public var description: Swift.String { + @objc get + } + @objc override dynamic public var debugDescription: Swift.String { + @objc get + } + @objc(Full) public static let full: PenNavUI.FloatingPanelState + @objc(Half) public static let half: PenNavUI.FloatingPanelState + @objc(Tip) public static let tip: PenNavUI.FloatingPanelState + @objc(Hidden) public static let hidden: PenNavUI.FloatingPanelState + @objc deinit +} +@objc @_inheritsConvenienceInitializers public class AsynchronousOperation : Foundation.Operation { + @objc override dynamic public var isAsynchronous: Swift.Bool { + @objc get + } + @objc override dynamic public var isExecuting: Swift.Bool { + @objc get + } + @objc override dynamic public var isFinished: Swift.Bool { + @objc get + } + public func completeOperation() + @objc override dynamic public func start() + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @objc(FloatingPanelSurfaceAppearance) @objcMembers public class SurfaceAppearance : ObjectiveC.NSObject { + @_inheritsConvenienceInitializers @objc(FloatingPanelSurfaceAppearanceShadow) public class Shadow : ObjectiveC.NSObject { + @objc public var hidden: Swift.Bool + @objc public var color: UIKit.UIColor + @objc public var offset: CoreFoundation.CGSize + @objc public var opacity: Swift.Float + @objc public var radius: CoreFoundation.CGFloat + @objc public var spread: CoreFoundation.CGFloat + @objc override dynamic public init() + @objc deinit + } + @objc public var backgroundColor: UIKit.UIColor? + @objc public var cornerRadius: CoreFoundation.CGFloat + @objc @available(iOS 13.0, *) + public var cornerCurve: QuartzCore.CALayerCornerCurve { + @objc get + @objc set + } + @objc public var shadows: [PenNavUI.SurfaceAppearance.Shadow] + @objc public var borderColor: UIKit.UIColor? + @objc public var borderWidth: CoreFoundation.CGFloat + @objc override dynamic public init() + @objc deinit +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc(FloatingPanelSurfaceView) @objcMembers @_Concurrency.MainActor @preconcurrency public class SurfaceView : UIKit.UIView { + @objc @_Concurrency.MainActor @preconcurrency final public let grabberHandle: PenNavUI.GrabberView + @objc @_Concurrency.MainActor @preconcurrency public var grabberHandlePadding: CoreFoundation.CGFloat { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var grabberAreaOffset: CoreFoundation.CGFloat + @objc @_Concurrency.MainActor @preconcurrency public var grabberHandleSize: CoreFoundation.CGSize { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency weak public var contentView: UIKit.UIView? + @objc @_Concurrency.MainActor @preconcurrency public var contentPadding: UIKit.UIEdgeInsets { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var backgroundColor: UIKit.UIColor? { + @objc get + @objc set + } + #endif + @objc @_Concurrency.MainActor @preconcurrency public var appearance: PenNavUI.SurfaceAppearance { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var containerMargins: UIKit.UIEdgeInsets { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency final public let containerView: UIKit.UIView + @_Concurrency.MainActor @preconcurrency @objc override dynamic public class var requiresConstraintBasedLayout: Swift.Bool { + @objc get + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func updateConstraints() + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutSubviews() + @_Concurrency.MainActor @preconcurrency @objc override dynamic public var intrinsicContentSize: CoreFoundation.CGSize { + @objc get + } + @objc deinit +} +extension Penguin.Gnode : Penguin.NodeRepresentable { + final public var isUpEscalator: Swift.Bool { + get + } + final public var isDownEscalator: Swift.Bool { + get + } +} +public enum PenNavUIError : Swift.String, Foundation.LocalizedError { + case missingBaseUrl + case missingDataServiceName + case missingPositionServiceName + case missingRootController + case missingViewContainer + case missingClientId + case missingClientName + case invalidClientKey + case unauthorized + case noInternetConnection + case bluetoothTurnedOff + case locationServicesTurnedOff + case loadingDataError + case osNotSupported + case permissionsNotGranted + case sensorsInitializationError + case unknownError + case locationPermissionNotGranted + case bluetoothPermissionNotGranted + case invalidCampusId + case noCampusListFound + case buildCancelled + public var errorDescription: Swift.String { + get + } + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.String) + #endif + public typealias RawValue = Swift.String + public var rawValue: Swift.String { + get + } +} +public enum ValidationError : Swift.Error { + case noClientID + case noClientNameKey + case noServiesName + case noBaseUrl + case missingFonts + public static func == (a: PenNavUI.ValidationError, b: PenNavUI.ValidationError) -> Swift.Bool + public func hash(into hasher: inout Swift.Hasher) + public var hashValue: Swift.Int { + get + } +} +@objc @_hasMissingDesignatedInitializers @_Concurrency.MainActor @preconcurrency final public class FloatingPanelPanGestureRecognizer : UIKit.UIPanGestureRecognizer { + @_Concurrency.MainActor @preconcurrency @objc override final public func touchesBegan(_ touches: Swift.Set, with event: UIKit.UIEvent) + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override weak final public var delegate: (any UIKit.UIGestureRecognizerDelegate)? { + @objc get + @objc set + } + #endif + @_Concurrency.MainActor @preconcurrency final public var delegateOrigin: any UIKit.UIGestureRecognizerDelegate { + get + } + @_Concurrency.MainActor @preconcurrency weak final public var delegateProxy: (any UIKit.UIGestureRecognizerDelegate)? { + get + set + } + @objc deinit +} +extension PenNavUI.CachedVenue { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + @objc @NSManaged nonisolated dynamic public var id: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var coverImage: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var address: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var buildingNumber: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var phone: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var email: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var website: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var floorCount: Swift.Int16 { + @objc get + @objc set + } +} +@_hasMissingDesignatedInitializers @objc(FloatingPanelGrabberView) @_Concurrency.MainActor @preconcurrency public class GrabberView : UIKit.UIView { + @_Concurrency.MainActor @preconcurrency public var barColor: UIKit.UIColor { + get + set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func layoutSubviews() + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic public func hitTest(_ point: CoreFoundation.CGPoint, with event: UIKit.UIEvent?) -> UIKit.UIView? + #endif + @objc deinit +} +@objc public enum FloatingPanelPosition : Swift.Int { + case top + case left + case bottom + case right + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } +} +extension PenNavUI.FavoriteCacheData { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var createDate: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var deviceId: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var type: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var distance: Swift.Double { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var id: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var label: Swift.String? { + @objc get + @objc set + } + #endif + @objc @NSManaged nonisolated dynamic public var poiId: Swift.Int16 { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var userName: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var location: PenNavUI.SharedLocationCacheData? { + @objc get + @objc set + } + #endif +} +@objc public protocol FloatingPanelLayoutAnchoring { + @objc var referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide { get } + @objc func layoutConstraints(_ fpc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteInset: CoreFoundation.CGFloat, edge: PenNavUI.FloatingPanelReferenceEdge, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide) + @objc public init(fractionalInset: CoreFoundation.CGFloat, edge: PenNavUI.FloatingPanelReferenceEdge, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc deinit +} +extension PenNavUI.FloatingPanelLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelIntrinsicLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteOffset offset: CoreFoundation.CGFloat, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide = .safeArea) + @objc public init(fractionalOffset offset: CoreFoundation.CGFloat, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide = .safeArea) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc deinit +} +extension PenNavUI.FloatingPanelIntrinsicLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@objc final public class FloatingPanelAdaptiveLayoutAnchor : ObjectiveC.NSObject, PenNavUI.FloatingPanelLayoutAnchoring { + @objc public init(absoluteOffset offset: CoreFoundation.CGFloat, contentLayout: UIKit.UILayoutGuide, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide, contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide = .none) + @objc public init(fractionalOffset offset: CoreFoundation.CGFloat, contentLayout: UIKit.UILayoutGuide, referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide, contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide = .none) + @objc final public let referenceGuide: PenNavUI.FloatingPanelLayoutReferenceGuide + @objc final public let contentBoundingGuide: PenNavUI.FloatingPanelLayoutContentBoundingGuide + @objc deinit +} +extension PenNavUI.FloatingPanelAdaptiveLayoutAnchor { + @objc final public func layoutConstraints(_ vc: PenNavUI.FloatingPanelController, for position: PenNavUI.FloatingPanelPosition) -> [UIKit.NSLayoutConstraint] +} +@_hasMissingDesignatedInitializers public class ImageCache { + #if compiler(>=5.3) && $NonescapableTypes + public func getImage(_ url: Foundation.URL, completion: @escaping (UIKit.UIImage?) -> Swift.Void) + #endif + #if compiler(>=5.3) && $NonescapableTypes + public func getImageFromDocuments(url: Foundation.URL) -> UIKit.UIImage? + #endif + @objc deinit +} +extension PenNavUI.ImageCache { + #if compiler(>=5.3) && $NonescapableTypes + public func getSVG(withURL url: Foundation.URL, completion: @escaping (UIKit.UIImage?) -> Swift.Void) + #endif +} +extension PenNavUI.PenNavUITableUpdate { + @nonobjc public class func fetchRequest() -> CoreData.NSFetchRequest + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var lastUpdateTime: Swift.String? { + @objc get + @objc set + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @NSManaged nonisolated dynamic public var tableName: Swift.String? { + @objc get + @objc set + } + #endif +} +extension CoreGraphics.CGContext { + #if compiler(>=5.3) && $NonescapableTypes + public func draw(_ image: PenNavUI.SVG, in rect: CoreFoundation.CGRect? = nil) + #endif +} +extension PenNavUI.SVG { + #if compiler(>=5.3) && $NonescapableTypes + final public func pdfData(size: CoreFoundation.CGSize? = nil, insets: PenNavUI.SVG.Insets = .zero) throws -> Foundation.Data + #endif +} +public struct SVGRenderer { + public static func makeExpanded(path: Swift.String, transform: Swift.String, precision: Swift.Int = 4) throws -> Swift.String +} +@_hasMissingDesignatedInitializers @objc(SVGImage) final public class SVG : ObjectiveC.NSObject { + final public let size: CoreFoundation.CGSize + public struct Options : Swift.OptionSet { + public let rawValue: Swift.Int + public init(rawValue: Swift.Int) + public static let hideUnsupportedFilters: PenNavUI.SVG.Options + public static let `default`: PenNavUI.SVG.Options + public typealias ArrayLiteralElement = PenNavUI.SVG.Options + public typealias Element = PenNavUI.SVG.Options + public typealias RawValue = Swift.Int + } + @objc deinit +} +@available(*, deprecated, renamed: "SVG") +public typealias Image = PenNavUI.SVG +extension PenNavUI.SVG { + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(fileURL url: Foundation.URL, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(named name: Swift.String, in bundle: Foundation.Bundle = Bundle.main, options: PenNavUI.SVG.Options = .default) + #endif + #if compiler(>=5.3) && $NonescapableTypes + convenience public init?(data: Foundation.Data, options: PenNavUI.SVG.Options = .default) + #endif + public struct Insets : Swift.Equatable { + public var top: CoreFoundation.CGFloat + public var left: CoreFoundation.CGFloat + public var bottom: CoreFoundation.CGFloat + public var right: CoreFoundation.CGFloat + public static let zero: PenNavUI.SVG.Insets + public static func == (a: PenNavUI.SVG.Insets, b: PenNavUI.SVG.Insets) -> Swift.Bool + } +} +@objc public protocol FloatingPanelControllerDelegate { + @objc(floatingPanel:layoutForTraitCollection:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, layoutFor newCollection: UIKit.UITraitCollection) -> any PenNavUI.FloatingPanelLayout + @objc(floatingPanel:layoutForSize:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, layoutFor size: CoreFoundation.CGSize) -> any PenNavUI.FloatingPanelLayout + @objc(floatingPanel:animatorForPresentingToState:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, animatorForPresentingTo state: PenNavUI.FloatingPanelState) -> UIKit.UIViewPropertyAnimator + @objc(floatingPanel:animatorForDismissingWithVelocity:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, animatorForDismissingWith velocity: CoreFoundation.CGVector) -> UIKit.UIViewPropertyAnimator + @objc optional func floatingPanelDidChangeState(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelShouldBeginDragging(_ fpc: PenNavUI.FloatingPanelController) -> Swift.Bool + @objc optional func floatingPanelDidMove(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelWillBeginDragging(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelWillEndDragging(_ fpc: PenNavUI.FloatingPanelController, withVelocity velocity: CoreFoundation.CGPoint, targetState: Swift.UnsafeMutablePointer) + @objc optional func floatingPanelDidEndDragging(_ fpc: PenNavUI.FloatingPanelController, willAttract attract: Swift.Bool) + @objc optional func floatingPanelWillBeginAttracting(_ fpc: PenNavUI.FloatingPanelController, to state: PenNavUI.FloatingPanelState) + @objc optional func floatingPanelDidEndAttracting(_ fpc: PenNavUI.FloatingPanelController) + @objc(floatingPanel:shouldRemoveAtLocation:withVelocity:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, shouldRemoveAt location: CoreFoundation.CGPoint, with velocity: CoreFoundation.CGVector) -> Swift.Bool + @objc(floatingPanelWillRemove:) optional func floatingPanelWillRemove(_ fpc: PenNavUI.FloatingPanelController) + @objc optional func floatingPanelDidRemove(_ fpc: PenNavUI.FloatingPanelController) + @objc(floatingPanel:contentOffsetForPinningScrollView:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, contentOffsetForPinning trackingScrollView: UIKit.UIScrollView) -> CoreFoundation.CGPoint + @objc(floatingPanel:shouldAllowToScroll:in:) optional func floatingPanel(_ fpc: PenNavUI.FloatingPanelController, shouldAllowToScroll scrollView: UIKit.UIScrollView, in state: PenNavUI.FloatingPanelState) -> Swift.Bool +} +@_inheritsConvenienceInitializers @_hasMissingDesignatedInitializers @objc @_Concurrency.MainActor @preconcurrency open class FloatingPanelController : UIKit.UIViewController { + @objc public enum ContentInsetAdjustmentBehavior : Swift.Int { + case always + case never + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc public enum ContentMode : Swift.Int { + case `static` + case fitToBounds + #if compiler(>=5.3) && $NonescapableTypes + public init?(rawValue: Swift.Int) + #endif + public typealias RawValue = Swift.Int + public var rawValue: Swift.Int { + get + } + } + @objc @_Concurrency.MainActor @preconcurrency weak public var delegate: (any PenNavUI.FloatingPanelControllerDelegate)? { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var surfaceView: PenNavUI.SurfaceView! { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var backdropView: PenNavUI.BackdropView! { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency weak public var trackingScrollView: UIKit.UIScrollView? { + @objc get + } + #endif + @objc @_Concurrency.MainActor @preconcurrency public var panGestureRecognizer: PenNavUI.FloatingPanelPanGestureRecognizer { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var state: PenNavUI.FloatingPanelState { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var isAttracting: Swift.Bool { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var layout: any PenNavUI.FloatingPanelLayout { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var behavior: any PenNavUI.FloatingPanelBehavior { + @objc get + @objc set + } + @objc @_Concurrency.MainActor @preconcurrency public var adjustedContentInsets: UIKit.UIEdgeInsets { + @objc get + } + @objc @_Concurrency.MainActor @preconcurrency public var contentInsetAdjustmentBehavior: PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior + @objc @_Concurrency.MainActor @preconcurrency public var isRemovalInteractionEnabled: Swift.Bool { + @objc(isRemovalInteractionEnabled) get + @objc(setRemovalInteractionEnabled:) set + } + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public var contentViewController: UIKit.UIViewController? { + @objc get + @objc set + } + #endif + @_Concurrency.MainActor @preconcurrency public var nearbyState: PenNavUI.FloatingPanelState { + get + } + @objc @_Concurrency.MainActor @preconcurrency public var contentMode: PenNavUI.FloatingPanelController.ContentMode { + @objc get + @objc set + } + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc required dynamic public init?(coder aDecoder: Foundation.NSCoder) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc @_Concurrency.MainActor @preconcurrency public init(delegate: (any PenNavUI.FloatingPanelControllerDelegate)? = nil) + #endif + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func loadView() + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewDidLayoutSubviews() + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewDidAppear(_ animated: Swift.Bool) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewWillTransition(to size: CoreFoundation.CGSize, with coordinator: any UIKit.UIViewControllerTransitionCoordinator) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func willTransition(to newCollection: UIKit.UITraitCollection, with coordinator: any UIKit.UIViewControllerTransitionCoordinator) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func viewWillDisappear(_ animated: Swift.Bool) + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForStatusBarStyle: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForStatusBarHidden: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForScreenEdgesDeferringSystemGestures: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency @objc override dynamic open var childForHomeIndicatorAutoHidden: UIKit.UIViewController? { + @objc get + } + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(show:completion:) @_Concurrency.MainActor @preconcurrency public func show(animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(hide:completion:) @_Concurrency.MainActor @preconcurrency public func hide(animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(addPanelToParent:at:animated:completion:) @_Concurrency.MainActor @preconcurrency public func addPanel(toParent parent: UIKit.UIViewController, at viewIndex: Swift.Int = -1, animated: Swift.Bool = false, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(removePanelFromParent:completion:) @_Concurrency.MainActor @preconcurrency public func removePanelFromParent(animated: Swift.Bool, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @objc(moveToState:animated:completion:) @_Concurrency.MainActor @preconcurrency public func move(to: PenNavUI.FloatingPanelState, animated: Swift.Bool, completion: (() -> Swift.Void)? = nil) + #endif + #if compiler(>=5.3) && $NonescapableTypes + @_Concurrency.MainActor @preconcurrency public func set(contentViewController: UIKit.UIViewController?) + #endif + @objc(trackScrollView:) @_Concurrency.MainActor @preconcurrency public func track(scrollView: UIKit.UIScrollView) + @_Concurrency.MainActor @preconcurrency public func followScrollViewBouncing() + @objc(untrackScrollView:) @_Concurrency.MainActor @preconcurrency public func untrack(scrollView: UIKit.UIScrollView) + @_Concurrency.MainActor @preconcurrency @objc override dynamic open func accessibilityPerformEscape() -> Swift.Bool + @objc @_Concurrency.MainActor @preconcurrency public func invalidateLayout() + @objc @_Concurrency.MainActor @preconcurrency public func surfaceLocation(for state: PenNavUI.FloatingPanelState) -> CoreFoundation.CGPoint + @objc @_Concurrency.MainActor @preconcurrency public var surfaceLocation: CoreFoundation.CGPoint { + @objc get + @objc set + } + @_Concurrency.MainActor @preconcurrency public func addTopPadding(padding: CoreFoundation.CGFloat) + @objc deinit +} +@_hasMissingDesignatedInitializers @objc(FloatingPanelBackdropView) @_Concurrency.MainActor @preconcurrency public class BackdropView : UIKit.UIView { + @objc @_Concurrency.MainActor @preconcurrency public var dismissalTapGestureRecognizer: UIKit.UITapGestureRecognizer + @objc deinit +} +@_hasMissingDesignatedInitializers public class NetworkMonitor { + @objc deinit +} +public enum GeofenceError : Swift.Error, Foundation.LocalizedError { + case permissionDenied + case errorInConfiguration + case authenticationFailed + case indoorDeloymentOnly + case geofenceConfigurationsMissing + case geofenceSDKNotStarted + case geofenceSDKAlreadyStarted + case sdkError(Swift.String) + #if compiler(>=5.3) && $NonescapableTypes + public var errorDescription: Swift.String? { + get + } + #endif +} +public protocol PIGeofenceManagerDelegate { + func geofenceStarted() + #if compiler(>=5.3) && $NonescapableTypes + func geofenceFailedToStart(_ error: Swift.String?) + #endif + func geofenceStopped() + func geofenceUpdated() +} +@objc @_inheritsConvenienceInitializers public class PIGeofenceManager : ObjectiveC.NSObject { + public static var shared: PenNavUI.PIGeofenceManager { + get + } + public func initializeLocationManager() + public func setGeofenceSDKConfigurations(_ configurations: PenNavUI.GeofenceConfiguration) + public func setGeofenceDelegate(delegate: any PenNavUI.PIGeofenceManagerDelegate) + public func startGeofencing(delegate: any PenNavUI.PIGeofenceManagerDelegate) + public func stopGeofencing() + public func updateGeofencing() + @objc override dynamic public init() + @objc deinit +} +extension PenNavUI.PIGeofenceManager : CoreLocation.CLLocationManagerDelegate { + @objc dynamic public func locationManager(_ manager: CoreLocation.CLLocationManager, didChangeAuthorization status: CoreLocation.CLAuthorizationStatus) +} +extension PenNavUI.PIGeofenceManager { + @objc dynamic public func locationManager(_ manager: CoreLocation.CLLocationManager, didEnterRegion region: CoreLocation.CLRegion) +} +extension PenNavUI.CGTextRenderer { + public typealias Size = (width: Swift.Int, height: Swift.Int) + #if compiler(>=5.3) && $NonescapableTypes + public static func render(named name: Swift.String, in bundle: Foundation.Bundle = Bundle.main, size: PenNavUI.CGTextRenderer.Size? = nil, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + #endif + #if compiler(>=5.3) && $NonescapableTypes + public static func render(fileURL: Foundation.URL, size: PenNavUI.CGTextRenderer.Size? = nil, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + #endif + public static func render(data: Foundation.Data, options: PenNavUI.SVG.Options, api: PenNavUI.CGTextRenderer.API, precision: Swift.Int) throws -> Swift.String + public static func renderPath(from svgPath: Swift.String) throws -> Swift.String +} +extension PenNavUI.CGTextRenderer.API : Swift.Equatable {} +extension PenNavUI.CGTextRenderer.API : Swift.Hashable {} +extension PenNavUI.CommandLine.Scale : Swift.Hashable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.Equatable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.Hashable {} +extension PenNavUI.TagFlowLayout.LayoutAlignment : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.Format : Swift.Equatable {} +extension PenNavUI.CommandLine.Format : Swift.Hashable {} +extension PenNavUI.CommandLine.Format : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.API : Swift.Equatable {} +extension PenNavUI.CommandLine.API : Swift.Hashable {} +extension PenNavUI.CommandLine.API : Swift.RawRepresentable {} +extension PenNavUI.IssueType : Swift.Equatable {} +extension PenNavUI.IssueType : Swift.Hashable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.Equatable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.Hashable {} +extension PenNavUI.FloatingPanelReferenceEdge : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.Equatable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.Hashable {} +extension PenNavUI.FloatingPanelLayoutReferenceGuide : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.Equatable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.Hashable {} +extension PenNavUI.FloatingPanelLayoutContentBoundingGuide : Swift.RawRepresentable {} +extension PenNavUI.CommandLine.Error : Swift.Equatable {} +extension PenNavUI.CommandLine.Error : Swift.Hashable {} +extension PenNavUI.PenNavUIError : Swift.Equatable {} +extension PenNavUI.PenNavUIError : Swift.Hashable {} +extension PenNavUI.PenNavUIError : Swift.RawRepresentable {} +extension PenNavUI.ValidationError : Swift.Equatable {} +extension PenNavUI.ValidationError : Swift.Hashable {} +extension PenNavUI.FloatingPanelPosition : Swift.Equatable {} +extension PenNavUI.FloatingPanelPosition : Swift.Hashable {} +extension PenNavUI.FloatingPanelPosition : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.Equatable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.Hashable {} +extension PenNavUI.FloatingPanelController.ContentInsetAdjustmentBehavior : Swift.RawRepresentable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.Equatable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.Hashable {} +extension PenNavUI.FloatingPanelController.ContentMode : Swift.RawRepresentable {} diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/module.modulemap b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/module.modulemap new file mode 100644 index 00000000..92c421ef --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module PenNavUI { + umbrella header "PenNavUI.h" + export * + + module * { export * } +} + +module PenNavUI.Swift { + header "PenNavUI-Swift.h" + requires objc +} diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/NavigationFeedbackViewController.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/NavigationFeedbackViewController.nib new file mode 100644 index 00000000..918bcf4b Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/NavigationFeedbackViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/NavigationSearchViewController.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/NavigationSearchViewController.nib new file mode 100644 index 00000000..07100027 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/NavigationSearchViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/NavigationViewController.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/NavigationViewController.nib new file mode 100644 index 00000000..a1c121c2 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/NavigationViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingCell.nib new file mode 100644 index 00000000..79227272 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingDetailsView.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingDetailsView.nib/objects-14.0+.nib new file mode 100644 index 00000000..ebeefd70 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingDetailsView.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingDetailsView.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingDetailsView.nib/runtime.nib new file mode 100644 index 00000000..71cb3c71 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingDetailsView.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingDetailsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingDetailsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..fb67e878 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingDetailsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingDetailsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingDetailsViewController.nib/runtime.nib new file mode 100644 index 00000000..297fd368 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingDetailsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingFullAlertSound.wav b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingFullAlertSound.wav new file mode 100644 index 00000000..e5f07e58 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ParkingFullAlertSound.wav differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PenNavUI b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PenNavUI new file mode 100755 index 00000000..d175bb55 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PenNavUI differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PenNavUI.momd/PenNavDB.mom b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PenNavUI.momd/PenNavDB.mom new file mode 100644 index 00000000..f9e8ef31 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PenNavUI.momd/PenNavDB.mom differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PenNavUI.momd/VersionInfo.plist b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PenNavUI.momd/VersionInfo.plist new file mode 100644 index 00000000..20c8aff4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PenNavUI.momd/VersionInfo.plist differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PlaceImageCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PlaceImageCell.nib new file mode 100644 index 00000000..d0523aef Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PlaceImageCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PlaceImagesCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PlaceImagesCell.nib new file mode 100644 index 00000000..fd4fd25f Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PlaceImagesCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PoiCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PoiCell.nib new file mode 100644 index 00000000..b3ed3b48 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PoiCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PoiDetailsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PoiDetailsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..c3582e39 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PoiDetailsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PoiDetailsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PoiDetailsViewController.nib/runtime.nib new file mode 100644 index 00000000..ea565c6f Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/PoiDetailsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Black.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Black.ttf new file mode 100644 index 00000000..4d409e03 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Black.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-BlackItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-BlackItalic.ttf new file mode 100644 index 00000000..f3c5e0af Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-BlackItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Bold.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Bold.ttf new file mode 100644 index 00000000..44313ca4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Bold.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-BoldItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-BoldItalic.ttf new file mode 100644 index 00000000..939fc7d4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-BoldItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ExtraBold.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ExtraBold.ttf new file mode 100644 index 00000000..88d0f1eb Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ExtraBold.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ExtraBoldItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ExtraBoldItalic.ttf new file mode 100644 index 00000000..da7a257a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ExtraBoldItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ExtraLight.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ExtraLight.ttf new file mode 100644 index 00000000..4620a421 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ExtraLight.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ExtraLightItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ExtraLightItalic.ttf new file mode 100644 index 00000000..2c5ad2f8 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ExtraLightItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Italic.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Italic.ttf new file mode 100644 index 00000000..8efebbf6 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Italic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Light.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Light.ttf new file mode 100644 index 00000000..8a6ac685 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Light.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-LightItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-LightItalic.ttf new file mode 100644 index 00000000..b8f46a67 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-LightItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Medium.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Medium.ttf new file mode 100644 index 00000000..5b46f198 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Medium.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-MediumItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-MediumItalic.ttf new file mode 100644 index 00000000..e362e570 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-MediumItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Regular.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Regular.ttf new file mode 100644 index 00000000..246a861a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Regular.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-SemiBold.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-SemiBold.ttf new file mode 100644 index 00000000..3bbad2a8 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-SemiBold.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-SemiBoldItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-SemiBoldItalic.ttf new file mode 100644 index 00000000..74a7c43b Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-SemiBoldItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Thin.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Thin.ttf new file mode 100644 index 00000000..205b2843 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-Thin.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ThinItalic.ttf b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ThinItalic.ttf new file mode 100644 index 00000000..2f4b05e7 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/Poppins-ThinItalic.ttf differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ReroutingView.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ReroutingView.nib new file mode 100644 index 00000000..f2f43bbf Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ReroutingView.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteCell.nib new file mode 100644 index 00000000..922583d8 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteDetailsViewController.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteDetailsViewController.nib new file mode 100644 index 00000000..d15eca4d Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteDetailsViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteDirectionsViewController.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteDirectionsViewController.nib new file mode 100644 index 00000000..5db050b5 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteDirectionsViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteOptionsViewController.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteOptionsViewController.nib new file mode 100644 index 00000000..7aff491c Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteOptionsViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RoutePlannerViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RoutePlannerViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..08cffef4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RoutePlannerViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RoutePlannerViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RoutePlannerViewController.nib/runtime.nib new file mode 100644 index 00000000..18cb8594 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RoutePlannerViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteRecalculating.ahap b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteRecalculating.ahap new file mode 100644 index 00000000..09553593 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/RouteRecalculating.ahap @@ -0,0 +1,55 @@ +{ + "Pattern": [ + { + "Event": { + "Time": 0.0, + "EventType": "HapticContinuous", + "EventDuration": 0.2, + "EventParameters": [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.50 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.50 + } + ] + } + }, + { + "Event": { + "Time": 0.25, + "EventType": "HapticContinuous", + "EventDuration": 0.2, + "EventParameters": [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.95 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.95 + } + ] + } + }, + { + "Event": { + "Time": 0.50, + "EventType": "HapticContinuous", + "EventDuration": 0.2, + "EventParameters": [ + { + "ParameterID": "HapticIntensity", + "ParameterValue": 0.5 + }, + { + "ParameterID": "HapticSharpness", + "ParameterValue": 0.5 + } + ] + } + } + ] +} diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SearchOptions.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SearchOptions.nib/objects-14.0+.nib new file mode 100644 index 00000000..3b3ceb9a Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SearchOptions.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SearchOptions.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SearchOptions.nib/runtime.nib new file mode 100644 index 00000000..a933d308 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SearchOptions.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SearchResultCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SearchResultCell.nib new file mode 100644 index 00000000..6db364e1 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SearchResultCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SearchViewController.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SearchViewController.nib new file mode 100644 index 00000000..7e1d05ab Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SearchViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SharedLocationDetailsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SharedLocationDetailsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..f41c8165 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SharedLocationDetailsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SharedLocationDetailsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SharedLocationDetailsViewController.nib/runtime.nib new file mode 100644 index 00000000..583e35d3 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SharedLocationDetailsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SpeechControlView.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SpeechControlView.nib new file mode 100644 index 00000000..71aa248d Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SpeechControlView.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/StopCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/StopCell.nib new file mode 100644 index 00000000..edea1f43 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/StopCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/StopNavigation.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/StopNavigation.nib new file mode 100644 index 00000000..066df8fc Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/StopNavigation.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SubpathsStepper.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SubpathsStepper.nib/objects-14.0+.nib new file mode 100644 index 00000000..d3a779f6 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SubpathsStepper.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SubpathsStepper.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SubpathsStepper.nib/runtime.nib new file mode 100644 index 00000000..d3a779f6 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/SubpathsStepper.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TagViewCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TagViewCell.nib new file mode 100644 index 00000000..17f95925 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TagViewCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TagsViewController.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TagsViewController.nib new file mode 100644 index 00000000..0300e6fb Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TagsViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ToastView.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ToastView.nib/objects-14.0+.nib new file mode 100644 index 00000000..ffbc75d4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ToastView.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ToastView.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ToastView.nib/runtime.nib new file mode 100644 index 00000000..b7bbbead Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ToastView.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TopActionsCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TopActionsCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..a83773ea Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TopActionsCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TopActionsCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TopActionsCell.nib/runtime.nib new file mode 100644 index 00000000..28ac6dd4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TopActionsCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TrailingIconMenuCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TrailingIconMenuCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..515add4e Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TrailingIconMenuCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TrailingIconMenuCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TrailingIconMenuCell.nib/runtime.nib new file mode 100644 index 00000000..2565b36e Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/TrailingIconMenuCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserLocationCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserLocationCell.nib new file mode 100644 index 00000000..b70a4a95 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserLocationCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserLocationDetailsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserLocationDetailsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..611cdf52 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserLocationDetailsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserLocationDetailsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserLocationDetailsViewController.nib/runtime.nib new file mode 100644 index 00000000..e750513e Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserLocationDetailsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserTrackingView.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserTrackingView.nib/objects-14.0+.nib new file mode 100644 index 00000000..b54bff9e Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserTrackingView.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserTrackingView.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserTrackingView.nib/runtime.nib new file mode 100644 index 00000000..09114196 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/UserTrackingView.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueActionCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueActionCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..7435f875 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueActionCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueActionCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueActionCell.nib/runtime.nib new file mode 100644 index 00000000..7435f875 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueActionCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueBottomActionsCell.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueBottomActionsCell.nib/objects-14.0+.nib new file mode 100644 index 00000000..cc557611 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueBottomActionsCell.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueBottomActionsCell.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueBottomActionsCell.nib/runtime.nib new file mode 100644 index 00000000..3a74479d Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueBottomActionsCell.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueCell.nib new file mode 100644 index 00000000..341c70d4 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueDetailCell.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueDetailCell.nib new file mode 100644 index 00000000..e149f0ac Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueDetailCell.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueDetailsViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueDetailsViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..38f3ce58 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueDetailsViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueDetailsViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueDetailsViewController.nib/runtime.nib new file mode 100644 index 00000000..4aa80682 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueDetailsViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueSelectorViewController.nib/objects-14.0+.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueSelectorViewController.nib/objects-14.0+.nib new file mode 100644 index 00000000..826f1b08 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueSelectorViewController.nib/objects-14.0+.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueSelectorViewController.nib/runtime.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueSelectorViewController.nib/runtime.nib new file mode 100644 index 00000000..05f298e3 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/VenueSelectorViewController.nib/runtime.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/WarningView.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/WarningView.nib new file mode 100644 index 00000000..862d6251 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/WarningView.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/WelcomeScreenViewController.nib b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/WelcomeScreenViewController.nib new file mode 100644 index 00000000..cfaf791c Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/WelcomeScreenViewController.nib differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/_CodeSignature/CodeResources b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/_CodeSignature/CodeResources new file mode 100644 index 00000000..92b39369 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/_CodeSignature/CodeResources @@ -0,0 +1,2077 @@ + + + + + files + + AboutCell.nib + + bZe8A6T1JyHRPAH7gfJhUmEtMXo= + + ActionCell.nib/objects-14.0+.nib + + zUrK7Ebha1RNo1WJsLNk6pMgVC4= + + ActionCell.nib/runtime.nib + + GE5GUE0iijSyuJlbGwA1pfEDV8Q= + + AlertSheet.nib + + hIyMnj6e3O16yTNDzMSmTuOhe4Q= + + Alexandria-Black.ttf + + xcj3+E30kstI+pjPb+phRJy9/Mg= + + Alexandria-Bold.ttf + + JK+TyFg9/8mgL/qm46rllMe7ykk= + + Alexandria-ExtraBold.ttf + + qEKfjUjd5I/g+JOnbG41JRPn0CA= + + Alexandria-ExtraLight.ttf + + vJoalLS0xOk2ZPvvQLyyLHALgpw= + + Alexandria-Light.ttf + + 0ciPmBvbuoCyZLoTWTpk7osgCsE= + + Alexandria-Medium.ttf + + Ac+1OZDzd44Mu5J8EAz+PwTm13U= + + Alexandria-Regular.ttf + + caSGbig2aXQDvKDhK1D3MBDU08s= + + Alexandria-SemiBold.ttf + + Zq8qjQjOu5THnnXtdGJIjwtry6U= + + Alexandria-Thin.ttf + + ahhX0AegYbyFAMbhYXsdN9uO2V4= + + Alexandria-VariableFont_wght.ttf + + 3SiepSvjXQPegC4EOPPqhwT1f64= + + AllFilterViewController.nib + + uo+7anTEgC8thMGIECq5T0tZOFA= + + AmenitiesDetailTableViewCell.nib + + MPfXLYZPgDH3qzfLuMjTq7WVbwo= + + AmenityTableViewCell.nib + + ScXIq8qIUl7bhe+CQPDRtgwcn0M= + + Assets.car + + NC3IH1DTuaSsx8ebY7NTtDJOhak= + + BottomActionsCell.nib/objects-14.0+.nib + + +xas3bM2UQi+4jt+u+PKO1S8PjY= + + BottomActionsCell.nib/runtime.nib + + NJ/r1waH2WqI4/ZfYZDXhnsS/WE= + + BottomNavigationPanelViewController.nib/objects-14.0+.nib + + gxv1ggrgzpL6RU05k/mLQVSVfts= + + BottomNavigationPanelViewController.nib/runtime.nib + + WaqtJtJkflSRSq2fIeI4rDl1qfY= + + Calibrate.mp4 + + x7AvkF4SITxW6PyHsSCwj8FHbP4= + + CalibrateMessage.nib + + Iw0pstGIlXLAbe+l5LDRXHJ5lac= + + CampusActionsCell.nib/objects-14.0+.nib + + E11CLUd3XiLTXYobJgSIAjaVvrs= + + CampusActionsCell.nib/runtime.nib + + E11CLUd3XiLTXYobJgSIAjaVvrs= + + CampusDetailsViewController.nib/objects-14.0+.nib + + YXr4rKaGRMNYBJCwIXn/bENuQ7c= + + CampusDetailsViewController.nib/runtime.nib + + VuNtIUwWYIFb615ZAn1ILN9i8Tg= + + CategoriesCell.nib + + I3t1wBFnadKs3bZL/wGw9JRzbRs= + + CategoriesViewController.nib/objects-14.0+.nib + + r1NxnyHGEuTeiNVz4mqXeXESZkQ= + + CategoriesViewController.nib/runtime.nib + + ONSILBiDcdJjdBydvi6fSvkD/88= + + CategoryCollectionViewCell.nib + + xWYlCC7TpMscCnEZkkoMl+PmJ44= + + CategoryResultCell.nib/objects-14.0+.nib + + yawXA4km7gX9Uz6MBhLmHowUlF8= + + CategoryResultCell.nib/runtime.nib + + TiuziNxkE7uVF5L9H3YSb6hQ3zQ= + + CategoryResultsViewController.nib/objects-14.0+.nib + + alc3jDqKN95vjCW7RY43/bV4AhQ= + + CategoryResultsViewController.nib/runtime.nib + + UnvMvk5KbAho8B2X/lrTy34Ptiw= + + CategoryTableViewCell.nib + + /I/3KSJ3Y1i1RlOInHt3hdrWzDY= + + ChangingFloor.nib + + BEiC7sS8JOir/uNzvzswg4MmvIc= + + ConnectedVenueCell.nib/objects-14.0+.nib + + ZpI0F1EtvVzthZeAy55aNgqZjno= + + ConnectedVenueCell.nib/runtime.nib + + nBlg700+uy8Nv+Gc1MhZ7KUodYI= + + ContactDetailsCell.nib + + WFYIlrTKlf9grzWdkk22acXxEpE= + + DayScheduleCell.nib + + Ell16/41zkGuK9sOpaSfOILM6PU= + + DetailsHeaderCell.nib + + KPFasy9KZw4ggBVD3cx4SBNa7/4= + + DetailsTextCell.nib + + QQlhB/ov1lZ2eei/hP5LUqOw1vs= + + DirectionCell.nib + + pEm3bXIKgB4aWK1/Q7PNCjh9WaU= + + DirectionCollectionViewCell.nib + + c8U68gNxB3lK3/AHRN6Urp5ku1U= + + DirectionsFooterCell.nib + + xjZJzmc/4jQU3sCbEDO6QOKJaZY= + + DirectionsStepper.nib + + iKqPexlwWIlLhhUoxZuHI+QxFXI= + + DirectoryCell.nib + + mepgVmuAMhfiSc+QmNHle8fKbD4= + + DirectoryViewController.nib/objects-14.0+.nib + + yy9vhobUWUuz186kLnPxc25UCtE= + + DirectoryViewController.nib/runtime.nib + + A299qdKjYYm8X19kWlY+Plh2tXo= + + FavoriteCollectionViewCell.nib/objects-14.0+.nib + + v6zCnmV/pRUlXHxMF2Gycl541oU= + + FavoriteCollectionViewCell.nib/runtime.nib + + zHimLjo1qKdRJXDFvfU76tqqyuc= + + FavoriteDetailsViewController.nib + + n7H9xHplfB6YnqtjJN14PvK/z3M= + + FavoriteTableViewCell.nib/objects-14.0+.nib + + ihg64y+Me8Gdqej5Nxuio3Z82T0= + + FavoriteTableViewCell.nib/runtime.nib + + DzXDT0frb/FXLOs+G8D7zT12lHo= + + FavoritesCell.nib + + iCZyJ9nn7MraAdJ7NIN/V1Zrs00= + + FavoritesViewController.nib/objects-14.0+.nib + + PeX3pe05f4lhnRp2z85HaihlDRs= + + FavoritesViewController.nib/runtime.nib + + IpLhiInqjKyERAtCnmbYujuPTts= + + FloorCell.nib + + ln06OSTlwXRHogPk2C+Z1Nk1jFE= + + FloorIndicatorView.nib + + G4+zTmkfDG2GdhRP3gLaT3AOfdM= + + FloorSelectorHeaderView.nib + + QZKYRi9J8ZgeDhknepoBOvnghVs= + + FloorSelectorViewController.nib + + Ff1oSCyiReUfbH7RoMptVXbwwh0= + + GateCell.nib + + ukmfceA9pZq7O79nE0ra5Zf0GNw= + + GateSelectorViewController.nib/objects-14.0+.nib + + /KNJjdBActOj6OZFlJ8eWDLgfYM= + + GateSelectorViewController.nib/runtime.nib + + mhAKv158TN4VBuWfMnXF8BVXKcU= + + Headers/PenNavUI-Swift.h + + Np8YH3pd2Qw59ZU3joUKBnDSVrU= + + Headers/PenNavUI.h + + iZpa4/HlgHfcp7mnoxmgAbck8hA= + + HomeViewController.nib + + wDLAiOCwj9et8o5jeFMlkzvaLD0= + + HoursCell.nib/objects-14.0+.nib + + 9Xmcg0CGg+fF1U8QbqOkWKGGaVo= + + HoursCell.nib/runtime.nib + + mssMBETsxvF0Oea/M3AunxGXI2Q= + + Info.plist + + ypfMBc7aGErxf6HuqcDB+AyWKhg= + + InstructionsView.nib + + t6ZpdYLQWbdla9Ycm3JCILqNTiM= + + LeadingIconMenuCell.nib + + NInatmWgeSQx3+Qd4cFD5qlWJDI= + + LegCell.nib/objects-14.0+.nib + + uplNWrpfELleoZqIHcAcflvSIPs= + + LegCell.nib/runtime.nib + + MRfc/FSFH8s3okBhIWbnKqULpHg= + + MainPanelActionsCell.nib + + aKcFSSGKHfRmwQOORgD4LRBDoPI= + + MainViewController.nib/objects-14.0+.nib + + yVr2b4EkUGH9ftudJNYF41EpAAQ= + + MainViewController.nib/runtime.nib + + VmtjFbtMrvf+FwxBUB4eRHtYnPk= + + Maneuver.ahap + + RY/A7v6MKGck23sUdy+m1Td3/5w= + + MapViewController.nib + + dYmldyp+sNmtqFwTCcxsW9/ChBQ= + + MessageDetailCell.nib + + +fUuuLybU1klhUFAWX63DEP0/8c= + + MessageDetailImageCell.nib + + hliG1/RrQC+AwEc+8BuvjbTMLw8= + + MessageDetailsViewController.nib/objects-14.0+.nib + + e7XJtSwwkc5l5FYmqpyb6ZbsFHE= + + MessageDetailsViewController.nib/runtime.nib + + m3R7ucBFr+7cw3GGl5hdrolaybY= + + Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.abi.json + + xwWpACsDNWEz1BYgXzwymceZEPg= + + Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface + + 8rnwXGAGDrTnm4iG7Lx84UAORVY= + + Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.swiftdoc + + sCej+pqgKa+5nZez27PYQy7Fhnk= + + Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.swiftinterface + + 8rnwXGAGDrTnm4iG7Lx84UAORVY= + + Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.swiftmodule + + i+UndCszUHIMgTZuvJifvZhNLBc= + + Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.abi.json + + xwWpACsDNWEz1BYgXzwymceZEPg= + + Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface + + Wj0bgaoCdQ3ECQXXDzykQPd9uHc= + + Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.swiftdoc + + qKgmAv2mW1qYRMlMJjyFsAkmseM= + + Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.swiftinterface + + Wj0bgaoCdQ3ECQXXDzykQPd9uHc= + + Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.swiftmodule + + KZncBnmPfZ19JN+KVyu7z9K3KV8= + + Modules/module.modulemap + + 9wrTRoSqpGovdteCjVBPpu9hiWM= + + NavigationFeedbackViewController.nib + + 4MLRpklwZ6dHGoUvrmq5NwzeqqE= + + NavigationSearchViewController.nib + + 7C8871LhXmUU3AnGlyAXc3y0dX4= + + NavigationViewController.nib + + q4vpPqvKzzQy7KFKX709nRD65+g= + + ParkingCell.nib + + NxikVtAM+VG03XEJzv5tZFZc4Nk= + + ParkingDetailsView.nib/objects-14.0+.nib + + YatsLf6s7BvyBm6BBv1ZsjXd8kc= + + ParkingDetailsView.nib/runtime.nib + + I5e/qLElNU4BHlW6QseLKisan24= + + ParkingDetailsViewController.nib/objects-14.0+.nib + + WSAnyXp3LWx4g+fsmXcr1B94qgY= + + ParkingDetailsViewController.nib/runtime.nib + + gT9bPxxPWxNBMo8+mBy0GAsXxME= + + ParkingFullAlertSound.wav + + CazQCN35ksob67x/FHewcak4R2Q= + + PenNavUI.momd/PenNavDB.mom + + TB8i+hcOZ2aPYmZEow8Mc+XvCW4= + + PenNavUI.momd/VersionInfo.plist + + EbL5B37A4+snl7reYUwez0zCLEQ= + + PlaceImageCell.nib + + 1uH+sQ3/IFLeruPKueBLS1k1K7o= + + PlaceImagesCell.nib + + xFxetk0DiQ7at2ihOYVGvWlVX4g= + + PoiCell.nib + + rq/Nv7kOPbzUjFo22d7I6hZDzH8= + + PoiDetailsViewController.nib/objects-14.0+.nib + + EEODAFwH7uvjaF3MByzy1PRNSus= + + PoiDetailsViewController.nib/runtime.nib + + lt92tX7MrbEEJYCpCVnt4nFb+ck= + + Poppins-Black.ttf + + hqJLrO1uFl8tZJAephuKbw77pVM= + + Poppins-BlackItalic.ttf + + /Jp485pCbHAVEWSfJ0BmyjgEJ/Y= + + Poppins-Bold.ttf + + y+SMeF8a9rzXMgYJCUBV4plIHak= + + Poppins-BoldItalic.ttf + + xK4sI4Kfg9GIA2Y87v50y0evaTU= + + Poppins-ExtraBold.ttf + + btBAZdZsury0nNAuNC9kWdayWA4= + + Poppins-ExtraBoldItalic.ttf + + SXrncGPUYukn4jiERlmwj+rzGsM= + + Poppins-ExtraLight.ttf + + IMWHpVcTq+VfA2KZs5dHCn6u+78= + + Poppins-ExtraLightItalic.ttf + + aG76Hb6+/VXQ2gt8qerOGG6hqL8= + + Poppins-Italic.ttf + + eF4qYSBHIM/t8JtWiRspXVdmQLc= + + Poppins-Light.ttf + + 7M7uzf6gU+I+4xv1aAb8OfnTLn0= + + Poppins-LightItalic.ttf + + iYqWW9P3NhfolkxAxwew8t75aTE= + + Poppins-Medium.ttf + + XJbRVFpRw54F7g/MDDyQIfFNnDE= + + Poppins-MediumItalic.ttf + + jtWoq6eloz3JiYmSrstCTKir1vA= + + Poppins-Regular.ttf + + RA3ImSUXowbWblXLCv7Qz+m5cbU= + + Poppins-SemiBold.ttf + + Dbu21aj6D57OQV3aSmnIqmWV+6U= + + Poppins-SemiBoldItalic.ttf + + yf8jyjEMFAwXWkbVFubMJh2Ll1E= + + Poppins-Thin.ttf + + tVzmfkaWTxIwSSoW70CmGGM1ZYw= + + Poppins-ThinItalic.ttf + + aXCpMdYqQNbTKkaruR91S4okh3w= + + ReroutingView.nib + + ypSSBoCbAqmgOLz9j/Kipamsexg= + + RouteCell.nib + + NM7DIM3gkt4xPSTtSPJscimlPZY= + + RouteDetailsViewController.nib + + kth+m+i2Tm72OsQgSH/isEN2MJg= + + RouteDirectionsViewController.nib + + Y15GbD/o49PcOGSchcZQHqD7nV8= + + RouteOptionsViewController.nib + + fMsLBabndOouI628Lyo+jXGd+tE= + + RoutePlannerViewController.nib/objects-14.0+.nib + + KNSiEld4kVIaUHR649ZrY+KHmSQ= + + RoutePlannerViewController.nib/runtime.nib + + BUe6Eaffy++DXYnRfyfhlrO2JWQ= + + RouteRecalculating.ahap + + JIEY9Yae3yqcqgAcVXL3z952zys= + + SearchOptions.nib/objects-14.0+.nib + + OB8FSXcc/GatNxlTDWuj6ypEnYs= + + SearchOptions.nib/runtime.nib + + aRBxZz1KWyklF4aIMHfmxrH3XKQ= + + SearchResultCell.nib + + zFPZw9ANxCC0uj/UrH1pQ/Hfxs4= + + SearchViewController.nib + + PLElrinbqQWMorjVr3jtNxcYIqg= + + SharedLocationDetailsViewController.nib/objects-14.0+.nib + + cwWwjq1VoBGq4pYFULr+ed/wfEI= + + SharedLocationDetailsViewController.nib/runtime.nib + + NUgSUV9wqFnsJNAd1oJNAmlX0So= + + SpeechControlView.nib + + bz+h7m4HkniFG0CfqrvRteNQuuU= + + StopCell.nib + + s9+n8N33vq47AIVsL5ZEVxP+HlE= + + StopNavigation.nib + + owV8Qm0Yqlksdkm3wkO/f89fo3s= + + SubpathsStepper.nib/objects-14.0+.nib + + dHP5XAymitCzXzbY9DdF0BKzx3k= + + SubpathsStepper.nib/runtime.nib + + dHP5XAymitCzXzbY9DdF0BKzx3k= + + TagViewCell.nib + + pimkZX2vCeRnBzVCwbhiWctU/Og= + + TagsViewController.nib + + G8HanxF4A6VJ8CRKQiJpfwoBIE0= + + ToastView.nib/objects-14.0+.nib + + XGgmMzlEMzITSHCltL5FDhrxyeo= + + ToastView.nib/runtime.nib + + sEPMWEXrnyGfbSHkS54XxySp4IQ= + + TopActionsCell.nib/objects-14.0+.nib + + E9yQM1CJ+xGgNuxVB0GG+F+4MXs= + + TopActionsCell.nib/runtime.nib + + gS90v/GbnjIsYBD2vMp/qOUQ6tQ= + + TrailingIconMenuCell.nib/objects-14.0+.nib + + XHJpZQvLlq/epTIMBCvehG8tpD0= + + TrailingIconMenuCell.nib/runtime.nib + + n90VgJQienq9FMBbDjZJQwvqmx0= + + UserLocationCell.nib + + N/D4FKBEWZa60vmpBu3HiKzQPv0= + + UserLocationDetailsViewController.nib/objects-14.0+.nib + + +4dLm6a6Wj3HQ6F47d6d5gjGgNk= + + UserLocationDetailsViewController.nib/runtime.nib + + 0rktFyYC3S9vGHp1dPMFAqQs0Ts= + + UserTrackingView.nib/objects-14.0+.nib + + m9IOPTawcXmzRfLkBjt7sKw9CaI= + + UserTrackingView.nib/runtime.nib + + XKMXj4YoAKFFNwnohr9XiJAvycI= + + VenueActionCell.nib/objects-14.0+.nib + + PBQR0G+QrWrRd3bCcDAXGeo4NTk= + + VenueActionCell.nib/runtime.nib + + PBQR0G+QrWrRd3bCcDAXGeo4NTk= + + VenueBottomActionsCell.nib/objects-14.0+.nib + + Uhe65yazMtblwbW3K612Leu9H9g= + + VenueBottomActionsCell.nib/runtime.nib + + Q70rYB6mcC3Y0RUQMoauXioqHWo= + + VenueCell.nib + + xtgUl4MmY3nElrm6MsfMn/x0YGY= + + VenueDetailCell.nib + + yTyADX0MbteelacFK+7boeKFhpU= + + VenueDetailsViewController.nib/objects-14.0+.nib + + zPr7nj3rkCi+6l6aURO6Aav7Cqw= + + VenueDetailsViewController.nib/runtime.nib + + RUt725z88XSldNBU46a4H7yL8/0= + + VenueSelectorViewController.nib/objects-14.0+.nib + + 1GIhbC11bo28lXgKRvyluvn1Wx0= + + VenueSelectorViewController.nib/runtime.nib + + MA4Tlz8HwWXsdwH+a+uX6Txhxj4= + + WarningView.nib + + ilcwRi9EQXOS0Jeqac0GlYGHqJg= + + WelcomeScreenViewController.nib + + vE+pZPJ+BjqJzyqc1JQ/iM5Dp4g= + + ar.lproj/Localizable.strings + + hash + + akaTK5KDKfCZrv/9RwChRg9x21o= + + optional + + + ar.lproj/Localizable.stringsdict + + hash + + T2NOdLVyBTeDsPZK4rHes+8N+Dg= + + optional + + + en.lproj/Localizable.strings + + hash + + elZGSifJeRDTjLznTYgXPi2VkPc= + + optional + + + en.lproj/Localizable.stringsdict + + hash + + 2BYuUMW8ZLKVKm6c853DawodwB8= + + optional + + + + files2 + + AboutCell.nib + + hash2 + + gJ75KubeW9X4L0P7dxm3giiI+v1VD/4lVE1lFgjj7w0= + + + ActionCell.nib/objects-14.0+.nib + + hash2 + + RkU5ju5mabzl/UxFg/SzykuStccUMyFdRvbKpknAjkY= + + + ActionCell.nib/runtime.nib + + hash2 + + /iyYPozgu1jBWCiFoXokKVWpxg+0CZTaZxjFYzSJstY= + + + AlertSheet.nib + + hash2 + + pZGEhkX+6VycMUhvTphzhS7VnvnPfGb8TAyB0y0tZGw= + + + Alexandria-Black.ttf + + hash2 + + q6B1MoeOEWGH58M4g7frwotAUBH0cqYc+JTQ1kvbRO4= + + + Alexandria-Bold.ttf + + hash2 + + uvzpgCPheKfQScAxryWNeoFQLAodqqSbl9OlF2EGAzc= + + + Alexandria-ExtraBold.ttf + + hash2 + + HAGcql0cOzS/3dnGM6/NI+BlnfjJf0af3sfGGKjdvk4= + + + Alexandria-ExtraLight.ttf + + hash2 + + thZD1R5yztu7i8uqCnlQ6CjGs4aiyrdogUSaiefoYz4= + + + Alexandria-Light.ttf + + hash2 + + ApFYhWZixUVgYPR7nghG/lU4S9IJvldB3Q0heKcWE5o= + + + Alexandria-Medium.ttf + + hash2 + + HJ8pllcHpQkCFIX83vrQzhtfDwvqomyUVuLm8Dcs1i8= + + + Alexandria-Regular.ttf + + hash2 + + GjtEsDe537Gx7miC+PUBFnMUcTOw/f7HEiPuFnRzLTA= + + + Alexandria-SemiBold.ttf + + hash2 + + WGC+eB4hAFG25xE3TWR6EULUd0lk35rU5Y5/7gK9mCE= + + + Alexandria-Thin.ttf + + hash2 + + jXDTX2QjOV3wXmCh+XlvLDKs+74CJNAU0BZFsofiovo= + + + Alexandria-VariableFont_wght.ttf + + hash2 + + qlBJYExHURE7pJuStVI6hpZkyHOjrnUoPBW8qhJeHjk= + + + AllFilterViewController.nib + + hash2 + + 1QjCd1XlIPpKi/9QvYUhHwY60BS9rNH/YFGeGaFNkzM= + + + AmenitiesDetailTableViewCell.nib + + hash2 + + PhVkSAi4oLlyVwp0W3e8vYwuPh4iYVlOJSxZb41AoNc= + + + AmenityTableViewCell.nib + + hash2 + + UeddVF6RiUtnCfJqRwnyovbHXh59AmEjZHsihsPtBCE= + + + Assets.car + + hash2 + + jbWuGrFihVtOwJ5XurX0Pwdc661v9GQ+i1LSwBYslbc= + + + BottomActionsCell.nib/objects-14.0+.nib + + hash2 + + i/12wvbKCJFuFT7RLsuJ9C2ytet4KOMy/ARJL9PWkzY= + + + BottomActionsCell.nib/runtime.nib + + hash2 + + zvXn9YYVKm/1hR6vbFs/HydIYEY6xKT+JIncI85C9No= + + + BottomNavigationPanelViewController.nib/objects-14.0+.nib + + hash2 + + J3zgIyci5hy8SyvPAFEz+8/zRsH7hTYzWi0zanzV4hY= + + + BottomNavigationPanelViewController.nib/runtime.nib + + hash2 + + gfY97BvqQV5UQmfI+d2BmMT5NpUTcW2Cr53FiVQ2His= + + + Calibrate.mp4 + + hash2 + + J4ylkI4D84piRcyhG0WETu5or37MWUvqnUB2F8sEcdU= + + + CalibrateMessage.nib + + hash2 + + GkfmXke3DN2rIkzm+Czh1zCqX+0fUcDJGShzXCenjHU= + + + CampusActionsCell.nib/objects-14.0+.nib + + hash2 + + CNW/OUKepR6i8wAE9Bd+mWsEGWGOCaIoN3yeh/Njz7g= + + + CampusActionsCell.nib/runtime.nib + + hash2 + + CNW/OUKepR6i8wAE9Bd+mWsEGWGOCaIoN3yeh/Njz7g= + + + CampusDetailsViewController.nib/objects-14.0+.nib + + hash2 + + 1da1W0Rw78U4+5f+W3AtvTC9a83PqIvDXYTMgn70xGs= + + + CampusDetailsViewController.nib/runtime.nib + + hash2 + + gCBuDRdBXG6+2n/EKEpKWbxpgQDpJcfE9jgQCuYjBuk= + + + CategoriesCell.nib + + hash2 + + fQ5ov+Ic2lA0o1G+c0+yeCbkjlbKqBS1J1f3qkM3dws= + + + CategoriesViewController.nib/objects-14.0+.nib + + hash2 + + pnuwASVpWsT9hs3oqNTcngPXEYmsN1K9G0FcLFWsxLE= + + + CategoriesViewController.nib/runtime.nib + + hash2 + + TZDYalGFZzcjTXh6gBdMGq0f5Wd9vUD49caOKbyGmKE= + + + CategoryCollectionViewCell.nib + + hash2 + + me2eKDcc/XTqrGxKjZLQiWO1pf5nvEQ27tDZGbVH+Y0= + + + CategoryResultCell.nib/objects-14.0+.nib + + hash2 + + KJNGHgwMBzAnGBAE0nBbKSwGczoKZStBc2cbAXbPZ2g= + + + CategoryResultCell.nib/runtime.nib + + hash2 + + qU+aI2GjBLcU9kwUAEAA023gvX63R8fNXkhbobt2STI= + + + CategoryResultsViewController.nib/objects-14.0+.nib + + hash2 + + 1idt8givfc2V4vGU7xsGR9SSTPR/Gax/UDgqSNvraBM= + + + CategoryResultsViewController.nib/runtime.nib + + hash2 + + ODlLpkOb0tfEgqaxx/2q+vuI/5T5AM8QaMlULNcp5Nk= + + + CategoryTableViewCell.nib + + hash2 + + UIN8N4auKJlT1X4jneVUR+DL4lglBHFofyFnG+PWktc= + + + ChangingFloor.nib + + hash2 + + /13Dq65W0/uW/rG4Ws1bEXNn7dMgsl38I6sQsYXz+/w= + + + ConnectedVenueCell.nib/objects-14.0+.nib + + hash2 + + SGwwbr2/LZ8uNs5i2JbiAbidR6V1nV7qylDQhcdECbs= + + + ConnectedVenueCell.nib/runtime.nib + + hash2 + + MP1wkrE2tiEFoP3QOgAXQIsu/tRJPGKMhSixBYSAiMg= + + + ContactDetailsCell.nib + + hash2 + + hM4bcxI15Jw7Au6Qu9dlCjtjc6XpD7m2v0d4dsKYmZo= + + + DayScheduleCell.nib + + hash2 + + XATSpt36LgCI/fXHvebZKzDijPN4GvI9S+7/gp3hP1o= + + + DetailsHeaderCell.nib + + hash2 + + GLjpGhyT3oUYfdpljNsBDc+d+qnVtabcrjQ63T1Um6Q= + + + DetailsTextCell.nib + + hash2 + + Fxdy0ST0rIjRgjWPcl8zSpkm7Y152y0Pw5JdkR+Rthk= + + + DirectionCell.nib + + hash2 + + NnXl3ckQ4mQq+k0RVomr+YobV5ZTMyisGxPjVenFVXU= + + + DirectionCollectionViewCell.nib + + hash2 + + dWDHGjw9qcLESyA9/YNthNRVHmFzkQW2QvjTLufA2eI= + + + DirectionsFooterCell.nib + + hash2 + + ny/L2sFanqBpArXyP+Pip3VqodwssE/h26YQCkqNZek= + + + DirectionsStepper.nib + + hash2 + + ELxyw4DRJX1lIown8KLb6qioXNB3lMGcKSQ2CABcPvU= + + + DirectoryCell.nib + + hash2 + + HFIShMv+vdqncHkLtVHTwNwWUoA1qHTsKlymSh5H7jQ= + + + DirectoryViewController.nib/objects-14.0+.nib + + hash2 + + j5JRoLFobaNhSepvHKbor6Owt8ofqwc+7dSbRElnsxg= + + + DirectoryViewController.nib/runtime.nib + + hash2 + + 65F8swvkQ3mNA42YI0GQXL8lAv+tatgEfYubyfhDqek= + + + FavoriteCollectionViewCell.nib/objects-14.0+.nib + + hash2 + + gvconokWOBiorNoQeNe8HXms8HUN8tNuH1CFixIRdj4= + + + FavoriteCollectionViewCell.nib/runtime.nib + + hash2 + + XrZLcq9+fhaxnzLjQCx3+95ouazqAHeailzz3GJ79fU= + + + FavoriteDetailsViewController.nib + + hash2 + + oLeQrzf9uVQ8JMVsqPyY9j3oxOnX2Puq6FQNHj/cfN8= + + + FavoriteTableViewCell.nib/objects-14.0+.nib + + hash2 + + VMf6ukGtt4aQYbeah4kfH9Wytx3MQXAxr/JqNvSFTjE= + + + FavoriteTableViewCell.nib/runtime.nib + + hash2 + + iO8i9cuy25wbiGyFyXZ0QAb1yR8EB8KlXjyvaq5vp0Q= + + + FavoritesCell.nib + + hash2 + + BzNGnEUbfS3yWjS+VOU0uUa85xgTBIpBfWCvgcLnnE0= + + + FavoritesViewController.nib/objects-14.0+.nib + + hash2 + + iaWfkyo7NIo6wnsTUKp6TPcURmJsji+EKqSOsbwK8mQ= + + + FavoritesViewController.nib/runtime.nib + + hash2 + + IdcQ2AWP2/22syaaupw7nevWwxhgInyWiuMOYxwQiVo= + + + FloorCell.nib + + hash2 + + ks8NxhuF/mNS9ncT0HiJOPbiOjrpMLjEHPLnU7uC7J0= + + + FloorIndicatorView.nib + + hash2 + + cdyRj9uq1l8XEfaWia/e2CET3h0ThZS6V2WMZ5qOuVs= + + + FloorSelectorHeaderView.nib + + hash2 + + bX7WT6FJy8Wa6hM4r44/ZV2LTUBCMGZWM4S9EBMtU/I= + + + FloorSelectorViewController.nib + + hash2 + + Ic5wyPbIfJDIpxT9+T3QCzniPZvs71jZ4SSadtcO2Cw= + + + GateCell.nib + + hash2 + + olF5v2vFrsFzPFTAHwvMcqSyXY0R2RWnw7SoFnt35Lw= + + + GateSelectorViewController.nib/objects-14.0+.nib + + hash2 + + SScLnzBBvuPx5IlV0sT21AspVlZlLSzhQ0nVepYJNMg= + + + GateSelectorViewController.nib/runtime.nib + + hash2 + + CRjm9BPkYBNxDBsUSC2JfJYJItR1BRwj7/cBbyp+Jl0= + + + Headers/PenNavUI-Swift.h + + hash2 + + umbQ7JRlbevw9a37R/J2xStr/AeLduhy/dW/K9oljU4= + + + Headers/PenNavUI.h + + hash2 + + /A9ZKgv5Dp5qD82jqjV9ZmbguWIUgxUkvPsdYDCAliY= + + + HomeViewController.nib + + hash2 + + wnGO3zM6czhuVZfwbgBcayf0QLUc6XJYiXMpbHCGkxc= + + + HoursCell.nib/objects-14.0+.nib + + hash2 + + ZIMsyvNvFQuglEp89vCAQWRJFPoEydq69oYu9bI/UFg= + + + HoursCell.nib/runtime.nib + + hash2 + + rzohOa0BW6K2PEBZ1otnjbwZ1CQLY2/oHWQJx55fFXg= + + + InstructionsView.nib + + hash2 + + iTx0wfZpQCHTP8/r9tGXI9AU4EOJNbTmpODjbGMcjCU= + + + LeadingIconMenuCell.nib + + hash2 + + bW6hcaCglwWzFtSoU2HUF5YieFKa3j1DxTT9JQNSX4U= + + + LegCell.nib/objects-14.0+.nib + + hash2 + + +fG4LfgrQIGtFPK1Q8OJO4gPF0upjXguyPtCbThvvi4= + + + LegCell.nib/runtime.nib + + hash2 + + lWMew0JkKFjFxAJv9+q89EPM/D0B98j5t91ZPAfPCUg= + + + MainPanelActionsCell.nib + + hash2 + + 4YF3cYn1slwMXVPIVAAk3kuokAGtAkYr8WqKpfOLtlI= + + + MainViewController.nib/objects-14.0+.nib + + hash2 + + wh65AU19Gv8ba9ueIn1zmLg1Skdi0XIIssTP1WDIzk4= + + + MainViewController.nib/runtime.nib + + hash2 + + ByGcbJhX6CYjDKMmk/SPiZOxSzt1VlWWm3Kg07UpM6E= + + + Maneuver.ahap + + hash2 + + rr9YhO3h0E3bDK+DW2eDf79DpWh4youn5nhM6EmMI5M= + + + MapViewController.nib + + hash2 + + 6BLKEyQryD40CqT7iaji70I/A3MK6domjtrgwM7a5SE= + + + MessageDetailCell.nib + + hash2 + + fvz8usaIE5GZxLmvTqUkpgdEL2u/Mqqs5NC80C6JQ6g= + + + MessageDetailImageCell.nib + + hash2 + + S48RzYW4CGqAcnPMaZbCOc3SguUAmeuFQczHMybvM3s= + + + MessageDetailsViewController.nib/objects-14.0+.nib + + hash2 + + pz25695+wE30tX+b0R7Gnkt2zunLTjiqph/yXMPUrAI= + + + MessageDetailsViewController.nib/runtime.nib + + hash2 + + bWZINQ4W1IHQZeJGDM0CFXVZn7NcQA8MZhpc5gokQoY= + + + Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.abi.json + + hash2 + + bFrzAGMWwbCiZAxNKzNqOeSiggdLmSWx9pftyz1nuwA= + + + Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.private.swiftinterface + + hash2 + + lm7hJqq1cmXHDAm2Wq8JNIrxS1pxNpxebKVvfHxz1lI= + + + Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.swiftdoc + + hash2 + + Wv43TY/ihahPYkRk2BNbqOqcq/GUQ5MUFGHOQShIAGc= + + + Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.swiftinterface + + hash2 + + lm7hJqq1cmXHDAm2Wq8JNIrxS1pxNpxebKVvfHxz1lI= + + + Modules/PenNavUI.swiftmodule/arm64-apple-ios-simulator.swiftmodule + + hash2 + + OhonbnhuZI3dKkuucOhhFdI3VVapAPBqI3aI2zfSXOA= + + + Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.abi.json + + hash2 + + bFrzAGMWwbCiZAxNKzNqOeSiggdLmSWx9pftyz1nuwA= + + + Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.private.swiftinterface + + hash2 + + NGHa7LMCU5Ql6VYeUl1bxIHp9xvicyEC3bDqgJKLWIo= + + + Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.swiftdoc + + hash2 + + EjGDuuY0XTxtPOhI1Y2EbZLCDi4xGBFgTZ3A8jN76RI= + + + Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.swiftinterface + + hash2 + + NGHa7LMCU5Ql6VYeUl1bxIHp9xvicyEC3bDqgJKLWIo= + + + Modules/PenNavUI.swiftmodule/x86_64-apple-ios-simulator.swiftmodule + + hash2 + + 8EpVbRwHq8uSVo0SjgKNUY3hoHvOP26z6/g6i6G1qJ0= + + + Modules/module.modulemap + + hash2 + + mslMOLy//3KzlA7nkDqgrLLS9/oRXNmcOyUolS+WdOU= + + + NavigationFeedbackViewController.nib + + hash2 + + MxbLKejSIEhLZ+fk2PbpuWZGfu4br22j6h5tVQBNYfI= + + + NavigationSearchViewController.nib + + hash2 + + yQaHVk79W1TKvryNpPf7LQd6IbOfO85yUf1QnkdAK54= + + + NavigationViewController.nib + + hash2 + + Kii3HMrUN8B5u3Lzq48LeQuXqOLmW7m5laYlPHDTkSo= + + + ParkingCell.nib + + hash2 + + VIB97GJAfiLtzNvu2Bj4fnShuLxKfpkdug9jvlVAddI= + + + ParkingDetailsView.nib/objects-14.0+.nib + + hash2 + + taTkP6xp0TPHyxMoGXMV8Nv/snapNrQ+9PORsic3is8= + + + ParkingDetailsView.nib/runtime.nib + + hash2 + + 4ImwG2yvf2l6sv/5kzQODGxaDe/HA2zFFV1tbtelHMs= + + + ParkingDetailsViewController.nib/objects-14.0+.nib + + hash2 + + fgXZjBONT8HJVfEw240f5lC8TPh4+Qrz8Arst1bbSIE= + + + ParkingDetailsViewController.nib/runtime.nib + + hash2 + + jNqgduGxXMrAgPEbVJ/UOdzC5bfyBzhol2X2uHVD57I= + + + ParkingFullAlertSound.wav + + hash2 + + N4QOIj/w7hbgNkCos/aCscGO4trGhv12d2HPMnSoooc= + + + PenNavUI.momd/PenNavDB.mom + + hash2 + + TjqlRQ9SFXKM4xYDTLQglQ5Zqc2j6SGQ8EkIbFx//2g= + + + PenNavUI.momd/VersionInfo.plist + + hash2 + + N6+RMFcG8KhNwLCstHoaRk7jCncjCWDHz2tVfFsHGps= + + + PlaceImageCell.nib + + hash2 + + MVNigHFYfE6Pwnta9n1dtcr7ZSnl5xFO+Er85NGzb18= + + + PlaceImagesCell.nib + + hash2 + + tJf+iZf0Su405MXgotBTj69g4FsoLPldtPSJ+wgcUfE= + + + PoiCell.nib + + hash2 + + 7syBmo02fu3GRJ8/m/RyIi/RJAwAslULyOuUqkWfsQg= + + + PoiDetailsViewController.nib/objects-14.0+.nib + + hash2 + + CTcEotRUbitzRLwHAG/4cmD8LXn+VZTYq2XM0vf3Trg= + + + PoiDetailsViewController.nib/runtime.nib + + hash2 + + 7d9csmU/Mz81J+ScQgclP4lLdTJ/nI2jMvHE6EmDCsw= + + + Poppins-Black.ttf + + hash2 + + JTVAbt0qpVJCMpcFypQYoH06Ua4oytyj7lvsrmGqiYc= + + + Poppins-BlackItalic.ttf + + hash2 + + guqjFXmMmAhSy3grPcga3rOcFpA6GkbZblkX95Jmkp0= + + + Poppins-Bold.ttf + + hash2 + + IQkz+xu06EbTfvAMksrmNqw1YzEyzyFXx6yHnyf4IGg= + + + Poppins-BoldItalic.ttf + + hash2 + + R4/xZdTyCLQZY/l3T9opNYqQKtKQJtSGqUpQuy6begU= + + + Poppins-ExtraBold.ttf + + hash2 + + lZnt82p8QOdSzR+8MI9TUcWargs71vpb+9qmHBb4zuE= + + + Poppins-ExtraBoldItalic.ttf + + hash2 + + Iw4Hbz6quKpbKVFSM23UU6xzFWmx9ytKqDbw7dbN/nQ= + + + Poppins-ExtraLight.ttf + + hash2 + + Kkif/zZog7Dl3xB/b01a8lVHI7YUlcVQnUw/YuA4vEc= + + + Poppins-ExtraLightItalic.ttf + + hash2 + + 4zH4VuUt2rkWqDvqRJ/akVYfqyK+93bIqBe82Ycc4Mk= + + + Poppins-Italic.ttf + + hash2 + + 8FjHhdhV1aYCDu5pYuukplOocebwfKvpMFBOhXt2zLc= + + + Poppins-Light.ttf + + hash2 + + fxXZpJvGyotJrJlbvDYGW0urDtn205SkxJ2PmshWcsI= + + + Poppins-LightItalic.ttf + + hash2 + + LU+y+o5ZcD6vP9dI/boy/yduiBAVkSFU1//Vwkugr9Y= + + + Poppins-Medium.ttf + + hash2 + + RYcCYKKfp9Pg7/jN2RmT+0qc5MztPXtyw+99JDgL/C0= + + + Poppins-MediumItalic.ttf + + hash2 + + IxxcFoIM0lB9JHFuQbzguvr+cXVBDmGXtWIcnO2vhP8= + + + Poppins-Regular.ttf + + hash2 + + JCXrvAIb/dGP5V7b7rFTnSKiFyEsFEMKfU11JmozO7w= + + + Poppins-SemiBold.ttf + + hash2 + + HWZdW3WpUABAsswgHCsHr1+spyKDctxvRXLS1bIpEJc= + + + Poppins-SemiBoldItalic.ttf + + hash2 + + yxEjl5UcM9ZOkIzsXPnzTR7MLBPwR/mAYfg0/EqW5JA= + + + Poppins-Thin.ttf + + hash2 + + YJrj8FfTklB/7ZAYjPb51fhbtZ9hPA3ssuzJ9RMSpc0= + + + Poppins-ThinItalic.ttf + + hash2 + + Si6LynsCew+MwCGLgOyYI8o7mNSgbxdlEzewH7hfjt4= + + + ReroutingView.nib + + hash2 + + +yo+HaBPc9CV2ZST6nOG6qTZaF7VrHBgTILBM+6Rpds= + + + RouteCell.nib + + hash2 + + PqHXwcC2cIu/0vWYWhERHsT45LI2Vgjl/i1Y0N5f53s= + + + RouteDetailsViewController.nib + + hash2 + + aaSY4qacsokcmg2kSrRy4k5c7PhYPWMyMGdlEqgecu8= + + + RouteDirectionsViewController.nib + + hash2 + + 2+kUvcK2N5xc1HkDyr9s7Laj1gC2UUotxvgpbzzSogk= + + + RouteOptionsViewController.nib + + hash2 + + jJ0ug2DU8SMPdozJymXHltH+0X3a1XWcydTfOUbLitg= + + + RoutePlannerViewController.nib/objects-14.0+.nib + + hash2 + + sqmx82yx89dNUTaxh62IauExt+F1Q3Lp9gFqyAtTqCI= + + + RoutePlannerViewController.nib/runtime.nib + + hash2 + + eTPK9JMQlv88OEfcU5B9lFTPXPRfc9iyR6kggZTOBuI= + + + RouteRecalculating.ahap + + hash2 + + NUqTc9ef46H+z+eFZvHURCRcPpAS5XezOpAlIyfZIGA= + + + SearchOptions.nib/objects-14.0+.nib + + hash2 + + JnPmSVLU4uoktXu1gPBn4+84jx311zIukX3nezzzpQM= + + + SearchOptions.nib/runtime.nib + + hash2 + + 2wCIHo9nIbyih8vuOpqcYsF7JJcRIpXEMaMxewBDcLU= + + + SearchResultCell.nib + + hash2 + + nTdBJTx/0QYlgV+hQnKCyphLbFVJITCgWTEi/sN06Vw= + + + SearchViewController.nib + + hash2 + + uH7k92G5QyKLrvRBvgb7HWpCFtLPrBJUqYH1h2OzkqI= + + + SharedLocationDetailsViewController.nib/objects-14.0+.nib + + hash2 + + o0N3VglyNr0soOsysZAZNAQvC37CFx5I3oEwsdwphJ8= + + + SharedLocationDetailsViewController.nib/runtime.nib + + hash2 + + MsdGS3NDpUTnqe+YOMACUiZKq+z5h4rsoA+3wB+Ojx8= + + + SpeechControlView.nib + + hash2 + + YNOLTO+Vyt2X3sOYyrdNtBcUB/yPQ1Z9F9NRu9yteYs= + + + StopCell.nib + + hash2 + + YCIDjTlP/p5htpxnRYIFHi9K0HssUT8Ddne1vuZxUl0= + + + StopNavigation.nib + + hash2 + + D2kcQM9n67NBOm6bUUBXqq14TcUNihwHLRlGT5DiTAE= + + + SubpathsStepper.nib/objects-14.0+.nib + + hash2 + + iP4sNHDBByFR5r0zTBPnIOwRX9v0zIj3lbffH/1/oho= + + + SubpathsStepper.nib/runtime.nib + + hash2 + + iP4sNHDBByFR5r0zTBPnIOwRX9v0zIj3lbffH/1/oho= + + + TagViewCell.nib + + hash2 + + QK1/nJb0v+1IT6txTNiEmH/WVoMY5ycJlo7/I21SUd0= + + + TagsViewController.nib + + hash2 + + t4d/jf+/ztjiJCqWFuyMsmYenCK9WWvKmN09h1ERx/A= + + + ToastView.nib/objects-14.0+.nib + + hash2 + + UaylV4q13+arjrOj9OY3I/WHWDIBwKhdxdxk0zLkMyM= + + + ToastView.nib/runtime.nib + + hash2 + + IVxvHEgYTkSmESQvfYcfxV+FqBBHpS1RxxG1AyX5RZc= + + + TopActionsCell.nib/objects-14.0+.nib + + hash2 + + aCCoImqkS8pC1SJBLSIWXbpCQ3lLMl4BnZ5kzH4GbJQ= + + + TopActionsCell.nib/runtime.nib + + hash2 + + R4t2jsVwYiJ40vXmQ6VUs3j7PxlAwoTCWmRNS6squ7M= + + + TrailingIconMenuCell.nib/objects-14.0+.nib + + hash2 + + Gnrrz70uwRrcibrojaZ1Nn9u8TSLnvGnVb+jJ95Z72Y= + + + TrailingIconMenuCell.nib/runtime.nib + + hash2 + + B0XSxsGYByU3k95ouCvx5ENGfWptrFr11tlZId/X2Mw= + + + UserLocationCell.nib + + hash2 + + NsOJKleeSGNVoLdDLrZJ0nzwB6k+f/0Dqa6XRs0r3ug= + + + UserLocationDetailsViewController.nib/objects-14.0+.nib + + hash2 + + 3Mi4Fo9+lpmqQmP+0RL4CA1aquA80xizbxSwPlit1ZE= + + + UserLocationDetailsViewController.nib/runtime.nib + + hash2 + + RFslqGYNym7rDDmmAU5vllALO1aOd6x04TrQYjX+84o= + + + UserTrackingView.nib/objects-14.0+.nib + + hash2 + + P2hXPBJha6UAk+4a32wwFZ4DigSrIo+fKQMbPJx/t0U= + + + UserTrackingView.nib/runtime.nib + + hash2 + + RtJbrdyWvuzWDXa59i2m84AdjGPH9W0KqpPb8Ri7y7Q= + + + VenueActionCell.nib/objects-14.0+.nib + + hash2 + + puzeP2WHvRpichAKBFkx09+SabkKhINp1cht2PpLOHU= + + + VenueActionCell.nib/runtime.nib + + hash2 + + puzeP2WHvRpichAKBFkx09+SabkKhINp1cht2PpLOHU= + + + VenueBottomActionsCell.nib/objects-14.0+.nib + + hash2 + + Z6Fzmm/2dmytLZWcMhOIKoZKf0RLpaFOlgSYqf7txw4= + + + VenueBottomActionsCell.nib/runtime.nib + + hash2 + + yrAf5FKJo1sYxWFyK8K0q2PEjgg33lbIG/4dKidrRLA= + + + VenueCell.nib + + hash2 + + ELpJSm27fF5BaoX7G3XM1b9qkmXShiyWb1huwEl9lbs= + + + VenueDetailCell.nib + + hash2 + + SkgG9PsLCdjaXVQETtonh5vEeVxaNsfnw2D/IgyjFls= + + + VenueDetailsViewController.nib/objects-14.0+.nib + + hash2 + + 4WxdPEEIlcTpmOxXMhj1KiecurSRinKR2QDa16C9Z1Q= + + + VenueDetailsViewController.nib/runtime.nib + + hash2 + + jA6bNmHFT85tx0E0VKucyspry4udWTI8I4pO78YG3gA= + + + VenueSelectorViewController.nib/objects-14.0+.nib + + hash2 + + +W4lI18rPj/BnEAxbVg1SBvsEbL57shVPoq2q7KTzEU= + + + VenueSelectorViewController.nib/runtime.nib + + hash2 + + DkfR//mxPlsfGMXP9VGw6pEPplFt3ta4hdYVB/ofhLw= + + + WarningView.nib + + hash2 + + aVwOUHip7Np7OgK4zQOuze88/0CERiFWFiYnmz0oPTg= + + + WelcomeScreenViewController.nib + + hash2 + + iOlK2q4GgT4SI8HQPoZjYQMoV+0MFxiM+E7dEaFumA0= + + + ar.lproj/Localizable.strings + + hash2 + + ETLU0m0ojOYumiPzcO9HTncWPvy4eFdKtX9ij52eOzA= + + optional + + + ar.lproj/Localizable.stringsdict + + hash2 + + g6P+GbaQhBsmSrzmcm1GTOq1vwMjl7Zb5GRH6MOd3+w= + + optional + + + en.lproj/Localizable.strings + + hash2 + + NLwx3AVZfDPFXc86t35pVwAL09sh8fRgDTUhz/kI7sY= + + optional + + + en.lproj/Localizable.stringsdict + + hash2 + + zUWlM1HHmivhk3tmKPd0tMxGs1CiWNO32PnLmKH6LNE= + + optional + + + + rules + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^version.plist$ + + + rules2 + + .*\.dSYM($|/) + + weight + 11 + + ^(.*/)?\.DS_Store$ + + omit + + weight + 2000 + + ^.* + + ^.*\.lproj/ + + optional + + weight + 1000 + + ^.*\.lproj/locversion.plist$ + + omit + + weight + 1100 + + ^Base\.lproj/ + + weight + 1010 + + ^Info\.plist$ + + omit + + weight + 20 + + ^PkgInfo$ + + omit + + weight + 20 + + ^embedded\.provisionprofile$ + + weight + 20 + + ^version\.plist$ + + weight + 20 + + + + diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ar.lproj/Localizable.strings b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ar.lproj/Localizable.strings new file mode 100644 index 00000000..15e88eab Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ar.lproj/Localizable.strings differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ar.lproj/Localizable.stringsdict b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ar.lproj/Localizable.stringsdict new file mode 100644 index 00000000..36d9283d Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/ar.lproj/Localizable.stringsdict differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/en.lproj/Localizable.strings b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/en.lproj/Localizable.strings new file mode 100644 index 00000000..ccdd4f96 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/en.lproj/Localizable.strings differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/en.lproj/Localizable.stringsdict b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/en.lproj/Localizable.stringsdict new file mode 100644 index 00000000..211411b7 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/PenNavUI.framework/en.lproj/Localizable.stringsdict differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/dSYMs/PenNavUI.framework.dSYM/Contents/Info.plist b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/dSYMs/PenNavUI.framework.dSYM/Contents/Info.plist new file mode 100644 index 00000000..9ac0b8fb --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/dSYMs/PenNavUI.framework.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.com.penguinin.PenNavUI + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 1.0 + CFBundleVersion + 4.0.0 + + diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/DWARF/PenNavUI b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/DWARF/PenNavUI new file mode 100644 index 00000000..bcc1d615 Binary files /dev/null and b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/DWARF/PenNavUI differ diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/Relocations/aarch64/PenNavUI.yml b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/Relocations/aarch64/PenNavUI.yml new file mode 100644 index 00000000..140f152d --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/Relocations/aarch64/PenNavUI.yml @@ -0,0 +1,10091 @@ +--- +triple: 'arm64-apple-darwin' +binary-path: '/Users/fawzialrifai/Library/Developer/Xcode/DerivedData/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm/Build/Intermediates.noindex/ArchiveIntermediates/PenNavDemo/InstallationBuildProductsLocation/Library/Frameworks/PenNavUI.framework/PenNavUI' +relocations: + - { offset: 0x869A9, size: 0x8, addend: 0x0, symName: _PenNavUIVersionString, symObjAddr: 0x0, symBinAddr: 0x2AA780, symSize: 0x0 } + - { offset: 0x869DE, size: 0x8, addend: 0x0, symName: _PenNavUIVersionNumber, symObjAddr: 0x30, symBinAddr: 0x2AA7B0, symSize: 0x0 } + - { offset: 0x86A37, size: 0x8, addend: 0x0, symName: ___swift_memcpy4_4, symObjAddr: 0x0, symBinAddr: 0x1DE8, symSize: 0xC } + - { offset: 0x86A4B, size: 0x8, addend: 0x0, symName: ___swift_noop_void_return, symObjAddr: 0xC, symBinAddr: 0x1DF4, symSize: 0x4 } + - { offset: 0x86A5F, size: 0x8, addend: 0x0, symName: '_$sSo16os_unfair_lock_sVwet', symObjAddr: 0x10, symBinAddr: 0x1DF8, symSize: 0x20 } + - { offset: 0x86A73, size: 0x8, addend: 0x0, symName: '_$sSo16os_unfair_lock_sVwst', symObjAddr: 0x30, symBinAddr: 0x1E18, symSize: 0x28 } + - { offset: 0x86A87, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_8, symObjAddr: 0x6C, symBinAddr: 0x1E54, symSize: 0xC } + - { offset: 0x86A9B, size: 0x8, addend: 0x0, symName: ___swift_memcpy1_1, symObjAddr: 0x110, symBinAddr: 0x1EF8, symSize: 0xC } + - { offset: 0x86AAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwet', symObjAddr: 0x11C, symBinAddr: 0x1F04, symSize: 0x90 } + - { offset: 0x86AC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwst', symObjAddr: 0x1AC, symBinAddr: 0x1F94, symSize: 0xB0 } + - { offset: 0x86AD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwug', symObjAddr: 0x25C, symBinAddr: 0x2044, symSize: 0x8 } + - { offset: 0x86AEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwup', symObjAddr: 0x264, symBinAddr: 0x204C, symSize: 0x4 } + - { offset: 0x86AFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwui', symObjAddr: 0x268, symBinAddr: 0x2050, symSize: 0x8 } + - { offset: 0x86B13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOMa', symObjAddr: 0x270, symBinAddr: 0x2058, symSize: 0x10 } + - { offset: 0x86B27, size: 0x8, addend: 0x0, symName: ___swift_memcpy32_8, symObjAddr: 0x310, symBinAddr: 0x20F8, symSize: 0xC } + - { offset: 0x86CB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSHAASQWb', symObjAddr: 0xA48, symBinAddr: 0x27BC, symSize: 0x4 } + - { offset: 0x86CCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOACSQAAWl', symObjAddr: 0xA4C, symBinAddr: 0x27C0, symSize: 0x40 } + - { offset: 0x86CDF, size: 0x8, addend: 0x0, symName: '_$sSo18CALayerCornerCurveas20_SwiftNewtypeWrapperSCSYWb', symObjAddr: 0xD5C, symBinAddr: 0x2A30, symSize: 0x2C } + - { offset: 0x86CF3, size: 0x8, addend: 0x0, symName: '_$sSo18CALayerCornerCurveas20_SwiftNewtypeWrapperSCs35_HasCustomAnyHashableRepresentationPWb', symObjAddr: 0xD88, symBinAddr: 0x2A5C, symSize: 0x2C } + - { offset: 0x86D33, size: 0x8, addend: 0x0, symName: '_$sSo18CALayerCornerCurveaSHSCSQWb', symObjAddr: 0x13BC, symBinAddr: 0x3090, symSize: 0x2C } + - { offset: 0x86D47, size: 0x8, addend: 0x0, symName: '_$sSo13CGPathElementVwet', symObjAddr: 0x13E8, symBinAddr: 0x30BC, symSize: 0x44 } + - { offset: 0x86D5B, size: 0x8, addend: 0x0, symName: '_$sSo13CGPathElementVwst', symObjAddr: 0x142C, symBinAddr: 0x3100, symSize: 0x3C } + - { offset: 0x86D6F, size: 0x8, addend: 0x0, symName: ___swift_memcpy48_8, symObjAddr: 0x1594, symBinAddr: 0x3268, symSize: 0x14 } + - { offset: 0x86D83, size: 0x8, addend: 0x0, symName: '_$sSo17CGAffineTransformVwet', symObjAddr: 0x15A8, symBinAddr: 0x327C, symSize: 0x20 } + - { offset: 0x86D97, size: 0x8, addend: 0x0, symName: '_$sSo17CGAffineTransformVwst', symObjAddr: 0x15C8, symBinAddr: 0x329C, symSize: 0x38 } + - { offset: 0x86DAB, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefaSHSCSQWb', symObjAddr: 0x1614, symBinAddr: 0x32E8, symSize: 0x2C } + - { offset: 0x86DBF, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefaSHSCSQWb', symObjAddr: 0x1640, symBinAddr: 0x3314, symSize: 0x2C } + - { offset: 0x86DD3, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefaSHSCSQWb', symObjAddr: 0x166C, symBinAddr: 0x3340, symSize: 0x2C } + - { offset: 0x86DE7, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefaSHSCSQWb', symObjAddr: 0x1698, symBinAddr: 0x336C, symSize: 0x2C } + - { offset: 0x86DFB, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyas20_SwiftNewtypeWrapperSCSYWb', symObjAddr: 0x16C4, symBinAddr: 0x3398, symSize: 0x2C } + - { offset: 0x86E0F, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyas20_SwiftNewtypeWrapperSCs35_HasCustomAnyHashableRepresentationPWb', symObjAddr: 0x16F0, symBinAddr: 0x33C4, symSize: 0x2C } + - { offset: 0x86E23, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyas20_SwiftNewtypeWrapperSCSYWb', symObjAddr: 0x171C, symBinAddr: 0x33F0, symSize: 0x2C } + - { offset: 0x86E37, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyas20_SwiftNewtypeWrapperSCs35_HasCustomAnyHashableRepresentationPWb', symObjAddr: 0x1748, symBinAddr: 0x341C, symSize: 0x2C } + - { offset: 0x86E4B, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas20_SwiftNewtypeWrapperSCSYWb', symObjAddr: 0x1774, symBinAddr: 0x3448, symSize: 0x2C } + - { offset: 0x86E5F, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas20_SwiftNewtypeWrapperSCs35_HasCustomAnyHashableRepresentationPWb', symObjAddr: 0x17A0, symBinAddr: 0x3474, symSize: 0x2C } + - { offset: 0x86E73, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSHSCSQWb', symObjAddr: 0x17CC, symBinAddr: 0x34A0, symSize: 0x2C } + - { offset: 0x86E87, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x17F8, symBinAddr: 0x34CC, symSize: 0x2C } + - { offset: 0x86E9B, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaSHSCSQWb', symObjAddr: 0x1824, symBinAddr: 0x34F8, symSize: 0x2C } + - { offset: 0x86EAF, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x1850, symBinAddr: 0x3524, symSize: 0x2C } + - { offset: 0x86EC3, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x187C, symBinAddr: 0x3550, symSize: 0x2C } + - { offset: 0x86ED7, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x18A8, symBinAddr: 0x357C, symSize: 0x2C } + - { offset: 0x86EEB, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x18D4, symBinAddr: 0x35A8, symSize: 0x2C } + - { offset: 0x86EFF, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyaSHSCSQWb', symObjAddr: 0x1900, symBinAddr: 0x35D4, symSize: 0x2C } + - { offset: 0x86F13, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyaSHSCSQWb', symObjAddr: 0x192C, symBinAddr: 0x3600, symSize: 0x2C } + - { offset: 0x86FC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateO5imageSo7UIImageCvg', symObjAddr: 0x390, symBinAddr: 0x2178, symSize: 0x1E8 } + - { offset: 0x87122, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x5F8, symBinAddr: 0x23E0, symSize: 0x40 } + - { offset: 0x871B8, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas21_ObjectiveCBridgeableSCsACP09_bridgeToC1C01_C5CTypeQzyFTW', symObjAddr: 0x640, symBinAddr: 0x2420, symSize: 0x8 } + - { offset: 0x87235, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas21_ObjectiveCBridgeableSCsACP016_forceBridgeFromC1C_6resulty01_C5CTypeQz_xSgztFZTW', symObjAddr: 0x648, symBinAddr: 0x2428, symSize: 0x50 } + - { offset: 0x8729E, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas21_ObjectiveCBridgeableSCsACP024_conditionallyBridgeFromC1C_6resultSb01_C5CTypeQz_xSgztFZTW', symObjAddr: 0x698, symBinAddr: 0x2478, symSize: 0x54 } + - { offset: 0x872F8, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas21_ObjectiveCBridgeableSCsACP026_unconditionallyBridgeFromC1Cyx01_C5CTypeQzSgFZTW', symObjAddr: 0x6EC, symBinAddr: 0x24CC, symSize: 0x24 } + - { offset: 0x87359, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas35_HasCustomAnyHashableRepresentationSCsACP03_todeF0s0eF0VSgyFTW', symObjAddr: 0xC44, symBinAddr: 0x2918, symSize: 0x94 } + - { offset: 0x87375, size: 0x8, addend: 0x0, symName: '_$sSo18CALayerCornerCurveas35_HasCustomAnyHashableRepresentationSCsACP03_toefG0s0fG0VSgyFTW', symObjAddr: 0xCD8, symBinAddr: 0x29AC, symSize: 0x84 } + - { offset: 0x87391, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyas35_HasCustomAnyHashableRepresentationSCsACP03_toghI0s0hI0VSgyFTW', symObjAddr: 0xDF4, symBinAddr: 0x2AC8, symSize: 0x84 } + - { offset: 0x873AD, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyas35_HasCustomAnyHashableRepresentationSCsACP03_toefG0s0fG0VSgyFTW', symObjAddr: 0xEBC, symBinAddr: 0x2B90, symSize: 0x84 } + - { offset: 0x873D8, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSHSCSH9hashValueSivgTW', symObjAddr: 0x11E0, symBinAddr: 0x2EB4, symSize: 0x8 } + - { offset: 0x8742D, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x11E8, symBinAddr: 0x2EBC, symSize: 0x38 } + - { offset: 0x87482, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSHSCSH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1220, symBinAddr: 0x2EF4, symSize: 0x1C } + - { offset: 0x874D7, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0x1324, symBinAddr: 0x2FF8, symSize: 0x14 } + - { offset: 0x87551, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x578, symBinAddr: 0x2360, symSize: 0x14 } + - { offset: 0x875CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSHAASH9hashValueSivgTW', symObjAddr: 0x58C, symBinAddr: 0x2374, symSize: 0x44 } + - { offset: 0x87693, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5D0, symBinAddr: 0x23B8, symSize: 0x28 } + - { offset: 0x8779E, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0x918, symBinAddr: 0x268C, symSize: 0x4C } + - { offset: 0x877BA, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0x964, symBinAddr: 0x26D8, symSize: 0x4C } + - { offset: 0x877D6, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0x9B0, symBinAddr: 0x2724, symSize: 0x4C } + - { offset: 0x877F2, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0x9FC, symBinAddr: 0x2770, symSize: 0x4C } + - { offset: 0x8780E, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaSHSCSH9hashValueSivgTW', symObjAddr: 0xB00, symBinAddr: 0x2800, symSize: 0x3C } + - { offset: 0x8782A, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xB3C, symBinAddr: 0x283C, symSize: 0x48 } + - { offset: 0x87846, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0xBEC, symBinAddr: 0x28C0, symSize: 0x4C } + - { offset: 0x87862, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefaSHSCSH9hashValueSivgTW', symObjAddr: 0xF40, symBinAddr: 0x2C14, symSize: 0x3C } + - { offset: 0x8787E, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xF7C, symBinAddr: 0x2C50, symSize: 0x48 } + - { offset: 0x8789A, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefaSHSCSH9hashValueSivgTW', symObjAddr: 0xFD0, symBinAddr: 0x2CA4, symSize: 0x3C } + - { offset: 0x878B6, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x100C, symBinAddr: 0x2CE0, symSize: 0x48 } + - { offset: 0x878D2, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefaSHSCSH9hashValueSivgTW', symObjAddr: 0x1060, symBinAddr: 0x2D34, symSize: 0x3C } + - { offset: 0x878EE, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x109C, symBinAddr: 0x2D70, symSize: 0x48 } + - { offset: 0x8790A, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefaSHSCSH9hashValueSivgTW', symObjAddr: 0x10F0, symBinAddr: 0x2DC4, symSize: 0x3C } + - { offset: 0x87926, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x112C, symBinAddr: 0x2E00, symSize: 0x48 } + - { offset: 0x879E0, size: 0x8, addend: 0x0, symName: '_$sSo24UIGestureRecognizerStateVSYSCSY8rawValuexSg03RawE0Qz_tcfCTW', symObjAddr: 0xB90, symBinAddr: 0x2890, symSize: 0x10 } + - { offset: 0x879FA, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSYSCSY8rawValue03RawD0QzvgTW', symObjAddr: 0xC38, symBinAddr: 0x290C, symSize: 0xC } + - { offset: 0x880DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCfETo', symObjAddr: 0xC90, symBinAddr: 0x4360, symSize: 0x58 } + - { offset: 0x8810B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCMU', symObjAddr: 0xCE8, symBinAddr: 0x43B8, symSize: 0x8 } + - { offset: 0x8811F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCMa', symObjAddr: 0xCF0, symBinAddr: 0x43C0, symSize: 0x38 } + - { offset: 0x88133, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCMr', symObjAddr: 0xD28, symBinAddr: 0x43F8, symSize: 0x7C } + - { offset: 0x88147, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgMa', symObjAddr: 0xDA4, symBinAddr: 0x4474, symSize: 0x54 } + - { offset: 0x8815B, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorCMa', symObjAddr: 0xDF8, symBinAddr: 0x44C8, symSize: 0x44 } + - { offset: 0x8816F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC8setImage3fory7Penguin11POICategoryV_tFySo7UIImageCSgcfU_TA', symObjAddr: 0xECC, symBinAddr: 0x459C, symSize: 0x40 } + - { offset: 0x88183, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledName, symObjAddr: 0xF0C, symBinAddr: 0x45DC, symSize: 0x44 } + - { offset: 0x88197, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgWOc', symObjAddr: 0xF50, symBinAddr: 0x4620, symSize: 0x48 } + - { offset: 0x881AB, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgWOh', symObjAddr: 0xF98, symBinAddr: 0x4668, symSize: 0x40 } + - { offset: 0x881BF, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgWOd', symObjAddr: 0xFD8, symBinAddr: 0x46A8, symSize: 0x48 } + - { offset: 0x881D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvWyycfU0_TA', symObjAddr: 0x1020, symBinAddr: 0x46F0, symSize: 0x1C } + - { offset: 0x881E7, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x103C, symBinAddr: 0x470C, symSize: 0x10 } + - { offset: 0x881FB, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x104C, symBinAddr: 0x471C, symSize: 0x8 } + - { offset: 0x8820F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvWyycfU_TA', symObjAddr: 0x1054, symBinAddr: 0x4724, symSize: 0x20 } + - { offset: 0x8835B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x36D0, symSize: 0x20 } + - { offset: 0x883BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x36F0, symSize: 0x14 } + - { offset: 0x8840C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC05imageF0So07UIImageF0CSgvgTo', symObjAddr: 0x34, symBinAddr: 0x3704, symSize: 0x20 } + - { offset: 0x88466, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC05imageF0So07UIImageF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x3724, symSize: 0x14 } + - { offset: 0x884B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC014imageContainerF0So6UIViewCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x3738, symSize: 0x20 } + - { offset: 0x88511, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC014imageContainerF0So6UIViewCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x3758, symSize: 0x14 } + - { offset: 0x88576, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvgTo', symObjAddr: 0x9C, symBinAddr: 0x376C, symSize: 0x40 } + - { offset: 0x885CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvsTo', symObjAddr: 0xDC, symBinAddr: 0x37AC, symSize: 0x6C } + - { offset: 0x88603, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvW', symObjAddr: 0x148, symBinAddr: 0x3818, symSize: 0x160 } + - { offset: 0x88665, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC12awakeFromNibyyF', symObjAddr: 0x3A0, symBinAddr: 0x3A70, symSize: 0xE8 } + - { offset: 0x886F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC12awakeFromNibyyFTo', symObjAddr: 0x488, symBinAddr: 0x3B58, symSize: 0x28 } + - { offset: 0x88740, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC7setData3fory7Penguin11POICategoryV_tF', symObjAddr: 0x4B0, symBinAddr: 0x3B80, symSize: 0x13C } + - { offset: 0x887BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC8setImage3fory7Penguin11POICategoryV_tF', symObjAddr: 0x5EC, symBinAddr: 0x3CBC, symSize: 0x220 } + - { offset: 0x88857, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC8setImage3fory7Penguin11POICategoryV_tFySo7UIImageCSgcfU_', symObjAddr: 0x80C, symBinAddr: 0x3EDC, symSize: 0x184 } + - { offset: 0x888F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC15prepareForReuseyyF', symObjAddr: 0x990, symBinAddr: 0x4060, symSize: 0xCC } + - { offset: 0x88954, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC15prepareForReuseyyFTo', symObjAddr: 0xA5C, symBinAddr: 0x412C, symSize: 0x28 } + - { offset: 0x889AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xA84, symBinAddr: 0x4154, symSize: 0xD8 } + - { offset: 0x88A08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB5C, symBinAddr: 0x422C, symSize: 0xD8 } + - { offset: 0x88A3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xC34, symBinAddr: 0x4304, symSize: 0x28 } + - { offset: 0x88A4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCfD', symObjAddr: 0xC5C, symBinAddr: 0x432C, symSize: 0x34 } + - { offset: 0x88DF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCMi', symObjAddr: 0x0, symBinAddr: 0x474C, symSize: 0x4 } + - { offset: 0x88E08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCMi', symObjAddr: 0x0, symBinAddr: 0x474C, symSize: 0x4 } + - { offset: 0x88E1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCMr', symObjAddr: 0x4, symBinAddr: 0x4750, symSize: 0x8C } + - { offset: 0x88EF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCMa', symObjAddr: 0x104, symBinAddr: 0x4850, symSize: 0xC } + - { offset: 0x88F06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVMa', symObjAddr: 0x110, symBinAddr: 0x485C, symSize: 0xC } + - { offset: 0x88F1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVMa', symObjAddr: 0x11C, symBinAddr: 0x4868, symSize: 0x10 } + - { offset: 0x88F2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVMi', symObjAddr: 0x12C, symBinAddr: 0x4878, symSize: 0x8 } + - { offset: 0x88F42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVMr', symObjAddr: 0x134, symBinAddr: 0x4880, symSize: 0x19C } + - { offset: 0x88F56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwCP', symObjAddr: 0x2D0, symBinAddr: 0x4A1C, symSize: 0x62C } + - { offset: 0x88F6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwxx', symObjAddr: 0x8FC, symBinAddr: 0x5048, symSize: 0x328 } + - { offset: 0x88F7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwcp', symObjAddr: 0xC24, symBinAddr: 0x5370, symSize: 0x520 } + - { offset: 0x88F92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwca', symObjAddr: 0x1144, symBinAddr: 0x5890, symSize: 0x734 } + - { offset: 0x88FA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwtk', symObjAddr: 0x1878, symBinAddr: 0x5FC4, symSize: 0x520 } + - { offset: 0x88FBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwta', symObjAddr: 0x1D98, symBinAddr: 0x64E4, symSize: 0x734 } + - { offset: 0x88FCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwet', symObjAddr: 0x24CC, symBinAddr: 0x6C18, symSize: 0x408 } + - { offset: 0x88FE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwst', symObjAddr: 0x28D4, symBinAddr: 0x7020, symSize: 0x51C } + - { offset: 0x89022, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAASQWb', symObjAddr: 0x2FF4, symBinAddr: 0x7724, symSize: 0x4 } + - { offset: 0x89036, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVACSQAAWl', symObjAddr: 0x2FF8, symBinAddr: 0x7728, symSize: 0x40 } + - { offset: 0x8904A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAs25ExpressibleByArrayLiteralPWb', symObjAddr: 0x3038, symBinAddr: 0x7768, symSize: 0x4 } + - { offset: 0x8905E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVACs25ExpressibleByArrayLiteralAAWl', symObjAddr: 0x303C, symBinAddr: 0x776C, symSize: 0x40 } + - { offset: 0x89072, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs9OptionSetAASYWb', symObjAddr: 0x307C, symBinAddr: 0x77AC, symSize: 0x4 } + - { offset: 0x89086, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVACSYAAWl', symObjAddr: 0x3080, symBinAddr: 0x77B0, symSize: 0x40 } + - { offset: 0x8909A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs9OptionSetAAs0G7AlgebraPWb', symObjAddr: 0x30C0, symBinAddr: 0x77F0, symSize: 0x4 } + - { offset: 0x890AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVACs10SetAlgebraAAWl', symObjAddr: 0x30C4, symBinAddr: 0x77F4, symSize: 0x40 } + - { offset: 0x890C2, size: 0x8, addend: 0x0, symName: ___swift_instantiateGenericMetadata, symObjAddr: 0x3104, symBinAddr: 0x7834, symSize: 0x2C } + - { offset: 0x890F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCfd', symObjAddr: 0x90, symBinAddr: 0x47DC, symSize: 0x50 } + - { offset: 0x89129, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCfD', symObjAddr: 0xE0, symBinAddr: 0x482C, symSize: 0x24 } + - { offset: 0x8915F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADPxycfCTW', symObjAddr: 0x2E18, symBinAddr: 0x7548, symSize: 0x8 } + - { offset: 0x891A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP5unionyxxnFTW', symObjAddr: 0x2E20, symBinAddr: 0x7550, symSize: 0x14 } + - { offset: 0x89245, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP12intersectionyxxFTW', symObjAddr: 0x2E34, symBinAddr: 0x7564, symSize: 0x14 } + - { offset: 0x892DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP19symmetricDifferenceyxxnFTW', symObjAddr: 0x2E48, symBinAddr: 0x7578, symSize: 0x14 } + - { offset: 0x89386, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP6insertySb8inserted_7ElementQz17memberAfterInserttAInFTW', symObjAddr: 0x2E5C, symBinAddr: 0x758C, symSize: 0x30 } + - { offset: 0x894FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP6removey7ElementQzSgAHFTW', symObjAddr: 0x2E8C, symBinAddr: 0x75BC, symSize: 0x2C } + - { offset: 0x89688, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP6update4with7ElementQzSgAIn_tFTW', symObjAddr: 0x2EB8, symBinAddr: 0x75E8, symSize: 0x24 } + - { offset: 0x89774, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP9formUnionyyxnFTW', symObjAddr: 0x2EDC, symBinAddr: 0x760C, symSize: 0x14 } + - { offset: 0x897DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP16formIntersectionyyxFTW', symObjAddr: 0x2EF0, symBinAddr: 0x7620, symSize: 0x14 } + - { offset: 0x89840, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP23formSymmetricDifferenceyyxnFTW', symObjAddr: 0x2F04, symBinAddr: 0x7634, symSize: 0x14 } + - { offset: 0x898B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP11subtractingyxxFTW', symObjAddr: 0x2F18, symBinAddr: 0x7648, symSize: 0x14 } + - { offset: 0x8995E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP8isSubset2ofSbx_tFTW', symObjAddr: 0x2F2C, symBinAddr: 0x765C, symSize: 0x14 } + - { offset: 0x899D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP10isDisjoint4withSbx_tFTW', symObjAddr: 0x2F40, symBinAddr: 0x7670, symSize: 0x14 } + - { offset: 0x89A7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP7isEmptySbvgTW', symObjAddr: 0x2F68, symBinAddr: 0x7698, symSize: 0x10 } + - { offset: 0x89AE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADPyxqd__ncSTRd__7ElementQyd__AFRtzlufCTW', symObjAddr: 0x2F78, symBinAddr: 0x76A8, symSize: 0x18 } + - { offset: 0x89B02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP8subtractyyxFTW', symObjAddr: 0x2F90, symBinAddr: 0x76C0, symSize: 0x14 } + - { offset: 0x89B7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x2FA4, symBinAddr: 0x76D4, symSize: 0x14 } + - { offset: 0x89BCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs25ExpressibleByArrayLiteralAAsADP05arrayI0x0hI7ElementQzd_tcfCTW', symObjAddr: 0x2FB8, symBinAddr: 0x76E8, symSize: 0x3C } + - { offset: 0x89C03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs9OptionSetAAsADP8rawValuex03RawI0Qz_tcfCTW', symObjAddr: 0x2DF0, symBinAddr: 0x753C, symSize: 0xC } + - { offset: 0x89FB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO7ElementCfD', symObjAddr: 0x0, symBinAddr: 0x7864, symSize: 0x3C } + - { offset: 0x8A004, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO7ElementCMa', symObjAddr: 0x3C, symBinAddr: 0x78A0, symSize: 0x20 } + - { offset: 0x8A018, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLOMa', symObjAddr: 0x5C, symBinAddr: 0x78C0, symSize: 0x10 } + - { offset: 0x8A05C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO7ElementCfD', symObjAddr: 0x0, symBinAddr: 0x7864, symSize: 0x3C } + - { offset: 0x8A412, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE9maybeDataACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x78D0, symSize: 0x2BC } + - { offset: 0x8A42A, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE9maybeDataACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x78D0, symSize: 0x2BC } + - { offset: 0x8A480, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE11decodedDataSS8mimeType_AA0G0V4datatSgvg', symObjAddr: 0x2BC, symBinAddr: 0x7B8C, symSize: 0x39C } + - { offset: 0x8A60D, size: 0x8, addend: 0x0, symName: '_$sS2SSysWl', symObjAddr: 0x69C, symBinAddr: 0x7F28, symSize: 0x40 } + - { offset: 0x8AA35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16drawProgressLine2toySo22CLLocationCoordinate2DV_tF', symObjAddr: 0x0, symBinAddr: 0x7FA4, symSize: 0x8BC } + - { offset: 0x8AC7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16drawProgressLine2toySo22CLLocationCoordinate2DV_tF', symObjAddr: 0x0, symBinAddr: 0x7FA4, symSize: 0x8BC } + - { offset: 0x8B354, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17resetProgressLineyyF', symObjAddr: 0x8BC, symBinAddr: 0x8860, symSize: 0x108 } + - { offset: 0x8BA4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DistanceFormatterV012getFormattedD08distance23includesMeasurementUnitSSSd_SbtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x8968, symSize: 0x370 } + - { offset: 0x8BCA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DistanceFormatterV012getFormattedD08distance23includesMeasurementUnitSSSd_SbtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x8968, symSize: 0x370 } + - { offset: 0x8C422, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCMa', symObjAddr: 0x50, symBinAddr: 0x8D28, symSize: 0x20 } + - { offset: 0x8D26A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC7segment2at7forwardAA0D7SegmentV12CoreGraphics7CGFloatV_SbtF', symObjAddr: 0x7B5C, symBinAddr: 0x10834, symSize: 0x388 } + - { offset: 0x8D9AD, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF8PenNavUI18FloatingPanelStateC_Tg503$s8ef82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18hiJ17CGvgSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x7F4C, symBinAddr: 0x10C24, symSize: 0x100 } + - { offset: 0x8DC10, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI18FloatingPanelStateC_Tg503$s8ef82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18hiJ17CGvgSbAG_AGtXEfU_Tf1nnncn_n', symObjAddr: 0x804C, symBinAddr: 0x10D24, symSize: 0x3B0 } + - { offset: 0x8E0FA, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry8PenNavUI18FloatingPanelStateCG_Tg503$s8ij82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18lmN17CGvgSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x83FC, symBinAddr: 0x110D4, symSize: 0x78 } + - { offset: 0x8E25C, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI18FloatingPanelStateC_Tg503$s8fg82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18ijK17CGvgSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x8474, symBinAddr: 0x1114C, symSize: 0x26C } + - { offset: 0x8E5F7, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI18FloatingPanelStateC_Tg503$s8gh82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18jkL17CGvgSbAG_AGtXEfU_Tf1nnnnc_n', symObjAddr: 0x86E0, symBinAddr: 0x113B8, symSize: 0x220 } + - { offset: 0x8E794, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterCMa', symObjAddr: 0x8D6C, symBinAddr: 0x11A44, symSize: 0x20 } + - { offset: 0x8E7A8, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI18FloatingPanelStateC_Tg503$s8gh57UI13LayoutAdapterC30sortedAnchorStatesByCoordinateSayAA18jkL17CGvgSbAF_AFtXEfU_AH0oP0CTf1nnnnc_nTf4nnnng_n', symObjAddr: 0x8D8C, symBinAddr: 0x11A64, symSize: 0x358 } + - { offset: 0x8E96B, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI18FloatingPanelStateC_Tg503$s8fg57UI13LayoutAdapterC30sortedAnchorStatesByCoordinateSayAA18ijK17CGvgSbAF_AFtXEfU_AG0nO0CTf1nncn_nTf4nnng_n', symObjAddr: 0x90E4, symBinAddr: 0x11DBC, symSize: 0x2F0 } + - { offset: 0x8ECE5, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI18FloatingPanelStateC_Tg503$s8ef57UI13LayoutAdapterC30sortedAnchorStatesByCoordinateSayAA18hiJ17CGvgSbAF_AFtXEfU_AD0mN0CTf1nnncn_nTf4nnnng_n', symObjAddr: 0x93D4, symBinAddr: 0x120AC, symSize: 0x6B0 } + - { offset: 0x8F317, size: 0x8, addend: 0x0, symName: '_$sS2Ss7CVarArg10FoundationWl', symObjAddr: 0xA69C, symBinAddr: 0x13330, symSize: 0x40 } + - { offset: 0x8F32B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCSo8NSObjectCSH10ObjectiveCWl', symObjAddr: 0xA930, symBinAddr: 0x135C4, symSize: 0x44 } + - { offset: 0x8F33F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LayoutGuideProvider_pWOb', symObjAddr: 0xA974, symBinAddr: 0x13608, symSize: 0x18 } + - { offset: 0x8F353, size: 0x8, addend: 0x0, symName: ___swift_project_boxed_opaque_existential_1, symObjAddr: 0xA98C, symBinAddr: 0x13620, symSize: 0x24 } + - { offset: 0x8F367, size: 0x8, addend: 0x0, symName: ___swift_destroy_boxed_opaque_existential_1, symObjAddr: 0xA9B0, symBinAddr: 0x13644, symSize: 0x20 } + - { offset: 0x8F37B, size: 0x8, addend: 0x0, symName: '_$sSD8IteratorV8_VariantOy8PenNavUI18FloatingPanelStateCAE0fG15LayoutAnchoring_p__GWOe', symObjAddr: 0xAA10, symBinAddr: 0x136A4, symSize: 0x8 } + - { offset: 0x8F38F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LayoutGuideProvider_pSgWOh', symObjAddr: 0xAA18, symBinAddr: 0x136AC, symSize: 0x40 } + - { offset: 0x8F3C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCACycfC', symObjAddr: 0x0, symBinAddr: 0x8CD8, symSize: 0x20 } + - { offset: 0x8F3DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCACycfc', symObjAddr: 0x20, symBinAddr: 0x8CF8, symSize: 0x30 } + - { offset: 0x8F414, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCACycfcTo', symObjAddr: 0x70, symBinAddr: 0x8D48, symSize: 0x3C } + - { offset: 0x8F47C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0CvgTo', symObjAddr: 0xAC, symBinAddr: 0x8D84, symSize: 0x40 } + - { offset: 0x8F494, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0CvgTo', symObjAddr: 0xAC, symBinAddr: 0x8D84, symSize: 0x40 } + - { offset: 0x8F4B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0Cvg', symObjAddr: 0xEC, symBinAddr: 0x8DC4, symSize: 0x40 } + - { offset: 0x8F5E6, size: 0x8, addend: 0x0, symName: '_$sSDyq_Sgxcig8PenNavUI18FloatingPanelStateC_AB0dE15LayoutAnchoring_pTg5', symObjAddr: 0x1388, symBinAddr: 0xA060, symSize: 0xDC } + - { offset: 0x8F93B, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI18FloatingPanelStateCG_Tg503$s8fg82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18ijK17CGvgSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x7EE4, symBinAddr: 0x10BBC, symSize: 0x68 } + - { offset: 0x8FA6C, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI18FloatingPanelStateCG_Tg503$s8fg57UI13LayoutAdapterC30sortedAnchorStatesByCoordinateSayAA18ijK17CGvgSbAF_AFtXEfU_AG0nO0CTf1cn_nTf4ng_n', symObjAddr: 0x9A84, symBinAddr: 0x1275C, symSize: 0x270 } + - { offset: 0x8FD88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvgTo', symObjAddr: 0x12C, symBinAddr: 0x8E04, symSize: 0x6C } + - { offset: 0x8FDB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvg', symObjAddr: 0x198, symBinAddr: 0x8E70, symSize: 0x4 } + - { offset: 0x8FDC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC8positionAA0dE8PositionOvgTo', symObjAddr: 0x19C, symBinAddr: 0x8E74, symSize: 0x8 } + - { offset: 0x8FDDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC8positionAA0dE8PositionOvg', symObjAddr: 0x1A4, symBinAddr: 0x8E7C, symSize: 0x8 } + - { offset: 0x8FE9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC07prepareG011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtF', symObjAddr: 0x1AC, symBinAddr: 0x8E84, symSize: 0x4 } + - { offset: 0x8FEB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC07prepareG011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtFTo', symObjAddr: 0x1B0, symBinAddr: 0x8E88, symSize: 0xA8 } + - { offset: 0x8FEE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA0dE5StateC_tF', symObjAddr: 0x258, symBinAddr: 0x8F30, symSize: 0x98 } + - { offset: 0x8FF39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA0dE5StateC_tFTo', symObjAddr: 0x2F0, symBinAddr: 0x8FC8, symSize: 0xAC } + - { offset: 0x8FF79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCfD', symObjAddr: 0x39C, symBinAddr: 0x9074, symSize: 0x30 } + - { offset: 0x8FFE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC20leastCoordinateState33_995BB7604D732323B0F3BB3065CA5A1ELLAA013FloatingPanelH0Cvg', symObjAddr: 0x3CC, symBinAddr: 0x90A4, symSize: 0x190 } + - { offset: 0x9019C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC19mostCoordinateState33_995BB7604D732323B0F3BB3065CA5A1ELLAA013FloatingPanelH0Cvg', symObjAddr: 0x55C, symBinAddr: 0x9234, symSize: 0x1AC } + - { offset: 0x903A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC18leastExpandedStateAA013FloatingPanelH0Cvg', symObjAddr: 0x708, symBinAddr: 0x93E0, symSize: 0x218 } + - { offset: 0x9062B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC17mostExpandedStateAA013FloatingPanelH0Cvg', symObjAddr: 0x920, symBinAddr: 0x95F8, symSize: 0x278 } + - { offset: 0x909BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC21adjustedContentInsetsSo06UIEdgeH0Vvg', symObjAddr: 0xB98, symBinAddr: 0x9870, symSize: 0x150 } + - { offset: 0x90BD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC15surfaceLocationSo7CGPointVvg', symObjAddr: 0xCE8, symBinAddr: 0x99C0, symSize: 0x6A0 } + - { offset: 0x91078, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC15surfaceLocationSo7CGPointVvs', symObjAddr: 0x1464, symBinAddr: 0xA13C, symSize: 0x658 } + - { offset: 0x915B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC6offset4from12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tF', symObjAddr: 0x1ABC, symBinAddr: 0xA794, symSize: 0x374 } + - { offset: 0x919AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC12hiddenAnchor33_995BB7604D732323B0F3BB3065CA5A1ELLAA013FloatingPanelD9Anchoring_pvg', symObjAddr: 0x1E30, symBinAddr: 0xAB08, symSize: 0x218 } + - { offset: 0x91B86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC15surfaceLocation3forSo7CGPointVAA18FloatingPanelStateC_tF', symObjAddr: 0x2048, symBinAddr: 0xAD20, symSize: 0x188 } + - { offset: 0x91CEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC8position3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tF', symObjAddr: 0x21D0, symBinAddr: 0xAEA8, symSize: 0x894 } + - { offset: 0x92421, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC8position3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tFAHyXEfU_', symObjAddr: 0x2A64, symBinAddr: 0xB73C, symSize: 0x218 } + - { offset: 0x9257C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC8position3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tFAHyXEfU0_', symObjAddr: 0x2C7C, symBinAddr: 0xB954, symSize: 0x19C } + - { offset: 0x9269F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC13referenceEdge33_995BB7604D732323B0F3BB3065CA5A1ELL2ofAA022FloatingPanelReferenceG0OAA0pqD9Anchoring_p_tF', symObjAddr: 0x2E18, symBinAddr: 0xBAF0, symSize: 0x100 } + - { offset: 0x92794, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC07prepareD0yyF', symObjAddr: 0x2F18, symBinAddr: 0xBBF0, symSize: 0x11B8 } + - { offset: 0x931A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC22updateStateConstraints33_995BB7604D732323B0F3BB3065CA5A1ELLyyF', symObjAddr: 0x40D0, symBinAddr: 0xCDA8, symSize: 0xCC4 } + - { offset: 0x93DE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC15setUpAttraction2toSo18NSLayoutConstraintC_12CoreGraphics7CGFloatVtAA18FloatingPanelStateC_tF', symObjAddr: 0x4D94, symBinAddr: 0xDA6C, symSize: 0x13AC } + - { offset: 0x94A54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC18tearDownAttraction33_995BB7604D732323B0F3BB3065CA5A1ELLyyF', symObjAddr: 0x6140, symBinAddr: 0xEE18, symSize: 0xF8 } + - { offset: 0x94B49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC22updateStaticConstraintyyF', symObjAddr: 0x6238, symBinAddr: 0xEF10, symSize: 0xBC8 } + - { offset: 0x95769, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC31updateInteractiveEdgeConstraint4diff16scrollingContent19allowsRubberBandingy12CoreGraphics7CGFloatV_S2bSo06UIRectH0VXEtF6$deferL_yyF', symObjAddr: 0x6E00, symBinAddr: 0xFAD8, symSize: 0x150 } + - { offset: 0x9587F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC08activateD03for05forceD0yAA18FloatingPanelStateC_SbtF', symObjAddr: 0x6F50, symBinAddr: 0xFC28, symSize: 0x5C4 } + - { offset: 0x95C13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC08activateD03for05forceD0yAA18FloatingPanelStateC_SbtF6$deferL_yyF', symObjAddr: 0x7514, symBinAddr: 0x101EC, symSize: 0x4A0 } + - { offset: 0x95F4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC21layoutSurfaceIfNeeded33_995BB7604D732323B0F3BB3065CA5A1ELLyyF', symObjAddr: 0x79B4, symBinAddr: 0x1068C, symSize: 0x11C } + - { offset: 0x96036, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterCfd', symObjAddr: 0x7AD0, symBinAddr: 0x107A8, symSize: 0x6C } + - { offset: 0x96059, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterCfD', symObjAddr: 0x7B3C, symBinAddr: 0x10814, symSize: 0x20 } + - { offset: 0x960FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvgTf4d_n', symObjAddr: 0x8900, symBinAddr: 0x115D8, symSize: 0x258 } + - { offset: 0x9628B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC07prepareG011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtFTf4nnd_n', symObjAddr: 0x8B58, symBinAddr: 0x11830, symSize: 0x17C } + - { offset: 0x96347, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC2vc6layoutAcA23FloatingPanelControllerC_AA0hiD0_ptcfcTf4gnn_n', symObjAddr: 0x9CF4, symBinAddr: 0x129CC, symSize: 0x7C } + - { offset: 0x963B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC16startInteraction2at6offsetyAA18FloatingPanelStateC_So7CGPointVtFTf4dnn_n', symObjAddr: 0x9D70, symBinAddr: 0x12A48, symSize: 0x8E8 } + - { offset: 0x96C1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC6layout33_995BB7604D732323B0F3BB3065CA5A1ELLAA013FloatingPanelD0_pvsTf4en_nTf4gn_n', symObjAddr: 0xAA58, symBinAddr: 0x136EC, symSize: 0xB0 } + - { offset: 0x980F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCfE', symObjAddr: 0x1968, symBinAddr: 0x14EAC, symSize: 0x10C } + - { offset: 0x98126, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCfETo', symObjAddr: 0x1AA4, symBinAddr: 0x14FE8, symSize: 0x118 } + - { offset: 0x98155, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCMa', symObjAddr: 0x1BBC, symBinAddr: 0x15100, symSize: 0x20 } + - { offset: 0x9819D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1BDC, symBinAddr: 0x15120, symSize: 0x14 } + - { offset: 0x981BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1BDC, symBinAddr: 0x15120, symSize: 0x14 } + - { offset: 0x981DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1BDC, symBinAddr: 0x15120, symSize: 0x14 } + - { offset: 0x98244, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x1BF0, symBinAddr: 0x15134, symSize: 0x60 } + - { offset: 0x984DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1C50, symBinAddr: 0x15194, symSize: 0x618 } + - { offset: 0x988DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU_', symObjAddr: 0x2268, symBinAddr: 0x157AC, symSize: 0x174 } + - { offset: 0x989C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x23DC, symBinAddr: 0x15920, symSize: 0xB8 } + - { offset: 0x98A0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2494, symBinAddr: 0x159D8, symSize: 0xE4 } + - { offset: 0x98A9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0x2578, symBinAddr: 0x15ABC, symSize: 0x25C } + - { offset: 0x98B05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_', symObjAddr: 0x27D4, symBinAddr: 0x15D18, symSize: 0x280 } + - { offset: 0x98BFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0x2A54, symBinAddr: 0x15F98, symSize: 0x50 } + - { offset: 0x98C19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC18didTapFloorsActionyyF', symObjAddr: 0x2AA4, symBinAddr: 0x15FE8, symSize: 0xBC } + - { offset: 0x98C84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC18didTapFloorsActionyyFTo', symObjAddr: 0x2B60, symBinAddr: 0x160A4, symSize: 0x28 } + - { offset: 0x98CA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC20didTapExpandScheduleyyFTo', symObjAddr: 0x2B90, symBinAddr: 0x160CC, symSize: 0x2C } + - { offset: 0x98CBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC22didTapCollapseScheduleyyFTo', symObjAddr: 0x2CFC, symBinAddr: 0x16230, symSize: 0x2C } + - { offset: 0x98CD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC22didTapDirectionsActionyyF', symObjAddr: 0x2D28, symBinAddr: 0x1625C, symSize: 0x474 } + - { offset: 0x9915F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC17showRouteOverview6sourceyAA5PlaceCSg_tF', symObjAddr: 0x319C, symBinAddr: 0x166D0, symSize: 0x2E0 } + - { offset: 0x993D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC22didTapDirectionsActionyyFTo', symObjAddr: 0x347C, symBinAddr: 0x169B0, symSize: 0x28 } + - { offset: 0x993F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC17handleOfflineDatayyF', symObjAddr: 0x34A4, symBinAddr: 0x169D8, symSize: 0x11C } + - { offset: 0x9954D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x35C0, symBinAddr: 0x16AF4, symSize: 0x98 } + - { offset: 0x99622, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x3658, symBinAddr: 0x16B8C, symSize: 0x24 } + - { offset: 0x99697, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x367C, symBinAddr: 0x16BB0, symSize: 0xBC } + - { offset: 0x9973A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x3738, symBinAddr: 0x16C6C, symSize: 0x28 } + - { offset: 0x99778, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x3760, symBinAddr: 0x16C94, symSize: 0x204 } + - { offset: 0x9996B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x3964, symBinAddr: 0x16E98, symSize: 0x50 } + - { offset: 0x99987, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC17venueDetailLoaded4datayAA0dF4DataC_tF', symObjAddr: 0x39B4, symBinAddr: 0x16EE8, symSize: 0x108 } + - { offset: 0x99A8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC16venueGatesLoaded5gatesySayAA5PlaceCG_tF', symObjAddr: 0x3ABC, symBinAddr: 0x16FF0, symSize: 0x190 } + - { offset: 0x99D34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA0d6DetailF19ModelOutputProtocolA2aDP05venueH6Loaded4datayAA0dF4DataC_tFTW', symObjAddr: 0x3C4C, symBinAddr: 0x17180, symSize: 0x4 } + - { offset: 0x99D50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA0d6DetailF19ModelOutputProtocolA2aDP16venueGatesLoaded5gatesySayAA5PlaceCG_tFTW', symObjAddr: 0x3C50, symBinAddr: 0x17184, symSize: 0x4 } + - { offset: 0x99D8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA0d6DetailF19ModelOutputProtocolA2aDP05venueH10LoadFailedyyFTW', symObjAddr: 0x3C54, symBinAddr: 0x17188, symSize: 0x24 } + - { offset: 0x99DAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA0d6DetailF19ModelOutputProtocolA2aDP05venueH10LoadFailedyyFTW', symObjAddr: 0x3C54, symBinAddr: 0x17188, symSize: 0x24 } + - { offset: 0x99DCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA0d6DetailF19ModelOutputProtocolA2aDP05venueH10LoadFailedyyFTW', symObjAddr: 0x3C54, symBinAddr: 0x17188, symSize: 0x24 } + - { offset: 0x99E0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x3C78, symBinAddr: 0x171AC, symSize: 0x278 } + - { offset: 0x99FC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFyycfU_', symObjAddr: 0x3EF0, symBinAddr: 0x17424, symSize: 0x7C } + - { offset: 0x99FED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x3F6C, symBinAddr: 0x174A0, symSize: 0x8 } + - { offset: 0x9A029, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x3F74, symBinAddr: 0x174A8, symSize: 0x4 } + - { offset: 0x9A049, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x3F74, symBinAddr: 0x174A8, symSize: 0x4 } + - { offset: 0x9A070, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV19_uninitializedCount15minimumCapacityAByxGSi_SitcfC10Foundation3URLV_Tt1g5', symObjAddr: 0x40D0, symBinAddr: 0x17604, symSize: 0xB8 } + - { offset: 0x9A0E2, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSS_Tg5', symObjAddr: 0x422C, symBinAddr: 0x17760, symSize: 0x1C } + - { offset: 0x9A0FA, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo18NSLayoutConstraintC_Tg5', symObjAddr: 0x4248, symBinAddr: 0x1777C, symSize: 0x34 } + - { offset: 0x9A112, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI15LocalizedObjectV_Tg5', symObjAddr: 0x427C, symBinAddr: 0x177B0, symSize: 0x1C } + - { offset: 0x9A12A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI11RouteOptionV_Tg5', symObjAddr: 0x4298, symBinAddr: 0x177CC, symSize: 0x24 } + - { offset: 0x9A142, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSS_Sbt_Tg5', symObjAddr: 0x42BC, symBinAddr: 0x177F0, symSize: 0x1C } + - { offset: 0x9A15A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI24FloatingPanelPresentable_p_Tg5', symObjAddr: 0x42D8, symBinAddr: 0x1780C, symSize: 0x1C } + - { offset: 0x9A172, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo6UIViewC_Tg5', symObjAddr: 0x42F4, symBinAddr: 0x17828, symSize: 0x34 } + - { offset: 0x9A18A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI5PlaceC_Tg5', symObjAddr: 0x4328, symBinAddr: 0x1785C, symSize: 0x2C } + - { offset: 0x9A1A2, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9LayerTreeO5PointV1p_AK3cp1AK3cp2t_Tg5', symObjAddr: 0x4354, symBinAddr: 0x17888, symSize: 0x1C } + - { offset: 0x9A1BA, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9LayerTreeO4PathC7SegmentO_Tg5', symObjAddr: 0x4370, symBinAddr: 0x178A4, symSize: 0x24 } + - { offset: 0x9A1D2, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9LayerTreeO5PointV_Tg5', symObjAddr: 0x4394, symBinAddr: 0x178C8, symSize: 0x1C } + - { offset: 0x9A1EA, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin10PoiPolygonV_Tg5', symObjAddr: 0x43B0, symBinAddr: 0x178E4, symSize: 0x2C } + - { offset: 0x9A202, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo7CGPointV_Tg5', symObjAddr: 0x43DC, symBinAddr: 0x17910, symSize: 0x1C } + - { offset: 0x9A21A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI11RouteOptionV0qR3KeyO_Sbt_Tg5', symObjAddr: 0x43F8, symBinAddr: 0x1792C, symSize: 0x24 } + - { offset: 0x9A232, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin13GateNodeModelC_Tg5', symObjAddr: 0x441C, symBinAddr: 0x17950, symSize: 0x2C } + - { offset: 0x9A24A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5FloorC_Tg5', symObjAddr: 0x4448, symBinAddr: 0x1797C, symSize: 0x2C } + - { offset: 0x9A262, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin4EdgeC_Tg5', symObjAddr: 0x4474, symBinAddr: 0x179A8, symSize: 0x2C } + - { offset: 0x9A27A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5VenueC_Tg5', symObjAddr: 0x44A0, symBinAddr: 0x179D4, symSize: 0x2C } + - { offset: 0x9A292, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI8FavoriteC_Tg5', symObjAddr: 0x44CC, symBinAddr: 0x17A00, symSize: 0x2C } + - { offset: 0x9A2AA, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSiSg_Tg5', symObjAddr: 0x44F8, symBinAddr: 0x17A2C, symSize: 0x1C } + - { offset: 0x9A2C2, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSi_Tg5', symObjAddr: 0x4514, symBinAddr: 0x17A48, symSize: 0x1C } + - { offset: 0x9A2DA, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5FloorCSg_Tg5', symObjAddr: 0x4530, symBinAddr: 0x17A64, symSize: 0x2C } + - { offset: 0x9A2F2, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF17PenguinINRenderer20FeatureConfigurationV_Tg5', symObjAddr: 0x455C, symBinAddr: 0x17A90, symSize: 0x2C } + - { offset: 0x9A30A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI7POIDataC_Tg5', symObjAddr: 0x4588, symBinAddr: 0x17ABC, symSize: 0x2C } + - { offset: 0x9A322, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF10Foundation9IndexPathV_Tg5', symObjAddr: 0x45B4, symBinAddr: 0x17AE8, symSize: 0x2C } + - { offset: 0x9A33A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x45E0, symBinAddr: 0x17B14, symSize: 0x1C } + - { offset: 0x9A352, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9LayerTreeO8GradientV4StopV_Tg5', symObjAddr: 0x45FC, symBinAddr: 0x17B30, symSize: 0x1C } + - { offset: 0x9A36A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF12CoreGraphics7CGFloatV_Tg5', symObjAddr: 0x4618, symBinAddr: 0x17B4C, symSize: 0x1C } + - { offset: 0x9A382, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo10CGColorRefa_Tg5', symObjAddr: 0x4634, symBinAddr: 0x17B68, symSize: 0x2C } + - { offset: 0x9A39A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI15RendererCommandOyAG11CGTextTypesVG_Tg5', symObjAddr: 0x4660, symBinAddr: 0x17B94, symSize: 0x1C } + - { offset: 0x9A3B2, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSay8PenNavUI9LayerTreeO5ShapeOG_Tg5', symObjAddr: 0x467C, symBinAddr: 0x17BB0, symSize: 0x1C } + - { offset: 0x9A3CA, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3DOMO4PathC_Tg5', symObjAddr: 0x4698, symBinAddr: 0x17BCC, symSize: 0x2C } + - { offset: 0x9A3E2, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3DOMO4PathC7SegmentO_Tg5', symObjAddr: 0x46C4, symBinAddr: 0x17BF8, symSize: 0x24 } + - { offset: 0x9A3FA, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3XMLO7ElementC_Tg5', symObjAddr: 0x46E8, symBinAddr: 0x17C1C, symSize: 0x2C } + - { offset: 0x9A412, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3DOMO10StyleSheetV_Tg5', symObjAddr: 0x4714, symBinAddr: 0x17C48, symSize: 0x1C } + - { offset: 0x9A42A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI15RendererCommandOyAG7CGTypesVG_Tg5', symObjAddr: 0x4730, symBinAddr: 0x17C64, symSize: 0x1C } + - { offset: 0x9A442, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo9CGPathRefa_Tg5', symObjAddr: 0x474C, symBinAddr: 0x17C80, symSize: 0x2C } + - { offset: 0x9A45A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin8ScheduleC_Tg5', symObjAddr: 0x4778, symBinAddr: 0x17CAC, symSize: 0x2C } + - { offset: 0x9A472, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFyp_Tg5', symObjAddr: 0x47A4, symBinAddr: 0x17CD8, symSize: 0x1C } + - { offset: 0x9A48A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin7SubPathC_Tg5', symObjAddr: 0x47C0, symBinAddr: 0x17CF4, symSize: 0x2C } + - { offset: 0x9A4A2, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9VenueGateV_Tg5', symObjAddr: 0x47EC, symBinAddr: 0x17D20, symSize: 0x1C } + - { offset: 0x9A4BA, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI6CampusC_Tg5', symObjAddr: 0x4808, symBinAddr: 0x17D3C, symSize: 0x2C } + - { offset: 0x9A4D2, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI13TagDataSource_p_Tg5', symObjAddr: 0x4834, symBinAddr: 0x17D68, symSize: 0x2C } + - { offset: 0x9A4EA, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI16FileDownloadData_p_Tg5', symObjAddr: 0x4860, symBinAddr: 0x17D94, symSize: 0x2C } + - { offset: 0x9A502, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5VenueCSg_Tg5', symObjAddr: 0x488C, symBinAddr: 0x17DC0, symSize: 0x2C } + - { offset: 0x9A51A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI10LiveObjectV_Tg5', symObjAddr: 0x48B8, symBinAddr: 0x17DEC, symSize: 0x2C } + - { offset: 0x9A532, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo7CALayerC_Tg5', symObjAddr: 0x48E4, symBinAddr: 0x17E18, symSize: 0x34 } + - { offset: 0x9A54A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF10Foundation3URLV_Tg5', symObjAddr: 0x4918, symBinAddr: 0x17E4C, symSize: 0x2C } + - { offset: 0x9A562, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI13MessageDetailC_Tg5', symObjAddr: 0x4944, symBinAddr: 0x17E78, symSize: 0x2C } + - { offset: 0x9A57A, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5GnodeC_Tg5', symObjAddr: 0x4970, symBinAddr: 0x17EA4, symSize: 0x2C } + - { offset: 0x9A592, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI10AlertSheetC_Tg5', symObjAddr: 0x499C, symBinAddr: 0x17ED0, symSize: 0x2C } + - { offset: 0x9A5AA, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFs7UnicodeO6ScalarV_Tg5', symObjAddr: 0x49C8, symBinAddr: 0x17EFC, symSize: 0x1C } + - { offset: 0x9A5C2, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9VenueDataC_Tg5', symObjAddr: 0x49E4, symBinAddr: 0x17F18, symSize: 0x2C } + - { offset: 0x9A632, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSS_Tg5', symObjAddr: 0x4A10, symBinAddr: 0x17F44, symSize: 0x100 } + - { offset: 0x9A776, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15LocalizedObjectV_Tg5', symObjAddr: 0x4C60, symBinAddr: 0x18194, symSize: 0x100 } + - { offset: 0x9A8BA, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSS_Sbt_Tg5', symObjAddr: 0x4D60, symBinAddr: 0x18294, symSize: 0x130 } + - { offset: 0x9A9FE, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI24FloatingPanelPresentable_p_Tg5', symObjAddr: 0x4E90, symBinAddr: 0x183C4, symSize: 0x120 } + - { offset: 0x9AB42, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi3key_Say7Penguin8ScheduleCG5valuet_Tg5', symObjAddr: 0x50F4, symBinAddr: 0x18628, symSize: 0x120 } + - { offset: 0x9AC2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFyycfU_TA', symObjAddr: 0x524C, symBinAddr: 0x18780, symSize: 0x8 } + - { offset: 0x9AC42, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x5254, symBinAddr: 0x18788, symSize: 0x10 } + - { offset: 0x9AC56, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x5264, symBinAddr: 0x18798, symSize: 0x8 } + - { offset: 0x9ACC2, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO5PointV1p_AL3cp1AL3cp2t_Tg5', symObjAddr: 0x526C, symBinAddr: 0x187A0, symSize: 0x110 } + - { offset: 0x9AE06, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO5PointV_Tg5', symObjAddr: 0x537C, symBinAddr: 0x188B0, symSize: 0xF8 } + - { offset: 0x9AF4A, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSo7CGPointV_Tg5', symObjAddr: 0x5488, symBinAddr: 0x189BC, symSize: 0xF8 } + - { offset: 0x9B08E, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSiSg_Tg5', symObjAddr: 0x5694, symBinAddr: 0x18BC8, symSize: 0xF4 } + - { offset: 0x9B1D2, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi_Tg5', symObjAddr: 0x5788, symBinAddr: 0x18CBC, symSize: 0xF8 } + - { offset: 0x9B316, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x5880, symBinAddr: 0x18DB4, symSize: 0x110 } + - { offset: 0x9B45A, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO8GradientV4StopV_Tg5', symObjAddr: 0x5990, symBinAddr: 0x18EC4, symSize: 0x118 } + - { offset: 0x9B59E, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF12CoreGraphics7CGFloatV_Tg5', symObjAddr: 0x5AA8, symBinAddr: 0x18FDC, symSize: 0xF8 } + - { offset: 0x9B6E2, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15RendererCommandOyAH11CGTextTypesVG_Tg5', symObjAddr: 0x5BA0, symBinAddr: 0x190D4, symSize: 0x138 } + - { offset: 0x9B826, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSay8PenNavUI9LayerTreeO5ShapeOG_Tg5', symObjAddr: 0x5CD8, symBinAddr: 0x1920C, symSize: 0x120 } + - { offset: 0x9B96A, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO10StyleSheetV_Tg5', symObjAddr: 0x5F00, symBinAddr: 0x19434, symSize: 0x100 } + - { offset: 0x9BAAE, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15RendererCommandOyAH7CGTypesVG_Tg5', symObjAddr: 0x6000, symBinAddr: 0x19534, symSize: 0x17C } + - { offset: 0x9BBFF, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFyp_Tg5', symObjAddr: 0x617C, symBinAddr: 0x196B0, symSize: 0x104 } + - { offset: 0x9BD43, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9VenueGateV_Tg5', symObjAddr: 0x6280, symBinAddr: 0x197B4, symSize: 0x118 } + - { offset: 0x9BE87, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFs7UnicodeO6ScalarV_Tg5', symObjAddr: 0x677C, symBinAddr: 0x19CB0, symSize: 0xF8 } + - { offset: 0x9BFD6, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF8PenNavUI9LayerTreeO9TransformO_s15CollectionOfOneVyAJGTg5', symObjAddr: 0x6988, symBinAddr: 0x19DA8, symSize: 0xF0 } + - { offset: 0x9C0FE, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF8PenNavUI20FloorSelectorSectionO_s15CollectionOfOneVyAHGTg5', symObjAddr: 0x6A78, symBinAddr: 0x19E98, symSize: 0xD0 } + - { offset: 0x9C231, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy8PenNavUI20FloorSelectorSectionOG_s010CollectionH3OneVyANGTg5', symObjAddr: 0x6C40, symBinAddr: 0x1A060, symSize: 0xBC } + - { offset: 0x9C392, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0VySo22CLLocationCoordinate2DVG_s010CollectionH3OneVyAMGTg5', symObjAddr: 0x6CFC, symBinAddr: 0x1A11C, symSize: 0xC4 } + - { offset: 0x9C52F, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0VySo22CLLocationCoordinate2DVG_SayAMGTg5Tf4nngn_n', symObjAddr: 0x6DC0, symBinAddr: 0x1A1E0, symSize: 0xE0 } + - { offset: 0x9C701, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lFSo22CLLocationCoordinate2DV_SayAGGTg5Tf4ngn_n', symObjAddr: 0x6EA0, symBinAddr: 0x1A2C0, symSize: 0xD0 } + - { offset: 0x9C87A, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy8PenNavUI24FloatingPanelPresentable_pG_s15EmptyCollectionVyAlM_pGTg5Tf4nndn_n', symObjAddr: 0x6F70, symBinAddr: 0x1A390, symSize: 0xC4 } + - { offset: 0x9CA52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x71F8, symBinAddr: 0x1A5D4, symSize: 0x244 } + - { offset: 0x9CCF1, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy8PenNavUI5PlaceCG_s010CollectionH3OneVyANGTg5Tf4nngn_n', symObjAddr: 0x743C, symBinAddr: 0x1A818, symSize: 0x11C } + - { offset: 0x9CE39, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF8PenNavUI5PlaceC_s15CollectionOfOneVyAHGTg5Tf4ngn_n', symObjAddr: 0x7558, symBinAddr: 0x1A934, symSize: 0xDC } + - { offset: 0x9CF81, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0VySSG_s15EmptyCollectionVySSGTg5Tf4nndn_n', symObjAddr: 0x7634, symBinAddr: 0x1AA10, symSize: 0xBC } + - { offset: 0x9D076, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0VySSG_s010CollectionH3OneVySSGTg5Tf4nngn_n', symObjAddr: 0x7704, symBinAddr: 0x1AAE0, symSize: 0xE0 } + - { offset: 0x9D1D5, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lFSS_s15CollectionOfOneVySSGTg5Tf4ngn_n', symObjAddr: 0x77E4, symBinAddr: 0x1ABC0, symSize: 0xD8 } + - { offset: 0x9D2FB, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy8PenNavUI13VenueCardDataVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x7AC0, symBinAddr: 0x1AE9C, symSize: 0xD4 } + - { offset: 0x9D43D, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy10Foundation3URLVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x7B94, symBinAddr: 0x1AF70, symSize: 0x10C } + - { offset: 0x9D54F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC22didTapDirectionsActionyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x7DA4, symBinAddr: 0x1B180, symSize: 0x20 } + - { offset: 0x9D589, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC24handleConnectivityAction10completionyyycSg_tFyycACcfu_yycfu0_TA', symObjAddr: 0x7DE4, symBinAddr: 0x1B1C0, symSize: 0x8 } + - { offset: 0x9D59D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_TA', symObjAddr: 0x7E18, symBinAddr: 0x1B1F4, symSize: 0x8 } + - { offset: 0x9D5B1, size: 0x8, addend: 0x0, symName: '_$s8Dispatch0A13WorkItemFlagsVACs10SetAlgebraAAWl', symObjAddr: 0x7E20, symBinAddr: 0x1B1FC, symSize: 0x44 } + - { offset: 0x9D5C5, size: 0x8, addend: 0x0, symName: '_$sSay8Dispatch0A13WorkItemFlagsVGSayxGSTsWl', symObjAddr: 0x7E64, symBinAddr: 0x1B240, symSize: 0x48 } + - { offset: 0x9D5D9, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledNameAbstract, symObjAddr: 0x7EAC, symBinAddr: 0x1B288, symSize: 0x48 } + - { offset: 0x9D5ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU_TA', symObjAddr: 0x7EF4, symBinAddr: 0x1B2D0, symSize: 0x8 } + - { offset: 0x9D601, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18NavigationDelegate_pSgXwWOh', symObjAddr: 0x7EFC, symBinAddr: 0x1B2D8, symSize: 0x24 } + - { offset: 0x9D615, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16PIEventsDelegate_pWOc', symObjAddr: 0x7F20, symBinAddr: 0x1B2FC, symSize: 0x44 } + - { offset: 0x9D79F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x137A0, symSize: 0x10 } + - { offset: 0x9D7B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x137A0, symSize: 0x10 } + - { offset: 0x9D7FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x137B0, symSize: 0x34 } + - { offset: 0x9D84C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC13subtitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x137E4, symSize: 0x10 } + - { offset: 0x9D864, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC13subtitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x137E4, symSize: 0x10 } + - { offset: 0x9D89F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC13subtitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x137F4, symSize: 0x34 } + - { offset: 0x9D8EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x13828, symSize: 0x10 } + - { offset: 0x9D906, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x13828, symSize: 0x10 } + - { offset: 0x9D946, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x13838, symSize: 0x34 } + - { offset: 0x9D995, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC09separatorF0So6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x1386C, symSize: 0x10 } + - { offset: 0x9D9AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC09separatorF0So6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x1386C, symSize: 0x10 } + - { offset: 0x9D9ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC09separatorF0So6UIViewCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x1387C, symSize: 0x34 } + - { offset: 0x9DA3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x138B0, symSize: 0x20 } + - { offset: 0x9DA96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x130, symBinAddr: 0x138D0, symSize: 0x14 } + - { offset: 0x9DAF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC9venueData33_49E053E0F82157DDFC7F5E6B1EE27E5FLLAA0dfI0Cvg', symObjAddr: 0x144, symBinAddr: 0x138E4, symSize: 0x9C } + - { offset: 0x9DC1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC9viewModel33_49E053E0F82157DDFC7F5E6B1EE27E5FLLAA0d6DetailfI0Cvg', symObjAddr: 0x1E0, symBinAddr: 0x13980, symSize: 0x120 } + - { offset: 0x9DF4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x300, symBinAddr: 0x13AA0, symSize: 0x1B8 } + - { offset: 0x9E0CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x4B8, symBinAddr: 0x13C58, symSize: 0x28 } + - { offset: 0x9E0E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC13registerCells33_49E053E0F82157DDFC7F5E6B1EE27E5FLLyyF', symObjAddr: 0x4E0, symBinAddr: 0x13C80, symSize: 0xE0 } + - { offset: 0x9E1F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC03setD4Info33_49E053E0F82157DDFC7F5E6B1EE27E5FLLyyF', symObjAddr: 0x5C0, symBinAddr: 0x13D60, symSize: 0x2B4 } + - { offset: 0x9E4C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC7dismissyyFTo', symObjAddr: 0xD30, symBinAddr: 0x14274, symSize: 0x88 } + - { offset: 0x9E506, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5shareyyF', symObjAddr: 0xDB8, symBinAddr: 0x142FC, symSize: 0x120 } + - { offset: 0x9E5D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0xED8, symBinAddr: 0x1441C, symSize: 0x520 } + - { offset: 0x9E8D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5shareyyFTo', symObjAddr: 0x13F8, symBinAddr: 0x1493C, symSize: 0x28 } + - { offset: 0x9E958, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06handleD5GatesyyF', symObjAddr: 0x1420, symBinAddr: 0x14964, symSize: 0x1CC } + - { offset: 0x9EB0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x15EC, symBinAddr: 0x14B30, symSize: 0x18C } + - { offset: 0x9EB4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x1778, symBinAddr: 0x14CBC, symSize: 0x60 } + - { offset: 0x9EB80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x17D8, symBinAddr: 0x14D1C, symSize: 0x168 } + - { offset: 0x9EBB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1940, symBinAddr: 0x14E84, symSize: 0x28 } + - { offset: 0x9EBC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCfD', symObjAddr: 0x1A74, symBinAddr: 0x14FB8, symSize: 0x30 } + - { offset: 0x9F4CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC17addGrabberGestureyyF', symObjAddr: 0x0, symBinAddr: 0x1B354, symSize: 0x37C } + - { offset: 0x9F6DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC17addGrabberGestureyyF', symObjAddr: 0x0, symBinAddr: 0x1B354, symSize: 0x37C } + - { offset: 0x9FA1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16handleTapGesture33_2EE35CB3C04EDC940EAF12BD78B47A2BLLyyF', symObjAddr: 0x37C, symBinAddr: 0x1B6D0, symSize: 0x1150 } + - { offset: 0xA06D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16handleTapGesture33_2EE35CB3C04EDC940EAF12BD78B47A2BLLyyFTo', symObjAddr: 0x14CC, symBinAddr: 0x1C820, symSize: 0x28 } + - { offset: 0xA0BCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV9makeShape4fromAC0H0OSgAA3DOMO15GraphicsElementC_tFZTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x1C848, symSize: 0x534 } + - { offset: 0xA0DF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV9makeShape4fromAC0H0OSgAA3DOMO15GraphicsElementC_tFZTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x1C848, symSize: 0x534 } + - { offset: 0xA17B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SessionIdGeneratorV14getCurrentTime33_0AD976D144EE60DA8D29C4E8D9C88D43LLSSyFTf4d_n', symObjAddr: 0x0, symBinAddr: 0x1CD7C, symSize: 0x1C8 } + - { offset: 0xA17D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SessionIdGeneratorV6sharedACSgvpZ', symObjAddr: 0x5A49, symBinAddr: 0x384B18, symSize: 0x0 } + - { offset: 0xA1840, size: 0x8, addend: 0x0, symName: '_$s10Foundation4UUIDVSgWOb', symObjAddr: 0x558, symBinAddr: 0x1D290, symSize: 0x48 } + - { offset: 0xA1854, size: 0x8, addend: 0x0, symName: '_$s10Foundation4UUIDVSgWOh', symObjAddr: 0x5A0, symBinAddr: 0x1D2D8, symSize: 0x40 } + - { offset: 0xA194B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SessionIdGeneratorV14getCurrentTime33_0AD976D144EE60DA8D29C4E8D9C88D43LLSSyFTf4d_n', symObjAddr: 0x0, symBinAddr: 0x1CD7C, symSize: 0x1C8 } + - { offset: 0xA19D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SessionIdGeneratorV016getNewNavigationdE0SSyFTf4d_n', symObjAddr: 0x1C8, symBinAddr: 0x1CF44, symSize: 0x34C } + - { offset: 0xA2AF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyF', symObjAddr: 0xF98, symBinAddr: 0x1E2B0, symSize: 0x470 } + - { offset: 0xA2ED9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_', symObjAddr: 0x3BBC, symBinAddr: 0x20E80, symSize: 0x460 } + - { offset: 0xA30AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU_', symObjAddr: 0x4EF8, symBinAddr: 0x221BC, symSize: 0x98 } + - { offset: 0xA3259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06updateC033_A0B591B96AA499ED77538E2604F14735LL14responsePlacesySayAA7POIDataCG_tF', symObjAddr: 0x1F48, symBinAddr: 0x1F260, symSize: 0x19C } + - { offset: 0xA35A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCfE', symObjAddr: 0x3434, symBinAddr: 0x2074C, symSize: 0x164 } + - { offset: 0xA35D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCfETo', symObjAddr: 0x35CC, symBinAddr: 0x208E4, symSize: 0x170 } + - { offset: 0xA3601, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCMU', symObjAddr: 0x373C, symBinAddr: 0x20A54, symSize: 0x8 } + - { offset: 0xA3615, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCMa', symObjAddr: 0x3744, symBinAddr: 0x20A5C, symSize: 0x38 } + - { offset: 0xA3629, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCMr', symObjAddr: 0x377C, symBinAddr: 0x20A94, symSize: 0xDC } + - { offset: 0xA3653, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC19getLocationParamter33_A0B591B96AA499ED77538E2604F14735LLSDySSypGyF', symObjAddr: 0x38AC, symBinAddr: 0x20B70, symSize: 0x310 } + - { offset: 0xA431B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC17loadPOIDataForMap33_A0B591B96AA499ED77538E2604F14735LL6placesySayAA0I0CG_tF', symObjAddr: 0x4F90, symBinAddr: 0x22254, symSize: 0x22C } + - { offset: 0xA469E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC17appendOutdoorPOIs33_A0B591B96AA499ED77538E2604F14735LLyyF', symObjAddr: 0x51BC, symBinAddr: 0x22480, symSize: 0x458 } + - { offset: 0xA4AE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x5614, symBinAddr: 0x228D8, symSize: 0x98 } + - { offset: 0xA4B9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x56AC, symBinAddr: 0x22970, symSize: 0x24 } + - { offset: 0xA4C11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC10setupPanelyyF', symObjAddr: 0x56D0, symBinAddr: 0x22994, symSize: 0xD0 } + - { offset: 0xA4CB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC10setupPanelyyFTo', symObjAddr: 0x57A0, symBinAddr: 0x22A64, symSize: 0x28 } + - { offset: 0xA4CE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x57C8, symBinAddr: 0x22A8C, symSize: 0x274 } + - { offset: 0xA4F25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x5A3C, symBinAddr: 0x22D00, symSize: 0x50 } + - { offset: 0xA4F41, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_8, symObjAddr: 0x5ABC, symBinAddr: 0x22D50, symSize: 0x14 } + - { offset: 0xA4F55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CategoryFiltersVwet', symObjAddr: 0x5AD0, symBinAddr: 0x22D64, symSize: 0x20 } + - { offset: 0xA4F69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CategoryFiltersVwst', symObjAddr: 0x5AF0, symBinAddr: 0x22D84, symSize: 0x30 } + - { offset: 0xA4F7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CategoryFiltersVMa', symObjAddr: 0x5B20, symBinAddr: 0x22DB4, symSize: 0x10 } + - { offset: 0xA4FA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x5BAC, symBinAddr: 0x22DC4, symSize: 0xC } + - { offset: 0xA4FF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x5BB8, symBinAddr: 0x22DD0, symSize: 0x68 } + - { offset: 0xA508D, size: 0x8, addend: 0x0, symName: '_$sypWOb', symObjAddr: 0x5C64, symBinAddr: 0x22E38, symSize: 0x10 } + - { offset: 0xA50C2, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x5EC4, symBinAddr: 0x23080, symSize: 0x160 } + - { offset: 0xA513D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSS_SSTg5', symObjAddr: 0x6024, symBinAddr: 0x231E0, symSize: 0x12C } + - { offset: 0xA51B8, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSS_ypTg5', symObjAddr: 0x6150, symBinAddr: 0x2330C, symSize: 0x12C } + - { offset: 0xA5233, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x627C, symBinAddr: 0x23438, symSize: 0x100 } + - { offset: 0xA52AE, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtF8PenNavUI9LayerTreeO8GradientV_SSTg5', symObjAddr: 0x637C, symBinAddr: 0x23538, symSize: 0x11C } + - { offset: 0xA5329, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x6498, symBinAddr: 0x23654, symSize: 0x114 } + - { offset: 0xA53A4, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0x65AC, symBinAddr: 0x23768, symSize: 0x124 } + - { offset: 0xA541F, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x66D0, symBinAddr: 0x2388C, symSize: 0x120 } + - { offset: 0xA54A5, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x67F0, symBinAddr: 0x239AC, symSize: 0x1F4 } + - { offset: 0xA5582, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI18FloatingPanelStateC_SaySo18NSLayoutConstraintCGTg5', symObjAddr: 0x69E4, symBinAddr: 0x23BA0, symSize: 0x158 } + - { offset: 0xA5632, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_SSTg5', symObjAddr: 0x6B3C, symBinAddr: 0x23CF8, symSize: 0x16C } + - { offset: 0xA56F8, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_SbTg5', symObjAddr: 0x6CA8, symBinAddr: 0x23E64, symSize: 0x15C } + - { offset: 0xA57B3, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_ypTg5', symObjAddr: 0x6E04, symBinAddr: 0x23FC0, symSize: 0x198 } + - { offset: 0xA5871, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI11RouteOptionV0gH3KeyO_SbTg5', symObjAddr: 0x6F9C, symBinAddr: 0x24158, symSize: 0x140 } + - { offset: 0xA5937, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x70DC, symBinAddr: 0x24298, symSize: 0x150 } + - { offset: 0xA59F2, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI9LayerTreeO8GradientV_SSTg5', symObjAddr: 0x722C, symBinAddr: 0x243E8, symSize: 0x164 } + - { offset: 0xA5AB8, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_8PenNavUI3DOMO15GraphicsElementCTg5', symObjAddr: 0x7390, symBinAddr: 0x2454C, symSize: 0x164 } + - { offset: 0xA5B89, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGTg5', symObjAddr: 0x74F4, symBinAddr: 0x246B0, symSize: 0x170 } + - { offset: 0xA5C44, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x7664, symBinAddr: 0x24820, symSize: 0x15C } + - { offset: 0xA5D15, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI9FontStyleO_So6UIFontCTg5', symObjAddr: 0x77C0, symBinAddr: 0x2497C, symSize: 0x150 } + - { offset: 0xA5DDB, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSi_8PenNavUI5ColorVTg5', symObjAddr: 0x7910, symBinAddr: 0x24ACC, symSize: 0x16C } + - { offset: 0xA5EAC, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI11CommandLineO8ModifierO_SSSgTg5', symObjAddr: 0x7A7C, symBinAddr: 0x24C38, symSize: 0x158 } + - { offset: 0xA5F67, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x7BD4, symBinAddr: 0x24D90, symSize: 0x1C4 } + - { offset: 0xA602D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI3DOMO10StyleSheetV8SelectorO_AF22PresentationAttributesVTg5', symObjAddr: 0x7D98, symBinAddr: 0x24F54, symSize: 0x1F8 } + - { offset: 0xA60E8, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0x7F90, symBinAddr: 0x2514C, symSize: 0x164 } + - { offset: 0xA61AE, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI18FloatingPanelStateC_AD0gH15LayoutAnchoring_pTg5', symObjAddr: 0x80F4, symBinAddr: 0x252B0, symSize: 0x158 } + - { offset: 0xA628A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x824C, symBinAddr: 0x25408, symSize: 0x338 } + - { offset: 0xA63B8, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI18FloatingPanelStateC_SaySo18NSLayoutConstraintCGTg5', symObjAddr: 0x8584, symBinAddr: 0x25740, symSize: 0x268 } + - { offset: 0xA64B5, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_SSTg5', symObjAddr: 0x87EC, symBinAddr: 0x259A8, symSize: 0x2B4 } + - { offset: 0xA65A7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_SbTg5', symObjAddr: 0x8AA0, symBinAddr: 0x25C5C, symSize: 0x294 } + - { offset: 0xA66A4, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_ypTg5', symObjAddr: 0x8D34, symBinAddr: 0x25EF0, symSize: 0x2AC } + - { offset: 0xA67CB, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSi_Say7Penguin8ScheduleCGTg5', symObjAddr: 0x8FE0, symBinAddr: 0x2619C, symSize: 0x264 } + - { offset: 0xA68B2, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI11RouteOptionV0nO3KeyO_SbTg5', symObjAddr: 0x9244, symBinAddr: 0x26400, symSize: 0x164 } + - { offset: 0xA6912, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x93A8, symBinAddr: 0x26564, symSize: 0x264 } + - { offset: 0xA6A49, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI9LayerTreeO8GradientV_SSTg5', symObjAddr: 0x960C, symBinAddr: 0x267C8, symSize: 0x29C } + - { offset: 0xA6BAE, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_8PenNavUI3DOMO15GraphicsElementCTg5', symObjAddr: 0x98A8, symBinAddr: 0x26A64, symSize: 0x29C } + - { offset: 0xA6CE7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGTg5', symObjAddr: 0x9B44, symBinAddr: 0x26D00, symSize: 0x2CC } + - { offset: 0xA6EB4, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x9E10, symBinAddr: 0x26FCC, symSize: 0x2E8 } + - { offset: 0xA7051, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI9FontStyleO_So6UIFontCTg5', symObjAddr: 0xA0F8, symBinAddr: 0x272B4, symSize: 0x40C } + - { offset: 0xA719B, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSi_8PenNavUI5ColorVTg5', symObjAddr: 0xA548, symBinAddr: 0x27704, symSize: 0x294 } + - { offset: 0xA72C2, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI11CommandLineO8ModifierO_SSSgTg5', symObjAddr: 0xA7DC, symBinAddr: 0x27998, symSize: 0x3FC } + - { offset: 0xA7423, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0xABD8, symBinAddr: 0x27D94, symSize: 0x2C4 } + - { offset: 0xA753A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_AH22PresentationAttributesVTg5', symObjAddr: 0xAE9C, symBinAddr: 0x28058, symSize: 0x310 } + - { offset: 0xA76E7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0xB1AC, symBinAddr: 0x28368, symSize: 0x29C } + - { offset: 0xA77D9, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI18FloatingPanelStateC_AF0nO15LayoutAnchoring_pTg5', symObjAddr: 0xB448, symBinAddr: 0x28604, symSize: 0x268 } + - { offset: 0xA78FD, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV16_unsafeInsertNew3key5valueyxn_q_ntF8PenNavUI11RouteOptionV0kL3KeyO_SbTg5', symObjAddr: 0xB6B0, symBinAddr: 0x2886C, symSize: 0x1A4 } + - { offset: 0xA7A6B, size: 0x8, addend: 0x0, symName: '_$sSa13_copyContents12initializings16IndexingIteratorVySayxGG_SitSryxG_tFSo18NSLayoutConstraintC_Tg5', symObjAddr: 0xB854, symBinAddr: 0x28A10, symSize: 0x170 } + - { offset: 0xA7C50, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSbABXEfU_SaySSG_TG5', symObjAddr: 0xBD00, symBinAddr: 0x28EA8, symSize: 0x54 } + - { offset: 0xA7CB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_TA', symObjAddr: 0xBD78, symBinAddr: 0x28F20, symSize: 0x8 } + - { offset: 0xA7D19, size: 0x8, addend: 0x0, symName: '_$sSh21_nonEmptyArrayLiteralShyxGSayxG_tcfC8PenNavUI9ToastTypeO_Tt0g5Tf4g_n', symObjAddr: 0xBD80, symBinAddr: 0x28F28, symSize: 0x130 } + - { offset: 0xA7E4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU_TA', symObjAddr: 0xBEDC, symBinAddr: 0x29084, symSize: 0x8 } + - { offset: 0xA7E62, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xBEE4, symBinAddr: 0x2908C, symSize: 0x10 } + - { offset: 0xA7E76, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xBEF4, symBinAddr: 0x2909C, symSize: 0x8 } + - { offset: 0xA7E9C, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSbABXEfU_SaySSG_TG5TA', symObjAddr: 0xBF8C, symBinAddr: 0x290A4, symSize: 0x54 } + - { offset: 0xA7F19, size: 0x8, addend: 0x0, symName: '_$sypWOc', symObjAddr: 0xC000, symBinAddr: 0x290F8, symSize: 0x3C } + - { offset: 0xA7F2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4dnn_n', symObjAddr: 0xC118, symBinAddr: 0x29210, symSize: 0x1A8 } + - { offset: 0xA8012, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC13dismissAction33_A0B591B96AA499ED77538E2604F14735LLyyFyycfU_TA', symObjAddr: 0xC2C8, symBinAddr: 0x293B8, symSize: 0x8 } + - { offset: 0xA8047, size: 0x8, addend: 0x0, symName: '_$sSh21_nonEmptyArrayLiteralShyxGSayxG_tcfCSS_Tt0g5Tf4g_n', symObjAddr: 0xC2F0, symBinAddr: 0x293C0, symSize: 0x15C } + - { offset: 0xA81BF, size: 0x8, addend: 0x0, symName: '_$sSh21_nonEmptyArrayLiteralShyxGSayxG_tcfC10Foundation8CalendarV9ComponentO_Tt0g5Tf4g_n', symObjAddr: 0xC44C, symBinAddr: 0x2951C, symSize: 0x248 } + - { offset: 0xA8298, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetWOb', symObjAddr: 0xC6D8, symBinAddr: 0x297A8, symSize: 0x48 } + - { offset: 0xA82AC, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetWOd', symObjAddr: 0xC720, symBinAddr: 0x297F0, symSize: 0x48 } + - { offset: 0xA82C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_TA', symObjAddr: 0xC794, symBinAddr: 0x29864, symSize: 0x8 } + - { offset: 0xA82D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFSb7Penguin10PoiPolygonVXEfU_TA', symObjAddr: 0xC79C, symBinAddr: 0x2986C, symSize: 0x1C } + - { offset: 0xA82E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC03setC033_A0B591B96AA499ED77538E2604F14735LLyyFySo7UIImageCSgcfU_TA', symObjAddr: 0xC834, symBinAddr: 0x29888, symSize: 0x8 } + - { offset: 0xA82FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVWOc', symObjAddr: 0xC83C, symBinAddr: 0x29890, symSize: 0x3C } + - { offset: 0xA8310, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVWOh', symObjAddr: 0xC878, symBinAddr: 0x298CC, symSize: 0x34 } + - { offset: 0xA8324, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVWOc', symObjAddr: 0xC8EC, symBinAddr: 0x29900, symSize: 0x44 } + - { offset: 0xA8338, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOWOy', symObjAddr: 0xC930, symBinAddr: 0x29944, symSize: 0x18 } + - { offset: 0xA834C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVWOb', symObjAddr: 0xC948, symBinAddr: 0x2995C, symSize: 0x44 } + - { offset: 0xA837A, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x0, symBinAddr: 0x1D318, symSize: 0x110 } + - { offset: 0xA8441, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x110, symBinAddr: 0x1D428, symSize: 0xC4 } + - { offset: 0xA856B, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x1D4, symBinAddr: 0x1D4EC, symSize: 0x1DC } + - { offset: 0xA86CA, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxFSi_Tg5', symObjAddr: 0x3B0, symBinAddr: 0x1D6C8, symSize: 0xA0 } + - { offset: 0xA871B, size: 0x8, addend: 0x0, symName: '_$sSTsE8contains5whereS2b7ElementQzKXE_tKFSS_Tg5', symObjAddr: 0x450, symBinAddr: 0x1D768, symSize: 0xC8 } + - { offset: 0xA8782, size: 0x8, addend: 0x0, symName: '_$sSTsE8contains5whereS2b7ElementQzKXE_tKFSaySSG_Tg5', symObjAddr: 0x518, symBinAddr: 0x1D830, symSize: 0xA4 } + - { offset: 0xA8896, size: 0x8, addend: 0x0, symName: '_$sSTsE8contains5whereS2b7ElementQzKXE_tKFSay8PenNavUI5PlaceCG_Tg5', symObjAddr: 0x5BC, symBinAddr: 0x1D8D4, symSize: 0x134 } + - { offset: 0xA89CE, size: 0x8, addend: 0x0, symName: '_$sSTsE8contains5whereS2b7ElementQzKXE_tKFSaySo19UIGestureRecognizerCG_Tg5', symObjAddr: 0x6F0, symBinAddr: 0x1DA08, symSize: 0x128 } + - { offset: 0xA8BD1, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFSay7Penguin10PoiPolygonVG_Tg5', symObjAddr: 0xA30, symBinAddr: 0x1DD48, symSize: 0x144 } + - { offset: 0xA8C8C, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFSay8PenNavUI3DOMO7PatternVG_Tg5', symObjAddr: 0xCD8, symBinAddr: 0x1DFF0, symSize: 0x120 } + - { offset: 0xA8FFB, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSo18NSLayoutConstraintC_SayAFGTg5', symObjAddr: 0x401C, symBinAddr: 0x212E0, symSize: 0xF4 } + - { offset: 0xA91D9, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI9LayerTreeO4PathC7SegmentO_SayAKGTg5', symObjAddr: 0x4110, symBinAddr: 0x213D4, symSize: 0xF0 } + - { offset: 0xA947E, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSf_SaySfGTg5', symObjAddr: 0x4328, symBinAddr: 0x215EC, symSize: 0xE8 } + - { offset: 0xA9723, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF7Penguin5FloorCSg_SayAHGTg5', symObjAddr: 0x4470, symBinAddr: 0x21734, symSize: 0xF8 } + - { offset: 0xA99B9, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSS_SaySSGTg5', symObjAddr: 0x4568, symBinAddr: 0x2182C, symSize: 0xF0 } + - { offset: 0xA9C5E, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSo22CLLocationCoordinate2DV_SayAFGTg5', symObjAddr: 0x4658, symBinAddr: 0x2191C, symSize: 0xE8 } + - { offset: 0xA9F03, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI3DOMO10StyleSheetV8SelectorO_SayAKGTg5', symObjAddr: 0x47B0, symBinAddr: 0x21A74, symSize: 0xF4 } + - { offset: 0xAA1A8, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI15RendererCommandOyAE11CGTextTypesVG_SayAJGTg5', symObjAddr: 0x48A4, symBinAddr: 0x21B68, symSize: 0xFC } + - { offset: 0xAA44D, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI16SFSymbolRendererV10SymbolPathV_SayAIGTg5', symObjAddr: 0x49A0, symBinAddr: 0x21C64, symSize: 0xF4 } + - { offset: 0xAA6F2, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI15RendererCommandOyAE7CGTypesVG_SayAJGTg5', symObjAddr: 0x4A94, symBinAddr: 0x21D58, symSize: 0x10C } + - { offset: 0xAA99F, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSi_SaySiGTg5', symObjAddr: 0x4BA0, symBinAddr: 0x21E64, symSize: 0xE8 } + - { offset: 0xAACAA, size: 0x8, addend: 0x0, symName: '_$sSh10isDisjoint4withSbShyxG_tF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x5C74, symBinAddr: 0x22E48, symSize: 0x16C } + - { offset: 0xAB20A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x818, symBinAddr: 0x1DB30, symSize: 0x20 } + - { offset: 0xAB264, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x838, symBinAddr: 0x1DB50, symSize: 0x14 } + - { offset: 0xAB2B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC13iconContainerSo6UIViewCSgvgTo', symObjAddr: 0x84C, symBinAddr: 0x1DB64, symSize: 0x20 } + - { offset: 0xAB30F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC13iconContainerSo6UIViewCSgvsTo', symObjAddr: 0x86C, symBinAddr: 0x1DB84, symSize: 0x14 } + - { offset: 0xAB360, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12categoryNameSo7UILabelCSgvgTo', symObjAddr: 0x880, symBinAddr: 0x1DB98, symSize: 0x20 } + - { offset: 0xAB3BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12categoryNameSo7UILabelCSgvsTo', symObjAddr: 0x8A0, symBinAddr: 0x1DBB8, symSize: 0x14 } + - { offset: 0xAB40B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC19categoryInformationSo7UILabelCSgvgTo', symObjAddr: 0x8B4, symBinAddr: 0x1DBCC, symSize: 0x20 } + - { offset: 0xAB460, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC19categoryInformationSo7UILabelCSgvsTo', symObjAddr: 0x8D4, symBinAddr: 0x1DBEC, symSize: 0x14 } + - { offset: 0xAB4B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12categoryIconSo07UIImageF0CSgvgTo', symObjAddr: 0x8E8, symBinAddr: 0x1DC00, symSize: 0x20 } + - { offset: 0xAB50B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12categoryIconSo07UIImageF0CSgvsTo', symObjAddr: 0x908, symBinAddr: 0x1DC20, symSize: 0x14 } + - { offset: 0xAB55C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC07loadingF0So07UIStackF0CSgvgTo', symObjAddr: 0x91C, symBinAddr: 0x1DC34, symSize: 0x20 } + - { offset: 0xAB5B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC07loadingF0So07UIStackF0CSgvsTo', symObjAddr: 0x93C, symBinAddr: 0x1DC54, symSize: 0x14 } + - { offset: 0xAB607, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC18exploreVenueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x950, symBinAddr: 0x1DC68, symSize: 0x20 } + - { offset: 0xAB661, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC18exploreVenueButtonSo8UIButtonCSgvsTo', symObjAddr: 0x970, symBinAddr: 0x1DC88, symSize: 0x14 } + - { offset: 0xAB6B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12exploreStackSo07UIStackF0CSgvgTo', symObjAddr: 0x984, symBinAddr: 0x1DC9C, symSize: 0x20 } + - { offset: 0xAB707, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12exploreStackSo07UIStackF0CSgvsTo', symObjAddr: 0x9A4, symBinAddr: 0x1DCBC, symSize: 0x14 } + - { offset: 0xAB758, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC22searchVerticalConstantSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x9B8, symBinAddr: 0x1DCD0, symSize: 0x20 } + - { offset: 0xAB7B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC22searchVerticalConstantSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x9D8, symBinAddr: 0x1DCF0, symSize: 0x14 } + - { offset: 0xAB803, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC09separatorF0So6UIViewCSgvgTo', symObjAddr: 0x9EC, symBinAddr: 0x1DD04, symSize: 0x10 } + - { offset: 0xAB81B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC09separatorF0So6UIViewCSgvgTo', symObjAddr: 0x9EC, symBinAddr: 0x1DD04, symSize: 0x10 } + - { offset: 0xAB856, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC09separatorF0So6UIViewCSgvsTo', symObjAddr: 0x9FC, symBinAddr: 0x1DD14, symSize: 0x34 } + - { offset: 0xAB8F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC11viewDidLoadyyF', symObjAddr: 0xDF8, symBinAddr: 0x1E110, symSize: 0x1A0 } + - { offset: 0xABAC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x1408, symBinAddr: 0x1E720, symSize: 0x28 } + - { offset: 0xABAD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC03setC033_A0B591B96AA499ED77538E2604F14735LLyyF', symObjAddr: 0x1430, symBinAddr: 0x1E748, symSize: 0x38C } + - { offset: 0xABC02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC03setC033_A0B591B96AA499ED77538E2604F14735LLyyFySo7UIImageCSgcfU_', symObjAddr: 0x17BC, symBinAddr: 0x1EAD4, symSize: 0xAC } + - { offset: 0xABD4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC03setD16CountInformation33_A0B591B96AA499ED77538E2604F14735LLyyF', symObjAddr: 0x1868, symBinAddr: 0x1EB80, symSize: 0x340 } + - { offset: 0xAC061, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC7dismissyyFTo', symObjAddr: 0x1BA8, symBinAddr: 0x1EEC0, symSize: 0xA0 } + - { offset: 0xAC0E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC13dismissAction33_A0B591B96AA499ED77538E2604F14735LLyyFyycfU_', symObjAddr: 0x1C48, symBinAddr: 0x1EF60, symSize: 0x88 } + - { offset: 0xAC151, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC18exploreVenueActionyySo8UIButtonCFTo', symObjAddr: 0x1CD0, symBinAddr: 0x1EFE8, symSize: 0x70 } + - { offset: 0xAC231, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9resetData33_A0B591B96AA499ED77538E2604F14735LLyyF', symObjAddr: 0x1D40, symBinAddr: 0x1F058, symSize: 0x208 } + - { offset: 0xAC404, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x20E4, symBinAddr: 0x1F3FC, symSize: 0x68 } + - { offset: 0xAC4F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x214C, symBinAddr: 0x1F464, symSize: 0x1DC } + - { offset: 0xAC766, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2328, symBinAddr: 0x1F640, symSize: 0xB8 } + - { offset: 0xAC7A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x23E0, symBinAddr: 0x1F6F8, symSize: 0x180 } + - { offset: 0xAC833, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFSb7Penguin10PoiPolygonVXEfU_', symObjAddr: 0x2560, symBinAddr: 0x1F878, symSize: 0xF4 } + - { offset: 0xAC930, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2654, symBinAddr: 0x1F96C, symSize: 0xB0 } + - { offset: 0xAC94B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x2704, symBinAddr: 0x1FA1C, symSize: 0xD0 } + - { offset: 0xAC9CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0x27D4, symBinAddr: 0x1FAEC, symSize: 0x274 } + - { offset: 0xACA29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_', symObjAddr: 0x2A48, symBinAddr: 0x1FD60, symSize: 0xE8 } + - { offset: 0xACAC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0x2B30, symBinAddr: 0x1FE48, symSize: 0x50 } + - { offset: 0xACBA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x2B80, symBinAddr: 0x1FE98, symSize: 0x428 } + - { offset: 0xACE09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x2FA8, symBinAddr: 0x202C0, symSize: 0x60 } + - { offset: 0xACE1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3008, symBinAddr: 0x20320, symSize: 0x404 } + - { offset: 0xAD077, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x340C, symBinAddr: 0x20724, symSize: 0x28 } + - { offset: 0xAD08B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCfD', symObjAddr: 0x3598, symBinAddr: 0x208B0, symSize: 0x34 } + - { offset: 0xAD48B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTf4dnnn_n', symObjAddr: 0xC03C, symBinAddr: 0x29134, symSize: 0xDC } + - { offset: 0xAD927, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AppleSynthesizerCfD', symObjAddr: 0x0, symBinAddr: 0x299B4, symSize: 0x24 } + - { offset: 0xAD978, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AppleSynthesizerCMa', symObjAddr: 0x24, symBinAddr: 0x299D8, symSize: 0x20 } + - { offset: 0xAD9BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AppleSynthesizerCfD', symObjAddr: 0x0, symBinAddr: 0x299B4, symSize: 0x24 } + - { offset: 0xAE2F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC11makeNonZeroAEyF', symObjAddr: 0x0, symBinAddr: 0x299F8, symSize: 0xEB0 } + - { offset: 0xAFF5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC9makeNodes33_6ED7540220CCE3981622A6B3F3D0E057LLSayAA03SubF4NodeAGLLVGyF', symObjAddr: 0xEB0, symBinAddr: 0x2A8A8, symSize: 0x484 } + - { offset: 0xB0904, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8reversedAEvg', symObjAddr: 0x1334, symBinAddr: 0x2AD2C, symSize: 0x5C4 } + - { offset: 0xB145F, size: 0x8, addend: 0x0, symName: '_$sST8PenNavUIAA9LayerTreeO4PathC7SegmentO7ElementRtzrlE9directionAE9DirectionOvgSayAGG_Tg5', symObjAddr: 0x1DEC, symBinAddr: 0x2B7E4, symSize: 0x270 } + - { offset: 0xB18CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVWOc', symObjAddr: 0x244C, symBinAddr: 0x2BE44, symSize: 0x34 } + - { offset: 0xB18E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVWOh', symObjAddr: 0x2480, symBinAddr: 0x2BE78, symSize: 0x2C } + - { offset: 0xB18F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwxx', symObjAddr: 0x2558, symBinAddr: 0x2BEA4, symSize: 0x30 } + - { offset: 0xB190A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwcp', symObjAddr: 0x2588, symBinAddr: 0x2BED4, symSize: 0x5C } + - { offset: 0xB191E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwca', symObjAddr: 0x25E4, symBinAddr: 0x2BF30, symSize: 0x9C } + - { offset: 0xB1932, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwta', symObjAddr: 0x2694, symBinAddr: 0x2BFCC, symSize: 0x5C } + - { offset: 0xB1946, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwet', symObjAddr: 0x26F0, symBinAddr: 0x2C028, symSize: 0x48 } + - { offset: 0xB195A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwst', symObjAddr: 0x2738, symBinAddr: 0x2C070, symSize: 0x4C } + - { offset: 0xB196E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVMa', symObjAddr: 0x2784, symBinAddr: 0x2C0BC, symSize: 0x10 } + - { offset: 0xB1BCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV08containsF0ySbADF', symObjAddr: 0x18F8, symBinAddr: 0x2B2F0, symSize: 0x21C } + - { offset: 0xB1F3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV6appendyyADF', symObjAddr: 0x1B14, symBinAddr: 0x2B50C, symSize: 0x2D8 } + - { offset: 0xB255A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV9windPathsySayAA9LayerTreeO0E0CGAI9DirectionOF', symObjAddr: 0x205C, symBinAddr: 0x2BA54, symSize: 0x3F0 } + - { offset: 0xB2FAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC12fetchRequestSo07NSFetchG0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x2C0CC, symSize: 0x6C } + - { offset: 0xB304D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC12fetchRequestSo07NSFetchG0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x2C0CC, symSize: 0x6C } + - { offset: 0xB30A8, size: 0x8, addend: 0x0, symName: _keypath_get_selector_campaignId, symObjAddr: 0x6C, symBinAddr: 0x2C138, symSize: 0xC } + - { offset: 0xB30BC, size: 0x8, addend: 0x0, symName: _keypath_get_selector_lastNotificationDate, symObjAddr: 0xBC, symBinAddr: 0x2C188, symSize: 0xC } + - { offset: 0xB30D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvpACTK', symObjAddr: 0xC8, symBinAddr: 0x2C194, symSize: 0x78 } + - { offset: 0xB30E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvpACTk', symObjAddr: 0x144, symBinAddr: 0x2C210, symSize: 0xD0 } + - { offset: 0xB3100, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVSgWOc', symObjAddr: 0x25C, symBinAddr: 0x2C2E4, symSize: 0x48 } + - { offset: 0xB349F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10scrollViewAA06ScrollH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2C33C, symSize: 0x10 } + - { offset: 0xB3C8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellCfETo', symObjAddr: 0xFB8, symBinAddr: 0x2D2F4, symSize: 0xF8 } + - { offset: 0xB3CBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellCMa', symObjAddr: 0x10B0, symBinAddr: 0x2D3EC, symSize: 0x20 } + - { offset: 0xB3E88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10scrollViewAA06ScrollH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2C33C, symSize: 0x10 } + - { offset: 0xB3EA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10scrollViewAA06ScrollH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2C33C, symSize: 0x10 } + - { offset: 0xB3EE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10scrollViewAA06ScrollH0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x2C34C, symSize: 0x34 } + - { offset: 0xB3FCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9stackViewSo6UIViewCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x2C380, symSize: 0x10 } + - { offset: 0xB3FE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9stackViewSo6UIViewCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x2C380, symSize: 0x10 } + - { offset: 0xB4026, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9stackViewSo6UIViewCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x2C390, symSize: 0x34 } + - { offset: 0xB4075, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20outerTodayStatusViewSo6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x2C3C4, symSize: 0x10 } + - { offset: 0xB408D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20outerTodayStatusViewSo6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x2C3C4, symSize: 0x10 } + - { offset: 0xB40C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20outerTodayStatusViewSo6UIViewCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x2C3D4, symSize: 0x34 } + - { offset: 0xB4117, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20innerTodayStatusViewSo6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x2C408, symSize: 0x10 } + - { offset: 0xB412F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20innerTodayStatusViewSo6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x2C408, symSize: 0x10 } + - { offset: 0xB416A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20innerTodayStatusViewSo6UIViewCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x2C418, symSize: 0x34 } + - { offset: 0xB41B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11statusLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x2C44C, symSize: 0x10 } + - { offset: 0xB41D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11statusLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x2C44C, symSize: 0x10 } + - { offset: 0xB4211, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11statusLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x2C45C, symSize: 0x34 } + - { offset: 0xB4260, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x2C490, symSize: 0x10 } + - { offset: 0xB4278, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x2C490, symSize: 0x10 } + - { offset: 0xB42B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x2C4A0, symSize: 0x34 } + - { offset: 0xB4302, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11campusLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x2C4D4, symSize: 0x10 } + - { offset: 0xB431A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11campusLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x2C4D4, symSize: 0x10 } + - { offset: 0xB4355, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11campusLabelSo7UILabelCSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x2C4E4, symSize: 0x34 } + - { offset: 0xB43A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10campusViewSo6UIViewCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x2C518, symSize: 0x10 } + - { offset: 0xB43BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10campusViewSo6UIViewCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x2C518, symSize: 0x10 } + - { offset: 0xB43F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10campusViewSo6UIViewCSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x2C528, symSize: 0x34 } + - { offset: 0xB4446, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x220, symBinAddr: 0x2C55C, symSize: 0x10 } + - { offset: 0xB445E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x220, symBinAddr: 0x2C55C, symSize: 0x10 } + - { offset: 0xB4499, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0x230, symBinAddr: 0x2C56C, symSize: 0x34 } + - { offset: 0xB44E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9venueViewSo6UIViewCSgvgTo', symObjAddr: 0x264, symBinAddr: 0x2C5A0, symSize: 0x10 } + - { offset: 0xB4500, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9venueViewSo6UIViewCSgvgTo', symObjAddr: 0x264, symBinAddr: 0x2C5A0, symSize: 0x10 } + - { offset: 0xB453B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9venueViewSo6UIViewCSgvsTo', symObjAddr: 0x274, symBinAddr: 0x2C5B0, symSize: 0x34 } + - { offset: 0xB458A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x2A8, symBinAddr: 0x2C5E4, symSize: 0x10 } + - { offset: 0xB45A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x2A8, symBinAddr: 0x2C5E4, symSize: 0x10 } + - { offset: 0xB45DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x2B8, symBinAddr: 0x2C5F4, symSize: 0x34 } + - { offset: 0xB462C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9floorViewSo6UIViewCSgvgTo', symObjAddr: 0x2EC, symBinAddr: 0x2C628, symSize: 0x10 } + - { offset: 0xB4644, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9floorViewSo6UIViewCSgvgTo', symObjAddr: 0x2EC, symBinAddr: 0x2C628, symSize: 0x10 } + - { offset: 0xB467F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9floorViewSo6UIViewCSgvsTo', symObjAddr: 0x2FC, symBinAddr: 0x2C638, symSize: 0x34 } + - { offset: 0xB46CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC13distanceStackSo11UIStackViewCSgvgTo', symObjAddr: 0x330, symBinAddr: 0x2C66C, symSize: 0x20 } + - { offset: 0xB4728, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC13distanceStackSo11UIStackViewCSgvsTo', symObjAddr: 0x350, symBinAddr: 0x2C68C, symSize: 0x14 } + - { offset: 0xB47C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC12awakeFromNibyyF', symObjAddr: 0x364, symBinAddr: 0x2C6A0, symSize: 0x188 } + - { offset: 0xB4933, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC12awakeFromNibyyFTo', symObjAddr: 0x4EC, symBinAddr: 0x2C828, symSize: 0x28 } + - { offset: 0xB496F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC16didTapStatusViewyyFTo', symObjAddr: 0x514, symBinAddr: 0x2C850, symSize: 0x64 } + - { offset: 0xB4A09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0x578, symBinAddr: 0x2C8B4, symSize: 0x54 } + - { offset: 0xB4AB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10updateInfo3foryAA11PoiViewDataCSg_tF', symObjAddr: 0x5CC, symBinAddr: 0x2C908, symSize: 0x6F4 } + - { offset: 0xB4F3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0xCC0, symBinAddr: 0x2CFFC, symSize: 0x140 } + - { offset: 0xB4F7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xE00, symBinAddr: 0x2D13C, symSize: 0x48 } + - { offset: 0xB4FB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xE48, symBinAddr: 0x2D184, symSize: 0x118 } + - { offset: 0xB4FE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xF60, symBinAddr: 0x2D29C, symSize: 0x28 } + - { offset: 0xB4FFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellCfD', symObjAddr: 0xF88, symBinAddr: 0x2D2C4, symSize: 0x30 } + - { offset: 0xB539A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionViewSo012UICollectionG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2D40C, symSize: 0x20 } + - { offset: 0xB55B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellCfETo', symObjAddr: 0x3B0, symBinAddr: 0x2D7BC, symSize: 0x70 } + - { offset: 0xB55E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellCMa', symObjAddr: 0x420, symBinAddr: 0x2D82C, symSize: 0x20 } + - { offset: 0xB5652, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionG0C_SitFTo', symObjAddr: 0x440, symBinAddr: 0x2D84C, symSize: 0x4C } + - { offset: 0xB5693, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionG0C_SitFTo', symObjAddr: 0x440, symBinAddr: 0x2D84C, symSize: 0x4C } + - { offset: 0xB57A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionView_13cellForItemAtSo012UICollectiongE0CSo0lG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x48C, symBinAddr: 0x2D898, symSize: 0x144 } + - { offset: 0xB58A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionView_15didSelectItemAtySo012UICollectionG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x5D0, symBinAddr: 0x2D9DC, symSize: 0xAC } + - { offset: 0xB58D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionView_15didSelectItemAtySo012UICollectionG0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x67C, symBinAddr: 0x2DA88, symSize: 0xCC } + - { offset: 0xB5B0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionViewSo012UICollectionG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2D40C, symSize: 0x20 } + - { offset: 0xB5B6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionViewSo012UICollectionG0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x2D42C, symSize: 0x14 } + - { offset: 0xB5BBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x2D440, symSize: 0x10 } + - { offset: 0xB5BD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x2D440, symSize: 0x10 } + - { offset: 0xB5C14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC12seeAllButtonSo8UIButtonCSgvsTo', symObjAddr: 0x44, symBinAddr: 0x2D450, symSize: 0x34 } + - { offset: 0xB5C7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC12awakeFromNibyyFTo', symObjAddr: 0x78, symBinAddr: 0x2D484, symSize: 0x90 } + - { offset: 0xB5D0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC13sellAllButtonyySo8UIButtonCFTo', symObjAddr: 0x108, symBinAddr: 0x2D514, symSize: 0x70 } + - { offset: 0xB5D4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x178, symBinAddr: 0x2D584, symSize: 0xDC } + - { offset: 0xB5D8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x254, symBinAddr: 0x2D660, symSize: 0x48 } + - { offset: 0xB5DC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x29C, symBinAddr: 0x2D6A8, symSize: 0xBC } + - { offset: 0xB5DF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x358, symBinAddr: 0x2D764, symSize: 0x28 } + - { offset: 0xB5E0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellCfD', symObjAddr: 0x380, symBinAddr: 0x2D78C, symSize: 0x30 } + - { offset: 0xB61F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseAnchor_7elementAA3DOMO0F0CSgAA15AttributeParser_p_AA3XMLO7ElementCtKF', symObjAddr: 0x0, symBinAddr: 0x2DB54, symSize: 0x1AC } + - { offset: 0xB6264, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseAnchor_7elementAA3DOMO0F0CSgAA15AttributeParser_p_AA3XMLO7ElementCtKF', symObjAddr: 0x0, symBinAddr: 0x2DB54, symSize: 0x1AC } + - { offset: 0xB6378, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseText_5valueAA3DOMO0F0CAA15AttributeParser_p_SStKFTf4nnd_n', symObjAddr: 0x1AC, symBinAddr: 0x2DD00, symSize: 0x184 } + - { offset: 0xB644F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseText_7elementAA3DOMO0F0CSgAA15AttributeParser_p_AA3XMLO7ElementCtKFTf4nnd_n', symObjAddr: 0x330, symBinAddr: 0x2DE84, symSize: 0x128 } + - { offset: 0xB64D5, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgWOd', symObjAddr: 0x500, symBinAddr: 0x2DFAC, symSize: 0x48 } + - { offset: 0xB6964, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2DFF4, symSize: 0x10 } + - { offset: 0xB6E35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCfE', symObjAddr: 0x116C, symBinAddr: 0x2F160, symSize: 0xA8 } + - { offset: 0xB6E62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCfETo', symObjAddr: 0x1244, symBinAddr: 0x2F238, symSize: 0xB4 } + - { offset: 0xB6E91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCMa', symObjAddr: 0x12F8, symBinAddr: 0x2F2EC, symSize: 0x20 } + - { offset: 0xB6ECF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x1318, symBinAddr: 0x2F30C, symSize: 0x68 } + - { offset: 0xB701D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1380, symBinAddr: 0x2F374, symSize: 0x184 } + - { offset: 0xB7241, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0x1504, symBinAddr: 0x2F4F8, symSize: 0x398 } + - { offset: 0xB7641, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x189C, symBinAddr: 0x2F890, symSize: 0xB0 } + - { offset: 0xB7687, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_11willDisplay8forRowAtySo07UITableE0C_So0mE4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x194C, symBinAddr: 0x2F940, symSize: 0x110 } + - { offset: 0xB774B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC06scrollE9DidScrollyySo08UIScrollE0CF', symObjAddr: 0x1A5C, symBinAddr: 0x2FA50, symSize: 0x50 } + - { offset: 0xB77C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC06scrollE9DidScrollyySo08UIScrollE0CFTo', symObjAddr: 0x1AAC, symBinAddr: 0x2FAA0, symSize: 0x50 } + - { offset: 0xB77EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x1AFC, symBinAddr: 0x2FAF0, symSize: 0x14 } + - { offset: 0xB7838, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x1B10, symBinAddr: 0x2FB04, symSize: 0x24 } + - { offset: 0xB78AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC10setupPanelyyF', symObjAddr: 0x1B34, symBinAddr: 0x2FB28, symSize: 0xBC } + - { offset: 0xB794E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC10setupPanelyyFTo', symObjAddr: 0x1BF0, symBinAddr: 0x2FBE4, symSize: 0x28 } + - { offset: 0xB798C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x1C18, symBinAddr: 0x2FC0C, symSize: 0x268 } + - { offset: 0xB7BBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x1E80, symBinAddr: 0x2FE74, symSize: 0x50 } + - { offset: 0xB7BEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC27floatingPanelDidChangeStateyyAA08FloatinghF0CF', symObjAddr: 0x1ED0, symBinAddr: 0x2FEC4, symSize: 0xF4 } + - { offset: 0xB7CBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC27floatingPanelDidChangeStateyyAA08FloatinghF0CFTo', symObjAddr: 0x1FC4, symBinAddr: 0x2FFB8, symSize: 0x50 } + - { offset: 0xB7D03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCAA17SearchBarDelegateA2aDP06searchH19TextDidBeginEditingyyAA0gH0CFTW', symObjAddr: 0x2014, symBinAddr: 0x30008, symSize: 0x70 } + - { offset: 0xB7D67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x2100, symBinAddr: 0x30078, symSize: 0xC } + - { offset: 0xB7DB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x210C, symBinAddr: 0x30084, symSize: 0x34 } + - { offset: 0xB7E9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTf4d_n', symObjAddr: 0x2464, symBinAddr: 0x303DC, symSize: 0xA8 } + - { offset: 0xB7F11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4dnn_n', symObjAddr: 0x250C, symBinAddr: 0x30484, symSize: 0x114 } + - { offset: 0xB7F75, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x264C, symBinAddr: 0x305BC, symSize: 0x10 } + - { offset: 0xB7F89, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x265C, symBinAddr: 0x305CC, symSize: 0x8 } + - { offset: 0xB7F9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_TA', symObjAddr: 0x2684, symBinAddr: 0x305D4, symSize: 0x8 } + - { offset: 0xB7FB1, size: 0x8, addend: 0x0, symName: '_$sSo17OS_dispatch_queueCMa', symObjAddr: 0x268C, symBinAddr: 0x305DC, symSize: 0x44 } + - { offset: 0xB7FC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU0_TA', symObjAddr: 0x26D0, symBinAddr: 0x30620, symSize: 0x8 } + - { offset: 0xB7FD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU_TA', symObjAddr: 0x27F0, symBinAddr: 0x30628, symSize: 0x8 } + - { offset: 0xB83E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2DFF4, symSize: 0x10 } + - { offset: 0xB83FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2DFF4, symSize: 0x10 } + - { offset: 0xB8445, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0So07UITableE0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x2E004, symSize: 0x34 } + - { offset: 0xB8494, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9searchBarAA06SearchH0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x2E038, symSize: 0x10 } + - { offset: 0xB84AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9searchBarAA06SearchH0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x2E038, symSize: 0x10 } + - { offset: 0xB84EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9searchBarAA06SearchH0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x2E048, symSize: 0x34 } + - { offset: 0xB853B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC09separatorE0So6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x2E07C, symSize: 0x10 } + - { offset: 0xB8553, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC09separatorE0So6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x2E07C, symSize: 0x10 } + - { offset: 0xB8593, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC09separatorE0So6UIViewCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x2E08C, symSize: 0x34 } + - { offset: 0xB860C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC11viewDidLoadyyFTo', symObjAddr: 0xCC, symBinAddr: 0x2E0C0, symSize: 0x9C } + - { offset: 0xB869D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC014configureTableE0yyF', symObjAddr: 0x168, symBinAddr: 0x2E15C, symSize: 0x1A8 } + - { offset: 0xB87BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC10showLoaderyyF', symObjAddr: 0x310, symBinAddr: 0x2E304, symSize: 0x184 } + - { offset: 0xB89D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyF', symObjAddr: 0x494, symBinAddr: 0x2E488, symSize: 0x298 } + - { offset: 0xB8CCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_', symObjAddr: 0x72C, symBinAddr: 0x2E720, symSize: 0x574 } + - { offset: 0xB8EB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU_', symObjAddr: 0xCA0, symBinAddr: 0x2EC94, symSize: 0x90 } + - { offset: 0xB8F0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU0_', symObjAddr: 0xD30, symBinAddr: 0x2ED24, symSize: 0x108 } + - { offset: 0xB90B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC10closePanelyyFTo', symObjAddr: 0xE38, symBinAddr: 0x2EE2C, symSize: 0x38 } + - { offset: 0xB90EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xE70, symBinAddr: 0x2EE64, symSize: 0x150 } + - { offset: 0xB9156, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xFC0, symBinAddr: 0x2EFB4, symSize: 0x60 } + - { offset: 0xB916A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1020, symBinAddr: 0x2F014, symSize: 0x124 } + - { offset: 0xB91C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1144, symBinAddr: 0x2F138, symSize: 0x28 } + - { offset: 0xB91DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCfD', symObjAddr: 0x1214, symBinAddr: 0x2F208, symSize: 0x30 } + - { offset: 0xB948D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC19getLocationParamter33_78381C2850B81E97E495CA315016B4E5LLSDySSypGyFTf4d_n', symObjAddr: 0x2140, symBinAddr: 0x300B8, symSize: 0x324 } + - { offset: 0xB9A78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV13encodeElement_6indentSSAC0G0C_SitF', symObjAddr: 0x0, symBinAddr: 0x30640, symSize: 0x3B8 } + - { offset: 0xB9B6B, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVySSG_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1cn_n', symObjAddr: 0x548, symBinAddr: 0x30B44, symSize: 0x68 } + - { offset: 0xB9D29, size: 0x8, addend: 0x0, symName: '_$sSlsE8dropLasty11SubSequenceQzSiFSS_Tg5Tf4ng_n', symObjAddr: 0x1850, symBinAddr: 0x31E04, symSize: 0xB8 } + - { offset: 0xBA0D5, size: 0x8, addend: 0x0, symName: '_$sSaySSGSayxGSKsWl', symObjAddr: 0x5B0, symBinAddr: 0x30BAC, symSize: 0x48 } + - { offset: 0xBA144, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFSS_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1cn_n', symObjAddr: 0x640, symBinAddr: 0x30BF4, symSize: 0xF4 } + - { offset: 0xBA395, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_SS_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1nnncn_n', symObjAddr: 0x734, symBinAddr: 0x30CE8, symSize: 0x5CC } + - { offset: 0xBAA08, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSrySSG_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1nncn_n', symObjAddr: 0xD00, symBinAddr: 0x312B4, symSize: 0x14C } + - { offset: 0xBAC16, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKFSS_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1nncn_n', symObjAddr: 0xE4C, symBinAddr: 0x31400, symSize: 0x26C } + - { offset: 0xBAFB1, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlFSS_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1nnnnc_n', symObjAddr: 0x10B8, symBinAddr: 0x3166C, symSize: 0x354 } + - { offset: 0xBB329, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV13encodeElement_6indentSSAC0G0C_SitF', symObjAddr: 0x0, symBinAddr: 0x30640, symSize: 0x3B8 } + - { offset: 0xBB978, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV18encodeElementStart33_714E3D04D4D736208724671E75290AF9LL_6indentSSAC0G0C_SitF', symObjAddr: 0x3B8, symBinAddr: 0x309F8, symSize: 0x14C } + - { offset: 0xBBC1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFTf4nd_n', symObjAddr: 0x140C, symBinAddr: 0x319C0, symSize: 0x444 } + - { offset: 0xBC393, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x31EBC, symSize: 0x8 } + - { offset: 0xBC409, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x8, symBinAddr: 0x31EC4, symSize: 0x54 } + - { offset: 0xBC4C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x31F18, symSize: 0x1C } + - { offset: 0xBC4DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x31F18, symSize: 0x1C } + - { offset: 0xBC4EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x31F18, symSize: 0x1C } + - { offset: 0xBC502, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x31F18, symSize: 0x1C } + - { offset: 0xBC516, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x31F18, symSize: 0x1C } + - { offset: 0xBC53F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x78, symBinAddr: 0x31F34, symSize: 0x50 } + - { offset: 0xBC5E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x1E8, symBinAddr: 0x320A4, symSize: 0x28 } + - { offset: 0xBC5FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x210, symBinAddr: 0x320CC, symSize: 0x28 } + - { offset: 0xBC655, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x990, symBinAddr: 0x32848, symSize: 0x84 } + - { offset: 0xBC710, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0xA14, symBinAddr: 0x328CC, symSize: 0x60 } + - { offset: 0xBC78E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xA74, symBinAddr: 0x3292C, symSize: 0x40 } + - { offset: 0xBC7E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xAB4, symBinAddr: 0x3296C, symSize: 0x5C } + - { offset: 0xBC842, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0xBB8, symBinAddr: 0x32A64, symSize: 0x28 } + - { offset: 0xBC85E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0xBE0, symBinAddr: 0x32A8C, symSize: 0x28 } + - { offset: 0xBC8A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x19AC, symBinAddr: 0x337A0, symSize: 0x28 } + - { offset: 0xBC8C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x19D4, symBinAddr: 0x337C8, symSize: 0x28 } + - { offset: 0xBCA8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseCMa', symObjAddr: 0x25C, symBinAddr: 0x32118, symSize: 0x20 } + - { offset: 0xBCCA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataCMa', symObjAddr: 0xD78, symBinAddr: 0x32C24, symSize: 0x20 } + - { offset: 0xBCE7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailCMa', symObjAddr: 0x1A20, symBinAddr: 0x33814, symSize: 0x20 } + - { offset: 0xBCE90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOAEs0H3KeyAAWl', symObjAddr: 0x1E48, symBinAddr: 0x33BD4, symSize: 0x40 } + - { offset: 0xBCEA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOAEs0F3KeyAAWl', symObjAddr: 0x1EF0, symBinAddr: 0x33C14, symSize: 0x40 } + - { offset: 0xBCEB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVACSeAAWl', symObjAddr: 0x1F98, symBinAddr: 0x33CBC, symSize: 0x40 } + - { offset: 0xBCECC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOAFs0F3KeyAAWl', symObjAddr: 0x1FD8, symBinAddr: 0x33CFC, symSize: 0x40 } + - { offset: 0xBCEE0, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE6decode2asxSgxm_tSeRzlFSayAA15LocalizedObjectVG_Tt0g5', symObjAddr: 0x2018, symBinAddr: 0x33D3C, symSize: 0x154 } + - { offset: 0xBCF81, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVSgWOe', symObjAddr: 0x21AC, symBinAddr: 0x33E90, symSize: 0x14 } + - { offset: 0xBCF95, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationOWOe', symObjAddr: 0x21C0, symBinAddr: 0x33EA4, symSize: 0x40 } + - { offset: 0xBCFA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVACSEAAWl', symObjAddr: 0x2200, symBinAddr: 0x33EE4, symSize: 0x40 } + - { offset: 0xBCFBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOwet', symObjAddr: 0x23FC, symBinAddr: 0x340D0, symSize: 0x90 } + - { offset: 0xBCFD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOwst', symObjAddr: 0x248C, symBinAddr: 0x34160, symSize: 0xB0 } + - { offset: 0xBCFE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOwui', symObjAddr: 0x2548, symBinAddr: 0x34210, symSize: 0xC } + - { offset: 0xBCFF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOMa', symObjAddr: 0x2554, symBinAddr: 0x3421C, symSize: 0x10 } + - { offset: 0xBD00D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOwet', symObjAddr: 0x2564, symBinAddr: 0x3422C, symSize: 0x90 } + - { offset: 0xBD021, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOwst', symObjAddr: 0x25F4, symBinAddr: 0x342BC, symSize: 0xB0 } + - { offset: 0xBD035, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOMa', symObjAddr: 0x26B8, symBinAddr: 0x3436C, symSize: 0x10 } + - { offset: 0xBD049, size: 0x8, addend: 0x0, symName: ___swift_memcpy0_1, symObjAddr: 0x26C8, symBinAddr: 0x3437C, symSize: 0x4 } + - { offset: 0xBD05D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOwet', symObjAddr: 0x26CC, symBinAddr: 0x34380, symSize: 0x50 } + - { offset: 0xBD071, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOwst', symObjAddr: 0x271C, symBinAddr: 0x343D0, symSize: 0x7C } + - { offset: 0xBD085, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOwug', symObjAddr: 0x2798, symBinAddr: 0x3444C, symSize: 0x8 } + - { offset: 0xBD099, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOMa', symObjAddr: 0x27A8, symBinAddr: 0x34454, symSize: 0x10 } + - { offset: 0xBD0AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x27B8, symBinAddr: 0x34464, symSize: 0x4 } + - { offset: 0xBD0C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x27BC, symBinAddr: 0x34468, symSize: 0x40 } + - { offset: 0xBD0D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSHAASQWb', symObjAddr: 0x27FC, symBinAddr: 0x344A8, symSize: 0x4 } + - { offset: 0xBD0E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOAESQAAWl', symObjAddr: 0x2800, symBinAddr: 0x344AC, symSize: 0x40 } + - { offset: 0xBD0FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOSHAASQWb', symObjAddr: 0x2840, symBinAddr: 0x344EC, symSize: 0x4 } + - { offset: 0xBD111, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOAFSQAAWl', symObjAddr: 0x2844, symBinAddr: 0x344F0, symSize: 0x40 } + - { offset: 0xBD125, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2884, symBinAddr: 0x34530, symSize: 0x4 } + - { offset: 0xBD139, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2888, symBinAddr: 0x34534, symSize: 0x40 } + - { offset: 0xBD14D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x28C8, symBinAddr: 0x34574, symSize: 0x4 } + - { offset: 0xBD161, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x28CC, symBinAddr: 0x34578, symSize: 0x40 } + - { offset: 0xBD175, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x290C, symBinAddr: 0x345B8, symSize: 0x4 } + - { offset: 0xBD189, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2910, symBinAddr: 0x345BC, symSize: 0x40 } + - { offset: 0xBD19D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x2950, symBinAddr: 0x345FC, symSize: 0x4 } + - { offset: 0xBD1B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x2954, symBinAddr: 0x34600, symSize: 0x40 } + - { offset: 0xBD1C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2994, symBinAddr: 0x34640, symSize: 0x4 } + - { offset: 0xBD1D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2998, symBinAddr: 0x34644, symSize: 0x40 } + - { offset: 0xBD1ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x29D8, symBinAddr: 0x34684, symSize: 0x4 } + - { offset: 0xBD201, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x29DC, symBinAddr: 0x34688, symSize: 0x40 } + - { offset: 0xBD259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSYAASY8rawValuexSg03RawK0Qz_tcfCTW', symObjAddr: 0xC8, symBinAddr: 0x31F84, symSize: 0x64 } + - { offset: 0xBD299, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x12C, symBinAddr: 0x31FE8, symSize: 0x20 } + - { offset: 0xBD2B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x12C, symBinAddr: 0x31FE8, symSize: 0x20 } + - { offset: 0xBD2C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x12C, symBinAddr: 0x31FE8, symSize: 0x20 } + - { offset: 0xBD2DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x32008, symSize: 0x1C } + - { offset: 0xBD2F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x32008, symSize: 0x1C } + - { offset: 0xBD30B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x32008, symSize: 0x1C } + - { offset: 0xBD31F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x32008, symSize: 0x1C } + - { offset: 0xBD345, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x168, symBinAddr: 0x32024, symSize: 0x68 } + - { offset: 0xBD39C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP8intValueSiSgvgTW', symObjAddr: 0x1D0, symBinAddr: 0x3208C, symSize: 0xC } + - { offset: 0xBD3B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP8intValuexSgSi_tcfCTW', symObjAddr: 0x1DC, symBinAddr: 0x32098, symSize: 0xC } + - { offset: 0xBD3ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseCfD', symObjAddr: 0x238, symBinAddr: 0x320F4, symSize: 0x24 } + - { offset: 0xBD42E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x27C, symBinAddr: 0x32138, symSize: 0x118 } + - { offset: 0xBD45F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x394, symBinAddr: 0x32250, symSize: 0x170 } + - { offset: 0xBD490, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x52C, symBinAddr: 0x323E8, symSize: 0x20 } + - { offset: 0xBD4A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC06cachedE0AcA06CachedD0C_tcfc', symObjAddr: 0x54C, symBinAddr: 0x32408, symSize: 0x2C8 } + - { offset: 0xBD50E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xB10, symBinAddr: 0x329C8, symSize: 0x2C } + - { offset: 0xBD537, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0xB3C, symBinAddr: 0x329F4, symSize: 0x28 } + - { offset: 0xBD54B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xB64, symBinAddr: 0x32A1C, symSize: 0x18 } + - { offset: 0xBD571, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0xB7C, symBinAddr: 0x32A34, symSize: 0x24 } + - { offset: 0xBD5B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAsAFP8intValuexSgSi_tcfCTW', symObjAddr: 0xBAC, symBinAddr: 0x32A58, symSize: 0xC } + - { offset: 0xBD5CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC7getNameSSSgyF', symObjAddr: 0xC08, symBinAddr: 0x32AB4, symSize: 0xE4 } + - { offset: 0xBD672, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataCfd', symObjAddr: 0xCEC, symBinAddr: 0x32B98, symSize: 0x6C } + - { offset: 0xBD695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataCfD', symObjAddr: 0xD58, symBinAddr: 0x32C04, symSize: 0x20 } + - { offset: 0xBD6B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC6encode2toys7Encoder_p_tKF', symObjAddr: 0xD98, symBinAddr: 0x32C44, symSize: 0x4A4 } + - { offset: 0xBD6E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x123C, symBinAddr: 0x330E8, symSize: 0x554 } + - { offset: 0xBD71A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x17B8, symBinAddr: 0x33664, symSize: 0x20 } + - { offset: 0xBD75B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x17D8, symBinAddr: 0x33684, symSize: 0x18 } + - { offset: 0xBD7A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x189C, symBinAddr: 0x3369C, symSize: 0x28 } + - { offset: 0xBD7EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x18C4, symBinAddr: 0x336C4, symSize: 0xD0 } + - { offset: 0xBD85D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x19A0, symBinAddr: 0x33794, symSize: 0xC } + - { offset: 0xBD88A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailCfD', symObjAddr: 0x19FC, symBinAddr: 0x337F0, symSize: 0x24 } + - { offset: 0xBD8CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC6encode2toys7Encoder_p_tKF', symObjAddr: 0x1A40, symBinAddr: 0x33834, symSize: 0x144 } + - { offset: 0xBD8FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x1B84, symBinAddr: 0x33978, symSize: 0x1B0 } + - { offset: 0xBD92D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1DC0, symBinAddr: 0x33BB4, symSize: 0x20 } + - { offset: 0xBD97D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x2A1C, symBinAddr: 0x346C8, symSize: 0x5C } + - { offset: 0xBDD56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfC', symObjAddr: 0x0, symBinAddr: 0x34724, symSize: 0x5C } + - { offset: 0xBDDEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueCMa', symObjAddr: 0xC4, symBinAddr: 0x347E8, symSize: 0x20 } + - { offset: 0xBDE6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfC', symObjAddr: 0x0, symBinAddr: 0x34724, symSize: 0x5C } + - { offset: 0xBDE80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x5C, symBinAddr: 0x34780, symSize: 0x68 } + - { offset: 0xBDEEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xE4, symBinAddr: 0x34808, symSize: 0x54 } + - { offset: 0xBDF35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueCfD', symObjAddr: 0x138, symBinAddr: 0x3485C, symSize: 0x30 } + - { offset: 0xBE2CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC12fetchRequestSo07NSFetchI0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x3488C, symSize: 0x6C } + - { offset: 0xBE378, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC12fetchRequestSo07NSFetchI0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x3488C, symSize: 0x6C } + - { offset: 0xBE3D3, size: 0x8, addend: 0x0, symName: _keypath_get_selector_edgeId, symObjAddr: 0x6C, symBinAddr: 0x348F8, symSize: 0xC } + - { offset: 0xBE3E7, size: 0x8, addend: 0x0, symName: _keypath_get_selector_floorId, symObjAddr: 0xBC, symBinAddr: 0x34948, symSize: 0xC } + - { offset: 0xBE3FB, size: 0x8, addend: 0x0, symName: _keypath_get_selector_latitude, symObjAddr: 0x10C, symBinAddr: 0x34998, symSize: 0xC } + - { offset: 0xBE40F, size: 0x8, addend: 0x0, symName: _keypath_get_selector_longitude, symObjAddr: 0x15C, symBinAddr: 0x349E8, symSize: 0xC } + - { offset: 0xBE423, size: 0x8, addend: 0x0, symName: _keypath_get_selector_navigationAvoid, symObjAddr: 0x1AC, symBinAddr: 0x34A38, symSize: 0xC } + - { offset: 0xBE437, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvpACTK', symObjAddr: 0x1B8, symBinAddr: 0x34A44, symSize: 0x68 } + - { offset: 0xBE44F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvpACTk', symObjAddr: 0x224, symBinAddr: 0x34AB0, symSize: 0x54 } + - { offset: 0xBE467, size: 0x8, addend: 0x0, symName: _keypath_get_selector_venueId, symObjAddr: 0x27C, symBinAddr: 0x34B08, symSize: 0xC } + - { offset: 0xBE47B, size: 0x8, addend: 0x0, symName: _keypath_get_selector_x, symObjAddr: 0x2CC, symBinAddr: 0x34B58, symSize: 0xC } + - { offset: 0xBE48F, size: 0x8, addend: 0x0, symName: _keypath_get_selector_y, symObjAddr: 0x31C, symBinAddr: 0x34BA8, symSize: 0xC } + - { offset: 0xBE4AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC7matches5otherSbAA0d8FavoriteE0C_tF', symObjAddr: 0x36C, symBinAddr: 0x34BF8, symSize: 0x200 } + - { offset: 0xBE507, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC03mapE08locationACXDAA0d8FavoriteE0C_tFTf4nn_g', symObjAddr: 0x56C, symBinAddr: 0x34DF8, symSize: 0x1F0 } + - { offset: 0xBEB3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCfE', symObjAddr: 0xD8, symBinAddr: 0x34FFC, symSize: 0x10 } + - { offset: 0xBEB87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCMU', symObjAddr: 0x150, symBinAddr: 0x35074, symSize: 0x8 } + - { offset: 0xBEB9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCMa', symObjAddr: 0x158, symBinAddr: 0x3507C, symSize: 0x38 } + - { offset: 0xBEBAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCMr', symObjAddr: 0x190, symBinAddr: 0x350B4, symSize: 0x44 } + - { offset: 0xBEBC3, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_4, symObjAddr: 0x204, symBinAddr: 0x350F8, symSize: 0x14 } + - { offset: 0xBEBD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwet', symObjAddr: 0x218, symBinAddr: 0x3510C, symSize: 0x54 } + - { offset: 0xBEBEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwst', symObjAddr: 0x26C, symBinAddr: 0x35160, symSize: 0x5C } + - { offset: 0xBEBFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwug', symObjAddr: 0x2C8, symBinAddr: 0x351BC, symSize: 0x1C } + - { offset: 0xBEC13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwup', symObjAddr: 0x2E4, symBinAddr: 0x351D8, symSize: 0x10 } + - { offset: 0xBEC27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwui', symObjAddr: 0x2F4, symBinAddr: 0x351E8, symSize: 0x30 } + - { offset: 0xBEC3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOMa', symObjAddr: 0x324, symBinAddr: 0x35218, symSize: 0x10 } + - { offset: 0xBEC4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVWOh', symObjAddr: 0x334, symBinAddr: 0x35228, symSize: 0x3C } + - { offset: 0xBEC63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentO15CoordinateSpaceOMa', symObjAddr: 0x59C, symBinAddr: 0x3532C, symSize: 0x10 } + - { offset: 0xBEC77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentO15CoordinateSpaceOSHAASQWb', symObjAddr: 0x5AC, symBinAddr: 0x3533C, symSize: 0x4 } + - { offset: 0xBEC8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentO15CoordinateSpaceOAISQAAWl', symObjAddr: 0x5B0, symBinAddr: 0x35340, symSize: 0x40 } + - { offset: 0xBECB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7CommandO8rawValues7UnicodeO6ScalarVvg', symObjAddr: 0xC4, symBinAddr: 0x34FE8, symSize: 0x14 } + - { offset: 0xBED05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCfD', symObjAddr: 0xE8, symBinAddr: 0x3500C, symSize: 0x68 } + - { offset: 0xBED4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7CommandO8rawValueAGSgs7UnicodeO6ScalarV_tcfCTf4nd_n', symObjAddr: 0x370, symBinAddr: 0x35264, symSize: 0xC8 } + - { offset: 0xBF10F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOMa', symObjAddr: 0xE4, symBinAddr: 0x35380, symSize: 0x10 } + - { offset: 0xBF123, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOSHAASQWb', symObjAddr: 0xF4, symBinAddr: 0x35390, symSize: 0x4 } + - { offset: 0xBF137, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOACSQAAWl', symObjAddr: 0xF8, symBinAddr: 0x35394, symSize: 0x40 } + - { offset: 0xBF211, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1A4, symBinAddr: 0x35438, symSize: 0x3C } + - { offset: 0xBF2CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x140, symBinAddr: 0x353D4, symSize: 0x40 } + - { offset: 0xBF392, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x180, symBinAddr: 0x35414, symSize: 0x24 } + - { offset: 0xBF76D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC9cacheDataAcA0df5CacheH0C_tcfc', symObjAddr: 0x0, symBinAddr: 0x35474, symSize: 0x184 } + - { offset: 0xBF995, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCMa', symObjAddr: 0x8F0, symBinAddr: 0x35D58, symSize: 0x20 } + - { offset: 0xBF9B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xB90, symBinAddr: 0x35FF8, symSize: 0xC } + - { offset: 0xBF9EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOAEs0G3KeyAAWl', symObjAddr: 0xC04, symBinAddr: 0x36004, symSize: 0x40 } + - { offset: 0xBF9FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0xC64, symBinAddr: 0x36044, symSize: 0x14C } + - { offset: 0xBFA3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOwet', symObjAddr: 0xDC0, symBinAddr: 0x36190, symSize: 0x90 } + - { offset: 0xBFA4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOwst', symObjAddr: 0xE50, symBinAddr: 0x36220, symSize: 0xB0 } + - { offset: 0xBFA63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOMa', symObjAddr: 0xF14, symBinAddr: 0x362D0, symSize: 0x10 } + - { offset: 0xBFA77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASQWb', symObjAddr: 0xF24, symBinAddr: 0x362E0, symSize: 0x4 } + - { offset: 0xBFA8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOAESQAAWl', symObjAddr: 0xF28, symBinAddr: 0x362E4, symSize: 0x40 } + - { offset: 0xBFA9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xF68, symBinAddr: 0x36324, symSize: 0x4 } + - { offset: 0xBFAB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xF6C, symBinAddr: 0x36328, symSize: 0x40 } + - { offset: 0xBFAC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0xFAC, symBinAddr: 0x36368, symSize: 0x4 } + - { offset: 0xBFADB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0xFB0, symBinAddr: 0x3636C, symSize: 0x40 } + - { offset: 0xBFAF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC9cacheDataAcA0df5CacheH0C_tcfc', symObjAddr: 0x0, symBinAddr: 0x35474, symSize: 0x184 } + - { offset: 0xBFB32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x184, symBinAddr: 0x355F8, symSize: 0xC } + - { offset: 0xBFB6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x190, symBinAddr: 0x35604, symSize: 0xC } + - { offset: 0xBFB8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x190, symBinAddr: 0x35604, symSize: 0xC } + - { offset: 0xBFBA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x190, symBinAddr: 0x35604, symSize: 0xC } + - { offset: 0xBFBB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x19C, symBinAddr: 0x35610, symSize: 0x8 } + - { offset: 0xBFBCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1A4, symBinAddr: 0x35618, symSize: 0x8 } + - { offset: 0xBFBEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x3F8, symBinAddr: 0x35860, symSize: 0x28 } + - { offset: 0xBFC0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x420, symBinAddr: 0x35888, symSize: 0x28 } + - { offset: 0xBFC6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSYAASY8rawValuexSg03RawJ0Qz_tcfCTW', symObjAddr: 0x1AC, symBinAddr: 0x35620, symSize: 0x2C } + - { offset: 0xBFCAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSYAASY8rawValue03RawJ0QzvgTW', symObjAddr: 0x1D8, symBinAddr: 0x3564C, symSize: 0xF4 } + - { offset: 0xBFCEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x2CC, symBinAddr: 0x35740, symSize: 0xF0 } + - { offset: 0xBFD3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x3BC, symBinAddr: 0x35830, symSize: 0x24 } + - { offset: 0xBFD87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAsAFP8intValuexSgSi_tcfCTW', symObjAddr: 0x3EC, symBinAddr: 0x35854, symSize: 0xC } + - { offset: 0xBFD9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x448, symBinAddr: 0x358B0, symSize: 0x28C } + - { offset: 0xBFDFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC5match5placeSbAA5PlaceCSg_tF', symObjAddr: 0x6D4, symBinAddr: 0x35B3C, symSize: 0x1F8 } + - { offset: 0xBFEDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCfD', symObjAddr: 0x8CC, symBinAddr: 0x35D34, symSize: 0x24 } + - { offset: 0xBFF1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC6encode2toys7Encoder_p_tKF', symObjAddr: 0x910, symBinAddr: 0x35D78, symSize: 0x20C } + - { offset: 0xBFF5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xB1C, symBinAddr: 0x35F84, symSize: 0x54 } + - { offset: 0xBFF85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xB70, symBinAddr: 0x35FD8, symSize: 0x20 } + - { offset: 0xBFF9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0xFF0, symBinAddr: 0x363AC, symSize: 0x5C } + - { offset: 0xC0370, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV14expandOutlines3for6strokeAA9LayerTreeO4PathCSgAJ_AH16StrokeAttributesVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x36408, symSize: 0x178 } + - { offset: 0xC03E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV14expandOutlines3for6strokeAA9LayerTreeO4PathCSgAJ_AH16StrokeAttributesVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x36408, symSize: 0x178 } + - { offset: 0xC09BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x36580, symSize: 0x58 } + - { offset: 0xC0AB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewCMa', symObjAddr: 0x2C8, symBinAddr: 0x36848, symSize: 0x20 } + - { offset: 0xC0ACB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5imageSo7UIImageCSgvgySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0x30C, symBinAddr: 0x3688C, symSize: 0x8 } + - { offset: 0xC0ADF, size: 0x8, addend: 0x0, symName: '_$sSo30UIGraphicsImageRendererContextCIgg_ABIegg_TRTA', symObjAddr: 0x324, symBinAddr: 0x368A4, symSize: 0x8 } + - { offset: 0xC0AF3, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x32C, symBinAddr: 0x368AC, symSize: 0x10 } + - { offset: 0xC0B07, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x33C, symBinAddr: 0x368BC, symSize: 0x8 } + - { offset: 0xC0B53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x36580, symSize: 0x58 } + - { offset: 0xC0C15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5imageSo7UIImageCSgvg', symObjAddr: 0x58, symBinAddr: 0x365D8, symSize: 0x19C } + - { offset: 0xC0CAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5imageSo7UIImageCSgvgySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0x1F4, symBinAddr: 0x36774, symSize: 0x78 } + - { offset: 0xC0D14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x26C, symBinAddr: 0x367EC, symSize: 0x2C } + - { offset: 0xC0D73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewCfD', symObjAddr: 0x298, symBinAddr: 0x36818, symSize: 0x30 } + - { offset: 0xC1108, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC8drawText2inySo6CGRectV_tFTo', symObjAddr: 0x0, symBinAddr: 0x368C4, symSize: 0xA0 } + - { offset: 0xC1235, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelCMa', symObjAddr: 0x340, symBinAddr: 0x36C04, symSize: 0x20 } + - { offset: 0xC128E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC8drawText2inySo6CGRectV_tFTo', symObjAddr: 0x0, symBinAddr: 0x368C4, symSize: 0xA0 } + - { offset: 0xC1301, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0xA0, symBinAddr: 0x36964, symSize: 0x80 } + - { offset: 0xC1394, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC5frameACSo6CGRectV_tcfc', symObjAddr: 0x120, symBinAddr: 0x369E4, symSize: 0xD4 } + - { offset: 0xC1426, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1F4, symBinAddr: 0x36AB8, symSize: 0x20 } + - { offset: 0xC145E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x214, symBinAddr: 0x36AD8, symSize: 0xD4 } + - { offset: 0xC14F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2E8, symBinAddr: 0x36BAC, symSize: 0x28 } + - { offset: 0xC1504, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelCfD', symObjAddr: 0x310, symBinAddr: 0x36BD4, symSize: 0x30 } + - { offset: 0xC18B5, size: 0x8, addend: 0x0, symName: _UIEdgeInsetsInsetRect, symObjAddr: 0x360, symBinAddr: 0x36C24, symSize: 0x1C } + - { offset: 0xC18C3, size: 0x8, addend: 0x0, symName: _UIEdgeInsetsInsetRect, symObjAddr: 0x360, symBinAddr: 0x36C24, symSize: 0x1C } + - { offset: 0xC19BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingCMa', symObjAddr: 0xC4, symBinAddr: 0x36CA8, symSize: 0x20 } + - { offset: 0xC1A26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x5C, symBinAddr: 0x36C40, symSize: 0x68 } + - { offset: 0xC1A90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xE4, symBinAddr: 0x36CC8, symSize: 0x54 } + - { offset: 0xC1ADB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingCfD', symObjAddr: 0x138, symBinAddr: 0x36D1C, symSize: 0x30 } + - { offset: 0xC1E75, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE4make6bounds6matrix4step6tiling9isColored4drawABSo6CGRectV_So17CGAffineTransformVSo6CGSizeVSo0A6TilingVSbySo09CGContextB0actFZySvSg_ATtcfU_To', symObjAddr: 0x0, symBinAddr: 0x36D4C, symSize: 0x68 } + - { offset: 0xC1F02, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE4make6bounds6matrix4step6tiling9isColored4drawABSo6CGRectV_So17CGAffineTransformVSo6CGSizeVSo0A6TilingVSbySo09CGContextB0actFZySvSg_ATtcfU_To', symObjAddr: 0x0, symBinAddr: 0x36D4C, symSize: 0x68 } + - { offset: 0xC1F7D, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE4make6bounds6matrix4step6tiling9isColored4drawABSo6CGRectV_So17CGAffineTransformVSo6CGSizeVSo0A6TilingVSbySo09CGContextB0actFZySvSgcfU0_To', symObjAddr: 0x68, symBinAddr: 0x36DB4, symSize: 0xC } + - { offset: 0xC1FC3, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE3Box33_101E42A8A083D3733C304760DAD44B97LLCMa', symObjAddr: 0x98, symBinAddr: 0x36DE4, symSize: 0x20 } + - { offset: 0xC206A, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE3Box33_101E42A8A083D3733C304760DAD44B97LLCfD', symObjAddr: 0x74, symBinAddr: 0x36DC0, symSize: 0x24 } + - { offset: 0xC2420, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x36E04, symSize: 0x20 } + - { offset: 0xC273C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellCfETo', symObjAddr: 0x974, symBinAddr: 0x37778, symSize: 0x6C } + - { offset: 0xC276B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellCMa', symObjAddr: 0x9E0, symBinAddr: 0x377E4, symSize: 0x20 } + - { offset: 0xC277F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC8setImage3foryAA0D0C_tFySo7UIImageCSgcfU_TA', symObjAddr: 0xA50, symBinAddr: 0x37854, symSize: 0x8 } + - { offset: 0xC28C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x36E04, symSize: 0x20 } + - { offset: 0xC2928, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x36E24, symSize: 0x14 } + - { offset: 0xC2979, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC13subtitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x36E38, symSize: 0x20 } + - { offset: 0xC29CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC13subtitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x36E58, symSize: 0x14 } + - { offset: 0xC2A1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC013favoriteImageF0So07UIImageF0CSgvgTo', symObjAddr: 0x68, symBinAddr: 0x36E6C, symSize: 0x20 } + - { offset: 0xC2A79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC013favoriteImageF0So07UIImageF0CSgvsTo', symObjAddr: 0x88, symBinAddr: 0x36E8C, symSize: 0x14 } + - { offset: 0xC2ACA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC12awakeFromNibyyFTo', symObjAddr: 0x9C, symBinAddr: 0x36EA0, symSize: 0x3C } + - { offset: 0xC2B22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC7setData8favoriteyAA0D0C_tF', symObjAddr: 0xD8, symBinAddr: 0x36EDC, symSize: 0xF4 } + - { offset: 0xC2BD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC8setImage3foryAA0D0C_tF', symObjAddr: 0x1CC, symBinAddr: 0x36FD0, symSize: 0x1DC } + - { offset: 0xC2CA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC8setImage3foryAA0D0C_tFySo7UIImageCSgcfU_', symObjAddr: 0x3A8, symBinAddr: 0x371AC, symSize: 0x1B8 } + - { offset: 0xC2DC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC04showD6DetailyySo8UIButtonCFTo', symObjAddr: 0x560, symBinAddr: 0x37364, symSize: 0x94 } + - { offset: 0xC2E30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC15prepareForReuseyyF', symObjAddr: 0x5F4, symBinAddr: 0x373F8, symSize: 0x114 } + - { offset: 0xC2EB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC15prepareForReuseyyFTo', symObjAddr: 0x708, symBinAddr: 0x3750C, symSize: 0x28 } + - { offset: 0xC2EC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfc', symObjAddr: 0x730, symBinAddr: 0x37534, symSize: 0xE0 } + - { offset: 0xC2F09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfcTo', symObjAddr: 0x810, symBinAddr: 0x37614, symSize: 0x48 } + - { offset: 0xC2F41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x858, symBinAddr: 0x3765C, symSize: 0xC4 } + - { offset: 0xC2F74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x91C, symBinAddr: 0x37720, symSize: 0x28 } + - { offset: 0xC2F88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellCfD', symObjAddr: 0x944, symBinAddr: 0x37748, symSize: 0x30 } + - { offset: 0xC3335, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidStairsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3785C, symSize: 0x10 } + - { offset: 0xC398F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCfE', symObjAddr: 0xF54, symBinAddr: 0x387B0, symSize: 0x90 } + - { offset: 0xC39BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCfETo', symObjAddr: 0x1014, symBinAddr: 0x38870, symSize: 0x9C } + - { offset: 0xC39EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCMa', symObjAddr: 0x10B0, symBinAddr: 0x3890C, symSize: 0x20 } + - { offset: 0xC3B05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutCMa', symObjAddr: 0x1178, symBinAddr: 0x389B0, symSize: 0x20 } + - { offset: 0xC3B3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x1198, symBinAddr: 0x389D0, symSize: 0x74 } + - { offset: 0xC3BB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x120C, symBinAddr: 0x38A44, symSize: 0x24 } + - { offset: 0xC3BF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC10setupPanelyyF', symObjAddr: 0x1230, symBinAddr: 0x38A68, symSize: 0x8C } + - { offset: 0xC3C6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC10setupPanelyyFTo', symObjAddr: 0x12BC, symBinAddr: 0x38AF4, symSize: 0x28 } + - { offset: 0xC3CC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1360, symBinAddr: 0x38B1C, symSize: 0xC8 } + - { offset: 0xC3CF6, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1454, symBinAddr: 0x38C08, symSize: 0x10 } + - { offset: 0xC3D0A, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1464, symBinAddr: 0x38C18, symSize: 0x8 } + - { offset: 0xC3DE7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV5merge_8isUnique16uniquingKeysWithyqd__n_Sbq_q__q_tKXEtKSTRd__x_q_t7ElementRtd__lF8PenNavUI11RouteOptionV0mN3KeyO_SbSayAL_SbtGTg5012$sSD20uniquegh33ValuesSDyxq_Gqd__n_tcSTRd__x_q_t7i24Rtd__lufcq_q__q_tKXEfU_8jk4UI11mn5V0iJ3O17O_SbSayAI_SbtGTG5Tf1nncn_n', symObjAddr: 0x146C, symBinAddr: 0x38C20, symSize: 0x348 } + - { offset: 0xC4008, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC_AA0dE15LayoutAnchoring_ptWOh', symObjAddr: 0x1990, symBinAddr: 0x390BC, symSize: 0x40 } + - { offset: 0xC401C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5applyyyFyycfU_TA', symObjAddr: 0x1A0C, symBinAddr: 0x39128, symSize: 0x8 } + - { offset: 0xC4362, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidStairsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3785C, symSize: 0x10 } + - { offset: 0xC437A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidStairsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3785C, symSize: 0x10 } + - { offset: 0xC43C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidStairsSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x3786C, symSize: 0x34 } + - { offset: 0xC440F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC21avoidEscalatorsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x378A0, symSize: 0x10 } + - { offset: 0xC4427, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC21avoidEscalatorsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x378A0, symSize: 0x10 } + - { offset: 0xC4462, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC21avoidEscalatorsSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x378B0, symSize: 0x34 } + - { offset: 0xC44B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC20avoidElevatorsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x378E4, symSize: 0x10 } + - { offset: 0xC44C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC20avoidElevatorsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x378E4, symSize: 0x10 } + - { offset: 0xC4504, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC20avoidElevatorsSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x378F4, symSize: 0x34 } + - { offset: 0xC4553, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC18avoidOutdoorSwitchSo8UISwitchCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x37928, symSize: 0x10 } + - { offset: 0xC456B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC18avoidOutdoorSwitchSo8UISwitchCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x37928, symSize: 0x10 } + - { offset: 0xC45A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC18avoidOutdoorSwitchSo8UISwitchCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x37938, symSize: 0x34 } + - { offset: 0xC45F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidIndoorSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x3796C, symSize: 0x10 } + - { offset: 0xC460D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidIndoorSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x3796C, symSize: 0x10 } + - { offset: 0xC4648, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidIndoorSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x3797C, symSize: 0x34 } + - { offset: 0xC4697, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC15avoidRampSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x379B0, symSize: 0x20 } + - { offset: 0xC46EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC15avoidRampSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x174, symBinAddr: 0x379D0, symSize: 0x14 } + - { offset: 0xC473D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC011environmenteF0So6UIViewCSgvgTo', symObjAddr: 0x188, symBinAddr: 0x379E4, symSize: 0x20 } + - { offset: 0xC4797, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC011environmenteF0So6UIViewCSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x37A04, symSize: 0x14 } + - { offset: 0xC47E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC8switchesSaySo8UISwitchCGvg', symObjAddr: 0x1BC, symBinAddr: 0x37A18, symSize: 0x120 } + - { offset: 0xC4934, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x2DC, symBinAddr: 0x37B38, symSize: 0x5C } + - { offset: 0xC4975, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC05setupdE0yyF', symObjAddr: 0x338, symBinAddr: 0x37B94, symSize: 0x6E0 } + - { offset: 0xC5027, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC6cancelyyFTo', symObjAddr: 0xA18, symBinAddr: 0x38274, symSize: 0x38 } + - { offset: 0xC505D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5applyyyF', symObjAddr: 0xA50, symBinAddr: 0x382AC, symSize: 0x1B8 } + - { offset: 0xC51AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5applyyyFyycfU_', symObjAddr: 0xC08, symBinAddr: 0x38464, symSize: 0xB8 } + - { offset: 0xC524B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5applyyyFTo', symObjAddr: 0xCC0, symBinAddr: 0x3851C, symSize: 0x28 } + - { offset: 0xC525F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xCE8, symBinAddr: 0x38544, symSize: 0x104 } + - { offset: 0xC52A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xDEC, symBinAddr: 0x38648, symSize: 0x60 } + - { offset: 0xC52E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xE4C, symBinAddr: 0x386A8, symSize: 0xE0 } + - { offset: 0xC5315, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xF2C, symBinAddr: 0x38788, symSize: 0x28 } + - { offset: 0xC5329, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCfD', symObjAddr: 0xFE4, symBinAddr: 0x38840, symSize: 0x30 } + - { offset: 0xC5353, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC8positionAA08FloatingH8PositionOvgTo', symObjAddr: 0x10D0, symBinAddr: 0x3892C, symSize: 0x8 } + - { offset: 0xC536B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC8positionAA08FloatingH8PositionOvgTo', symObjAddr: 0x10D0, symBinAddr: 0x3892C, symSize: 0x8 } + - { offset: 0xC5384, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC12initialStateAA08FloatinghK0CvgTo', symObjAddr: 0x10D8, symBinAddr: 0x38934, symSize: 0x8 } + - { offset: 0xC539C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC12initialStateAA08FloatinghK0CvgTo', symObjAddr: 0x10D8, symBinAddr: 0x38934, symSize: 0x8 } + - { offset: 0xC53B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC7anchorsSDyAA08FloatingH5StateCAA0khI9Anchoring_pGvgTo', symObjAddr: 0x10E0, symBinAddr: 0x3893C, symSize: 0x6C } + - { offset: 0xC53DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA08FloatingH5StateC_tFTo', symObjAddr: 0x114C, symBinAddr: 0x389A8, symSize: 0x8 } + - { offset: 0xC54E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC7anchorsSDyAA08FloatingH5StateCAA0khI9Anchoring_pGvgTf4d_n', symObjAddr: 0x17B4, symBinAddr: 0x38F68, symSize: 0x154 } + - { offset: 0xC5BCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontCMa', symObjAddr: 0x26C, symBinAddr: 0x392D0, symSize: 0x20 } + - { offset: 0xC5BDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOAFs0F3KeyAAWl', symObjAddr: 0x860, symBinAddr: 0x3985C, symSize: 0x40 } + - { offset: 0xC5BF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOwet', symObjAddr: 0x9D4, symBinAddr: 0x39958, symSize: 0x90 } + - { offset: 0xC5C07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOwst', symObjAddr: 0xA64, symBinAddr: 0x399E8, symSize: 0xB0 } + - { offset: 0xC5C1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOMa', symObjAddr: 0xB28, symBinAddr: 0x39A98, symSize: 0x10 } + - { offset: 0xC5C2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOSHAASQWb', symObjAddr: 0xB38, symBinAddr: 0x39AA8, symSize: 0x4 } + - { offset: 0xC5C43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOAFSQAAWl', symObjAddr: 0xB3C, symBinAddr: 0x39AAC, symSize: 0x40 } + - { offset: 0xC5C57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xB7C, symBinAddr: 0x39AEC, symSize: 0x4 } + - { offset: 0xC5C6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xB80, symBinAddr: 0x39AF0, symSize: 0x40 } + - { offset: 0xC5C7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0xBC0, symBinAddr: 0x39B30, symSize: 0x4 } + - { offset: 0xC5C93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0xBC4, symBinAddr: 0x39B34, symSize: 0x40 } + - { offset: 0xC5CCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x1D0, symBinAddr: 0x39234, symSize: 0x28 } + - { offset: 0xC5CE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x1F8, symBinAddr: 0x3925C, symSize: 0x28 } + - { offset: 0xC5D3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0xC0, symBinAddr: 0x39130, symSize: 0xD4 } + - { offset: 0xC5D6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x194, symBinAddr: 0x39204, symSize: 0x24 } + - { offset: 0xC5D96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x1C4, symBinAddr: 0x39228, symSize: 0xC } + - { offset: 0xC5DD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontCfD', symObjAddr: 0x220, symBinAddr: 0x39284, symSize: 0x4C } + - { offset: 0xC5E0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC6encode2toys7Encoder_p_tKF', symObjAddr: 0x28C, symBinAddr: 0x392F0, symSize: 0x1FC } + - { offset: 0xC5E3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x488, symBinAddr: 0x394EC, symSize: 0x2FC } + - { offset: 0xC5E7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x784, symBinAddr: 0x397E8, symSize: 0x54 } + - { offset: 0xC5EA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x7D8, symBinAddr: 0x3983C, symSize: 0x20 } + - { offset: 0xC5EB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0xC04, symBinAddr: 0x39B74, symSize: 0x20C } + - { offset: 0xC6CA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06updateD7ResultsyyF', symObjAddr: 0x530, symBinAddr: 0x3A2B0, symSize: 0xF8 } + - { offset: 0xC7189, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCfE', symObjAddr: 0x3500, symBinAddr: 0x3D280, symSize: 0x104 } + - { offset: 0xC71B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCfETo', symObjAddr: 0x3634, symBinAddr: 0x3D3B4, symSize: 0x110 } + - { offset: 0xC71E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCMa', symObjAddr: 0x3744, symBinAddr: 0x3D4C4, symSize: 0x20 } + - { offset: 0xC7454, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC28searchBarTextDidBeginEditingyyAA0dH0CF', symObjAddr: 0x3764, symBinAddr: 0x3D4E4, symSize: 0x5A4 } + - { offset: 0xC7B4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09searchBarD13ButtonClickedyyAA0dH0CF', symObjAddr: 0x3D08, symBinAddr: 0x3DA88, symSize: 0x1F8 } + - { offset: 0xC7E45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06cancelD0yyF', symObjAddr: 0x3F00, symBinAddr: 0x3DC80, symSize: 0xC0 } + - { offset: 0xC7F88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC015clearResultsAndD033_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x3FC0, symBinAddr: 0x3DD40, symSize: 0x128 } + - { offset: 0xC80CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC015clearResultsAndD033_C480B119D398ADAB3164E62059E8A172LLyyFTo', symObjAddr: 0x40E8, symBinAddr: 0x3DE68, symSize: 0x28 } + - { offset: 0xC80E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG19TextDidBeginEditingyyAA0dG0CFTW', symObjAddr: 0x4110, symBinAddr: 0x3DE90, symSize: 0x4 } + - { offset: 0xC8111, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG0_13textDidChangeyAA0dG0C_SStFTW', symObjAddr: 0x4114, symBinAddr: 0x3DE94, symSize: 0xC } + - { offset: 0xC8144, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchgD13ButtonClickedyyAA0dG0CFTW', symObjAddr: 0x4120, symBinAddr: 0x3DEA0, symSize: 0x4 } + - { offset: 0xC816F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG18ClearButtonClickedyyAA0dG0CFTW', symObjAddr: 0x4124, symBinAddr: 0x3DEA4, symSize: 0x4 } + - { offset: 0xC818F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG18ClearButtonClickedyyAA0dG0CFTW', symObjAddr: 0x4124, symBinAddr: 0x3DEA4, symSize: 0x4 } + - { offset: 0xC81CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG19CancelButtonClickedyyAA0dG0CFTW', symObjAddr: 0x4128, symBinAddr: 0x3DEA8, symSize: 0x4 } + - { offset: 0xC81EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG19CancelButtonClickedyyAA0dG0CFTW', symObjAddr: 0x4128, symBinAddr: 0x3DEA8, symSize: 0x4 } + - { offset: 0xC8240, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x412C, symBinAddr: 0x3DEAC, symSize: 0x68 } + - { offset: 0xC83E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0x4194, symBinAddr: 0x3DF14, symSize: 0x250 } + - { offset: 0xC869C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x43E4, symBinAddr: 0x3E164, symSize: 0xB8 } + - { offset: 0xC86C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_11willDisplay8forRowAtySo07UITableE0C_So0mE4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x449C, symBinAddr: 0x3E21C, symSize: 0xCC } + - { offset: 0xC8736, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0x4568, symBinAddr: 0x3E2E8, symSize: 0x15C } + - { offset: 0xC88F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x46C4, symBinAddr: 0x3E444, symSize: 0xB0 } + - { offset: 0xC8920, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x4774, symBinAddr: 0x3E4F4, symSize: 0x14 } + - { offset: 0xC896B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x4788, symBinAddr: 0x3E508, symSize: 0x24 } + - { offset: 0xC89E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC10setupPanelyyF', symObjAddr: 0x47AC, symBinAddr: 0x3E52C, symSize: 0x10C } + - { offset: 0xC8A8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC10setupPanelyyFTo', symObjAddr: 0x48B8, symBinAddr: 0x3E638, symSize: 0x28 } + - { offset: 0xC8ACC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x48E0, symBinAddr: 0x3E660, symSize: 0x268 } + - { offset: 0xC8D40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x4B48, symBinAddr: 0x3E8C8, symSize: 0x50 } + - { offset: 0xC8D5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC27floatingPanelDidChangeStateyyAA08FloatinghF0CF', symObjAddr: 0x4B98, symBinAddr: 0x3E918, symSize: 0x21C } + - { offset: 0xC8F99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC27floatingPanelDidChangeStateyyAA08FloatinghF0CFTo', symObjAddr: 0x4DB4, symBinAddr: 0x3EB34, symSize: 0x50 } + - { offset: 0xC8FC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x4E80, symBinAddr: 0x3EB84, symSize: 0xC } + - { offset: 0xC9017, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x4E8C, symBinAddr: 0x3EB90, symSize: 0x4 } + - { offset: 0xC9037, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x4E8C, symBinAddr: 0x3EB90, symSize: 0x4 } + - { offset: 0xC9053, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC9searchBar_13textDidChangeyAA0dH0C_SStFTf4dnn_n', symObjAddr: 0x4E90, symBinAddr: 0x3EB94, symSize: 0x1CC } + - { offset: 0xC91BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC27searchBarClearButtonClickedyyAA0dH0CFTf4dn_n', symObjAddr: 0x505C, symBinAddr: 0x3ED60, symSize: 0x168 } + - { offset: 0xC9397, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_11willDisplay8forRowAtySo07UITableE0C_So0mE4CellC10Foundation9IndexPathVtFTf4ddnn_n', symObjAddr: 0x5204, symBinAddr: 0x3EEC8, symSize: 0x130 } + - { offset: 0xC9542, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTf4d_n', symObjAddr: 0x5334, symBinAddr: 0x3EFF8, symSize: 0xA4 } + - { offset: 0xC95B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4dnn_n', symObjAddr: 0x53D8, symBinAddr: 0x3F09C, symSize: 0xF8 } + - { offset: 0xC95FA, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x54FC, symBinAddr: 0x3F1B8, symSize: 0x10 } + - { offset: 0xC960E, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x550C, symBinAddr: 0x3F1C8, symSize: 0x8 } + - { offset: 0xC9622, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20showNoResultsMessage33_C480B119D398ADAB3164E62059E8A172LLyyFyyScMYccfU_TA', symObjAddr: 0x558C, symBinAddr: 0x3F1D0, symSize: 0x8 } + - { offset: 0xC9636, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_TA', symObjAddr: 0x5670, symBinAddr: 0x3F1E0, symSize: 0xC } + - { offset: 0xC964A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_yyXEfU_TA', symObjAddr: 0x56C4, symBinAddr: 0x3F22C, symSize: 0x8 } + - { offset: 0xC965E, size: 0x8, addend: 0x0, symName: '_$sIg_Ieg_TRTA', symObjAddr: 0x56DC, symBinAddr: 0x3F244, symSize: 0x8 } + - { offset: 0xC9672, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC6search33_C480B119D398ADAB3164E62059E8A172LL6manualySb_tFySayAA7POIDataCGSgcfU_TA', symObjAddr: 0x5718, symBinAddr: 0x3F270, symSize: 0xC } + - { offset: 0xC9686, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09configureD3Bar33_C480B119D398ADAB3164E62059E8A172LLyyFyyScMYccfU_TA', symObjAddr: 0x5764, symBinAddr: 0x3F27C, symSize: 0x8 } + - { offset: 0xC969A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC11viewDidLoadyyFyycfU0_TA', symObjAddr: 0x576C, symBinAddr: 0x3F284, symSize: 0x18 } + - { offset: 0xC9BF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC9searchBar33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x39D80, symSize: 0x10 } + - { offset: 0xC9C10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC9searchBar33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x39D80, symSize: 0x10 } + - { offset: 0xC9C56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC9searchBar33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x39D90, symSize: 0x34 } + - { offset: 0xC9D7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE033_C480B119D398ADAB3164E62059E8A172LLSo07UITableE0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x39DC4, symSize: 0x10 } + - { offset: 0xC9D97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE033_C480B119D398ADAB3164E62059E8A172LLSo07UITableE0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x39DC4, symSize: 0x10 } + - { offset: 0xC9DD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE033_C480B119D398ADAB3164E62059E8A172LLSo07UITableE0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x39DD4, symSize: 0x34 } + - { offset: 0xC9E26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09separatorE033_C480B119D398ADAB3164E62059E8A172LLSo6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x39E08, symSize: 0x10 } + - { offset: 0xC9E3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09separatorE033_C480B119D398ADAB3164E62059E8A172LLSo6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x39E08, symSize: 0x10 } + - { offset: 0xC9E7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09separatorE033_C480B119D398ADAB3164E62059E8A172LLSo6UIViewCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x39E18, symSize: 0x34 } + - { offset: 0xC9ECD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE16BottomConstraint33_C480B119D398ADAB3164E62059E8A172LLSo08NSLayoutI0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x39E4C, symSize: 0x10 } + - { offset: 0xC9EE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE16BottomConstraint33_C480B119D398ADAB3164E62059E8A172LLSo08NSLayoutI0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x39E4C, symSize: 0x10 } + - { offset: 0xC9F25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE16BottomConstraint33_C480B119D398ADAB3164E62059E8A172LLSo08NSLayoutI0CSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x39E5C, symSize: 0x34 } + - { offset: 0xC9F74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC13searchOptions33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x39E90, symSize: 0x10 } + - { offset: 0xC9F8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC13searchOptions33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x39E90, symSize: 0x10 } + - { offset: 0xC9FCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC13searchOptions33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x39EA0, symSize: 0x34 } + - { offset: 0xCA207, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC11viewDidLoadyyF', symObjAddr: 0x154, symBinAddr: 0x39ED4, symSize: 0x3DC } + - { offset: 0xCA6D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x74C, symBinAddr: 0x3A4CC, symSize: 0x28 } + - { offset: 0xCA6FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC13updateFilters4type7filtersyAA14TagDisplayTypeOSg_SaySiGtF', symObjAddr: 0x774, symBinAddr: 0x3A4F4, symSize: 0xA4 } + - { offset: 0xCA849, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09configureD3Bar33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x818, symBinAddr: 0x3A598, symSize: 0x238 } + - { offset: 0xCA976, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09configureD3Bar33_C480B119D398ADAB3164E62059E8A172LLyyFyyScMYccfU_', symObjAddr: 0xA50, symBinAddr: 0x3A7D0, symSize: 0x90 } + - { offset: 0xCA9F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC014configureTableE033_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0xAE0, symBinAddr: 0x3A860, symSize: 0x10C } + - { offset: 0xCABB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC15configureLoader33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0xBEC, symBinAddr: 0x3A96C, symSize: 0x2C4 } + - { offset: 0xCADF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC25configureNoResultsMessage33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0xEB0, symBinAddr: 0x3AC30, symSize: 0x510 } + - { offset: 0xCB201, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC6search33_C480B119D398ADAB3164E62059E8A172LL6manualySb_tF', symObjAddr: 0x13C0, symBinAddr: 0x3B140, symSize: 0x2E4 } + - { offset: 0xCB4E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC6search33_C480B119D398ADAB3164E62059E8A172LL6manualySb_tFySayAA7POIDataCGSgcfU_', symObjAddr: 0x16A4, symBinAddr: 0x3B424, symSize: 0xA0 } + - { offset: 0xCB55C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC21getLocationParameters33_C480B119D398ADAB3164E62059E8A172LLSDySSypGyF', symObjAddr: 0x1744, symBinAddr: 0x3B4C4, symSize: 0x1C8 } + - { offset: 0xCB783, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC15getUserLocation33_C480B119D398ADAB3164E62059E8A172LL7Penguin10PILocationCSgyF', symObjAddr: 0x190C, symBinAddr: 0x3B68C, symSize: 0x134 } + - { offset: 0xCB8CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtF', symObjAddr: 0x1A40, symBinAddr: 0x3B7C0, symSize: 0x1F8 } + - { offset: 0xCB93A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_', symObjAddr: 0x1C38, symBinAddr: 0x3B9B8, symSize: 0x930 } + - { offset: 0xCBF1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_yyXEfU_', symObjAddr: 0x2568, symBinAddr: 0x3C2E8, symSize: 0x114 } + - { offset: 0xCC03B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC23indexPathsForNewResults33_C480B119D398ADAB3164E62059E8A172LL03newK0Say10Foundation9IndexPathVGSayAA7POIDataCG_tF', symObjAddr: 0x267C, symBinAddr: 0x3C3FC, symSize: 0x1E8 } + - { offset: 0xCC402, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC10showLoader33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x2864, symBinAddr: 0x3C5E4, symSize: 0x2C8 } + - { offset: 0xCC6B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20showNoResultsMessage33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x2B2C, symBinAddr: 0x3C8AC, symSize: 0x1C0 } + - { offset: 0xCC705, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20showNoResultsMessage33_C480B119D398ADAB3164E62059E8A172LLyyFyyScMYccfU_', symObjAddr: 0x2CEC, symBinAddr: 0x3CA6C, symSize: 0x19C } + - { offset: 0xCC82C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06updateD6Result33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x2E88, symBinAddr: 0x3CC08, symSize: 0x1A4 } + - { offset: 0xCCAB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x302C, symBinAddr: 0x3CDAC, symSize: 0x23C } + - { offset: 0xCCBD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x3268, symBinAddr: 0x3CFE8, symSize: 0x60 } + - { offset: 0xCCBE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x32C8, symBinAddr: 0x3D048, symSize: 0x210 } + - { offset: 0xCCCF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x34D8, symBinAddr: 0x3D258, symSize: 0x28 } + - { offset: 0xCCD07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCfD', symObjAddr: 0x3604, symBinAddr: 0x3D384, symSize: 0x30 } + - { offset: 0xCD3E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC2idSiSgvg', symObjAddr: 0x0, symBinAddr: 0x3F2C0, symSize: 0x34 } + - { offset: 0xCD525, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC4nameSSSgvpACTk', symObjAddr: 0xB4, symBinAddr: 0x3F374, symSize: 0x5C } + - { offset: 0xCD565, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvpACTk', symObjAddr: 0x1D8, symBinAddr: 0x3F498, symSize: 0x5C } + - { offset: 0xCD5A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusCMa', symObjAddr: 0x484, symBinAddr: 0x3F744, symSize: 0x20 } + - { offset: 0xCD608, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC2idSiSgvg', symObjAddr: 0x0, symBinAddr: 0x3F2C0, symSize: 0x34 } + - { offset: 0xCD62B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC2idSiSgvs', symObjAddr: 0x34, symBinAddr: 0x3F2F4, symSize: 0x50 } + - { offset: 0xCD654, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC2idSiSgvM', symObjAddr: 0x84, symBinAddr: 0x3F344, symSize: 0x30 } + - { offset: 0xCD6A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC4nameSSSgvg', symObjAddr: 0x110, symBinAddr: 0x3F3D0, symSize: 0x48 } + - { offset: 0xCD6C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC4nameSSSgvs', symObjAddr: 0x158, symBinAddr: 0x3F418, symSize: 0x50 } + - { offset: 0xCD6E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC4nameSSSgvM', symObjAddr: 0x1A8, symBinAddr: 0x3F468, symSize: 0x30 } + - { offset: 0xCD72C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvg', symObjAddr: 0x234, symBinAddr: 0x3F4F4, symSize: 0x48 } + - { offset: 0xCD74B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvs', symObjAddr: 0x27C, symBinAddr: 0x3F53C, symSize: 0x50 } + - { offset: 0xCD774, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvM', symObjAddr: 0x2CC, symBinAddr: 0x3F58C, symSize: 0x30 } + - { offset: 0xCD797, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvM.resume.0', symObjAddr: 0x2FC, symBinAddr: 0x3F5BC, symSize: 0x4 } + - { offset: 0xCD7C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusCfd', symObjAddr: 0x300, symBinAddr: 0x3F5C0, symSize: 0x24 } + - { offset: 0xCD7F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusCfD', symObjAddr: 0x324, symBinAddr: 0x3F5E4, symSize: 0x2C } + - { offset: 0xCDC14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC15venueTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3F800, symSize: 0x10 } + - { offset: 0xCE0D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCfE', symObjAddr: 0xEF4, symBinAddr: 0x406F4, symSize: 0x60 } + - { offset: 0xCE102, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCfETo', symObjAddr: 0xF84, symBinAddr: 0x40784, symSize: 0x6C } + - { offset: 0xCE131, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCMa', symObjAddr: 0xFF0, symBinAddr: 0x407F0, symSize: 0x20 } + - { offset: 0xCE16F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x1010, symBinAddr: 0x40810, symSize: 0x68 } + - { offset: 0xCE28E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1078, symBinAddr: 0x40878, symSize: 0x240 } + - { offset: 0xCE4B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x12B8, symBinAddr: 0x40AB8, symSize: 0xB8 } + - { offset: 0xCE4D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1370, symBinAddr: 0x40B70, symSize: 0x250 } + - { offset: 0xCE65D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x15C0, symBinAddr: 0x40DC0, symSize: 0xB0 } + - { offset: 0xCE6D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyF', symObjAddr: 0x1670, symBinAddr: 0x40E70, symSize: 0xD8 } + - { offset: 0xCE766, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x1748, symBinAddr: 0x40F48, symSize: 0x34 } + - { offset: 0xCE799, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x177C, symBinAddr: 0x40F7C, symSize: 0x24 } + - { offset: 0xCE867, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC10setupPanelyyF', symObjAddr: 0x17A0, symBinAddr: 0x40FA0, symSize: 0x268 } + - { offset: 0xCEAE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC10setupPanelyyFTo', symObjAddr: 0x1A08, symBinAddr: 0x41208, symSize: 0x28 } + - { offset: 0xCEB0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1A30, symBinAddr: 0x41230, symSize: 0xC } + - { offset: 0xCEB74, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI5PlaceC_Tg503$s8gh48UI26GateSelectorViewControllerC8getGatesyyFSbAA5J11C_AFtXEfU2_AH0mnoP0CTf1nnnnc_nTf4nnnng_n', symObjAddr: 0x1BA8, symBinAddr: 0x413A8, symSize: 0x31C } + - { offset: 0xCEDAE, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI5PlaceC_Tg503$s8fg48UI26GateSelectorViewControllerC8getGatesyyFSbAA5I11C_AFtXEfU2_AG0lmnO0CTf1nncn_nTf4nnng_n', symObjAddr: 0x1EC4, symBinAddr: 0x416C4, symSize: 0x2EC } + - { offset: 0xCF25B, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI5PlaceC_Tg503$s8ef48UI26GateSelectorViewControllerC8getGatesyyFSbAA5H11C_AFtXEfU2_AD0klmN0CTf1nnncn_nTf4nnnng_n', symObjAddr: 0x21B0, symBinAddr: 0x419B0, symSize: 0x5CC } + - { offset: 0xCF804, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF8PenNavUI5PlaceC_Tg503$s8ef48UI26GateSelectorViewControllerC8getGatesyyFSbAA5H11C_AFtXEfU2_AC0klmN0CTf1cn_nTf4ng_n', symObjAddr: 0x277C, symBinAddr: 0x41F7C, symSize: 0x228 } + - { offset: 0xCFA58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4dnn_n', symObjAddr: 0x2A58, symBinAddr: 0x42258, symSize: 0x1E0 } + - { offset: 0xCFC4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC8getGatesyyFySayAA5PlaceCGcfU_TA', symObjAddr: 0x2CC0, symBinAddr: 0x4245C, symSize: 0x8 } + - { offset: 0xCFC61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD18SortedByTravelTime3for6origin19withNavigationAvoid10completiony7Penguin5VenueCSg_AA5PlaceCSgSbySayANGctFySayAA0R4GateVGcfU_TA', symObjAddr: 0x2D20, symBinAddr: 0x424BC, symSize: 0xC } + - { offset: 0xCFE7B, size: 0x8, addend: 0x0, symName: '_$sSh2eeoiySbShyxG_ABtFZ8PenNavUI9ToastTypeO_Tt1g5', symObjAddr: 0x1A3C, symBinAddr: 0x4123C, symSize: 0x16C } + - { offset: 0xCFF85, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFSay8PenNavUI5PlaceCG_Tg503$s8de48UI26GateSelectorViewControllerC8getGatesyyFSbAA5G11C_AFtXEfU2_AE0jklM0CTf1cn_nTf4ng_n', symObjAddr: 0x29A4, symBinAddr: 0x421A4, symSize: 0xB4 } + - { offset: 0xD01AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC15venueTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3F800, symSize: 0x10 } + - { offset: 0xD01C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC15venueTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3F800, symSize: 0x10 } + - { offset: 0xD020A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC15venueTitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x3F810, symSize: 0x34 } + - { offset: 0xD0259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x3F844, symSize: 0x10 } + - { offset: 0xD0271, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x3F844, symSize: 0x10 } + - { offset: 0xD02B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x3F854, symSize: 0x34 } + - { offset: 0xD0300, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC11viewDidLoadyyF', symObjAddr: 0x88, symBinAddr: 0x3F888, symSize: 0xEC } + - { offset: 0xD037F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x174, symBinAddr: 0x3F974, symSize: 0x28 } + - { offset: 0xD03CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC014configureTableF0yyF', symObjAddr: 0x19C, symBinAddr: 0x3F99C, symSize: 0x130 } + - { offset: 0xD0686, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC8getGatesyyF', symObjAddr: 0x2CC, symBinAddr: 0x3FACC, symSize: 0x824 } + - { offset: 0xD0F92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC8getGatesyyFySayAA5PlaceCGcfU_', symObjAddr: 0xAF0, symBinAddr: 0x402F0, symSize: 0x124 } + - { offset: 0xD1073, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC8getGatesyyFSbAA5PlaceC_AFtXEfU2_', symObjAddr: 0xC14, symBinAddr: 0x40414, symSize: 0xA0 } + - { offset: 0xD1162, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC7dismissyyFTo', symObjAddr: 0xCB4, symBinAddr: 0x404B4, symSize: 0x38 } + - { offset: 0xD118C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xCEC, symBinAddr: 0x404EC, symSize: 0xCC } + - { offset: 0xD11CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xDB8, symBinAddr: 0x405B8, symSize: 0x60 } + - { offset: 0xD11FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xE18, symBinAddr: 0x40618, symSize: 0xB4 } + - { offset: 0xD1232, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xECC, symBinAddr: 0x406CC, symSize: 0x28 } + - { offset: 0xD1246, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCfD', symObjAddr: 0xF54, symBinAddr: 0x40754, symSize: 0x30 } + - { offset: 0xD176A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwCP', symObjAddr: 0x0, symBinAddr: 0x424C8, symSize: 0xFC } + - { offset: 0xD177E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwxx', symObjAddr: 0xFC, symBinAddr: 0x425C4, symSize: 0x60 } + - { offset: 0xD1792, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwcp', symObjAddr: 0x15C, symBinAddr: 0x42624, symSize: 0xD0 } + - { offset: 0xD17A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwca', symObjAddr: 0x22C, symBinAddr: 0x426F4, symSize: 0xF8 } + - { offset: 0xD17BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwtk', symObjAddr: 0x324, symBinAddr: 0x427EC, symSize: 0xAC } + - { offset: 0xD17CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwta', symObjAddr: 0x3D0, symBinAddr: 0x42898, symSize: 0xD0 } + - { offset: 0xD17E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwet', symObjAddr: 0x4A0, symBinAddr: 0x42968, symSize: 0xC } + - { offset: 0xD17F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwst', symObjAddr: 0x534, symBinAddr: 0x429FC, symSize: 0xC } + - { offset: 0xD180A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVMa', symObjAddr: 0x5B8, symBinAddr: 0x42A80, symSize: 0x38 } + - { offset: 0xD181E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVMr', symObjAddr: 0x5F0, symBinAddr: 0x42AB8, symSize: 0x94 } + - { offset: 0xD1B4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSHAASH9hashValueSivgTW', symObjAddr: 0x1294, symBinAddr: 0x4375C, symSize: 0x6C } + - { offset: 0xD1C18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1300, symBinAddr: 0x437C8, symSize: 0x58 } + - { offset: 0xD1C96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x13C0, symBinAddr: 0x43888, symSize: 0x4 } + - { offset: 0xD1CB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x13C0, symBinAddr: 0x43888, symSize: 0x4 } + - { offset: 0xD1CDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSHAASQWb', symObjAddr: 0x13C4, symBinAddr: 0x4388C, symSize: 0x2C } + - { offset: 0xD1CEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVWOc', symObjAddr: 0x1430, symBinAddr: 0x438B8, symSize: 0x44 } + - { offset: 0xD1D03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVWOh', symObjAddr: 0x1474, symBinAddr: 0x438FC, symSize: 0x3C } + - { offset: 0xD1EF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1358, symBinAddr: 0x43820, symSize: 0x68 } + - { offset: 0xD205F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionV11coordinatesSaySo22CLLocationCoordinate2DVGvg', symObjAddr: 0x684, symBinAddr: 0x42B4C, symSize: 0x614 } + - { offset: 0xD2926, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionV19getArrowCoordinates5orderSaySo22CLLocationCoordinate2DVGSgSi_tF', symObjAddr: 0xC98, symBinAddr: 0x43160, symSize: 0x5FC } + - { offset: 0xD3249, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordO8rawValueSSvg', symObjAddr: 0x0, symBinAddr: 0x43938, symSize: 0xDF0 } + - { offset: 0xD3291, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xDF0, symBinAddr: 0x44728, symSize: 0x84 } + - { offset: 0xD334C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSHAASH9hashValueSivgTW', symObjAddr: 0xE74, symBinAddr: 0x447AC, symSize: 0x60 } + - { offset: 0xD33CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xED4, symBinAddr: 0x4480C, symSize: 0x40 } + - { offset: 0xD341C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF14, symBinAddr: 0x4484C, symSize: 0x5C } + - { offset: 0xD3596, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordO4rgbis5UInt8V_A2Jtvg', symObjAddr: 0xFEC, symBinAddr: 0x44924, symSize: 0x38 } + - { offset: 0xD35C5, size: 0x8, addend: 0x0, symName: ___swift_memcpy13_4, symObjAddr: 0x1670, symBinAddr: 0x44F64, symSize: 0x14 } + - { offset: 0xD35D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOwet', symObjAddr: 0x1688, symBinAddr: 0x44F78, symSize: 0x48 } + - { offset: 0xD35ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOwst', symObjAddr: 0x16D0, symBinAddr: 0x44FC0, symSize: 0x48 } + - { offset: 0xD3601, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOwug', symObjAddr: 0x1718, symBinAddr: 0x45008, symSize: 0x18 } + - { offset: 0xD3615, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOwui', symObjAddr: 0x1734, symBinAddr: 0x45020, symSize: 0x1C } + - { offset: 0xD3629, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOMa', symObjAddr: 0x1750, symBinAddr: 0x4503C, symSize: 0x10 } + - { offset: 0xD363D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOwet', symObjAddr: 0x176C, symBinAddr: 0x4504C, symSize: 0x90 } + - { offset: 0xD3651, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOwst', symObjAddr: 0x17FC, symBinAddr: 0x450DC, symSize: 0xB0 } + - { offset: 0xD3665, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOMa', symObjAddr: 0x18C0, symBinAddr: 0x4518C, symSize: 0x10 } + - { offset: 0xD3679, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSHAASQWb', symObjAddr: 0x18D0, symBinAddr: 0x4519C, symSize: 0x4 } + - { offset: 0xD368D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOAGSQAAWl', symObjAddr: 0x18D4, symBinAddr: 0x451A0, symSize: 0x40 } + - { offset: 0xD36A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordO8rawValueSSvg', symObjAddr: 0x0, symBinAddr: 0x43938, symSize: 0xDF0 } + - { offset: 0xD3721, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xF70, symBinAddr: 0x448A8, symSize: 0x2C } + - { offset: 0xD374A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xF9C, symBinAddr: 0x448D4, symSize: 0x28 } + - { offset: 0xD3771, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xFC4, symBinAddr: 0x448FC, symSize: 0x28 } + - { offset: 0xD379A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x1024, symBinAddr: 0x4495C, symSize: 0x184 } + - { offset: 0xD382C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordO8rawValueAGSgSS_tcfCTf4nd_n', symObjAddr: 0x11A8, symBinAddr: 0x44AE0, symSize: 0x484 } + - { offset: 0xD3BF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC17maxOperationCountSivgZTo', symObjAddr: 0x0, symBinAddr: 0x451E0, symSize: 0xC } + - { offset: 0xD3C1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC17maxOperationCountSivpZ', symObjAddr: 0x1A90, symBinAddr: 0x363030, symSize: 0x0 } + - { offset: 0xD3EF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCfETo', symObjAddr: 0x664, symBinAddr: 0x45844, symSize: 0x58 } + - { offset: 0xD3F1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCMa', symObjAddr: 0x6BC, symBinAddr: 0x4589C, symSize: 0x20 } + - { offset: 0xD3F33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFyyScMYccfU_', symObjAddr: 0x6DC, symBinAddr: 0x458BC, symSize: 0x84 } + - { offset: 0xD3F9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFTo', symObjAddr: 0x760, symBinAddr: 0x45940, symSize: 0xD0 } + - { offset: 0xD3FCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask12didWriteData17totalBytesWritten0mn10ExpectedToK0ySo12NSURLSessionC_So0rdI0Cs5Int64VA2NtFyyScMYccfU_', symObjAddr: 0x830, symBinAddr: 0x45A10, symSize: 0xB0 } + - { offset: 0xD405E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask12didWriteData17totalBytesWritten0mn10ExpectedToK0ySo12NSURLSessionC_So0rdI0Cs5Int64VA2NtFTo', symObjAddr: 0x8E0, symBinAddr: 0x45AC0, symSize: 0x84 } + - { offset: 0xD409B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_4task20didCompleteWithErrorySo12NSURLSessionC_So0M4TaskCs0L0_pSgtFyyScMYccfU_', symObjAddr: 0x964, symBinAddr: 0x45B44, symSize: 0xF0 } + - { offset: 0xD4122, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_4task20didCompleteWithErrorySo12NSURLSessionC_So0M4TaskCs0L0_pSgtFTo', symObjAddr: 0xA54, symBinAddr: 0x45C34, symSize: 0x8C } + - { offset: 0xD4163, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFTf4dnnn_n', symObjAddr: 0xAE0, symBinAddr: 0x45CC0, symSize: 0x3C0 } + - { offset: 0xD4267, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask12didWriteData17totalBytesWritten0mn10ExpectedToK0ySo12NSURLSessionC_So0rdI0Cs5Int64VA2NtFTf4dndnnn_n', symObjAddr: 0xEA0, symBinAddr: 0x46080, symSize: 0x3C4 } + - { offset: 0xD43EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_4task20didCompleteWithErrorySo12NSURLSessionC_So0M4TaskCs0L0_pSgtFTf4dnnn_n', symObjAddr: 0x1264, symBinAddr: 0x46444, symSize: 0x448 } + - { offset: 0xD4551, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgWOh', symObjAddr: 0x16F0, symBinAddr: 0x4688C, symSize: 0x40 } + - { offset: 0xD4565, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_4task20didCompleteWithErrorySo12NSURLSessionC_So0M4TaskCs0L0_pSgtFyyScMYccfU_TA', symObjAddr: 0x17E8, symBinAddr: 0x46940, symSize: 0x30 } + - { offset: 0xD4579, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1818, symBinAddr: 0x46970, symSize: 0x10 } + - { offset: 0xD458D, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1828, symBinAddr: 0x46980, symSize: 0x8 } + - { offset: 0xD45A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask12didWriteData17totalBytesWritten0mn10ExpectedToK0ySo12NSURLSessionC_So0rdI0Cs5Int64VA2NtFyyScMYccfU_TA', symObjAddr: 0x1970, symBinAddr: 0x469F4, symSize: 0x34 } + - { offset: 0xD45B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFyyScMYccfU_TA', symObjAddr: 0x1A10, symBinAddr: 0x46A94, symSize: 0x30 } + - { offset: 0xD46C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC17maxOperationCountSivgZTo', symObjAddr: 0x0, symBinAddr: 0x451E0, symSize: 0xC } + - { offset: 0xD46E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC17maxOperationCountSivgZTo', symObjAddr: 0x0, symBinAddr: 0x451E0, symSize: 0xC } + - { offset: 0xD4711, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC17maxOperationCountSivsZTo', symObjAddr: 0xC, symBinAddr: 0x451EC, symSize: 0xC } + - { offset: 0xD4729, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC17maxOperationCountSivsZTo', symObjAddr: 0xC, symBinAddr: 0x451EC, symSize: 0xC } + - { offset: 0xD4801, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC7sessionSo12NSURLSessionCvgTo', symObjAddr: 0x18, symBinAddr: 0x451F8, symSize: 0x34 } + - { offset: 0xD4815, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC7sessionSo12NSURLSessionCvg', symObjAddr: 0x4C, symBinAddr: 0x4522C, symSize: 0xC4 } + - { offset: 0xD48E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC7sessionSo12NSURLSessionCvsTo', symObjAddr: 0x110, symBinAddr: 0x452F0, symSize: 0x34 } + - { offset: 0xD4938, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC15processDelegateAA0D15ProcessProtocol_pSgvgTo', symObjAddr: 0x144, symBinAddr: 0x45324, symSize: 0x20 } + - { offset: 0xD4992, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC15processDelegateAA0D15ProcessProtocol_pSgvsTo', symObjAddr: 0x164, symBinAddr: 0x45344, symSize: 0x14 } + - { offset: 0xD4A55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC03addD0yAA0D9OperationC10Foundation3URLVF', symObjAddr: 0x178, symBinAddr: 0x45358, symSize: 0x1CC } + - { offset: 0xD4B76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC03addD0yAA0D9OperationC10Foundation3URLVFTo', symObjAddr: 0x344, symBinAddr: 0x45524, symSize: 0x9C } + - { offset: 0xD4B9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC9cancelAllyyF', symObjAddr: 0x3E0, symBinAddr: 0x455C0, symSize: 0x11C } + - { offset: 0xD4CA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC9cancelAllyyFTo', symObjAddr: 0x4FC, symBinAddr: 0x456DC, symSize: 0x28 } + - { offset: 0xD4CE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCACycfc', symObjAddr: 0x524, symBinAddr: 0x45704, symSize: 0xF0 } + - { offset: 0xD4D53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCACycfcTo', symObjAddr: 0x614, symBinAddr: 0x457F4, symSize: 0x20 } + - { offset: 0xD4D67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCfD', symObjAddr: 0x634, symBinAddr: 0x45814, symSize: 0x30 } + - { offset: 0xD51B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23IntrinsicCollectionViewCMa', symObjAddr: 0xBC, symBinAddr: 0x46B90, symSize: 0x20 } + - { offset: 0xD5226, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DynamicHeightCollectionViewCMa', symObjAddr: 0x300, symBinAddr: 0x46DD4, symSize: 0x20 } + - { offset: 0xD5323, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewCMa', symObjAddr: 0x5E4, symBinAddr: 0x470B8, symSize: 0x20 } + - { offset: 0xD5351, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23IntrinsicCollectionViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0x0, symBinAddr: 0x46AD4, symSize: 0x80 } + - { offset: 0xD5392, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DynamicHeightCollectionViewC14layoutSubviewsyyFTo', symObjAddr: 0xDC, symBinAddr: 0x46BB0, symSize: 0xA0 } + - { offset: 0xD53E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DynamicHeightCollectionViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0x17C, symBinAddr: 0x46C50, symSize: 0x6C } + - { offset: 0xD5484, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewC5frame010collectionG6LayoutACSo6CGRectV_So012UICollectiongJ0CtcfcTo', symObjAddr: 0x320, symBinAddr: 0x46DF4, symSize: 0xB4 } + - { offset: 0xD552D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x3D4, symBinAddr: 0x46EA8, symSize: 0x94 } + - { offset: 0xD5596, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewC10reloadDatayyFTo', symObjAddr: 0x538, symBinAddr: 0x4700C, symSize: 0x64 } + - { offset: 0xD55D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0x59C, symBinAddr: 0x47070, symSize: 0xC } + - { offset: 0xD55EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0x59C, symBinAddr: 0x47070, symSize: 0xC } + - { offset: 0xD596D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x470D8, symSize: 0x10 } + - { offset: 0xD5AE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCfE', symObjAddr: 0x378, symBinAddr: 0x47450, symSize: 0x10 } + - { offset: 0xD5B0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCfETo', symObjAddr: 0x3B8, symBinAddr: 0x47490, symSize: 0x10 } + - { offset: 0xD5B3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCMa', symObjAddr: 0x3C8, symBinAddr: 0x474A0, symSize: 0x20 } + - { offset: 0xD5B61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x3E8, symBinAddr: 0x474C0, symSize: 0x4 } + - { offset: 0xD5B81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x3E8, symBinAddr: 0x474C0, symSize: 0x4 } + - { offset: 0xD5BA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x3EC, symBinAddr: 0x474C4, symSize: 0xB8 } + - { offset: 0xD5BD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x57C, symBinAddr: 0x4757C, symSize: 0x34 } + - { offset: 0xD5C07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x5B0, symBinAddr: 0x475B0, symSize: 0x24 } + - { offset: 0xD5CB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x5D4, symBinAddr: 0x475D4, symSize: 0x298 } + - { offset: 0xD5F50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x86C, symBinAddr: 0x4786C, symSize: 0x28 } + - { offset: 0xD5F7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x894, symBinAddr: 0x47894, symSize: 0x4 } + - { offset: 0xD5F9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x894, symBinAddr: 0x47894, symSize: 0x4 } + - { offset: 0xD5FC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4ddd_n', symObjAddr: 0x898, symBinAddr: 0x47898, symSize: 0xC0 } + - { offset: 0xD60E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTf4nnd_n', symObjAddr: 0x958, symBinAddr: 0x47958, symSize: 0x214 } + - { offset: 0xD629C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0xB6C, symBinAddr: 0x47B6C, symSize: 0x1C0 } + - { offset: 0xD6481, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVSgWOe', symObjAddr: 0xD70, symBinAddr: 0x47D2C, symSize: 0x3C } + - { offset: 0xD665C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x470D8, symSize: 0x10 } + - { offset: 0xD6674, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x470D8, symSize: 0x10 } + - { offset: 0xD66BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x470E8, symSize: 0x34 } + - { offset: 0xD6709, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x44, symBinAddr: 0x4711C, symSize: 0x5C } + - { offset: 0xD674A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC014configureTableF0yyF', symObjAddr: 0xA0, symBinAddr: 0x47178, symSize: 0x150 } + - { offset: 0xD6821, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x1F0, symBinAddr: 0x472C8, symSize: 0x38 } + - { offset: 0xD688C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x228, symBinAddr: 0x47300, symSize: 0xC4 } + - { offset: 0xD68E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2EC, symBinAddr: 0x473C4, symSize: 0x8C } + - { offset: 0xD691B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCfD', symObjAddr: 0x388, symBinAddr: 0x47460, symSize: 0x30 } + - { offset: 0xD6EE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOwet', symObjAddr: 0xF4, symBinAddr: 0x47D8C, symSize: 0x90 } + - { offset: 0xD6EFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOwst', symObjAddr: 0x184, symBinAddr: 0x47E1C, symSize: 0xB0 } + - { offset: 0xD6F10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOMa', symObjAddr: 0x248, symBinAddr: 0x47ECC, symSize: 0x10 } + - { offset: 0xD6F24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOSHAASQWb', symObjAddr: 0x258, symBinAddr: 0x47EDC, symSize: 0x4 } + - { offset: 0xD6F38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOACSQAAWl', symObjAddr: 0x25C, symBinAddr: 0x47EE0, symSize: 0x40 } + - { offset: 0xD6F74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xC0, symBinAddr: 0x47D68, symSize: 0x18 } + - { offset: 0xD6F9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xD8, symBinAddr: 0x47D80, symSize: 0xC } + - { offset: 0xD7334, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9makeCubic4from2to5large5sweep2rx2ry8rotationSayAA9LayerTreeO5PointV1p_AM3cp1AM3cp2tGAM_AMS2bS3ftF', symObjAddr: 0x0, symBinAddr: 0x47F20, symSize: 0x5AC } + - { offset: 0xD7710, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9makeCubic4from2to5large5sweep2rx2ry8rotationSayAA9LayerTreeO5PointV1p_AM3cp1AM3cp2tGAM_AMS2bS3ftF', symObjAddr: 0x0, symBinAddr: 0x47F20, symSize: 0x5AC } + - { offset: 0xD85E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtF', symObjAddr: 0x0, symBinAddr: 0x484CC, symSize: 0x164 } + - { offset: 0xD86DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewCfETo', symObjAddr: 0x320, symBinAddr: 0x487EC, symSize: 0x10 } + - { offset: 0xD870A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewCMa', symObjAddr: 0x330, symBinAddr: 0x487FC, symSize: 0x20 } + - { offset: 0xD871E, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewCMa', symObjAddr: 0x350, symBinAddr: 0x4881C, symSize: 0x44 } + - { offset: 0xD87A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtF', symObjAddr: 0x0, symBinAddr: 0x484CC, symSize: 0x164 } + - { offset: 0xD8832, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtFTo', symObjAddr: 0x164, symBinAddr: 0x48630, symSize: 0x78 } + - { offset: 0xD8869, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1DC, symBinAddr: 0x486A8, symSize: 0x80 } + - { offset: 0xD88E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x25C, symBinAddr: 0x48728, symSize: 0x94 } + - { offset: 0xD8922, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewCfD', symObjAddr: 0x2F0, symBinAddr: 0x487BC, symSize: 0x30 } + - { offset: 0xD9B2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCMU', symObjAddr: 0x7384, symBinAddr: 0x4FAA0, symSize: 0x8 } + - { offset: 0xD9B40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCMa', symObjAddr: 0x738C, symBinAddr: 0x4FAA8, symSize: 0x38 } + - { offset: 0xD9B54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCMr', symObjAddr: 0x73C4, symBinAddr: 0x4FAE0, symSize: 0xE4 } + - { offset: 0xD9B68, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVSgMa', symObjAddr: 0x7C70, symBinAddr: 0x5038C, symSize: 0x54 } + - { offset: 0xD9B7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOAFs0E3KeyAAWl', symObjAddr: 0x86B4, symBinAddr: 0x50D68, symSize: 0x40 } + - { offset: 0xD9B90, size: 0x8, addend: 0x0, symName: '_$sSaySo22CLLocationCoordinate2DVGSayxGSesSeRzlWl', symObjAddr: 0x8714, symBinAddr: 0x50DA8, symSize: 0x80 } + - { offset: 0xD9BA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOACSeAAWl', symObjAddr: 0x87DC, symBinAddr: 0x50E28, symSize: 0x40 } + - { offset: 0xD9BB8, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI5PlaceCGSayxGSesSeRzlWl', symObjAddr: 0x881C, symBinAddr: 0x50E68, symSize: 0x80 } + - { offset: 0xD9BCC, size: 0x8, addend: 0x0, symName: '_$sSay7Penguin8ScheduleCGSayxGSesSeRzlWl', symObjAddr: 0x889C, symBinAddr: 0x50EE8, symSize: 0x80 } + - { offset: 0xD9BE0, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVSgWOd', symObjAddr: 0x891C, symBinAddr: 0x50F68, symSize: 0x48 } + - { offset: 0xD9BF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVSgWOg', symObjAddr: 0x8964, symBinAddr: 0x50FB0, symSize: 0x24 } + - { offset: 0xD9D37, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI5PlaceC_Tg503$s8ef3UI5H37C12setEntrancesyySayACGFSbAC_ACtXEfU_Tf1nnncn_n', symObjAddr: 0x8988, symBinAddr: 0x50FD4, symSize: 0x410 } + - { offset: 0xDA287, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI5PlaceC_Tg503$s8fg3UI5I37C12setEntrancesyySayACGFSbAC_ACtXEfU_Tf1nncn_n', symObjAddr: 0x8D98, symBinAddr: 0x513E4, symSize: 0x26C } + - { offset: 0xDA622, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI5PlaceC_Tg503$s8gh3UI5J37C12setEntrancesyySayACGFSbAC_ACtXEfU_Tf1nnnnc_n', symObjAddr: 0x9004, symBinAddr: 0x51650, symSize: 0x254 } + - { offset: 0xDAA53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19detectEndMarkerType9floorPath09isLastSubL010completiony7Penguin0oL0CSg_SbySo7UIImageCSgctFyANcfU0_TA', symObjAddr: 0xB578, symBinAddr: 0x53BC4, symSize: 0x8 } + - { offset: 0xDAA67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14getOrderedIcon5order10completionySi_ySo7UIImageCSgctFyAIcfU_TA', symObjAddr: 0xB580, symBinAddr: 0x53BCC, symSize: 0x8 } + - { offset: 0xDAA7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctFyAKcfU1_TA', symObjAddr: 0xB588, symBinAddr: 0x53BD4, symSize: 0x8 } + - { offset: 0xDAA8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctFyAKcfU0_TA', symObjAddr: 0xB590, symBinAddr: 0x53BDC, symSize: 0x30 } + - { offset: 0xDAAA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctFyAKcfU_TA', symObjAddr: 0xB5C0, symBinAddr: 0x53C0C, symSize: 0x30 } + - { offset: 0xDABD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC23showArrivalConfirmation33_2BE4A475C9A281DA0308C98892968072LL3foryAA5PlaceCSg_tFySo7UIImageCSgcfU0_TA', symObjAddr: 0xED64, symBinAddr: 0x5734C, symSize: 0x8 } + - { offset: 0xDABE6, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xEDB0, symBinAddr: 0x57388, symSize: 0x10 } + - { offset: 0xDABFA, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xEDC0, symBinAddr: 0x57398, symSize: 0x8 } + - { offset: 0xDAC0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC21drawDestinationSymbol3for2atyAA5PlaceCSg_So22CLLocationCoordinate2DVSgtFySo7UIImageCSgcfU1_TA', symObjAddr: 0xEDCC, symBinAddr: 0x573A4, symSize: 0xC } + - { offset: 0xDAC22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7getIcon10completionyySo7UIImageCSgc_tFyAHcfU0_TA', symObjAddr: 0xEE14, symBinAddr: 0x573EC, symSize: 0x20 } + - { offset: 0xDAC5E, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationOWOy', symObjAddr: 0xEE74, symBinAddr: 0x5740C, symSize: 0x40 } + - { offset: 0xDAC72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC16updateSymbolIconyyFySo7UIImageCSgcfU_TA', symObjAddr: 0xEEF4, symBinAddr: 0x57478, symSize: 0x8 } + - { offset: 0xDAC86, size: 0x8, addend: 0x0, symName: '_$sSaySo22CLLocationCoordinate2DVGSayxGSEsSERzlWl', symObjAddr: 0xEF3C, symBinAddr: 0x57480, symSize: 0x80 } + - { offset: 0xDAC9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOACSEAAWl', symObjAddr: 0xEFBC, symBinAddr: 0x57500, symSize: 0x40 } + - { offset: 0xDACAE, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI5PlaceCGSayxGSEsSERzlWl', symObjAddr: 0xEFFC, symBinAddr: 0x57540, symSize: 0x80 } + - { offset: 0xDACC2, size: 0x8, addend: 0x0, symName: '_$sSay7Penguin8ScheduleCGSayxGSEsSERzlWl', symObjAddr: 0xF07C, symBinAddr: 0x575C0, symSize: 0x80 } + - { offset: 0xDACD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8setImage2inySo11UIImageViewCSg_tFySo0H0CSgcfU0_TA', symObjAddr: 0xF13C, symBinAddr: 0x57640, symSize: 0x14 } + - { offset: 0xDAD10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOwet', symObjAddr: 0xF1F0, symBinAddr: 0x57654, symSize: 0x90 } + - { offset: 0xDAD24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOwst', symObjAddr: 0xF280, symBinAddr: 0x576E4, symSize: 0xB0 } + - { offset: 0xDAD38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOMa', symObjAddr: 0xF344, symBinAddr: 0x57794, symSize: 0x10 } + - { offset: 0xDAD4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOSHAASQWb', symObjAddr: 0xF354, symBinAddr: 0x577A4, symSize: 0x4 } + - { offset: 0xDAD60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOAFSQAAWl', symObjAddr: 0xF358, symBinAddr: 0x577A8, symSize: 0x40 } + - { offset: 0xDAD74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xF398, symBinAddr: 0x577E8, symSize: 0x4 } + - { offset: 0xDAD88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xF39C, symBinAddr: 0x577EC, symSize: 0x40 } + - { offset: 0xDAD9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0xF3DC, symBinAddr: 0x5782C, symSize: 0x4 } + - { offset: 0xDADB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0xF3E0, symBinAddr: 0x57830, symSize: 0x40 } + - { offset: 0xDAE0A, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI5PlaceCG_Tg503$s8fg3UI5I37C12setEntrancesyySayACGFSbAC_ACtXEfU_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x48860, symSize: 0x170 } + - { offset: 0xDB3A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x727C, symBinAddr: 0x4F998, symSize: 0x28 } + - { offset: 0xDB3BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x72A4, symBinAddr: 0x4F9C0, symSize: 0x28 } + - { offset: 0xDB5A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC12setEntrancesyySayACGF', symObjAddr: 0x5030, symBinAddr: 0x4D890, symSize: 0x658 } + - { offset: 0xDBD9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8category7Penguin11POICategoryVSgvg', symObjAddr: 0x170, symBinAddr: 0x489D0, symSize: 0x88 } + - { offset: 0xDBE80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC5floor7Penguin5FloorCSgvg', symObjAddr: 0x1F8, symBinAddr: 0x48A58, symSize: 0x8C } + - { offset: 0xDC178, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14compactAddressSSSgvg', symObjAddr: 0x284, symBinAddr: 0x48AE4, symSize: 0x19C } + - { offset: 0xDC31C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14stopDictionarySDySSypGvg', symObjAddr: 0x420, symBinAddr: 0x48C80, symSize: 0x294 } + - { offset: 0xDC532, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10isFavoriteSbvg', symObjAddr: 0x6B4, symBinAddr: 0x48F14, symSize: 0x164 } + - { offset: 0xDC643, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13isRawLocationSbvg', symObjAddr: 0x818, symBinAddr: 0x49078, symSize: 0x31C } + - { offset: 0xDC833, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCACycfc', symObjAddr: 0xB34, symBinAddr: 0x49394, symSize: 0x140 } + - { offset: 0xDC916, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC12searchResultAcA7POIDataCSg_tcfc', symObjAddr: 0xC74, symBinAddr: 0x494D4, symSize: 0xC98 } + - { offset: 0xDCDC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8location4typeAC7Penguin10PILocationCSg_AA0D4TypeOtcfc', symObjAddr: 0x190C, symBinAddr: 0x4A16C, symSize: 0x544 } + - { offset: 0xDD095, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCyA2CSgcfc', symObjAddr: 0x1E50, symBinAddr: 0x4A6B0, symSize: 0x4A0 } + - { offset: 0xDD131, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC3poi8scheduleAC7Penguin10PoiPolygonVSg_SayAF8ScheduleCGSgtcfc', symObjAddr: 0x22F0, symBinAddr: 0x4AB50, symSize: 0x9CC } + - { offset: 0xDD2D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC3poiAcA7POIDataCSg_tcfc', symObjAddr: 0x2CBC, symBinAddr: 0x4B51C, symSize: 0x430 } + - { offset: 0xDD390, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8favoriteAcA8FavoriteC_tcfc', symObjAddr: 0x30EC, symBinAddr: 0x4B94C, symSize: 0xD14 } + - { offset: 0xDD7C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC5venue8scheduleAC7Penguin5VenueCSg_SayAF8ScheduleCGSgtcfc', symObjAddr: 0x3E00, symBinAddr: 0x4C660, symSize: 0x3F4 } + - { offset: 0xDD87C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC6campusAC7Penguin5VenueCSg_tcfc', symObjAddr: 0x41F4, symBinAddr: 0x4CA54, symSize: 0x3E0 } + - { offset: 0xDD925, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC4gate7venueId4typeAcA9VenueGateVSg_SiSgAA0D4TypeOSgtcfc', symObjAddr: 0x45D4, symBinAddr: 0x4CE34, symSize: 0x440 } + - { offset: 0xDD97A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC4gate7venueId4typeACSg7Penguin13GateNodeModelCSg_SiSgAA0D4TypeOSgtcfc', symObjAddr: 0x4A14, symBinAddr: 0x4D274, symSize: 0x238 } + - { offset: 0xDD9E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13setNearPlacesyy7Penguin0fD0VSgF', symObjAddr: 0x4C4C, symBinAddr: 0x4D4AC, symSize: 0x1F0 } + - { offset: 0xDDA20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC11setEntranceyyACSgF', symObjAddr: 0x4E3C, symBinAddr: 0x4D69C, symSize: 0xD4 } + - { offset: 0xDDB59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC12setEntrancesyyACSgd_tF', symObjAddr: 0x4F10, symBinAddr: 0x4D770, symSize: 0x120 } + - { offset: 0xDDDB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14selectEntranceyyACSgF', symObjAddr: 0x5688, symBinAddr: 0x4DEE8, symSize: 0x160 } + - { offset: 0xDDFFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8setImage2inySo11UIImageViewCSg_tF', symObjAddr: 0x57E8, symBinAddr: 0x4E048, symSize: 0x5D0 } + - { offset: 0xDE2A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF', symObjAddr: 0x5E30, symBinAddr: 0x4E618, symSize: 0x5A0 } + - { offset: 0xDE4D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctFyAKcfU1_', symObjAddr: 0x64BC, symBinAddr: 0x4ECA4, symSize: 0xE4 } + - { offset: 0xDE552, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7getIcon10completionyySo7UIImageCSgc_tFyAHcfU0_', symObjAddr: 0x65A0, symBinAddr: 0x4ED88, symSize: 0x20 } + - { offset: 0xDE57B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14getOrderedIcon5order10completionySi_ySo7UIImageCSgctFyAIcfU_', symObjAddr: 0x65C0, symBinAddr: 0x4EDA8, symSize: 0x58 } + - { offset: 0xDE5B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7matchesySbACSgF', symObjAddr: 0x6618, symBinAddr: 0x4EE00, symSize: 0x414 } + - { offset: 0xDE745, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC16mapToDestination7Penguin0G0CyF', symObjAddr: 0x6A2C, symBinAddr: 0x4F214, symSize: 0x1B0 } + - { offset: 0xDE831, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC11setLocationyy7Penguin10PILocationCSgF', symObjAddr: 0x6BDC, symBinAddr: 0x4F3C4, symSize: 0x2C4 } + - { offset: 0xDE868, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLO11stringValueSSvg', symObjAddr: 0x6EA0, symBinAddr: 0x4F688, symSize: 0x2D8 } + - { offset: 0xDE914, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x7238, symBinAddr: 0x4F960, symSize: 0x8 } + - { offset: 0xDE92F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x7240, symBinAddr: 0x4F968, symSize: 0x24 } + - { offset: 0xDE958, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x7270, symBinAddr: 0x4F98C, symSize: 0xC } + - { offset: 0xDE96C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCfd', symObjAddr: 0x72CC, symBinAddr: 0x4F9E8, symSize: 0x94 } + - { offset: 0xDE98F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCfD', symObjAddr: 0x7360, symBinAddr: 0x4FA7C, symSize: 0x24 } + - { offset: 0xDE9B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC6encode2toys7Encoder_p_tKF', symObjAddr: 0x74A8, symBinAddr: 0x4FBC4, symSize: 0x7C8 } + - { offset: 0xDE9E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x7CC4, symBinAddr: 0x503E0, symSize: 0x910 } + - { offset: 0xDEA1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x85D4, symBinAddr: 0x50CF0, symSize: 0x58 } + - { offset: 0xDEA44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x862C, symBinAddr: 0x50D48, symSize: 0x20 } + - { offset: 0xDEA65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC22getOrderedLetterString5orderSSSgSi_tFTf4nd_n', symObjAddr: 0x9258, symBinAddr: 0x518A4, symSize: 0x100 } + - { offset: 0xDEB39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC6campus7Penguin5VenueCSgvgTf4d_n', symObjAddr: 0x9358, symBinAddr: 0x519A4, symSize: 0x144 } + - { offset: 0xDEFE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7getIcon10completionyySo7UIImageCSgc_tF03$s8ab46UI16SelectionManagerC16updateSymbolIconyyFySo7H7CSgcfU_AA0kL0CSgXwz_XxACTf1cn_nTf4ngg_n', symObjAddr: 0x949C, symBinAddr: 0x51AE8, symSize: 0xE08 } + - { offset: 0xDF699, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC23setCurrentLocationImage2inySo11UIImageViewCSg_tFTf4nd_n', symObjAddr: 0xA2A4, symBinAddr: 0x528F0, symSize: 0x474 } + - { offset: 0xDF8C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab102UI27DirectionCollectionViewCellC23showArrivalConfirmation33_2BE4A475C9A281DA0308C98892968072LL3foryAA5d10CSg_tFySo7L8CSgcfU0_AA0opqR0CSgXwz_XxTf1ncn_nTf4nng_n', symObjAddr: 0xA718, symBinAddr: 0x52D64, symSize: 0x67C } + - { offset: 0xDFB0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab105UI24NavigationViewControllerC19detectEndMarkerType9floorPath09isLastSubL010completiony7Penguin0oL0CSg_SbysltU7ANcfU0_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xAD94, symBinAddr: 0x533E0, symSize: 0x7C0 } + - { offset: 0xDFEC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab93UI24NavigationViewControllerC21detectStartMarkerType9floorPath10completiony7Penguin03SubL0C_ysltU7ALcfU0_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xB634, symBinAddr: 0x53C3C, symSize: 0x7C0 } + - { offset: 0xE027B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab93UI24NavigationViewControllerC21detectStartMarkerType9floorPath10completiony7Penguin03SubL0C_ysltU7ALcfU2_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xBDF4, symBinAddr: 0x543FC, symSize: 0x7C0 } + - { offset: 0xE0651, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab163UI19RouteOverviewHelperC14detectLastNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath11coordinates10completiony7Penguin7SubPathCSg_SaySo22CLLocationCoordinate2DVGysltU7ARcfU0_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xC5B4, symBinAddr: 0x54BBC, symSize: 0x7C0 } + - { offset: 0xE0A27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab120UI19RouteOverviewHelperC15detectFirstNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath10completiony7Penguin7SubPathCSg_ysltU7ANcfU0_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xCD74, symBinAddr: 0x5537C, symSize: 0x7C0 } + - { offset: 0xE0E01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7getIcon10completionyySo7UIImageCSgc_tF03$s8ab56UI17PoiDrawingManagerC21drawDestinationSymbol3for2atyAA5d39CSg_So22CLLocationCoordinate2DVSgtFySo7H8CSgcfU1_ACSgA2hA0klM0CSgXwz_XxTf1cn_nTf4ngggg_n', symObjAddr: 0xD534, symBinAddr: 0x55B3C, symSize: 0x1544 } + - { offset: 0xE15B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC16getOrderedLetter5orderSo7UIImageCSgSi_tFTf4nd_n', symObjAddr: 0xEA78, symBinAddr: 0x57080, symSize: 0x2CC } + - { offset: 0xE16DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0xF420, symBinAddr: 0x57870, symSize: 0x804 } + - { offset: 0xE1F13, size: 0x8, addend: 0x0, symName: '_$sSq8PenNavUISdRszlE16toDistanceStringSSvg', symObjAddr: 0x0, symBinAddr: 0x58128, symSize: 0xFC } + - { offset: 0xE1F97, size: 0x8, addend: 0x0, symName: '_$sSq8PenNavUISdRszlE16toDistanceStringSSvg', symObjAddr: 0x0, symBinAddr: 0x58128, symSize: 0xFC } + - { offset: 0xE2BBE, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVSgSo13NSURLResponseCSgs5Error_pSgIeghggg_So6NSDataCSgAGSo7NSErrorCSgIeyBhyyy_TR', symObjAddr: 0x1214, symBinAddr: 0x59438, symSize: 0xC8 } + - { offset: 0xE2BD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCfETo', symObjAddr: 0x1564, symBinAddr: 0x59788, symSize: 0x84 } + - { offset: 0xE2C05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCMa', symObjAddr: 0x15E8, symBinAddr: 0x5980C, symSize: 0x20 } + - { offset: 0xE2C19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC15makePOSTRequest33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLL3url8postData7headers10completionySS_10Foundation0Q0VSDyS2SGySDySSyXlGctFyALSg_So13NSURLResponseCSgs5Error_pSgtYbcfU_TA', symObjAddr: 0x16DC, symBinAddr: 0x5987C, symSize: 0xC } + - { offset: 0xE2C2D, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x16E8, symBinAddr: 0x59888, symSize: 0x10 } + - { offset: 0xE2C41, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x16F8, symBinAddr: 0x59898, symSize: 0x8 } + - { offset: 0xE2C55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC5speakyySSSgFySDySSyXlGcfU_TA', symObjAddr: 0x17A0, symBinAddr: 0x598A0, symSize: 0x8 } + - { offset: 0xE2C69, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVSgWOy', symObjAddr: 0x18AC, symBinAddr: 0x59970, symSize: 0x14 } + - { offset: 0xE2CE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC5speakyySSSgF', symObjAddr: 0x0, symBinAddr: 0x58224, symSize: 0x2CC } + - { offset: 0xE2E3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC5speakyySSSgFySDySSyXlGcfU_', symObjAddr: 0x2CC, symBinAddr: 0x584F0, symSize: 0x3D8 } + - { offset: 0xE344E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC13buildPostData33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLL4text10Foundation0H0VSSSg_tF', symObjAddr: 0x6A4, symBinAddr: 0x588C8, symSize: 0x614 } + - { offset: 0xE3AB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC15makePOSTRequest33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLL3url8postData7headers10completionySS_10Foundation0Q0VSDyS2SGySDySSyXlGctF', symObjAddr: 0xCB8, symBinAddr: 0x58EDC, symSize: 0x38C } + - { offset: 0xE3C40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC15makePOSTRequest33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLL3url8postData7headers10completionySS_10Foundation0Q0VSDyS2SGySDySSyXlGctFyALSg_So13NSURLResponseCSgs5Error_pSgtYbcfU_', symObjAddr: 0x1044, symBinAddr: 0x59268, symSize: 0x1D0 } + - { offset: 0xE3D1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC27audioPlayerDidFinishPlaying_12successfullyySo07AVAudioG0C_SbtFTo', symObjAddr: 0x12DC, symBinAddr: 0x59500, symSize: 0x4C } + - { offset: 0xE3D46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC16resetAudioPlayer33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLLyyF', symObjAddr: 0x1328, symBinAddr: 0x5954C, symSize: 0x50 } + - { offset: 0xE3DD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC12stopSpeakingyyF', symObjAddr: 0x1378, symBinAddr: 0x5959C, symSize: 0x98 } + - { offset: 0xE3E94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCACycfc', symObjAddr: 0x1410, symBinAddr: 0x59634, symSize: 0x104 } + - { offset: 0xE3EE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCACycfcTo', symObjAddr: 0x1514, symBinAddr: 0x59738, symSize: 0x20 } + - { offset: 0xE3EF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCfD', symObjAddr: 0x1534, symBinAddr: 0x59758, symSize: 0x30 } + - { offset: 0xE3F1A, size: 0x8, addend: 0x0, symName: '_$sSo13AVAudioPlayerC4dataAB10Foundation4DataV_tKcfcTOTf4gn_n', symObjAddr: 0x17E4, symBinAddr: 0x598A8, symSize: 0xC8 } + - { offset: 0xE3F35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC27audioPlayerDidFinishPlaying_12successfullyySo07AVAudioG0C_SbtFTf4ddn_n', symObjAddr: 0x18C0, symBinAddr: 0x59984, symSize: 0x1EC } + - { offset: 0xE4649, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13RenderingModeOMa', symObjAddr: 0xE4, symBinAddr: 0x59B70, symSize: 0x10 } + - { offset: 0xE465D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13RenderingModeOSHAASQWb', symObjAddr: 0xF4, symBinAddr: 0x59B80, symSize: 0x4 } + - { offset: 0xE4671, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13RenderingModeOACSQAAWl', symObjAddr: 0xF8, symBinAddr: 0x59B84, symSize: 0x40 } + - { offset: 0xE4A09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC12getFloorByIdy7Penguin0G0CSgSiSgF', symObjAddr: 0x0, symBinAddr: 0x59BC4, symSize: 0x10C } + - { offset: 0xE4A2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC14sharedInstance33_956C2914F155F2C44055070183674D2FLLACSgvpZ', symObjAddr: 0xB20, symBinAddr: 0x363818, symSize: 0x0 } + - { offset: 0xE4CE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerCMa', symObjAddr: 0xB00, symBinAddr: 0x5A6A0, symSize: 0x20 } + - { offset: 0xE4E98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC12getFloorByIdy7Penguin0G0CSgSiSgF', symObjAddr: 0x0, symBinAddr: 0x59BC4, symSize: 0x10C } + - { offset: 0xE5031, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC14getCampusFloor7Penguin0H0CSgyF', symObjAddr: 0x10C, symBinAddr: 0x59CD0, symSize: 0xF0 } + - { offset: 0xE522F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC012getConnectedD04withSay7Penguin5FloorCGAHSg_tF', symObjAddr: 0x1FC, symBinAddr: 0x59DC0, symSize: 0x8E0 } + - { offset: 0xE6D07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC3APIOSHAASQWb', symObjAddr: 0x5EB4, symBinAddr: 0x6042C, symSize: 0x4 } + - { offset: 0xE6D1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC3APIOAESQAAWl', symObjAddr: 0x5EB8, symBinAddr: 0x60430, symSize: 0x40 } + - { offset: 0xE6D2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAcA08RendererE0AAWl', symObjAddr: 0x5EF8, symBinAddr: 0x60470, symSize: 0x40 } + - { offset: 0xE6D43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererCMa', symObjAddr: 0x5F38, symBinAddr: 0x604B0, symSize: 0x20 } + - { offset: 0xE6D57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC3APIOMa', symObjAddr: 0x60CC, symBinAddr: 0x604DC, symSize: 0x10 } + - { offset: 0xE6D6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOMa', symObjAddr: 0x6230, symBinAddr: 0x604EC, symSize: 0x10 } + - { offset: 0xE6D7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVMa', symObjAddr: 0x6240, symBinAddr: 0x604FC, symSize: 0x10 } + - { offset: 0xE6D93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwxx', symObjAddr: 0x627C, symBinAddr: 0x6050C, symSize: 0x28 } + - { offset: 0xE6DA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwcp', symObjAddr: 0x62A4, symBinAddr: 0x60534, symSize: 0x4C } + - { offset: 0xE6DBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwca', symObjAddr: 0x62F0, symBinAddr: 0x60580, symSize: 0x74 } + - { offset: 0xE6DCF, size: 0x8, addend: 0x0, symName: ___swift_memcpy40_8, symObjAddr: 0x6364, symBinAddr: 0x605F4, symSize: 0x14 } + - { offset: 0xE6DE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwta', symObjAddr: 0x6378, symBinAddr: 0x60608, symSize: 0x54 } + - { offset: 0xE6DF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwet', symObjAddr: 0x63CC, symBinAddr: 0x6065C, symSize: 0x48 } + - { offset: 0xE6E0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwst', symObjAddr: 0x6414, symBinAddr: 0x606A4, symSize: 0x48 } + - { offset: 0xE6E1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVMa', symObjAddr: 0x645C, symBinAddr: 0x606EC, symSize: 0x10 } + - { offset: 0xE6E33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSHAASQWb', symObjAddr: 0x6470, symBinAddr: 0x60700, symSize: 0x4 } + - { offset: 0xE6E47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOAESQAAWl', symObjAddr: 0x6474, symBinAddr: 0x60704, symSize: 0x40 } + - { offset: 0xE6E5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA9BlendModeAaDP_SQWT', symObjAddr: 0x64B4, symBinAddr: 0x60744, symSize: 0xC } + - { offset: 0xE6E6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA5FloatAaDP_SQWT', symObjAddr: 0x64D8, symBinAddr: 0x60750, symSize: 0xC } + - { offset: 0xE6E83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA8GradientAaDP_SQWT', symObjAddr: 0x64E4, symBinAddr: 0x6075C, symSize: 0x4 } + - { offset: 0xE6E97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVAESQAAWl', symObjAddr: 0x64E8, symBinAddr: 0x60760, symSize: 0x40 } + - { offset: 0xE6EAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA5ImageAaDP_SQWT', symObjAddr: 0x6528, symBinAddr: 0x607A0, symSize: 0x4 } + - { offset: 0xE6EBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOAESQAAWl', symObjAddr: 0x652C, symBinAddr: 0x607A4, symSize: 0x40 } + - { offset: 0xE6ED3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA4PathAaDP_SQWT', symObjAddr: 0x6584, symBinAddr: 0x607E4, symSize: 0x4 } + - { offset: 0xE6EE7, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI9LayerTreeO5ShapeOGSayxGSQsSQRzlWl', symObjAddr: 0x6588, symBinAddr: 0x607E8, symSize: 0x68 } + - { offset: 0xE6EFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOAESQAAWl', symObjAddr: 0x6638, symBinAddr: 0x60850, symSize: 0x40 } + - { offset: 0xE6F51, size: 0x8, addend: 0x0, symName: '_$ss26DefaultStringInterpolationV8PenNavUIE06appendC0_6indentySayAC9LayerTreeO5PointVG_SitF', symObjAddr: 0x66B4, symBinAddr: 0x60890, symSize: 0x3B8 } + - { offset: 0xE74ED, size: 0x8, addend: 0x0, symName: '_$sSlsE5split9maxSplits25omittingEmptySubsequences14whereSeparatorSay11SubSequenceQzGSi_S2b7ElementQzKXEtKFSS_Tg5', symObjAddr: 0x6A6C, symBinAddr: 0x60C48, symSize: 0x3EC } + - { offset: 0xE7A07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOWOy', symObjAddr: 0x747C, symBinAddr: 0x61538, symSize: 0x24 } + - { offset: 0xE7A1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOWOe', symObjAddr: 0x74A0, symBinAddr: 0x6155C, symSize: 0x24 } + - { offset: 0xE7A2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA11CGTextTypesVGWOc', symObjAddr: 0x7518, symBinAddr: 0x61580, symSize: 0x48 } + - { offset: 0xE7A43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA11CGTextTypesVGWOh', symObjAddr: 0x7560, symBinAddr: 0x615C8, symSize: 0x40 } + - { offset: 0xE7C4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xD04, symBinAddr: 0x5B27C, symSize: 0xD0 } + - { offset: 0xE7D60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSHAASH9hashValueSivgTW', symObjAddr: 0xE44, symBinAddr: 0x5B3BC, symSize: 0x84 } + - { offset: 0xE7E14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xEC8, symBinAddr: 0x5B440, symSize: 0x60 } + - { offset: 0xE7E84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF28, symBinAddr: 0x5B4A0, symSize: 0x80 } + - { offset: 0xE826A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV11createPoint4fromSSAA9LayerTreeO0G0V_tF', symObjAddr: 0x0, symBinAddr: 0x5A6C0, symSize: 0x17C } + - { offset: 0xE8459, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV10createRect4fromSSAA9LayerTreeO0G0V_tF', symObjAddr: 0x17C, symBinAddr: 0x5A83C, symSize: 0x270 } + - { offset: 0xE8808, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV11createColor4fromSSAA9LayerTreeO0G0O_tF', symObjAddr: 0x3EC, symBinAddr: 0x5AAAC, symSize: 0x26C } + - { offset: 0xE8CAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV13createPattern4from8contentsSSAA9LayerTreeO0G0C_SayAA15RendererCommandOyAA0D5TypesVGGtF', symObjAddr: 0x658, symBinAddr: 0x5AD18, symSize: 0x564 } + - { offset: 0xE94BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xDD4, symBinAddr: 0x5B34C, symSize: 0x2C } + - { offset: 0xE94E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0xE00, symBinAddr: 0x5B378, symSize: 0x44 } + - { offset: 0xE951D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC16createColorSpaceyyAC0gH0OF', symObjAddr: 0xFA8, symBinAddr: 0x5B520, symSize: 0x2F8 } + - { offset: 0xE991A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC11updateColoryS2SF', symObjAddr: 0x12A0, symBinAddr: 0x5B818, symSize: 0x180 } + - { offset: 0xE9A0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC16createOrGetColoryS2SF', symObjAddr: 0x1420, symBinAddr: 0x5B998, symSize: 0x270 } + - { offset: 0xE9CD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC16createOrGetColorySSAA9LayerTreeO0I0OF', symObjAddr: 0x1690, symBinAddr: 0x5BC08, symSize: 0x2C0 } + - { offset: 0xEA07D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC15createOrGetPathyS2SF', symObjAddr: 0x1950, symBinAddr: 0x5BEC8, symSize: 0x34C } + - { offset: 0xEA3C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC20createOrGetTransformyS2SF', symObjAddr: 0x1C9C, symBinAddr: 0x5C214, symSize: 0x358 } + - { offset: 0xEA725, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC21createOrGetColorSpace3forAC0iJ0OAA9LayerTreeOAFO_tF', symObjAddr: 0x1FF4, symBinAddr: 0x5C56C, symSize: 0x608 } + - { offset: 0xEAECA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC19createOrGetGradientySSAA9LayerTreeO0I0VF', symObjAddr: 0x25FC, symBinAddr: 0x5CB74, symSize: 0x67C } + - { offset: 0xEB9B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC18createOrGetPatternyS2SF', symObjAddr: 0x2C78, symBinAddr: 0x5D1F0, symSize: 0x54C } + - { offset: 0xEBD9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC11concatenate9transformySS_tF', symObjAddr: 0x31C4, symBinAddr: 0x5D73C, symSize: 0x138 } + - { offset: 0xEBFA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC9translate2tx2tyySf_SftF', symObjAddr: 0x32FC, symBinAddr: 0x5D874, symSize: 0x214 } + - { offset: 0xEC2B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC5scale2sx2syySf_SftF', symObjAddr: 0x3538, symBinAddr: 0x5DAB0, symSize: 0x21C } + - { offset: 0xEC5B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setFill5colorySS_tF', symObjAddr: 0x3754, symBinAddr: 0x5DCCC, symSize: 0x138 } + - { offset: 0xEC7B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setFill7patternySS_tF', symObjAddr: 0x388C, symBinAddr: 0x5DE04, symSize: 0x39C } + - { offset: 0xECD15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC9setStroke5colorySS_tF', symObjAddr: 0x3C28, symBinAddr: 0x5E1A0, symSize: 0x138 } + - { offset: 0xECF19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setLine5widthySf_tF', symObjAddr: 0x3D60, symBinAddr: 0x5E2D8, symSize: 0x194 } + - { offset: 0xED15A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setLine3capySS_tF', symObjAddr: 0x3EF4, symBinAddr: 0x5E46C, symSize: 0x134 } + - { offset: 0xED330, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setLine4joinySS_tF', symObjAddr: 0x4028, symBinAddr: 0x5E5A0, symSize: 0x12C } + - { offset: 0xED51C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setLine10miterLimitySf_tF', symObjAddr: 0x4154, symBinAddr: 0x5E6CC, symSize: 0x194 } + - { offset: 0xED762, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setClip4path4ruleySayAA9LayerTreeO5ShapeOG_SStF', symObjAddr: 0x42E8, symBinAddr: 0x5E860, symSize: 0x3C4 } + - { offset: 0xEDCAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setClip4mask5frameySayypG_SStF', symObjAddr: 0x46AC, symBinAddr: 0x5EC24, symSize: 0x17C } + - { offset: 0xEDED3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC8setBlend4modeySS_tF', symObjAddr: 0x49D0, symBinAddr: 0x5EF48, symSize: 0x12C } + - { offset: 0xEE0E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6stroke4pathySayAA9LayerTreeO5ShapeOG_tF', symObjAddr: 0x4AFC, symBinAddr: 0x5F074, symSize: 0x3CC } + - { offset: 0xEE6DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC17clipStrokeOutline4pathySayAA9LayerTreeO5ShapeOG_tF', symObjAddr: 0x4EC8, symBinAddr: 0x5F440, symSize: 0x298 } + - { offset: 0xEEAB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC4fill4path4ruleySayAA9LayerTreeO5ShapeOG_SStF', symObjAddr: 0x5160, symBinAddr: 0x5F6D8, symSize: 0x4EC } + - { offset: 0xEF1CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC4draw6linear4from2toyAA9LayerTreeO8GradientV_S2StF', symObjAddr: 0x564C, symBinAddr: 0x5FBC4, symSize: 0x1C8 } + - { offset: 0xEF4FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC9makeUIKitSSyF', symObjAddr: 0x5814, symBinAddr: 0x5FD8C, symSize: 0x1E0 } + - { offset: 0xEF7E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10makeAppKitSSyF', symObjAddr: 0x59F4, symBinAddr: 0x5FF6C, symSize: 0x1B0 } + - { offset: 0xEFA64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC8makeTextSSyF', symObjAddr: 0x5BA4, symBinAddr: 0x6011C, symSize: 0x280 } + - { offset: 0xEFD9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererCfd', symObjAddr: 0x5E24, symBinAddr: 0x6039C, symSize: 0x70 } + - { offset: 0xEFDC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererCfD', symObjAddr: 0x5E94, symBinAddr: 0x6040C, symSize: 0x20 } + - { offset: 0xEFE53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceO3forAESgSS_tcfCTf4nd_n', symObjAddr: 0x6EAC, symBinAddr: 0x61034, symSize: 0x134 } + - { offset: 0xEFEC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC4draw5imageyAA9LayerTreeO5ImageO_tFTf4dn_n', symObjAddr: 0x6FE0, symBinAddr: 0x61168, symSize: 0x22C } + - { offset: 0xF0328, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV10createPath4fromSayAA9LayerTreeO5ShapeOGSayAJG_tFTf4nd_n', symObjAddr: 0x720C, symBinAddr: 0x61394, symSize: 0x130 } + - { offset: 0xF0663, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x733C, symBinAddr: 0x614C4, symSize: 0x5C } + - { offset: 0xF250C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCfE', symObjAddr: 0x5E7C, symBinAddr: 0x674A0, symSize: 0x1E4 } + - { offset: 0xF2539, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCfETo', symObjAddr: 0x6090, symBinAddr: 0x676B4, symSize: 0x1F0 } + - { offset: 0xF2568, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCMa', symObjAddr: 0x6280, symBinAddr: 0x678A4, symSize: 0x20 } + - { offset: 0xF258B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x62A0, symBinAddr: 0x678C4, symSize: 0x5C } + - { offset: 0xF2760, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x62FC, symBinAddr: 0x67920, symSize: 0x1528 } + - { offset: 0xF3EE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x7890, symBinAddr: 0x68EB4, symSize: 0xB8 } + - { offset: 0xF3EFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtF', symObjAddr: 0x7948, symBinAddr: 0x68F6C, symSize: 0xD4 } + - { offset: 0xF3F7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x7A1C, symBinAddr: 0x69040, symSize: 0xD4 } + - { offset: 0xF3FD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x7AF0, symBinAddr: 0x69114, symSize: 0x120 } + - { offset: 0xF4045, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x7C10, symBinAddr: 0x69234, symSize: 0x10D8 } + - { offset: 0xF5162, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFyycfU_', symObjAddr: 0x8CE8, symBinAddr: 0x6A30C, symSize: 0xB8 } + - { offset: 0xF51AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x8DA0, symBinAddr: 0x6A3C4, symSize: 0xB0 } + - { offset: 0xF51F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12canMoveRowAtSbSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x8E50, symBinAddr: 0x6A474, symSize: 0xA4 } + - { offset: 0xF5270, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12canEditRowAtSbSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x8EF4, symBinAddr: 0x6A518, symSize: 0x12C } + - { offset: 0xF52EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_032titleForDeleteConfirmationButtonJ5RowAtSSSgSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x9020, symBinAddr: 0x6A644, symSize: 0xAC } + - { offset: 0xF532D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtF', symObjAddr: 0x90CC, symBinAddr: 0x6A6F0, symSize: 0x590 } + - { offset: 0xF55D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtFyyXEfU_', symObjAddr: 0x965C, symBinAddr: 0x6AC80, symSize: 0x174 } + - { offset: 0xF5720, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtFTo', symObjAddr: 0x97D0, symBinAddr: 0x6ADF4, symSize: 0xC4 } + - { offset: 0xF5776, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_31targetIndexPathForMoveFromRowAt010toProposedjK010Foundation0jK0VSo07UITableF0C_A2ItFTo', symObjAddr: 0x9894, symBinAddr: 0x6AEB8, symSize: 0x108 } + - { offset: 0xF57BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_9moveRowAt2toySo07UITableF0C_10Foundation9IndexPathVAKtF', symObjAddr: 0x999C, symBinAddr: 0x6AFC0, symSize: 0x498 } + - { offset: 0xF5974, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_9moveRowAt2toySo07UITableF0C_10Foundation9IndexPathVAKtFyyScMYccfU_', symObjAddr: 0x9E34, symBinAddr: 0x6B458, symSize: 0x1A8 } + - { offset: 0xF5A87, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUIE13movingElement4from2toSayxGSi_SitFAA5PlaceC_Tg5', symObjAddr: 0x9FDC, symBinAddr: 0x6B600, symSize: 0x11C } + - { offset: 0xF5C21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_9moveRowAt2toySo07UITableF0C_10Foundation9IndexPathVAKtFTo', symObjAddr: 0xA0F8, symBinAddr: 0x6B71C, symSize: 0xE4 } + - { offset: 0xF5C3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_18didEndEditingRowAtySo07UITableF0C_10Foundation9IndexPathVSgtFyyScMYccfU_', symObjAddr: 0xA288, symBinAddr: 0x6B8AC, symSize: 0x124 } + - { offset: 0xF5D00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_18didEndEditingRowAtySo07UITableF0C_10Foundation9IndexPathVSgtFTo', symObjAddr: 0xA3AC, symBinAddr: 0x6B9D0, symSize: 0xE0 } + - { offset: 0xF5D45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0xA48C, symBinAddr: 0x6BAB0, symSize: 0x80 } + - { offset: 0xF5DF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0xA50C, symBinAddr: 0x6BB30, symSize: 0x24 } + - { offset: 0xF5E68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10setupPanelyyF', symObjAddr: 0xA530, symBinAddr: 0x6BB54, symSize: 0x10C } + - { offset: 0xF5F14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10setupPanelyyFTo', symObjAddr: 0xA63C, symBinAddr: 0x6BC60, symSize: 0x28 } + - { offset: 0xF5F52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0xA664, symBinAddr: 0x6BC88, symSize: 0x32C } + - { offset: 0xF6209, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0xA990, symBinAddr: 0x6BFB4, symSize: 0x50 } + - { offset: 0xF6225, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC27floatingPanelDidChangeStateyyAA08FloatingiG0CF', symObjAddr: 0xA9E0, symBinAddr: 0x6C004, symSize: 0x484 } + - { offset: 0xF647F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC27floatingPanelDidChangeStateyyAA08FloatingiG0CFyyScMYccfU_', symObjAddr: 0xAE64, symBinAddr: 0x6C488, symSize: 0x80 } + - { offset: 0xF64CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC27floatingPanelDidChangeStateyyAA08FloatingiG0CFTo', symObjAddr: 0xAEE4, symBinAddr: 0x6C508, symSize: 0x50 } + - { offset: 0xF64E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC25adaptivePresentationStyle3forSo07UIModaliJ0VSo014UIPresentationG0C_tFTo', symObjAddr: 0xAF34, symBinAddr: 0x6C558, symSize: 0x8 } + - { offset: 0xF653C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0xAF3C, symBinAddr: 0x6C560, symSize: 0x60 } + - { offset: 0xF65AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC27floatingPanelDidChangeStateyyAA08FloatingiG0CFyyScMYccfU_TA', symObjAddr: 0xB3D4, symBinAddr: 0x6C948, symSize: 0x8 } + - { offset: 0xF65C2, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xB3DC, symBinAddr: 0x6C950, symSize: 0x10 } + - { offset: 0xF65D6, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xB3EC, symBinAddr: 0x6C960, symSize: 0x8 } + - { offset: 0xF65EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4ndn_n', symObjAddr: 0xB4D8, symBinAddr: 0x6C968, symSize: 0x604 } + - { offset: 0xF6BB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC31shouldReplaceStopIconWithLetter2at4stopSbSi_AA5PlaceCSgtFTf4nnd_n', symObjAddr: 0xBADC, symBinAddr: 0x6CF6C, symSize: 0x2E0 } + - { offset: 0xF6DFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_18didEndEditingRowAtySo07UITableF0C_10Foundation9IndexPathVSgtFTf4dnn_n', symObjAddr: 0xBDBC, symBinAddr: 0x6D24C, symSize: 0x304 } + - { offset: 0xF6E84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_18didEndEditingRowAtySo07UITableF0C_10Foundation9IndexPathVSgtFyyScMYccfU_TA', symObjAddr: 0xC12C, symBinAddr: 0x6D5BC, symSize: 0x30 } + - { offset: 0xF6E98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_9moveRowAt2toySo07UITableF0C_10Foundation9IndexPathVAKtFyyScMYccfU_TA', symObjAddr: 0xC1E8, symBinAddr: 0x6D678, symSize: 0x44 } + - { offset: 0xF6EAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtFyyXEfU_TA', symObjAddr: 0xC2A0, symBinAddr: 0x6D728, symSize: 0x40 } + - { offset: 0xF6EC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtFySbcfU0_TA', symObjAddr: 0xC31C, symBinAddr: 0x6D79C, symSize: 0x10 } + - { offset: 0xF6EF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFyycfU_TA', symObjAddr: 0xC33C, symBinAddr: 0x6D7AC, symSize: 0x8 } + - { offset: 0xF6F06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyAA5PlaceCSgcfU_TA', symObjAddr: 0xC344, symBinAddr: 0x6D7B4, symSize: 0x20 } + - { offset: 0xF6F1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyAA5PlaceCSgcfU0_TA', symObjAddr: 0xC364, symBinAddr: 0x6D7D4, symSize: 0x20 } + - { offset: 0xF6F2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17previewDirections33_4796038DC95783C2E375AC3B61AF64B9LL2toyAA5PlaceCSg_tFyycfU_TA', symObjAddr: 0xC3C4, symBinAddr: 0x6D7F4, symSize: 0x20 } + - { offset: 0xF6F42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC15startNavigation33_4796038DC95783C2E375AC3B61AF64B9LL2toyAA5PlaceCSg_tFyycfU_TA', symObjAddr: 0xC3E4, symBinAddr: 0x6D814, symSize: 0x20 } + - { offset: 0xF6F56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14setTravelModesyyFyAA0I4ModeOXEfU_yycfU_TA', symObjAddr: 0xC4E8, symBinAddr: 0x6D858, symSize: 0xC } + - { offset: 0xF6F6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC11viewDidLoadyyFyycfU_TA', symObjAddr: 0xC4F4, symBinAddr: 0x6D864, symSize: 0x20 } + - { offset: 0xF6F7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC11viewDidLoadyyFyycfU0_TA', symObjAddr: 0xC514, symBinAddr: 0x6D884, symSize: 0x20 } + - { offset: 0xF6FAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC06scrollF0AA06ScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x61624, symSize: 0x10 } + - { offset: 0xF6FC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC06scrollF0AA06ScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x61624, symSize: 0x10 } + - { offset: 0xF700A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC06scrollF0AA06ScrollF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x61634, symSize: 0x34 } + - { offset: 0xF7059, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC018travelModeTappableF0AA06HapticF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x61668, symSize: 0x10 } + - { offset: 0xF7071, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC018travelModeTappableF0AA06HapticF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x61668, symSize: 0x10 } + - { offset: 0xF70B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC018travelModeTappableF0AA06HapticF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x61678, symSize: 0x34 } + - { offset: 0xF7180, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC15travelModeLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x616AC, symSize: 0x10 } + - { offset: 0xF7198, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC15travelModeLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x616AC, symSize: 0x10 } + - { offset: 0xF71D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC15travelModeLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x616BC, symSize: 0x34 } + - { offset: 0xF7227, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC015travelModeImageF0So07UIImageF0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x616F0, symSize: 0x10 } + - { offset: 0xF723F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC015travelModeImageF0So07UIImageF0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x616F0, symSize: 0x10 } + - { offset: 0xF727F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC015travelModeImageF0So07UIImageF0CSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x61700, symSize: 0x34 } + - { offset: 0xF72CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC020routeOptionsTappableF0AA06HapticF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x61734, symSize: 0x10 } + - { offset: 0xF72E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC020routeOptionsTappableF0AA06HapticF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x61734, symSize: 0x10 } + - { offset: 0xF7321, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC020routeOptionsTappableF0AA06HapticF0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x61744, symSize: 0x34 } + - { offset: 0xF7370, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17routeOptionsLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x61778, symSize: 0x10 } + - { offset: 0xF7388, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17routeOptionsLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x61778, symSize: 0x10 } + - { offset: 0xF73C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17routeOptionsLabelSo7UILabelCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x61788, symSize: 0x34 } + - { offset: 0xF7412, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC23routeOptionsChevronIconSo07UIImageF0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x617BC, symSize: 0x10 } + - { offset: 0xF742A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC23routeOptionsChevronIconSo07UIImageF0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x617BC, symSize: 0x10 } + - { offset: 0xF7465, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC23routeOptionsChevronIconSo07UIImageF0CSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x617CC, symSize: 0x34 } + - { offset: 0xF74B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorLabelSo7UILabelCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x61800, symSize: 0x10 } + - { offset: 0xF74CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorLabelSo7UILabelCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x61800, symSize: 0x10 } + - { offset: 0xF7507, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorLabelSo7UILabelCSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x61810, symSize: 0x34 } + - { offset: 0xF7556, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorTitleSo7UILabelCSgvgTo', symObjAddr: 0x220, symBinAddr: 0x61844, symSize: 0x10 } + - { offset: 0xF756E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorTitleSo7UILabelCSgvgTo', symObjAddr: 0x220, symBinAddr: 0x61844, symSize: 0x10 } + - { offset: 0xF75A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorTitleSo7UILabelCSgvsTo', symObjAddr: 0x230, symBinAddr: 0x61854, symSize: 0x34 } + - { offset: 0xF75F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC021errorMessageContainerF0So6UIViewCSgvgTo', symObjAddr: 0x264, symBinAddr: 0x61888, symSize: 0x10 } + - { offset: 0xF7610, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC021errorMessageContainerF0So6UIViewCSgvgTo', symObjAddr: 0x264, symBinAddr: 0x61888, symSize: 0x10 } + - { offset: 0xF7650, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC021errorMessageContainerF0So6UIViewCSgvsTo', symObjAddr: 0x274, symBinAddr: 0x61898, symSize: 0x34 } + - { offset: 0xF769F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC016loadingContainerF0So6UIViewCSgvgTo', symObjAddr: 0x2A8, symBinAddr: 0x618CC, symSize: 0x10 } + - { offset: 0xF76B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC016loadingContainerF0So6UIViewCSgvgTo', symObjAddr: 0x2A8, symBinAddr: 0x618CC, symSize: 0x10 } + - { offset: 0xF76F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC016loadingContainerF0So6UIViewCSgvsTo', symObjAddr: 0x2B8, symBinAddr: 0x618DC, symSize: 0x34 } + - { offset: 0xF7741, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsTableF0So07UITableF0CSgvgTo', symObjAddr: 0x2EC, symBinAddr: 0x61910, symSize: 0x10 } + - { offset: 0xF7759, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsTableF0So07UITableF0CSgvgTo', symObjAddr: 0x2EC, symBinAddr: 0x61910, symSize: 0x10 } + - { offset: 0xF7799, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsTableF0So07UITableF0CSgvsTo', symObjAddr: 0x2FC, symBinAddr: 0x61920, symSize: 0x34 } + - { offset: 0xF77E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010outerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x330, symBinAddr: 0x61954, symSize: 0x10 } + - { offset: 0xF7800, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010outerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x330, symBinAddr: 0x61954, symSize: 0x10 } + - { offset: 0xF7840, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010outerStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x340, symBinAddr: 0x61964, symSize: 0x34 } + - { offset: 0xF788F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010innerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x374, symBinAddr: 0x61998, symSize: 0x10 } + - { offset: 0xF78A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010innerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x374, symBinAddr: 0x61998, symSize: 0x10 } + - { offset: 0xF78E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010innerStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x384, symBinAddr: 0x619A8, symSize: 0x34 } + - { offset: 0xF7931, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsStackF0So6UIViewCSgvgTo', symObjAddr: 0x3B8, symBinAddr: 0x619DC, symSize: 0x10 } + - { offset: 0xF7949, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsStackF0So6UIViewCSgvgTo', symObjAddr: 0x3B8, symBinAddr: 0x619DC, symSize: 0x10 } + - { offset: 0xF7984, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsStackF0So6UIViewCSgvsTo', symObjAddr: 0x3C8, symBinAddr: 0x619EC, symSize: 0x34 } + - { offset: 0xF79D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC011routesTableF0So07UITableF0CSgvgTo', symObjAddr: 0x3FC, symBinAddr: 0x61A20, symSize: 0x10 } + - { offset: 0xF79EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC011routesTableF0So07UITableF0CSgvgTo', symObjAddr: 0x3FC, symBinAddr: 0x61A20, symSize: 0x10 } + - { offset: 0xF7A26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC011routesTableF0So07UITableF0CSgvsTo', symObjAddr: 0x40C, symBinAddr: 0x61A30, symSize: 0x34 } + - { offset: 0xF7AB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC11viewDidLoadyyF', symObjAddr: 0x440, symBinAddr: 0x61A64, symSize: 0x1EC } + - { offset: 0xF7BF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x684, symBinAddr: 0x61CA8, symSize: 0x28 } + - { offset: 0xF7C31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14setTravelModesyyF', symObjAddr: 0x6AC, symBinAddr: 0x61CD0, symSize: 0x104 } + - { offset: 0xF7D0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14setTravelModesyyFyAA0I4ModeOXEfU_', symObjAddr: 0x7B0, symBinAddr: 0x61DD4, symSize: 0x37C } + - { offset: 0xF7FD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14setTravelModesyyFyAA0I4ModeOXEfU_yycfU_', symObjAddr: 0xB2C, symBinAddr: 0x62150, symSize: 0x5C } + - { offset: 0xF8958, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC16selectTravelModeyyAA0iJ0OF', symObjAddr: 0xB88, symBinAddr: 0x621AC, symSize: 0x49C } + - { offset: 0xF8E7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC16updateTravelModeyyF', symObjAddr: 0x1024, symBinAddr: 0x62648, symSize: 0x244 } + - { offset: 0xF8FAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC20updateLayoutIfNeededyyF', symObjAddr: 0x1268, symBinAddr: 0x6288C, symSize: 0x260 } + - { offset: 0xF9196, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC019configureStopsTableF0yyF', symObjAddr: 0x14C8, symBinAddr: 0x62AEC, symSize: 0x1F4 } + - { offset: 0xF9264, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC8drawDotsyyF', symObjAddr: 0x16BC, symBinAddr: 0x62CE0, symSize: 0x89C } + - { offset: 0xF9AEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14routePathReadyyyF', symObjAddr: 0x1F58, symBinAddr: 0x6357C, symSize: 0x304 } + - { offset: 0xF9CBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC15startNavigation33_4796038DC95783C2E375AC3B61AF64B9LL2toyAA5PlaceCSg_tF', symObjAddr: 0x225C, symBinAddr: 0x63880, symSize: 0x90C } + - { offset: 0xFA64F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17previewDirections33_4796038DC95783C2E375AC3B61AF64B9LL2toyAA5PlaceCSg_tF', symObjAddr: 0x2B68, symBinAddr: 0x6418C, symSize: 0x914 } + - { offset: 0xFB025, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC16TripStartDidFailyyF', symObjAddr: 0x3504, symBinAddr: 0x64B28, symSize: 0x3D0 } + - { offset: 0xFB443, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC22updateSelectedEntrance33_4796038DC95783C2E375AC3B61AF64B9LL10completionyyycSg_tF', symObjAddr: 0x38D4, symBinAddr: 0x64EF8, symSize: 0x124 } + - { offset: 0xFB572, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC24scrollToSelectedEntrance33_4796038DC95783C2E375AC3B61AF64B9LLyyF', symObjAddr: 0x39F8, symBinAddr: 0x6501C, symSize: 0x544 } + - { offset: 0xFBB47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14isStopSortable2atSbSi_tF', symObjAddr: 0x40F8, symBinAddr: 0x6571C, symSize: 0x1F8 } + - { offset: 0xFBDA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC06updateD7OptionsyyF', symObjAddr: 0x42F0, symBinAddr: 0x65914, symSize: 0x584 } + - { offset: 0xFC085, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC18sortableStopsCountSivg', symObjAddr: 0x4874, symBinAddr: 0x65E98, symSize: 0x1D4 } + - { offset: 0xFC32B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14canReorderCell2atSbSi_tF', symObjAddr: 0x4A48, symBinAddr: 0x6606C, symSize: 0x11C } + - { offset: 0xFC40D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC13canDeleteCell2atSbSi_tF', symObjAddr: 0x4B64, symBinAddr: 0x66188, symSize: 0x278 } + - { offset: 0xFC65C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC18showLoadingMessageyyF', symObjAddr: 0x4DDC, symBinAddr: 0x66400, symSize: 0x8C } + - { offset: 0xFC6E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC31showDirectionsNotAvailableError5errory7Penguin0dL0OSg_tF', symObjAddr: 0x4E68, symBinAddr: 0x6648C, symSize: 0x530 } + - { offset: 0xFCA61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05closeD14OverviewScreenyyFTo', symObjAddr: 0x5398, symBinAddr: 0x669BC, symSize: 0x70 } + - { offset: 0xFCC6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC22didTapTravelModeButtonyyF', symObjAddr: 0x5408, symBinAddr: 0x66A2C, symSize: 0x204 } + - { offset: 0xFCDE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC06didTapD13OptionsButtonyyF', symObjAddr: 0x560C, symBinAddr: 0x66C30, symSize: 0x1FC } + - { offset: 0xFCFA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17updatePanelLayoutyyF', symObjAddr: 0x5808, symBinAddr: 0x66E2C, symSize: 0x1A0 } + - { offset: 0xFD0D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x59A8, symBinAddr: 0x66FCC, symSize: 0x23C } + - { offset: 0xFD140, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x5BE4, symBinAddr: 0x67208, symSize: 0x60 } + - { offset: 0xFD182, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x5C44, symBinAddr: 0x67268, symSize: 0x210 } + - { offset: 0xFD1E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x5E54, symBinAddr: 0x67478, symSize: 0x28 } + - { offset: 0xFD1F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCfD', symObjAddr: 0x6060, symBinAddr: 0x67684, symSize: 0x30 } + - { offset: 0xFD4F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC13routeDurationSdvgTf4d_n', symObjAddr: 0xAF9C, symBinAddr: 0x6C5C0, symSize: 0x154 } + - { offset: 0xFD685, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC7addStop_2atyAA5PlaceCSg_SiSgtFTf4ddn_n', symObjAddr: 0xB1A0, symBinAddr: 0x6C714, symSize: 0x210 } + - { offset: 0xFDB7F, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI9PlaceTypeO_Tg5', symObjAddr: 0x0, symBinAddr: 0x6D8D0, symSize: 0x228 } + - { offset: 0xFDFBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO12processImage4with10Foundation4DataVAC13ConfigurationV_tKFZ', symObjAddr: 0x1434, symBinAddr: 0x6EBE4, symSize: 0x754 } + - { offset: 0xFE2D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO11makeTextAPI3forAA14CGTextRendererC0H0OAcHOSg_tFZ', symObjAddr: 0x1B88, symBinAddr: 0x6F338, symSize: 0x1C } + - { offset: 0xFE31C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO14makeSVGOptions3forAA3SVGC7OptionsVAC13ConfigurationV_tFZ', symObjAddr: 0x1BA4, symBinAddr: 0x6F354, symSize: 0xF4 } + - { offset: 0xFE44D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ErrorOAEsAdAWl', symObjAddr: 0x1C98, symBinAddr: 0x6F448, symSize: 0x40 } + - { offset: 0xFE461, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO12processImage_4with10Foundation4DataVAA3SVGC_AC13ConfigurationVtKFZ', symObjAddr: 0x1CD8, symBinAddr: 0x6F488, symSize: 0x14 } + - { offset: 0xFE4BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO15makeImageInsets3forAA3SVGC0H0VAcHV_tKFZ', symObjAddr: 0x1CEC, symBinAddr: 0x6F49C, symSize: 0xE4 } + - { offset: 0xFE73E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO12processImage_4with10Foundation4DataVAA3SVGC_AC13ConfigurationVtKFZTf4nnd_n', symObjAddr: 0x1E10, symBinAddr: 0x6F580, symSize: 0x418 } + - { offset: 0xFE9E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVWOh', symObjAddr: 0x2228, symBinAddr: 0x6F998, symSize: 0x34 } + - { offset: 0xFE9F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_64660464CF3F4A91161BC661976AF1A2LLVAFsAdAWl', symObjAddr: 0x229C, symBinAddr: 0x6F9CC, symSize: 0x40 } + - { offset: 0xFEA40, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI9PlaceTypeO_Tg5', symObjAddr: 0x0, symBinAddr: 0x6D8D0, symSize: 0x228 } + - { offset: 0xFEB05, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI9AmenitiesV10CodingKeysO_Tg5', symObjAddr: 0x228, symBinAddr: 0x6DAF8, symSize: 0x180 } + - { offset: 0xFEBC6, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI8FavoriteC10CodingKeysO_Tg5', symObjAddr: 0x3A8, symBinAddr: 0x6DC78, symSize: 0x264 } + - { offset: 0xFEC61, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI22SharedFavoriteLocationC10CodingKeysO_Tg5', symObjAddr: 0x60C, symBinAddr: 0x6DEDC, symSize: 0x248 } + - { offset: 0xFECFC, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysO_Tg5', symObjAddr: 0x854, symBinAddr: 0x6E124, symSize: 0x158 } + - { offset: 0xFEDBD, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI21GetCampusInfoResponseC10CodingKeysO_Tg5', symObjAddr: 0x9AC, symBinAddr: 0x6E27C, symSize: 0x190 } + - { offset: 0xFEE58, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI12MapDimensionO_Tg5', symObjAddr: 0xC5C, symBinAddr: 0x6E40C, symSize: 0x120 } + - { offset: 0xFEF1F, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI11RouteOptionV0gH3KeyO_Tg5', symObjAddr: 0xD7C, symBinAddr: 0x6E52C, symSize: 0x230 } + - { offset: 0xFEFBA, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI11CommandLineO6FormatO_TB5', symObjAddr: 0xFAC, symBinAddr: 0x6E75C, symSize: 0x158 } + - { offset: 0xFF04B, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI10TravelModeO_Tg5', symObjAddr: 0x1104, symBinAddr: 0x6E8B4, symSize: 0x1A0 } + - { offset: 0xFF10C, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI10SourceViewO_Tg5', symObjAddr: 0x12A4, symBinAddr: 0x6EA54, symSize: 0x190 } + - { offset: 0xFF924, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC11toastHeight_WZ', symObjAddr: 0x0, symBinAddr: 0x6FA0C, symSize: 0x30 } + - { offset: 0xFF948, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC11toastHeight12CoreGraphics7CGFloatVvpZ', symObjAddr: 0xAF18, symBinAddr: 0x384BA0, symSize: 0x0 } + - { offset: 0xFF965, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC11toastHeight_WZ', symObjAddr: 0x0, symBinAddr: 0x6FA0C, symSize: 0x30 } + - { offset: 0xFFE07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewCfETo', symObjAddr: 0xBE0, symBinAddr: 0x705EC, symSize: 0x9C } + - { offset: 0xFFE36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewCMa', symObjAddr: 0xC7C, symBinAddr: 0x70688, symSize: 0x20 } + - { offset: 0xFFE4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC10setMessage4typeyAA0D4TypeO_tFyycfU_TA', symObjAddr: 0xCC0, symBinAddr: 0x706CC, symSize: 0x8 } + - { offset: 0x1000A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC12messageLabelSo7UILabelCSgvgTo', symObjAddr: 0x30, symBinAddr: 0x6FA3C, symSize: 0x20 } + - { offset: 0x100107, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC12messageLabelSo7UILabelCSgvsTo', symObjAddr: 0x50, symBinAddr: 0x6FA5C, symSize: 0x14 } + - { offset: 0x100158, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC06hapticE0AA06HapticE0CSgvgTo', symObjAddr: 0x64, symBinAddr: 0x6FA70, symSize: 0x20 } + - { offset: 0x1001B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC06hapticE0AA06HapticE0CSgvsTo', symObjAddr: 0x84, symBinAddr: 0x6FA90, symSize: 0x14 } + - { offset: 0x100203, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC010blurEffectE0AA04BlurgE0CSgvgTo', symObjAddr: 0x98, symBinAddr: 0x6FAA4, symSize: 0x20 } + - { offset: 0x10025D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC010blurEffectE0AA04BlurgE0CSgvsTo', symObjAddr: 0xB8, symBinAddr: 0x6FAC4, symSize: 0x14 } + - { offset: 0x1002AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC05imageE0So07UIImageE0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x6FAD8, symSize: 0x20 } + - { offset: 0x100308, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC05imageE0So07UIImageE0CSgvsTo', symObjAddr: 0xEC, symBinAddr: 0x6FAF8, symSize: 0x14 } + - { offset: 0x100359, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC05stackE0So07UIStackE0CSgvgTo', symObjAddr: 0x100, symBinAddr: 0x6FB0C, symSize: 0x20 } + - { offset: 0x1003B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC05stackE0So07UIStackE0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x6FB2C, symSize: 0x14 } + - { offset: 0x100404, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC26activityIndicatorContainerSo6UIViewCSgvgTo', symObjAddr: 0x134, symBinAddr: 0x6FB40, symSize: 0x20 } + - { offset: 0x10045E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC26activityIndicatorContainerSo6UIViewCSgvsTo', symObjAddr: 0x154, symBinAddr: 0x6FB60, symSize: 0x14 } + - { offset: 0x1004A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC13iconImageName33_7711327B376EF5477089E69F768F33CBLLSSvg', symObjAddr: 0x168, symBinAddr: 0x6FB74, symSize: 0xF4 } + - { offset: 0x100541, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC12bouncingDotsAA08BouncingG17ActivityIndicatorCvg', symObjAddr: 0x25C, symBinAddr: 0x6FC68, symSize: 0xD8 } + - { offset: 0x100609, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x334, symBinAddr: 0x6FD40, symSize: 0x130 } + - { offset: 0x10063E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x464, symBinAddr: 0x6FE70, symSize: 0x20 } + - { offset: 0x10068B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x484, symBinAddr: 0x6FE90, symSize: 0x11C } + - { offset: 0x1006C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x5A0, symBinAddr: 0x6FFAC, symSize: 0x28 } + - { offset: 0x10070B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC10commonInit33_7711327B376EF5477089E69F768F33CBLLyyF', symObjAddr: 0x5C8, symBinAddr: 0x6FFD4, symSize: 0x244 } + - { offset: 0x10094F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC10setMessage4typeyAA0D4TypeO_tF', symObjAddr: 0x80C, symBinAddr: 0x70218, symSize: 0x2E4 } + - { offset: 0x100B35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC10setMessage4typeyAA0D4TypeO_tFyycfU_', symObjAddr: 0xAF0, symBinAddr: 0x704FC, symSize: 0xC0 } + - { offset: 0x100C4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewCfD', symObjAddr: 0xBB0, symBinAddr: 0x705BC, symSize: 0x30 } + - { offset: 0x101008, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x706D4, symSize: 0x10 } + - { offset: 0x10119B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellCfETo', symObjAddr: 0x240, symBinAddr: 0x70914, symSize: 0x38 } + - { offset: 0x1011CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellCMa', symObjAddr: 0x278, symBinAddr: 0x7094C, symSize: 0x20 } + - { offset: 0x10129C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x706D4, symSize: 0x10 } + - { offset: 0x1012B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x706D4, symSize: 0x10 } + - { offset: 0x1012FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x706E4, symSize: 0x34 } + - { offset: 0x101349, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x70718, symSize: 0x10 } + - { offset: 0x101361, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x70718, symSize: 0x10 } + - { offset: 0x1013A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x70728, symSize: 0x34 } + - { offset: 0x1013F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC12awakeFromNibyyFTo', symObjAddr: 0x88, symBinAddr: 0x7075C, symSize: 0x3C } + - { offset: 0x101446, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0xC4, symBinAddr: 0x70798, symSize: 0xB8 } + - { offset: 0x1014C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x17C, symBinAddr: 0x70850, symSize: 0x94 } + - { offset: 0x1014FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellCfD', symObjAddr: 0x210, symBinAddr: 0x708E4, symSize: 0x30 } + - { offset: 0x101881, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC7doneBtnSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7096C, symSize: 0x20 } + - { offset: 0x101C11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageCfETo', symObjAddr: 0xF90, symBinAddr: 0x718FC, symSize: 0x7C } + - { offset: 0x101C40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageCMa', symObjAddr: 0x100C, symBinAddr: 0x71978, symSize: 0x20 } + - { offset: 0x101D9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC7doneBtnSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7096C, symSize: 0x20 } + - { offset: 0x101DFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC7doneBtnSo8UIButtonCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x7098C, symSize: 0x14 } + - { offset: 0x101E4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC15viewVidioPlayerSo6UIViewCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x709A0, symSize: 0x20 } + - { offset: 0x101EA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC15viewVidioPlayerSo6UIViewCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x709C0, symSize: 0x14 } + - { offset: 0x101EF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC4viewSo6UIViewCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x709D4, symSize: 0x10 } + - { offset: 0x101F11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC4viewSo6UIViewCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x709D4, symSize: 0x10 } + - { offset: 0x101F4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC4viewSo6UIViewCSgvsTo', symObjAddr: 0x78, symBinAddr: 0x709E4, symSize: 0x34 } + - { offset: 0x101F87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC5frameACSo6CGRectV_tcfc', symObjAddr: 0xAC, symBinAddr: 0x70A18, symSize: 0xF0 } + - { offset: 0x101FBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x19C, symBinAddr: 0x70B08, symSize: 0x20 } + - { offset: 0x10201F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1BC, symBinAddr: 0x70B28, symSize: 0xE0 } + - { offset: 0x102054, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x29C, symBinAddr: 0x70C08, symSize: 0x28 } + - { offset: 0x1021AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC10commonInityyF', symObjAddr: 0x2C4, symBinAddr: 0x70C30, symSize: 0xA68 } + - { offset: 0x10252C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC10hideActionyyypFTo', symObjAddr: 0xD2C, symBinAddr: 0x71698, symSize: 0x98 } + - { offset: 0x10258E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC11videoDidEndyyFTo', symObjAddr: 0xDC4, symBinAddr: 0x71730, symSize: 0xA8 } + - { offset: 0x102602, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC14layoutSubviewsyyF', symObjAddr: 0xE6C, symBinAddr: 0x717D8, symSize: 0xCC } + - { offset: 0x102677, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC14layoutSubviewsyyFTo', symObjAddr: 0xF38, symBinAddr: 0x718A4, symSize: 0x28 } + - { offset: 0x10268B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageCfD', symObjAddr: 0xF60, symBinAddr: 0x718CC, symSize: 0x30 } + - { offset: 0x102A1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x71998, symSize: 0x10 } + - { offset: 0x102DE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellCfETo', symObjAddr: 0xA5C, symBinAddr: 0x723F4, symSize: 0x58 } + - { offset: 0x102E12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellCMa', symObjAddr: 0xAB4, symBinAddr: 0x7244C, symSize: 0x20 } + - { offset: 0x102FF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x71998, symSize: 0x10 } + - { offset: 0x10300E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x71998, symSize: 0x10 } + - { offset: 0x103054, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x719A8, symSize: 0x34 } + - { offset: 0x1030A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x719DC, symSize: 0x10 } + - { offset: 0x1030BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x719DC, symSize: 0x10 } + - { offset: 0x1030F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x719EC, symSize: 0x34 } + - { offset: 0x103145, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC18selectionImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x71A20, symSize: 0x10 } + - { offset: 0x10315D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC18selectionImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x71A20, symSize: 0x10 } + - { offset: 0x10319D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC18selectionImageViewSo07UIImageH0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x71A30, symSize: 0x34 } + - { offset: 0x1031EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC13gateImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x71A64, symSize: 0x20 } + - { offset: 0x103241, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC13gateImageViewSo07UIImageH0CSgvsTo', symObjAddr: 0xEC, symBinAddr: 0x71A84, symSize: 0x14 } + - { offset: 0x103292, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC12awakeFromNibyyFTo', symObjAddr: 0x100, symBinAddr: 0x71A98, symSize: 0x3C } + - { offset: 0x103413, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC9configure4with10isSelectedyAA5PlaceCSg_SbtF', symObjAddr: 0x13C, symBinAddr: 0x71AD4, symSize: 0x71C } + - { offset: 0x103986, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x858, symBinAddr: 0x721F0, symSize: 0xC0 } + - { offset: 0x1039C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x918, symBinAddr: 0x722B0, symSize: 0x48 } + - { offset: 0x1039FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x960, symBinAddr: 0x722F8, symSize: 0xA4 } + - { offset: 0x103A32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xA04, symBinAddr: 0x7239C, symSize: 0x28 } + - { offset: 0x103A46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellCfD', symObjAddr: 0xA2C, symBinAddr: 0x723C4, symSize: 0x30 } + - { offset: 0x103DEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVMi', symObjAddr: 0x0, symBinAddr: 0x7246C, symSize: 0x8 } + - { offset: 0x103E02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVMi', symObjAddr: 0x0, symBinAddr: 0x7246C, symSize: 0x8 } + - { offset: 0x103E16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVMr', symObjAddr: 0x8, symBinAddr: 0x72474, symSize: 0x78 } + - { offset: 0x103E2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwCP', symObjAddr: 0x80, symBinAddr: 0x724EC, symSize: 0xB0 } + - { offset: 0x103E3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwxx', symObjAddr: 0x130, symBinAddr: 0x7259C, symSize: 0x40 } + - { offset: 0x103E52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwcp', symObjAddr: 0x170, symBinAddr: 0x725DC, symSize: 0x60 } + - { offset: 0x103E66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwca', symObjAddr: 0x1D0, symBinAddr: 0x7263C, symSize: 0x6C } + - { offset: 0x103E7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwtk', symObjAddr: 0x23C, symBinAddr: 0x726A8, symSize: 0x5C } + - { offset: 0x103E8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwta', symObjAddr: 0x298, symBinAddr: 0x72704, symSize: 0x64 } + - { offset: 0x103EA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwet', symObjAddr: 0x2FC, symBinAddr: 0x72768, symSize: 0xF8 } + - { offset: 0x103EB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwst', symObjAddr: 0x3F4, symBinAddr: 0x72860, symSize: 0x15C } + - { offset: 0x103ECA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVMa', symObjAddr: 0x550, symBinAddr: 0x729BC, symSize: 0xC } + - { offset: 0x104260, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI8FavoriteCG_Tg503$s8fg4UI18I51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x729C8, symSize: 0x68 } + - { offset: 0x10456D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryCMa', symObjAddr: 0x1364, symBinAddr: 0x73D2C, symSize: 0x20 } + - { offset: 0x104581, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC12getFavoritesSayAA0D0CGyFyyYbXEfU_TA', symObjAddr: 0x13B0, symBinAddr: 0x73D78, symSize: 0xC } + - { offset: 0x104595, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x13C4, symBinAddr: 0x73D84, symSize: 0x10 } + - { offset: 0x1045A9, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x13D4, symBinAddr: 0x73D94, symSize: 0x8 } + - { offset: 0x10468D, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF8PenNavUI8FavoriteC_Tg503$s8ef4UI18H51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1cn_n', symObjAddr: 0x13DC, symBinAddr: 0x73D9C, symSize: 0x3E8 } + - { offset: 0x1049DB, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI8FavoriteC_Tg503$s8ef4UI18H51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1nnncn_n', symObjAddr: 0x17C4, symBinAddr: 0x74184, symSize: 0x920 } + - { offset: 0x104F4B, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI8FavoriteC_Tg503$s8fg4UI18I51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1nncn_n', symObjAddr: 0x20E4, symBinAddr: 0x74AA4, symSize: 0x26C } + - { offset: 0x1052E6, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI8FavoriteC_Tg503$s8gh4UI18J51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1nnnnc_n', symObjAddr: 0x2350, symBinAddr: 0x74D10, symSize: 0x394 } + - { offset: 0x10544E, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVSgWOh', symObjAddr: 0x2728, symBinAddr: 0x750A4, symSize: 0x40 } + - { offset: 0x105462, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC05clearD5TableyyFyyYbXEfU_TA', symObjAddr: 0x2794, symBinAddr: 0x75110, symSize: 0x8 } + - { offset: 0x105476, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC15insertFavorites9favoritesySayAA0D0CG_tFyyYbXEfU_TA', symObjAddr: 0x27C8, symBinAddr: 0x75144, symSize: 0x8 } + - { offset: 0x1054A4, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI8FavoriteCG_Tg503$s8fg4UI18I51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x729C8, symSize: 0x68 } + - { offset: 0x1057A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC15insertFavorites9favoritesySayAA0D0CG_tF', symObjAddr: 0x68, symBinAddr: 0x72A30, symSize: 0x188 } + - { offset: 0x105834, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC15insertFavorites9favoritesySayAA0D0CG_tFyyYbXEfU_', symObjAddr: 0x1F0, symBinAddr: 0x72BB8, symSize: 0x378 } + - { offset: 0x1059FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC06removeD08favoriteyAA0D0C_tF', symObjAddr: 0x568, symBinAddr: 0x72F30, symSize: 0x354 } + - { offset: 0x105C3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC05clearD5TableyyF', symObjAddr: 0x8BC, symBinAddr: 0x73284, symSize: 0x1E0 } + - { offset: 0x105D17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC05clearD5TableyyFyyYbXEfU_', symObjAddr: 0xA9C, symBinAddr: 0x73464, symSize: 0x1E4 } + - { offset: 0x105EAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC12getFavoritesSayAA0D0CGyF', symObjAddr: 0xC80, symBinAddr: 0x73648, symSize: 0x26C } + - { offset: 0x105FA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC12getFavoritesSayAA0D0CGyFyyYbXEfU_', symObjAddr: 0xEEC, symBinAddr: 0x738B4, symSize: 0x1F0 } + - { offset: 0x1062A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_', symObjAddr: 0x10DC, symBinAddr: 0x73AA4, symSize: 0x264 } + - { offset: 0x106393, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryCfD', symObjAddr: 0x1340, symBinAddr: 0x73D08, symSize: 0x24 } + - { offset: 0x106DA1, size: 0x8, addend: 0x0, symName: '_$sIg_Ieg_TR', symObjAddr: 0x0, symBinAddr: 0x75178, symSize: 0x20 } + - { offset: 0x106DB5, size: 0x8, addend: 0x0, symName: '_$sIeg_IyB_TR', symObjAddr: 0x20, symBinAddr: 0x75198, symSize: 0x20 } + - { offset: 0x107C7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCfE', symObjAddr: 0x3BA4, symBinAddr: 0x78D1C, symSize: 0x138 } + - { offset: 0x107CAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCfETo', symObjAddr: 0x3D0C, symBinAddr: 0x78E84, symSize: 0x144 } + - { offset: 0x107CDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCMa', symObjAddr: 0x3E50, symBinAddr: 0x78FC8, symSize: 0x20 } + - { offset: 0x107CEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC09searchBarE13ButtonClickedyyAA0eI0CF', symObjAddr: 0x3E70, symBinAddr: 0x78FE8, symSize: 0x100 } + - { offset: 0x107E2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC015clearResultsAndE033_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x3F70, symBinAddr: 0x790E8, symSize: 0x284 } + - { offset: 0x10803D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC015clearResultsAndE033_D7A566C795799BF1F9604DDE695EDC30LLyyFTo', symObjAddr: 0x41F4, symBinAddr: 0x7936C, symSize: 0x28 } + - { offset: 0x108086, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH19TextDidBeginEditingyyAA0eH0CFTW', symObjAddr: 0x421C, symBinAddr: 0x79394, symSize: 0x10 } + - { offset: 0x1080A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH19TextDidBeginEditingyyAA0eH0CFTW', symObjAddr: 0x421C, symBinAddr: 0x79394, symSize: 0x10 } + - { offset: 0x1080CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH19TextDidBeginEditingyyAA0eH0CFTW', symObjAddr: 0x421C, symBinAddr: 0x79394, symSize: 0x10 } + - { offset: 0x1080FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH0_13textDidChangeyAA0eH0C_SStFTW', symObjAddr: 0x422C, symBinAddr: 0x793A4, symSize: 0xC } + - { offset: 0x108132, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchhE13ButtonClickedyyAA0eH0CFTW', symObjAddr: 0x4238, symBinAddr: 0x793B0, symSize: 0x4 } + - { offset: 0x10815D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH18ClearButtonClickedyyAA0eH0CFTW', symObjAddr: 0x423C, symBinAddr: 0x793B4, symSize: 0x4 } + - { offset: 0x10817D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH18ClearButtonClickedyyAA0eH0CFTW', symObjAddr: 0x423C, symBinAddr: 0x793B4, symSize: 0x4 } + - { offset: 0x1081BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH19CancelButtonClickedyyAA0eH0CFTW', symObjAddr: 0x4240, symBinAddr: 0x793B8, symSize: 0x14 } + - { offset: 0x1081DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH19CancelButtonClickedyyAA0eH0CFTW', symObjAddr: 0x4240, symBinAddr: 0x793B8, symSize: 0x14 } + - { offset: 0x108223, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x4254, symBinAddr: 0x793CC, symSize: 0x2C } + - { offset: 0x1082B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x4280, symBinAddr: 0x793F8, symSize: 0x60 } + - { offset: 0x10839E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x42E0, symBinAddr: 0x79458, symSize: 0x514 } + - { offset: 0x108A0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x47F4, symBinAddr: 0x7996C, symSize: 0xB8 } + - { offset: 0x108A59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_22viewForHeaderInSectionSo6UIViewCSgSo07UITableF0C_SitFTo', symObjAddr: 0x4D80, symBinAddr: 0x79EF8, symSize: 0x60 } + - { offset: 0x108A9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_24heightForHeaderInSection12CoreGraphics7CGFloatVSo07UITableF0C_SitFTo', symObjAddr: 0x4DE0, symBinAddr: 0x79F58, symSize: 0x68 } + - { offset: 0x108ACE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_24heightForFooterInSection12CoreGraphics7CGFloatVSo07UITableF0C_SitFTo', symObjAddr: 0x4E48, symBinAddr: 0x79FC0, symSize: 0x8 } + - { offset: 0x108AF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x4E50, symBinAddr: 0x79FC8, symSize: 0xCC } + - { offset: 0x108B59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x4F1C, symBinAddr: 0x7A094, symSize: 0x450 } + - { offset: 0x10925B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x536C, symBinAddr: 0x7A4E4, symSize: 0xB0 } + - { offset: 0x1092D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x541C, symBinAddr: 0x7A594, symSize: 0x78 } + - { offset: 0x10934B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x5494, symBinAddr: 0x7A60C, symSize: 0x24 } + - { offset: 0x1093C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10setupPanelyyF', symObjAddr: 0x54B8, symBinAddr: 0x7A630, symSize: 0x15C } + - { offset: 0x1094B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10setupPanelyyFTo', symObjAddr: 0x5614, symBinAddr: 0x7A78C, symSize: 0x28 } + - { offset: 0x1094D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x56FC, symBinAddr: 0x7A7B4, symSize: 0x13C } + - { offset: 0x1095B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x58B4, symBinAddr: 0x7A8F0, symSize: 0x8 } + - { offset: 0x10961D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC9searchBar_13textDidChangeyAA0eI0C_SStFTf4dnn_n', symObjAddr: 0x6264, symBinAddr: 0x7B2A0, symSize: 0x1A8 } + - { offset: 0x109751, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC27searchBarClearButtonClickedyyAA0eI0CFTf4dn_n', symObjAddr: 0x640C, symBinAddr: 0x7B448, symSize: 0x158 } + - { offset: 0x109921, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x65D0, symBinAddr: 0x7B5C4, symSize: 0x10 } + - { offset: 0x109935, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x65E0, symBinAddr: 0x7B5D4, symSize: 0x8 } + - { offset: 0x109949, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x6608, symBinAddr: 0x7B5DC, symSize: 0xD8 } + - { offset: 0x109A79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_22viewForHeaderInSectionSo6UIViewCSgSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x66E0, symBinAddr: 0x7B6B4, symSize: 0x100 } + - { offset: 0x109C00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_24heightForHeaderInSection12CoreGraphics7CGFloatVSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x67E0, symBinAddr: 0x7B7B4, symSize: 0xD4 } + - { offset: 0x109CEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTf4ddnn_n', symObjAddr: 0x68B4, symBinAddr: 0x7B888, symSize: 0x250 } + - { offset: 0x109EED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC20showNoResultsMessage33_D7A566C795799BF1F9604DDE695EDC30LLyyFyyScMYccfU_TA', symObjAddr: 0x6B98, symBinAddr: 0x7BB04, symSize: 0x8 } + - { offset: 0x109F01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC6search33_D7A566C795799BF1F9604DDE695EDC30LL6manualySb_tFySayAA7POIDataCGSgcfU_TA', symObjAddr: 0x6CA8, symBinAddr: 0x7BB30, symSize: 0xC } + - { offset: 0x109F15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_TA', symObjAddr: 0x6CB8, symBinAddr: 0x7BB40, symSize: 0x8 } + - { offset: 0x109F29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_yyXEfU_TA', symObjAddr: 0x6CF4, symBinAddr: 0x7BB74, symSize: 0x8 } + - { offset: 0x109F48, size: 0x8, addend: 0x0, symName: '_$sSS_yptWOh', symObjAddr: 0x6D2C, symBinAddr: 0x7BB8C, symSize: 0x40 } + - { offset: 0x109F5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC09configureE3Bar33_D7A566C795799BF1F9604DDE695EDC30LLyyFyyScMYccfU_TA', symObjAddr: 0x6DAC, symBinAddr: 0x7BBCC, symSize: 0x8 } + - { offset: 0x109F70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyFySayAA0I0CGcfU_TA', symObjAddr: 0x6DB4, symBinAddr: 0x7BBD4, symSize: 0x8 } + - { offset: 0x109F84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyFySayAA0I0CGcfU_yyScMYccfU0_TA', symObjAddr: 0x6DBC, symBinAddr: 0x7BBDC, symSize: 0x8 } + - { offset: 0x109F98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchSectionOMa', symObjAddr: 0x6F28, symBinAddr: 0x7BBE4, symSize: 0x10 } + - { offset: 0x109FAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchSectionOSHAASQWb', symObjAddr: 0x6F38, symBinAddr: 0x7BBF4, symSize: 0x4 } + - { offset: 0x109FC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchSectionOACSQAAWl', symObjAddr: 0x6F3C, symBinAddr: 0x7BBF8, symSize: 0x40 } + - { offset: 0x10A23A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10titleLabel33_D7A566C795799BF1F9604DDE695EDC30LLSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x751B8, symSize: 0x10 } + - { offset: 0x10A252, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10titleLabel33_D7A566C795799BF1F9604DDE695EDC30LLSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x751B8, symSize: 0x10 } + - { offset: 0x10A298, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10titleLabel33_D7A566C795799BF1F9604DDE695EDC30LLSo7UILabelCSgvsTo', symObjAddr: 0x50, symBinAddr: 0x751C8, symSize: 0x34 } + - { offset: 0x10A2E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC9searchBar33_D7A566C795799BF1F9604DDE695EDC30LLAA0eI0CSgvgTo', symObjAddr: 0x84, symBinAddr: 0x751FC, symSize: 0x10 } + - { offset: 0x10A2FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC9searchBar33_D7A566C795799BF1F9604DDE695EDC30LLAA0eI0CSgvgTo', symObjAddr: 0x84, symBinAddr: 0x751FC, symSize: 0x10 } + - { offset: 0x10A33F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC9searchBar33_D7A566C795799BF1F9604DDE695EDC30LLAA0eI0CSgvsTo', symObjAddr: 0x94, symBinAddr: 0x7520C, symSize: 0x34 } + - { offset: 0x10A38E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF033_D7A566C795799BF1F9604DDE695EDC30LLSo07UITableF0CSgvgTo', symObjAddr: 0xC8, symBinAddr: 0x75240, symSize: 0x10 } + - { offset: 0x10A3A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF033_D7A566C795799BF1F9604DDE695EDC30LLSo07UITableF0CSgvgTo', symObjAddr: 0xC8, symBinAddr: 0x75240, symSize: 0x10 } + - { offset: 0x10A3E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF033_D7A566C795799BF1F9604DDE695EDC30LLSo07UITableF0CSgvsTo', symObjAddr: 0xD8, symBinAddr: 0x75250, symSize: 0x34 } + - { offset: 0x10A435, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF16BottomConstraint33_D7A566C795799BF1F9604DDE695EDC30LLSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x10C, symBinAddr: 0x75284, symSize: 0x10 } + - { offset: 0x10A44D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF16BottomConstraint33_D7A566C795799BF1F9604DDE695EDC30LLSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x10C, symBinAddr: 0x75284, symSize: 0x10 } + - { offset: 0x10A48D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF16BottomConstraint33_D7A566C795799BF1F9604DDE695EDC30LLSo08NSLayoutJ0CSgvsTo', symObjAddr: 0x11C, symBinAddr: 0x75294, symSize: 0x34 } + - { offset: 0x10A4F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC8sectionsSayAA0E7SectionOGvg', symObjAddr: 0x150, symBinAddr: 0x752C8, symSize: 0xB8 } + - { offset: 0x10A5EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC11viewDidLoadyyF', symObjAddr: 0x208, symBinAddr: 0x75380, symSize: 0xDC } + - { offset: 0x10A65C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x2E4, symBinAddr: 0x7545C, symSize: 0x28 } + - { offset: 0x10A6B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0x30C, symBinAddr: 0x75484, symSize: 0x68 } + - { offset: 0x10A959, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setRelevantPlacesyyF', symObjAddr: 0x374, symBinAddr: 0x754EC, symSize: 0x394 } + - { offset: 0x10AE21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyF', symObjAddr: 0x708, symBinAddr: 0x75880, symSize: 0x17C } + - { offset: 0x10AF80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyFySayAA0I0CGcfU_', symObjAddr: 0x884, symBinAddr: 0x759FC, symSize: 0x354 } + - { offset: 0x10B20B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyFySayAA0I0CGcfU_yyScMYccfU0_', symObjAddr: 0xBD8, symBinAddr: 0x75D50, symSize: 0x80 } + - { offset: 0x10B384, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC09configureE3Bar33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0xC58, symBinAddr: 0x75DD0, symSize: 0x29C } + - { offset: 0x10B53A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC09configureE3Bar33_D7A566C795799BF1F9604DDE695EDC30LLyyFyyScMYccfU_', symObjAddr: 0xEF4, symBinAddr: 0x7606C, symSize: 0x1D8 } + - { offset: 0x10B64B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC014configureTableF033_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x10CC, symBinAddr: 0x76244, symSize: 0x110 } + - { offset: 0x10B816, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC15configureLoader33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x11DC, symBinAddr: 0x76354, symSize: 0x2C4 } + - { offset: 0x10BA69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC25configureNoResultsMessage33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x14A0, symBinAddr: 0x76618, symSize: 0x510 } + - { offset: 0x10BEA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC6search33_D7A566C795799BF1F9604DDE695EDC30LL6manualySb_tF', symObjAddr: 0x19B0, symBinAddr: 0x76B28, symSize: 0x3B8 } + - { offset: 0x10C2B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC6search33_D7A566C795799BF1F9604DDE695EDC30LL6manualySb_tFySayAA7POIDataCGSgcfU_', symObjAddr: 0x1D68, symBinAddr: 0x76EE0, symSize: 0x8C } + - { offset: 0x10C3FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_', symObjAddr: 0x1DF4, symBinAddr: 0x76F6C, symSize: 0x764 } + - { offset: 0x10C8C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_yyXEfU_', symObjAddr: 0x2558, symBinAddr: 0x776D0, symSize: 0x110 } + - { offset: 0x10C917, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC23indexPathsForNewResults33_D7A566C795799BF1F9604DDE695EDC30LL03newL0Say10Foundation9IndexPathVGSayAA7POIDataCG_tF', symObjAddr: 0x2668, symBinAddr: 0x777E0, symSize: 0x228 } + - { offset: 0x10CDCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10showLoader33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x2890, symBinAddr: 0x77A08, symSize: 0x2A4 } + - { offset: 0x10CFA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC20showNoResultsMessage33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x2B34, symBinAddr: 0x77CAC, symSize: 0x218 } + - { offset: 0x10D028, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC20showNoResultsMessage33_D7A566C795799BF1F9604DDE695EDC30LLyyFyyScMYccfU_', symObjAddr: 0x2D4C, symBinAddr: 0x77EC4, symSize: 0x1F0 } + - { offset: 0x10D132, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC18handleUserLocation33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x2F3C, symBinAddr: 0x780B4, symSize: 0x744 } + - { offset: 0x10DBBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x3680, symBinAddr: 0x787F8, symSize: 0x264 } + - { offset: 0x10DCD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x38E4, symBinAddr: 0x78A5C, symSize: 0x60 } + - { offset: 0x10DCEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3944, symBinAddr: 0x78ABC, symSize: 0x238 } + - { offset: 0x10DDF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x3B7C, symBinAddr: 0x78CF4, symSize: 0x28 } + - { offset: 0x10DE0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCfD', symObjAddr: 0x3CDC, symBinAddr: 0x78E54, symSize: 0x30 } + - { offset: 0x10DF53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchSectionO10headerViewSo6UIViewCSgvg', symObjAddr: 0x48AC, symBinAddr: 0x79A24, symSize: 0x4D4 } + - { offset: 0x10E1E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17showsUserLocationSbvgTf4d_n', symObjAddr: 0x58BC, symBinAddr: 0x7A8F8, symSize: 0x330 } + - { offset: 0x10E446, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17handleOfflineMode33_D7A566C795799BF1F9604DDE695EDC30LLyyFTf4d_n', symObjAddr: 0x5BEC, symBinAddr: 0x7AC28, symSize: 0xF8 } + - { offset: 0x10E517, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC15getUserLocation33_D7A566C795799BF1F9604DDE695EDC30LL7Penguin10PILocationCSgyFTf4d_n', symObjAddr: 0x5CE4, symBinAddr: 0x7AD20, symSize: 0x13C } + - { offset: 0x10E62E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC21getLocationParameters33_D7A566C795799BF1F9604DDE695EDC30LLSDySSypGyFTf4d_n', symObjAddr: 0x5E20, symBinAddr: 0x7AE5C, symSize: 0x25C } + - { offset: 0x10E81B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFTf4ndn_n', symObjAddr: 0x607C, symBinAddr: 0x7B0B8, symSize: 0x1E8 } + - { offset: 0x10EC66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11campusLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7BC64, symSize: 0x20 } + - { offset: 0x10F296, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCfE', symObjAddr: 0x3F4, symBinAddr: 0x7C058, symSize: 0xD8 } + - { offset: 0x10F2C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCfETo', symObjAddr: 0x678, symBinAddr: 0x7C2DC, symSize: 0xE4 } + - { offset: 0x10F53F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCMa', symObjAddr: 0x22E4, symBinAddr: 0x7DF48, symSize: 0x20 } + - { offset: 0x10F564, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC14layoutForPanelAA08FloatingK6Layout_pyF', symObjAddr: 0x2304, symBinAddr: 0x7DF68, symSize: 0xD8 } + - { offset: 0x10F5EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC14layoutForPanelAA08FloatingK6Layout_pyFTo', symObjAddr: 0x23DC, symBinAddr: 0x7E040, symSize: 0x34 } + - { offset: 0x10F61E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC16behaviorForPanelAA08FloatingK8Behavior_pyFTo', symObjAddr: 0x2410, symBinAddr: 0x7E074, symSize: 0x24 } + - { offset: 0x10F686, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x2434, symBinAddr: 0x7E098, symSize: 0x250 } + - { offset: 0x10F8F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x2684, symBinAddr: 0x7E2E8, symSize: 0x28 } + - { offset: 0x10F91C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0lQ0OSgtFTW', symObjAddr: 0x26AC, symBinAddr: 0x7E310, symSize: 0xC } + - { offset: 0x10F94E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTf4dnn_n', symObjAddr: 0x2B70, symBinAddr: 0x7E7D4, symSize: 0x20C } + - { offset: 0x10FB59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC23didTapSaveParkingButtonyyFyycACcfu_yycfu0_TA', symObjAddr: 0x2EB8, symBinAddr: 0x7EA28, symSize: 0x20 } + - { offset: 0x10FB8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyFyycfU_TA', symObjAddr: 0x2ED8, symBinAddr: 0x7EA48, symSize: 0x8 } + - { offset: 0x10FB9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyFyycfU0_TA', symObjAddr: 0x2EE0, symBinAddr: 0x7EA50, symSize: 0x8 } + - { offset: 0x10FBB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17didTapShareButtonyySo8UIButtonCFyycACcfu_yycfu0_TA', symObjAddr: 0x2EE8, symBinAddr: 0x7EA58, symSize: 0x20 } + - { offset: 0x10FEA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11campusLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7BC64, symSize: 0x20 } + - { offset: 0x10FF09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11campusLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x7BC84, symSize: 0x14 } + - { offset: 0x10FF5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x7BC98, symSize: 0x20 } + - { offset: 0x10FFAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x7BCB8, symSize: 0x14 } + - { offset: 0x110000, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x7BCCC, symSize: 0x20 } + - { offset: 0x110055, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x7BCEC, symSize: 0x14 } + - { offset: 0x1100A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17saveParkingButtonAA06HapticG0CSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x7BD00, symSize: 0x10 } + - { offset: 0x1100BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17saveParkingButtonAA06HapticG0CSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x7BD00, symSize: 0x10 } + - { offset: 0x1100FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17saveParkingButtonAA06HapticG0CSgvsTo', symObjAddr: 0xAC, symBinAddr: 0x7BD10, symSize: 0x34 } + - { offset: 0x11014D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC07parkingfG0AA07ParkingfG0CSgvgTo', symObjAddr: 0xE0, symBinAddr: 0x7BD44, symSize: 0x10 } + - { offset: 0x110165, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC07parkingfG0AA07ParkingfG0CSgvgTo', symObjAddr: 0xE0, symBinAddr: 0x7BD44, symSize: 0x10 } + - { offset: 0x1101A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC07parkingfG0AA07ParkingfG0CSgvsTo', symObjAddr: 0xF0, symBinAddr: 0x7BD54, symSize: 0x34 } + - { offset: 0x1101F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC9nameLabelAA09IntrinsicJ0CSgvgTo', symObjAddr: 0x124, symBinAddr: 0x7BD88, symSize: 0x20 } + - { offset: 0x11024E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC9nameLabelAA09IntrinsicJ0CSgvsTo', symObjAddr: 0x144, symBinAddr: 0x7BDA8, symSize: 0x14 } + - { offset: 0x11029F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x158, symBinAddr: 0x7BDBC, symSize: 0x10 } + - { offset: 0x1102B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x158, symBinAddr: 0x7BDBC, symSize: 0x10 } + - { offset: 0x1102F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x168, symBinAddr: 0x7BDCC, symSize: 0x34 } + - { offset: 0x110346, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC16saveParkingStackSo07UIStackG0CSgvgTo', symObjAddr: 0x19C, symBinAddr: 0x7BE00, symSize: 0x20 } + - { offset: 0x1103A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC16saveParkingStackSo07UIStackG0CSgvsTo', symObjAddr: 0x1BC, symBinAddr: 0x7BE20, symSize: 0x14 } + - { offset: 0x110457, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x1D0, symBinAddr: 0x7BE34, symSize: 0x1FC } + - { offset: 0x110535, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x3CC, symBinAddr: 0x7C030, symSize: 0x28 } + - { offset: 0x110549, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCfD', symObjAddr: 0x4CC, symBinAddr: 0x7C130, symSize: 0xCC } + - { offset: 0x110589, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCfDTo', symObjAddr: 0x598, symBinAddr: 0x7C1FC, symSize: 0xE0 } + - { offset: 0x1105DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC24updateParkingElapsedTimeyyFTo', symObjAddr: 0x75C, symBinAddr: 0x7C3C0, symSize: 0x58 } + - { offset: 0x110650, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC31applyLanguageBasedTextAlignmentyyF', symObjAddr: 0x7B4, symBinAddr: 0x7C418, symSize: 0x208 } + - { offset: 0x110A2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyF', symObjAddr: 0x9BC, symBinAddr: 0x7C620, symSize: 0x254 } + - { offset: 0x110C3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyFyycfU_', symObjAddr: 0xC10, symBinAddr: 0x7C874, symSize: 0x54 } + - { offset: 0x110C62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyFyycfU0_', symObjAddr: 0xC64, symBinAddr: 0x7C8C8, symSize: 0x88 } + - { offset: 0x110E5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC23didTapSaveParkingButtonyyF', symObjAddr: 0xCEC, symBinAddr: 0x7C950, symSize: 0x49C } + - { offset: 0x111267, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11saveParkingyyF', symObjAddr: 0x1188, symBinAddr: 0x7CDEC, symSize: 0x15C } + - { offset: 0x11139F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC9setUIDatayyF', symObjAddr: 0x12E4, symBinAddr: 0x7CF48, symSize: 0x430 } + - { offset: 0x1115E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x1714, symBinAddr: 0x7D378, symSize: 0x70 } + - { offset: 0x111633, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17didTapShareButtonyySo8UIButtonCFTo', symObjAddr: 0x1784, symBinAddr: 0x7D3E8, symSize: 0x4C } + - { offset: 0x11166A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC5shareyyF', symObjAddr: 0x17D0, symBinAddr: 0x7D434, symSize: 0xD8 } + - { offset: 0x11171B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0x18A8, symBinAddr: 0x7D50C, symSize: 0x4D8 } + - { offset: 0x1119CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x1D80, symBinAddr: 0x7D9E4, symSize: 0x280 } + - { offset: 0x111B9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x2000, symBinAddr: 0x7DC64, symSize: 0x60 } + - { offset: 0x111BCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x2060, symBinAddr: 0x7DCC4, symSize: 0x25C } + - { offset: 0x111D8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x22BC, symBinAddr: 0x7DF20, symSize: 0x28 } + - { offset: 0x111EB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17didTapShareButtonyySo8UIButtonCFTf4dn_n', symObjAddr: 0x26B8, symBinAddr: 0x7E31C, symSize: 0x4B8 } + - { offset: 0x1129AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellCfETo', symObjAddr: 0xAF8, symBinAddr: 0x7F574, symSize: 0xB8 } + - { offset: 0x1129DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellCMa', symObjAddr: 0xBB0, symBinAddr: 0x7F62C, symSize: 0x20 } + - { offset: 0x112A32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableView_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0xBD0, symBinAddr: 0x7F64C, symSize: 0x14 } + - { offset: 0x112A52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableView_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0xBD0, symBinAddr: 0x7F64C, symSize: 0x14 } + - { offset: 0x112A77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableView_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0xBD0, symBinAddr: 0x7F64C, symSize: 0x14 } + - { offset: 0x112B48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableView_12cellForRowAtSo07UITablegE0CSo0lG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xBE4, symBinAddr: 0x7F660, symSize: 0x114 } + - { offset: 0x112D2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewCMa', symObjAddr: 0x105C, symBinAddr: 0x7FAA8, symSize: 0x20 } + - { offset: 0x112EDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC16todayStatusLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7EA7C, symSize: 0x10 } + - { offset: 0x112EF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC16todayStatusLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7EA7C, symSize: 0x10 } + - { offset: 0x112F3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC16todayStatusLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x7EA8C, symSize: 0x34 } + - { offset: 0x112F8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC18todayScheduleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x7EAC0, symSize: 0x10 } + - { offset: 0x112FA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC18todayScheduleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x7EAC0, symSize: 0x10 } + - { offset: 0x112FDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC18todayScheduleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x7EAD0, symSize: 0x34 } + - { offset: 0x11302D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC20expandScheduleButtonSo8UIButtonCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x7EB04, symSize: 0x10 } + - { offset: 0x113045, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC20expandScheduleButtonSo8UIButtonCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x7EB04, symSize: 0x10 } + - { offset: 0x113085, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC20expandScheduleButtonSo8UIButtonCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x7EB14, symSize: 0x34 } + - { offset: 0x1130D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC22collapseScheduleButtonSo8UIButtonCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x7EB48, symSize: 0x10 } + - { offset: 0x1130EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC22collapseScheduleButtonSo8UIButtonCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x7EB48, symSize: 0x10 } + - { offset: 0x113127, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC22collapseScheduleButtonSo8UIButtonCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x7EB58, symSize: 0x34 } + - { offset: 0x113176, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableViewSo07UITableG0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x7EB8C, symSize: 0x10 } + - { offset: 0x11318E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableViewSo07UITableG0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x7EB8C, symSize: 0x10 } + - { offset: 0x1131CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableViewSo07UITableG0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x7EB9C, symSize: 0x34 } + - { offset: 0x11321D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC018tableViewContainerG0So6UIViewCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x7EBD0, symSize: 0x10 } + - { offset: 0x113235, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC018tableViewContainerG0So6UIViewCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x7EBD0, symSize: 0x10 } + - { offset: 0x113275, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC018tableViewContainerG0So6UIViewCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x7EBE0, symSize: 0x34 } + - { offset: 0x1132C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC26expandedScheduleConstraintSo08NSLayoutH0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x7EC14, symSize: 0x10 } + - { offset: 0x1132DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC26expandedScheduleConstraintSo08NSLayoutH0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x7EC14, symSize: 0x10 } + - { offset: 0x11331C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC26expandedScheduleConstraintSo08NSLayoutH0CSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x7EC24, symSize: 0x34 } + - { offset: 0x11336B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC27collapsedScheduleConstraintSo08NSLayoutH0CSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x7EC58, symSize: 0x10 } + - { offset: 0x113383, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC27collapsedScheduleConstraintSo08NSLayoutH0CSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x7EC58, symSize: 0x10 } + - { offset: 0x1133BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC27collapsedScheduleConstraintSo08NSLayoutH0CSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x7EC68, symSize: 0x34 } + - { offset: 0x11340E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC12awakeFromNibyyF', symObjAddr: 0x220, symBinAddr: 0x7EC9C, symSize: 0x144 } + - { offset: 0x11350E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC12awakeFromNibyyFTo', symObjAddr: 0x364, symBinAddr: 0x7EDE0, symSize: 0x28 } + - { offset: 0x113557, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC14updateSchedule3foryAA0dG4DataV_tF', symObjAddr: 0x38C, symBinAddr: 0x7EE08, symSize: 0x47C } + - { offset: 0x113848, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x884, symBinAddr: 0x7F300, symSize: 0x110 } + - { offset: 0x113889, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x994, symBinAddr: 0x7F410, symSize: 0x48 } + - { offset: 0x1138C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x9DC, symBinAddr: 0x7F458, symSize: 0xE8 } + - { offset: 0x1138F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xAC4, symBinAddr: 0x7F540, symSize: 0x28 } + - { offset: 0x113969, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0xDB8, symBinAddr: 0x7F834, symSize: 0x5C } + - { offset: 0x1139A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC11contentSizeSo6CGSizeVvgTo', symObjAddr: 0xE14, symBinAddr: 0x7F890, symSize: 0x3C } + - { offset: 0x113A13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC11contentSizeSo6CGSizeVvsTo', symObjAddr: 0xE50, symBinAddr: 0x7F8CC, symSize: 0x7C } + - { offset: 0x113A68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC10reloadDatayyFTo', symObjAddr: 0xECC, symBinAddr: 0x7F948, symSize: 0x64 } + - { offset: 0x113AC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC5frame5styleACSo6CGRectV_So07UITableF5StyleVtcfcTo', symObjAddr: 0xF30, symBinAddr: 0x7F9AC, symSize: 0x74 } + - { offset: 0x113B27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xFA4, symBinAddr: 0x7FA20, symSize: 0x7C } + - { offset: 0x114380, size: 0x8, addend: 0x0, symName: '_$sSaySo29NSCollectionLayoutVisibleItem_pGSo7CGPointVSo0aB11Environment_pIeggyg_So7NSArrayCADSoAE_pIeyByyy_TR', symObjAddr: 0xEBC, symBinAddr: 0x80BDC, symSize: 0x9C } + - { offset: 0x114546, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperCfETo', symObjAddr: 0x38E0, symBinAddr: 0x83600, symSize: 0x6C } + - { offset: 0x114575, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperCMa', symObjAddr: 0x394C, symBinAddr: 0x8366C, symSize: 0x20 } + - { offset: 0x114589, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSgWOh', symObjAddr: 0x3AC8, symBinAddr: 0x8368C, symSize: 0x40 } + - { offset: 0x11459D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC19configureDataSourceyyFSo20UICollectionViewCellCSgSo0iJ0C_10Foundation9IndexPathVAA14RouteDirectionVtcfU_TA', symObjAddr: 0x3B2C, symBinAddr: 0x836F0, symSize: 0x8 } + - { offset: 0x1145B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVACSHAAWl', symObjAddr: 0x3B34, symBinAddr: 0x836F8, symSize: 0x44 } + - { offset: 0x1145C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC12createLayoutSo016UICollectionViewG0CyFySaySo012NSCollectionG11VisibleItem_pG_So7CGPointVSo0jG11Environment_ptcfU_TA', symObjAddr: 0x3BDC, symBinAddr: 0x83760, symSize: 0x8 } + - { offset: 0x1145D9, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x3BE4, symBinAddr: 0x83768, symSize: 0x10 } + - { offset: 0x1145ED, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x3BF4, symBinAddr: 0x83778, symSize: 0x8 } + - { offset: 0x114A1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7FD20, symSize: 0x10 } + - { offset: 0x114A34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7FD20, symSize: 0x10 } + - { offset: 0x114A7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11contentViewSo6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x7FD30, symSize: 0x34 } + - { offset: 0x114AC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC14collectionViewSo012UICollectionG0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x7FD64, symSize: 0x10 } + - { offset: 0x114AE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC14collectionViewSo012UICollectionG0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x7FD64, symSize: 0x10 } + - { offset: 0x114B21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC14collectionViewSo012UICollectionG0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x7FD74, symSize: 0x34 } + - { offset: 0x114B70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11pageControlSo06UIPageG0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x7FDA8, symSize: 0x10 } + - { offset: 0x114B88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11pageControlSo06UIPageG0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x7FDA8, symSize: 0x10 } + - { offset: 0x114BC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11pageControlSo06UIPageG0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x7FDB8, symSize: 0x34 } + - { offset: 0x114C03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC5frameACSo6CGRectV_tcfc', symObjAddr: 0xCC, symBinAddr: 0x7FDEC, symSize: 0xC4 } + - { offset: 0x114C38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x190, symBinAddr: 0x7FEB0, symSize: 0x20 } + - { offset: 0x114C8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1B0, symBinAddr: 0x7FED0, symSize: 0xB4 } + - { offset: 0x114CBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x264, symBinAddr: 0x7FF84, symSize: 0x28 } + - { offset: 0x114CFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC10commonInit33_35E8C3D16CDCA173FFC7655A38207CE6LLyyF', symObjAddr: 0x28C, symBinAddr: 0x7FFAC, symSize: 0x34C } + - { offset: 0x114E2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC17setCollectionViewyyF', symObjAddr: 0x5D8, symBinAddr: 0x802F8, symSize: 0xA4 } + - { offset: 0x115492, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC14setPageControlyyF', symObjAddr: 0x67C, symBinAddr: 0x8039C, symSize: 0x244 } + - { offset: 0x11567E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC12createLayoutSo016UICollectionViewG0CyF', symObjAddr: 0x8C0, symBinAddr: 0x805E0, symSize: 0x32C } + - { offset: 0x115820, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC12createLayoutSo016UICollectionViewG0CyFySaySo012NSCollectionG11VisibleItem_pG_So7CGPointVSo0jG11Environment_ptcfU_', symObjAddr: 0xBEC, symBinAddr: 0x8090C, symSize: 0x2D0 } + - { offset: 0x115C47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC19configureDataSourceyyF', symObjAddr: 0xF58, symBinAddr: 0x80C78, symSize: 0x268 } + - { offset: 0x115D76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC19configureDataSourceyyFSo20UICollectionViewCellCSgSo0iJ0C_10Foundation9IndexPathVAA14RouteDirectionVtcfU_', symObjAddr: 0x11C0, symBinAddr: 0x80EE0, symSize: 0x160 } + - { offset: 0x115E84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC26updateCollectionViewHeight3fory10Foundation9IndexPathV_tF', symObjAddr: 0x1320, symBinAddr: 0x81040, symSize: 0x624 } + - { offset: 0x116317, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC15didScrollToItem2aty10Foundation9IndexPathV_tF', symObjAddr: 0x1944, symBinAddr: 0x81664, symSize: 0x1F6C } + - { offset: 0x117F4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperCfD', symObjAddr: 0x38B0, symBinAddr: 0x835D0, symSize: 0x30 } + - { offset: 0x11833F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC20floorsCountContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x83780, symSize: 0x20 } + - { offset: 0x118607, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellCfETo', symObjAddr: 0x664, symBinAddr: 0x83DE4, symSize: 0x68 } + - { offset: 0x118636, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellCMa', symObjAddr: 0x6CC, symBinAddr: 0x83E4C, symSize: 0x20 } + - { offset: 0x118742, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC20floorsCountContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x83780, symSize: 0x20 } + - { offset: 0x1187A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC20floorsCountContainerSo6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x837A0, symSize: 0x14 } + - { offset: 0x1187F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC16floorsCountLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x837B4, symSize: 0x20 } + - { offset: 0x11884D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC16floorsCountLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x837D4, symSize: 0x14 } + - { offset: 0x11889E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC16addressContainerSo6UIViewCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x837E8, symSize: 0x20 } + - { offset: 0x1188F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC16addressContainerSo6UIViewCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x83808, symSize: 0x14 } + - { offset: 0x118944, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x8381C, symSize: 0x10 } + - { offset: 0x11895C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x8381C, symSize: 0x10 } + - { offset: 0x118997, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0xAC, symBinAddr: 0x8382C, symSize: 0x34 } + - { offset: 0x1189E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC11campusLabelSo7UILabelCSgvgTo', symObjAddr: 0xE0, symBinAddr: 0x83860, symSize: 0x20 } + - { offset: 0x118A3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC11campusLabelSo7UILabelCSgvsTo', symObjAddr: 0x100, symBinAddr: 0x83880, symSize: 0x14 } + - { offset: 0x118A8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC12awakeFromNibyyFTo', symObjAddr: 0x114, symBinAddr: 0x83894, symSize: 0x68 } + - { offset: 0x118AF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC7setData3foryAA0d4ViewH0CSg_tF', symObjAddr: 0x17C, symBinAddr: 0x838FC, symSize: 0x2A0 } + - { offset: 0x118C2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x41C, symBinAddr: 0x83B9C, symSize: 0xE4 } + - { offset: 0x118C6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x500, symBinAddr: 0x83C80, symSize: 0x48 } + - { offset: 0x118CA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x548, symBinAddr: 0x83CC8, symSize: 0xC4 } + - { offset: 0x118CD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x60C, symBinAddr: 0x83D8C, symSize: 0x28 } + - { offset: 0x118CEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellCfD', symObjAddr: 0x634, symBinAddr: 0x83DB4, symSize: 0x30 } + - { offset: 0x1193DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutCMa', symObjAddr: 0x878, symBinAddr: 0x84618, symSize: 0x20 } + - { offset: 0x1196C3, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSo22CLLocationCoordinate2DV_Tg5', symObjAddr: 0x131C, symBinAddr: 0x8507C, symSize: 0xF8 } + - { offset: 0x119828, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSnySiG_Tg5', symObjAddr: 0x1414, symBinAddr: 0x85174, symSize: 0xF8 } + - { offset: 0x11998D, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSo18NSLayoutConstraintC_Tg5', symObjAddr: 0x150C, symBinAddr: 0x8526C, symSize: 0x130 } + - { offset: 0x119B2F, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI11ScheduleDayV_Tg5', symObjAddr: 0x166C, symBinAddr: 0x853CC, symSize: 0x100 } + - { offset: 0x119C94, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3LegV_Tg5', symObjAddr: 0x1788, symBinAddr: 0x854E8, symSize: 0x100 } + - { offset: 0x119DF9, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSS_Tg5', symObjAddr: 0x1888, symBinAddr: 0x855E8, symSize: 0x100 } + - { offset: 0x119F5E, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSf_Tg5', symObjAddr: 0x19E0, symBinAddr: 0x85740, symSize: 0xF8 } + - { offset: 0x11A0C3, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV_Tg5', symObjAddr: 0x1AE4, symBinAddr: 0x85844, symSize: 0x114 } + - { offset: 0x11A228, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSs_Tg5', symObjAddr: 0x1E08, symBinAddr: 0x85B68, symSize: 0x100 } + - { offset: 0x11A38D, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15RendererCommandOyAH11CGTextTypesVG_Tg5', symObjAddr: 0x1F08, symBinAddr: 0x85C68, symSize: 0x138 } + - { offset: 0x11A4F2, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AH11CGTextTypesV_G_Tg5', symObjAddr: 0x2040, symBinAddr: 0x85DA0, symSize: 0x13C } + - { offset: 0x11A657, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO5ShapeO_Tg5', symObjAddr: 0x217C, symBinAddr: 0x85EDC, symSize: 0x100 } + - { offset: 0x11A7BC, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI8MenuItemV_Tg5', symObjAddr: 0x227C, symBinAddr: 0x85FDC, symSize: 0x11C } + - { offset: 0x11A921, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO7PatternV_Tg5', symObjAddr: 0x2634, symBinAddr: 0x86394, symSize: 0x11C } + - { offset: 0x11AA86, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO6FilterC6EffectO_Tg5', symObjAddr: 0x2750, symBinAddr: 0x864B0, symSize: 0xF8 } + - { offset: 0x11ABEB, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO10StyleSheetV_Tg5', symObjAddr: 0x2880, symBinAddr: 0x865E0, symSize: 0x100 } + - { offset: 0x11AD50, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x2980, symBinAddr: 0x866E0, symSize: 0x110 } + - { offset: 0x11AEB5, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO0R0C8ContentsO_Tg5', symObjAddr: 0x2BA4, symBinAddr: 0x86904, symSize: 0x110 } + - { offset: 0x11B01A, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI16SFSymbolRendererV10SymbolPathV_Tg5', symObjAddr: 0x2CB4, symBinAddr: 0x86A14, symSize: 0x114 } + - { offset: 0x11B17F, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15RendererCommandOyAH7CGTypesVG_Tg5', symObjAddr: 0x2DC8, symBinAddr: 0x86B28, symSize: 0x17C } + - { offset: 0x11B2FC, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AH7CGTypesV_G_Tg5', symObjAddr: 0x2F44, symBinAddr: 0x86CA4, symSize: 0x138 } + - { offset: 0x11B461, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi_Tg5', symObjAddr: 0x30AC, symBinAddr: 0x86E0C, symSize: 0xF8 } + - { offset: 0x11B5C6, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF12CoreGraphics7CGFloatV_Tg5', symObjAddr: 0x31D4, symBinAddr: 0x86F34, symSize: 0xF8 } + - { offset: 0x11B72B, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI11RouteOptionV_Tg5', symObjAddr: 0x359C, symBinAddr: 0x871D8, symSize: 0xF0 } + - { offset: 0x11B890, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI16FileDownloadData_p_Tg5', symObjAddr: 0x368C, symBinAddr: 0x872C8, symSize: 0x134 } + - { offset: 0x11B9F5, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9VenueGateV_Tg5', symObjAddr: 0x37D4, symBinAddr: 0x87410, symSize: 0x118 } + - { offset: 0x11BB5A, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI20FloorSelectorSectionO_Tg5', symObjAddr: 0x38EC, symBinAddr: 0x87528, symSize: 0xE8 } + - { offset: 0x11BCBF, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSo9CGPathRefa8PenNavUIE7SegmentO_Tg5', symObjAddr: 0x3CC4, symBinAddr: 0x87900, symSize: 0x10C } + - { offset: 0x11BE24, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI13VenueCardDataV_Tg5', symObjAddr: 0x4034, symBinAddr: 0x87C70, symSize: 0x114 } + - { offset: 0x11BF5D, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV13_copyContents8subRange12initializingSpyxGSnySiG_AFtFSo18NSLayoutConstraintC_Tg5', symObjAddr: 0x4148, symBinAddr: 0x87D84, symSize: 0x118 } + - { offset: 0x11C03D, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSnySiG_Tg5', symObjAddr: 0x4484, symBinAddr: 0x880C0, symSize: 0x14 } + - { offset: 0x11C075, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI24FloatingPanelPresentable_p_Tg5', symObjAddr: 0x4498, symBinAddr: 0x880D4, symSize: 0x34 } + - { offset: 0x11C0AD, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI9LayerTreeO4PathC7SegmentO_Tg5', symObjAddr: 0x44CC, symBinAddr: 0x88108, symSize: 0x2C } + - { offset: 0x11C0DA, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV_Tg5', symObjAddr: 0x44F8, symBinAddr: 0x88134, symSize: 0x14 } + - { offset: 0x11C107, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AE11CGTextTypesV_G_Tg5', symObjAddr: 0x4520, symBinAddr: 0x8815C, symSize: 0x14 } + - { offset: 0x11C134, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI15RendererCommandOyAE11CGTextTypesVG_Tg5', symObjAddr: 0x4534, symBinAddr: 0x88170, symSize: 0x14 } + - { offset: 0x11C16C, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI3DOMO4PathC7SegmentO_Tg5', symObjAddr: 0x4548, symBinAddr: 0x88184, symSize: 0x2C } + - { offset: 0x11C199, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AE7CGTypesV_G_Tg5', symObjAddr: 0x4574, symBinAddr: 0x881B0, symSize: 0x14 } + - { offset: 0x11C1C6, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI15RendererCommandOyAE7CGTypesVG_Tg5', symObjAddr: 0x4588, symBinAddr: 0x881C4, symSize: 0x14 } + - { offset: 0x11C1F3, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF12CoreGraphics7CGFloatV_Tg5', symObjAddr: 0x4624, symBinAddr: 0x88260, symSize: 0x14 } + - { offset: 0x11C22B, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSay12CoreGraphics7CGFloatVG_Tg5', symObjAddr: 0x4638, symBinAddr: 0x88274, symSize: 0x34 } + - { offset: 0x11C258, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI11RouteOptionV_Tg5', symObjAddr: 0x4680, symBinAddr: 0x882BC, symSize: 0x14 } + - { offset: 0x11C285, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI3LegV_Tg5', symObjAddr: 0x4694, symBinAddr: 0x882D0, symSize: 0x14 } + - { offset: 0x11C2B2, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI16FileDownloadData_p_Tg5', symObjAddr: 0x46A8, symBinAddr: 0x882E4, symSize: 0x14 } + - { offset: 0x11C2DF, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI9VenueGateV_Tg5', symObjAddr: 0x46BC, symBinAddr: 0x882F8, symSize: 0x14 } + - { offset: 0x11C30C, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSi_Tg5', symObjAddr: 0x46D0, symBinAddr: 0x8830C, symSize: 0x14 } + - { offset: 0x11C339, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSo22CLLocationCoordinate2DV_Tg5', symObjAddr: 0x46F8, symBinAddr: 0x88334, symSize: 0x14 } + - { offset: 0x11C366, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI13VenueCardDataV_Tg5', symObjAddr: 0x470C, symBinAddr: 0x88348, symSize: 0x14 } + - { offset: 0x11C39E, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI14RouteDirectionV_Tg5', symObjAddr: 0x4720, symBinAddr: 0x8835C, symSize: 0x34 } + - { offset: 0x11C3E1, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x4774, symBinAddr: 0x883B0, symSize: 0x19C } + - { offset: 0x11C481, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiFSo9CGPathRefa_Tg5', symObjAddr: 0x4D68, symBinAddr: 0x889A4, symSize: 0x1A0 } + - { offset: 0x11C50D, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiF8PenNavUI17FavoriteCacheDataC_Tg5', symObjAddr: 0x4F08, symBinAddr: 0x88B44, symSize: 0x19C } + - { offset: 0x11C5AD, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiFSo29NSCollectionLayoutVisibleItem_p_Tg5', symObjAddr: 0x50A4, symBinAddr: 0x88CE0, symSize: 0x1A4 } + - { offset: 0x11C642, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentOSHAASQWb', symObjAddr: 0x528C, symBinAddr: 0x88E84, symSize: 0x4 } + - { offset: 0x11C656, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentOAESQAAWl', symObjAddr: 0x5290, symBinAddr: 0x88E88, symSize: 0x40 } + - { offset: 0x11C66A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentOMa', symObjAddr: 0x5434, symBinAddr: 0x88EC8, symSize: 0x10 } + - { offset: 0x11C689, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiF8PenNavUI0gH13UITableUpdateC_Tg5', symObjAddr: 0x5568, symBinAddr: 0x88FFC, symSize: 0x19C } + - { offset: 0x11C729, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiF8PenNavUI16CampaignTrackingC_Tg5', symObjAddr: 0x5728, symBinAddr: 0x891BC, symSize: 0x19C } + - { offset: 0x11C7BE, size: 0x8, addend: 0x0, symName: ___swift_allocate_boxed_opaque_existential_1, symObjAddr: 0x5AB8, symBinAddr: 0x8954C, symSize: 0x3C } + - { offset: 0x11C7D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVWOc', symObjAddr: 0x5B0C, symBinAddr: 0x89588, symSize: 0x3C } + - { offset: 0x11C971, size: 0x8, addend: 0x0, symName: '_$ss15_arrayForceCastySayq_GSayxGr0_lFSo32UICollectionViewLayoutAttributesC_ypTg5', symObjAddr: 0x8C0, symBinAddr: 0x84660, symSize: 0x200 } + - { offset: 0x11CBF8, size: 0x8, addend: 0x0, symName: '_$ss15_arrayForceCastySayq_GSayxGr0_lF8PenNavUI9AmenitiesV_AD13TagDataSource_pTg5', symObjAddr: 0xAE4, symBinAddr: 0x84884, symSize: 0x140 } + - { offset: 0x11CDE4, size: 0x8, addend: 0x0, symName: '_$ss15_arrayForceCastySayq_GSayxGr0_lF7Penguin5VenueC_8PenNavUI16FileDownloadData_pTg5', symObjAddr: 0xDA8, symBinAddr: 0x84B48, symSize: 0x1D0 } + - { offset: 0x11D284, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueAESgSi_tcfC', symObjAddr: 0x0, symBinAddr: 0x83E6C, symSize: 0x14 } + - { offset: 0x11D2A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivg', symObjAddr: 0x14, symBinAddr: 0x83E80, symSize: 0x8 } + - { offset: 0x11D2CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xDC, symBinAddr: 0x83E88, symSize: 0x8 } + - { offset: 0x11D35F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xF0, symBinAddr: 0x83E90, symSize: 0x8C } + - { offset: 0x11D3CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC27layoutAttributesForElements2inSaySo016UICollectionViewfH0CGSgSo6CGRectV_tF', symObjAddr: 0x17C, symBinAddr: 0x83F1C, symSize: 0x6FC } + - { offset: 0x11DCA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC27layoutAttributesForElements2inSaySo016UICollectionViewfH0CGSgSo6CGRectV_tFTo', symObjAddr: 0x1194, symBinAddr: 0x84F34, symSize: 0xA0 } + - { offset: 0x11DCCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvgTo', symObjAddr: 0x1234, symBinAddr: 0x84FD4, symSize: 0x8 } + - { offset: 0x11DCF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC011developmentF9DirectionSo015UIUserInterfacefH0VvgTo', symObjAddr: 0x1244, symBinAddr: 0x84FDC, symSize: 0x18 } + - { offset: 0x11DD0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC011developmentF9DirectionSo015UIUserInterfacefH0VvgTo', symObjAddr: 0x1244, symBinAddr: 0x84FDC, symSize: 0x18 } + - { offset: 0x11DD57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutCACycfc', symObjAddr: 0x1294, symBinAddr: 0x84FF4, symSize: 0x2C } + - { offset: 0x11DDB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutCACycfcTo', symObjAddr: 0x12C0, symBinAddr: 0x85020, symSize: 0x2C } + - { offset: 0x11DE0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutCfD', symObjAddr: 0x12EC, symBinAddr: 0x8504C, symSize: 0x30 } + - { offset: 0x11E20B, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerC8PenNavUIE14getDefaultPath10Foundation3URLVyFZ', symObjAddr: 0x0, symBinAddr: 0x89600, symSize: 0x294 } + - { offset: 0x11E27F, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerC8PenNavUIE14getDefaultPath10Foundation3URLVyFZ', symObjAddr: 0x0, symBinAddr: 0x89600, symSize: 0x294 } + - { offset: 0x11E3A8, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerC8PenNavUIE13defaultFolderSSvgZTf4d_n', symObjAddr: 0x294, symBinAddr: 0x89894, symSize: 0xAC } + - { offset: 0x11E3F3, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerC8PenNavUIE10fileExists2atSb10Foundation3URLV_tFZTf4nd_n', symObjAddr: 0x340, symBinAddr: 0x89940, symSize: 0x120 } + - { offset: 0x11E450, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerCMa', symObjAddr: 0x460, symBinAddr: 0x89A60, symSize: 0x44 } + - { offset: 0x11E869, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x89AA4, symSize: 0x10 } + - { offset: 0x11EA7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellCfETo', symObjAddr: 0x4BC, symBinAddr: 0x89F60, symSize: 0x48 } + - { offset: 0x11EAA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellCMa', symObjAddr: 0x504, symBinAddr: 0x89FA8, symSize: 0x20 } + - { offset: 0x11EBB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x89AA4, symSize: 0x10 } + - { offset: 0x11EBCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x89AA4, symSize: 0x10 } + - { offset: 0x11EC13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x89AB4, symSize: 0x34 } + - { offset: 0x11EC62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC9floorNameSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x89AE8, symSize: 0x10 } + - { offset: 0x11EC7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC9floorNameSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x89AE8, symSize: 0x10 } + - { offset: 0x11ECB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC9floorNameSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x89AF8, symSize: 0x34 } + - { offset: 0x11ED04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC24selectionStatusImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x89B2C, symSize: 0x10 } + - { offset: 0x11ED1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC24selectionStatusImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x89B2C, symSize: 0x10 } + - { offset: 0x11ED5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC24selectionStatusImageViewSo07UIImageI0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x89B3C, symSize: 0x34 } + - { offset: 0x11EDAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC12awakeFromNibyyFTo', symObjAddr: 0xCC, symBinAddr: 0x89B70, symSize: 0x3C } + - { offset: 0x11EDE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC9configure4with10isSelectedy7Penguin0D0CSg_SbtF', symObjAddr: 0x108, symBinAddr: 0x89BAC, symSize: 0x210 } + - { offset: 0x11EEC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x318, symBinAddr: 0x89DBC, symSize: 0xC0 } + - { offset: 0x11EF27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3D8, symBinAddr: 0x89E7C, symSize: 0x8C } + - { offset: 0x11EF5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x464, symBinAddr: 0x89F08, symSize: 0x28 } + - { offset: 0x11EF6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellCfD', symObjAddr: 0x48C, symBinAddr: 0x89F30, symSize: 0x30 } + - { offset: 0x11F333, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC14sharedInstance33_28F2A874F3DA7E21FDD4D0C208D8D7C5LLACSgvpZ', symObjAddr: 0x3420, symBinAddr: 0x3645A8, symSize: 0x0 } + - { offset: 0x11F4BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC4findyAA8FavoriteCSgAA5PlaceCSgF', symObjAddr: 0x20, symBinAddr: 0x89FC8, symSize: 0x504 } + - { offset: 0x11FA7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD4List12withLocation23ignoresRoutePreferences10completionySb_SbySayAA8FavoriteCGctF', symObjAddr: 0x524, symBinAddr: 0x8A4CC, symSize: 0x5A8 } + - { offset: 0x11FDEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD4List12withLocation23ignoresRoutePreferences10completionySb_SbySayAA8FavoriteCGctFyAJcfU_', symObjAddr: 0x23BC, symBinAddr: 0x8C320, symSize: 0x118 } + - { offset: 0x12007E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerCMa', symObjAddr: 0x22BC, symBinAddr: 0x8C264, symSize: 0x20 } + - { offset: 0x12013F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC8getAlias3forSSSgAA5PlaceC_tF', symObjAddr: 0x24D4, symBinAddr: 0x8C438, symSize: 0x3AC } + - { offset: 0x1203FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC25getFavoriteWithIdentifier10identifierAA0G0CSgSS_tF', symObjAddr: 0x2880, symBinAddr: 0x8C7E4, symSize: 0x170 } + - { offset: 0x1205B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD4List12withLocation23ignoresRoutePreferences10completionySb_SbySayAA8FavoriteCGctFyAJcfU_TA', symObjAddr: 0x2AF8, symBinAddr: 0x8CA5C, symSize: 0xC } + - { offset: 0x1205C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD012withLocationySb_tFySayAA8FavoriteCGcfU_yyScMYccfU_TA', symObjAddr: 0x2B58, symBinAddr: 0x8CA68, symSize: 0x8 } + - { offset: 0x1205D9, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2B60, symBinAddr: 0x8CA70, symSize: 0x10 } + - { offset: 0x1205ED, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2B70, symBinAddr: 0x8CA80, symSize: 0x8 } + - { offset: 0x120601, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC14updateFavorite8favoriteyAA0G0C_tFySbcfU_TA', symObjAddr: 0x2C4C, symBinAddr: 0x8CA88, symSize: 0x8 } + - { offset: 0x1206AF, size: 0x8, addend: 0x0, symName: '_$sSMsE20_halfStablePartition15isSuffixElement5IndexQzSb0F0QzKXE_tKFSay8PenNavUI8FavoriteCG_Tg503$s8hi29UI16FavoritesManagerC22removeK43Location8favoriteyAA0G0C_tFySbcfU_SbAGXEfU_AITf1cn_nTf4ng_n', symObjAddr: 0x2C54, symBinAddr: 0x8CA90, symSize: 0x2F8 } + - { offset: 0x120BF2, size: 0x8, addend: 0x0, symName: '_$sSMsE20_halfStablePartition15isSuffixElement5IndexQzSb0F0QzKXE_tKFSay8PenNavUI8FavoriteCG_Tg503$s8hi29UI16FavoritesManagerC22removeK44Location8favoriteyAA0G0C_tFySbcfU_SbAGXEfU0_AITf1cn_nTf4ng_n', symObjAddr: 0x2F4C, symBinAddr: 0x8CD88, symSize: 0x320 } + - { offset: 0x121155, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC14updateFavorite8favoriteyAA0G0C_tFySbcfU_yyScMYccfU0_TA', symObjAddr: 0x3270, symBinAddr: 0x8D0AC, symSize: 0x20 } + - { offset: 0x121169, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC22removeFavoriteLocation8favoriteyAA0G0C_tFySbcfU_TA', symObjAddr: 0x3290, symBinAddr: 0x8D0CC, symSize: 0x8 } + - { offset: 0x12117D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC22removeFavoriteLocation8favoriteyAA0G0C_tFySbcfU_yyScMYccfU1_TA', symObjAddr: 0x32D4, symBinAddr: 0x8D0D4, symSize: 0x20 } + - { offset: 0x121191, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC19addFavoriteLocation8favoriteyAA0G0C_tFySbcfU_TA', symObjAddr: 0x32F4, symBinAddr: 0x8D0F4, symSize: 0x8 } + - { offset: 0x1211A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC19addFavoriteLocation8favoriteyAA0G0C_tFySbcfU_ySayAGGcfU_TA', symObjAddr: 0x32FC, symBinAddr: 0x8D0FC, symSize: 0x8 } + - { offset: 0x1211B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC19addFavoriteLocation8favoriteyAA0G0C_tFySbcfU_ySayAGGcfU_yyScMYccfU_TA', symObjAddr: 0x3330, symBinAddr: 0x8D130, symSize: 0x20 } + - { offset: 0x121506, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD012withLocationySb_tFySayAA8FavoriteCGcfU_', symObjAddr: 0xACC, symBinAddr: 0x8AA74, symSize: 0x1D8 } + - { offset: 0x121561, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD012withLocationySb_tFySayAA8FavoriteCGcfU_yyScMYccfU_', symObjAddr: 0xCA4, symBinAddr: 0x8AC4C, symSize: 0x6C } + - { offset: 0x12163C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC22removeFavoriteLocation8favoriteyAA0G0C_tF', symObjAddr: 0x10BC, symBinAddr: 0x8B064, symSize: 0x370 } + - { offset: 0x12191B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC22removeFavoriteLocation8favoriteyAA0G0C_tFySbcfU_', symObjAddr: 0x142C, symBinAddr: 0x8B3D4, symSize: 0x470 } + - { offset: 0x121FE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerCfD', symObjAddr: 0x2288, symBinAddr: 0x8C230, symSize: 0x34 } + - { offset: 0x12208F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerCACycfc', symObjAddr: 0x2320, symBinAddr: 0x8C284, symSize: 0x9C } + - { offset: 0x122184, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC6sharedACvgZTf4d_n', symObjAddr: 0x29F0, symBinAddr: 0x8C954, symSize: 0xB8 } + - { offset: 0x1225C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC13iconImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x8D190, symSize: 0x10 } + - { offset: 0x122794, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellCfETo', symObjAddr: 0x294, symBinAddr: 0x8D424, symSize: 0x38 } + - { offset: 0x1227C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellCMa', symObjAddr: 0x2CC, symBinAddr: 0x8D45C, symSize: 0x20 } + - { offset: 0x122895, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC13iconImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x8D190, symSize: 0x10 } + - { offset: 0x1228AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC13iconImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x8D190, symSize: 0x10 } + - { offset: 0x1228F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC13iconImageViewSo07UIImageH0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x8D1A0, symSize: 0x34 } + - { offset: 0x122942, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x8D1D4, symSize: 0x10 } + - { offset: 0x12295A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x8D1D4, symSize: 0x10 } + - { offset: 0x12299A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x8D1E4, symSize: 0x34 } + - { offset: 0x1229E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC12awakeFromNibyyFTo', symObjAddr: 0x88, symBinAddr: 0x8D218, symSize: 0x3C } + - { offset: 0x122A61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0xC4, symBinAddr: 0x8D254, symSize: 0x54 } + - { offset: 0x122AC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x118, symBinAddr: 0x8D2A8, symSize: 0xB8 } + - { offset: 0x122B45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1D0, symBinAddr: 0x8D360, symSize: 0x94 } + - { offset: 0x122B7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellCfD', symObjAddr: 0x264, symBinAddr: 0x8D3F4, symSize: 0x30 } + - { offset: 0x123124, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCfETo', symObjAddr: 0x814, symBinAddr: 0x8DC90, symSize: 0x58 } + - { offset: 0x123153, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCMU', symObjAddr: 0x86C, symBinAddr: 0x8DCE8, symSize: 0x8 } + - { offset: 0x123167, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCMa', symObjAddr: 0x874, symBinAddr: 0x8DCF0, symSize: 0x38 } + - { offset: 0x12317B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCMr', symObjAddr: 0x8AC, symBinAddr: 0x8DD28, symSize: 0x7C } + - { offset: 0x12318F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC7setData8categoryy7Penguin11POICategoryV_tFySo7UIImageCSgcfU_TA', symObjAddr: 0xADC, symBinAddr: 0x8DE34, symSize: 0x40 } + - { offset: 0x12330F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC13iconContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x8D47C, symSize: 0x20 } + - { offset: 0x12336F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC13iconContainerSo6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x8D49C, symSize: 0x14 } + - { offset: 0x1233C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC17categoryNameLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x8D4B0, symSize: 0x20 } + - { offset: 0x12341A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC17categoryNameLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x8D4D0, symSize: 0x14 } + - { offset: 0x12346B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC13categoryImageSo07UIImageF0CSgvgTo', symObjAddr: 0x68, symBinAddr: 0x8D4E4, symSize: 0x20 } + - { offset: 0x1234C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC13categoryImageSo07UIImageF0CSgvsTo', symObjAddr: 0x88, symBinAddr: 0x8D504, symSize: 0x14 } + - { offset: 0x123542, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC7setData8categoryy7Penguin11POICategoryV_tF', symObjAddr: 0xA8, symBinAddr: 0x8D524, symSize: 0x2FC } + - { offset: 0x123644, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC7setData8categoryy7Penguin11POICategoryV_tFySo7UIImageCSgcfU_', symObjAddr: 0x3A4, symBinAddr: 0x8D820, symSize: 0x1AC } + - { offset: 0x12370B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfc', symObjAddr: 0x59C, symBinAddr: 0x8DA18, symSize: 0xFC } + - { offset: 0x12374C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfcTo', symObjAddr: 0x698, symBinAddr: 0x8DB14, symSize: 0x48 } + - { offset: 0x123784, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x6E0, symBinAddr: 0x8DB5C, symSize: 0xD8 } + - { offset: 0x1237B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x7B8, symBinAddr: 0x8DC34, symSize: 0x28 } + - { offset: 0x1237CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCfD', symObjAddr: 0x7E0, symBinAddr: 0x8DC5C, symSize: 0x34 } + - { offset: 0x123BD9, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE7nibNameABSSSg_tcfC', symObjAddr: 0x0, symBinAddr: 0x8DE74, symSize: 0xAC } + - { offset: 0x123C2D, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo18NSLayoutConstraintCSg_tF', symObjAddr: 0xAC, symBinAddr: 0x8DF20, symSize: 0x2C4 } + - { offset: 0x123C83, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE011topMostViewB0AByF', symObjAddr: 0x370, symBinAddr: 0x8E1E4, symSize: 0x180 } + - { offset: 0x123D12, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo12UIScrollViewCSg_tF', symObjAddr: 0x4F0, symBinAddr: 0x8E364, symSize: 0x2C4 } + - { offset: 0x123D67, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo12UIScrollViewCSg_tFy10Foundation12NotificationVYbcfU0_', symObjAddr: 0xA64, symBinAddr: 0x8E8D8, symSize: 0x94 } + - { offset: 0x123DF2, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo12UIScrollViewCSg_tFy10Foundation12NotificationVYbcfU_TA', symObjAddr: 0x7D8, symBinAddr: 0x8E64C, symSize: 0x20 } + - { offset: 0x123E47, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16keyboardWillShow33_EA3C84DA480CAA94B4D682CC82750B36LL12notification10scrollViewy10Foundation12NotificationV_So08UIScrollS0CtF', symObjAddr: 0x7F8, symBinAddr: 0x8E66C, symSize: 0x1C0 } + - { offset: 0x123F4B, size: 0x8, addend: 0x0, symName: '_$s10Foundation12NotificationVIeghn_So14NSNotificationCIeyBhy_TR', symObjAddr: 0x9B8, symBinAddr: 0x8E82C, symSize: 0x94 } + - { offset: 0x123F63, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xA4C, symBinAddr: 0x8E8C0, symSize: 0x10 } + - { offset: 0x123F77, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xA5C, symBinAddr: 0x8E8D0, symSize: 0x8 } + - { offset: 0x123FB5, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo12UIScrollViewCSg_tFy10Foundation12NotificationVYbcfU0_TA', symObjAddr: 0xAF8, symBinAddr: 0x8E96C, symSize: 0x8 } + - { offset: 0x12400B, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16keyboardWillShow33_EA3C84DA480CAA94B4D682CC82750B36LL12notification10constrainty10Foundation12NotificationV_So18NSLayoutConstraintCtF', symObjAddr: 0xB00, symBinAddr: 0x8E974, symSize: 0x2B0 } + - { offset: 0x124157, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16keyboardWillHide33_EA3C84DA480CAA94B4D682CC82750B36LL12notification10constrainty10Foundation12NotificationV_So18NSLayoutConstraintCtF', symObjAddr: 0xE24, symBinAddr: 0x8EC98, symSize: 0x1C4 } + - { offset: 0x12423D, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16adjustConstraint33_EA3C84DA480CAA94B4D682CC82750B36LL_8constant8durationySo08NSLayoutG0C_12CoreGraphics7CGFloatVSdtFyycfU_', symObjAddr: 0xFE8, symBinAddr: 0x8EE5C, symSize: 0x88 } + - { offset: 0x124278, size: 0x8, addend: 0x0, symName: '_$ss11AnyHashableVWOh', symObjAddr: 0x1070, symBinAddr: 0x8EEE4, symSize: 0x34 } + - { offset: 0x12428C, size: 0x8, addend: 0x0, symName: '_$sypSgWOh', symObjAddr: 0x10A4, symBinAddr: 0x8EF18, symSize: 0x40 } + - { offset: 0x1242A0, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo18NSLayoutConstraintCSg_tFy10Foundation12NotificationVYbcfU_TA', symObjAddr: 0x1168, symBinAddr: 0x8EF5C, symSize: 0x20 } + - { offset: 0x1242B4, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo18NSLayoutConstraintCSg_tFy10Foundation12NotificationVYbcfU0_TA', symObjAddr: 0x11B4, symBinAddr: 0x8EFA8, symSize: 0x20 } + - { offset: 0x1242C8, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16adjustConstraint33_EA3C84DA480CAA94B4D682CC82750B36LL_8constant8durationySo08NSLayoutG0C_12CoreGraphics7CGFloatVSdtFyycfU_TA', symObjAddr: 0x11D4, symBinAddr: 0x8EFC8, symSize: 0x8 } + - { offset: 0x1249E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwCP', symObjAddr: 0x0, symBinAddr: 0x8F008, symSize: 0x414 } + - { offset: 0x1249FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwxx', symObjAddr: 0x458, symBinAddr: 0x8F41C, symSize: 0x190 } + - { offset: 0x124A10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwcp', symObjAddr: 0x5E8, symBinAddr: 0x8F5AC, symSize: 0x3E8 } + - { offset: 0x124A24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwca', symObjAddr: 0x9D0, symBinAddr: 0x8F994, symSize: 0x614 } + - { offset: 0x124A38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwtk', symObjAddr: 0xFE4, symBinAddr: 0x8FFA8, symSize: 0x3C4 } + - { offset: 0x124A4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwta', symObjAddr: 0x13A8, symBinAddr: 0x9036C, symSize: 0x5D8 } + - { offset: 0x124A60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwet', symObjAddr: 0x1980, symBinAddr: 0x90944, symSize: 0xC } + - { offset: 0x124A74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwst', symObjAddr: 0x1A44, symBinAddr: 0x90A08, symSize: 0xC } + - { offset: 0x124A88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVMa', symObjAddr: 0x1AF8, symBinAddr: 0x90ABC, symSize: 0x38 } + - { offset: 0x124A9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVMr', symObjAddr: 0x1B30, symBinAddr: 0x90AF4, symSize: 0x100 } + - { offset: 0x124B43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22presentationAttributes3for6stylesAC012PresentationF0VAC15GraphicsElementC_SayAC10StyleSheetVGtFZ', symObjAddr: 0x1E14, symBinAddr: 0x90DD8, symSize: 0x1BC } + - { offset: 0x124D14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14makeAttributes3for6stylesAC012PresentationF0VAC10StyleSheetV8SelectorO_SayAJGtFZ', symObjAddr: 0x2014, symBinAddr: 0x90F94, symSize: 0x2B0 } + - { offset: 0x124E6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesV08applyingF0yA2EF', symObjAddr: 0x22C4, symBinAddr: 0x91244, symSize: 0x84C } + - { offset: 0x124EB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementC11elementNameSSSgvg', symObjAddr: 0x2B10, symBinAddr: 0x91A90, symSize: 0x1A0 } + - { offset: 0x1250E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO13makeSelectors3forSayAC10StyleSheetV8SelectorOGAC15GraphicsElementC_tFZTf4nd_n', symObjAddr: 0x2CB0, symBinAddr: 0x91C30, symSize: 0x418 } + - { offset: 0x12565F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOWOe', symObjAddr: 0x30E0, symBinAddr: 0x92048, symSize: 0x18 } + - { offset: 0x125673, size: 0x8, addend: 0x0, symName: '_$sSlsSQ7ElementRpzrlE5split9separator9maxSplits25omittingEmptySubsequencesSay11SubSequenceQzGAB_SiSbtFSbABXEfU_SS_TG5TA', symObjAddr: 0x323C, symBinAddr: 0x92124, symSize: 0x1C } + - { offset: 0x125687, size: 0x8, addend: 0x0, symName: '_$sS2sSysWl', symObjAddr: 0x3258, symBinAddr: 0x92140, symSize: 0x40 } + - { offset: 0x1256A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVAEycfC', symObjAddr: 0x1C7C, symBinAddr: 0x90C40, symSize: 0x198 } + - { offset: 0x125AA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC14sharedInstance33_5C10FF997BD11BB4616773E7BD77AA9CLLACSgvpZ', symObjAddr: 0x22E8, symBinAddr: 0x364860, symSize: 0x0 } + - { offset: 0x125CA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC18loadFontsFromCacheyyF', symObjAddr: 0xF4, symBinAddr: 0x92274, symSize: 0xC8 } + - { offset: 0x12615F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerCMa', symObjAddr: 0x1E5C, symBinAddr: 0x93FDC, symSize: 0x20 } + - { offset: 0x126173, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtFyyYbcfU_TA', symObjAddr: 0x1F34, symBinAddr: 0x940B4, symSize: 0x8 } + - { offset: 0x126187, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1F3C, symBinAddr: 0x940BC, symSize: 0x10 } + - { offset: 0x12619B, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1F4C, symBinAddr: 0x940CC, symSize: 0x8 } + - { offset: 0x1261AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtFyyYbcfU_yyScMYccfU_TA', symObjAddr: 0x1FA4, symBinAddr: 0x940F8, symSize: 0x8 } + - { offset: 0x1261C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC9loadFonts33_5C10FF997BD11BB4616773E7BD77AA9CLLyyFySayAA7AppFontCG_10Foundation4DataVSgtcfU_TA', symObjAddr: 0x2164, symBinAddr: 0x94100, symSize: 0x8 } + - { offset: 0x1261D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC10loadColors33_5C10FF997BD11BB4616773E7BD77AA9CLLyyFyAA0G8ResponseVSg_10Foundation4DataVSgtcfU_TA', symObjAddr: 0x2200, symBinAddr: 0x94108, symSize: 0x8 } + - { offset: 0x1261EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVSgWOe', symObjAddr: 0x2208, symBinAddr: 0x94110, symSize: 0x30 } + - { offset: 0x1261FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVSgWOy', symObjAddr: 0x2238, symBinAddr: 0x94140, symSize: 0x30 } + - { offset: 0x126213, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC15fetchThemesDatayyFyycfU_TA', symObjAddr: 0x2268, symBinAddr: 0x94170, symSize: 0x8 } + - { offset: 0x126227, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgWOb', symObjAddr: 0x2270, symBinAddr: 0x94178, symSize: 0x48 } + - { offset: 0x126547, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC04loadD010completionyyyc_tF', symObjAddr: 0x0, symBinAddr: 0x92180, symSize: 0xF4 } + - { offset: 0x12663B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16loadDefaultFontsyyF', symObjAddr: 0x1BC, symBinAddr: 0x9233C, symSize: 0x3C0 } + - { offset: 0x126B4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC15fetchThemesDatayyF', symObjAddr: 0x57C, symBinAddr: 0x926FC, symSize: 0x1C8 } + - { offset: 0x126B9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC15fetchThemesDatayyFyycfU_', symObjAddr: 0x744, symBinAddr: 0x928C4, symSize: 0x30 } + - { offset: 0x126BC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC14cancelAllTasksyyF', symObjAddr: 0x774, symBinAddr: 0x928F4, symSize: 0x1EC } + - { offset: 0x127090, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC22extractFontsToDownload33_5C10FF997BD11BB4616773E7BD77AA9CLL5fontsySayAA7AppFontCG_tF', symObjAddr: 0xD5C, symBinAddr: 0x92EDC, symSize: 0x960 } + - { offset: 0x1277CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtF', symObjAddr: 0x16BC, symBinAddr: 0x9383C, symSize: 0x444 } + - { offset: 0x127B5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtFyyYbcfU_', symObjAddr: 0x1B00, symBinAddr: 0x93C80, symSize: 0x1E8 } + - { offset: 0x127BC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtFyyYbcfU_yyScMYccfU_', symObjAddr: 0x1CE8, symBinAddr: 0x93E68, symSize: 0x108 } + - { offset: 0x127C6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerCfd', symObjAddr: 0x1DF0, symBinAddr: 0x93F70, symSize: 0x4C } + - { offset: 0x127C8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerCfD', symObjAddr: 0x1E3C, symBinAddr: 0x93FBC, symSize: 0x20 } + - { offset: 0x127D31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerCACycfc', symObjAddr: 0x1E7C, symBinAddr: 0x93FFC, symSize: 0xB4 } + - { offset: 0x1286C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVMa', symObjAddr: 0xB4, symBinAddr: 0x94284, symSize: 0x38 } + - { offset: 0x1286DD, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgWOc', symObjAddr: 0xEC, symBinAddr: 0x942BC, symSize: 0x48 } + - { offset: 0x128CAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO18parseConfiguration4from13baseDirectoryAC0G0VSaySSG_10Foundation3URLVtKFZ', symObjAddr: 0x1294, symBinAddr: 0x95204, symSize: 0xF60 } + - { offset: 0x1294BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO9parseSize4fromAC0G0OSSSgSg_tKFZ', symObjAddr: 0x21F4, symBinAddr: 0x96164, symSize: 0x1B0 } + - { offset: 0x129700, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO11parseInsets4fromAC0G0VSSSgSg_tKFZ', symObjAddr: 0x23A4, symBinAddr: 0x96314, symSize: 0xFC4 } + - { offset: 0x12A469, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE03newB03for5scaleAcD11CommandLineO6FormatO_AI5ScaleOtF', symObjAddr: 0x3368, symBinAddr: 0x972D8, symSize: 0x1E4 } + - { offset: 0x12A5C6, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE21lastPathComponentNameSSvg', symObjAddr: 0x354C, symBinAddr: 0x974BC, symSize: 0x128 } + - { offset: 0x12A6D8, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF10Foundation3URLV_Tg5', symObjAddr: 0x3674, symBinAddr: 0x975E4, symSize: 0x6C } + - { offset: 0x12A6FB, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFSS_Tg5', symObjAddr: 0x36E0, symBinAddr: 0x97650, symSize: 0x64 } + - { offset: 0x12A733, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFSi_Tg5', symObjAddr: 0x3744, symBinAddr: 0x976B4, symSize: 0x30 } + - { offset: 0x12A76B, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x3774, symBinAddr: 0x976E4, symSize: 0x30 } + - { offset: 0x12A798, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI11RouteOptionV0mN3KeyO_Tg5', symObjAddr: 0x37A8, symBinAddr: 0x97718, symSize: 0x14C } + - { offset: 0x12A83D, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI13AppFontWeightO_Tg5', symObjAddr: 0x3908, symBinAddr: 0x97878, symSize: 0xB0 } + - { offset: 0x12A965, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI8MenuItemV0mN9AttributeO_Tg5', symObjAddr: 0x39B8, symBinAddr: 0x97928, symSize: 0x58 } + - { offset: 0x12AAD7, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI9LayerTreeO8GradientV_Tg5', symObjAddr: 0x3A10, symBinAddr: 0x97980, symSize: 0x58 } + - { offset: 0x12ABFA, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x3A68, symBinAddr: 0x979D8, symSize: 0x80 } + - { offset: 0x12ACCD, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFSo11CFStringRefa_Tg5', symObjAddr: 0x3AE8, symBinAddr: 0x97A58, symSize: 0x88 } + - { offset: 0x12AD2F, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFs11AnyHashableV_Tg5', symObjAddr: 0x3B70, symBinAddr: 0x97AE0, symSize: 0x30 } + - { offset: 0x12AD5C, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF10Foundation3URLV_Tg5', symObjAddr: 0x3CC0, symBinAddr: 0x97C30, symSize: 0x130 } + - { offset: 0x12AD74, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlFSS_Tg5', symObjAddr: 0x3DF0, symBinAddr: 0x97D60, symSize: 0xB4 } + - { offset: 0x12ADD6, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlFSi_Tg5', symObjAddr: 0x3EA4, symBinAddr: 0x97E14, symSize: 0x6C } + - { offset: 0x12AE0E, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x3F10, symBinAddr: 0x97E80, symSize: 0xC4 } + - { offset: 0x12AE3B, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI11RouteOptionV0oP3KeyO_Tg5', symObjAddr: 0x3FD4, symBinAddr: 0x97F44, symSize: 0x298 } + - { offset: 0x12AF0E, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI9FontStyleO_Tg5', symObjAddr: 0x426C, symBinAddr: 0x981DC, symSize: 0x464 } + - { offset: 0x12AFB9, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI13AppFontWeightO_Tg5', symObjAddr: 0x46D0, symBinAddr: 0x98640, symSize: 0x188 } + - { offset: 0x12B076, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI8MenuItemV0oP9AttributeO_Tg5', symObjAddr: 0x4858, symBinAddr: 0x987C8, symSize: 0x70 } + - { offset: 0x12B13A, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI9LayerTreeO8GradientV_Tg5', symObjAddr: 0x48C8, symBinAddr: 0x98838, symSize: 0x1D0 } + - { offset: 0x12B2DC, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x4A98, symBinAddr: 0x98A08, symSize: 0xFC } + - { offset: 0x12B35C, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlFSo11CFStringRefa_Tg5', symObjAddr: 0x4B94, symBinAddr: 0x98B04, symSize: 0xF4 } + - { offset: 0x12B394, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlFs11AnyHashableV_Tg5', symObjAddr: 0x4C88, symBinAddr: 0x98BF8, symSize: 0xC4 } + - { offset: 0x12B3C1, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI11CommandLineO8ModifierO_Tg5', symObjAddr: 0x4D4C, symBinAddr: 0x98CBC, symSize: 0x3AC } + - { offset: 0x12B510, size: 0x8, addend: 0x0, symName: '_$ss32_copyCollectionToContiguousArrayys0dE0Vy7ElementQzGxSlRzlFs0E5SliceVySSG_Tg5', symObjAddr: 0x52E8, symBinAddr: 0x99258, symSize: 0xCC } + - { offset: 0x12B6D1, size: 0x8, addend: 0x0, symName: '_$ss32_copyCollectionToContiguousArrayys0dE0Vy7ElementQzGxSlRzlFs0E5SliceVy7Penguin11POICategoryVG_Tg5', symObjAddr: 0x54A8, symBinAddr: 0x99418, symSize: 0x120 } + - { offset: 0x12B823, size: 0x8, addend: 0x0, symName: '_$sSSSgSgWOe', symObjAddr: 0x56F4, symBinAddr: 0x995E4, symSize: 0x14 } + - { offset: 0x12B8E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO14parsePrecision4fromSiSgSSSgSg_tKFZTf4nd_n', symObjAddr: 0x5708, symBinAddr: 0x995F8, symSize: 0x388 } + - { offset: 0x12BBEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSHAASQWb', symObjAddr: 0x5AD8, symBinAddr: 0x99980, symSize: 0x4 } + - { offset: 0x12BC00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOAESQAAWl', symObjAddr: 0x5ADC, symBinAddr: 0x99984, symSize: 0x40 } + - { offset: 0x12BC14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSHAASQWb', symObjAddr: 0x5B1C, symBinAddr: 0x999C4, symSize: 0x4 } + - { offset: 0x12BC28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOAESQAAWl', symObjAddr: 0x5B20, symBinAddr: 0x999C8, symSize: 0x40 } + - { offset: 0x12BC3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ScaleOSHAASQWb', symObjAddr: 0x5B60, symBinAddr: 0x99A08, symSize: 0x4 } + - { offset: 0x12BC50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ScaleOAESQAAWl', symObjAddr: 0x5B64, symBinAddr: 0x99A0C, symSize: 0x40 } + - { offset: 0x12BC64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwCP', symObjAddr: 0x5BA4, symBinAddr: 0x99A4C, symSize: 0x234 } + - { offset: 0x12BC78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwxx', symObjAddr: 0x5DD8, symBinAddr: 0x99C80, symSize: 0xC0 } + - { offset: 0x12BC8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwcp', symObjAddr: 0x5E98, symBinAddr: 0x99D40, symSize: 0x208 } + - { offset: 0x12BCA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwca', symObjAddr: 0x60A0, symBinAddr: 0x99F48, symSize: 0x2D0 } + - { offset: 0x12BCB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwtk', symObjAddr: 0x6370, symBinAddr: 0x9A218, symSize: 0x208 } + - { offset: 0x12BCC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwta', symObjAddr: 0x6578, symBinAddr: 0x9A420, symSize: 0x2C0 } + - { offset: 0x12BCDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwet', symObjAddr: 0x6838, symBinAddr: 0x9A6E0, symSize: 0xC } + - { offset: 0x12BCF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwst', symObjAddr: 0x68F8, symBinAddr: 0x9A7A0, symSize: 0xC } + - { offset: 0x12BD04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVMr', symObjAddr: 0x69AC, symBinAddr: 0x9A854, symSize: 0xD4 } + - { offset: 0x12BD18, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgMa', symObjAddr: 0x6A80, symBinAddr: 0x9A928, symSize: 0x54 } + - { offset: 0x12BD2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOwet', symObjAddr: 0x6AE4, symBinAddr: 0x9A97C, symSize: 0x90 } + - { offset: 0x12BD40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOwst', symObjAddr: 0x6B74, symBinAddr: 0x9AA0C, symSize: 0xB0 } + - { offset: 0x12BD54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOMa', symObjAddr: 0x6C28, symBinAddr: 0x9AABC, symSize: 0x10 } + - { offset: 0x12BD68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOMa', symObjAddr: 0x6D90, symBinAddr: 0x9AACC, symSize: 0x10 } + - { offset: 0x12BD7C, size: 0x8, addend: 0x0, symName: ___swift_memcpy17_8, symObjAddr: 0x6DA0, symBinAddr: 0x9AADC, symSize: 0x14 } + - { offset: 0x12BD90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOwet', symObjAddr: 0x6DB4, symBinAddr: 0x9AAF0, symSize: 0x20 } + - { offset: 0x12BDA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOwst', symObjAddr: 0x6DD4, symBinAddr: 0x9AB10, symSize: 0x30 } + - { offset: 0x12BDB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOwug', symObjAddr: 0x6E04, symBinAddr: 0x9AB40, symSize: 0x1C } + - { offset: 0x12BDCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOwui', symObjAddr: 0x6E24, symBinAddr: 0x9AB5C, symSize: 0x20 } + - { offset: 0x12BDE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOMa', symObjAddr: 0x6E44, symBinAddr: 0x9AB7C, symSize: 0x10 } + - { offset: 0x12BDF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ScaleOMa', symObjAddr: 0x6FA8, symBinAddr: 0x9AB8C, symSize: 0x10 } + - { offset: 0x12BE08, size: 0x8, addend: 0x0, symName: ___swift_memcpy57_8, symObjAddr: 0x6FE4, symBinAddr: 0x9AB9C, symSize: 0x1C } + - { offset: 0x12BE1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsVwet', symObjAddr: 0x7000, symBinAddr: 0x9ABB8, symSize: 0x20 } + - { offset: 0x12BE30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsVwst', symObjAddr: 0x7020, symBinAddr: 0x9ABD8, symSize: 0x3C } + - { offset: 0x12BE44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsVMa', symObjAddr: 0x705C, symBinAddr: 0x9AC14, symSize: 0x10 } + - { offset: 0x12BE58, size: 0x8, addend: 0x0, symName: '_$ss11AnyHashableVWOc', symObjAddr: 0x7074, symBinAddr: 0x9AC24, symSize: 0x3C } + - { offset: 0x12BE6C, size: 0x8, addend: 0x0, symName: '_$sSSWOh', symObjAddr: 0x7124, symBinAddr: 0x9AC60, symSize: 0x34 } + - { offset: 0x12BE80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOAEsAdAWl', symObjAddr: 0x7158, symBinAddr: 0x9AC94, symSize: 0x40 } + - { offset: 0x12BE94, size: 0x8, addend: 0x0, symName: '_$sSSSgSgWOy', symObjAddr: 0x7198, symBinAddr: 0x9ACD4, symSize: 0x14 } + - { offset: 0x12BEE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvg', symObjAddr: 0x0, symBinAddr: 0x941D4, symSize: 0x38 } + - { offset: 0x12BF0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvs', symObjAddr: 0x38, symBinAddr: 0x9420C, symSize: 0x38 } + - { offset: 0x12BF41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvM', symObjAddr: 0x70, symBinAddr: 0x94244, symSize: 0x10 } + - { offset: 0x12BFC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x9D4, symBinAddr: 0x94AE8, symSize: 0xC } + - { offset: 0x12C02A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSHAASH9hashValueSivgTW', symObjAddr: 0x9E0, symBinAddr: 0x94AF4, symSize: 0xC4 } + - { offset: 0x12C0D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xAA4, symBinAddr: 0x94BB8, symSize: 0xA0 } + - { offset: 0x12C13C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xB44, symBinAddr: 0x94C58, symSize: 0xC0 } + - { offset: 0x12C1FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xD3C, symBinAddr: 0x94E50, symSize: 0x9C } + - { offset: 0x12C2EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSHAASH9hashValueSivgTW', symObjAddr: 0xDD8, symBinAddr: 0x94EEC, symSize: 0x78 } + - { offset: 0x12C3A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE50, symBinAddr: 0x94F64, symSize: 0x54 } + - { offset: 0x12C412, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xEA4, symBinAddr: 0x94FB8, symSize: 0x74 } + - { offset: 0x12C880, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvg', symObjAddr: 0x84, symBinAddr: 0x94254, symSize: 0x30 } + - { offset: 0x12C8A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvs', symObjAddr: 0x178, symBinAddr: 0x94304, symSize: 0x30 } + - { offset: 0x12C8DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvM', symObjAddr: 0x1F0, symBinAddr: 0x94334, symSize: 0x28 } + - { offset: 0x12C8FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvg', symObjAddr: 0x21C, symBinAddr: 0x9435C, symSize: 0x30 } + - { offset: 0x12C923, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvs', symObjAddr: 0x24C, symBinAddr: 0x9438C, symSize: 0x30 } + - { offset: 0x12C958, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvM', symObjAddr: 0x27C, symBinAddr: 0x943BC, symSize: 0x28 } + - { offset: 0x12C97C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvg', symObjAddr: 0x2A8, symBinAddr: 0x943E4, symSize: 0x4C } + - { offset: 0x12C9A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvs', symObjAddr: 0x2F4, symBinAddr: 0x94430, symSize: 0x4C } + - { offset: 0x12C9D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvM', symObjAddr: 0x340, symBinAddr: 0x9447C, symSize: 0x28 } + - { offset: 0x12C9FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvg', symObjAddr: 0x36C, symBinAddr: 0x944A4, symSize: 0x30 } + - { offset: 0x12CA1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvs', symObjAddr: 0x39C, symBinAddr: 0x944D4, symSize: 0x2C } + - { offset: 0x12CA54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvM', symObjAddr: 0x3C8, symBinAddr: 0x94500, symSize: 0x28 } + - { offset: 0x12CA78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvg', symObjAddr: 0x3F4, symBinAddr: 0x94528, symSize: 0x3C } + - { offset: 0x12CA9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvs', symObjAddr: 0x430, symBinAddr: 0x94564, symSize: 0x40 } + - { offset: 0x12CAD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvM', symObjAddr: 0x470, symBinAddr: 0x945A4, symSize: 0x28 } + - { offset: 0x12CAF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvg', symObjAddr: 0x49C, symBinAddr: 0x945CC, symSize: 0x30 } + - { offset: 0x12CB1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvs', symObjAddr: 0x4CC, symBinAddr: 0x945FC, symSize: 0x2C } + - { offset: 0x12CB50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvM', symObjAddr: 0x4F8, symBinAddr: 0x94628, symSize: 0x28 } + - { offset: 0x12CB74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvg', symObjAddr: 0x524, symBinAddr: 0x94650, symSize: 0x44 } + - { offset: 0x12CB99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvs', symObjAddr: 0x568, symBinAddr: 0x94694, symSize: 0x44 } + - { offset: 0x12CBCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvM', symObjAddr: 0x5AC, symBinAddr: 0x946D8, symSize: 0x28 } + - { offset: 0x12CBF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvg', symObjAddr: 0x5D8, symBinAddr: 0x94700, symSize: 0x44 } + - { offset: 0x12CC17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvs', symObjAddr: 0x61C, symBinAddr: 0x94744, symSize: 0x44 } + - { offset: 0x12CC4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvM', symObjAddr: 0x660, symBinAddr: 0x94788, symSize: 0x28 } + - { offset: 0x12CC70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvg', symObjAddr: 0x68C, symBinAddr: 0x947B0, symSize: 0x44 } + - { offset: 0x12CC95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvs', symObjAddr: 0x6D0, symBinAddr: 0x947F4, symSize: 0x44 } + - { offset: 0x12CCCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvM', symObjAddr: 0x714, symBinAddr: 0x94838, symSize: 0x28 } + - { offset: 0x12CCEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvg', symObjAddr: 0x740, symBinAddr: 0x94860, symSize: 0x30 } + - { offset: 0x12CD13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvs', symObjAddr: 0x770, symBinAddr: 0x94890, symSize: 0x2C } + - { offset: 0x12CD48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvM', symObjAddr: 0x79C, symBinAddr: 0x948BC, symSize: 0x28 } + - { offset: 0x12CD6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvg', symObjAddr: 0x7C8, symBinAddr: 0x948E4, symSize: 0x30 } + - { offset: 0x12CD91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvs', symObjAddr: 0x7F8, symBinAddr: 0x94914, symSize: 0x2C } + - { offset: 0x12CDC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvM', symObjAddr: 0x824, symBinAddr: 0x94940, symSize: 0x28 } + - { offset: 0x12CDEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvg', symObjAddr: 0x850, symBinAddr: 0x94968, symSize: 0x28 } + - { offset: 0x12CE0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvs', symObjAddr: 0x878, symBinAddr: 0x94990, symSize: 0x44 } + - { offset: 0x12CE43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvM', symObjAddr: 0x8BC, symBinAddr: 0x949D4, symSize: 0x28 } + - { offset: 0x12CE73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatO8rawValueAESgSS_tcfC', symObjAddr: 0x8E8, symBinAddr: 0x949FC, symSize: 0x6C } + - { offset: 0x12CEAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatO8rawValueSSvg', symObjAddr: 0x954, symBinAddr: 0x94A68, symSize: 0x80 } + - { offset: 0x12CEE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xC04, symBinAddr: 0x94D18, symSize: 0xC } + - { offset: 0x12CEFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xC10, symBinAddr: 0x94D24, symSize: 0x84 } + - { offset: 0x12CF15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xC10, symBinAddr: 0x94D24, symSize: 0x84 } + - { offset: 0x12CF2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIO8rawValueAESgSS_tcfC', symObjAddr: 0xC94, symBinAddr: 0x94DA8, symSize: 0x74 } + - { offset: 0x12CF5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIO8rawValueSSvg', symObjAddr: 0xD08, symBinAddr: 0x94E1C, symSize: 0x34 } + - { offset: 0x12CFB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xF18, symBinAddr: 0x9502C, symSize: 0x70 } + - { offset: 0x12CFF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xF88, symBinAddr: 0x9509C, symSize: 0x38 } + - { offset: 0x12D011, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xF88, symBinAddr: 0x9509C, symSize: 0x38 } + - { offset: 0x12D039, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeO2eeoiySbAE_AEtFZ', symObjAddr: 0xFC0, symBinAddr: 0x950D4, symSize: 0x40 } + - { offset: 0x12D0AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV3topSdSgvg', symObjAddr: 0x1180, symBinAddr: 0x95114, symSize: 0xC } + - { offset: 0x12D0C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV3topSdSgvs', symObjAddr: 0x118C, symBinAddr: 0x95120, symSize: 0x10 } + - { offset: 0x12D0F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvg', symObjAddr: 0x11B0, symBinAddr: 0x95130, symSize: 0xC } + - { offset: 0x12D10A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvs', symObjAddr: 0x11BC, symBinAddr: 0x9513C, symSize: 0x10 } + - { offset: 0x12D13E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvM', symObjAddr: 0x11CC, symBinAddr: 0x9514C, symSize: 0x10 } + - { offset: 0x12D162, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvg', symObjAddr: 0x11E0, symBinAddr: 0x9515C, symSize: 0xC } + - { offset: 0x12D176, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvs', symObjAddr: 0x11EC, symBinAddr: 0x95168, symSize: 0x10 } + - { offset: 0x12D1AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvM', symObjAddr: 0x11FC, symBinAddr: 0x95178, symSize: 0x10 } + - { offset: 0x12D1CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvg', symObjAddr: 0x1210, symBinAddr: 0x95188, symSize: 0xC } + - { offset: 0x12D1E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvs', symObjAddr: 0x121C, symBinAddr: 0x95194, symSize: 0x10 } + - { offset: 0x12D216, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvM', symObjAddr: 0x122C, symBinAddr: 0x951A4, symSize: 0x10 } + - { offset: 0x12D240, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV3top4left6bottom5rightAESdSg_A3JtcfC', symObjAddr: 0x1240, symBinAddr: 0x951B4, symSize: 0x4C } + - { offset: 0x12D287, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV2eeoiySbAE_AEtFZ', symObjAddr: 0x128C, symBinAddr: 0x95200, symSize: 0x4 } + - { offset: 0x12D6D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x55C8, symBinAddr: 0x99538, symSize: 0xAC } + - { offset: 0x12DAF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PositionTrackerCfD', symObjAddr: 0x0, symBinAddr: 0x9ACF4, symSize: 0x10 } + - { offset: 0x12DB34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PositionTrackerCMa', symObjAddr: 0x10, symBinAddr: 0x9AD04, symSize: 0x20 } + - { offset: 0x12DD20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVWOc', symObjAddr: 0x910, symBinAddr: 0x9B538, symSize: 0x34 } + - { offset: 0x12DD3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVWOh', symObjAddr: 0x944, symBinAddr: 0x9B56C, symSize: 0x30 } + - { offset: 0x12DD64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwxx', symObjAddr: 0x9A0, symBinAddr: 0x9B59C, symSize: 0x28 } + - { offset: 0x12DD78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwcp', symObjAddr: 0x9C8, symBinAddr: 0x9B5C4, symSize: 0xAC } + - { offset: 0x12DD8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwca', symObjAddr: 0xA74, symBinAddr: 0x9B670, symSize: 0xE4 } + - { offset: 0x12DDA0, size: 0x8, addend: 0x0, symName: ___swift_memcpy144_8, symObjAddr: 0xB58, symBinAddr: 0x9B754, symSize: 0x2C } + - { offset: 0x12DDB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwta', symObjAddr: 0xB84, symBinAddr: 0x9B780, symSize: 0xB4 } + - { offset: 0x12DDC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwet', symObjAddr: 0xC38, symBinAddr: 0x9B834, symSize: 0x5C } + - { offset: 0x12DDDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwst', symObjAddr: 0xC94, symBinAddr: 0x9B890, symSize: 0x78 } + - { offset: 0x12DDF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVMa', symObjAddr: 0xD0C, symBinAddr: 0x9B908, symSize: 0x10 } + - { offset: 0x12DE04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOAFs0G3KeyAAWl', symObjAddr: 0xD84, symBinAddr: 0x9B918, symSize: 0x40 } + - { offset: 0x12DE18, size: 0x8, addend: 0x0, symName: '_$s12CoreGraphics7CGFloatVACSEAAWl', symObjAddr: 0xDC4, symBinAddr: 0x9B958, symSize: 0x40 } + - { offset: 0x12DE2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOwet', symObjAddr: 0xE14, symBinAddr: 0x9B998, symSize: 0x90 } + - { offset: 0x12DE40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOwst', symObjAddr: 0xEA4, symBinAddr: 0x9BA28, symSize: 0xB0 } + - { offset: 0x12DE54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOMa', symObjAddr: 0xF68, symBinAddr: 0x9BAD8, symSize: 0x10 } + - { offset: 0x12DE68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOSHAASQWb', symObjAddr: 0xF78, symBinAddr: 0x9BAE8, symSize: 0x4 } + - { offset: 0x12DE7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOAFSQAAWl', symObjAddr: 0xF7C, symBinAddr: 0x9BAEC, symSize: 0x40 } + - { offset: 0x12DE90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xFBC, symBinAddr: 0x9BB2C, symSize: 0x4 } + - { offset: 0x12DEA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xFC0, symBinAddr: 0x9BB30, symSize: 0x40 } + - { offset: 0x12DEB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1000, symBinAddr: 0x9BB70, symSize: 0x4 } + - { offset: 0x12DECC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x1004, symBinAddr: 0x9BB74, symSize: 0x40 } + - { offset: 0x12DEF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PositionTrackerCfD', symObjAddr: 0x0, symBinAddr: 0x9ACF4, symSize: 0x10 } + - { offset: 0x12DF3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x4F0, symBinAddr: 0x9B118, symSize: 0x28 } + - { offset: 0x12DF5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x518, symBinAddr: 0x9B140, symSize: 0x28 } + - { offset: 0x12DF87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLO11stringValueSSvg', symObjAddr: 0x30, symBinAddr: 0x9AD24, symSize: 0x130 } + - { offset: 0x12DFBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x160, symBinAddr: 0x9AE54, symSize: 0x28C } + - { offset: 0x12E000, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x4AC, symBinAddr: 0x9B0E0, symSize: 0x8 } + - { offset: 0x12E01B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x4B4, symBinAddr: 0x9B0E8, symSize: 0x24 } + - { offset: 0x12E044, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x4E4, symBinAddr: 0x9B10C, symSize: 0xC } + - { offset: 0x12E058, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x540, symBinAddr: 0x9B168, symSize: 0x14 } + - { offset: 0x12E0A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV4from12isNavigationAC7Penguin10PILocationC_SbtcfCTf4nnd_n', symObjAddr: 0x554, symBinAddr: 0x9B17C, symSize: 0x3BC } + - { offset: 0x12E10A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x1044, symBinAddr: 0x9BBB4, symSize: 0x320 } + - { offset: 0x12EA81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellCfETo', symObjAddr: 0x123C, symBinAddr: 0x9D110, symSize: 0xA8 } + - { offset: 0x12EAB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellCMa', symObjAddr: 0x12E4, symBinAddr: 0x9D1B8, symSize: 0x20 } + - { offset: 0x12EAC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA11PoiViewDataCSg_tFyycfU_TA', symObjAddr: 0x1378, symBinAddr: 0x9D1FC, symSize: 0x20 } + - { offset: 0x12EAD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA11PoiViewDataCSg_tFyycfU0_TA', symObjAddr: 0x1398, symBinAddr: 0x9D21C, symSize: 0x20 } + - { offset: 0x12EAEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA11PoiViewDataCSg_tFyycfU1_TA', symObjAddr: 0x13B8, symBinAddr: 0x9D23C, symSize: 0x20 } + - { offset: 0x12EC75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC13containerViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x9BED4, symSize: 0x10 } + - { offset: 0x12EC8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC13containerViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x9BED4, symSize: 0x10 } + - { offset: 0x12ECD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC13containerViewSo6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x9BEE4, symSize: 0x34 } + - { offset: 0x12ED22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC18phoneContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x9BF18, symSize: 0x10 } + - { offset: 0x12ED3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC18phoneContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x9BF18, symSize: 0x10 } + - { offset: 0x12ED7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC18phoneContainerViewAA06HapticI0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x9BF28, symSize: 0x34 } + - { offset: 0x12EDC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC10phoneLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x9BF5C, symSize: 0x10 } + - { offset: 0x12EDE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC10phoneLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x9BF5C, symSize: 0x10 } + - { offset: 0x12EE21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC10phoneLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x9BF6C, symSize: 0x34 } + - { offset: 0x12EE70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC20websiteContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x9BFA0, symSize: 0x10 } + - { offset: 0x12EE88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC20websiteContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x9BFA0, symSize: 0x10 } + - { offset: 0x12EEC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC20websiteContainerViewAA06HapticI0CSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x9BFB0, symSize: 0x34 } + - { offset: 0x12EF12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12websiteLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x9BFE4, symSize: 0x10 } + - { offset: 0x12EF2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12websiteLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x9BFE4, symSize: 0x10 } + - { offset: 0x12EF65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12websiteLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x9BFF4, symSize: 0x34 } + - { offset: 0x12EFB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC17mailContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x9C028, symSize: 0x10 } + - { offset: 0x12EFCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC17mailContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x9C028, symSize: 0x10 } + - { offset: 0x12F007, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC17mailContainerViewAA06HapticI0CSgvsTo', symObjAddr: 0x164, symBinAddr: 0x9C038, symSize: 0x34 } + - { offset: 0x12F056, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC9mailLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x9C06C, symSize: 0x10 } + - { offset: 0x12F06E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC9mailLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x9C06C, symSize: 0x10 } + - { offset: 0x12F0A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC9mailLabelSo7UILabelCSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x9C07C, symSize: 0x34 } + - { offset: 0x12F0F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x9C0B0, symSize: 0x10 } + - { offset: 0x12F110, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x9C0B0, symSize: 0x10 } + - { offset: 0x12F14B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x9C0C0, symSize: 0x34 } + - { offset: 0x12F1A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12awakeFromNibyyFTo', symObjAddr: 0x220, symBinAddr: 0x9C0F4, symSize: 0xB4 } + - { offset: 0x12F1F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC15prepareForReuseyyF', symObjAddr: 0x2D4, symBinAddr: 0x9C1A8, symSize: 0x9C } + - { offset: 0x12F282, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC15prepareForReuseyyFTo', symObjAddr: 0x370, symBinAddr: 0x9C244, symSize: 0x28 } + - { offset: 0x12F2C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA11PoiViewDataCSg_tF', symObjAddr: 0x398, symBinAddr: 0x9C26C, symSize: 0x5C4 } + - { offset: 0x12F520, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA13VenueViewDataCSg_tF', symObjAddr: 0x95C, symBinAddr: 0x9C830, symSize: 0x5C4 } + - { offset: 0x12F780, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0xFC0, symBinAddr: 0x9CE94, symSize: 0xFC } + - { offset: 0x12F7C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x10BC, symBinAddr: 0x9CF90, symSize: 0x48 } + - { offset: 0x12F7F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1104, symBinAddr: 0x9CFD8, symSize: 0xE0 } + - { offset: 0x12F82C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x11E4, symBinAddr: 0x9D0B8, symSize: 0x28 } + - { offset: 0x12F840, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellCfD', symObjAddr: 0x120C, symBinAddr: 0x9D0E0, symSize: 0x30 } + - { offset: 0x12FBE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC07contentF0AA06HapticF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x9D268, symSize: 0x10 } + - { offset: 0x12FF9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewCfETo', symObjAddr: 0xB74, symBinAddr: 0x9DDDC, symSize: 0x8C } + - { offset: 0x12FFC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewCMa', symObjAddr: 0xC00, symBinAddr: 0x9DE68, symSize: 0x20 } + - { offset: 0x12FFDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10commonInit33_80B0D1C32DEBDD219C999A651F3DBB75LLyyFyycfU_TA', symObjAddr: 0xCC8, symBinAddr: 0x9DEAC, symSize: 0x8 } + - { offset: 0x1300ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC07contentF0AA06HapticF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x9D268, symSize: 0x10 } + - { offset: 0x130105, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC07contentF0AA06HapticF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x9D268, symSize: 0x10 } + - { offset: 0x13014B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC07contentF0AA06HapticF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x9D278, symSize: 0x34 } + - { offset: 0x130204, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC010outerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x9D2AC, symSize: 0x10 } + - { offset: 0x13021C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC010outerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x9D2AC, symSize: 0x10 } + - { offset: 0x13025C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC010outerStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x9D2BC, symSize: 0x34 } + - { offset: 0x1302AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC09iconImageF0So07UIImageF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x9D2F0, symSize: 0x10 } + - { offset: 0x1302C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC09iconImageF0So07UIImageF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x9D2F0, symSize: 0x10 } + - { offset: 0x130303, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC09iconImageF0So07UIImageF0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x9D300, symSize: 0x34 } + - { offset: 0x130352, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC020locationDetailsStackF0So07UIStackF0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x9D334, symSize: 0x10 } + - { offset: 0x13036A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC020locationDetailsStackF0So07UIStackF0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x9D334, symSize: 0x10 } + - { offset: 0x1303A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC020locationDetailsStackF0So07UIStackF0CSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x9D344, symSize: 0x34 } + - { offset: 0x1303F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x9D378, symSize: 0x10 } + - { offset: 0x13040C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x9D378, symSize: 0x10 } + - { offset: 0x13044C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x9D388, symSize: 0x34 } + - { offset: 0x13049B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x9D3BC, symSize: 0x10 } + - { offset: 0x1304B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x9D3BC, symSize: 0x10 } + - { offset: 0x1304EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x9D3CC, symSize: 0x34 } + - { offset: 0x130529, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x198, symBinAddr: 0x9D400, symSize: 0xDC } + - { offset: 0x13055E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x274, symBinAddr: 0x9D4DC, symSize: 0x20 } + - { offset: 0x1305C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x294, symBinAddr: 0x9D4FC, symSize: 0xCC } + - { offset: 0x1305F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x360, symBinAddr: 0x9D5C8, symSize: 0x28 } + - { offset: 0x130677, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10commonInit33_80B0D1C32DEBDD219C999A651F3DBB75LLyyF', symObjAddr: 0x388, symBinAddr: 0x9D5F0, symSize: 0x474 } + - { offset: 0x130850, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10commonInit33_80B0D1C32DEBDD219C999A651F3DBB75LLyyFyycfU_', symObjAddr: 0x7FC, symBinAddr: 0x9DA64, symSize: 0x88 } + - { offset: 0x1308AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC11setLocationyy7Penguin10PILocationCSgF', symObjAddr: 0x884, symBinAddr: 0x9DAEC, symSize: 0x2C0 } + - { offset: 0x130950, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewCfD', symObjAddr: 0xB44, symBinAddr: 0x9DDAC, symSize: 0x30 } + - { offset: 0x130D38, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUI19LayoutGuideProviderA2cDP11widthAnchorSo17NSLayoutDimensionCvgTW', symObjAddr: 0x90, symBinAddr: 0x9DF44, symSize: 0x24 } + - { offset: 0x130D78, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUI19LayoutGuideProviderA2cDP12heightAnchorSo17NSLayoutDimensionCvgTW', symObjAddr: 0xB4, symBinAddr: 0x9DF68, symSize: 0x24 } + - { offset: 0x130E5C, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE17fp_safeAreaInsetsSo06UIEdgeI0VvgTo', symObjAddr: 0xD8, symBinAddr: 0x9DF8C, symSize: 0x8C } + - { offset: 0x130E9B, size: 0x8, addend: 0x0, symName: '_$sSo12UIScrollViewC8PenNavUIE19fp_contentOffsetMaxSo7CGPointVvg', symObjAddr: 0x164, symBinAddr: 0x9E018, symSize: 0xBC } + - { offset: 0x130FBA, size: 0x8, addend: 0x0, symName: '_$sSo24UISpringTimingParametersC8PenNavUIE16decelerationRate17frequencyResponse15initialVelocityAB12CoreGraphics7CGFloatV_AISo8CGVectorVtcfC', symObjAddr: 0x220, symBinAddr: 0x9E0D4, symSize: 0x84 } + - { offset: 0x1310B8, size: 0x8, addend: 0x0, symName: '_$sSo24UISpringTimingParametersC8PenNavUIE12dampingRatio17frequencyResponse15initialVelocityAB12CoreGraphics7CGFloatV_AISo8CGVectorVtcfC', symObjAddr: 0x2A4, symBinAddr: 0x9E158, symSize: 0x70 } + - { offset: 0x1311A6, size: 0x8, addend: 0x0, symName: '_$sSo12UIBezierPathC8PenNavUIE4path11roundedRect10appearanceABSo6CGRectV_AC17SurfaceAppearanceCtFZTf4nnd_n', symObjAddr: 0x344, symBinAddr: 0x9E1C8, symSize: 0x508 } + - { offset: 0x131A33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC14sharedInstance33_64C1391F925319CFCBF0C1DCA796F972LLACSgvpZ', symObjAddr: 0x8D60, symBinAddr: 0x364CB0, symSize: 0x0 } + - { offset: 0x131E21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC11serviceRateAA07ServiceG0CvpZ', symObjAddr: 0x41180, symBinAddr: 0x384BB0, symSize: 0x0 } + - { offset: 0x132952, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC11serviceRate_WZ', symObjAddr: 0x38C0, symBinAddr: 0xA1F9C, symSize: 0x1C } + - { offset: 0x132B52, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUIE4safexSgSi_tcisAA3LegV_Tg5', symObjAddr: 0x6068, symBinAddr: 0xA4744, symSize: 0xE8 } + - { offset: 0x132FBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCMU', symObjAddr: 0x8284, symBinAddr: 0xA6960, symSize: 0x8 } + - { offset: 0x132FD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCMa', symObjAddr: 0x828C, symBinAddr: 0xA6968, symSize: 0x38 } + - { offset: 0x132FE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCMr', symObjAddr: 0x82C4, symBinAddr: 0xA69A0, symSize: 0xBC } + - { offset: 0x132FFA, size: 0x8, addend: 0x0, symName: '_$s7Penguin5RouteVSgMa', symObjAddr: 0x8380, symBinAddr: 0xA6A5C, symSize: 0x54 } + - { offset: 0x133066, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVWOh', symObjAddr: 0x8B8C, symBinAddr: 0xA722C, symSize: 0x34 } + - { offset: 0x13307A, size: 0x8, addend: 0x0, symName: '_$s7Penguin5RouteVSgWOc', symObjAddr: 0x8C04, symBinAddr: 0xA7260, symSize: 0x48 } + - { offset: 0x13308E, size: 0x8, addend: 0x0, symName: '_$s7Penguin5RouteVSgWOf', symObjAddr: 0x8C4C, symBinAddr: 0xA72A8, symSize: 0x48 } + - { offset: 0x1330A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVWOb', symObjAddr: 0x8CE0, symBinAddr: 0xA72F0, symSize: 0x44 } + - { offset: 0x13312C, size: 0x8, addend: 0x0, symName: '_$sSTsE7forEachyyy7ElementQzKXEKFSay8PenNavUI3LegVG_Tg503$s8de63UI17NavigationManagerC10directionsSayAA14RouteDirectionVGvgyAA3G6VXEfU_SayAD0oP0VGTf1cn_n', symObjAddr: 0x0, symBinAddr: 0x9E6E0, symSize: 0xAC } + - { offset: 0x133B6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC10directionsSayAA14RouteDirectionVGvg', symObjAddr: 0x204, symBinAddr: 0x9E8E0, symSize: 0x314 } + - { offset: 0x134032, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC4legsSayAA3LegVGvM', symObjAddr: 0x1C0, symBinAddr: 0x9E8A0, symSize: 0x40 } + - { offset: 0x1340EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC14currentSubpath7Penguin7SubPathCSgvg', symObjAddr: 0x518, symBinAddr: 0x9EBF4, symSize: 0x104 } + - { offset: 0x134333, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC22isCurrentSubpathIndoorSbvg', symObjAddr: 0x61C, symBinAddr: 0x9ECF8, symSize: 0xD4 } + - { offset: 0x1343D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC21routeEndsInCurrentLegSbvg', symObjAddr: 0x6F0, symBinAddr: 0x9EDCC, symSize: 0x1C8 } + - { offset: 0x13455D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC23legEndsInCurrentSubpathSbvg', symObjAddr: 0x8B8, symBinAddr: 0x9EF94, symSize: 0x110 } + - { offset: 0x13471B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC15previousSubpath7Penguin7SubPathCSgvg', symObjAddr: 0x9C8, symBinAddr: 0x9F0A4, symSize: 0x1E4 } + - { offset: 0x134A9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC20previousSubpathInLeg7Penguin7SubPathCSgvg', symObjAddr: 0xBAC, symBinAddr: 0x9F288, symSize: 0x110 } + - { offset: 0x134C4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC16nextSubpathInLeg7Penguin7SubPathCSgvg', symObjAddr: 0xCBC, symBinAddr: 0x9F398, symSize: 0x110 } + - { offset: 0x134E11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC6sourceAA5PlaceCSgvM', symObjAddr: 0xDCC, symBinAddr: 0x9F4A8, symSize: 0xF8 } + - { offset: 0x134FA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC6sourceAA5PlaceCSgvM.resume.0', symObjAddr: 0xEC4, symBinAddr: 0x9F5A0, symSize: 0x168 } + - { offset: 0x135108, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC13combinedRoute7Penguin0G3LegVvg', symObjAddr: 0x102C, symBinAddr: 0x9F708, symSize: 0xCE4 } + - { offset: 0x135DA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC9pathNodesSaySiGvg', symObjAddr: 0x1D10, symBinAddr: 0xA03EC, symSize: 0x6B0 } + - { offset: 0x1368E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC15stopsDictionarySaySDySSypGGvg', symObjAddr: 0x23C0, symBinAddr: 0xA0A9C, symSize: 0x638 } + - { offset: 0x1371F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC15routeParametersSDySSypGvg', symObjAddr: 0x29F8, symBinAddr: 0xA10D4, symSize: 0xEC8 } + - { offset: 0x138186, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC14setDestinationyyAA5PlaceCSgF', symObjAddr: 0x38DC, symBinAddr: 0xA1FB8, symSize: 0xE8 } + - { offset: 0x13829C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC10resetRouteyyF', symObjAddr: 0x39C4, symBinAddr: 0xA20A0, symSize: 0xA4 } + - { offset: 0x13831D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC8setRouteyy7Penguin0G0VSgF', symObjAddr: 0x3A68, symBinAddr: 0xA2144, symSize: 0x1240 } + - { offset: 0x13965D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC28removeIsolatedGatesFromRouteyyF', symObjAddr: 0x4CA8, symBinAddr: 0xA3384, symSize: 0x164 } + - { offset: 0x13987E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC18removeMatchedStopsyyF', symObjAddr: 0x4E0C, symBinAddr: 0xA34E8, symSize: 0x125C } + - { offset: 0x13A9B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC13fixRouteNodesyyF', symObjAddr: 0x6150, symBinAddr: 0xA482C, symSize: 0x11CC } + - { offset: 0x13C395, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC7addStop_2atyAA5PlaceCSg_SiSgtF', symObjAddr: 0x731C, symBinAddr: 0xA59F8, symSize: 0x4F8 } + - { offset: 0x13C960, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC11getNextStopAA5PlaceCSgyF', symObjAddr: 0x7814, symBinAddr: 0xA5EF0, symSize: 0x278 } + - { offset: 0x13CBB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC10getSubPath5index7Penguin0gH0CSgSi_tF', symObjAddr: 0x7A8C, symBinAddr: 0xA6168, symSize: 0x188 } + - { offset: 0x13CD70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC15getSubPathIndex03subH0SiSg7Penguin0gH0C_tF', symObjAddr: 0x7C14, symBinAddr: 0xA62F0, symSize: 0xE4 } + - { offset: 0x13CE3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC34getFirstNodeTitleForOutdoorSubpath7subpathSSSg7Penguin7SubPathCSg_tF', symObjAddr: 0x7CF8, symBinAddr: 0xA63D4, symSize: 0x200 } + - { offset: 0x13D0A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC12logRouteLegsyyF', symObjAddr: 0x7EF8, symBinAddr: 0xA65D4, symSize: 0x314 } + - { offset: 0x13D4A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCfD', symObjAddr: 0x820C, symBinAddr: 0xA68E8, symSize: 0x78 } + - { offset: 0x13D4DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCACycfc', symObjAddr: 0x83D4, symBinAddr: 0xA6AB0, symSize: 0xD4 } + - { offset: 0x13D527, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC19removeIsolatedGates33_64C1391F925319CFCBF0C1DCA796F972LL8subpathsSay7Penguin7SubPathCGAJ_tFTf4nd_n', symObjAddr: 0x84A8, symBinAddr: 0xA6B84, symSize: 0x298 } + - { offset: 0x13D9B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC33getLastNodeTitleForOutdoorSubpath7subpath12currentIndexSSSg7Penguin7SubPathCSg_SiSgtFTf4ndn_n', symObjAddr: 0x8740, symBinAddr: 0xA6E1C, symSize: 0x410 } + - { offset: 0x13E073, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC9imageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xA7334, symSize: 0x20 } + - { offset: 0x13E24C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellCfETo', symObjAddr: 0x520, symBinAddr: 0xA7854, symSize: 0x50 } + - { offset: 0x13E27B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellCMa', symObjAddr: 0x570, symBinAddr: 0xA78A4, symSize: 0x20 } + - { offset: 0x13E29E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC03setE03url10completionySS_ySbcSgtFySo7UIImageCSgcfU_TA', symObjAddr: 0x6E0, symBinAddr: 0xA7A14, symSize: 0xC } + - { offset: 0x13E37D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC9imageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xA7334, symSize: 0x20 } + - { offset: 0x13E3DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC9imageViewSo07UIImageH0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xA7354, symSize: 0x14 } + - { offset: 0x13E41A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC12awakeFromNibyyF', symObjAddr: 0x34, symBinAddr: 0xA7368, symSize: 0xEC } + - { offset: 0x13E475, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC12awakeFromNibyyFTo', symObjAddr: 0x120, symBinAddr: 0xA7454, symSize: 0x28 } + - { offset: 0x13E4A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC03setE03url10completionySS_ySbcSgtFySo7UIImageCSgcfU_', symObjAddr: 0x148, symBinAddr: 0xA747C, symSize: 0x148 } + - { offset: 0x13E575, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC15prepareForReuseyyF', symObjAddr: 0x290, symBinAddr: 0xA75C4, symSize: 0xD0 } + - { offset: 0x13E5DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC15prepareForReuseyyFTo', symObjAddr: 0x360, symBinAddr: 0xA7694, symSize: 0x28 } + - { offset: 0x13E614, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x388, symBinAddr: 0xA76BC, symSize: 0xA0 } + - { offset: 0x13E66D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x428, symBinAddr: 0xA775C, symSize: 0xA0 } + - { offset: 0x13E6A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x4C8, symBinAddr: 0xA77FC, symSize: 0x28 } + - { offset: 0x13E6B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellCfD', symObjAddr: 0x4F0, symBinAddr: 0xA7824, symSize: 0x30 } + - { offset: 0x13E6EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC03setE03url10completionySS_ySbcSgtFTf4ndn_n', symObjAddr: 0x590, symBinAddr: 0xA78C4, symSize: 0x100 } + - { offset: 0x13EAF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0AA014IntrinsicTableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xA7A20, symSize: 0x20 } + - { offset: 0x13ED79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCfE', symObjAddr: 0x9AC, symBinAddr: 0xA83CC, symSize: 0x64 } + - { offset: 0x13EDA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCfETo', symObjAddr: 0xA40, symBinAddr: 0xA8460, symSize: 0x70 } + - { offset: 0x13EDD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCMa', symObjAddr: 0xAB0, symBinAddr: 0xA84D0, symSize: 0x20 } + - { offset: 0x13EE3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0xAD0, symBinAddr: 0xA84F0, symSize: 0x68 } + - { offset: 0x13EF7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0xB38, symBinAddr: 0xA8558, symSize: 0x1EC } + - { offset: 0x13F107, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyAA8FavoriteCcfU_', symObjAddr: 0xD24, symBinAddr: 0xA8744, symSize: 0x98 } + - { offset: 0x13F19F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xDBC, symBinAddr: 0xA87DC, symSize: 0xB8 } + - { offset: 0x13F1ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_41trailingSwipeActionsConfigurationForRowAtSo07UISwipejK0CSgSo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0xE74, symBinAddr: 0xA8894, symSize: 0x298 } + - { offset: 0x13F30A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_41trailingSwipeActionsConfigurationForRowAtSo07UISwipejK0CSgSo07UITableE0C_10Foundation9IndexPathVtFySo18UIContextualActionC_So6UIViewCySbctcfU_', symObjAddr: 0x110C, symBinAddr: 0xA8B2C, symSize: 0x21C } + - { offset: 0x13F4E5, size: 0x8, addend: 0x0, symName: '_$sSo18UIContextualActionCSo6UIViewCSbIegy_Iegggg_AbDSbIeyBy_IeyByyy_TR', symObjAddr: 0x1328, symBinAddr: 0xA8D48, symSize: 0xB4 } + - { offset: 0x13F4FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_41trailingSwipeActionsConfigurationForRowAtSo07UISwipejK0CSgSo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x13DC, symBinAddr: 0xA8DFC, symSize: 0xB8 } + - { offset: 0x13F519, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0x1494, symBinAddr: 0xA8EB4, symSize: 0x118 } + - { offset: 0x13F63A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x15AC, symBinAddr: 0xA8FCC, symSize: 0xB0 } + - { offset: 0x13F665, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x165C, symBinAddr: 0xA907C, symSize: 0x14 } + - { offset: 0x13F6AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x1670, symBinAddr: 0xA9090, symSize: 0x24 } + - { offset: 0x13F723, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC10setupPanelyyF', symObjAddr: 0x1694, symBinAddr: 0xA90B4, symSize: 0xA4 } + - { offset: 0x13F79F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC10setupPanelyyFTo', symObjAddr: 0x1738, symBinAddr: 0xA9158, symSize: 0x28 } + - { offset: 0x13F7DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x1760, symBinAddr: 0xA9180, symSize: 0x224 } + - { offset: 0x13F9DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x1984, symBinAddr: 0xA93A4, symSize: 0x50 } + - { offset: 0x13FA0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x1A50, symBinAddr: 0xA93F4, symSize: 0xC } + - { offset: 0x13FA4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x1A5C, symBinAddr: 0xA9400, symSize: 0x4 } + - { offset: 0x13FA6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x1A5C, symBinAddr: 0xA9400, symSize: 0x4 } + - { offset: 0x13FA7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4dnn_n', symObjAddr: 0x1B08, symBinAddr: 0xA9404, symSize: 0x24C } + - { offset: 0x13FBDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC25userLocationStatusChangedyyFTf4d_n', symObjAddr: 0x1D54, symBinAddr: 0xA9650, symSize: 0x178 } + - { offset: 0x13FD1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD012withLocationySb_tFySayAA8FavoriteCGcfU_TA', symObjAddr: 0x1F34, symBinAddr: 0xA97EC, symSize: 0x8 } + - { offset: 0x13FD33, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1F68, symBinAddr: 0xA9818, symSize: 0x10 } + - { offset: 0x13FD47, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1F78, symBinAddr: 0xA9828, symSize: 0x8 } + - { offset: 0x13FD5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_41trailingSwipeActionsConfigurationForRowAtSo07UISwipejK0CSgSo07UITableE0C_10Foundation9IndexPathVtFySo18UIContextualActionC_So6UIViewCySbctcfU_TA', symObjAddr: 0x2010, symBinAddr: 0xA98B0, symSize: 0x7C } + - { offset: 0x13FD6F, size: 0x8, addend: 0x0, symName: '_$sSo18UIContextualActionCMa', symObjAddr: 0x208C, symBinAddr: 0xA992C, symSize: 0x44 } + - { offset: 0x13FD8E, size: 0x8, addend: 0x0, symName: '_$sSbIeyBy_SbIegy_TRTA', symObjAddr: 0x20F4, symBinAddr: 0xA9994, symSize: 0x14 } + - { offset: 0x13FDB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyAA8FavoriteCcfU_TA', symObjAddr: 0x2108, symBinAddr: 0xA99A8, symSize: 0x8 } + - { offset: 0x13FDCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11viewDidLoadyyFySayAA8FavoriteCGcfU_TA', symObjAddr: 0x2110, symBinAddr: 0xA99B0, symSize: 0x8 } + - { offset: 0x13FFF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0AA014IntrinsicTableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xA7A20, symSize: 0x20 } + - { offset: 0x140053, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0AA014IntrinsicTableE0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xA7A40, symSize: 0x14 } + - { offset: 0x1401A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11removeImageSo7UIImageCSgvpfiAGyXEfU_', symObjAddr: 0x34, symBinAddr: 0xA7A54, symSize: 0x26C } + - { offset: 0x1403A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11viewDidLoadyyF', symObjAddr: 0x2A0, symBinAddr: 0xA7CC0, symSize: 0x198 } + - { offset: 0x1404E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11viewDidLoadyyFySayAA8FavoriteCGcfU_', symObjAddr: 0x438, symBinAddr: 0xA7E58, symSize: 0xF8 } + - { offset: 0x140588, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x530, symBinAddr: 0xA7F50, symSize: 0x28 } + - { offset: 0x1405B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC12cancelButtonyySo8UIButtonCFTo', symObjAddr: 0x558, symBinAddr: 0xA7F78, symSize: 0x38 } + - { offset: 0x1405E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC13registerCellsyyF', symObjAddr: 0x590, symBinAddr: 0xA7FB0, symSize: 0x1E0 } + - { offset: 0x140761, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x770, symBinAddr: 0xA8190, symSize: 0xF0 } + - { offset: 0x1407A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x860, symBinAddr: 0xA8280, symSize: 0x60 } + - { offset: 0x1407EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x8C0, symBinAddr: 0xA82E0, symSize: 0xC4 } + - { offset: 0x14081D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x984, symBinAddr: 0xA83A4, symSize: 0x28 } + - { offset: 0x140831, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCfD', symObjAddr: 0xA10, symBinAddr: 0xA8430, symSize: 0x30 } + - { offset: 0x140DE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC05imageF033_23A362561214FEFFEA9B414ED0F52193LLSo07UIImageF0Cvg', symObjAddr: 0x0, symBinAddr: 0xA99C4, symSize: 0xAC } + - { offset: 0x140F69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewCfETo', symObjAddr: 0x648, symBinAddr: 0xAA00C, symSize: 0x38 } + - { offset: 0x140F98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewCMa', symObjAddr: 0x680, symBinAddr: 0xAA044, symSize: 0x20 } + - { offset: 0x14107B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC05imageF033_23A362561214FEFFEA9B414ED0F52193LLSo07UIImageF0Cvg', symObjAddr: 0x0, symBinAddr: 0xA99C4, symSize: 0xAC } + - { offset: 0x141123, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC04starF033_23A362561214FEFFEA9B414ED0F52193LLSo6UIViewCvg', symObjAddr: 0xAC, symBinAddr: 0xA9A70, symSize: 0x98 } + - { offset: 0x141225, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC5imageACSo7UIImageCSg_tcfc', symObjAddr: 0x144, symBinAddr: 0xA9B08, symSize: 0x408 } + - { offset: 0x1413FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x54C, symBinAddr: 0xA9F10, symSize: 0xA0 } + - { offset: 0x14145F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x5EC, symBinAddr: 0xA9FB0, symSize: 0x2C } + - { offset: 0x1414BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewCfD', symObjAddr: 0x618, symBinAddr: 0xA9FDC, symSize: 0x30 } + - { offset: 0x141862, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC6shared_WZ', symObjAddr: 0x60, symBinAddr: 0xAA064, symSize: 0x6C } + - { offset: 0x141886, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC6sharedACvpZ', symObjAddr: 0x9E18, symBinAddr: 0x384C10, symSize: 0x0 } + - { offset: 0x14194A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC6shared_WZ', symObjAddr: 0x60, symBinAddr: 0xAA064, symSize: 0x6C } + - { offset: 0x141A75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderCMa', symObjAddr: 0x8D4, symBinAddr: 0xAA8D8, symSize: 0x20 } + - { offset: 0x141A89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC19downloadingProgress_8fileNameySf_SStFTo', symObjAddr: 0x8F4, symBinAddr: 0xAA8F8, symSize: 0x4 } + - { offset: 0x141AA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC17downloadSucceededyySSF', symObjAddr: 0x8F8, symBinAddr: 0xAA8FC, symSize: 0x230 } + - { offset: 0x141CA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC17downloadSucceededyySSFTo', symObjAddr: 0xB28, symBinAddr: 0xAAB2C, symSize: 0x54 } + - { offset: 0x141CC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tFyyYbcfU_TA', symObjAddr: 0xCA0, symBinAddr: 0xAAB80, symSize: 0x8 } + - { offset: 0x141CD7, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xCA8, symBinAddr: 0xAAB88, symSize: 0x10 } + - { offset: 0x141CEB, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xCB8, symBinAddr: 0xAAB98, symSize: 0x8 } + - { offset: 0x141CFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tFyyYbcfU_yyScMYccfU_TA', symObjAddr: 0xD28, symBinAddr: 0xAABC4, symSize: 0x8 } + - { offset: 0x141EA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tF', symObjAddr: 0xCC, symBinAddr: 0xAA0D0, symSize: 0x32C } + - { offset: 0x142143, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tFyyYbcfU_', symObjAddr: 0x3F8, symBinAddr: 0xAA3FC, symSize: 0x1B0 } + - { offset: 0x142198, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tFyyYbcfU_yyScMYccfU_', symObjAddr: 0x5A8, symBinAddr: 0xAA5AC, symSize: 0xBC } + - { offset: 0x142249, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC22appendOperationToQueue33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tF', symObjAddr: 0x664, symBinAddr: 0xAA668, symSize: 0x234 } + - { offset: 0x1424E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderCfD', symObjAddr: 0x898, symBinAddr: 0xAA89C, symSize: 0x3C } + - { offset: 0x1428BE, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE9fontStyleSSvsTo', symObjAddr: 0x0, symBinAddr: 0xAABD4, symSize: 0x54 } + - { offset: 0x14295F, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE9fontStyleSSvs', symObjAddr: 0x54, symBinAddr: 0xAAC28, symSize: 0x184 } + - { offset: 0x142A61, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE19textColorIdentifierSivgTo', symObjAddr: 0x1D8, symBinAddr: 0xAADAC, symSize: 0x8 } + - { offset: 0x142A7D, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE19textColorIdentifierSivsTo', symObjAddr: 0x1E0, symBinAddr: 0xAADB4, symSize: 0x38 } + - { offset: 0x142A99, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x224, symBinAddr: 0xAADEC, symSize: 0x8 } + - { offset: 0x142AB5, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x22C, symBinAddr: 0xAADF4, symSize: 0x38 } + - { offset: 0x142AD1, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE19tintColorIdentifierSivgTo', symObjAddr: 0x270, symBinAddr: 0xAAE2C, symSize: 0x8 } + - { offset: 0x142AED, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE19tintColorIdentifierSivsTo', symObjAddr: 0x278, symBinAddr: 0xAAE34, symSize: 0x38 } + - { offset: 0x142B33, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE26placeholderLocalizationKeySSvsTo', symObjAddr: 0x3F0, symBinAddr: 0xAAFA0, symSize: 0x94 } + - { offset: 0x1437F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiCMa', symObjAddr: 0x3738, symBinAddr: 0xAE770, symSize: 0x20 } + - { offset: 0x143859, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV11removeValue6forKeyq_Sgx_tFSS_SSTg5', symObjAddr: 0x3758, symBinAddr: 0xAE790, symSize: 0xD4 } + - { offset: 0x143945, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV11removeValue6forKeyq_Sgx_tFSS_ypTg5', symObjAddr: 0x382C, symBinAddr: 0xAE864, symSize: 0xD0 } + - { offset: 0x143A31, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV11removeValue6forKeyq_Sgx_tFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x38FC, symBinAddr: 0xAE934, symSize: 0x84 } + - { offset: 0x143B00, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV11removeValue6forKeyq_Sgx_tFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0x3980, symBinAddr: 0xAE9B8, symSize: 0xBC } + - { offset: 0x143BD6, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x3A3C, symBinAddr: 0xAEA74, symSize: 0x260 } + - { offset: 0x143C9E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI18FloatingPanelStateC_SaySo18NSLayoutConstraintCGTg5', symObjAddr: 0x3C9C, symBinAddr: 0xAECD4, symSize: 0x18C } + - { offset: 0x143D51, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSS_SSTg5', symObjAddr: 0x3E28, symBinAddr: 0xAEE60, symSize: 0x1AC } + - { offset: 0x143DF1, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSS_ypTg5', symObjAddr: 0x3FD4, symBinAddr: 0xAF00C, symSize: 0x1AC } + - { offset: 0x143EB2, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x4180, symBinAddr: 0xAF1B8, symSize: 0x16C } + - { offset: 0x143F67, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x42EC, symBinAddr: 0xAF324, symSize: 0x1F4 } + - { offset: 0x1440A8, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI9FontStyleO_So6UIFontCTg5', symObjAddr: 0x44E0, symBinAddr: 0xAF518, symSize: 0x318 } + - { offset: 0x1441D3, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSi_8PenNavUI5ColorVTg5', symObjAddr: 0x483C, symBinAddr: 0xAF874, symSize: 0x16C } + - { offset: 0x14427D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x49A8, symBinAddr: 0xAF9E0, symSize: 0x1A0 } + - { offset: 0x14433D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI3DOMO10StyleSheetV8SelectorO_AK22PresentationAttributesVTg5', symObjAddr: 0x4B48, symBinAddr: 0xAFB80, symSize: 0x224 } + - { offset: 0x14446B, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0x4D6C, symBinAddr: 0xAFDA4, symSize: 0x1AC } + - { offset: 0x144563, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC6search10parameters17completionHandlerSo20NSURLSessionDataTaskCSgSDySSypG_ySayAA7POIDataCGSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x5A64, symBinAddr: 0xB0A9C, symSize: 0x1C } + - { offset: 0x144577, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getFavorites10parameters17completionHandlerySDySSypG_ySayAA8FavoriteCGctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x5E38, symBinAddr: 0xB0DD8, symSize: 0x38 } + - { offset: 0x14458B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getFavorites10parameters17completionHandlerySDySSypG_ySayAA8FavoriteCGctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_TA', symObjAddr: 0x5EB4, symBinAddr: 0xB0E10, symSize: 0x64 } + - { offset: 0x14459F, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x5F18, symBinAddr: 0xB0E74, symSize: 0x10 } + - { offset: 0x1445B3, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x5F28, symBinAddr: 0xB0E84, symSize: 0x8 } + - { offset: 0x1445C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC26getGatesSortedByTravelTime4from2to25withNavigationAvoidOption10completionyAA5PlaceC_7Penguin5VenueCSbySayAA0T4GateVGctFyAK10PIResponseOyAA03GettF17DistancesResponseVSgGcfU_TA', symObjAddr: 0x5F88, symBinAddr: 0xB0E8C, symSize: 0x38 } + - { offset: 0x1445DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVACSeAAWl', symObjAddr: 0x5FC0, symBinAddr: 0xB0EC4, symSize: 0x40 } + - { offset: 0x1445EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVACSEAAWl', symObjAddr: 0x6000, symBinAddr: 0xB0F04, symSize: 0x40 } + - { offset: 0x144603, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVWOc', symObjAddr: 0x6060, symBinAddr: 0xB0F64, symSize: 0x3C } + - { offset: 0x144617, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC28convertDeepLinkToHttpsScheme04deepG010completionySS_ySSSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x609C, symBinAddr: 0xB0FA0, symSize: 0x38 } + - { offset: 0x144784, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getAllVenuesInfo14lastUpdateDate17completionHandlerySS_ySayAA9VenueDataCG_SSSgtctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x7500, symBinAddr: 0xB2388, symSize: 0x8 } + - { offset: 0x144798, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getVenues17completionHandleryySayAA13VenueCardDataVGc_tFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x7508, symBinAddr: 0xB2390, symSize: 0x8 } + - { offset: 0x1447AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseVACSeAAWl', symObjAddr: 0x7510, symBinAddr: 0xB2398, symSize: 0x40 } + - { offset: 0x1447C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAmenties17completionHandleryySayAA9AmenitiesVGc_tFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x76E0, symBinAddr: 0xB2568, symSize: 0x30 } + - { offset: 0x1447D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getDistance2to10completionyAA5PlaceCSg_ySdSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x7710, symBinAddr: 0xB2598, symSize: 0x38 } + - { offset: 0x1447E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getEdgeAds9paramters17completionHandlerySDySSypG_ySayAA13MessageDetailCGctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x7A7C, symBinAddr: 0xB2904, symSize: 0x30 } + - { offset: 0x1447FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getFloorAds9paramters17completionHandlerySDySSypG_ySayAA13MessageDetailCGctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x7AAC, symBinAddr: 0xB2934, symSize: 0x30 } + - { offset: 0x144810, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getObjects6floors10completionSo20NSURLSessionDataTaskCSgSay7Penguin5FloorCSgG_ySayAA10LiveObjectVGSgctFyAJ10PIResponseOyypSgGcfU1_TA', symObjAddr: 0x7E90, symBinAddr: 0xB2D18, symSize: 0x38 } + - { offset: 0x144824, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVACSeAAWl', symObjAddr: 0x7F98, symBinAddr: 0xB2E20, symSize: 0x40 } + - { offset: 0x144838, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVACSEAAWl', symObjAddr: 0x7FD8, symBinAddr: 0xB2E60, symSize: 0x40 } + - { offset: 0x14484C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC15getPlaceDetails10parameters17completionHandlerySDySSypG_yAA7POIDataCSgcSgtFy7Penguin10PIResponseOyAA18GetPoIByIdResponseCSgGcfU_TA', symObjAddr: 0x801C, symBinAddr: 0xB2EA4, symSize: 0x8 } + - { offset: 0x144860, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseCSgSgWOe', symObjAddr: 0x8034, symBinAddr: 0xB2EAC, symSize: 0x10 } + - { offset: 0x144874, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getCampusDetails10parameters10completionySDySSypG_yAA9VenueDataCSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x8044, symBinAddr: 0xB2EBC, symSize: 0x8 } + - { offset: 0x144888, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getCampusDetails10parameters10completionySDySSypG_yAA9VenueDataCSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_TA', symObjAddr: 0x8050, symBinAddr: 0xB2EC8, symSize: 0x28 } + - { offset: 0x1448C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x8078, symBinAddr: 0xB2EF0, symSize: 0x8 } + - { offset: 0x1448D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_TA', symObjAddr: 0x80AC, symBinAddr: 0xB2F24, symSize: 0xC } + - { offset: 0x1448EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAppFonts17completionHandlerSo20NSURLSessionDataTaskCSgySayAA0F4FontCG_10Foundation0K0VSgtc_tFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x80B8, symBinAddr: 0xB2F30, symSize: 0x8 } + - { offset: 0x144900, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI7AppFontCGSayxGSesSeRzlWl', symObjAddr: 0x80C0, symBinAddr: 0xB2F38, symSize: 0x80 } + - { offset: 0x144914, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getColors17completionHandlerSo20NSURLSessionDataTaskCSgyAA0F8ResponseVSg_10Foundation0J0VSgtc_tFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x8180, symBinAddr: 0xB2FB8, symSize: 0x8 } + - { offset: 0x144928, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVACSeAAWl', symObjAddr: 0x8188, symBinAddr: 0xB2FC0, symSize: 0x40 } + - { offset: 0x14493C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC14updateFavorite10parameters17completionHandlerySDySSypG_ySbcSgtFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x81C8, symBinAddr: 0xB3000, symSize: 0x18 } + - { offset: 0x144950, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getPlaces10parameters17completionHandlerSo20NSURLSessionDataTaskCSgSDySSypG_ySayAA7POIDataCGSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x820C, symBinAddr: 0xB3044, symSize: 0x20 } + - { offset: 0x144964, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC19getPoiByReferenceId_10completionySS_yAA26GetPoIByRefIDResultElementVSgctFy7Penguin10PIResponseOyAA0klmnO0VSgGcfU_TA', symObjAddr: 0x8268, symBinAddr: 0xB3064, symSize: 0x8 } + - { offset: 0x144978, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVACSeAAWl', symObjAddr: 0x8270, symBinAddr: 0xB306C, symSize: 0x40 } + - { offset: 0x14498C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVACSEAAWl', symObjAddr: 0x82B0, symBinAddr: 0xB30AC, symSize: 0x40 } + - { offset: 0x1449A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVSgWOe', symObjAddr: 0x82F0, symBinAddr: 0xB30EC, symSize: 0x14 } + - { offset: 0x1449B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVSgSgWOe', symObjAddr: 0x8304, symBinAddr: 0xB3100, symSize: 0x10 } + - { offset: 0x1449C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVSgWOe', symObjAddr: 0x8314, symBinAddr: 0xB3110, symSize: 0x10 } + - { offset: 0x14517F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC26getGatesSortedByTravelTime4from2to25withNavigationAvoidOption10completionyAA5PlaceC_7Penguin5VenueCSbySayAA0T4GateVGctFyAK10PIResponseOyAA03GettF17DistancesResponseVSgGcfU_yyScMYccfU_', symObjAddr: 0x0, symBinAddr: 0xAB03C, symSize: 0x358 } + - { offset: 0x1454CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getColors17completionHandlerSo20NSURLSessionDataTaskCSgyAA0F8ResponseVSg_10Foundation0J0VSgtc_tFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x358, symBinAddr: 0xAB394, symSize: 0x298 } + - { offset: 0x14558F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAppFonts17completionHandlerSo20NSURLSessionDataTaskCSgySayAA0F4FontCG_10Foundation0K0VSgtc_tFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x5F0, symBinAddr: 0xAB62C, symSize: 0x26C } + - { offset: 0x14565C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getDistance2to10completionyAA5PlaceCSg_ySdSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_', symObjAddr: 0xAC0, symBinAddr: 0xABAFC, symSize: 0x338 } + - { offset: 0x1457B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC28convertDeepLinkToHttpsScheme04deepG010completionySS_ySSSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_', symObjAddr: 0xDF8, symBinAddr: 0xABE34, symSize: 0x314 } + - { offset: 0x145863, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getVenues17completionHandleryySayAA13VenueCardDataVGc_tFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x110C, symBinAddr: 0xAC148, symSize: 0x18C } + - { offset: 0x1458E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getAllVenuesInfo14lastUpdateDate17completionHandlerySS_ySayAA9VenueDataCG_SSSgtctFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x1298, symBinAddr: 0xAC2D4, symSize: 0x29C } + - { offset: 0x1459AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctF', symObjAddr: 0x1704, symBinAddr: 0xAC740, symSize: 0x188 } + - { offset: 0x145B10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x188C, symBinAddr: 0xAC8C8, symSize: 0x36C } + - { offset: 0x145BD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_', symObjAddr: 0x1BF8, symBinAddr: 0xACC34, symSize: 0xAC } + - { offset: 0x145D38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getCampusDetails10parameters10completionySDySSypG_yAA9VenueDataCSgctF', symObjAddr: 0x1CA4, symBinAddr: 0xACCE0, symSize: 0x188 } + - { offset: 0x145E99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getCampusDetails10parameters10completionySDySSypG_yAA9VenueDataCSgctFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x1E2C, symBinAddr: 0xACE68, symSize: 0x364 } + - { offset: 0x145FA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC24submitNavigationFeedbackyyFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x2190, symBinAddr: 0xAD1CC, symSize: 0x4C } + - { offset: 0x145FF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC15getPlaceDetails10parameters17completionHandlerySDySSypG_yAA7POIDataCSgcSgtF', symObjAddr: 0x2418, symBinAddr: 0xAD454, symSize: 0x1E8 } + - { offset: 0x146153, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC15getPlaceDetails10parameters17completionHandlerySDySSypG_yAA7POIDataCSgcSgtFy7Penguin10PIResponseOyAA18GetPoIByIdResponseCSgGcfU_', symObjAddr: 0x2600, symBinAddr: 0xAD63C, symSize: 0x2BC } + - { offset: 0x1462E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC19getPoiByReferenceId_10completionySS_yAA26GetPoIByRefIDResultElementVSgctF', symObjAddr: 0x2BD0, symBinAddr: 0xADC0C, symSize: 0x248 } + - { offset: 0x146508, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC19getPoiByReferenceId_10completionySS_yAA26GetPoIByRefIDResultElementVSgctFy7Penguin10PIResponseOyAA0klmnO0VSgGcfU_', symObjAddr: 0x2E18, symBinAddr: 0xADE54, symSize: 0x198 } + - { offset: 0x146630, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC18setNavigationEvent010navigationG010httpMethodySDySSypGSg_7Penguin04HttpJ0OtF', symObjAddr: 0x2FB0, symBinAddr: 0xADFEC, symSize: 0xF8 } + - { offset: 0x14679A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC7logData6method4dataySS_SDySSypGSgtF', symObjAddr: 0x30A8, symBinAddr: 0xAE0E4, symSize: 0x16C } + - { offset: 0x1468F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getObjects6floors10completionSo20NSURLSessionDataTaskCSgSay7Penguin5FloorCSgG_ySayAA10LiveObjectVGSgctF', symObjAddr: 0x3218, symBinAddr: 0xAE250, symSize: 0x3D8 } + - { offset: 0x146EB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getObjects6floors10completionSo20NSURLSessionDataTaskCSgSay7Penguin5FloorCSgG_ySayAA10LiveObjectVGSgctFyAJ10PIResponseOyypSgGcfU1_yyScMYccfU_', symObjAddr: 0x35F0, symBinAddr: 0xAE628, symSize: 0x10C } + - { offset: 0x146F5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiCfD', symObjAddr: 0x36FC, symBinAddr: 0xAE734, symSize: 0x3C } + - { offset: 0x147051, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC26getGatesSortedByTravelTime4from2to25withNavigationAvoidOption10completionyAA5PlaceC_7Penguin5VenueCSbySayAA0T4GateVGctFTf4nnnnd_n', symObjAddr: 0x4F18, symBinAddr: 0xAFF50, symSize: 0x778 } + - { offset: 0x1475CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC28convertDeepLinkToHttpsScheme04deepG010completionySS_ySSSgctFTf4nnd_n', symObjAddr: 0x5690, symBinAddr: 0xB06C8, symSize: 0x224 } + - { offset: 0x14779C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC6search10parameters17completionHandlerSo20NSURLSessionDataTaskCSgSDySSypG_ySayAA7POIDataCGSgctFTf4nnd_n', symObjAddr: 0x58B4, symBinAddr: 0xB08EC, symSize: 0x18C } + - { offset: 0x1478D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getPlaces10parameters17completionHandlerSo20NSURLSessionDataTaskCSgSDySSypG_ySayAA7POIDataCGSgctFTf4nnd_n', symObjAddr: 0x5B18, symBinAddr: 0xB0AB8, symSize: 0x18C } + - { offset: 0x147A3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getFavorites10parameters17completionHandlerySDySSypG_ySayAA8FavoriteCGctFTf4nnd_n', symObjAddr: 0x5CA4, symBinAddr: 0xB0C44, symSize: 0x194 } + - { offset: 0x147B41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getColors17completionHandlerSo20NSURLSessionDataTaskCSgyAA0F8ResponseVSg_10Foundation0J0VSgtc_tFTf4nd_n', symObjAddr: 0x6378, symBinAddr: 0xB1200, symSize: 0x18C } + - { offset: 0x147C63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAppFonts17completionHandlerSo20NSURLSessionDataTaskCSgySayAA0F4FontCG_10Foundation0K0VSgtc_tFTf4nd_n', symObjAddr: 0x6504, symBinAddr: 0xB138C, symSize: 0x18C } + - { offset: 0x147DD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getDistance2to10completionyAA5PlaceCSg_ySdSgctFTf4nnd_n', symObjAddr: 0x6690, symBinAddr: 0xB1518, symSize: 0xA18 } + - { offset: 0x1485FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getVenues17completionHandleryySayAA13VenueCardDataVGc_tFTf4nd_n', symObjAddr: 0x70A8, symBinAddr: 0xB1F30, symSize: 0x22C } + - { offset: 0x148782, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getAllVenuesInfo14lastUpdateDate17completionHandlerySS_ySayAA9VenueDataCG_SSSgtctFTf4nnd_n', symObjAddr: 0x72D4, symBinAddr: 0xB215C, symSize: 0x22C } + - { offset: 0x148968, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAmenties17completionHandleryySayAA9AmenitiesVGc_tFTf4nd_n', symObjAddr: 0x7550, symBinAddr: 0xB23D8, symSize: 0x190 } + - { offset: 0x148A6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getFloorAds9paramters17completionHandlerySDySSypG_ySayAA13MessageDetailCGctFTf4nnd_n', symObjAddr: 0x775C, symBinAddr: 0xB25E4, symSize: 0x190 } + - { offset: 0x148B9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getEdgeAds9paramters17completionHandlerySDySSypG_ySayAA13MessageDetailCGctFTf4nnd_n', symObjAddr: 0x78EC, symBinAddr: 0xB2774, symSize: 0x190 } + - { offset: 0x148D0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC24submitNavigationFeedbackyyFTf4d_n', symObjAddr: 0x7ADC, symBinAddr: 0xB2964, symSize: 0x374 } + - { offset: 0x1492CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVwxx', symObjAddr: 0x2C, symBinAddr: 0xB31B0, symSize: 0x3C } + - { offset: 0x1492DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVwcp', symObjAddr: 0x68, symBinAddr: 0xB31EC, symSize: 0x6C } + - { offset: 0x1492F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVwca', symObjAddr: 0xD4, symBinAddr: 0xB3258, symSize: 0xB4 } + - { offset: 0x149307, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVwta', symObjAddr: 0x19C, symBinAddr: 0xB330C, symSize: 0x98 } + - { offset: 0x14931B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVMa', symObjAddr: 0x2C4, symBinAddr: 0xB33A4, symSize: 0x10 } + - { offset: 0x1496B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xB33B4, symSize: 0x10 } + - { offset: 0x149F1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCfE', symObjAddr: 0x1398, symBinAddr: 0xB474C, symSize: 0xC4 } + - { offset: 0x149F4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCfETo', symObjAddr: 0x148C, symBinAddr: 0xB4840, symSize: 0xD0 } + - { offset: 0x149F7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCMa', symObjAddr: 0x155C, symBinAddr: 0xB4910, symSize: 0x20 } + - { offset: 0x149F9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF15DidBeginEditingyySo06UITextF0CFTo', symObjAddr: 0x157C, symBinAddr: 0xB4930, symSize: 0x4C } + - { offset: 0x149FDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF13DidEndEditingyySo06UITextF0CFTo', symObjAddr: 0x15C8, symBinAddr: 0xB497C, symSize: 0x4C } + - { offset: 0x14A011, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF9DidChangeyySo06UITextF0CF', symObjAddr: 0x1614, symBinAddr: 0xB49C8, symSize: 0x258 } + - { offset: 0x14A0F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC06adjuste4TextF10Appearance33_23C295E8B772560134401F0065970F3ALL3forySS_tF', symObjAddr: 0x186C, symBinAddr: 0xB4C20, symSize: 0x3BC } + - { offset: 0x14A254, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF9DidChangeyySo06UITextF0CFTo', symObjAddr: 0x1C28, symBinAddr: 0xB4FDC, symSize: 0x50 } + - { offset: 0x14A3F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutCMa', symObjAddr: 0x2138, symBinAddr: 0xB54EC, symSize: 0x20 } + - { offset: 0x14A429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x2158, symBinAddr: 0xB550C, symSize: 0xA0 } + - { offset: 0x14A4A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x21F8, symBinAddr: 0xB55AC, symSize: 0x24 } + - { offset: 0x14A537, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10setupPanelyyF', symObjAddr: 0x221C, symBinAddr: 0xB55D0, symSize: 0x238 } + - { offset: 0x14A713, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10setupPanelyyFTo', symObjAddr: 0x2454, symBinAddr: 0xB5808, symSize: 0x28 } + - { offset: 0x14A759, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC23floatingPanelWillRemoveyyAA08FloatingiG0CFTo', symObjAddr: 0x247C, symBinAddr: 0xB5830, symSize: 0xBC } + - { offset: 0x14A7B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x25B4, symBinAddr: 0xB58EC, symSize: 0x4 } + - { offset: 0x14A7D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x25B4, symBinAddr: 0xB58EC, symSize: 0x4 } + - { offset: 0x14A7E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF15DidBeginEditingyySo06UITextF0CFTf4dn_n', symObjAddr: 0x25B8, symBinAddr: 0xB58F0, symSize: 0x174 } + - { offset: 0x14A99A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF13DidEndEditingyySo06UITextF0CFTf4dn_n', symObjAddr: 0x272C, symBinAddr: 0xB5A64, symSize: 0x104 } + - { offset: 0x14AB04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0x2830, symBinAddr: 0xB5B68, symSize: 0x120 } + - { offset: 0x14AB75, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x297C, symBinAddr: 0xB5CAC, symSize: 0x10 } + - { offset: 0x14AB89, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x298C, symBinAddr: 0xB5CBC, symSize: 0x8 } + - { offset: 0x14AE83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xB33B4, symSize: 0x10 } + - { offset: 0x14AE9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xB33B4, symSize: 0x10 } + - { offset: 0x14AEE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC06scrollF0So08UIScrollF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0xB33C4, symSize: 0x34 } + - { offset: 0x14AF30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xB33F8, symSize: 0x10 } + - { offset: 0x14AF48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xB33F8, symSize: 0x10 } + - { offset: 0x14AF88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0xB3408, symSize: 0x34 } + - { offset: 0x14AFD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC23destinationReachedLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0xB343C, symSize: 0x10 } + - { offset: 0x14AFEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC23destinationReachedLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0xB343C, symSize: 0x10 } + - { offset: 0x14B02A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC23destinationReachedLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0xB344C, symSize: 0x34 } + - { offset: 0x14B079, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC21feedbackTextContainerSo6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0xB3480, symSize: 0x10 } + - { offset: 0x14B091, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC21feedbackTextContainerSo6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0xB3480, symSize: 0x10 } + - { offset: 0x14B0D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC21feedbackTextContainerSo6UIViewCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0xB3490, symSize: 0x34 } + - { offset: 0x14B120, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC012feedbackTextF0AA018PlaceholderEnablediF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0xB34C4, symSize: 0x10 } + - { offset: 0x14B138, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC012feedbackTextF0AA018PlaceholderEnablediF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0xB34C4, symSize: 0x10 } + - { offset: 0x14B178, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC012feedbackTextF0AA018PlaceholderEnablediF0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0xB34D4, symSize: 0x34 } + - { offset: 0x14B1C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC27feedbackCharacterCountLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0xB3508, symSize: 0x10 } + - { offset: 0x14B1DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC27feedbackCharacterCountLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0xB3508, symSize: 0x10 } + - { offset: 0x14B21A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC27feedbackCharacterCountLabelSo7UILabelCSgvsTo', symObjAddr: 0x164, symBinAddr: 0xB3518, symSize: 0x34 } + - { offset: 0x14B269, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11ratingStackSo07UIStackF0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0xB354C, symSize: 0x10 } + - { offset: 0x14B281, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11ratingStackSo07UIStackF0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0xB354C, symSize: 0x10 } + - { offset: 0x14B2C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11ratingStackSo07UIStackF0CSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0xB355C, symSize: 0x34 } + - { offset: 0x14B310, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC18feedbackTextHeightSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0xB3590, symSize: 0x20 } + - { offset: 0x14B36A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC18feedbackTextHeightSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x1FC, symBinAddr: 0xB35B0, symSize: 0x14 } + - { offset: 0x14B3A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15expectedPadding12CoreGraphics7CGFloatVvg', symObjAddr: 0x210, symBinAddr: 0xB35C4, symSize: 0x44 } + - { offset: 0x14B3CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15expectedPadding12CoreGraphics7CGFloatVvgAGyXEfU_', symObjAddr: 0x254, symBinAddr: 0xB3608, symSize: 0x29C } + - { offset: 0x14B652, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11viewDidLoadyyF', symObjAddr: 0x4F0, symBinAddr: 0xB38A4, symSize: 0x398 } + - { offset: 0x14B81E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x888, symBinAddr: 0xB3C3C, symSize: 0x28 } + - { offset: 0x14B9A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15didSelectRatingyySo8UIButtonCF', symObjAddr: 0x8B0, symBinAddr: 0xB3C64, symSize: 0x420 } + - { offset: 0x14BDA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15didSelectRatingyySo8UIButtonCFTo', symObjAddr: 0xCD0, symBinAddr: 0xB4084, symSize: 0x50 } + - { offset: 0x14BDC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10didTapDoneyyF', symObjAddr: 0xD20, symBinAddr: 0xB40D4, symSize: 0x184 } + - { offset: 0x14BE59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10didTapDoneyyFTo', symObjAddr: 0xEA4, symBinAddr: 0xB4258, symSize: 0x28 } + - { offset: 0x14BE81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC12didTapCancelyyFTo', symObjAddr: 0xECC, symBinAddr: 0xB4280, symSize: 0x3C } + - { offset: 0x14BF42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15submitAnalyticsyyF', symObjAddr: 0xF08, symBinAddr: 0xB42BC, symSize: 0x194 } + - { offset: 0x14C0A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x109C, symBinAddr: 0xB4450, symSize: 0x150 } + - { offset: 0x14C0E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x11EC, symBinAddr: 0xB45A0, symSize: 0x60 } + - { offset: 0x14C115, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x124C, symBinAddr: 0xB4600, symSize: 0x124 } + - { offset: 0x14C148, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1370, symBinAddr: 0xB4724, symSize: 0x28 } + - { offset: 0x14C15C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCfD', symObjAddr: 0x145C, symBinAddr: 0xB4810, symSize: 0x30 } + - { offset: 0x14C18D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC8positionAA08FloatingH8PositionOvgTo', symObjAddr: 0x1C78, symBinAddr: 0xB502C, symSize: 0x8 } + - { offset: 0x14C1A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC8positionAA08FloatingH8PositionOvgTo', symObjAddr: 0x1C78, symBinAddr: 0xB502C, symSize: 0x8 } + - { offset: 0x14C1BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC12initialStateAA08FloatinghK0CvgTo', symObjAddr: 0x1C80, symBinAddr: 0xB5034, symSize: 0x8 } + - { offset: 0x14C1D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC12initialStateAA08FloatinghK0CvgTo', symObjAddr: 0x1C80, symBinAddr: 0xB5034, symSize: 0x8 } + - { offset: 0x14C1E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC7anchorsSDyAA08FloatingH5StateCAA0khI9Anchoring_pGvgTo', symObjAddr: 0x1C88, symBinAddr: 0xB503C, symSize: 0x7C } + - { offset: 0x14C2CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC7anchorsSDyAA08FloatingH5StateCAA0khI9Anchoring_pGvg', symObjAddr: 0x1D04, symBinAddr: 0xB50B8, symSize: 0x404 } + - { offset: 0x14C5D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA08FloatingH5StateC_tFTo', symObjAddr: 0x2108, symBinAddr: 0xB54BC, symSize: 0xC } + - { offset: 0x14C601, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutCfD', symObjAddr: 0x2114, symBinAddr: 0xB54C8, symSize: 0x24 } + - { offset: 0x14CAB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvpZ', symObjAddr: 0x79F0, symBinAddr: 0x3656A0, symSize: 0x0 } + - { offset: 0x14CEB9, size: 0x8, addend: 0x0, symName: '_$sIeg_IeyB_TR', symObjAddr: 0x0, symBinAddr: 0xB5CC4, symSize: 0x2C } + - { offset: 0x14CED1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6shared_WZ', symObjAddr: 0x2C, symBinAddr: 0xB5CF0, symSize: 0x2C } + - { offset: 0x14CF12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvpZACmTK', symObjAddr: 0x1C0, symBinAddr: 0xB5E64, symSize: 0x70 } + - { offset: 0x14CF37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvpZACmTk', symObjAddr: 0x230, symBinAddr: 0xB5ED4, symSize: 0x7C } + - { offset: 0x14D478, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC06handleaB5Error5error05feralF0yAA0aB7UIErrorO_SbtF', symObjAddr: 0x2F70, symBinAddr: 0xB8B20, symSize: 0x1F4 } + - { offset: 0x14D4F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC06handleaB5Error5error05feralF0yAA0aB7UIErrorO_SbtFyyScMYccfU_', symObjAddr: 0x5610, symBinAddr: 0xBB164, symSize: 0x1C4 } + - { offset: 0x14D5B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCfETo', symObjAddr: 0x3444, symBinAddr: 0xB8FF0, symSize: 0xCC } + - { offset: 0x14D60F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14continueActionyyypFTo', symObjAddr: 0x3510, symBinAddr: 0xB90BC, symSize: 0xD4 } + - { offset: 0x14D6BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17loadCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x35E4, symBinAddr: 0xB9190, symSize: 0x1F0 } + - { offset: 0x14D730, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17loadCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyFySayAA0F0CGSgcfU_', symObjAddr: 0x39CC, symBinAddr: 0xB9578, symSize: 0x1A8 } + - { offset: 0x14D80A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC21validateCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x37D4, symBinAddr: 0xB9380, symSize: 0x1F8 } + - { offset: 0x14D905, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC20startLocationManager33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x3B74, symBinAddr: 0xB9720, symSize: 0x2EC } + - { offset: 0x14DA5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22startLoadingPenguinSDKyyF', symObjAddr: 0x3E60, symBinAddr: 0xB9A0C, symSize: 0x164 } + - { offset: 0x14DB05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22startLoadingPenguinSDKyyFySSSg_0G09ErrorCodeOSgtcfU_', symObjAddr: 0x3FC4, symBinAddr: 0xB9B70, symSize: 0xF8 } + - { offset: 0x14DBAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x4114, symBinAddr: 0xB9C68, symSize: 0x334 } + - { offset: 0x14DC5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyFySbcfU_', symObjAddr: 0x474C, symBinAddr: 0xBA2A0, symSize: 0x140 } + - { offset: 0x14DCAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyFySbcfU_ySSSg_0F09ErrorCodeOSgtcfU_', symObjAddr: 0x488C, symBinAddr: 0xBA3E0, symSize: 0xE0 } + - { offset: 0x14DCFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC37locationManagerDidChangeAuthorizationyySo010CLLocationF0CF', symObjAddr: 0x4448, symBinAddr: 0xB9F9C, symSize: 0x128 } + - { offset: 0x14DD8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC37locationManagerDidChangeAuthorizationyySo010CLLocationF0CFTo', symObjAddr: 0x4570, symBinAddr: 0xBA0C4, symSize: 0x50 } + - { offset: 0x14DDAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15locationManager_22didChangeAuthorizationySo010CLLocationF0C_So21CLAuthorizationStatusVtF', symObjAddr: 0x45C0, symBinAddr: 0xBA114, symSize: 0x8 } + - { offset: 0x14DDCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15locationManager_22didChangeAuthorizationySo010CLLocationF0C_So21CLAuthorizationStatusVtFTo', symObjAddr: 0x45C8, symBinAddr: 0xBA11C, symSize: 0x54 } + - { offset: 0x14DE00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14validateInputsyyKF', symObjAddr: 0x461C, symBinAddr: 0xBA170, symSize: 0x130 } + - { offset: 0x14DEBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tF', symObjAddr: 0x496C, symBinAddr: 0xBA4C0, symSize: 0x4 } + - { offset: 0x14DECF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tFyyScMYccfU_', symObjAddr: 0x4970, symBinAddr: 0xBA4C4, symSize: 0x3A4 } + - { offset: 0x14E1FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC26requestGeofencePermissionsyyF', symObjAddr: 0x4D14, symBinAddr: 0xBA868, symSize: 0x1DC } + - { offset: 0x14E373, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tFTo', symObjAddr: 0x4EF0, symBinAddr: 0xBAA44, symSize: 0x28 } + - { offset: 0x14E3A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tF', symObjAddr: 0x4F18, symBinAddr: 0xBAA6C, symSize: 0x1C4 } + - { offset: 0x14E413, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tFyyScMYccfU_', symObjAddr: 0x50DC, symBinAddr: 0xBAC30, symSize: 0x154 } + - { offset: 0x14E488, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tFTo', symObjAddr: 0x5230, symBinAddr: 0xBAD84, symSize: 0x30 } + - { offset: 0x14E4A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tF', symObjAddr: 0x5260, symBinAddr: 0xBADB4, symSize: 0x200 } + - { offset: 0x14E529, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tFyyScMYccfU_', symObjAddr: 0x5460, symBinAddr: 0xBAFB4, symSize: 0x180 } + - { offset: 0x14E5B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tFTo', symObjAddr: 0x55E0, symBinAddr: 0xBB134, symSize: 0x30 } + - { offset: 0x14E608, size: 0x8, addend: 0x0, symName: '_$sSDsSQR_rlE2eeoiySbSDyxq_G_ABtFZSS_SSTt1g5', symObjAddr: 0x57D4, symBinAddr: 0xBB328, symSize: 0x1F8 } + - { offset: 0x14E6AF, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI5PlaceC_Ttg5', symObjAddr: 0x59CC, symBinAddr: 0xBB520, symSize: 0x54 } + - { offset: 0x14E6DC, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo18NSLayoutConstraintC_Ttg5', symObjAddr: 0x5A20, symBinAddr: 0xBB574, symSize: 0x64 } + - { offset: 0x14E709, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI18FloatingPanelStateC_Ttg5', symObjAddr: 0x5A84, symBinAddr: 0xBB5D8, symSize: 0x54 } + - { offset: 0x14E736, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI9VenueDataC_Ttg5', symObjAddr: 0x5AD8, symBinAddr: 0xBB62C, symSize: 0x54 } + - { offset: 0x14E763, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin5VenueC_Ttg5', symObjAddr: 0x5B2C, symBinAddr: 0xBB680, symSize: 0x54 } + - { offset: 0x14E790, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo28NSPersistentStoreDescriptionC_Ttg5', symObjAddr: 0x5B80, symBinAddr: 0xBB6D4, symSize: 0x64 } + - { offset: 0x14E7BD, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin8ScheduleC_Ttg5', symObjAddr: 0x5BE4, symBinAddr: 0xBB738, symSize: 0x54 } + - { offset: 0x14E7EA, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin13GateNodeModelC_Ttg5', symObjAddr: 0x5C38, symBinAddr: 0xBB78C, symSize: 0x54 } + - { offset: 0x14E817, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin5FloorC_Ttg5', symObjAddr: 0x5C8C, symBinAddr: 0xBB7E0, symSize: 0x54 } + - { offset: 0x14E844, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo6UIViewC_Ttg5', symObjAddr: 0x5CE0, symBinAddr: 0xBB834, symSize: 0x64 } + - { offset: 0x14E871, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI7POIDataC_Ttg5', symObjAddr: 0x5D44, symBinAddr: 0xBB898, symSize: 0x54 } + - { offset: 0x14E89E, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI9LayerTreeO4PathC_Ttg5', symObjAddr: 0x5D98, symBinAddr: 0xBB8EC, symSize: 0x54 } + - { offset: 0x14E8CB, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI8FavoriteC_Ttg5', symObjAddr: 0x5DEC, symBinAddr: 0xBB940, symSize: 0x54 } + - { offset: 0x14E8F8, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO15GraphicsElementC_Ttg5', symObjAddr: 0x5E40, symBinAddr: 0xBB994, symSize: 0x54 } + - { offset: 0x14E925, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo8UISwitchC_Ttg5', symObjAddr: 0x5E94, symBinAddr: 0xBB9E8, symSize: 0x64 } + - { offset: 0x14E952, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin4EdgeC_Ttg5', symObjAddr: 0x5EF8, symBinAddr: 0xBBA4C, symSize: 0x54 } + - { offset: 0x14E97F, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin5GnodeC_Ttg5', symObjAddr: 0x5F4C, symBinAddr: 0xBBAA0, symSize: 0x54 } + - { offset: 0x14E9AC, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin11SubpathEdgeC_Ttg5', symObjAddr: 0x5FA0, symBinAddr: 0xBBAF4, symSize: 0x54 } + - { offset: 0x14E9D9, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO14LinearGradientC_Ttg5', symObjAddr: 0x5FF4, symBinAddr: 0xBBB48, symSize: 0x54 } + - { offset: 0x14EA06, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO14RadialGradientC_Ttg5', symObjAddr: 0x6048, symBinAddr: 0xBBB9C, symSize: 0x54 } + - { offset: 0x14EA33, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO6FilterC_Ttg5', symObjAddr: 0x609C, symBinAddr: 0xBBBF0, symSize: 0x54 } + - { offset: 0x14EA60, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3XMLO7ElementC_Ttg5', symObjAddr: 0x60F0, symBinAddr: 0xBBC44, symSize: 0x54 } + - { offset: 0x14EA8D, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo10CGColorRefa_Ttg5', symObjAddr: 0x6144, symBinAddr: 0xBBC98, symSize: 0x54 } + - { offset: 0x14EABA, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO4PathC_Ttg5', symObjAddr: 0x6198, symBinAddr: 0xBBCEC, symSize: 0x54 } + - { offset: 0x14EAE7, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo9CGPathRefa_Ttg5', symObjAddr: 0x61EC, symBinAddr: 0xBBD40, symSize: 0x54 } + - { offset: 0x14EB14, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo11CAAnimationC_Ttg5', symObjAddr: 0x6240, symBinAddr: 0xBBD94, symSize: 0x64 } + - { offset: 0x14EB41, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo8NSNumberC_Ttg5', symObjAddr: 0x62A4, symBinAddr: 0xBBDF8, symSize: 0x64 } + - { offset: 0x14EB6E, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin7SubPathC_Ttg5', symObjAddr: 0x6308, symBinAddr: 0xBBE5C, symSize: 0x54 } + - { offset: 0x14EB9B, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo22NSCollectionLayoutItemC_Ttg5', symObjAddr: 0x635C, symBinAddr: 0xBBEB0, symSize: 0x64 } + - { offset: 0x14EBC8, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo11NSOperationC_Ttg5', symObjAddr: 0x63C0, symBinAddr: 0xBBF14, symSize: 0x64 } + - { offset: 0x14EBF5, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo20NSURLSessionDataTaskC_Ttg5', symObjAddr: 0x6424, symBinAddr: 0xBBF78, symSize: 0x64 } + - { offset: 0x14EC22, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo18UIContextualActionC_Ttg5', symObjAddr: 0x6488, symBinAddr: 0xBBFDC, symSize: 0x64 } + - { offset: 0x14EC4F, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI13MessageDetailC_Ttg5', symObjAddr: 0x64EC, symBinAddr: 0xBC040, symSize: 0x54 } + - { offset: 0x14EC7C, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI6CampusC_Ttg5', symObjAddr: 0x6540, symBinAddr: 0xBC094, symSize: 0x54 } + - { offset: 0x14ECA9, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo7CALayerC_Ttg5', symObjAddr: 0x6594, symBinAddr: 0xBC0E8, symSize: 0x64 } + - { offset: 0x14ECD6, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI10AlertSheetC_Ttg5', symObjAddr: 0x65F8, symBinAddr: 0xBC14C, symSize: 0x54 } + - { offset: 0x14ED03, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI17SurfaceAppearanceC6ShadowC_Ttg5', symObjAddr: 0x664C, symBinAddr: 0xBC1A0, symSize: 0x54 } + - { offset: 0x14ED93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtFyAA26GetPoIByRefIDResultElementVSgcfU_TA', symObjAddr: 0x6C04, symBinAddr: 0xBC758, symSize: 0x8 } + - { offset: 0x14EDA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15locationManager_22didChangeAuthorizationySo010CLLocationF0C_So21CLAuthorizationStatusVtFTf4dnn_n', symObjAddr: 0x6CB0, symBinAddr: 0xBC790, symSize: 0xCC } + - { offset: 0x14F005, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tFTf4dn_n', symObjAddr: 0x6D7C, symBinAddr: 0xBC85C, symSize: 0x53C } + - { offset: 0x14F3E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tFyyScMYccfU_TA', symObjAddr: 0x72DC, symBinAddr: 0xBCDBC, symSize: 0x8 } + - { offset: 0x14F3FD, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x72E4, symBinAddr: 0xBCDC4, symSize: 0x10 } + - { offset: 0x14F411, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x72F4, symBinAddr: 0xBCDD4, symSize: 0x8 } + - { offset: 0x14F425, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tFyyScMYccfU_TA', symObjAddr: 0x7420, symBinAddr: 0xBCE2C, symSize: 0xC } + - { offset: 0x14F439, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCMa', symObjAddr: 0x7434, symBinAddr: 0xBCE40, symSize: 0x20 } + - { offset: 0x14F44D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17cancelLoadingDatayyFyycfU_TA', symObjAddr: 0x7474, symBinAddr: 0xBCE60, symSize: 0x8 } + - { offset: 0x14F461, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tFyyScMYccfU_TA', symObjAddr: 0x74C0, symBinAddr: 0xBCE68, symSize: 0x8 } + - { offset: 0x14F475, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22startLoadingPenguinSDKyyFySSSg_0G09ErrorCodeOSgtcfU_TA', symObjAddr: 0x74C8, symBinAddr: 0xBCE70, symSize: 0xC } + - { offset: 0x14F489, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22startLoadingPenguinSDKyyFySSSg_0G09ErrorCodeOSgtcfU_yycfU_TA', symObjAddr: 0x7528, symBinAddr: 0xBCED0, symSize: 0x20 } + - { offset: 0x14F49D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyFySbcfU_TA', symObjAddr: 0x7548, symBinAddr: 0xBCEF0, symSize: 0x8 } + - { offset: 0x14F4B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyFySbcfU_ySSSg_0F09ErrorCodeOSgtcfU_TA', symObjAddr: 0x7574, symBinAddr: 0xBCF1C, symSize: 0xC } + - { offset: 0x14F4C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ValidationErrorOACs0E0AAWl', symObjAddr: 0x7580, symBinAddr: 0xBCF28, symSize: 0x40 } + - { offset: 0x14F4D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC06handleaB5Error5error05feralF0yAA0aB7UIErrorO_SbtFyyScMYccfU_TA', symObjAddr: 0x75E4, symBinAddr: 0xBCF8C, symSize: 0x10 } + - { offset: 0x14F4ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_TA', symObjAddr: 0x7618, symBinAddr: 0xBCFC0, symSize: 0xC } + - { offset: 0x14F501, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_yAMcfU_TA', symObjAddr: 0x762C, symBinAddr: 0xBCFD4, symSize: 0x10 } + - { offset: 0x14F515, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_yAMcfU_yyScMYccfU_TA', symObjAddr: 0x767C, symBinAddr: 0xBD024, symSize: 0x30 } + - { offset: 0x14F55D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctFySSSg_7Penguin9ErrorCodeOSgtcfU_ySayAoJCGSgcfU_TA', symObjAddr: 0x76AC, symBinAddr: 0xBD054, symSize: 0x8 } + - { offset: 0x14F571, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtFyAA26GetPoIByRefIDResultElementVSgcfU_yyScMYccfU_TA', symObjAddr: 0x76F0, symBinAddr: 0xBD098, symSize: 0x10 } + - { offset: 0x14F585, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVSgWOy', symObjAddr: 0x7700, symBinAddr: 0xBD0A8, symSize: 0x14 } + - { offset: 0x14F599, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17loadCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyFySayAA0F0CGSgcfU_TA', symObjAddr: 0x7768, symBinAddr: 0xBD0BC, symSize: 0x8 } + - { offset: 0x14F5AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17loadCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyFySayAA0F0CGSgcfU_yyScMYccfU_TA', symObjAddr: 0x77D4, symBinAddr: 0xBD128, symSize: 0x20 } + - { offset: 0x14F5C1, size: 0x8, addend: 0x0, symName: '_$sSo8CLRegionCSo8NSObjectCSH10ObjectiveCWl', symObjAddr: 0x78B4, symBinAddr: 0xBD148, symSize: 0x54 } + - { offset: 0x14F617, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvgZ', symObjAddr: 0x78, symBinAddr: 0xB5D1C, symSize: 0x68 } + - { offset: 0x14F64A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvsZ', symObjAddr: 0xE0, symBinAddr: 0xB5D84, symSize: 0x74 } + - { offset: 0x14F687, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvMZ', symObjAddr: 0x154, symBinAddr: 0xB5DF8, symSize: 0x6C } + - { offset: 0x14F6B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvM', symObjAddr: 0x318, symBinAddr: 0xB5F78, symSize: 0x40 } + - { offset: 0x14F6D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvM', symObjAddr: 0x438, symBinAddr: 0xB6098, symSize: 0x40 } + - { offset: 0x14F6FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvM', symObjAddr: 0x4E8, symBinAddr: 0xB6100, symSize: 0x40 } + - { offset: 0x14F941, size: 0x8, addend: 0x0, symName: '_$sSlsE6prefixy11SubSequenceQzSiFSS_Tg5Tf4ng_n', symObjAddr: 0x66A0, symBinAddr: 0xBC1F4, symSize: 0x88 } + - { offset: 0x14FBAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC5buildyyF', symObjAddr: 0x528, symBinAddr: 0xB6140, symSize: 0x104 } + - { offset: 0x14FCED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC10showLoader33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x62C, symBinAddr: 0xB6244, symSize: 0x2AC } + - { offset: 0x14FEAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC13clearDatabaseyyF', symObjAddr: 0x8D8, symBinAddr: 0xB64F0, symSize: 0x4 } + - { offset: 0x14FF30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17cancelLoadingDatayyF', symObjAddr: 0x8DC, symBinAddr: 0xB64F4, symSize: 0x1EC } + - { offset: 0x14FFC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17cancelLoadingDatayyFyycfU_', symObjAddr: 0xAC8, symBinAddr: 0xB66E0, symSize: 0x108 } + - { offset: 0x14FFED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14clearDelegates33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0xBD0, symBinAddr: 0xB67E8, symSize: 0x134 } + - { offset: 0x150047, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17cancelLoadingDatayyFTo', symObjAddr: 0xD04, symBinAddr: 0xB691C, symSize: 0x28 } + - { offset: 0x1500BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC11setLanguageyACSSF', symObjAddr: 0xD2C, symBinAddr: 0xB6944, symSize: 0x13C } + - { offset: 0x150195, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC11setLanguageyySSFZ', symObjAddr: 0xE68, symBinAddr: 0xB6A80, symSize: 0xEC } + - { offset: 0x1502E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC21setDeepLinkComponents6scheme4hostACSS_SStF', symObjAddr: 0xF54, symBinAddr: 0xB6B6C, symSize: 0x19C } + - { offset: 0x15041F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC11setDeepLinkyy10Foundation3URLVSgF', symObjAddr: 0x10F0, symBinAddr: 0xB6D08, symSize: 0x94 } + - { offset: 0x1504C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtF', symObjAddr: 0x120C, symBinAddr: 0xB6E24, symSize: 0x104 } + - { offset: 0x15052A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtFyAA26GetPoIByRefIDResultElementVSgcfU_', symObjAddr: 0x1310, symBinAddr: 0xB6F28, symSize: 0x200 } + - { offset: 0x15058F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtFyAA26GetPoIByRefIDResultElementVSgcfU_yyScMYccfU_', symObjAddr: 0x1510, symBinAddr: 0xB7128, symSize: 0x304 } + - { offset: 0x15087E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctF', symObjAddr: 0x1814, symBinAddr: 0xB742C, symSize: 0x184 } + - { offset: 0x1508CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctFySSSg_7Penguin9ErrorCodeOSgtcfU_', symObjAddr: 0x1998, symBinAddr: 0xB75B0, symSize: 0xA8 } + - { offset: 0x150955, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctFySSSg_7Penguin9ErrorCodeOSgtcfU_ySayAoJCGSgcfU_', symObjAddr: 0x1A40, symBinAddr: 0xB7658, symSize: 0x234 } + - { offset: 0x150C2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC10getVersionSSyFZ', symObjAddr: 0x1CDC, symBinAddr: 0xB788C, symSize: 0x14 } + - { offset: 0x150C7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7present4root4viewySo16UIViewControllerC_So0H0CtF', symObjAddr: 0x1CF0, symBinAddr: 0xB78A0, symSize: 0x43C } + - { offset: 0x150D85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7dismissyyF', symObjAddr: 0x212C, symBinAddr: 0xB7CDC, symSize: 0x1D0 } + - { offset: 0x150E2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC12switchCampus8campusIdySi_tF', symObjAddr: 0x22FC, symBinAddr: 0xB7EAC, symSize: 0x16C } + - { offset: 0x150EA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC11setCampusIDyACSiF', symObjAddr: 0x2468, symBinAddr: 0xB8018, symSize: 0xD8 } + - { offset: 0x150F07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14setServiceName04datafG008positionfG0ACSS_SStF', symObjAddr: 0x25EC, symBinAddr: 0xB819C, symSize: 0xB0 } + - { offset: 0x150F55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC10setBaseURL04dataG008positionG0ACSS_SStF', symObjAddr: 0x269C, symBinAddr: 0xB824C, symSize: 0x16C } + - { offset: 0x150FA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC24setSimulationModeEnabled8isEnableACSb_tF', symObjAddr: 0x28B0, symBinAddr: 0xB8460, symSize: 0x9C } + - { offset: 0x151003, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctF', symObjAddr: 0x2A10, symBinAddr: 0xB85C0, symSize: 0xD8 } + - { offset: 0x15105F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_', symObjAddr: 0x2AE8, symBinAddr: 0xB8698, symSize: 0x1F8 } + - { offset: 0x1510D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_', symObjAddr: 0x2CE0, symBinAddr: 0xB8890, symSize: 0x98 } + - { offset: 0x15111F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_yAMcfU_', symObjAddr: 0x2D78, symBinAddr: 0xB8928, symSize: 0x1F8 } + - { offset: 0x1511E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC10getVersionSSSgyF', symObjAddr: 0x3168, symBinAddr: 0xB8D14, symSize: 0x13C } + - { offset: 0x151223, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCACycfc', symObjAddr: 0x32A4, symBinAddr: 0xB8E50, symSize: 0x14C } + - { offset: 0x151248, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCACycfcTo', symObjAddr: 0x33F0, symBinAddr: 0xB8F9C, symSize: 0x20 } + - { offset: 0x15125C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCfD', symObjAddr: 0x3410, symBinAddr: 0xB8FBC, symSize: 0x34 } + - { offset: 0x1515DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC13clearDatabaseyyFTf4d_n', symObjAddr: 0x6728, symBinAddr: 0xBC27C, symSize: 0x7C } + - { offset: 0x151661, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17clearDataIfNeededyyFTf4d_n', symObjAddr: 0x67A4, symBinAddr: 0xBC2F8, symSize: 0x24C } + - { offset: 0x151756, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC18storeConfigurationyyFTf4d_n', symObjAddr: 0x69F0, symBinAddr: 0xBC544, symSize: 0x1E8 } + - { offset: 0x151F43, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFSay7Penguin13GateNodeModelCG_Tg5075$s8PenNavUI12GatesManagerC06updateD4Data3for5gatesy7Penguin5VenueC_SayAA0K4e12VGztFSbAG0L9fG7CXEfU2_Say0iJ2UI0rE0VGSiTf1cn_n', symObjAddr: 0x0, symBinAddr: 0xBD1F0, symSize: 0x150 } + - { offset: 0x151F67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC14sharedInstance33_17E138AFC5ED4208587E3B78D3E802C7LLACSgvpZ', symObjAddr: 0x2AE8, symBinAddr: 0x3658D8, symSize: 0x0 } + - { offset: 0x152515, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerCMa', symObjAddr: 0x1B04, symBinAddr: 0xBECD0, symSize: 0x20 } + - { offset: 0x152584, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF8PenNavUI9VenueGateV_Tg503$s8ef33UI12GatesManagerC04sortD0yySayAA9hI17VGzFSbAF_AFtXEfU_Tf1cn_n', symObjAddr: 0x1B24, symBinAddr: 0xBECF0, symSize: 0xF4 } + - { offset: 0x1527BF, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI9VenueGateV_Tg503$s8ef33UI12GatesManagerC04sortD0yySayAA9hI17VGzFSbAF_AFtXEfU_Tf1nnncn_n', symObjAddr: 0x1C18, symBinAddr: 0xBEDE4, symSize: 0x518 } + - { offset: 0x152CD1, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry8PenNavUI9VenueGateVG_Tg503$s8ij33UI12GatesManagerC04sortD0yySayAA9lM17VGzFSbAF_AFtXEfU_Tf1nncn_n', symObjAddr: 0x2130, symBinAddr: 0xBF2FC, symSize: 0x114 } + - { offset: 0x152E35, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI9VenueGateV_Tg503$s8fg33UI12GatesManagerC04sortD0yySayAA9iJ17VGzFSbAF_AFtXEfU_Tf1nncn_n', symObjAddr: 0x2244, symBinAddr: 0xBF410, symSize: 0x274 } + - { offset: 0x1531D0, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI9VenueGateV_Tg503$s8gh33UI12GatesManagerC04sortD0yySayAA9jK17VGzFSbAF_AFtXEfU_Tf1nnnnc_n', symObjAddr: 0x24B8, symBinAddr: 0xBF684, symSize: 0x2A4 } + - { offset: 0x1532E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVWOh', symObjAddr: 0x279C, symBinAddr: 0xBF928, symSize: 0x34 } + - { offset: 0x153380, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFSay7Penguin13GateNodeModelCG_Tg5075$s8PenNavUI12GatesManagerC06updateD4Data3for5gatesy7Penguin5VenueC_SayAA0K4e12VGztFSbAG0L9fG7CXEfU2_Say0iJ2UI0rE0VGSiTf1cn_n', symObjAddr: 0x0, symBinAddr: 0xBD1F0, symSize: 0x150 } + - { offset: 0x1534F8, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFSay8PenNavUI9VenueGateVG_Tg503$s8de33UI12GatesManagerC04sortD0yySayAA9gH17VGzFSbAF_AFtXEfU_Tf1cn_n', symObjAddr: 0x150, symBinAddr: 0xBD340, symSize: 0x6C } + - { offset: 0x15382A, size: 0x8, addend: 0x0, symName: '_$ss14_ArrayProtocolPsE6filterySay7ElementQzGSbAEKXEKFSay7Penguin13GateNodeModelCG_Tg5075$s8PenNavUI12GatesManagerC06updateD4Data3for5gatesy7Penguin5VenueC_SayAA0K4f12VGztFSbAG0L9gH7CXEfU0_Say0jK2UI0sF0VGSiTf1cn_nTf4gnn_n', symObjAddr: 0x27D0, symBinAddr: 0xBF95C, symSize: 0x244 } + - { offset: 0x153AD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC06updateD4Data3for5gatesy7Penguin5VenueC_SayAA0K4GateVGztF', symObjAddr: 0x117C, symBinAddr: 0xBE36C, symSize: 0x964 } + - { offset: 0x1547C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD9ByPlaceIdySay7Penguin13GateNodeModelCGSiSgF', symObjAddr: 0x1BC, symBinAddr: 0xBD3AC, symSize: 0x4A0 } + - { offset: 0x154DD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD9ByFloorIdySay7Penguin13GateNodeModelCGSiSgF', symObjAddr: 0x65C, symBinAddr: 0xBD84C, symSize: 0x1A8 } + - { offset: 0x154FF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD10ByFloorIdsySay7Penguin13GateNodeModelCGSaySiGF', symObjAddr: 0x804, symBinAddr: 0xBD9F4, symSize: 0x1B4 } + - { offset: 0x155304, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD09isOutdoor0G13FloorGateNodeSay7Penguin0jK5ModelCGSb_SbtF', symObjAddr: 0x9B8, symBinAddr: 0xBDBA8, symSize: 0x1CC } + - { offset: 0x155554, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC09getCampusD0Say7Penguin13GateNodeModelCGyF', symObjAddr: 0xB84, symBinAddr: 0xBDD74, symSize: 0x198 } + - { offset: 0x155811, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD18SortedByTravelTime3for6origin19withNavigationAvoid10completiony7Penguin5VenueCSg_AA5PlaceCSgSbySayANGctFySayAA0R4GateVGcfU_', symObjAddr: 0xD1C, symBinAddr: 0xBDF0C, symSize: 0x460 } + - { offset: 0x155C3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC04sortD0yySayAA9VenueGateVGzFTf4nd_n', symObjAddr: 0x2A14, symBinAddr: 0xBFBA0, symSize: 0xD4 } + - { offset: 0x156130, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintC8PenNavUIE14arabicConstant12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x0, symBinAddr: 0xBFC74, symSize: 0x8 } + - { offset: 0x156148, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintC8PenNavUIE14arabicConstant12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x0, symBinAddr: 0xBFC74, symSize: 0x8 } + - { offset: 0x156164, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintC8PenNavUIE14arabicConstant12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x8, symBinAddr: 0xBFC7C, symSize: 0x38 } + - { offset: 0x156196, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintC8PenNavUIE14arabicConstant12CoreGraphics7CGFloatVvs', symObjAddr: 0x40, symBinAddr: 0xBFCB4, symSize: 0x90 } + - { offset: 0x156630, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xBFD44, symSize: 0x10 } + - { offset: 0x156865, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewCfETo', symObjAddr: 0x5DC, symBinAddr: 0xC0320, symSize: 0x38 } + - { offset: 0x156894, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewCMa', symObjAddr: 0x614, symBinAddr: 0xC0358, symSize: 0x20 } + - { offset: 0x156980, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xBFD44, symSize: 0x10 } + - { offset: 0x156998, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xBFD44, symSize: 0x10 } + - { offset: 0x1569DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC07contentF0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0xBFD54, symSize: 0x34 } + - { offset: 0x156A2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xBFD88, symSize: 0x10 } + - { offset: 0x156A45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xBFD88, symSize: 0x10 } + - { offset: 0x156A85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0xBFD98, symSize: 0x34 } + - { offset: 0x156AE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x88, symBinAddr: 0xBFDCC, symSize: 0xA0 } + - { offset: 0x156B61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x128, symBinAddr: 0xBFE6C, symSize: 0x8C } + - { offset: 0x156B96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1B4, symBinAddr: 0xBFEF8, symSize: 0x28 } + - { offset: 0x156BE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC10commonInit33_5C7060CF019BF0F945901014F8A98CB4LLyyF', symObjAddr: 0x1DC, symBinAddr: 0xBFF20, symSize: 0x308 } + - { offset: 0x156D28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC03setD0yy7Penguin0D0CSgF', symObjAddr: 0x4E4, symBinAddr: 0xC0228, symSize: 0xC8 } + - { offset: 0x156D7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewCfD', symObjAddr: 0x5AC, symBinAddr: 0xC02F0, symSize: 0x30 } + - { offset: 0x15712F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xC0378, symSize: 0x10 } + - { offset: 0x157AFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCfE', symObjAddr: 0x14C0, symBinAddr: 0xC1838, symSize: 0x84 } + - { offset: 0x157B28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCfETo', symObjAddr: 0x1574, symBinAddr: 0xC18EC, symSize: 0x90 } + - { offset: 0x157B57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCMa', symObjAddr: 0x1604, symBinAddr: 0xC197C, symSize: 0x20 } + - { offset: 0x157B9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1624, symBinAddr: 0xC199C, symSize: 0x48 } + - { offset: 0x157C46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x166C, symBinAddr: 0xC19E4, symSize: 0x24 } + - { offset: 0x157C87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_22viewForHeaderInSectionSo6UIViewCSgSo07UITableF0C_SitFTo', symObjAddr: 0x1690, symBinAddr: 0xC1A08, symSize: 0x60 } + - { offset: 0x157F17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x16F0, symBinAddr: 0xC1A68, symSize: 0x528 } + - { offset: 0x158443, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1C18, symBinAddr: 0xC1F90, symSize: 0xB8 } + - { offset: 0x15845F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_24heightForHeaderInSection12CoreGraphics7CGFloatVSo07UITableF0C_SitFTo', symObjAddr: 0x1CD0, symBinAddr: 0xC2048, symSize: 0x8 } + - { offset: 0x1584A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1CD8, symBinAddr: 0xC2050, symSize: 0x100 } + - { offset: 0x158543, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1DD8, symBinAddr: 0xC2150, symSize: 0x218 } + - { offset: 0x158732, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1FF0, symBinAddr: 0xC2368, symSize: 0xB0 } + - { offset: 0x15874E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x2178, symBinAddr: 0xC2418, symSize: 0x34 } + - { offset: 0x158781, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x21AC, symBinAddr: 0xC244C, symSize: 0x24 } + - { offset: 0x15882C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC10setupPanelyyF', symObjAddr: 0x21D0, symBinAddr: 0xC2470, symSize: 0x298 } + - { offset: 0x158ACA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC10setupPanelyyFTo', symObjAddr: 0x2468, symBinAddr: 0xC2708, symSize: 0x28 } + - { offset: 0x158AE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC18expandVenueSection7venueId0H0ySi_SbtF', symObjAddr: 0x2490, symBinAddr: 0xC2730, symSize: 0x3FC } + - { offset: 0x1590D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x288C, symBinAddr: 0xC2B2C, symSize: 0x4 } + - { offset: 0x1590F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x288C, symBinAddr: 0xC2B2C, symSize: 0x4 } + - { offset: 0x159106, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x2B04, symBinAddr: 0xC2DA4, symSize: 0xC8 } + - { offset: 0x15920D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_22viewForHeaderInSectionSo6UIViewCSgSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x2BCC, symBinAddr: 0xC2E6C, symSize: 0x240 } + - { offset: 0x1593C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0x2E0C, symBinAddr: 0xC30AC, symSize: 0x1C0 } + - { offset: 0x1595BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xC0378, symSize: 0x10 } + - { offset: 0x1595D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xC0378, symSize: 0x10 } + - { offset: 0x15961D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0xC0388, symSize: 0x34 } + - { offset: 0x1596FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC13selectedVenueAA0I8CardDataVSgvg', symObjAddr: 0x44, symBinAddr: 0xC03BC, symSize: 0xE0 } + - { offset: 0x159842, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC11viewDidLoadyyF', symObjAddr: 0x124, symBinAddr: 0xC049C, symSize: 0x2B0 } + - { offset: 0x159A72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x3D4, symBinAddr: 0xC074C, symSize: 0x28 } + - { offset: 0x159B72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC8loadDatayyF', symObjAddr: 0x3FC, symBinAddr: 0xC0774, symSize: 0x4E0 } + - { offset: 0x15A19D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC012loadSelectedD0yyF', symObjAddr: 0x8DC, symBinAddr: 0xC0C54, symSize: 0x78C } + - { offset: 0x15AB49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC06selectD0yyF', symObjAddr: 0x1068, symBinAddr: 0xC13E0, symSize: 0x94 } + - { offset: 0x15ABB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC06selectD0yyFTo', symObjAddr: 0x10FC, symBinAddr: 0xC1474, symSize: 0x28 } + - { offset: 0x15ABDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC6cancelyyF', symObjAddr: 0x1124, symBinAddr: 0xC149C, symSize: 0x98 } + - { offset: 0x15AC56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC6cancelyyFTo', symObjAddr: 0x11BC, symBinAddr: 0xC1534, symSize: 0x28 } + - { offset: 0x15AC70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x11E4, symBinAddr: 0xC155C, symSize: 0x140 } + - { offset: 0x15ACC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x1324, symBinAddr: 0xC169C, symSize: 0x60 } + - { offset: 0x15AD0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1384, symBinAddr: 0xC16FC, symSize: 0x114 } + - { offset: 0x15AD56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1498, symBinAddr: 0xC1810, symSize: 0x28 } + - { offset: 0x15AD6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCfD', symObjAddr: 0x1544, symBinAddr: 0xC18BC, symSize: 0x30 } + - { offset: 0x15B1C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC03setdE4Data5venue8expanded13selectedFloor8delegatey7Penguin0E0C_SbAI0L0CSgAA0dE15SectionDelegate_ptFTf4nnnen_nAA0L22SelectorViewControllerC_Tg5', symObjAddr: 0x2890, symBinAddr: 0xC2B30, symSize: 0x274 } + - { offset: 0x15BB4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCfE', symObjAddr: 0xE3C, symBinAddr: 0xC40A8, symSize: 0x64 } + - { offset: 0x15BB78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCfETo', symObjAddr: 0xED0, symBinAddr: 0xC413C, symSize: 0x70 } + - { offset: 0x15BBA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCMa', symObjAddr: 0xF40, symBinAddr: 0xC41AC, symSize: 0x20 } + - { offset: 0x15BBBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0xF60, symBinAddr: 0xC41CC, symSize: 0x8 } + - { offset: 0x15BC27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0xF68, symBinAddr: 0xC41D4, symSize: 0x78 } + - { offset: 0x15BE35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0xFE0, symBinAddr: 0xC424C, symSize: 0x4B0 } + - { offset: 0x15C1C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1490, symBinAddr: 0xC46FC, symSize: 0xB8 } + - { offset: 0x15C21F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1548, symBinAddr: 0xC47B4, symSize: 0xEC } + - { offset: 0x15C2A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x170C, symBinAddr: 0xC48A0, symSize: 0x34 } + - { offset: 0x15C2D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x1740, symBinAddr: 0xC48D4, symSize: 0x24 } + - { offset: 0x15C382, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x1764, symBinAddr: 0xC48F8, symSize: 0x2A8 } + - { offset: 0x15C620, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x1A0C, symBinAddr: 0xC4BA0, symSize: 0x28 } + - { offset: 0x15C63C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC22didTapDirectionsActionyyF', symObjAddr: 0x1A34, symBinAddr: 0xC4BC8, symSize: 0x3DC } + - { offset: 0x15C82A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC22didTapDirectionsActionyyFyycfU_', symObjAddr: 0x1E10, symBinAddr: 0xC4FA4, symSize: 0x12C } + - { offset: 0x15C8BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC22didTapDirectionsActionyyFTo', symObjAddr: 0x1F3C, symBinAddr: 0xC50D0, symSize: 0x28 } + - { offset: 0x15C8DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC17didTapPhoneActionyyF', symObjAddr: 0x1F64, symBinAddr: 0xC50F8, symSize: 0x214 } + - { offset: 0x15C9BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC17didTapPhoneActionyyFTo', symObjAddr: 0x2178, symBinAddr: 0xC530C, symSize: 0x28 } + - { offset: 0x15C9DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC19didTapWebsiteActionyyF', symObjAddr: 0x21A0, symBinAddr: 0xC5334, symSize: 0x38C } + - { offset: 0x15CB11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC19didTapWebsiteActionyyFTo', symObjAddr: 0x252C, symBinAddr: 0xC56C0, symSize: 0x28 } + - { offset: 0x15CB4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16didTapMailActionyyF', symObjAddr: 0x2554, symBinAddr: 0xC56E8, symSize: 0x1BC } + - { offset: 0x15CC66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16didTapMailActionyyFTo', symObjAddr: 0x2710, symBinAddr: 0xC58A4, symSize: 0x28 } + - { offset: 0x15CCAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC011mailComposeG0_13didFinishWith5errorySo06MFMailifG0C_So0nI6ResultVs5Error_pSgtFTo', symObjAddr: 0x2738, symBinAddr: 0xC58CC, symSize: 0x18 } + - { offset: 0x15CCF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC25adaptivePresentationStyle3forSo07UIModaliJ0VSo014UIPresentationG0C_tFTo', symObjAddr: 0x2750, symBinAddr: 0xC58E4, symSize: 0x8 } + - { offset: 0x15CD1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x2758, symBinAddr: 0xC58EC, symSize: 0x4 } + - { offset: 0x15CD3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x2758, symBinAddr: 0xC58EC, symSize: 0x4 } + - { offset: 0x15CD4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0x275C, symBinAddr: 0xC58F0, symSize: 0x1C0 } + - { offset: 0x15CF33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC22didTapDirectionsActionyyFyycfU_TA', symObjAddr: 0x2A6C, symBinAddr: 0xC5B40, symSize: 0x30 } + - { offset: 0x15CF47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyFySo7UIImageCSgcfU_TA', symObjAddr: 0x2AC4, symBinAddr: 0xC5B70, symSize: 0x8 } + - { offset: 0x15CF5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyFySo7UIImageCSgcfU_yyScMYccfU_TA', symObjAddr: 0x2B90, symBinAddr: 0xC5B78, symSize: 0x8 } + - { offset: 0x15CF6F, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2B98, symBinAddr: 0xC5B80, symSize: 0x10 } + - { offset: 0x15CF83, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2BA8, symBinAddr: 0xC5B90, symSize: 0x8 } + - { offset: 0x15D1E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xC326C, symSize: 0x20 } + - { offset: 0x15D248, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xC328C, symSize: 0x14 } + - { offset: 0x15D299, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC12showsActionsSbvg', symObjAddr: 0x34, symBinAddr: 0xC32A0, symSize: 0x8C } + - { offset: 0x15D2BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC12showsActionsSbvg', symObjAddr: 0x34, symBinAddr: 0xC32A0, symSize: 0x8C } + - { offset: 0x15D319, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16showsDescriptionSbvg', symObjAddr: 0xC0, symBinAddr: 0xC332C, symSize: 0xDC } + - { offset: 0x15D3AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x19C, symBinAddr: 0xC3408, symSize: 0xF4 } + - { offset: 0x15D47C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x290, symBinAddr: 0xC34FC, symSize: 0x28 } + - { offset: 0x15D77E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyF', symObjAddr: 0x2B8, symBinAddr: 0xC3524, symSize: 0x664 } + - { offset: 0x15DC5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyFySo7UIImageCSgcfU_', symObjAddr: 0x91C, symBinAddr: 0xC3B88, symSize: 0x200 } + - { offset: 0x15DCE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyFySo7UIImageCSgcfU_yyScMYccfU_', symObjAddr: 0xB1C, symBinAddr: 0xC3D88, symSize: 0x7C } + - { offset: 0x15DD8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC7dismissyySo8UIButtonCFTo', symObjAddr: 0xB98, symBinAddr: 0xC3E04, symSize: 0x88 } + - { offset: 0x15DDBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xC20, symBinAddr: 0xC3E8C, symSize: 0xDC } + - { offset: 0x15DDFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xCFC, symBinAddr: 0xC3F68, symSize: 0x60 } + - { offset: 0x15DE13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xD5C, symBinAddr: 0xC3FC8, symSize: 0xB8 } + - { offset: 0x15DE46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xE14, symBinAddr: 0xC4080, symSize: 0x28 } + - { offset: 0x15DE5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCfD', symObjAddr: 0xEA0, symBinAddr: 0xC410C, symSize: 0x30 } + - { offset: 0x15E64D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvgTo', symObjAddr: 0x0, symBinAddr: 0xC5B98, symSize: 0x8 } + - { offset: 0x15E6FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutCMa', symObjAddr: 0xF0, symBinAddr: 0xC5C88, symSize: 0x20 } + - { offset: 0x15E723, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvgTo', symObjAddr: 0x0, symBinAddr: 0xC5B98, symSize: 0x8 } + - { offset: 0x15E750, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutCACycfcTo', symObjAddr: 0x8, symBinAddr: 0xC5BA0, symSize: 0x3C } + - { offset: 0x15E7E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x44, symBinAddr: 0xC5BDC, symSize: 0x7C } + - { offset: 0x15E81D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutCfD', symObjAddr: 0xC0, symBinAddr: 0xC5C58, symSize: 0x30 } + - { offset: 0x15EBB5, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerC8PenNavUIE7closureAByyc_tcfC', symObjAddr: 0x0, symBinAddr: 0xC5CA8, symSize: 0x128 } + - { offset: 0x15EBD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10closureKey33_20A0826EEFCB6382929B746827715658LLs5UInt8Vvp', symObjAddr: 0x2E0, symBinAddr: 0x365B38, symSize: 0x0 } + - { offset: 0x15EBE7, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerC8PenNavUIE7closureAByyc_tcfC', symObjAddr: 0x0, symBinAddr: 0xC5CA8, symSize: 0x128 } + - { offset: 0x15EC3E, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerC8PenNavUIE9handleTap33_20A0826EEFCB6382929B746827715658LLyyF', symObjAddr: 0x128, symBinAddr: 0xC5DD0, symSize: 0xDC } + - { offset: 0x15EC82, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerC8PenNavUIE9handleTap33_20A0826EEFCB6382929B746827715658LLyyFTo', symObjAddr: 0x204, symBinAddr: 0xC5EAC, symSize: 0x28 } + - { offset: 0x15F23F, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUIAA15LocalizedObjectVRszlE03getD4TextSSSgyF', symObjAddr: 0x0, symBinAddr: 0xC5EF8, symSize: 0x1D8 } + - { offset: 0x15F7A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseCMa', symObjAddr: 0x3A0, symBinAddr: 0xC61B4, symSize: 0x20 } + - { offset: 0x160090, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataCMa', symObjAddr: 0x1C64, symBinAddr: 0xC7890, symSize: 0x20 } + - { offset: 0x160162, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailCMa', symObjAddr: 0x31C0, symBinAddr: 0xC8CEC, symSize: 0x20 } + - { offset: 0x160176, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwxx', symObjAddr: 0x332C, symBinAddr: 0xC8E58, symSize: 0x30 } + - { offset: 0x16018A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwcp', symObjAddr: 0x335C, symBinAddr: 0xC8E88, symSize: 0x64 } + - { offset: 0x16019E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwca', symObjAddr: 0x33C0, symBinAddr: 0xC8EEC, symSize: 0x9C } + - { offset: 0x1601B2, size: 0x8, addend: 0x0, symName: ___swift_memcpy56_8, symObjAddr: 0x345C, symBinAddr: 0xC8F88, symSize: 0x1C } + - { offset: 0x1601C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwta', symObjAddr: 0x3478, symBinAddr: 0xC8FA4, symSize: 0x64 } + - { offset: 0x1601DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwet', symObjAddr: 0x34DC, symBinAddr: 0xC9008, symSize: 0x5C } + - { offset: 0x1601EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwst', symObjAddr: 0x3538, symBinAddr: 0xC9064, symSize: 0x60 } + - { offset: 0x160202, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVMa', symObjAddr: 0x3598, symBinAddr: 0xC90C4, symSize: 0x10 } + - { offset: 0x160216, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwcp', symObjAddr: 0x35D4, symBinAddr: 0xC90D4, symSize: 0x3C } + - { offset: 0x16022A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwca', symObjAddr: 0x3610, symBinAddr: 0xC9110, symSize: 0x7C } + - { offset: 0x16023E, size: 0x8, addend: 0x0, symName: ___swift_memcpy64_8, symObjAddr: 0x368C, symBinAddr: 0xC918C, symSize: 0x14 } + - { offset: 0x160252, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwta', symObjAddr: 0x36A0, symBinAddr: 0xC91A0, symSize: 0x4C } + - { offset: 0x160266, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwet', symObjAddr: 0x36EC, symBinAddr: 0xC91EC, symSize: 0x48 } + - { offset: 0x16027A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwst', symObjAddr: 0x3734, symBinAddr: 0xC9234, symSize: 0x50 } + - { offset: 0x16028E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVMa', symObjAddr: 0x3784, symBinAddr: 0xC9284, symSize: 0x10 } + - { offset: 0x1602A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwxx', symObjAddr: 0x3794, symBinAddr: 0xC9294, symSize: 0x40 } + - { offset: 0x1602B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwcp', symObjAddr: 0x37D4, symBinAddr: 0xC92D4, symSize: 0x84 } + - { offset: 0x1602CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwca', symObjAddr: 0x3858, symBinAddr: 0xC9358, symSize: 0xCC } + - { offset: 0x1602DE, size: 0x8, addend: 0x0, symName: ___swift_memcpy80_8, symObjAddr: 0x3924, symBinAddr: 0xC9424, symSize: 0x1C } + - { offset: 0x1602F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwta', symObjAddr: 0x3940, symBinAddr: 0xC9440, symSize: 0x7C } + - { offset: 0x160306, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwet', symObjAddr: 0x39BC, symBinAddr: 0xC94BC, symSize: 0x48 } + - { offset: 0x16031A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwst', symObjAddr: 0x3A04, symBinAddr: 0xC9504, symSize: 0x54 } + - { offset: 0x16032E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVMa', symObjAddr: 0x3A58, symBinAddr: 0xC9558, symSize: 0x10 } + - { offset: 0x160342, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVwet', symObjAddr: 0x3A74, symBinAddr: 0xC9568, symSize: 0x48 } + - { offset: 0x160356, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVwst', symObjAddr: 0x3ABC, symBinAddr: 0xC95B0, symSize: 0x40 } + - { offset: 0x16036A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVMa', symObjAddr: 0x3AFC, symBinAddr: 0xC95F0, symSize: 0x10 } + - { offset: 0x16037E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectVMa', symObjAddr: 0x3B88, symBinAddr: 0xC9670, symSize: 0x10 } + - { offset: 0x160392, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectVMa', symObjAddr: 0x3C5C, symBinAddr: 0xC9744, symSize: 0x10 } + - { offset: 0x1603A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVwet', symObjAddr: 0x3D90, symBinAddr: 0xC9878, symSize: 0x48 } + - { offset: 0x1603BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVwst', symObjAddr: 0x3DD8, symBinAddr: 0xC98C0, symSize: 0x40 } + - { offset: 0x1603CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVMa', symObjAddr: 0x3E18, symBinAddr: 0xC9900, symSize: 0x10 } + - { offset: 0x1603E2, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUIAA15LocalizedObjectVRszlE26getDefaultLocalizationText33_121BF5CBCE29A3B1F134342B29E6E083LLSSSgyF', symObjAddr: 0x43E4, symBinAddr: 0xC9DD8, symSize: 0x1B8 } + - { offset: 0x1608CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVAA13TagDataSourceA2aDP5tagIdSivgTW', symObjAddr: 0x4CF4, symBinAddr: 0xCA6DC, symSize: 0x14 } + - { offset: 0x160910, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVAA13TagDataSourceA2aDP7tagNameSSvgTW', symObjAddr: 0x4D08, symBinAddr: 0xCA6F0, symSize: 0xC8 } + - { offset: 0x160948, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs0I3KeyAAWl', symObjAddr: 0x4E38, symBinAddr: 0xCA7B8, symSize: 0x40 } + - { offset: 0x16095C, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI7POIDataCGSayxGSesSeRzlWl', symObjAddr: 0x4E98, symBinAddr: 0xCA7F8, symSize: 0x80 } + - { offset: 0x160970, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs0E3KeyAAWl', symObjAddr: 0x4F60, symBinAddr: 0xCA878, symSize: 0x40 } + - { offset: 0x160984, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVSgWOe', symObjAddr: 0x4FDC, symBinAddr: 0xCA8B8, symSize: 0x30 } + - { offset: 0x160998, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectVAESeAAWl', symObjAddr: 0x500C, symBinAddr: 0xCA8E8, symSize: 0x40 } + - { offset: 0x1609AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectVAESeAAWl', symObjAddr: 0x504C, symBinAddr: 0xCA928, symSize: 0x40 } + - { offset: 0x1609C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVAESeAAWl', symObjAddr: 0x508C, symBinAddr: 0xCA968, symSize: 0x40 } + - { offset: 0x1609D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVAESeAAWl', symObjAddr: 0x5170, symBinAddr: 0xCAA0C, symSize: 0x40 } + - { offset: 0x1609E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVAESeAAWl', symObjAddr: 0x51B0, symBinAddr: 0xCAA4C, symSize: 0x40 } + - { offset: 0x1609FC, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI16CategoriesDetailCGSayxGSesSeRzlWl', symObjAddr: 0x51F0, symBinAddr: 0xCAA8C, symSize: 0x80 } + - { offset: 0x160A10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVACSeAAWl', symObjAddr: 0x52F4, symBinAddr: 0xCAB0C, symSize: 0x40 } + - { offset: 0x160A24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs0F3KeyAAWl', symObjAddr: 0x5334, symBinAddr: 0xCAB4C, symSize: 0x40 } + - { offset: 0x160A38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOAEs0E3KeyAAWl', symObjAddr: 0x7258, symBinAddr: 0xCC8B8, symSize: 0x40 } + - { offset: 0x160A4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVWOh', symObjAddr: 0x72CC, symBinAddr: 0xCC8F8, symSize: 0x2C } + - { offset: 0x160A60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x7338, symBinAddr: 0xCC924, symSize: 0x40 } + - { offset: 0x160A74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVAESeAAWl', symObjAddr: 0x7378, symBinAddr: 0xCC964, symSize: 0x40 } + - { offset: 0x160A8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVWOc', symObjAddr: 0x73B8, symBinAddr: 0xCC9A4, symSize: 0x40 } + - { offset: 0x160ABF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVWOh', symObjAddr: 0x73F8, symBinAddr: 0xCC9E4, symSize: 0x28 } + - { offset: 0x160AE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVAESEAAWl', symObjAddr: 0x7420, symBinAddr: 0xCCA0C, symSize: 0x40 } + - { offset: 0x160AFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0H3KeyAAWl', symObjAddr: 0x7460, symBinAddr: 0xCCA4C, symSize: 0x40 } + - { offset: 0x160B10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVWOc', symObjAddr: 0x74A0, symBinAddr: 0xCCA8C, symSize: 0x34 } + - { offset: 0x160B24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVWOh', symObjAddr: 0x74D4, symBinAddr: 0xCCAC0, symSize: 0x2C } + - { offset: 0x160B38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x7500, symBinAddr: 0xCCAEC, symSize: 0x40 } + - { offset: 0x160B4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x7540, symBinAddr: 0xCCB2C, symSize: 0x40 } + - { offset: 0x160B60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x7580, symBinAddr: 0xCCB6C, symSize: 0x40 } + - { offset: 0x160B74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs0F3KeyAAWl', symObjAddr: 0x75C0, symBinAddr: 0xCCBAC, symSize: 0x40 } + - { offset: 0x160B88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectVAESEAAWl', symObjAddr: 0x7600, symBinAddr: 0xCCBEC, symSize: 0x40 } + - { offset: 0x160B9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectVAESEAAWl', symObjAddr: 0x7640, symBinAddr: 0xCCC2C, symSize: 0x40 } + - { offset: 0x160BB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVAESEAAWl', symObjAddr: 0x7680, symBinAddr: 0xCCC6C, symSize: 0x40 } + - { offset: 0x160BC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVAESEAAWl', symObjAddr: 0x76C0, symBinAddr: 0xCCCAC, symSize: 0x40 } + - { offset: 0x160BD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVAESEAAWl', symObjAddr: 0x7744, symBinAddr: 0xCCCEC, symSize: 0x40 } + - { offset: 0x160BEC, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI16CategoriesDetailCGSayxGSEsSERzlWl', symObjAddr: 0x7784, symBinAddr: 0xCCD2C, symSize: 0x80 } + - { offset: 0x160C00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVACSEAAWl', symObjAddr: 0x78E8, symBinAddr: 0xCCDAC, symSize: 0x40 } + - { offset: 0x160C14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVSgWOe', symObjAddr: 0x7928, symBinAddr: 0xCCDEC, symSize: 0x5C } + - { offset: 0x160C28, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI7POIDataCGSayxGSEsSERzlWl', symObjAddr: 0x7984, symBinAddr: 0xCCE48, symSize: 0x80 } + - { offset: 0x160C3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7A74, symBinAddr: 0xCCED0, symSize: 0x10 } + - { offset: 0x160C50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7A88, symBinAddr: 0xCCEE0, symSize: 0x10 } + - { offset: 0x160C64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7A9C, symBinAddr: 0xCCEF0, symSize: 0x10 } + - { offset: 0x160C78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7AC8, symBinAddr: 0xCCF08, symSize: 0x10 } + - { offset: 0x160C8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOwet', symObjAddr: 0x7AD8, symBinAddr: 0xCCF18, symSize: 0x90 } + - { offset: 0x160CA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOwst', symObjAddr: 0x7B68, symBinAddr: 0xCCFA8, symSize: 0xB0 } + - { offset: 0x160CB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7C1C, symBinAddr: 0xCD058, symSize: 0x10 } + - { offset: 0x160CC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7D70, symBinAddr: 0xCD068, symSize: 0x10 } + - { offset: 0x160CDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOMa', symObjAddr: 0x7D84, symBinAddr: 0xCD078, symSize: 0x10 } + - { offset: 0x160CF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7ED8, symBinAddr: 0xCD088, symSize: 0x10 } + - { offset: 0x160D04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOwet', symObjAddr: 0x7EE8, symBinAddr: 0xCD098, symSize: 0x90 } + - { offset: 0x160D18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOwst', symObjAddr: 0x7F78, symBinAddr: 0xCD128, symSize: 0xB0 } + - { offset: 0x160D2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x802C, symBinAddr: 0xCD1D8, symSize: 0x10 } + - { offset: 0x160D40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x811C, symBinAddr: 0xCD1E8, symSize: 0x10 } + - { offset: 0x160D54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVMa', symObjAddr: 0x8198, symBinAddr: 0xCD1F8, symSize: 0x10 } + - { offset: 0x160D68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x81A8, symBinAddr: 0xCD208, symSize: 0x4 } + - { offset: 0x160D7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFSQAAWl', symObjAddr: 0x81AC, symBinAddr: 0xCD20C, symSize: 0x40 } + - { offset: 0x160D90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x81EC, symBinAddr: 0xCD24C, symSize: 0x4 } + - { offset: 0x160DA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFSQAAWl', symObjAddr: 0x81F0, symBinAddr: 0xCD250, symSize: 0x40 } + - { offset: 0x160DB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8230, symBinAddr: 0xCD290, symSize: 0x4 } + - { offset: 0x160DCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFSQAAWl', symObjAddr: 0x8234, symBinAddr: 0xCD294, symSize: 0x40 } + - { offset: 0x160DE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSHAASQWb', symObjAddr: 0x8274, symBinAddr: 0xCD2D4, symSize: 0x4 } + - { offset: 0x160DF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOAESQAAWl', symObjAddr: 0x8278, symBinAddr: 0xCD2D8, symSize: 0x40 } + - { offset: 0x160E08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x82B8, symBinAddr: 0xCD318, symSize: 0x4 } + - { offset: 0x160E1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x82BC, symBinAddr: 0xCD31C, symSize: 0x40 } + - { offset: 0x160E30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x82FC, symBinAddr: 0xCD35C, symSize: 0x4 } + - { offset: 0x160E44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x8300, symBinAddr: 0xCD360, symSize: 0x40 } + - { offset: 0x160E58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8340, symBinAddr: 0xCD3A0, symSize: 0x4 } + - { offset: 0x160E6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x8344, symBinAddr: 0xCD3A4, symSize: 0x40 } + - { offset: 0x160E80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8384, symBinAddr: 0xCD3E4, symSize: 0x4 } + - { offset: 0x160E94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x8388, symBinAddr: 0xCD3E8, symSize: 0x40 } + - { offset: 0x160EA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x83C8, symBinAddr: 0xCD428, symSize: 0x4 } + - { offset: 0x160EBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x83CC, symBinAddr: 0xCD42C, symSize: 0x40 } + - { offset: 0x160ED0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x840C, symBinAddr: 0xCD46C, symSize: 0x4 } + - { offset: 0x160EE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFSQAAWl', symObjAddr: 0x8410, symBinAddr: 0xCD470, symSize: 0x40 } + - { offset: 0x160EF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8450, symBinAddr: 0xCD4B0, symSize: 0x4 } + - { offset: 0x160F0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8454, symBinAddr: 0xCD4B4, symSize: 0x40 } + - { offset: 0x160F20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8494, symBinAddr: 0xCD4F4, symSize: 0x4 } + - { offset: 0x160F34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x8498, symBinAddr: 0xCD4F8, symSize: 0x40 } + - { offset: 0x160F48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x84D8, symBinAddr: 0xCD538, symSize: 0x4 } + - { offset: 0x160F5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x84DC, symBinAddr: 0xCD53C, symSize: 0x40 } + - { offset: 0x160F70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x851C, symBinAddr: 0xCD57C, symSize: 0x4 } + - { offset: 0x160F84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x8520, symBinAddr: 0xCD580, symSize: 0x40 } + - { offset: 0x160F98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8560, symBinAddr: 0xCD5C0, symSize: 0x4 } + - { offset: 0x160FAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8564, symBinAddr: 0xCD5C4, symSize: 0x40 } + - { offset: 0x160FC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x85A4, symBinAddr: 0xCD604, symSize: 0x4 } + - { offset: 0x160FD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x85A8, symBinAddr: 0xCD608, symSize: 0x40 } + - { offset: 0x160FE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x85E8, symBinAddr: 0xCD648, symSize: 0x4 } + - { offset: 0x160FFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x85EC, symBinAddr: 0xCD64C, symSize: 0x40 } + - { offset: 0x161010, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x862C, symBinAddr: 0xCD68C, symSize: 0x4 } + - { offset: 0x161024, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x8630, symBinAddr: 0xCD690, symSize: 0x40 } + - { offset: 0x161038, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8670, symBinAddr: 0xCD6D0, symSize: 0x4 } + - { offset: 0x16104C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8674, symBinAddr: 0xCD6D4, symSize: 0x40 } + - { offset: 0x161060, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x86B4, symBinAddr: 0xCD714, symSize: 0x4 } + - { offset: 0x161074, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x86B8, symBinAddr: 0xCD718, symSize: 0x40 } + - { offset: 0x161088, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x86F8, symBinAddr: 0xCD758, symSize: 0x4 } + - { offset: 0x16109C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x86FC, symBinAddr: 0xCD75C, symSize: 0x40 } + - { offset: 0x1610B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x873C, symBinAddr: 0xCD79C, symSize: 0x4 } + - { offset: 0x1610C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x8740, symBinAddr: 0xCD7A0, symSize: 0x40 } + - { offset: 0x1610D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8780, symBinAddr: 0xCD7E0, symSize: 0x4 } + - { offset: 0x1610EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8784, symBinAddr: 0xCD7E4, symSize: 0x40 } + - { offset: 0x161100, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x87C4, symBinAddr: 0xCD824, symSize: 0x4 } + - { offset: 0x161114, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x87C8, symBinAddr: 0xCD828, symSize: 0x40 } + - { offset: 0x161128, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8808, symBinAddr: 0xCD868, symSize: 0x4 } + - { offset: 0x16113C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x880C, symBinAddr: 0xCD86C, symSize: 0x40 } + - { offset: 0x161150, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x884C, symBinAddr: 0xCD8AC, symSize: 0x4 } + - { offset: 0x161164, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x8850, symBinAddr: 0xCD8B0, symSize: 0x40 } + - { offset: 0x161178, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8890, symBinAddr: 0xCD8F0, symSize: 0x4 } + - { offset: 0x16118C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8894, symBinAddr: 0xCD8F4, symSize: 0x40 } + - { offset: 0x1611A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x88D4, symBinAddr: 0xCD934, symSize: 0x4 } + - { offset: 0x1611B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x88D8, symBinAddr: 0xCD938, symSize: 0x40 } + - { offset: 0x1611C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0I3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8918, symBinAddr: 0xCD978, symSize: 0x4 } + - { offset: 0x1611DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x891C, symBinAddr: 0xCD97C, symSize: 0x40 } + - { offset: 0x1611F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0I3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x895C, symBinAddr: 0xCD9BC, symSize: 0x4 } + - { offset: 0x161204, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x8960, symBinAddr: 0xCD9C0, symSize: 0x40 } + - { offset: 0x161218, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x89A0, symBinAddr: 0xCDA00, symSize: 0x40 } + - { offset: 0x16122C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x8B2C, symBinAddr: 0xCDA48, symSize: 0x10 } + - { offset: 0x161240, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8B3C, symBinAddr: 0xCDA58, symSize: 0x4 } + - { offset: 0x161254, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x8B40, symBinAddr: 0xCDA5C, symSize: 0x40 } + - { offset: 0x161268, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8B80, symBinAddr: 0xCDA9C, symSize: 0x4 } + - { offset: 0x16127C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8B84, symBinAddr: 0xCDAA0, symSize: 0x40 } + - { offset: 0x161290, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8BC4, symBinAddr: 0xCDAE0, symSize: 0x4 } + - { offset: 0x1612A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x8BC8, symBinAddr: 0xCDAE4, symSize: 0x40 } + - { offset: 0x161359, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x32C, symBinAddr: 0xC6164, symSize: 0x28 } + - { offset: 0x161375, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x354, symBinAddr: 0xC618C, symSize: 0x28 } + - { offset: 0x161391, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0xEE4, symBinAddr: 0xC6C94, symSize: 0x28 } + - { offset: 0x1613AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0xF0C, symBinAddr: 0xC6CBC, symSize: 0x28 } + - { offset: 0x1613CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x101C, symBinAddr: 0xC6D4C, symSize: 0x28 } + - { offset: 0x1613EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x1044, symBinAddr: 0xC6D74, symSize: 0x28 } + - { offset: 0x16140D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x11C0, symBinAddr: 0xC6EA0, symSize: 0x28 } + - { offset: 0x161429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x11E8, symBinAddr: 0xC6EC8, symSize: 0x28 } + - { offset: 0x16144B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x1380, symBinAddr: 0xC7054, symSize: 0x28 } + - { offset: 0x161467, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x13A8, symBinAddr: 0xC707C, symSize: 0x28 } + - { offset: 0x161489, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x14B0, symBinAddr: 0xC7178, symSize: 0x28 } + - { offset: 0x1614A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x14D8, symBinAddr: 0xC71A0, symSize: 0x28 } + - { offset: 0x1614C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x161C, symBinAddr: 0xC72D8, symSize: 0x28 } + - { offset: 0x1614E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x1644, symBinAddr: 0xC7300, symSize: 0x28 } + - { offset: 0x16155A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x1B30, symBinAddr: 0xC775C, symSize: 0x28 } + - { offset: 0x161576, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x1B58, symBinAddr: 0xC7784, symSize: 0x28 } + - { offset: 0x161592, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x314C, symBinAddr: 0xC8C9C, symSize: 0x28 } + - { offset: 0x1615AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x3174, symBinAddr: 0xC8CC4, symSize: 0x28 } + - { offset: 0x1615D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x434C, symBinAddr: 0xC9D40, symSize: 0x28 } + - { offset: 0x1615EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x4374, symBinAddr: 0xC9D68, symSize: 0x28 } + - { offset: 0x16160E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x4850, symBinAddr: 0xCA244, symSize: 0xC } + - { offset: 0x161675, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x485C, symBinAddr: 0xCA250, symSize: 0xD8 } + - { offset: 0x161735, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x4934, symBinAddr: 0xCA328, symSize: 0xB4 } + - { offset: 0x1617B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x49E8, symBinAddr: 0xCA3DC, symSize: 0xD4 } + - { offset: 0x161855, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x4C44, symBinAddr: 0xCA62C, symSize: 0x28 } + - { offset: 0x161871, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x4C6C, symBinAddr: 0xCA654, symSize: 0x28 } + - { offset: 0x1618EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0I3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x280, symBinAddr: 0xC60D0, symSize: 0x10 } + - { offset: 0x16191B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0I3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x290, symBinAddr: 0xC60E0, symSize: 0x84 } + - { offset: 0x161985, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x3C0, symBinAddr: 0xC61D4, symSize: 0xF8 } + - { offset: 0x1619B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x4B8, symBinAddr: 0xC62CC, symSize: 0x150 } + - { offset: 0x1619E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x630, symBinAddr: 0xC6444, symSize: 0x20 } + - { offset: 0x1619FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0x7FC, symBinAddr: 0xC65B8, symSize: 0x1AC } + - { offset: 0x161A2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0x9A8, symBinAddr: 0xC6764, symSize: 0x224 } + - { offset: 0x161A5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0xBCC, symBinAddr: 0xC6988, symSize: 0x190 } + - { offset: 0x161A8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0xD5C, symBinAddr: 0xC6B18, symSize: 0x17C } + - { offset: 0x161ABF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xF60, symBinAddr: 0xC6D10, symSize: 0x30 } + - { offset: 0x161ADF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x10CC, symBinAddr: 0xC6DFC, symSize: 0x30 } + - { offset: 0x161B16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0x1140, symBinAddr: 0xC6E2C, symSize: 0x44 } + - { offset: 0x161B4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1184, symBinAddr: 0xC6E70, symSize: 0x24 } + - { offset: 0x161B8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x1210, symBinAddr: 0xC6EF0, symSize: 0x2C } + - { offset: 0x161BB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x123C, symBinAddr: 0xC6F1C, symSize: 0x1C } + - { offset: 0x161BDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0x1258, symBinAddr: 0xC6F38, symSize: 0xEC } + - { offset: 0x161C1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1344, symBinAddr: 0xC7024, symSize: 0x24 } + - { offset: 0x161C44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAsAIP8intValuexSgSi_tcfCTW', symObjAddr: 0x1374, symBinAddr: 0xC7048, symSize: 0xC } + - { offset: 0x161C6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x13D0, symBinAddr: 0xC70A4, symSize: 0x48 } + - { offset: 0x161C94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1418, symBinAddr: 0xC70EC, symSize: 0x14 } + - { offset: 0x161CBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0x142C, symBinAddr: 0xC7100, symSize: 0x54 } + - { offset: 0x161D04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1480, symBinAddr: 0xC7154, symSize: 0x24 } + - { offset: 0x161D40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x1500, symBinAddr: 0xC71C8, symSize: 0x40 } + - { offset: 0x161D69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1540, symBinAddr: 0xC7208, symSize: 0x14 } + - { offset: 0x161D94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0x1554, symBinAddr: 0xC721C, symSize: 0x8C } + - { offset: 0x161DD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0x15E0, symBinAddr: 0xC72A8, symSize: 0x24 } + - { offset: 0x161E0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x166C, symBinAddr: 0xC7328, symSize: 0x40 } + - { offset: 0x161E35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x16AC, symBinAddr: 0xC7368, symSize: 0x14 } + - { offset: 0x161EE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC8getFloor7Penguin0F0CSgyF', symObjAddr: 0x16C0, symBinAddr: 0xC737C, symSize: 0x164 } + - { offset: 0x1620A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueSSvg', symObjAddr: 0x1824, symBinAddr: 0xC74E0, symSize: 0x244 } + - { offset: 0x1620DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x1AEC, symBinAddr: 0xC7724, symSize: 0x8 } + - { offset: 0x162103, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1AF4, symBinAddr: 0xC772C, symSize: 0x24 } + - { offset: 0x16212C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x1B24, symBinAddr: 0xC7750, symSize: 0xC } + - { offset: 0x162140, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataCfd', symObjAddr: 0x1B80, symBinAddr: 0xC77AC, symSize: 0xC4 } + - { offset: 0x162163, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataCfD', symObjAddr: 0x1C44, symBinAddr: 0xC7870, symSize: 0x20 } + - { offset: 0x162186, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC6encode2toys7Encoder_p_tKF', symObjAddr: 0x1C84, symBinAddr: 0xC78B0, symSize: 0x77C } + - { offset: 0x1621B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x2400, symBinAddr: 0xC802C, symSize: 0xC28 } + - { offset: 0x1621E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x3050, symBinAddr: 0xC8C7C, symSize: 0x20 } + - { offset: 0x162201, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC6encode2toys7Encoder_p_tKF', symObjAddr: 0x31E0, symBinAddr: 0xC8D0C, symSize: 0x14C } + - { offset: 0x162232, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x3E28, symBinAddr: 0xC9910, symSize: 0x1B8 } + - { offset: 0x162263, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0x3FE0, symBinAddr: 0xC9AC8, symSize: 0x12C } + - { offset: 0x162294, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x4198, symBinAddr: 0xC9C1C, symSize: 0x20 } + - { offset: 0x1622BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x423C, symBinAddr: 0xC9C3C, symSize: 0x30 } + - { offset: 0x162311, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x426C, symBinAddr: 0xC9C6C, symSize: 0xD4 } + - { offset: 0x162392, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x439C, symBinAddr: 0xC9D90, symSize: 0x2C } + - { offset: 0x1623BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x43C8, symBinAddr: 0xC9DBC, symSize: 0x1C } + - { offset: 0x1623DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV8imageURLSSSgvg', symObjAddr: 0x459C, symBinAddr: 0xC9F90, symSize: 0xD4 } + - { offset: 0x1624BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV6encode2toys7Encoder_p_tKF', symObjAddr: 0x4670, symBinAddr: 0xCA064, symSize: 0x1E0 } + - { offset: 0x162521, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x4ABC, symBinAddr: 0xCA4B0, symSize: 0x2C } + - { offset: 0x16254A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x4AE8, symBinAddr: 0xCA4DC, symSize: 0x98 } + - { offset: 0x16259A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs0E3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x4B80, symBinAddr: 0xCA574, symSize: 0x94 } + - { offset: 0x1625FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs0E3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x4C14, symBinAddr: 0xCA608, symSize: 0x24 } + - { offset: 0x16265A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x4C94, symBinAddr: 0xCA67C, symSize: 0x4C } + - { offset: 0x162683, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x4CE0, symBinAddr: 0xCA6C8, symSize: 0x14 } + - { offset: 0x16269E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x56C4, symBinAddr: 0xCAD24, symSize: 0x108 } + - { offset: 0x16272C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x57CC, symBinAddr: 0xCAE2C, symSize: 0x1E4 } + - { offset: 0x16274F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x59B0, symBinAddr: 0xCB010, symSize: 0x250 } + - { offset: 0x162881, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x5C00, symBinAddr: 0xCB260, symSize: 0x3E8 } + - { offset: 0x1628A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x5FE8, symBinAddr: 0xCB648, symSize: 0x10C } + - { offset: 0x162932, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x60F4, symBinAddr: 0xCB754, symSize: 0x270 } + - { offset: 0x162955, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x6364, symBinAddr: 0xCB9C4, symSize: 0x1A4 } + - { offset: 0x162A35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x6508, symBinAddr: 0xCBB68, symSize: 0x1C4 } + - { offset: 0x162A58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x66CC, symBinAddr: 0xCBD2C, symSize: 0x708 } + - { offset: 0x162E2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x6DD4, symBinAddr: 0xCC434, symSize: 0x174 } + - { offset: 0x162E57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x6F48, symBinAddr: 0xCC5A8, symSize: 0x5C } + - { offset: 0x162E8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x6FA4, symBinAddr: 0xCC604, symSize: 0x2B4 } + - { offset: 0x163259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xCDB90, symSize: 0x20 } + - { offset: 0x16346F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellCfETo', symObjAddr: 0x2B8, symBinAddr: 0xCDE48, symSize: 0x48 } + - { offset: 0x16349E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellCMa', symObjAddr: 0x300, symBinAddr: 0xCDE90, symSize: 0x20 } + - { offset: 0x1635B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xCDB90, symSize: 0x20 } + - { offset: 0x163616, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xCDBB0, symSize: 0x14 } + - { offset: 0x163667, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0xCDBC4, symSize: 0x20 } + - { offset: 0x1636C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0xCDBE4, symSize: 0x14 } + - { offset: 0x163712, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC27selectionIndicatorImageViewSo07UIImageK0CSgvgTo', symObjAddr: 0x68, symBinAddr: 0xCDBF8, symSize: 0x20 } + - { offset: 0x163767, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC27selectionIndicatorImageViewSo07UIImageK0CSgvsTo', symObjAddr: 0x88, symBinAddr: 0xCDC18, symSize: 0x14 } + - { offset: 0x1637B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC12awakeFromNibyyFTo', symObjAddr: 0x9C, symBinAddr: 0xCDC2C, symSize: 0x3C } + - { offset: 0x16381D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0xD8, symBinAddr: 0xCDC68, symSize: 0xE0 } + - { offset: 0x163882, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1B8, symBinAddr: 0xCDD48, symSize: 0xA8 } + - { offset: 0x1638B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x260, symBinAddr: 0xCDDF0, symSize: 0x28 } + - { offset: 0x1638C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellCfD', symObjAddr: 0x288, symBinAddr: 0xCDE18, symSize: 0x30 } + - { offset: 0x1638FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC9configure4withyAA0F4ItemV_tFTf4xn_n', symObjAddr: 0x320, symBinAddr: 0xCDEB0, symSize: 0x2E8 } + - { offset: 0x163DDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6sysLog_WZ', symObjAddr: 0x0, symBinAddr: 0xCE198, symSize: 0x68 } + - { offset: 0x163E01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6sysLogSo9OS_os_logCvp', symObjAddr: 0x42B0, symBinAddr: 0x384C18, symSize: 0x0 } + - { offset: 0x163E1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6devLogSo9OS_os_logCvp', symObjAddr: 0x42B8, symBinAddr: 0x384C20, symSize: 0x0 } + - { offset: 0x163E29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6sysLog_WZ', symObjAddr: 0x0, symBinAddr: 0xCE198, symSize: 0x68 } + - { offset: 0x163E43, size: 0x8, addend: 0x0, symName: '_$sSo9OS_os_logCMa', symObjAddr: 0x68, symBinAddr: 0xCE200, symSize: 0x44 } + - { offset: 0x163E57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6devLog_WZ', symObjAddr: 0xAC, symBinAddr: 0xCE244, symSize: 0x30 } + - { offset: 0x16420E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC10DerivativeV5rootsSaySfGvg', symObjAddr: 0x0, symBinAddr: 0xCE274, symSize: 0x1C0 } + - { offset: 0x164232, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointV7minimumAEvpZ', symObjAddr: 0x72B0, symBinAddr: 0x384C28, symSize: 0x0 } + - { offset: 0x164379, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointV7minimum_WZ', symObjAddr: 0x1C0, symBinAddr: 0xCE434, symSize: 0x10 } + - { offset: 0x164518, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC10DerivativeV5rootsSaySfGvg', symObjAddr: 0x0, symBinAddr: 0xCE274, symSize: 0x1C0 } + - { offset: 0x1648DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC12BoundsFinderV04makeG04from8control18control22toAC5PointV3min_AN3maxtAN_A3NtFZTf4nnnnd_n', symObjAddr: 0x1D0, symBinAddr: 0xCE444, symSize: 0x2C8 } + - { offset: 0x164FC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC9tintColor04fillI05imageACSo7UIColorC_AHSo7UIImageCtcfc', symObjAddr: 0x0, symBinAddr: 0xCE70C, symSize: 0x328 } + - { offset: 0x165202, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewCfETo', symObjAddr: 0x6C8, symBinAddr: 0xCEDD4, symSize: 0x48 } + - { offset: 0x165231, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewCMa', symObjAddr: 0x710, symBinAddr: 0xCEE1C, symSize: 0x20 } + - { offset: 0x165343, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC9tintColor04fillI05imageACSo7UIColorC_AHSo7UIImageCtcfc', symObjAddr: 0x0, symBinAddr: 0xCE70C, symSize: 0x328 } + - { offset: 0x1654C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x328, symBinAddr: 0xCEA34, symSize: 0x178 } + - { offset: 0x165532, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x4A0, symBinAddr: 0xCEBAC, symSize: 0x28 } + - { offset: 0x16554D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC4drawyySo6CGRectVFTo', symObjAddr: 0x4C8, symBinAddr: 0xCEBD4, symSize: 0x28 } + - { offset: 0x165577, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC011adjustImageG5Frame33_2FCAADA1E67DE0FBB04DAE24AC8894DBLLyyF', symObjAddr: 0x4F0, symBinAddr: 0xCEBFC, symSize: 0xAC } + - { offset: 0x165694, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC14layoutSubviewsyyFTo', symObjAddr: 0x59C, symBinAddr: 0xCECA8, symSize: 0xD0 } + - { offset: 0x1656E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x66C, symBinAddr: 0xCED78, symSize: 0x2C } + - { offset: 0x165743, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewCfD', symObjAddr: 0x698, symBinAddr: 0xCEDA4, symSize: 0x30 } + - { offset: 0x165795, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC4drawyySo6CGRectVFTf4dn_n', symObjAddr: 0x730, symBinAddr: 0xCEE3C, symSize: 0x374 } + - { offset: 0x165D6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xCF1B0, symSize: 0x10 } + - { offset: 0x166528, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellCfETo', symObjAddr: 0x16DC, symBinAddr: 0xD088C, symSize: 0xC0 } + - { offset: 0x166557, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellCMa', symObjAddr: 0x179C, symBinAddr: 0xD094C, symSize: 0x20 } + - { offset: 0x16656B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVSgWOy', symObjAddr: 0x17F8, symBinAddr: 0xD096C, symSize: 0x3C } + - { offset: 0x166945, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xCF1B0, symSize: 0x10 } + - { offset: 0x16695D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xCF1B0, symSize: 0x10 } + - { offset: 0x1669A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointStackViewSo07UIStackI0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0xCF1C0, symSize: 0x34 } + - { offset: 0x1669F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15secondPointViewSo6UIViewCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xCF1F4, symSize: 0x10 } + - { offset: 0x166A0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15secondPointViewSo6UIViewCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xCF1F4, symSize: 0x10 } + - { offset: 0x166A4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15secondPointViewSo6UIViewCSgvsTo', symObjAddr: 0x54, symBinAddr: 0xCF204, symSize: 0x34 } + - { offset: 0x166A99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15firstPointLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0xCF238, symSize: 0x10 } + - { offset: 0x166AB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15firstPointLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0xCF238, symSize: 0x10 } + - { offset: 0x166AF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15firstPointLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0xCF248, symSize: 0x34 } + - { offset: 0x166B40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC16secondPointLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0xCF27C, symSize: 0x10 } + - { offset: 0x166B58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC16secondPointLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0xCF27C, symSize: 0x10 } + - { offset: 0x166B93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC16secondPointLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0xCF28C, symSize: 0x34 } + - { offset: 0x166BE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0xCF2C0, symSize: 0x10 } + - { offset: 0x166BFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0xCF2C0, symSize: 0x10 } + - { offset: 0x166C35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC11lengthLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0xCF2D0, symSize: 0x34 } + - { offset: 0x166C84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15lengthUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0xCF304, symSize: 0x10 } + - { offset: 0x166C9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15lengthUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0xCF304, symSize: 0x10 } + - { offset: 0x166CD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15lengthUnitLabelSo7UILabelCSgvsTo', symObjAddr: 0x164, symBinAddr: 0xCF314, symSize: 0x34 } + - { offset: 0x166D26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0xCF348, symSize: 0x10 } + - { offset: 0x166D3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0xCF348, symSize: 0x10 } + - { offset: 0x166D79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC13durationLabelSo7UILabelCSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0xCF358, symSize: 0x34 } + - { offset: 0x166DC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0xCF38C, symSize: 0x10 } + - { offset: 0x166DE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0xCF38C, symSize: 0x10 } + - { offset: 0x166E20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointImageViewSo07UIImageI0CSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0xCF39C, symSize: 0x34 } + - { offset: 0x166E6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC20secondPointImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0x220, symBinAddr: 0xCF3D0, symSize: 0x10 } + - { offset: 0x166E87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC20secondPointImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0x220, symBinAddr: 0xCF3D0, symSize: 0x10 } + - { offset: 0x166EC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC20secondPointImageViewSo07UIImageI0CSgvsTo', symObjAddr: 0x230, symBinAddr: 0xCF3E0, symSize: 0x34 } + - { offset: 0x166F11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC12awakeFromNibyyFTo', symObjAddr: 0x264, symBinAddr: 0xCF414, symSize: 0x68 } + - { offset: 0x167098, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC9configure3for2atyAA0D0VSg_SitF', symObjAddr: 0x2CC, symBinAddr: 0xCF47C, symSize: 0x884 } + - { offset: 0x167655, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC10removeDotsyyF', symObjAddr: 0xB50, symBinAddr: 0xCFD00, symSize: 0x244 } + - { offset: 0x1679AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC8drawDotsyyF', symObjAddr: 0xD94, symBinAddr: 0xCFF44, symSize: 0x32C } + - { offset: 0x167ADB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15prepareForReuseyyF', symObjAddr: 0x10C0, symBinAddr: 0xD0270, symSize: 0x354 } + - { offset: 0x167C7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15prepareForReuseyyFTo', symObjAddr: 0x1414, symBinAddr: 0xD05C4, symSize: 0x28 } + - { offset: 0x167C91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x143C, symBinAddr: 0xD05EC, symSize: 0x110 } + - { offset: 0x167CD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x154C, symBinAddr: 0xD06FC, symSize: 0x48 } + - { offset: 0x167CE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1594, symBinAddr: 0xD0744, symSize: 0xF0 } + - { offset: 0x167D19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1684, symBinAddr: 0xD0834, symSize: 0x28 } + - { offset: 0x167D2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellCfD', symObjAddr: 0x16AC, symBinAddr: 0xD085C, symSize: 0x30 } + - { offset: 0x167D7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC9getLetter3for2atSo7UIImageCSgSo0J4ViewCSg_SitFTf4dnd_n', symObjAddr: 0x1878, symBinAddr: 0xD09A8, symSize: 0x314 } + - { offset: 0x168249, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC24setParkingLocationButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD0CBC, symSize: 0x10 } + - { offset: 0x168559, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellCfETo', symObjAddr: 0xC08, symBinAddr: 0xD18C4, symSize: 0x70 } + - { offset: 0x168588, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellCMa', symObjAddr: 0xC78, symBinAddr: 0xD1934, symSize: 0x20 } + - { offset: 0x16859C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC23didTapSaveParkingButtonyyFyycACcfu_yycfu0_TA', symObjAddr: 0xD28, symBinAddr: 0xD1978, symSize: 0x20 } + - { offset: 0x1686E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC24setParkingLocationButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD0CBC, symSize: 0x10 } + - { offset: 0x1686FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC24setParkingLocationButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD0CBC, symSize: 0x10 } + - { offset: 0x168741, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC24setParkingLocationButtonSo8UIButtonCSgvsTo', symObjAddr: 0x10, symBinAddr: 0xD0CCC, symSize: 0x34 } + - { offset: 0x168790, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xD0D00, symSize: 0x10 } + - { offset: 0x1687A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x44, symBinAddr: 0xD0D00, symSize: 0x10 } + - { offset: 0x1687E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueButtonSo8UIButtonCSgvsTo', symObjAddr: 0x54, symBinAddr: 0xD0D10, symSize: 0x34 } + - { offset: 0x168832, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x88, symBinAddr: 0xD0D44, symSize: 0x10 } + - { offset: 0x16884A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x88, symBinAddr: 0xD0D44, symSize: 0x10 } + - { offset: 0x168885, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x98, symBinAddr: 0xD0D54, symSize: 0x34 } + - { offset: 0x168916, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC12awakeFromNibyyF', symObjAddr: 0xCC, symBinAddr: 0xD0D88, symSize: 0x19C } + - { offset: 0x1689F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x268, symBinAddr: 0xD0F24, symSize: 0x28 } + - { offset: 0x168A7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC9configureyyF', symObjAddr: 0x290, symBinAddr: 0xD0F4C, symSize: 0xC8 } + - { offset: 0x168B8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC19shareLocationActionyySo8UIButtonCFTo', symObjAddr: 0x358, symBinAddr: 0xD1014, symSize: 0x70 } + - { offset: 0x168D0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC23didTapSaveParkingButtonyyF', symObjAddr: 0x3C8, symBinAddr: 0xD1084, symSize: 0x4DC } + - { offset: 0x1690F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC23didTapSaveParkingButtonyyFTo', symObjAddr: 0x8A4, symBinAddr: 0xD1560, symSize: 0x28 } + - { offset: 0x16912D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC11saveParkingyyF', symObjAddr: 0x8CC, symBinAddr: 0xD1588, symSize: 0x124 } + - { offset: 0x169226, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueActionyySo8UIButtonCFTo', symObjAddr: 0x9F0, symBinAddr: 0xD16AC, symSize: 0x4 } + - { offset: 0x16923E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueActionyySo8UIButtonCFTo', symObjAddr: 0x9F0, symBinAddr: 0xD16AC, symSize: 0x4 } + - { offset: 0x169250, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfc', symObjAddr: 0x9F4, symBinAddr: 0xD16B0, symSize: 0xC8 } + - { offset: 0x169291, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0xABC, symBinAddr: 0xD1778, symSize: 0x48 } + - { offset: 0x1692C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB04, symBinAddr: 0xD17C0, symSize: 0xAC } + - { offset: 0x1692FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xBB0, symBinAddr: 0xD186C, symSize: 0x28 } + - { offset: 0x169310, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellCfD', symObjAddr: 0xBD8, symBinAddr: 0xD1894, symSize: 0x30 } + - { offset: 0x169333, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueActionyySo8UIButtonCFTf4dd_n', symObjAddr: 0xD48, symBinAddr: 0xD1998, symSize: 0xE0 } + - { offset: 0x1696C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCfE', symObjAddr: 0x0, symBinAddr: 0xD1A78, symSize: 0x38 } + - { offset: 0x1696E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCfE', symObjAddr: 0x0, symBinAddr: 0xD1A78, symSize: 0x38 } + - { offset: 0x169749, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCMU', symObjAddr: 0xBC, symBinAddr: 0xD1B34, symSize: 0x8 } + - { offset: 0x16975D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCMa', symObjAddr: 0xC4, symBinAddr: 0xD1B3C, symSize: 0x38 } + - { offset: 0x169771, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCMr', symObjAddr: 0xFC, symBinAddr: 0xD1B74, symSize: 0x88 } + - { offset: 0x1697BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCfD', symObjAddr: 0x38, symBinAddr: 0xD1AB0, symSize: 0x84 } + - { offset: 0x16A0D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC19updateLayoutForText04textF0ySo06UITextF0C_tF', symObjAddr: 0x794, symBinAddr: 0xD2390, symSize: 0x168 } + - { offset: 0x16A17D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC19updateLayoutForText04textF0ySo06UITextF0C_tFyycfU_', symObjAddr: 0x1724, symBinAddr: 0xD3320, symSize: 0x48 } + - { offset: 0x16A287, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCfE', symObjAddr: 0x12B0, symBinAddr: 0xD2EAC, symSize: 0x6C } + - { offset: 0x16A2B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCfETo', symObjAddr: 0x134C, symBinAddr: 0xD2F48, symSize: 0x78 } + - { offset: 0x16A2E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCMa', symObjAddr: 0x13C4, symBinAddr: 0xD2FC0, symSize: 0x20 } + - { offset: 0x16A306, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF15DidBeginEditingyySo06UITextF0CFTo', symObjAddr: 0x13E4, symBinAddr: 0xD2FE0, symSize: 0x54 } + - { offset: 0x16A347, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF13DidEndEditingyySo06UITextF0CFTo', symObjAddr: 0x1438, symBinAddr: 0xD3034, symSize: 0x50 } + - { offset: 0x16A388, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF0_18shouldChangeTextIn011replacementK0SbSo06UITextF0C_So8_NSRangeVSStFTo', symObjAddr: 0x1488, symBinAddr: 0xD3084, symSize: 0x98 } + - { offset: 0x16A3E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF9DidChangeyySo06UITextF0CF', symObjAddr: 0x1520, symBinAddr: 0xD311C, symSize: 0x1B4 } + - { offset: 0x16A4BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF9DidChangeyySo06UITextF0CFTo', symObjAddr: 0x16D4, symBinAddr: 0xD32D0, symSize: 0x50 } + - { offset: 0x16A4E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyF', symObjAddr: 0x176C, symBinAddr: 0xD3368, symSize: 0xE8 } + - { offset: 0x16A594, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x1854, symBinAddr: 0xD3450, symSize: 0x34 } + - { offset: 0x16A5C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x1888, symBinAddr: 0xD3484, symSize: 0x24 } + - { offset: 0x16A645, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x18AC, symBinAddr: 0xD34A8, symSize: 0x228 } + - { offset: 0x16A88B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x1AD4, symBinAddr: 0xD36D0, symSize: 0x28 } + - { offset: 0x16A8B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1AFC, symBinAddr: 0xD36F8, symSize: 0xC } + - { offset: 0x16A8E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF0_18shouldChangeTextIn011replacementK0SbSo06UITextF0C_So8_NSRangeVSStFTf4nnnd_n', symObjAddr: 0x1C64, symBinAddr: 0xD3860, symSize: 0x164 } + - { offset: 0x16A978, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4dnn_n', symObjAddr: 0x1DC8, symBinAddr: 0xD39C4, symSize: 0x1F0 } + - { offset: 0x16AB6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC19updateLayoutForText04textF0ySo06UITextF0C_tFyycfU_TA', symObjAddr: 0x2020, symBinAddr: 0xD3BD8, symSize: 0x8 } + - { offset: 0x16AB81, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2028, symBinAddr: 0xD3BE0, symSize: 0x10 } + - { offset: 0x16AB95, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2038, symBinAddr: 0xD3BF0, symSize: 0x8 } + - { offset: 0x16AD8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14labelTextfieldAA022PlaceholderEnabledTextF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD1BFC, symSize: 0x20 } + - { offset: 0x16ADEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14labelTextfieldAA022PlaceholderEnabledTextF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xD1C1C, symSize: 0x14 } + - { offset: 0x16AEFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC9nameLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0xD1C30, symSize: 0x20 } + - { offset: 0x16AF58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC9nameLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0xD1C50, symSize: 0x14 } + - { offset: 0x16AFA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x68, symBinAddr: 0xD1C64, symSize: 0x20 } + - { offset: 0x16AFFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0x88, symBinAddr: 0xD1C84, symSize: 0x14 } + - { offset: 0x16B03B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC13maximumHeight33_D05BDCBC073B527819C56126746805B0LL12CoreGraphics7CGFloatVvg', symObjAddr: 0x9C, symBinAddr: 0xD1C98, symSize: 0x34 } + - { offset: 0x16B06C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC24labelFieldHeightConstantSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0xD0, symBinAddr: 0xD1CCC, symSize: 0x20 } + - { offset: 0x16B0C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC24labelFieldHeightConstantSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0xF0, symBinAddr: 0xD1CEC, symSize: 0x14 } + - { offset: 0x16B16E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14applicableFont33_D05BDCBC073B527819C56126746805B0LLSo6UIFontCvpfiAGyXEfU_', symObjAddr: 0x104, symBinAddr: 0xD1D00, symSize: 0x11C } + - { offset: 0x16B259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x220, symBinAddr: 0xD1E1C, symSize: 0xB0 } + - { offset: 0x16B30A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x2D0, symBinAddr: 0xD1ECC, symSize: 0x28 } + - { offset: 0x16B3A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC03setC0yyF', symObjAddr: 0x2F8, symBinAddr: 0xD1EF4, symSize: 0x49C } + - { offset: 0x16B72D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC21setAddressInformationyyF', symObjAddr: 0x8FC, symBinAddr: 0xD24F8, symSize: 0xE8 } + - { offset: 0x16B810, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0x9E4, symBinAddr: 0xD25E0, symSize: 0x44 } + - { offset: 0x16B86B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0xA28, symBinAddr: 0xD2624, symSize: 0x98 } + - { offset: 0x16B8DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC5closeyySo8UIButtonCFTo', symObjAddr: 0xAC0, symBinAddr: 0xD26BC, symSize: 0x38 } + - { offset: 0x16B910, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC4saveyySo8UIButtonCFTo', symObjAddr: 0xAF8, symBinAddr: 0xD26F4, symSize: 0x4C } + - { offset: 0x16B947, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC06updateD033_D05BDCBC073B527819C56126746805B0LLyyF', symObjAddr: 0xB44, symBinAddr: 0xD2740, symSize: 0x170 } + - { offset: 0x16BA18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC15saveSharedPlace33_D05BDCBC073B527819C56126746805B0LLyyF', symObjAddr: 0xCB4, symBinAddr: 0xD28B0, symSize: 0x2F0 } + - { offset: 0x16BC84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xFA4, symBinAddr: 0xD2BA0, symSize: 0x158 } + - { offset: 0x16BCC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x10FC, symBinAddr: 0xD2CF8, symSize: 0x60 } + - { offset: 0x16BCD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x115C, symBinAddr: 0xD2D58, symSize: 0x12C } + - { offset: 0x16BD0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1288, symBinAddr: 0xD2E84, symSize: 0x28 } + - { offset: 0x16BD20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCfD', symObjAddr: 0x131C, symBinAddr: 0xD2F18, symSize: 0x30 } + - { offset: 0x16BEAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC4saveyySo8UIButtonCFTf4dn_n', symObjAddr: 0x1B08, symBinAddr: 0xD3704, symSize: 0xB4 } + - { offset: 0x16CC1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCfE', symObjAddr: 0x12C0, symBinAddr: 0xD4EB8, symSize: 0x130 } + - { offset: 0x16CC49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCfETo', symObjAddr: 0x1420, symBinAddr: 0xD5018, symSize: 0x13C } + - { offset: 0x16CC78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCMa', symObjAddr: 0x155C, symBinAddr: 0xD5154, symSize: 0x20 } + - { offset: 0x16CC9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_22numberOfItemsInSectionSiSo012UICollectionF0C_SitFTo', symObjAddr: 0x157C, symBinAddr: 0xD5174, symSize: 0x5C } + - { offset: 0x16CD5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_13cellForItemAtSo012UICollectionF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x15D8, symBinAddr: 0xD51D0, symSize: 0x474 } + - { offset: 0x16D3E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_13cellForItemAtSo012UICollectionF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1A4C, symBinAddr: 0xD5644, symSize: 0xB8 } + - { offset: 0x16D3FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_15didSelectItemAtySo012UICollectionF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1B04, symBinAddr: 0xD56FC, symSize: 0x140 } + - { offset: 0x16D543, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC23updateCategoryInFilters6sourceyAA13TagDataSource_p_tF', symObjAddr: 0x1C44, symBinAddr: 0xD583C, symSize: 0x198 } + - { offset: 0x16D7D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC24updateAmenitiesInFilters6sourceyAA13TagDataSource_p_tF', symObjAddr: 0x1DDC, symBinAddr: 0xD59D4, symSize: 0x198 } + - { offset: 0x16DA67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_15didSelectItemAtySo012UICollectionF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1F74, symBinAddr: 0xD5B6C, symSize: 0xB0 } + - { offset: 0x16DAA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x2024, symBinAddr: 0xD5C1C, symSize: 0x78 } + - { offset: 0x16DB1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x209C, symBinAddr: 0xD5C94, symSize: 0x24 } + - { offset: 0x16DB9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC10setupPanelyyF', symObjAddr: 0x20C0, symBinAddr: 0xD5CB8, symSize: 0x124 } + - { offset: 0x16DC79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC10setupPanelyyFTo', symObjAddr: 0x21E4, symBinAddr: 0xD5DDC, symSize: 0x28 } + - { offset: 0x16DCCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x2288, symBinAddr: 0xD5E04, symSize: 0xC8 } + - { offset: 0x16DD00, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x237C, symBinAddr: 0xD5EF0, symSize: 0x10 } + - { offset: 0x16DD14, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x238C, symBinAddr: 0xD5F00, symSize: 0x8 } + - { offset: 0x16DD28, size: 0x8, addend: 0x0, symName: '_$sSo16UICollectionViewCMa', symObjAddr: 0x23F8, symBinAddr: 0xD5F08, symSize: 0x44 } + - { offset: 0x16DD3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_22numberOfItemsInSectionSiSo012UICollectionF0C_SitFTf4ndn_n', symObjAddr: 0x25E4, symBinAddr: 0xD608C, symSize: 0xA4 } + - { offset: 0x16DDD8, size: 0x8, addend: 0x0, symName: _keypath_get_selector_contentSize, symObjAddr: 0x26A8, symBinAddr: 0xD6130, symSize: 0xC } + - { offset: 0x16DDEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC11viewDidLoadyyFySo012UICollectionF0C_10Foundation24NSKeyValueObservedChangeVySo6CGSizeVGtYbcfU_TA', symObjAddr: 0x26F8, symBinAddr: 0xD6180, symSize: 0x28 } + - { offset: 0x16DE00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC11viewDidLoadyyFySo012UICollectionF0C_10Foundation24NSKeyValueObservedChangeVySo6CGSizeVGtYbcfU0_TA', symObjAddr: 0x2720, symBinAddr: 0xD61A8, symSize: 0x28 } + - { offset: 0x16DE78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC019amenitiesCollectionF0So012UICollectionF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD3BF8, symSize: 0x20 } + - { offset: 0x16DED8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC019amenitiesCollectionF0So012UICollectionF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xD3C18, symSize: 0x14 } + - { offset: 0x16DF29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC020categoriesCollectionF0So012UICollectionF0CSgvgTo', symObjAddr: 0x34, symBinAddr: 0xD3C2C, symSize: 0x20 } + - { offset: 0x16DF7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC020categoriesCollectionF0So012UICollectionF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0xD3C4C, symSize: 0x14 } + - { offset: 0x16DFCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC13openNowSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x68, symBinAddr: 0xD3C60, symSize: 0x10 } + - { offset: 0x16DFE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC13openNowSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x68, symBinAddr: 0xD3C60, symSize: 0x10 } + - { offset: 0x16E027, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC13openNowSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x78, symBinAddr: 0xD3C70, symSize: 0x34 } + - { offset: 0x16E076, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC16categoriesHeightSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0xAC, symBinAddr: 0xD3CA4, symSize: 0x20 } + - { offset: 0x16E0D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC16categoriesHeightSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0xCC, symBinAddr: 0xD3CC4, symSize: 0x14 } + - { offset: 0x16E121, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC15amenitiesHeightSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0xE0, symBinAddr: 0xD3CD8, symSize: 0x20 } + - { offset: 0x16E176, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC15amenitiesHeightSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x100, symBinAddr: 0xD3CF8, symSize: 0x14 } + - { offset: 0x16E1C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC08amentiesF0So6UIViewCSgvgTo', symObjAddr: 0x114, symBinAddr: 0xD3D0C, symSize: 0x20 } + - { offset: 0x16E221, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC08amentiesF0So6UIViewCSgvsTo', symObjAddr: 0x134, symBinAddr: 0xD3D2C, symSize: 0x14 } + - { offset: 0x16E272, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x148, symBinAddr: 0xD3D40, symSize: 0x20 } + - { offset: 0x16E2CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC06scrollF0So08UIScrollF0CSgvsTo', symObjAddr: 0x168, symBinAddr: 0xD3D60, symSize: 0x14 } + - { offset: 0x16E48D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC11viewDidLoadyyF', symObjAddr: 0x17C, symBinAddr: 0xD3D74, symSize: 0x5E0 } + - { offset: 0x16E8CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x870, symBinAddr: 0xD4468, symSize: 0x28 } + - { offset: 0x16E91B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0x898, symBinAddr: 0xD4490, symSize: 0x44 } + - { offset: 0x16E997, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC9setupDatayyF', symObjAddr: 0x8DC, symBinAddr: 0xD44D4, symSize: 0xAC } + - { offset: 0x16EAC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC5closeyySo8UIButtonCFTo', symObjAddr: 0x988, symBinAddr: 0xD4580, symSize: 0x4C } + - { offset: 0x16EAF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC05applyE0yySo8UIButtonCFTo', symObjAddr: 0x9D4, symBinAddr: 0xD45CC, symSize: 0x4C } + - { offset: 0x16EB31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC13toggleOpenNowyySo8UISwitchCFTo', symObjAddr: 0xA20, symBinAddr: 0xD4618, symSize: 0x54 } + - { offset: 0x16EBD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xA74, symBinAddr: 0xD466C, symSize: 0x3F8 } + - { offset: 0x16ED82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xE6C, symBinAddr: 0xD4A64, symSize: 0x60 } + - { offset: 0x16EDCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xECC, symBinAddr: 0xD4AC4, symSize: 0x3CC } + - { offset: 0x16EF6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1298, symBinAddr: 0xD4E90, symSize: 0x28 } + - { offset: 0x16EF82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCfD', symObjAddr: 0x13F0, symBinAddr: 0xD4FE8, symSize: 0x30 } + - { offset: 0x16F13D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC5closeyySo8UIButtonCFTf4dn_n', symObjAddr: 0x24A4, symBinAddr: 0xD5F4C, symSize: 0x74 } + - { offset: 0x16F1C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC05applyE0yySo8UIButtonCFTf4dn_n', symObjAddr: 0x2518, symBinAddr: 0xD5FC0, symSize: 0xCC } + - { offset: 0x170156, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE9indenting33_AA9324E1861CF61D6C42F582051A183CLL6spacesSSSi_tF', symObjAddr: 0x20D4, symBinAddr: 0xD82A4, symSize: 0x1C4 } + - { offset: 0x170787, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_SS_Tg5048$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_K9SSG_Tt1G5Tf1nnncn_n', symObjAddr: 0x53FC, symBinAddr: 0xDB5CC, symSize: 0x414 } + - { offset: 0x170E72, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5052$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8ef9UI3DOMO10ij2V8K8OG_Tt1G5Tf1nnncn_n', symObjAddr: 0x5810, symBinAddr: 0xDB9E0, symSize: 0x578 } + - { offset: 0x1714AB, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSrySSG_Tg508$sSTsSL7h33RpzrlE6sortedSayABGyFSbAB_ABtcfu_N9SSG_Tt1G5Tf1nncn_n', symObjAddr: 0x5D88, symBinAddr: 0xDBF58, symSize: 0xCC } + - { offset: 0x17162B, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry8PenNavUI3DOMO10StyleSheetV8SelectorOG_Tg508$sSTsSL7h37RpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8ij9UI3DOMO10mn2V8O8OG_Tt1G5Tf1nncn_n', symObjAddr: 0x5E54, symBinAddr: 0xDC024, symSize: 0x160 } + - { offset: 0x17183A, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKFSS_Tg5048$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_L9SSG_Tt1G5Tf1nncn_n', symObjAddr: 0x5FB4, symBinAddr: 0xDC184, symSize: 0x26C } + - { offset: 0x171BBF, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5052$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8fg9UI3DOMO10jk2V8L8OG_Tt1G5Tf1nncn_n', symObjAddr: 0x6220, symBinAddr: 0xDC3F0, symSize: 0x274 } + - { offset: 0x171F5A, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlFSS_Tg5048$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_M9SSG_Tt1G5Tf1nnnnc_n', symObjAddr: 0x6494, symBinAddr: 0xDC664, symSize: 0x224 } + - { offset: 0x172135, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5052$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8gh9UI3DOMO10kl2V8M8OG_Tt1G5Tf1nnnnc_n', symObjAddr: 0x66B8, symBinAddr: 0xDC888, symSize: 0x3C4 } + - { offset: 0x172356, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVWOc', symObjAddr: 0x6A7C, symBinAddr: 0xDCC4C, symSize: 0x3C } + - { offset: 0x17236A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVWOh', symObjAddr: 0x6AB8, symBinAddr: 0xDCC88, symSize: 0x34 } + - { offset: 0x17237E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVACs010TextOutputF0AAWl', symObjAddr: 0x6BAC, symBinAddr: 0xDCCBC, symSize: 0x40 } + - { offset: 0x172392, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOAGsAfAWl', symObjAddr: 0x6BEC, symBinAddr: 0xDCCFC, symSize: 0x40 } + - { offset: 0x1723A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVWOc', symObjAddr: 0x6C88, symBinAddr: 0xDCD3C, symSize: 0x3C } + - { offset: 0x1723BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVWOh', symObjAddr: 0x6CC4, symBinAddr: 0xDCD78, symSize: 0x34 } + - { offset: 0x1723CE, size: 0x8, addend: 0x0, symName: '_$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8PenNavUI3DOMO10StyleSheetV8SelectorOG_Tt1g5', symObjAddr: 0x6D88, symBinAddr: 0xDCDAC, symSize: 0xE0 } + - { offset: 0x172565, size: 0x8, addend: 0x0, symName: '_$sSD5IndexV8_VariantOyS2S__GWOe', symObjAddr: 0x7DA8, symBinAddr: 0xDDD60, symSize: 0xC } + - { offset: 0x172579, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOWOb', symObjAddr: 0x7DF8, symBinAddr: 0xDDD6C, symSize: 0x44 } + - { offset: 0x17258D, size: 0x8, addend: 0x0, symName: ___swift_initWithCopy_strong, symObjAddr: 0x7EBC, symBinAddr: 0xDDDF4, symSize: 0x2C } + - { offset: 0x1725A1, size: 0x8, addend: 0x0, symName: ___swift_destroy_strong, symObjAddr: 0x7EE8, symBinAddr: 0xDDE20, symSize: 0x8 } + - { offset: 0x1725B5, size: 0x8, addend: 0x0, symName: ___swift_assignWithCopy_strong, symObjAddr: 0x7EF0, symBinAddr: 0xDDE28, symSize: 0x38 } + - { offset: 0x1725C9, size: 0x8, addend: 0x0, symName: ___swift_memcpy8_8, symObjAddr: 0x7F28, symBinAddr: 0xDDE60, symSize: 0xC } + - { offset: 0x1725DD, size: 0x8, addend: 0x0, symName: ___swift_assignWithTake_strong, symObjAddr: 0x7F34, symBinAddr: 0xDDE6C, symSize: 0x30 } + - { offset: 0x1725F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOwet', symObjAddr: 0x7F64, symBinAddr: 0xDDE9C, symSize: 0x48 } + - { offset: 0x172605, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOwst', symObjAddr: 0x7FAC, symBinAddr: 0xDDEE4, symSize: 0x3C } + - { offset: 0x172619, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOMa', symObjAddr: 0x7FF8, symBinAddr: 0xDDF20, symSize: 0x10 } + - { offset: 0x172711, size: 0x8, addend: 0x0, symName: '_$sSlsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lFSDyS2SG_SSs5NeverOTg5031$sS3SIgggo_SS3key_SS5valuetSSs5D132OIegnrzr_TR108$s8PenNavUI3XMLO9FormatterV3SVGV18makeStyleAttribute4fromSSSgAA3DOMO22PresentationAttributesV_tFS2S_SStXEfU_Tf3nnnpf_nTf1cn_n', symObjAddr: 0x0, symBinAddr: 0xD61D0, symSize: 0x29C } + - { offset: 0x1729A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOsAfAsAFP7_domainSSvgTW', symObjAddr: 0x330, symBinAddr: 0xD6500, symSize: 0x4 } + - { offset: 0x1729BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOsAfAsAFP5_codeSivgTW', symObjAddr: 0x334, symBinAddr: 0xD6504, symSize: 0x4 } + - { offset: 0x1729DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOsAfAsAFP9_userInfoyXlSgvgTW', symObjAddr: 0x338, symBinAddr: 0xD6508, symSize: 0x4 } + - { offset: 0x1729F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOsAfAsAFP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x33C, symBinAddr: 0xD650C, symSize: 0x4 } + - { offset: 0x17303A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV18makeStyleAttribute4fromSSSgAA3DOMO22PresentationAttributesV_tF', symObjAddr: 0x35C4, symBinAddr: 0xD9794, symSize: 0x108 } + - { offset: 0x1732B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMOAFC_tKF', symObjAddr: 0x340, symBinAddr: 0xD6510, symSize: 0x6BC } + - { offset: 0x1737C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV22makeGraphicsAttributes4fromSDyS2SGAA3DOMO0H7ElementC_tF', symObjAddr: 0x9FC, symBinAddr: 0xD6BCC, symSize: 0x244 } + - { offset: 0x173935, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV10makeStylesySayAC7ElementCGSayAA3DOMO10StyleSheetVGKF', symObjAddr: 0xC40, symBinAddr: 0xD6E10, symSize: 0x18C } + - { offset: 0x173C24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV8makeDefsyAC7ElementCSgAA3DOMOAFC0H0VKF', symObjAddr: 0xDCC, symBinAddr: 0xD6F9C, symSize: 0x2C0 } + - { offset: 0x173FC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV12makeElements4fromSayAC7ElementCGx_tKSTRzAA3DOMO08GraphicsJ0CAJRtzlFSayAPG_Tg5', symObjAddr: 0x108C, symBinAddr: 0xD725C, symSize: 0x4B4 } + - { offset: 0x174377, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV12makeElements4fromSayAC7ElementCGx_tKSTRzAA3DOMO08GraphicsJ0CAJRtzlFSD6ValuesVySSAP_G_Tg5', symObjAddr: 0x1540, symBinAddr: 0xD7710, symSize: 0x4A0 } + - { offset: 0x17465D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV9makeStyleyAC7ElementCSgAA3DOMO0H5SheetVKF', symObjAddr: 0x19E0, symBinAddr: 0xD7BB0, symSize: 0x6F4 } + - { offset: 0x174FB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV22makeGraphicsAttributes4fromSDyS2SGAA3DOMO012PresentationI0V_tF', symObjAddr: 0x2298, symBinAddr: 0xD8468, symSize: 0x132C } + - { offset: 0x176409, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV15encodeTransformySSAA3DOMO0H0OF', symObjAddr: 0x36CC, symBinAddr: 0xD989C, symSize: 0x318 } + - { offset: 0x1767B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO08GraphicsH0C_tKF', symObjAddr: 0x39E4, symBinAddr: 0xD9BB4, symSize: 0x2BC } + - { offset: 0x176922, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO4RectC_tF', symObjAddr: 0x3CA0, symBinAddr: 0xD9E70, symSize: 0x444 } + - { offset: 0x176E26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO3UseC_tF', symObjAddr: 0x40E4, symBinAddr: 0xDA2B4, symSize: 0x2CC } + - { offset: 0x1770C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO4TextC_tF', symObjAddr: 0x43B0, symBinAddr: 0xDA580, symSize: 0x21C } + - { offset: 0x177304, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO6AnchorC_tF', symObjAddr: 0x45CC, symBinAddr: 0xDA79C, symSize: 0x1B4 } + - { offset: 0x1773FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO4PathC_tF', symObjAddr: 0x4780, symBinAddr: 0xDA950, symSize: 0x11C } + - { offset: 0x1774E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV14encodeSegmentsySSSayAA3DOMO4PathC7SegmentOGF', symObjAddr: 0x489C, symBinAddr: 0xDAA6C, symSize: 0x16C } + - { offset: 0x17775F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV13encodeSegmentySSAA3DOMO4PathC0H0OF', symObjAddr: 0x4A08, symBinAddr: 0xDABD8, symSize: 0x8F0 } + - { offset: 0x178669, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11encodeColor4fromSSAA3DOMO0H0O_tFTf4nd_n', symObjAddr: 0x6E68, symBinAddr: 0xDCE8C, symSize: 0x530 } + - { offset: 0x178E14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV13sortSelectorsySayAA3DOMO10StyleSheetV8SelectorOGxSTRzAN7ElementRtzlFSD4KeysVyAnJ22PresentationAttributesV_G_Tg5Tf4nd_n', symObjAddr: 0x74C4, symBinAddr: 0xDD4E8, symSize: 0x4E8 } + - { offset: 0x17925C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV18makeLinearGradientyAC7ElementCAA3DOMO0hI0CFTf4nd_n', symObjAddr: 0x79AC, symBinAddr: 0xDD9D0, symSize: 0x390 } + - { offset: 0x179A58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12TimerManagerC05startD0yyFZySo7NSTimerCYbcfU_', symObjAddr: 0x0, symBinAddr: 0xDDF30, symSize: 0x84 } + - { offset: 0x179A7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12TimerManagerC5timer33_CC8C55DF2BE95D919F2CE62DA66C3617LLSo7NSTimerCSgvpZ', symObjAddr: 0xB8, symBinAddr: 0x366658, symSize: 0x0 } + - { offset: 0x179AD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12TimerManagerCMa', symObjAddr: 0x94, symBinAddr: 0xDDFB4, symSize: 0x20 } + - { offset: 0x179B47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12TimerManagerC05startD0yyFZySo7NSTimerCYbcfU_', symObjAddr: 0x0, symBinAddr: 0xDDF30, symSize: 0x84 } + - { offset: 0x179EF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x0, symBinAddr: 0xDDFD4, symSize: 0x94 } + - { offset: 0x179FAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewCfETo', symObjAddr: 0xF0, symBinAddr: 0xDE0C4, symSize: 0x38 } + - { offset: 0x179FDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewCMa', symObjAddr: 0x128, symBinAddr: 0xDE0FC, symSize: 0x20 } + - { offset: 0x17A04A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x0, symBinAddr: 0xDDFD4, symSize: 0x94 } + - { offset: 0x17A0B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x94, symBinAddr: 0xDE068, symSize: 0x2C } + - { offset: 0x17A114, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewCfD', symObjAddr: 0xC0, symBinAddr: 0xDE094, symSize: 0x30 } + - { offset: 0x17A4C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOMa', symObjAddr: 0x164, symBinAddr: 0xDE11C, symSize: 0x10 } + - { offset: 0x17A4D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x174, symBinAddr: 0xDE12C, symSize: 0x4 } + - { offset: 0x17A4EA, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10TravelModeOGSayxGSlsWl', symObjAddr: 0x178, symBinAddr: 0xDE130, symSize: 0x48 } + - { offset: 0x17A691, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSHAASQWb', symObjAddr: 0x8F4, symBinAddr: 0xDE864, symSize: 0x4 } + - { offset: 0x17A6A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOACSQAAWl', symObjAddr: 0x8F8, symBinAddr: 0xDE868, symSize: 0x40 } + - { offset: 0x17A704, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeO5imageSo7UIImageCvg', symObjAddr: 0x208, symBinAddr: 0xDE178, symSize: 0x314 } + - { offset: 0x17A87B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x51C, symBinAddr: 0xDE48C, symSize: 0xC } + - { offset: 0x17A8E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSHAASH9hashValueSivgTW', symObjAddr: 0x528, symBinAddr: 0xDE498, symSize: 0xF4 } + - { offset: 0x17A98D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x61C, symBinAddr: 0xDE58C, symSize: 0xD0 } + - { offset: 0x17A9F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x6EC, symBinAddr: 0xDE65C, symSize: 0xF0 } + - { offset: 0x17AADF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x7DC, symBinAddr: 0xDE74C, symSize: 0x2C } + - { offset: 0x17AB08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x808, symBinAddr: 0xDE778, symSize: 0xB4 } + - { offset: 0x17AB3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOs12CaseIterableAAsADP8allCases03AllI0QzvgZTW', symObjAddr: 0x8BC, symBinAddr: 0xDE82C, symSize: 0x38 } + - { offset: 0x17AB82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x938, symBinAddr: 0xDE8A8, symSize: 0x5C } + - { offset: 0x17B119, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseCMa', symObjAddr: 0x1C8, symBinAddr: 0xDE954, symSize: 0x20 } + - { offset: 0x17B12D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOAFs0G3KeyAAWl', symObjAddr: 0x54C, symBinAddr: 0xDEC70, symSize: 0x40 } + - { offset: 0x17B141, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOMa', symObjAddr: 0x794, symBinAddr: 0xDED6C, symSize: 0x10 } + - { offset: 0x17B155, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOSHAASQWb', symObjAddr: 0x7A4, symBinAddr: 0xDED7C, symSize: 0x4 } + - { offset: 0x17B169, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOAFSQAAWl', symObjAddr: 0x7A8, symBinAddr: 0xDED80, symSize: 0x40 } + - { offset: 0x17B17D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x7E8, symBinAddr: 0xDEDC0, symSize: 0x4 } + - { offset: 0x17B191, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x7EC, symBinAddr: 0xDEDC4, symSize: 0x40 } + - { offset: 0x17B1A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x82C, symBinAddr: 0xDEE04, symSize: 0x4 } + - { offset: 0x17B1B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x830, symBinAddr: 0xDEE08, symSize: 0x40 } + - { offset: 0x17B1E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x154, symBinAddr: 0xDE904, symSize: 0x28 } + - { offset: 0x17B203, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x17C, symBinAddr: 0xDE92C, symSize: 0x28 } + - { offset: 0x17B247, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x1E8, symBinAddr: 0xDE974, symSize: 0x118 } + - { offset: 0x17B278, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x300, symBinAddr: 0xDEA8C, symSize: 0x170 } + - { offset: 0x17B2B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x470, symBinAddr: 0xDEBFC, symSize: 0x54 } + - { offset: 0x17B2DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x4C4, symBinAddr: 0xDEC50, symSize: 0x20 } + - { offset: 0x17B8FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVMa', symObjAddr: 0x31C, symBinAddr: 0xDF164, symSize: 0x38 } + - { offset: 0x17C4EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV20makeStrokeAttributes4withAC0hI0VAE5StateV_tF', symObjAddr: 0x1FB8, symBinAddr: 0xE0E00, symSize: 0x37C } + - { offset: 0x17C754, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeFillAttributes4withAC0hI0VAE5StateV_tF', symObjAddr: 0x2334, symBinAddr: 0xE117C, symSize: 0x7FC } + - { offset: 0x17C98D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeFillAttributes4withAC0hI0VAE5StateV_tFSbAA3DOMO7PatternVXEfU_', symObjAddr: 0x2B30, symBinAddr: 0xE1978, symSize: 0x80 } + - { offset: 0x17C9E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11makePattern3forAC0H0CAA3DOMOAHV_tF', symObjAddr: 0x2BB0, symBinAddr: 0xE19F8, symSize: 0x394 } + - { offset: 0x17CDDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV12makeGradient3forAC06LinearH0VSgAA3DOMOAHC_tF', symObjAddr: 0x2F44, symBinAddr: 0xE1D8C, symSize: 0x6C8 } + - { offset: 0x17D7EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV12makeGradient3forAC06RadialH0VSgAA3DOMOAHC_tF', symObjAddr: 0x360C, symBinAddr: 0xE2454, symSize: 0x780 } + - { offset: 0x17E163, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11createState3for10inheritingAE0H0VAA3DOMO22PresentationAttributesV_AJtFZ', symObjAddr: 0x3E38, symBinAddr: 0xE2C80, symSize: 0x594 } + - { offset: 0x17E289, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV17makeGradientStops3forSayAC0H0V4StopVGAA3DOMO06LinearH0C_tFTf4nd_n', symObjAddr: 0x43CC, symBinAddr: 0xE3214, symSize: 0x154 } + - { offset: 0x17E49B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV17makeGradientStops3forSayAC0H0V4StopVGAA3DOMO06RadialH0C_tFTf4nd_n', symObjAddr: 0x4520, symBinAddr: 0xE3368, symSize: 0x154 } + - { offset: 0x17E656, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeTextAttributes4withAC0hI0VAE5StateV_tFZTf4nd_g', symObjAddr: 0x4674, symBinAddr: 0xE34BC, symSize: 0x15C } + - { offset: 0x17E726, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOSgWOg', symObjAddr: 0x49B0, symBinAddr: 0xE37B4, symSize: 0x24 } + - { offset: 0x17E73A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV15makeAllContents4from4withSayAC0D0C0I0OGAA3DOMO15GraphicsElementC_AE5StateVtFyAQXEfU_TA', symObjAddr: 0x4A10, symBinAddr: 0xE37D8, symSize: 0x1C } + - { offset: 0x17E74E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOc', symObjAddr: 0x4A4C, symBinAddr: 0xE37F4, symSize: 0x3C } + - { offset: 0x17E762, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOi2_', symObjAddr: 0x4A88, symBinAddr: 0xE3830, symSize: 0x34 } + - { offset: 0x17E776, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOSgWOi0_', symObjAddr: 0x4ABC, symBinAddr: 0xE3864, symSize: 0x28 } + - { offset: 0x17E78A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOAEsAdAWl', symObjAddr: 0x4AE8, symBinAddr: 0xE388C, symSize: 0x40 } + - { offset: 0x17E79E, size: 0x8, addend: 0x0, symName: '_$sSS8mimeType_10Foundation4DataV4datatSgWOe', symObjAddr: 0x4BA8, symBinAddr: 0xE38CC, symSize: 0x38 } + - { offset: 0x17E7B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOi0_', symObjAddr: 0x4BE0, symBinAddr: 0xE3904, symSize: 0x34 } + - { offset: 0x17E7C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOi_', symObjAddr: 0x4C14, symBinAddr: 0xE3938, symSize: 0x30 } + - { offset: 0x17E7DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0OWOe', symObjAddr: 0x4CC4, symBinAddr: 0xE3968, symSize: 0x60 } + - { offset: 0x17E7EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVWOc', symObjAddr: 0x4D24, symBinAddr: 0xE39C8, symSize: 0x3C } + - { offset: 0x17E802, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVWOh', symObjAddr: 0x4D60, symBinAddr: 0xE3A04, symSize: 0x34 } + - { offset: 0x17E816, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeFillAttributes4withAC0hI0VAE5StateV_tFSbAA3DOMO14LinearGradientCXEfU0_TA', symObjAddr: 0x4D94, symBinAddr: 0xE3A38, symSize: 0x1C } + - { offset: 0x17E82A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeFillAttributes4withAC0hI0VAE5StateV_tFSbAA3DOMO7PatternVXEfU_TA', symObjAddr: 0x4DB0, symBinAddr: 0xE3A54, symSize: 0x1C } + - { offset: 0x17E83E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVSgWOe', symObjAddr: 0x4DCC, symBinAddr: 0xE3A70, symSize: 0x30 } + - { offset: 0x17E852, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVWOc', symObjAddr: 0x4DFC, symBinAddr: 0xE3AA0, symSize: 0x3C } + - { offset: 0x17E866, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVWOh', symObjAddr: 0x4E38, symBinAddr: 0xE3ADC, symSize: 0x34 } + - { offset: 0x17E87A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOWOd', symObjAddr: 0x4EEC, symBinAddr: 0xE3B10, symSize: 0x44 } + - { offset: 0x17E88E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwCP', symObjAddr: 0x4FBC, symBinAddr: 0xE3B54, symSize: 0x244 } + - { offset: 0x17E8A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwxx', symObjAddr: 0x5200, symBinAddr: 0xE3D98, symSize: 0xF0 } + - { offset: 0x17E8B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwcp', symObjAddr: 0x52F0, symBinAddr: 0xE3E88, symSize: 0x218 } + - { offset: 0x17E8CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwca', symObjAddr: 0x5508, symBinAddr: 0xE40A0, symSize: 0x2D4 } + - { offset: 0x17E8DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwtk', symObjAddr: 0x57DC, symBinAddr: 0xE4374, symSize: 0x208 } + - { offset: 0x17E8F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwta', symObjAddr: 0x59E4, symBinAddr: 0xE457C, symSize: 0x2A8 } + - { offset: 0x17E906, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwet', symObjAddr: 0x5C8C, symBinAddr: 0xE4824, symSize: 0xC } + - { offset: 0x17E91A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwst', symObjAddr: 0x5D40, symBinAddr: 0xE48D8, symSize: 0xC } + - { offset: 0x17E92E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVMr', symObjAddr: 0x5DF0, symBinAddr: 0xE4988, symSize: 0xEC } + - { offset: 0x17E9A4, size: 0x8, addend: 0x0, symName: '_$sSTsE7forEachyyy7ElementQzKXEKFSay8PenNavUI3DOMO08GraphicsC0CG_Tg5', symObjAddr: 0x0, symBinAddr: 0xDEE48, symSize: 0x10C } + - { offset: 0x17EEFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV04makeD0AC0D0CyF', symObjAddr: 0x10C, symBinAddr: 0xDEF54, symSize: 0x210 } + - { offset: 0x17F0D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV04makeD04from10inheritingAC0D0CAA3DOMO15GraphicsElementC_AE5StateVtF', symObjAddr: 0x354, symBinAddr: 0xDF19C, symSize: 0x8E8 } + - { offset: 0x17FA63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV16createClipShapes3forSayAC5ShapeOGAA3DOMO15GraphicsElementC_tF', symObjAddr: 0xC3C, symBinAddr: 0xDFA84, symSize: 0x348 } + - { offset: 0x17FE1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV010createMaskD03forAC0D0CSgAA3DOMO15GraphicsElementC_tF', symObjAddr: 0xF84, symBinAddr: 0xDFDCC, symSize: 0x7A8 } + - { offset: 0x18041C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV15makeAllContents4from4withSayAC0D0C0I0OGAA3DOMO15GraphicsElementC_AE5StateVtF', symObjAddr: 0x172C, symBinAddr: 0xE0574, symSize: 0x260 } + - { offset: 0x180563, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV15makeAllContents4from4withSayAC0D0C0I0OGAA3DOMO15GraphicsElementC_AE5StateVtFyAQXEfU_', symObjAddr: 0x1EA0, symBinAddr: 0xE0CE8, symSize: 0x118 } + - { offset: 0x1806E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV12makeContents4from4withAC0D0C0H0OSgAA3DOMO15GraphicsElementC_AE5StateVtF', symObjAddr: 0x198C, symBinAddr: 0xE07D4, symSize: 0x514 } + - { offset: 0x180AF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV13makeTransform3for5width6heightSayAC0H0OGAA3DOMO3SVGC7ViewBoxVSg_S2itFZTf4nnnd_n', symObjAddr: 0x47D0, symBinAddr: 0xE3618, symSize: 0x19C } + - { offset: 0x181146, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseRadialGradientsySayAA3DOMO0F8GradientCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0xE4A8C, symSize: 0x2B0 } + - { offset: 0x1812DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseRadialGradientsySayAA3DOMO0F8GradientCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0xE4A8C, symSize: 0x2B0 } + - { offset: 0x181815, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV19parseRadialGradientyAA3DOMO0fG0CAA3XMLO7ElementCKFTf4nx_n', symObjAddr: 0x2B0, symBinAddr: 0xE4D3C, symSize: 0xAB4 } + - { offset: 0x181C98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOAGSYAAWl', symObjAddr: 0xE2C, symBinAddr: 0xE57F0, symSize: 0x40 } + - { offset: 0x181CAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parsePercentageySfSgSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_TG5TA', symObjAddr: 0xEB4, symBinAddr: 0xE5830, symSize: 0x18 } + - { offset: 0x181CC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOWOc', symObjAddr: 0xECC, symBinAddr: 0xE5848, symSize: 0x44 } + - { offset: 0x181CD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOWOh', symObjAddr: 0xF10, symBinAddr: 0xE588C, symSize: 0x3C } + - { offset: 0x181CE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOWOh', symObjAddr: 0xF4C, symBinAddr: 0xE58C8, symSize: 0x34 } + - { offset: 0x1826A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterCMa', symObjAddr: 0x2B8, symBinAddr: 0xE5ADC, symSize: 0x20 } + - { offset: 0x1826BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC4copy4withyp10ObjectiveC6NSZoneVSg_tF', symObjAddr: 0x850, symBinAddr: 0xE6074, symSize: 0xD4 } + - { offset: 0x18276F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC4copy4withyp10ObjectiveC6NSZoneVSg_tFTo', symObjAddr: 0x924, symBinAddr: 0xE6148, symSize: 0x60 } + - { offset: 0x182824, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleCMa', symObjAddr: 0x12B0, symBinAddr: 0xE6ABC, symSize: 0x20 } + - { offset: 0x182838, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOMa', symObjAddr: 0x1438, symBinAddr: 0xE6ADC, symSize: 0x10 } + - { offset: 0x1828C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSHAASQWb', symObjAddr: 0x194C, symBinAddr: 0xE6F8C, symSize: 0x4 } + - { offset: 0x1828DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOACSQAAWl', symObjAddr: 0x1950, symBinAddr: 0xE6F90, symSize: 0x40 } + - { offset: 0x1828EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOAFs0F3KeyAAWl', symObjAddr: 0x19D4, symBinAddr: 0xE6FD0, symSize: 0x40 } + - { offset: 0x182903, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOAEs0F3KeyAAWl', symObjAddr: 0x1A5C, symBinAddr: 0xE7010, symSize: 0x40 } + - { offset: 0x182917, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOMa', symObjAddr: 0x1CC0, symBinAddr: 0xE70EC, symSize: 0x10 } + - { offset: 0x18292B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOMa', symObjAddr: 0x1E24, symBinAddr: 0xE70FC, symSize: 0x10 } + - { offset: 0x18293F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOSHAASQWb', symObjAddr: 0x1E34, symBinAddr: 0xE710C, symSize: 0x4 } + - { offset: 0x182953, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOAFSQAAWl', symObjAddr: 0x1E38, symBinAddr: 0xE7110, symSize: 0x40 } + - { offset: 0x182967, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSHAASQWb', symObjAddr: 0x1E78, symBinAddr: 0xE7150, symSize: 0x4 } + - { offset: 0x18297B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOAESQAAWl', symObjAddr: 0x1E7C, symBinAddr: 0xE7154, symSize: 0x40 } + - { offset: 0x18298F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1EBC, symBinAddr: 0xE7194, symSize: 0x4 } + - { offset: 0x1829A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1EC0, symBinAddr: 0xE7198, symSize: 0x40 } + - { offset: 0x1829B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1F00, symBinAddr: 0xE71D8, symSize: 0x4 } + - { offset: 0x1829CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1F04, symBinAddr: 0xE71DC, symSize: 0x40 } + - { offset: 0x1829DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1F44, symBinAddr: 0xE721C, symSize: 0x4 } + - { offset: 0x1829F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1F48, symBinAddr: 0xE7220, symSize: 0x40 } + - { offset: 0x182A07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1F88, symBinAddr: 0xE7260, symSize: 0x4 } + - { offset: 0x182A1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x1F8C, symBinAddr: 0xE7264, symSize: 0x40 } + - { offset: 0x182A5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x22C, symBinAddr: 0xE5A50, symSize: 0x28 } + - { offset: 0x182A79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x254, symBinAddr: 0xE5A78, symSize: 0x28 } + - { offset: 0x182AF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x984, symBinAddr: 0xE61A8, symSize: 0x11C } + - { offset: 0x182C0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0xAA0, symBinAddr: 0xE62C4, symSize: 0xAC } + - { offset: 0x182CC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xB4C, symBinAddr: 0xE6370, symSize: 0x88 } + - { offset: 0x182D33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xBD4, symBinAddr: 0xE63F8, symSize: 0xA8 } + - { offset: 0x182DCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0xDB8, symBinAddr: 0xE65C4, symSize: 0x28 } + - { offset: 0x182DE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0xDE0, symBinAddr: 0xE65EC, symSize: 0x28 } + - { offset: 0x182E12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x168C, symBinAddr: 0xE6CCC, symSize: 0xA8 } + - { offset: 0x182F01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSHAASH9hashValueSivgTW', symObjAddr: 0x1734, symBinAddr: 0xE6D74, symSize: 0x84 } + - { offset: 0x182FB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x17B8, symBinAddr: 0xE6DF8, symSize: 0x60 } + - { offset: 0x183027, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1818, symBinAddr: 0xE6E58, symSize: 0x80 } + - { offset: 0x18311B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC13toggleOpenNowyyF', symObjAddr: 0x0, symBinAddr: 0xE58FC, symSize: 0x5C } + - { offset: 0x183196, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x11C, symBinAddr: 0xE5958, symSize: 0xD4 } + - { offset: 0x1831C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1F0, symBinAddr: 0xE5A2C, symSize: 0x24 } + - { offset: 0x183213, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterCfD', symObjAddr: 0x27C, symBinAddr: 0xE5AA0, symSize: 0x3C } + - { offset: 0x18324C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC6encode2toys7Encoder_p_tKF', symObjAddr: 0x2D8, symBinAddr: 0xE5AFC, symSize: 0x25C } + - { offset: 0x18327D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x534, symBinAddr: 0xE5D58, symSize: 0x2D4 } + - { offset: 0x1832AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x830, symBinAddr: 0xE6054, symSize: 0x20 } + - { offset: 0x183370, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xC7C, symBinAddr: 0xE64A0, symSize: 0x2C } + - { offset: 0x183399, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0xCA8, symBinAddr: 0xE64CC, symSize: 0x6C } + - { offset: 0x1833DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs0F3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xD14, symBinAddr: 0xE6538, symSize: 0x68 } + - { offset: 0x183440, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs0F3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0xD7C, symBinAddr: 0xE65A0, symSize: 0x24 } + - { offset: 0x1834B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC6isOpenACSb_tcfc', symObjAddr: 0xE08, symBinAddr: 0xE6614, symSize: 0x1A4 } + - { offset: 0x18353C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC6encode2toys7Encoder_p_tKF', symObjAddr: 0xFAC, symBinAddr: 0xE67B8, symSize: 0x2E0 } + - { offset: 0x1835F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleCfD', symObjAddr: 0x128C, symBinAddr: 0xE6A98, symSize: 0x24 } + - { offset: 0x183631, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x1448, symBinAddr: 0xE6AEC, symSize: 0x198 } + - { offset: 0x183662, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x166C, symBinAddr: 0xE6CAC, symSize: 0x20 } + - { offset: 0x1836BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x1898, symBinAddr: 0xE6ED8, symSize: 0x70 } + - { offset: 0x18370C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x1908, symBinAddr: 0xE6F48, symSize: 0x44 } + - { offset: 0x183740, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x1FCC, symBinAddr: 0xE72A4, symSize: 0x214 } + - { offset: 0x183849, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x21E0, symBinAddr: 0xE74B8, symSize: 0x5C } + - { offset: 0x183C29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xE7514, symSize: 0x10 } + - { offset: 0x184563, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17displayFilterData33_328DE9E08D573BB4E70209B25156AC30LLyyF', symObjAddr: 0x1AE4, symBinAddr: 0xE8FF8, symSize: 0x45C } + - { offset: 0x1849C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsCfETo', symObjAddr: 0x25EC, symBinAddr: 0xE9B00, symSize: 0x138 } + - { offset: 0x1849F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsCMa', symObjAddr: 0x2724, symBinAddr: 0xE9C38, symSize: 0x20 } + - { offset: 0x184A48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC20toggleSelectionColor33_328DE9E08D573BB4E70209B25156AC30LL13containerView0P4Text5valueySo6UIViewC_So7UILabelCSbtFTf4nnnd_n', symObjAddr: 0x2744, symBinAddr: 0xE9C58, symSize: 0x1D8 } + - { offset: 0x184B1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC13isHighlightedSbvWyycfU0_TA', symObjAddr: 0x2984, symBinAddr: 0xE9E54, symSize: 0x8 } + - { offset: 0x184B2F, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x298C, symBinAddr: 0xE9E5C, symSize: 0x10 } + - { offset: 0x184B43, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x299C, symBinAddr: 0xE9E6C, symSize: 0x8 } + - { offset: 0x184B57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyFyycfU_TA', symObjAddr: 0x29E8, symBinAddr: 0xE9E74, symSize: 0x8 } + - { offset: 0x184B6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyFyycfU0_TA', symObjAddr: 0x29F0, symBinAddr: 0xE9E7C, symSize: 0x8 } + - { offset: 0x184B7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC22customizeOpenNowFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_TA', symObjAddr: 0x2A00, symBinAddr: 0xE9E84, symSize: 0x8 } + - { offset: 0x184B93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC23customizeCategoryFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_TA', symObjAddr: 0x2A08, symBinAddr: 0xE9E8C, symSize: 0x8 } + - { offset: 0x184BA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC22customizeAmenityFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_TA', symObjAddr: 0x2A10, symBinAddr: 0xE9E94, symSize: 0x8 } + - { offset: 0x184BBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC19customizeAllFilters33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_TA', symObjAddr: 0x2A18, symBinAddr: 0xE9E9C, symSize: 0x8 } + - { offset: 0x184E7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xE7514, symSize: 0x10 } + - { offset: 0x184E92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xE7514, symSize: 0x10 } + - { offset: 0x184ED8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11contentViewSo6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0xE7524, symSize: 0x34 } + - { offset: 0x184F27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC10filterViewAA06HapticG0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0xE7558, symSize: 0x10 } + - { offset: 0x184F3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC10filterViewAA06HapticG0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0xE7558, symSize: 0x10 } + - { offset: 0x184F7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC10filterViewAA06HapticG0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0xE7568, symSize: 0x34 } + - { offset: 0x184FCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC8sortViewAA06HapticG0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0xE759C, symSize: 0x10 } + - { offset: 0x184FE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC8sortViewAA06HapticG0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0xE759C, symSize: 0x10 } + - { offset: 0x185021, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC8sortViewAA06HapticG0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0xE75AC, symSize: 0x34 } + - { offset: 0x185070, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC15sortMethodLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0xE75E0, symSize: 0x10 } + - { offset: 0x185088, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC15sortMethodLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0xE75E0, symSize: 0x10 } + - { offset: 0x1850C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC15sortMethodLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0xE75F0, symSize: 0x34 } + - { offset: 0x185117, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12categoryViewAA06HapticG0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0xE7624, symSize: 0x20 } + - { offset: 0x18516C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12categoryViewAA06HapticG0CSgvsTo', symObjAddr: 0x130, symBinAddr: 0xE7644, symSize: 0x14 } + - { offset: 0x1851BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13categoryLabelSo7UILabelCSgvgTo', symObjAddr: 0x144, symBinAddr: 0xE7658, symSize: 0x20 } + - { offset: 0x185212, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13categoryLabelSo7UILabelCSgvsTo', symObjAddr: 0x164, symBinAddr: 0xE7678, symSize: 0x14 } + - { offset: 0x185263, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13amenitiesViewAA06HapticG0CSgvgTo', symObjAddr: 0x178, symBinAddr: 0xE768C, symSize: 0x20 } + - { offset: 0x1852B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13amenitiesViewAA06HapticG0CSgvsTo', symObjAddr: 0x198, symBinAddr: 0xE76AC, symSize: 0x14 } + - { offset: 0x185309, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC14amenitiesLabelSo7UILabelCSgvgTo', symObjAddr: 0x1AC, symBinAddr: 0xE76C0, symSize: 0x20 } + - { offset: 0x18535E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC14amenitiesLabelSo7UILabelCSgvsTo', symObjAddr: 0x1CC, symBinAddr: 0xE76E0, symSize: 0x14 } + - { offset: 0x1853AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11openNowViewAA06HapticH0CSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0xE76F4, symSize: 0x10 } + - { offset: 0x1853C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11openNowViewAA06HapticH0CSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0xE76F4, symSize: 0x10 } + - { offset: 0x185402, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11openNowViewAA06HapticH0CSgvsTo', symObjAddr: 0x1F0, symBinAddr: 0xE7704, symSize: 0x34 } + - { offset: 0x185451, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12openNowLabelSo7UILabelCSgvgTo', symObjAddr: 0x224, symBinAddr: 0xE7738, symSize: 0x20 } + - { offset: 0x1854A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12openNowLabelSo7UILabelCSgvsTo', symObjAddr: 0x244, symBinAddr: 0xE7758, symSize: 0x14 } + - { offset: 0x1854F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC10scrollViewSo08UIScrollG0CSgvgTo', symObjAddr: 0x258, symBinAddr: 0xE776C, symSize: 0x20 } + - { offset: 0x185551, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC10scrollViewSo08UIScrollG0CSgvsTo', symObjAddr: 0x278, symBinAddr: 0xE778C, symSize: 0x14 } + - { offset: 0x1855A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12optionsStackSo11UIStackViewCSgvgTo', symObjAddr: 0x28C, symBinAddr: 0xE77A0, symSize: 0x20 } + - { offset: 0x1855FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12optionsStackSo11UIStackViewCSgvsTo', symObjAddr: 0x2AC, symBinAddr: 0xE77C0, symSize: 0x14 } + - { offset: 0x1857B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC5frameACSo6CGRectV_tcfc', symObjAddr: 0x2C0, symBinAddr: 0xE77D4, symSize: 0x3C4 } + - { offset: 0x1859B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x684, symBinAddr: 0xE7B98, symSize: 0x20 } + - { offset: 0x1859CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x6A4, symBinAddr: 0xE7BB8, symSize: 0x3B4 } + - { offset: 0x185BE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xA58, symBinAddr: 0xE7F6C, symSize: 0x28 } + - { offset: 0x185CB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC09customized6FilterE0yyF', symObjAddr: 0xA80, symBinAddr: 0xE7F94, symSize: 0x67C } + - { offset: 0x18612E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyF', symObjAddr: 0x10FC, symBinAddr: 0xE8610, symSize: 0x4B8 } + - { offset: 0x18652C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyFyycfU_', symObjAddr: 0x15B4, symBinAddr: 0xE8AC8, symSize: 0xC8 } + - { offset: 0x1865BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyFyycfU0_', symObjAddr: 0x167C, symBinAddr: 0xE8B90, symSize: 0x360 } + - { offset: 0x1868E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC22customizeOpenNowFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x19DC, symBinAddr: 0xE8EF0, symSize: 0x108 } + - { offset: 0x18699B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC31handleLocationNotAvailableToast33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x1F40, symBinAddr: 0xE9454, symSize: 0x160 } + - { offset: 0x186A6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC23customizeCategoryFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x20A0, symBinAddr: 0xE95B4, symSize: 0xFC } + - { offset: 0x186AD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC22customizeAmenityFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x219C, symBinAddr: 0xE96B0, symSize: 0xFC } + - { offset: 0x186B45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC19customizeAllFilters33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x2298, symBinAddr: 0xE97AC, symSize: 0xDC } + - { offset: 0x186BA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13setSortOption4sortyAA0G6MethodO_tF', symObjAddr: 0x2374, symBinAddr: 0xE9888, symSize: 0x248 } + - { offset: 0x186D66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsCfD', symObjAddr: 0x25BC, symBinAddr: 0xE9AD0, symSize: 0x30 } + - { offset: 0x187132, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVMa', symObjAddr: 0x0, symBinAddr: 0xE9EBC, symSize: 0x10 } + - { offset: 0x18714A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVMa', symObjAddr: 0x0, symBinAddr: 0xE9EBC, symSize: 0x10 } + - { offset: 0x187631, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVwxx', symObjAddr: 0xA54, symBinAddr: 0xEA7DC, symSize: 0x28 } + - { offset: 0x187645, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVwcp', symObjAddr: 0xA7C, symBinAddr: 0xEA804, symSize: 0x5C } + - { offset: 0x187659, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVwca', symObjAddr: 0xAD8, symBinAddr: 0xEA860, symSize: 0x94 } + - { offset: 0x18766D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVwta', symObjAddr: 0xB80, symBinAddr: 0xEA8F4, symSize: 0x5C } + - { offset: 0x187681, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVMa', symObjAddr: 0xC70, symBinAddr: 0xEA950, symSize: 0x10 } + - { offset: 0x187695, size: 0x8, addend: 0x0, symName: ___swift_memcpy28_4, symObjAddr: 0xC84, symBinAddr: 0xEA960, symSize: 0x14 } + - { offset: 0x1876A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVwet', symObjAddr: 0xC98, symBinAddr: 0xEA974, symSize: 0x54 } + - { offset: 0x1876BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVwst', symObjAddr: 0xCEC, symBinAddr: 0xEA9C8, symSize: 0x5C } + - { offset: 0x1876D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVMa', symObjAddr: 0xD48, symBinAddr: 0xEAA24, symSize: 0x10 } + - { offset: 0x1876E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSHAASQWb', symObjAddr: 0xD58, symBinAddr: 0xEAA34, symSize: 0x4 } + - { offset: 0x1876F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVAGSQAAWl', symObjAddr: 0xD5C, symBinAddr: 0xEAA38, symSize: 0x40 } + - { offset: 0x18770D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSHAASQWb', symObjAddr: 0xD9C, symBinAddr: 0xEAA78, symSize: 0x4 } + - { offset: 0x187721, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVAESQAAWl', symObjAddr: 0xDA0, symBinAddr: 0xEAA7C, symSize: 0x40 } + - { offset: 0x187735, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV5UnitsOMa', symObjAddr: 0xF44, symBinAddr: 0xEAABC, symSize: 0x10 } + - { offset: 0x187749, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV5UnitsOSHAASQWb', symObjAddr: 0xF54, symBinAddr: 0xEAACC, symSize: 0x4 } + - { offset: 0x18775D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV5UnitsOAGSQAAWl', symObjAddr: 0xF58, symBinAddr: 0xEAAD0, symSize: 0x40 } + - { offset: 0x187771, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwxx', symObjAddr: 0xF98, symBinAddr: 0xEAB10, symSize: 0x28 } + - { offset: 0x187785, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwcp', symObjAddr: 0xFC0, symBinAddr: 0xEAB38, symSize: 0x4C } + - { offset: 0x187799, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwca', symObjAddr: 0x100C, symBinAddr: 0xEAB84, symSize: 0x84 } + - { offset: 0x1877AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwta', symObjAddr: 0x10A4, symBinAddr: 0xEAC08, symSize: 0x54 } + - { offset: 0x1877C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwet', symObjAddr: 0x10F8, symBinAddr: 0xEAC5C, symSize: 0x48 } + - { offset: 0x1877D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwst', symObjAddr: 0x1140, symBinAddr: 0xEACA4, symSize: 0x48 } + - { offset: 0x1877E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVMa', symObjAddr: 0x1188, symBinAddr: 0xEACEC, symSize: 0x10 } + - { offset: 0x1877FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSHAASQWb', symObjAddr: 0x1198, symBinAddr: 0xEACFC, symSize: 0x4 } + - { offset: 0x187811, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVAESQAAWl', symObjAddr: 0x119C, symBinAddr: 0xEAD00, symSize: 0x40 } + - { offset: 0x187954, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xB8, symBinAddr: 0xE9F74, symSize: 0x38 } + - { offset: 0x1879C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x248, symBinAddr: 0xEA040, symSize: 0x40 } + - { offset: 0x187A9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x498, symBinAddr: 0xEA24C, symSize: 0x38 } + - { offset: 0x187B08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x750, symBinAddr: 0xEA504, symSize: 0x38 } + - { offset: 0x187B5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopV4hash4intoys6HasherVz_tF', symObjAddr: 0x10, symBinAddr: 0xE9ECC, symSize: 0x68 } + - { offset: 0x187C26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSHAASH9hashValueSivgTW', symObjAddr: 0x78, symBinAddr: 0xE9F34, symSize: 0x3C } + - { offset: 0x187CA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xB4, symBinAddr: 0xE9F70, symSize: 0x4 } + - { offset: 0x187CCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xF0, symBinAddr: 0xE9FAC, symSize: 0x48 } + - { offset: 0x187D55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVSHAASH9hashValueSivgTW', symObjAddr: 0x1FC, symBinAddr: 0xE9FF4, symSize: 0x44 } + - { offset: 0x187E1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x240, symBinAddr: 0xEA038, symSize: 0x8 } + - { offset: 0x187EA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x288, symBinAddr: 0xEA080, symSize: 0xC } + - { offset: 0x187F47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientV4hash4intoys6HasherVz_tF', symObjAddr: 0x2D8, symBinAddr: 0xEA08C, symSize: 0x180 } + - { offset: 0x1883CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSHAASH9hashValueSivgTW', symObjAddr: 0x458, symBinAddr: 0xEA20C, symSize: 0x3C } + - { offset: 0x188449, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x494, symBinAddr: 0xEA248, symSize: 0x4 } + - { offset: 0x188470, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x4D0, symBinAddr: 0xEA284, symSize: 0x98 } + - { offset: 0x18849E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientV4hash4intoys6HasherVz_tF', symObjAddr: 0x568, symBinAddr: 0xEA31C, symSize: 0x1A8 } + - { offset: 0x188975, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSHAASH9hashValueSivgTW', symObjAddr: 0x710, symBinAddr: 0xEA4C4, symSize: 0x3C } + - { offset: 0x1889F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x74C, symBinAddr: 0xEA500, symSize: 0x4 } + - { offset: 0x188A19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x788, symBinAddr: 0xEA53C, symSize: 0x44 } + - { offset: 0x188A64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x7CC, symBinAddr: 0xEA580, symSize: 0x98 } + - { offset: 0x188AEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x864, symBinAddr: 0xEA618, symSize: 0xB8 } + - { offset: 0x188B99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopV2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x91C, symBinAddr: 0xEA6D0, symSize: 0x10C } + - { offset: 0x188F69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x0, symBinAddr: 0xEAD40, symSize: 0x274 } + - { offset: 0x1890CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewCfETo', symObjAddr: 0xBE8, symBinAddr: 0xEB928, symSize: 0x38 } + - { offset: 0x1890F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewCMa', symObjAddr: 0xC20, symBinAddr: 0xEB960, symSize: 0x20 } + - { offset: 0x18910D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC05setupF033_C991B0327AE82E62E13D985A70F5DE62LLyyFyyScMYccfU_TA', symObjAddr: 0xC64, symBinAddr: 0xEB9A4, symSize: 0x8 } + - { offset: 0x189121, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xC6C, symBinAddr: 0xEB9AC, symSize: 0x10 } + - { offset: 0x189135, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xC7C, symBinAddr: 0xEB9BC, symSize: 0x8 } + - { offset: 0x1891E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x0, symBinAddr: 0xEAD40, symSize: 0x274 } + - { offset: 0x1892B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x274, symBinAddr: 0xEAFB4, symSize: 0x20 } + - { offset: 0x1892FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x294, symBinAddr: 0xEAFD4, symSize: 0xB8 } + - { offset: 0x1893C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC05setupF033_C991B0327AE82E62E13D985A70F5DE62LLyyF', symObjAddr: 0x34C, symBinAddr: 0xEB08C, symSize: 0x754 } + - { offset: 0x189467, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC05setupF033_C991B0327AE82E62E13D985A70F5DE62LLyyFyyScMYccfU_', symObjAddr: 0xAA0, symBinAddr: 0xEB7E0, symSize: 0x118 } + - { offset: 0x18949C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewCfD', symObjAddr: 0xBB8, symBinAddr: 0xEB8F8, symSize: 0x30 } + - { offset: 0x189848, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMOMa', symObjAddr: 0xE4, symBinAddr: 0xEB9C4, symSize: 0x10 } + - { offset: 0x18985C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOMa', symObjAddr: 0x104, symBinAddr: 0xEB9D4, symSize: 0x10 } + - { offset: 0x189870, size: 0x8, addend: 0x0, symName: ___swift_memcpy8_4, symObjAddr: 0x114, symBinAddr: 0xEB9E4, symSize: 0xC } + - { offset: 0x189884, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5PointVwet', symObjAddr: 0x120, symBinAddr: 0xEB9F0, symSize: 0x20 } + - { offset: 0x189898, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5PointVwst', symObjAddr: 0x140, symBinAddr: 0xEBA10, symSize: 0x28 } + - { offset: 0x1898AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5PointVMa', symObjAddr: 0x168, symBinAddr: 0xEBA38, symSize: 0x10 } + - { offset: 0x1898C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOwet', symObjAddr: 0x1B8, symBinAddr: 0xEBA48, symSize: 0x48 } + - { offset: 0x1898D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOwst', symObjAddr: 0x200, symBinAddr: 0xEBA90, symSize: 0x48 } + - { offset: 0x1898E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOwug', symObjAddr: 0x248, symBinAddr: 0xEBAD8, symSize: 0x8 } + - { offset: 0x1898FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOwui', symObjAddr: 0x254, symBinAddr: 0xEBAE0, symSize: 0x8 } + - { offset: 0x189910, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOMa', symObjAddr: 0x25C, symBinAddr: 0xEBAE8, symSize: 0x10 } + - { offset: 0x189924, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwCP', symObjAddr: 0x26C, symBinAddr: 0xEBAF8, symSize: 0xB8 } + - { offset: 0x189938, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwxx', symObjAddr: 0x324, symBinAddr: 0xEBBB0, symSize: 0x48 } + - { offset: 0x18994C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwcp', symObjAddr: 0x36C, symBinAddr: 0xEBBF8, symSize: 0x90 } + - { offset: 0x189960, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwca', symObjAddr: 0x3FC, symBinAddr: 0xEBC88, symSize: 0xA0 } + - { offset: 0x189974, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOMa', symObjAddr: 0x4D8, symBinAddr: 0xEBD28, symSize: 0x38 } + - { offset: 0x189988, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwtk', symObjAddr: 0x510, symBinAddr: 0xEBD60, symSize: 0x90 } + - { offset: 0x18999C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwta', symObjAddr: 0x5A0, symBinAddr: 0xEBDF0, symSize: 0xA0 } + - { offset: 0x1899B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwet', symObjAddr: 0x640, symBinAddr: 0xEBE90, symSize: 0xC } + - { offset: 0x1899C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwst', symObjAddr: 0x64C, symBinAddr: 0xEBE9C, symSize: 0xC } + - { offset: 0x1899D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwug', symObjAddr: 0x658, symBinAddr: 0xEBEA8, symSize: 0x4 } + - { offset: 0x1899EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwui', symObjAddr: 0x660, symBinAddr: 0xEBEAC, symSize: 0x10 } + - { offset: 0x189A00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOMr', symObjAddr: 0x670, symBinAddr: 0xEBEBC, symSize: 0x6C } + - { offset: 0x189CDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSHAASQWb', symObjAddr: 0x1310, symBinAddr: 0xECB5C, symSize: 0x4 } + - { offset: 0x189CF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOAESQAAWl', symObjAddr: 0x1314, symBinAddr: 0xECB60, symSize: 0x40 } + - { offset: 0x189D04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillO_AEtWOh', symObjAddr: 0x1774, symBinAddr: 0xECF28, symSize: 0x40 } + - { offset: 0x189D18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ErrorOMa', symObjAddr: 0x18F8, symBinAddr: 0xECF68, symSize: 0x10 } + - { offset: 0x189D2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOMa', symObjAddr: 0x1924, symBinAddr: 0xECF78, symSize: 0x10 } + - { offset: 0x189D40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOMa', symObjAddr: 0x1938, symBinAddr: 0xECF88, symSize: 0x10 } + - { offset: 0x189D54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOMa', symObjAddr: 0x1A8C, symBinAddr: 0xECF98, symSize: 0x10 } + - { offset: 0x189D68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOMa', symObjAddr: 0x1BFC, symBinAddr: 0xECFA8, symSize: 0x10 } + - { offset: 0x189D7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSHAASQWb', symObjAddr: 0x1C0C, symBinAddr: 0xECFB8, symSize: 0x4 } + - { offset: 0x189D90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOAESQAAWl', symObjAddr: 0x1C10, symBinAddr: 0xECFBC, symSize: 0x40 } + - { offset: 0x189DA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSHAASQWb', symObjAddr: 0x1C50, symBinAddr: 0xECFFC, symSize: 0x4 } + - { offset: 0x189DB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOAESQAAWl', symObjAddr: 0x1C54, symBinAddr: 0xED000, symSize: 0x40 } + - { offset: 0x189DCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSHAASQWb', symObjAddr: 0x1C94, symBinAddr: 0xED040, symSize: 0x4 } + - { offset: 0x189DE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOAESQAAWl', symObjAddr: 0x1C98, symBinAddr: 0xED044, symSize: 0x40 } + - { offset: 0x189DF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSHAASQWb', symObjAddr: 0x1CD8, symBinAddr: 0xED084, symSize: 0x4 } + - { offset: 0x189E08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOAESQAAWl', symObjAddr: 0x1CDC, symBinAddr: 0xED088, symSize: 0x40 } + - { offset: 0x189E48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x70C, symBinAddr: 0xEBF58, symSize: 0x84 } + - { offset: 0x189F37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSHAASH9hashValueSivgTW', symObjAddr: 0x790, symBinAddr: 0xEBFDC, symSize: 0x74 } + - { offset: 0x189FEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x804, symBinAddr: 0xEC050, symSize: 0x48 } + - { offset: 0x18A05D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x84C, symBinAddr: 0xEC098, symSize: 0x70 } + - { offset: 0x18A0FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x900, symBinAddr: 0xEC14C, symSize: 0x98 } + - { offset: 0x18A1ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSHAASH9hashValueSivgTW', symObjAddr: 0x998, symBinAddr: 0xEC1E4, symSize: 0x74 } + - { offset: 0x18A2A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xA0C, symBinAddr: 0xEC258, symSize: 0x50 } + - { offset: 0x18A313, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xA5C, symBinAddr: 0xEC2A8, symSize: 0x70 } + - { offset: 0x18A3B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xB7C, symBinAddr: 0xEC3C8, symSize: 0xE8 } + - { offset: 0x18A4CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSHAASH9hashValueSivgTW', symObjAddr: 0xC64, symBinAddr: 0xEC4B0, symSize: 0x90 } + - { offset: 0x18A57E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xCF4, symBinAddr: 0xEC540, symSize: 0x6C } + - { offset: 0x18A5EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xD60, symBinAddr: 0xEC5AC, symSize: 0x8C } + - { offset: 0x18A695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xE70, symBinAddr: 0xEC6BC, symSize: 0x64 } + - { offset: 0x18A78A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSHAASH9hashValueSivgTW', symObjAddr: 0xED4, symBinAddr: 0xEC720, symSize: 0x58 } + - { offset: 0x18A835, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xF2C, symBinAddr: 0xEC778, symSize: 0x2C } + - { offset: 0x18A89C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xF58, symBinAddr: 0xEC7A4, symSize: 0x54 } + - { offset: 0x18A93A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xFFC, symBinAddr: 0xEC848, symSize: 0xE4 } + - { offset: 0x18AA50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSHAASH9hashValueSivgTW', symObjAddr: 0x10E0, symBinAddr: 0xEC92C, symSize: 0x90 } + - { offset: 0x18AB04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1170, symBinAddr: 0xEC9BC, symSize: 0x6C } + - { offset: 0x18AB74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x11DC, symBinAddr: 0xECA28, symSize: 0x8C } + - { offset: 0x18AC20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5PointVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x6DC, symBinAddr: 0xEBF28, symSize: 0x2C } + - { offset: 0x18AC54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x708, symBinAddr: 0xEBF54, symSize: 0x4 } + - { offset: 0x18AC6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x708, symBinAddr: 0xEBF54, symSize: 0x4 } + - { offset: 0x18ACA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x8C8, symBinAddr: 0xEC114, symSize: 0x38 } + - { offset: 0x18ACF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xB48, symBinAddr: 0xEC394, symSize: 0x34 } + - { offset: 0x18AD58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xDEC, symBinAddr: 0xEC638, symSize: 0x34 } + - { offset: 0x18AD81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xE20, symBinAddr: 0xEC66C, symSize: 0x50 } + - { offset: 0x18ADE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xFAC, symBinAddr: 0xEC7F8, symSize: 0x34 } + - { offset: 0x18AE0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xFE0, symBinAddr: 0xEC82C, symSize: 0x1C } + - { offset: 0x18AE61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x1268, symBinAddr: 0xECAB4, symSize: 0x34 } + - { offset: 0x18AE8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x129C, symBinAddr: 0xECAE8, symSize: 0x50 } + - { offset: 0x18AED1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x12EC, symBinAddr: 0xECB38, symSize: 0x24 } + - { offset: 0x18AF01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x13A8, symBinAddr: 0xECBA0, symSize: 0x1D4 } + - { offset: 0x18AF46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x157C, symBinAddr: 0xECD74, symSize: 0x1B4 } + - { offset: 0x18BD86, size: 0x8, addend: 0x0, symName: '_$sSE8PenNavUIE10dictionarySDySSypGSgvgAA20PositionTrackingDataV_Tg5', symObjAddr: 0x2B8, symBinAddr: 0xED3E4, symSize: 0x204 } + - { offset: 0x18BE16, size: 0x8, addend: 0x0, symName: '_$sSE8PenNavUIE10dictionarySDySSypGSgvgAA19NavigationEventDataV_Tg5', symObjAddr: 0x4BC, symBinAddr: 0xED5E8, symSize: 0x1E8 } + - { offset: 0x18BEA6, size: 0x8, addend: 0x0, symName: '_$sSE8PenNavUIE10dictionarySDySSypGSgvgAA27LocationMessageTrackingDataV_Tg5', symObjAddr: 0x6A4, symBinAddr: 0xED7D0, symSize: 0x218 } + - { offset: 0x18CBE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18initializeRendereryyF', symObjAddr: 0x9E0, symBinAddr: 0xEDB0C, symSize: 0x768 } + - { offset: 0x18D34A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyF', symObjAddr: 0x119C, symBinAddr: 0xEE2C8, symSize: 0x5CC } + - { offset: 0x18D66D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU_', symObjAddr: 0x11FA8, symBinAddr: 0xFF0B8, symSize: 0x88 } + - { offset: 0x18D6B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU0_', symObjAddr: 0x12030, symBinAddr: 0xFF140, symSize: 0x2A8 } + - { offset: 0x18D88D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU1_', symObjAddr: 0x1266C, symBinAddr: 0xFF77C, symSize: 0x58 } + - { offset: 0x18D8B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU2_', symObjAddr: 0x126C4, symBinAddr: 0xFF7D4, symSize: 0x100 } + - { offset: 0x18D921, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU3_', symObjAddr: 0x127C4, symBinAddr: 0xFF8D4, symSize: 0x38C } + - { offset: 0x18DC9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCfETo', symObjAddr: 0x1A04, symBinAddr: 0xEEB30, symSize: 0x220 } + - { offset: 0x18E0F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC16onLocationChange8locationy7Penguin10PILocationC_tF', symObjAddr: 0x2138, symBinAddr: 0xEF264, symSize: 0x548 } + - { offset: 0x18E46B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC29controlUserLocationVisibility017_A507C9F1E7FC9E02P13BD01692CD1214LLyyF', symObjAddr: 0x2680, symBinAddr: 0xEF7AC, symSize: 0x11DC } + - { offset: 0x18E8DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23setUserLocationAndFocus8location7showGPS0M7BlueDoty7Penguin10PILocationC_S2btF', symObjAddr: 0x385C, symBinAddr: 0xF0988, symSize: 0x2A8 } + - { offset: 0x18EEE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11moveToFloor_12isManualMode010setsCamerahI0y7Penguin0I0CSg_S2btF', symObjAddr: 0x503C, symBinAddr: 0xF2168, symSize: 0x780 } + - { offset: 0x18F648, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22deselectedUserLocation12dismissPanelySb_tF', symObjAddr: 0x57BC, symBinAddr: 0xF28E8, symSize: 0x1A0 } + - { offset: 0x18FC2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC32resetCategoryForIndoorWayfindingyyF', symObjAddr: 0x8824, symBinAddr: 0xF5950, symSize: 0x2A8 } + - { offset: 0x18FDB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC05setupD12Restrictions017_A507C9F1E7FC9E02N13BD01692CD1214LL4modeyAA14LocationStatusO_tF', symObjAddr: 0x8C90, symBinAddr: 0xF5DBC, symSize: 0x1D0 } + - { offset: 0x18FE8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC05setupD6Bounds017_A507C9F1E7FC9E02N13BD01692CD1214LL06enableH0ySb_tF', symObjAddr: 0x8E60, symBinAddr: 0xF5F8C, symSize: 0x11C } + - { offset: 0x19007F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20setupOffCampusCamera017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtF', symObjAddr: 0xA500, symBinAddr: 0xF762C, symSize: 0x5E4 } + - { offset: 0x190405, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20setupOffCampusCamera017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtFyyScMYccfU_', symObjAddr: 0xFEC8, symBinAddr: 0xFCFEC, symSize: 0x78 } + - { offset: 0x1904BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCMa', symObjAddr: 0xB4FC, symBinAddr: 0xF8628, symSize: 0x20 } + - { offset: 0x190669, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC02onD5ReadyyyF', symObjAddr: 0xB51C, symBinAddr: 0xF8648, symSize: 0x924 } + - { offset: 0x190F6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC02onD5ReadyyyFyycfU_', symObjAddr: 0xBF3C, symBinAddr: 0xF9068, symSize: 0x248 } + - { offset: 0x191004, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC19startUpdateLocationyyF', symObjAddr: 0xBE40, symBinAddr: 0xF8F6C, symSize: 0xFC } + - { offset: 0x191035, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC21puckLocationDidUpdate10coordinateySo22CLLocationCoordinate2DV_tF', symObjAddr: 0xC184, symBinAddr: 0xF92B0, symSize: 0x1FC } + - { offset: 0x1911A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22selectCampusInfoScreen10identifierySS_tF', symObjAddr: 0xC380, symBinAddr: 0xF94AC, symSize: 0x44C } + - { offset: 0x191493, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC15mapAlignedNorthyyF', symObjAddr: 0xC7D0, symBinAddr: 0xF98F8, symSize: 0xD4 } + - { offset: 0x19160A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC15cameraDidChangeyyF', symObjAddr: 0xCA78, symBinAddr: 0xF9BA0, symSize: 0x5F0 } + - { offset: 0x191A6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14onSelectSymbol10identifierySS_tF', symObjAddr: 0xD068, symBinAddr: 0xFA190, symSize: 0x368 } + - { offset: 0x191E42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11onSelectPOI10identifierySS_tF', symObjAddr: 0xD3D0, symBinAddr: 0xFA4F8, symSize: 0x79C } + - { offset: 0x192481, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC21selectVenueInfoScreen10identifierySS_tF', symObjAddr: 0xDB6C, symBinAddr: 0xFAC94, symSize: 0x7AC } + - { offset: 0x192A49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC12selectCampus017_A507C9F1E7FC9E02N13BD01692CD1214LL6campusy7Penguin5VenueC_tFyycfU_', symObjAddr: 0xE318, symBinAddr: 0xFB440, symSize: 0x2C0 } + - { offset: 0x192C8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP27locationIndicatorCoordinateSo22CLLocationCoordinate2DVSgvgTW', symObjAddr: 0xE5D8, symBinAddr: 0xFB700, symSize: 0x18 } + - { offset: 0x192CAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP27locationIndicatorCoordinateSo22CLLocationCoordinate2DVSgvgTW', symObjAddr: 0xE5D8, symBinAddr: 0xFB700, symSize: 0x18 } + - { offset: 0x192CC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP27locationIndicatorCoordinateSo22CLLocationCoordinate2DVSgvgTW', symObjAddr: 0xE5D8, symBinAddr: 0xFB700, symSize: 0x18 } + - { offset: 0x192D05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP26isLocationIndicatorVisibleSbvgTW', symObjAddr: 0xE5F0, symBinAddr: 0xFB718, symSize: 0x14 } + - { offset: 0x192D25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP26isLocationIndicatorVisibleSbvgTW', symObjAddr: 0xE5F0, symBinAddr: 0xFB718, symSize: 0x14 } + - { offset: 0x192D43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP26isLocationIndicatorVisibleSbvgTW', symObjAddr: 0xE5F0, symBinAddr: 0xFB718, symSize: 0x14 } + - { offset: 0x192D60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP14onSelectSymbol10identifierySS_tFTW', symObjAddr: 0xE61C, symBinAddr: 0xFB740, symSize: 0x4 } + - { offset: 0x192D7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP20onSelectUserLocationyyFTW', symObjAddr: 0xE620, symBinAddr: 0xFB744, symSize: 0x84 } + - { offset: 0x192E05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP15cameraDidChangeyyFTW', symObjAddr: 0xE6A4, symBinAddr: 0xFB7C8, symSize: 0x4 } + - { offset: 0x192E21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP15mapAlignedNorthyyFTW', symObjAddr: 0xE6A8, symBinAddr: 0xFB7CC, symSize: 0x4 } + - { offset: 0x192E3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP21puckLocationDidUpdate10coordinateySo22CLLocationCoordinate2DV_tFTW', symObjAddr: 0xE6AC, symBinAddr: 0xFB7D0, symSize: 0x4 } + - { offset: 0x192E7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC19firstUpdateLocation017_A507C9F1E7FC9E02O13BD01692CD1214LLyy7Penguin5FloorC_AF10PILocationC0R10INRenderer10PIRendererCS2btF', symObjAddr: 0xE6B0, symBinAddr: 0xFB7D4, symSize: 0x5AC } + - { offset: 0x1933A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20setUserLocationColor017_A507C9F1E7FC9E02P13BD01692CD1214LLyyF', symObjAddr: 0xEC5C, symBinAddr: 0xFBD80, symSize: 0x2A8 } + - { offset: 0x19356B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22initializeUserLocation017_A507C9F1E7FC9E02O13BD01692CD1214LL8locationy7Penguin10PILocationC_tF', symObjAddr: 0xEF04, symBinAddr: 0xFC028, symSize: 0x11C } + - { offset: 0x19365F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC06updateD12LocationMode017_A507C9F1E7FC9E02O13BD01692CD1214LL8locationy7Penguin10PILocationC_tF', symObjAddr: 0xF020, symBinAddr: 0xFC144, symSize: 0x2D0 } + - { offset: 0x1937D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23handleOffCampusLocation017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtF', symObjAddr: 0xF2F0, symBinAddr: 0xFC414, symSize: 0xE4 } + - { offset: 0x1938D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22handleOnCampusLocation017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtF', symObjAddr: 0xF3D4, symBinAddr: 0xFC4F8, symSize: 0x534 } + - { offset: 0x193CCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC29setLocationProviderCoordinateyySo22CLLocationCoordinate2DVF', symObjAddr: 0xF908, symBinAddr: 0xFCA2C, symSize: 0xA4 } + - { offset: 0x193D9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC24handleUserLocationCamera017_A507C9F1E7FC9E02P13BD01692CD1214LL8locationy7Penguin10PILocationC_tF', symObjAddr: 0xF9AC, symBinAddr: 0xFCAD0, symSize: 0xF8 } + - { offset: 0x193F4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC32onSourceConnectivityStatusChange6statusy7Penguin0h10ConnectionJ0O_tF', symObjAddr: 0xFAA4, symBinAddr: 0xFCBC8, symSize: 0x424 } + - { offset: 0x19433E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC13onVenueChange5venuey7Penguin0H0C_tF', symObjAddr: 0xFF40, symBinAddr: 0xFD064, symSize: 0x554 } + - { offset: 0x1947C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC13onFloorChange5floory7Penguin0H0C_tF', symObjAddr: 0x10494, symBinAddr: 0xFD5B8, symSize: 0x498 } + - { offset: 0x194D12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC28handleConnectedFloorOnChange017_A507C9F1E7FC9E02Q13BD01692CD1214LL5floory7Penguin0I0CSg_tF', symObjAddr: 0x1092C, symBinAddr: 0xFDA50, symSize: 0x384 } + - { offset: 0x1950BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC9drawFloor017_A507C9F1E7FC9E02N13BD01692CD1214LL_012setsCameraToH0y7Penguin0H0C_SbtF', symObjAddr: 0x10CB0, symBinAddr: 0xFDDD4, symSize: 0xABC } + - { offset: 0x195728, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC16onRotationChange8rotationy7Penguin10PIRotationC_tF', symObjAddr: 0x1176C, symBinAddr: 0xFE890, symSize: 0x3A4 } + - { offset: 0x195AE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC26onConnectivityStatusChange6statusy7Penguin06ServerhI0O_tF', symObjAddr: 0x11B10, symBinAddr: 0xFEC34, symSize: 0x1D8 } + - { offset: 0x195C31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22onBlePowerStatusChange6statusy7Penguin08BLEPowerJ0O_tFyyScMYccfU_', symObjAddr: 0x11D3C, symBinAddr: 0xFEE60, symSize: 0xD0 } + - { offset: 0x195C7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP16onLocationChange8locationyAD0H0C_tFTW', symObjAddr: 0x11E0C, symBinAddr: 0xFEF30, symSize: 0x4 } + - { offset: 0x195C96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP13onVenueChange5venueyAD0L0C_tFTW', symObjAddr: 0x11E14, symBinAddr: 0xFEF34, symSize: 0x4 } + - { offset: 0x195CB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP13onFloorChange5flooryAD0L0C_tFTW', symObjAddr: 0x11E18, symBinAddr: 0xFEF38, symSize: 0x4 } + - { offset: 0x195CCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP16onRotationChange8rotationyAD10PIRotationC_tFTW', symObjAddr: 0x11E1C, symBinAddr: 0xFEF3C, symSize: 0x4 } + - { offset: 0x195CEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP26onConnectivityStatusChange6statusyAD06ServerlM0O_tFTW', symObjAddr: 0x11E20, symBinAddr: 0xFEF40, symSize: 0x4 } + - { offset: 0x195D06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP32onSourceConnectivityStatusChange6statusyAD0l10ConnectionN0O_tFTW', symObjAddr: 0x11E24, symBinAddr: 0xFEF44, symSize: 0x4 } + - { offset: 0x195D60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP017onGPSStatusChangeM06statusyAD25SourceGPSConnectionStatusO_tFTW', symObjAddr: 0x11E28, symBinAddr: 0xFEF48, symSize: 0xD0 } + - { offset: 0x195DB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP22onBlePowerStatusChange6statusyAD08BLEPowerN0O_tFTW', symObjAddr: 0x11F08, symBinAddr: 0xFF018, symSize: 0x4 } + - { offset: 0x195DD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP22onBlePowerStatusChange6statusyAD08BLEPowerN0O_tFTW', symObjAddr: 0x11F08, symBinAddr: 0xFF018, symSize: 0x4 } + - { offset: 0x195E0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC13setCameraMode017_A507C9F1E7FC9E02O13BD01692CD1214LLyyF', symObjAddr: 0x122D8, symBinAddr: 0xFF3E8, symSize: 0x394 } + - { offset: 0x19618E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14selectCategory8categoryy7Penguin11POICategoryV_tF', symObjAddr: 0x12B50, symBinAddr: 0xFFC60, symSize: 0x31C } + - { offset: 0x1963BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC16deselectCategoryyyF', symObjAddr: 0x12E6C, symBinAddr: 0xFFF7C, symSize: 0x360 } + - { offset: 0x196833, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18selectUserLocationyyF', symObjAddr: 0x131CC, symBinAddr: 0x1002DC, symSize: 0x18C } + - { offset: 0x1969C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC15didTapPlaceLink5placey7Penguin10PoiPolygonV_tF', symObjAddr: 0x13358, symBinAddr: 0x100468, symSize: 0x130 } + - { offset: 0x196AA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCAA16DeepLinkDelegateA2aDP011didTapPlaceH05placey7Penguin10PoiPolygonV_tFTW', symObjAddr: 0x13550, symBinAddr: 0x10063C, symSize: 0x4 } + - { offset: 0x196ABF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCAA16DeepLinkDelegateA2aDP011didTapVenueH05venuey7Penguin0L0C_tFTW', symObjAddr: 0x13554, symBinAddr: 0x100640, symSize: 0x1C } + - { offset: 0x196ADB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCAA16DeepLinkDelegateA2aDP012didTapCampusH06campusy7Penguin5VenueC_tFTW', symObjAddr: 0x13570, symBinAddr: 0x10065C, symSize: 0x1C } + - { offset: 0x196AF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCAA16DeepLinkDelegateA2aDP018didTapUserLocationH08locationyAA5PlaceC_tFTW', symObjAddr: 0x1358C, symBinAddr: 0x100678, symSize: 0x1C } + - { offset: 0x196CC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17updateFavoritePOI017_A507C9F1E7FC9E02O13BD01692CD1214LL5poiIdySiSg_tF', symObjAddr: 0x135A8, symBinAddr: 0x100694, symSize: 0x7EC } + - { offset: 0x1973F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC30reloadSelectedFavoriteLocation017_A507C9F1E7FC9E02P13BD01692CD1214LLyyF', symObjAddr: 0x13D94, symBinAddr: 0x100E80, symSize: 0xCC } + - { offset: 0x197526, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC19updateFavoritePlace017_A507C9F1E7FC9E02O13BD01692CD1214LL8favorite7isAddedyAA0H0C_SbtF', symObjAddr: 0x13E60, symBinAddr: 0x100F4C, symSize: 0x204 } + - { offset: 0x197747, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtF', symObjAddr: 0x14064, symBinAddr: 0x101150, symSize: 0x7C8 } + - { offset: 0x197CC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFyycfU_', symObjAddr: 0x1482C, symBinAddr: 0x101918, symSize: 0x12C } + - { offset: 0x197D8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18handleUserLocation017_A507C9F1E7FC9E02O13BD01692CD1214LLyyF', symObjAddr: 0x14958, symBinAddr: 0x101A44, symSize: 0x404 } + - { offset: 0x198204, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC35handleRecenterWhenLocationAvailable017_A507C9F1E7FC9E02Q13BD01692CD1214LLyyF', symObjAddr: 0x14D5C, symBinAddr: 0x101E48, symSize: 0x24C } + - { offset: 0x19827F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC35handleRecenterWhenLocationAvailable017_A507C9F1E7FC9E02Q13BD01692CD1214LLyyFyyScMYccfU_', symObjAddr: 0x150FC, symBinAddr: 0x1021E8, symSize: 0x104 } + - { offset: 0x198371, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC30handleSelectedLocationForToast017_A507C9F1E7FC9E02Q13BD01692CD1214LLyyF', symObjAddr: 0x14FA8, symBinAddr: 0x102094, symSize: 0x154 } + - { offset: 0x19853D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17getConnectedFloor06activeI07Penguin0I0CSgAI_tFTf4nd_n', symObjAddr: 0x15200, symBinAddr: 0x1022EC, symSize: 0x2C4 } + - { offset: 0x1988C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC35handlingUserLocationOnceFloorChange017_A507C9F1E7FC9E02R13BD01692CD1214LLyy17PenguinINRenderer10PIRendererC_0U010PILocationCSbAI0K0CSbAI5VenueCtFTf4nnnnndn_n', symObjAddr: 0x156F4, symBinAddr: 0x10275C, symSize: 0x5F0 } + - { offset: 0x198DDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC26handleVenueSymbolSelection017_A507C9F1E7FC9E02P13BD01692CD1214LL5venuey7Penguin0H0C_tFTf4dn_n', symObjAddr: 0x15CE4, symBinAddr: 0x102D4C, symSize: 0x420 } + - { offset: 0x1990FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18updateUserLocation017_A507C9F1E7FC9E02O13BD01692CD1214LL8locationySo22CLLocationCoordinate2DV_tFTf4dn_n', symObjAddr: 0x16114, symBinAddr: 0x10316C, symSize: 0x578 } + - { offset: 0x19953A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOWOh', symObjAddr: 0x168B0, symBinAddr: 0x103908, symSize: 0x3C } + - { offset: 0x19954E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOWOc', symObjAddr: 0x168EC, symBinAddr: 0x103944, symSize: 0x44 } + - { offset: 0x199562, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC9drawFloor017_A507C9F1E7FC9E02N13BD01692CD1214LL_012setsCameraToH0y7Penguin0H0C_SbtFySbcfU0_TA', symObjAddr: 0x16954, symBinAddr: 0x1039AC, symSize: 0x18 } + - { offset: 0x199576, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVWOh', symObjAddr: 0x1696C, symBinAddr: 0x1039C4, symSize: 0x34 } + - { offset: 0x19958A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC12selectCampus017_A507C9F1E7FC9E02N13BD01692CD1214LL6campusy7Penguin5VenueC_tFyycfU_TA', symObjAddr: 0x16A24, symBinAddr: 0x103A50, symSize: 0x8 } + - { offset: 0x19959E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22onBlePowerStatusChange6statusy7Penguin08BLEPowerJ0O_tFTf4nd_n', symObjAddr: 0x16A3C, symBinAddr: 0x103A58, symSize: 0x230 } + - { offset: 0x1995FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22onBlePowerStatusChange6statusy7Penguin08BLEPowerJ0O_tFyyScMYccfU_TA', symObjAddr: 0x16CC0, symBinAddr: 0x103C98, symSize: 0x8 } + - { offset: 0x19960F, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x16CC8, symBinAddr: 0x103CA0, symSize: 0x10 } + - { offset: 0x199623, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x16CD8, symBinAddr: 0x103CB0, symSize: 0x8 } + - { offset: 0x199637, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFyycfU_TA', symObjAddr: 0x16E68, symBinAddr: 0x103CB8, symSize: 0x8 } + - { offset: 0x19964B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC35handleRecenterWhenLocationAvailable017_A507C9F1E7FC9E02Q13BD01692CD1214LLyyFyyScMYccfU_TA', symObjAddr: 0x16E70, symBinAddr: 0x103CC0, symSize: 0x8 } + - { offset: 0x19965F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20setupOffCampusCamera017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtFyyScMYccfU_TA', symObjAddr: 0x16E9C, symBinAddr: 0x103CEC, symSize: 0x8 } + - { offset: 0x199673, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVACSEAAWl', symObjAddr: 0x16EA4, symBinAddr: 0x103CF4, symSize: 0x40 } + - { offset: 0x199687, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVACSEAAWl', symObjAddr: 0x16F34, symBinAddr: 0x103D34, symSize: 0x40 } + - { offset: 0x19969B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVACSEAAWl', symObjAddr: 0x16FB8, symBinAddr: 0x103D74, symSize: 0x40 } + - { offset: 0x1996AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20didTapRecenterButtonyyFyycACcfu_yycfu0_TA', symObjAddr: 0x16FF8, symBinAddr: 0x103DB4, symSize: 0x20 } + - { offset: 0x1996E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC34handleServerConnectionReconnectingyyFyyScMYccfU_TA', symObjAddr: 0x17088, symBinAddr: 0x103DF8, symSize: 0x8 } + - { offset: 0x1996F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC28checkLocationDetectionStatus017_A507C9F1E7FC9E02P13BD01692CD1214LLyyFyyScMYccfU_TA', symObjAddr: 0x17090, symBinAddr: 0x103E00, symSize: 0x8 } + - { offset: 0x199709, size: 0x8, addend: 0x0, symName: '_$s7Penguin5FloorCSgSgWOe', symObjAddr: 0x17098, symBinAddr: 0x103E08, symSize: 0x10 } + - { offset: 0x19971D, size: 0x8, addend: 0x0, symName: '_$s7Penguin5FloorCSgSgWOy', symObjAddr: 0x170A8, symBinAddr: 0x103E18, symSize: 0x10 } + - { offset: 0x199731, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14viewWillAppearyySbFyycfU_TA', symObjAddr: 0x170B8, symBinAddr: 0x103E28, symSize: 0x18 } + - { offset: 0x199745, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU0_TA', symObjAddr: 0x170D0, symBinAddr: 0x103E40, symSize: 0x8 } + - { offset: 0x199759, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU1_TA', symObjAddr: 0x170D8, symBinAddr: 0x103E48, symSize: 0x8 } + - { offset: 0x19976D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU2_TA', symObjAddr: 0x170E0, symBinAddr: 0x103E50, symSize: 0x8 } + - { offset: 0x199781, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU3_TA', symObjAddr: 0x170E8, symBinAddr: 0x103E58, symSize: 0x8 } + - { offset: 0x199795, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU_TA', symObjAddr: 0x170F0, symBinAddr: 0x103E60, symSize: 0x8 } + - { offset: 0x1997A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18initializeRendereryyFyycACcfu0_yycfu1_TA', symObjAddr: 0x170F8, symBinAddr: 0x103E68, symSize: 0x20 } + - { offset: 0x1997DB, size: 0x8, addend: 0x0, symName: '_$s7Penguin13FloorSettingsVSgWOb', symObjAddr: 0x171AC, symBinAddr: 0x103F1C, symSize: 0x48 } + - { offset: 0x1997EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC02onD5ReadyyyFyycfU_TA', symObjAddr: 0x171F4, symBinAddr: 0x103F64, symSize: 0x34 } + - { offset: 0x199946, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14toastContainerSo6UIViewCSgvgTo', symObjAddr: 0x8BC, symBinAddr: 0xED9E8, symSize: 0x20 } + - { offset: 0x1999A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14toastContainerSo6UIViewCSgvsTo', symObjAddr: 0x8DC, symBinAddr: 0xEDA08, symSize: 0x14 } + - { offset: 0x1999F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20toastContainerHeightSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x8F0, symBinAddr: 0xEDA1C, symSize: 0x20 } + - { offset: 0x199A51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20toastContainerHeightSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x910, symBinAddr: 0xEDA3C, symSize: 0x14 } + - { offset: 0x199C77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11campusFloor7Penguin0H0CSgvg', symObjAddr: 0x924, symBinAddr: 0xEDA50, symSize: 0xBC } + - { offset: 0x19A1B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x1768, symBinAddr: 0xEE894, symSize: 0xF0 } + - { offset: 0x19A1ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCfD', symObjAddr: 0x1858, symBinAddr: 0xEE984, symSize: 0xCC } + - { offset: 0x19A22D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCfDTo', symObjAddr: 0x1924, symBinAddr: 0xEEA50, symSize: 0xE0 } + - { offset: 0x19A9B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14viewWillAppearyySbF', symObjAddr: 0x1C24, symBinAddr: 0xEED50, symSize: 0x514 } + - { offset: 0x19B052, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0x3B04, symBinAddr: 0xF0C30, symSize: 0x30 } + - { offset: 0x19B09F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC010setupDebugE0yyF', symObjAddr: 0x3B34, symBinAddr: 0xF0C60, symSize: 0x26C } + - { offset: 0x19B155, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18oneSecondDidElapseyyFTo', symObjAddr: 0x3DA0, symBinAddr: 0xF0ECC, symSize: 0x5C } + - { offset: 0x19B1F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC28checkLocationDetectionStatus017_A507C9F1E7FC9E02P13BD01692CD1214LLyyF', symObjAddr: 0x3DFC, symBinAddr: 0xF0F28, symSize: 0x2E0 } + - { offset: 0x19B260, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC28checkLocationDetectionStatus017_A507C9F1E7FC9E02P13BD01692CD1214LLyyFyyScMYccfU_', symObjAddr: 0x40DC, symBinAddr: 0xF1208, symSize: 0x3DC } + - { offset: 0x19B569, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC25retryConnectivityCallback017_A507C9F1E7FC9E02O13BD01692CD1214LLyyF', symObjAddr: 0x44B8, symBinAddr: 0xF15E4, symSize: 0xC4 } + - { offset: 0x19B624, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC34handleServerConnectionReconnectingyyF', symObjAddr: 0x457C, symBinAddr: 0xF16A8, symSize: 0x2E4 } + - { offset: 0x19B68C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC34handleServerConnectionReconnectingyyFyyScMYccfU_', symObjAddr: 0x4860, symBinAddr: 0xF198C, symSize: 0x19C } + - { offset: 0x19B90A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11moveToPlace_8animatedyAA0I0CSg_SbtF', symObjAddr: 0x49FC, symBinAddr: 0xF1B28, symSize: 0x640 } + - { offset: 0x19BE58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC9moveToPoi_06sourceE08animatedy7Penguin0I7PolygonVSg_AA06SourceE0OSbtF', symObjAddr: 0x595C, symBinAddr: 0xF2A88, symSize: 0x310 } + - { offset: 0x19C0B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11moveToVenue_8animatedy7Penguin0I0CSg_SbtF', symObjAddr: 0x5C6C, symBinAddr: 0xF2D98, symSize: 0x708 } + - { offset: 0x19C4F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC12moveToCampus_8animatedy7Penguin5VenueCSg_SbtF', symObjAddr: 0x6374, symBinAddr: 0xF34A0, symSize: 0x274 } + - { offset: 0x19C67C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC06filterD016filteredFeatures6manualySayAA7POIDataCG_SbtF', symObjAddr: 0x65E8, symBinAddr: 0xF3714, symSize: 0x720 } + - { offset: 0x19D063, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC13moveToFeature7featureyAA7POIDataCSg_tF', symObjAddr: 0x6D08, symBinAddr: 0xF3E34, symSize: 0x610 } + - { offset: 0x19D610, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC05clearD6FilteryyF', symObjAddr: 0x7318, symBinAddr: 0xF4444, symSize: 0xE4 } + - { offset: 0x19D7A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC19drawParkingLocation012setsCameraToH0ySb_tF', symObjAddr: 0x73FC, symBinAddr: 0xF4528, symSize: 0x3D4 } + - { offset: 0x19DAA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC21removeParkingLocationyyF', symObjAddr: 0x77D0, symBinAddr: 0xF48FC, symSize: 0xD0 } + - { offset: 0x19DBF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC03getD7PaddingSo12UIEdgeInsetsVyF', symObjAddr: 0x78A0, symBinAddr: 0xF49CC, symSize: 0x334 } + - { offset: 0x19DF0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17fitToCampusAction8animatedySb_tF', symObjAddr: 0x7BD4, symBinAddr: 0xF4D00, symSize: 0xC50 } + - { offset: 0x19E6CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17fitToCampusAction8animatedySb_tFTo', symObjAddr: 0x8ACC, symBinAddr: 0xF5BF8, symSize: 0x30 } + - { offset: 0x19E6E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC26setupCameraToDisplayCampus017_A507C9F1E7FC9E02Q13BD01692CD1214LL8animated10completionySb_yycSgtF', symObjAddr: 0x8AFC, symBinAddr: 0xF5C28, symSize: 0x194 } + - { offset: 0x19E81B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18updateVenueSymbolsyyF', symObjAddr: 0x8F7C, symBinAddr: 0xF60A8, symSize: 0x344 } + - { offset: 0x19EBA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC16focusOnGPSCampus3loc9withFocusy7Penguin10PILocationC_SbtF', symObjAddr: 0x92C0, symBinAddr: 0xF63EC, symSize: 0x470 } + - { offset: 0x19F114, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20didTapRecenterButtonyyF', symObjAddr: 0x9730, symBinAddr: 0xF685C, symSize: 0x298 } + - { offset: 0x19F2DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20didTapRecenterButtonyyFTo', symObjAddr: 0x99C8, symBinAddr: 0xF6AF4, symSize: 0x28 } + - { offset: 0x19F36D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC8recenteryyF', symObjAddr: 0x99F0, symBinAddr: 0xF6B1C, symSize: 0xB10 } + - { offset: 0x19FD1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC06updateD8ControlsyyF', symObjAddr: 0xAAE4, symBinAddr: 0xF7C10, symSize: 0x174 } + - { offset: 0x19FE81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xAC58, symBinAddr: 0xF7D84, symSize: 0x424 } + - { offset: 0x19FF74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xB07C, symBinAddr: 0xF81A8, symSize: 0x60 } + - { offset: 0x19FFBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB0DC, symBinAddr: 0xF8208, symSize: 0x3F8 } + - { offset: 0x1A00A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xB4D4, symBinAddr: 0xF8600, symSize: 0x28 } + - { offset: 0x1A06F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC010initializeE09withFocusySb_tFTf4dn_n', symObjAddr: 0x15548, symBinAddr: 0x1025B0, symSize: 0x1AC } + - { offset: 0x1A0964, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC21selectParkingLocation_8animatedyAA5PlaceCSg_SbtFTf4ndn_n', symObjAddr: 0x1668C, symBinAddr: 0x1036E4, symSize: 0x224 } + - { offset: 0x1A0EB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC12fetchRequestSo07NSFetchF0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x103FE8, symSize: 0x70 } + - { offset: 0x1A0F4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC12fetchRequestSo07NSFetchF0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x103FE8, symSize: 0x70 } + - { offset: 0x1A0FA1, size: 0x8, addend: 0x0, symName: _keypath_get_selector_type, symObjAddr: 0x70, symBinAddr: 0x104058, symSize: 0xC } + - { offset: 0x1A0FB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC4typeSSSgvpACTK', symObjAddr: 0x7C, symBinAddr: 0x104064, symSize: 0x68 } + - { offset: 0x1A0FCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC4typeSSSgvpACTk', symObjAddr: 0xE8, symBinAddr: 0x1040D0, symSize: 0x54 } + - { offset: 0x1A0FE5, size: 0x8, addend: 0x0, symName: _keypath_get_selector_value, symObjAddr: 0x140, symBinAddr: 0x104128, symSize: 0xC } + - { offset: 0x1A0FF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvpACTK', symObjAddr: 0x14C, symBinAddr: 0x104134, symSize: 0x68 } + - { offset: 0x1A1011, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvpACTk', symObjAddr: 0x1B8, symBinAddr: 0x1041A0, symSize: 0x5C } + - { offset: 0x1A13CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineOMa', symObjAddr: 0xE4, symBinAddr: 0x104200, symSize: 0x10 } + - { offset: 0x1A1965, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCMa', symObjAddr: 0x260, symBinAddr: 0x104464, symSize: 0x20 } + - { offset: 0x1A19B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15BehaviorAdapterCMa', symObjAddr: 0x320, symBinAddr: 0x104524, symSize: 0x20 } + - { offset: 0x1A19E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCACycfC', symObjAddr: 0x0, symBinAddr: 0x104210, symSize: 0x28 } + - { offset: 0x1A1A19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCACycfc', symObjAddr: 0x28, symBinAddr: 0x104238, symSize: 0x10 } + - { offset: 0x1A1A4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x38, symBinAddr: 0x104248, symSize: 0x1C } + - { offset: 0x1A1A64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x38, symBinAddr: 0x104248, symSize: 0x1C } + - { offset: 0x1A1A76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate12CoreGraphics7CGFloatVvg', symObjAddr: 0x54, symBinAddr: 0x104264, symSize: 0x1C } + - { offset: 0x1A1A91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x70, symBinAddr: 0x104280, symSize: 0xC } + - { offset: 0x1A1AA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime12CoreGraphics7CGFloatVvg', symObjAddr: 0x7C, symBinAddr: 0x10428C, symSize: 0xC } + - { offset: 0x1A1ADA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x88, symBinAddr: 0x104298, symSize: 0x10 } + - { offset: 0x1A1AF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x88, symBinAddr: 0x104298, symSize: 0x10 } + - { offset: 0x1A1B04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate12CoreGraphics7CGFloatVvg', symObjAddr: 0x98, symBinAddr: 0x1042A8, symSize: 0x10 } + - { offset: 0x1A1B1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC21redirectionalProgress_4from2to12CoreGraphics7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtF', symObjAddr: 0xA8, symBinAddr: 0x1042B8, symSize: 0x8 } + - { offset: 0x1A1B64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC21redirectionalProgress_4from2to12CoreGraphics7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtFTo', symObjAddr: 0xB0, symBinAddr: 0x1042C0, symSize: 0x8 } + - { offset: 0x1A1BB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0xC0, symBinAddr: 0x1042C8, symSize: 0x8 } + - { offset: 0x1A1BD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvgTo', symObjAddr: 0xC8, symBinAddr: 0x1042D0, symSize: 0x3C } + - { offset: 0x1A1C0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvg', symObjAddr: 0x104, symBinAddr: 0x10430C, symSize: 0x30 } + - { offset: 0x1A1C53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x134, symBinAddr: 0x10433C, symSize: 0x48 } + - { offset: 0x1A1C8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvs', symObjAddr: 0x17C, symBinAddr: 0x104384, symSize: 0x3C } + - { offset: 0x1A1CB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvM', symObjAddr: 0x1B8, symBinAddr: 0x1043C0, symSize: 0x30 } + - { offset: 0x1A1CE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCfd', symObjAddr: 0x1EC, symBinAddr: 0x1043F0, symSize: 0x8 } + - { offset: 0x1A1D0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCfD', symObjAddr: 0x1F4, symBinAddr: 0x1043F8, symSize: 0x10 } + - { offset: 0x1A1D4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15BehaviorAdapterCfD', symObjAddr: 0x2F4, symBinAddr: 0x1044F8, symSize: 0x2C } + - { offset: 0x1A2132, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC07getFontD0SayAA03AppG0CGyF', symObjAddr: 0x0, symBinAddr: 0x104544, symSize: 0x194 } + - { offset: 0x1A22F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryCMa', symObjAddr: 0x1170, symBinAddr: 0x105690, symSize: 0x20 } + - { offset: 0x1A230D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC06insertD033_8B542D7846C5C7CE4D2E83195C6CABFALL5style4datayAA0abD4TypeO_10Foundation4DataVtFyyYbXEfU_TA', symObjAddr: 0x11FC, symBinAddr: 0x1056DC, symSize: 0x10 } + - { offset: 0x1A2321, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1214, symBinAddr: 0x1056EC, symSize: 0x10 } + - { offset: 0x1A2335, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1224, symBinAddr: 0x1056FC, symSize: 0x8 } + - { offset: 0x1A2349, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC05clearD033_8B542D7846C5C7CE4D2E83195C6CABFALLyyAA0abD4TypeOFyyYbXEfU_TA', symObjAddr: 0x1290, symBinAddr: 0x105728, symSize: 0xC } + - { offset: 0x1A235D, size: 0x8, addend: 0x0, symName: '_$sSo11NSPredicateCMa', symObjAddr: 0x129C, symBinAddr: 0x105734, symSize: 0x44 } + - { offset: 0x1A2371, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC15getColorsStylesAA0G8ResponseVSgyFyyYbXEfU_TA', symObjAddr: 0x1390, symBinAddr: 0x1057A4, symSize: 0xC } + - { offset: 0x1A2385, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC07getFontD0SayAA03AppG0CGyFyyYbXEfU_TA', symObjAddr: 0x1440, symBinAddr: 0x1057E4, symSize: 0x8 } + - { offset: 0x1A2524, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC07getFontD0SayAA03AppG0CGyF', symObjAddr: 0x0, symBinAddr: 0x104544, symSize: 0x194 } + - { offset: 0x1A25B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC07getFontD0SayAA03AppG0CGyFyyYbXEfU_', symObjAddr: 0x194, symBinAddr: 0x1046D8, symSize: 0x344 } + - { offset: 0x1A28AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC15getColorsStylesAA0G8ResponseVSgyF', symObjAddr: 0x4D8, symBinAddr: 0x104A1C, symSize: 0x2AC } + - { offset: 0x1A2A03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC15getColorsStylesAA0G8ResponseVSgyFyyYbXEfU_', symObjAddr: 0x784, symBinAddr: 0x104CC8, symSize: 0x1E4 } + - { offset: 0x1A2BD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC05clearD033_8B542D7846C5C7CE4D2E83195C6CABFALLyyAA0abD4TypeOF', symObjAddr: 0x968, symBinAddr: 0x104EAC, symSize: 0x188 } + - { offset: 0x1A2C91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC05clearD033_8B542D7846C5C7CE4D2E83195C6CABFALLyyAA0abD4TypeOFyyYbXEfU_', symObjAddr: 0xAF0, symBinAddr: 0x105034, symSize: 0x29C } + - { offset: 0x1A2EA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC06insertD033_8B542D7846C5C7CE4D2E83195C6CABFALL5style4datayAA0abD4TypeO_10Foundation4DataVtF', symObjAddr: 0xD8C, symBinAddr: 0x1052D0, symSize: 0x1A8 } + - { offset: 0x1A2F3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC06insertD033_8B542D7846C5C7CE4D2E83195C6CABFALL5style4datayAA0abD4TypeO_10Foundation4DataVtFyyYbXEfU_', symObjAddr: 0xF34, symBinAddr: 0x105478, symSize: 0x218 } + - { offset: 0x1A33A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC12topContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x105810, symSize: 0x10 } + - { offset: 0x1A3877, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCfE', symObjAddr: 0x1394, symBinAddr: 0x106BA4, symSize: 0x3C } + - { offset: 0x1A38A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCfETo', symObjAddr: 0x1400, symBinAddr: 0x106C10, symSize: 0x48 } + - { offset: 0x1A38D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCMa', symObjAddr: 0x1448, symBinAddr: 0x106C58, symSize: 0x20 } + - { offset: 0x1A38F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x1468, symBinAddr: 0x106C78, symSize: 0x4 } + - { offset: 0x1A3916, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x1468, symBinAddr: 0x106C78, symSize: 0x4 } + - { offset: 0x1A39CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x146C, symBinAddr: 0x106C7C, symSize: 0x388 } + - { offset: 0x1A3C52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyycfU_', symObjAddr: 0x17F4, symBinAddr: 0x107004, symSize: 0x54 } + - { offset: 0x1A3C7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1848, symBinAddr: 0x107058, symSize: 0xB8 } + - { offset: 0x1A3CB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1900, symBinAddr: 0x107110, symSize: 0x84 } + - { offset: 0x1A3D13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x1984, symBinAddr: 0x107194, symSize: 0x78 } + - { offset: 0x1A3D88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x19FC, symBinAddr: 0x10720C, symSize: 0x24 } + - { offset: 0x1A3DFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC10setupPanelyyF', symObjAddr: 0x1A20, symBinAddr: 0x107230, symSize: 0x10C } + - { offset: 0x1A3EE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC10setupPanelyyFTo', symObjAddr: 0x1B2C, symBinAddr: 0x10733C, symSize: 0x28 } + - { offset: 0x1A3F3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1BD0, symBinAddr: 0x107364, symSize: 0xC8 } + - { offset: 0x1A3F6F, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1CC4, symBinAddr: 0x107450, symSize: 0x10 } + - { offset: 0x1A3F83, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1CD4, symBinAddr: 0x107460, symSize: 0x8 } + - { offset: 0x1A3F97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyycfU_TA', symObjAddr: 0x1D20, symBinAddr: 0x107468, symSize: 0x8 } + - { offset: 0x1A3FAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4ddd_n', symObjAddr: 0x1DB8, symBinAddr: 0x107470, symSize: 0x8C } + - { offset: 0x1A404B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC014shareFormattedE0yySSFyyScMYccfU0_TA', symObjAddr: 0x1EB4, symBinAddr: 0x107528, symSize: 0x8 } + - { offset: 0x1A42DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC12topContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x105810, symSize: 0x10 } + - { offset: 0x1A42F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC12topContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x105810, symSize: 0x10 } + - { offset: 0x1A4338, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC12topContainerSo6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x105820, symSize: 0x34 } + - { offset: 0x1A4387, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x105854, symSize: 0x10 } + - { offset: 0x1A439F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x105854, symSize: 0x10 } + - { offset: 0x1A43DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x105864, symSize: 0x34 } + - { offset: 0x1A442E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x105898, symSize: 0x10 } + - { offset: 0x1A4446, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x105898, symSize: 0x10 } + - { offset: 0x1A4486, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x1058A8, symSize: 0x34 } + - { offset: 0x1A4669, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC11viewDidLoadyyF', symObjAddr: 0xCC, symBinAddr: 0x1058DC, symSize: 0x250 } + - { offset: 0x1A48C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x31C, symBinAddr: 0x105B2C, symSize: 0x28 } + - { offset: 0x1A48EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC7dismissyyFTo', symObjAddr: 0x344, symBinAddr: 0x105B54, symSize: 0x38 } + - { offset: 0x1A4933, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC014configureTableF0yyF', symObjAddr: 0x37C, symBinAddr: 0x105B8C, symSize: 0x12C } + - { offset: 0x1A4A8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC06formatE6AsTextyyF', symObjAddr: 0x4A8, symBinAddr: 0x105CB8, symSize: 0x4FC } + - { offset: 0x1A5268, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC014shareFormattedE0yySSF', symObjAddr: 0x9A4, symBinAddr: 0x1061B4, symSize: 0x7C4 } + - { offset: 0x1A57D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC014shareFormattedE0yySSFyyScMYccfU0_', symObjAddr: 0x1168, symBinAddr: 0x106978, symSize: 0x6C } + - { offset: 0x1A58C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x11D4, symBinAddr: 0x1069E4, symSize: 0xA8 } + - { offset: 0x1A5903, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x127C, symBinAddr: 0x106A8C, symSize: 0x60 } + - { offset: 0x1A594B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x12DC, symBinAddr: 0x106AEC, symSize: 0x90 } + - { offset: 0x1A597E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x136C, symBinAddr: 0x106B7C, symSize: 0x28 } + - { offset: 0x1A5992, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCfD', symObjAddr: 0x13D0, symBinAddr: 0x106BE0, symSize: 0x30 } + - { offset: 0x1A5E35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9IssueTypeOSHAASQWb', symObjAddr: 0x140, symBinAddr: 0x107538, symSize: 0x4 } + - { offset: 0x1A5E49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9IssueTypeOACSQAAWl', symObjAddr: 0x144, symBinAddr: 0x10753C, symSize: 0x40 } + - { offset: 0x1A5E5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9IssueTypeOMa', symObjAddr: 0x2E8, symBinAddr: 0x10757C, symSize: 0x10 } + - { offset: 0x1A61F1, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfC', symObjAddr: 0x0, symBinAddr: 0x10758C, symSize: 0x14 } + - { offset: 0x1A6251, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfC', symObjAddr: 0x0, symBinAddr: 0x10758C, symSize: 0x14 } + - { offset: 0x1A6265, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DV8PenNavUIE6encode2toys7Encoder_p_tKF', symObjAddr: 0x14, symBinAddr: 0x1075A0, symSize: 0xC4 } + - { offset: 0x1A62B5, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DVSe8PenNavUISe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xD8, symBinAddr: 0x107664, symSize: 0x28 } + - { offset: 0x1A633B, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DVSE8PenNavUISE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x100, symBinAddr: 0x10768C, symSize: 0xC0 } + - { offset: 0x1A638E, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x1C0, symBinAddr: 0x10774C, symSize: 0x100 } + - { offset: 0x1A6418, size: 0x8, addend: 0x0, symName: ___swift_mutable_project_boxed_opaque_existential_1, symObjAddr: 0x2E4, symBinAddr: 0x10784C, symSize: 0x28 } + - { offset: 0x1A67E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwxx', symObjAddr: 0x2C, symBinAddr: 0x1078A0, symSize: 0x8 } + - { offset: 0x1A67F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwca', symObjAddr: 0x34, symBinAddr: 0x1078A8, symSize: 0x38 } + - { offset: 0x1A680C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwta', symObjAddr: 0x78, symBinAddr: 0x1078E0, symSize: 0x30 } + - { offset: 0x1A6820, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwet', symObjAddr: 0xA8, symBinAddr: 0x107910, symSize: 0x5C } + - { offset: 0x1A6834, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwst', symObjAddr: 0x104, symBinAddr: 0x10796C, symSize: 0x50 } + - { offset: 0x1A6848, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVMa', symObjAddr: 0x154, symBinAddr: 0x1079BC, symSize: 0x10 } + - { offset: 0x1A6BD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs0I3KeyAAWl', symObjAddr: 0x99C, symBinAddr: 0x107F6C, symSize: 0x40 } + - { offset: 0x1A6BEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVACSeAAWl', symObjAddr: 0xA44, symBinAddr: 0x107FAC, symSize: 0x40 } + - { offset: 0x1A6C00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVACSEAAWl', symObjAddr: 0xAEC, symBinAddr: 0x108054, symSize: 0x40 } + - { offset: 0x1A6C14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOMa', symObjAddr: 0xC10, symBinAddr: 0x108094, symSize: 0x10 } + - { offset: 0x1A6C28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwxx', symObjAddr: 0xC4C, symBinAddr: 0x1080A4, symSize: 0x8 } + - { offset: 0x1A6C3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwcp', symObjAddr: 0xC54, symBinAddr: 0x1080AC, symSize: 0x3C } + - { offset: 0x1A6C50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwca', symObjAddr: 0xC90, symBinAddr: 0x1080E8, symSize: 0x50 } + - { offset: 0x1A6C64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwta', symObjAddr: 0xCEC, symBinAddr: 0x108138, symSize: 0x40 } + - { offset: 0x1A6C78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwet', symObjAddr: 0xD2C, symBinAddr: 0x108178, symSize: 0x5C } + - { offset: 0x1A6C8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwst', symObjAddr: 0xD88, symBinAddr: 0x1081D4, symSize: 0x54 } + - { offset: 0x1A6CA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVMa', symObjAddr: 0xDDC, symBinAddr: 0x108228, symSize: 0x10 } + - { offset: 0x1A6CB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOSHAASQWb', symObjAddr: 0xDEC, symBinAddr: 0x108238, symSize: 0x4 } + - { offset: 0x1A6CC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFSQAAWl', symObjAddr: 0xDF0, symBinAddr: 0x10823C, symSize: 0x40 } + - { offset: 0x1A6CDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0I3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xE30, symBinAddr: 0x10827C, symSize: 0x4 } + - { offset: 0x1A6CF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xE34, symBinAddr: 0x108280, symSize: 0x40 } + - { offset: 0x1A6D04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0I3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0xE74, symBinAddr: 0x1082C0, symSize: 0x4 } + - { offset: 0x1A6D18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0xE78, symBinAddr: 0x1082C4, symSize: 0x40 } + - { offset: 0x1A6D2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs0J3KeyAAWl', symObjAddr: 0x1008, symBinAddr: 0x108454, symSize: 0x40 } + - { offset: 0x1A6D40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOMa', symObjAddr: 0x11AC, symBinAddr: 0x108494, symSize: 0x10 } + - { offset: 0x1A6D54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOSHAASQWb', symObjAddr: 0x11BC, symBinAddr: 0x1084A4, symSize: 0x4 } + - { offset: 0x1A6D68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFSQAAWl', symObjAddr: 0x11C0, symBinAddr: 0x1084A8, symSize: 0x40 } + - { offset: 0x1A6D7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0J3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1200, symBinAddr: 0x1084E8, symSize: 0x4 } + - { offset: 0x1A6D90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1204, symBinAddr: 0x1084EC, symSize: 0x40 } + - { offset: 0x1A6DA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0J3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1244, symBinAddr: 0x10852C, symSize: 0x4 } + - { offset: 0x1A6DB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x1248, symBinAddr: 0x108530, symSize: 0x40 } + - { offset: 0x1A6DFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x3C4, symBinAddr: 0x107AD8, symSize: 0x28 } + - { offset: 0x1A6E17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x3EC, symBinAddr: 0x107B00, symSize: 0x28 } + - { offset: 0x1A6E39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x754, symBinAddr: 0x107D8C, symSize: 0x28 } + - { offset: 0x1A6E55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x77C, symBinAddr: 0x107DB4, symSize: 0x28 } + - { offset: 0x1A6E72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV6encode2toys7Encoder_p_tKF', symObjAddr: 0x164, symBinAddr: 0x1079CC, symSize: 0x10C } + - { offset: 0x1A6EC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x414, symBinAddr: 0x107B28, symSize: 0x28 } + - { offset: 0x1A6EF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x43C, symBinAddr: 0x107B50, symSize: 0x18 } + - { offset: 0x1A6F04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV6encode2toys7Encoder_p_tKF', symObjAddr: 0x454, symBinAddr: 0x107B68, symSize: 0x12C } + - { offset: 0x1A6F58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0J3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x644, symBinAddr: 0x107C94, symSize: 0x2C } + - { offset: 0x1A6F9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0J3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x670, symBinAddr: 0x107CC0, symSize: 0xCC } + - { offset: 0x1A701F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x7A4, symBinAddr: 0x107DDC, symSize: 0x34 } + - { offset: 0x1A7048, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x7D8, symBinAddr: 0x107E10, symSize: 0x28 } + - { offset: 0x1A705C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x800, symBinAddr: 0x107E38, symSize: 0x134 } + - { offset: 0x1A707F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0xEB8, symBinAddr: 0x108304, symSize: 0x150 } + - { offset: 0x1A7621, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV22parseContainerChildrenySayAA3DOMO15GraphicsElementCGAA3XMLO0J0CKF', symObjAddr: 0x0, symBinAddr: 0x108574, symSize: 0x620 } + - { offset: 0x1A80C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseGraphicsElementyAA3DOMO0fG0CSgAA3XMLO0G0CKF', symObjAddr: 0x620, symBinAddr: 0x108B94, symSize: 0xAC0 } + - { offset: 0x1A86BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10parseGroupyAA3DOMO0F0CAA3XMLO7ElementCKF', symObjAddr: 0x10E0, symBinAddr: 0x109654, symSize: 0x14C } + - { offset: 0x1A87CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseSwitchyAA3DOMO0F0CAA3XMLO7ElementCKF', symObjAddr: 0x122C, symBinAddr: 0x1097A0, symSize: 0x154 } + - { offset: 0x1A88C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseStyleAttributesyAA3DOMO012PresentationG0VAA3XMLO7ElementCKF', symObjAddr: 0x1380, symBinAddr: 0x1098F4, symSize: 0x11C } + - { offset: 0x1A8983, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV27parsePresentationAttributesyAA3DOMO0fG0VAA15AttributeParser_pKF', symObjAddr: 0x149C, symBinAddr: 0x109A10, symSize: 0xBF0 } + - { offset: 0x1A8A35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOAESYAAWl', symObjAddr: 0x2130, symBinAddr: 0x10A600, symSize: 0x40 } + - { offset: 0x1A8A49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOAESYAAWl', symObjAddr: 0x2170, symBinAddr: 0x10A640, symSize: 0x40 } + - { offset: 0x1A8A5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOAESYAAWl', symObjAddr: 0x21B0, symBinAddr: 0x10A680, symSize: 0x40 } + - { offset: 0x1A8A71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOAESYAAWl', symObjAddr: 0x21F0, symBinAddr: 0x10A6C0, symSize: 0x40 } + - { offset: 0x1A8A85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOAESYAAWl', symObjAddr: 0x2230, symBinAddr: 0x10A700, symSize: 0x40 } + - { offset: 0x1A8AF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV19parseStyleAttribute33_F9D38FD2680150F6E65C6F1BDEFE6498LLySS_SStAC7ScannerVzKFTf4nd_n', symObjAddr: 0x22B4, symBinAddr: 0x10A740, symSize: 0x20C } + - { offset: 0x1A8C5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseStyleAttributesySDyS2SGSSKFTf4nd_n', symObjAddr: 0x24C0, symBinAddr: 0x10A94C, symSize: 0x2B0 } + - { offset: 0x1A8E56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV15parseAttributesyAC0F0CAA3XMLO7ElementCKFTf4nx_n', symObjAddr: 0x2770, symBinAddr: 0x10ABFC, symSize: 0x1C0 } + - { offset: 0x1A9098, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseLineyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x2930, symBinAddr: 0x10ADBC, symSize: 0x1B8 } + - { offset: 0x1A919F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseCircleyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x2AE8, symBinAddr: 0x10AF74, symSize: 0x184 } + - { offset: 0x1A9288, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseEllipseyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x2C6C, symBinAddr: 0x10B0F8, symSize: 0x1D0 } + - { offset: 0x1A9391, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseRectyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x2E3C, symBinAddr: 0x10B2C8, symSize: 0x2DC } + - { offset: 0x1A9483, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOWOc', symObjAddr: 0x3198, symBinAddr: 0x10B5A4, symSize: 0x3C } + - { offset: 0x1A9497, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOSgWOh', symObjAddr: 0x3208, symBinAddr: 0x10B5E0, symSize: 0x40 } + - { offset: 0x1A9531, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV15logParsingError3for8filename7parsingys0G0_p_SSSgAA3XMLO7ElementCSgtFZTf4nnnd_n', symObjAddr: 0x3248, symBinAddr: 0x10B620, symSize: 0x72C } + - { offset: 0x1A9A72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVWOd', symObjAddr: 0x3994, symBinAddr: 0x10BD4C, symSize: 0x44 } + - { offset: 0x1A9AB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parsePointsySayAA3DOMO5PointVGSSKFAISSKXEfU_AA9XMLParserV10AttributesC_TG5', symObjAddr: 0x39D8, symBinAddr: 0x10BD90, symSize: 0x58 } + - { offset: 0x1A9B3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parsePointsySayAA3DOMO5PointVGSSKFAISSKXEfU_AA9XMLParserV10AttributesC_TG5TA', symObjAddr: 0x3A30, symBinAddr: 0x10BDE8, symSize: 0x18 } + - { offset: 0x1AA5EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataCMa', symObjAddr: 0xC4, symBinAddr: 0x10BE7C, symSize: 0x20 } + - { offset: 0x1AA667, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x5C, symBinAddr: 0x10BE14, symSize: 0x68 } + - { offset: 0x1AA6D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xE4, symBinAddr: 0x10BE9C, symSize: 0x54 } + - { offset: 0x1AA71C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataCfD', symObjAddr: 0x138, symBinAddr: 0x10BEF0, symSize: 0x30 } + - { offset: 0x1AAF0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationCfETo', symObjAddr: 0x1410, symBinAddr: 0x10D330, symSize: 0xB0 } + - { offset: 0x1AAF3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationCMa', symObjAddr: 0x14C0, symBinAddr: 0x10D3E0, symSize: 0x20 } + - { offset: 0x1AB128, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC13actionMessageSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x10BF20, symSize: 0x20 } + - { offset: 0x1AB188, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC13actionMessageSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x10BF40, symSize: 0x14 } + - { offset: 0x1AB1D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC12titleMessageSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x10BF54, symSize: 0x20 } + - { offset: 0x1AB22E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC12titleMessageSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x10BF74, symSize: 0x14 } + - { offset: 0x1AB27F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9ignoreBtnSo8UIButtonCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x10BF88, symSize: 0x20 } + - { offset: 0x1AB2D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9ignoreBtnSo8UIButtonCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x10BFA8, symSize: 0x14 } + - { offset: 0x1AB32A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9acceptBtnSo8UIButtonCSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x10BFBC, symSize: 0x20 } + - { offset: 0x1AB37F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9acceptBtnSo8UIButtonCSgvsTo', symObjAddr: 0xBC, symBinAddr: 0x10BFDC, symSize: 0x14 } + - { offset: 0x1AB3D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC4viewSo6UIViewCSgvgTo', symObjAddr: 0xD0, symBinAddr: 0x10BFF0, symSize: 0x10 } + - { offset: 0x1AB3E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC4viewSo6UIViewCSgvgTo', symObjAddr: 0xD0, symBinAddr: 0x10BFF0, symSize: 0x10 } + - { offset: 0x1AB428, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC4viewSo6UIViewCSgvsTo', symObjAddr: 0xE0, symBinAddr: 0x10C000, symSize: 0x34 } + - { offset: 0x1AB477, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9containerSo11UIStackViewCSgvgTo', symObjAddr: 0x114, symBinAddr: 0x10C034, symSize: 0x20 } + - { offset: 0x1AB4D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9containerSo11UIStackViewCSgvsTo', symObjAddr: 0x134, symBinAddr: 0x10C054, symSize: 0x14 } + - { offset: 0x1AB522, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC12containerYesSo6UIViewCSgvgTo', symObjAddr: 0x148, symBinAddr: 0x10C068, symSize: 0x20 } + - { offset: 0x1AB577, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC12containerYesSo6UIViewCSgvsTo', symObjAddr: 0x168, symBinAddr: 0x10C088, symSize: 0x14 } + - { offset: 0x1AB626, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC5frameACSo6CGRectV_tcfc', symObjAddr: 0x17C, symBinAddr: 0x10C09C, symSize: 0x288 } + - { offset: 0x1AB70C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x404, symBinAddr: 0x10C324, symSize: 0x20 } + - { offset: 0x1AB76F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x424, symBinAddr: 0x10C344, symSize: 0x118 } + - { offset: 0x1AB7A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x53C, symBinAddr: 0x10C45C, symSize: 0x28 } + - { offset: 0x1AB856, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC10commonInityyF', symObjAddr: 0x564, symBinAddr: 0x10C484, symSize: 0xBA0 } + - { offset: 0x1ABCFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC14layoutSubviewsyyFTo', symObjAddr: 0x1104, symBinAddr: 0x10D024, symSize: 0x4 } + - { offset: 0x1ABD0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC11setupLayout9container8centerOfySo6UIViewC_AHtF', symObjAddr: 0x11B8, symBinAddr: 0x10D0D8, symSize: 0x228 } + - { offset: 0x1ABD53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationCfD', symObjAddr: 0x13E0, symBinAddr: 0x10D300, symSize: 0x30 } + - { offset: 0x1AC0FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x10D400, symSize: 0xAC } + - { offset: 0x1AC25F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewCfETo', symObjAddr: 0x720, symBinAddr: 0x10DB20, symSize: 0x10 } + - { offset: 0x1AC28E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewCMa', symObjAddr: 0x730, symBinAddr: 0x10DB30, symSize: 0x20 } + - { offset: 0x1AC2A2, size: 0x8, addend: 0x0, symName: '_$sSo8NSNumberCMa', symObjAddr: 0x7D8, symBinAddr: 0x10DB50, symSize: 0x44 } + - { offset: 0x1AC36F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x10D400, symSize: 0xAC } + - { offset: 0x1AC481, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xAC, symBinAddr: 0x10D4AC, symSize: 0xB0 } + - { offset: 0x1AC4F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC14layoutSubviewsyyFTo', symObjAddr: 0x15C, symBinAddr: 0x10D55C, symSize: 0x80 } + - { offset: 0x1AC54A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC05setupE033_31A9481671A2BC924BF3D57FBE295DCFLLyyF', symObjAddr: 0x1DC, symBinAddr: 0x10D5DC, symSize: 0x25C } + - { offset: 0x1AC645, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC14startAnimatingyyF', symObjAddr: 0x438, symBinAddr: 0x10D838, symSize: 0x2B8 } + - { offset: 0x1AC79C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewCfD', symObjAddr: 0x6F0, symBinAddr: 0x10DAF0, symSize: 0x30 } + - { offset: 0x1ACB27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17HoursScheduleDataV4data10isExpandedAcA09VenueViewF0CSg_SbtcfCTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x10DB94, symSize: 0x1E0 } + - { offset: 0x1ACCD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17HoursScheduleDataV4data10isExpandedAcA09VenueViewF0CSg_SbtcfCTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x10DB94, symSize: 0x1E0 } + - { offset: 0x1ACD76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17HoursScheduleDataV4data10isExpandedAcA07PoiViewF0CSg_SbtcfCTf4nnd_n', symObjAddr: 0x1E0, symBinAddr: 0x10DD74, symSize: 0x1E0 } + - { offset: 0x1AD1A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LiveObjectDrawingManagerV11drawObjects_5usingySayAA0dE0VGSg_17PenguinINRenderer10PIRendererCSgtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x10DF54, symSize: 0x894 } + - { offset: 0x1AD541, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVWOc', symObjAddr: 0x8D8, symBinAddr: 0x10E7E8, symSize: 0x44 } + - { offset: 0x1AD555, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized10targetSizeABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0x940, symBinAddr: 0x10E850, symSize: 0xC } + - { offset: 0x1AD569, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x964, symBinAddr: 0x10E86C, symSize: 0x10 } + - { offset: 0x1AD57D, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x974, symBinAddr: 0x10E87C, symSize: 0x8 } + - { offset: 0x1AD591, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVWOh', symObjAddr: 0x97C, symBinAddr: 0x10E884, symSize: 0x3C } + - { offset: 0x1AD5A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LiveObjectDrawingManagerV11drawObjects_5usingySayAA0dE0VGSg_17PenguinINRenderer10PIRendererCSgtFZySo7UIImageCcfU0_TA', symObjAddr: 0x9E4, symBinAddr: 0x10E8EC, symSize: 0x30 } + - { offset: 0x1ADA3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LiveObjectDrawingManagerV11drawObjects_5usingySayAA0dE0VGSg_17PenguinINRenderer10PIRendererCSgtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x10DF54, symSize: 0x894 } + - { offset: 0x1ADF3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LiveObjectDrawingManagerV13removeObjects_5usingySayAA0dE0VG_17PenguinINRenderer10PIRendererCSgtFZTf4nnd_n', symObjAddr: 0xA98, symBinAddr: 0x10E91C, symSize: 0x154 } + - { offset: 0x1AE4A0, size: 0x8, addend: 0x0, symName: '_$s7Penguin12NearGateDataVSgWOh', symObjAddr: 0x50, symBinAddr: 0x10EA7C, symSize: 0x40 } + - { offset: 0x1AE7BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14drawNearFloors8locationy7Penguin10PILocationC_tF', symObjAddr: 0x820, symBinAddr: 0x10F240, symSize: 0xDB8 } + - { offset: 0x1AF1DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14drawNearFloors8locationy7Penguin10PILocationC_tFySbcfU1_', symObjAddr: 0x1678, symBinAddr: 0x110098, symSize: 0x17C } + - { offset: 0x1AF438, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC25handleClosestFloorsToUser__19forceSelectedRedrawy17PenguinINRenderer10PIRendererC_0O010PILocationCSbtFySbcfU2_', symObjAddr: 0x15D8, symBinAddr: 0x10FFF8, symSize: 0xA0 } + - { offset: 0x1AF4C4, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnFSf_Tg5', symObjAddr: 0x1808, symBinAddr: 0x110228, symSize: 0xF4 } + - { offset: 0x1AF55B, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x1B78, symBinAddr: 0x110598, symSize: 0x214 } + - { offset: 0x1AF715, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x1D8C, symBinAddr: 0x1107AC, symSize: 0xF4 } + - { offset: 0x1AF7DF, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnFSi_Tg5', symObjAddr: 0x1E80, symBinAddr: 0x1108A0, symSize: 0xDC } + - { offset: 0x1AF855, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF10Foundation3URLV_Tg5', symObjAddr: 0x1F5C, symBinAddr: 0x11097C, symSize: 0x208 } + - { offset: 0x1AF8DF, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtFSf_Tg5', symObjAddr: 0x2350, symBinAddr: 0x110D70, symSize: 0x12C } + - { offset: 0x1AF96B, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x25F0, symBinAddr: 0x111010, symSize: 0x254 } + - { offset: 0x1AFB30, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x2844, symBinAddr: 0x111264, symSize: 0x148 } + - { offset: 0x1AFC1B, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtFSi_Tg5', symObjAddr: 0x298C, symBinAddr: 0x1113AC, symSize: 0x11C } + - { offset: 0x1AFCA7, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF10Foundation3URLV_Tg5', symObjAddr: 0x2AA8, symBinAddr: 0x1114C8, symSize: 0x1E8 } + - { offset: 0x1AFD28, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyFSf_Tg5', symObjAddr: 0x2C90, symBinAddr: 0x1116B0, symSize: 0x134 } + - { offset: 0x1AFDA5, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x2F00, symBinAddr: 0x111920, symSize: 0x134 } + - { offset: 0x1AFE22, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x3034, symBinAddr: 0x111A54, symSize: 0x134 } + - { offset: 0x1AFE9F, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyFSi_Tg5', symObjAddr: 0x3168, symBinAddr: 0x111B88, symSize: 0x134 } + - { offset: 0x1AFF1C, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF10Foundation3URLV_Tg5', symObjAddr: 0x329C, symBinAddr: 0x111CBC, symSize: 0x1B4 } + - { offset: 0x1AFFA7, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tFSf_Tg5', symObjAddr: 0x3450, symBinAddr: 0x111E70, symSize: 0x1F8 } + - { offset: 0x1B005D, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x384C, symBinAddr: 0x11226C, symSize: 0x250 } + - { offset: 0x1B0189, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x3A9C, symBinAddr: 0x1124BC, symSize: 0x214 } + - { offset: 0x1B0293, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tFSi_Tg5', symObjAddr: 0x3CB0, symBinAddr: 0x1126D0, symSize: 0x1E4 } + - { offset: 0x1B0349, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF10Foundation3URLV_Tg5', symObjAddr: 0x3E94, symBinAddr: 0x1128B4, symSize: 0x284 } + - { offset: 0x1B03F6, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tFSf_Tg5', symObjAddr: 0x4118, symBinAddr: 0x112B38, symSize: 0x22C } + - { offset: 0x1B04D4, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x455C, symBinAddr: 0x112F7C, symSize: 0x280 } + - { offset: 0x1B0628, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x47DC, symBinAddr: 0x1131FC, symSize: 0x244 } + - { offset: 0x1B075A, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tFSi_Tg5', symObjAddr: 0x4A20, symBinAddr: 0x113440, symSize: 0x218 } + - { offset: 0x1B0838, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF10Foundation3URLV_Tg5', symObjAddr: 0x4C38, symBinAddr: 0x113658, symSize: 0x2B0 } + - { offset: 0x1B08F7, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6removeyxSgxFSi_Tg5', symObjAddr: 0x4F68, symBinAddr: 0x113988, symSize: 0xEC } + - { offset: 0x1B0974, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6removeyxSgxF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x5054, symBinAddr: 0x113A74, symSize: 0x108 } + - { offset: 0x1B0A50, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV7_delete2atys10_HashTableV6BucketV_tFSi_Tg5', symObjAddr: 0x515C, symBinAddr: 0x113B7C, symSize: 0x170 } + - { offset: 0x1B0ABC, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x52CC, symBinAddr: 0x113CEC, symSize: 0x194 } + - { offset: 0x1B0B90, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13extractSubset5using5countAByxGs13_UnsafeBitsetV_SitFSi_Tg5', symObjAddr: 0x5460, symBinAddr: 0x113E80, symSize: 0x1E0 } + - { offset: 0x1B0CB7, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6filteryAByxGSbxKXEKFADs13_UnsafeBitsetVKXEfU_Si_Tg596$s8PenNavUI17MapViewControllerC19removeDistantFloors8locationy7Penguin10PILocationC_tFSbSiXEfU0_SaySiGTf1nnc_nTf4nng_n', symObjAddr: 0x5640, symBinAddr: 0x114060, symSize: 0x130 } + - { offset: 0x1B0FA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC25handleClosestFloorsToUser__19forceSelectedRedrawy17PenguinINRenderer10PIRendererC_0O010PILocationCSbtFTf4dndn_n', symObjAddr: 0x5770, symBinAddr: 0x114190, symSize: 0xF58 } + - { offset: 0x1B1CF4, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6filteryAByxGSbxKXEKFADs13_UnsafeBitsetVKXEfU_Si_Tg592$s8PenNavUI17MapViewControllerC15removeNearFloor8locationy7Penguin10PILocationC_tFSbSiXEfU0_SaySiGTf1nnc_nTf4nng_n', symObjAddr: 0x66C8, symBinAddr: 0x1150E8, symSize: 0x128 } + - { offset: 0x1B1E36, size: 0x8, addend: 0x0, symName: '_$s7Penguin8MapLevelOSgWOd', symObjAddr: 0x6A0C, symBinAddr: 0x1153F0, symSize: 0x48 } + - { offset: 0x1B1E4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC25handleClosestFloorsToUser__19forceSelectedRedrawy17PenguinINRenderer10PIRendererC_0O010PILocationCSbtFySbcfU2_TA', symObjAddr: 0x6AA4, symBinAddr: 0x115488, symSize: 0x8 } + - { offset: 0x1B1E5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14drawNearFloors8locationy7Penguin10PILocationC_tFySbcfU1_TA', symObjAddr: 0x6B18, symBinAddr: 0x1154C4, symSize: 0xC } + - { offset: 0x1B2A65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15NavigationStateOMa', symObjAddr: 0x164, symBinAddr: 0x115518, symSize: 0x10 } + - { offset: 0x1B2A79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15NavigationStateOSHAASQWb', symObjAddr: 0x174, symBinAddr: 0x115528, symSize: 0x4 } + - { offset: 0x1B2A8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15NavigationStateOACSQAAWl', symObjAddr: 0x178, symBinAddr: 0x11552C, symSize: 0x40 } + - { offset: 0x1B2E47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC14sharedInstance33_3D6BD24F9690AB8735E9219D8905A864LLACSgvpZ', symObjAddr: 0x6000, symBinAddr: 0x367578, symSize: 0x0 } + - { offset: 0x1B34F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerCMa', symObjAddr: 0x3C8C, symBinAddr: 0x1191D8, symSize: 0x20 } + - { offset: 0x1B35CB, size: 0x8, addend: 0x0, symName: '_$sSS11withCStringyxxSPys4Int8VGKXEKlFSb_Tg5024$sSdySdSgxcSyRzlufcSbSpyf6GXEfU_j5SPys4C7VGXEfU_SpySdGTf1cn_n', symObjAddr: 0x3CAC, symBinAddr: 0x1191F8, symSize: 0xEC } + - { offset: 0x1B3815, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5shareyyFySSSgcfU_TA', symObjAddr: 0x4EE0, symBinAddr: 0x11A42C, symSize: 0x8 } + - { offset: 0x1B3829, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC17shareUserLocation33_D0641B0FFCA1271976891547CEED6A97LLyyFySSSgcfU_TA', symObjAddr: 0x5610, symBinAddr: 0x11AA70, symSize: 0x8 } + - { offset: 0x1B383D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5shareyySo8UIButtonCFySSSgcfU_TA', symObjAddr: 0x5B48, symBinAddr: 0x11AFA8, symSize: 0x8 } + - { offset: 0x1B3851, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5shareyyFySSSgcfU_TA', symObjAddr: 0x5B50, symBinAddr: 0x11AFB0, symSize: 0x8 } + - { offset: 0x1B3865, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC016openUserLocationE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_TA', symObjAddr: 0x5BE8, symBinAddr: 0x11B008, symSize: 0xC } + - { offset: 0x1B3879, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x5BF4, symBinAddr: 0x11B014, symSize: 0x10 } + - { offset: 0x1B388D, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x5C04, symBinAddr: 0x11B024, symSize: 0x8 } + - { offset: 0x1B38A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFyyScMYccfU_TA', symObjAddr: 0x5CA0, symBinAddr: 0x11B03C, symSize: 0x8 } + - { offset: 0x1B38B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFyyScMYccfU_ySo13UIAlertActionCcfU_TA', symObjAddr: 0x5CA8, symBinAddr: 0x11B044, symSize: 0x8 } + - { offset: 0x1B38C9, size: 0x8, addend: 0x0, symName: '_$sSdySdSgxcSyRzlufcSbSpySdGXEfU_SbSPys4Int8VGXEfU_TA', symObjAddr: 0x5CF0, symBinAddr: 0x11B04C, symSize: 0x78 } + - { offset: 0x1B38EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC010openCampusE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_TA', symObjAddr: 0x5D6C, symBinAddr: 0x11B0C8, symSize: 0x8 } + - { offset: 0x1B38FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openVenueE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_TA', symObjAddr: 0x5DA0, symBinAddr: 0x11B0D0, symSize: 0x8 } + - { offset: 0x1B3912, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openPlaceE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_TA', symObjAddr: 0x5E14, symBinAddr: 0x11B144, symSize: 0x30 } + - { offset: 0x1B3926, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC8delegateAA0dE8Delegate_pSgvWyyScMYccfU_TA', symObjAddr: 0x5E44, symBinAddr: 0x11B174, symSize: 0x8 } + - { offset: 0x1B393A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5shareyyFySSSgcfU_TA', symObjAddr: 0x5E8C, symBinAddr: 0x11B17C, symSize: 0x8 } + - { offset: 0x1B3CA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC02isD17LinkingConfiguredSbvg', symObjAddr: 0x20, symBinAddr: 0x11556C, symSize: 0x164 } + - { offset: 0x1B3D84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC8delegateAA0dE8Delegate_pSgvWyyScMYccfU_', symObjAddr: 0x184, symBinAddr: 0x1156D0, symSize: 0x194 } + - { offset: 0x1B3E8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC8delegateAA0dE8Delegate_pSgvs', symObjAddr: 0x318, symBinAddr: 0x115864, symSize: 0x238 } + - { offset: 0x1B3F3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC03setdE0yy10Foundation3URLVSgF', symObjAddr: 0x550, symBinAddr: 0x115A9C, symSize: 0x2F4 } + - { offset: 0x1B408A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC014generateCampusdE08campusId10completionySiSg_ySSSgctFyAHcfU_', symObjAddr: 0x844, symBinAddr: 0x115D90, symSize: 0x20 } + - { offset: 0x1B433B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openPlaceE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tF', symObjAddr: 0x864, symBinAddr: 0x115DB0, symSize: 0xBD4 } + - { offset: 0x1B4DAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openPlaceE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_', symObjAddr: 0x1438, symBinAddr: 0x116984, symSize: 0x94 } + - { offset: 0x1B4E5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openVenueE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tF', symObjAddr: 0x14CC, symBinAddr: 0x116A18, symSize: 0xA50 } + - { offset: 0x1B578E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openVenueE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_', symObjAddr: 0x1F1C, symBinAddr: 0x117468, symSize: 0x94 } + - { offset: 0x1B57E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC010openCampusE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tF', symObjAddr: 0x1FB0, symBinAddr: 0x1174FC, symSize: 0x71C } + - { offset: 0x1B5DFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC010openCampusE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_', symObjAddr: 0x26CC, symBinAddr: 0x117C18, symSize: 0x94 } + - { offset: 0x1B5EE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC016openUserLocationE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tF', symObjAddr: 0x2760, symBinAddr: 0x117CAC, symSize: 0xF1C } + - { offset: 0x1B6D65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC016openUserLocationE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_', symObjAddr: 0x367C, symBinAddr: 0x118BC8, symSize: 0x154 } + - { offset: 0x1B6EA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFyyScMYccfU_', symObjAddr: 0x37D0, symBinAddr: 0x118D1C, symSize: 0x3E4 } + - { offset: 0x1B7089, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFyyScMYccfU_ySo13UIAlertActionCcfU_', symObjAddr: 0x3BB4, symBinAddr: 0x119100, symSize: 0x84 } + - { offset: 0x1B70E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerCfD', symObjAddr: 0x3C38, symBinAddr: 0x119184, symSize: 0x54 } + - { offset: 0x1B7301, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC013generateVenuedE07venueId10completionySiSg_ySSSgctF03$s8ab4UI26H40DetailsViewControllerC5shareyyFySSSgcfU_AA0hnoP0CSgXwz_XxTf1ncn_nTf4nng_n', symObjAddr: 0x3D98, symBinAddr: 0x1192E4, symSize: 0x3DC } + - { offset: 0x1B753B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC12getPlaceType33_3D6BD24F9690AB8735E9219D8905A864LL4fromAA0hI0OSgSS_tFTf4nd_n', symObjAddr: 0x4198, symBinAddr: 0x1196E4, symSize: 0x9C } + - { offset: 0x1B76B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC11isPathValid33_3D6BD24F9690AB8735E9219D8905A864LL3for4pathSbAA9PlaceTypeOSg_SStFTf4nnd_n', symObjAddr: 0x4234, symBinAddr: 0x119780, symSize: 0x700 } + - { offset: 0x1B7E05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFTf4nd_n', symObjAddr: 0x4934, symBinAddr: 0x119E80, symSize: 0x1D4 } + - { offset: 0x1B7E5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC013generatePlacedE07placeId10completionySiSg_ySSSgctF03$s8aB47UI24PoiDetailsViewControllerC5shareyyFySSSgcfU_AA0nopQ0CSgXwz_XxTf1ncn_nTf4nng_n', symObjAddr: 0x4B08, symBinAddr: 0x11A054, symSize: 0x3D8 } + - { offset: 0x1B843F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC6boundsAC4RectVvg', symObjAddr: 0x0, symBinAddr: 0x11B1D0, symSize: 0x1EC } + - { offset: 0x1B88D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC6boundsAC4RectVvg', symObjAddr: 0x0, symBinAddr: 0x11B1D0, symSize: 0x1EC } + - { offset: 0x1B910C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCMa', symObjAddr: 0x2954, symBinAddr: 0x11D800, symSize: 0x20 } + - { offset: 0x1B9120, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOwet', symObjAddr: 0x29B8, symBinAddr: 0x11D820, symSize: 0x48 } + - { offset: 0x1B9134, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOwst', symObjAddr: 0x2A00, symBinAddr: 0x11D868, symSize: 0x48 } + - { offset: 0x1B9148, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOwug', symObjAddr: 0x2A48, symBinAddr: 0x11D8B0, symSize: 0x18 } + - { offset: 0x1B915C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOwui', symObjAddr: 0x2A64, symBinAddr: 0x11D8C8, symSize: 0x1C } + - { offset: 0x1B9170, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOMa', symObjAddr: 0x2A80, symBinAddr: 0x11D8E4, symSize: 0x10 } + - { offset: 0x1B9184, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSHAASQWb', symObjAddr: 0x2A90, symBinAddr: 0x11D8F4, symSize: 0x4 } + - { offset: 0x1B9198, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOAGSQAAWl', symObjAddr: 0x2A94, symBinAddr: 0x11D8F8, symSize: 0x40 } + - { offset: 0x1B91B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSHAASQWb', symObjAddr: 0x2C2C, symBinAddr: 0x11DA90, symSize: 0x4 } + - { offset: 0x1B91CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCAESQAAWl', symObjAddr: 0x2C30, symBinAddr: 0x11DA94, symSize: 0x40 } + - { offset: 0x1B928D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8locationAC5PointVSgvg', symObjAddr: 0x2C70, symBinAddr: 0x11DAD4, symSize: 0xEC } + - { offset: 0x1B955B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8applying6matrixAeC9TransformO6MatrixV_tF', symObjAddr: 0x2D5C, symBinAddr: 0x11DBC0, symSize: 0x210 } + - { offset: 0x1B9877, size: 0x8, addend: 0x0, symName: '_$sSasSHRzlE4hash4intoys6HasherVz_tF8PenNavUI9LayerTreeO8GradientV4StopV_Tg5', symObjAddr: 0x2F6C, symBinAddr: 0x11DDD0, symSize: 0x154 } + - { offset: 0x1B9B2C, size: 0x8, addend: 0x0, symName: '_$sSasSHRzlE4hash4intoys6HasherVz_tF8PenNavUI9LayerTreeO4PathC7SegmentO_Tg5', symObjAddr: 0x30C0, symBinAddr: 0x11DF24, symSize: 0x158 } + - { offset: 0x1B9EC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOg', symObjAddr: 0x3218, symBinAddr: 0x11E07C, symSize: 0xC } + - { offset: 0x1B9ED7, size: 0x8, addend: 0x0, symName: '_$sSasSHRzlE4hash4intoys6HasherVz_tF8PenNavUI9LayerTreeO5PointV_Tg5', symObjAddr: 0x3224, symBinAddr: 0x11E088, symSize: 0x78 } + - { offset: 0x1B9FDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOh', symObjAddr: 0x32D8, symBinAddr: 0x11E100, symSize: 0x34 } + - { offset: 0x1B9FF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC9DirectionOMa', symObjAddr: 0x3590, symBinAddr: 0x11E254, symSize: 0x10 } + - { offset: 0x1BA004, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC9DirectionOSHAASQWb', symObjAddr: 0x35A0, symBinAddr: 0x11E264, symSize: 0x4 } + - { offset: 0x1BA018, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC9DirectionOAGSQAAWl', symObjAddr: 0x35A4, symBinAddr: 0x11E268, symSize: 0x40 } + - { offset: 0x1BA0C9, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO8GradientV4StopV_Tt1g5', symObjAddr: 0x1EC, symBinAddr: 0x11B3BC, symSize: 0x150 } + - { offset: 0x1BA0E9, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO8GradientV4StopV_Tt1g5', symObjAddr: 0x1EC, symBinAddr: 0x11B3BC, symSize: 0x150 } + - { offset: 0x1BA0FD, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO8GradientV4StopV_Tt1g5', symObjAddr: 0x1EC, symBinAddr: 0x11B3BC, symSize: 0x150 } + - { offset: 0x1BA111, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO8GradientV4StopV_Tt1g5', symObjAddr: 0x1EC, symBinAddr: 0x11B3BC, symSize: 0x150 } + - { offset: 0x1BA2CB, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO0E0C8ContentsO_Tt1g5', symObjAddr: 0x33C, symBinAddr: 0x11B50C, symSize: 0x1568 } + - { offset: 0x1BAD92, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO4PathC7SegmentO_Tt1g5', symObjAddr: 0x18A4, symBinAddr: 0x11CA74, symSize: 0x134 } + - { offset: 0x1BADAA, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO4PathC7SegmentO_Tt1g5', symObjAddr: 0x18A4, symBinAddr: 0x11CA74, symSize: 0x134 } + - { offset: 0x1BADBE, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO4PathC7SegmentO_Tt1g5', symObjAddr: 0x18A4, symBinAddr: 0x11CA74, symSize: 0x134 } + - { offset: 0x1BADD2, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO4PathC7SegmentO_Tt1g5', symObjAddr: 0x18A4, symBinAddr: 0x11CA74, symSize: 0x134 } + - { offset: 0x1BAF17, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO9TransformO_Tt1g5', symObjAddr: 0x19D8, symBinAddr: 0x11CBA8, symSize: 0x134 } + - { offset: 0x1BAF37, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO9TransformO_Tt1g5', symObjAddr: 0x19D8, symBinAddr: 0x11CBA8, symSize: 0x134 } + - { offset: 0x1BAF4B, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO9TransformO_Tt1g5', symObjAddr: 0x19D8, symBinAddr: 0x11CBA8, symSize: 0x134 } + - { offset: 0x1BAF5F, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO9TransformO_Tt1g5', symObjAddr: 0x19D8, symBinAddr: 0x11CBA8, symSize: 0x134 } + - { offset: 0x1BB09F, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO5ShapeO_Tt1g5', symObjAddr: 0x1B0C, symBinAddr: 0x11CCDC, symSize: 0x3A4 } + - { offset: 0x1BB64E, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO6FilterC6EffectO_Tt1g5', symObjAddr: 0x1EB0, symBinAddr: 0x11D080, symSize: 0x5C } + - { offset: 0x1BB66E, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO6FilterC6EffectO_Tt1g5', symObjAddr: 0x1EB0, symBinAddr: 0x11D080, symSize: 0x5C } + - { offset: 0x1BB682, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO6FilterC6EffectO_Tt1g5', symObjAddr: 0x1EB0, symBinAddr: 0x11D080, symSize: 0x5C } + - { offset: 0x1BB696, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO6FilterC6EffectO_Tt1g5', symObjAddr: 0x1EB0, symBinAddr: 0x11D080, symSize: 0x5C } + - { offset: 0x1BB7B2, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO14RadialGradientC4StopV_Tt1g5', symObjAddr: 0x1F0C, symBinAddr: 0x11D0DC, symSize: 0x23C } + - { offset: 0x1BB984, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI11RouteOptionV_Tt1g5', symObjAddr: 0x2384, symBinAddr: 0x11D318, symSize: 0x2CC } + - { offset: 0x1BBBE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x27EC, symBinAddr: 0x11D780, symSize: 0x5C } + - { offset: 0x1BBC4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x2B74, symBinAddr: 0x11D9D8, symSize: 0x54 } + - { offset: 0x1BC42D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentO4hash4intoys6HasherVz_tF', symObjAddr: 0x2650, symBinAddr: 0x11D5E4, symSize: 0x12C } + - { offset: 0x1BC790, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSHAASH9hashValueSivgTW', symObjAddr: 0x277C, symBinAddr: 0x11D710, symSize: 0x60 } + - { offset: 0x1BC80F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x27DC, symBinAddr: 0x11D770, symSize: 0x10 } + - { offset: 0x1BC823, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x2848, symBinAddr: 0x11D7DC, symSize: 0x24 } + - { offset: 0x1BC898, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSHAASH9hashValueSivgTW', symObjAddr: 0x2AD4, symBinAddr: 0x11D938, symSize: 0x58 } + - { offset: 0x1BC970, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x2B2C, symBinAddr: 0x11D990, symSize: 0x48 } + - { offset: 0x1BC9D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x2BC8, symBinAddr: 0x11DA2C, symSize: 0x64 } + - { offset: 0x1BCAA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentO2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x331C, symBinAddr: 0x11E144, symSize: 0x110 } + - { offset: 0x1BCECA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO06layoutI0yAA0fI8Provider_pSgAA0dE10ControllerCF', symObjAddr: 0x0, symBinAddr: 0x11E2A8, symSize: 0x124 } + - { offset: 0x1BCFEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideO06layoutH02vcAA0fH8Provider_pSo16UIViewControllerC_tF', symObjAddr: 0x1F0, symBinAddr: 0x11E470, symSize: 0x108 } + - { offset: 0x1BD0A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeOSHAASQWb', symObjAddr: 0x3BC, symBinAddr: 0x11E638, symSize: 0x4 } + - { offset: 0x1BD0B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeOACSQAAWl', symObjAddr: 0x3C0, symBinAddr: 0x11E63C, symSize: 0x40 } + - { offset: 0x1BD0CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideOSHAASQWb', symObjAddr: 0x400, symBinAddr: 0x11E67C, symSize: 0x4 } + - { offset: 0x1BD0E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideOACSQAAWl', symObjAddr: 0x404, symBinAddr: 0x11E680, symSize: 0x40 } + - { offset: 0x1BD0F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideOSHAASQWb', symObjAddr: 0x444, symBinAddr: 0x11E6C0, symSize: 0x4 } + - { offset: 0x1BD109, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideOACSQAAWl', symObjAddr: 0x448, symBinAddr: 0x11E6C4, symSize: 0x40 } + - { offset: 0x1BD11D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeOMa', symObjAddr: 0x488, symBinAddr: 0x11E704, symSize: 0x10 } + - { offset: 0x1BD131, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideOMa', symObjAddr: 0x498, symBinAddr: 0x11E714, symSize: 0x10 } + - { offset: 0x1BD145, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideOMa', symObjAddr: 0x4A8, symBinAddr: 0x11E724, symSize: 0x10 } + - { offset: 0x1BD186, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueACSgSi_tcfC', symObjAddr: 0x124, symBinAddr: 0x11E3CC, symSize: 0x18 } + - { offset: 0x1BD1A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0x184, symBinAddr: 0x11E414, symSize: 0x30 } + - { offset: 0x1BD1D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueACSgSi_tcfC', symObjAddr: 0x1C0, symBinAddr: 0x11E444, symSize: 0x10 } + - { offset: 0x1BD212, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideOSYAASY8rawValuexSg03RawJ0Qz_tcfCTW', symObjAddr: 0x1D4, symBinAddr: 0x11E454, symSize: 0x1C } + - { offset: 0x1BD241, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueACSgSi_tcfC', symObjAddr: 0x2F8, symBinAddr: 0x11E578, symSize: 0x10 } + - { offset: 0x1BD278, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideOSYAASY8rawValuexSg03RawK0Qz_tcfCTW', symObjAddr: 0x390, symBinAddr: 0x11E60C, symSize: 0x1C } + - { offset: 0x1BD2A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x3AC, symBinAddr: 0x11E628, symSize: 0x10 } + - { offset: 0x1BD695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC11placeholderSo7UIImageCSgvpZ', symObjAddr: 0xBCD0, symBinAddr: 0x384C58, symSize: 0x0 } + - { offset: 0x1BD6AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC11placeholderSo7UIImageCSgvpZ', symObjAddr: 0xBCD8, symBinAddr: 0x384C60, symSize: 0x0 } + - { offset: 0x1BD7E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC11placeholder_WZ', symObjAddr: 0x0, symBinAddr: 0x11E744, symSize: 0x100 } + - { offset: 0x1BD8EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewCfETo', symObjAddr: 0x82C, symBinAddr: 0x11EF70, symSize: 0x4 } + - { offset: 0x1BD917, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewCMa', symObjAddr: 0x830, symBinAddr: 0x11EF74, symSize: 0x20 } + - { offset: 0x1BD92B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC11placeholder_WZ', symObjAddr: 0x850, symBinAddr: 0x11EF94, symSize: 0x1C } + - { offset: 0x1BDA66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewCfETo', symObjAddr: 0x137C, symBinAddr: 0x11FA90, symSize: 0x38 } + - { offset: 0x1BDA95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewCMa', symObjAddr: 0x13B4, symBinAddr: 0x11FAC8, symSize: 0x20 } + - { offset: 0x1BDCBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC5image5width6height12cornerRadius11contentModeACSo7UIImageC_S3dSo013UIViewContentM0Vtcfc', symObjAddr: 0x100, symBinAddr: 0x11E844, symSize: 0x69C } + - { offset: 0x1BDEFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x79C, symBinAddr: 0x11EEE0, symSize: 0x58 } + - { offset: 0x1BDF63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x7F4, symBinAddr: 0x11EF38, symSize: 0x2C } + - { offset: 0x1BDFCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC11placeholderSo7UIImageCSgvpZfiAGyXEfU_', symObjAddr: 0x86C, symBinAddr: 0x11EFB0, symSize: 0x13C } + - { offset: 0x1BE048, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC5image11contentModeACSo7UIImageCSg_So013UIViewContentJ0Vtcfc', symObjAddr: 0x9A8, symBinAddr: 0x11F0EC, symSize: 0x188 } + - { offset: 0x1BE0B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB30, symBinAddr: 0x11F274, symSize: 0x100 } + - { offset: 0x1BE118, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xC30, symBinAddr: 0x11F374, symSize: 0x28 } + - { offset: 0x1BE145, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC05setupG033_5BC7EB4CFBE79E2FDCB9A3883CF0BD47LLyyF', symObjAddr: 0xC58, symBinAddr: 0x11F39C, symSize: 0x348 } + - { offset: 0x1BE27C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC4drawyySo6CGRectVF', symObjAddr: 0xFA0, symBinAddr: 0x11F6E4, symSize: 0x31C } + - { offset: 0x1BE479, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC4drawyySo6CGRectVFTo', symObjAddr: 0x12BC, symBinAddr: 0x11FA00, symSize: 0x58 } + - { offset: 0x1BE4AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1314, symBinAddr: 0x11FA58, symSize: 0x2C } + - { offset: 0x1BE911, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC14sharedInstance33_FDD434C73DE549E6BD19BD9C4E1DE7EDLLACSgvpZ', symObjAddr: 0x1100, symBinAddr: 0x367840, symSize: 0x0 } + - { offset: 0x1BEA1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerCMa', symObjAddr: 0x10, symBinAddr: 0x11FAE8, symSize: 0x20 } + - { offset: 0x1BEA54, size: 0x8, addend: 0x0, symName: '_$sSa36_reserveCapacityAssumingUniqueBuffer8oldCountySi_tF8PenNavUI5PlaceC_Tg5', symObjAddr: 0xE8, symBinAddr: 0x11FBC0, symSize: 0x44 } + - { offset: 0x1BEAC7, size: 0x8, addend: 0x0, symName: '_$sSa37_appendElementAssumeUniqueAndCapacity_03newB0ySi_xntF8PenNavUI5PlaceC_Tg5', symObjAddr: 0x12C, symBinAddr: 0x11FC04, symSize: 0x1C } + - { offset: 0x1BECD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCSgxSgSEsSERzlWl', symObjAddr: 0xF9C, symBinAddr: 0x1209AC, symSize: 0x78 } + - { offset: 0x1BEEA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC3keySSSgvgTf4d_n', symObjAddr: 0x148, symBinAddr: 0x11FC20, symSize: 0x16C } + - { offset: 0x1BF041, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC03getD8Location33_FDD434C73DE549E6BD19BD9C4E1DE7EDLLAA5PlaceCSgyFTf4d_n', symObjAddr: 0x2B4, symBinAddr: 0x11FD8C, symSize: 0x2AC } + - { offset: 0x1BF366, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC04drawD16LocationIfNeeded2on5usingySay7Penguin5FloorCG_0L10INRenderer10PIRendererCSgtFTf4nnd_n', symObjAddr: 0x5A0, symBinAddr: 0x120038, symSize: 0x76C } + - { offset: 0x1BF78E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC04saveD8LocationyyAA5PlaceCSgFTf4nd_n', symObjAddr: 0xD94, symBinAddr: 0x1207A4, symSize: 0x208 } + - { offset: 0x1BFB82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x120A64, symSize: 0x20 } + - { offset: 0x1BFD2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCfE', symObjAddr: 0x468, symBinAddr: 0x120ECC, symSize: 0x40 } + - { offset: 0x1BFD5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCfETo', symObjAddr: 0x4D8, symBinAddr: 0x120F3C, symSize: 0x4C } + - { offset: 0x1BFD89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCMa', symObjAddr: 0x524, symBinAddr: 0x120F88, symSize: 0x20 } + - { offset: 0x1BFDDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x544, symBinAddr: 0x120FA8, symSize: 0x14 } + - { offset: 0x1BFDFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x544, symBinAddr: 0x120FA8, symSize: 0x14 } + - { offset: 0x1BFE22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x544, symBinAddr: 0x120FA8, symSize: 0x14 } + - { offset: 0x1BFED8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x558, symBinAddr: 0x120FBC, symSize: 0x160 } + - { offset: 0x1BFF8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0x6B8, symBinAddr: 0x12111C, symSize: 0x128 } + - { offset: 0x1C0057, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x7E0, symBinAddr: 0x121244, symSize: 0xB0 } + - { offset: 0x1C0082, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x890, symBinAddr: 0x1212F4, symSize: 0x14 } + - { offset: 0x1C00CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x8A4, symBinAddr: 0x121308, symSize: 0x24 } + - { offset: 0x1C0140, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC10setupPanelyyF', symObjAddr: 0x8C8, symBinAddr: 0x12132C, symSize: 0xCC } + - { offset: 0x1C01E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC10setupPanelyyFTo', symObjAddr: 0x994, symBinAddr: 0x1213F8, symSize: 0x28 } + - { offset: 0x1C021F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x9BC, symBinAddr: 0x121420, symSize: 0x224 } + - { offset: 0x1C0421, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0xBE0, symBinAddr: 0x121644, symSize: 0x50 } + - { offset: 0x1C044C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0xCAC, symBinAddr: 0x121694, symSize: 0xC } + - { offset: 0x1C047E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4dnn_n', symObjAddr: 0xCB8, symBinAddr: 0x1216A0, symSize: 0xF8 } + - { offset: 0x1C04BD, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xDDC, symBinAddr: 0x1217BC, symSize: 0x10 } + - { offset: 0x1C04D1, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xDEC, symBinAddr: 0x1217CC, symSize: 0x8 } + - { offset: 0x1C0695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x120A64, symSize: 0x20 } + - { offset: 0x1C06F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0So07UITableE0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x120A84, symSize: 0x14 } + - { offset: 0x1C0746, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x34, symBinAddr: 0x120A98, symSize: 0x5C } + - { offset: 0x1C0787, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC7dismissyySo8UIButtonCFTo', symObjAddr: 0x90, symBinAddr: 0x120AF4, symSize: 0x38 } + - { offset: 0x1C07CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC12registerCellyyF', symObjAddr: 0xC8, symBinAddr: 0x120B2C, symSize: 0x1B0 } + - { offset: 0x1C0927, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x278, symBinAddr: 0x120CDC, symSize: 0xC8 } + - { offset: 0x1C0968, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x340, symBinAddr: 0x120DA4, symSize: 0x60 } + - { offset: 0x1C09B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3A0, symBinAddr: 0x120E04, symSize: 0xA0 } + - { offset: 0x1C09E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x440, symBinAddr: 0x120EA4, symSize: 0x28 } + - { offset: 0x1C09F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCfD', symObjAddr: 0x4A8, symBinAddr: 0x120F0C, symSize: 0x30 } + - { offset: 0x1C1A7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCfE', symObjAddr: 0x179C, symBinAddr: 0x122F70, symSize: 0x10C } + - { offset: 0x1C1AA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCfETo', symObjAddr: 0x18D8, symBinAddr: 0x1230AC, symSize: 0x118 } + - { offset: 0x1C1AD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCMa', symObjAddr: 0x19F0, symBinAddr: 0x1231C4, symSize: 0x20 } + - { offset: 0x1C1B20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1A10, symBinAddr: 0x1231E4, symSize: 0x14 } + - { offset: 0x1C1B40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1A10, symBinAddr: 0x1231E4, symSize: 0x14 } + - { offset: 0x1C1B5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1A10, symBinAddr: 0x1231E4, symSize: 0x14 } + - { offset: 0x1C1BC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x1A24, symBinAddr: 0x1231F8, symSize: 0x60 } + - { offset: 0x1C1E1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1A84, symBinAddr: 0x123258, symSize: 0x6FC } + - { offset: 0x1C22C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU_', symObjAddr: 0x2180, symBinAddr: 0x123954, symSize: 0x174 } + - { offset: 0x1C23B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x22F4, symBinAddr: 0x123AC8, symSize: 0xB8 } + - { offset: 0x1C23FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x23AC, symBinAddr: 0x123B80, symSize: 0xE4 } + - { offset: 0x1C248A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0x2490, symBinAddr: 0x123C64, symSize: 0x284 } + - { offset: 0x1C24F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_', symObjAddr: 0x2714, symBinAddr: 0x123EE8, symSize: 0x1B8 } + - { offset: 0x1C25AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0x28CC, symBinAddr: 0x1240A0, symSize: 0x50 } + - { offset: 0x1C25C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC22didTapDirectionsActionyyF', symObjAddr: 0x291C, symBinAddr: 0x1240F0, symSize: 0x474 } + - { offset: 0x1C29D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC17showRouteOverview6sourceyAA5PlaceCSg_tF', symObjAddr: 0x2D90, symBinAddr: 0x124564, symSize: 0x2AC } + - { offset: 0x1C2C48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC22didTapDirectionsActionyyFTo', symObjAddr: 0x303C, symBinAddr: 0x124810, symSize: 0x28 } + - { offset: 0x1C2C82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC18didTapVenuesActionyyFTo', symObjAddr: 0x3064, symBinAddr: 0x124838, symSize: 0x70 } + - { offset: 0x1C2CCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20didTapExpandScheduleyyFTo', symObjAddr: 0x30DC, symBinAddr: 0x1248A8, symSize: 0x2C } + - { offset: 0x1C2CE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC22didTapCollapseScheduleyyFTo', symObjAddr: 0x3248, symBinAddr: 0x124A0C, symSize: 0x2C } + - { offset: 0x1C2D23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20didExpandDescriptionyyFTo', symObjAddr: 0x3274, symBinAddr: 0x124A38, symSize: 0x28 } + - { offset: 0x1C2D43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20didExpandDescriptionyyFTo', symObjAddr: 0x3274, symBinAddr: 0x124A38, symSize: 0x28 } + - { offset: 0x1C2D62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20didExpandDescriptionyyFTo', symObjAddr: 0x3274, symBinAddr: 0x124A38, symSize: 0x28 } + - { offset: 0x1C2DAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC17didTapPhoneActionyyF', symObjAddr: 0x329C, symBinAddr: 0x124A60, symSize: 0x208 } + - { offset: 0x1C2E72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC17didTapPhoneActionyyFTo', symObjAddr: 0x34A4, symBinAddr: 0x124C68, symSize: 0x28 } + - { offset: 0x1C2E8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC19didTapWebsiteActionyyF', symObjAddr: 0x34CC, symBinAddr: 0x124C90, symSize: 0x378 } + - { offset: 0x1C2FA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC19didTapWebsiteActionyyFTo', symObjAddr: 0x3844, symBinAddr: 0x125008, symSize: 0x28 } + - { offset: 0x1C2FC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16didTapMailActionyyF', symObjAddr: 0x386C, symBinAddr: 0x125030, symSize: 0x1AC } + - { offset: 0x1C30C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16didTapMailActionyyFTo', symObjAddr: 0x3A18, symBinAddr: 0x1251DC, symSize: 0x28 } + - { offset: 0x1C3145, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16venueGatesLoaded5gatesySayAA5PlaceCG_tF', symObjAddr: 0x3A40, symBinAddr: 0x125204, symSize: 0x234 } + - { offset: 0x1C33E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC011mailComposeG0_13didFinishWith5errorySo06MFMailifG0C_So0nI6ResultVs5Error_pSgtFTo', symObjAddr: 0x3C74, symBinAddr: 0x125438, symSize: 0x18 } + - { offset: 0x1C346C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x3C8C, symBinAddr: 0x125450, symSize: 0x98 } + - { offset: 0x1C3522, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x3D24, symBinAddr: 0x1254E8, symSize: 0x24 } + - { offset: 0x1C3599, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x3D48, symBinAddr: 0x12550C, symSize: 0xBC } + - { offset: 0x1C363F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x3E04, symBinAddr: 0x1255C8, symSize: 0x28 } + - { offset: 0x1C367D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x3E2C, symBinAddr: 0x1255F0, symSize: 0x204 } + - { offset: 0x1C3870, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x4030, symBinAddr: 0x1257F4, symSize: 0x50 } + - { offset: 0x1C3A78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC17venueDetailLoaded4datayAA05VenueF4DataC_tF', symObjAddr: 0x4080, symBinAddr: 0x125844, symSize: 0x168 } + - { offset: 0x1C3B4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCAA011VenueDetailF19ModelOutputProtocolA2aDP05venueI6Loaded4datayAA0hF4DataC_tFTW', symObjAddr: 0x4450, symBinAddr: 0x125C14, symSize: 0x4 } + - { offset: 0x1C3B67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCAA011VenueDetailF19ModelOutputProtocolA2aDP16venueGatesLoaded5gatesySayAA5PlaceCG_tFTW', symObjAddr: 0x4454, symBinAddr: 0x125C18, symSize: 0x4 } + - { offset: 0x1C3BA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x445C, symBinAddr: 0x125C1C, symSize: 0x37C } + - { offset: 0x1C3DBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x4854, symBinAddr: 0x125F98, symSize: 0x8 } + - { offset: 0x1C3DF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x485C, symBinAddr: 0x125FA0, symSize: 0x4 } + - { offset: 0x1C3E19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x485C, symBinAddr: 0x125FA0, symSize: 0x4 } + - { offset: 0x1C3E35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16venueGatesLoaded5gatesySayAA5PlaceCG_tFyycfU0_TA', symObjAddr: 0x4884, symBinAddr: 0x125FC8, symSize: 0x8 } + - { offset: 0x1C3E49, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x488C, symBinAddr: 0x125FD0, symSize: 0x10 } + - { offset: 0x1C3E5D, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x489C, symBinAddr: 0x125FE0, symSize: 0x8 } + - { offset: 0x1C3E71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC22didTapDirectionsActionyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x49C4, symBinAddr: 0x126010, symSize: 0x20 } + - { offset: 0x1C3EAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_TA', symObjAddr: 0x4A7C, symBinAddr: 0x12605C, symSize: 0x8 } + - { offset: 0x1C3EBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU_TA', symObjAddr: 0x4B0C, symBinAddr: 0x126064, symSize: 0x8 } + - { offset: 0x1C3FD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x4B14, symBinAddr: 0x12606C, symSize: 0x2B8 } + - { offset: 0x1C4228, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5shareyyFySSSgcfU_TA', symObjAddr: 0x4DF0, symBinAddr: 0x126324, symSize: 0x8 } + - { offset: 0x1C423C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC014generateCampusdE08campusId10completionySiSg_ySSSgctFyAHcfU_TA', symObjAddr: 0x4E9C, symBinAddr: 0x126350, symSize: 0x8 } + - { offset: 0x1C43E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1217D4, symSize: 0x10 } + - { offset: 0x1C43FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1217D4, symSize: 0x10 } + - { offset: 0x1C4444, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1217E4, symSize: 0x34 } + - { offset: 0x1C4493, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x121818, symSize: 0x10 } + - { offset: 0x1C44AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x121818, symSize: 0x10 } + - { offset: 0x1C44EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x121828, symSize: 0x34 } + - { offset: 0x1C453A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x12185C, symSize: 0x10 } + - { offset: 0x1C4552, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x12185C, symSize: 0x10 } + - { offset: 0x1C458D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x12186C, symSize: 0x34 } + - { offset: 0x1C45DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC09separatorF0AA09SeparatorF0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x1218A0, symSize: 0x10 } + - { offset: 0x1C45F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC09separatorF0AA09SeparatorF0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x1218A0, symSize: 0x10 } + - { offset: 0x1C4634, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC09separatorF0AA09SeparatorF0CSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x1218B0, symSize: 0x34 } + - { offset: 0x1C4683, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC010titleStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x1218E4, symSize: 0x10 } + - { offset: 0x1C469B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC010titleStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x1218E4, symSize: 0x10 } + - { offset: 0x1C46DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC010titleStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x1218F4, symSize: 0x34 } + - { offset: 0x1C472A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x121928, symSize: 0x10 } + - { offset: 0x1C4742, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x121928, symSize: 0x10 } + - { offset: 0x1C4782, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x121938, symSize: 0x34 } + - { offset: 0x1C47DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06campusE033_1B1727CC5BB5A738712554D2E2121BF2LLAA05VenueF4DataCvg', symObjAddr: 0x198, symBinAddr: 0x12196C, symSize: 0x9C } + - { offset: 0x1C48FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC9viewModel33_1B1727CC5BB5A738712554D2E2121BF2LLAA011VenueDetailfI0Cvg', symObjAddr: 0x234, symBinAddr: 0x121A08, symSize: 0x120 } + - { offset: 0x1C4B9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x354, symBinAddr: 0x121B28, symSize: 0x180 } + - { offset: 0x1C4CD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x4D4, symBinAddr: 0x121CA8, symSize: 0x28 } + - { offset: 0x1C4D97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC14viewWillAppearyySbF', symObjAddr: 0x4FC, symBinAddr: 0x121CD0, symSize: 0x10C } + - { offset: 0x1C4E6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0x608, symBinAddr: 0x121DDC, symSize: 0x30 } + - { offset: 0x1C4E7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC04loadD11Information33_1B1727CC5BB5A738712554D2E2121BF2LLyyF', symObjAddr: 0x638, symBinAddr: 0x121E0C, symSize: 0xF0 } + - { offset: 0x1C4F22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC13registerCellsyyF', symObjAddr: 0x728, symBinAddr: 0x121EFC, symSize: 0xFC } + - { offset: 0x1C500E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC03setD11InformationyyF', symObjAddr: 0x824, symBinAddr: 0x121FF8, symSize: 0xD0 } + - { offset: 0x1C50B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x8F4, symBinAddr: 0x1220C8, symSize: 0x88 } + - { offset: 0x1C51DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5shareyyF', symObjAddr: 0x97C, symBinAddr: 0x122150, symSize: 0x420 } + - { offset: 0x1C545E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0xD9C, symBinAddr: 0x122570, symSize: 0x494 } + - { offset: 0x1C56B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5shareyyFTo', symObjAddr: 0x1230, symBinAddr: 0x122A04, symSize: 0x28 } + - { offset: 0x1C5706, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC04loadD5GatesyyF', symObjAddr: 0x1258, symBinAddr: 0x122A2C, symSize: 0x1E0 } + - { offset: 0x1C58BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x1438, symBinAddr: 0x122C0C, symSize: 0x180 } + - { offset: 0x1C58FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x15B8, symBinAddr: 0x122D8C, symSize: 0x60 } + - { offset: 0x1C5944, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1618, symBinAddr: 0x122DEC, symSize: 0x15C } + - { offset: 0x1C5977, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1774, symBinAddr: 0x122F48, symSize: 0x28 } + - { offset: 0x1C598B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCfD', symObjAddr: 0x18A8, symBinAddr: 0x12307C, symSize: 0x30 } + - { offset: 0x1C6305, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOMa', symObjAddr: 0x164, symBinAddr: 0x126384, symSize: 0x10 } + - { offset: 0x1C639F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASQWb', symObjAddr: 0xB20, symBinAddr: 0x126D40, symSize: 0x4 } + - { offset: 0x1C63B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOACSQAAWl', symObjAddr: 0xB24, symBinAddr: 0x126D44, symSize: 0x40 } + - { offset: 0x1C63C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOACSYAAWl', symObjAddr: 0xC04, symBinAddr: 0x126DE0, symSize: 0x40 } + - { offset: 0x1C63E9, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE4hash4intoys6HasherVz_tF8PenNavUI8FavoriteC10CodingKeysO_Tg5', symObjAddr: 0x174, symBinAddr: 0x126394, symSize: 0x110 } + - { offset: 0x1C6446, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE4hash4intoys6HasherVz_tF8PenNavUI22SharedFavoriteLocationC10CodingKeysO_Tg5', symObjAddr: 0x284, symBinAddr: 0x1264A4, symSize: 0x110 } + - { offset: 0x1C64C1, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE08_rawHashB04seedS2i_tF8PenNavUI11RouteOptionV0iJ3KeyO_Tg5', symObjAddr: 0x394, symBinAddr: 0x1265B4, symSize: 0x134 } + - { offset: 0x1C656E, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE08_rawHashB04seedS2i_tF8PenNavUI22SharedFavoriteLocationC10CodingKeysO_Tg5', symObjAddr: 0x4C8, symBinAddr: 0x1266E8, symSize: 0x134 } + - { offset: 0x1C661B, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE08_rawHashB04seedS2i_tF8PenNavUI8FavoriteC10CodingKeysO_Tg5', symObjAddr: 0x5FC, symBinAddr: 0x12681C, symSize: 0x134 } + - { offset: 0x1C66D7, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE08_rawHashB04seedS2i_tF8PenNavUI9PlaceTypeO_Tg5', symObjAddr: 0x730, symBinAddr: 0x126950, symSize: 0x120 } + - { offset: 0x1C677B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x850, symBinAddr: 0x126A70, symSize: 0xC } + - { offset: 0x1C67B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x85C, symBinAddr: 0x126A7C, symSize: 0xC } + - { offset: 0x1C67D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x85C, symBinAddr: 0x126A7C, symSize: 0xC } + - { offset: 0x1C67E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x85C, symBinAddr: 0x126A7C, symSize: 0xC } + - { offset: 0x1C67FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x868, symBinAddr: 0x126A88, symSize: 0xFC } + - { offset: 0x1C6878, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x964, symBinAddr: 0x126B84, symSize: 0x8 } + - { offset: 0x1C6892, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xA78, symBinAddr: 0x126C98, symSize: 0x5C } + - { offset: 0x1C68B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xAD4, symBinAddr: 0x126CF4, symSize: 0x4C } + - { offset: 0x1C6979, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x96C, symBinAddr: 0x126B8C, symSize: 0x2C } + - { offset: 0x1C69A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x998, symBinAddr: 0x126BB8, symSize: 0xE0 } + - { offset: 0x1C69E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0xB64, symBinAddr: 0x126D84, symSize: 0x5C } + - { offset: 0x1C6DA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierO8rawValueSSvg', symObjAddr: 0x0, symBinAddr: 0x126E20, symSize: 0x174 } + - { offset: 0x1C6DEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x174, symBinAddr: 0x126F94, symSize: 0x84 } + - { offset: 0x1C6EA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSHAASH9hashValueSivgTW', symObjAddr: 0x1F8, symBinAddr: 0x127018, symSize: 0x60 } + - { offset: 0x1C6F1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x258, symBinAddr: 0x127078, symSize: 0x40 } + - { offset: 0x1C6F71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x298, symBinAddr: 0x1270B8, symSize: 0x5C } + - { offset: 0x1C71EC, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUISSRszlE12takeModifier33_87DA5707E664C852F4BDCF261BF8A634LLAA11CommandLineO0E0O_SSSgtSgyKF', symObjAddr: 0x348, symBinAddr: 0x127168, symSize: 0x1D4 } + - { offset: 0x1C751D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ErrorOSHAASQWb', symObjAddr: 0x65C, symBinAddr: 0x12733C, symSize: 0x4 } + - { offset: 0x1C7531, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ErrorOAESQAAWl', symObjAddr: 0x660, symBinAddr: 0x127340, symSize: 0x40 } + - { offset: 0x1C7545, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ErrorOMa', symObjAddr: 0x814, symBinAddr: 0x127380, symSize: 0x10 } + - { offset: 0x1C75D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO14parseModifiers4fromSDyAC8ModifierOSSSgGSaySSG_tKFZTf4nd_n', symObjAddr: 0x880, symBinAddr: 0x1273EC, symSize: 0x278 } + - { offset: 0x1C77B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierO_SSSgtSgWOe', symObjAddr: 0xB38, symBinAddr: 0x127664, symSize: 0x14 } + - { offset: 0x1C77CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOwet', symObjAddr: 0xB90, symBinAddr: 0x127678, symSize: 0x90 } + - { offset: 0x1C77E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOwst', symObjAddr: 0xC20, symBinAddr: 0x127708, symSize: 0xB0 } + - { offset: 0x1C77F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOMa', symObjAddr: 0xCD4, symBinAddr: 0x1277B8, symSize: 0x10 } + - { offset: 0x1C7809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSHAASQWb', symObjAddr: 0xCE4, symBinAddr: 0x1277C8, symSize: 0x4 } + - { offset: 0x1C781D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOAESQAAWl', symObjAddr: 0xCE8, symBinAddr: 0x1277CC, symSize: 0x40 } + - { offset: 0x1C7832, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierO8rawValueSSvg', symObjAddr: 0x0, symBinAddr: 0x126E20, symSize: 0x174 } + - { offset: 0x1C7899, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x2F4, symBinAddr: 0x127114, symSize: 0x2C } + - { offset: 0x1C78C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x320, symBinAddr: 0x127140, symSize: 0x28 } + - { offset: 0x1C7915, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x824, symBinAddr: 0x127390, symSize: 0x5C } + - { offset: 0x1C7DC7, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE13underlineTextyyF', symObjAddr: 0x0, symBinAddr: 0x12780C, symSize: 0x2BC } + - { offset: 0x1C7EE7, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE9fontStyleSSvsTo', symObjAddr: 0x2BC, symBinAddr: 0x127AC8, symSize: 0x54 } + - { offset: 0x1C7F0E, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE9fontStyleSSvs', symObjAddr: 0x310, symBinAddr: 0x127B1C, symSize: 0x1C4 } + - { offset: 0x1C8008, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19textColorIdentifierSivgTo', symObjAddr: 0x4D4, symBinAddr: 0x127CE0, symSize: 0x8 } + - { offset: 0x1C8024, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19textColorIdentifierSivsTo', symObjAddr: 0x4DC, symBinAddr: 0x127CE8, symSize: 0x30 } + - { offset: 0x1C805C, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19textColorIdentifierSivs', symObjAddr: 0x50C, symBinAddr: 0x127D18, symSize: 0x124 } + - { offset: 0x1C80E0, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x630, symBinAddr: 0x127E3C, symSize: 0x8 } + - { offset: 0x1C80FC, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x638, symBinAddr: 0x127E44, symSize: 0x38 } + - { offset: 0x1C8118, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19tintColorIdentifierSivgTo', symObjAddr: 0x67C, symBinAddr: 0x127E7C, symSize: 0x8 } + - { offset: 0x1C8134, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19tintColorIdentifierSivsTo', symObjAddr: 0x684, symBinAddr: 0x127E84, symSize: 0x38 } + - { offset: 0x1C817A, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE15localizationKeySSvsTo', symObjAddr: 0x80C, symBinAddr: 0x127FE4, symSize: 0x98 } + - { offset: 0x1C81AF, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyaABSHSCWl', symObjAddr: 0x8E8, symBinAddr: 0x12807C, symSize: 0x44 } + - { offset: 0x1C8684, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC14SubpathBuilderV13appendSegmentyyAE0J0OF', symObjAddr: 0x0, symBinAddr: 0x1280C8, symSize: 0x41C } + - { offset: 0x1C89C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC14SubpathBuilderV13appendSegmentyyAE0J0OF', symObjAddr: 0x0, symBinAddr: 0x1280C8, symSize: 0x41C } + - { offset: 0x1C9126, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC14SubpathBuilderV12makeSubpaths3forSayAEGAE_tFTf4nn_g', symObjAddr: 0x41C, symBinAddr: 0x1284E4, symSize: 0x15C } + - { offset: 0x1C97EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22FloatingPanelPresenterPAAE20applyDismissingRules2onyAA0dE11Presentable_pSg_tF', symObjAddr: 0x20, symBinAddr: 0x128640, symSize: 0x408 } + - { offset: 0x1C986A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22FloatingPanelPresenterPAAE20applyDismissingRules2onyAA0dE11Presentable_pSg_tF', symObjAddr: 0x20, symBinAddr: 0x128640, symSize: 0x408 } + - { offset: 0x1C9E04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22FloatingPanelPresenterPAAE20removeViewControlleryyAA0dE11Presentable_pSgF', symObjAddr: 0x428, symBinAddr: 0x128A48, symSize: 0x464 } + - { offset: 0x1CA640, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtFyycfU_TA', symObjAddr: 0x8E4, symBinAddr: 0x128F04, symSize: 0xC } + - { offset: 0x1CA654, size: 0x8, addend: 0x0, symName: '_$sSo8NSObjectCMa', symObjAddr: 0x8F0, symBinAddr: 0x128F10, symSize: 0x44 } + - { offset: 0x1CA6EC, size: 0x8, addend: 0x0, symName: '_$sSMsE20_halfStablePartition15isSuffixElement5IndexQzSb0F0QzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg503$s8hi4UI22kl44PresenterPAAE20removeViewControlleryyAA0dE11M18_pSgFSbAaE_pXEfU2_AgH_pTf1cn_nTf4ng_n', symObjAddr: 0x9E8, symBinAddr: 0x129008, symSize: 0x1A8 } + - { offset: 0x1CAB80, size: 0x8, addend: 0x0, symName: '_$sSlsE10firstIndex5where0B0QzSgSb7ElementQzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg503$s8ef4UI22hi44PresenterPAAE20removeViewControlleryyAA0dE11J18_pSgFSbAaE_pXEfU2_AhI_pTf1cn_nTf4ng_n', symObjAddr: 0x934, symBinAddr: 0x128F54, symSize: 0xB4 } + - { offset: 0x1CB1E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28DefaultFloatingPanelBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x1291B0, symSize: 0x8 } + - { offset: 0x1CB238, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28DefaultFloatingPanelBehaviorCMa', symObjAddr: 0x18, symBinAddr: 0x1291B8, symSize: 0x20 } + - { offset: 0x1CB261, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28DefaultFloatingPanelBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x1291B0, symSize: 0x8 } + - { offset: 0x1CB5FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseLinearGradientsySayAA3DOMO0F8GradientCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0x1291D8, symSize: 0x2B0 } + - { offset: 0x1CB7AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseLinearGradientsySayAA3DOMO0F8GradientCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0x1291D8, symSize: 0x2B0 } + - { offset: 0x1CBC8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV19parseLinearGradientyAA3DOMO0fG0CAA3XMLO7ElementCKFTf4nx_n', symObjAddr: 0x2B0, symBinAddr: 0x129488, symSize: 0xAA4 } + - { offset: 0x1CC788, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE9localizedSSyF', symObjAddr: 0x0, symBinAddr: 0x129F2C, symSize: 0x1F0 } + - { offset: 0x1CC8D2, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized10targetSizeABSgSo6CGSizeV_tF', symObjAddr: 0x1F0, symBinAddr: 0x12A11C, symSize: 0x1A0 } + - { offset: 0x1CC9F8, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized10targetSizeABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0x1054, symBinAddr: 0x12AF80, symSize: 0x20 } + - { offset: 0x1CCA7F, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE22localizedWithArgumentsySSs7CVarArg_pd_tF', symObjAddr: 0x390, symBinAddr: 0x12A2BC, symSize: 0x148 } + - { offset: 0x1CCBC8, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE8containsySbSaySSGF', symObjAddr: 0x4D8, symBinAddr: 0x12A404, symSize: 0x94 } + - { offset: 0x1CCD90, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE7trimmed12maximumWidth0E5Lines4fontSS12CoreGraphics7CGFloatV_SiSo6UIFontCtF', symObjAddr: 0x56C, symBinAddr: 0x12A498, symSize: 0x4E0 } + - { offset: 0x1CD237, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE9setInsets17forContentPadding010imageTitleI0ySo06UIEdgeF0V_12CoreGraphics7CGFloatVtF', symObjAddr: 0xF58, symBinAddr: 0x12AE84, symSize: 0xFC } + - { offset: 0x1CD286, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE6fadeIn_5delay10completionySd_SdySbctFyycfU_', symObjAddr: 0x1078, symBinAddr: 0x12AFA0, symSize: 0x10 } + - { offset: 0x1CD2AF, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE7fadeOut_5delay10completionySd_SdySbctFyycfU_', symObjAddr: 0x1088, symBinAddr: 0x12AFB0, symSize: 0x10 } + - { offset: 0x1CD2D8, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE16trimHorizontally33_16B44A3E237573F8ABE391799BEDA5FELL12maximumWidth4fonty12CoreGraphics7CGFloatV_So6UIFontCtF', symObjAddr: 0x1098, symBinAddr: 0x12AFC0, symSize: 0x2E8 } + - { offset: 0x1CD4E4, size: 0x8, addend: 0x0, symName: '_$sSo13UIApplicationC8PenNavUIE21topMostViewControllerSo06UIViewH0CSgyFTf4d_n', symObjAddr: 0x1380, symBinAddr: 0x12B2A8, symSize: 0x19C } + - { offset: 0x1CD63A, size: 0x8, addend: 0x0, symName: '_$sSo13UIApplicationC8PenNavUIE16topSafeAreaInset12CoreGraphics7CGFloatVvgZTf4d_n', symObjAddr: 0x151C, symBinAddr: 0x12B444, symSize: 0x128 } + - { offset: 0x1CD769, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized10targetSizeABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0x17BC, symBinAddr: 0x12B590, symSize: 0x1C } + - { offset: 0x1CD7A5, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x17F0, symBinAddr: 0x12B5BC, symSize: 0x10 } + - { offset: 0x1CD7B9, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1800, symBinAddr: 0x12B5CC, symSize: 0x8 } + - { offset: 0x1CD904, size: 0x8, addend: 0x0, symName: '_$ss17_dictionaryUpCastySDyq0_q1_GSDyxq_GSHRzSHR0_r2_lFSS_S2SypTg5', symObjAddr: 0xA4C, symBinAddr: 0x12A978, symSize: 0x24C } + - { offset: 0x1CDA82, size: 0x8, addend: 0x0, symName: '_$ss17_dictionaryUpCastySDyq0_q1_GSDyxq_GSHRzSHR0_r2_lFSo21NSAttributedStringKeya_So6UIFontCAEypTg5', symObjAddr: 0xC98, symBinAddr: 0x12ABC4, symSize: 0x2C0 } + - { offset: 0x1CEB57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellCfETo', symObjAddr: 0x26C8, symBinAddr: 0x12DC9C, symSize: 0xB8 } + - { offset: 0x1CEB86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellCMa', symObjAddr: 0x2780, symBinAddr: 0x12DD54, symSize: 0x20 } + - { offset: 0x1CEB9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13configureIcon3foryAA5PlaceCSg_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x27F0, symBinAddr: 0x12DDC4, symSize: 0x8 } + - { offset: 0x1CEF6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x12B5D4, symSize: 0x10 } + - { offset: 0x1CEF82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x12B5D4, symSize: 0x10 } + - { offset: 0x1CEFC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x12B5E4, symSize: 0x34 } + - { offset: 0x1CF017, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17subtitleStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x12B618, symSize: 0x10 } + - { offset: 0x1CF02F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17subtitleStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x12B618, symSize: 0x10 } + - { offset: 0x1CF06F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17subtitleStackViewSo07UIStackI0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x12B628, symSize: 0x34 } + - { offset: 0x1CF0BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x12B65C, symSize: 0x10 } + - { offset: 0x1CF0D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x12B65C, symSize: 0x10 } + - { offset: 0x1CF111, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x12B66C, symSize: 0x34 } + - { offset: 0x1CF160, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x12B6A0, symSize: 0x10 } + - { offset: 0x1CF178, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x12B6A0, symSize: 0x10 } + - { offset: 0x1CF1B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x12B6B0, symSize: 0x34 } + - { offset: 0x1CF202, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x12B6E4, symSize: 0x10 } + - { offset: 0x1CF21A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x12B6E4, symSize: 0x10 } + - { offset: 0x1CF255, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x12B6F4, symSize: 0x34 } + - { offset: 0x1CF2A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC9iconImageSo11UIImageViewCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x12B728, symSize: 0x10 } + - { offset: 0x1CF2BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC9iconImageSo11UIImageViewCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x12B728, symSize: 0x10 } + - { offset: 0x1CF2FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC9iconImageSo11UIImageViewCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x12B738, symSize: 0x34 } + - { offset: 0x1CF34B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC19scheduleStatusLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x12B76C, symSize: 0x10 } + - { offset: 0x1CF363, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC19scheduleStatusLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x12B76C, symSize: 0x10 } + - { offset: 0x1CF39E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC19scheduleStatusLabelSo7UILabelCSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x12B77C, symSize: 0x34 } + - { offset: 0x1CF3ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC22scheduleTimeRangeLabelSo7UILabelCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x12B7B0, symSize: 0x10 } + - { offset: 0x1CF405, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC22scheduleTimeRangeLabelSo7UILabelCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x12B7B0, symSize: 0x10 } + - { offset: 0x1CF440, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC22scheduleTimeRangeLabelSo7UILabelCSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x12B7C0, symSize: 0x34 } + - { offset: 0x1CF48F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17scheduleContainerSo11UIStackViewCSgvgTo', symObjAddr: 0x220, symBinAddr: 0x12B7F4, symSize: 0x10 } + - { offset: 0x1CF4A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17scheduleContainerSo11UIStackViewCSgvgTo', symObjAddr: 0x220, symBinAddr: 0x12B7F4, symSize: 0x10 } + - { offset: 0x1CF4E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17scheduleContainerSo11UIStackViewCSgvsTo', symObjAddr: 0x230, symBinAddr: 0x12B804, symSize: 0x34 } + - { offset: 0x1CF531, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC12awakeFromNibyyFTo', symObjAddr: 0x264, symBinAddr: 0x12B838, symSize: 0x3C } + - { offset: 0x1CF5A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC14configureTitle10searchTextySSSg_tF', symObjAddr: 0x2A0, symBinAddr: 0x12B874, symSize: 0x270 } + - { offset: 0x1CF82E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17configureSchedule010shouldShowH0ySb_tF', symObjAddr: 0x510, symBinAddr: 0x12BAE4, symSize: 0x87C } + - { offset: 0x1D011A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17configureSubtitleyyF', symObjAddr: 0xD8C, symBinAddr: 0x12C360, symSize: 0x758 } + - { offset: 0x1D05C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC19configureSeparatorsyyF', symObjAddr: 0x14E4, symBinAddr: 0x12CAB8, symSize: 0x3A8 } + - { offset: 0x1D0A0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13configureIcon3foryAA5PlaceCSg_tF', symObjAddr: 0x188C, symBinAddr: 0x12CE60, symSize: 0x924 } + - { offset: 0x1D0E43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13configureIcon3foryAA5PlaceCSg_tFySo7UIImageCSgcfU_', symObjAddr: 0x21B0, symBinAddr: 0x12D784, symSize: 0x13C } + - { offset: 0x1D0EE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC15prepareForReuseyyF', symObjAddr: 0x22EC, symBinAddr: 0x12D8C0, symSize: 0x134 } + - { offset: 0x1D0F84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC15prepareForReuseyyFTo', symObjAddr: 0x2420, symBinAddr: 0x12D9F4, symSize: 0x28 } + - { offset: 0x1D0F98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x2448, symBinAddr: 0x12DA1C, symSize: 0xFC } + - { offset: 0x1D0FD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x2544, symBinAddr: 0x12DB18, symSize: 0x48 } + - { offset: 0x1D1011, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x258C, symBinAddr: 0x12DB60, symSize: 0xE4 } + - { offset: 0x1D1044, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2670, symBinAddr: 0x12DC44, symSize: 0x28 } + - { offset: 0x1D1058, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellCfD', symObjAddr: 0x2698, symBinAddr: 0x12DC6C, symSize: 0x30 } + - { offset: 0x1D1451, size: 0x8, addend: 0x0, symName: '_$sSo9UIControlC8PenNavUIE13_handleAction33_5E6DC34DF67332EDC181E10990F14522LLyyF', symObjAddr: 0x0, symBinAddr: 0x12DDCC, symSize: 0xDC } + - { offset: 0x1D1475, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10closureKey33_5E6DC34DF67332EDC181E10990F14522LLs5UInt8Vvp', symObjAddr: 0x188, symBinAddr: 0x367BB8, symSize: 0x0 } + - { offset: 0x1D148E, size: 0x8, addend: 0x0, symName: '_$sSo9UIControlC8PenNavUIE13_handleAction33_5E6DC34DF67332EDC181E10990F14522LLyyF', symObjAddr: 0x0, symBinAddr: 0x12DDCC, symSize: 0xDC } + - { offset: 0x1D14D2, size: 0x8, addend: 0x0, symName: '_$sSo9UIControlC8PenNavUIE13_handleAction33_5E6DC34DF67332EDC181E10990F14522LLyyFTo', symObjAddr: 0xDC, symBinAddr: 0x12DEA8, symSize: 0x28 } + - { offset: 0x1D1895, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC4dataAE10Foundation4DataV_tc33_46DA244A1B05B1F166AC1DDE992677D0Llfc', symObjAddr: 0x0, symBinAddr: 0x12DED0, symSize: 0x15C } + - { offset: 0x1D1AE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserCfETo', symObjAddr: 0x408, symBinAddr: 0x12E2A4, symSize: 0x5C } + - { offset: 0x1D1B18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserCMa', symObjAddr: 0x464, symBinAddr: 0x12E300, symSize: 0x20 } + - { offset: 0x1D1B6C, size: 0x8, addend: 0x0, symName: '_$sSa17_customRemoveLastxSgyF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AC11CGTextTypesV_G_Tg5', symObjAddr: 0x484, symBinAddr: 0x12E320, symSize: 0x94 } + - { offset: 0x1D1C06, size: 0x8, addend: 0x0, symName: '_$sSa17_customRemoveLastxSgyF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AC7CGTypesV_G_Tg5', symObjAddr: 0x518, symBinAddr: 0x12E3B4, symSize: 0x90 } + - { offset: 0x1D1CC1, size: 0x8, addend: 0x0, symName: '_$sSa17_customRemoveLastxSgyF8PenNavUI3XMLO7ElementC_Tg5', symObjAddr: 0x5A8, symBinAddr: 0x12E444, symSize: 0x60 } + - { offset: 0x1D2020, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC4dataAE10Foundation4DataV_tc33_46DA244A1B05B1F166AC1DDE992677D0Llfc', symObjAddr: 0x0, symBinAddr: 0x12DED0, symSize: 0x15C } + - { offset: 0x1D2092, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_15didStartElement12namespaceURI13qualifiedName10attributesySo11NSXMLParserC_S2SSgAMSDyS2SGtFTo', symObjAddr: 0x15C, symBinAddr: 0x12E02C, symSize: 0x108 } + - { offset: 0x1D20C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_13didEndElement12namespaceURI13qualifiedNameySo11NSXMLParserC_S2SSgALtFTo', symObjAddr: 0x264, symBinAddr: 0x12E134, symSize: 0xD4 } + - { offset: 0x1D20F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_15foundCharactersySo11NSXMLParserC_SStFTo', symObjAddr: 0x338, symBinAddr: 0x12E208, symSize: 0x70 } + - { offset: 0x1D2137, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserCAEycfcTo', symObjAddr: 0x3A8, symBinAddr: 0x12E278, symSize: 0x2C } + - { offset: 0x1D21B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC5parse4dataAC7ElementC10Foundation4DataV_tKFZTf4nd_n', symObjAddr: 0x608, symBinAddr: 0x12E4A4, symSize: 0x210 } + - { offset: 0x1D2394, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_15didStartElement12namespaceURI13qualifiedName10attributesySo11NSXMLParserC_S2SSgAMSDyS2SGtFTf4nnndnn_n', symObjAddr: 0x818, symBinAddr: 0x12E6B4, symSize: 0x314 } + - { offset: 0x1D274A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_13didEndElement12namespaceURI13qualifiedNameySo11NSXMLParserC_S2SSgALtFTf4dnndn_n', symObjAddr: 0xB2C, symBinAddr: 0x12E9C8, symSize: 0x234 } + - { offset: 0x1D2ABF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_15foundCharactersySo11NSXMLParserC_SStFTf4dnn_n', symObjAddr: 0xD60, symBinAddr: 0x12EBFC, symSize: 0x17C } + - { offset: 0x1D3021, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16PIEventsDelegateP19onBackButtonPressedyyF', symObjAddr: 0x0, symBinAddr: 0x12ED78, symSize: 0x7C } + - { offset: 0x1D3075, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16PIEventsDelegateP19onBackButtonPressedyyF', symObjAddr: 0x0, symBinAddr: 0x12ED78, symSize: 0x7C } + - { offset: 0x1D3448, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC10layerClassyXlXpvgZTo', symObjAddr: 0x0, symBinAddr: 0x12EE14, symSize: 0x14 } + - { offset: 0x1D36F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewCfETo', symObjAddr: 0x6BC, symBinAddr: 0x12F4D0, symSize: 0x48 } + - { offset: 0x1D3725, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewCMa', symObjAddr: 0x964, symBinAddr: 0x12F778, symSize: 0x20 } + - { offset: 0x1D3862, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerCMa', symObjAddr: 0xE88, symBinAddr: 0x12FC9C, symSize: 0x20 } + - { offset: 0x1D3876, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC21setupPropertyAnimator33_8C639E5594D44A54C22F58F98E146AE7LLyyFyycfU_TA', symObjAddr: 0xF4C, symBinAddr: 0x12FCE0, symSize: 0x8 } + - { offset: 0x1D388A, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xF54, symBinAddr: 0x12FCE8, symSize: 0x10 } + - { offset: 0x1D389E, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xF64, symBinAddr: 0x12FCF8, symSize: 0x8 } + - { offset: 0x1D38D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC10layerClassyXlXpvgZTo', symObjAddr: 0x0, symBinAddr: 0x12EE14, symSize: 0x14 } + - { offset: 0x1D39BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC9intensity12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x14, symBinAddr: 0x12EE28, symSize: 0x88 } + - { offset: 0x1D3A27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC9intensity12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x9C, symBinAddr: 0x12EEB0, symSize: 0x8C } + - { offset: 0x1D3B71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC6effectSo06UIBlurE0CvgTo', symObjAddr: 0x128, symBinAddr: 0x12EF3C, symSize: 0x10 } + - { offset: 0x1D3B89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC6effectSo06UIBlurE0CvgTo', symObjAddr: 0x128, symBinAddr: 0x12EF3C, symSize: 0x10 } + - { offset: 0x1D3BDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC6effectSo06UIBlurE0CvsTo', symObjAddr: 0x138, symBinAddr: 0x12EF4C, symSize: 0x6C } + - { offset: 0x1D3C5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x1A4, symBinAddr: 0x12EFB8, symSize: 0x1A0 } + - { offset: 0x1D3CEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x344, symBinAddr: 0x12F158, symSize: 0x20 } + - { offset: 0x1D3D1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x364, symBinAddr: 0x12F178, symSize: 0x18C } + - { offset: 0x1D3DA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x4F0, symBinAddr: 0x12F304, symSize: 0x28 } + - { offset: 0x1D3E01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC14layoutSubviewsyyF', symObjAddr: 0x518, symBinAddr: 0x12F32C, symSize: 0xB8 } + - { offset: 0x1D3EBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC14layoutSubviewsyyFTo', symObjAddr: 0x5D0, symBinAddr: 0x12F3E4, symSize: 0x28 } + - { offset: 0x1D3ECE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewCfD', symObjAddr: 0x5F8, symBinAddr: 0x12F40C, symSize: 0x50 } + - { offset: 0x1D3EFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewCfDTo', symObjAddr: 0x648, symBinAddr: 0x12F45C, symSize: 0x74 } + - { offset: 0x1D3F63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC21setupPropertyAnimator33_8C639E5594D44A54C22F58F98E146AE7LLyyF', symObjAddr: 0x704, symBinAddr: 0x12F518, symSize: 0x134 } + - { offset: 0x1D4016, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC21setupPropertyAnimator33_8C639E5594D44A54C22F58F98E146AE7LLyyFyycfU_', symObjAddr: 0x838, symBinAddr: 0x12F64C, symSize: 0xE0 } + - { offset: 0x1D40B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC7displayyySo7CALayerCFTo', symObjAddr: 0x918, symBinAddr: 0x12F72C, symSize: 0x4C } + - { offset: 0x1D40E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC5layerACyp_tcfc', symObjAddr: 0x984, symBinAddr: 0x12F798, symSize: 0xEC } + - { offset: 0x1D413B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC5layerACyp_tcfcTo', symObjAddr: 0xA70, symBinAddr: 0x12F884, symSize: 0x4C } + - { offset: 0x1D4168, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerCACycfcTo', symObjAddr: 0xABC, symBinAddr: 0x12F8D0, symSize: 0x3C } + - { offset: 0x1D41C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xAF8, symBinAddr: 0x12F90C, symSize: 0x80 } + - { offset: 0x1D4249, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC12needsDisplay6forKeySbSS_tFZTo', symObjAddr: 0xB78, symBinAddr: 0x12F98C, symSize: 0x10C } + - { offset: 0x1D42A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC6action6forKeySo8CAAction_pSgSS_tF', symObjAddr: 0xC84, symBinAddr: 0x12FA98, symSize: 0x16C } + - { offset: 0x1D4330, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC6action6forKeySo8CAAction_pSgSS_tFTo', symObjAddr: 0xDF0, symBinAddr: 0x12FC04, symSize: 0x68 } + - { offset: 0x1D4344, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerCfD', symObjAddr: 0xE58, symBinAddr: 0x12FC6C, symSize: 0x30 } + - { offset: 0x1D4367, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC7displayyySo7CALayerCFTf4dn_n', symObjAddr: 0xF6C, symBinAddr: 0x12FD00, symSize: 0x94 } + - { offset: 0x1D479C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC10imagePlaceSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x12FD94, symSize: 0x20 } + - { offset: 0x1D4BD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellCfETo', symObjAddr: 0xE0C, symBinAddr: 0x130BA0, symSize: 0x88 } + - { offset: 0x1D4C06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellCMa', symObjAddr: 0xE94, symBinAddr: 0x130C28, symSize: 0x20 } + - { offset: 0x1D4C1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9configure3for6filteryAA7POIDataCSg_AA0D7FiltersVSgtFySo7UIImageCSgcfU_TA', symObjAddr: 0xF44, symBinAddr: 0x130C98, symSize: 0x8 } + - { offset: 0x1D4D8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC10imagePlaceSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x12FD94, symSize: 0x20 } + - { offset: 0x1D4DEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC10imagePlaceSo11UIImageViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x12FDB4, symSize: 0x14 } + - { offset: 0x1D4E3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9placeNameSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x12FDC8, symSize: 0x20 } + - { offset: 0x1D4E95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9placeNameSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x12FDE8, symSize: 0x14 } + - { offset: 0x1D4EE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x12FDFC, symSize: 0x20 } + - { offset: 0x1D4F3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x12FE1C, symSize: 0x14 } + - { offset: 0x1D4F8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9venueNameSo7UILabelCSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x12FE30, symSize: 0x20 } + - { offset: 0x1D4FE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9venueNameSo7UILabelCSgvsTo', symObjAddr: 0xBC, symBinAddr: 0x12FE50, symSize: 0x14 } + - { offset: 0x1D5032, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9floorNameSo7UILabelCSgvgTo', symObjAddr: 0xD0, symBinAddr: 0x12FE64, symSize: 0x20 } + - { offset: 0x1D5087, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9floorNameSo7UILabelCSgvsTo', symObjAddr: 0xF0, symBinAddr: 0x12FE84, symSize: 0x14 } + - { offset: 0x1D50D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC16placeholderImageSo11UIImageViewCSgvgTo', symObjAddr: 0x104, symBinAddr: 0x12FE98, symSize: 0x20 } + - { offset: 0x1D512D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC16placeholderImageSo11UIImageViewCSgvsTo', symObjAddr: 0x124, symBinAddr: 0x12FEB8, symSize: 0x14 } + - { offset: 0x1D517E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC12awakeFromNibyyFTo', symObjAddr: 0x138, symBinAddr: 0x12FECC, symSize: 0x3C } + - { offset: 0x1D51F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9configure3for6filteryAA7POIDataCSg_AA0D7FiltersVSgtF', symObjAddr: 0x174, symBinAddr: 0x12FF08, symSize: 0x2C4 } + - { offset: 0x1D5331, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9configure3for6filteryAA7POIDataCSg_AA0D7FiltersVSgtFySo7UIImageCSgcfU_', symObjAddr: 0x438, symBinAddr: 0x1301CC, symSize: 0x188 } + - { offset: 0x1D5438, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC34setPlaceDetailsForIndoorWayFinding5place6filteryAA7POIDataCSg_AA0D7FiltersVSgtF', symObjAddr: 0x5C0, symBinAddr: 0x130354, symSize: 0x31C } + - { offset: 0x1D5557, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC15setPlaceDetails5placeyAA7POIDataCSg_tF', symObjAddr: 0x8DC, symBinAddr: 0x130670, symSize: 0x1D8 } + - { offset: 0x1D5604, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC15prepareForReuseyyF', symObjAddr: 0xAB4, symBinAddr: 0x130848, symSize: 0xA0 } + - { offset: 0x1D5671, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC15prepareForReuseyyFTo', symObjAddr: 0xB54, symBinAddr: 0x1308E8, symSize: 0x28 } + - { offset: 0x1D5685, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0xB7C, symBinAddr: 0x130910, symSize: 0x10C } + - { offset: 0x1D56C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xC88, symBinAddr: 0x130A1C, symSize: 0x48 } + - { offset: 0x1D56FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xCD0, symBinAddr: 0x130A64, symSize: 0xE4 } + - { offset: 0x1D5731, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xDB4, symBinAddr: 0x130B48, symSize: 0x28 } + - { offset: 0x1D5745, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellCfD', symObjAddr: 0xDDC, symBinAddr: 0x130B70, symSize: 0x30 } + - { offset: 0x1D5DBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerCMa', symObjAddr: 0x1004, symBinAddr: 0x131CA4, symSize: 0x20 } + - { offset: 0x1D5E58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC10setBearing_7visible5usingySdSg_Sb17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0x0, symBinAddr: 0x130CA0, symSize: 0xD4 } + - { offset: 0x1D5ECC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC13setVisibility7visible5usingySb_17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0xD4, symBinAddr: 0x130D74, symSize: 0xC0 } + - { offset: 0x1D5F7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC20setBearingVisibility7visible5usingySb_17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0x194, symBinAddr: 0x130E34, symSize: 0x198 } + - { offset: 0x1D6014, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC11setDotStyle5usingy17PenguinINRenderer10PIRendererCSg_tF', symObjAddr: 0x32C, symBinAddr: 0x130FCC, symSize: 0x278 } + - { offset: 0x1D60BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC13setArrowStyle5usingy17PenguinINRenderer10PIRendererCSg_tF', symObjAddr: 0x5A4, symBinAddr: 0x131244, symSize: 0x218 } + - { offset: 0x1D61B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC6select5using8animatedy17PenguinINRenderer10PIRendererCSg_SbtF', symObjAddr: 0x7BC, symBinAddr: 0x13145C, symSize: 0x348 } + - { offset: 0x1D62ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC8deselect5usingy17PenguinINRenderer10PIRendererCSg_tF', symObjAddr: 0xB04, symBinAddr: 0x1317A4, symSize: 0x108 } + - { offset: 0x1D6322, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC8setColor09indicatorH006strokeH0014accuracyCircleH05usingySo7UIColorC_A2J17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0xC0C, symBinAddr: 0x1318AC, symSize: 0x3C4 } + - { offset: 0x1D6408, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerCfD', symObjAddr: 0xFD0, symBinAddr: 0x131C70, symSize: 0x34 } + - { offset: 0x1D6441, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerCACycfc', symObjAddr: 0x1024, symBinAddr: 0x131CC4, symSize: 0xDC } + - { offset: 0x1D681D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOMa', symObjAddr: 0x164, symBinAddr: 0x131DA0, symSize: 0x10 } + - { offset: 0x1D68B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSHAASQWb', symObjAddr: 0x4C4, symBinAddr: 0x132100, symSize: 0x4 } + - { offset: 0x1D68CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOACSQAAWl', symObjAddr: 0x4C8, symBinAddr: 0x132104, symSize: 0x40 } + - { offset: 0x1D68ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x174, symBinAddr: 0x131DB0, symSize: 0xC } + - { offset: 0x1D6954, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSHAASH9hashValueSivgTW', symObjAddr: 0x180, symBinAddr: 0x131DBC, symSize: 0xE0 } + - { offset: 0x1D69FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x260, symBinAddr: 0x131E9C, symSize: 0xBC } + - { offset: 0x1D6A66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x31C, symBinAddr: 0x131F58, symSize: 0xDC } + - { offset: 0x1D6B3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x3F8, symBinAddr: 0x132034, symSize: 0x2C } + - { offset: 0x1D6B65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x424, symBinAddr: 0x132060, symSize: 0xA0 } + - { offset: 0x1D6B94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x508, symBinAddr: 0x132144, symSize: 0x5C } + - { offset: 0x1D6F67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOMa', symObjAddr: 0x164, symBinAddr: 0x1321A0, symSize: 0x10 } + - { offset: 0x1D7059, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSHAASQWb', symObjAddr: 0x824, symBinAddr: 0x132860, symSize: 0x4 } + - { offset: 0x1D706D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOACSQAAWl', symObjAddr: 0x828, symBinAddr: 0x132864, symSize: 0x40 } + - { offset: 0x1D70BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x580, symBinAddr: 0x1325BC, symSize: 0xC } + - { offset: 0x1D7123, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSHAASH9hashValueSivgTW', symObjAddr: 0x58C, symBinAddr: 0x1325C8, symSize: 0xB4 } + - { offset: 0x1D71C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x640, symBinAddr: 0x13267C, symSize: 0x90 } + - { offset: 0x1D721F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x6D0, symBinAddr: 0x13270C, symSize: 0xB0 } + - { offset: 0x1D72D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionO8isManualSbvg', symObjAddr: 0x174, symBinAddr: 0x1321B0, symSize: 0x164 } + - { offset: 0x1D7482, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionO16isTwoDimensionalSbvg', symObjAddr: 0x2D8, symBinAddr: 0x132314, symSize: 0x144 } + - { offset: 0x1D7632, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionO18isThreeDimensionalSbvg', symObjAddr: 0x41C, symBinAddr: 0x132458, symSize: 0x164 } + - { offset: 0x1D781F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x780, symBinAddr: 0x1327BC, symSize: 0x2C } + - { offset: 0x1D7848, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x7AC, symBinAddr: 0x1327E8, symSize: 0x78 } + - { offset: 0x1D7884, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x868, symBinAddr: 0x1328A4, symSize: 0x5C } + - { offset: 0x1D7C65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12EdgesManagerC14sharedInstance33_1A4BCECDB650D7AA17333C6F73CF17CELLACSgvpZ', symObjAddr: 0x48, symBinAddr: 0x367F70, symSize: 0x0 } + - { offset: 0x1D7C73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12EdgesManagerCMa', symObjAddr: 0x24, symBinAddr: 0x132900, symSize: 0x20 } + - { offset: 0x1D8033, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC05setupdE0012enableGoogleD0ySb_tF', symObjAddr: 0x0, symBinAddr: 0x132920, symSize: 0x114 } + - { offset: 0x1D8057, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC15_sharedInstance33_06CA1F9145C9A0D8436D32F3E461F428LLACSgvpZ', symObjAddr: 0x590, symBinAddr: 0x368040, symSize: 0x0 } + - { offset: 0x1D827E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerCMa', symObjAddr: 0x570, symBinAddr: 0x132E90, symSize: 0x20 } + - { offset: 0x1D8428, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC05setupdE0012enableGoogleD0ySb_tF', symObjAddr: 0x0, symBinAddr: 0x132920, symSize: 0x114 } + - { offset: 0x1D856E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC5speak4textySSSg_tF', symObjAddr: 0x114, symBinAddr: 0x132A34, symSize: 0x1C0 } + - { offset: 0x1D8750, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC4muteyyF', symObjAddr: 0x2D4, symBinAddr: 0x132BF4, symSize: 0x17C } + - { offset: 0x1D88AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC6unmuteyyF', symObjAddr: 0x450, symBinAddr: 0x132D70, symSize: 0xF4 } + - { offset: 0x1D89C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerCfD', symObjAddr: 0x544, symBinAddr: 0x132E64, symSize: 0x2C } + - { offset: 0x1D8D9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TagDisplayTypeOMa', symObjAddr: 0x178, symBinAddr: 0x132EB0, symSize: 0x10 } + - { offset: 0x1D8DB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TagDisplayTypeOSHAASQWb', symObjAddr: 0x188, symBinAddr: 0x132EC0, symSize: 0x4 } + - { offset: 0x1D8DC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TagDisplayTypeOACSQAAWl', symObjAddr: 0x18C, symBinAddr: 0x132EC4, symSize: 0x40 } + - { offset: 0x1D9159, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOMi', symObjAddr: 0x1C4, symBinAddr: 0x132F04, symSize: 0x8 } + - { offset: 0x1D9171, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOMi', symObjAddr: 0x1C4, symBinAddr: 0x132F04, symSize: 0x8 } + - { offset: 0x1D9185, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOMr', symObjAddr: 0x1CC, symBinAddr: 0x132F0C, symSize: 0x3E0 } + - { offset: 0x1D9199, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwCP', symObjAddr: 0x5AC, symBinAddr: 0x1332EC, symSize: 0x974 } + - { offset: 0x1D91AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwxx', symObjAddr: 0xF20, symBinAddr: 0x133C60, symSize: 0x620 } + - { offset: 0x1D91C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwcp', symObjAddr: 0x1540, symBinAddr: 0x134280, symSize: 0x874 } + - { offset: 0x1D91D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwca', symObjAddr: 0x1DB4, symBinAddr: 0x134AF4, symSize: 0xB74 } + - { offset: 0x1D91E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwtk', symObjAddr: 0x2928, symBinAddr: 0x135668, symSize: 0x874 } + - { offset: 0x1D91FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwta', symObjAddr: 0x319C, symBinAddr: 0x135EDC, symSize: 0xB74 } + - { offset: 0x1D9211, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwet', symObjAddr: 0x3D10, symBinAddr: 0x136A50, symSize: 0x474 } + - { offset: 0x1D9225, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwst', symObjAddr: 0x4184, symBinAddr: 0x136EC4, symSize: 0x4E0 } + - { offset: 0x1D9239, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwug', symObjAddr: 0x4664, symBinAddr: 0x1373A4, symSize: 0x3E0 } + - { offset: 0x1D924D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwui', symObjAddr: 0x4A48, symBinAddr: 0x137784, symSize: 0x6EC } + - { offset: 0x1D9261, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOMa', symObjAddr: 0x5134, symBinAddr: 0x137E70, symSize: 0xC } + - { offset: 0x1D968E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateCMa', symObjAddr: 0xC4, symBinAddr: 0x137EE4, symSize: 0x20 } + - { offset: 0x1D970B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x5C, symBinAddr: 0x137E7C, symSize: 0x68 } + - { offset: 0x1D9775, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xE4, symBinAddr: 0x137F04, symSize: 0x54 } + - { offset: 0x1D97C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateCfD', symObjAddr: 0x138, symBinAddr: 0x137F58, symSize: 0x30 } + - { offset: 0x1DA2F5, size: 0x8, addend: 0x0, symName: '_$ss13_parseInteger5ascii5radixq_Sgx_SitSyRzs010FixedWidthB0R_r0_lFSs_SuTg5', symObjAddr: 0x1334, symBinAddr: 0x1390F4, symSize: 0xFC } + - { offset: 0x1DA3D4, size: 0x8, addend: 0x0, symName: '_$ss13_parseInteger5ascii5radixq_Sgx_SitSyRzs010FixedWidthB0R_r0_lFSS_SiTg5', symObjAddr: 0x1430, symBinAddr: 0x1391F0, symSize: 0xF0 } + - { offset: 0x1DA490, size: 0x8, addend: 0x0, symName: '_$ss13_parseInteger5ascii5radixq_Sgx_SitSyRzs010FixedWidthB0R_r0_lFADSRys5UInt8VGXEfU_Ss_SuTg5', symObjAddr: 0x1520, symBinAddr: 0x1392E0, symSize: 0x284 } + - { offset: 0x1DA5D4, size: 0x8, addend: 0x0, symName: '_$ss13_parseInteger5ascii5radixq_Sgx_SitSyRzs010FixedWidthB0R_r0_lFADSRys5UInt8VGXEfU_SS_SiTg5', symObjAddr: 0x17A4, symBinAddr: 0x139564, symSize: 0x284 } + - { offset: 0x1DA6EC, size: 0x8, addend: 0x0, symName: '_$sSS8_copyingyS2SFZ', symObjAddr: 0x1A28, symBinAddr: 0x1397E8, symSize: 0x50 } + - { offset: 0x1DA704, size: 0x8, addend: 0x0, symName: '_$sSlsEy11SubSequenceQzqd__cSXRd__5BoundQyd__5IndexRtzluigSS_s16PartialRangeFromVySSAEVGTgq5', symObjAddr: 0x1A78, symBinAddr: 0x139838, symSize: 0x4C } + - { offset: 0x1DA759, size: 0x8, addend: 0x0, symName: '_$sSS8_copyingySSSsFZ', symObjAddr: 0x1AC4, symBinAddr: 0x139884, symSize: 0x144 } + - { offset: 0x1DA7B3, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV19_uninitializedCount15minimumCapacityAByxGSi_SitcfCs5UInt8V_Tt1gq5', symObjAddr: 0x1C08, symBinAddr: 0x1399C8, symSize: 0x68 } + - { offset: 0x1DA7EB, size: 0x8, addend: 0x0, symName: '_$sSTsE21_copySequenceContents12initializing8IteratorQz_SitSry7ElementQzG_tFSs8UTF8ViewV_Tgq5', symObjAddr: 0x1C70, symBinAddr: 0x139A30, symSize: 0x21C } + - { offset: 0x1DA838, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV27_slowEnsureMatchingEncodingySS5IndexVAEF', symObjAddr: 0x1E8C, symBinAddr: 0x139C4C, symSize: 0x78 } + - { offset: 0x1DA862, size: 0x8, addend: 0x0, symName: '_$ss17FixedWidthIntegerPsE_5radixxSgqd___SitcSyRd__lufcADSRys5UInt8VGXEfU_Su_SsTG5', symObjAddr: 0x1F04, symBinAddr: 0x139CC4, symSize: 0x27C } + - { offset: 0x1DA9B3, size: 0x8, addend: 0x0, symName: '_$ss17FixedWidthIntegerPsE_5radixxSgqd___SitcSyRd__lufcADSRys5UInt8VGXEfU_Su_SsTG5TA', symObjAddr: 0x2228, symBinAddr: 0x139FE8, symSize: 0x18 } + - { offset: 0x1DA9C7, size: 0x8, addend: 0x0, symName: '_$sS2sSTsWl', symObjAddr: 0x2240, symBinAddr: 0x13A000, symSize: 0x40 } + - { offset: 0x1DA9F1, size: 0x8, addend: 0x0, symName: '_$ss5SliceV32withContiguousStorageIfAvailableyqd__Sgqd__SRy7ElementQzGKXEKlFqd__AGKXEfU_SS8UTF8ViewV_SuSgTg5Tf4xnn_n', symObjAddr: 0x2B10, symBinAddr: 0x13A88C, symSize: 0x214 } + - { offset: 0x1DAA86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwxx', symObjAddr: 0x2D28, symBinAddr: 0x13AAA4, symSize: 0x28 } + - { offset: 0x1DAA9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwca', symObjAddr: 0x2D8C, symBinAddr: 0x13AB08, symSize: 0x64 } + - { offset: 0x1DAAAE, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_8, symObjAddr: 0x2DF0, symBinAddr: 0x13AB6C, symSize: 0x14 } + - { offset: 0x1DAAC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwta', symObjAddr: 0x2E04, symBinAddr: 0x13AB80, symSize: 0x44 } + - { offset: 0x1DAAD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwet', symObjAddr: 0x2E48, symBinAddr: 0x13ABC4, symSize: 0x48 } + - { offset: 0x1DAAEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwst', symObjAddr: 0x2E90, symBinAddr: 0x13AC0C, symSize: 0x40 } + - { offset: 0x1DAAFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVMa', symObjAddr: 0x2ED0, symBinAddr: 0x13AC4C, symSize: 0x10 } + - { offset: 0x1DAB12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwxx', symObjAddr: 0x2F0C, symBinAddr: 0x13AC5C, symSize: 0x30 } + - { offset: 0x1DAB26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwcp', symObjAddr: 0x2F3C, symBinAddr: 0x13AC8C, symSize: 0x5C } + - { offset: 0x1DAB3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwca', symObjAddr: 0x2F98, symBinAddr: 0x13ACE8, symSize: 0x94 } + - { offset: 0x1DAB4E, size: 0x8, addend: 0x0, symName: ___swift_memcpy49_8, symObjAddr: 0x302C, symBinAddr: 0x13AD7C, symSize: 0x1C } + - { offset: 0x1DAB62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwta', symObjAddr: 0x3048, symBinAddr: 0x13AD98, symSize: 0x5C } + - { offset: 0x1DAB76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwet', symObjAddr: 0x30A4, symBinAddr: 0x13ADF4, symSize: 0x48 } + - { offset: 0x1DAB8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwst', symObjAddr: 0x30EC, symBinAddr: 0x13AE3C, symSize: 0x50 } + - { offset: 0x1DAB9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVMa', symObjAddr: 0x313C, symBinAddr: 0x13AE8C, symSize: 0x10 } + - { offset: 0x1DABB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAFs0F3KeyAAWl', symObjAddr: 0x3170, symBinAddr: 0x13AE9C, symSize: 0x40 } + - { offset: 0x1DABC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVAESeAAWl', symObjAddr: 0x31D0, symBinAddr: 0x13AEDC, symSize: 0x40 } + - { offset: 0x1DABDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVAESEAAWl', symObjAddr: 0x3210, symBinAddr: 0x13AF1C, symSize: 0x40 } + - { offset: 0x1DABEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs0H3KeyAAWl', symObjAddr: 0x3250, symBinAddr: 0x13AF5C, symSize: 0x40 } + - { offset: 0x1DAC02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOMa', symObjAddr: 0x33F4, symBinAddr: 0x13AF9C, symSize: 0x10 } + - { offset: 0x1DAC16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOMa', symObjAddr: 0x3424, symBinAddr: 0x13AFAC, symSize: 0x10 } + - { offset: 0x1DAC2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwxx', symObjAddr: 0x3438, symBinAddr: 0x13AFC0, symSize: 0x28 } + - { offset: 0x1DAC3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwca', symObjAddr: 0x3494, symBinAddr: 0x13B01C, symSize: 0x5C } + - { offset: 0x1DAC52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwta', symObjAddr: 0x34FC, symBinAddr: 0x13B078, symSize: 0x3C } + - { offset: 0x1DAC66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwet', symObjAddr: 0x3538, symBinAddr: 0x13B0B4, symSize: 0x48 } + - { offset: 0x1DAC7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwst', symObjAddr: 0x3580, symBinAddr: 0x13B0FC, symSize: 0x3C } + - { offset: 0x1DAC8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVMa', symObjAddr: 0x35BC, symBinAddr: 0x13B138, symSize: 0x10 } + - { offset: 0x1DACA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOSHAASQWb', symObjAddr: 0x35CC, symBinAddr: 0x13B148, symSize: 0x4 } + - { offset: 0x1DACB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAFSQAAWl', symObjAddr: 0x35D0, symBinAddr: 0x13B14C, symSize: 0x40 } + - { offset: 0x1DACCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOSHAASQWb', symObjAddr: 0x3610, symBinAddr: 0x13B18C, symSize: 0x4 } + - { offset: 0x1DACDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHSQAAWl', symObjAddr: 0x3614, symBinAddr: 0x13B190, symSize: 0x40 } + - { offset: 0x1DACF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x3654, symBinAddr: 0x13B1D0, symSize: 0x4 } + - { offset: 0x1DAD06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x3658, symBinAddr: 0x13B1D4, symSize: 0x40 } + - { offset: 0x1DAD1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x3698, symBinAddr: 0x13B214, symSize: 0x4 } + - { offset: 0x1DAD2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x369C, symBinAddr: 0x13B218, symSize: 0x40 } + - { offset: 0x1DAD42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x36DC, symBinAddr: 0x13B258, symSize: 0x4 } + - { offset: 0x1DAD56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x36E0, symBinAddr: 0x13B25C, symSize: 0x40 } + - { offset: 0x1DAD6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x3720, symBinAddr: 0x13B29C, symSize: 0x4 } + - { offset: 0x1DAD7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x3724, symBinAddr: 0x13B2A0, symSize: 0x40 } + - { offset: 0x1DAD92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOAGs0G3KeyAAWl', symObjAddr: 0x3764, symBinAddr: 0x13B2E0, symSize: 0x40 } + - { offset: 0x1DADA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVAESeAAWl', symObjAddr: 0x37EC, symBinAddr: 0x13B320, symSize: 0x40 } + - { offset: 0x1DADBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVAESeAAWl', symObjAddr: 0x382C, symBinAddr: 0x13B360, symSize: 0x40 } + - { offset: 0x1DADCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVAESEAAWl', symObjAddr: 0x386C, symBinAddr: 0x13B3A0, symSize: 0x40 } + - { offset: 0x1DADE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVAESEAAWl', symObjAddr: 0x3910, symBinAddr: 0x13B3E0, symSize: 0x40 } + - { offset: 0x1DADF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOMa', symObjAddr: 0x3954, symBinAddr: 0x13B420, symSize: 0x10 } + - { offset: 0x1DAE0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwxx', symObjAddr: 0x3998, symBinAddr: 0x13B464, symSize: 0x8 } + - { offset: 0x1DAE1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwca', symObjAddr: 0x39A0, symBinAddr: 0x13B46C, symSize: 0x48 } + - { offset: 0x1DAE32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwta', symObjAddr: 0x39E8, symBinAddr: 0x13B4B4, symSize: 0x38 } + - { offset: 0x1DAE46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwet', symObjAddr: 0x3A20, symBinAddr: 0x13B4EC, symSize: 0x48 } + - { offset: 0x1DAE5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwst', symObjAddr: 0x3A68, symBinAddr: 0x13B534, symSize: 0x40 } + - { offset: 0x1DAE6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVMa', symObjAddr: 0x3AA8, symBinAddr: 0x13B574, symSize: 0x10 } + - { offset: 0x1DAE82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSHAASQWb', symObjAddr: 0x3AB8, symBinAddr: 0x13B584, symSize: 0x4 } + - { offset: 0x1DAE96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOAGSQAAWl', symObjAddr: 0x3ABC, symBinAddr: 0x13B588, symSize: 0x40 } + - { offset: 0x1DAEAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x3AFC, symBinAddr: 0x13B5C8, symSize: 0x4 } + - { offset: 0x1DAEBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOAGs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x3B00, symBinAddr: 0x13B5CC, symSize: 0x40 } + - { offset: 0x1DAED2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x3B40, symBinAddr: 0x13B60C, symSize: 0x4 } + - { offset: 0x1DAEE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOAGs23CustomStringConvertibleAAWl', symObjAddr: 0x3B44, symBinAddr: 0x13B610, symSize: 0x40 } + - { offset: 0x1DAEFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs0H3KeyAAWl', symObjAddr: 0x3B84, symBinAddr: 0x13B650, symSize: 0x40 } + - { offset: 0x1DAF0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOMa', symObjAddr: 0x3D08, symBinAddr: 0x13B690, symSize: 0x10 } + - { offset: 0x1DAF22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOSHAASQWb', symObjAddr: 0x3D18, symBinAddr: 0x13B6A0, symSize: 0x4 } + - { offset: 0x1DAF36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHSQAAWl', symObjAddr: 0x3D1C, symBinAddr: 0x13B6A4, symSize: 0x40 } + - { offset: 0x1DAF4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x3D5C, symBinAddr: 0x13B6E4, symSize: 0x4 } + - { offset: 0x1DAF5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x3D60, symBinAddr: 0x13B6E8, symSize: 0x40 } + - { offset: 0x1DAF72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x3DA0, symBinAddr: 0x13B728, symSize: 0x4 } + - { offset: 0x1DAF86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x3DA4, symBinAddr: 0x13B72C, symSize: 0x40 } + - { offset: 0x1DAFCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x190, symBinAddr: 0x138118, symSize: 0x84 } + - { offset: 0x1DB0BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x214, symBinAddr: 0x13819C, symSize: 0x74 } + - { offset: 0x1DB16F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x288, symBinAddr: 0x138210, symSize: 0x48 } + - { offset: 0x1DB1E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x2D0, symBinAddr: 0x138258, symSize: 0x70 } + - { offset: 0x1DB28E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs28CustomDebugStringConvertibleAAsAHP16debugDescriptionSSvgTW', symObjAddr: 0x49C, symBinAddr: 0x138418, symSize: 0x28 } + - { offset: 0x1DB2AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs23CustomStringConvertibleAAsAHP11descriptionSSvgTW', symObjAddr: 0x4C4, symBinAddr: 0x138440, symSize: 0x28 } + - { offset: 0x1DB2F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0xE50, symBinAddr: 0x138D00, symSize: 0x28 } + - { offset: 0x1DB312, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0xE78, symBinAddr: 0x138D28, symSize: 0x28 } + - { offset: 0x1DB334, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x1024, symBinAddr: 0x138EBC, symSize: 0x28 } + - { offset: 0x1DB350, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x104C, symBinAddr: 0x138EE4, symSize: 0x28 } + - { offset: 0x1DB372, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x1298, symBinAddr: 0x139058, symSize: 0x28 } + - { offset: 0x1DB38E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x12C0, symBinAddr: 0x139080, symSize: 0x28 } + - { offset: 0x1DB3C2, size: 0x8, addend: 0x0, symName: '_$sSKsE6suffixy11SubSequenceQzSiFSS_Tg5Tf4ng_n', symObjAddr: 0x2180, symBinAddr: 0x139F40, symSize: 0xA8 } + - { offset: 0x1DB47E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x0, symBinAddr: 0x137F88, symSize: 0x190 } + - { offset: 0x1DB4FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSYAASY8rawValuexSg03RawJ0Qz_tcfCTW', symObjAddr: 0x340, symBinAddr: 0x1382C8, symSize: 0x70 } + - { offset: 0x1DB54A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSYAASY8rawValue03RawJ0QzvgTW', symObjAddr: 0x3B0, symBinAddr: 0x138338, symSize: 0x38 } + - { offset: 0x1DB590, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs0G3KeyAAsAHP11stringValueSSvgTW', symObjAddr: 0x3E8, symBinAddr: 0x138370, symSize: 0x34 } + - { offset: 0x1DB5F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs0G3KeyAAsAHP11stringValuexSgSS_tcfCTW', symObjAddr: 0x41C, symBinAddr: 0x1383A4, symSize: 0x74 } + - { offset: 0x1DB66C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x4EC, symBinAddr: 0x138468, symSize: 0x28 } + - { offset: 0x1DB695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x514, symBinAddr: 0x138490, symSize: 0x18 } + - { offset: 0x1DB6D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV11fillOpacitySdvg', symObjAddr: 0x52C, symBinAddr: 0x1384A8, symSize: 0x1FC } + - { offset: 0x1DB845, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV13borderOpacitySdvg', symObjAddr: 0x728, symBinAddr: 0x1386A4, symSize: 0x1FC } + - { offset: 0x1DB9BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV6encode2toys7Encoder_p_tKF', symObjAddr: 0x924, symBinAddr: 0x1388A0, symSize: 0x158 } + - { offset: 0x1DB9EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV6encode2toys7Encoder_p_tKF', symObjAddr: 0xA7C, symBinAddr: 0x1389F8, symSize: 0x12C } + - { offset: 0x1DBA1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV6encode2toys7Encoder_p_tKF', symObjAddr: 0xBA8, symBinAddr: 0x138B24, symSize: 0x12C } + - { offset: 0x1DBA70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0xD94, symBinAddr: 0x138C50, symSize: 0x80 } + - { offset: 0x1DBA98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0xE14, symBinAddr: 0x138CD0, symSize: 0x24 } + - { offset: 0x1DBAC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP8intValuexSgSi_tcfCTW', symObjAddr: 0xE44, symBinAddr: 0x138CF4, symSize: 0xC } + - { offset: 0x1DBAE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xEA0, symBinAddr: 0x138D50, symSize: 0x4C } + - { offset: 0x1DBB11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xEEC, symBinAddr: 0x138D9C, symSize: 0x14 } + - { offset: 0x1DBB3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0xF00, symBinAddr: 0x138DB0, symSize: 0x38 } + - { offset: 0x1DBB8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0xF38, symBinAddr: 0x138DE8, symSize: 0xD4 } + - { offset: 0x1DBC0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x1074, symBinAddr: 0x138F0C, symSize: 0x2C } + - { offset: 0x1DBC38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x10A0, symBinAddr: 0x138F38, symSize: 0x1C } + - { offset: 0x1DBC6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x1188, symBinAddr: 0x138F54, symSize: 0x30 } + - { offset: 0x1DBCB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x11B8, symBinAddr: 0x138F84, symSize: 0xD4 } + - { offset: 0x1DBD36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x12E8, symBinAddr: 0x1390A8, symSize: 0x30 } + - { offset: 0x1DBD5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1318, symBinAddr: 0x1390D8, symSize: 0x1C } + - { offset: 0x1DBDA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x22C4, symBinAddr: 0x13A040, symSize: 0x1D8 } + - { offset: 0x1DBDC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x249C, symBinAddr: 0x13A218, symSize: 0x170 } + - { offset: 0x1DBE7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x260C, symBinAddr: 0x13A388, symSize: 0x264 } + - { offset: 0x1DBE9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x2870, symBinAddr: 0x13A5EC, symSize: 0x144 } + - { offset: 0x1DBEC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x29B4, symBinAddr: 0x13A730, symSize: 0x15C } + - { offset: 0x1DC307, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PIAnalyticsAPIClientC14sharedInstance33_DB679343185B7764DCFBEC6E7A080E97LLACSgvpZ', symObjAddr: 0x200, symBinAddr: 0x368330, symSize: 0x0 } + - { offset: 0x1DC353, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PIAnalyticsAPIClientCMa', symObjAddr: 0x10, symBinAddr: 0x13B78C, symSize: 0x20 } + - { offset: 0x1DC41D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PIAnalyticsAPIClientC20trackNavigationEvent010navigationH04typeyAA0gH4DataV_AA0gH4TypeOtFTf4nnd_n', symObjAddr: 0x30, symBinAddr: 0x13B7AC, symSize: 0x1D0 } + - { offset: 0x1DC8E6, size: 0x8, addend: 0x0, symName: '_$sSo23UIActivityIndicatorViewC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x0, symBinAddr: 0x13B97C, symSize: 0x8 } + - { offset: 0x1DC8FE, size: 0x8, addend: 0x0, symName: '_$sSo23UIActivityIndicatorViewC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x0, symBinAddr: 0x13B97C, symSize: 0x8 } + - { offset: 0x1DC91A, size: 0x8, addend: 0x0, symName: '_$sSo23UIActivityIndicatorViewC8PenNavUIE15colorIdentifierSivsTo', symObjAddr: 0x8, symBinAddr: 0x13B984, symSize: 0x30 } + - { offset: 0x1DC952, size: 0x8, addend: 0x0, symName: '_$sSo23UIActivityIndicatorViewC8PenNavUIE15colorIdentifierSivs', symObjAddr: 0x38, symBinAddr: 0x13B9B4, symSize: 0x110 } + - { offset: 0x1DD755, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10makeBounds3svg4auto3forAA9LayerTreeO4RectVAA3DOMO3SVGC_AkC7VariantOtKF', symObjAddr: 0x1F58, symBinAddr: 0x13D9D8, symSize: 0x21C } + - { offset: 0x1DDA62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantV11appendPaths33_8F409FCBEB799BD4B2CB8F30218B4645LL_4fromySayAA0D8RendererV10SymbolPathVG_AA9LayerTreeO4RectVtF', symObjAddr: 0x2174, symBinAddr: 0x13DBF4, symSize: 0x7C4 } + - { offset: 0x1DE78C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV14getSymbolPaths3for3ctmSayAC0G4PathVGAA9LayerTreeO0L0C_AK9TransformO6MatrixVtFZ', symObjAddr: 0x2938, symBinAddr: 0x13E3B8, symSize: 0xAD4 } + - { offset: 0x1DF3F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwxx', symObjAddr: 0x35E8, symBinAddr: 0x13EFEC, symSize: 0x28 } + - { offset: 0x1DF40A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwcp', symObjAddr: 0x3610, symBinAddr: 0x13F014, symSize: 0xB4 } + - { offset: 0x1DF41E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwca', symObjAddr: 0x36C4, symBinAddr: 0x13F0C8, symSize: 0x13C } + - { offset: 0x1DF432, size: 0x8, addend: 0x0, symName: ___swift_memcpy240_8, symObjAddr: 0x3800, symBinAddr: 0x13F204, symSize: 0x44 } + - { offset: 0x1DF446, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwta', symObjAddr: 0x3844, symBinAddr: 0x13F248, symSize: 0x114 } + - { offset: 0x1DF45A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwet', symObjAddr: 0x3958, symBinAddr: 0x13F35C, symSize: 0x48 } + - { offset: 0x1DF46E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwst', symObjAddr: 0x39A0, symBinAddr: 0x13F3A4, symSize: 0x7C } + - { offset: 0x1DF482, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVMa', symObjAddr: 0x3A1C, symBinAddr: 0x13F420, symSize: 0x10 } + - { offset: 0x1DF753, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVWOc', symObjAddr: 0x473C, symBinAddr: 0x1400EC, symSize: 0x34 } + - { offset: 0x1DF76E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVWOh', symObjAddr: 0x47A0, symBinAddr: 0x140120, symSize: 0x2C } + - { offset: 0x1DF782, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorVAEsAdAWl', symObjAddr: 0x47CC, symBinAddr: 0x14014C, symSize: 0x40 } + - { offset: 0x1DF796, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV11printInsets3top4left6bottom5right7variantySd_S3dAC7VariantOtFZTf4nnnnnd_n', symObjAddr: 0x480C, symBinAddr: 0x14018C, symSize: 0x3E8 } + - { offset: 0x1DFA5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVSgWOh', symObjAddr: 0x4D08, symBinAddr: 0x140670, symSize: 0x40 } + - { offset: 0x1DFA70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVWOc', symObjAddr: 0x4E14, symBinAddr: 0x1406B0, symSize: 0x34 } + - { offset: 0x1DFA84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ContainerError33_8F409FCBEB799BD4B2CB8F30218B4645LLOADs0E0AAWl', symObjAddr: 0x4E48, symBinAddr: 0x1406E4, symSize: 0x40 } + - { offset: 0x1DFA98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10SymbolPathVwxx', symObjAddr: 0x4F9C, symBinAddr: 0x140728, symSize: 0x28 } + - { offset: 0x1DFAAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10SymbolPathVwca', symObjAddr: 0x5000, symBinAddr: 0x14078C, symSize: 0x64 } + - { offset: 0x1DFAC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10SymbolPathVwta', symObjAddr: 0x5078, symBinAddr: 0x1407F0, symSize: 0x44 } + - { offset: 0x1DFAD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10SymbolPathVMa', symObjAddr: 0x5144, symBinAddr: 0x140834, symSize: 0x10 } + - { offset: 0x1DFAE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ContainerError33_8F409FCBEB799BD4B2CB8F30218B4645LLOMa', symObjAddr: 0x525C, symBinAddr: 0x140844, symSize: 0x10 } + - { offset: 0x1DFAFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorVwet', symObjAddr: 0x52AC, symBinAddr: 0x140854, symSize: 0x5C } + - { offset: 0x1DFB10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorVwst', symObjAddr: 0x5308, symBinAddr: 0x1408B0, symSize: 0x50 } + - { offset: 0x1DFB24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorVMa', symObjAddr: 0x5358, symBinAddr: 0x140900, symSize: 0x10 } + - { offset: 0x1DFB38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwxx', symObjAddr: 0x5368, symBinAddr: 0x140910, symSize: 0x68 } + - { offset: 0x1DFB4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwcp', symObjAddr: 0x53D0, symBinAddr: 0x140978, symSize: 0xB4 } + - { offset: 0x1DFB60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwca', symObjAddr: 0x5484, symBinAddr: 0x140A2C, symSize: 0x11C } + - { offset: 0x1DFB74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwta', symObjAddr: 0x55BC, symBinAddr: 0x140B48, symSize: 0x9C } + - { offset: 0x1DFB88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwet', symObjAddr: 0x5658, symBinAddr: 0x140BE4, symSize: 0x48 } + - { offset: 0x1DFB9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwst', symObjAddr: 0x56A0, symBinAddr: 0x140C2C, symSize: 0x54 } + - { offset: 0x1DFBB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVMa', symObjAddr: 0x56F4, symBinAddr: 0x140C80, symSize: 0x10 } + - { offset: 0x1DFBC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AAsADPWb', symObjAddr: 0x5704, symBinAddr: 0x140C90, symSize: 0x4 } + - { offset: 0x1DFBD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwxx', symObjAddr: 0x570C, symBinAddr: 0x140C98, symSize: 0x30 } + - { offset: 0x1DFBEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwca', symObjAddr: 0x5788, symBinAddr: 0x140D14, symSize: 0x74 } + - { offset: 0x1DFC00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwta', symObjAddr: 0x57FC, symBinAddr: 0x140D88, symSize: 0x4C } + - { offset: 0x1DFC14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwet', symObjAddr: 0x5848, symBinAddr: 0x140DD4, symSize: 0x48 } + - { offset: 0x1DFC28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwst', symObjAddr: 0x5890, symBinAddr: 0x140E1C, symSize: 0x40 } + - { offset: 0x1DFC3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVMa', symObjAddr: 0x58D0, symBinAddr: 0x140E5C, symSize: 0x10 } + - { offset: 0x1DFC50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV8ContentsVMa', symObjAddr: 0x58E0, symBinAddr: 0x140E6C, symSize: 0x10 } + - { offset: 0x1DFC64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV5GuideVMa', symObjAddr: 0x58F0, symBinAddr: 0x140E7C, symSize: 0x10 } + - { offset: 0x1E01DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV7options6insets0G10Ultralight0G5Black9precisionAcA3SVGC7OptionsV_AA11CommandLineO6InsetsVA2PSitcfC', symObjAddr: 0x0, symBinAddr: 0x13BAC4, symSize: 0x168 } + - { offset: 0x1E02AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AafGP13failureReasonSSSgvgTW', symObjAddr: 0x3438, symBinAddr: 0x13EEB8, symSize: 0x4 } + - { offset: 0x1E02C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AafGP18recoverySuggestionSSSgvgTW', symObjAddr: 0x343C, symBinAddr: 0x13EEBC, symSize: 0x4 } + - { offset: 0x1E02E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AafGP10helpAnchorSSSgvgTW', symObjAddr: 0x3440, symBinAddr: 0x13EEC0, symSize: 0x4 } + - { offset: 0x1E0360, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV6render7regular10ultralight5blackSS10Foundation3URLV_AJSgAKtKF', symObjAddr: 0x168, symBinAddr: 0x13BC2C, symSize: 0x4E0 } + - { offset: 0x1E0648, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV6render7default10ultralight5blackSSAA3DOMO3SVGC_AKSgALtKF', symObjAddr: 0x68C, symBinAddr: 0x13C10C, symSize: 0x137C } + - { offset: 0x1E274C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV20makeSymbolStyleSheet4fromAA3DOMO0hI0VAI_tF', symObjAddr: 0x1A08, symBinAddr: 0x13D488, symSize: 0x550 } + - { offset: 0x1E2B32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AafGP16errorDescriptionSSSgvgTW', symObjAddr: 0x340C, symBinAddr: 0x13EE8C, symSize: 0x2C } + - { offset: 0x1E2B46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV5GuideV1xSfvs', symObjAddr: 0x3444, symBinAddr: 0x13EEC4, symSize: 0x128 } + - { offset: 0x1E2C71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV20containsAcceptedNameySbSSSgFZTf4nd_n', symObjAddr: 0x3A80, symBinAddr: 0x13F430, symSize: 0x16C } + - { offset: 0x1E2CEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantV3svg4kindAeA3DOMO3SVGC_SStKcfCTf4nnd_n', symObjAddr: 0x3BEC, symBinAddr: 0x13F59C, symSize: 0x9B4 } + - { offset: 0x1E375D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV3svgAcA3DOMO3SVGC_tKcfCTf4nd_n', symObjAddr: 0x45A0, symBinAddr: 0x13FF50, symSize: 0x19C } + - { offset: 0x1E37D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantV6boundsAA9LayerTreeO4RectVvgTf4x_n', symObjAddr: 0x4BF4, symBinAddr: 0x140574, symSize: 0xFC } + - { offset: 0x1E3C8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwxx', symObjAddr: 0x2C, symBinAddr: 0x140EA4, symSize: 0x8 } + - { offset: 0x1E3CA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwcp', symObjAddr: 0x34, symBinAddr: 0x140EAC, symSize: 0xA4 } + - { offset: 0x1E3CB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwca', symObjAddr: 0xD8, symBinAddr: 0x140F50, symSize: 0xCC } + - { offset: 0x1E3CCB, size: 0x8, addend: 0x0, symName: ___swift_memcpy137_8, symObjAddr: 0x1A4, symBinAddr: 0x14101C, symSize: 0x34 } + - { offset: 0x1E3CDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwta', symObjAddr: 0x1D8, symBinAddr: 0x141050, symSize: 0xAC } + - { offset: 0x1E3CF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwet', symObjAddr: 0x284, symBinAddr: 0x1410FC, symSize: 0x5C } + - { offset: 0x1E3D07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwst', symObjAddr: 0x2E0, symBinAddr: 0x141158, symSize: 0x78 } + - { offset: 0x1E3D1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVMa', symObjAddr: 0x358, symBinAddr: 0x1411D0, symSize: 0x10 } + - { offset: 0x1E3D2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVwca', symObjAddr: 0x3A4, symBinAddr: 0x141214, symSize: 0x40 } + - { offset: 0x1E3D43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVwta', symObjAddr: 0x3F0, symBinAddr: 0x141254, symSize: 0x38 } + - { offset: 0x1E3D57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVMa', symObjAddr: 0x4D4, symBinAddr: 0x14128C, symSize: 0x10 } + - { offset: 0x1E4132, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs0I3KeyAAWl', symObjAddr: 0xFFC, symBinAddr: 0x141B98, symSize: 0x40 } + - { offset: 0x1E4146, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVACSeAAWl', symObjAddr: 0x10A4, symBinAddr: 0x141BD8, symSize: 0x40 } + - { offset: 0x1E415A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVACSEAAWl', symObjAddr: 0x114C, symBinAddr: 0x141C80, symSize: 0x40 } + - { offset: 0x1E416E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs0F3KeyAAWl', symObjAddr: 0x1C54, symBinAddr: 0x142788, symSize: 0x40 } + - { offset: 0x1E4190, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOMa', symObjAddr: 0x1F08, symBinAddr: 0x142808, symSize: 0x10 } + - { offset: 0x1E41A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOMa', symObjAddr: 0x2070, symBinAddr: 0x142818, symSize: 0x10 } + - { offset: 0x1E41B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOSHAASQWb', symObjAddr: 0x2080, symBinAddr: 0x142828, symSize: 0x4 } + - { offset: 0x1E41CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFSQAAWl', symObjAddr: 0x2084, symBinAddr: 0x14282C, symSize: 0x40 } + - { offset: 0x1E41E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOSHAASQWb', symObjAddr: 0x20C4, symBinAddr: 0x14286C, symSize: 0x4 } + - { offset: 0x1E41F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFSQAAWl', symObjAddr: 0x20C8, symBinAddr: 0x142870, symSize: 0x40 } + - { offset: 0x1E4208, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2108, symBinAddr: 0x1428B0, symSize: 0x4 } + - { offset: 0x1E421C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x210C, symBinAddr: 0x1428B4, symSize: 0x40 } + - { offset: 0x1E4230, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x214C, symBinAddr: 0x1428F4, symSize: 0x4 } + - { offset: 0x1E4244, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x2150, symBinAddr: 0x1428F8, symSize: 0x40 } + - { offset: 0x1E4258, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0I3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2190, symBinAddr: 0x142938, symSize: 0x4 } + - { offset: 0x1E426C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2194, symBinAddr: 0x14293C, symSize: 0x40 } + - { offset: 0x1E4280, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0I3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x21D4, symBinAddr: 0x14297C, symSize: 0x4 } + - { offset: 0x1E4294, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x21D8, symBinAddr: 0x142980, symSize: 0x40 } + - { offset: 0x1E42D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x80C, symBinAddr: 0x1414E8, symSize: 0x28 } + - { offset: 0x1E42F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x834, symBinAddr: 0x141510, symSize: 0x28 } + - { offset: 0x1E4324, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0xD5C, symBinAddr: 0x141960, symSize: 0x28 } + - { offset: 0x1E4340, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0xD84, symBinAddr: 0x141988, symSize: 0x28 } + - { offset: 0x1E435D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV6encode2toys7Encoder_p_tKF', symObjAddr: 0x4E4, symBinAddr: 0x14129C, symSize: 0x148 } + - { offset: 0x1E43B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0I3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x6F0, symBinAddr: 0x1413E4, symSize: 0x30 } + - { offset: 0x1E43FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0I3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x720, symBinAddr: 0x141414, symSize: 0xD4 } + - { offset: 0x1E447D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x85C, symBinAddr: 0x141538, symSize: 0x30 } + - { offset: 0x1E44A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x88C, symBinAddr: 0x141568, symSize: 0x1C } + - { offset: 0x1E44BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLO11stringValueSSvg', symObjAddr: 0x8A8, symBinAddr: 0x141584, symSize: 0x128 } + - { offset: 0x1E44F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV6encode2toys7Encoder_p_tKF', symObjAddr: 0x9D0, symBinAddr: 0x1416AC, symSize: 0x288 } + - { offset: 0x1E4533, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0xD18, symBinAddr: 0x141934, symSize: 0x8 } + - { offset: 0x1E454E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0xD20, symBinAddr: 0x14193C, symSize: 0x24 } + - { offset: 0x1E458A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xDAC, symBinAddr: 0x1419B0, symSize: 0x58 } + - { offset: 0x1E45B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xE04, symBinAddr: 0x141A08, symSize: 0x14 } + - { offset: 0x1E45C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0xE18, symBinAddr: 0x141A1C, symSize: 0x17C } + - { offset: 0x1E45EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x118C, symBinAddr: 0x141CC0, symSize: 0x318 } + - { offset: 0x1E47AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x14A4, symBinAddr: 0x141FD8, symSize: 0x7B0 } + - { offset: 0x1E4B7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOMa', symObjAddr: 0xE8, symBinAddr: 0x1429C4, symSize: 0x10 } + - { offset: 0x1E4B8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixV12concatenatedyA2GF', symObjAddr: 0xF8, symBinAddr: 0x1429D4, symSize: 0x60 } + - { offset: 0x1E4BCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixV12concatenatedyA2GF', symObjAddr: 0xF8, symBinAddr: 0x1429D4, symSize: 0x60 } + - { offset: 0x1E4D87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSHAASQWb', symObjAddr: 0x48C, symBinAddr: 0x142D68, symSize: 0x4 } + - { offset: 0x1E4D9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOAESQAAWl', symObjAddr: 0x490, symBinAddr: 0x142D6C, symSize: 0x40 } + - { offset: 0x1E4DAF, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_4, symObjAddr: 0x664, symBinAddr: 0x142F40, symSize: 0x14 } + - { offset: 0x1E4DC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVwet', symObjAddr: 0x678, symBinAddr: 0x142F54, symSize: 0x20 } + - { offset: 0x1E4DD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVwst', symObjAddr: 0x698, symBinAddr: 0x142F74, symSize: 0x2C } + - { offset: 0x1E4DEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVMa', symObjAddr: 0x6C4, symBinAddr: 0x142FA0, symSize: 0x10 } + - { offset: 0x1E4DFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSHAASQWb', symObjAddr: 0x6D4, symBinAddr: 0x142FB0, symSize: 0x4 } + - { offset: 0x1E4E13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVAGSQAAWl', symObjAddr: 0x6D8, symBinAddr: 0x142FB4, symSize: 0x40 } + - { offset: 0x1E4E68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x31C, symBinAddr: 0x142BF8, symSize: 0x38 } + - { offset: 0x1E4ED3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x40C, symBinAddr: 0x142CE8, symSize: 0x5C } + - { offset: 0x1E4F11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixV4hash4intoys6HasherVz_tF', symObjAddr: 0x158, symBinAddr: 0x142A34, symSize: 0xA4 } + - { offset: 0x1E504D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO4hash4intoys6HasherVz_tF', symObjAddr: 0x1FC, symBinAddr: 0x142AD8, symSize: 0xE0 } + - { offset: 0x1E51CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSHAASH9hashValueSivgTW', symObjAddr: 0x2DC, symBinAddr: 0x142BB8, symSize: 0x3C } + - { offset: 0x1E524A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x318, symBinAddr: 0x142BF4, symSize: 0x4 } + - { offset: 0x1E5286, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x354, symBinAddr: 0x142C30, symSize: 0x48 } + - { offset: 0x1E52CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSHAASH9hashValueSivgTW', symObjAddr: 0x39C, symBinAddr: 0x142C78, symSize: 0x60 } + - { offset: 0x1E534C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x3FC, symBinAddr: 0x142CD8, symSize: 0x10 } + - { offset: 0x1E5373, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x468, symBinAddr: 0x142D44, symSize: 0x24 } + - { offset: 0x1E539C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixV2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x4D0, symBinAddr: 0x142DAC, symSize: 0x6C } + - { offset: 0x1E53CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x53C, symBinAddr: 0x142E18, symSize: 0x128 } + - { offset: 0x1E57BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOMa', symObjAddr: 0x168, symBinAddr: 0x142FF4, symSize: 0x10 } + - { offset: 0x1E57D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x178, symBinAddr: 0x143004, symSize: 0x4 } + - { offset: 0x1E57E5, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI20FloorSelectorSectionOGSayxGSlsWl', symObjAddr: 0x17C, symBinAddr: 0x143008, symSize: 0x48 } + - { offset: 0x1E5874, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOSHAASQWb', symObjAddr: 0x334, symBinAddr: 0x1430A8, symSize: 0x4 } + - { offset: 0x1E5888, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOACSQAAWl', symObjAddr: 0x338, symBinAddr: 0x1430AC, symSize: 0x40 } + - { offset: 0x1E58D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x2D0, symBinAddr: 0x143050, symSize: 0x20 } + - { offset: 0x1E590F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOs12CaseIterableAAsADP8allCases03AllJ0QzvgZTW', symObjAddr: 0x2FC, symBinAddr: 0x143070, symSize: 0x38 } + - { offset: 0x1E5CD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC18addToFavoritesViewAA06HapticJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1430EC, symSize: 0x10 } + - { offset: 0x1E610E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellCfETo', symObjAddr: 0xEF0, symBinAddr: 0x143FDC, symSize: 0x98 } + - { offset: 0x1E613D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellCMa', symObjAddr: 0xF88, symBinAddr: 0x144074, symSize: 0x20 } + - { offset: 0x1E6151, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC05setUpE03foryAA11PoiViewDataCSg_tFyycfU_TA', symObjAddr: 0x1064, symBinAddr: 0x1440B8, symSize: 0x8 } + - { offset: 0x1E62CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC18addToFavoritesViewAA06HapticJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1430EC, symSize: 0x10 } + - { offset: 0x1E62E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC18addToFavoritesViewAA06HapticJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1430EC, symSize: 0x10 } + - { offset: 0x1E632C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC18addToFavoritesViewAA06HapticJ0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1430FC, symSize: 0x34 } + - { offset: 0x1E640A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC19addToFavoritesLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x143130, symSize: 0x10 } + - { offset: 0x1E6422, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC19addToFavoritesLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x143130, symSize: 0x10 } + - { offset: 0x1E6462, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC19addToFavoritesLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x143140, symSize: 0x34 } + - { offset: 0x1E64B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC23addToFavoritesImageViewSo07UIImageK0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x143174, symSize: 0x10 } + - { offset: 0x1E64C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC23addToFavoritesImageViewSo07UIImageK0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x143174, symSize: 0x10 } + - { offset: 0x1E6509, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC23addToFavoritesImageViewSo07UIImageK0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x143184, symSize: 0x34 } + - { offset: 0x1E6558, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC15reportIssueViewAA06HapticI0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x1431B8, symSize: 0x20 } + - { offset: 0x1E65AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC15reportIssueViewAA06HapticI0CSgvsTo', symObjAddr: 0xEC, symBinAddr: 0x1431D8, symSize: 0x14 } + - { offset: 0x1E65FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC20reportIssueStackViewSo07UIStackJ0CSgvgTo', symObjAddr: 0x100, symBinAddr: 0x1431EC, symSize: 0x20 } + - { offset: 0x1E6658, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC20reportIssueStackViewSo07UIStackJ0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x14320C, symSize: 0x14 } + - { offset: 0x1E66A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC13seperatorViewAA09SeparatorH0CSgvgTo', symObjAddr: 0x134, symBinAddr: 0x143220, symSize: 0x20 } + - { offset: 0x1E6703, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC13seperatorViewAA09SeparatorH0CSgvsTo', symObjAddr: 0x154, symBinAddr: 0x143240, symSize: 0x14 } + - { offset: 0x1E6754, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x168, symBinAddr: 0x143254, symSize: 0x70 } + - { offset: 0x1E679C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC15prepareForReuseyyFTo', symObjAddr: 0x1D8, symBinAddr: 0x1432C4, symSize: 0x84 } + - { offset: 0x1E6889, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC05setUpE03foryAA11PoiViewDataCSg_tF', symObjAddr: 0x25C, symBinAddr: 0x143348, symSize: 0x55C } + - { offset: 0x1E6B1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC05setUpE03foryAA11PoiViewDataCSg_tFyycfU_', symObjAddr: 0x7B8, symBinAddr: 0x1438A4, symSize: 0x160 } + - { offset: 0x1E6CAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC013setupFavoriteC0yyF', symObjAddr: 0x918, symBinAddr: 0x143A04, symSize: 0x16C } + - { offset: 0x1E6E0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC16setupReportIssue33_9AB79F14116E50BD905211A038D22488LLyyF', symObjAddr: 0xA84, symBinAddr: 0x143B70, symSize: 0x104 } + - { offset: 0x1E6EB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC16setupReportIssue33_9AB79F14116E50BD905211A038D22488LLyyFyycfU_', symObjAddr: 0xB88, symBinAddr: 0x143C74, symSize: 0xDC } + - { offset: 0x1E6EDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0xC64, symBinAddr: 0x143D50, symSize: 0x108 } + - { offset: 0x1E6F20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xD6C, symBinAddr: 0x143E58, symSize: 0x48 } + - { offset: 0x1E6F58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xDB4, symBinAddr: 0x143EA0, symSize: 0xE4 } + - { offset: 0x1E6F8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xE98, symBinAddr: 0x143F84, symSize: 0x28 } + - { offset: 0x1E6F9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellCfD', symObjAddr: 0xEC0, symBinAddr: 0x143FAC, symSize: 0x30 } + - { offset: 0x1E7346, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionViewSo012UICollectionH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1440C0, symSize: 0x10 } + - { offset: 0x1E766C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellCfETo', symObjAddr: 0x7A8, symBinAddr: 0x144868, symSize: 0x6C } + - { offset: 0x1E769B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellCMa', symObjAddr: 0x814, symBinAddr: 0x1448D4, symSize: 0x20 } + - { offset: 0x1E76D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionH0C_SitFTo', symObjAddr: 0x834, symBinAddr: 0x1448F4, symSize: 0x14 } + - { offset: 0x1E76F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionH0C_SitFTo', symObjAddr: 0x834, symBinAddr: 0x1448F4, symSize: 0x14 } + - { offset: 0x1E771E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionH0C_SitFTo', symObjAddr: 0x834, symBinAddr: 0x1448F4, symSize: 0x14 } + - { offset: 0x1E77E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionView_13cellForItemAtSo012UICollectionhF0CSo0mH0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x848, symBinAddr: 0x144908, symSize: 0x114 } + - { offset: 0x1E7889, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC08validateE0yyFySSXEfU_ySo7UIImageCSgcfU_TA', symObjAddr: 0x9AC, symBinAddr: 0x144A6C, symSize: 0xC } + - { offset: 0x1E79DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionViewSo012UICollectionH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1440C0, symSize: 0x10 } + - { offset: 0x1E79F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionViewSo012UICollectionH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1440C0, symSize: 0x10 } + - { offset: 0x1E7A3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionViewSo012UICollectionH0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1440D0, symSize: 0x34 } + - { offset: 0x1E7A89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC12awakeFromNibyyF', symObjAddr: 0x44, symBinAddr: 0x144104, symSize: 0x11C } + - { offset: 0x1E7B36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC12awakeFromNibyyFTo', symObjAddr: 0x160, symBinAddr: 0x144220, symSize: 0x28 } + - { offset: 0x1E7BAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC15prepareForReuseyyFTo', symObjAddr: 0x188, symBinAddr: 0x144248, symSize: 0xD4 } + - { offset: 0x1E7C81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC08validateE0yyF', symObjAddr: 0x25C, symBinAddr: 0x14431C, symSize: 0x13C } + - { offset: 0x1E7E4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC08validateE0yyFySSXEfU_ySo7UIImageCSgcfU_', symObjAddr: 0x398, symBinAddr: 0x144458, symSize: 0x1F4 } + - { offset: 0x1E81BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x58C, symBinAddr: 0x14464C, symSize: 0xCC } + - { offset: 0x1E81FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x658, symBinAddr: 0x144718, symSize: 0x48 } + - { offset: 0x1E8236, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x6A0, symBinAddr: 0x144760, symSize: 0xB0 } + - { offset: 0x1E8269, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x750, symBinAddr: 0x144810, symSize: 0x28 } + - { offset: 0x1E827D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellCfD', symObjAddr: 0x778, symBinAddr: 0x144838, symSize: 0x30 } + - { offset: 0x1E8641, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x144A78, symSize: 0x38 } + - { offset: 0x1E879B, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV2eeoiySbAC_ACtFZSbSWXEfU_', symObjAddr: 0x38, symBinAddr: 0x144AB0, symSize: 0x22C } + - { offset: 0x1E88DB, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15withUnsafeBytesyxxSWKXEKlFSb_Tgq5015$s10Foundation4B26V2eeoiySbAC_ACtFZSbSWXEfU_ACTf1cn_n', symObjAddr: 0x264, symBinAddr: 0x144CDC, symSize: 0x18C } + - { offset: 0x1E897D, size: 0x8, addend: 0x0, symName: '_$s10Foundation13__DataStorageC15withUnsafeBytes2in5applyxSnySiG_xSWKXEtKlFSb_Tgq5015$s10Foundation4B26V2eeoiySbAC_ACtFZSbSWXEfU_AA0B0VTf1ncn_nTf4nng_n', symObjAddr: 0x3F0, symBinAddr: 0x144E68, symSize: 0xB4 } + - { offset: 0x1E89B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOWOy', symObjAddr: 0x860, symBinAddr: 0x145258, symSize: 0x8 } + - { offset: 0x1E89C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwxx', symObjAddr: 0x868, symBinAddr: 0x145260, symSize: 0xC } + - { offset: 0x1E89DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOWOe', symObjAddr: 0x874, symBinAddr: 0x14526C, symSize: 0x8 } + - { offset: 0x1E89EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwca', symObjAddr: 0x87C, symBinAddr: 0x145274, symSize: 0x44 } + - { offset: 0x1E8A03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwta', symObjAddr: 0x8CC, symBinAddr: 0x1452B8, symSize: 0x38 } + - { offset: 0x1E8A17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwet', symObjAddr: 0x904, symBinAddr: 0x1452F0, symSize: 0x54 } + - { offset: 0x1E8A2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwst', symObjAddr: 0x958, symBinAddr: 0x145344, symSize: 0x48 } + - { offset: 0x1E8A3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwug', symObjAddr: 0x9A0, symBinAddr: 0x14538C, symSize: 0xC } + - { offset: 0x1E8A53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwup', symObjAddr: 0x9AC, symBinAddr: 0x145398, symSize: 0x10 } + - { offset: 0x1E8A67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwui', symObjAddr: 0x9BC, symBinAddr: 0x1453A8, symSize: 0x18 } + - { offset: 0x1E8A7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOMa', symObjAddr: 0x9D4, symBinAddr: 0x1453C0, symSize: 0x10 } + - { offset: 0x1E8ABD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x144A78, symSize: 0x38 } + - { offset: 0x1E8B14, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x4A4, symBinAddr: 0x144F1C, symSize: 0x160 } + - { offset: 0x1E8B3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageO8mimeType4dataAESgSS_10Foundation4DataVtcfCTf4nnd_n', symObjAddr: 0x684, symBinAddr: 0x14507C, symSize: 0x1A0 } + - { offset: 0x1E901D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleCMa', symObjAddr: 0xC4, symBinAddr: 0x14543C, symSize: 0x20 } + - { offset: 0x1E909A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x5C, symBinAddr: 0x1453D4, symSize: 0x68 } + - { offset: 0x1E9104, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xE4, symBinAddr: 0x14545C, symSize: 0x54 } + - { offset: 0x1E914F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleCfD', symObjAddr: 0x138, symBinAddr: 0x1454B0, symSize: 0x30 } + - { offset: 0x1E94E5, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE07dismisscD12Notification_WZ', symObjAddr: 0x0, symBinAddr: 0x1454E0, symSize: 0x34 } + - { offset: 0x1E9509, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE07dismisscD12NotificationABvpZ', symObjAddr: 0x51A0, symBinAddr: 0x384C68, symSize: 0x0 } + - { offset: 0x1E9523, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE30oneSecondDidElapseNotificationABvpZ', symObjAddr: 0x51A8, symBinAddr: 0x384C70, symSize: 0x0 } + - { offset: 0x1E953D, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37networkInterfaceDidChangeNotificationABvpZ', symObjAddr: 0x51B0, symBinAddr: 0x384C78, symSize: 0x0 } + - { offset: 0x1E9557, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE34locationStateDidChangeNotificationABvpZ', symObjAddr: 0x51B8, symBinAddr: 0x384C80, symSize: 0x0 } + - { offset: 0x1E9571, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE35bluetoothStateDidChangeNotificationABvpZ', symObjAddr: 0x51C0, symBinAddr: 0x384C88, symSize: 0x0 } + - { offset: 0x1E958B, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37locationAccuracyDidChangeNotificationABvpZ', symObjAddr: 0x51C8, symBinAddr: 0x384C90, symSize: 0x0 } + - { offset: 0x1E95A5, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37connectionStatusDidChangeNotificationABvpZ', symObjAddr: 0x51D0, symBinAddr: 0x384C98, symSize: 0x0 } + - { offset: 0x1E95BF, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE43directionsAvailabilityDidChangeNotificationABvpZ', symObjAddr: 0x51D8, symBinAddr: 0x384CA0, symSize: 0x0 } + - { offset: 0x1E95D9, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE43locationDetectionStateDidChangeNotificationABvpZ', symObjAddr: 0x51E0, symBinAddr: 0x384CA8, symSize: 0x0 } + - { offset: 0x1E95E7, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE07dismisscD12Notification_WZ', symObjAddr: 0x0, symBinAddr: 0x1454E0, symSize: 0x34 } + - { offset: 0x1E9617, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE30oneSecondDidElapseNotification_WZ', symObjAddr: 0x34, symBinAddr: 0x145514, symSize: 0x34 } + - { offset: 0x1E9647, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37networkInterfaceDidChangeNotification_WZ', symObjAddr: 0x68, symBinAddr: 0x145548, symSize: 0x34 } + - { offset: 0x1E9677, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE34locationStateDidChangeNotification_WZ', symObjAddr: 0x9C, symBinAddr: 0x14557C, symSize: 0x34 } + - { offset: 0x1E96A7, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE35bluetoothStateDidChangeNotification_WZ', symObjAddr: 0xD0, symBinAddr: 0x1455B0, symSize: 0x34 } + - { offset: 0x1E96D7, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37locationAccuracyDidChangeNotification_WZ', symObjAddr: 0x104, symBinAddr: 0x1455E4, symSize: 0x34 } + - { offset: 0x1E9707, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37connectionStatusDidChangeNotification_WZ', symObjAddr: 0x138, symBinAddr: 0x145618, symSize: 0x34 } + - { offset: 0x1E9737, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE43directionsAvailabilityDidChangeNotification_WZ', symObjAddr: 0x16C, symBinAddr: 0x14564C, symSize: 0x34 } + - { offset: 0x1E9767, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE43locationDetectionStateDidChangeNotification_WZ', symObjAddr: 0x1A0, symBinAddr: 0x145680, symSize: 0x34 } + - { offset: 0x1E9B6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0So012UICollectionE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1456B4, symSize: 0x20 } + - { offset: 0x1EA0C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCfE', symObjAddr: 0x728, symBinAddr: 0x145DDC, symSize: 0x70 } + - { offset: 0x1EA0EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCfETo', symObjAddr: 0x7C8, symBinAddr: 0x145E7C, symSize: 0x7C } + - { offset: 0x1EA11E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCMa', symObjAddr: 0x844, symBinAddr: 0x145EF8, symSize: 0x20 } + - { offset: 0x1EA132, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC16numberOfSections2inSiSo012UICollectionE0C_tFTo', symObjAddr: 0x864, symBinAddr: 0x145F18, symSize: 0x8 } + - { offset: 0x1EA18E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_22numberOfItemsInSectionSiSo012UICollectionE0C_SitFTo', symObjAddr: 0x86C, symBinAddr: 0x145F20, symSize: 0x14 } + - { offset: 0x1EA1AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_22numberOfItemsInSectionSiSo012UICollectionE0C_SitFTo', symObjAddr: 0x86C, symBinAddr: 0x145F20, symSize: 0x14 } + - { offset: 0x1EA1D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_22numberOfItemsInSectionSiSo012UICollectionE0C_SitFTo', symObjAddr: 0x86C, symBinAddr: 0x145F20, symSize: 0x14 } + - { offset: 0x1EA2E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_13cellForItemAtSo012UICollectionE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0x880, symBinAddr: 0x145F34, symSize: 0x3A8 } + - { offset: 0x1EA751, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_13cellForItemAtSo012UICollectionE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xC28, symBinAddr: 0x1462DC, symSize: 0xB8 } + - { offset: 0x1EA77C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_15didSelectItemAtySo012UICollectionE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xCE0, symBinAddr: 0x146394, symSize: 0xAC } + - { offset: 0x1EA7AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0xE64, symBinAddr: 0x146440, symSize: 0x34 } + - { offset: 0x1EA7E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0xE98, symBinAddr: 0x146474, symSize: 0x24 } + - { offset: 0x1EA85F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC10setupPanelyyF', symObjAddr: 0xEBC, symBinAddr: 0x146498, symSize: 0x228 } + - { offset: 0x1EAAA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC10setupPanelyyFTo', symObjAddr: 0x10E4, symBinAddr: 0x1466C0, symSize: 0x28 } + - { offset: 0x1EAAD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x110C, symBinAddr: 0x1466E8, symSize: 0x200 } + - { offset: 0x1EACB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x130C, symBinAddr: 0x1468E8, symSize: 0x50 } + - { offset: 0x1EACE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x135C, symBinAddr: 0x146938, symSize: 0x4 } + - { offset: 0x1EAD02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x135C, symBinAddr: 0x146938, symSize: 0x4 } + - { offset: 0x1EAD14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4ddn_n', symObjAddr: 0x1360, symBinAddr: 0x14693C, symSize: 0x1C0 } + - { offset: 0x1EAF5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_15didSelectItemAtySo012UICollectionE0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x1620, symBinAddr: 0x146BB8, symSize: 0x1E4 } + - { offset: 0x1EB2CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0So012UICollectionE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1456B4, symSize: 0x20 } + - { offset: 0x1EB32F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0So012UICollectionE0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x1456D4, symSize: 0x14 } + - { offset: 0x1EB380, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC09separatorE0So6UIViewCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x1456E8, symSize: 0x20 } + - { offset: 0x1EB3DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC09separatorE0So6UIViewCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x145708, symSize: 0x14 } + - { offset: 0x1EB42B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC8tagTitleSo7UILabelCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x14571C, symSize: 0x20 } + - { offset: 0x1EB485, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC8tagTitleSo7UILabelCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x14573C, symSize: 0x14 } + - { offset: 0x1EB566, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC11viewDidLoadyyF', symObjAddr: 0x9C, symBinAddr: 0x145750, symSize: 0x2B8 } + - { offset: 0x1EB756, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x354, symBinAddr: 0x145A08, symSize: 0x28 } + - { offset: 0x1EB7A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0x37C, symBinAddr: 0x145A30, symSize: 0x94 } + - { offset: 0x1EB80A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC11applyFilteryySo8UIButtonCFTo', symObjAddr: 0x410, symBinAddr: 0x145AC4, symSize: 0x4C } + - { offset: 0x1EB848, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC5closeyySo8UIButtonCFTo', symObjAddr: 0x45C, symBinAddr: 0x145B10, symSize: 0x38 } + - { offset: 0x1EB872, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x494, symBinAddr: 0x145B48, symSize: 0x118 } + - { offset: 0x1EB8B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x5AC, symBinAddr: 0x145C60, symSize: 0x60 } + - { offset: 0x1EB8FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x60C, symBinAddr: 0x145CC0, symSize: 0xF4 } + - { offset: 0x1EB92E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x700, symBinAddr: 0x145DB4, symSize: 0x28 } + - { offset: 0x1EB942, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCfD', symObjAddr: 0x798, symBinAddr: 0x145E4C, symSize: 0x30 } + - { offset: 0x1EBBD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC11applyFilteryySo8UIButtonCFTf4dn_n', symObjAddr: 0x1564, symBinAddr: 0x146AFC, symSize: 0xBC } + - { offset: 0x1EC002, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVMa', symObjAddr: 0x0, symBinAddr: 0x146D9C, symSize: 0x10 } + - { offset: 0x1EC07C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVMa', symObjAddr: 0x0, symBinAddr: 0x146D9C, symSize: 0x10 } + - { offset: 0x1EC09B, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVAcA0B8ProtocolAAWl', symObjAddr: 0x280, symBinAddr: 0x146FDC, symSize: 0x40 } + - { offset: 0x1EC0BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVs010TextOutputF0AAsADP5_lockyyFTW', symObjAddr: 0x10, symBinAddr: 0x146DAC, symSize: 0x4 } + - { offset: 0x1EC0D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVs010TextOutputF0AAsADP7_unlockyyFTW', symObjAddr: 0x14, symBinAddr: 0x146DB0, symSize: 0x4 } + - { offset: 0x1EC0F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVs010TextOutputF0AAsADP11_writeASCIIyySRys5UInt8VGFTW', symObjAddr: 0x1C, symBinAddr: 0x146DB8, symSize: 0x4 } + - { offset: 0x1EC11F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVs010TextOutputF0AAsADP5writeyySSFTW', symObjAddr: 0x18, symBinAddr: 0x146DB4, symSize: 0x4 } + - { offset: 0x1EC137, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVs010TextOutputF0AAsADP5writeyySSFTW', symObjAddr: 0x18, symBinAddr: 0x146DB4, symSize: 0x4 } + - { offset: 0x1EC160, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamV5writeyySSFTf4nd_n', symObjAddr: 0x20, symBinAddr: 0x146DBC, symSize: 0x220 } + - { offset: 0x1EC54C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC21tableHeightConstraintSo08NSLayoutK0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x14701C, symSize: 0x20 } + - { offset: 0x1EC8F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC09calculateF6HeightyyF', symObjAddr: 0x3A0, symBinAddr: 0x1473BC, symSize: 0x4BC } + - { offset: 0x1ECCA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellCfETo', symObjAddr: 0xB54, symBinAddr: 0x147B70, symSize: 0x6C } + - { offset: 0x1ECCD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellCMa', symObjAddr: 0xBC0, symBinAddr: 0x147BDC, symSize: 0x20 } + - { offset: 0x1ECCFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0xBE0, symBinAddr: 0x147BFC, symSize: 0x20 } + - { offset: 0x1ECD7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0_12cellForRowAtSo07UITablegH0CSo0nG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xC00, symBinAddr: 0x147C1C, symSize: 0x130 } + - { offset: 0x1ECE09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0_21numberOfRowsInSectionSiSo07UITableG0C_SitFTf4ddn_n', symObjAddr: 0xDA0, symBinAddr: 0x147D4C, symSize: 0x50 } + - { offset: 0x1ECE39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0_21numberOfRowsInSectionSiSo07UITableG0C_SitFTf4ddn_n', symObjAddr: 0xDA0, symBinAddr: 0x147D4C, symSize: 0x50 } + - { offset: 0x1ECF2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC12awakeFromNibyyFyycfU_TA', symObjAddr: 0xE54, symBinAddr: 0x147DC0, symSize: 0x8 } + - { offset: 0x1ED192, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC21tableHeightConstraintSo08NSLayoutK0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x14701C, symSize: 0x20 } + - { offset: 0x1ED1F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC21tableHeightConstraintSo08NSLayoutK0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x14703C, symSize: 0x14 } + - { offset: 0x1ED243, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0So07UITableG0CSgvgTo', symObjAddr: 0x34, symBinAddr: 0x147050, symSize: 0x20 } + - { offset: 0x1ED29D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0So07UITableG0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x147070, symSize: 0x14 } + - { offset: 0x1ED2EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC08showMoreG0AA06HapticG0CSgvgTo', symObjAddr: 0x68, symBinAddr: 0x147084, symSize: 0x20 } + - { offset: 0x1ED348, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC08showMoreG0AA06HapticG0CSgvsTo', symObjAddr: 0x88, symBinAddr: 0x1470A4, symSize: 0x14 } + - { offset: 0x1ED3D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC12awakeFromNibyyF', symObjAddr: 0x9C, symBinAddr: 0x1470B8, symSize: 0x130 } + - { offset: 0x1ED4A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC12awakeFromNibyyFyycfU_', symObjAddr: 0x1CC, symBinAddr: 0x1471E8, symSize: 0xE0 } + - { offset: 0x1ED5BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC12awakeFromNibyyFTo', symObjAddr: 0x2AC, symBinAddr: 0x1472C8, symSize: 0x28 } + - { offset: 0x1ED60E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC7setData4dataySayAA0D0VG_tF', symObjAddr: 0x2D4, symBinAddr: 0x1472F0, symSize: 0xCC } + - { offset: 0x1ED863, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0x85C, symBinAddr: 0x147878, symSize: 0x54 } + - { offset: 0x1ED8A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC5style15reuseIdentifierACSo07UITablegH5StyleV_SSSgtcfc', symObjAddr: 0x8B0, symBinAddr: 0x1478CC, symSize: 0x110 } + - { offset: 0x1ED8E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC5style15reuseIdentifierACSo07UITablegH5StyleV_SSSgtcfcTo', symObjAddr: 0x9C0, symBinAddr: 0x1479DC, symSize: 0x48 } + - { offset: 0x1ED91F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xA08, symBinAddr: 0x147A24, symSize: 0xF4 } + - { offset: 0x1ED952, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xAFC, symBinAddr: 0x147B18, symSize: 0x28 } + - { offset: 0x1ED966, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellCfD', symObjAddr: 0xB24, symBinAddr: 0x147B40, symSize: 0x30 } + - { offset: 0x1EDD55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC15_sharedInstance33_64A15AA8C9CFE359AAD8CEAC1C476F6DLLACSgvpZ', symObjAddr: 0x1CE0, symBinAddr: 0x368680, symSize: 0x0 } + - { offset: 0x1EDF61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageCMa', symObjAddr: 0xFCC, symBinAddr: 0x148D68, symSize: 0x20 } + - { offset: 0x1EDFCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV8getImage10completionyySo7UIImageCc_tFyAGSgcfU_TA', symObjAddr: 0x17E4, symBinAddr: 0x14953C, symSize: 0x8 } + - { offset: 0x1EDFDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctFyyYbcfU_TA', symObjAddr: 0x19A4, symBinAddr: 0x149630, symSize: 0x78 } + - { offset: 0x1EDFF3, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1A1C, symBinAddr: 0x1496A8, symSize: 0x10 } + - { offset: 0x1EE007, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1A2C, symBinAddr: 0x1496B8, symSize: 0x8 } + - { offset: 0x1EE01B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctFyyYbcfU_ytSgyXEfU0_TA', symObjAddr: 0x1B08, symBinAddr: 0x1496C0, symSize: 0x1C } + - { offset: 0x1EE02F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtFyyXEfU_TA', symObjAddr: 0x1C1C, symBinAddr: 0x14972C, symSize: 0x1C } + - { offset: 0x1EE043, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtFyyScMYccfU0_TA', symObjAddr: 0x1C64, symBinAddr: 0x149774, symSize: 0x8 } + - { offset: 0x1EE062, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageCSgIegg_ACytIegnr_TRTA', symObjAddr: 0x1C6C, symBinAddr: 0x14977C, symSize: 0x24 } + - { offset: 0x1EE330, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctFyyYbcfU_', symObjAddr: 0x2C, symBinAddr: 0x147DC8, symSize: 0x750 } + - { offset: 0x1EE4B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctFyyYbcfU_ytSgyXEfU0_', symObjAddr: 0x77C, symBinAddr: 0x148518, symSize: 0x370 } + - { offset: 0x1EE707, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtF', symObjAddr: 0xAEC, symBinAddr: 0x148888, symSize: 0x268 } + - { offset: 0x1EE78C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtFyyXEfU_', symObjAddr: 0xD54, symBinAddr: 0x148AF0, symSize: 0x18C } + - { offset: 0x1EE84D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtFyyScMYccfU0_', symObjAddr: 0xEE0, symBinAddr: 0x148C7C, symSize: 0xB8 } + - { offset: 0x1EE9DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageCfD', symObjAddr: 0xF98, symBinAddr: 0x148D34, symSize: 0x34 } + - { offset: 0x1EEA82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctF03$s8ab41UI10LiveObjectV8getImage10completionyySo7M14Cc_tFyAGSgcfU_AOIegg_Tf1nncn_nTf4nnng_n', symObjAddr: 0xFEC, symBinAddr: 0x148D88, symSize: 0x790 } + - { offset: 0x1EF02A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x1497BC, symSize: 0x68 } + - { offset: 0x1EF0BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCfE', symObjAddr: 0x68, symBinAddr: 0x149824, symSize: 0x34 } + - { offset: 0x1EF0EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCMU', symObjAddr: 0x100, symBinAddr: 0x1498BC, symSize: 0x8 } + - { offset: 0x1EF100, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCMa', symObjAddr: 0x108, symBinAddr: 0x1498C4, symSize: 0x38 } + - { offset: 0x1EF114, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCMr', symObjAddr: 0x140, symBinAddr: 0x1498FC, symSize: 0xA0 } + - { offset: 0x1EF128, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOMa', symObjAddr: 0x39C, symBinAddr: 0x14999C, symSize: 0x10 } + - { offset: 0x1EF13C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVwet', symObjAddr: 0x3C0, symBinAddr: 0x1499AC, symSize: 0x48 } + - { offset: 0x1EF150, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVwst', symObjAddr: 0x408, symBinAddr: 0x1499F4, symSize: 0x44 } + - { offset: 0x1EF164, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVMa', symObjAddr: 0x44C, symBinAddr: 0x149A38, symSize: 0x10 } + - { offset: 0x1EF187, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x45C, symBinAddr: 0x149A48, symSize: 0xC } + - { offset: 0x1EF241, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSHAASQWb', symObjAddr: 0x764, symBinAddr: 0x149D50, symSize: 0x4 } + - { offset: 0x1EF255, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOAGSQAAWl', symObjAddr: 0x768, symBinAddr: 0x149D54, symSize: 0x40 } + - { offset: 0x1EF269, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x7A8, symBinAddr: 0x149D94, symSize: 0x15C } + - { offset: 0x1EF2FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x468, symBinAddr: 0x149A54, symSize: 0xB4 } + - { offset: 0x1EF3B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSHAASH9hashValueSivgTW', symObjAddr: 0x51C, symBinAddr: 0x149B08, symSize: 0x90 } + - { offset: 0x1EF43B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5AC, symBinAddr: 0x149B98, symSize: 0x6C } + - { offset: 0x1EF479, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x618, symBinAddr: 0x149C04, symSize: 0x8C } + - { offset: 0x1EF509, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x1497BC, symSize: 0x68 } + - { offset: 0x1EF56E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCfD', symObjAddr: 0x9C, symBinAddr: 0x149858, symSize: 0x64 } + - { offset: 0x1EF5D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0x6A4, symBinAddr: 0x149C90, symSize: 0x70 } + - { offset: 0x1EF626, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0x714, symBinAddr: 0x149D00, symSize: 0x50 } + - { offset: 0x1EF9BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x149EF0, symSize: 0x10 } + - { offset: 0x1F019B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewCfETo', symObjAddr: 0xC04, symBinAddr: 0x14AAF4, symSize: 0xC8 } + - { offset: 0x1F01CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewCMa', symObjAddr: 0xCCC, symBinAddr: 0x14ABBC, symSize: 0x20 } + - { offset: 0x1F023C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x149EF0, symSize: 0x10 } + - { offset: 0x1F0254, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x149EF0, symSize: 0x10 } + - { offset: 0x1F029A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC07contentE0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x149F00, symSize: 0x34 } + - { offset: 0x1F02E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC16destinationLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x149F34, symSize: 0x10 } + - { offset: 0x1F0301, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC16destinationLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x149F34, symSize: 0x10 } + - { offset: 0x1F0341, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC16destinationLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x149F44, symSize: 0x34 } + - { offset: 0x1F0390, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC17destinationLetterSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x149F78, symSize: 0x10 } + - { offset: 0x1F03A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC17destinationLetterSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x149F78, symSize: 0x10 } + - { offset: 0x1F03E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC17destinationLetterSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x149F88, symSize: 0x34 } + - { offset: 0x1F0432, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC027currentInstructionContainerE0So6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x149FBC, symSize: 0x10 } + - { offset: 0x1F044A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC027currentInstructionContainerE0So6UIViewCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x149FBC, symSize: 0x10 } + - { offset: 0x1F0485, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC027currentInstructionContainerE0So6UIViewCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x149FCC, symSize: 0x34 } + - { offset: 0x1F04D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC23currentInstructionLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x14A000, symSize: 0x10 } + - { offset: 0x1F04EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC23currentInstructionLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x14A000, symSize: 0x10 } + - { offset: 0x1F0527, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC23currentInstructionLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x14A010, symSize: 0x34 } + - { offset: 0x1F0576, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC023currentInstructionImageE0So07UIImageE0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x14A044, symSize: 0x10 } + - { offset: 0x1F058E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC023currentInstructionImageE0So07UIImageE0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x14A044, symSize: 0x10 } + - { offset: 0x1F05CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC023currentInstructionImageE0So07UIImageE0CSgvsTo', symObjAddr: 0x164, symBinAddr: 0x14A054, symSize: 0x34 } + - { offset: 0x1F061D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22remainingDistanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x14A088, symSize: 0x10 } + - { offset: 0x1F0635, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22remainingDistanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x14A088, symSize: 0x10 } + - { offset: 0x1F0670, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22remainingDistanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x14A098, symSize: 0x34 } + - { offset: 0x1F06BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC024nextInstructionContainerE0So6UIViewCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x14A0CC, symSize: 0x10 } + - { offset: 0x1F06D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC024nextInstructionContainerE0So6UIViewCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x14A0CC, symSize: 0x10 } + - { offset: 0x1F0712, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC024nextInstructionContainerE0So6UIViewCSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x14A0DC, symSize: 0x34 } + - { offset: 0x1F0761, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC020nextInstructionImageE0So07UIImageE0CSgvgTo', symObjAddr: 0x220, symBinAddr: 0x14A110, symSize: 0x10 } + - { offset: 0x1F0779, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC020nextInstructionImageE0So07UIImageE0CSgvgTo', symObjAddr: 0x220, symBinAddr: 0x14A110, symSize: 0x10 } + - { offset: 0x1F07B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC020nextInstructionImageE0So07UIImageE0CSgvsTo', symObjAddr: 0x230, symBinAddr: 0x14A120, symSize: 0x34 } + - { offset: 0x1F0803, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22topFloorIndicatorLabelSo7UILabelCSgvgTo', symObjAddr: 0x264, symBinAddr: 0x14A154, symSize: 0x10 } + - { offset: 0x1F081B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22topFloorIndicatorLabelSo7UILabelCSgvgTo', symObjAddr: 0x264, symBinAddr: 0x14A154, symSize: 0x10 } + - { offset: 0x1F0856, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22topFloorIndicatorLabelSo7UILabelCSgvsTo', symObjAddr: 0x274, symBinAddr: 0x14A164, symSize: 0x34 } + - { offset: 0x1F08A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC25bottomFloorIndicatorLabelSo7UILabelCSgvgTo', symObjAddr: 0x2A8, symBinAddr: 0x14A198, symSize: 0x10 } + - { offset: 0x1F08BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC25bottomFloorIndicatorLabelSo7UILabelCSgvgTo', symObjAddr: 0x2A8, symBinAddr: 0x14A198, symSize: 0x10 } + - { offset: 0x1F08F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC25bottomFloorIndicatorLabelSo7UILabelCSgvsTo', symObjAddr: 0x2B8, symBinAddr: 0x14A1A8, symSize: 0x34 } + - { offset: 0x1F0933, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x2EC, symBinAddr: 0x14A1DC, symSize: 0x108 } + - { offset: 0x1F0968, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x3F4, symBinAddr: 0x14A2E4, symSize: 0x20 } + - { offset: 0x1F09CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x414, symBinAddr: 0x14A304, symSize: 0xF8 } + - { offset: 0x1F0A00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x50C, symBinAddr: 0x14A3FC, symSize: 0x28 } + - { offset: 0x1F0A7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC10commonInit33_186C74DDBAE18BF1C3F293BBFBA9D952LLyyF', symObjAddr: 0x534, symBinAddr: 0x14A424, symSize: 0x1CC } + - { offset: 0x1F0C6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC14setDestinationyyAA5PlaceCSgF', symObjAddr: 0x700, symBinAddr: 0x14A5F0, symSize: 0x4D4 } + - { offset: 0x1F112F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewCfD', symObjAddr: 0xBD4, symBinAddr: 0x14AAC4, symSize: 0x30 } + - { offset: 0x1F14B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationV7baseURL11serviceName8clientId0J3Key06campusK0ACSS_S3SSiSgtcfC', symObjAddr: 0x0, symBinAddr: 0x14ABDC, symSize: 0x28 } + - { offset: 0x1F1505, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwxx', symObjAddr: 0x54, symBinAddr: 0x14AC04, symSize: 0x38 } + - { offset: 0x1F1519, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwcp', symObjAddr: 0x8C, symBinAddr: 0x14AC3C, symSize: 0x74 } + - { offset: 0x1F152D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwca', symObjAddr: 0x100, symBinAddr: 0x14ACB0, symSize: 0xBC } + - { offset: 0x1F1541, size: 0x8, addend: 0x0, symName: ___swift_memcpy73_8, symObjAddr: 0x1BC, symBinAddr: 0x14AD6C, symSize: 0x24 } + - { offset: 0x1F1555, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwta', symObjAddr: 0x1E0, symBinAddr: 0x14AD90, symSize: 0x74 } + - { offset: 0x1F1569, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwet', symObjAddr: 0x254, symBinAddr: 0x14AE04, symSize: 0x48 } + - { offset: 0x1F157D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwst', symObjAddr: 0x29C, symBinAddr: 0x14AE4C, symSize: 0x54 } + - { offset: 0x1F1591, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVMa', symObjAddr: 0x2F0, symBinAddr: 0x14AEA0, symSize: 0x10 } + - { offset: 0x1F15DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationV7baseURL11serviceName8clientId0J3Key06campusK0ACSS_S3SSiSgtcfC', symObjAddr: 0x0, symBinAddr: 0x14ABDC, symSize: 0x28 } + - { offset: 0x1F19CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x14AEB0, symSize: 0x10 } + - { offset: 0x1F1B3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewCfETo', symObjAddr: 0x2C0, symBinAddr: 0x14B170, symSize: 0x10 } + - { offset: 0x1F1B69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewCMa', symObjAddr: 0x2D0, symBinAddr: 0x14B180, symSize: 0x20 } + - { offset: 0x1F1BEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x14AEB0, symSize: 0x10 } + - { offset: 0x1F1C07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x14AEB0, symSize: 0x10 } + - { offset: 0x1F1C4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC07contentE0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x14AEC0, symSize: 0x34 } + - { offset: 0x1F1CAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x44, symBinAddr: 0x14AEF4, symSize: 0x94 } + - { offset: 0x1F1D4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xD8, symBinAddr: 0x14AF88, symSize: 0x94 } + - { offset: 0x1F1DAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC10commonInit33_DB4F7BE1755D04AFBF1EE63777EB3A0ALLyyF', symObjAddr: 0x16C, symBinAddr: 0x14B01C, symSize: 0x124 } + - { offset: 0x1F1E78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewCfD', symObjAddr: 0x290, symBinAddr: 0x14B140, symSize: 0x30 } + - { offset: 0x1F2202, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC12createEngine33_11376204CEA7C09CC43961F62E014BCBLLyyF', symObjAddr: 0x0, symBinAddr: 0x14B1A0, symSize: 0x1AC } + - { offset: 0x1F2337, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerCMa', symObjAddr: 0x608, symBinAddr: 0x14B7A8, symSize: 0x20 } + - { offset: 0x1F234B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC12createEngine33_11376204CEA7C09CC43961F62E014BCBLLyyFyycfU_TA', symObjAddr: 0x628, symBinAddr: 0x14B7C8, symSize: 0x8 } + - { offset: 0x1F235F, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x630, symBinAddr: 0x14B7D0, symSize: 0x10 } + - { offset: 0x1F2373, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x640, symBinAddr: 0x14B7E0, symSize: 0x8 } + - { offset: 0x1F238E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC12createEngine33_11376204CEA7C09CC43961F62E014BCBLLyyF', symObjAddr: 0x0, symBinAddr: 0x14B1A0, symSize: 0x1AC } + - { offset: 0x1F2404, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC12createEngine33_11376204CEA7C09CC43961F62E014BCBLLyyFyycfU_', symObjAddr: 0x1AC, symBinAddr: 0x14B34C, symSize: 0xD8 } + - { offset: 0x1F24EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC04playD4File33_11376204CEA7C09CC43961F62E014BCBLL8fileNameySS_tF', symObjAddr: 0x284, symBinAddr: 0x14B424, symSize: 0x360 } + - { offset: 0x1F259F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerCfD', symObjAddr: 0x5E4, symBinAddr: 0x14B784, symSize: 0x24 } + - { offset: 0x1F2988, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x14B7E8, symSize: 0x94 } + - { offset: 0x1F2A9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonCfETo', symObjAddr: 0x36C, symBinAddr: 0x14BB54, symSize: 0x10 } + - { offset: 0x1F2ACE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonCMa', symObjAddr: 0x37C, symBinAddr: 0x14BB64, symSize: 0x20 } + - { offset: 0x1F2B0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x14B7E8, symSize: 0x94 } + - { offset: 0x1F2BB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x94, symBinAddr: 0x14B87C, symSize: 0x94 } + - { offset: 0x1F2CB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonC05setupD9Indicator33_72C2D151F8AD46D59A57D53E2C1FBE11LLyyF', symObjAddr: 0x128, symBinAddr: 0x14B910, symSize: 0x214 } + - { offset: 0x1F2DD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonCfD', symObjAddr: 0x33C, symBinAddr: 0x14BB24, symSize: 0x30 } + - { offset: 0x1F37E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperCfETo', symObjAddr: 0x1C94, symBinAddr: 0x14D818, symSize: 0xC0 } + - { offset: 0x1F3815, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperCMa', symObjAddr: 0x1D54, symBinAddr: 0x14D8D8, symSize: 0x20 } + - { offset: 0x1F3AED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x14BB84, symSize: 0x10 } + - { offset: 0x1F3B05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x14BB84, symSize: 0x10 } + - { offset: 0x1F3B4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x14BB94, symSize: 0x34 } + - { offset: 0x1F3B9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x14BBC8, symSize: 0x10 } + - { offset: 0x1F3BB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x14BBC8, symSize: 0x10 } + - { offset: 0x1F3BED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x14BBD8, symSize: 0x34 } + - { offset: 0x1F3C3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x14BC0C, symSize: 0x10 } + - { offset: 0x1F3C54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x14BC0C, symSize: 0x10 } + - { offset: 0x1F3C94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC11contentViewSo6UIViewCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x14BC1C, symSize: 0x34 } + - { offset: 0x1F3CE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10nextButtonSo8UIButtonCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x14BC50, symSize: 0x10 } + - { offset: 0x1F3CFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10nextButtonSo8UIButtonCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x14BC50, symSize: 0x10 } + - { offset: 0x1F3D3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10nextButtonSo8UIButtonCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x14BC60, symSize: 0x34 } + - { offset: 0x1F3D8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC18nextSeparatorWidthSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x14BC94, symSize: 0x10 } + - { offset: 0x1F3DA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC18nextSeparatorWidthSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x14BC94, symSize: 0x10 } + - { offset: 0x1F3DE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC18nextSeparatorWidthSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x14BCA4, symSize: 0x34 } + - { offset: 0x1F3E31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC14previousButtonSo8UIButtonCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x14BCD8, symSize: 0x10 } + - { offset: 0x1F3E49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC14previousButtonSo8UIButtonCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x14BCD8, symSize: 0x10 } + - { offset: 0x1F3E84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC14previousButtonSo8UIButtonCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x14BCE8, symSize: 0x34 } + - { offset: 0x1F3ED3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC22previousSeparatorWidthSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x14BD1C, symSize: 0x10 } + - { offset: 0x1F3EEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC22previousSeparatorWidthSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x14BD1C, symSize: 0x10 } + - { offset: 0x1F3F26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC22previousSeparatorWidthSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x14BD2C, symSize: 0x34 } + - { offset: 0x1F3F75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC15labelsStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x14BD60, symSize: 0x10 } + - { offset: 0x1F3F8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC15labelsStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x14BD60, symSize: 0x10 } + - { offset: 0x1F3FCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC15labelsStackViewSo07UIStackH0CSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x14BD70, symSize: 0x34 } + - { offset: 0x1F4008, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC5frameACSo6CGRectV_tcfc', symObjAddr: 0x220, symBinAddr: 0x14BDA4, symSize: 0x104 } + - { offset: 0x1F403D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x324, symBinAddr: 0x14BEA8, symSize: 0x20 } + - { offset: 0x1F40A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x344, symBinAddr: 0x14BEC8, symSize: 0xF4 } + - { offset: 0x1F40D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x438, symBinAddr: 0x14BFBC, symSize: 0x28 } + - { offset: 0x1F414E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC9setupView33_B3F52FF1C7EB23C753FCB37EDFA4BFF4LLyyF', symObjAddr: 0x460, symBinAddr: 0x14BFE4, symSize: 0x620 } + - { offset: 0x1F45F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC12updateLabelsyyF', symObjAddr: 0xA80, symBinAddr: 0x14C604, symSize: 0xC2C } + - { offset: 0x1F512C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC13updateButtonsyyF', symObjAddr: 0x16AC, symBinAddr: 0x14D230, symSize: 0x42C } + - { offset: 0x1F54A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperCfD', symObjAddr: 0x1C64, symBinAddr: 0x14D7E8, symSize: 0x30 } + - { offset: 0x1F5EA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellCfETo', symObjAddr: 0x13F0, symBinAddr: 0x14ECD8, symSize: 0xE8 } + - { offset: 0x1F5ED0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellCMa', symObjAddr: 0x14D8, symBinAddr: 0x14EDC0, symSize: 0x20 } + - { offset: 0x1F5F0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_21numberOfRowsInSectionSiSo07UITableH0C_SitFTo', symObjAddr: 0x14F8, symBinAddr: 0x14EDE0, symSize: 0x30 } + - { offset: 0x1F5F4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_21numberOfRowsInSectionSiSo07UITableH0C_SitFTo', symObjAddr: 0x14F8, symBinAddr: 0x14EDE0, symSize: 0x30 } + - { offset: 0x1F6029, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_12cellForRowAtSo07UITablehF0CSo0mH0C_10Foundation9IndexPathVtF', symObjAddr: 0x1528, symBinAddr: 0x14EE10, symSize: 0x228 } + - { offset: 0x1F6250, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_12cellForRowAtSo07UITablehF0CSo0mH0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1750, symBinAddr: 0x14F038, symSize: 0xB8 } + - { offset: 0x1F627B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_14didSelectRowAtySo07UITableH0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1808, symBinAddr: 0x14F0F0, symSize: 0xAC } + - { offset: 0x1F62AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableH0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x18B4, symBinAddr: 0x14F19C, symSize: 0x74 } + - { offset: 0x1F6302, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_14didSelectRowAtySo07UITableH0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x1928, symBinAddr: 0x14F210, symSize: 0x110 } + - { offset: 0x1F648A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC08setUIForE033_06DAFF211FBCAE864BD7FDDCE90583D9LL5venuey7Penguin0E0C_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x1B08, symBinAddr: 0x14F370, symSize: 0x8 } + - { offset: 0x1F649E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSgWOc', symObjAddr: 0x1B10, symBinAddr: 0x14F378, symSize: 0x48 } + - { offset: 0x1F67D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC25tableViewBottomConstraintSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x10, symBinAddr: 0x14D8F8, symSize: 0x10 } + - { offset: 0x1F67E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC25tableViewBottomConstraintSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x10, symBinAddr: 0x14D8F8, symSize: 0x10 } + - { offset: 0x1F682E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC25tableViewBottomConstraintSo08NSLayoutJ0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x14D908, symSize: 0x34 } + - { offset: 0x1F687D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC25tableViewHeightConstraintSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x54, symBinAddr: 0x14D93C, symSize: 0x20 } + - { offset: 0x1F68D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC25tableViewHeightConstraintSo08NSLayoutJ0CSgvsTo', symObjAddr: 0x74, symBinAddr: 0x14D95C, symSize: 0x14 } + - { offset: 0x1F6923, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC09connectedE5TableSo11UITableViewCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x14D970, symSize: 0x20 } + - { offset: 0x1F697D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC09connectedE5TableSo11UITableViewCSgvsTo', symObjAddr: 0xA8, symBinAddr: 0x14D990, symSize: 0x14 } + - { offset: 0x1F69CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC15floorCountLabelSo7UILabelCSgvgTo', symObjAddr: 0xBC, symBinAddr: 0x14D9A4, symSize: 0x20 } + - { offset: 0x1F6A28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC15floorCountLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x14D9C4, symSize: 0x14 } + - { offset: 0x1F6A79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9venueNameSo7UILabelCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x14D9D8, symSize: 0x20 } + - { offset: 0x1F6ACE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9venueNameSo7UILabelCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x14D9F8, symSize: 0x14 } + - { offset: 0x1F6B1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC10venueImageSo11UIImageViewCSgvgTo', symObjAddr: 0x124, symBinAddr: 0x14DA0C, symSize: 0x20 } + - { offset: 0x1F6B79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC10venueImageSo11UIImageViewCSgvsTo', symObjAddr: 0x144, symBinAddr: 0x14DA2C, symSize: 0x14 } + - { offset: 0x1F6BCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC12toggleButtonSo8UIButtonCSgvgTo', symObjAddr: 0x158, symBinAddr: 0x14DA40, symSize: 0x20 } + - { offset: 0x1F6C24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC12toggleButtonSo8UIButtonCSgvsTo', symObjAddr: 0x178, symBinAddr: 0x14DA60, symSize: 0x14 } + - { offset: 0x1F6C75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC14imageContainerSo6UIViewCSgvgTo', symObjAddr: 0x18C, symBinAddr: 0x14DA74, symSize: 0x20 } + - { offset: 0x1F6CCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC14imageContainerSo6UIViewCSgvsTo', symObjAddr: 0x1AC, symBinAddr: 0x14DA94, symSize: 0x14 } + - { offset: 0x1F6D20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9separatorSo6UIViewCSgvgTo', symObjAddr: 0x1C0, symBinAddr: 0x14DAA8, symSize: 0x10 } + - { offset: 0x1F6D38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9separatorSo6UIViewCSgvgTo', symObjAddr: 0x1C0, symBinAddr: 0x14DAA8, symSize: 0x10 } + - { offset: 0x1F6D73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9separatorSo6UIViewCSgvsTo', symObjAddr: 0x1D0, symBinAddr: 0x14DAB8, symSize: 0x34 } + - { offset: 0x1F6DC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC12awakeFromNibyyFTo', symObjAddr: 0x204, symBinAddr: 0x14DAEC, symSize: 0x74 } + - { offset: 0x1F6E3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC14configureTableyyF', symObjAddr: 0x278, symBinAddr: 0x14DB60, symSize: 0x390 } + - { offset: 0x1F7049, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC03sete5ImageC0yyF', symObjAddr: 0x608, symBinAddr: 0x14DEF0, symSize: 0x390 } + - { offset: 0x1F71F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC08setUIForE033_06DAFF211FBCAE864BD7FDDCE90583D9LL5venuey7Penguin0E0C_tF', symObjAddr: 0x998, symBinAddr: 0x14E280, symSize: 0x424 } + - { offset: 0x1F73F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC08setUIForE033_06DAFF211FBCAE864BD7FDDCE90583D9LL5venuey7Penguin0E0C_tFySo7UIImageCSgcfU_', symObjAddr: 0xDBC, symBinAddr: 0x14E6A4, symSize: 0x1D4 } + - { offset: 0x1F74FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC13toggleSectionyyF', symObjAddr: 0xF90, symBinAddr: 0x14E878, symSize: 0xA4 } + - { offset: 0x1F7592, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC13toggleSectionyyFTo', symObjAddr: 0x1034, symBinAddr: 0x14E91C, symSize: 0x28 } + - { offset: 0x1F75A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x105C, symBinAddr: 0x14E944, symSize: 0x18C } + - { offset: 0x1F75E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x11E8, symBinAddr: 0x14EAD0, symSize: 0x48 } + - { offset: 0x1F761F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1230, symBinAddr: 0x14EB18, symSize: 0x168 } + - { offset: 0x1F7652, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1398, symBinAddr: 0x14EC80, symSize: 0x28 } + - { offset: 0x1F7666, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellCfD', symObjAddr: 0x13C0, symBinAddr: 0x14ECA8, symSize: 0x30 } + - { offset: 0x1F7AC2, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE21makeBoundsLayoutGuideSo08UILayoutH0CyF', symObjAddr: 0x0, symBinAddr: 0x14F3C0, symSize: 0x290 } + - { offset: 0x1F7C98, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE21makeBoundsLayoutGuideSo08UILayoutH0CyF', symObjAddr: 0x0, symBinAddr: 0x14F3C0, symSize: 0x290 } + - { offset: 0x1F7D5D, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE7asImage15backgroundColor06borderH00I5WidthSo7UIImageCSgSo7UIColorCSg_AM12CoreGraphics7CGFloatVtF', symObjAddr: 0x290, symBinAddr: 0x14F650, symSize: 0x268 } + - { offset: 0x1F7E8B, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE21makeBoundsLayoutGuide12bottomAnchorSo08UILayoutH0C12CoreGraphics7CGFloatV_tF', symObjAddr: 0x4F8, symBinAddr: 0x14F8B8, symSize: 0x2E0 } + - { offset: 0x1F7F60, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15continuosCornerSbvgTo', symObjAddr: 0x7D8, symBinAddr: 0x14FB98, symSize: 0x8 } + - { offset: 0x1F7FA6, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15continuosCornerSbvsTo', symObjAddr: 0x7E0, symBinAddr: 0x14FBA0, symSize: 0x64 } + - { offset: 0x1F7FE5, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x844, symBinAddr: 0x14FC04, symSize: 0x8 } + - { offset: 0x1F8001, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15colorIdentifierSivsTo', symObjAddr: 0x84C, symBinAddr: 0x14FC0C, symSize: 0x30 } + - { offset: 0x1F8039, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15colorIdentifierSivs', symObjAddr: 0x87C, symBinAddr: 0x14FC3C, symSize: 0x120 } + - { offset: 0x1F80E5, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE18showSkeletonLoaderyyF', symObjAddr: 0x99C, symBinAddr: 0x14FD5C, symSize: 0x3B4 } + - { offset: 0x1F81B5, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE20removeSkeletonLoaderyyF', symObjAddr: 0xD50, symBinAddr: 0x150110, symSize: 0x268 } + - { offset: 0x1F8985, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x0, symBinAddr: 0x150378, symSize: 0x164 } + - { offset: 0x1F8B74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewCfETo', symObjAddr: 0x8A4, symBinAddr: 0x150C1C, symSize: 0x4C } + - { offset: 0x1F8BA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewCMa', symObjAddr: 0x8F0, symBinAddr: 0x150C68, symSize: 0x20 } + - { offset: 0x1F8C19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x0, symBinAddr: 0x150378, symSize: 0x164 } + - { offset: 0x1F8C87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x164, symBinAddr: 0x1504DC, symSize: 0x28 } + - { offset: 0x1F8CF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC14layoutSubviewsyyF', symObjAddr: 0x18C, symBinAddr: 0x150504, symSize: 0xB0 } + - { offset: 0x1F8DFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC14layoutSubviewsyyFTo', symObjAddr: 0x23C, symBinAddr: 0x1505B4, symSize: 0x28 } + - { offset: 0x1F8E42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC4drawyySo6CGRectVF', symObjAddr: 0x264, symBinAddr: 0x1505DC, symSize: 0x58C } + - { offset: 0x1F9192, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC4drawyySo6CGRectVFTo', symObjAddr: 0x7F0, symBinAddr: 0x150B68, symSize: 0x58 } + - { offset: 0x1F91C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x848, symBinAddr: 0x150BC0, symSize: 0x2C } + - { offset: 0x1F9228, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewCfD', symObjAddr: 0x874, symBinAddr: 0x150BEC, symSize: 0x30 } + - { offset: 0x1F9606, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseStringySSSgSSKFAA9XMLParserV10AttributesC_Tg5', symObjAddr: 0x0, symBinAddr: 0x150C88, symSize: 0xC0 } + - { offset: 0x1F965D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseStringySSSgSSKFAA9XMLParserV10AttributesC_Tg5', symObjAddr: 0x0, symBinAddr: 0x150C88, symSize: 0xC0 } + - { offset: 0x1F99E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV8parseSVGyAA3DOMO0F0CAA3XMLO7ElementCKF', symObjAddr: 0xC0, symBinAddr: 0x150D48, symSize: 0xA10 } + - { offset: 0x1F9F90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseSVGDefsyAA3DOMO3SVGC4DefsVAA3XMLO7ElementCKF', symObjAddr: 0xB10, symBinAddr: 0x151758, symSize: 0x3D0 } + - { offset: 0x1FA37B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseClipPathsySayAA3DOMO0F4PathVGAA3XMLO7ElementCKF', symObjAddr: 0xEE0, symBinAddr: 0x151B28, symSize: 0x484 } + - { offset: 0x1FAAAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10parseMasksySayAA3DOMO4MaskVGAA3XMLO7ElementCKF', symObjAddr: 0x1364, symBinAddr: 0x151FAC, symSize: 0x46C } + - { offset: 0x1FB1DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV13parsePatternsySayAA3DOMO7PatternVGAA3XMLO7ElementCKF', symObjAddr: 0x17D0, symBinAddr: 0x152418, symSize: 0x498 } + - { offset: 0x1FB799, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV15findDefElements6withinSayAA3XMLO7ElementCGAI_tF', symObjAddr: 0x1C68, symBinAddr: 0x1528B0, symSize: 0x22C } + - { offset: 0x1FBBCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17parseDefsElementsySDySSAA3DOMO15GraphicsElementCGAA3XMLO0J0CKF', symObjAddr: 0x1E94, symBinAddr: 0x152ADC, symSize: 0x374 } + - { offset: 0x1FBE82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE5parse_3expqd__SgSS_qd__SSKXEtKlFAA9XMLParserV10AttributesC_SfTg5', symObjAddr: 0x2208, symBinAddr: 0x152E50, symSize: 0xE0 } + - { offset: 0x1FBF01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParser_pAA3DOMO22PresentationAttributesVs5Error_pIegnrzo_SDyS2SGAFsAG_pIeggrzo_TR', symObjAddr: 0x22E8, symBinAddr: 0x152F30, symSize: 0x88 } + - { offset: 0x1FBF20, size: 0x8, addend: 0x0, symName: '_$sxq_xq_Iegnnrr_x3key_q_5valuetx_q_tIegnr_SHRzr0_lTRSS_8PenNavUI3DOMO15GraphicsElementCTG5071$sSD5merge_16uniquingKeysWithySDyxq_Gn_q_q__q_tKXEtKFx_q_tx_q_tcfU_SS_8cd9UI3DOMO15gH4CTG5Tf3nnpf_n', symObjAddr: 0x2370, symBinAddr: 0x152FB8, symSize: 0x34 } + - { offset: 0x1FBFDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parsePercentageySfSgSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_TG5', symObjAddr: 0x23A4, symBinAddr: 0x152FEC, symSize: 0x28 } + - { offset: 0x1FC0D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parseCoordinateySfSgSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_TG5TA', symObjAddr: 0x23F4, symBinAddr: 0x153014, symSize: 0x28 } + - { offset: 0x1FC1C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseViewBoxyAA3DOMO3SVGC0fG0VSgSSSgKFTf4nd_n', symObjAddr: 0x241C, symBinAddr: 0x15303C, symSize: 0x31C } + - { offset: 0x1FC4E2, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV5merge_8isUnique16uniquingKeysWithyqd__n_Sbq_q__q_tKXEtKSTRd__x_q_t7ElementRtd__lFSS_8PenNavUI3DOMO08GraphicsI0Cs15LazyMapSequenceVySDySSALGSS_ALtGTg503$s8jk54UI9XMLParserV12parseSVGDefsyAA3DOMO3SVGC4DefsVAA3XMLO7i13CKFySDySSAF08N27K0CGz_ANtKXEfU_A2P_APtXEfU_Tf1nncn_nTf4gnn_n', symObjAddr: 0x2738, symBinAddr: 0x153358, symSize: 0x280 } + - { offset: 0x1FC68F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV22parseStyleSheetElementyAA3DOMO0fG0VSSSgKFAF22PresentationAttributesVAA15AttributeParser_pKcACcfu_AkaL_pKcfu0_TA', symObjAddr: 0x2A40, symBinAddr: 0x1535FC, symSize: 0x1C } + - { offset: 0x1FC6A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParser_pAA3DOMO22PresentationAttributesVs5Error_pIegnrzo_SDyS2SGAFsAG_pIeggrzo_TRTA', symObjAddr: 0x2A5C, symBinAddr: 0x153618, symSize: 0x18 } + - { offset: 0x1FC70B, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV9mapValuesyAByxqd__Gqd__q_KXEKlF8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGAG22PresentationAttributesVTg5010$sSDyS2SG8ef9UI3DOMO22lM35Vs5Error_pIggrzo_AaFsAG_pIegnrzo_TRAlNs0U0_pIggrzo_Tf1cn_nTf4ng_n', symObjAddr: 0x2A74, symBinAddr: 0x153630, symSize: 0x220 } + - { offset: 0x1FC7D7, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI3DOMO15GraphicsElementCGWOh', symObjAddr: 0x2D80, symBinAddr: 0x153850, symSize: 0x40 } + - { offset: 0x1FD304, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientC2idAESS_tcfc', symObjAddr: 0x0, symBinAddr: 0x153CF0, symSize: 0xA8 } + - { offset: 0x1FD3B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCfE', symObjAddr: 0x110, symBinAddr: 0x153D98, symSize: 0x34 } + - { offset: 0x1FD3E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCMU', symObjAddr: 0x1A8, symBinAddr: 0x153E30, symSize: 0x8 } + - { offset: 0x1FD3F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCMa', symObjAddr: 0x1B0, symBinAddr: 0x153E38, symSize: 0x38 } + - { offset: 0x1FD409, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCMr', symObjAddr: 0x1E8, symBinAddr: 0x153E70, symSize: 0xA4 } + - { offset: 0x1FD41D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientC4StopVMa', symObjAddr: 0x384, symBinAddr: 0x153F14, symSize: 0x10 } + - { offset: 0x1FD440, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x394, symBinAddr: 0x153F24, symSize: 0xC } + - { offset: 0x1FD47D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientC2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x3A0, symBinAddr: 0x153F30, symSize: 0xBC } + - { offset: 0x1FD504, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientC2idAESS_tcfc', symObjAddr: 0x0, symBinAddr: 0x153CF0, symSize: 0xA8 } + - { offset: 0x1FD574, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCfD', symObjAddr: 0x144, symBinAddr: 0x153DCC, symSize: 0x64 } + - { offset: 0x1FD931, size: 0x8, addend: 0x0, symName: '_$sSbIegy_SbIeyBy_TR', symObjAddr: 0x0, symBinAddr: 0x153FEC, symSize: 0x3C } + - { offset: 0x1FDA05, size: 0x8, addend: 0x0, symName: '_$sSbIegy_SbIeyBy_TR', symObjAddr: 0x0, symBinAddr: 0x153FEC, symSize: 0x3C } + - { offset: 0x1FDD77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorCfETo', symObjAddr: 0xFD4, symBinAddr: 0x154FC0, symSize: 0x58 } + - { offset: 0x1FDDA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorCMa', symObjAddr: 0x102C, symBinAddr: 0x155018, symSize: 0x20 } + - { offset: 0x1FDDBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC15startAnimiation8typeEdgey7Penguin0I7TypeNewO_tFySbcfU_TA', symObjAddr: 0x1070, symBinAddr: 0x15505C, symSize: 0x8 } + - { offset: 0x1FDDCE, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE7fadeOut_5delay10completionySd_SdySbctFyycfU_TA', symObjAddr: 0x1078, symBinAddr: 0x155064, symSize: 0x8 } + - { offset: 0x1FDDE2, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1080, symBinAddr: 0x15506C, symSize: 0x10 } + - { offset: 0x1FDDF6, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1090, symBinAddr: 0x15507C, symSize: 0x8 } + - { offset: 0x1FDE0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC15startAnimiation8typeEdgey7Penguin0I7TypeNewO_tFySo7NSTimerCYbcfU0_TA', symObjAddr: 0x1098, symBinAddr: 0x155084, symSize: 0x14 } + - { offset: 0x1FDE3C, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE6fadeIn_5delay10completionySd_SdySbctFyycfU_TA', symObjAddr: 0x10AC, symBinAddr: 0x155098, symSize: 0x8 } + - { offset: 0x1FDE50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC10commonInityyFyyScMYccfU_TA', symObjAddr: 0x113C, symBinAddr: 0x1550A0, symSize: 0x8 } + - { offset: 0x1FDF27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC2upSo11UIImageViewCSgvgTo', symObjAddr: 0x3C, symBinAddr: 0x154028, symSize: 0x20 } + - { offset: 0x1FDF87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC2upSo11UIImageViewCSgvsTo', symObjAddr: 0x5C, symBinAddr: 0x154048, symSize: 0x14 } + - { offset: 0x1FDFD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC4viewSo6UIViewCSgvgTo', symObjAddr: 0x70, symBinAddr: 0x15405C, symSize: 0x10 } + - { offset: 0x1FDFF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC4viewSo6UIViewCSgvgTo', symObjAddr: 0x70, symBinAddr: 0x15405C, symSize: 0x10 } + - { offset: 0x1FE030, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC4viewSo6UIViewCSgvsTo', symObjAddr: 0x80, symBinAddr: 0x15406C, symSize: 0x34 } + - { offset: 0x1FE07F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC14topAnchorImageSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0xB4, symBinAddr: 0x1540A0, symSize: 0x20 } + - { offset: 0x1FE0D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC14topAnchorImageSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0xD4, symBinAddr: 0x1540C0, symSize: 0x14 } + - { offset: 0x1FE12A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5titleSo7UILabelCSgvgTo', symObjAddr: 0xE8, symBinAddr: 0x1540D4, symSize: 0x20 } + - { offset: 0x1FE184, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5titleSo7UILabelCSgvsTo', symObjAddr: 0x108, symBinAddr: 0x1540F4, symSize: 0x14 } + - { offset: 0x1FE1E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x11C, symBinAddr: 0x154108, symSize: 0xD0 } + - { offset: 0x1FE213, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1EC, symBinAddr: 0x1541D8, symSize: 0xBC } + - { offset: 0x1FE248, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2A8, symBinAddr: 0x154294, symSize: 0x28 } + - { offset: 0x1FE2AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC10commonInityyF', symObjAddr: 0x2D0, symBinAddr: 0x1542BC, symSize: 0x2CC } + - { offset: 0x1FE32F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC10commonInityyFyyScMYccfU_', symObjAddr: 0x59C, symBinAddr: 0x154588, symSize: 0x1F4 } + - { offset: 0x1FE451, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC15startAnimiation8typeEdgey7Penguin0I7TypeNewO_tF', symObjAddr: 0x790, symBinAddr: 0x15477C, symSize: 0x6C0 } + - { offset: 0x1FE63F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC15startAnimiation8typeEdgey7Penguin0I7TypeNewO_tFySbcfU_', symObjAddr: 0xE50, symBinAddr: 0x154E3C, symSize: 0x154 } + - { offset: 0x1FE707, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorCfD', symObjAddr: 0xFA4, symBinAddr: 0x154F90, symSize: 0x30 } + - { offset: 0x1FEAD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC14sharedInstance33_85465E89B3ABB144AF46DA017B27447ELLACSgvpZ', symObjAddr: 0x13B0, symBinAddr: 0x368CD0, symSize: 0x0 } + - { offset: 0x1FEEFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerCMa', symObjAddr: 0xFFC, symBinAddr: 0x1560DC, symSize: 0x20 } + - { offset: 0x1FEF0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVWOh', symObjAddr: 0x10A8, symBinAddr: 0x156188, symSize: 0x34 } + - { offset: 0x1FEF22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF7ForEdgeyySiFySayAA13MessageDetailCGcfU_TA', symObjAddr: 0x11CC, symBinAddr: 0x1561E0, symSize: 0x8 } + - { offset: 0x1FEF36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF7ForEdgeyySiFySayAA13MessageDetailCGcfU_yyScMYccfU_TA', symObjAddr: 0x1218, symBinAddr: 0x1561E8, symSize: 0x20 } + - { offset: 0x1FEF4A, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1238, symBinAddr: 0x156208, symSize: 0x10 } + - { offset: 0x1FEF5E, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1248, symBinAddr: 0x156218, symSize: 0x8 } + - { offset: 0x1FEF72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF8ForFlooryySiFySayAA13MessageDetailCGcfU_TA', symObjAddr: 0x1324, symBinAddr: 0x156220, symSize: 0x8 } + - { offset: 0x1FEF86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF8ForFlooryySiFySayAA13MessageDetailCGcfU_yyScMYccfU_TA', symObjAddr: 0x132C, symBinAddr: 0x156228, symSize: 0x20 } + - { offset: 0x1FF151, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF8ForFlooryySiF', symObjAddr: 0x10, symBinAddr: 0x1550F0, symSize: 0x180 } + - { offset: 0x1FF259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF8ForFlooryySiFySayAA13MessageDetailCGcfU_', symObjAddr: 0x190, symBinAddr: 0x155270, symSize: 0x220 } + - { offset: 0x1FF30C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC011handleFloorF033_85465E89B3ABB144AF46DA017B27447ELLyyF', symObjAddr: 0x3B0, symBinAddr: 0x155490, symSize: 0x2D0 } + - { offset: 0x1FF83F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF7ForEdgeyySiF', symObjAddr: 0x680, symBinAddr: 0x155760, symSize: 0x140 } + - { offset: 0x1FF947, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF7ForEdgeyySiFySayAA13MessageDetailCGcfU_', symObjAddr: 0x7C0, symBinAddr: 0x1558A0, symSize: 0x220 } + - { offset: 0x1FF9A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC06handleF7ForEdge33_85465E89B3ABB144AF46DA017B27447ELLyyF', symObjAddr: 0xA38, symBinAddr: 0x155B18, symSize: 0x2D0 } + - { offset: 0x1FFF5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC20handleMessageDisplay33_85465E89B3ABB144AF46DA017B27447ELL7messageyAA0I6DetailC_tF', symObjAddr: 0xD08, symBinAddr: 0x155DE8, symSize: 0x2B0 } + - { offset: 0x200091, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerCfD', symObjAddr: 0xFB8, symBinAddr: 0x156098, symSize: 0x44 } + - { offset: 0x2000EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC6sharedACvgZTf4d_n', symObjAddr: 0x101C, symBinAddr: 0x1560FC, symSize: 0x8C } + - { offset: 0x200510, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7ElementCMa', symObjAddr: 0x50, symBinAddr: 0x156250, symSize: 0x20 } + - { offset: 0x200524, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementCfE', symObjAddr: 0x70, symBinAddr: 0x156270, symSize: 0x3C } + - { offset: 0x20058A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementCMU', symObjAddr: 0x118, symBinAddr: 0x156318, symSize: 0x8 } + - { offset: 0x20059E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementCMr', symObjAddr: 0x134, symBinAddr: 0x156334, symSize: 0x78 } + - { offset: 0x2005B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4LineCMU', symObjAddr: 0x1B0, symBinAddr: 0x1563B0, symSize: 0x8 } + - { offset: 0x2005C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6CircleCMU', symObjAddr: 0x1DC, symBinAddr: 0x1563DC, symSize: 0x8 } + - { offset: 0x2005DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6CircleCMr', symObjAddr: 0x1F8, symBinAddr: 0x1563F8, symSize: 0x50 } + - { offset: 0x2005EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7EllipseCMU', symObjAddr: 0x248, symBinAddr: 0x156448, symSize: 0x8 } + - { offset: 0x200602, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4RectCMU', symObjAddr: 0x308, symBinAddr: 0x156508, symSize: 0x8 } + - { offset: 0x200616, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4RectCMr', symObjAddr: 0x324, symBinAddr: 0x156524, symSize: 0x54 } + - { offset: 0x20062A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8PolylineCfE', symObjAddr: 0x378, symBinAddr: 0x156578, symSize: 0x10 } + - { offset: 0x200657, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8PolylineCMU', symObjAddr: 0x394, symBinAddr: 0x156594, symSize: 0x8 } + - { offset: 0x20066B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PolygonCfE', symObjAddr: 0x3B0, symBinAddr: 0x1565B0, symSize: 0x10 } + - { offset: 0x200698, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PolygonCMU', symObjAddr: 0x3CC, symBinAddr: 0x1565CC, symSize: 0x8 } + - { offset: 0x2006AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5GroupCfE', symObjAddr: 0x3EC, symBinAddr: 0x1565EC, symSize: 0x10 } + - { offset: 0x2006D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5GroupCMU', symObjAddr: 0x470, symBinAddr: 0x156670, symSize: 0x8 } + - { offset: 0x20071D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementCfD', symObjAddr: 0xAC, symBinAddr: 0x1562AC, symSize: 0x6C } + - { offset: 0x20075F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5GroupCAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0x500, symBinAddr: 0x1566BC, symSize: 0x14 } + - { offset: 0x200B93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOMa', symObjAddr: 0x204, symBinAddr: 0x1568DC, symSize: 0x38 } + - { offset: 0x200BA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwCP', symObjAddr: 0x300, symBinAddr: 0x156914, symSize: 0xE4 } + - { offset: 0x200BBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwxx', symObjAddr: 0x3E4, symBinAddr: 0x1569F8, symSize: 0x68 } + - { offset: 0x200BCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwcp', symObjAddr: 0x44C, symBinAddr: 0x156A60, symSize: 0xC0 } + - { offset: 0x200BE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwca', symObjAddr: 0x50C, symBinAddr: 0x156B20, symSize: 0x11C } + - { offset: 0x200BF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwtk', symObjAddr: 0x664, symBinAddr: 0x156C3C, symSize: 0xC0 } + - { offset: 0x200C0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwta', symObjAddr: 0x724, symBinAddr: 0x156CFC, symSize: 0x11C } + - { offset: 0x200C1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwet', symObjAddr: 0x840, symBinAddr: 0x156E18, symSize: 0xC } + - { offset: 0x200C33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwst', symObjAddr: 0x89C, symBinAddr: 0x156E74, symSize: 0xC } + - { offset: 0x200C47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwug', symObjAddr: 0x900, symBinAddr: 0x156ED8, symSize: 0x3C } + - { offset: 0x200C5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwui', symObjAddr: 0x940, symBinAddr: 0x156F14, symSize: 0x44 } + - { offset: 0x200C6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOMr', symObjAddr: 0x984, symBinAddr: 0x156F58, symSize: 0x54 } + - { offset: 0x200C97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x1566D8, symSize: 0x4 } + - { offset: 0x200CAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x1566D8, symSize: 0x4 } + - { offset: 0x200CC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x4, symBinAddr: 0x1566DC, symSize: 0x200 } + - { offset: 0x2010AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC8dayLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x156FAC, symSize: 0x20 } + - { offset: 0x2012B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellCfETo', symObjAddr: 0x9C4, symBinAddr: 0x157970, symSize: 0x38 } + - { offset: 0x2012E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellCMa', symObjAddr: 0x9FC, symBinAddr: 0x1579A8, symSize: 0x20 } + - { offset: 0x2013F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC8dayLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x156FAC, symSize: 0x20 } + - { offset: 0x201454, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC8dayLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x156FCC, symSize: 0x14 } + - { offset: 0x2014A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC10hoursLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x156FE0, symSize: 0x20 } + - { offset: 0x2014FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC10hoursLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x157000, symSize: 0x14 } + - { offset: 0x20154B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC12awakeFromNibyyFTo', symObjAddr: 0x68, symBinAddr: 0x157014, symSize: 0x68 } + - { offset: 0x20171E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC9configure4withyAA0eD0VSg_tF', symObjAddr: 0xD0, symBinAddr: 0x15707C, symSize: 0x738 } + - { offset: 0x201B8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x808, symBinAddr: 0x1577B4, symSize: 0xE4 } + - { offset: 0x201C0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x8EC, symBinAddr: 0x157898, symSize: 0xA8 } + - { offset: 0x201C42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellCfD', symObjAddr: 0x994, symBinAddr: 0x157940, symSize: 0x30 } + - { offset: 0x201FDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x1579C8, symSize: 0xC } + - { offset: 0x202045, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0xC, symBinAddr: 0x1579D4, symSize: 0xD0 } + - { offset: 0x2020F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xDC, symBinAddr: 0x157AA4, symSize: 0xAC } + - { offset: 0x202157, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x188, symBinAddr: 0x157B50, symSize: 0xCC } + - { offset: 0x2021EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs28CustomDebugStringConvertibleAAsAHP16debugDescriptionSSvgTW', symObjAddr: 0x3D8, symBinAddr: 0x157D88, symSize: 0x28 } + - { offset: 0x202208, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs23CustomStringConvertibleAAsAHP11descriptionSSvgTW', symObjAddr: 0x400, symBinAddr: 0x157DB0, symSize: 0x28 } + - { offset: 0x202224, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x828, symBinAddr: 0x1581D8, symSize: 0xC } + - { offset: 0x20228B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x834, symBinAddr: 0x1581E4, symSize: 0xD4 } + - { offset: 0x202336, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x908, symBinAddr: 0x1582B8, symSize: 0xB0 } + - { offset: 0x20239D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x9B8, symBinAddr: 0x158368, symSize: 0xD0 } + - { offset: 0x20242C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0xC14, symBinAddr: 0x1585AC, symSize: 0x28 } + - { offset: 0x202448, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0xC3C, symBinAddr: 0x1585D4, symSize: 0x28 } + - { offset: 0x2027B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseCMa', symObjAddr: 0xCA0, symBinAddr: 0x158638, symSize: 0x20 } + - { offset: 0x2027CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleCMa', symObjAddr: 0xF2C, symBinAddr: 0x1588C4, symSize: 0x20 } + - { offset: 0x2027E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOAEs0H3KeyAAWl', symObjAddr: 0x1308, symBinAddr: 0x158BD4, symSize: 0x40 } + - { offset: 0x2027F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOAGs0I3KeyAAWl', symObjAddr: 0x146C, symBinAddr: 0x158C90, symSize: 0x40 } + - { offset: 0x202809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOMa', symObjAddr: 0x16E4, symBinAddr: 0x158D0C, symSize: 0x10 } + - { offset: 0x20281D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOMa', symObjAddr: 0x1848, symBinAddr: 0x158D1C, symSize: 0x10 } + - { offset: 0x202831, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x1858, symBinAddr: 0x158D2C, symSize: 0x4 } + - { offset: 0x202845, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x185C, symBinAddr: 0x158D30, symSize: 0x40 } + - { offset: 0x202859, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSHAASQWb', symObjAddr: 0x189C, symBinAddr: 0x158D70, symSize: 0x4 } + - { offset: 0x20286D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOAGSQAAWl', symObjAddr: 0x18A0, symBinAddr: 0x158D74, symSize: 0x40 } + - { offset: 0x202881, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs0I3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x18E0, symBinAddr: 0x158DB4, symSize: 0x4 } + - { offset: 0x202895, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOAGs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x18E4, symBinAddr: 0x158DB8, symSize: 0x40 } + - { offset: 0x2028A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs0I3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1924, symBinAddr: 0x158DF8, symSize: 0x4 } + - { offset: 0x2028BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOAGs23CustomStringConvertibleAAWl', symObjAddr: 0x1928, symBinAddr: 0x158DFC, symSize: 0x40 } + - { offset: 0x2028D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1968, symBinAddr: 0x158E3C, symSize: 0x4 } + - { offset: 0x2028E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x196C, symBinAddr: 0x158E40, symSize: 0x40 } + - { offset: 0x2028F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x19AC, symBinAddr: 0x158E80, symSize: 0x4 } + - { offset: 0x20290D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x19B0, symBinAddr: 0x158E84, symSize: 0x40 } + - { offset: 0x202959, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSYAASY8rawValuexSg03RawL0Qz_tcfCTW', symObjAddr: 0x254, symBinAddr: 0x157C1C, symSize: 0x2C } + - { offset: 0x202982, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSYAASY8rawValue03RawL0QzvgTW', symObjAddr: 0x280, symBinAddr: 0x157C48, symSize: 0x90 } + - { offset: 0x2029BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs0I3KeyAAsAHP11stringValueSSvgTW', symObjAddr: 0x310, symBinAddr: 0x157CD8, symSize: 0x8C } + - { offset: 0x202A12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs0I3KeyAAsAHP11stringValuexSgSS_tcfCTW', symObjAddr: 0x39C, symBinAddr: 0x157D64, symSize: 0x24 } + - { offset: 0x202A83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleCfD', symObjAddr: 0x428, symBinAddr: 0x157DD8, symSize: 0x2C } + - { offset: 0x202ABC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC6encode2toys7Encoder_p_tKF', symObjAddr: 0x454, symBinAddr: 0x157E04, symSize: 0x1B8 } + - { offset: 0x202AED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC4fromAEs7Decoder_p_tKcfc', symObjAddr: 0x60C, symBinAddr: 0x157FBC, symSize: 0x1D4 } + - { offset: 0x202B1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x808, symBinAddr: 0x1581B8, symSize: 0x20 } + - { offset: 0x202B63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSYAASY8rawValuexSg03RawK0Qz_tcfCTW', symObjAddr: 0xA88, symBinAddr: 0x158438, symSize: 0x2C } + - { offset: 0x202B8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0xAB4, symBinAddr: 0x158464, symSize: 0x94 } + - { offset: 0x202BC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xB48, symBinAddr: 0x1584F8, symSize: 0x90 } + - { offset: 0x202C17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0xBD8, symBinAddr: 0x158588, symSize: 0x24 } + - { offset: 0x202C78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseCfD', symObjAddr: 0xC64, symBinAddr: 0x1585FC, symSize: 0x3C } + - { offset: 0x202CB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0xCC0, symBinAddr: 0x158658, symSize: 0x26C } + - { offset: 0x202CE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0xF4C, symBinAddr: 0x1588E4, symSize: 0x2A8 } + - { offset: 0x202D13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1280, symBinAddr: 0x158BB4, symSize: 0x20 } + - { offset: 0x202D2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysO8rawValueAGSgSS_tcfCTf4nd_n', symObjAddr: 0x19F0, symBinAddr: 0x158EC4, symSize: 0x5C } + - { offset: 0x202D64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x1A4C, symBinAddr: 0x158F20, symSize: 0x5C } + - { offset: 0x2035A8, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin8ScheduleC_Tg5013$s8PenNavUI14F66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1cn_n', symObjAddr: 0x6E0, symBinAddr: 0x15965C, symSize: 0x100 } + - { offset: 0x20396F, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin8ScheduleC_Tg5013$s8PenNavUI14F66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1nnncn_n', symObjAddr: 0x7E0, symBinAddr: 0x15975C, symSize: 0x584 } + - { offset: 0x203F2E, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_Si3key_Say7Penguin8ScheduleCG5valuet_Tg5013$s8PenNavUI14G87HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbSi3key_AK5valuet_SiAM_AkNttXEfU0_Tf1nnncn_n', symObjAddr: 0xD64, symBinAddr: 0x159CE0, symSize: 0x39C } + - { offset: 0x2043FA, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry7Penguin8ScheduleCG_Tg5013$s8PenNavUI14J66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1nncn_n', symObjAddr: 0x1100, symBinAddr: 0x15A07C, symSize: 0x148 } + - { offset: 0x20458A, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin8ScheduleC_Tg5013$s8PenNavUI14G66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1nncn_n', symObjAddr: 0x1248, symBinAddr: 0x15A1C4, symSize: 0x26C } + - { offset: 0x20490F, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKFSi3key_Say7Penguin8ScheduleCG5valuet_Tg5013$s8PenNavUI14H87HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbSi3key_AK5valuet_SiAM_AkNttXEfU0_Tf1nncn_n', symObjAddr: 0x14B4, symBinAddr: 0x15A430, symSize: 0x26C } + - { offset: 0x204CAA, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin8ScheduleC_Tg5013$s8PenNavUI14H66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1nnnnc_n', symObjAddr: 0x1720, symBinAddr: 0x15A69C, symSize: 0x360 } + - { offset: 0x204E2B, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlFSi3key_Say7Penguin8ScheduleCG5valuet_Tg5013$s8PenNavUI14I87HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbSi3key_AK5valuet_SiAM_AkNttXEfU0_Tf1nnnnc_n', symObjAddr: 0x1A80, symBinAddr: 0x15A9FC, symSize: 0x200 } + - { offset: 0x204F4C, size: 0x8, addend: 0x0, symName: '_$sSTsE21_copySequenceContents12initializing8IteratorQz_SitSry7ElementQzG_tFSDySiSay7Penguin8ScheduleCGG_Tg5', symObjAddr: 0x1DA0, symBinAddr: 0x15AC10, symSize: 0x154 } + - { offset: 0x205026, size: 0x8, addend: 0x0, symName: '_$sSTsE21_copySequenceContents12initializing8IteratorQz_SitSry7ElementQzG_tFSD4KeysVyS2S_G_Tg5', symObjAddr: 0x1EF4, symBinAddr: 0x15AD64, symSize: 0x154 } + - { offset: 0x2050F5, size: 0x8, addend: 0x0, symName: '_$sSTsE21_copySequenceContents12initializing8IteratorQz_SitSry7ElementQzG_tFShy10Foundation3URLVG_Tg5', symObjAddr: 0x2274, symBinAddr: 0x15B0E4, symSize: 0x20C } + - { offset: 0x205196, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x2480, symBinAddr: 0x15B2F0, symSize: 0x14 } + - { offset: 0x2051CE, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF7Penguin8ScheduleC_Tg5', symObjAddr: 0x2494, symBinAddr: 0x15B304, symSize: 0x14 } + - { offset: 0x205206, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyFSi3key_Say7Penguin8ScheduleCG5valuet_Tg5', symObjAddr: 0x24A8, symBinAddr: 0x15B318, symSize: 0x14 } + - { offset: 0x20523E, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyFSS_Tg5', symObjAddr: 0x24BC, symBinAddr: 0x15B32C, symSize: 0x14 } + - { offset: 0x205276, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI8FavoriteC_Tg5', symObjAddr: 0x24D0, symBinAddr: 0x15B340, symSize: 0x14 } + - { offset: 0x2052AE, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI5PlaceC_Tg5', symObjAddr: 0x24E4, symBinAddr: 0x15B354, symSize: 0x14 } + - { offset: 0x2052E6, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF7Penguin11POICategoryV_Tg5', symObjAddr: 0x24F8, symBinAddr: 0x15B368, symSize: 0x14 } + - { offset: 0x20531E, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF7Penguin5FloorC_Tg5', symObjAddr: 0x2520, symBinAddr: 0x15B37C, symSize: 0x14 } + - { offset: 0x205356, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x2534, symBinAddr: 0x15B390, symSize: 0x14 } + - { offset: 0x20538E, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF7Penguin10PoiPolygonV_Tg5', symObjAddr: 0x2548, symBinAddr: 0x15B3A4, symSize: 0x14 } + - { offset: 0x205791, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA7CGTypesVGWOb', symObjAddr: 0x46D4, symBinAddr: 0x15D478, symSize: 0x48 } + - { offset: 0x2057BF, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tFSnySiG_Tg5', symObjAddr: 0x0, symBinAddr: 0x158F7C, symSize: 0x88 } + - { offset: 0x20586C, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI15RendererCommandOyAC11CGTextTypesVG_Tg5', symObjAddr: 0x88, symBinAddr: 0x159004, symSize: 0xA4 } + - { offset: 0x205921, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AC11CGTextTypesV_G_Tg5', symObjAddr: 0x12C, symBinAddr: 0x1590A8, symSize: 0xA8 } + - { offset: 0x2059CE, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI15RendererCommandOyAC7CGTypesVG_Tg5', symObjAddr: 0x1E0, symBinAddr: 0x15915C, symSize: 0xE4 } + - { offset: 0x205A8B, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AC7CGTypesV_G_Tg5', symObjAddr: 0x2C4, symBinAddr: 0x159240, symSize: 0xA8 } + - { offset: 0x205B40, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI16FileDownloadData_p_Tg5', symObjAddr: 0x378, symBinAddr: 0x1592F4, symSize: 0x98 } + - { offset: 0x205BF5, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tFSi_Tg5', symObjAddr: 0x410, symBinAddr: 0x15938C, symSize: 0x84 } + - { offset: 0x205CB0, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin8ScheduleCG_Tg5013$s8PenNavUI14G66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1cn_n', symObjAddr: 0x530, symBinAddr: 0x1594AC, symSize: 0x68 } + - { offset: 0x205D6C, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVySi3key_Say7Penguin8ScheduleCG5valuetG_Tg5013$s8PenNavUI14H87HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbSi3key_AK5valuet_SiAM_AkNttXEfU0_Tf1cn_n', symObjAddr: 0x598, symBinAddr: 0x159514, symSize: 0x148 } + - { offset: 0x206417, size: 0x8, addend: 0x0, symName: '_$sSD8grouping2bySDyxSay7ElementQyd__GGqd__n_xADKXEtKcAERs_STRd__lufCSi_Say7Penguin8ScheduleCGTt1g5013$s8PenNavUI14E61HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSiAJXEfU_Tf1nc_nTf4g_n', symObjAddr: 0x2570, symBinAddr: 0x15B3B8, symSize: 0x2BC } + - { offset: 0x20677F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x282C, symBinAddr: 0x15B674, symSize: 0x260 } + - { offset: 0x206CC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV10isTodayOffySbSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x2A8C, symBinAddr: 0x15B8D4, symSize: 0x240 } + - { offset: 0x206FA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV6isOpenySbSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x2CCC, symBinAddr: 0x15BB14, symSize: 0x4C4 } + - { offset: 0x20732B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV23getNextOpeningTimeRangeySSSgSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x3190, symBinAddr: 0x15BFD8, symSize: 0x7E0 } + - { offset: 0x207BC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV26getCurrentOpeningTimeRange8scheduleSSSgSay7Penguin0D0CGSg_tFZTf4nd_n', symObjAddr: 0x3970, symBinAddr: 0x15C7B8, symSize: 0x554 } + - { offset: 0x207FBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV6isTime33_5560619FF73D588933C2A2D07617F087LL_20earlierThanOrEqualToSb10Foundation14DateComponentsV_AItFZTf4nnd_n', symObjAddr: 0x3EC4, symBinAddr: 0x15CD0C, symSize: 0xBC } + - { offset: 0x208077, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV20getRecentClosingTimeySSSgSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x3F80, symBinAddr: 0x15CDC8, symSize: 0x670 } + - { offset: 0x2088D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOMa', symObjAddr: 0x164, symBinAddr: 0x15D4C0, symSize: 0x10 } + - { offset: 0x2088E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOwet', symObjAddr: 0x174, symBinAddr: 0x15D4D0, symSize: 0x90 } + - { offset: 0x2088FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOwst', symObjAddr: 0x204, symBinAddr: 0x15D560, symSize: 0xB0 } + - { offset: 0x20890E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOMa', symObjAddr: 0x2B8, symBinAddr: 0x15D610, symSize: 0x10 } + - { offset: 0x2089CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSHAASQWb', symObjAddr: 0x628, symBinAddr: 0x15D980, symSize: 0x4 } + - { offset: 0x2089E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOACSQAAWl', symObjAddr: 0x62C, symBinAddr: 0x15D984, symSize: 0x40 } + - { offset: 0x208A71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSHAASQWb', symObjAddr: 0xA40, symBinAddr: 0x15DD98, symSize: 0x4 } + - { offset: 0x208A85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOACSQAAWl', symObjAddr: 0xA44, symBinAddr: 0x15DD9C, symSize: 0x40 } + - { offset: 0x208B53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOACSYAAWl', symObjAddr: 0x1AE0, symBinAddr: 0x15EDF4, symSize: 0x40 } + - { offset: 0x208B93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x454, symBinAddr: 0x15D7AC, symSize: 0x84 } + - { offset: 0x208C4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSHAASH9hashValueSivgTW', symObjAddr: 0x4D8, symBinAddr: 0x15D830, symSize: 0x60 } + - { offset: 0x208CCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x538, symBinAddr: 0x15D890, symSize: 0x40 } + - { offset: 0x208D1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x578, symBinAddr: 0x15D8D0, symSize: 0x5C } + - { offset: 0x208D8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x66C, symBinAddr: 0x15D9C4, symSize: 0xF8 } + - { offset: 0x208EA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSHAASH9hashValueSivgTW', symObjAddr: 0x764, symBinAddr: 0x15DABC, symSize: 0x9C } + - { offset: 0x208F59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x800, symBinAddr: 0x15DB58, symSize: 0x78 } + - { offset: 0x208FC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x878, symBinAddr: 0x15DBD0, symSize: 0x98 } + - { offset: 0x209061, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x998, symBinAddr: 0x15DCF0, symSize: 0x5C } + - { offset: 0x209084, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x9F4, symBinAddr: 0x15DD4C, symSize: 0x4C } + - { offset: 0x20910B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleO8rawValueSSvg', symObjAddr: 0x2C8, symBinAddr: 0x15D620, symSize: 0x18C } + - { offset: 0x20914E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x5D4, symBinAddr: 0x15D92C, symSize: 0x2C } + - { offset: 0x209177, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x600, symBinAddr: 0x15D958, symSize: 0x28 } + - { offset: 0x2091BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x910, symBinAddr: 0x15DC68, symSize: 0x2C } + - { offset: 0x2091E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x93C, symBinAddr: 0x15DC94, symSize: 0x5C } + - { offset: 0x209301, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleO12defaultFontsSDyACSo6UIFontCGvgZTf4d_n', symObjAddr: 0xA84, symBinAddr: 0x15DDDC, symSize: 0xF58 } + - { offset: 0x209B02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x1A20, symBinAddr: 0x15ED34, symSize: 0x64 } + - { offset: 0x209B39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x1A84, symBinAddr: 0x15ED98, symSize: 0x5C } + - { offset: 0x209F09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15GeofenceManagerC03getD4ByIdy7Penguin0D6RegionVSgSSF', symObjAddr: 0x0, symBinAddr: 0x15EE34, symSize: 0x450 } + - { offset: 0x209F2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15GeofenceManagerC14sharedInstance33_96AC6CA8D8EAACF3DB2766691F1A97FALLACSgvpZ', symObjAddr: 0x498, symBinAddr: 0x369D08, symSize: 0x0 } + - { offset: 0x20A0AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15GeofenceManagerCMa', symObjAddr: 0x474, symBinAddr: 0x15F284, symSize: 0x20 } + - { offset: 0x20A17E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15GeofenceManagerC03getD4ByIdy7Penguin0D6RegionVSgSSF', symObjAddr: 0x0, symBinAddr: 0x15EE34, symSize: 0x450 } + - { offset: 0x20A963, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateV8PenNavUIE07currentB4TimeSSvg', symObjAddr: 0x0, symBinAddr: 0x15F2A4, symSize: 0x1A8 } + - { offset: 0x20AA55, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateV8PenNavUIE07currentB4TimeSSvg', symObjAddr: 0x0, symBinAddr: 0x15F2A4, symSize: 0x1A8 } + - { offset: 0x20AB5F, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateV8PenNavUIE7timeAgoSSvg', symObjAddr: 0x1A8, symBinAddr: 0x15F44C, symSize: 0x57C } + - { offset: 0x20AF18, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateV8PenNavUIE8toString6formatS2S_tF', symObjAddr: 0x724, symBinAddr: 0x15F9C8, symSize: 0x230 } + - { offset: 0x20B464, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_4, symObjAddr: 0x0, symBinAddr: 0x15FBF8, symSize: 0xC } + - { offset: 0x20B478, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVMa', symObjAddr: 0x58, symBinAddr: 0x15FC04, symSize: 0x10 } + - { offset: 0x20B48C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4SizeVMa', symObjAddr: 0xBC, symBinAddr: 0x15FC14, symSize: 0x10 } + - { offset: 0x20B4A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeOMa', symObjAddr: 0xCC, symBinAddr: 0x15FC24, symSize: 0x10 } + - { offset: 0x20B52F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4SizeVSHAASQWb', symObjAddr: 0x224, symBinAddr: 0x15FD3C, symSize: 0x4 } + - { offset: 0x20B543, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4SizeVAESQAAWl', symObjAddr: 0x228, symBinAddr: 0x15FD40, symSize: 0x40 } + - { offset: 0x20B605, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSHAASQWb', symObjAddr: 0x3EC, symBinAddr: 0x15FF04, symSize: 0x4 } + - { offset: 0x20B619, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVAESQAAWl', symObjAddr: 0x3F0, symBinAddr: 0x15FF08, symSize: 0x40 } + - { offset: 0x20B62D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwxx', symObjAddr: 0x45C, symBinAddr: 0x15FF48, symSize: 0x28 } + - { offset: 0x20B641, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwcp', symObjAddr: 0x4A4, symBinAddr: 0x15FF70, symSize: 0x70 } + - { offset: 0x20B655, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwca', symObjAddr: 0x514, symBinAddr: 0x15FFE0, symSize: 0xB8 } + - { offset: 0x20B669, size: 0x8, addend: 0x0, symName: ___swift_memcpy33_8, symObjAddr: 0x5CC, symBinAddr: 0x160098, symSize: 0x14 } + - { offset: 0x20B67D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwta', symObjAddr: 0x5E0, symBinAddr: 0x1600AC, symSize: 0x90 } + - { offset: 0x20B691, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwet', symObjAddr: 0x670, symBinAddr: 0x16013C, symSize: 0x3C } + - { offset: 0x20B6A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwst', symObjAddr: 0x6AC, symBinAddr: 0x160178, symSize: 0x4C } + - { offset: 0x20B6B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwug', symObjAddr: 0x6F8, symBinAddr: 0x1601C4, symSize: 0x1C } + - { offset: 0x20B6CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwui', symObjAddr: 0x718, symBinAddr: 0x1601E0, symSize: 0x24 } + - { offset: 0x20B6E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOMa', symObjAddr: 0x73C, symBinAddr: 0x160204, symSize: 0x10 } + - { offset: 0x20B6F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointVMa', symObjAddr: 0x74C, symBinAddr: 0x160214, symSize: 0x10 } + - { offset: 0x20B709, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointVSHAASQWb', symObjAddr: 0x75C, symBinAddr: 0x160224, symSize: 0x4 } + - { offset: 0x20B71D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointVAESQAAWl', symObjAddr: 0x760, symBinAddr: 0x160228, symSize: 0x40 } + - { offset: 0x20B7C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x354, symBinAddr: 0x15FE6C, symSize: 0x60 } + - { offset: 0x20B881, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectV4hash4intoys6HasherVz_tF', symObjAddr: 0x268, symBinAddr: 0x15FD80, symSize: 0x7C } + - { offset: 0x20BA18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSHAASH9hashValueSivgTW', symObjAddr: 0x2E4, symBinAddr: 0x15FDFC, symSize: 0x64 } + - { offset: 0x20BA9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x348, symBinAddr: 0x15FE60, symSize: 0xC } + - { offset: 0x20BACD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x3B4, symBinAddr: 0x15FECC, symSize: 0x38 } + - { offset: 0x20BE94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x160280, symSize: 0xFC } + - { offset: 0x20BF37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewCMa', symObjAddr: 0x234, symBinAddr: 0x1604B4, symSize: 0x20 } + - { offset: 0x20BF76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x160280, symSize: 0xFC } + - { offset: 0x20BFDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xFC, symBinAddr: 0x16037C, symSize: 0xE0 } + - { offset: 0x20C010, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1DC, symBinAddr: 0x16045C, symSize: 0x28 } + - { offset: 0x20C02A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewCfD', symObjAddr: 0x204, symBinAddr: 0x160484, symSize: 0x30 } + - { offset: 0x20C3DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MapStateOMa', symObjAddr: 0x164, symBinAddr: 0x1604D4, symSize: 0x10 } + - { offset: 0x20C3EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MapStateOSHAASQWb', symObjAddr: 0x174, symBinAddr: 0x1604E4, symSize: 0x4 } + - { offset: 0x20C403, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MapStateOACSQAAWl', symObjAddr: 0x178, symBinAddr: 0x1604E8, symSize: 0x40 } + - { offset: 0x20CC25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewCfETo', symObjAddr: 0x1284, symBinAddr: 0x1617AC, symSize: 0x4C } + - { offset: 0x20CC54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewCMa', symObjAddr: 0x12D0, symBinAddr: 0x1617F8, symSize: 0x20 } + - { offset: 0x20CC68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC25adaptivePresentationStyle3forSo07UIModalgH0VSo24UIPresentationControllerC_tFTo', symObjAddr: 0x12F0, symBinAddr: 0x161818, symSize: 0x8 } + - { offset: 0x20CCA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC33presentationControllerWillDismissyySo014UIPresentationG0CFTo', symObjAddr: 0x12F8, symBinAddr: 0x161820, symSize: 0x34 } + - { offset: 0x20CCF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC13isHighlightedSbvWyycfU0_TA', symObjAddr: 0x1350, symBinAddr: 0x161878, symSize: 0x1C } + - { offset: 0x20CD0A, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x136C, symBinAddr: 0x161894, symSize: 0x10 } + - { offset: 0x20CD1E, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x137C, symBinAddr: 0x1618A4, symSize: 0x8 } + - { offset: 0x20CD32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC13isHighlightedSbvWyycfU_TA', symObjAddr: 0x1384, symBinAddr: 0x1618AC, symSize: 0x20 } + - { offset: 0x20CD46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC8showMenuyyFyycfU_TA', symObjAddr: 0x13F8, symBinAddr: 0x1618CC, symSize: 0x8 } + - { offset: 0x20CD5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x0, symBinAddr: 0x160528, symSize: 0x164 } + - { offset: 0x20CDCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x164, symBinAddr: 0x16068C, symSize: 0x20 } + - { offset: 0x20CE02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x184, symBinAddr: 0x1606AC, symSize: 0x154 } + - { offset: 0x20CE77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2D8, symBinAddr: 0x160800, symSize: 0x28 } + - { offset: 0x20CE91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC13isHighlightedSbvW', symObjAddr: 0x300, symBinAddr: 0x160828, symSize: 0x15C } + - { offset: 0x20CF99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC8showMenuyyF', symObjAddr: 0x5BC, symBinAddr: 0x160AE4, symSize: 0x2BC } + - { offset: 0x20D136, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC8showMenuyyFyycfU_', symObjAddr: 0x878, symBinAddr: 0x160DA0, symSize: 0x160 } + - { offset: 0x20D27D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC15handleLongPress33_B7783B3256895AABB8F462833D3413D5LLyySo06UILongH17GestureRecognizerCF', symObjAddr: 0x9D8, symBinAddr: 0x160F00, symSize: 0x824 } + - { offset: 0x20D680, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC15handleLongPress33_B7783B3256895AABB8F462833D3413D5LLyySo06UILongH17GestureRecognizerCFTo', symObjAddr: 0x11FC, symBinAddr: 0x161724, symSize: 0x50 } + - { offset: 0x20D6A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC17gestureRecognizer_33shouldRecognizeSimultaneouslyWithSbSo09UIGestureG0C_AGtFTo', symObjAddr: 0x124C, symBinAddr: 0x161774, symSize: 0x8 } + - { offset: 0x20D6BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewCfD', symObjAddr: 0x1254, symBinAddr: 0x16177C, symSize: 0x30 } + - { offset: 0x20DA64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x161934, symSize: 0xD0 } + - { offset: 0x20DB65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewCMa', symObjAddr: 0x228, symBinAddr: 0x161B5C, symSize: 0x20 } + - { offset: 0x20DBC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x161934, symSize: 0xD0 } + - { offset: 0x20DC48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xD0, symBinAddr: 0x161A04, symSize: 0x58 } + - { offset: 0x20DC97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC4drawyySo6CGRectVFTo', symObjAddr: 0x128, symBinAddr: 0x161A5C, symSize: 0x4 } + - { offset: 0x20DCAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC4drawyySo6CGRectVFTo', symObjAddr: 0x128, symBinAddr: 0x161A5C, symSize: 0x4 } + - { offset: 0x20DD5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC7asImageSo7UIImageCyF', symObjAddr: 0x12C, symBinAddr: 0x161A60, symSize: 0xCC } + - { offset: 0x20DDDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewCfD', symObjAddr: 0x1F8, symBinAddr: 0x161B2C, symSize: 0x30 } + - { offset: 0x20DE3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC4drawyySo6CGRectVFTf4nd_n', symObjAddr: 0x248, symBinAddr: 0x161B7C, symSize: 0x1E0 } + - { offset: 0x20E2D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC06updateD012fontResponseySayAA7AppFontCG_tF', symObjAddr: 0x0, symBinAddr: 0x161D5C, symSize: 0x5B4 } + - { offset: 0x20E2F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC14sharedInstance33_DA3E1E5F5878F3E7D999A070F7070CF4LLACSgvpZ', symObjAddr: 0x11B0, symBinAddr: 0x369EA8, symSize: 0x0 } + - { offset: 0x20E5F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerCMa', symObjAddr: 0xAEC, symBinAddr: 0x162848, symSize: 0x20 } + - { offset: 0x20E66A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC12registerFont33_DA3E1E5F5878F3E7D999A070F7070CF4LL7fontUrlSSSgSS_tFTf4nd_n', symObjAddr: 0xD54, symBinAddr: 0x162A6C, symSize: 0x384 } + - { offset: 0x20E787, size: 0x8, addend: 0x0, symName: '_$sSo10CFErrorRefaABs5Error10FoundationWl', symObjAddr: 0x1118, symBinAddr: 0x162DF0, symSize: 0x44 } + - { offset: 0x20E9EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC06updateD012fontResponseySayAA7AppFontCG_tF', symObjAddr: 0x0, symBinAddr: 0x161D5C, symSize: 0x5B4 } + - { offset: 0x20EF53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC14updateFontName33_DA3E1E5F5878F3E7D999A070F7070CF4LL12fontResponseyAA03AppG0CSg_tF', symObjAddr: 0x5B4, symBinAddr: 0x162310, symSize: 0x18C } + - { offset: 0x20F0B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC16updateFontStyles33_DA3E1E5F5878F3E7D999A070F7070CF4LL12fontResponseyAA03AppG0CSg_tF', symObjAddr: 0x740, symBinAddr: 0x16249C, symSize: 0x380 } + - { offset: 0x20F47B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerCfD', symObjAddr: 0xAC0, symBinAddr: 0x16281C, symSize: 0x2C } + - { offset: 0x20F4DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerCACycfc', symObjAddr: 0xB0C, symBinAddr: 0x162868, symSize: 0x204 } + - { offset: 0x20FB9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x162E34, symSize: 0x10 } + - { offset: 0x20FFEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCfE', symObjAddr: 0x364, symBinAddr: 0x163198, symSize: 0xA8 } + - { offset: 0x210017, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCfETo', symObjAddr: 0x52C, symBinAddr: 0x163360, symSize: 0xB4 } + - { offset: 0x210085, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCMa', symObjAddr: 0xC64, symBinAddr: 0x163A98, symSize: 0x20 } + - { offset: 0x21019F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutCMa', symObjAddr: 0xD2C, symBinAddr: 0x163B3C, symSize: 0x20 } + - { offset: 0x2101D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC09layoutForF0AA08FloatingF6Layout_pyFTo', symObjAddr: 0xD4C, symBinAddr: 0x163B5C, symSize: 0x74 } + - { offset: 0x21024A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC011behaviorForF0AA08FloatingF8Behavior_pyFTo', symObjAddr: 0xDC0, symBinAddr: 0x163BD0, symSize: 0x24 } + - { offset: 0x210292, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC05setupF0yyF', symObjAddr: 0xDE4, symBinAddr: 0x163BF4, symSize: 0x130 } + - { offset: 0x210381, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC05setupF0yyFTo', symObjAddr: 0xF14, symBinAddr: 0x163D24, symSize: 0x28 } + - { offset: 0x2103AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC08floatingF7DidMoveyyAA08FloatingfH0CF', symObjAddr: 0xF3C, symBinAddr: 0x163D4C, symSize: 0x238 } + - { offset: 0x2105A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC08floatingF7DidMoveyyAA08FloatingfH0CFTo', symObjAddr: 0x1174, symBinAddr: 0x163F84, symSize: 0x50 } + - { offset: 0x2105F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0lQ0OSgtFTW', symObjAddr: 0x1240, symBinAddr: 0x163FD4, symSize: 0xC8 } + - { offset: 0x21062B, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1334, symBinAddr: 0x1640C0, symSize: 0x10 } + - { offset: 0x21063F, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1344, symBinAddr: 0x1640D0, symSize: 0x8 } + - { offset: 0x2106D7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8capacityAByxq_Gs07__CocoaB0Vn_SitcfC8PenNavUI18FloatingPanelStateC_AG0hI15LayoutAnchoring_pTt1g5', symObjAddr: 0x135C, symBinAddr: 0x1640D8, symSize: 0x228 } + - { offset: 0x2107F9, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtF8PenNavUI18FloatingPanelStateC_AF0lM15LayoutAnchoring_pTg5Tf4ennn_nAF0lmO6AnchorC_Tg5', symObjAddr: 0x1584, symBinAddr: 0x164300, symSize: 0x13C } + - { offset: 0x210B29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x162E34, symSize: 0x10 } + - { offset: 0x210B41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x162E34, symSize: 0x10 } + - { offset: 0x210B87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x162E44, symSize: 0x34 } + - { offset: 0x210BD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17distanceUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x162E78, symSize: 0x10 } + - { offset: 0x210BEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17distanceUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x162E78, symSize: 0x10 } + - { offset: 0x210C29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17distanceUnitLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x162E88, symSize: 0x34 } + - { offset: 0x210C78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x162EBC, symSize: 0x10 } + - { offset: 0x210C90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x162EBC, symSize: 0x10 } + - { offset: 0x210CCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13durationLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x162ECC, symSize: 0x34 } + - { offset: 0x210D1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17durationUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x162F00, symSize: 0x10 } + - { offset: 0x210D32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17durationUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x162F00, symSize: 0x10 } + - { offset: 0x210D6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17durationUnitLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x162F10, symSize: 0x34 } + - { offset: 0x210DBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16arrivalTimeLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x162F44, symSize: 0x10 } + - { offset: 0x210DD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16arrivalTimeLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x162F44, symSize: 0x10 } + - { offset: 0x210E0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16arrivalTimeLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x162F54, symSize: 0x34 } + - { offset: 0x210E5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16directionsButtonSo8UIButtonCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x162F88, symSize: 0x10 } + - { offset: 0x210E76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16directionsButtonSo8UIButtonCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x162F88, symSize: 0x10 } + - { offset: 0x210EB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16directionsButtonSo8UIButtonCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x162F98, symSize: 0x34 } + - { offset: 0x210F1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC11viewDidLoadyyF', symObjAddr: 0x198, symBinAddr: 0x162FCC, symSize: 0x1A4 } + - { offset: 0x210FAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x33C, symBinAddr: 0x163170, symSize: 0x28 } + - { offset: 0x210FBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCfD', symObjAddr: 0x40C, symBinAddr: 0x163240, symSize: 0x84 } + - { offset: 0x210FF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCfDTo', symObjAddr: 0x490, symBinAddr: 0x1632C4, symSize: 0x9C } + - { offset: 0x211047, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC03endE0yyFTo', symObjAddr: 0x5E0, symBinAddr: 0x163414, symSize: 0x70 } + - { offset: 0x2110B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC19showRouteDirectionsyySo8UIButtonCFTo', symObjAddr: 0x650, symBinAddr: 0x163484, symSize: 0x70 } + - { offset: 0x2110FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC9setLengthyySdF', symObjAddr: 0x6C0, symBinAddr: 0x1634F4, symSize: 0x130 } + - { offset: 0x2111B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC11setDurationyySdF', symObjAddr: 0x7F0, symBinAddr: 0x163624, symSize: 0x174 } + - { offset: 0x211281, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC14setArrivalTime8durationySd_tFTo', symObjAddr: 0x964, symBinAddr: 0x163798, symSize: 0x98 } + - { offset: 0x2112EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x9FC, symBinAddr: 0x163830, symSize: 0xFC } + - { offset: 0x21132C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xAF8, symBinAddr: 0x16392C, symSize: 0x60 } + - { offset: 0x21135E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB58, symBinAddr: 0x16398C, symSize: 0xE4 } + - { offset: 0x211391, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xC3C, symBinAddr: 0x163A70, symSize: 0x28 } + - { offset: 0x2113AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC8positionAA08FloatingF8PositionOvgTo', symObjAddr: 0xC84, symBinAddr: 0x163AB8, symSize: 0x8 } + - { offset: 0x2113C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC8positionAA08FloatingF8PositionOvgTo', symObjAddr: 0xC84, symBinAddr: 0x163AB8, symSize: 0x8 } + - { offset: 0x2113DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC12initialStateAA08FloatingfK0CvgTo', symObjAddr: 0xC8C, symBinAddr: 0x163AC0, symSize: 0x8 } + - { offset: 0x2113F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC12initialStateAA08FloatingfK0CvgTo', symObjAddr: 0xC8C, symBinAddr: 0x163AC0, symSize: 0x8 } + - { offset: 0x21140E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC7anchorsSDyAA08FloatingF5StateCAA0kfI9Anchoring_pGvgTo', symObjAddr: 0xC94, symBinAddr: 0x163AC8, symSize: 0x6C } + - { offset: 0x211438, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA08FloatingF5StateC_tFTo', symObjAddr: 0xD00, symBinAddr: 0x163B34, symSize: 0x8 } + - { offset: 0x21161D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC7anchorsSDyAA08FloatingF5StateCAA0kfI9Anchoring_pGvgTf4d_n', symObjAddr: 0x16C0, symBinAddr: 0x16443C, symSize: 0x258 } + - { offset: 0x21202A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellCfETo', symObjAddr: 0xD2C, symBinAddr: 0x1653C0, symSize: 0xA8 } + - { offset: 0x212059, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellCMa', symObjAddr: 0xDD4, symBinAddr: 0x165468, symSize: 0x20 } + - { offset: 0x21206D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtFyycfU_TA', symObjAddr: 0xE18, symBinAddr: 0x1654AC, symSize: 0x20 } + - { offset: 0x212081, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtFyycfU0_TA', symObjAddr: 0xE48, symBinAddr: 0x1654CC, symSize: 0x20 } + - { offset: 0x212095, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtFyycfU1_TA', symObjAddr: 0xE68, symBinAddr: 0x1654EC, symSize: 0x20 } + - { offset: 0x2120A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtFyycfU2_TA', symObjAddr: 0xE88, symBinAddr: 0x16550C, symSize: 0x20 } + - { offset: 0x212209, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC22directionsTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x164694, symSize: 0x10 } + - { offset: 0x212221, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC22directionsTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x164694, symSize: 0x10 } + - { offset: 0x212267, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC22directionsTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1646A4, symSize: 0x34 } + - { offset: 0x2122B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16callTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1646D8, symSize: 0x10 } + - { offset: 0x2122CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16callTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1646D8, symSize: 0x10 } + - { offset: 0x212309, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16callTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1646E8, symSize: 0x34 } + - { offset: 0x212358, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16mailTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x16471C, symSize: 0x10 } + - { offset: 0x212370, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16mailTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x16471C, symSize: 0x10 } + - { offset: 0x2123AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16mailTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x16472C, symSize: 0x34 } + - { offset: 0x2123FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC19websiteTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x164760, symSize: 0x10 } + - { offset: 0x212412, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC19websiteTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x164760, symSize: 0x10 } + - { offset: 0x21244D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC19websiteTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x164770, symSize: 0x34 } + - { offset: 0x21249C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16moreTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x1647A4, symSize: 0x10 } + - { offset: 0x2124B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16moreTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x1647A4, symSize: 0x10 } + - { offset: 0x2124EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16moreTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x1647B4, symSize: 0x34 } + - { offset: 0x2125BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16buttonsStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x1647E8, symSize: 0x10 } + - { offset: 0x2125D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16buttonsStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x1647E8, symSize: 0x10 } + - { offset: 0x212615, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16buttonsStackViewSo07UIStackI0CSgvsTo', symObjAddr: 0x164, symBinAddr: 0x1647F8, symSize: 0x34 } + - { offset: 0x212664, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC14directionLabelSo7UILabelCSgvgTo', symObjAddr: 0x198, symBinAddr: 0x16482C, symSize: 0x20 } + - { offset: 0x2126BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC14directionLabelSo7UILabelCSgvsTo', symObjAddr: 0x1B8, symBinAddr: 0x16484C, symSize: 0x14 } + - { offset: 0x21270F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC13directionIconSo11UIImageViewCSgvgTo', symObjAddr: 0x1CC, symBinAddr: 0x164860, symSize: 0x20 } + - { offset: 0x212769, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC13directionIconSo11UIImageViewCSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x164880, symSize: 0x14 } + - { offset: 0x2127BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x200, symBinAddr: 0x164894, symSize: 0x70 } + - { offset: 0x2127EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC15prepareForReuseyyF', symObjAddr: 0x270, symBinAddr: 0x164904, symSize: 0xBC } + - { offset: 0x212897, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC15prepareForReuseyyFTo', symObjAddr: 0x32C, symBinAddr: 0x1649C0, symSize: 0x28 } + - { offset: 0x212900, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtF', symObjAddr: 0x354, symBinAddr: 0x1649E8, symSize: 0x420 } + - { offset: 0x212BFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC10setUpViewsyyF', symObjAddr: 0x814, symBinAddr: 0x164EA8, symSize: 0x164 } + - { offset: 0x212CD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC21updateDirectionToStopyyF', symObjAddr: 0x978, symBinAddr: 0x16500C, symSize: 0x120 } + - { offset: 0x212D5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0xA98, symBinAddr: 0x16512C, symSize: 0x10C } + - { offset: 0x212D9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xBA4, symBinAddr: 0x165238, symSize: 0x48 } + - { offset: 0x212DD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xBEC, symBinAddr: 0x165280, symSize: 0xE8 } + - { offset: 0x212E09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xCD4, symBinAddr: 0x165368, symSize: 0x28 } + - { offset: 0x212E1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellCfD', symObjAddr: 0xCFC, symBinAddr: 0x165390, symSize: 0x30 } + - { offset: 0x2131B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ClosureAlertTypeO5titleSSvg', symObjAddr: 0x0, symBinAddr: 0x16552C, symSize: 0x100 } + - { offset: 0x213258, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ClosureAlertTypeO5titleSSvg', symObjAddr: 0x0, symBinAddr: 0x16552C, symSize: 0x100 } + - { offset: 0x2138F5, size: 0x8, addend: 0x0, symName: '_$sSTsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lF9CryptoKit12SHA256DigestV_SSs5NeverOTg540$sSS8PenNavUIE6sha256SSyFSSs5UInt8VXEfU_Tf1cn_n', symObjAddr: 0x159C, symBinAddr: 0x166AFC, symSize: 0x314 } + - { offset: 0x213E13, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE17heightForWithFont4font5width6insets12CoreGraphics7CGFloatVSo6UIFontC_AHSo12UIEdgeInsetsVtF', symObjAddr: 0x0, symBinAddr: 0x16562C, symSize: 0x150 } + - { offset: 0x213EDF, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE10lineSpaced_4fontSo18NSAttributedStringC12CoreGraphics7CGFloatV_So6UIFontCtF', symObjAddr: 0x150, symBinAddr: 0x16577C, symSize: 0x208 } + - { offset: 0x2141AE, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE6sha256SSyF', symObjAddr: 0x83C, symBinAddr: 0x165E68, symSize: 0x1C4 } + - { offset: 0x2142AD, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE6toDate6format10Foundation0E0VSgSS_tF', symObjAddr: 0xA00, symBinAddr: 0x16602C, symSize: 0x270 } + - { offset: 0x2144DD, size: 0x8, addend: 0x0, symName: '_$sSo18NSAttributedStringC8PenNavUIE30updatingFontForWordsContaining_4fontABSS_So6UIFontCtF', symObjAddr: 0xC70, symBinAddr: 0x16629C, symSize: 0x440 } + - { offset: 0x214891, size: 0x8, addend: 0x0, symName: '_$sSo18NSAttributedStringC8PenNavUIE12applyingFont_5afterABSo6UIFontC_SaySSGtF', symObjAddr: 0x1258, symBinAddr: 0x166884, symSize: 0x278 } + - { offset: 0x214BC6, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationO22withUnsafeMutableBytesyxxSwKXEKlFs16IndexingIteratorVySS8UTF8ViewVG_Sit_Tg5', symObjAddr: 0x18B0, symBinAddr: 0x166E10, symSize: 0x398 } + - { offset: 0x214CF9, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufcAC15_RepresentationOSWXEfU_', symObjAddr: 0x1C48, symBinAddr: 0x1671A8, symSize: 0x8C } + - { offset: 0x214D6E, size: 0x8, addend: 0x0, symName: '_$sSw17withMemoryRebound2to_q0_xm_q0_SryxGq_YKXEtq_YKs5ErrorR_Ri_zRi_0_r1_lFs5UInt8V_s5NeverOs16IndexingIteratorVySS8UTF8ViewVG_SitTt1g5', symObjAddr: 0x1CD4, symBinAddr: 0x167234, symSize: 0x60 } + - { offset: 0x214DA1, size: 0x8, addend: 0x0, symName: '_$s10Foundation13__DataStorageC22withUnsafeMutableBytes2in5applyxSnySiG_xSwKXEtKlFs16IndexingIteratorVySS8UTF8ViewVG_Sit_Tg5', symObjAddr: 0x1D34, symBinAddr: 0x167294, symSize: 0xAC } + - { offset: 0x214DFD, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufc8IteratorQz_SitSwXEfU1_AI_SitSryAEGXEfU_SS8UTF8ViewV_TG5', symObjAddr: 0x1DE0, symBinAddr: 0x167340, symSize: 0x4C } + - { offset: 0x214EDC, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationO15withUnsafeBytesyxxSWKXEKlFyt_Tg5063$s9CryptoKit12HashFunctionPAAE6update4datayqd___t10Foundation12B70ProtocolRd__lFy7Regions_7ElementQYd__XEfU_ySWXEfU_AA6SHA256V_AF0H0VTg50H3Kit0X0VTf1ncn_n', symObjAddr: 0x1E2C, symBinAddr: 0x16738C, symSize: 0x1AC } + - { offset: 0x214FD8, size: 0x8, addend: 0x0, symName: '_$s10Foundation13__DataStorageC15withUnsafeBytes2in5applyxSnySiG_xSWKXEtKlFyt_Tg5063$s9CryptoKit12HashFunctionPAAE6update4datayqd___t10Foundation12B70ProtocolRd__lFy7Regions_7ElementQYd__XEfU_ySWXEfU_AA6SHA256V_AF0H0VTg50J3Kit0Z0VTf1nncn_n', symObjAddr: 0x1FD8, symBinAddr: 0x167538, symSize: 0xC4 } + - { offset: 0x215043, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV06InlineB0VyAESWcfCTf4nd_n', symObjAddr: 0x215C, symBinAddr: 0x1675FC, symSize: 0xB4 } + - { offset: 0x2150C6, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV10LargeSliceVyAESWcfCTf4nd_n', symObjAddr: 0x2210, symBinAddr: 0x1676B0, symSize: 0x78 } + - { offset: 0x2150F3, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV11InlineSliceVyAESWcfCTf4nd_n', symObjAddr: 0x2288, symBinAddr: 0x167728, symSize: 0x80 } + - { offset: 0x215148, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationOyAESWcfCTf4nd_n', symObjAddr: 0x2308, symBinAddr: 0x1677A8, symSize: 0x64 } + - { offset: 0x215199, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationO5countAESi_tcfCTf4nd_n', symObjAddr: 0x236C, symBinAddr: 0x16780C, symSize: 0x9C } + - { offset: 0x215204, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufc8IteratorQz_SitSwXEfU1_SS8UTF8ViewV_TG5TA', symObjAddr: 0x2408, symBinAddr: 0x1678A8, symSize: 0x58 } + - { offset: 0x215242, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufc8IteratorQz_SitSwXEfU1_AI_SitSryAEGXEfU_SS8UTF8ViewV_TG5TA', symObjAddr: 0x24D0, symBinAddr: 0x167900, symSize: 0x1C } + - { offset: 0x215256, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeya_yptWOc', symObjAddr: 0x24EC, symBinAddr: 0x16791C, symSize: 0x48 } + - { offset: 0x215303, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufCSS8UTF8ViewV_Tt0g5', symObjAddr: 0x358, symBinAddr: 0x165984, symSize: 0x4E4 } + - { offset: 0x21591B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC10backButtonSo8UIButtonCvg', symObjAddr: 0x0, symBinAddr: 0x167964, symSize: 0x64 } + - { offset: 0x215AC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlCfETo', symObjAddr: 0x964, symBinAddr: 0x1682C8, symSize: 0x3C } + - { offset: 0x215AF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlCMa', symObjAddr: 0x9A0, symBinAddr: 0x168304, symSize: 0x20 } + - { offset: 0x215B7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC10backButtonSo8UIButtonCvg', symObjAddr: 0x0, symBinAddr: 0x167964, symSize: 0x64 } + - { offset: 0x215B9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC10backButtonSo8UIButtonCvgAFyXEfU_', symObjAddr: 0x64, symBinAddr: 0x1679C8, symSize: 0x288 } + - { offset: 0x215C99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlCACycfcTo', symObjAddr: 0x2EC, symBinAddr: 0x167C50, symSize: 0xA4 } + - { offset: 0x215CEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x390, symBinAddr: 0x167CF4, symSize: 0xB0 } + - { offset: 0x215D1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x440, symBinAddr: 0x167DA4, symSize: 0x28 } + - { offset: 0x215D66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC9setupView33_5733A01A08E10C5381DDE5E0766214B3LLyyF', symObjAddr: 0x468, symBinAddr: 0x167DCC, symSize: 0x430 } + - { offset: 0x215EAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC16backButtonTappedyyFTo', symObjAddr: 0x898, symBinAddr: 0x1681FC, symSize: 0x70 } + - { offset: 0x215F11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x908, symBinAddr: 0x16826C, symSize: 0x2C } + - { offset: 0x215F70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlCfD', symObjAddr: 0x934, symBinAddr: 0x168298, symSize: 0x30 } + - { offset: 0x216350, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE18substituteFontNameSSvgTo', symObjAddr: 0x0, symBinAddr: 0x168324, symSize: 0x94 } + - { offset: 0x21638F, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE18substituteFontNameSSvsTo', symObjAddr: 0x94, symBinAddr: 0x1683B8, symSize: 0x54 } + - { offset: 0x2163AB, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE18substituteFontNameSSvs', symObjAddr: 0xE8, symBinAddr: 0x16840C, symSize: 0xC28 } + - { offset: 0x2165A8, size: 0x8, addend: 0x0, symName: '_$s10Foundation6LocaleVSgWOh', symObjAddr: 0x1B30, symBinAddr: 0x169DCC, symSize: 0x40 } + - { offset: 0x216A06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC08insertOre4LastE4Data9tableName10dateStringyAA0abdL0O_SSSgtF', symObjAddr: 0x0, symBinAddr: 0x169E1C, symSize: 0x484 } + - { offset: 0x216B83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryCMa', symObjAddr: 0xAF8, symBinAddr: 0x16A914, symSize: 0x20 } + - { offset: 0x216B97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC18getLastUpdatedDate9tableNameSSAA0abdL0O_tFyyYbXEfU_TA', symObjAddr: 0xB3C, symBinAddr: 0x16A958, symSize: 0x8 } + - { offset: 0x216BAB, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xB5C, symBinAddr: 0x16A970, symSize: 0x10 } + - { offset: 0x216BBF, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xB6C, symBinAddr: 0x16A980, symSize: 0x8 } + - { offset: 0x216BD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC08insertOre4LastE4Data9tableName10dateStringyAA0abdL0O_SSSgtFyyYbXEfU_TA', symObjAddr: 0xC70, symBinAddr: 0x16A9BC, symSize: 0xC } + - { offset: 0x216DE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC08insertOre4LastE4Data9tableName10dateStringyAA0abdL0O_SSSgtF', symObjAddr: 0x0, symBinAddr: 0x169E1C, symSize: 0x484 } + - { offset: 0x216F2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC08insertOre4LastE4Data9tableName10dateStringyAA0abdL0O_SSSgtFyyYbXEfU_', symObjAddr: 0x484, symBinAddr: 0x16A2A0, symSize: 0x250 } + - { offset: 0x216FFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC18getLastUpdatedDate9tableNameSSAA0abdL0O_tF', symObjAddr: 0x6D4, symBinAddr: 0x16A4F0, symSize: 0x1A0 } + - { offset: 0x21709B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC18getLastUpdatedDate9tableNameSSAA0abdL0O_tFyyYbXEfU_', symObjAddr: 0x874, symBinAddr: 0x16A690, symSize: 0x258 } + - { offset: 0x217325, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryCfD', symObjAddr: 0xACC, symBinAddr: 0x16A8E8, symSize: 0x2C } + - { offset: 0x217365, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC21deleteLastUpdatedDate9tableNameyAA0abdL0O_tFTf4dn_n', symObjAddr: 0xC7C, symBinAddr: 0x16A9C8, symSize: 0x260 } + - { offset: 0x217AF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CGTransformingPatternCMa', symObjAddr: 0x100, symBinAddr: 0x16AD34, symSize: 0x20 } + - { offset: 0x217B08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwxx', symObjAddr: 0x14C, symBinAddr: 0x16AD54, symSize: 0x8 } + - { offset: 0x217B1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwcp', symObjAddr: 0x154, symBinAddr: 0x16AD5C, symSize: 0x44 } + - { offset: 0x217B30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwca', symObjAddr: 0x198, symBinAddr: 0x16ADA0, symSize: 0x74 } + - { offset: 0x217B44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwta', symObjAddr: 0x228, symBinAddr: 0x16AE14, symSize: 0x4C } + - { offset: 0x217B58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwet', symObjAddr: 0x274, symBinAddr: 0x16AE60, symSize: 0x48 } + - { offset: 0x217B6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwst', symObjAddr: 0x2BC, symBinAddr: 0x16AEA8, symSize: 0x4C } + - { offset: 0x217B80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVMa', symObjAddr: 0x308, symBinAddr: 0x16AEF4, symSize: 0x10 } + - { offset: 0x217B94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVMa', symObjAddr: 0x318, symBinAddr: 0x16AF04, symSize: 0x10 } + - { offset: 0x217BA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA9BlendModeAaDP_SQWT', symObjAddr: 0x328, symBinAddr: 0x16AF14, symSize: 0x30 } + - { offset: 0x217BBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA5ColorAaDP_SQWT', symObjAddr: 0x358, symBinAddr: 0x16AF44, symSize: 0x30 } + - { offset: 0x217BD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA8FillRuleAaDP_SQWT', symObjAddr: 0x388, symBinAddr: 0x16AF74, symSize: 0x30 } + - { offset: 0x217BE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA5FloatAaDP_SQWT', symObjAddr: 0x3B8, symBinAddr: 0x16AFA4, symSize: 0x4 } + - { offset: 0x217BF8, size: 0x8, addend: 0x0, symName: '_$s12CoreGraphics7CGFloatVACSQAAWl', symObjAddr: 0x3BC, symBinAddr: 0x16AFA8, symSize: 0x40 } + - { offset: 0x217C0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA8GradientAaDP_SQWT', symObjAddr: 0x3FC, symBinAddr: 0x16AFE8, symSize: 0x30 } + - { offset: 0x217C20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA5ImageAaDP_SQWT', symObjAddr: 0x42C, symBinAddr: 0x16B018, symSize: 0x30 } + - { offset: 0x217C34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA7LineCapAaDP_SQWT', symObjAddr: 0x45C, symBinAddr: 0x16B048, symSize: 0x30 } + - { offset: 0x217C48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA8LineJoinAaDP_SQWT', symObjAddr: 0x48C, symBinAddr: 0x16B078, symSize: 0x30 } + - { offset: 0x217C5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA4PathAaDP_SQWT', symObjAddr: 0x4BC, symBinAddr: 0x16B0A8, symSize: 0x30 } + - { offset: 0x217C70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA7PatternAaDP_SQWT', symObjAddr: 0x4EC, symBinAddr: 0x16B0D8, symSize: 0x2C } + - { offset: 0x217C84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA5PointAaDP_SQWT', symObjAddr: 0x518, symBinAddr: 0x16B104, symSize: 0x30 } + - { offset: 0x217C98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA4RectAaDP_SQWT', symObjAddr: 0x548, symBinAddr: 0x16B134, symSize: 0x30 } + - { offset: 0x217CAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA4SizeAaDP_SQWT', symObjAddr: 0x578, symBinAddr: 0x16B164, symSize: 0x30 } + - { offset: 0x217CC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA9TransformAaDP_SQWT', symObjAddr: 0x5A8, symBinAddr: 0x16B194, symSize: 0x30 } + - { offset: 0x217CD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAcA13RendererTypesAAWl', symObjAddr: 0x618, symBinAddr: 0x16B1C4, symSize: 0x40 } + - { offset: 0x2180B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererV7setFill7patternyAA21CGTransformingPatternC_tFySo12CGContextRefacAGcfu_yAIcfu0_TA', symObjAddr: 0xC68, symBinAddr: 0x16B800, symSize: 0x4 } + - { offset: 0x2180C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererV7setFill7patternyAA21CGTransformingPatternC_tFySo12CGContextRefacAGcfu_yAIcfu0_TA', symObjAddr: 0xC68, symBinAddr: 0x16B800, symSize: 0x4 } + - { offset: 0x2180EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA7CGTypesVGWOc', symObjAddr: 0xCB0, symBinAddr: 0x16B804, symSize: 0x48 } + - { offset: 0x2180FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA7CGTypesVGWOh', symObjAddr: 0xCF8, symBinAddr: 0x16B84C, symSize: 0x40 } + - { offset: 0x218119, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVWOh', symObjAddr: 0xD38, symBinAddr: 0x16B88C, symSize: 0x28 } + - { offset: 0x21832C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderVMa', symObjAddr: 0x12BC, symBinAddr: 0x16BE10, symSize: 0x10 } + - { offset: 0x21860A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CGTransformingPatternC4drawyySo12CGContextRefaF', symObjAddr: 0x0, symBinAddr: 0x16AC34, symSize: 0xDC } + - { offset: 0x21878D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CGTransformingPatternCfD', symObjAddr: 0xDC, symBinAddr: 0x16AD10, symSize: 0x24 } + - { offset: 0x2188C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererV7setFill7patternyAA21CGTransformingPatternC_tF', symObjAddr: 0x66C, symBinAddr: 0x16B204, symSize: 0x1D4 } + - { offset: 0x218A65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV10createPath33_7E47ACCE2CDCE5B8B63E9B3009B7E758LL4fromSo9CGPathRefaAA9LayerTreeO0F0C_tFTf4nd_n', symObjAddr: 0x840, symBinAddr: 0x16B3D8, symSize: 0x164 } + - { offset: 0x218CEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV10createPath4fromSo9CGPathRefaAA9LayerTreeO5ShapeO_tFTf4nd_n', symObjAddr: 0x9A4, symBinAddr: 0x16B53C, symSize: 0x2C4 } + - { offset: 0x21915A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV10createPath4from2at4withSo9CGPathRefaSgSS_AA9LayerTreeO5PointVAL14TextAttributesVtFTf4nnnd_n', symObjAddr: 0xD60, symBinAddr: 0x16B8B4, symSize: 0xF4 } + - { offset: 0x219253, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV10createPath4fromSo9CGPathRefaSayAGG_tFTf4nd_n', symObjAddr: 0xE54, symBinAddr: 0x16B9A8, symSize: 0xF0 } + - { offset: 0x219493, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV11createColor4fromSo10CGColorRefaAA9LayerTreeO0F0O_tFTf4nd_n', symObjAddr: 0xF44, symBinAddr: 0x16BA98, symSize: 0x174 } + - { offset: 0x219799, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV14createGradient4fromSo13CGGradientRefaAA9LayerTreeO0F0V_tFTf4nd_n', symObjAddr: 0x10B8, symBinAddr: 0x16BC0C, symSize: 0x204 } + - { offset: 0x219FBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataC07poiViewG015showsMoreButtonAcA03PoiiG0C_Sbtcfc', symObjAddr: 0x0, symBinAddr: 0x16BE28, symSize: 0x94 } + - { offset: 0x21A047, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataCMa', symObjAddr: 0xC8, symBinAddr: 0x16BEF0, symSize: 0x20 } + - { offset: 0x21A05C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataC07poiViewG015showsMoreButtonAcA03PoiiG0C_Sbtcfc', symObjAddr: 0x0, symBinAddr: 0x16BE28, symSize: 0x94 } + - { offset: 0x21A0D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataCfD', symObjAddr: 0x94, symBinAddr: 0x16BEBC, symSize: 0x34 } + - { offset: 0x21A109, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataC13messageDetailAcA07MessageI0C_tcfcTf4gn_n', symObjAddr: 0xE8, symBinAddr: 0x16BF10, symSize: 0x74 } + - { offset: 0x21A6B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseCMa', symObjAddr: 0x1C8, symBinAddr: 0x16BFD4, symSize: 0x20 } + - { offset: 0x21A6CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOAFs0G3KeyAAWl', symObjAddr: 0x53C, symBinAddr: 0x16C2E0, symSize: 0x40 } + - { offset: 0x21A6DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOMa', symObjAddr: 0x7B0, symBinAddr: 0x16C388, symSize: 0x10 } + - { offset: 0x21A6F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOSHAASQWb', symObjAddr: 0x7C0, symBinAddr: 0x16C398, symSize: 0x4 } + - { offset: 0x21A706, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOAFSQAAWl', symObjAddr: 0x7C4, symBinAddr: 0x16C39C, symSize: 0x40 } + - { offset: 0x21A71A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x804, symBinAddr: 0x16C3DC, symSize: 0x4 } + - { offset: 0x21A72E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x808, symBinAddr: 0x16C3E0, symSize: 0x40 } + - { offset: 0x21A742, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x848, symBinAddr: 0x16C420, symSize: 0x4 } + - { offset: 0x21A756, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x84C, symBinAddr: 0x16C424, symSize: 0x40 } + - { offset: 0x21A784, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x154, symBinAddr: 0x16BF84, symSize: 0x28 } + - { offset: 0x21A7A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x17C, symBinAddr: 0x16BFAC, symSize: 0x28 } + - { offset: 0x21A7E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x1E8, symBinAddr: 0x16BFF4, symSize: 0x110 } + - { offset: 0x21A815, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x2F8, symBinAddr: 0x16C104, symSize: 0x168 } + - { offset: 0x21A853, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x460, symBinAddr: 0x16C26C, symSize: 0x54 } + - { offset: 0x21A87C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x4B4, symBinAddr: 0x16C2C0, symSize: 0x20 } + - { offset: 0x21B2CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC26extendPathToSharedLocationyy7Penguin03SubH0C_AE5FloorCtF', symObjAddr: 0x20, symBinAddr: 0x16C464, symSize: 0x3EC } + - { offset: 0x21BA72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14setStartMarker9floorPath010startPointI08renderery7Penguin03SubK0C_So7UIImageCSg0O10INRenderer10PIRendererCSgtF', symObjAddr: 0x40C, symBinAddr: 0x16C850, symSize: 0xA44 } + - { offset: 0x21C429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEndMarker9floorPath08endPointI0y7Penguin03SubK0CSg_So7UIImageCSgtF', symObjAddr: 0xE50, symBinAddr: 0x16D294, symSize: 0x654 } + - { offset: 0x21C9DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtF', symObjAddr: 0x14A4, symBinAddr: 0x16D8E8, symSize: 0x7A0 } + - { offset: 0x21D305, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtFySo7UIImageCSgcfU_', symObjAddr: 0x1C44, symBinAddr: 0x16E088, symSize: 0x78 } + - { offset: 0x21D33E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtFySo7UIImageCSgcfU0_', symObjAddr: 0x1CBC, symBinAddr: 0x16E100, symSize: 0x70 } + - { offset: 0x21D485, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tF', symObjAddr: 0x1D2C, symBinAddr: 0x16E170, symSize: 0x1010 } + - { offset: 0x21E0BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tFySbcfU0_', symObjAddr: 0x2D3C, symBinAddr: 0x16F180, symSize: 0x110 } + - { offset: 0x21E19B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tFySo7UIImageCSgcfU1_Tf4nndn_n', symObjAddr: 0x863C, symBinAddr: 0x1749C4, symSize: 0x3F4 } + - { offset: 0x21E47D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC022removeConflictGateWithD6Marker33_135AC583F61BE0A660F84997D71AC5B4LLyy7Penguin10PILocationCSgF', symObjAddr: 0x2E4C, symBinAddr: 0x16F290, symSize: 0xC54 } + - { offset: 0x21EFA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21drawRoutePathAndSigns5floor8location10refreshPOIy7Penguin5FloorCSg_AH10PILocationCSgSbtF', symObjAddr: 0x3AA0, symBinAddr: 0x16FEE4, symSize: 0x2D4 } + - { offset: 0x21F29E, size: 0x8, addend: 0x0, symName: '_$s7Penguin8NodeTypeOACSQAAWl', symObjAddr: 0x3DB8, symBinAddr: 0x1701B8, symSize: 0x44 } + - { offset: 0x21F2B2, size: 0x8, addend: 0x0, symName: '_$s7Penguin8NodeTypeOSgWOc', symObjAddr: 0x3DFC, symBinAddr: 0x1701FC, symSize: 0x48 } + - { offset: 0x21F4E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8getImage3for2onSo7UIImageCSg7Penguin11SubPathNodeCSg_AJ0mN0CSgtFTf4nnd_n', symObjAddr: 0x3EE0, symBinAddr: 0x170268, symSize: 0x16D4 } + - { offset: 0x21FAF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21detectStartMarkerType9floorPath10completiony7Penguin03SubL0C_ySo7UIImageCSgctF03$s8ab4UI24def37C010drawMapAndB4Line_5floory7Penguin7ol17C_AF5FloorCtFySo7P7CSgcfU_ACSgXwz_XxAI0N10INRenderer10PIRendererCTf1ncn_nTf4nnggg_n', symObjAddr: 0x55B4, symBinAddr: 0x17193C, symSize: 0x18D8 } + - { offset: 0x220843, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21detectStartMarkerType9floorPath10completiony7Penguin03SubL0C_ySo7UIImageCSgctF03$s8ab4UI24def28C13drawRoutePathyy7Penguin03o10I0CSgFySo7P7CSgcfU_ACSgXwz_XxAITf1ncn_nTf4nngg_n', symObjAddr: 0x6E8C, symBinAddr: 0x173214, symSize: 0x17B0 } + - { offset: 0x2215BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19detectEndMarkerType9floorPath09isLastSubL010completiony7Penguin0oL0CSg_SbySo7UIImageCSgctF03$s8ab4UI24def47C23drawNextSubpathIfNeeded07currentI0y7Penguin7ol8C_tFySo7R8CSgcfU1_AJSi0Q10INRenderer10PIRendererCTf1nncn_nTf4nndgng_n', symObjAddr: 0x8A30, symBinAddr: 0x174DB8, symSize: 0x5B8 } + - { offset: 0x221A8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tFySbcfU0_TA', symObjAddr: 0x9614, symBinAddr: 0x17599C, symSize: 0x8 } + - { offset: 0x221A9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tFySo7UIImageCSgcfU1_TA', symObjAddr: 0x96C8, symBinAddr: 0x175A0C, symSize: 0xC } + - { offset: 0x221AC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtFySo7UIImageCSgcfU0_TA', symObjAddr: 0x96D8, symBinAddr: 0x175A1C, symSize: 0x8 } + - { offset: 0x221ADC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtFySo7UIImageCSgcfU_TA', symObjAddr: 0x9714, symBinAddr: 0x175A58, symSize: 0xC } + - { offset: 0x221AF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13drawRoutePathyy7Penguin03SubI0CSgFySo7UIImageCSgcfU_TA', symObjAddr: 0x9754, symBinAddr: 0x175A64, symSize: 0x8 } + - { offset: 0x222C30, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010venueGatesD0_WZ', symObjAddr: 0x0, symBinAddr: 0x175A7C, symSize: 0x228 } + - { offset: 0x222C54, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010venueGatesD0ACvpZ', symObjAddr: 0x10BF8, symBinAddr: 0x384D70, symSize: 0x0 } + - { offset: 0x222C6E, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010floorNodesD0ACvpZ', symObjAddr: 0x10C00, symBinAddr: 0x384D78, symSize: 0x0 } + - { offset: 0x222C88, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010floorGatesD0ACvpZ', symObjAddr: 0x10C08, symBinAddr: 0x384D80, symSize: 0x0 } + - { offset: 0x222CA2, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012venueSymbolsD0ACvpZ', symObjAddr: 0x10C10, symBinAddr: 0x384D88, symSize: 0x0 } + - { offset: 0x222CBC, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012campusSymbolD0ACvpZ', symObjAddr: 0x10C18, symBinAddr: 0x384D90, symSize: 0x0 } + - { offset: 0x222CD6, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012campusBorderD0ACvpZ', symObjAddr: 0x10C20, symBinAddr: 0x384D98, symSize: 0x0 } + - { offset: 0x222CF0, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09routeLineD0ACvpZ', symObjAddr: 0x10C28, symBinAddr: 0x384DA0, symSize: 0x0 } + - { offset: 0x222D0A, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE015routeLineCasingD0ACvpZ', symObjAddr: 0x10C30, symBinAddr: 0x384DA8, symSize: 0x0 } + - { offset: 0x222D24, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012progressLineD0ACvpZ', symObjAddr: 0x10C38, symBinAddr: 0x384DB0, symSize: 0x0 } + - { offset: 0x222D3E, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE015linkedRouteLineD0ACvpZ', symObjAddr: 0x10C40, symBinAddr: 0x384DB8, symSize: 0x0 } + - { offset: 0x222D58, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021linkedRouteLineCasingD0ACvpZ', symObjAddr: 0x10C48, symBinAddr: 0x384DC0, symSize: 0x0 } + - { offset: 0x222D72, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE018progressLineCasingD0ACvpZ', symObjAddr: 0x10C50, symBinAddr: 0x384DC8, symSize: 0x0 } + - { offset: 0x222D8C, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013campusPolygonD0ACvpZ', symObjAddr: 0x10C58, symBinAddr: 0x384DD0, symSize: 0x0 } + - { offset: 0x222DA6, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019campusPolygonBorderD0ACvpZ', symObjAddr: 0x10C60, symBinAddr: 0x384DD8, symSize: 0x0 } + - { offset: 0x222DC0, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE011venueModelsD0ACvpZ', symObjAddr: 0x10C68, symBinAddr: 0x384DE0, symSize: 0x0 } + - { offset: 0x222DDA, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021extrudedVenuePolygonsD0ACvpZ', symObjAddr: 0x10C70, symBinAddr: 0x384DE8, symSize: 0x0 } + - { offset: 0x222DF4, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013venuePolygonsD0ACvpZ', symObjAddr: 0x10C78, symBinAddr: 0x384DF0, symSize: 0x0 } + - { offset: 0x222E0E, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019venuePolygonBordersD0ACvpZ', symObjAddr: 0x10C80, symBinAddr: 0x384DF8, symSize: 0x0 } + - { offset: 0x222E28, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE018outdoorPoiPolygonsD0ACvpZ', symObjAddr: 0x10C88, symBinAddr: 0x384E00, symSize: 0x0 } + - { offset: 0x222E42, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE024outdoorPoiPolygonBordersD0ACvpZ', symObjAddr: 0x10C90, symBinAddr: 0x384E08, symSize: 0x0 } + - { offset: 0x222E5C, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017outdoorPoiSymbolsD0ACvpZ', symObjAddr: 0x10C98, symBinAddr: 0x384E10, symSize: 0x0 } + - { offset: 0x222E76, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09poiModelsD0ACvpZ', symObjAddr: 0x10CA0, symBinAddr: 0x384E18, symSize: 0x0 } + - { offset: 0x222E90, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019extrudedPoiPolygonsD0ACvpZ', symObjAddr: 0x10CA8, symBinAddr: 0x384E20, symSize: 0x0 } + - { offset: 0x222EAA, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE016indoorPoiSymbolsD0ACvpZ', symObjAddr: 0x10CB0, symBinAddr: 0x384E28, symSize: 0x0 } + - { offset: 0x222EC4, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE022outdoorLandmarkSymbolsD0ACvpZ', symObjAddr: 0x10CB8, symBinAddr: 0x384E30, symSize: 0x0 } + - { offset: 0x222EDF, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021indoorLandmarkSymbolsD0ACvpZ', symObjAddr: 0x10CC0, symBinAddr: 0x384E38, symSize: 0x0 } + - { offset: 0x222EFA, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017indoorPoiPolygonsD0ACvpZ', symObjAddr: 0x10CC8, symBinAddr: 0x384E40, symSize: 0x0 } + - { offset: 0x222F15, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE023indoorPoiPolygonBordersD0ACvpZ', symObjAddr: 0x10CD0, symBinAddr: 0x384E48, symSize: 0x0 } + - { offset: 0x222F30, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019highPrioritySymbolsD0ACvpZ', symObjAddr: 0x10CD8, symBinAddr: 0x384E50, symSize: 0x0 } + - { offset: 0x222F4B, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017destinationSymbolD0ACvpZ', symObjAddr: 0x10CE0, symBinAddr: 0x384E58, symSize: 0x0 } + - { offset: 0x222F66, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019indoorSelectedPlaceD0ACvpZ', symObjAddr: 0x10CE8, symBinAddr: 0x384E60, symSize: 0x0 } + - { offset: 0x222F81, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE020outdoorSelectedPlaceD0ACvpZ', symObjAddr: 0x10CF0, symBinAddr: 0x384E68, symSize: 0x0 } + - { offset: 0x222F9C, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE05floorcD0ACvpZ', symObjAddr: 0x10CF8, symBinAddr: 0x384E70, symSize: 0x0 } + - { offset: 0x222FB7, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09pathNodesD0ACvpZ', symObjAddr: 0x10D00, symBinAddr: 0x384E78, symSize: 0x0 } + - { offset: 0x222FD2, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE022progressLineStartPointD0ACvpZ', symObjAddr: 0x10D08, symBinAddr: 0x384E80, symSize: 0x0 } + - { offset: 0x222FED, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013objectSymbolsD0ACvpZ', symObjAddr: 0x10D10, symBinAddr: 0x384E88, symSize: 0x0 } + - { offset: 0x222FFB, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010venueGatesD0_WZ', symObjAddr: 0x0, symBinAddr: 0x175A7C, symSize: 0x228 } + - { offset: 0x22304D, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010floorNodesD0_WZ', symObjAddr: 0x228, symBinAddr: 0x175CA4, symSize: 0x22C } + - { offset: 0x22309F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010floorGatesD0_WZ', symObjAddr: 0x454, symBinAddr: 0x175ED0, symSize: 0x228 } + - { offset: 0x2230F1, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012venueSymbolsD0_WZ', symObjAddr: 0x67C, symBinAddr: 0x1760F8, symSize: 0x23C } + - { offset: 0x22312E, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012campusSymbolD0_WZ', symObjAddr: 0x8B8, symBinAddr: 0x176334, symSize: 0x234 } + - { offset: 0x22316B, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012campusBorderD0_WZ', symObjAddr: 0xAEC, symBinAddr: 0x176568, symSize: 0x1C0 } + - { offset: 0x2231B9, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09routeLineD0_WZ', symObjAddr: 0xCAC, symBinAddr: 0x176728, symSize: 0x1F8 } + - { offset: 0x223214, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE015routeLineCasingD0_WZ', symObjAddr: 0xEA4, symBinAddr: 0x176920, symSize: 0x1F4 } + - { offset: 0x223299, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012progressLineD0_WZ', symObjAddr: 0x1098, symBinAddr: 0x176B14, symSize: 0x200 } + - { offset: 0x2232E3, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE015linkedRouteLineD0_WZ', symObjAddr: 0x1298, symBinAddr: 0x176D14, symSize: 0x1F8 } + - { offset: 0x22332D, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021linkedRouteLineCasingD0_WZ', symObjAddr: 0x1490, symBinAddr: 0x176F0C, symSize: 0x1F4 } + - { offset: 0x2233B2, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE018progressLineCasingD0_WZ', symObjAddr: 0x1684, symBinAddr: 0x177100, symSize: 0x1F4 } + - { offset: 0x223426, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013campusPolygonD0_WZ', symObjAddr: 0x1878, symBinAddr: 0x1772F4, symSize: 0x1A4 } + - { offset: 0x22344E, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019campusPolygonBorderD0_WZ', symObjAddr: 0x1A1C, symBinAddr: 0x177498, symSize: 0x1A4 } + - { offset: 0x223476, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE011venueModelsD0_WZ', symObjAddr: 0x1BC0, symBinAddr: 0x17763C, symSize: 0x194 } + - { offset: 0x22349E, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021extrudedVenuePolygonsD0_WZ', symObjAddr: 0x1D54, symBinAddr: 0x1777D0, symSize: 0x194 } + - { offset: 0x2234C6, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013venuePolygonsD0_WZ', symObjAddr: 0x1EE8, symBinAddr: 0x177964, symSize: 0x1A4 } + - { offset: 0x2234EE, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019venuePolygonBordersD0_WZ', symObjAddr: 0x208C, symBinAddr: 0x177B08, symSize: 0x1A4 } + - { offset: 0x223516, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE018outdoorPoiPolygonsD0_WZ', symObjAddr: 0x2230, symBinAddr: 0x177CAC, symSize: 0x1A4 } + - { offset: 0x22353E, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE024outdoorPoiPolygonBordersD0_WZ', symObjAddr: 0x23D4, symBinAddr: 0x177E50, symSize: 0x1A4 } + - { offset: 0x223566, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017outdoorPoiSymbolsD0_WZ', symObjAddr: 0x2578, symBinAddr: 0x177FF4, symSize: 0x210 } + - { offset: 0x22358E, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09poiModelsD0_WZ', symObjAddr: 0x2788, symBinAddr: 0x178204, symSize: 0x194 } + - { offset: 0x2235B6, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019extrudedPoiPolygonsD0_WZ', symObjAddr: 0x291C, symBinAddr: 0x178398, symSize: 0x194 } + - { offset: 0x2235DE, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE016indoorPoiSymbolsD0_WZ', symObjAddr: 0x2AB0, symBinAddr: 0x17852C, symSize: 0x20C } + - { offset: 0x223606, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE022outdoorLandmarkSymbolsD0_WZ', symObjAddr: 0x2CBC, symBinAddr: 0x178738, symSize: 0x218 } + - { offset: 0x22362E, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021indoorLandmarkSymbolsD0_WZ', symObjAddr: 0x2ED4, symBinAddr: 0x178950, symSize: 0x214 } + - { offset: 0x223658, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017indoorPoiPolygonsD0_WZ', symObjAddr: 0x30E8, symBinAddr: 0x178B64, symSize: 0x1A4 } + - { offset: 0x223682, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE023indoorPoiPolygonBordersD0_WZ', symObjAddr: 0x328C, symBinAddr: 0x178D08, symSize: 0x1A4 } + - { offset: 0x2236AC, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019highPrioritySymbolsD0_WZ', symObjAddr: 0x3430, symBinAddr: 0x178EAC, symSize: 0x20C } + - { offset: 0x223701, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017destinationSymbolD0_WZ', symObjAddr: 0x3680, symBinAddr: 0x1790B8, symSize: 0x224 } + - { offset: 0x22376C, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019indoorSelectedPlaceD0_WZ', symObjAddr: 0x38A4, symBinAddr: 0x1792DC, symSize: 0x224 } + - { offset: 0x2237D7, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE020outdoorSelectedPlaceD0_WZ', symObjAddr: 0x3AC8, symBinAddr: 0x179500, symSize: 0x234 } + - { offset: 0x223842, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE05floorcD0_WZ', symObjAddr: 0x3CFC, symBinAddr: 0x179734, symSize: 0x190 } + - { offset: 0x223874, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09pathNodesD0_WZ', symObjAddr: 0x3E8C, symBinAddr: 0x1798C4, symSize: 0x234 } + - { offset: 0x2238CA, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE022progressLineStartPointD0_WZ', symObjAddr: 0x40C0, symBinAddr: 0x179AF8, symSize: 0x190 } + - { offset: 0x22391F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013objectSymbolsD0_WZ', symObjAddr: 0x4250, symBinAddr: 0x179C88, symSize: 0x1A4 } + - { offset: 0x223949, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE028getSelectedLocationIndicatorD07visibleACSb_tFZTf4nd_n', symObjAddr: 0x43F4, symBinAddr: 0x179E2C, symSize: 0x1A8 } + - { offset: 0x2239D4, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017getAccuracyCircleD04fromAcD24LocationIndicatorManagerC_tFZTf4nd_n', symObjAddr: 0x459C, symBinAddr: 0x179FD4, symSize: 0x1E8 } + - { offset: 0x223A73, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE020getLocationIndicatorD04fromAA0ijcD0CAD0iJ7ManagerC_tFZTf4nd_n', symObjAddr: 0x4784, symBinAddr: 0x17A1BC, symSize: 0x39C } + - { offset: 0x224196, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC11amenityNameSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x17A558, symSize: 0x20 } + - { offset: 0x2243A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellCfETo', symObjAddr: 0x5F8, symBinAddr: 0x17AB50, symSize: 0x38 } + - { offset: 0x2243D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellCMa', symObjAddr: 0x630, symBinAddr: 0x17AB88, symSize: 0x20 } + - { offset: 0x2244EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC11amenityNameSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x17A558, symSize: 0x20 } + - { offset: 0x22454B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC11amenityNameSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x17A578, symSize: 0x14 } + - { offset: 0x22459C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC12amenityImageSo07UIImageF0CSgvgTo', symObjAddr: 0x34, symBinAddr: 0x17A58C, symSize: 0x20 } + - { offset: 0x2245F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC12amenityImageSo07UIImageF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x17A5AC, symSize: 0x14 } + - { offset: 0x224647, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC12awakeFromNibyyFTo', symObjAddr: 0x68, symBinAddr: 0x17A5C0, symSize: 0x3C } + - { offset: 0x22467A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC15prepareForReuseyyFTo', symObjAddr: 0xA4, symBinAddr: 0x17A5FC, symSize: 0x4 } + - { offset: 0x2246D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0xA8, symBinAddr: 0x17A600, symSize: 0x54 } + - { offset: 0x22480C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC7setData7amenityyAA9AmenitiesV_tF', symObjAddr: 0xFC, symBinAddr: 0x17A654, symSize: 0x2D0 } + - { offset: 0x2249B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC7setData7amenityyAA9AmenitiesV_tFySo7UIImageCSgcfU_', symObjAddr: 0x3CC, symBinAddr: 0x17A924, symSize: 0x74 } + - { offset: 0x224A58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfcTo', symObjAddr: 0x440, symBinAddr: 0x17A998, symSize: 0xE4 } + - { offset: 0x224AB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x524, symBinAddr: 0x17AA7C, symSize: 0xA4 } + - { offset: 0x224AE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellCfD', symObjAddr: 0x5C8, symBinAddr: 0x17AB20, symSize: 0x30 } + - { offset: 0x2250CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewCfETo', symObjAddr: 0x8E0, symBinAddr: 0x17B488, symSize: 0x14 } + - { offset: 0x2250FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewCMa', symObjAddr: 0x8F4, symBinAddr: 0x17B49C, symSize: 0x20 } + - { offset: 0x225156, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC26placeholderLocalizationKeySSvgTo', symObjAddr: 0x0, symBinAddr: 0x17ABA8, symSize: 0x1C } + - { offset: 0x2252A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC26placeholderLocalizationKeySSvsTo', symObjAddr: 0x1C, symBinAddr: 0x17ABC4, symSize: 0x88 } + - { offset: 0x225313, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC4textSSSgvgTo', symObjAddr: 0xA4, symBinAddr: 0x17AC4C, symSize: 0xAC } + - { offset: 0x225368, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC4textSSSgvsTo', symObjAddr: 0x150, symBinAddr: 0x17ACF8, symSize: 0xAC } + - { offset: 0x2254B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC4drawyySo6CGRectVF', symObjAddr: 0x1FC, symBinAddr: 0x17ADA4, symSize: 0x540 } + - { offset: 0x225751, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC4drawyySo6CGRectVFTo', symObjAddr: 0x73C, symBinAddr: 0x17B2E4, symSize: 0x58 } + - { offset: 0x225797, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC5frame13textContainerACSo6CGRectV_So06NSTextJ0CSgtcfcTo', symObjAddr: 0x794, symBinAddr: 0x17B33C, symSize: 0x88 } + - { offset: 0x2257F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x81C, symBinAddr: 0x17B3C4, symSize: 0x94 } + - { offset: 0x22582E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewCfD', symObjAddr: 0x8B0, symBinAddr: 0x17B458, symSize: 0x30 } + - { offset: 0x225CAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CampaignMessageVMa', symObjAddr: 0x2BC, symBinAddr: 0x17B550, symSize: 0x10 } + - { offset: 0x225CC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CampaignMessageV5titleSSvs', symObjAddr: 0x2C, symBinAddr: 0x17B4BC, symSize: 0x34 } + - { offset: 0x225CFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CampaignMessageV11descriptionSSvg', symObjAddr: 0x74, symBinAddr: 0x17B4F0, symSize: 0x2C } + - { offset: 0x225D11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CampaignMessageV11descriptionSSvs', symObjAddr: 0xA0, symBinAddr: 0x17B51C, symSize: 0x34 } + - { offset: 0x2260CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCfE', symObjAddr: 0x0, symBinAddr: 0x17B560, symSize: 0x10 } + - { offset: 0x2260E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCfE', symObjAddr: 0x0, symBinAddr: 0x17B560, symSize: 0x10 } + - { offset: 0x226170, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCMU', symObjAddr: 0x78, symBinAddr: 0x17B5D8, symSize: 0x8 } + - { offset: 0x226184, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCMa', symObjAddr: 0x80, symBinAddr: 0x17B5E0, symSize: 0x38 } + - { offset: 0x2261CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCfD', symObjAddr: 0x10, symBinAddr: 0x17B570, symSize: 0x68 } + - { offset: 0x226230, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0xFC, symBinAddr: 0x17B618, symSize: 0x14 } + - { offset: 0x2265D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseFiltersySayAA3DOMO6FilterCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0x17B62C, symSize: 0x29C } + - { offset: 0x226788, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseFiltersySayAA3DOMO6FilterCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0x17B62C, symSize: 0x29C } + - { offset: 0x226CCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseFilteryAA3DOMO0F0CAA3XMLO7ElementCKFTf4nx_n', symObjAddr: 0xACC, symBinAddr: 0x17C0F8, symSize: 0x400 } + - { offset: 0x2270DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE10parseFloatySfSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_TG5TA', symObjAddr: 0xF0C, symBinAddr: 0x17C4F8, symSize: 0x28 } + - { offset: 0x227163, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE10parseFloatySfSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_Tg5Tf4nd_n', symObjAddr: 0xFAC, symBinAddr: 0x17C520, symSize: 0x1F4 } + - { offset: 0x227459, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parseyxSS_xSSKXEtKlFSf_Tg5', symObjAddr: 0x29C, symBinAddr: 0x17B8C8, symSize: 0x41C } + - { offset: 0x2276B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parseyxSS_xSSKXEtKlFSayAA3DOMO5PointVG_Tg5', symObjAddr: 0x6B8, symBinAddr: 0x17BCE4, symSize: 0x414 } + - { offset: 0x227D32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateC12asDictionarySDyS2SGvg', symObjAddr: 0x0, symBinAddr: 0x17C714, symSize: 0x730 } + - { offset: 0x227E0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateCMa', symObjAddr: 0x79C, symBinAddr: 0x17CEB0, symSize: 0x20 } + - { offset: 0x227EF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateC12asDictionarySDyS2SGvg', symObjAddr: 0x0, symBinAddr: 0x17C714, symSize: 0x730 } + - { offset: 0x228503, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateCfd', symObjAddr: 0x730, symBinAddr: 0x17CE44, symSize: 0x4C } + - { offset: 0x228526, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateCfD', symObjAddr: 0x77C, symBinAddr: 0x17CE90, symSize: 0x20 } + - { offset: 0x22856F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateC03newdE0ACyFZTf4d_n', symObjAddr: 0x7BC, symBinAddr: 0x17CED0, symSize: 0x100 } + - { offset: 0x2289E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x8, symBinAddr: 0x17CFD0, symSize: 0x54 } + - { offset: 0x228AA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x17D024, symSize: 0x1C } + - { offset: 0x228AB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x17D024, symSize: 0x1C } + - { offset: 0x228ACD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x17D024, symSize: 0x1C } + - { offset: 0x228AE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x17D024, symSize: 0x1C } + - { offset: 0x228AF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x17D024, symSize: 0x1C } + - { offset: 0x228B1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x78, symBinAddr: 0x17D040, symSize: 0x50 } + - { offset: 0x228BAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x128, symBinAddr: 0x17D0E4, symSize: 0x28 } + - { offset: 0x228BC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x150, symBinAddr: 0x17D10C, symSize: 0x28 } + - { offset: 0x228C2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x24C, symBinAddr: 0x17D1D4, symSize: 0x54 } + - { offset: 0x228CE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x2A0, symBinAddr: 0x17D228, symSize: 0x1C } + - { offset: 0x228CFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x2A0, symBinAddr: 0x17D228, symSize: 0x1C } + - { offset: 0x228D13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x2A0, symBinAddr: 0x17D228, symSize: 0x1C } + - { offset: 0x228D27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x2A0, symBinAddr: 0x17D228, symSize: 0x1C } + - { offset: 0x228D3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x2A0, symBinAddr: 0x17D228, symSize: 0x1C } + - { offset: 0x228D64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x2BC, symBinAddr: 0x17D244, symSize: 0x50 } + - { offset: 0x228DF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x444, symBinAddr: 0x17D3B4, symSize: 0x28 } + - { offset: 0x228E0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x46C, symBinAddr: 0x17D3DC, symSize: 0x28 } + - { offset: 0x228E47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x9D0, symBinAddr: 0x17D8EC, symSize: 0x84 } + - { offset: 0x228F02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0xA54, symBinAddr: 0x17D970, symSize: 0x60 } + - { offset: 0x228F80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xAB4, symBinAddr: 0x17D9D0, symSize: 0x40 } + - { offset: 0x228FD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xAF4, symBinAddr: 0x17DA10, symSize: 0x5C } + - { offset: 0x229034, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0xBF8, symBinAddr: 0x17DB08, symSize: 0x28 } + - { offset: 0x229050, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0xC20, symBinAddr: 0x17DB30, symSize: 0x28 } + - { offset: 0x229129, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseCMa', symObjAddr: 0x178, symBinAddr: 0x17D134, symSize: 0x20 } + - { offset: 0x22921A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseCMa', symObjAddr: 0x4B8, symBinAddr: 0x17D404, symSize: 0x20 } + - { offset: 0x2293F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCMa', symObjAddr: 0xCCC, symBinAddr: 0x17DBDC, symSize: 0x20 } + - { offset: 0x229406, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOAEs0H3KeyAAWl', symObjAddr: 0x1680, symBinAddr: 0x17E528, symSize: 0x40 } + - { offset: 0x22941A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOAEs0H3KeyAAWl', symObjAddr: 0x1728, symBinAddr: 0x17E568, symSize: 0x40 } + - { offset: 0x22942E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOAEs0F3KeyAAWl', symObjAddr: 0x1768, symBinAddr: 0x17E5A8, symSize: 0x40 } + - { offset: 0x229442, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOwet', symObjAddr: 0x1958, symBinAddr: 0x17E6A0, symSize: 0x90 } + - { offset: 0x229456, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOwst', symObjAddr: 0x19E8, symBinAddr: 0x17E730, symSize: 0xB0 } + - { offset: 0x22946A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOMa', symObjAddr: 0x1AAC, symBinAddr: 0x17E7E0, symSize: 0x10 } + - { offset: 0x22947E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOMa', symObjAddr: 0x1AD8, symBinAddr: 0x17E7F8, symSize: 0x10 } + - { offset: 0x229492, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOMa', symObjAddr: 0x1BC4, symBinAddr: 0x17E808, symSize: 0x10 } + - { offset: 0x2294A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x1BD4, symBinAddr: 0x17E818, symSize: 0x4 } + - { offset: 0x2294BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x1BD8, symBinAddr: 0x17E81C, symSize: 0x40 } + - { offset: 0x2294CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x1C18, symBinAddr: 0x17E85C, symSize: 0x4 } + - { offset: 0x2294E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x1C1C, symBinAddr: 0x17E860, symSize: 0x40 } + - { offset: 0x2294F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSHAASQWb', symObjAddr: 0x1C5C, symBinAddr: 0x17E8A0, symSize: 0x4 } + - { offset: 0x22950A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOAESQAAWl', symObjAddr: 0x1C60, symBinAddr: 0x17E8A4, symSize: 0x40 } + - { offset: 0x22951E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1CA0, symBinAddr: 0x17E8E4, symSize: 0x4 } + - { offset: 0x229532, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1CA4, symBinAddr: 0x17E8E8, symSize: 0x40 } + - { offset: 0x229546, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1CE4, symBinAddr: 0x17E928, symSize: 0x4 } + - { offset: 0x22955A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1CE8, symBinAddr: 0x17E92C, symSize: 0x40 } + - { offset: 0x22956E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1D28, symBinAddr: 0x17E96C, symSize: 0x4 } + - { offset: 0x229582, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1D2C, symBinAddr: 0x17E970, symSize: 0x40 } + - { offset: 0x229596, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1D6C, symBinAddr: 0x17E9B0, symSize: 0x4 } + - { offset: 0x2295AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1D70, symBinAddr: 0x17E9B4, symSize: 0x40 } + - { offset: 0x2295BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1DB0, symBinAddr: 0x17E9F4, symSize: 0x4 } + - { offset: 0x2295D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1DB4, symBinAddr: 0x17E9F8, symSize: 0x40 } + - { offset: 0x2295E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1DF4, symBinAddr: 0x17EA38, symSize: 0x4 } + - { offset: 0x2295FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1DF8, symBinAddr: 0x17EA3C, symSize: 0x40 } + - { offset: 0x229623, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0xD4, symBinAddr: 0x17D09C, symSize: 0x20 } + - { offset: 0x22963B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0xD4, symBinAddr: 0x17D09C, symSize: 0x20 } + - { offset: 0x22964F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0xD4, symBinAddr: 0x17D09C, symSize: 0x20 } + - { offset: 0x229669, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xF4, symBinAddr: 0x17D0BC, symSize: 0x1C } + - { offset: 0x229681, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xF4, symBinAddr: 0x17D0BC, symSize: 0x1C } + - { offset: 0x229695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xF4, symBinAddr: 0x17D0BC, symSize: 0x1C } + - { offset: 0x2296A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xF4, symBinAddr: 0x17D0BC, symSize: 0x1C } + - { offset: 0x2296BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x224, symBinAddr: 0x17D1B4, symSize: 0x20 } + - { offset: 0x2296DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x37C, symBinAddr: 0x17D304, symSize: 0x20 } + - { offset: 0x2296F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x37C, symBinAddr: 0x17D304, symSize: 0x20 } + - { offset: 0x22970B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x37C, symBinAddr: 0x17D304, symSize: 0x20 } + - { offset: 0x229725, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x39C, symBinAddr: 0x17D324, symSize: 0x1C } + - { offset: 0x22973D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x39C, symBinAddr: 0x17D324, symSize: 0x1C } + - { offset: 0x229751, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x39C, symBinAddr: 0x17D324, symSize: 0x1C } + - { offset: 0x229765, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x39C, symBinAddr: 0x17D324, symSize: 0x1C } + - { offset: 0x22978F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x878, symBinAddr: 0x17D798, symSize: 0x20 } + - { offset: 0x2297BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xB50, symBinAddr: 0x17DA6C, symSize: 0x2C } + - { offset: 0x2297E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0xB7C, symBinAddr: 0x17DA98, symSize: 0x28 } + - { offset: 0x2297FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xBA4, symBinAddr: 0x17DAC0, symSize: 0x18 } + - { offset: 0x229825, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0xBBC, symBinAddr: 0x17DAD8, symSize: 0x24 } + - { offset: 0x22986D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAsAFP8intValuexSgSi_tcfCTW', symObjAddr: 0xBEC, symBinAddr: 0x17DAFC, symSize: 0xC } + - { offset: 0x229881, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCfd', symObjAddr: 0xC48, symBinAddr: 0x17DB58, symSize: 0x64 } + - { offset: 0x2298A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCfD', symObjAddr: 0xCAC, symBinAddr: 0x17DBBC, symSize: 0x20 } + - { offset: 0x2298C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC6encode2toys7Encoder_p_tKF', symObjAddr: 0xCEC, symBinAddr: 0x17DBFC, symSize: 0x324 } + - { offset: 0x2298F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x1010, symBinAddr: 0x17DF20, symSize: 0x594 } + - { offset: 0x229936, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x15A4, symBinAddr: 0x17E4B4, symSize: 0x54 } + - { offset: 0x22995F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x15F8, symBinAddr: 0x17E508, symSize: 0x20 } + - { offset: 0x229979, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x1E38, symBinAddr: 0x17EA7C, symSize: 0x5C } + - { offset: 0x229D42, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE8makePathAC9LayerTreeO0G0CyF', symObjAddr: 0x0, symBinAddr: 0x17EAE8, symSize: 0x2D4 } + - { offset: 0x22A17E, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE8makePathAC9LayerTreeO0G0CyF', symObjAddr: 0x0, symBinAddr: 0x17EAE8, symSize: 0x2D4 } + - { offset: 0x22A58D, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE6toPath4fontSo9CGPathRefaSgSo06CTFontH0a_tF', symObjAddr: 0x2D4, symBinAddr: 0x17EDBC, symSize: 0x2FC } + - { offset: 0x22A916, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7doApply6actionyySo0A7ElementVc_tFySpyyAGcGXEfU_ySvSg_SPyAGGtcfU_To', symObjAddr: 0x614, symBinAddr: 0x17F0B8, symSize: 0x50 } + - { offset: 0x22A9BF, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE8segmentsSayAbCE7SegmentOGyFySo0A7ElementVcfU_', symObjAddr: 0x6BC, symBinAddr: 0x17F160, symSize: 0x3CC } + - { offset: 0x22AF37, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefa_So06CTFontB0atWOh', symObjAddr: 0xBAC, symBinAddr: 0x17F650, symSize: 0x40 } + - { offset: 0x22AF4B, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaABSHSCWl', symObjAddr: 0xBEC, symBinAddr: 0x17F690, symSize: 0x44 } + - { offset: 0x22AF5F, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE8segmentsSayAbCE7SegmentOGyFySo0A7ElementVcfU_TA', symObjAddr: 0xC54, symBinAddr: 0x17F6F8, symSize: 0x8 } + - { offset: 0x22AF7E, size: 0x8, addend: 0x0, symName: '_$sSo13CGPathElementVIegy_ABytIegnr_TRTA', symObjAddr: 0xC80, symBinAddr: 0x17F724, symSize: 0x2C } + - { offset: 0x22AFA7, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOwet', symObjAddr: 0xCF8, symBinAddr: 0x17F750, symSize: 0x48 } + - { offset: 0x22AFBB, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOwst', symObjAddr: 0xD40, symBinAddr: 0x17F798, symSize: 0x54 } + - { offset: 0x22AFCF, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOwug', symObjAddr: 0xD94, symBinAddr: 0x17F7EC, symSize: 0x18 } + - { offset: 0x22AFE3, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOwui', symObjAddr: 0xDB0, symBinAddr: 0x17F804, symSize: 0x28 } + - { offset: 0x22AFF7, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOMa', symObjAddr: 0xDD8, symBinAddr: 0x17F82C, symSize: 0x10 } + - { offset: 0x22B0D2, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOSQACSQ2eeoiySbx_xtFZTW', symObjAddr: 0x664, symBinAddr: 0x17F108, symSize: 0x58 } + - { offset: 0x22B0FB, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0xA88, symBinAddr: 0x17F52C, symSize: 0x124 } + - { offset: 0x22B51C, size: 0x8, addend: 0x0, symName: '_$s7Penguin5FloorC8PenNavUIE5venueAA5VenueCSgvg', symObjAddr: 0x0, symBinAddr: 0x17F83C, symSize: 0x168 } + - { offset: 0x22B5B8, size: 0x8, addend: 0x0, symName: '_$s7Penguin5FloorC8PenNavUIE5venueAA5VenueCSgvg', symObjAddr: 0x0, symBinAddr: 0x17F83C, symSize: 0x168 } + - { offset: 0x22BD5D, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUIE13getMapElement4icon0A10INRenderer20FeatureConfigurationVSo7UIImageCSg_tF', symObjAddr: 0x2B8, symBinAddr: 0x17FC18, symSize: 0x514 } + - { offset: 0x22C5F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC21remainingTripDistanceSdSgvg', symObjAddr: 0x0, symBinAddr: 0x18012C, symSize: 0x174 } + - { offset: 0x22D271, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerCMa', symObjAddr: 0x1E3C, symBinAddr: 0x181F68, symSize: 0x20 } + - { offset: 0x22D324, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC21remainingTripDistanceSdSgvg', symObjAddr: 0x0, symBinAddr: 0x18012C, symSize: 0x174 } + - { offset: 0x22D507, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC22distanceToUpcomingTurnSdSgvg', symObjAddr: 0x174, symBinAddr: 0x1802A0, symSize: 0x268 } + - { offset: 0x22D6B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC26distanceToNextUpcomingTurnSdSgvg', symObjAddr: 0x3DC, symBinAddr: 0x180508, symSize: 0x2B0 } + - { offset: 0x22D960, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC17instructionStringSo012NSAttributedG0CSgvg', symObjAddr: 0x68C, symBinAddr: 0x1807B8, symSize: 0xB00 } + - { offset: 0x22E0D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC11setLocationyy7Penguin10PILocationCSgF', symObjAddr: 0x118C, symBinAddr: 0x1812B8, symSize: 0x14C } + - { offset: 0x22E281, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC12getEstimates4from2to18isLastEdgeIncludedSd8distance_Sd8durationtSgAA5PlaceCSg_7Penguin07SubpathL0CSgSbtF', symObjAddr: 0x12D8, symBinAddr: 0x181404, symSize: 0x7C4 } + - { offset: 0x22EDDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC18mergeEdgesIfNeededyyF', symObjAddr: 0x1A9C, symBinAddr: 0x181BC8, symSize: 0x35C } + - { offset: 0x22F279, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerCfD', symObjAddr: 0x1DF8, symBinAddr: 0x181F24, symSize: 0x44 } + - { offset: 0x22F2B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC17mergeSimilarEdgesyySay7Penguin11SubpathEdgeCGzFTf4nd_n', symObjAddr: 0x1E5C, symBinAddr: 0x181F88, symSize: 0x358 } + - { offset: 0x22F70D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC15getUpcomingTurn5after2in7Penguin11SubpathEdgeCSgAJ_SayAIGtFTf4nnd_n', symObjAddr: 0x21B4, symBinAddr: 0x1822E0, symSize: 0x1FC } + - { offset: 0x22FAD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC15mergeShortEdgesyySay7Penguin11SubpathEdgeCGzFTf4nd_n', symObjAddr: 0x23B0, symBinAddr: 0x1824DC, symSize: 0x668 } + - { offset: 0x2303F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC28mergeTransitionEdgesIfNeededySay7Penguin11SubpathEdgeCGAHzFTf4nd_n', symObjAddr: 0x2A18, symBinAddr: 0x182B44, symSize: 0x454 } + - { offset: 0x230D40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerCfD', symObjAddr: 0x0, symBinAddr: 0x182F98, symSize: 0x34 } + - { offset: 0x230D64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerC14sharedInstance33_167A10DA86CA0DE015B6435B6348F1E4LLACSgvpZ', symObjAddr: 0xE8, symBinAddr: 0x36B0E8, symSize: 0x0 } + - { offset: 0x230DE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerCMa', symObjAddr: 0x34, symBinAddr: 0x182FCC, symSize: 0x20 } + - { offset: 0x230E53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerCfD', symObjAddr: 0x0, symBinAddr: 0x182F98, symSize: 0x34 } + - { offset: 0x230EBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerC6sharedACvgZTf4d_n', symObjAddr: 0x54, symBinAddr: 0x182FEC, symSize: 0x90 } + - { offset: 0x2312FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVMr', symObjAddr: 0x8, symBinAddr: 0x18307C, symSize: 0x74 } + - { offset: 0x231311, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwCP', symObjAddr: 0x7C, symBinAddr: 0x1830F0, symSize: 0x88 } + - { offset: 0x231325, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwxx', symObjAddr: 0x104, symBinAddr: 0x183178, symSize: 0x10 } + - { offset: 0x231339, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwcp', symObjAddr: 0x114, symBinAddr: 0x183188, symSize: 0x48 } + - { offset: 0x23134D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwca', symObjAddr: 0x15C, symBinAddr: 0x1831D0, symSize: 0x48 } + - { offset: 0x231361, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwtk', symObjAddr: 0x1A4, symBinAddr: 0x183218, symSize: 0x48 } + - { offset: 0x231375, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwta', symObjAddr: 0x1EC, symBinAddr: 0x183260, symSize: 0x48 } + - { offset: 0x231389, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwet', symObjAddr: 0x234, symBinAddr: 0x1832A8, symSize: 0x124 } + - { offset: 0x23139D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwst', symObjAddr: 0x358, symBinAddr: 0x1833CC, symSize: 0x1D4 } + - { offset: 0x2313B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVMa', symObjAddr: 0x52C, symBinAddr: 0x1835A0, symSize: 0xC } + - { offset: 0x2313C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVMi', symObjAddr: 0x538, symBinAddr: 0x1835AC, symSize: 0x8 } + - { offset: 0x2313D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVMr', symObjAddr: 0x540, symBinAddr: 0x1835B4, symSize: 0xD8 } + - { offset: 0x2313ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwCP', symObjAddr: 0x618, symBinAddr: 0x18368C, symSize: 0x224 } + - { offset: 0x231401, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwxx', symObjAddr: 0x83C, symBinAddr: 0x1838B0, symSize: 0x11C } + - { offset: 0x231415, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwcp', symObjAddr: 0x958, symBinAddr: 0x1839CC, symSize: 0x1B8 } + - { offset: 0x231429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwca', symObjAddr: 0xB10, symBinAddr: 0x183B84, symSize: 0x240 } + - { offset: 0x23143D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwtk', symObjAddr: 0xD50, symBinAddr: 0x183DC4, symSize: 0x1B8 } + - { offset: 0x231451, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwta', symObjAddr: 0xF08, symBinAddr: 0x183F7C, symSize: 0x240 } + - { offset: 0x231465, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwet', symObjAddr: 0x1148, symBinAddr: 0x1841BC, symSize: 0x240 } + - { offset: 0x231479, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwst', symObjAddr: 0x1388, symBinAddr: 0x1843FC, symSize: 0x2BC } + - { offset: 0x23148D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVMa', symObjAddr: 0x1644, symBinAddr: 0x1846B8, symSize: 0xC } + - { offset: 0x2315EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAA8IteratorST_StWT', symObjAddr: 0x1FF0, symBinAddr: 0x185064, symSize: 0x10 } + - { offset: 0x231603, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOMa', symObjAddr: 0x2254, symBinAddr: 0x185124, symSize: 0xC } + - { offset: 0x231617, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSHAASQWb', symObjAddr: 0x2260, symBinAddr: 0x185130, symSize: 0x10 } + - { offset: 0x231646, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV12makeIteratorAC0G0Vyx_GyF', symObjAddr: 0x1650, symBinAddr: 0x1846C4, symSize: 0xDC } + - { offset: 0x2316B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1C24, symBinAddr: 0x184C98, symSize: 0x3C } + - { offset: 0x2316F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST19underestimatedCountSivgTW', symObjAddr: 0x2030, symBinAddr: 0x1850A4, symSize: 0x8 } + - { offset: 0x231728, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST22_copyToContiguousArrays0hI0Vy7ElementQzGyFTW', symObjAddr: 0x2040, symBinAddr: 0x1850AC, symSize: 0x50 } + - { offset: 0x231759, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST13_copyContents12initializing8IteratorQz_SitSry7ElementQzG_tFTW', symObjAddr: 0x2090, symBinAddr: 0x1850FC, symSize: 0x4 } + - { offset: 0x231775, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST32withContiguousStorageIfAvailableyqd__Sgqd__SRy7ElementQzGKXEKlFTW', symObjAddr: 0x2094, symBinAddr: 0x185100, symSize: 0x20 } + - { offset: 0x231798, size: 0x8, addend: 0x0, symName: '_$sSTsE22_copyToContiguousArrays0cD0Vy7ElementQzGyFTf4g_n', symObjAddr: 0x20B4, symBinAddr: 0x185120, symSize: 0x4 } + - { offset: 0x2317CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorV4next7ElementQz_AhFtSgyF', symObjAddr: 0x172C, symBinAddr: 0x1847A0, symSize: 0x464 } + - { offset: 0x231852, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsO2eeoiySbAEyx_G_AGtFZ', symObjAddr: 0x1B90, symBinAddr: 0x184C04, symSize: 0x10 } + - { offset: 0x2318A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsO4hash4intoys6HasherVz_tF', symObjAddr: 0x1BA0, symBinAddr: 0x184C14, symSize: 0x24 } + - { offset: 0x231948, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsO9hashValueSivg', symObjAddr: 0x1BC4, symBinAddr: 0x184C38, symSize: 0x44 } + - { offset: 0x231A16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1C08, symBinAddr: 0x184C7C, symSize: 0xC } + - { offset: 0x231A2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSHAASH9hashValueSivgTW', symObjAddr: 0x1C14, symBinAddr: 0x184C88, symSize: 0x8 } + - { offset: 0x231A3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1C1C, symBinAddr: 0x184C90, symSize: 0x8 } + - { offset: 0x231A5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorV_7optionsAEyx_GADQz_AC7OptionsOyx_GtcfC', symObjAddr: 0x1C60, symBinAddr: 0x184CD4, symSize: 0x108 } + - { offset: 0x231AA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorV21makeWrappedIfRequired33_A7C4A18C5B2715847F18D055251CDC17LL7ElementQz_AI4nexttSgyF', symObjAddr: 0x1D68, symBinAddr: 0x184DDC, symSize: 0x284 } + - { offset: 0x231B02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVyx_GStAASt4next7ElementQzSgyFTW', symObjAddr: 0x1FEC, symBinAddr: 0x185060, symSize: 0x4 } + - { offset: 0x231B16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST12makeIterator0G0QzyFTW', symObjAddr: 0x2000, symBinAddr: 0x185074, symSize: 0x30 } + - { offset: 0x231F29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC14sharedInstance33_C354830B222D97D2F3184DA268CFF79DLLACSgvpZ', symObjAddr: 0x17D0, symBinAddr: 0x36B3A0, symSize: 0x0 } + - { offset: 0x2320DC, size: 0x8, addend: 0x0, symName: '_$sSo13UIAlertActionCIegg_ABIeyBy_TR', symObjAddr: 0x0, symBinAddr: 0x185140, symSize: 0x4C } + - { offset: 0x232203, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerCMa', symObjAddr: 0x1384, symBinAddr: 0x1864C4, symSize: 0x20 } + - { offset: 0x232253, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC21handleLimitedAccuracy33_C354830B222D97D2F3184DA268CFF79DLLyyF', symObjAddr: 0x13A4, symBinAddr: 0x1864E4, symSize: 0x100 } + - { offset: 0x232316, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC21handleLimitedAccuracy33_C354830B222D97D2F3184DA268CFF79DLLyyFTo', symObjAddr: 0x14A4, symBinAddr: 0x1865E4, symSize: 0x28 } + - { offset: 0x232332, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyaABSHSCWl', symObjAddr: 0x1670, symBinAddr: 0x18676C, symSize: 0x44 } + - { offset: 0x232346, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x170C, symBinAddr: 0x1867B4, symSize: 0x10 } + - { offset: 0x23235A, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x171C, symBinAddr: 0x1867C4, symSize: 0x8 } + - { offset: 0x23236E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC06handleD11InteractionyyFyycACcfu1_yycfu2_TA', symObjAddr: 0x1790, symBinAddr: 0x1867F8, symSize: 0x8 } + - { offset: 0x23251F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC09preferredD4Type33_C354830B222D97D2F3184DA268CFF79DLLAA0dG0OSgvg', symObjAddr: 0x4C, symBinAddr: 0x18518C, symSize: 0x138 } + - { offset: 0x2325AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC20isServerDisconnectedSbvg', symObjAddr: 0x184, symBinAddr: 0x1852C4, symSize: 0xCC } + - { offset: 0x23266C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC14isReconnectingSbvg', symObjAddr: 0x250, symBinAddr: 0x185390, symSize: 0xC8 } + - { offset: 0x2326E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC25areDirectionsNotAvailableSbvg', symObjAddr: 0x318, symBinAddr: 0x185458, symSize: 0xC8 } + - { offset: 0x232772, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC17locationDetection6statusyAA08LocationG6StatusO_tF', symObjAddr: 0x3E0, symBinAddr: 0x185520, symSize: 0xE0 } + - { offset: 0x232830, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC25networkInterfaceDidChange2toy7Network11NWInterfaceV0G4TypeO_tF', symObjAddr: 0x4C0, symBinAddr: 0x185600, symSize: 0x164 } + - { offset: 0x2328CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC24handleConnectivityAction10completionyyycSg_tFyycACcfu_yycfu0_', symObjAddr: 0x758, symBinAddr: 0x185898, symSize: 0x4 } + - { offset: 0x2328F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC24handleConnectivityAction10completionyyycSg_tFyycACcfu_yycfu0_', symObjAddr: 0x758, symBinAddr: 0x185898, symSize: 0x4 } + - { offset: 0x232941, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC06handleD11InteractionyyF', symObjAddr: 0x75C, symBinAddr: 0x18589C, symSize: 0x14C } + - { offset: 0x2329AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC06handleD11InteractionyyFyycACcfu1_yycfu2_', symObjAddr: 0x8A8, symBinAddr: 0x1859E8, symSize: 0x144 } + - { offset: 0x232B26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC9showPopup33_C354830B222D97D2F3184DA268CFF79DLL9toastType10completionyAA0dP0O_yycSgtF', symObjAddr: 0x9EC, symBinAddr: 0x185B2C, symSize: 0x350 } + - { offset: 0x232C15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC17showSettingsPopup33_C354830B222D97D2F3184DA268CFF79DLL9toastType6action11closeActionyAA0dQ0O_yycSgAKtF', symObjAddr: 0xD3C, symBinAddr: 0x185E7C, symSize: 0x494 } + - { offset: 0x232D56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC06removeD033_C354830B222D97D2F3184DA268CFF79DLL4fromySo6UIViewC_tF', symObjAddr: 0x11D0, symBinAddr: 0x186310, symSize: 0x170 } + - { offset: 0x232F13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerCfD', symObjAddr: 0x1340, symBinAddr: 0x186480, symSize: 0x44 } + - { offset: 0x232F53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC11showSetting33_C354830B222D97D2F3184DA268CFF79DLLyyFTf4d_n', symObjAddr: 0x14CC, symBinAddr: 0x18660C, symSize: 0x160 } + - { offset: 0x23374E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarCfETo', symObjAddr: 0x1A08, symBinAddr: 0x188218, symSize: 0x68 } + - { offset: 0x23377D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarCMa', symObjAddr: 0x1A70, symBinAddr: 0x188280, symSize: 0x20 } + - { offset: 0x2337AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC24textFieldDidBeginEditingyySo06UITextG0CFTo', symObjAddr: 0x1A90, symBinAddr: 0x1882A0, symSize: 0x90 } + - { offset: 0x2337FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC9textField_24shouldChangeCharactersIn17replacementStringSbSo06UITextG0C_So8_NSRangeVSStF', symObjAddr: 0x1B20, symBinAddr: 0x188330, symSize: 0x198 } + - { offset: 0x2338DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC9textField_24shouldChangeCharactersIn17replacementStringSbSo06UITextG0C_So8_NSRangeVSStFTo', symObjAddr: 0x1CB8, symBinAddr: 0x1884C8, symSize: 0x98 } + - { offset: 0x233922, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC21textFieldShouldReturnySbSo06UITextG0CFTo', symObjAddr: 0x1D50, symBinAddr: 0x188560, symSize: 0xB8 } + - { offset: 0x233977, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldCMa', symObjAddr: 0x2080, symBinAddr: 0x188838, symSize: 0x20 } + - { offset: 0x23398B, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeya_yptWOh', symObjAddr: 0x2134, symBinAddr: 0x188858, symSize: 0x40 } + - { offset: 0x233A03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC5frameACSo6CGRectV_tcfc', symObjAddr: 0xA0, symBinAddr: 0x1868B0, symSize: 0xFC } + - { offset: 0x233A63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x19C, symBinAddr: 0x1869AC, symSize: 0x20 } + - { offset: 0x233BAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1BC, symBinAddr: 0x1869CC, symSize: 0xEC } + - { offset: 0x233C0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2A8, symBinAddr: 0x186AB8, symSize: 0x28 } + - { offset: 0x233C76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC05setupC033_43BDFA56F7E262D3F1D79FF4A74F188FLLyyF', symObjAddr: 0x2D0, symBinAddr: 0x186AE0, symSize: 0x300 } + - { offset: 0x233E29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC05setupD9TextFieldyyF', symObjAddr: 0x5D0, symBinAddr: 0x186DE0, symSize: 0x67C } + - { offset: 0x2342B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC17setupCancelButtonyyF', symObjAddr: 0xC4C, symBinAddr: 0x18745C, symSize: 0x3E0 } + - { offset: 0x234593, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC05setupD4IconyyF', symObjAddr: 0x102C, symBinAddr: 0x18783C, symSize: 0x204 } + - { offset: 0x234793, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC16setupClearButtonyyF', symObjAddr: 0x1230, symBinAddr: 0x187A40, symSize: 0x4A0 } + - { offset: 0x234A19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC03setD4TextyySSSgF', symObjAddr: 0x16D0, symBinAddr: 0x187EE0, symSize: 0x198 } + - { offset: 0x234B11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC18cancelButtonTapped33_43BDFA56F7E262D3F1D79FF4A74F188FLLyyFTo', symObjAddr: 0x1868, symBinAddr: 0x188078, symSize: 0x90 } + - { offset: 0x234B54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC17clearButtonTapped33_43BDFA56F7E262D3F1D79FF4A74F188FLLyyF', symObjAddr: 0x18F8, symBinAddr: 0x188108, symSize: 0xDC } + - { offset: 0x234BFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC17clearButtonTapped33_43BDFA56F7E262D3F1D79FF4A74F188FLLyyFTo', symObjAddr: 0x19D4, symBinAddr: 0x1881E4, symSize: 0x28 } + - { offset: 0x234C2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldC03hasF0SbvgTo', symObjAddr: 0x1E30, symBinAddr: 0x188618, symSize: 0x34 } + - { offset: 0x234C3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldC03hasF0Sbvg', symObjAddr: 0x1E64, symBinAddr: 0x18864C, symSize: 0xF4 } + - { offset: 0x234CA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1F58, symBinAddr: 0x188740, symSize: 0x6C } + - { offset: 0x234CF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1FC4, symBinAddr: 0x1887AC, symSize: 0x80 } + - { offset: 0x235170, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7PatternCMa', symObjAddr: 0x24, symBinAddr: 0x188898, symSize: 0x20 } + - { offset: 0x2351DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7PatternCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x44, symBinAddr: 0x1888B8, symSize: 0x64 } + - { offset: 0x235591, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC6cancelyyFTo', symObjAddr: 0x0, symBinAddr: 0x18891C, symSize: 0x70 } + - { offset: 0x235676, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCfE', symObjAddr: 0xBC, symBinAddr: 0x1889D8, symSize: 0x10 } + - { offset: 0x2356A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCfETo', symObjAddr: 0xFC, symBinAddr: 0x188A18, symSize: 0x10 } + - { offset: 0x2356D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCMa', symObjAddr: 0x10C, symBinAddr: 0x188A28, symSize: 0x20 } + - { offset: 0x2356F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC05trackd2ByE0_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFTf4dnnn_n', symObjAddr: 0x12C, symBinAddr: 0x188A48, symSize: 0x3F8 } + - { offset: 0x23581E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC6cancelyyFTo', symObjAddr: 0x0, symBinAddr: 0x18891C, symSize: 0x70 } + - { offset: 0x235891, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC4mainyyFTo', symObjAddr: 0x70, symBinAddr: 0x18898C, symSize: 0x20 } + - { offset: 0x2358A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC4mainyyFTo', symObjAddr: 0x70, symBinAddr: 0x18898C, symSize: 0x20 } + - { offset: 0x2358C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC4mainyyFTo', symObjAddr: 0x70, symBinAddr: 0x18898C, symSize: 0x20 } + - { offset: 0x23590C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCACycfcTo', symObjAddr: 0x90, symBinAddr: 0x1889AC, symSize: 0x2C } + - { offset: 0x23596B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCfD', symObjAddr: 0xCC, symBinAddr: 0x1889E8, symSize: 0x30 } + - { offset: 0x235D6F, size: 0x8, addend: 0x0, symName: '_$sSo30UIGraphicsImageRendererContextCIegg_ABIyBy_TR', symObjAddr: 0x20, symBinAddr: 0x188E40, symSize: 0x38 } + - { offset: 0x235F4A, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE8svgNamed2in7optionsABSgSS_So8NSBundleCAC3SVGC7OptionsVtcfC', symObjAddr: 0x58, symBinAddr: 0x188E78, symSize: 0x354 } + - { offset: 0x23618C, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIEyAbC3SVGCcfC', symObjAddr: 0x3AC, symBinAddr: 0x1891CC, symSize: 0xF4 } + - { offset: 0x23620E, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7svgDataABSg10Foundation0F0V_tcfC', symObjAddr: 0x4A0, symBinAddr: 0x1892C0, symSize: 0x78 } + - { offset: 0x2362BF, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7svgDataABSg10Foundation0F0V_tcfc', symObjAddr: 0x518, symBinAddr: 0x189338, symSize: 0x224 } + - { offset: 0x236448, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7svgDataABSg10Foundation0F0V_tcfcTo', symObjAddr: 0x73C, symBinAddr: 0x18955C, symSize: 0x58 } + - { offset: 0x236464, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE17contentsOfSVGFileABSgSS_tcfC', symObjAddr: 0x794, symBinAddr: 0x1895B4, symSize: 0x74 } + - { offset: 0x236482, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE17contentsOfSVGFileABSgSS_tcfc', symObjAddr: 0x808, symBinAddr: 0x189628, symSize: 0x2A4 } + - { offset: 0x23666D, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE17contentsOfSVGFileABSgSS_tcfcTo', symObjAddr: 0xAAC, symBinAddr: 0x1898CC, symSize: 0x28 } + - { offset: 0x236689, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE9_svgNamedyABSgSSFZ', symObjAddr: 0xAD4, symBinAddr: 0x1898F4, symSize: 0x98 } + - { offset: 0x2366D8, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE9_svgNamedyABSgSSFZTo', symObjAddr: 0xB6C, symBinAddr: 0x18998C, symSize: 0x90 } + - { offset: 0x236715, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE9_svgNamed_2inABSgSS_So8NSBundleCtFZ', symObjAddr: 0xBFC, symBinAddr: 0x189A1C, symSize: 0x7C } + - { offset: 0x23677A, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE9_svgNamed_2inABSgSS_So8NSBundleCtFZTo', symObjAddr: 0xC78, symBinAddr: 0x189A98, symSize: 0x7C } + - { offset: 0x2367B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC9rasterizeSo7UIImageCyF', symObjAddr: 0xCF4, symBinAddr: 0x189B14, symSize: 0x30 } + - { offset: 0x236816, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtF', symObjAddr: 0xD24, symBinAddr: 0x189B44, symSize: 0x234 } + - { offset: 0x236951, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtFySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0x10E4, symBinAddr: 0x189F04, symSize: 0x78 } + - { offset: 0x236A5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC10makeBounds4size5scale6insetsSo6CGRectV6bounds_Si10pixelsWideSi0L4HightSo6CGSizeVSg_12CoreGraphics7CGFloatVAC6InsetsVtF', symObjAddr: 0xF58, symBinAddr: 0x189D78, symSize: 0x18C } + - { offset: 0x236B71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7pngData4size5scale6insets10Foundation0F0VSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtKF', symObjAddr: 0x115C, symBinAddr: 0x189F7C, symSize: 0xC8 } + - { offset: 0x236C15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC8jpegData4size5scale18compressionQuality6insets10Foundation0F0VSo6CGSizeVSg_12CoreGraphics7CGFloatVAQSo12UIEdgeInsetsVtKF', symObjAddr: 0x1224, symBinAddr: 0x18A044, symSize: 0xE4 } + - { offset: 0x236CC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0x1434, symBinAddr: 0x18A14C, symSize: 0x10 } + - { offset: 0x236CDD, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1474, symBinAddr: 0x18A16C, symSize: 0x10 } + - { offset: 0x236CF1, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1484, symBinAddr: 0x18A17C, symSize: 0x8 } + - { offset: 0x236D05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_64660464CF3F4A91161BC661976AF1A2LLVMa', symObjAddr: 0x1628, symBinAddr: 0x18A184, symSize: 0x10 } + - { offset: 0x236D19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_64660464CF3F4A91161BC661976AF1A2LLV10Foundation09LocalizedE0AAsADPWb', symObjAddr: 0x1638, symBinAddr: 0x18A194, symSize: 0x4 } + - { offset: 0x237A45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCfE', symObjAddr: 0x28A8, symBinAddr: 0x18CA40, symSize: 0xFC } + - { offset: 0x237A72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCfETo', symObjAddr: 0x29D4, symBinAddr: 0x18CB6C, symSize: 0x108 } + - { offset: 0x237AA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCMa', symObjAddr: 0x2ADC, symBinAddr: 0x18CC74, symSize: 0x20 } + - { offset: 0x237AF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x2AFC, symBinAddr: 0x18CC94, symSize: 0x98 } + - { offset: 0x237BA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x2B94, symBinAddr: 0x18CD2C, symSize: 0x24 } + - { offset: 0x237C24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x2BB8, symBinAddr: 0x18CD50, symSize: 0x84 } + - { offset: 0x237C93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x2C3C, symBinAddr: 0x18CDD4, symSize: 0x28 } + - { offset: 0x237CD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x2C64, symBinAddr: 0x18CDFC, symSize: 0x20C } + - { offset: 0x237ED3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x2E70, symBinAddr: 0x18D008, symSize: 0x50 } + - { offset: 0x237EEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x2EC0, symBinAddr: 0x18D058, symSize: 0x154 } + - { offset: 0x237F85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x3090, symBinAddr: 0x18D1AC, symSize: 0x8 } + - { offset: 0x237FBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x3098, symBinAddr: 0x18D1B4, symSize: 0x4 } + - { offset: 0x237FDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x3098, symBinAddr: 0x18D1B4, symSize: 0x4 } + - { offset: 0x237FFA, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x30C8, symBinAddr: 0x18D1DC, symSize: 0x10 } + - { offset: 0x23800E, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x30D8, symBinAddr: 0x18D1EC, symSize: 0x8 } + - { offset: 0x238022, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC17showRouteOverviewyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x3204, symBinAddr: 0x18D218, symSize: 0x20 } + - { offset: 0x23805C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11getDistance2toyAA5PlaceCSg_tFySdSgcfU_TA', symObjAddr: 0x32FC, symBinAddr: 0x18D238, symSize: 0xC } + - { offset: 0x238070, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11getDistance2toyAA5PlaceCSg_tFySdSgcfU_yycfU_TA', symObjAddr: 0x332C, symBinAddr: 0x18D268, symSize: 0xC } + - { offset: 0x238084, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyFyycfU_TA', symObjAddr: 0x3338, symBinAddr: 0x18D274, symSize: 0x8 } + - { offset: 0x238098, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyFyycfU0_TA', symObjAddr: 0x3340, symBinAddr: 0x18D27C, symSize: 0x8 } + - { offset: 0x238516, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x18A198, symSize: 0x10 } + - { offset: 0x23852E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x18A198, symSize: 0x10 } + - { offset: 0x238574, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06scrollF0So08UIScrollF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x18A1A8, symSize: 0x34 } + - { offset: 0x2385C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x18A1DC, symSize: 0x10 } + - { offset: 0x2385DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x18A1DC, symSize: 0x10 } + - { offset: 0x23861B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x18A1EC, symSize: 0x34 } + - { offset: 0x23866A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11parkingTimeSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x18A220, symSize: 0x10 } + - { offset: 0x238682, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11parkingTimeSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x18A220, symSize: 0x10 } + - { offset: 0x2386BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11parkingTimeSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x18A230, symSize: 0x34 } + - { offset: 0x23870C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x18A264, symSize: 0x10 } + - { offset: 0x238724, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x18A264, symSize: 0x10 } + - { offset: 0x23875F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x18A274, symSize: 0x34 } + - { offset: 0x2387AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC16directionsButtonAA06HapticF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x18A2A8, symSize: 0x10 } + - { offset: 0x2387C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC16directionsButtonAA06HapticF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x18A2A8, symSize: 0x10 } + - { offset: 0x238806, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC16directionsButtonAA06HapticF0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x18A2B8, symSize: 0x34 } + - { offset: 0x238855, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06removeD6ButtonAA06HapticF0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x18A2EC, symSize: 0x10 } + - { offset: 0x23886D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06removeD6ButtonAA06HapticF0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x18A2EC, symSize: 0x10 } + - { offset: 0x2388A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06removeD6ButtonAA06HapticF0CSgvsTo', symObjAddr: 0x164, symBinAddr: 0x18A2FC, symSize: 0x34 } + - { offset: 0x2388F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC010titleStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x18A330, symSize: 0x10 } + - { offset: 0x23890F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC010titleStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x18A330, symSize: 0x10 } + - { offset: 0x23894F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC010titleStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x18A340, symSize: 0x34 } + - { offset: 0x23899E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x18A374, symSize: 0x10 } + - { offset: 0x2389B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x1DC, symBinAddr: 0x18A374, symSize: 0x10 } + - { offset: 0x2389F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x1EC, symBinAddr: 0x18A384, symSize: 0x34 } + - { offset: 0x238A9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x220, symBinAddr: 0x18A3B8, symSize: 0x110 } + - { offset: 0x238B4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x330, symBinAddr: 0x18A4C8, symSize: 0x28 } + - { offset: 0x238B99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyF', symObjAddr: 0x358, symBinAddr: 0x18A4F0, symSize: 0x12C } + - { offset: 0x238C55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyFyycfU_', symObjAddr: 0x484, symBinAddr: 0x18A61C, symSize: 0x54 } + - { offset: 0x238C7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyFyycfU0_', symObjAddr: 0x4D8, symBinAddr: 0x18A670, symSize: 0x1C0 } + - { offset: 0x238FA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC03setD7AddressyyF', symObjAddr: 0x698, symBinAddr: 0x18A830, symSize: 0x4B8 } + - { offset: 0x23950B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC014loadDistanceOfD0yyF', symObjAddr: 0xB50, symBinAddr: 0x18ACE8, symSize: 0x1F4 } + - { offset: 0x239722, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC03setD4DateyyF', symObjAddr: 0xD44, symBinAddr: 0x18AEDC, symSize: 0x7A8 } + - { offset: 0x23990E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11getDistance2toyAA5PlaceCSg_tFySdSgcfU_', symObjAddr: 0x14EC, symBinAddr: 0x18B684, symSize: 0x24C } + - { offset: 0x239A47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11getDistance2toyAA5PlaceCSg_tFySdSgcfU_yycfU_', symObjAddr: 0x1738, symBinAddr: 0x18B8D0, symSize: 0x104 } + - { offset: 0x239B20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC17showRouteOverviewyyF', symObjAddr: 0x183C, symBinAddr: 0x18B9D4, symSize: 0x474 } + - { offset: 0x239FEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC22showNavigationOverview33_7A88AEBDF2F3A6A99527A4374A87C8B0LL6sourceyAA5PlaceCSg_tF', symObjAddr: 0x1CB0, symBinAddr: 0x18BE48, symSize: 0x284 } + - { offset: 0x23A24B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5shareyyF', symObjAddr: 0x1F34, symBinAddr: 0x18C0CC, symSize: 0x100 } + - { offset: 0x23A31A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0x2034, symBinAddr: 0x18C1CC, symSize: 0x4C0 } + - { offset: 0x23A581, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5shareyyFTo', symObjAddr: 0x24F4, symBinAddr: 0x18C68C, symSize: 0x28 } + - { offset: 0x23A595, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x251C, symBinAddr: 0x18C6B4, symSize: 0x88 } + - { offset: 0x23A5C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x25A4, symBinAddr: 0x18C73C, symSize: 0x154 } + - { offset: 0x23A606, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x26F8, symBinAddr: 0x18C890, symSize: 0x60 } + - { offset: 0x23A61A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x2758, symBinAddr: 0x18C8F0, symSize: 0x128 } + - { offset: 0x23A64D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2880, symBinAddr: 0x18CA18, symSize: 0x28 } + - { offset: 0x23A661, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCfD', symObjAddr: 0x29A4, symBinAddr: 0x18CB3C, symSize: 0x30 } + - { offset: 0x23AB03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVMa', symObjAddr: 0x0, symBinAddr: 0x18D294, symSize: 0x10 } + - { offset: 0x23AB1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVMa', symObjAddr: 0x0, symBinAddr: 0x18D294, symSize: 0x10 } + - { offset: 0x23AC1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOAFs0F3KeyAAWl', symObjAddr: 0x210, symBinAddr: 0x18D404, symSize: 0x40 } + - { offset: 0x23AC30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOMa', symObjAddr: 0x250, symBinAddr: 0x18D444, symSize: 0x10 } + - { offset: 0x23AC44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x260, symBinAddr: 0x18D454, symSize: 0x4 } + - { offset: 0x23AC58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x264, symBinAddr: 0x18D458, symSize: 0x40 } + - { offset: 0x23AC6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x2A4, symBinAddr: 0x18D498, symSize: 0x4 } + - { offset: 0x23AC80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x2A8, symBinAddr: 0x18D49C, symSize: 0x40 } + - { offset: 0x23ACAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x60, symBinAddr: 0x18D2DC, symSize: 0x28 } + - { offset: 0x23ACCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x88, symBinAddr: 0x18D304, symSize: 0x28 } + - { offset: 0x23ACE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x10, symBinAddr: 0x18D2A4, symSize: 0xC } + - { offset: 0x23AD01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1C, symBinAddr: 0x18D2B0, symSize: 0x2C } + - { offset: 0x23AD28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xB0, symBinAddr: 0x18D32C, symSize: 0x24 } + - { offset: 0x23AD6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xD4, symBinAddr: 0x18D350, symSize: 0xB4 } + - { offset: 0x23B11F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOMa', symObjAddr: 0x0, symBinAddr: 0x18D4DC, symSize: 0x10 } + - { offset: 0x23B137, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOMa', symObjAddr: 0x0, symBinAddr: 0x18D4DC, symSize: 0x10 } + - { offset: 0x23B20A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOSHAASQWb', symObjAddr: 0x608, symBinAddr: 0x18DA18, symSize: 0x4 } + - { offset: 0x23B21E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOACSQAAWl', symObjAddr: 0x60C, symBinAddr: 0x18DA1C, symSize: 0x40 } + - { offset: 0x23B256, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO7messageSSvg', symObjAddr: 0x10, symBinAddr: 0x18D4EC, symSize: 0x158 } + - { offset: 0x23B287, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO10popupTitleSSvg', symObjAddr: 0x168, symBinAddr: 0x18D644, symSize: 0x118 } + - { offset: 0x23B2C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO12popupMessageSSvg', symObjAddr: 0x280, symBinAddr: 0x18D75C, symSize: 0x144 } + - { offset: 0x23B2F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO16popupCloseActionSSvg', symObjAddr: 0x3C4, symBinAddr: 0x18D8A0, symSize: 0x148 } + - { offset: 0x23B37A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x5CC, symBinAddr: 0x18D9E8, symSize: 0x30 } + - { offset: 0x23B3A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x64C, symBinAddr: 0x18DA5C, symSize: 0x14 } + - { offset: 0x23B8B3, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelC8PenNavUIE14escalatorEdgesSayAA4EdgeCGvg', symObjAddr: 0x0, symBinAddr: 0x18DA70, symSize: 0x1D4 } + - { offset: 0x23BAFF, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelC8PenNavUIE14escalatorEdgesSayAA4EdgeCGvgSbAGXEfU_', symObjAddr: 0x1D4, symBinAddr: 0x18DC44, symSize: 0x310 } + - { offset: 0x23C099, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelCAA0C13Representable8PenNavUIAaDP13isUpEscalatorSbvgTW', symObjAddr: 0xD28, symBinAddr: 0x18E798, symSize: 0x24 } + - { offset: 0x23C0B5, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelCAA0C13Representable8PenNavUIAaDP15isDownEscalatorSbvgTW', symObjAddr: 0xD4C, symBinAddr: 0x18E7BC, symSize: 0x24 } + - { offset: 0x23C0D1, size: 0x8, addend: 0x0, symName: '_$s7Penguin11EdgeTypeNewOACSYAAWl', symObjAddr: 0xD70, symBinAddr: 0x18E7E0, symSize: 0x44 } + - { offset: 0x23C368, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelCAA0C13Representable8PenNavUIAaDP8nodeTypeAA0cJ0OSgvgTW', symObjAddr: 0xD08, symBinAddr: 0x18E778, symSize: 0x20 } + - { offset: 0x23C719, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOMa', symObjAddr: 0x168, symBinAddr: 0x18E824, symSize: 0x10 } + - { offset: 0x23C72D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwxx', symObjAddr: 0x1A4, symBinAddr: 0x18E834, symSize: 0x28 } + - { offset: 0x23C741, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwcp', symObjAddr: 0x1CC, symBinAddr: 0x18E85C, symSize: 0x6C } + - { offset: 0x23C755, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwca', symObjAddr: 0x238, symBinAddr: 0x18E8C8, symSize: 0xA4 } + - { offset: 0x23C769, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwta', symObjAddr: 0x2F8, symBinAddr: 0x18E96C, symSize: 0x74 } + - { offset: 0x23C77D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwet', symObjAddr: 0x36C, symBinAddr: 0x18E9E0, symSize: 0x48 } + - { offset: 0x23C791, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwst', symObjAddr: 0x3B4, symBinAddr: 0x18EA28, symSize: 0x4C } + - { offset: 0x23C7A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVMa', symObjAddr: 0x400, symBinAddr: 0x18EA74, symSize: 0x10 } + - { offset: 0x23C7D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOSHAASQWb', symObjAddr: 0x418, symBinAddr: 0x18EA8C, symSize: 0x4 } + - { offset: 0x23C7E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOAGSQAAWl', symObjAddr: 0x41C, symBinAddr: 0x18EA90, symSize: 0x40 } + - { offset: 0x23C88E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0x410, symBinAddr: 0x18EA84, symSize: 0x8 } + - { offset: 0x23C8D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x698, symBinAddr: 0x18EAD0, symSize: 0x70 } + - { offset: 0x23CE86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCfE', symObjAddr: 0x294, symBinAddr: 0x18EDD4, symSize: 0x94 } + - { offset: 0x23CEB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCMU', symObjAddr: 0x428, symBinAddr: 0x18EF68, symSize: 0x8 } + - { offset: 0x23CEC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCMa', symObjAddr: 0x430, symBinAddr: 0x18EF70, symSize: 0x38 } + - { offset: 0x23CEDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCMr', symObjAddr: 0x468, symBinAddr: 0x18EFA8, symSize: 0x68 } + - { offset: 0x23CEF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVwxx', symObjAddr: 0x4FC, symBinAddr: 0x18F010, symSize: 0x50 } + - { offset: 0x23CF05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVwcp', symObjAddr: 0x54C, symBinAddr: 0x18F060, symSize: 0x8C } + - { offset: 0x23CF19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVwca', symObjAddr: 0x5D8, symBinAddr: 0x18F0EC, symSize: 0xD4 } + - { offset: 0x23CF2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVwta', symObjAddr: 0x6C8, symBinAddr: 0x18F1C0, symSize: 0x7C } + - { offset: 0x23CF41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVMa', symObjAddr: 0x7D8, symBinAddr: 0x18F23C, symSize: 0x10 } + - { offset: 0x23CF55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetVMa', symObjAddr: 0x7E8, symBinAddr: 0x18F24C, symSize: 0x10 } + - { offset: 0x23CF69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC7ViewBoxVMa', symObjAddr: 0x850, symBinAddr: 0x18F25C, symSize: 0x10 } + - { offset: 0x23CF93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4MaskVMa', symObjAddr: 0xC34, symBinAddr: 0x18F5F0, symSize: 0x10 } + - { offset: 0x23CFA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8ClipPathVMa', symObjAddr: 0xDD8, symBinAddr: 0x18F6E4, symSize: 0x10 } + - { offset: 0x23CFBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwxx', symObjAddr: 0xE04, symBinAddr: 0x18F6F8, symSize: 0x10 } + - { offset: 0x23CFCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwca', symObjAddr: 0xE74, symBinAddr: 0x18F750, symSize: 0x54 } + - { offset: 0x23CFE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwta', symObjAddr: 0xEDC, symBinAddr: 0x18F7A4, symSize: 0x44 } + - { offset: 0x23CFF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwet', symObjAddr: 0xF20, symBinAddr: 0x18F7E8, symSize: 0x48 } + - { offset: 0x23D00B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwst', symObjAddr: 0xF68, symBinAddr: 0x18F830, symSize: 0x44 } + - { offset: 0x23D01F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwug', symObjAddr: 0xFAC, symBinAddr: 0x18F874, symSize: 0x8 } + - { offset: 0x23D033, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwui', symObjAddr: 0xFB8, symBinAddr: 0x18F87C, symSize: 0x8 } + - { offset: 0x23D047, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOMa', symObjAddr: 0xFC0, symBinAddr: 0x18F884, symSize: 0x10 } + - { offset: 0x23D05B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOAGSQAAWl', symObjAddr: 0xFD0, symBinAddr: 0x18F894, symSize: 0x40 } + - { offset: 0x23D09B, size: 0x8, addend: 0x0, symName: '_$sSLsE2geoiySbx_xtFZ8PenNavUI3DOMO10StyleSheetV8SelectorO_Tt1g5', symObjAddr: 0x0, symBinAddr: 0x18EB40, symSize: 0xCC } + - { offset: 0x23D138, size: 0x8, addend: 0x0, symName: '_$sSLsE1goiySbx_xtFZ8PenNavUI3DOMO10StyleSheetV8SelectorO_Tt1g5', symObjAddr: 0xCC, symBinAddr: 0x18EC0C, symSize: 0xD4 } + - { offset: 0x23D208, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x958, symBinAddr: 0x18F328, symSize: 0x5C } + - { offset: 0x23D2C2, size: 0x8, addend: 0x0, symName: '_$sSLsE2leoiySbx_xtFZ8PenNavUI3DOMO10StyleSheetV8SelectorO_Tt1g5', symObjAddr: 0x9CC, symBinAddr: 0x18F39C, symSize: 0xD4 } + - { offset: 0x23D3AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC5width6heightAESi_Sitcfc', symObjAddr: 0x1A0, symBinAddr: 0x18ECE0, symSize: 0xB8 } + - { offset: 0x23D420, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC7ViewBoxVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x258, symBinAddr: 0x18ED98, symSize: 0x3C } + - { offset: 0x23D477, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCfD', symObjAddr: 0x328, symBinAddr: 0x18EE68, symSize: 0x100 } + - { offset: 0x23D4C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0x860, symBinAddr: 0x18F26C, symSize: 0x14 } + - { offset: 0x23D533, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOSHAASH9hashValueSivgTW', symObjAddr: 0x8B8, symBinAddr: 0x18F288, symSize: 0x60 } + - { offset: 0x23D636, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x918, symBinAddr: 0x18F2E8, symSize: 0x40 } + - { offset: 0x23D6E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xAD8, symBinAddr: 0x18F4A8, symSize: 0x64 } + - { offset: 0x23D749, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorO1loiySbAG_AGtFZTf4nnd_n', symObjAddr: 0xB3C, symBinAddr: 0x18F50C, symSize: 0xCC } + - { offset: 0x23DB52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5frame9dotsCountACSo6CGRectV_Sitcfc', symObjAddr: 0x0, symBinAddr: 0x18F8FC, symSize: 0x1C4 } + - { offset: 0x23DE10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorCfETo', symObjAddr: 0xCE4, symBinAddr: 0x1905E0, symSize: 0x10 } + - { offset: 0x23DE3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorCMa', symObjAddr: 0xCF4, symBinAddr: 0x1905F0, symSize: 0x20 } + - { offset: 0x23DFB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5frame9dotsCountACSo6CGRectV_Sitcfc', symObjAddr: 0x0, symBinAddr: 0x18F8FC, symSize: 0x1C4 } + - { offset: 0x23E0C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5frameACSo6CGRectV_tcfc', symObjAddr: 0x1C4, symBinAddr: 0x18FAC0, symSize: 0x1B4 } + - { offset: 0x23E1BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x378, symBinAddr: 0x18FC74, symSize: 0x20 } + - { offset: 0x23E1F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x398, symBinAddr: 0x18FC94, symSize: 0x1B8 } + - { offset: 0x23E304, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x550, symBinAddr: 0x18FE4C, symSize: 0x28 } + - { offset: 0x23E4D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC14setUpAnimation2in4size5colorySo7CALayerC_So6CGSizeVSo7UIColorCtF', symObjAddr: 0x578, symBinAddr: 0x18FE74, symSize: 0x73C } + - { offset: 0x23E9AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorCfD', symObjAddr: 0xCB4, symBinAddr: 0x1905B0, symSize: 0x30 } + - { offset: 0x23F169, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerCMU', symObjAddr: 0x1B90, symBinAddr: 0x1921A0, symSize: 0x8 } + - { offset: 0x23F17D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerCMa', symObjAddr: 0x1B98, symBinAddr: 0x1921A8, symSize: 0x38 } + - { offset: 0x23F191, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerCMr', symObjAddr: 0x1BD0, symBinAddr: 0x1921E0, symSize: 0x78 } + - { offset: 0x23F1A5, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgWOf', symObjAddr: 0x1CE0, symBinAddr: 0x192258, symSize: 0x48 } + - { offset: 0x23F1B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC014getCategorizedD02in8categorySay7Penguin10PoiPolygonVGAG5VenueCSg_AG11POICategoryVSgtFSbAIXEfU_TA', symObjAddr: 0x1E14, symBinAddr: 0x1922C4, symSize: 0x1C } + - { offset: 0x23F5E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC6select_8category25setsCameraToSelectedPlace08animatesI0yAA0L0CSg_7Penguin11POICategoryVSgS2btF', symObjAddr: 0x0, symBinAddr: 0x190610, symSize: 0xBAC } + - { offset: 0x23FABB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC8deselectyyF', symObjAddr: 0xBAC, symBinAddr: 0x1911BC, symSize: 0xD4 } + - { offset: 0x23FB08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC22updateSymbolVisibility2ony7Penguin5FloorCSg_tF', symObjAddr: 0xC80, symBinAddr: 0x191290, symSize: 0x1F0 } + - { offset: 0x23FB6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC16updateSymbolTextyySSF', symObjAddr: 0xE70, symBinAddr: 0x191480, symSize: 0x130 } + - { offset: 0x23FD8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC16updateSymbolIconyyFySo7UIImageCSgcfU_', symObjAddr: 0xFA0, symBinAddr: 0x1915B0, symSize: 0xBA0 } + - { offset: 0x240187, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerCfD', symObjAddr: 0x1B40, symBinAddr: 0x192150, symSize: 0x50 } + - { offset: 0x242881, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC05clearD12PathFeaturesyyF', symObjAddr: 0x4C, symBinAddr: 0x1922E0, symSize: 0x1DC } + - { offset: 0x242B89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCfETo', symObjAddr: 0x6F4, symBinAddr: 0x192988, symSize: 0x2A4 } + - { offset: 0x242CFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11setLocation33_00AFBD3210DA1B0197CE155260A7E798LL_28skipsIntermediateCoordinatesy7Penguin10PILocationCSg_SbtF', symObjAddr: 0xB18, symBinAddr: 0x192DAC, symSize: 0x18C } + - { offset: 0x242E0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateCompassMarginsyyF', symObjAddr: 0xEDC, symBinAddr: 0x193170, symSize: 0x21C } + - { offset: 0x243045, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8setupMapyyF', symObjAddr: 0x1258, symBinAddr: 0x1934EC, symSize: 0x2D4 } + - { offset: 0x243308, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8setupMapyyFySbcfU_', symObjAddr: 0x12F44, symBinAddr: 0x1A50CC, symSize: 0x54 } + - { offset: 0x24362D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSgSbIegny_ACSbIegny_TR', symObjAddr: 0x31D4, symBinAddr: 0x195468, symSize: 0xB0 } + - { offset: 0x243EF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC09addBottomD5PanelyyF', symObjAddr: 0x78CC, symBinAddr: 0x199AF0, symSize: 0x3DC } + - { offset: 0x2445B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23setToastBackgroundColoryySo7UIColorCF', symObjAddr: 0x7CA8, symBinAddr: 0x199ECC, symSize: 0x2C0 } + - { offset: 0x2449FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13getMapPaddingSo12UIEdgeInsetsVyF', symObjAddr: 0x99F0, symBinAddr: 0x19BB88, symSize: 0x314 } + - { offset: 0x244F15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC24resetRecalculateAttempts33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0xB210, symBinAddr: 0x19D3A8, symSize: 0x144 } + - { offset: 0x245022, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC05resetD033_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0xB354, symBinAddr: 0x19D4EC, symSize: 0xBC } + - { offset: 0x245297, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC018handleUserLocationC033_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0xBE50, symBinAddr: 0x19DFE8, symSize: 0x460 } + - { offset: 0x2455DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC04exitD0yyF', symObjAddr: 0xC2B0, symBinAddr: 0x19E448, symSize: 0x304 } + - { offset: 0x245873, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15getMapZoomLevel12CoreGraphics7CGFloatVSgyF', symObjAddr: 0xD518, symBinAddr: 0x19F6B0, symSize: 0x274 } + - { offset: 0x245AD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11getMapPitch12CoreGraphics7CGFloatVSgyF', symObjAddr: 0xD78C, symBinAddr: 0x19F924, symSize: 0x88 } + - { offset: 0x245BFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCMa', symObjAddr: 0xED80, symBinAddr: 0x1A0F18, symSize: 0x20 } + - { offset: 0x245C0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA22FloatingPanelPresenterA2aDP08floatingH7DidMoveyyAA0ghF0CFTW', symObjAddr: 0xEE28, symBinAddr: 0x1A0FBC, symSize: 0x4 } + - { offset: 0x245C2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0xEE2C, symBinAddr: 0x1A0FC0, symSize: 0x3F4 } + - { offset: 0x245F1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0xF220, symBinAddr: 0x1A13B4, symSize: 0x8 } + - { offset: 0x245F39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtF', symObjAddr: 0xF228, symBinAddr: 0x1A13BC, symSize: 0xB48 } + - { offset: 0x246ACE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC10onMapReadyyyF', symObjAddr: 0xFD70, symBinAddr: 0x1A1F04, symSize: 0x27C } + - { offset: 0x246CB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC10onMapReadyyyFyycfU_', symObjAddr: 0x1049C, symBinAddr: 0x1A2630, symSize: 0x6A4 } + - { offset: 0x247304, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC30handleToastAppearanceOnMapLoad33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0xFFEC, symBinAddr: 0x1A2180, symSize: 0x3BC } + - { offset: 0x2476CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19startUpdateLocationyyF', symObjAddr: 0x103A8, symBinAddr: 0x1A253C, symSize: 0xF4 } + - { offset: 0x24770A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18didFailToLoadRoute5errory7Penguin0K5ErrorOSg_tF', symObjAddr: 0x10C48, symBinAddr: 0x1A2DDC, symSize: 0x310 } + - { offset: 0x247A72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEntrances9rerouting10completionySb_yyctFySayAA5PlaceCGcfU_', symObjAddr: 0x10F58, symBinAddr: 0x1A30EC, symSize: 0x290 } + - { offset: 0x247E7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11handleRetryyyF', symObjAddr: 0x111E8, symBinAddr: 0x1A337C, symSize: 0x140 } + - { offset: 0x247FFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15endTripIfNeededyyF', symObjAddr: 0x11328, symBinAddr: 0x1A34BC, symSize: 0x6D0 } + - { offset: 0x248797, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18onReachDestinationyyF', symObjAddr: 0x119F8, symBinAddr: 0x1A3B8C, symSize: 0xB80 } + - { offset: 0x24922B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18onReachDestinationyyFyycfU0_', symObjAddr: 0x1BC34, symBinAddr: 0x1ADC08, symSize: 0x5C } + - { offset: 0x2492FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21puckLocationDidUpdate10coordinateySo22CLLocationCoordinate2DV_tF', symObjAddr: 0x12578, symBinAddr: 0x1A470C, symSize: 0x298 } + - { offset: 0x24951C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11mapDidPinchyyF', symObjAddr: 0x12810, symBinAddr: 0x1A49A4, symSize: 0xB0 } + - { offset: 0x249619, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15mapAlignedNorthyyF', symObjAddr: 0x128C4, symBinAddr: 0x1A4A54, symSize: 0x298 } + - { offset: 0x24986D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15cameraDidChangeyyF', symObjAddr: 0x12B5C, symBinAddr: 0x1A4CEC, symSize: 0x250 } + - { offset: 0x249A27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP27locationIndicatorCoordinateSo22CLLocationCoordinate2DVSgvgTW', symObjAddr: 0x12E68, symBinAddr: 0x1A4FF8, symSize: 0x58 } + - { offset: 0x249A7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP26isLocationIndicatorVisibleSbvgTW', symObjAddr: 0x12EC0, symBinAddr: 0x1A5050, symSize: 0x44 } + - { offset: 0x249AD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP9mapDidTapyyFTW', symObjAddr: 0x12F04, symBinAddr: 0x1A5094, symSize: 0x14 } + - { offset: 0x249AF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP9mapDidTapyyFTW', symObjAddr: 0x12F04, symBinAddr: 0x1A5094, symSize: 0x14 } + - { offset: 0x249B11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP9mapDidTapyyFTW', symObjAddr: 0x12F04, symBinAddr: 0x1A5094, symSize: 0x14 } + - { offset: 0x249B3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP11mapDidPinchyyFTW', symObjAddr: 0x12F2C, symBinAddr: 0x1A50BC, symSize: 0x4 } + - { offset: 0x249B5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP15cameraDidChangeyyFTW', symObjAddr: 0x12F38, symBinAddr: 0x1A50C0, symSize: 0x4 } + - { offset: 0x249B76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP15mapAlignedNorthyyFTW', symObjAddr: 0x12F3C, symBinAddr: 0x1A50C4, symSize: 0x4 } + - { offset: 0x249B92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP21puckLocationDidUpdate10coordinateySo22CLLocationCoordinate2DV_tFTW', symObjAddr: 0x12F40, symBinAddr: 0x1A50C8, symSize: 0x4 } + - { offset: 0x249BAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22setUserLocationBlueDot8location28skipsIntermediateCoordinatesy7Penguin10PILocationC_SbtF', symObjAddr: 0x13068, symBinAddr: 0x1A5120, symSize: 0x140 } + - { offset: 0x249C75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23updateUserLocationOnMap8location4edge28skipsIntermediateCoordinatesySo22CLLocationCoordinate2DV_7Penguin4EdgeCSbtF', symObjAddr: 0x131A8, symBinAddr: 0x1A5260, symSize: 0xB38 } + - { offset: 0x24A517, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16onLocationChange8locationy7Penguin10PILocationC_tF', symObjAddr: 0x13CE0, symBinAddr: 0x1A5D98, symSize: 0xD00 } + - { offset: 0x24ADFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC32onSourceConnectivityStatusChange6statusy7Penguin0h10ConnectionJ0O_tF', symObjAddr: 0x149E0, symBinAddr: 0x1A6A98, symSize: 0x3A4 } + - { offset: 0x24B198, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18drawLocationChange33_00AFBD3210DA1B0197CE155260A7E798LLyy7Penguin10PILocationCF', symObjAddr: 0x14D84, symBinAddr: 0x1A6E3C, symSize: 0x370 } + - { offset: 0x24B51D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19evaluateRouteStatus8locationy7Penguin10PILocationC_tF', symObjAddr: 0x150F4, symBinAddr: 0x1A71AC, symSize: 0x158 } + - { offset: 0x24B637, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7reroute6reason014showsReroutingE0yAA13RerouteReasonO_SbtF', symObjAddr: 0x1524C, symBinAddr: 0x1A7304, symSize: 0x628 } + - { offset: 0x24BDFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC27drawingFloorsAndRoutingPathyy7Penguin10PILocationCSgF', symObjAddr: 0x15874, symBinAddr: 0x1A792C, symSize: 0x794 } + - { offset: 0x24C642, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12onEdgeChange4edgey7Penguin0H0C_tF', symObjAddr: 0x16008, symBinAddr: 0x1A80C0, symSize: 0xFC } + - { offset: 0x24C745, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13onVenueChange5venuey7Penguin0H0C_tF', symObjAddr: 0x16104, symBinAddr: 0x1A81BC, symSize: 0x37C } + - { offset: 0x24CA9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13onFloorChange5floory7Penguin0H0C_tF', symObjAddr: 0x16484, symBinAddr: 0x1A8538, symSize: 0x52C } + - { offset: 0x24CF6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16onRotationChange8rotationy7Penguin10PIRotationC_tF', symObjAddr: 0x169B0, symBinAddr: 0x1A8A64, symSize: 0x3CC } + - { offset: 0x24D325, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC26onConnectivityStatusChange6statusy7Penguin06ServerhI0O_tF', symObjAddr: 0x16D7C, symBinAddr: 0x1A8E30, symSize: 0x218 } + - { offset: 0x24D45D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC28handleServerRetryWithNoRouteyyF', symObjAddr: 0x16F94, symBinAddr: 0x1A9048, symSize: 0x2B8 } + - { offset: 0x24D67E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17handleServerRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0x1724C, symBinAddr: 0x1A9300, symSize: 0x384 } + - { offset: 0x24D75E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17handleServerRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyFyyScMYccfU_', symObjAddr: 0x178C0, symBinAddr: 0x1A9974, symSize: 0x19C } + - { offset: 0x24D8AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19handleLocationRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0x175D0, symBinAddr: 0x1A9684, symSize: 0x2F0 } + - { offset: 0x24D923, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19handleLocationRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyFyyScMYccfU_', symObjAddr: 0x17A5C, symBinAddr: 0x1A9B10, symSize: 0x31C } + - { offset: 0x24DB27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP16onLocationChange8locationyAD0H0C_tFTW', symObjAddr: 0x17D78, symBinAddr: 0x1A9E2C, symSize: 0x4 } + - { offset: 0x24DB43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP12onEdgeChange4edgeyAD0L0C_tFTW', symObjAddr: 0x17D7C, symBinAddr: 0x1A9E30, symSize: 0x4 } + - { offset: 0x24DB5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP13onVenueChange5venueyAD0L0C_tFTW', symObjAddr: 0x17D80, symBinAddr: 0x1A9E34, symSize: 0x4 } + - { offset: 0x24DB7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP13onFloorChange5flooryAD0L0C_tFTW', symObjAddr: 0x17D84, symBinAddr: 0x1A9E38, symSize: 0x4 } + - { offset: 0x24DB97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP16onRotationChange8rotationyAD10PIRotationC_tFTW', symObjAddr: 0x17D88, symBinAddr: 0x1A9E3C, symSize: 0x4 } + - { offset: 0x24DBB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP26onConnectivityStatusChange6statusyAD06ServerlM0O_tFTW', symObjAddr: 0x17D8C, symBinAddr: 0x1A9E40, symSize: 0x4 } + - { offset: 0x24DBCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP32onSourceConnectivityStatusChange6statusyAD0l10ConnectionN0O_tFTW', symObjAddr: 0x17D90, symBinAddr: 0x1A9E44, symSize: 0x4 } + - { offset: 0x24DBFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP22onBlePowerStatusChange6statusyAD08BLEPowerN0O_tFTW', symObjAddr: 0x17E74, symBinAddr: 0x1A9E48, symSize: 0x4 } + - { offset: 0x24DC1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP22onBlePowerStatusChange6statusyAD08BLEPowerN0O_tFTW', symObjAddr: 0x17E74, symBinAddr: 0x1A9E48, symSize: 0x4 } + - { offset: 0x24DCA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15onSubPathChange03subI0y7Penguin0dhI0C_tF', symObjAddr: 0x17E78, symBinAddr: 0x1A9E4C, symSize: 0x438 } + - { offset: 0x24E175, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20startAnimateSmoothlyyy7Penguin10PILocationCF', symObjAddr: 0x182B0, symBinAddr: 0x1AA284, symSize: 0xD0 } + - { offset: 0x24E240, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC07onStartD0yyF', symObjAddr: 0x183D4, symBinAddr: 0x1AA3A8, symSize: 0x610 } + - { offset: 0x24E894, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08logStartD5EventyyF', symObjAddr: 0x189E4, symBinAddr: 0x1AA9B8, symSize: 0x634 } + - { offset: 0x24F050, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15setCameraOnPathyyF', symObjAddr: 0x19018, symBinAddr: 0x1AAFEC, symSize: 0x37C } + - { offset: 0x24F3D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9didArrive2at10completionyAA5PlaceCSg_yycSgtF', symObjAddr: 0x19394, symBinAddr: 0x1AB368, symSize: 0xF08 } + - { offset: 0x2504E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9didArrive2at10completionyAA5PlaceCSg_yycSgtFyycfU1_', symObjAddr: 0x1A29C, symBinAddr: 0x1AC270, symSize: 0x154 } + - { offset: 0x2508B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08continueD0yyF', symObjAddr: 0x1A3F0, symBinAddr: 0x1AC3C4, symSize: 0x1084 } + - { offset: 0x251483, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC04showD8Feedback4stopyAA5PlaceCSg_tFyycfU_Tf0sn_n', symObjAddr: 0x1B514, symBinAddr: 0x1AD4E8, symSize: 0x720 } + - { offset: 0x251A1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16evaluateSchedule3forySayAA5PlaceCG_tF', symObjAddr: 0x1BC90, symBinAddr: 0x1ADC64, symSize: 0xA40 } + - { offset: 0x252992, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11onErrorPath02isH0ySb_tF', symObjAddr: 0x1C6D0, symBinAddr: 0x1AE6A4, symSize: 0x1AC } + - { offset: 0x252C18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC013showReroutingE06reasonyAA13RerouteReasonO_tF', symObjAddr: 0x1C87C, symBinAddr: 0x1AE850, symSize: 0x164 } + - { offset: 0x252D01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12onErrorFloor6statusySb_tF', symObjAddr: 0x1C9E0, symBinAddr: 0x1AE9B4, symSize: 0xA8 } + - { offset: 0x252DEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12onErrorVenue6statusySb_tF', symObjAddr: 0x1CA88, symBinAddr: 0x1AEA5C, symSize: 0x88 } + - { offset: 0x252EB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16onErrorPathReady10errorEdgesySay7Penguin0H4EdgeCGSg_tF', symObjAddr: 0x1CB10, symBinAddr: 0x1AEAE4, symSize: 0x70 } + - { offset: 0x252F98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP07onStartD0yyFTW', symObjAddr: 0x1CB88, symBinAddr: 0x1AEB54, symSize: 0x20 } + - { offset: 0x252FD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP06onStopD0yyFTW', symObjAddr: 0x1CBA8, symBinAddr: 0x1AEB74, symSize: 0x20 } + - { offset: 0x253010, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP11onErrorPath02isL0ySb_tFTW', symObjAddr: 0x1CBCC, symBinAddr: 0x1AEB94, symSize: 0x20 } + - { offset: 0x25302C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP12onErrorFloor6statusySb_tFTW', symObjAddr: 0x1CBEC, symBinAddr: 0x1AEBB4, symSize: 0x20 } + - { offset: 0x253048, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP12onErrorVenue6statusySb_tFTW', symObjAddr: 0x1CC0C, symBinAddr: 0x1AEBD4, symSize: 0x20 } + - { offset: 0x253064, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP18onReachDestinationyyFTW', symObjAddr: 0x1CC2C, symBinAddr: 0x1AEBF4, symSize: 0x20 } + - { offset: 0x253080, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP16onErrorPathReady10errorEdgesySayAD0L4EdgeCGSg_tFTW', symObjAddr: 0x1CC50, symBinAddr: 0x1AEC14, symSize: 0x20 } + - { offset: 0x25309C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP15onSubPathChange03subM0yAD0dlM0C_tFTW', symObjAddr: 0x1CC70, symBinAddr: 0x1AEC34, symSize: 0x20 } + - { offset: 0x2530B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19drawConnectedFloors33_00AFBD3210DA1B0197CE155260A7E798LL4withy7Penguin5FloorCSg_tF', symObjAddr: 0x1CC90, symBinAddr: 0x1AEC54, symSize: 0x348 } + - { offset: 0x25332D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC03getD5Route9reroutingySb_tFy7Penguin0H0VSg_AF0H5ErrorOSgtcfU0_', symObjAddr: 0x1D074, symBinAddr: 0x1AF038, symSize: 0x70 } + - { offset: 0x253388, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19handleRouteResponse5route5errory7Penguin0H0VSg_AG0H5ErrorOSgtF', symObjAddr: 0x1D0E4, symBinAddr: 0x1AF0A8, symSize: 0x714 } + - { offset: 0x2539C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8setRoute_5errory7Penguin0H0VSg_AF0H5ErrorOSgtF', symObjAddr: 0x1D7F8, symBinAddr: 0x1AF7BC, symSize: 0xE7C } + - { offset: 0x254493, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21handleNoRouteResponse33_00AFBD3210DA1B0197CE155260A7E798LL5errory7Penguin0I5ErrorOSg_tF', symObjAddr: 0x1E674, symBinAddr: 0x1B0638, symSize: 0x4E4 } + - { offset: 0x254803, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21handleNoRouteResponse33_00AFBD3210DA1B0197CE155260A7E798LL5errory7Penguin0I5ErrorOSg_tFyycACcfu_yycfu0_', symObjAddr: 0x1EB58, symBinAddr: 0x1B0B1C, symSize: 0xCC } + - { offset: 0x25483A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19showRouteDirections33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0x1EC7C, symBinAddr: 0x1B0BE8, symSize: 0x4A8 } + - { offset: 0x254D47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA16DeepLinkDelegateA2aDP011didTapPlaceH05placey7Penguin10PoiPolygonV_tFTW', symObjAddr: 0x1F124, symBinAddr: 0x1B1090, symSize: 0x28 } + - { offset: 0x254DB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC32updateSubpathsStepperConstraints33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0x1F178, symBinAddr: 0x1B10BC, symSize: 0x31C } + - { offset: 0x255084, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC30stopReceivingDirectionsUpdatesyyF', symObjAddr: 0x1F51C, symBinAddr: 0x1B13D8, symSize: 0x220 } + - { offset: 0x255217, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16setupPreviewMode02isH0ySb_tF', symObjAddr: 0x1F73C, symBinAddr: 0x1B15F8, symSize: 0x2B8 } + - { offset: 0x2553D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC33updateBlueDotUIForLimitedAccuracyyyF', symObjAddr: 0x1F9F4, symBinAddr: 0x1B18B0, symSize: 0x3C0 } + - { offset: 0x255706, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19loadMessageForFloor7messageyAA0H6DetailC_tF', symObjAddr: 0x1FDB4, symBinAddr: 0x1B1C70, symSize: 0xB8 } + - { offset: 0x255800, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17showMessageDetail7messageyAA0hI0C_tF', symObjAddr: 0x1FE6C, symBinAddr: 0x1B1D28, symSize: 0x3B4 } + - { offset: 0x255C33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17showMessageDetail7messageyAA0hI0C_tFyycfU_', symObjAddr: 0x206B4, symBinAddr: 0x1B2570, symSize: 0x64 } + - { offset: 0x255CB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18addStopForCampaign5placeyAA5PlaceCSg_tF', symObjAddr: 0x20220, symBinAddr: 0x1B20DC, symSize: 0x494 } + - { offset: 0x2560B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14didUpdateStopsyyF', symObjAddr: 0x20718, symBinAddr: 0x1B25D4, symSize: 0x334 } + - { offset: 0x25645B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA36LocationBasedMessagesManagerDelegateA2aDP19loadMessageForFloor7messageyAA0M6DetailC_tFTW', symObjAddr: 0x20A4C, symBinAddr: 0x1B2908, symSize: 0x4 } + - { offset: 0x2564BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16showClosureAlert4typeyAA0hI4TypeO_tF', symObjAddr: 0x20A50, symBinAddr: 0x1B290C, symSize: 0x698 } + - { offset: 0x256B04, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x211B0, symBinAddr: 0x1B3020, symSize: 0x10 } + - { offset: 0x256B18, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x211C0, symBinAddr: 0x1B3030, symSize: 0x8 } + - { offset: 0x256B2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17logStopReachEventyyFTf4d_n', symObjAddr: 0x21AFC, symBinAddr: 0x1B3800, symSize: 0x9C } + - { offset: 0x256CA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC03getD5Route9reroutingySb_tFTf4dn_n', symObjAddr: 0x21B98, symBinAddr: 0x1B389C, symSize: 0x56C } + - { offset: 0x257063, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEntrances9rerouting10completionySb_yyctFySayAA5PlaceCGcfU_03$s8ab4UI24deF65C7reroute6reason014showsReroutingE0yAA13RerouteReasonO_SbtFyycfU_ACSgXwz_XxTf1nc_nTf4ng_n', symObjAddr: 0x22E14, symBinAddr: 0x1B4B18, symSize: 0x2AC } + - { offset: 0x257463, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEntrances9rerouting10completionySb_yyctF03$s8ab4UI24deF65C7reroute6reason014showsReroutingE0yAA13RerouteReasonO_SbtFyycfU_ACSgXwz_XxTf1ncn_nTf4dng_n', symObjAddr: 0x230C0, symBinAddr: 0x1B4DC4, symSize: 0xA98 } + - { offset: 0x257D93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22onBlePowerStatusChange6statusy7Penguin08BLEPowerJ0O_tFTf4nd_n', symObjAddr: 0x23B58, symBinAddr: 0x1B585C, symSize: 0x240 } + - { offset: 0x257DF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC26onConnectivityStatusChange6statusy7Penguin06ServerhI0O_tFyycfU_TA', symObjAddr: 0x23E40, symBinAddr: 0x1B5AAC, symSize: 0x20 } + - { offset: 0x257E04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17handleServerRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyFyyScMYccfU_TA', symObjAddr: 0x23E60, symBinAddr: 0x1B5ACC, symSize: 0x8 } + - { offset: 0x257E18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC03getD5Route9reroutingySb_tFy7Penguin0H0VSg_AF0H5ErrorOSgtcfU0_TA', symObjAddr: 0x23E68, symBinAddr: 0x1B5AD4, symSize: 0x8 } + - { offset: 0x257E2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18onReachDestinationyyFyycfU0_TA', symObjAddr: 0x23EC0, symBinAddr: 0x1B5AE8, symSize: 0x8 } + - { offset: 0x257E40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9didArrive2at10completionyAA5PlaceCSg_yycSgtFyycfU1_TA', symObjAddr: 0x23F8C, symBinAddr: 0x1B5B68, symSize: 0x8 } + - { offset: 0x257E54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9didArrive2at10completionyAA5PlaceCSg_yycSgtFyycfU2_TA', symObjAddr: 0x23F98, symBinAddr: 0x1B5B74, symSize: 0x1C } + - { offset: 0x257E68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC09addBottomD5PanelyyFyycfU_TA', symObjAddr: 0x24084, symBinAddr: 0x1B5BCC, symSize: 0x18 } + - { offset: 0x257E7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC09addBottomD5PanelyyFyycACcfu_yycfu0_TA', symObjAddr: 0x2409C, symBinAddr: 0x1B5BE4, symSize: 0x20 } + - { offset: 0x257EAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC09addBottomD5PanelyyFyAA08FloatingiF0CcACcfu1_yAFcfu2_TA', symObjAddr: 0x240BC, symBinAddr: 0x1B5C04, symSize: 0x20 } + - { offset: 0x257EE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21handleNoRouteResponse33_00AFBD3210DA1B0197CE155260A7E798LL5errory7Penguin0I5ErrorOSg_tFyycACcfu_yycfu0_TA', symObjAddr: 0x240DC, symBinAddr: 0x1B5C24, symSize: 0x8 } + - { offset: 0x257EFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16switchToOverviewyyFySbcfU_TA', symObjAddr: 0x240E4, symBinAddr: 0x1B5C2C, symSize: 0x8 } + - { offset: 0x257F10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC28handleServerRetryWithNoRouteyyFyycfU_TA', symObjAddr: 0x240EC, symBinAddr: 0x1B5C34, symSize: 0x20 } + - { offset: 0x257F42, size: 0x8, addend: 0x0, symName: '_$s7Penguin5RouteVSgWOb', symObjAddr: 0x241A0, symBinAddr: 0x1B5CE8, symSize: 0x48 } + - { offset: 0x257F56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16switchToOverviewyyFySbcfU_yycfU1_TA', symObjAddr: 0x241E8, symBinAddr: 0x1B5D30, symSize: 0x34 } + - { offset: 0x257F6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEntrances9rerouting10completionySb_yyctFySayAA5PlaceCGcfU_TA', symObjAddr: 0x2421C, symBinAddr: 0x1B5D64, symSize: 0x8 } + - { offset: 0x257F7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19handleLocationRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyFyyScMYccfU_TA', symObjAddr: 0x24254, symBinAddr: 0x1B5D90, symSize: 0x8 } + - { offset: 0x257F92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19drawConnectedFloors33_00AFBD3210DA1B0197CE155260A7E798LL4withy7Penguin5FloorCSg_tFySbcfU_TA', symObjAddr: 0x2425C, symBinAddr: 0x1B5D98, symSize: 0x18 } + - { offset: 0x257FA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7reroute6reason014showsReroutingE0yAA13RerouteReasonO_SbtFyycfU_TA', symObjAddr: 0x242E0, symBinAddr: 0x1B5DB0, symSize: 0x20 } + - { offset: 0x257FBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23updateUserLocationOnMap8location4edge28skipsIntermediateCoordinatesySo22CLLocationCoordinate2DV_7Penguin4EdgeCSbtFyycfU_TA', symObjAddr: 0x24300, symBinAddr: 0x1B5DD0, symSize: 0x20 } + - { offset: 0x257FCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFyycfU_TA', symObjAddr: 0x24320, symBinAddr: 0x1B5DF0, symSize: 0x8 } + - { offset: 0x257FE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFyycfU0_TA', symObjAddr: 0x24328, symBinAddr: 0x1B5DF8, symSize: 0x20 } + - { offset: 0x257FF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17showMessageDetail7messageyAA0hI0C_tFyAA5PlaceCSgcACcfu_yAJcfu0_TA', symObjAddr: 0x2436C, symBinAddr: 0x1B5E3C, symSize: 0x20 } + - { offset: 0x258030, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17showMessageDetail7messageyAA0hI0C_tFyycfU_TA', symObjAddr: 0x2438C, symBinAddr: 0x1B5E5C, symSize: 0x8 } + - { offset: 0x258044, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18focusMapOnRecenter33_00AFBD3210DA1B0197CE155260A7E798LL12floorSetting4edgey7Penguin13FloorSettingsV_AH4EdgeCtFyycfU_TA', symObjAddr: 0x24394, symBinAddr: 0x1B5E64, symSize: 0x20 } + - { offset: 0x258058, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22setCameraOnDestinationyyFySbcfU_TA', symObjAddr: 0x243B8, symBinAddr: 0x1B5E88, symSize: 0x8 } + - { offset: 0x25806C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9startTripyyFySbcfU_TA', symObjAddr: 0x24454, symBinAddr: 0x1B5E94, symSize: 0x8 } + - { offset: 0x258080, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateRecenterButtonyyFyycfU_TA', symObjAddr: 0x244EC, symBinAddr: 0x1B5EE8, symSize: 0xC } + - { offset: 0x258094, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21showDirectionsStepperyyFyAA14RouteDirectionVSg_SbtcACcfu_yAG_Sbtcfu0_TA', symObjAddr: 0x245E8, symBinAddr: 0x1B5EF4, symSize: 0x20 } + - { offset: 0x2580D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSgSbIegny_ACSbIegny_TRTA', symObjAddr: 0x24608, symBinAddr: 0x1B5F14, symSize: 0x8 } + - { offset: 0x2580EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC017setupUserTrackingE0yyFyycfU_TA', symObjAddr: 0x24650, symBinAddr: 0x1B5F1C, symSize: 0x20 } + - { offset: 0x2580FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8setupMapyyFySbcfU_TA', symObjAddr: 0x246B0, symBinAddr: 0x1B5F3C, symSize: 0x8 } + - { offset: 0x258113, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC10onMapReadyyyFyycfU_TA', symObjAddr: 0x246B8, symBinAddr: 0x1B5F44, symSize: 0x8 } + - { offset: 0x258127, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC10onMapReadyyyFyycfU_yycfU_TA', symObjAddr: 0x246C0, symBinAddr: 0x1B5F4C, symSize: 0x18 } + - { offset: 0x2581AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC014toastContainerE0So6UIViewCSgvgTo', symObjAddr: 0x228, symBinAddr: 0x1924BC, symSize: 0x20 } + - { offset: 0x25820D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC014toastContainerE0So6UIViewCSgvsTo', symObjAddr: 0x248, symBinAddr: 0x1924DC, symSize: 0x14 } + - { offset: 0x258265, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15renderingHelperAA09RenderingH0Cvg', symObjAddr: 0x25C, symBinAddr: 0x1924F0, symSize: 0xF0 } + - { offset: 0x258300, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19routeOverviewHelperAA05RoutehI0Cvg', symObjAddr: 0x34C, symBinAddr: 0x1925E0, symSize: 0xBC } + - { offset: 0x25845C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11viewDidLoadyyF', symObjAddr: 0x408, symBinAddr: 0x19269C, symSize: 0x134 } + - { offset: 0x25856A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x53C, symBinAddr: 0x1927D0, symSize: 0x28 } + - { offset: 0x2585BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCfD', symObjAddr: 0x564, symBinAddr: 0x1927F8, symSize: 0x14C } + - { offset: 0x258643, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCfDTo', symObjAddr: 0x6B0, symBinAddr: 0x192944, symSize: 0x44 } + - { offset: 0x259D02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14viewWillAppearyySbF', symObjAddr: 0x998, symBinAddr: 0x192C2C, symSize: 0x180 } + - { offset: 0x259E6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0xCA4, symBinAddr: 0x192F38, symSize: 0x30 } + - { offset: 0x259E98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17viewWillDisappearyySbF', symObjAddr: 0xCD4, symBinAddr: 0x192F68, symSize: 0x1D8 } + - { offset: 0x259F32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17viewWillDisappearyySbFTo', symObjAddr: 0xEAC, symBinAddr: 0x193140, symSize: 0x30 } + - { offset: 0x259F5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21viewDidLayoutSubviewsyyFTo', symObjAddr: 0x10F8, symBinAddr: 0x19338C, symSize: 0x5C } + - { offset: 0x259F87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23preferredStatusBarStyleSo08UIStatusiJ0VvgTo', symObjAddr: 0x1154, symBinAddr: 0x1933E8, symSize: 0x34 } + - { offset: 0x259FAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23preferredStatusBarStyleSo08UIStatusiJ0Vvg', symObjAddr: 0x1188, symBinAddr: 0x19341C, symSize: 0xD0 } + - { offset: 0x25A0B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC017setupInstructionsE0yyF', symObjAddr: 0x152C, symBinAddr: 0x1937C0, symSize: 0x360 } + - { offset: 0x25A1F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC017setupUserTrackingE0yyF', symObjAddr: 0x188C, symBinAddr: 0x193B20, symSize: 0x300 } + - { offset: 0x25A2FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC019setupFloorIndicatorE0yyF', symObjAddr: 0x1B8C, symBinAddr: 0x193E20, symSize: 0x238 } + - { offset: 0x25A383, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC014setupReroutingE0yyF', symObjAddr: 0x1DC4, symBinAddr: 0x194058, symSize: 0x2F0 } + - { offset: 0x25A456, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC018setupSpeechControlE0yyF', symObjAddr: 0x20B4, symBinAddr: 0x194348, symSize: 0x284 } + - { offset: 0x25A559, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC018setupChangingFloorE0yyF', symObjAddr: 0x2338, symBinAddr: 0x1945CC, symSize: 0x354 } + - { offset: 0x25A6E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010setupDebugE0yyF', symObjAddr: 0x268C, symBinAddr: 0x194920, symSize: 0x64C } + - { offset: 0x25ABD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18oneSecondDidElapseyyFTo', symObjAddr: 0x2CD8, symBinAddr: 0x194F6C, symSize: 0x70 } + - { offset: 0x25AC36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12removePanelsyyF', symObjAddr: 0x2D48, symBinAddr: 0x194FDC, symSize: 0xDC } + - { offset: 0x25ADBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12removePanelsyyFTo', symObjAddr: 0x2E24, symBinAddr: 0x1950B8, symSize: 0x28 } + - { offset: 0x25ADFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21showDirectionsStepperyyF', symObjAddr: 0x2E4C, symBinAddr: 0x1950E0, symSize: 0x388 } + - { offset: 0x25B217, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16previewDirection_9redrawMapyAA05RouteH0VSg_SbtF', symObjAddr: 0x3284, symBinAddr: 0x195518, symSize: 0x10C8 } + - { offset: 0x25BD46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC29drawDestinationSymbolIfNeeded11destinationyAA5PlaceCSg_tF', symObjAddr: 0x434C, symBinAddr: 0x1965E0, symSize: 0x430 } + - { offset: 0x25C192, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13drawRoutePathyy7Penguin03SubI0CSgF', symObjAddr: 0x477C, symBinAddr: 0x196A10, symSize: 0x6E8 } + - { offset: 0x25C687, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13drawRoutePathyy7Penguin03SubI0CSgFySo7UIImageCSgcfU_', symObjAddr: 0x4E64, symBinAddr: 0x1970F8, symSize: 0xD4 } + - { offset: 0x25D306, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9drawFloor_012setsCameraToH0y7Penguin0H0CSg_SbtF', symObjAddr: 0x4FA8, symBinAddr: 0x1971CC, symSize: 0xA84 } + - { offset: 0x25D961, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9drawFloor_012setsCameraToH0y7Penguin0H0CSg_SbtFySbcfU_', symObjAddr: 0x5A2C, symBinAddr: 0x197C50, symSize: 0x8C } + - { offset: 0x25D9FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14updateMapLevelyy7Penguin0hI0OSgF', symObjAddr: 0x5AB8, symBinAddr: 0x197CDC, symSize: 0x1B8 } + - { offset: 0x25DA89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateRecenterButtonyyF', symObjAddr: 0x5C70, symBinAddr: 0x197E94, symSize: 0x210 } + - { offset: 0x25DB5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateRecenterButtonyyFyycfU_', symObjAddr: 0x5E80, symBinAddr: 0x1980A4, symSize: 0x22C } + - { offset: 0x25DD31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15updateRoutePathyyF', symObjAddr: 0x60AC, symBinAddr: 0x1982D0, symSize: 0xBD0 } + - { offset: 0x25E9D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9startTripyyF', symObjAddr: 0x6C7C, symBinAddr: 0x198EA0, symSize: 0xDC } + - { offset: 0x25EA56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9startTripyyFySbcfU_', symObjAddr: 0x6D58, symBinAddr: 0x198F7C, symSize: 0x708 } + - { offset: 0x25F0F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12previewRouteyyF', symObjAddr: 0x7460, symBinAddr: 0x199684, symSize: 0x46C } + - { offset: 0x25F764, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22setCameraOnDestinationyyF', symObjAddr: 0x7F68, symBinAddr: 0x19A18C, symSize: 0x19FC } + - { offset: 0x26125B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16setCameraOnVenueyyF', symObjAddr: 0x9D04, symBinAddr: 0x19BE9C, symSize: 0x4EC } + - { offset: 0x261780, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC03endD018switchesToOverviewySb_tF', symObjAddr: 0xA1F0, symBinAddr: 0x19C388, symSize: 0x264 } + - { offset: 0x261A92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16switchToOverviewyyFySbcfU_', symObjAddr: 0xA454, symBinAddr: 0x19C5EC, symSize: 0xDBC } + - { offset: 0x2629CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16switchToOverviewyyFySbcfU_yycfU1_', symObjAddr: 0xB410, symBinAddr: 0x19D5A8, symSize: 0xA40 } + - { offset: 0x26337B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFyycfU_', symObjAddr: 0xC5B4, symBinAddr: 0x19E74C, symSize: 0xEC } + - { offset: 0x263473, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFTo', symObjAddr: 0xC6A0, symBinAddr: 0x19E838, symSize: 0x4C } + - { offset: 0x2634FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12addObserversyyF', symObjAddr: 0xC6EC, symBinAddr: 0x19E884, symSize: 0x190 } + - { offset: 0x2635A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15removeObserversyyF', symObjAddr: 0xC87C, symBinAddr: 0x19EA14, symSize: 0x128 } + - { offset: 0x2636D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20didTapRecenterButtonyyF', symObjAddr: 0xC9A4, symBinAddr: 0x19EB3C, symSize: 0x674 } + - { offset: 0x263CB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20didTapRecenterButtonyyFTo', symObjAddr: 0xD018, symBinAddr: 0x19F1B0, symSize: 0x28 } + - { offset: 0x263D07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8recenteryyF', symObjAddr: 0xD040, symBinAddr: 0x19F1D8, symSize: 0x4D8 } + - { offset: 0x264152, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateRouteEstimatesyyF', symObjAddr: 0xD814, symBinAddr: 0x19F9AC, symSize: 0x778 } + - { offset: 0x264A75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xDF8C, symBinAddr: 0x1A0124, symSize: 0x6CC } + - { offset: 0x264D7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xE658, symBinAddr: 0x1A07F0, symSize: 0x60 } + - { offset: 0x264D8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xE6B8, symBinAddr: 0x1A0850, symSize: 0x6A0 } + - { offset: 0x265085, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xED58, symBinAddr: 0x1A0EF0, symSize: 0x28 } + - { offset: 0x265099, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvgTW', symObjAddr: 0xEDA0, symBinAddr: 0x1A0F38, symSize: 0x44 } + - { offset: 0x2650CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvMTW', symObjAddr: 0xEDE4, symBinAddr: 0x1A0F7C, symSize: 0x40 } + - { offset: 0x265DF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18focusMapOnRecenter33_00AFBD3210DA1B0197CE155260A7E798LL12floorSetting4edgey7Penguin13FloorSettingsV_AH4EdgeCtFTf4ndn_n', symObjAddr: 0x21334, symBinAddr: 0x1B3038, symSize: 0x42C } + - { offset: 0x266158, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFTf4dn_n', symObjAddr: 0x21760, symBinAddr: 0x1B3464, symSize: 0x39C } + - { offset: 0x2669BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6FilterCfE', symObjAddr: 0x14, symBinAddr: 0x1B6030, symSize: 0x1C } + - { offset: 0x2669EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6FilterCMa', symObjAddr: 0x7C, symBinAddr: 0x1B6098, symSize: 0x20 } + - { offset: 0x2669FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6FilterC6EffectOMa', symObjAddr: 0x104, symBinAddr: 0x1B60B8, symSize: 0x10 } + - { offset: 0x266A4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6FilterCfD', symObjAddr: 0x30, symBinAddr: 0x1B604C, symSize: 0x4C } + - { offset: 0x266E1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserVwet', symObjAddr: 0x204, symBinAddr: 0x1B60C8, symSize: 0x5C } + - { offset: 0x266E33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserVwst', symObjAddr: 0x260, symBinAddr: 0x1B6124, symSize: 0x54 } + - { offset: 0x266E47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserVMa', symObjAddr: 0x2B4, symBinAddr: 0x1B6178, symSize: 0x10 } + - { offset: 0x266E5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVMa', symObjAddr: 0x2C4, symBinAddr: 0x1B6188, symSize: 0x10 } + - { offset: 0x266EC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseStringyS2SKF', symObjAddr: 0x368, symBinAddr: 0x1B622C, symSize: 0x4C } + - { offset: 0x266F38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE8parseRawyqd__SgSSKSYRd__SS0G5ValueRtd__lF', symObjAddr: 0x3B4, symBinAddr: 0x1B6278, symSize: 0x44 } + - { offset: 0x266F91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE8parseRawyqd__SgSSKSYRd__SS0G5ValueRtd__lFqd__SSKXEfU_', symObjAddr: 0x1088, symBinAddr: 0x1B6D74, symSize: 0xA0 } + - { offset: 0x26700A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseStringySSSgSSKF', symObjAddr: 0x3F8, symBinAddr: 0x1B62BC, symSize: 0x48 } + - { offset: 0x26705C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parseCoordinateySfSSKF', symObjAddr: 0x480, symBinAddr: 0x1B6344, symSize: 0x54 } + - { offset: 0x2670E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE10parseColoryAA3DOMO0G0OSgSSKF', symObjAddr: 0x4D4, symBinAddr: 0x1B6398, symSize: 0x1B4 } + - { offset: 0x267184, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseFloatsySaySfGSgSSKF', symObjAddr: 0x728, symBinAddr: 0x1B65EC, symSize: 0x90 } + - { offset: 0x2671CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseFloatsySaySfGSgSSKFAESSKXEfU_', symObjAddr: 0xE34, symBinAddr: 0x1B6B20, symSize: 0x80 } + - { offset: 0x267250, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs10SetAlgebraAASQWb', symObjAddr: 0xA7C, symBinAddr: 0x1B6768, symSize: 0x4 } + - { offset: 0x267264, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVAESQAAWl', symObjAddr: 0xA80, symBinAddr: 0x1B676C, symSize: 0x40 } + - { offset: 0x267278, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs10SetAlgebraAAs25ExpressibleByArrayLiteralPWb', symObjAddr: 0xAC0, symBinAddr: 0x1B67AC, symSize: 0x4 } + - { offset: 0x26728C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVAEs25ExpressibleByArrayLiteralAAWl', symObjAddr: 0xAC4, symBinAddr: 0x1B67B0, symSize: 0x40 } + - { offset: 0x2672A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs9OptionSetAASYWb', symObjAddr: 0xB04, symBinAddr: 0x1B67F0, symSize: 0x4 } + - { offset: 0x2672B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVAESYAAWl', symObjAddr: 0xB08, symBinAddr: 0x1B67F4, symSize: 0x40 } + - { offset: 0x2672C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs9OptionSetAAs0G7AlgebraPWb', symObjAddr: 0xB48, symBinAddr: 0x1B6834, symSize: 0x4 } + - { offset: 0x2672DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVAEs10SetAlgebraAAWl', symObjAddr: 0xB4C, symBinAddr: 0x1B6838, symSize: 0x40 } + - { offset: 0x2672F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE5parse_3expqd__SgSS_qd__SSKXEtKlF', symObjAddr: 0xC5C, symBinAddr: 0x1B6948, symSize: 0x154 } + - { offset: 0x267444, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE16parseUrlSelectory10Foundation3URLVSgSSKFAGSSKXEfU_TA', symObjAddr: 0x1164, symBinAddr: 0x1B6E50, symSize: 0x1C } + - { offset: 0x267458, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseFloatsySaySfGSgSSKFAESSKXEfU_TA', symObjAddr: 0x1214, symBinAddr: 0x1B6E6C, symSize: 0x1C } + - { offset: 0x26746C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE10parseFloatySfSgSSKFSfSSKXEfU_TA', symObjAddr: 0x1230, symBinAddr: 0x1B6E88, symSize: 0x24 } + - { offset: 0x267480, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ErrorOAEsAdAWl', symObjAddr: 0x12D4, symBinAddr: 0x1B6EAC, symSize: 0x40 } + - { offset: 0x267494, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE8parseRawyqd__SgSSKSYRd__SS0G5ValueRtd__lFqd__SSKXEfU_TA', symObjAddr: 0x1314, symBinAddr: 0x1B6EEC, symSize: 0x20 } + - { offset: 0x2674A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parsePercentageySfSgSSKFSfSSKXEfU_TA', symObjAddr: 0x1334, symBinAddr: 0x1B6F0C, symSize: 0x24 } + - { offset: 0x2674BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parseCoordinateySfSSKFSfSSKXEfU_TA', symObjAddr: 0x1358, symBinAddr: 0x1B6F30, symSize: 0x24 } + - { offset: 0x2674D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE8parseUrly10Foundation3URLVSSKFAGSSKXEfU_TA', symObjAddr: 0x1490, symBinAddr: 0x1B6FEC, symSize: 0x1C } + - { offset: 0x2674E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwxx', symObjAddr: 0x14D8, symBinAddr: 0x1B7008, symSize: 0xB4 } + - { offset: 0x2674F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwcp', symObjAddr: 0x15AC, symBinAddr: 0x1B70BC, symSize: 0x140 } + - { offset: 0x26750C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwca', symObjAddr: 0x16EC, symBinAddr: 0x1B71FC, symSize: 0x1E8 } + - { offset: 0x267520, size: 0x8, addend: 0x0, symName: ___swift_memcpy50_8, symObjAddr: 0x18D4, symBinAddr: 0x1B73E4, symSize: 0x1C } + - { offset: 0x267534, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwta', symObjAddr: 0x18F0, symBinAddr: 0x1B7400, symSize: 0x174 } + - { offset: 0x267548, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwet', symObjAddr: 0x1A64, symBinAddr: 0x1B7574, symSize: 0x3C } + - { offset: 0x26755C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwst', symObjAddr: 0x1AA0, symBinAddr: 0x1B75B0, symSize: 0x50 } + - { offset: 0x267570, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwug', symObjAddr: 0x1AF0, symBinAddr: 0x1B7600, symSize: 0x1C } + - { offset: 0x267584, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwui', symObjAddr: 0x1B10, symBinAddr: 0x1B761C, symSize: 0x2C } + - { offset: 0x267598, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOMa', symObjAddr: 0x1B3C, symBinAddr: 0x1B7648, symSize: 0x10 } + - { offset: 0x26761A, size: 0x8, addend: 0x0, symName: '_$ss10SetAlgebraPs7ElementQz012ArrayLiteralC0RtzrlE05arrayE0xAFd_tcfC8PenNavUI3SVGC7OptionsV_Tg5', symObjAddr: 0x2D4, symBinAddr: 0x1B6198, symSize: 0x54 } + - { offset: 0x267756, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs25ExpressibleByArrayLiteralAAsAFP05arrayI0x0hI7ElementQzd_tcfCTW', symObjAddr: 0xA40, symBinAddr: 0x1B672C, symSize: 0x3C } + - { offset: 0x267C98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC22directionsTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1B76A8, symSize: 0x10 } + - { offset: 0x267E77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellCfETo', symObjAddr: 0x690, symBinAddr: 0x1B7D38, symSize: 0x48 } + - { offset: 0x267EA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellCMa', symObjAddr: 0x6D8, symBinAddr: 0x1B7D80, symSize: 0x20 } + - { offset: 0x267EBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtFyycfU_TA', symObjAddr: 0x71C, symBinAddr: 0x1B7DC4, symSize: 0x8 } + - { offset: 0x267ECE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtFyycfU0_TA', symObjAddr: 0x734, symBinAddr: 0x1B7DCC, symSize: 0x8 } + - { offset: 0x267FAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC22directionsTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1B76A8, symSize: 0x10 } + - { offset: 0x267FC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC22directionsTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1B76A8, symSize: 0x10 } + - { offset: 0x268008, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC22directionsTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1B76B8, symSize: 0x34 } + - { offset: 0x268057, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC17floorTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1B76EC, symSize: 0x10 } + - { offset: 0x26806F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC17floorTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1B76EC, symSize: 0x10 } + - { offset: 0x2680AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC17floorTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1B76FC, symSize: 0x34 } + - { offset: 0x268100, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12awakeFromNibyyF', symObjAddr: 0x88, symBinAddr: 0x1B7730, symSize: 0xE8 } + - { offset: 0x268185, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12awakeFromNibyyFTo', symObjAddr: 0x170, symBinAddr: 0x1B7818, symSize: 0x28 } + - { offset: 0x2681C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtF', symObjAddr: 0x198, symBinAddr: 0x1B7840, symSize: 0x1F8 } + - { offset: 0x26832B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtFyycfU_', symObjAddr: 0x390, symBinAddr: 0x1B7A38, symSize: 0x98 } + - { offset: 0x268372, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtFyycfU0_', symObjAddr: 0x428, symBinAddr: 0x1B7AD0, symSize: 0xA8 } + - { offset: 0x268439, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x4D0, symBinAddr: 0x1B7B78, symSize: 0xD0 } + - { offset: 0x26849E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x5A0, symBinAddr: 0x1B7C48, symSize: 0x98 } + - { offset: 0x2684D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x638, symBinAddr: 0x1B7CE0, symSize: 0x28 } + - { offset: 0x2684E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellCfD', symObjAddr: 0x660, symBinAddr: 0x1B7D08, symSize: 0x30 } + - { offset: 0x268883, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1B7DD4, symSize: 0x8 } + - { offset: 0x268A58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutCMa', symObjAddr: 0x3E0, symBinAddr: 0x1B8190, symSize: 0x20 } + - { offset: 0x268AAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1B7DD4, symSize: 0x8 } + - { offset: 0x268AC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1B7DD4, symSize: 0x8 } + - { offset: 0x268ADB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvgTo', symObjAddr: 0x8, symBinAddr: 0x1B7DDC, symSize: 0x8 } + - { offset: 0x268AF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvgTo', symObjAddr: 0x8, symBinAddr: 0x1B7DDC, symSize: 0x8 } + - { offset: 0x268B12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvsTo', symObjAddr: 0x10, symBinAddr: 0x1B7DE4, symSize: 0x2C } + - { offset: 0x268B5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC7anchorsSDyAA18FloatingPanelStateCAA0ijG9Anchoring_pGvgTo', symObjAddr: 0x3C, symBinAddr: 0x1B7E10, symSize: 0x7C } + - { offset: 0x268C67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC7anchorsSDyAA18FloatingPanelStateCAA0ijG9Anchoring_pGvg', symObjAddr: 0xB8, symBinAddr: 0x1B7E8C, symSize: 0x25C } + - { offset: 0x268E3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tFTo', symObjAddr: 0x314, symBinAddr: 0x1B80E8, symSize: 0xA8 } + - { offset: 0x268EED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC09topAnchorE012CoreGraphics7CGFloatVvgZTf4d_n', symObjAddr: 0x444, symBinAddr: 0x1B81B0, symSize: 0x148 } + - { offset: 0x2693AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC11viewDidLoadyyF', symObjAddr: 0x0, symBinAddr: 0x1B82F8, symSize: 0x200 } + - { offset: 0x269707, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerCfETo', symObjAddr: 0x860, symBinAddr: 0x1B8B58, symSize: 0x3C } + - { offset: 0x269736, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerCMa', symObjAddr: 0x89C, symBinAddr: 0x1B8B94, symSize: 0x20 } + - { offset: 0x269751, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC11viewDidLoadyyF', symObjAddr: 0x0, symBinAddr: 0x1B82F8, symSize: 0x200 } + - { offset: 0x2697C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x200, symBinAddr: 0x1B84F8, symSize: 0x28 } + - { offset: 0x269892, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x228, symBinAddr: 0x1B8520, symSize: 0x14 } + - { offset: 0x2698AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x228, symBinAddr: 0x1B8520, symSize: 0x14 } + - { offset: 0x2698CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x228, symBinAddr: 0x1B8520, symSize: 0x14 } + - { offset: 0x2699BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0x23C, symBinAddr: 0x1B8534, symSize: 0x2F8 } + - { offset: 0x269BB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x534, symBinAddr: 0x1B882C, symSize: 0xB8 } + - { offset: 0x269BD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x5EC, symBinAddr: 0x1B88E4, symSize: 0xAC } + - { offset: 0x269C21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x698, symBinAddr: 0x1B8990, symSize: 0xF4 } + - { offset: 0x269C79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x78C, symBinAddr: 0x1B8A84, symSize: 0xA4 } + - { offset: 0x269CB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerCfD', symObjAddr: 0x830, symBinAddr: 0x1B8B28, symSize: 0x30 } + - { offset: 0x269CE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x920, symBinAddr: 0x1B8BB4, symSize: 0xC0 } + - { offset: 0x26A0BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC8positionAA08FloatingE8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1B8C74, symSize: 0x8 } + - { offset: 0x26A1D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutCMa', symObjAddr: 0xAC, symBinAddr: 0x1B8CFC, symSize: 0x20 } + - { offset: 0x26A27A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC8positionAA08FloatingE8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1B8C74, symSize: 0x8 } + - { offset: 0x26A292, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC8positionAA08FloatingE8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1B8C74, symSize: 0x8 } + - { offset: 0x26A2AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC12initialStateAA08FloatingeH0CvgTo', symObjAddr: 0x8, symBinAddr: 0x1B8C7C, symSize: 0x8 } + - { offset: 0x26A2C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC12initialStateAA08FloatingeH0CvgTo', symObjAddr: 0x8, symBinAddr: 0x1B8C7C, symSize: 0x8 } + - { offset: 0x26A36B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC7anchorsSDyAA08FloatingE5StateCAA0heF9Anchoring_pGvgTo', symObjAddr: 0x10, symBinAddr: 0x1B8C84, symSize: 0x6C } + - { offset: 0x26A395, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA08FloatingE5StateC_tFTo', symObjAddr: 0x7C, symBinAddr: 0x1B8CF0, symSize: 0xC } + - { offset: 0x26A439, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC14topAnchorInset12CoreGraphics7CGFloatVvgZTf4d_n', symObjAddr: 0xCC, symBinAddr: 0x1B8D1C, symSize: 0x148 } + - { offset: 0x26A5DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC7anchorsSDyAA08FloatingE5StateCAA0heF9Anchoring_pGvgTf4d_n', symObjAddr: 0x214, symBinAddr: 0x1B8E64, symSize: 0x128 } + - { offset: 0x26AA93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV9createArc4from4lastSayAC4PathC7SegmentOGSgAA3DOMOAICAKO_AC5PointVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1B8F8C, symSize: 0x170 } + - { offset: 0x26ABD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV9createArc4from4lastSayAC4PathC7SegmentOGSgAA3DOMOAICAKO_AC5PointVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1B8F8C, symSize: 0x170 } + - { offset: 0x26B2F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11makeSegment4from4last8previousAC4PathC0H0OSgAA3DOMOAJCALO_AC5PointVATSgtFZTf4nnnd_n', symObjAddr: 0x170, symBinAddr: 0x1B90FC, symSize: 0x3A4 } + - { offset: 0x26B785, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV10createPath4fromAC0H0CAA3DOMOAHC_tKFZTf4nd_n', symObjAddr: 0x514, symBinAddr: 0x1B94A0, symSize: 0x2E0 } + - { offset: 0x26C0C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataCMa', symObjAddr: 0xC4, symBinAddr: 0x1B97F8, symSize: 0x20 } + - { offset: 0x26C145, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x5C, symBinAddr: 0x1B9790, symSize: 0x68 } + - { offset: 0x26C1AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xE4, symBinAddr: 0x1B9818, symSize: 0x54 } + - { offset: 0x26C1FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataCfD', symObjAddr: 0x138, symBinAddr: 0x1B986C, symSize: 0x30 } + - { offset: 0x26C5A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AlertActionStyleOMa', symObjAddr: 0x168, symBinAddr: 0x1B989C, symSize: 0x10 } + - { offset: 0x26C5BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AlertActionStyleOSHAASQWb', symObjAddr: 0x178, symBinAddr: 0x1B98AC, symSize: 0x4 } + - { offset: 0x26C5D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AlertActionStyleOACSQAAWl', symObjAddr: 0x17C, symBinAddr: 0x1B98B0, symSize: 0x40 } + - { offset: 0x26CC2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperCMa', symObjAddr: 0x1650, symBinAddr: 0x1BAF40, symSize: 0x20 } + - { offset: 0x26CC6C, size: 0x8, addend: 0x0, symName: '_$sSh9_subtractyyqd__7ElementQyd__RszSTRd__lF8PenNavUI9ToastTypeO_ShyAFGTg5', symObjAddr: 0x16B4, symBinAddr: 0x1BAF60, symSize: 0xE4 } + - { offset: 0x26CD28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC12addObserversyyF', symObjAddr: 0x0, symBinAddr: 0x1B98F0, symSize: 0x368 } + - { offset: 0x26CDA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC15removeObserversyyF', symObjAddr: 0x368, symBinAddr: 0x1B9C58, symSize: 0x2F4 } + - { offset: 0x26D0AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC22locationStateDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0x65C, symBinAddr: 0x1B9F4C, symSize: 0x1EC } + - { offset: 0x26D235, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC23bluetoothStateDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0x854, symBinAddr: 0x1BA144, symSize: 0x1A8 } + - { offset: 0x26D352, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC25locationAccuracyDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0xA58, symBinAddr: 0x1BA348, symSize: 0x1A8 } + - { offset: 0x26D488, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC31locationDetectionStateDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0xC0C, symBinAddr: 0x1BA4FC, symSize: 0x18C } + - { offset: 0x26D588, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC25networkInterfaceDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0xDA4, symBinAddr: 0x1BA694, symSize: 0x2C4 } + - { offset: 0x26D683, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC25connectionStatusDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0x1074, symBinAddr: 0x1BA964, symSize: 0x368 } + - { offset: 0x26D93D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC31directionsAvailabilityDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0x13E8, symBinAddr: 0x1BACD8, symSize: 0x1B8 } + - { offset: 0x26DA43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC25userLocationStatusChangedyyFTo', symObjAddr: 0x15AC, symBinAddr: 0x1BAE9C, symSize: 0x80 } + - { offset: 0x26DA82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperCfD', symObjAddr: 0x162C, symBinAddr: 0x1BAF1C, symSize: 0x24 } + - { offset: 0x26DE5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parseyxSS_xSSKXEtKlF', symObjAddr: 0x298, symBinAddr: 0x1BB2DC, symSize: 0x2C8 } + - { offset: 0x26DF80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCMa', symObjAddr: 0x738, symBinAddr: 0x1BB77C, symSize: 0x20 } + - { offset: 0x26E1E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserVMa', symObjAddr: 0x1F48, symBinAddr: 0x1BC790, symSize: 0x10 } + - { offset: 0x26E379, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parseyxSS_xSSKXEtKlF', symObjAddr: 0x298, symBinAddr: 0x1BB2DC, symSize: 0x2C8 } + - { offset: 0x26E467, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parse_4with3forxSSSg_xSSKXESStKlF', symObjAddr: 0x560, symBinAddr: 0x1BB5A4, symSize: 0x1A4 } + - { offset: 0x26E51F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCfD', symObjAddr: 0x704, symBinAddr: 0x1BB748, symSize: 0x34 } + - { offset: 0x26E55F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCAA15AttributeParserA2aFP6parserAA0f5ValueG0_pvgTW', symObjAddr: 0x758, symBinAddr: 0x1BB79C, symSize: 0x10 } + - { offset: 0x26E590, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCAA15AttributeParserA2aFP7optionsAC7OptionsVvgTW', symObjAddr: 0x768, symBinAddr: 0x1BB7AC, symSize: 0xC } + - { offset: 0x26E5BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCAA15AttributeParserA2aFP5parseyqd__SS_qd__SSKXEtKlFTW', symObjAddr: 0x774, symBinAddr: 0x1BB7B8, symSize: 0x20 } + - { offset: 0x26E76E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV16parseUrlSelectory10Foundation3URLVSSKF', symObjAddr: 0x794, symBinAddr: 0x1BB7D8, symSize: 0x578 } + - { offset: 0x26EB38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV11parsePointsySayAA3DOMO5PointVGSSKF', symObjAddr: 0xD0C, symBinAddr: 0x1BBD50, symSize: 0x14 } + - { offset: 0x26EB4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV8parseRawyxSSKSYRzSS0hE0RtzlF', symObjAddr: 0xD20, symBinAddr: 0x1BBD64, symSize: 0x190 } + - { offset: 0x26EBFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV11parsePointsySayAA3DOMO5PointVGSSKFTf4nd_n', symObjAddr: 0x1278, symBinAddr: 0x1BBEF4, symSize: 0x448 } + - { offset: 0x26EF41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV11parseFloatsySaySfGSSKFTf4nd_n', symObjAddr: 0x18B4, symBinAddr: 0x1BC33C, symSize: 0x454 } + - { offset: 0x26F63A, size: 0x8, addend: 0x0, symName: '_$sSlsE10firstIndex5where0B0QzSgSb7ElementQzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg5', symObjAddr: 0x98, symBinAddr: 0x1BC7B4, symSize: 0xC0 } + - { offset: 0x26F77B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE06removeE08animated012restoresLastE010completionySb_SbyycSgtF', symObjAddr: 0x26C, symBinAddr: 0x1BC988, symSize: 0x260 } + - { offset: 0x26F9E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE04moveE02to19ignoresCurrentState8animated10completionyAA0deK0CSg_S2byycSgtF', symObjAddr: 0x4CC, symBinAddr: 0x1BCBE8, symSize: 0x1C0 } + - { offset: 0x26FD03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE010initializeE05levelySi_tF', symObjAddr: 0x68C, symBinAddr: 0x1BCDA8, symSize: 0x2C8 } + - { offset: 0x26FEC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE010initializeE05levelySi_tFAA17SurfaceAppearanceCyXEfU_', symObjAddr: 0x954, symBinAddr: 0x1BD070, symSize: 0x100 } + - { offset: 0x26FFCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE06removeE08animated012restoresLastE010completionySb_SbyycSgtFSbAaB_pXEfU_TA', symObjAddr: 0xA54, symBinAddr: 0x1BD170, symSize: 0x14 } + - { offset: 0x2700B8, size: 0x8, addend: 0x0, symName: '_$sSMsE20_halfStablePartition15isSuffixElement5IndexQzSb0F0QzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg5', symObjAddr: 0xA68, symBinAddr: 0x1BD184, symSize: 0x1DC } + - { offset: 0x270449, size: 0x8, addend: 0x0, symName: '_$sSlsE10firstIndex5where0B0QzSgSb7ElementQzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg5', symObjAddr: 0x98, symBinAddr: 0x1BC7B4, symSize: 0xC0 } + - { offset: 0x270577, size: 0x8, addend: 0x0, symName: '_$sSlsE10firstIndex5where0B0QzSgSb7ElementQzKXE_tKFSay8PenNavUI5PlaceCG_Tg5', symObjAddr: 0x158, symBinAddr: 0x1BC874, symSize: 0x114 } + - { offset: 0x270E23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22LocationIndicatorStyleOMa', symObjAddr: 0x168, symBinAddr: 0x1BD360, symSize: 0x10 } + - { offset: 0x270E37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22LocationIndicatorStyleOSHAASQWb', symObjAddr: 0x178, symBinAddr: 0x1BD370, symSize: 0x4 } + - { offset: 0x270E4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22LocationIndicatorStyleOACSQAAWl', symObjAddr: 0x17C, symBinAddr: 0x1BD374, symSize: 0x40 } + - { offset: 0x271203, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC4fullACvpZ', symObjAddr: 0x7B0, symBinAddr: 0x36C308, symSize: 0x0 } + - { offset: 0x271403, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC4halfACvpZ', symObjAddr: 0x7B8, symBinAddr: 0x36C310, symSize: 0x0 } + - { offset: 0x27141D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC3tipACvpZ', symObjAddr: 0x7C0, symBinAddr: 0x36C318, symSize: 0x0 } + - { offset: 0x271437, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC6hiddenACvpZ', symObjAddr: 0x7C8, symBinAddr: 0x36C320, symSize: 0x0 } + - { offset: 0x271445, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCMa', symObjAddr: 0xB4, symBinAddr: 0x1BD468, symSize: 0x20 } + - { offset: 0x27147A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCfETo', symObjAddr: 0x710, symBinAddr: 0x1BDA08, symSize: 0x14 } + - { offset: 0x271581, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValueACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x1BD3B4, symSize: 0x68 } + - { offset: 0x2715C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValueACSgSS_tcfc', symObjAddr: 0x68, symBinAddr: 0x1BD41C, symSize: 0x4C } + - { offset: 0x27161A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValue5orderACSS_SitcfC', symObjAddr: 0xD4, symBinAddr: 0x1BD488, symSize: 0x6C } + - { offset: 0x271661, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValue5orderACSS_Sitcfc', symObjAddr: 0x140, symBinAddr: 0x1BD4F4, symSize: 0x4C } + - { offset: 0x2716B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValue5orderACSS_SitcfcTo', symObjAddr: 0x18C, symBinAddr: 0x1BD540, symSize: 0x64 } + - { offset: 0x2716F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC5orderSivg', symObjAddr: 0x1F0, symBinAddr: 0x1BD5A4, symSize: 0x10 } + - { offset: 0x271722, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC4copy4withyp10ObjectiveC6NSZoneVSg_tF', symObjAddr: 0x200, symBinAddr: 0x1BD5B4, symSize: 0x2C } + - { offset: 0x27176D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC4copy4withyp10ObjectiveC6NSZoneVSg_tFTo', symObjAddr: 0x22C, symBinAddr: 0x1BD5E0, symSize: 0x4 } + - { offset: 0x271795, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC11descriptionSSvgTo', symObjAddr: 0x230, symBinAddr: 0x1BD5E4, symSize: 0x4C } + - { offset: 0x2717C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC11descriptionSSvg', symObjAddr: 0x27C, symBinAddr: 0x1BD630, symSize: 0x38 } + - { offset: 0x27181C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC16debugDescriptionSSvgTo', symObjAddr: 0x2B4, symBinAddr: 0x1BD668, symSize: 0xC0 } + - { offset: 0x2718B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCACycfc', symObjAddr: 0x688, symBinAddr: 0x1BD980, symSize: 0x2C } + - { offset: 0x271910, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCACycfcTo', symObjAddr: 0x6B4, symBinAddr: 0x1BD9AC, symSize: 0x2C } + - { offset: 0x27196F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCfD', symObjAddr: 0x6E0, symBinAddr: 0x1BD9D8, symSize: 0x30 } + - { offset: 0x271992, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x724, symBinAddr: 0x1BDA1C, symSize: 0x30 } + - { offset: 0x2719BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x754, symBinAddr: 0x1BDA4C, symSize: 0x1C } + - { offset: 0x271D65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11makeXOffset3for4withSfSS_AC14TextAttributesVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1BDAA4, symSize: 0x118 } + - { offset: 0x271DB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11makeXOffset3for4withSfSS_AC14TextAttributesVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1BDAA4, symSize: 0x118 } + - { offset: 0x27232D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCMa', symObjAddr: 0x480, symBinAddr: 0x1BDEF8, symSize: 0x20 } + - { offset: 0x272341, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCfETo', symObjAddr: 0x54C, symBinAddr: 0x1BDFC4, symSize: 0x10 } + - { offset: 0x272377, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC08completeE0yyF', symObjAddr: 0x0, symBinAddr: 0x1BDBBC, symSize: 0x64 } + - { offset: 0x2723AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC02isD0SbvgTo', symObjAddr: 0x64, symBinAddr: 0x1BDC20, symSize: 0x8 } + - { offset: 0x2723C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC11isExecutingSbvsTo', symObjAddr: 0x8C, symBinAddr: 0x1BDC34, symSize: 0x54 } + - { offset: 0x2723D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC10isFinishedSbvsTo', symObjAddr: 0x1E8, symBinAddr: 0x1BDD00, symSize: 0x50 } + - { offset: 0x272403, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC5startyyFTo', symObjAddr: 0x378, symBinAddr: 0x1BDE10, symSize: 0x70 } + - { offset: 0x272496, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCACycfc', symObjAddr: 0x408, symBinAddr: 0x1BDE80, symSize: 0x78 } + - { offset: 0x2724F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCACycfcTo', symObjAddr: 0x4A0, symBinAddr: 0x1BDF18, symSize: 0x7C } + - { offset: 0x272554, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCfD', symObjAddr: 0x51C, symBinAddr: 0x1BDF94, symSize: 0x30 } + - { offset: 0x272F31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvpAETk', symObjAddr: 0x2A0, symBinAddr: 0x1BE29C, symSize: 0x64 } + - { offset: 0x272F6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowCMa', symObjAddr: 0x940, symBinAddr: 0x1BE91C, symSize: 0x20 } + - { offset: 0x272F83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avpACTK', symObjAddr: 0xDB4, symBinAddr: 0x1BED90, symSize: 0x54 } + - { offset: 0x272FD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvpACTk', symObjAddr: 0xFF4, symBinAddr: 0x1BEFD0, symSize: 0x64 } + - { offset: 0x273038, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceCfETo', symObjAddr: 0x1504, symBinAddr: 0x1BF4E0, symSize: 0x58 } + - { offset: 0x273982, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvpACTk', symObjAddr: 0x2084, symBinAddr: 0x1BFF38, symSize: 0x68 } + - { offset: 0x273DAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewCfETo', symObjAddr: 0x63A8, symBinAddr: 0x1C4224, symSize: 0x128 } + - { offset: 0x273DD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceCMa', symObjAddr: 0x64D0, symBinAddr: 0x1C434C, symSize: 0x20 } + - { offset: 0x273DED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewCMa', symObjAddr: 0x64F0, symBinAddr: 0x1C436C, symSize: 0x20 } + - { offset: 0x273E01, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaAB5UIKit01_C23NumericRawRepresentableACWl', symObjAddr: 0x7230, symBinAddr: 0x1C4ED4, symSize: 0x44 } + - { offset: 0x2740C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvgTo', symObjAddr: 0x0, symBinAddr: 0x1BDFFC, symSize: 0x44 } + - { offset: 0x2740F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvg', symObjAddr: 0x44, symBinAddr: 0x1BE040, symSize: 0x40 } + - { offset: 0x274140, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvsTo', symObjAddr: 0x84, symBinAddr: 0x1BE080, symSize: 0x50 } + - { offset: 0x27417C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvs', symObjAddr: 0xD4, symBinAddr: 0x1BE0D0, symSize: 0x4C } + - { offset: 0x2741A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvM', symObjAddr: 0x120, symBinAddr: 0x1BE11C, symSize: 0x40 } + - { offset: 0x27429F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvgTo', symObjAddr: 0x160, symBinAddr: 0x1BE15C, symSize: 0x48 } + - { offset: 0x2742D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvg', symObjAddr: 0x1A8, symBinAddr: 0x1BE1A4, symSize: 0x40 } + - { offset: 0x274316, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvsTo', symObjAddr: 0x1E8, symBinAddr: 0x1BE1E4, symSize: 0x64 } + - { offset: 0x274351, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvs', symObjAddr: 0x24C, symBinAddr: 0x1BE248, symSize: 0x54 } + - { offset: 0x27437A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvM', symObjAddr: 0x304, symBinAddr: 0x1BE300, symSize: 0x40 } + - { offset: 0x2743C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvsTo', symObjAddr: 0x35C, symBinAddr: 0x1BE358, symSize: 0x54 } + - { offset: 0x274403, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvs', symObjAddr: 0x3B0, symBinAddr: 0x1BE3AC, symSize: 0x54 } + - { offset: 0x27442C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvM', symObjAddr: 0x404, symBinAddr: 0x1BE400, symSize: 0x40 } + - { offset: 0x274465, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvgTo', symObjAddr: 0x444, symBinAddr: 0x1BE440, symSize: 0x44 } + - { offset: 0x27449A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvg', symObjAddr: 0x488, symBinAddr: 0x1BE484, symSize: 0x44 } + - { offset: 0x2744DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvsTo', symObjAddr: 0x4CC, symBinAddr: 0x1BE4C8, symSize: 0x50 } + - { offset: 0x27451C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvs', symObjAddr: 0x51C, symBinAddr: 0x1BE518, symSize: 0x50 } + - { offset: 0x274545, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvM', symObjAddr: 0x56C, symBinAddr: 0x1BE568, symSize: 0x40 } + - { offset: 0x27457E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x5AC, symBinAddr: 0x1BE5A8, symSize: 0x44 } + - { offset: 0x2745B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvg', symObjAddr: 0x5F0, symBinAddr: 0x1BE5EC, symSize: 0x40 } + - { offset: 0x2745F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x630, symBinAddr: 0x1BE62C, symSize: 0x50 } + - { offset: 0x274631, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvs', symObjAddr: 0x680, symBinAddr: 0x1BE67C, symSize: 0x4C } + - { offset: 0x27465A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvM', symObjAddr: 0x6CC, symBinAddr: 0x1BE6C8, symSize: 0x40 } + - { offset: 0x274693, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x70C, symBinAddr: 0x1BE708, symSize: 0x44 } + - { offset: 0x2746C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvg', symObjAddr: 0x750, symBinAddr: 0x1BE74C, symSize: 0x40 } + - { offset: 0x274705, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x790, symBinAddr: 0x1BE78C, symSize: 0x50 } + - { offset: 0x274741, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvs', symObjAddr: 0x7E0, symBinAddr: 0x1BE7DC, symSize: 0x4C } + - { offset: 0x27476A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvM', symObjAddr: 0x82C, symBinAddr: 0x1BE828, symSize: 0x40 } + - { offset: 0x274795, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowCAEycfc', symObjAddr: 0x88C, symBinAddr: 0x1BE868, symSize: 0xB4 } + - { offset: 0x2747C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowCAEycfcTo', symObjAddr: 0x960, symBinAddr: 0x1BE93C, symSize: 0xB8 } + - { offset: 0x2747FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowCfETo', symObjAddr: 0xA24, symBinAddr: 0x1BEA00, symSize: 0x10 } + - { offset: 0x27483B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvgTo', symObjAddr: 0xA34, symBinAddr: 0x1BEA10, symSize: 0x48 } + - { offset: 0x27486E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvg', symObjAddr: 0xA7C, symBinAddr: 0x1BEA58, symSize: 0x4C } + - { offset: 0x27488D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvs', symObjAddr: 0xAD4, symBinAddr: 0x1BEAB0, symSize: 0x54 } + - { offset: 0x2748B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvM', symObjAddr: 0xB28, symBinAddr: 0x1BEB04, symSize: 0x40 } + - { offset: 0x2748EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvgTo', symObjAddr: 0xB68, symBinAddr: 0x1BEB44, symSize: 0x44 } + - { offset: 0x274922, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvg', symObjAddr: 0xBAC, symBinAddr: 0x1BEB88, symSize: 0x40 } + - { offset: 0x274961, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvsTo', symObjAddr: 0xBEC, symBinAddr: 0x1BEBC8, symSize: 0x50 } + - { offset: 0x27499D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvs', symObjAddr: 0xC3C, symBinAddr: 0x1BEC18, symSize: 0x4C } + - { offset: 0x2749C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvM', symObjAddr: 0xC88, symBinAddr: 0x1BEC64, symSize: 0x40 } + - { offset: 0x274A62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avgTo', symObjAddr: 0xCC8, symBinAddr: 0x1BECA4, symSize: 0x50 } + - { offset: 0x274AB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avg', symObjAddr: 0xD18, symBinAddr: 0x1BECF4, symSize: 0x50 } + - { offset: 0x274B3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avsTo', symObjAddr: 0xD68, symBinAddr: 0x1BED44, symSize: 0x34 } + - { offset: 0x274B9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avs', symObjAddr: 0xD9C, symBinAddr: 0x1BED78, symSize: 0x18 } + - { offset: 0x274BC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avs', symObjAddr: 0xD9C, symBinAddr: 0x1BED78, symSize: 0x18 } + - { offset: 0x274BEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM', symObjAddr: 0xE08, symBinAddr: 0x1BEDE4, symSize: 0x68 } + - { offset: 0x274C3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM.resume.0', symObjAddr: 0xE70, symBinAddr: 0x1BEE4C, symSize: 0x14 } + - { offset: 0x274C62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM.resume.0', symObjAddr: 0xE70, symBinAddr: 0x1BEE4C, symSize: 0x14 } + - { offset: 0x274C76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM.resume.0', symObjAddr: 0xE70, symBinAddr: 0x1BEE4C, symSize: 0x14 } + - { offset: 0x274CE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvgTo', symObjAddr: 0xE84, symBinAddr: 0x1BEE60, symSize: 0x6C } + - { offset: 0x274D18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvg', symObjAddr: 0xEF0, symBinAddr: 0x1BEECC, symSize: 0x44 } + - { offset: 0x274D5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvsTo', symObjAddr: 0xF34, symBinAddr: 0x1BEF10, symSize: 0x6C } + - { offset: 0x274D97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvs', symObjAddr: 0xFA0, symBinAddr: 0x1BEF7C, symSize: 0x54 } + - { offset: 0x274DC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvM', symObjAddr: 0x1058, symBinAddr: 0x1BF034, symSize: 0x40 } + - { offset: 0x274DF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvgTo', symObjAddr: 0x1098, symBinAddr: 0x1BF074, symSize: 0x48 } + - { offset: 0x274E2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvg', symObjAddr: 0x10E0, symBinAddr: 0x1BF0BC, symSize: 0x4C } + - { offset: 0x274E4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvs', symObjAddr: 0x1198, symBinAddr: 0x1BF174, symSize: 0x54 } + - { offset: 0x274E80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvM', symObjAddr: 0x124C, symBinAddr: 0x1BF228, symSize: 0x40 } + - { offset: 0x274EB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x128C, symBinAddr: 0x1BF268, symSize: 0x44 } + - { offset: 0x274EEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvg', symObjAddr: 0x12D0, symBinAddr: 0x1BF2AC, symSize: 0x40 } + - { offset: 0x274F2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x1310, symBinAddr: 0x1BF2EC, symSize: 0x50 } + - { offset: 0x274F67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvs', symObjAddr: 0x1360, symBinAddr: 0x1BF33C, symSize: 0x4C } + - { offset: 0x274F90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvM', symObjAddr: 0x13AC, symBinAddr: 0x1BF388, symSize: 0x40 } + - { offset: 0x274FCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceCACycfc', symObjAddr: 0x13EC, symBinAddr: 0x1BF3C8, symSize: 0xEC } + - { offset: 0x275072, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceCACycfcTo', symObjAddr: 0x14D8, symBinAddr: 0x1BF4B4, symSize: 0x20 } + - { offset: 0x27509F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC13grabberHandleAA07GrabberE0CvgTo', symObjAddr: 0x155C, symBinAddr: 0x1BF538, symSize: 0x10 } + - { offset: 0x2750B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC13grabberHandleAA07GrabberE0CvgTo', symObjAddr: 0x155C, symBinAddr: 0x1BF538, symSize: 0x10 } + - { offset: 0x2750D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC13grabberHandleAA07GrabberE0Cvg', symObjAddr: 0x156C, symBinAddr: 0x1BF548, symSize: 0x10 } + - { offset: 0x275105, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x157C, symBinAddr: 0x1BF558, symSize: 0x44 } + - { offset: 0x275138, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvg', symObjAddr: 0x15C0, symBinAddr: 0x1BF59C, symSize: 0x40 } + - { offset: 0x27518B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x1600, symBinAddr: 0x1BF5DC, symSize: 0x60 } + - { offset: 0x2751E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvs', symObjAddr: 0x1660, symBinAddr: 0x1BF63C, symSize: 0x5C } + - { offset: 0x27522A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvM', symObjAddr: 0x16BC, symBinAddr: 0x1BF698, symSize: 0x44 } + - { offset: 0x275263, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x1700, symBinAddr: 0x1BF6DC, symSize: 0x44 } + - { offset: 0x275296, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvg', symObjAddr: 0x1744, symBinAddr: 0x1BF720, symSize: 0x40 } + - { offset: 0x2752D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x1784, symBinAddr: 0x1BF760, symSize: 0x50 } + - { offset: 0x275311, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvs', symObjAddr: 0x17D4, symBinAddr: 0x1BF7B0, symSize: 0x4C } + - { offset: 0x27533A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvM', symObjAddr: 0x1820, symBinAddr: 0x1BF7FC, symSize: 0x40 } + - { offset: 0x275393, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvsTo', symObjAddr: 0x18FC, symBinAddr: 0x1BF8D4, symSize: 0x68 } + - { offset: 0x2753ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvs', symObjAddr: 0x1964, symBinAddr: 0x1BF93C, symSize: 0x64 } + - { offset: 0x275433, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvM', symObjAddr: 0x19C8, symBinAddr: 0x1BF9A0, symSize: 0x44 } + - { offset: 0x27546C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x1A0C, symBinAddr: 0x1BF9E4, symSize: 0x48 } + - { offset: 0x27549F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvg', symObjAddr: 0x1A54, symBinAddr: 0x1BFA2C, symSize: 0x44 } + - { offset: 0x2754E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvsTo', symObjAddr: 0x1A98, symBinAddr: 0x1BFA70, symSize: 0x58 } + - { offset: 0x27551E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvs', symObjAddr: 0x1AF0, symBinAddr: 0x1BFAC8, symSize: 0x5C } + - { offset: 0x275547, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvM', symObjAddr: 0x1B4C, symBinAddr: 0x1BFB24, symSize: 0x84 } + - { offset: 0x275580, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvM.resume.0', symObjAddr: 0x1BD0, symBinAddr: 0x1BFBA8, symSize: 0x6C } + - { offset: 0x2755A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvM', symObjAddr: 0x1C6C, symBinAddr: 0x1BFC44, symSize: 0x44 } + - { offset: 0x2755EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvgTo', symObjAddr: 0x1CB4, symBinAddr: 0x1BFC8C, symSize: 0x68 } + - { offset: 0x2756A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvsTo', symObjAddr: 0x1D88, symBinAddr: 0x1BFCF4, symSize: 0xC0 } + - { offset: 0x27571F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvgTo', symObjAddr: 0x1F00, symBinAddr: 0x1BFDB4, symSize: 0x48 } + - { offset: 0x275752, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvg', symObjAddr: 0x1F48, symBinAddr: 0x1BFDFC, symSize: 0x40 } + - { offset: 0x275791, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvsTo', symObjAddr: 0x1F88, symBinAddr: 0x1BFE3C, symSize: 0x8C } + - { offset: 0x2757C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvs', symObjAddr: 0x2014, symBinAddr: 0x1BFEC8, symSize: 0x70 } + - { offset: 0x2757F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvW', symObjAddr: 0x20EC, symBinAddr: 0x1BFFA0, symSize: 0x1B4 } + - { offset: 0x275A65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvM', symObjAddr: 0x22A0, symBinAddr: 0x1C0154, symSize: 0x44 } + - { offset: 0x275A8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvM.resume.0', symObjAddr: 0x22E4, symBinAddr: 0x1C0198, symSize: 0x30 } + - { offset: 0x275AAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvM', symObjAddr: 0x251C, symBinAddr: 0x1C03D0, symSize: 0x44 } + - { offset: 0x275AE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC09containerE0So6UIViewCvgTo', symObjAddr: 0x25A0, symBinAddr: 0x1C0454, symSize: 0x10 } + - { offset: 0x275AFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC09containerE0So6UIViewCvgTo', symObjAddr: 0x25A0, symBinAddr: 0x1C0454, symSize: 0x10 } + - { offset: 0x275B19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC09containerE0So6UIViewCvg', symObjAddr: 0x25B0, symBinAddr: 0x1C0464, symSize: 0x10 } + - { offset: 0x275B4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17containerOverflow12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x25C0, symBinAddr: 0x1C0474, symSize: 0x10 } + - { offset: 0x275B62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17containerOverflow12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x25C0, symBinAddr: 0x1C0474, symSize: 0x10 } + - { offset: 0x275BB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17containerOverflow12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x25D0, symBinAddr: 0x1C0484, symSize: 0x18 } + - { offset: 0x275BC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17containerOverflow12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x25D0, symBinAddr: 0x1C0484, symSize: 0x18 } + - { offset: 0x275C1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x25E8, symBinAddr: 0x1C049C, symSize: 0x10 } + - { offset: 0x275C36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x25E8, symBinAddr: 0x1C049C, symSize: 0x10 } + - { offset: 0x275C76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC8positionAA21FloatingPanelPositionOvsTo', symObjAddr: 0x25F8, symBinAddr: 0x1C04AC, symSize: 0x3C } + - { offset: 0x275DA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC8positionAA21FloatingPanelPositionOvW', symObjAddr: 0x2634, symBinAddr: 0x1C04E8, symSize: 0x8D4 } + - { offset: 0x2761BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC16grabberAreaFrameSo6CGRectVvgTo', symObjAddr: 0x2F08, symBinAddr: 0x1C0DBC, symSize: 0x5C } + - { offset: 0x276256, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC16grabberAreaFrameSo6CGRectVvg', symObjAddr: 0x2F64, symBinAddr: 0x1C0E18, symSize: 0x21C } + - { offset: 0x276447, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC28grabberHandleWidthConstraint33_23B1F6B61A4C6FEE495E0270C601A94CLLSo08NSLayoutI0Cvg', symObjAddr: 0x32A8, symBinAddr: 0x1C115C, symSize: 0xD8 } + - { offset: 0x276484, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC29grabberHandleHeightConstraint33_23B1F6B61A4C6FEE495E0270C601A94CLLSo08NSLayoutI0Cvg', symObjAddr: 0x3380, symBinAddr: 0x1C1234, symSize: 0xDC } + - { offset: 0x2764C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC29grabberHandleCenterConstraint33_23B1F6B61A4C6FEE495E0270C601A94CLLSo08NSLayoutI0Cvg', symObjAddr: 0x345C, symBinAddr: 0x1C1310, symSize: 0xD4 } + - { offset: 0x2764E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC34grabberHandleEdgePaddingConstraint33_23B1F6B61A4C6FEE495E0270C601A94CLLSo08NSLayoutJ0Cvg', symObjAddr: 0x3530, symBinAddr: 0x1C13E4, symSize: 0xFC } + - { offset: 0x27658D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC12shadowLayers33_23B1F6B61A4C6FEE495E0270C601A94CLLSaySo7CALayerCGvs', symObjAddr: 0x362C, symBinAddr: 0x1C14E0, symSize: 0x1D0 } + - { offset: 0x276836, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC29requiresConstraintBasedLayoutSbvgZTo', symObjAddr: 0x37FC, symBinAddr: 0x1C16B0, symSize: 0x8 } + - { offset: 0x276884, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x380C, symBinAddr: 0x1C16B8, symSize: 0x23C } + - { offset: 0x27690E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x3A48, symBinAddr: 0x1C18F4, symSize: 0x20 } + - { offset: 0x276922, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5coderACSgSo7NSCoderC_tcfC', symObjAddr: 0x3A68, symBinAddr: 0x1C1914, symSize: 0x44 } + - { offset: 0x276936, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3AAC, symBinAddr: 0x1C1958, symSize: 0x224 } + - { offset: 0x2769C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x3CD0, symBinAddr: 0x1C1B7C, symSize: 0x28 } + - { offset: 0x2769D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC11addSubViews33_23B1F6B61A4C6FEE495E0270C601A94CLLyyF', symObjAddr: 0x3CF8, symBinAddr: 0x1C1BA4, symSize: 0x870 } + - { offset: 0x2770FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17updateConstraintsyyF', symObjAddr: 0x4568, symBinAddr: 0x1C2414, symSize: 0x60C } + - { offset: 0x27755E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17updateConstraintsyyFTo', symObjAddr: 0x4B74, symBinAddr: 0x1C2A20, symSize: 0x28 } + - { offset: 0x277593, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC14layoutSubviewsyyF', symObjAddr: 0x4B9C, symBinAddr: 0x1C2A48, symSize: 0x248 } + - { offset: 0x2776E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC14layoutSubviewsyyFTo', symObjAddr: 0x4DE4, symBinAddr: 0x1C2C90, symSize: 0x28 } + - { offset: 0x2776FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0x4E0C, symBinAddr: 0x1C2CB8, symSize: 0x44 } + - { offset: 0x277710, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20intrinsicContentSizeSo6CGSizeVvg', symObjAddr: 0x4E50, symBinAddr: 0x1C2CFC, symSize: 0x108 } + - { offset: 0x27787E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC12updateShadow33_23B1F6B61A4C6FEE495E0270C601A94CLLyyF', symObjAddr: 0x4F58, symBinAddr: 0x1C2E04, symSize: 0x748 } + - { offset: 0x277D81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC18updateCornerRadius33_23B1F6B61A4C6FEE495E0270C601A94CLLyyF', symObjAddr: 0x56A0, symBinAddr: 0x1C354C, symSize: 0x234 } + - { offset: 0x277E36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC12updateBorder33_23B1F6B61A4C6FEE495E0270C601A94CLLyyF', symObjAddr: 0x58D4, symBinAddr: 0x1C3780, symSize: 0x13C } + - { offset: 0x277ED8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC3set07contentE04modeySo6UIViewC_AA23FloatingPanelControllerC11ContentModeOtF', symObjAddr: 0x5A10, symBinAddr: 0x1C38BC, symSize: 0x570 } + - { offset: 0x278404, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC3set07contentE04modeySo6UIViewC_AA23FloatingPanelControllerC11ContentModeOtFTo', symObjAddr: 0x5F80, symBinAddr: 0x1C3E2C, symSize: 0x58 } + - { offset: 0x278418, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC08hasStackE0SbyF', symObjAddr: 0x5FD8, symBinAddr: 0x1C3E84, symSize: 0x194 } + - { offset: 0x2785AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC08hasStackE0SbyFTo', symObjAddr: 0x616C, symBinAddr: 0x1C4018, symSize: 0x34 } + - { offset: 0x2785C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC19grabberAreaContainsySbSo7CGPointVF', symObjAddr: 0x61A0, symBinAddr: 0x1C404C, symSize: 0x180 } + - { offset: 0x27870F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC19grabberAreaContainsySbSo7CGPointVFTo', symObjAddr: 0x6320, symBinAddr: 0x1C41CC, symSize: 0x4C } + - { offset: 0x278FCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewCfETo', symObjAddr: 0x1CD8, symBinAddr: 0x1C6B54, symSize: 0x38 } + - { offset: 0x278FFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewCMa', symObjAddr: 0x1D10, symBinAddr: 0x1C6B8C, symSize: 0x20 } + - { offset: 0x27900F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugModeOMa', symObjAddr: 0x1E98, symBinAddr: 0x1C6BAC, symSize: 0x10 } + - { offset: 0x279023, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugModeOSHAASQWb', symObjAddr: 0x1EA8, symBinAddr: 0x1C6BBC, symSize: 0x4 } + - { offset: 0x279037, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugModeOACSQAAWl', symObjAddr: 0x1EAC, symBinAddr: 0x1C6BC0, symSize: 0x40 } + - { offset: 0x27904B, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer19CameraConfigurationVSgWOc', symObjAddr: 0x1F30, symBinAddr: 0x1C6C00, symSize: 0x48 } + - { offset: 0x27905F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer19CameraConfigurationVSgWOh', symObjAddr: 0x1F78, symBinAddr: 0x1C6C48, symSize: 0x40 } + - { offset: 0x2790D6, size: 0x8, addend: 0x0, symName: '_$s12CoreGraphics7CGFloatVACs7CVarArgAAWl', symObjAddr: 0x24C4, symBinAddr: 0x1C7110, symSize: 0x40 } + - { offset: 0x279385, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xC4, symBinAddr: 0x1C4F40, symSize: 0xE0 } + - { offset: 0x279436, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1A4, symBinAddr: 0x1C5020, symSize: 0xCC } + - { offset: 0x2794C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x270, symBinAddr: 0x1C50EC, symSize: 0x28 } + - { offset: 0x279526, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC5setup33_2F560D187A4C3D784FB69A11494F9267LLyyF', symObjAddr: 0x298, symBinAddr: 0x1C5114, symSize: 0x338 } + - { offset: 0x27966F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC06switchD4ModeyyF', symObjAddr: 0x5D0, symBinAddr: 0x1C544C, symSize: 0x128 } + - { offset: 0x279713, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC21constrainLabelToEdges33_2F560D187A4C3D784FB69A11494F9267LLyySo7UILabelCF', symObjAddr: 0x6F8, symBinAddr: 0x1C5574, symSize: 0x26C } + - { offset: 0x279952, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC15setUserLocationyy7Penguin10PILocationCSgF', symObjAddr: 0x964, symBinAddr: 0x1C57E0, symSize: 0x540 } + - { offset: 0x279FFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC22setCameraConfiguration_12currentFloory17PenguinINRenderer0gH0VSg_0K00J0CSgtF', symObjAddr: 0xEA4, symBinAddr: 0x1C5D20, symSize: 0x7C0 } + - { offset: 0x27A7CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC9handleTap33_2F560D187A4C3D784FB69A11494F9267LLyyFTo', symObjAddr: 0x1664, symBinAddr: 0x1C64E0, symSize: 0x70 } + - { offset: 0x27A81E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC9handlePan33_2F560D187A4C3D784FB69A11494F9267LLyySo22UIPanGestureRecognizerCF', symObjAddr: 0x16D4, symBinAddr: 0x1C6550, symSize: 0x584 } + - { offset: 0x27AB37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC9handlePan33_2F560D187A4C3D784FB69A11494F9267LLyySo22UIPanGestureRecognizerCFTo', symObjAddr: 0x1C58, symBinAddr: 0x1C6AD4, symSize: 0x50 } + - { offset: 0x27AB4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewCfD', symObjAddr: 0x1CA8, symBinAddr: 0x1C6B24, symSize: 0x30 } + - { offset: 0x27AB88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC19getAttributedString33_2F560D187A4C3D784FB69A11494F9267LLySo012NSAttributedH0CSSFTf4nd_n', symObjAddr: 0x1FB8, symBinAddr: 0x1C6C88, symSize: 0x230 } + - { offset: 0x27ACD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC19getFormattedPadding33_2F560D187A4C3D784FB69A11494F9267LLySSSo12UIEdgeInsetsVSgFTf4nd_n', symObjAddr: 0x2378, symBinAddr: 0x1C7048, symSize: 0xC8 } + - { offset: 0x27B142, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x0, symBinAddr: 0x1C7150, symSize: 0x8 } + - { offset: 0x27B15E, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE15colorIdentifierSivsTo', symObjAddr: 0x8, symBinAddr: 0x1C7158, symSize: 0x38 } + - { offset: 0x27B17A, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x4C, symBinAddr: 0x1C7190, symSize: 0x8 } + - { offset: 0x27B196, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x54, symBinAddr: 0x1C7198, symSize: 0x38 } + - { offset: 0x27B1B2, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE12LanguageSafeSbvgTo', symObjAddr: 0x1B0, symBinAddr: 0x1C71D0, symSize: 0x8 } + - { offset: 0x27B1DD, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE12LanguageSafeSbvsTo', symObjAddr: 0x1B8, symBinAddr: 0x1C71D8, symSize: 0x28 } + - { offset: 0x27B225, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE12LanguageSafeSbvsTf4dn_n', symObjAddr: 0x1E0, symBinAddr: 0x1C7200, symSize: 0xBC } + - { offset: 0x27B6E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCACyc33_BDB7F6F569795A6AD4284161D4C54383Llfc', symObjAddr: 0x0, symBinAddr: 0x1C72BC, symSize: 0xA8 } + - { offset: 0x27B706, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerC14sharedInstance33_BDB7F6F569795A6AD4284161D4C54383LLACSgvpZ', symObjAddr: 0x900, symBinAddr: 0x36C590, symSize: 0x0 } + - { offset: 0x27B8E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCfETo', symObjAddr: 0x690, symBinAddr: 0x1C7948, symSize: 0x10 } + - { offset: 0x27B90F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCMa', symObjAddr: 0x6A0, symBinAddr: 0x1C7958, symSize: 0x20 } + - { offset: 0x27B923, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVSgWOb', symObjAddr: 0x704, symBinAddr: 0x1C7978, symSize: 0x48 } + - { offset: 0x27BA3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCACyc33_BDB7F6F569795A6AD4284161D4C54383Llfc', symObjAddr: 0x0, symBinAddr: 0x1C72BC, symSize: 0xA8 } + - { offset: 0x27BB13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCACyc33_BDB7F6F569795A6AD4284161D4C54383LlfcTo', symObjAddr: 0xA8, symBinAddr: 0x1C7364, symSize: 0x20 } + - { offset: 0x27BC48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerC04sendE03fory7Penguin14GeofenceRegionV_tF', symObjAddr: 0xCC, symBinAddr: 0x1C7384, symSize: 0x258 } + - { offset: 0x27BDA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerC011willDisplayE02idSbSi_tF', symObjAddr: 0x324, symBinAddr: 0x1C75DC, symSize: 0x33C } + - { offset: 0x27BEC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCfD', symObjAddr: 0x660, symBinAddr: 0x1C7918, symSize: 0x30 } + - { offset: 0x27BF53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerC19trackGeofenceRegion33_BDB7F6F569795A6AD4284161D4C54383LL8regionIdySi_tFTf4nd_n', symObjAddr: 0x78C, symBinAddr: 0x1C79C0, symSize: 0x12C } + - { offset: 0x27C3BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerC29initializePersistentContaineryyF', symObjAddr: 0x0, symBinAddr: 0x1C7AEC, symSize: 0x5F0 } + - { offset: 0x27C3E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerC14sharedInstance33_B6E24855173BA72882FF864730241A42LLACSgvpZ', symObjAddr: 0xCC8, symBinAddr: 0x36C5C8, symSize: 0x0 } + - { offset: 0x27C496, size: 0x8, addend: 0x0, symName: '_$sSo28NSPersistentStoreDescriptionCs5Error_pSgIeggg_ABSo7NSErrorCSgIeyByy_TR', symObjAddr: 0x5F4, symBinAddr: 0x1C80DC, symSize: 0x78 } + - { offset: 0x27C57F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerCMa', symObjAddr: 0xB5C, symBinAddr: 0x1C8620, symSize: 0x20 } + - { offset: 0x27C593, size: 0x8, addend: 0x0, symName: '_$sSo28NSPersistentStoreDescriptionCMa', symObjAddr: 0xBC0, symBinAddr: 0x1C8640, symSize: 0x44 } + - { offset: 0x27C5A7, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xC8C, symBinAddr: 0x1C8684, symSize: 0x10 } + - { offset: 0x27C5BB, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xC9C, symBinAddr: 0x1C8694, symSize: 0x8 } + - { offset: 0x27C8AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerC29initializePersistentContaineryyF', symObjAddr: 0x0, symBinAddr: 0x1C7AEC, symSize: 0x5F0 } + - { offset: 0x27CB01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerC13resetDatabaseyyF', symObjAddr: 0x66C, symBinAddr: 0x1C8154, symSize: 0x4CC } + - { offset: 0x27D1DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC15show3dBuildingsyyF', symObjAddr: 0x0, symBinAddr: 0x1C869C, symSize: 0x118 } + - { offset: 0x27D224, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC15hide3dBuildingsyyF', symObjAddr: 0x118, symBinAddr: 0x1C87B4, symSize: 0xE8 } + - { offset: 0x27D31C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC13drawFavorites2on016includingOutdoorH0ySay7Penguin5FloorCSgG_SbtF', symObjAddr: 0x200, symBinAddr: 0x1C889C, symSize: 0x550 } + - { offset: 0x27DFAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC12addFavoritesyySayAA8FavoriteCGF', symObjAddr: 0x750, symBinAddr: 0x1C8DEC, symSize: 0x454 } + - { offset: 0x27E2FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC14downloadModelsyyF', symObjAddr: 0xBA4, symBinAddr: 0x1C9240, symSize: 0x140 } + - { offset: 0x27EAEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC14add3dBuildings3forySay7Penguin0D7PolygonVG_tF', symObjAddr: 0x2D60, symBinAddr: 0x1CB3FC, symSize: 0xEF0 } + - { offset: 0x27FB2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerCMa', symObjAddr: 0x94C0, symBinAddr: 0x1D1B5C, symSize: 0x20 } + - { offset: 0x27FB43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC8addModel3fory7Penguin0D7PolygonV_tF', symObjAddr: 0x94E0, symBinAddr: 0x1D1B7C, symSize: 0x19C } + - { offset: 0x27FC12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC17downloadCompleted3foryAA16FileDownloadData_p_tF', symObjAddr: 0x967C, symBinAddr: 0x1D1D18, symSize: 0x17C } + - { offset: 0x27FCE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerCAA27FileDownloadProcessProtocolA2aDP17downloadCompleted3foryAA0gH4Data_p_tFTW', symObjAddr: 0x97F8, symBinAddr: 0x1D1E94, symSize: 0x4 } + - { offset: 0x27FD6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9loadImage3for10completion13reloadsSourcey7Penguin0D7PolygonV_yycSgSbtFySo7UIImageCSgcfU_TA', symObjAddr: 0xA53C, symBinAddr: 0x1D2B38, symSize: 0x5C } + - { offset: 0x27FD83, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xA5D0, symBinAddr: 0x1D2BBC, symSize: 0x10 } + - { offset: 0x27FD97, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xA5E0, symBinAddr: 0x1D2BCC, symSize: 0x8 } + - { offset: 0x27FDAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC013shouldDisplayD5OnMap3poiSb7Penguin0D7PolygonV_tFSbyKXEfu0_SbAA5PlaceCXEfU_TA', symObjAddr: 0xA900, symBinAddr: 0x1D2D54, symSize: 0x1C } + - { offset: 0x2809E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC15drawAllFeatures3for016includingOutdoorI0ySay7Penguin5FloorCG_SbtF', symObjAddr: 0xCE4, symBinAddr: 0x1C9380, symSize: 0xBB8 } + - { offset: 0x28169F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC14removeFeatures3forySay7Penguin5FloorCG_tF', symObjAddr: 0x189C, symBinAddr: 0x1C9F38, symSize: 0x954 } + - { offset: 0x28225D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC013shouldDisplayD5OnMap3poiSb7Penguin0D7PolygonV_tF', symObjAddr: 0x21F0, symBinAddr: 0x1CA88C, symSize: 0x12C } + - { offset: 0x2822E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC013shouldDisplayD5OnMap3poiSb7Penguin0D7PolygonV_tFSbyKXEfu0_SbAA5PlaceCXEfU_', symObjAddr: 0x231C, symBinAddr: 0x1CA9B8, symSize: 0x164 } + - { offset: 0x2823F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC19drawOutdoorFeaturesyyF', symObjAddr: 0x2480, symBinAddr: 0x1CAB1C, symSize: 0x8E0 } + - { offset: 0x282BAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC03addD0yy7Penguin0D7PolygonVF', symObjAddr: 0x3C50, symBinAddr: 0x1CC2EC, symSize: 0x3E4 } + - { offset: 0x282DA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC06removeD0yy7Penguin0D7PolygonVF', symObjAddr: 0x4034, symBinAddr: 0x1CC6D0, symSize: 0x400 } + - { offset: 0x2830C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9drawNodes2onySay7Penguin5FloorCG_tF', symObjAddr: 0x4434, symBinAddr: 0x1CCAD0, symSize: 0x1A28 } + - { offset: 0x28444A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC21drawDestinationSymbol3for2atyAA5PlaceCSg_So22CLLocationCoordinate2DVSgtF', symObjAddr: 0x5E5C, symBinAddr: 0x1CE4F8, symSize: 0x9D4 } + - { offset: 0x284864, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC21drawDestinationSymbol3for2atyAA5PlaceCSg_So22CLLocationCoordinate2DVSgtFySo7UIImageCSgcfU1_', symObjAddr: 0x6830, symBinAddr: 0x1CEECC, symSize: 0xD08 } + - { offset: 0x284EB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC16updateSymbolText3fory7Penguin0D7PolygonV_tF', symObjAddr: 0x7538, symBinAddr: 0x1CFBD4, symSize: 0x560 } + - { offset: 0x28534D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC06updateD6Source33_085DD519451CE0A7AAD2CF2829398ED6LL10isFavorite3poiySb_7Penguin0D7PolygonVtF', symObjAddr: 0x7A98, symBinAddr: 0x1D0134, symSize: 0x184 } + - { offset: 0x285435, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9loadImage3for10completion13reloadsSourcey7Penguin0D7PolygonV_yycSgSbtF', symObjAddr: 0x7C1C, symBinAddr: 0x1D02B8, symSize: 0xA90 } + - { offset: 0x2857BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9loadImage3for10completion13reloadsSourcey7Penguin0D7PolygonV_yycSgSbtFySo7UIImageCSgcfU_', symObjAddr: 0x86AC, symBinAddr: 0x1D0D48, symSize: 0x2A8 } + - { offset: 0x285837, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9loadImage3for10completion13reloadsSourcey7Penguin0D7PolygonV_yycSgSbtFySo7UIImageCSgcfU_yyScMYccfU_', symObjAddr: 0x8954, symBinAddr: 0x1D0FF0, symSize: 0x2FC } + - { offset: 0x285B66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC8setImage5image10identifier5poiId13reloadsSourceySo7UIImageC_SSSiSbtFyyYbcfU_', symObjAddr: 0x8C50, symBinAddr: 0x1D12EC, symSize: 0x268 } + - { offset: 0x285C21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC8setImage5image10identifier5poiId13reloadsSourceySo7UIImageC_SSSiSbtFyyYbcfU_yyScMYccfU_', symObjAddr: 0x8EB8, symBinAddr: 0x1D1554, symSize: 0x308 } + - { offset: 0x285ED5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC6filter11filteredIdsySaySSG_tF', symObjAddr: 0x91C0, symBinAddr: 0x1D185C, symSize: 0x1A0 } + - { offset: 0x285F30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC11clearFilteryyF', symObjAddr: 0x9360, symBinAddr: 0x1D19FC, symSize: 0x12C } + - { offset: 0x285F6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerCfD', symObjAddr: 0x948C, symBinAddr: 0x1D1B28, symSize: 0x34 } + - { offset: 0x285FA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC11getSourceId3forSS7Penguin0D7PolygonV_tFTf4nd_n', symObjAddr: 0x9D90, symBinAddr: 0x1D23F4, symSize: 0xA4 } + - { offset: 0x285FC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC8renderer7mapModeAC17PenguinINRenderer10PIRendererCSg_AA8MapStateOtcfcTf4gnn_n', symObjAddr: 0x9E34, symBinAddr: 0x1D2498, symSize: 0x1B0 } + - { offset: 0x2860FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC14downloadImages3forySay7Penguin0D7PolygonVG_tFTf4nd_n', symObjAddr: 0x9FE4, symBinAddr: 0x1D2648, symSize: 0x460 } + - { offset: 0x2869EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LanguageManagerC08selectedD033_74F133CCB03BCF72AC7567C3E94296E7LLAA03AppD0OSgvpZ', symObjAddr: 0x208, symBinAddr: 0x36C848, symSize: 0x0 } + - { offset: 0x286A91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LanguageManagerCMa', symObjAddr: 0x10, symBinAddr: 0x1D2D9C, symSize: 0x20 } + - { offset: 0x286BA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LanguageManagerC07defaultD033_74F133CCB03BCF72AC7567C3E94296E7LLAA03AppD0OvgZTf4d_n', symObjAddr: 0x50, symBinAddr: 0x1D2DBC, symSize: 0x174 } + - { offset: 0x28706E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1D2F30, symSize: 0x10 } + - { offset: 0x287380, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewCfETo', symObjAddr: 0xA08, symBinAddr: 0x1D3938, symSize: 0x7C } + - { offset: 0x2873AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewCMa', symObjAddr: 0xA84, symBinAddr: 0x1D39B4, symSize: 0x20 } + - { offset: 0x2873C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10commonInit33_A8C7BD0ECF30E7FBA1FEB7676CEE783ELLyyFyycfU_TA', symObjAddr: 0xB94, symBinAddr: 0x1D39F8, symSize: 0x8 } + - { offset: 0x2874C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1D2F30, symSize: 0x10 } + - { offset: 0x2874DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1D2F30, symSize: 0x10 } + - { offset: 0x287525, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC07contentF0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1D2F40, symSize: 0x34 } + - { offset: 0x287574, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC06selectD6ButtonAA06HapticF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1D2F74, symSize: 0x10 } + - { offset: 0x28758C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC06selectD6ButtonAA06HapticF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1D2F74, symSize: 0x10 } + - { offset: 0x2875CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC06selectD6ButtonAA06HapticF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1D2F84, symSize: 0x34 } + - { offset: 0x28761B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1D2FB8, symSize: 0x10 } + - { offset: 0x287633, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1D2FB8, symSize: 0x10 } + - { offset: 0x287673, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x1D2FC8, symSize: 0x34 } + - { offset: 0x2876C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x1D2FFC, symSize: 0x10 } + - { offset: 0x2876DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x1D2FFC, symSize: 0x10 } + - { offset: 0x287715, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x1D300C, symSize: 0x34 } + - { offset: 0x287764, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC9dateLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x1D3040, symSize: 0x10 } + - { offset: 0x28777C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC9dateLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x1D3040, symSize: 0x10 } + - { offset: 0x2877B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC9dateLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x1D3050, symSize: 0x34 } + - { offset: 0x2877F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x154, symBinAddr: 0x1D3084, symSize: 0xD0 } + - { offset: 0x287827, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x224, symBinAddr: 0x1D3154, symSize: 0x20 } + - { offset: 0x28788A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x244, symBinAddr: 0x1D3174, symSize: 0xC0 } + - { offset: 0x2878BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x304, symBinAddr: 0x1D3234, symSize: 0x28 } + - { offset: 0x287933, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10commonInit33_A8C7BD0ECF30E7FBA1FEB7676CEE783ELLyyF', symObjAddr: 0x32C, symBinAddr: 0x1D325C, symSize: 0x3E8 } + - { offset: 0x287AE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10commonInit33_A8C7BD0ECF30E7FBA1FEB7676CEE783ELLyyFyycfU_', symObjAddr: 0x714, symBinAddr: 0x1D3644, symSize: 0x88 } + - { offset: 0x287B8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC06updateD4InfoyyF', symObjAddr: 0x79C, symBinAddr: 0x1D36CC, symSize: 0x23C } + - { offset: 0x287C9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewCfD', symObjAddr: 0x9D8, symBinAddr: 0x1D3908, symSize: 0x30 } + - { offset: 0x288519, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellCfETo', symObjAddr: 0x2540, symBinAddr: 0x1D5F40, symSize: 0x68 } + - { offset: 0x288548, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellCMa', symObjAddr: 0x25A8, symBinAddr: 0x1D5FA8, symSize: 0x20 } + - { offset: 0x28855C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC10fetchImage33_7EC171285E5253B799C832B9B77543BELL3foryAA5PlaceCSg_tFySo7UIImageCSgcfU0_TA', symObjAddr: 0x25EC, symBinAddr: 0x1D5FEC, symSize: 0x18 } + - { offset: 0x288837, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC4iconSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1D3A00, symSize: 0x10 } + - { offset: 0x28884F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC4iconSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1D3A00, symSize: 0x10 } + - { offset: 0x288895, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC4iconSo11UIImageViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1D3A10, symSize: 0x34 } + - { offset: 0x2888E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5labelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1D3A44, symSize: 0x10 } + - { offset: 0x2888FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5labelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1D3A44, symSize: 0x10 } + - { offset: 0x28893C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5labelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1D3A54, symSize: 0x34 } + - { offset: 0x28898B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC13entranceLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1D3A88, symSize: 0x10 } + - { offset: 0x2889A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC13entranceLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1D3A88, symSize: 0x10 } + - { offset: 0x2889DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC13entranceLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x1D3A98, symSize: 0x34 } + - { offset: 0x288A19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC9starBadgeSo11UIImageViewCSgvg', symObjAddr: 0xCC, symBinAddr: 0x1D3ACC, symSize: 0x6C } + - { offset: 0x288A3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC9starBadgeSo11UIImageViewCSgvgAGyXEfU_', symObjAddr: 0x138, symBinAddr: 0x1D3B38, symSize: 0x488 } + - { offset: 0x288BD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC12awakeFromNibyyFTo', symObjAddr: 0x5C0, symBinAddr: 0x1D3FC0, symSize: 0x7C } + - { offset: 0x288C18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC14layoutSubviewsyyFTo', symObjAddr: 0x63C, symBinAddr: 0x1D403C, symSize: 0x3C } + - { offset: 0x288CAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC9configure3for2at10showLetteryAA5PlaceCSg_SiSbtF', symObjAddr: 0x678, symBinAddr: 0x1D4078, symSize: 0x4F0 } + - { offset: 0x288F16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC09configureD033_7EC171285E5253B799C832B9B77543BELL_10showLetteryAA5PlaceCSg_SbtF', symObjAddr: 0xB68, symBinAddr: 0x1D4568, symSize: 0x4C4 } + - { offset: 0x289139, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC09configureD6Letter33_7EC171285E5253B799C832B9B77543BELLyyF', symObjAddr: 0x102C, symBinAddr: 0x1D4A2C, symSize: 0x1D4 } + - { offset: 0x289313, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC13configureIcon33_7EC171285E5253B799C832B9B77543BELL3foryAA5PlaceCSg_tF', symObjAddr: 0x1200, symBinAddr: 0x1D4C00, symSize: 0x470 } + - { offset: 0x2894FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC10fetchImage33_7EC171285E5253B799C832B9B77543BELL3foryAA5PlaceCSg_tF', symObjAddr: 0x1670, symBinAddr: 0x1D5070, symSize: 0xA00 } + - { offset: 0x2898F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC15prepareForReuseyyF', symObjAddr: 0x21B8, symBinAddr: 0x1D5BB8, symSize: 0x138 } + - { offset: 0x289975, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC15prepareForReuseyyFTo', symObjAddr: 0x22F0, symBinAddr: 0x1D5CF0, symSize: 0x28 } + - { offset: 0x289989, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x2318, symBinAddr: 0x1D5D18, symSize: 0xD0 } + - { offset: 0x2899CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x23E8, symBinAddr: 0x1D5DE8, symSize: 0x48 } + - { offset: 0x289A02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x2430, symBinAddr: 0x1D5E30, symSize: 0xB8 } + - { offset: 0x289A35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x24E8, symBinAddr: 0x1D5EE8, symSize: 0x28 } + - { offset: 0x289A49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellCfD', symObjAddr: 0x2510, symBinAddr: 0x1D5F10, symSize: 0x30 } + - { offset: 0x289A87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC012getLetterForD033_7EC171285E5253B799C832B9B77543BELL2atSo7UIImageCSgSi_tFTf4nd_n', symObjAddr: 0x2678, symBinAddr: 0x1D6008, symSize: 0x304 } + - { offset: 0x289BD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC9configure5title10stopsCount5imageySS_SiSo7UIImageCtFTf4nddn_n', symObjAddr: 0x29DC, symBinAddr: 0x1D630C, symSize: 0x3B4 } + - { offset: 0x28A124, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE9hexStringSSvg', symObjAddr: 0x0, symBinAddr: 0x1D66CC, symSize: 0x280 } + - { offset: 0x28A2A5, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE9hexStringSSvg', symObjAddr: 0x0, symBinAddr: 0x1D66CC, symSize: 0x280 } + - { offset: 0x28A72A, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE9hexStringABSSSg_tcfC', symObjAddr: 0x280, symBinAddr: 0x1D694C, symSize: 0x44C } + - { offset: 0x28A9A8, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE6darker2byAB12CoreGraphics7CGFloatV_tF', symObjAddr: 0x70C, symBinAddr: 0x1D6D98, symSize: 0x104 } + - { offset: 0x28AABF, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE15opaqueHexStringSSvg', symObjAddr: 0x85C, symBinAddr: 0x1D6E9C, symSize: 0x3F8 } + - { offset: 0x28B26B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC37activityViewControllerPlaceholderItemyypSo010UIActivitygH0CFTo', symObjAddr: 0x0, symBinAddr: 0x1D7294, symSize: 0x58 } + - { offset: 0x28B3C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentCfETo', symObjAddr: 0x2E0, symBinAddr: 0x1D7540, symSize: 0x64 } + - { offset: 0x28B3F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentCMa', symObjAddr: 0x344, symBinAddr: 0x1D75A4, symSize: 0x20 } + - { offset: 0x28B497, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC37activityViewControllerPlaceholderItemyypSo010UIActivitygH0CFTo', symObjAddr: 0x0, symBinAddr: 0x1D7294, symSize: 0x58 } + - { offset: 0x28B4AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC37activityViewControllerPlaceholderItemyypSo010UIActivitygH0CFTo', symObjAddr: 0x0, symBinAddr: 0x1D7294, symSize: 0x58 } + - { offset: 0x28B4ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC22activityViewController_19itemForActivityTypeypSgSo010UIActivitygH0C_So0mL0aSgtF', symObjAddr: 0x58, symBinAddr: 0x1D72EC, symSize: 0xD4 } + - { offset: 0x28B5E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC22activityViewController_19itemForActivityTypeypSgSo010UIActivitygH0C_So0mL0aSgtFTo', symObjAddr: 0x12C, symBinAddr: 0x1D73C0, symSize: 0xFC } + - { offset: 0x28B602, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC34activityViewControllerLinkMetadataySo06LPLinkJ0CSgSo010UIActivitygH0CFTo', symObjAddr: 0x228, symBinAddr: 0x1D74BC, symSize: 0x58 } + - { offset: 0x28B640, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentCACycfcTo', symObjAddr: 0x280, symBinAddr: 0x1D7514, symSize: 0x2C } + - { offset: 0x28B78B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC34activityViewControllerLinkMetadataySo06LPLinkJ0CSgSo010UIActivitygH0CFTf4dn_n', symObjAddr: 0x364, symBinAddr: 0x1D75C4, symSize: 0x188 } + - { offset: 0x28BD60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellCfETo', symObjAddr: 0x454, symBinAddr: 0x1D7BA0, symSize: 0x48 } + - { offset: 0x28BD8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellCMa', symObjAddr: 0x49C, symBinAddr: 0x1D7BE8, symSize: 0x20 } + - { offset: 0x28BDA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12awakeFromNibyyFyycfU_TA', symObjAddr: 0x4E0, symBinAddr: 0x1D7C2C, symSize: 0x20 } + - { offset: 0x28BDB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12awakeFromNibyyFyycfU0_TA', symObjAddr: 0x510, symBinAddr: 0x1D7C4C, symSize: 0x20 } + - { offset: 0x28BE59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC16directionsButtonAA10HapticViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1D774C, symSize: 0x10 } + - { offset: 0x28BE71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC16directionsButtonAA10HapticViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1D774C, symSize: 0x10 } + - { offset: 0x28BEB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC16directionsButtonAA10HapticViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1D775C, symSize: 0x34 } + - { offset: 0x28BF06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12venuesButtonAA10HapticViewCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1D7790, symSize: 0x10 } + - { offset: 0x28BF1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12venuesButtonAA10HapticViewCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1D7790, symSize: 0x10 } + - { offset: 0x28BF59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12venuesButtonAA10HapticViewCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1D77A0, symSize: 0x34 } + - { offset: 0x28BFC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12awakeFromNibyyF', symObjAddr: 0x88, symBinAddr: 0x1D77D4, symSize: 0x148 } + - { offset: 0x28C075, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x270, symBinAddr: 0x1D79BC, symSize: 0x28 } + - { offset: 0x28C0DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x298, symBinAddr: 0x1D79E4, symSize: 0xD0 } + - { offset: 0x28C144, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x368, symBinAddr: 0x1D7AB4, symSize: 0x94 } + - { offset: 0x28C177, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x3FC, symBinAddr: 0x1D7B48, symSize: 0x28 } + - { offset: 0x28C18B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellCfD', symObjAddr: 0x424, symBinAddr: 0x1D7B70, symSize: 0x30 } + - { offset: 0x28C51A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC9containerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1D7C6C, symSize: 0x10 } + - { offset: 0x28CB43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellCfETo', symObjAddr: 0x1A68, symBinAddr: 0x1D96D4, symSize: 0xB0 } + - { offset: 0x28CB72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellCMa', symObjAddr: 0x1B18, symBinAddr: 0x1D9784, symSize: 0x20 } + - { offset: 0x28CBA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC27didTapStartNavigationButtonyySo8UIButtonCFyycACcfu1_yycfu2_TA', symObjAddr: 0x2510, symBinAddr: 0x1DA0D8, symSize: 0x20 } + - { offset: 0x28CE2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC9containerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1D7C6C, symSize: 0x10 } + - { offset: 0x28CE47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC9containerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1D7C6C, symSize: 0x10 } + - { offset: 0x28CE8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC9containerSo6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1D7C7C, symSize: 0x34 } + - { offset: 0x28CEDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1D7CB0, symSize: 0x10 } + - { offset: 0x28CEF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1D7CB0, symSize: 0x10 } + - { offset: 0x28CF34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC11lengthLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1D7CC0, symSize: 0x34 } + - { offset: 0x28CF83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1D7CF4, symSize: 0x10 } + - { offset: 0x28CF9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1D7CF4, symSize: 0x10 } + - { offset: 0x28CFD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC13durationLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x1D7D04, symSize: 0x34 } + - { offset: 0x28D025, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC16arrivalTimeLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x1D7D38, symSize: 0x10 } + - { offset: 0x28D03D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC16arrivalTimeLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x1D7D38, symSize: 0x10 } + - { offset: 0x28D078, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC16arrivalTimeLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x1D7D48, symSize: 0x34 } + - { offset: 0x28D0C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x1D7D7C, symSize: 0x10 } + - { offset: 0x28D0DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x1D7D7C, symSize: 0x10 } + - { offset: 0x28D11A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x1D7D8C, symSize: 0x34 } + - { offset: 0x28D169, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC21startNavigationButtonAA07LoadingH0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x1D7DC0, symSize: 0x10 } + - { offset: 0x28D181, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC21startNavigationButtonAA07LoadingH0CSgvgTo', symObjAddr: 0x154, symBinAddr: 0x1D7DC0, symSize: 0x10 } + - { offset: 0x28D1C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC21startNavigationButtonAA07LoadingH0CSgvsTo', symObjAddr: 0x164, symBinAddr: 0x1D7DD0, symSize: 0x34 } + - { offset: 0x28D210, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC12awakeFromNibyyFTo', symObjAddr: 0x198, symBinAddr: 0x1D7E04, symSize: 0x68 } + - { offset: 0x28D4B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC6config4with6length8durationyAA5PlaceCSg_S2dtF', symObjAddr: 0x200, symBinAddr: 0x1D7E6C, symSize: 0xAAC } + - { offset: 0x28DC77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC15updateSelection10isSelectedySb_tF', symObjAddr: 0xCAC, symBinAddr: 0x1D8918, symSize: 0x6A4 } + - { offset: 0x28E041, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC27didTapStartNavigationButtonyySo8UIButtonCFTo', symObjAddr: 0x1350, symBinAddr: 0x1D8FBC, symSize: 0x4C } + - { offset: 0x28E093, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC15startNavigationyyF', symObjAddr: 0x139C, symBinAddr: 0x1D9008, symSize: 0x2A0 } + - { offset: 0x28E346, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC10showLoaderyyF', symObjAddr: 0x163C, symBinAddr: 0x1D92A8, symSize: 0x130 } + - { offset: 0x28E423, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC15prepareForReuseyyFTo', symObjAddr: 0x176C, symBinAddr: 0x1D93D8, symSize: 0x84 } + - { offset: 0x28E465, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x17F0, symBinAddr: 0x1D945C, symSize: 0xF8 } + - { offset: 0x28E4A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x18E8, symBinAddr: 0x1D9554, symSize: 0x48 } + - { offset: 0x28E4DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1930, symBinAddr: 0x1D959C, symSize: 0xE0 } + - { offset: 0x28E511, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1A10, symBinAddr: 0x1D967C, symSize: 0x28 } + - { offset: 0x28E525, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellCfD', symObjAddr: 0x1A38, symBinAddr: 0x1D96A4, symSize: 0x30 } + - { offset: 0x28E5EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC27didTapStartNavigationButtonyySo8UIButtonCFTf4dn_n', symObjAddr: 0x1BDC, symBinAddr: 0x1D97A4, symSize: 0x910 } + - { offset: 0x28F01A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorO6create4from7currentAeA3DOMOADO_AKtFZ', symObjAddr: 0x8, symBinAddr: 0x1DA0F8, symSize: 0x11C } + - { offset: 0x28F130, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorO6create4from7currentAeA3DOMOADO_AKtFZ', symObjAddr: 0x8, symBinAddr: 0x1DA0F8, symSize: 0x11C } + - { offset: 0x28F449, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LuminanceColorConverterVMa', symObjAddr: 0x428, symBinAddr: 0x1DA450, symSize: 0x10 } + - { offset: 0x28F45D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21DefaultColorConverterVMa', symObjAddr: 0x438, symBinAddr: 0x1DA460, symSize: 0x10 } + - { offset: 0x28F471, size: 0x8, addend: 0x0, symName: ___swift_memcpy17_4, symObjAddr: 0x448, symBinAddr: 0x1DA470, symSize: 0x14 } + - { offset: 0x28F485, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwet', symObjAddr: 0x460, symBinAddr: 0x1DA484, symSize: 0x54 } + - { offset: 0x28F499, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwst', symObjAddr: 0x4B4, symBinAddr: 0x1DA4D8, symSize: 0x54 } + - { offset: 0x28F4AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwug', symObjAddr: 0x508, symBinAddr: 0x1DA52C, symSize: 0x20 } + - { offset: 0x28F4C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwup', symObjAddr: 0x528, symBinAddr: 0x1DA54C, symSize: 0x10 } + - { offset: 0x28F4D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwui', symObjAddr: 0x538, symBinAddr: 0x1DA55C, symSize: 0x2C } + - { offset: 0x28F4E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOMa', symObjAddr: 0x564, symBinAddr: 0x1DA588, symSize: 0x10 } + - { offset: 0x28F4FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSHAASQWb', symObjAddr: 0x574, symBinAddr: 0x1DA598, symSize: 0x4 } + - { offset: 0x28F511, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOAESQAAWl', symObjAddr: 0x578, symBinAddr: 0x1DA59C, symSize: 0x40 } + - { offset: 0x28F525, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO10ColorSpaceOMa', symObjAddr: 0x7F4, symBinAddr: 0x1DA6B4, symSize: 0x10 } + - { offset: 0x28F539, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO10ColorSpaceOSHAASQWb', symObjAddr: 0x804, symBinAddr: 0x1DA6C4, symSize: 0x4 } + - { offset: 0x28F54D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO10ColorSpaceOAESQAAWl', symObjAddr: 0x808, symBinAddr: 0x1DA6C8, symSize: 0x40 } + - { offset: 0x28F5AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x27C, symBinAddr: 0x1DA36C, symSize: 0x54 } + - { offset: 0x28F62A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorO4hash4intoys6HasherVz_tF', symObjAddr: 0x124, symBinAddr: 0x1DA214, symSize: 0xF4 } + - { offset: 0x28F865, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSHAASH9hashValueSivgTW', symObjAddr: 0x218, symBinAddr: 0x1DA308, symSize: 0x58 } + - { offset: 0x28F8E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x270, symBinAddr: 0x1DA360, symSize: 0xC } + - { offset: 0x28F911, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x2D0, symBinAddr: 0x1DA3C0, symSize: 0x1C } + - { offset: 0x28F9C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LuminanceColorConverterVAA0eF0A2aDP06createE04fromAA9LayerTreeO0E0OAK_tFTW', symObjAddr: 0x3B4, symBinAddr: 0x1DA3DC, symSize: 0x74 } + - { offset: 0x28FA45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x5B8, symBinAddr: 0x1DA5DC, symSize: 0xD8 } + - { offset: 0x28FF2B, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeC8PenNavUIE14escalatorEdgesSayAA4EdgeCGvg', symObjAddr: 0x0, symBinAddr: 0x1DA708, symSize: 0x1D4 } + - { offset: 0x290177, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeC8PenNavUIE14escalatorEdgesSayAA4EdgeCGvgSbAGXEfU_', symObjAddr: 0x1D4, symBinAddr: 0x1DA8DC, symSize: 0x2B4 } + - { offset: 0x29024D, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeCAA17NodeRepresentable8PenNavUIAaDP13isUpEscalatorSbvgTW', symObjAddr: 0xCC8, symBinAddr: 0x1DAE40, symSize: 0x24 } + - { offset: 0x290269, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeCAA17NodeRepresentable8PenNavUIAaDP15isDownEscalatorSbvgTW', symObjAddr: 0xCEC, symBinAddr: 0x1DAE64, symSize: 0x24 } + - { offset: 0x2903AD, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeCAA17NodeRepresentable8PenNavUIAaDP8nodeTypeAA0cI0OSgvgTW', symObjAddr: 0xCA8, symBinAddr: 0x1DAE20, symSize: 0x20 } + - { offset: 0x290A65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ModalTransitionCMa', symObjAddr: 0x9C, symBinAddr: 0x1DAF24, symSize: 0x20 } + - { offset: 0x290AE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerCMa', symObjAddr: 0x694, symBinAddr: 0x1DB51C, symSize: 0x20 } + - { offset: 0x290AFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalPresentTransitionCMa', symObjAddr: 0x6F0, symBinAddr: 0x1DB578, symSize: 0x20 } + - { offset: 0x290B11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalDismissTransitionCMa', symObjAddr: 0x980, symBinAddr: 0x1DB7D8, symSize: 0x20 } + - { offset: 0x290DD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalDismissTransitionC21interruptibleAnimator5usingSo25UIViewImplicitlyAnimating_pSo0J30ControllerContextTransitioning_p_tFyycfU_TA', symObjAddr: 0x1558, symBinAddr: 0x1DC3B0, symSize: 0x18 } + - { offset: 0x290F56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ModalTransitionC19animationController12forPresented10presenting6sourceSo06UIViewG21AnimatedTransitioning_pSgSo0lG0C_A2KtFTo', symObjAddr: 0x0, symBinAddr: 0x1DAE88, symSize: 0x24 } + - { offset: 0x290FAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ModalTransitionC19animationController12forDismissedSo06UIViewG21AnimatedTransitioning_pSgSo0jG0C_tFTo', symObjAddr: 0x24, symBinAddr: 0x1DAEAC, symSize: 0x24 } + - { offset: 0x291021, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ModalTransitionC22presentationController12forPresented10presenting6sourceSo014UIPresentationG0CSgSo06UIViewG0C_ALSgALtFTo', symObjAddr: 0x48, symBinAddr: 0x1DAED0, symSize: 0x3C } + - { offset: 0x291094, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC31presentationTransitionWillBeginyyFTo', symObjAddr: 0xBC, symBinAddr: 0x1DAF44, symSize: 0x28 } + - { offset: 0x2910D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC28presentationTransitionDidEndyySbFTo', symObjAddr: 0xE4, symBinAddr: 0x1DAF6C, symSize: 0x28 } + - { offset: 0x29110A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC25dismissalTransitionDidEndyySbFTo', symObjAddr: 0x10C, symBinAddr: 0x1DAF94, symSize: 0x28 } + - { offset: 0x2911BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC31containerViewWillLayoutSubviewsyyF', symObjAddr: 0x134, symBinAddr: 0x1DAFBC, symSize: 0x2CC } + - { offset: 0x2912A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC31containerViewWillLayoutSubviewsyyFTo', symObjAddr: 0x400, symBinAddr: 0x1DB288, symSize: 0x28 } + - { offset: 0x2912C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC14handleBackdrop10tapGestureySo05UITapI10RecognizerC_tFTo', symObjAddr: 0x428, symBinAddr: 0x1DB2B0, symSize: 0x58 } + - { offset: 0x2912F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC16addFloatingPanel33_1A977BFC7DFC5A82775C8BDEF1543E18LLyyF', symObjAddr: 0x480, symBinAddr: 0x1DB308, symSize: 0x1B4 } + - { offset: 0x29139E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC013presentedViewE010presentingACSo06UIViewE0C_AGSgtcfcTo', symObjAddr: 0x634, symBinAddr: 0x1DB4BC, symSize: 0x54 } + - { offset: 0x291435, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC28presentationTransitionDidEndyySbFTf4dn_n', symObjAddr: 0x9A0, symBinAddr: 0x1DB7F8, symSize: 0x110 } + - { offset: 0x29159E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC25dismissalTransitionDidEndyySbFTf4dn_n', symObjAddr: 0xAB0, symBinAddr: 0x1DB908, symSize: 0x198 } + - { offset: 0x2917BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalPresentTransitionC18transitionDuration5usingSdSo36UIViewControllerContextTransitioning_pSg_tFTf4nd_n', symObjAddr: 0xC48, symBinAddr: 0x1DBAA0, symSize: 0x24C } + - { offset: 0x2919F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalPresentTransitionC21interruptibleAnimator5usingSo25UIViewImplicitlyAnimating_pSo0J30ControllerContextTransitioning_p_tFTf4nd_n', symObjAddr: 0xE94, symBinAddr: 0x1DBCEC, symSize: 0x284 } + - { offset: 0x291C59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalDismissTransitionC18transitionDuration5usingSdSo36UIViewControllerContextTransitioning_pSg_tFTf4nd_n', symObjAddr: 0x1118, symBinAddr: 0x1DBF70, symSize: 0x1F4 } + - { offset: 0x291DCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalDismissTransitionC21interruptibleAnimator5usingSo25UIViewImplicitlyAnimating_pSo0J30ControllerContextTransitioning_p_tFTf4nd_n', symObjAddr: 0x130C, symBinAddr: 0x1DC164, symSize: 0x224 } + - { offset: 0x2923D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC12awakeFromNibyyFTo', symObjAddr: 0x0, symBinAddr: 0x1DC3FC, symSize: 0x68 } + - { offset: 0x2924EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellCMa', symObjAddr: 0x1F0, symBinAddr: 0x1DC5EC, symSize: 0x20 } + - { offset: 0x292522, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC12awakeFromNibyyFTo', symObjAddr: 0x0, symBinAddr: 0x1DC3FC, symSize: 0x68 } + - { offset: 0x2925B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0x68, symBinAddr: 0x1DC464, symSize: 0x54 } + - { offset: 0x29263E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xBC, symBinAddr: 0x1DC4B8, symSize: 0x88 } + - { offset: 0x2926BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x144, symBinAddr: 0x1DC540, symSize: 0x7C } + - { offset: 0x2926F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellCfD', symObjAddr: 0x1C0, symBinAddr: 0x1DC5BC, symSize: 0x30 } + - { offset: 0x292AA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC11placeholderSo7UIImageCSgvpZ', symObjAddr: 0xF918, symBinAddr: 0x384ED8, symSize: 0x0 } + - { offset: 0x292AAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC11placeholder_WZ', symObjAddr: 0x0, symBinAddr: 0x1DC60C, symSize: 0x1C } + - { offset: 0x292CB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewCfETo', symObjAddr: 0xE3C, symBinAddr: 0x1DD448, symSize: 0x4 } + - { offset: 0x292CE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewCMa', symObjAddr: 0xE40, symBinAddr: 0x1DD44C, symSize: 0x20 } + - { offset: 0x292ED8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewCfE', symObjAddr: 0x1560, symBinAddr: 0x1DDB6C, symSize: 0x44 } + - { offset: 0x292F05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewCfETo', symObjAddr: 0x15E0, symBinAddr: 0x1DDBBC, symSize: 0x50 } + - { offset: 0x292F34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewCMa', symObjAddr: 0x1630, symBinAddr: 0x1DDC0C, symSize: 0x20 } + - { offset: 0x292F48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tFyyYbcfU_TA', symObjAddr: 0x1908, symBinAddr: 0x1DDEA4, symSize: 0x18 } + - { offset: 0x292F5C, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1920, symBinAddr: 0x1DDEBC, symSize: 0x10 } + - { offset: 0x292F70, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1930, symBinAddr: 0x1DDECC, symSize: 0x8 } + - { offset: 0x292F84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tFyyYbcfU_ytSgyScMYcXEfU_TA', symObjAddr: 0x1AC8, symBinAddr: 0x1DDF24, symSize: 0x18 } + - { offset: 0x29340F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC11placeholderSo7UIImageCSgvpZfiAGyXEfU_', symObjAddr: 0x1C, symBinAddr: 0x1DC628, symSize: 0x6E8 } + - { offset: 0x29368B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x704, symBinAddr: 0x1DCD10, symSize: 0x80 } + - { offset: 0x293706, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tF', symObjAddr: 0x784, symBinAddr: 0x1DCD90, symSize: 0x2B4 } + - { offset: 0x293792, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tFyyYbcfU_', symObjAddr: 0xA38, symBinAddr: 0x1DD044, symSize: 0x318 } + - { offset: 0x293843, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tFyyYbcfU_ytSgyScMYcXEfU_', symObjAddr: 0xD50, symBinAddr: 0x1DD35C, symSize: 0xB4 } + - { offset: 0x2938CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xE04, symBinAddr: 0x1DD410, symSize: 0x2C } + - { offset: 0x293929, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC10countLabel33_085A561E2153F72061B7D688048F063BLLSo7UILabelCvg', symObjAddr: 0xE60, symBinAddr: 0x1DD46C, symSize: 0x60 } + - { offset: 0x293968, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xEC0, symBinAddr: 0x1DD4CC, symSize: 0xE4 } + - { offset: 0x29399D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xFA4, symBinAddr: 0x1DD5B0, symSize: 0x28 } + - { offset: 0x2939FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC11adjustFrameyyF', symObjAddr: 0xFCC, symBinAddr: 0x1DD5D8, symSize: 0xBC } + - { offset: 0x293AC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC4drawyySo6CGRectVFTo', symObjAddr: 0x1088, symBinAddr: 0x1DD694, symSize: 0xAC } + - { offset: 0x293AF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC18defaultCircleYAxis12CoreGraphics7CGFloatVyF', symObjAddr: 0x1134, symBinAddr: 0x1DD740, symSize: 0x24 } + - { offset: 0x293B18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC18defaultCircleYAxis12CoreGraphics7CGFloatVyF', symObjAddr: 0x1134, symBinAddr: 0x1DD740, symSize: 0x24 } + - { offset: 0x293B35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC18defaultCircleYAxis12CoreGraphics7CGFloatVyF', symObjAddr: 0x1134, symBinAddr: 0x1DD740, symSize: 0x24 } + - { offset: 0x293BEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC14layoutSubviewsyyF', symObjAddr: 0x1158, symBinAddr: 0x1DD764, symSize: 0x3E0 } + - { offset: 0x293DFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC14layoutSubviewsyyFTo', symObjAddr: 0x1538, symBinAddr: 0x1DDB44, symSize: 0x28 } + - { offset: 0x293F85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC19getPlaceholderImage5place8categorySo7UIImageCSgAA5PlaceCSg_7Penguin11POICategoryVSgtFZTf4nnd_n', symObjAddr: 0x1AE0, symBinAddr: 0x1DDF3C, symSize: 0x4EC } + - { offset: 0x29450E, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin10PoiPolygonVG_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10gH19VGvpfiSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x130, symBinAddr: 0x1DE560, symSize: 0x80 } + - { offset: 0x2947AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellCfETo', symObjAddr: 0x848, symBinAddr: 0x1DEC78, symSize: 0x70 } + - { offset: 0x2947DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellCMa', symObjAddr: 0x8B8, symBinAddr: 0x1DECE8, symSize: 0x20 } + - { offset: 0x29481B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0x8D8, symBinAddr: 0x1DED08, symSize: 0x20 } + - { offset: 0x29483B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0x8D8, symBinAddr: 0x1DED08, symSize: 0x20 } + - { offset: 0x294930, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_12cellForRowAtSo07UITablegE0CSo0lG0C_10Foundation9IndexPathVtF', symObjAddr: 0x8F8, symBinAddr: 0x1DED28, symSize: 0x1D4 } + - { offset: 0x294AD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_12cellForRowAtSo07UITablegE0CSo0lG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xACC, symBinAddr: 0x1DEEFC, symSize: 0xB8 } + - { offset: 0x294AED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xB84, symBinAddr: 0x1DEFB4, symSize: 0x74 } + - { offset: 0x294B09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_24heightForFooterInSection12CoreGraphics7CGFloatVSo07UITableG0C_SitFTo', symObjAddr: 0xBF8, symBinAddr: 0x1DF028, symSize: 0xC } + - { offset: 0x294B30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_14didSelectRowAtySo07UITableG0C_10Foundation9IndexPathVtF', symObjAddr: 0xC04, symBinAddr: 0x1DF034, symSize: 0x124 } + - { offset: 0x294BE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_14didSelectRowAtySo07UITableG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xD28, symBinAddr: 0x1DF158, symSize: 0xB0 } + - { offset: 0x294C60, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin10PoiPolygonV_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10fG19VGvpfiSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0xE2C, symBinAddr: 0x1DF208, symSize: 0x108 } + - { offset: 0x294E9B, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin10PoiPolygonV_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10fG19VGvpfiSbAG_AGtXEfU_Tf1nnncn_n', symObjAddr: 0xF34, symBinAddr: 0x1DF310, symSize: 0x6EC } + - { offset: 0x2952F9, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry7Penguin10PoiPolygonVG_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10jK19VGvpfiSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x1620, symBinAddr: 0x1DF9FC, symSize: 0x1EC } + - { offset: 0x295439, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin10PoiPolygonV_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10gH19VGvpfiSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x180C, symBinAddr: 0x1DFBE8, symSize: 0x284 } + - { offset: 0x2957BE, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin10PoiPolygonV_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10hI19VGvpfiSbAG_AGtXEfU_Tf1nnnnc_n', symObjAddr: 0x1A90, symBinAddr: 0x1DFE6C, symSize: 0x500 } + - { offset: 0x2958C1, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin10PoiPolygonVG_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10gH19VGvpfiSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x130, symBinAddr: 0x1DE560, symSize: 0x80 } + - { offset: 0x295AB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableViewAA014IntrinsicTableG0CSgvgTo', symObjAddr: 0x1B0, symBinAddr: 0x1DE5E0, symSize: 0x10 } + - { offset: 0x295ACD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableViewAA014IntrinsicTableG0CSgvgTo', symObjAddr: 0x1B0, symBinAddr: 0x1DE5E0, symSize: 0x10 } + - { offset: 0x295B0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableViewAA014IntrinsicTableG0CSgvsTo', symObjAddr: 0x1C0, symBinAddr: 0x1DE5F0, symSize: 0x34 } + - { offset: 0x295C1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x1F4, symBinAddr: 0x1DE624, symSize: 0x10 } + - { offset: 0x295C36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x1F4, symBinAddr: 0x1DE624, symSize: 0x10 } + - { offset: 0x295C76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC12seeAllButtonSo8UIButtonCSgvsTo', symObjAddr: 0x204, symBinAddr: 0x1DE634, symSize: 0x34 } + - { offset: 0x295CDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC12awakeFromNibyyF', symObjAddr: 0x238, symBinAddr: 0x1DE668, symSize: 0x21C } + - { offset: 0x295E59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC12awakeFromNibyyFTo', symObjAddr: 0x454, symBinAddr: 0x1DE884, symSize: 0x28 } + - { offset: 0x295E95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC04showD0yyFTo', symObjAddr: 0x47C, symBinAddr: 0x1DE8AC, symSize: 0x70 } + - { offset: 0x295F50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x4EC, symBinAddr: 0x1DE91C, symSize: 0x170 } + - { offset: 0x296023, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x65C, symBinAddr: 0x1DEA8C, symSize: 0x48 } + - { offset: 0x29605B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x6A4, symBinAddr: 0x1DEAD4, symSize: 0x14C } + - { offset: 0x296120, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x7F0, symBinAddr: 0x1DEC20, symSize: 0x28 } + - { offset: 0x296134, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellCfD', symObjAddr: 0x818, symBinAddr: 0x1DEC48, symSize: 0x30 } + - { offset: 0x296619, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x8, symBinAddr: 0x1E036C, symSize: 0x54 } + - { offset: 0x2966D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x1E03C0, symSize: 0x1C } + - { offset: 0x2966EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x1E03C0, symSize: 0x1C } + - { offset: 0x2966FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x1E03C0, symSize: 0x1C } + - { offset: 0x296712, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x1E03C0, symSize: 0x1C } + - { offset: 0x296726, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5C, symBinAddr: 0x1E03C0, symSize: 0x1C } + - { offset: 0x29674F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x78, symBinAddr: 0x1E03DC, symSize: 0x50 } + - { offset: 0x2967F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x1E8, symBinAddr: 0x1E0534, symSize: 0x28 } + - { offset: 0x29680D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x210, symBinAddr: 0x1E055C, symSize: 0x28 } + - { offset: 0x29682F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x754, symBinAddr: 0x1E09A4, symSize: 0x28 } + - { offset: 0x29684B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x77C, symBinAddr: 0x1E09CC, symSize: 0x28 } + - { offset: 0x296A0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseCMa', symObjAddr: 0x25C, symBinAddr: 0x1E0584, symSize: 0x20 } + - { offset: 0x296BFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryCMa', symObjAddr: 0x7E8, symBinAddr: 0x1E0A38, symSize: 0x20 } + - { offset: 0x296C0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOAEs0G3KeyAAWl', symObjAddr: 0xEF8, symBinAddr: 0x1E107C, symSize: 0x40 } + - { offset: 0x296C22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOAFs0E3KeyAAWl', symObjAddr: 0xFA0, symBinAddr: 0x1E10BC, symSize: 0x40 } + - { offset: 0x296C36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOMa', symObjAddr: 0x12E4, symBinAddr: 0x1E11B4, symSize: 0x10 } + - { offset: 0x296C4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOMa', symObjAddr: 0x13D4, symBinAddr: 0x1E11C4, symSize: 0x10 } + - { offset: 0x296C5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x13E4, symBinAddr: 0x1E11D4, symSize: 0x4 } + - { offset: 0x296C72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x13E8, symBinAddr: 0x1E11D8, symSize: 0x40 } + - { offset: 0x296C86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOSHAASQWb', symObjAddr: 0x1428, symBinAddr: 0x1E1218, symSize: 0x4 } + - { offset: 0x296C9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOAFSQAAWl', symObjAddr: 0x142C, symBinAddr: 0x1E121C, symSize: 0x40 } + - { offset: 0x296CAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x146C, symBinAddr: 0x1E125C, symSize: 0x4 } + - { offset: 0x296CC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1470, symBinAddr: 0x1E1260, symSize: 0x40 } + - { offset: 0x296CD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x14B0, symBinAddr: 0x1E12A0, symSize: 0x4 } + - { offset: 0x296CEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x14B4, symBinAddr: 0x1E12A4, symSize: 0x40 } + - { offset: 0x296CFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x14F4, symBinAddr: 0x1E12E4, symSize: 0x4 } + - { offset: 0x296D12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x14F8, symBinAddr: 0x1E12E8, symSize: 0x40 } + - { offset: 0x296D26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1538, symBinAddr: 0x1E1328, symSize: 0x4 } + - { offset: 0x296D3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x153C, symBinAddr: 0x1E132C, symSize: 0x40 } + - { offset: 0x296D97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSYAASY8rawValuexSg03RawJ0Qz_tcfCTW', symObjAddr: 0xC8, symBinAddr: 0x1E042C, symSize: 0x64 } + - { offset: 0x296DD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSYAASY8rawValue03RawJ0QzvgTW', symObjAddr: 0x12C, symBinAddr: 0x1E0490, symSize: 0x20 } + - { offset: 0x296DEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSYAASY8rawValue03RawJ0QzvgTW', symObjAddr: 0x12C, symBinAddr: 0x1E0490, symSize: 0x20 } + - { offset: 0x296E03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSYAASY8rawValue03RawJ0QzvgTW', symObjAddr: 0x12C, symBinAddr: 0x1E0490, symSize: 0x20 } + - { offset: 0x296E1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x1E04B0, symSize: 0x1C } + - { offset: 0x296E35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x1E04B0, symSize: 0x1C } + - { offset: 0x296E49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x1E04B0, symSize: 0x1C } + - { offset: 0x296E5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x14C, symBinAddr: 0x1E04B0, symSize: 0x1C } + - { offset: 0x296E83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x168, symBinAddr: 0x1E04CC, symSize: 0x68 } + - { offset: 0x296EEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x27C, symBinAddr: 0x1E05A4, symSize: 0x118 } + - { offset: 0x296F20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x394, symBinAddr: 0x1E06BC, symSize: 0x170 } + - { offset: 0x296F51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x52C, symBinAddr: 0x1E0854, symSize: 0x20 } + - { offset: 0x296F88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs0E3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x60C, symBinAddr: 0x1E0874, symSize: 0x10C } + - { offset: 0x296FB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs0E3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x718, symBinAddr: 0x1E0980, symSize: 0x24 } + - { offset: 0x296FFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryCfD', symObjAddr: 0x7A4, symBinAddr: 0x1E09F4, symSize: 0x44 } + - { offset: 0x297033, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC6encode2toys7Encoder_p_tKF', symObjAddr: 0x808, symBinAddr: 0x1E0A58, symSize: 0x2D0 } + - { offset: 0x297064, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC4fromACs7Decoder_p_tKcfc', symObjAddr: 0xAD8, symBinAddr: 0x1E0D28, symSize: 0x30C } + - { offset: 0x297095, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xE70, symBinAddr: 0x1E105C, symSize: 0x20 } + - { offset: 0x2970A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x157C, symBinAddr: 0x1E136C, symSize: 0x29C } + - { offset: 0x29758D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO8rawValueACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x1E1608, symSize: 0x138 } + - { offset: 0x2975EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x43C, symBinAddr: 0x1E1A00, symSize: 0x98 } + - { offset: 0x2976B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSHAASH9hashValueSivgTW', symObjAddr: 0x4D4, symBinAddr: 0x1E1A98, symSize: 0x64 } + - { offset: 0x29774B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x538, symBinAddr: 0x1E1AFC, symSize: 0x50 } + - { offset: 0x29779D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x588, symBinAddr: 0x1E1B4C, symSize: 0x60 } + - { offset: 0x2978C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSHAASQWb', symObjAddr: 0x778, symBinAddr: 0x1E1BE0, symSize: 0x4 } + - { offset: 0x2978DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOACSQAAWl', symObjAddr: 0x77C, symBinAddr: 0x1E1BE4, symSize: 0x40 } + - { offset: 0x2978EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO10Foundation14LocalizedErrorAAs0G0PWb', symObjAddr: 0x7BC, symBinAddr: 0x1E1C24, symSize: 0x4 } + - { offset: 0x297902, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOACs5ErrorAAWl', symObjAddr: 0x7C0, symBinAddr: 0x1E1C28, symSize: 0x40 } + - { offset: 0x297916, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ValidationErrorOSHAASQWb', symObjAddr: 0x800, symBinAddr: 0x1E1C68, symSize: 0x4 } + - { offset: 0x29792A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ValidationErrorOACSQAAWl', symObjAddr: 0x804, symBinAddr: 0x1E1C6C, symSize: 0x40 } + - { offset: 0x29793E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOwet', symObjAddr: 0x854, symBinAddr: 0x1E1CAC, symSize: 0x90 } + - { offset: 0x297952, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOwst', symObjAddr: 0x8E4, symBinAddr: 0x1E1D3C, symSize: 0xB0 } + - { offset: 0x297966, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOMa', symObjAddr: 0x9A8, symBinAddr: 0x1E1DEC, symSize: 0x10 } + - { offset: 0x29797A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ValidationErrorOMa', symObjAddr: 0xAFC, symBinAddr: 0x1E1DFC, symSize: 0x10 } + - { offset: 0x297995, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO8rawValueACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x1E1608, symSize: 0x138 } + - { offset: 0x2979CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO16errorDescriptionSSvg', symObjAddr: 0x17C, symBinAddr: 0x1E1740, symSize: 0x58 } + - { offset: 0x2979F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO8rawValueSSvg', symObjAddr: 0x1D4, symBinAddr: 0x1E1798, symSize: 0x268 } + - { offset: 0x297B7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSYAASY8rawValuexSg03RawF0Qz_tcfCTW', symObjAddr: 0x5E8, symBinAddr: 0x1E1BAC, symSize: 0xC } + - { offset: 0x297B93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSYAASY8rawValue03RawF0QzvgTW', symObjAddr: 0x5F4, symBinAddr: 0x1E1BB8, symSize: 0x24 } + - { offset: 0x297BB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO10Foundation14LocalizedErrorAadEP16errorDescriptionSSSgvgTW', symObjAddr: 0x618, symBinAddr: 0x1E1BDC, symSize: 0x4 } + - { offset: 0x298014, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsCMa', symObjAddr: 0x10, symBinAddr: 0x1E1E0C, symSize: 0x20 } + - { offset: 0x2980B7, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVACSLAAWl', symObjAddr: 0xBB0, symBinAddr: 0x1E28E4, symSize: 0x44 } + - { offset: 0x2982A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsC20isCurrentTimeBetween5start3endSbSS_SStFZTf4nnd_n', symObjAddr: 0x30, symBinAddr: 0x1E1E2C, symSize: 0x5BC } + - { offset: 0x298565, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsC12coordinateAt8distance4from7towardsSo22CLLocationCoordinate2DVSgSdSg_A2JtFZTf4nnnd_n', symObjAddr: 0x5EC, symBinAddr: 0x1E23E8, symSize: 0x1F4 } + - { offset: 0x29881D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsC13getDeviceUUIDSSyFZTf4d_n', symObjAddr: 0x7E0, symBinAddr: 0x1E25DC, symSize: 0x170 } + - { offset: 0x2988F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsC16findNearestPoint4test6targetSo22CLLocationCoordinate2DVAH_SayAHGtFZTf4nnd_n', symObjAddr: 0x994, symBinAddr: 0x1E274C, symSize: 0x154 } + - { offset: 0x298EC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCfE', symObjAddr: 0x0, symBinAddr: 0x1E2928, symSize: 0x38 } + - { offset: 0x298EE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCfE', symObjAddr: 0x0, symBinAddr: 0x1E2928, symSize: 0x38 } + - { offset: 0x298F49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCMU', symObjAddr: 0xBC, symBinAddr: 0x1E29E4, symSize: 0x8 } + - { offset: 0x298F5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCMa', symObjAddr: 0xC4, symBinAddr: 0x1E29EC, symSize: 0x38 } + - { offset: 0x298F71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCMr', symObjAddr: 0xFC, symBinAddr: 0x1E2A24, symSize: 0x78 } + - { offset: 0x298FBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCfD', symObjAddr: 0x38, symBinAddr: 0x1E2960, symSize: 0x84 } + - { offset: 0x299385, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17findStyleElements6withinSayAA3XMLO7ElementCGAI_tF', symObjAddr: 0x0, symBinAddr: 0x1E2A9C, symSize: 0x238 } + - { offset: 0x2995F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17findStyleElements6withinSayAA3XMLO7ElementCGAI_tF', symObjAddr: 0x0, symBinAddr: 0x1E2A9C, symSize: 0x238 } + - { offset: 0x2999A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV22parseStyleSheetElementyAA3DOMO0fG0VSSSgKFAF22PresentationAttributesVAA15AttributeParser_pKcACcfu_AkaL_pKcfu0_', symObjAddr: 0x238, symBinAddr: 0x1E2CD4, symSize: 0x14 } + - { offset: 0x299B88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV15scanAtttributes33_29B34C3A129C6CB17D28971D563B2EC2LLSDyS2SGyKF', symObjAddr: 0x24C, symBinAddr: 0x1E2CE8, symSize: 0x3B0 } + - { offset: 0x299E56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV22scanNextAttributeValueSSyKF', symObjAddr: 0x5FC, symBinAddr: 0x1E3098, symSize: 0x198 } + - { offset: 0x299F0F, size: 0x8, addend: 0x0, symName: '_$sSD8PenNavUISSRszSSRs_rlE5parseyqd__SS_qd__SSKXEtKlF', symObjAddr: 0x794, symBinAddr: 0x1E3230, symSize: 0xF4 } + - { offset: 0x299FC0, size: 0x8, addend: 0x0, symName: '_$sSDyxq_G8PenNavUI15AttributeParserABSSRszSSRs_rlAbCP6parserAB0d5ValueE0_pvgTW', symObjAddr: 0x888, symBinAddr: 0x1E3324, symSize: 0x18 } + - { offset: 0x299FE0, size: 0x8, addend: 0x0, symName: '_$sSDyxq_G8PenNavUI15AttributeParserABSSRszSSRs_rlAbCP6parserAB0d5ValueE0_pvgTW', symObjAddr: 0x888, symBinAddr: 0x1E3324, symSize: 0x18 } + - { offset: 0x299FF2, size: 0x8, addend: 0x0, symName: '_$sSDyxq_G8PenNavUI15AttributeParserABSSRszSSRs_rlAbCP5parseyqd__SS_qd__SSKXEtKlFTW', symObjAddr: 0x8A8, symBinAddr: 0x1E333C, symSize: 0x18 } + - { offset: 0x29A182, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseEntriesySDyAA3DOMO10StyleSheetV8SelectorOSDyS2SGGSSSgKFZTf4nd_n', symObjAddr: 0x900, symBinAddr: 0x1E3354, symSize: 0x6A4 } + - { offset: 0x29A53E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGtSgWOe', symObjAddr: 0xFE4, symBinAddr: 0x1E39F8, symSize: 0x2C } + - { offset: 0x29AAA1, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE12cancelButtonSo8UIButtonCSgvg', symObjAddr: 0x0, symBinAddr: 0x1E3A24, symSize: 0x104 } + - { offset: 0x29AADB, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE15cancelFontStyleSSvs', symObjAddr: 0x12C, symBinAddr: 0x1E3B34, symSize: 0x1D4 } + - { offset: 0x29ABD5, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE9fontStyleSSvs', symObjAddr: 0x360, symBinAddr: 0x1E3D68, symSize: 0x1A4 } + - { offset: 0x29ACD7, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE19textColorIdentifierSivgTo', symObjAddr: 0x504, symBinAddr: 0x1E3F0C, symSize: 0x8 } + - { offset: 0x29ACF3, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE19textColorIdentifierSivsTo', symObjAddr: 0x50C, symBinAddr: 0x1E3F14, symSize: 0x30 } + - { offset: 0x29AD2B, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE19textColorIdentifierSivs', symObjAddr: 0x53C, symBinAddr: 0x1E3F44, symSize: 0x140 } + - { offset: 0x29ADAF, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE11cancelColorSivgTo', symObjAddr: 0x67C, symBinAddr: 0x1E4084, symSize: 0x8 } + - { offset: 0x29ADCB, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x6B8, symBinAddr: 0x1E40BC, symSize: 0x8 } + - { offset: 0x29ADE7, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x6C0, symBinAddr: 0x1E40C4, symSize: 0x30 } + - { offset: 0x29AE03, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE25backgroundColorIdentifierSivs', symObjAddr: 0x6F0, symBinAddr: 0x1E40F4, symSize: 0x224 } + - { offset: 0x29AE87, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE16placeholderColorSivgTo', symObjAddr: 0x914, symBinAddr: 0x1E4318, symSize: 0x8 } + - { offset: 0x29AEA3, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE16placeholderColorSivsTo', symObjAddr: 0x91C, symBinAddr: 0x1E4320, symSize: 0x30 } + - { offset: 0x29AF01, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE16placeholderColorSivs', symObjAddr: 0x94C, symBinAddr: 0x1E4350, symSize: 0x39C } + - { offset: 0x29B0AB, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE19tintColorIdentifierSivgTo', symObjAddr: 0xCE8, symBinAddr: 0x1E46EC, symSize: 0x8 } + - { offset: 0x29B0F1, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE26placeholderLocalizationKeySSvsTo', symObjAddr: 0xE10, symBinAddr: 0x1E4814, symSize: 0x94 } + - { offset: 0x29B150, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE21cancelLocalizationKeySSvsTo', symObjAddr: 0xEA4, symBinAddr: 0x1E48A8, symSize: 0xC0 } + - { offset: 0x29B70E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC14sharedInstance33_A49337BBB7825CE36732F8C974911E0ALLACSgvpZ', symObjAddr: 0x2C28, symBinAddr: 0x36D180, symSize: 0x0 } + - { offset: 0x29BEF6, size: 0x8, addend: 0x0, symName: '_$s7Penguin5VenueC8PenNavUIE8assetURL10Foundation0G0VSgvg', symObjAddr: 0x1D14, symBinAddr: 0x1E6694, symSize: 0x164 } + - { offset: 0x29BF25, size: 0x8, addend: 0x0, symName: '_$s7Penguin5VenueC8PenNavUIE21getDownloadedModelUriSSSgyF', symObjAddr: 0x1E78, symBinAddr: 0x1E67F8, symSize: 0x194 } + - { offset: 0x29BF9F, size: 0x8, addend: 0x0, symName: '_$s7Penguin5VenueC8PenNavUI16FileDownloadDataA2dEP8assetURL10Foundation0J0VSgvgTW', symObjAddr: 0x200C, symBinAddr: 0x1E698C, symSize: 0x20 } + - { offset: 0x29BFD9, size: 0x8, addend: 0x0, symName: '_$s7Penguin5VenueC8PenNavUI16FileDownloadDataA2dEP10downloadIdSiSgvgTW', symObjAddr: 0x202C, symBinAddr: 0x1E69AC, symSize: 0x24 } + - { offset: 0x29C014, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerCMa', symObjAddr: 0x2050, symBinAddr: 0x1E69D0, symSize: 0x20 } + - { offset: 0x29C14C, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI13VenueCardDataV_Tg503$s8ef43UI13VenuesManagerC16venuesWithFloorsSayAA13hiJ18VGvgSbAF_AFtXEfU0_Tf1nnncn_n', symObjAddr: 0x20B4, symBinAddr: 0x1E69F0, symSize: 0x3EC } + - { offset: 0x29C660, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI13VenueCardDataV_Tg503$s8fg43UI13VenuesManagerC16venuesWithFloorsSayAA13ijK18VGvgSbAF_AFtXEfU0_Tf1nncn_n', symObjAddr: 0x24A0, symBinAddr: 0x1E6DDC, symSize: 0x274 } + - { offset: 0x29C9FB, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI13VenueCardDataV_Tg503$s8gh43UI13VenuesManagerC16venuesWithFloorsSayAA13jkL18VGvgSbAF_AFtXEfU0_Tf1nnnnc_n', symObjAddr: 0x2714, symBinAddr: 0x1E7050, symSize: 0x238 } + - { offset: 0x29CAF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC07loadAllD4Info10completionyyyc_tFySayAA9VenueDataCG_SSSgtcfU_yyScMYccfU_TA', symObjAddr: 0x2A68, symBinAddr: 0x1E72E8, symSize: 0x10 } + - { offset: 0x29CB0C, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2A78, symBinAddr: 0x1E72F8, symSize: 0x10 } + - { offset: 0x29CB20, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2A88, symBinAddr: 0x1E7308, symSize: 0x8 } + - { offset: 0x29CB34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC21loadCampusInformationyyFyAA9VenueDataCSgcfU_yyScMYccfU_TA', symObjAddr: 0x2B90, symBinAddr: 0x1E733C, symSize: 0x8 } + - { offset: 0x29CB9C, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFSay8PenNavUI13VenueCardDataVG_Tg503$s8de43UI13VenuesManagerC16venuesWithFloorsSayAA13ghI18VGvgSbAF_AFtXEfU0_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x1E4980, symSize: 0x160 } + - { offset: 0x29D16A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC03getD010completionyyycSg_tFySayAA13VenueCardDataVGcfU_', symObjAddr: 0x160, symBinAddr: 0x1E4AE0, symSize: 0x21C } + - { offset: 0x29D1E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC07loadAllD4Info10completionyyyc_tFySayAA9VenueDataCG_SSSgtcfU_', symObjAddr: 0x37C, symBinAddr: 0x1E4CFC, symSize: 0x21C } + - { offset: 0x29D260, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC07loadAllD4Info10completionyyyc_tFySayAA9VenueDataCG_SSSgtcfU_yyScMYccfU_', symObjAddr: 0x598, symBinAddr: 0x1E4F18, symSize: 0xF0 } + - { offset: 0x29D2B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC21loadCampusInformationyyFyAA9VenueDataCSgcfU_', symObjAddr: 0x688, symBinAddr: 0x1E5008, symSize: 0x204 } + - { offset: 0x29D327, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC21loadCampusInformationyyFyAA9VenueDataCSgcfU_yyScMYccfU_', symObjAddr: 0x88C, symBinAddr: 0x1E520C, symSize: 0x78 } + - { offset: 0x29D35F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC16venuesWithFloorsSayAA13VenueCardDataVGvg', symObjAddr: 0x904, symBinAddr: 0x1E5284, symSize: 0x650 } + - { offset: 0x29DDC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC12getVenueByIdy7Penguin0G0CSgSiSgF', symObjAddr: 0xF54, symBinAddr: 0x1E58D4, symSize: 0x10C } + - { offset: 0x29DF54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC03getD5ByIdsySay7Penguin5VenueCGSgSaySiGF', symObjAddr: 0x1060, symBinAddr: 0x1E59E0, symSize: 0x1B4 } + - { offset: 0x29E26C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC14getCampusVenue7Penguin0H0CSgyF', symObjAddr: 0x1214, symBinAddr: 0x1E5B94, symSize: 0x120 } + - { offset: 0x29E3C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC16getVenueCardById05venueJ0AA0gH4DataVSgSi_tF', symObjAddr: 0x1334, symBinAddr: 0x1E5CB4, symSize: 0xB8 } + - { offset: 0x29E4D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC17getCacheVenueData7venueIdAA0hI0CSgSiSg_tF', symObjAddr: 0x13EC, symBinAddr: 0x1E5D6C, symSize: 0x170 } + - { offset: 0x29E6E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC16getCoverImageUrl7venueIdSSSgSiSg_tF', symObjAddr: 0x155C, symBinAddr: 0x1E5EDC, symSize: 0x1DC } + - { offset: 0x29E9A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC03getD18ListForDownloadingSay7Penguin5VenueCGyF', symObjAddr: 0x1738, symBinAddr: 0x1E60B8, symSize: 0x4C0 } + - { offset: 0x29EC69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerCfD', symObjAddr: 0x1BF8, symBinAddr: 0x1E6578, symSize: 0x4C } + - { offset: 0x29ED55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerCACycfc', symObjAddr: 0x1C44, symBinAddr: 0x1E65C4, symSize: 0xD0 } + - { offset: 0x29F21B, size: 0x8, addend: 0x0, symName: '_$sSo16UICollectionViewC8PenNavUIE028dequeueReusableSupplementaryB06ofKind3forxSS_10Foundation9IndexPathVtSo0agB0CRbzlFAC18VenuesSectionLabelC_Tg5', symObjAddr: 0x0, symBinAddr: 0x1E7380, symSize: 0x118 } + - { offset: 0x29F2C3, size: 0x8, addend: 0x0, symName: '_$sSo16UICollectionViewC8PenNavUIE028dequeueReusableSupplementaryB06ofKind3forxSS_10Foundation9IndexPathVtSo0agB0CRbzlFAC18VenuesSectionLabelC_Tg5', symObjAddr: 0x0, symBinAddr: 0x1E7380, symSize: 0x118 } + - { offset: 0x29F58A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCfE', symObjAddr: 0x6CC, symBinAddr: 0x1E7A4C, symSize: 0x50 } + - { offset: 0x29F5B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCfETo', symObjAddr: 0x74C, symBinAddr: 0x1E7ACC, symSize: 0x5C } + - { offset: 0x29F5E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCMa', symObjAddr: 0x7A8, symBinAddr: 0x1E7B28, symSize: 0x20 } + - { offset: 0x29F63A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_22numberOfItemsInSectionSiSo012UICollectionF0C_SitFTo', symObjAddr: 0x7C8, symBinAddr: 0x1E7B48, symSize: 0x14 } + - { offset: 0x29F65A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_22numberOfItemsInSectionSiSo012UICollectionF0C_SitFTo', symObjAddr: 0x7C8, symBinAddr: 0x1E7B48, symSize: 0x14 } + - { offset: 0x29F67F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_22numberOfItemsInSectionSiSo012UICollectionF0C_SitFTo', symObjAddr: 0x7C8, symBinAddr: 0x1E7B48, symSize: 0x14 } + - { offset: 0x29F713, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_6layout13sizeForItemAtSo6CGSizeVSo012UICollectionF0C_So0oF6LayoutC10Foundation9IndexPathVtFTo', symObjAddr: 0x7DC, symBinAddr: 0x1E7B5C, symSize: 0xB8 } + - { offset: 0x29F7B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_13cellForItemAtSo012UICollectionF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x894, symBinAddr: 0x1E7C14, symSize: 0x1A8 } + - { offset: 0x29F8DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_13cellForItemAtSo012UICollectionF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xA3C, symBinAddr: 0x1E7DBC, symSize: 0xB8 } + - { offset: 0x29F924, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_6layout31referenceSizeForHeaderInSectionSo6CGSizeVSo012UICollectionF0C_So0qF6LayoutCSitFTo', symObjAddr: 0xAF4, symBinAddr: 0x1E7E74, symSize: 0x50 } + - { offset: 0x29F9BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_33viewForSupplementaryElementOfKind2atSo020UICollectionReusableF0CSo0pF0C_SS10Foundation9IndexPathVtFTo', symObjAddr: 0xB44, symBinAddr: 0x1E7EC4, symSize: 0xCC } + - { offset: 0x29FA13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_15didSelectItemAtySo012UICollectionF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xC10, symBinAddr: 0x1E7F90, symSize: 0xAC } + - { offset: 0x29FA45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0xCBC, symBinAddr: 0x1E803C, symSize: 0x50 } + - { offset: 0x29FABE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0xD0C, symBinAddr: 0x1E808C, symSize: 0x50 } + - { offset: 0x29FADA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0xE34, symBinAddr: 0x1E80DC, symSize: 0x34 } + - { offset: 0x29FB2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0xE68, symBinAddr: 0x1E8110, symSize: 0x24 } + - { offset: 0x29FC79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC10setupPanelyyF', symObjAddr: 0xE8C, symBinAddr: 0x1E8134, symSize: 0x2AC } + - { offset: 0x29FF64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC10setupPanelyyFTo', symObjAddr: 0x1138, symBinAddr: 0x1E83E0, symSize: 0x28 } + - { offset: 0x29FF8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1160, symBinAddr: 0x1E8408, symSize: 0x4 } + - { offset: 0x29FFAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1160, symBinAddr: 0x1E8408, symSize: 0x4 } + - { offset: 0x29FFC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0x1164, symBinAddr: 0x1E840C, symSize: 0x1C0 } + - { offset: 0x2A01A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_15didSelectItemAtySo012UICollectionF0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x1368, symBinAddr: 0x1E85CC, symSize: 0xE8 } + - { offset: 0x2A0396, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0AA019IntrinsicCollectionF0CSgvgTo', symObjAddr: 0x118, symBinAddr: 0x1E7498, symSize: 0x10 } + - { offset: 0x2A03AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0AA019IntrinsicCollectionF0CSgvgTo', symObjAddr: 0x118, symBinAddr: 0x1E7498, symSize: 0x10 } + - { offset: 0x2A03F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0AA019IntrinsicCollectionF0CSgvsTo', symObjAddr: 0x128, symBinAddr: 0x1E74A8, symSize: 0x34 } + - { offset: 0x2A0443, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC9separatorAA09SeparatorF0CSgvgTo', symObjAddr: 0x15C, symBinAddr: 0x1E74DC, symSize: 0x10 } + - { offset: 0x2A045B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC9separatorAA09SeparatorF0CSgvgTo', symObjAddr: 0x15C, symBinAddr: 0x1E74DC, symSize: 0x10 } + - { offset: 0x2A049B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC9separatorAA09SeparatorF0CSgvsTo', symObjAddr: 0x16C, symBinAddr: 0x1E74EC, symSize: 0x34 } + - { offset: 0x2A0506, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC11viewDidLoadyyF', symObjAddr: 0x1A0, symBinAddr: 0x1E7520, symSize: 0x1D8 } + - { offset: 0x2A0639, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x378, symBinAddr: 0x1E76F8, symSize: 0x28 } + - { offset: 0x2A0661, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC10closePanelyyFTo', symObjAddr: 0x3A0, symBinAddr: 0x1E7720, symSize: 0x38 } + - { offset: 0x2A06DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x3D8, symBinAddr: 0x1E7758, symSize: 0x14C } + - { offset: 0x2A0775, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x524, symBinAddr: 0x1E78A4, symSize: 0x60 } + - { offset: 0x2A07BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x584, symBinAddr: 0x1E7904, symSize: 0x120 } + - { offset: 0x2A0849, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x6A4, symBinAddr: 0x1E7A24, symSize: 0x28 } + - { offset: 0x2A085D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCfD', symObjAddr: 0x71C, symBinAddr: 0x1E7A9C, symSize: 0x30 } + - { offset: 0x2A0E42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorCMr', symObjAddr: 0x4, symBinAddr: 0x1E86B4, symSize: 0xA4 } + - { offset: 0x2A1082, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO17gradientEndpoints33_1CA5772D0B2BA5DF0D96EB96F03CEAC9LLAC5PointV5start_AI3endtSgvg', symObjAddr: 0xA8, symBinAddr: 0x1E8758, symSize: 0xF8 } + - { offset: 0x2A12F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO6bounds33_1CA5772D0B2BA5DF0D96EB96F03CEAC9LLAC4RectVSgvg', symObjAddr: 0x1A0, symBinAddr: 0x1E8850, symSize: 0xE4 } + - { offset: 0x2A1751, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorCMa', symObjAddr: 0x2F0, symBinAddr: 0x1E8970, symSize: 0xC } + - { offset: 0x2A1807, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV12convertColor33_1CA5772D0B2BA5DF0D96EB96F03CEAC9LL5usingAeA0H9Converter_p_tFAE4StopVAKXEfU_', symObjAddr: 0x2FC, symBinAddr: 0x1E897C, symSize: 0xF8 } + - { offset: 0x2A1E68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV12convertColor33_1CA5772D0B2BA5DF0D96EB96F03CEAC9LL5usingAeA0H9Converter_p_tFAE4StopVAKXEfU_TA', symObjAddr: 0x35A4, symBinAddr: 0x1EBAF0, symSize: 0x1C } + - { offset: 0x2A1E7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO_AC16StrokeAttributesVAC04FillH0VtWOc', symObjAddr: 0x36B8, symBinAddr: 0x1EBB0C, symSize: 0x48 } + - { offset: 0x2A217D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorCfD', symObjAddr: 0x2B4, symBinAddr: 0x1E8934, symSize: 0x3C } + - { offset: 0x2A2924, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA14CGTextProviderV_Tg5Tf4nnnen_n', symObjAddr: 0x3F4, symBinAddr: 0x1E8A74, symSize: 0x240C } + - { offset: 0x2A5704, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0D0C_AA05ColorL0_ptFAA14CGTextProviderV_Tg5Tf4nen_n', symObjAddr: 0x28E0, symBinAddr: 0x1EAE80, symSize: 0xA6C } + - { offset: 0x2A6869, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0D0C8ContentsO_AA05ColorL0_ptFAA14CGTextProviderV_Tg5Tf4nen_n', symObjAddr: 0x334C, symBinAddr: 0x1EB8EC, symSize: 0x204 } + - { offset: 0x2A6D6A, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE19createCircularImage4size15backgroundColor7paddingABSgSo6CGSizeV_So7UIColorCSdtF', symObjAddr: 0x0, symBinAddr: 0x1EBB68, symSize: 0x1F0 } + - { offset: 0x2A6DA5, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE19createCircularImage4size15backgroundColor7paddingABSgSo6CGSizeV_So7UIColorCSdtF', symObjAddr: 0x0, symBinAddr: 0x1EBB68, symSize: 0x1F0 } + - { offset: 0x2A6EF2, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE13circularImage10outputSize11borderWidth0I5ColorABSgSo6CGSizeV_12CoreGraphics7CGFloatVSo7UIColorCtF', symObjAddr: 0x1F0, symBinAddr: 0x1EBD58, symSize: 0x168 } + - { offset: 0x2A6FEE, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized2toABSgSo6CGSizeV_tF', symObjAddr: 0x358, symBinAddr: 0x1EBEC0, symSize: 0x194 } + - { offset: 0x2A70A2, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized2toABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0x880, symBinAddr: 0x1EC3E8, symSize: 0x7C } + - { offset: 0x2A70EA, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE40adjustedForShareSheetPreviewIconProviderAByF', symObjAddr: 0x510, symBinAddr: 0x1EC078, symSize: 0x2BC } + - { offset: 0x2A7255, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE40adjustedForShareSheetPreviewIconProviderAByFySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0x7CC, symBinAddr: 0x1EC334, symSize: 0xB4 } + - { offset: 0x2A72C0, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized2toABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0x920, symBinAddr: 0x1EC488, symSize: 0xC } + - { offset: 0x2A72D4, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x934, symBinAddr: 0x1EC494, symSize: 0x10 } + - { offset: 0x2A72E8, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x944, symBinAddr: 0x1EC4A4, symSize: 0x8 } + - { offset: 0x2A7354, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7appIconABSgvgZTf4d_n', symObjAddr: 0x94C, symBinAddr: 0x1EC4AC, symSize: 0x304 } + - { offset: 0x2A74FD, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE40adjustedForShareSheetPreviewIconProviderAByFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0xD3C, symBinAddr: 0x1EC7DC, symSize: 0x8 } + - { offset: 0x2A7A83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4TextCfE', symObjAddr: 0x0, symBinAddr: 0x1EC804, symSize: 0x14 } + - { offset: 0x2A7AE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4TextCMU', symObjAddr: 0x80, symBinAddr: 0x1EC884, symSize: 0x8 } + - { offset: 0x2A7AFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4TextCMr', symObjAddr: 0x9C, symBinAddr: 0x1EC8A0, symSize: 0x4C } + - { offset: 0x2A7B11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCfE', symObjAddr: 0xE8, symBinAddr: 0x1EC8EC, symSize: 0x2C } + - { offset: 0x2A7B9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCMU', symObjAddr: 0x1A8, symBinAddr: 0x1EC9AC, symSize: 0x8 } + - { offset: 0x2A7BB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCMr', symObjAddr: 0x1F4, symBinAddr: 0x1EC9C8, symSize: 0x78 } + - { offset: 0x2A7BFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4TextCfD', symObjAddr: 0x14, symBinAddr: 0x1EC818, symSize: 0x6C } + - { offset: 0x2A7C5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCfD', symObjAddr: 0x114, symBinAddr: 0x1EC918, symSize: 0x94 } + - { offset: 0x2A7CC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0x2C0, symBinAddr: 0x1ECA40, symSize: 0x14 } + - { offset: 0x2A806D, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE9delimeter33_EDFC4C304335B870668D77C553946433LL_WZ', symObjAddr: 0x0, symBinAddr: 0x1ECA54, symSize: 0x50 } + - { offset: 0x2A8091, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE9delimeter33_EDFC4C304335B870668D77C553946433LLACvpZ', symObjAddr: 0x1F48, symBinAddr: 0x36D680, symSize: 0x0 } + - { offset: 0x2A80AB, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE8commands33_EDFC4C304335B870668D77C553946433LLACvpZ', symObjAddr: 0x1F60, symBinAddr: 0x36D698, symSize: 0x0 } + - { offset: 0x2A812E, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE9delimeter33_EDFC4C304335B870668D77C553946433LL_WZ', symObjAddr: 0x0, symBinAddr: 0x1ECA54, symSize: 0x50 } + - { offset: 0x2A8148, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE8commands33_EDFC4C304335B870668D77C553946433LL_WZ', symObjAddr: 0x50, symBinAddr: 0x1ECAA4, symSize: 0x60 } + - { offset: 0x2A852E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV16parseMoveSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0xB0, symBinAddr: 0x1ECB04, symSize: 0x250 } + - { offset: 0x2A8690, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV16parseLineSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0x300, symBinAddr: 0x1ECD54, symSize: 0x250 } + - { offset: 0x2A87F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17parseCubicSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0x550, symBinAddr: 0x1ECFA4, symSize: 0x488 } + - { offset: 0x2A8B50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV23parseCubicSmoothSegment3for4withAA3DOMO4PathC0H0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0x9D8, symBinAddr: 0x1ED42C, symSize: 0x370 } + - { offset: 0x2A8DB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV21parseQuadraticSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0xD48, symBinAddr: 0x1ED79C, symSize: 0x370 } + - { offset: 0x2A9014, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV27parseQuadraticSmoothSegment3for4withAA3DOMO4PathC0H0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0x10B8, symBinAddr: 0x1EDB0C, symSize: 0x250 } + - { offset: 0x2A9176, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV15parseArcSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0x1308, symBinAddr: 0x1EDD5C, symSize: 0x4F8 } + - { offset: 0x2A96B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17parsePathSegmentsySayAA3DOMO0F0C7SegmentOGSSKFTf4nd_n', symObjAddr: 0x1800, symBinAddr: 0x1EE254, symSize: 0x6AC } + - { offset: 0x2A9AD2, size: 0x8, addend: 0x0, symName: ___swift_project_value_buffer, symObjAddr: 0x1EAC, symBinAddr: 0x1EE900, symSize: 0x18 } + - { offset: 0x2A9AE6, size: 0x8, addend: 0x0, symName: ___swift_allocate_value_buffer, symObjAddr: 0x1F04, symBinAddr: 0x1EE918, symSize: 0x40 } + - { offset: 0x2AA00C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC08progressF0So010UIProgressF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1EE958, symSize: 0x10 } + - { offset: 0x2AA31E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCfE', symObjAddr: 0xDD8, symBinAddr: 0x1EF730, symSize: 0x4C } + - { offset: 0x2AA34B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCfETo', symObjAddr: 0xE54, symBinAddr: 0x1EF7AC, symSize: 0x58 } + - { offset: 0x2AA37A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCMa', symObjAddr: 0xEAC, symBinAddr: 0x1EF804, symSize: 0x20 } + - { offset: 0x2AA3B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0xECC, symBinAddr: 0x1EF824, symSize: 0x78 } + - { offset: 0x2AA41F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0xF44, symBinAddr: 0x1EF89C, symSize: 0x24 } + - { offset: 0x2AA467, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC10setupPanelyyF', symObjAddr: 0xF68, symBinAddr: 0x1EF8C0, symSize: 0xCC } + - { offset: 0x2AA505, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC10setupPanelyyFTo', symObjAddr: 0x1034, symBinAddr: 0x1EF98C, symSize: 0x28 } + - { offset: 0x2AA557, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x10D8, symBinAddr: 0x1EF9B4, symSize: 0xC8 } + - { offset: 0x2AA58C, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x11CC, symBinAddr: 0x1EFAA0, symSize: 0x10 } + - { offset: 0x2AA5A0, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x11DC, symBinAddr: 0x1EFAB0, symSize: 0x8 } + - { offset: 0x2AA5B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC8setImageyyFySo7UIImageCSgcfU_TA', symObjAddr: 0x1268, symBinAddr: 0x1EFAB8, symSize: 0x8 } + - { offset: 0x2AA76D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC08progressF0So010UIProgressF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1EE958, symSize: 0x10 } + - { offset: 0x2AA785, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC08progressF0So010UIProgressF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1EE958, symSize: 0x10 } + - { offset: 0x2AA7CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC08progressF0So010UIProgressF0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x1EE968, symSize: 0x34 } + - { offset: 0x2AA81A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1EE99C, symSize: 0x10 } + - { offset: 0x2AA832, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x1EE99C, symSize: 0x10 } + - { offset: 0x2AA872, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x1EE9AC, symSize: 0x34 } + - { offset: 0x2AA8C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC05imageF0So07UIImageF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1EE9E0, symSize: 0x10 } + - { offset: 0x2AA8D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC05imageF0So07UIImageF0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x1EE9E0, symSize: 0x10 } + - { offset: 0x2AA919, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC05imageF0So07UIImageF0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x1EE9F0, symSize: 0x34 } + - { offset: 0x2AAA97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC11viewDidLoadyyF', symObjAddr: 0xCC, symBinAddr: 0x1EEA24, symSize: 0x314 } + - { offset: 0x2AAC20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x3E0, symBinAddr: 0x1EED38, symSize: 0x28 } + - { offset: 0x2AAD4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC8setImageyyF', symObjAddr: 0x408, symBinAddr: 0x1EED60, symSize: 0x45C } + - { offset: 0x2AAFF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC8setImageyyFySo7UIImageCSgcfU_', symObjAddr: 0x864, symBinAddr: 0x1EF1BC, symSize: 0x148 } + - { offset: 0x2AB0D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC14updateProgressyyF', symObjAddr: 0x9AC, symBinAddr: 0x1EF304, symSize: 0x124 } + - { offset: 0x2AB1DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC14updateProgressyyFTo', symObjAddr: 0xAD0, symBinAddr: 0x1EF428, symSize: 0x28 } + - { offset: 0x2AB217, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC7dismissyyF', symObjAddr: 0xAF8, symBinAddr: 0x1EF450, symSize: 0x80 } + - { offset: 0x2AB2CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xB78, symBinAddr: 0x1EF4D0, symSize: 0xF8 } + - { offset: 0x2AB30C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xC70, symBinAddr: 0x1EF5C8, symSize: 0x60 } + - { offset: 0x2AB320, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xCD0, symBinAddr: 0x1EF628, symSize: 0xE0 } + - { offset: 0x2AB353, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xDB0, symBinAddr: 0x1EF708, symSize: 0x28 } + - { offset: 0x2AB367, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCfD', symObjAddr: 0xE24, symBinAddr: 0x1EF77C, symSize: 0x30 } + - { offset: 0x2AB7C6, size: 0x8, addend: 0x0, symName: '_$sSlsE5first7ElementQzSgvgSS17UnicodeScalarViewV_Tg5', symObjAddr: 0x0, symBinAddr: 0x1EFAC0, symSize: 0xE0 } + - { offset: 0x2AC844, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterCMa', symObjAddr: 0x740, symBinAddr: 0x1F0200, symSize: 0x20 } + - { offset: 0x2AC858, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCfETo', symObjAddr: 0x840, symBinAddr: 0x1F0300, symSize: 0xC8 } + - { offset: 0x2AD26E, size: 0x8, addend: 0x0, symName: '_$sSo7UITouchCSo8NSObjectCSH10ObjectiveCWl', symObjAddr: 0x9658, symBinAddr: 0x1F90DC, symSize: 0x54 } + - { offset: 0x2AD289, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerCfETo', symObjAddr: 0x9FC4, symBinAddr: 0x1F9A14, symSize: 0x38 } + - { offset: 0x2AD2BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLCfETo', symObjAddr: 0xA7F4, symBinAddr: 0x1FA244, symSize: 0x60 } + - { offset: 0x2AD2EB, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV19validateScalarIndexySS0E0VAEF', symObjAddr: 0xAA68, symBinAddr: 0x1FA4B8, symSize: 0x94 } + - { offset: 0x2AD318, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV22validateSubscalarIndexySS0E0VAEF', symObjAddr: 0xAAFC, symBinAddr: 0x1FA54C, symSize: 0x6C } + - { offset: 0x2AD350, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV15scalarAlignSlowySS5IndexVAEF', symObjAddr: 0xAB68, symBinAddr: 0x1FA5B8, symSize: 0xDC } + - { offset: 0x2AD423, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCMa', symObjAddr: 0xB1B0, symBinAddr: 0x1FABBC, symSize: 0x20 } + - { offset: 0x2AD437, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerCMa', symObjAddr: 0xB1D0, symBinAddr: 0x1FABDC, symSize: 0x20 } + - { offset: 0x2AD44B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLCMa', symObjAddr: 0xB1F0, symBinAddr: 0x1FABFC, symSize: 0x20 } + - { offset: 0x2AD45F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC10UnfairLockCMa', symObjAddr: 0xB210, symBinAddr: 0x1FAC1C, symSize: 0x20 } + - { offset: 0x2AD473, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC4DataVMa', symObjAddr: 0xB288, symBinAddr: 0x1FAC3C, symSize: 0x10 } + - { offset: 0x2AD487, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctFyAA21NumericSpringAnimatorAELLC4DataVcfU_TA', symObjAddr: 0xB378, symBinAddr: 0x1FAC78, symSize: 0xC } + - { offset: 0x2AD49B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctFyycfU0_TA', symObjAddr: 0xB3B8, symBinAddr: 0x1FACB8, symSize: 0xC } + - { offset: 0x2AD4AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC10panningEnd33_06002278D796C453CD79A6217836F60ALL4with8velocityySo7CGPointV_AItFyycfU_TA', symObjAddr: 0xB3C4, symBinAddr: 0x1FACC4, symSize: 0x8 } + - { offset: 0x2AD4C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyyScMYccfU0_TA', symObjAddr: 0xB4AC, symBinAddr: 0x1FAD6C, symSize: 0x10 } + - { offset: 0x2AD4F5, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xB4BC, symBinAddr: 0x1FAD7C, symSize: 0x10 } + - { offset: 0x2AD509, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xB4CC, symBinAddr: 0x1FAD8C, symSize: 0x8 } + - { offset: 0x2AD51D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU1_TA', symObjAddr: 0xB5A4, symBinAddr: 0x1FAD94, symSize: 0x8 } + - { offset: 0x2AD531, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU2_TA', symObjAddr: 0xB5B0, symBinAddr: 0x1FADA0, symSize: 0x10 } + - { offset: 0x2AD545, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU3_TA', symObjAddr: 0xB610, symBinAddr: 0x1FADF0, symSize: 0xC } + - { offset: 0x2AD559, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFySo23UIViewAnimatingPositionVcfU4_TA', symObjAddr: 0xB658, symBinAddr: 0x1FAE38, symSize: 0x10 } + - { offset: 0x2AD6FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC10scrollViewSo08UIScrollF0CSgvW', symObjAddr: 0x224, symBinAddr: 0x1EFCE4, symSize: 0x1A8 } + - { offset: 0x2AD878, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC5stateAA18FloatingPanelStateCvW', symObjAddr: 0x3CC, symBinAddr: 0x1EFE8C, symSize: 0x270 } + - { offset: 0x2ADA9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvs', symObjAddr: 0x63C, symBinAddr: 0x1F00FC, symSize: 0x104 } + - { offset: 0x2ADB21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCfD', symObjAddr: 0x760, symBinAddr: 0x1F0220, symSize: 0x64 } + - { offset: 0x2ADB54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCfDTo', symObjAddr: 0x7C4, symBinAddr: 0x1F0284, symSize: 0x7C } + - { offset: 0x2ADB8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtF', symObjAddr: 0x908, symBinAddr: 0x1F03C8, symSize: 0xEA8 } + - { offset: 0x2AE3C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU1_', symObjAddr: 0x17B0, symBinAddr: 0x1F1270, symSize: 0xE8 } + - { offset: 0x2AE440, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU2_', symObjAddr: 0x1898, symBinAddr: 0x1F1358, symSize: 0x8C } + - { offset: 0x2AE487, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU3_', symObjAddr: 0x1924, symBinAddr: 0x1F13E4, symSize: 0x320 } + - { offset: 0x2AE652, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFySo23UIViewAnimatingPositionVcfU4_', symObjAddr: 0x1C44, symBinAddr: 0x1F1704, symSize: 0x160 } + - { offset: 0x2AE960, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC14activateLayout05forceF030contentInsetAdjustmentBehaviorySb_AA23FloatingPanelControllerC07ContentijK0OtF', symObjAddr: 0x1DE0, symBinAddr: 0x1F1864, symSize: 0x208 } + - { offset: 0x2AEB10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC16getBackdropAlpha2at4with0D8Graphics7CGFloatVAI_AItF', symObjAddr: 0x1FE8, symBinAddr: 0x1F1A6C, symSize: 0x2E4 } + - { offset: 0x2AEE29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_33shouldRecognizeSimultaneouslyWithSbSo09UIGestureF0C_AGtF', symObjAddr: 0x22CC, symBinAddr: 0x1F1D50, symSize: 0x330 } + - { offset: 0x2AEFDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_33shouldRecognizeSimultaneouslyWithSbSo09UIGestureF0C_AGtFTo', symObjAddr: 0x25FC, symBinAddr: 0x1F2080, symSize: 0x78 } + - { offset: 0x2AEFF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_24shouldBeRequiredToFailBySbSo09UIGestureF0C_AGtF', symObjAddr: 0x2674, symBinAddr: 0x1F20F8, symSize: 0x148 } + - { offset: 0x2AF08F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_24shouldBeRequiredToFailBySbSo09UIGestureF0C_AGtFTo', symObjAddr: 0x27BC, symBinAddr: 0x1F2240, symSize: 0x78 } + - { offset: 0x2AF0E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_22shouldRequireFailureOfSbSo09UIGestureF0C_AGtF', symObjAddr: 0x2834, symBinAddr: 0x1F22B8, symSize: 0x48C } + - { offset: 0x2AF32A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_22shouldRequireFailureOfSbSo09UIGestureF0C_AGtFTo', symObjAddr: 0x2CC0, symBinAddr: 0x1F2744, symSize: 0x78 } + - { offset: 0x2AF373, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC14handleBackdrop10tapGestureySo05UITapH10RecognizerC_tFTo', symObjAddr: 0x2D38, symBinAddr: 0x1F27BC, symSize: 0x6C } + - { offset: 0x2AF588, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC6handle10panGestureySo05UIPanG10RecognizerC_tF', symObjAddr: 0x2DA4, symBinAddr: 0x1F2828, symSize: 0x1388 } + - { offset: 0x2B09D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC6handle10panGestureySo05UIPanG10RecognizerC_tFTo', symObjAddr: 0x412C, symBinAddr: 0x1F3BB0, symSize: 0x50 } + - { offset: 0x2B0A14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC26interruptAnimationIfNeeded33_06002278D796C453CD79A6217836F60ALLyyF', symObjAddr: 0x417C, symBinAddr: 0x1F3C00, symSize: 0x3B0 } + - { offset: 0x2B0C57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC12panningBegan33_06002278D796C453CD79A6217836F60ALL2atySo7CGPointV_tF', symObjAddr: 0x452C, symBinAddr: 0x1F3FB0, symSize: 0x1F8 } + - { offset: 0x2B0E5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC13panningChange33_06002278D796C453CD79A6217836F60ALL4withySo7CGPointV_tF', symObjAddr: 0x4724, symBinAddr: 0x1F41A8, symSize: 0x410 } + - { offset: 0x2B13E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC30shouldScrollingContentInMoving33_06002278D796C453CD79A6217836F60ALL4from2toSb0D8Graphics7CGFloatV_AJtF', symObjAddr: 0x4B34, symBinAddr: 0x1F45B8, symSize: 0x218 } + - { offset: 0x2B1524, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC10panningEnd33_06002278D796C453CD79A6217836F60ALL4with8velocityySo7CGPointV_AItF', symObjAddr: 0x4D4C, symBinAddr: 0x1F47D0, symSize: 0x920 } + - { offset: 0x2B1CFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC10panningEnd33_06002278D796C453CD79A6217836F60ALL4with8velocityySo7CGPointV_AItFyycfU_', symObjAddr: 0x566C, symBinAddr: 0x1F50F0, symSize: 0x58 } + - { offset: 0x2B1D64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC12shouldRemove33_06002278D796C453CD79A6217836F60ALL4withSbSo8CGVectorV_tF', symObjAddr: 0x56C4, symBinAddr: 0x1F5148, symSize: 0x220 } + - { offset: 0x2B1F7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC16startInteraction33_06002278D796C453CD79A6217836F60ALL4with2atySo7CGPointV_AItF', symObjAddr: 0x58E4, symBinAddr: 0x1F5368, symSize: 0x9B8 } + - { offset: 0x2B2B22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC14endInteraction33_06002278D796C453CD79A6217836F60ALL3foryAA18FloatingPanelStateC_tF', symObjAddr: 0x629C, symBinAddr: 0x1F5D20, symSize: 0x2C4 } + - { offset: 0x2B2D96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC15startAttraction33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_So7CGPointVyyctF', symObjAddr: 0x6560, symBinAddr: 0x1F5FE4, symSize: 0x328 } + - { offset: 0x2B320E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctF', symObjAddr: 0x6888, symBinAddr: 0x1F630C, symSize: 0x3D4 } + - { offset: 0x2B345D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctFyAA21NumericSpringAnimatorAELLC4DataVcfU_', symObjAddr: 0x6C5C, symBinAddr: 0x1F66E0, symSize: 0x40C } + - { offset: 0x2B380F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctFyycfU0_', symObjAddr: 0x7068, symBinAddr: 0x1F6AEC, symSize: 0x258 } + - { offset: 0x2B39CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC13endAttraction33_06002278D796C453CD79A6217836F60ALLyySbF', symObjAddr: 0x72C0, symBinAddr: 0x1F6D44, symSize: 0x4D4 } + - { offset: 0x2B3E7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC11targetState4from4withAA013FloatingPanelF0C0D8Graphics7CGFloatV_AKtF', symObjAddr: 0x7794, symBinAddr: 0x1F7218, symSize: 0xCAC } + - { offset: 0x2B4DF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC24followScrollViewBouncingyyF', symObjAddr: 0x8440, symBinAddr: 0x1F7EC4, symSize: 0x1B8 } + - { offset: 0x2B4EF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC14lockScrollView33_06002278D796C453CD79A6217836F60ALL6strictySb_tF', symObjAddr: 0x85F8, symBinAddr: 0x1F807C, symSize: 0x440 } + - { offset: 0x2B5165, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC16unlockScrollView33_06002278D796C453CD79A6217836F60ALLyyF', symObjAddr: 0x8A38, symBinAddr: 0x1F84BC, symSize: 0x1F8 } + - { offset: 0x2B52B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC27shouldLooselyLockScrollView33_06002278D796C453CD79A6217836F60ALLSbvg07isSmallH25ContentAndFitToBoundsModeL_Sbvg', symObjAddr: 0x8C30, symBinAddr: 0x1F86B4, symSize: 0x1B4 } + - { offset: 0x2B54C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC23contentOffsetForPinning33_06002278D796C453CD79A6217836F60ALL2ofSo7CGPointVSo12UIScrollViewC_tF', symObjAddr: 0x8DE4, symBinAddr: 0x1F8868, symSize: 0x1B0 } + - { offset: 0x2B55A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC12isScrollable5stateSbAA18FloatingPanelStateC_tF', symObjAddr: 0x8F94, symBinAddr: 0x1F8A18, symSize: 0x158 } + - { offset: 0x2B56AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC32adjustScrollContentInsetIfNeededyyF', symObjAddr: 0x90EC, symBinAddr: 0x1F8B70, symSize: 0x280 } + - { offset: 0x2B581D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCACycfcTo', symObjAddr: 0x936C, symBinAddr: 0x1F8DF0, symSize: 0x2C } + - { offset: 0x2B587C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerCACycfc', symObjAddr: 0x9398, symBinAddr: 0x1F8E1C, symSize: 0xDC } + - { offset: 0x2B58B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerCACycfcTo', symObjAddr: 0x9474, symBinAddr: 0x1F8EF8, symSize: 0x20 } + - { offset: 0x2B58C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC12touchesBegan_4withyShySo7UITouchCG_So7UIEventCtF', symObjAddr: 0x9494, symBinAddr: 0x1F8F18, symSize: 0x1C4 } + - { offset: 0x2B5978, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC12touchesBegan_4withyShySo7UITouchCG_So7UIEventCtFTo', symObjAddr: 0x96AC, symBinAddr: 0x1F9130, symSize: 0x98 } + - { offset: 0x2B59A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvgTo', symObjAddr: 0x9744, symBinAddr: 0x1F91C8, symSize: 0x44 } + - { offset: 0x2B59DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvg', symObjAddr: 0x9788, symBinAddr: 0x1F920C, symSize: 0x38 } + - { offset: 0x2B59F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvsTo', symObjAddr: 0x97C0, symBinAddr: 0x1F9244, symSize: 0x40 } + - { offset: 0x2B5A0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvM', symObjAddr: 0x9800, symBinAddr: 0x1F9284, symSize: 0x54 } + - { offset: 0x2B5A4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvM.resume.0', symObjAddr: 0x9854, symBinAddr: 0x1F92D8, symSize: 0x44 } + - { offset: 0x2B5A70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvg', symObjAddr: 0x9898, symBinAddr: 0x1F931C, symSize: 0x28 } + - { offset: 0x2B5AA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvg', symObjAddr: 0x98C0, symBinAddr: 0x1F9344, symSize: 0x44 } + - { offset: 0x2B5AC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvs', symObjAddr: 0x9904, symBinAddr: 0x1F9388, symSize: 0x24 } + - { offset: 0x2B5ADB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvM', symObjAddr: 0x9928, symBinAddr: 0x1F93AC, symSize: 0x84 } + - { offset: 0x2B5B2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvM.resume.0', symObjAddr: 0x99AC, symBinAddr: 0x1F9430, symSize: 0xBC } + - { offset: 0x2B5B6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterC8responds2toSb10ObjectiveC8SelectorVSg_tF', symObjAddr: 0x9A68, symBinAddr: 0x1F94EC, symSize: 0xF8 } + - { offset: 0x2B5BD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterC8responds2toSb10ObjectiveC8SelectorVSg_tFTo', symObjAddr: 0x9B60, symBinAddr: 0x1F95E4, symSize: 0x3C } + - { offset: 0x2B5BEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterC16forwardingTarget3forypSg10ObjectiveC8SelectorVSg_tF', symObjAddr: 0x9B9C, symBinAddr: 0x1F9620, symSize: 0x184 } + - { offset: 0x2B5C7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterC16forwardingTarget3forypSg10ObjectiveC8SelectorVSg_tFTo', symObjAddr: 0x9D20, symBinAddr: 0x1F97A4, symSize: 0xD0 } + - { offset: 0x2B5CAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterCAEycfcTo', symObjAddr: 0x9DF0, symBinAddr: 0x1F9874, symSize: 0x2C } + - { offset: 0x2B5D0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterCfETo', symObjAddr: 0x9E20, symBinAddr: 0x1F98A4, symSize: 0x10 } + - { offset: 0x2B5D37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC6target6actionACypSg_10ObjectiveC8SelectorVSgtcfC', symObjAddr: 0x9E30, symBinAddr: 0x1F98B4, symSize: 0xE0 } + - { offset: 0x2B5D4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC6target6actionACypSg_10ObjectiveC8SelectorVSgtcfc', symObjAddr: 0x9F10, symBinAddr: 0x1F9994, symSize: 0x2C } + - { offset: 0x2B5DD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC6target6actionACypSg_10ObjectiveC8SelectorVSgtcfcTo', symObjAddr: 0x9F3C, symBinAddr: 0x1F99C0, symSize: 0x54 } + - { offset: 0x2B5E31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC10UnfairLockCfD', symObjAddr: 0x9FFC, symBinAddr: 0x1F9A4C, symSize: 0x10 } + - { offset: 0x2B5EA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC11displayLinkSo09CADisplayM0Cvg', symObjAddr: 0xA00C, symBinAddr: 0x1F9A5C, symSize: 0x8C } + - { offset: 0x2B5F44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC14startAnimationSbyF', symObjAddr: 0xA098, symBinAddr: 0x1F9AE8, symSize: 0x290 } + - { offset: 0x2B6151, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC13stopAnimationyySbF', symObjAddr: 0xA328, symBinAddr: 0x1F9D78, symSize: 0x24C } + - { offset: 0x2B643F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC6updateyySo13CADisplayLinkCF', symObjAddr: 0xA574, symBinAddr: 0x1F9FC4, symSize: 0x1D0 } + - { offset: 0x2B6699, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC6updateyySo13CADisplayLinkCFTo', symObjAddr: 0xA744, symBinAddr: 0x1FA194, symSize: 0x50 } + - { offset: 0x2B66C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLCADycfcTo', symObjAddr: 0xA794, symBinAddr: 0x1FA1E4, symSize: 0x2C } + - { offset: 0x2B6723, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLCfD', symObjAddr: 0xA7C0, symBinAddr: 0x1FA210, symSize: 0x34 } + - { offset: 0x2B674E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC27shouldScrollViewHandleTouch33_06002278D796C453CD79A6217836F60ALL_5point8velocitySbSo08UIScrollG0CSg_So7CGPointV0D8Graphics7CGFloatVtFTf4ndnn_n', symObjAddr: 0xAC44, symBinAddr: 0x1FA694, symSize: 0x404 } + - { offset: 0x2B6AF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvsTf4gn_n', symObjAddr: 0xB048, symBinAddr: 0x1FAA98, symSize: 0x9C } + - { offset: 0x2B6FC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC12fetchRequestSo07NSFetchG0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x1FAE78, symSize: 0x70 } + - { offset: 0x2B701A, size: 0x8, addend: 0x0, symName: _keypath_get_selector_id, symObjAddr: 0x70, symBinAddr: 0x1FAEE8, symSize: 0xC } + - { offset: 0x2B702E, size: 0x8, addend: 0x0, symName: _keypath_get_selector_coverImage, symObjAddr: 0xC0, symBinAddr: 0x1FAF38, symSize: 0xC } + - { offset: 0x2B7042, size: 0x8, addend: 0x0, symName: _keypath_get_selector_address, symObjAddr: 0x104, symBinAddr: 0x1FAF7C, symSize: 0xC } + - { offset: 0x2B7056, size: 0x8, addend: 0x0, symName: _keypath_get_selector_buildingNumber, symObjAddr: 0x148, symBinAddr: 0x1FAFC0, symSize: 0xC } + - { offset: 0x2B706A, size: 0x8, addend: 0x0, symName: _keypath_get_selector_phone, symObjAddr: 0x18C, symBinAddr: 0x1FB004, symSize: 0xC } + - { offset: 0x2B707E, size: 0x8, addend: 0x0, symName: _keypath_get_selector_email, symObjAddr: 0x1D0, symBinAddr: 0x1FB048, symSize: 0xC } + - { offset: 0x2B7092, size: 0x8, addend: 0x0, symName: _keypath_get_selector_website, symObjAddr: 0x214, symBinAddr: 0x1FB08C, symSize: 0xC } + - { offset: 0x2B70A6, size: 0x8, addend: 0x0, symName: _keypath_get_selector_floorCount, symObjAddr: 0x318, symBinAddr: 0x1FB190, symSize: 0xC } + - { offset: 0x2B70F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC03setE4Data5venueyAA0eG0C_tF', symObjAddr: 0x368, symBinAddr: 0x1FB1E0, symSize: 0x368 } + - { offset: 0x2B71BF, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI15LocalizedObjectVGSayxGSEsSERzlWl', symObjAddr: 0x714, symBinAddr: 0x1FB548, symSize: 0x68 } + - { offset: 0x2B7644, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC15show3dBuildingsyyF', symObjAddr: 0x0, symBinAddr: 0x1FB5B0, symSize: 0x380 } + - { offset: 0x2B768B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC15hide3dBuildingsyyF', symObjAddr: 0x380, symBinAddr: 0x1FB930, symSize: 0x100 } + - { offset: 0x2B76FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC17showCategoryCount8category12currentFloory7Penguin11POICategoryV_AG0L0CSgtF', symObjAddr: 0x480, symBinAddr: 0x1FBA30, symSize: 0x134 } + - { offset: 0x2B77E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC015getLastSelectedD07Penguin0D0CSgyF', symObjAddr: 0x5B4, symBinAddr: 0x1FBB64, symSize: 0xE4 } + - { offset: 0x2B7853, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC14downloadModelsyyF', symObjAddr: 0x698, symBinAddr: 0x1FBC48, symSize: 0x150 } + - { offset: 0x2B7EDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC14add3dBuildings3forySay7Penguin0D0CG_tF', symObjAddr: 0x20F4, symBinAddr: 0x1FD6A4, symSize: 0xE74 } + - { offset: 0x2B8968, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC17remove3dBuildings11identifiersySaySSG_tF', symObjAddr: 0x3544, symBinAddr: 0x1FEAF4, symSize: 0xCC } + - { offset: 0x2B8BA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCMU', symObjAddr: 0x702C, symBinAddr: 0x2025DC, symSize: 0x8 } + - { offset: 0x2B8BB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCMa', symObjAddr: 0x7034, symBinAddr: 0x2025E4, symSize: 0x38 } + - { offset: 0x2B8BCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCMr', symObjAddr: 0x706C, symBinAddr: 0x20261C, symSize: 0xC4 } + - { offset: 0x2B8BE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8addModel3fory7Penguin0D0C_tF', symObjAddr: 0x717C, symBinAddr: 0x2026E0, symSize: 0x198 } + - { offset: 0x2B8C82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC17downloadCompleted3foryAA16FileDownloadData_p_tF', symObjAddr: 0x7314, symBinAddr: 0x202878, symSize: 0xF8 } + - { offset: 0x2B8D36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCAA27FileDownloadProcessProtocolA2aDP17downloadCompleted3foryAA0gH4Data_p_tFTW', symObjAddr: 0x740C, symBinAddr: 0x202970, symSize: 0x4 } + - { offset: 0x2B8E47, size: 0x8, addend: 0x0, symName: '_$s7Penguin8MapLevelOACSQAAWl', symObjAddr: 0x79DC, symBinAddr: 0x202EC4, symSize: 0x44 } + - { offset: 0x2B8E5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x7AB0, symBinAddr: 0x202F2C, symSize: 0x8 } + - { offset: 0x2B8E6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tFySo7UIImageCSgcfU_yALcfU_TA', symObjAddr: 0x7AB8, symBinAddr: 0x202F34, symSize: 0x8 } + - { offset: 0x2B8E83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3fory7Penguin0D0CSg_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x7B0C, symBinAddr: 0x202F40, symSize: 0x8 } + - { offset: 0x2B8E97, size: 0x8, addend: 0x0, symName: '_$s7Penguin8MapLevelOSgWOf', symObjAddr: 0x7CE8, symBinAddr: 0x20305C, symSize: 0x48 } + - { offset: 0x2B973D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC10drawCampusyyF', symObjAddr: 0x7E8, symBinAddr: 0x1FBD98, symSize: 0x648 } + - { offset: 0x2B9999, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC16drawCampusBorderyyF', symObjAddr: 0xE30, symBinAddr: 0x1FC3E0, symSize: 0x294 } + - { offset: 0x2B9AF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC18removeCampusBorderyyF', symObjAddr: 0x10C4, symBinAddr: 0x1FC674, symSize: 0x1A4 } + - { offset: 0x2B9C1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC13drawAllVenues6exceptySay7Penguin0D0CSgG_tF', symObjAddr: 0x1268, symBinAddr: 0x1FC818, symSize: 0xE8C } + - { offset: 0x2BA455, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC15removeAllVenuesyyF', symObjAddr: 0x2F68, symBinAddr: 0x1FE518, symSize: 0x5DC } + - { offset: 0x2BAB9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC04drawD0_14includesSymboly7Penguin0D0CSg_SbtF', symObjAddr: 0x3610, symBinAddr: 0x1FEBC0, symSize: 0x9EC } + - { offset: 0x2BAECA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC06removeD0yy7Penguin0D0CSgF', symObjAddr: 0x3FFC, symBinAddr: 0x1FF5AC, symSize: 0x6AC } + - { offset: 0x2BB554, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC9drawGates3fory7Penguin0D0CSg_tF', symObjAddr: 0x46A8, symBinAddr: 0x1FFC58, symSize: 0xDA8 } + - { offset: 0x2BC2B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3fory7Penguin0D0CSg_tF', symObjAddr: 0x5450, symBinAddr: 0x200A00, symSize: 0x464 } + - { offset: 0x2BC4F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3fory7Penguin0D0CSg_tFySo7UIImageCSgcfU_', symObjAddr: 0x58B4, symBinAddr: 0x200E64, symSize: 0x274 } + - { offset: 0x2BC5BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tF', symObjAddr: 0x5B28, symBinAddr: 0x2010D8, symSize: 0x4E0 } + - { offset: 0x2BC926, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tFySo7UIImageCSgcfU_', symObjAddr: 0x6008, symBinAddr: 0x2015B8, symSize: 0xD10 } + - { offset: 0x2BCD22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tFySo7UIImageCSgcfU_yALcfU_', symObjAddr: 0x6D18, symBinAddr: 0x2022C8, symSize: 0xE0 } + - { offset: 0x2BCF46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC6filter14filteredVenuesySayAA5PlaceCG_tF', symObjAddr: 0x6DF8, symBinAddr: 0x2023A8, symSize: 0x1CC } + - { offset: 0x2BD1C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCfD', symObjAddr: 0x6FC4, symBinAddr: 0x202574, symSize: 0x68 } + - { offset: 0x2BD1FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8getImage3forSo7UIImageCSg7Penguin13GateNodeModelC_tFTf4nd_n', symObjAddr: 0x7458, symBinAddr: 0x202974, symSize: 0x550 } + - { offset: 0x2BD3EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8renderer8mapLevel0H4ModeAC17PenguinINRenderer10PIRendererCSg_0K003MapI0OSgAA0N5StateOtcfcTf4gnnn_n', symObjAddr: 0x7BD4, symBinAddr: 0x202F48, symSize: 0x114 } + - { offset: 0x2BD7CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvpACTk', symObjAddr: 0x0, symBinAddr: 0x2030AC, symSize: 0x7C } + - { offset: 0x2BD9BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvpACTk', symObjAddr: 0x0, symBinAddr: 0x2030AC, symSize: 0x7C } + - { offset: 0x2BDA1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewCMa', symObjAddr: 0x2E4, symBinAddr: 0x20334C, symSize: 0x20 } + - { offset: 0x2BDA45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewCfETo', symObjAddr: 0x8D8, symBinAddr: 0x2037BC, symSize: 0x10 } + - { offset: 0x2BDB30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvg', symObjAddr: 0x7C, symBinAddr: 0x203128, symSize: 0x40 } + - { offset: 0x2BDB4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvs', symObjAddr: 0xBC, symBinAddr: 0x203168, symSize: 0x8C } + - { offset: 0x2BDB95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvM', symObjAddr: 0x148, symBinAddr: 0x2031F4, symSize: 0x6C } + - { offset: 0x2BDBCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvM.resume.0', symObjAddr: 0x1B4, symBinAddr: 0x203260, symSize: 0x44 } + - { offset: 0x2BDC95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x23C, symBinAddr: 0x2032A4, symSize: 0xA8 } + - { offset: 0x2BDD0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x304, symBinAddr: 0x20336C, symSize: 0xC8 } + - { offset: 0x2BDD7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewCACycfcTo', symObjAddr: 0x3CC, symBinAddr: 0x203434, symSize: 0xC4 } + - { offset: 0x2BDE00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC14layoutSubviewsyyFTo', symObjAddr: 0x4FC, symBinAddr: 0x2034F8, symSize: 0x88 } + - { offset: 0x2BDE9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtFTo', symObjAddr: 0x69C, symBinAddr: 0x203580, symSize: 0x10C } + - { offset: 0x2BDEE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5frameACSo6CGRectV_tcfC', symObjAddr: 0x7A8, symBinAddr: 0x20368C, symSize: 0x50 } + - { offset: 0x2BDEF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x7F8, symBinAddr: 0x2036DC, symSize: 0x2C } + - { offset: 0x2BDF65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x824, symBinAddr: 0x203708, symSize: 0x2C } + - { offset: 0x2BDFC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewCfD', symObjAddr: 0x850, symBinAddr: 0x203734, symSize: 0x30 } + - { offset: 0x2BE38E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FloatingPanelPositionO19mainDimensionAnchorySo08NSLayoutH0CAA19LayoutGuideProvider_pFTf4en_n', symObjAddr: 0x118, symBinAddr: 0x203810, symSize: 0xC8 } + - { offset: 0x2BE3DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FloatingPanelPositionOSHAASQWb', symObjAddr: 0x1F0, symBinAddr: 0x2038D8, symSize: 0x4 } + - { offset: 0x2BE3EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FloatingPanelPositionOACSQAAWl', symObjAddr: 0x1F4, symBinAddr: 0x2038DC, symSize: 0x40 } + - { offset: 0x2BE403, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FloatingPanelPositionOMa', symObjAddr: 0x234, symBinAddr: 0x20391C, symSize: 0x10 } + - { offset: 0x2BEAFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterCMa', symObjAddr: 0x10, symBinAddr: 0x20392C, symSize: 0x20 } + - { offset: 0x2BEDEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC20getOriginDescription6originSSAA5PlaceCSg_tFZTf4nd_n', symObjAddr: 0x30, symBinAddr: 0x20394C, symSize: 0x800 } + - { offset: 0x2BF7AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC25getDestinationDescription6origin11destinationSSAA5PlaceCSg_AItFZTf4nnd_n', symObjAddr: 0x830, symBinAddr: 0x20414C, symSize: 0xFEC } + - { offset: 0x2C08EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC19getFormattedMinutesSSyFZTf4d_n', symObjAddr: 0x181C, symBinAddr: 0x205138, symSize: 0x278 } + - { offset: 0x2C0BCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC20getFormattedDistance10directionsSSSayAA0D9DirectionVG_tFZTf4nd_n', symObjAddr: 0x1A94, symBinAddr: 0x2053B0, symSize: 0x198 } + - { offset: 0x2C0DC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC012getFormattedE010directionsSSSayAA0D9DirectionVG_tFZTf4nd_n', symObjAddr: 0x1C2C, symBinAddr: 0x205548, symSize: 0x5AC } + - { offset: 0x2C1552, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataC03setD08favoriteyAA0D0C_tF', symObjAddr: 0x0, symBinAddr: 0x205AF4, symSize: 0x230 } + - { offset: 0x2C15DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataC12fetchRequestSo07NSFetchH0CyACGyFZ', symObjAddr: 0x230, symBinAddr: 0x205D24, symSize: 0x6C } + - { offset: 0x2C1636, size: 0x8, addend: 0x0, symName: _keypath_get_selector_createDate, symObjAddr: 0x29C, symBinAddr: 0x205D90, symSize: 0xC } + - { offset: 0x2C164A, size: 0x8, addend: 0x0, symName: _keypath_get_selector_deviceId, symObjAddr: 0x2E0, symBinAddr: 0x205DD4, symSize: 0xC } + - { offset: 0x2C165E, size: 0x8, addend: 0x0, symName: _keypath_get_selector_distance, symObjAddr: 0x368, symBinAddr: 0x205E50, symSize: 0xC } + - { offset: 0x2C1672, size: 0x8, addend: 0x0, symName: _keypath_get_selector_label, symObjAddr: 0x3FC, symBinAddr: 0x205ED8, symSize: 0xC } + - { offset: 0x2C1686, size: 0x8, addend: 0x0, symName: _keypath_get_selector_poiId, symObjAddr: 0x440, symBinAddr: 0x205F1C, symSize: 0xC } + - { offset: 0x2C169A, size: 0x8, addend: 0x0, symName: _keypath_get_selector_userName, symObjAddr: 0x490, symBinAddr: 0x205F6C, symSize: 0xC } + - { offset: 0x2C16AE, size: 0x8, addend: 0x0, symName: _keypath_get_selector_location, symObjAddr: 0x594, symBinAddr: 0x205FB0, symSize: 0xC } + - { offset: 0x2C1AFC, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PILocationC8PenNavUIE12toParametersSDySSypGvg', symObjAddr: 0x0, symBinAddr: 0x206008, symSize: 0x1AC } + - { offset: 0x2C1B9A, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PILocationC8PenNavUIE12toParametersSDySSypGvg', symObjAddr: 0x0, symBinAddr: 0x206008, symSize: 0x1AC } + - { offset: 0x2C209B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC11contentSizeSo6CGSizeVvgTo', symObjAddr: 0x0, symBinAddr: 0x2061B4, symSize: 0x3C } + - { offset: 0x2C21E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewCMa', symObjAddr: 0x258, symBinAddr: 0x20640C, symSize: 0x20 } + - { offset: 0x2C2214, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC11contentSizeSo6CGSizeVvgTo', symObjAddr: 0x0, symBinAddr: 0x2061B4, symSize: 0x3C } + - { offset: 0x2C2286, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC11contentSizeSo6CGSizeVvsTo', symObjAddr: 0x3C, symBinAddr: 0x2061F0, symSize: 0x7C } + - { offset: 0x2C22DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0xB8, symBinAddr: 0x20626C, symSize: 0x80 } + - { offset: 0x2C2353, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC5frame5styleACSo6CGRectV_So07UITableF5StyleVtcfcTo', symObjAddr: 0x138, symBinAddr: 0x2062EC, symSize: 0x74 } + - { offset: 0x2C23EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1AC, symBinAddr: 0x206360, symSize: 0x7C } + - { offset: 0x2C2422, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewCfD', symObjAddr: 0x228, symBinAddr: 0x2063DC, symSize: 0x30 } + - { offset: 0x2C29F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellCfETo', symObjAddr: 0x998, symBinAddr: 0x206DC4, symSize: 0x54 } + - { offset: 0x2C2A28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellCMa', symObjAddr: 0x9EC, symBinAddr: 0x206E18, symSize: 0x20 } + - { offset: 0x2C2A3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSgWOe', symObjAddr: 0xA94, symBinAddr: 0x206E38, symSize: 0x3C } + - { offset: 0x2C2A50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9configure4with10isSelectedyAA0D8CardDataV_SbtFySo7UIImageCSgcfU_TA', symObjAddr: 0xB30, symBinAddr: 0x206ED4, symSize: 0xC } + - { offset: 0x2C2A64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSgWOy', symObjAddr: 0xB80, symBinAddr: 0x206EE0, symSize: 0x3C } + - { offset: 0x2C2B89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9imageViewSo07UIImageG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x20642C, symSize: 0x10 } + - { offset: 0x2C2BA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9imageViewSo07UIImageG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x20642C, symSize: 0x10 } + - { offset: 0x2C2BE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9imageViewSo07UIImageG0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x20643C, symSize: 0x34 } + - { offset: 0x2C2C36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x206470, symSize: 0x10 } + - { offset: 0x2C2C4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x206470, symSize: 0x10 } + - { offset: 0x2C2C8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x206480, symSize: 0x34 } + - { offset: 0x2C2CDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC12awakeFromNibyyFTo', symObjAddr: 0x88, symBinAddr: 0x2064B4, symSize: 0xC8 } + - { offset: 0x2C2D5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9configure4with10isSelectedyAA0D8CardDataV_SbtF', symObjAddr: 0x150, symBinAddr: 0x20657C, symSize: 0x3D4 } + - { offset: 0x2C2EF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9configure4with10isSelectedyAA0D8CardDataV_SbtFySo7UIImageCSgcfU_', symObjAddr: 0x524, symBinAddr: 0x206950, symSize: 0x1FC } + - { offset: 0x2C2FDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC15prepareForReuseyyF', symObjAddr: 0x720, symBinAddr: 0x206B4C, symSize: 0xC0 } + - { offset: 0x2C3056, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC15prepareForReuseyyFTo', symObjAddr: 0x7E0, symBinAddr: 0x206C0C, symSize: 0x28 } + - { offset: 0x2C308D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x808, symBinAddr: 0x206C34, symSize: 0x9C } + - { offset: 0x2C30E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x8A4, symBinAddr: 0x206CD0, symSize: 0x9C } + - { offset: 0x2C3119, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x940, symBinAddr: 0x206D6C, symSize: 0x28 } + - { offset: 0x2C312D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellCfD', symObjAddr: 0x968, symBinAddr: 0x206D94, symSize: 0x30 } + - { offset: 0x2C34F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV13showsUsernameSbvpZ', symObjAddr: 0x4204, symBinAddr: 0x384F40, symSize: 0x0 } + - { offset: 0x2C350C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV15showsBackButtonSbvpZ', symObjAddr: 0x4205, symBinAddr: 0x384F41, symSize: 0x0 } + - { offset: 0x2C3526, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV17showsDebugOptionsSbvpZ', symObjAddr: 0x4206, symBinAddr: 0x384F42, symSize: 0x0 } + - { offset: 0x2C3540, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV27updatesUserLocationSmoothlySbvpZ', symObjAddr: 0x4207, symBinAddr: 0x384F43, symSize: 0x0 } + - { offset: 0x2C355A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV16isSimulationModeSbvpZ', symObjAddr: 0x4208, symBinAddr: 0x384F44, symSize: 0x0 } + - { offset: 0x2C3574, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV8mapStateAA03MapF0OvpZ', symObjAddr: 0x4209, symBinAddr: 0x384F45, symSize: 0x0 } + - { offset: 0x2C3902, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x206F1C, symSize: 0xFC } + - { offset: 0x2C39A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorCMa', symObjAddr: 0x234, symBinAddr: 0x207150, symSize: 0x20 } + - { offset: 0x2C39E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x206F1C, symSize: 0xFC } + - { offset: 0x2C3A49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xFC, symBinAddr: 0x207018, symSize: 0xE0 } + - { offset: 0x2C3A7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1DC, symBinAddr: 0x2070F8, symSize: 0x28 } + - { offset: 0x2C3A98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorCfD', symObjAddr: 0x204, symBinAddr: 0x207120, symSize: 0x30 } + - { offset: 0x2C40E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCfETo', symObjAddr: 0x1E48, symBinAddr: 0x208FB8, symSize: 0xC8 } + - { offset: 0x2C410F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCMa', symObjAddr: 0x1F10, symBinAddr: 0x209080, symSize: 0x20 } + - { offset: 0x2C4134, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC21dimensionToggleButtonSo8UIButtonCvgAFyXEfU_yycfU_TA', symObjAddr: 0x20E0, symBinAddr: 0x209250, symSize: 0x20 } + - { offset: 0x2C4148, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC19floorSelectorButtonSo8UIButtonCvgAFyXEfU_yycfU_TA', symObjAddr: 0x216C, symBinAddr: 0x209270, symSize: 0x20 } + - { offset: 0x2C415C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC14recenterButtonSo8UIButtonCvgAFyXEfU_yycfU_TA', symObjAddr: 0x218C, symBinAddr: 0x209290, symSize: 0x20 } + - { offset: 0x2C4170, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerCMa', symObjAddr: 0x21D0, symBinAddr: 0x2092D4, symSize: 0x44 } + - { offset: 0x2C4184, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC17fitToCampusButtonSo8UIButtonCvgAFyXEfU_yycfU_TA', symObjAddr: 0x2214, symBinAddr: 0x209318, symSize: 0x20 } + - { offset: 0x2C45B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCACycfc', symObjAddr: 0xF60, symBinAddr: 0x2080D0, symSize: 0x124 } + - { offset: 0x2C4609, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCACycfcTo', symObjAddr: 0x1084, symBinAddr: 0x2081F4, symSize: 0x20 } + - { offset: 0x2C466C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x10A4, symBinAddr: 0x208214, symSize: 0x134 } + - { offset: 0x2C46CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x11D8, symBinAddr: 0x208348, symSize: 0x28 } + - { offset: 0x2C4700, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC9setupViewyyF', symObjAddr: 0x1200, symBinAddr: 0x208370, symSize: 0x5B4 } + - { offset: 0x2C4801, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC15getOptionButton33_1FAC0ECA688D308BCC62BF45E6F7EADALL9imageNameSo8UIButtonCSS_tF', symObjAddr: 0x17B4, symBinAddr: 0x208924, symSize: 0x498 } + - { offset: 0x2C48E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC8setFlooryy7Penguin0G0CSgF', symObjAddr: 0x1C4C, symBinAddr: 0x208DBC, symSize: 0x1A0 } + - { offset: 0x2C49CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1DEC, symBinAddr: 0x208F5C, symSize: 0x2C } + - { offset: 0x2C4A2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCfD', symObjAddr: 0x1E18, symBinAddr: 0x208F88, symSize: 0x30 } + - { offset: 0x2C4A5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC13separatorViewSo6UIViewCvgTf4d_n', symObjAddr: 0x1F30, symBinAddr: 0x2090A0, symSize: 0x18C } + - { offset: 0x2C4E77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9stopLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x209348, symSize: 0x10 } + - { offset: 0x2C50C6, size: 0x8, addend: 0x0, symName: '_$sSlsE9dropFirsty11SubSequenceQzSiFSS_Tg5Tf4ng_n', symObjAddr: 0x1D28, symBinAddr: 0x20AF30, symSize: 0x9C } + - { offset: 0x2C5706, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellCfETo', symObjAddr: 0x1B18, symBinAddr: 0x20AE60, symSize: 0x68 } + - { offset: 0x2C5735, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellCMa', symObjAddr: 0x1B80, symBinAddr: 0x20AEC8, symSize: 0x20 } + - { offset: 0x2C5749, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSgWOc', symObjAddr: 0x1BE4, symBinAddr: 0x20AEE8, symSize: 0x48 } + - { offset: 0x2C5789, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9configure4withyAA05RouteD0VSg_tFSbAA5PlaceCXEfU_TA', symObjAddr: 0x1E28, symBinAddr: 0x20AFF0, symSize: 0x1C } + - { offset: 0x2C5840, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9stopLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x209348, symSize: 0x10 } + - { offset: 0x2C5858, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9stopLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x209348, symSize: 0x10 } + - { offset: 0x2C589E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9stopLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x209358, symSize: 0x34 } + - { offset: 0x2C58ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC15stopLetterLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x20938C, symSize: 0x10 } + - { offset: 0x2C5905, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC15stopLetterLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x20938C, symSize: 0x10 } + - { offset: 0x2C5940, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC15stopLetterLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x20939C, symSize: 0x34 } + - { offset: 0x2C598F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x2093D0, symSize: 0x10 } + - { offset: 0x2C59A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x2093D0, symSize: 0x10 } + - { offset: 0x2C59E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x2093E0, symSize: 0x34 } + - { offset: 0x2C5A31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x209414, symSize: 0x10 } + - { offset: 0x2C5A49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x209414, symSize: 0x10 } + - { offset: 0x2C5A84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC11lengthLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x209424, symSize: 0x34 } + - { offset: 0x2C5AD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC09iconImageF0So07UIImageF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x209458, symSize: 0x10 } + - { offset: 0x2C5AEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC09iconImageF0So07UIImageF0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x209458, symSize: 0x10 } + - { offset: 0x2C5B2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC09iconImageF0So07UIImageF0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x209468, symSize: 0x34 } + - { offset: 0x2C5B7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC12awakeFromNibyyFTo', symObjAddr: 0x154, symBinAddr: 0x20949C, symSize: 0x94 } + - { offset: 0x2C5C5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9configure4withyAA05RouteD0VSg_tF', symObjAddr: 0x1E8, symBinAddr: 0x209530, symSize: 0x628 } + - { offset: 0x2C5F38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9configure4withyAA05RouteD0VSg_tFSbAA5PlaceCXEfU_', symObjAddr: 0x810, symBinAddr: 0x209B58, symSize: 0x150 } + - { offset: 0x2C5FA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC23showArrivalConfirmation33_2BE4A475C9A281DA0308C98892968072LL3foryAA5PlaceCSg_tF', symObjAddr: 0x960, symBinAddr: 0x209CA8, symSize: 0x554 } + - { offset: 0x2C64AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC23showArrivalConfirmation33_2BE4A475C9A281DA0308C98892968072LL3foryAA5PlaceCSg_tFySo7UIImageCSgcfU0_', symObjAddr: 0xEB4, symBinAddr: 0x20A1FC, symSize: 0x90 } + - { offset: 0x2C6661, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC04showD4Info33_2BE4A475C9A281DA0308C98892968072LLyyAA05RouteD0VSgF', symObjAddr: 0xF44, symBinAddr: 0x20A28C, symSize: 0xA2C } + - { offset: 0x2C6AD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1970, symBinAddr: 0x20ACB8, symSize: 0xA8 } + - { offset: 0x2C6B09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1A18, symBinAddr: 0x20AD60, symSize: 0xA8 } + - { offset: 0x2C6B3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1AC0, symBinAddr: 0x20AE08, symSize: 0x28 } + - { offset: 0x2C6B50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellCfD', symObjAddr: 0x1AE8, symBinAddr: 0x20AE30, symSize: 0x30 } + - { offset: 0x2C6F05, size: 0x8, addend: 0x0, symName: '_$sSlsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lFSS17UnicodeScalarViewV_s0D0O0E0Vs5NeverOTg5076$s8PenNavUI9XMLParserV6padHex33_F79CF21C173C50BA5CDF33ADFD764F11LLySSSgSSFs7d2O6E8VAJXEfU_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x20B00C, symSize: 0x33C } + - { offset: 0x2C70B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseFillyAA3DOMO0F0OSSKF', symObjAddr: 0x33C, symBinAddr: 0x20B348, symSize: 0x3E8 } + - { offset: 0x2C740F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV16parseURLSelector33_F79CF21C173C50BA5CDF33ADFD764F11LL4data10Foundation3URLVSgSS_tKF', symObjAddr: 0x768, symBinAddr: 0x20B730, symSize: 0x658 } + - { offset: 0x2C77FA, size: 0x8, addend: 0x0, symName: '_$sSS17UnicodeScalarViewV8distance4from2toSiSS5IndexV_AGtF', symObjAddr: 0xDC0, symBinAddr: 0x20BD88, symSize: 0x20C } + - { offset: 0x2C781F, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV28validateInclusiveScalarIndexySS0F0VAEF', symObjAddr: 0xFCC, symBinAddr: 0x20BF94, symSize: 0x94 } + - { offset: 0x2C784C, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV31validateInclusiveSubscalarIndexySS0F0VAEF', symObjAddr: 0x1060, symBinAddr: 0x20C028, symSize: 0x6C } + - { offset: 0x2C7879, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseColorRGBf33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSS_tKFTf4nd_n', symObjAddr: 0x10CC, symBinAddr: 0x20C094, symSize: 0x788 } + - { offset: 0x2C7EBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseColorRGBi33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSS_tKFTf4nd_n', symObjAddr: 0x1854, symBinAddr: 0x20C81C, symSize: 0x864 } + - { offset: 0x2C858F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV13parseColorRGB33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSgSS_tKFTf4nd_n', symObjAddr: 0x20B8, symBinAddr: 0x20D080, symSize: 0x38C } + - { offset: 0x2C882B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV6padHex33_F79CF21C173C50BA5CDF33ADFD764F11LLySSSgSSFTf4nd_n', symObjAddr: 0x2444, symBinAddr: 0x20D40C, symSize: 0x124 } + - { offset: 0x2C8BB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV13parseColorHex33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSgSS_tKFTf4nd_n', symObjAddr: 0x2568, symBinAddr: 0x20D530, symSize: 0x7C4 } + - { offset: 0x2C9176, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseColorP333_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSgSS_tKFTf4nd_n', symObjAddr: 0x2D2C, symBinAddr: 0x20DCF4, symSize: 0x920 } + - { offset: 0x2C98BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseColorNone33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSgSS_tFTf4nd_n', symObjAddr: 0x368C, symBinAddr: 0x20E614, symSize: 0x140 } + - { offset: 0x2C99A2, size: 0x8, addend: 0x0, symName: '_$sSlsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lFSS17UnicodeScalarViewV_s0D0O0E0Vs5NeverOTg5076$s8PenNavUI9XMLParserV6padHex33_F79CF21C173C50BA5CDF33ADFD764F11LLySSSgSSFs7d2O6E8VAJXEfU_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x20B00C, symSize: 0x33C } + - { offset: 0x2CA2B7, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE04hashB0Sivg8PenNavUI11RouteOptionV0gH3KeyO_Tg5', symObjAddr: 0x0, symBinAddr: 0x20E754, symSize: 0x138 } + - { offset: 0x2CA30E, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE04hashB0Sivg8PenNavUI11RouteOptionV0gH3KeyO_Tg5', symObjAddr: 0x0, symBinAddr: 0x20E754, symSize: 0x138 } + - { offset: 0x2CA3E4, size: 0x8, addend: 0x0, symName: '_$ss30_dictionaryDownCastConditionalySDyq0_q1_GSgSDyxq_GSHRzSHR0_r2_lFSS_ypSSSbTg5', symObjAddr: 0x138, symBinAddr: 0x20E88C, symSize: 0x254 } + - { offset: 0x2CA523, size: 0x8, addend: 0x0, symName: '_$ss30_dictionaryDownCastConditionalySDyq0_q1_GSgSDyxq_GSHRzSHR0_r2_lFSS_ypS2STg5', symObjAddr: 0x38C, symBinAddr: 0x20EAE0, symSize: 0x278 } + - { offset: 0x2CA656, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x604, symBinAddr: 0x20ED58, symSize: 0xC } + - { offset: 0x2CA672, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSHAASH9hashValueSivgTW', symObjAddr: 0x610, symBinAddr: 0x20ED64, symSize: 0x8 } + - { offset: 0x2CA68E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x618, symBinAddr: 0x20ED6C, symSize: 0x110 } + - { offset: 0x2CA6F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x728, symBinAddr: 0x20EE7C, symSize: 0x8 } + - { offset: 0x2CAC2A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV5merge_8isUnique16uniquingKeysWithyqd__n_Sbq_q__q_tKXEtKSTRd__x_q_t7ElementRtd__lFSS_SbSaySS_SbtGTg5012$sSD20uniquegh33ValuesSDyxq_Gqd__n_tcSTRd__x_q_t7i31Rtd__lufcq_q__q_tKXEfU_SS_SbSayU8_SbtGTG5Tf1nncn_n', symObjAddr: 0x8C0, symBinAddr: 0x20F014, symSize: 0x36C } + - { offset: 0x2CAF69, size: 0x8, addend: 0x0, symName: '_$sSS3key_yp5valuetWOh', symObjAddr: 0x121C, symBinAddr: 0x20F8F0, symSize: 0x40 } + - { offset: 0x2CAFD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOMa', symObjAddr: 0x1A64, symBinAddr: 0x20FFD4, symSize: 0x10 } + - { offset: 0x2CAFE9, size: 0x8, addend: 0x0, symName: ___swift_memcpy2_1, symObjAddr: 0x1A74, symBinAddr: 0x20FFE4, symSize: 0xC } + - { offset: 0x2CAFFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionVwet', symObjAddr: 0x1A80, symBinAddr: 0x20FFF0, symSize: 0xA4 } + - { offset: 0x2CB011, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionVwst', symObjAddr: 0x1B24, symBinAddr: 0x210094, symSize: 0xB0 } + - { offset: 0x2CB025, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionVMa', symObjAddr: 0x1BD4, symBinAddr: 0x210144, symSize: 0x10 } + - { offset: 0x2CB039, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOs12CaseIterableAA8AllCasessAFP_SlWT', symObjAddr: 0x1BE4, symBinAddr: 0x210154, symSize: 0x4 } + - { offset: 0x2CB04D, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI11RouteOptionV0dE3KeyOGSayxGSlsWl', symObjAddr: 0x1BE8, symBinAddr: 0x210158, symSize: 0x48 } + - { offset: 0x2CB061, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSHAASQWb', symObjAddr: 0x1C78, symBinAddr: 0x2101A0, symSize: 0x4 } + - { offset: 0x2CB075, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOAESQAAWl', symObjAddr: 0x1C7C, symBinAddr: 0x2101A4, symSize: 0x40 } + - { offset: 0x2CB0C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x730, symBinAddr: 0x20EE84, symSize: 0x2C } + - { offset: 0x2CB0F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x75C, symBinAddr: 0x20EEB0, symSize: 0xF4 } + - { offset: 0x2CB12E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOs12CaseIterableAAsAFP8allCases03AllJ0QzvgZTW', symObjAddr: 0x850, symBinAddr: 0x20EFA4, symSize: 0x38 } + - { offset: 0x2CB194, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x888, symBinAddr: 0x20EFDC, symSize: 0x38 } + - { offset: 0x2CB1FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV12routeOptionsSayACGvgZTf4d_n', symObjAddr: 0xC2C, symBinAddr: 0x20F380, symSize: 0x2F4 } + - { offset: 0x2CB3DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV22routeOptionsDictionarySDySSSbGvgZTf4d_n', symObjAddr: 0xF20, symBinAddr: 0x20F674, symSize: 0x27C } + - { offset: 0x2CB61B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV04saveD7OptionsyySayACGFZTf4nd_n', symObjAddr: 0x125C, symBinAddr: 0x20F930, symSize: 0x380 } + - { offset: 0x2CB8AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV07enabledD7OptionsSayACGvgZTf4d_n', symObjAddr: 0x15DC, symBinAddr: 0x20FCB0, symSize: 0x324 } + - { offset: 0x2CBB91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x1CBC, symBinAddr: 0x2101E4, symSize: 0x5C } + - { offset: 0x2CBF51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5color12defaultColor4icon0G4IconACSo7UIColorCSg_AISo7UIImageCSgAMtcfc', symObjAddr: 0x0, symBinAddr: 0x210240, symSize: 0x2CC } + - { offset: 0x2CC252, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewCfETo', symObjAddr: 0xC04, symBinAddr: 0x210E44, symSize: 0x38 } + - { offset: 0x2CC281, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewCMa', symObjAddr: 0xC3C, symBinAddr: 0x210E7C, symSize: 0x20 } + - { offset: 0x2CC3C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5color12defaultColor4icon0G4IconACSo7UIColorCSg_AISo7UIImageCSgAMtcfc', symObjAddr: 0x0, symBinAddr: 0x210240, symSize: 0x2CC } + - { offset: 0x2CC4B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC011adjustImageE5FrameyyF', symObjAddr: 0x2CC, symBinAddr: 0x21050C, symSize: 0xE8 } + - { offset: 0x2CC5E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3B4, symBinAddr: 0x2105F4, symSize: 0x148 } + - { offset: 0x2CC656, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x4FC, symBinAddr: 0x21073C, symSize: 0x28 } + - { offset: 0x2CC67E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC14layoutSubviewsyyFTo', symObjAddr: 0x524, symBinAddr: 0x210764, symSize: 0x5C } + - { offset: 0x2CC6DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC4drawyySo6CGRectVF', symObjAddr: 0x580, symBinAddr: 0x2107C0, symSize: 0x530 } + - { offset: 0x2CCA2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC4drawyySo6CGRectVFTo', symObjAddr: 0xAB0, symBinAddr: 0x210CF0, symSize: 0x58 } + - { offset: 0x2CCA3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC11adjustFrameyyF', symObjAddr: 0xB08, symBinAddr: 0x210D48, symSize: 0x98 } + - { offset: 0x2CCAAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC18defaultCircleYAxis12CoreGraphics7CGFloatVyF', symObjAddr: 0xBA0, symBinAddr: 0x210DE0, symSize: 0x8 } + - { offset: 0x2CCAF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xBA8, symBinAddr: 0x210DE8, symSize: 0x2C } + - { offset: 0x2CCB4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewCfD', symObjAddr: 0xBD4, symBinAddr: 0x210E14, symSize: 0x30 } + - { offset: 0x2CCC0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC12savedParkingACSgvgZTf4d_n', symObjAddr: 0xC5C, symBinAddr: 0x210E9C, symSize: 0x3B8 } + - { offset: 0x2CCD24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC8locationACvgZTf4d_n', symObjAddr: 0x1014, symBinAddr: 0x211254, symSize: 0x344 } + - { offset: 0x2CD1B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16MainPanelSectionO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x211598, symSize: 0x10 } + - { offset: 0x2CD1FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16MainPanelSectionO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x211598, symSize: 0x10 } + - { offset: 0x2CD6AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF', symObjAddr: 0x2C8, symBinAddr: 0x211804, symSize: 0x1B8 } + - { offset: 0x2CD859, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC17layoutConstraints33_B3F6FCFEFDF39B31B996C92E79088F06LL_3forSaySo18NSLayoutConstraintCGAA0F13GuideProvider_p_So0s5YAxisG0CtF', symObjAddr: 0x480, symBinAddr: 0x2119BC, symSize: 0x39C } + - { offset: 0x2CDA33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC17layoutConstraints33_B3F6FCFEFDF39B31B996C92E79088F06LL_3forSaySo18NSLayoutConstraintCGAA0F13GuideProvider_p_So0s5XAxisG0CtF', symObjAddr: 0x81C, symBinAddr: 0x211D58, symSize: 0x3A0 } + - { offset: 0x2CDC98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF', symObjAddr: 0xDE4, symBinAddr: 0x212320, symSize: 0x2C8 } + - { offset: 0x2CDF2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCfETo', symObjAddr: 0x13AC, symBinAddr: 0x2128B4, symSize: 0x10 } + - { offset: 0x2CE01A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF', symObjAddr: 0x13BC, symBinAddr: 0x2128C4, symSize: 0x390 } + - { offset: 0x2CE334, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorCMa', symObjAddr: 0x1828, symBinAddr: 0x212CEC, symSize: 0x20 } + - { offset: 0x2CE348, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorCMa', symObjAddr: 0x1864, symBinAddr: 0x212D28, symSize: 0x20 } + - { offset: 0x2CE35C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCMa', symObjAddr: 0x18A0, symBinAddr: 0x212D64, symSize: 0x20 } + - { offset: 0x2CE370, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintCMa', symObjAddr: 0x18DC, symBinAddr: 0x212DA0, symSize: 0x44 } + - { offset: 0x2CE39E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC14referenceGuideAA0def9ReferenceI0OvgTo', symObjAddr: 0x21C, symBinAddr: 0x21177C, symSize: 0x10 } + - { offset: 0x2CE3B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC14referenceGuideAA0def9ReferenceI0OvgTo', symObjAddr: 0x21C, symBinAddr: 0x21177C, symSize: 0x10 } + - { offset: 0x2CE3D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC14referenceGuideAA0def9ReferenceI0Ovg', symObjAddr: 0x22C, symBinAddr: 0x21178C, symSize: 0x10 } + - { offset: 0x2CE402, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC13referenceEdgeAA0de9ReferenceI0OvgTo', symObjAddr: 0x23C, symBinAddr: 0x21179C, symSize: 0x10 } + - { offset: 0x2CE41A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC13referenceEdgeAA0de9ReferenceI0OvgTo', symObjAddr: 0x23C, symBinAddr: 0x21179C, symSize: 0x10 } + - { offset: 0x2CE441, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorCACycfc', symObjAddr: 0x26C, symBinAddr: 0x2117AC, symSize: 0x2C } + - { offset: 0x2CE49A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorCACycfcTo', symObjAddr: 0x298, symBinAddr: 0x2117D8, symSize: 0x2C } + - { offset: 0x2CE5CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0OvgTo', symObjAddr: 0xD6C, symBinAddr: 0x2122A8, symSize: 0x10 } + - { offset: 0x2CE5E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0OvgTo', symObjAddr: 0xD6C, symBinAddr: 0x2122A8, symSize: 0x10 } + - { offset: 0x2CE602, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovg', symObjAddr: 0xD7C, symBinAddr: 0x2122B8, symSize: 0x10 } + - { offset: 0x2CE61F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorCACycfc', symObjAddr: 0xD8C, symBinAddr: 0x2122C8, symSize: 0x2C } + - { offset: 0x2CE678, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorCACycfcTo', symObjAddr: 0xDB8, symBinAddr: 0x2122F4, symSize: 0x2C } + - { offset: 0x2CE6FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0OvgTo', symObjAddr: 0x12E0, symBinAddr: 0x21281C, symSize: 0x10 } + - { offset: 0x2CE712, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0OvgTo', symObjAddr: 0x12E0, symBinAddr: 0x21281C, symSize: 0x10 } + - { offset: 0x2CE72D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovg', symObjAddr: 0x12F0, symBinAddr: 0x21282C, symSize: 0x10 } + - { offset: 0x2CE75E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC20contentBoundingGuideAA0deg7ContentjK0OvgTo', symObjAddr: 0x1300, symBinAddr: 0x21283C, symSize: 0x10 } + - { offset: 0x2CE776, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC20contentBoundingGuideAA0deg7ContentjK0OvgTo', symObjAddr: 0x1300, symBinAddr: 0x21283C, symSize: 0x10 } + - { offset: 0x2CE791, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC20contentBoundingGuideAA0deg7ContentjK0Ovg', symObjAddr: 0x1310, symBinAddr: 0x21284C, symSize: 0x10 } + - { offset: 0x2CE7AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCACycfc', symObjAddr: 0x1320, symBinAddr: 0x21285C, symSize: 0x2C } + - { offset: 0x2CE807, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCACycfcTo', symObjAddr: 0x134C, symBinAddr: 0x212888, symSize: 0x2C } + - { offset: 0x2CEC16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC15reportIssueViewAA06HapticJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x212DE4, symSize: 0x20 } + - { offset: 0x2CED7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellCfETo', symObjAddr: 0x340, symBinAddr: 0x213124, symSize: 0x10 } + - { offset: 0x2CEDAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellCMa', symObjAddr: 0x350, symBinAddr: 0x213134, symSize: 0x20 } + - { offset: 0x2CEE35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC15reportIssueViewAA06HapticJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x212DE4, symSize: 0x20 } + - { offset: 0x2CEE95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC15reportIssueViewAA06HapticJ0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x212E04, symSize: 0x14 } + - { offset: 0x2CEF31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x34, symBinAddr: 0x212E18, symSize: 0xB0 } + - { offset: 0x2CEFCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC16setupReportIssue33_E2B55608484A2C4046C45CB8D998CE6DLLyyFyycfU_', symObjAddr: 0xE4, symBinAddr: 0x212EC8, symSize: 0xE0 } + - { offset: 0x2CF036, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0x1C4, symBinAddr: 0x212FA8, symSize: 0xBC } + - { offset: 0x2CF0B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x280, symBinAddr: 0x213064, symSize: 0x90 } + - { offset: 0x2CF0E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellCfD', symObjAddr: 0x310, symBinAddr: 0x2130F4, symSize: 0x30 } + - { offset: 0x2CF473, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x2A4, symBinAddr: 0x2133F8, symSize: 0x20 } + - { offset: 0x2CF96E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellCfETo', symObjAddr: 0xD40, symBinAddr: 0x213E94, symSize: 0x90 } + - { offset: 0x2CF99D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellCMa', symObjAddr: 0xDD0, symBinAddr: 0x213F24, symSize: 0x20 } + - { offset: 0x2CFB3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x2A4, symBinAddr: 0x2133F8, symSize: 0x20 } + - { offset: 0x2CFB9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12seeAllButtonSo8UIButtonCSgvsTo', symObjAddr: 0x2C4, symBinAddr: 0x213418, symSize: 0x14 } + - { offset: 0x2CFBEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionViewSo012UICollectionG0CSgvgTo', symObjAddr: 0x2D8, symBinAddr: 0x21342C, symSize: 0x20 } + - { offset: 0x2CFC49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionViewSo012UICollectionG0CSgvsTo', symObjAddr: 0x2F8, symBinAddr: 0x21344C, symSize: 0x14 } + - { offset: 0x2CFC9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC10scrollViewSo08UIScrollG0CSgvgTo', symObjAddr: 0x30C, symBinAddr: 0x213460, symSize: 0x20 } + - { offset: 0x2CFCF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC10scrollViewSo08UIScrollG0CSgvsTo', symObjAddr: 0x32C, symBinAddr: 0x213480, symSize: 0x14 } + - { offset: 0x2CFD45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC15collectionWidthSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x340, symBinAddr: 0x213494, symSize: 0x20 } + - { offset: 0x2CFD9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC15collectionWidthSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x360, symBinAddr: 0x2134B4, symSize: 0x14 } + - { offset: 0x2CFE72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC19collectionViewWidth12CoreGraphics7CGFloatVvg', symObjAddr: 0x374, symBinAddr: 0x2134C8, symSize: 0x178 } + - { offset: 0x2D0207, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12awakeFromNibyyFTo', symObjAddr: 0x4EC, symBinAddr: 0x213640, symSize: 0xA0 } + - { offset: 0x2D027F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC06updateD010categoriesySay7Penguin11POICategoryVG_tF', symObjAddr: 0x58C, symBinAddr: 0x2136E0, symSize: 0x130 } + - { offset: 0x2D03D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12seeAllActionyySo8UIButtonCFTo', symObjAddr: 0x6BC, symBinAddr: 0x213810, symSize: 0x70 } + - { offset: 0x2D041F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionG0C_SitFTo', symObjAddr: 0x72C, symBinAddr: 0x213880, symSize: 0x58 } + - { offset: 0x2D04CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_13cellForItemAtSo012UICollectiongE0CSo0lG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x784, symBinAddr: 0x2138D8, symSize: 0x170 } + - { offset: 0x2D057B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_6layout13sizeForItemAtSo6CGSizeVSo012UICollectionG0C_So0nG6LayoutC10Foundation9IndexPathVtFTo', symObjAddr: 0x8F4, symBinAddr: 0x213A48, symSize: 0x104 } + - { offset: 0x2D0647, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_15didSelectItemAtySo012UICollectionG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x9F8, symBinAddr: 0x213B4C, symSize: 0xAC } + - { offset: 0x2D0671, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0xAA4, symBinAddr: 0x213BF8, symSize: 0x10C } + - { offset: 0x2D06B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0xBB0, symBinAddr: 0x213D04, symSize: 0x48 } + - { offset: 0x2D06C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xBF8, symBinAddr: 0x213D4C, symSize: 0xF0 } + - { offset: 0x2D06F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xCE8, symBinAddr: 0x213E3C, symSize: 0x28 } + - { offset: 0x2D070D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellCfD', symObjAddr: 0xD10, symBinAddr: 0x213E64, symSize: 0x30 } + - { offset: 0x2D0730, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionG0C_SitFTf4ddn_n', symObjAddr: 0xDF0, symBinAddr: 0x213F44, symSize: 0x7C } + - { offset: 0x2D08EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_15didSelectItemAtySo012UICollectionG0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0xE6C, symBinAddr: 0x213FC0, symSize: 0xFC } + - { offset: 0x2D0CCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2140BC, symSize: 0x10 } + - { offset: 0x2D0E3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewCfETo', symObjAddr: 0x2C0, symBinAddr: 0x21437C, symSize: 0x10 } + - { offset: 0x2D0E69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewCMa', symObjAddr: 0x2D0, symBinAddr: 0x21438C, symSize: 0x20 } + - { offset: 0x2D0EEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2140BC, symSize: 0x10 } + - { offset: 0x2D0F07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2140BC, symSize: 0x10 } + - { offset: 0x2D0F4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC07contentE0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x2140CC, symSize: 0x34 } + - { offset: 0x2D0FAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x44, symBinAddr: 0x214100, symSize: 0x94 } + - { offset: 0x2D104E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xD8, symBinAddr: 0x214194, symSize: 0x94 } + - { offset: 0x2D10AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC10commonInit33_E415634ACC503914C6E8F859F84EEA83LLyyF', symObjAddr: 0x16C, symBinAddr: 0x214228, symSize: 0x124 } + - { offset: 0x2D1178, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewCfD', symObjAddr: 0x290, symBinAddr: 0x21434C, symSize: 0x30 } + - { offset: 0x2D1800, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewCfETo', symObjAddr: 0xE6C, symBinAddr: 0x215218, symSize: 0x58 } + - { offset: 0x2D182F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewCMa', symObjAddr: 0xEC4, symBinAddr: 0x215270, symSize: 0x20 } + - { offset: 0x2D1843, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC16hideUnmuteButtonyyFyycfU_TA', symObjAddr: 0xF08, symBinAddr: 0x2152B4, symSize: 0x20 } + - { offset: 0x2D1857, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xF28, symBinAddr: 0x2152D4, symSize: 0x10 } + - { offset: 0x2D186B, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xF38, symBinAddr: 0x2152E4, symSize: 0x8 } + - { offset: 0x2D187F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC16hideUnmuteButtonyyFyycfU0_TA', symObjAddr: 0xF40, symBinAddr: 0x2152EC, symSize: 0x20 } + - { offset: 0x2D1893, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC14hideMuteButtonyyFyycfU_TA', symObjAddr: 0xF60, symBinAddr: 0x21530C, symSize: 0x20 } + - { offset: 0x2D18A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC14hideMuteButtonyyFyycfU0_TA', symObjAddr: 0xF80, symBinAddr: 0x21532C, symSize: 0x20 } + - { offset: 0x2D18BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC16muteButtonTappedyyFyycfU_TA', symObjAddr: 0xFA0, symBinAddr: 0x21534C, symSize: 0x18 } + - { offset: 0x2D19D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2143AC, symSize: 0x10 } + - { offset: 0x2D19E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2143AC, symSize: 0x10 } + - { offset: 0x2D1A2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC07contentF0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x2143BC, symSize: 0x34 } + - { offset: 0x2D1A7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC05stackF0So07UIStackF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x2143F0, symSize: 0x10 } + - { offset: 0x2D1A96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC05stackF0So07UIStackF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x2143F0, symSize: 0x10 } + - { offset: 0x2D1AD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC05stackF0So07UIStackF0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x214400, symSize: 0x34 } + - { offset: 0x2D1B25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC10muteButtonSo8UIButtonCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x214434, symSize: 0x10 } + - { offset: 0x2D1B3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC10muteButtonSo8UIButtonCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x214434, symSize: 0x10 } + - { offset: 0x2D1B7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC10muteButtonSo8UIButtonCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x214444, symSize: 0x34 } + - { offset: 0x2D1BCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC12unmuteButtonSo8UIButtonCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x214478, symSize: 0x10 } + - { offset: 0x2D1BE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC12unmuteButtonSo8UIButtonCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x214478, symSize: 0x10 } + - { offset: 0x2D1C1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC12unmuteButtonSo8UIButtonCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x214488, symSize: 0x34 } + - { offset: 0x2D1C7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x110, symBinAddr: 0x2144BC, symSize: 0xB8 } + - { offset: 0x2D1CFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1C8, symBinAddr: 0x214574, symSize: 0xA4 } + - { offset: 0x2D1D30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x26C, symBinAddr: 0x214618, symSize: 0x28 } + - { offset: 0x2D1E0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC10commonInit33_67EF21852787D1A38B8194476BDF5B6FLLyyF', symObjAddr: 0x294, symBinAddr: 0x214640, symSize: 0x494 } + - { offset: 0x2D200D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC16muteButtonTappedyyFTo', symObjAddr: 0x74C, symBinAddr: 0x214AF8, symSize: 0x28 } + - { offset: 0x2D2021, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC17unmuteButonTappedyyFTo', symObjAddr: 0xACC, symBinAddr: 0x214E78, symSize: 0x28 } + - { offset: 0x2D2035, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewCfD', symObjAddr: 0xE3C, symBinAddr: 0x2151E8, symSize: 0x30 } + - { offset: 0x2D23F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwcp', symObjAddr: 0x5C, symBinAddr: 0x215390, symSize: 0x54 } + - { offset: 0x2D240A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwca', symObjAddr: 0xB0, symBinAddr: 0x2153E4, symSize: 0x8C } + - { offset: 0x2D241E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwta', symObjAddr: 0x150, symBinAddr: 0x215470, symSize: 0x54 } + - { offset: 0x2D2432, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwet', symObjAddr: 0x1A4, symBinAddr: 0x2154C4, symSize: 0x48 } + - { offset: 0x2D2446, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwst', symObjAddr: 0x1EC, symBinAddr: 0x21550C, symSize: 0x4C } + - { offset: 0x2D245A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVMa', symObjAddr: 0x238, symBinAddr: 0x215558, symSize: 0x10 } + - { offset: 0x2D294F, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin5FloorC_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5F17CGvgSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0xA18, symBinAddr: 0x215B0C, symSize: 0x100 } + - { offset: 0x2D2BC8, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin5FloorC_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5F17CGvgSbAG_AGtXEfU_Tf1nnncn_n', symObjAddr: 0xB18, symBinAddr: 0x215C0C, symSize: 0x484 } + - { offset: 0x2D30A0, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry7Penguin5FloorCG_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5J17CGvgSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0xF9C, symBinAddr: 0x216090, symSize: 0xF4 } + - { offset: 0x2D3210, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin5FloorC_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5G17CGvgSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x1090, symBinAddr: 0x216184, symSize: 0x26C } + - { offset: 0x2D35AB, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin5FloorC_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5H17CGvgSbAG_AGtXEfU_Tf1nnnnc_n', symObjAddr: 0x12FC, symBinAddr: 0x2163F0, symSize: 0x2E8 } + - { offset: 0x2D386A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs0G3KeyAAWl', symObjAddr: 0x20F4, symBinAddr: 0x217180, symSize: 0x40 } + - { offset: 0x2D387E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseVMa', symObjAddr: 0x225C, symBinAddr: 0x2171C0, symSize: 0x10 } + - { offset: 0x2D3892, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOMa', symObjAddr: 0x23D0, symBinAddr: 0x2171D0, symSize: 0x10 } + - { offset: 0x2D38A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOSHAASQWb', symObjAddr: 0x23E0, symBinAddr: 0x2171E0, symSize: 0x4 } + - { offset: 0x2D38BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFSQAAWl', symObjAddr: 0x23E4, symBinAddr: 0x2171E4, symSize: 0x40 } + - { offset: 0x2D38CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2424, symBinAddr: 0x217224, symSize: 0x4 } + - { offset: 0x2D38E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2428, symBinAddr: 0x217228, symSize: 0x40 } + - { offset: 0x2D38F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x2468, symBinAddr: 0x217268, symSize: 0x4 } + - { offset: 0x2D390A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x246C, symBinAddr: 0x21726C, symSize: 0x40 } + - { offset: 0x2D391E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs0H3KeyAAWl', symObjAddr: 0x24AC, symBinAddr: 0x2172AC, symSize: 0x40 } + - { offset: 0x2D3932, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVACSeAAWl', symObjAddr: 0x24EC, symBinAddr: 0x2172EC, symSize: 0x40 } + - { offset: 0x2D3946, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVACSEAAWl', symObjAddr: 0x2590, symBinAddr: 0x21732C, symSize: 0x40 } + - { offset: 0x2D395A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOMa', symObjAddr: 0x26B0, symBinAddr: 0x21736C, symSize: 0x10 } + - { offset: 0x2D396E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOSHAASQWb', symObjAddr: 0x26C0, symBinAddr: 0x21737C, symSize: 0x4 } + - { offset: 0x2D3982, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFSQAAWl', symObjAddr: 0x26C4, symBinAddr: 0x217380, symSize: 0x40 } + - { offset: 0x2D3996, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2704, symBinAddr: 0x2173C0, symSize: 0x4 } + - { offset: 0x2D39AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2708, symBinAddr: 0x2173C4, symSize: 0x40 } + - { offset: 0x2D39BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x2748, symBinAddr: 0x217404, symSize: 0x4 } + - { offset: 0x2D39D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x274C, symBinAddr: 0x217408, symSize: 0x40 } + - { offset: 0x2D3A00, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin5FloorCG_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5G17CGvgSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x248, symBinAddr: 0x215568, symSize: 0x68 } + - { offset: 0x2D3ACB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x518, symBinAddr: 0x2156E4, symSize: 0x28 } + - { offset: 0x2D3AE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x540, symBinAddr: 0x21570C, symSize: 0x28 } + - { offset: 0x2D3B18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x8B4, symBinAddr: 0x2159A8, symSize: 0x28 } + - { offset: 0x2D3B34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x8DC, symBinAddr: 0x2159D0, symSize: 0x28 } + - { offset: 0x2D3C85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV6encode2toys7Encoder_p_tKF', symObjAddr: 0x2B0, symBinAddr: 0x2155D0, symSize: 0x114 } + - { offset: 0x2D3CDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x568, symBinAddr: 0x215734, symSize: 0x28 } + - { offset: 0x2D3D03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x590, symBinAddr: 0x21575C, symSize: 0x18 } + - { offset: 0x2D3D17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x5A8, symBinAddr: 0x215774, symSize: 0x198 } + - { offset: 0x2D3D6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0G3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x800, symBinAddr: 0x21590C, symSize: 0x78 } + - { offset: 0x2D3DB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0G3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x878, symBinAddr: 0x215984, symSize: 0x24 } + - { offset: 0x2D3DEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x904, symBinAddr: 0x2159F8, symSize: 0x40 } + - { offset: 0x2D3E15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x944, symBinAddr: 0x215A38, symSize: 0x14 } + - { offset: 0x2D3F1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5FloorCGvgTf4x_n', symObjAddr: 0x15E4, symBinAddr: 0x2166D8, symSize: 0x220 } + - { offset: 0x2D41A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV13localizedNameSSvgTf4x_n', symObjAddr: 0x1804, symBinAddr: 0x2168F8, symSize: 0x3B4 } + - { offset: 0x2D472A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x1BB8, symBinAddr: 0x216CAC, symSize: 0x13C } + - { offset: 0x2D474D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x1CF4, symBinAddr: 0x216DE8, symSize: 0x168 } + - { offset: 0x2D4818, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x1E5C, symBinAddr: 0x216F50, symSize: 0x230 } + - { offset: 0x2D4BED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC15_sharedInstance33_6103213578448421EE2DA7F45067FF4BLLACSgvpZ', symObjAddr: 0x2A20, symBinAddr: 0x36E0F0, symSize: 0x0 } + - { offset: 0x2D5035, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerCMa', symObjAddr: 0x17AC, symBinAddr: 0x218BC0, symSize: 0x20 } + - { offset: 0x2D5054, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciMSi_8PenNavUI5ColorVTg5', symObjAddr: 0x17CC, symBinAddr: 0x218BE0, symSize: 0x88 } + - { offset: 0x2D508D, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x1858, symBinAddr: 0x218C6C, symSize: 0x88 } + - { offset: 0x2D50F8, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciMSi_8PenNavUI5ColorVTg5', symObjAddr: 0x191C, symBinAddr: 0x218D30, symSize: 0x144 } + - { offset: 0x2D5190, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciMSi_8PenNavUI5ColorVTg5.resume.0', symObjAddr: 0x1A60, symBinAddr: 0x218E74, symSize: 0xCC } + - { offset: 0x2D521C, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x1B2C, symBinAddr: 0x218F40, symSize: 0x244 } + - { offset: 0x2D530B, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5.resume.0', symObjAddr: 0x1D70, symBinAddr: 0x219184, symSize: 0x1CC } + - { offset: 0x2D5386, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvMSi_8PenNavUI5ColorVTg5', symObjAddr: 0x1F3C, symBinAddr: 0x219350, symSize: 0x18 } + - { offset: 0x2D53A9, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvMSi_8PenNavUI5ColorVTg5.resume.0', symObjAddr: 0x1F54, symBinAddr: 0x219368, symSize: 0xC } + - { offset: 0x2D53C5, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvMSi_8PenNavUI5ColorVTg5.resume.0', symObjAddr: 0x1F54, symBinAddr: 0x219368, symSize: 0xC } + - { offset: 0x2D53D6, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x1F60, symBinAddr: 0x219374, symSize: 0x18 } + - { offset: 0x2D54E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVWOb', symObjAddr: 0x24E8, symBinAddr: 0x219830, symSize: 0x44 } + - { offset: 0x2D54F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC13updateObjects2on5using8mapStatey7Penguin5FloorCSg_0M10INRenderer10PIRendererCSgAA03MapL0OtFySayAA0dE0VGSgcfU_TA', symObjAddr: 0x2650, symBinAddr: 0x2198D4, symSize: 0xC } + - { offset: 0x2D5508, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC14scheduleUpdate5after2on5using8mapStateySd_7Penguin5FloorC0N10INRenderer10PIRendererCSgAA03MapM0OtFySo7NSTimerCYbcfU_TA', symObjAddr: 0x2914, symBinAddr: 0x219B5C, symSize: 0x10 } + - { offset: 0x2D551C, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2924, symBinAddr: 0x219B6C, symSize: 0x10 } + - { offset: 0x2D5530, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2934, symBinAddr: 0x219B7C, symSize: 0x8 } + - { offset: 0x2D5544, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ColorVSgWOy', symObjAddr: 0x2974, symBinAddr: 0x219BBC, symSize: 0x30 } + - { offset: 0x2D5558, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ColorVSgWOe', symObjAddr: 0x29A4, symBinAddr: 0x219BEC, symSize: 0x30 } + - { offset: 0x2D55AF, size: 0x8, addend: 0x0, symName: '_$sSDyq_Sgxcis8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x0, symBinAddr: 0x217448, symSize: 0xE4 } + - { offset: 0x2D56A7, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxcisSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0xE4, symBinAddr: 0x21752C, symSize: 0x19C } + - { offset: 0x2D58B1, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciMSi_8PenNavUI5ColorVTg5', symObjAddr: 0x1628, symBinAddr: 0x218A3C, symSize: 0x64 } + - { offset: 0x2D58E2, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x1690, symBinAddr: 0x218AA4, symSize: 0x64 } + - { offset: 0x2D5B61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC11drawObjects2on5using8mapStatey7Penguin5FloorCSg_0M10INRenderer10PIRendererCSgAA03MapL0OtF', symObjAddr: 0x2B4, symBinAddr: 0x2176C8, symSize: 0x510 } + - { offset: 0x2D5D2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC14scheduleUpdate5after2on5using8mapStateySd_7Penguin5FloorC0N10INRenderer10PIRendererCSgAA03MapM0OtFySo7NSTimerCYbcfU_', symObjAddr: 0x7C4, symBinAddr: 0x217BD8, symSize: 0x19C } + - { offset: 0x2D5E91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC13updateObjects2on5using8mapStatey7Penguin5FloorCSg_0M10INRenderer10PIRendererCSgAA03MapL0OtF', symObjAddr: 0x960, symBinAddr: 0x217D74, symSize: 0x264 } + - { offset: 0x2D6067, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC13updateObjects2on5using8mapStatey7Penguin5FloorCSg_0M10INRenderer10PIRendererCSgAA03MapL0OtFySayAA0dE0VGSgcfU_', symObjAddr: 0xBC4, symBinAddr: 0x217FD8, symSize: 0x254 } + - { offset: 0x2D62E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC20removeExpiredObjects5usingy17PenguinINRenderer10PIRendererCSg_tF', symObjAddr: 0xE18, symBinAddr: 0x21822C, symSize: 0x810 } + - { offset: 0x2D6747, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC21stopRefreshingObjectsyyF', symObjAddr: 0x1724, symBinAddr: 0x218B38, symSize: 0x48 } + - { offset: 0x2D67AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerCfD', symObjAddr: 0x176C, symBinAddr: 0x218B80, symSize: 0x40 } + - { offset: 0x2D6806, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC6sharedACvgZTf4d_n', symObjAddr: 0x1F78, symBinAddr: 0x21938C, symSize: 0x8C } + - { offset: 0x2D68AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC16getCachedObjects2onSayAA0dE0VG7Penguin5FloorCSg_tFTf4nd_n', symObjAddr: 0x2004, symBinAddr: 0x219418, symSize: 0x418 } + - { offset: 0x2D6DF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC12cacheObjects_2onySayAA0dE0VG_Say7Penguin5FloorCSgGtFTf4nnd_n', symObjAddr: 0x265C, symBinAddr: 0x2198E0, symSize: 0x27C } + - { offset: 0x2D73F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parsePatternyAA3DOMO0F0VAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x219C38, symSize: 0x3B0 } + - { offset: 0x2D743B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parsePatternyAA3DOMO0F0VAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x219C38, symSize: 0x3B0 } + - { offset: 0x2D7515, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOAGSYAAWl', symObjAddr: 0x408, symBinAddr: 0x219FE8, symSize: 0x40 } + - { offset: 0x2D7917, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC05fetchD7Details33_C0C62F0363BB654C05AA258EF929E3E6LL3poi8location6sourcey7Penguin10PoiPolygonV_AI10PILocationCSgAA06SourceF0OtF', symObjAddr: 0x10, symBinAddr: 0x21A028, symSize: 0x2F4 } + - { offset: 0x2D7B44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelCMa', symObjAddr: 0x628, symBinAddr: 0x21A640, symSize: 0x20 } + - { offset: 0x2D7B58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC20processFetchResponse33_C0C62F0363BB654C05AA258EF929E3E6LL7poiDatayAA7POIDataCSg_tFyyScMYccfU_TA', symObjAddr: 0x6DC, symBinAddr: 0x21A6B0, symSize: 0x8 } + - { offset: 0x2D7B6C, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x6E4, symBinAddr: 0x21A6B8, symSize: 0x10 } + - { offset: 0x2D7B80, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x6F4, symBinAddr: 0x21A6C8, symSize: 0x8 } + - { offset: 0x2D7B94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC05fetchD7Details33_C0C62F0363BB654C05AA258EF929E3E6LL3poi8location6sourcey7Penguin10PoiPolygonV_AI10PILocationCSgAA06SourceF0OtFyAA7POIDataCSgcACcfu0_yAScfu1_TA', symObjAddr: 0x864, symBinAddr: 0x21A6D0, symSize: 0x4 } + - { offset: 0x2D7BAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC05fetchD7Details33_C0C62F0363BB654C05AA258EF929E3E6LL3poi8location6sourcey7Penguin10PoiPolygonV_AI10PILocationCSgAA06SourceF0OtFyAA7POIDataCSgcACcfu0_yAScfu1_TA', symObjAddr: 0x864, symBinAddr: 0x21A6D0, symSize: 0x4 } + - { offset: 0x2D7C17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC05fetchD7Details33_C0C62F0363BB654C05AA258EF929E3E6LL3poi8location6sourcey7Penguin10PoiPolygonV_AI10PILocationCSgAA06SourceF0OtF', symObjAddr: 0x10, symBinAddr: 0x21A028, symSize: 0x2F4 } + - { offset: 0x2D7E82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC20processFetchResponse33_C0C62F0363BB654C05AA258EF929E3E6LL7poiDatayAA7POIDataCSg_tF', symObjAddr: 0x304, symBinAddr: 0x21A31C, symSize: 0x1D8 } + - { offset: 0x2D7EE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC20processFetchResponse33_C0C62F0363BB654C05AA258EF929E3E6LL7poiDatayAA7POIDataCSg_tFyyScMYccfU_', symObjAddr: 0x4DC, symBinAddr: 0x21A4F4, symSize: 0x120 } + - { offset: 0x2D8044, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelCfD', symObjAddr: 0x5FC, symBinAddr: 0x21A614, symSize: 0x2C } + - { offset: 0x2D8429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterVMa', symObjAddr: 0x20C, symBinAddr: 0x21A6D4, symSize: 0x10 } + - { offset: 0x2D85A6, size: 0x8, addend: 0x0, symName: ___swift_memcpy9_8, symObjAddr: 0x4CC, symBinAddr: 0x21A8C0, symSize: 0x14 } + - { offset: 0x2D85BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOwet', symObjAddr: 0x4E4, symBinAddr: 0x21A8D4, symSize: 0x20 } + - { offset: 0x2D85CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOwst', symObjAddr: 0x504, symBinAddr: 0x21A8F4, symSize: 0x30 } + - { offset: 0x2D85E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOwug', symObjAddr: 0x534, symBinAddr: 0x21A924, symSize: 0x1C } + - { offset: 0x2D85F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOwui', symObjAddr: 0x554, symBinAddr: 0x21A940, symSize: 0x20 } + - { offset: 0x2D860A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOMa', symObjAddr: 0x574, symBinAddr: 0x21A960, symSize: 0x10 } + - { offset: 0x2D861E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVMa', symObjAddr: 0x6B8, symBinAddr: 0x21A970, symSize: 0x10 } + - { offset: 0x2D86EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV6format_9precisionSSSfd_AC9PrecisionOSgtF', symObjAddr: 0x21C, symBinAddr: 0x21A6E4, symSize: 0x1C4 } + - { offset: 0x2D8A56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x3E0, symBinAddr: 0x21A8A8, symSize: 0xC } + - { offset: 0x2D8A6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x3EC, symBinAddr: 0x21A8B4, symSize: 0xC } + - { offset: 0x2D8E2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC14sharedInstance33_F9EEFDC5370A00C4ACDB141165CBB172LLACSgvpZ', symObjAddr: 0x5490, symBinAddr: 0x36E398, symSize: 0x0 } + - { offset: 0x2D92FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF', symObjAddr: 0x3A0, symBinAddr: 0x21AD20, symSize: 0x358 } + - { offset: 0x2D974B, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFyAJcfU0_', symObjAddr: 0x33CC, symBinAddr: 0x21DCB8, symSize: 0x1F8 } + - { offset: 0x2D97B0, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFyAJcfU0_yyScMYccfU_', symObjAddr: 0x35C4, symBinAddr: 0x21DEB0, symSize: 0x64 } + - { offset: 0x2D9802, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheCMa', symObjAddr: 0x3780, symBinAddr: 0x21E06C, symSize: 0x20 } + - { offset: 0x2D9852, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFTf4nnd_n', symObjAddr: 0x37C4, symBinAddr: 0x21E0B0, symSize: 0x700 } + - { offset: 0x2D9D86, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFyAJcfU0_TA', symObjAddr: 0x3F4C, symBinAddr: 0x21E7B4, symSize: 0x8 } + - { offset: 0x2D9D9A, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFyAJcfU0_yyScMYccfU_TA', symObjAddr: 0x3FEC, symBinAddr: 0x21E7F0, symSize: 0xC } + - { offset: 0x2D9DAE, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x3FF8, symBinAddr: 0x21E7FC, symSize: 0x10 } + - { offset: 0x2D9DC2, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x4008, symBinAddr: 0x21E80C, symSize: 0x8 } + - { offset: 0x2D9E5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC08downloadD033_F9EEFDC5370A00C4ACDB141165CBB172LL3urly10Foundation3URLV_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x4298, symBinAddr: 0x21E98C, symSize: 0x8 } + - { offset: 0x2D9F0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF03$s8ab34UI5PlaceC7getIcon10completionyySo7L15CSgc_tFyAHcfU0_ALIegg_Tf1ncn_n0mab41UI16SelectionManagerC16updateSymbolIconyytrL7CSgcfU_AA0xY0CSgXwz_XxAA0O0CTf1nnc_nTf4nngg_n', symObjAddr: 0x4310, symBinAddr: 0x21EA04, symSize: 0x444 } + - { offset: 0x2DA0C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF03$s8ab62UI20AmenityTableViewCellC7setData7amenityyAA9AmenitiesV_tFySo7L7CSgcfU_AA0opqR0CTf1ncn_nTf4nng_n', symObjAddr: 0x4754, symBinAddr: 0x21EE48, symSize: 0x448 } + - { offset: 0x2DA2C3, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE18stopURLDownloading7withURLySS_tFTf4nd_n', symObjAddr: 0x4B9C, symBinAddr: 0x21F290, symSize: 0x184 } + - { offset: 0x2DA3D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOACSHAAWl', symObjAddr: 0x4D28, symBinAddr: 0x21F414, symSize: 0x40 } + - { offset: 0x2DA3E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC7setData7amenityyAA9AmenitiesV_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x4DEC, symBinAddr: 0x21F4C8, symSize: 0x8 } + - { offset: 0x2DA3FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_TA', symObjAddr: 0x4EA4, symBinAddr: 0x21F580, symSize: 0x4C } + - { offset: 0x2DA411, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_yyScMYccfU0_TA', symObjAddr: 0x4EF0, symBinAddr: 0x21F5CC, symSize: 0x24 } + - { offset: 0x2DA445, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_yyScMYccfU_TA', symObjAddr: 0x4FA0, symBinAddr: 0x21F67C, symSize: 0x48 } + - { offset: 0x2DA459, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC08downloadD033_F9EEFDC5370A00C4ACDB141165CBB172LL_10completiony10Foundation3URLV_ySo7UIImageCSgctFyAG4DataVSg_So13NSURLResponseCSgs5Error_pSgtYbcfU_yyScMYccfU0_TA', symObjAddr: 0x50A4, symBinAddr: 0x21F780, symSize: 0x60 } + - { offset: 0x2DA46D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC11downloadSvg33_F9EEFDC5370A00C4ACDB141165CBB172LL7withURL10completiony10Foundation0O0V_ySo7UIImageCSgctFyAH4DataVSg_So13NSURLResponseCSgs5Error_pSgtYbcfU_yyScMYccfU_TA', symObjAddr: 0x53A0, symBinAddr: 0x21FA00, symSize: 0xC } + - { offset: 0x2DA4D6, size: 0x8, addend: 0x0, symName: '_$sShyShyxGqd__nc7ElementQyd__RszSTRd__lufC8PenNavUI18FloatingPanelStateC_SD4KeysVyAfD0eF15LayoutAnchoring_p_GTt0g5', symObjAddr: 0x0, symBinAddr: 0x21A980, symSize: 0x1E0 } + - { offset: 0x2DA643, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay10Foundation3URLVG_Tg5', symObjAddr: 0x1E0, symBinAddr: 0x21AB60, symSize: 0xC8 } + - { offset: 0x2DA78B, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay8PenNavUI13SearchSectionOG_Tg5', symObjAddr: 0x2A8, symBinAddr: 0x21AC28, symSize: 0x30 } + - { offset: 0x2DA7AB, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay8PenNavUI13SearchSectionOG_Tg5', symObjAddr: 0x2A8, symBinAddr: 0x21AC28, symSize: 0x30 } + - { offset: 0x2DA7CB, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay8PenNavUI13SearchSectionOG_Tg5', symObjAddr: 0x2A8, symBinAddr: 0x21AC28, symSize: 0x30 } + - { offset: 0x2DA7DF, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay8PenNavUI13SearchSectionOG_Tg5', symObjAddr: 0x2A8, symBinAddr: 0x21AC28, symSize: 0x30 } + - { offset: 0x2DA7F3, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay8PenNavUI13SearchSectionOG_Tg5', symObjAddr: 0x2A8, symBinAddr: 0x21AC28, symSize: 0x30 } + - { offset: 0x2DA807, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay8PenNavUI13SearchSectionOG_Tg5', symObjAddr: 0x2A8, symBinAddr: 0x21AC28, symSize: 0x30 } + - { offset: 0x2DA88E, size: 0x8, addend: 0x0, symName: '_$sSD11removeValue6forKeyq_Sgx_tF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x2D8, symBinAddr: 0x21AC58, symSize: 0xC8 } + - { offset: 0x2DAB5F, size: 0x8, addend: 0x0, symName: '_$sShyShyxGqd__nc7ElementQyd__RszSTRd__lufCSf_SaySfGTt0g5Tf4g_n', symObjAddr: 0x40A0, symBinAddr: 0x21E814, symSize: 0x70 } + - { offset: 0x2DAC90, size: 0x8, addend: 0x0, symName: '_$sShyShyxGqd__nc7ElementQyd__RszSTRd__lufC10Foundation3URLV_SayAFGTt0g5Tf4g_n', symObjAddr: 0x4110, symBinAddr: 0x21E884, symSize: 0x108 } + - { offset: 0x2DADE5, size: 0x8, addend: 0x0, symName: '_$sShyShyxGqd__nc7ElementQyd__RszSTRd__lufC8PenNavUI9ToastTypeO_SayAFGTt0g5Tf4g_n', symObjAddr: 0x42A0, symBinAddr: 0x21E994, symSize: 0x70 } + - { offset: 0x2DB113, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC03getD0_10completiony10Foundation3URLV_ySo7UIImageCSgctF', symObjAddr: 0x6F8, symBinAddr: 0x21B078, symSize: 0x1B8 } + - { offset: 0x2DB1E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctF', symObjAddr: 0x8B0, symBinAddr: 0x21B230, symSize: 0x300 } + - { offset: 0x2DB260, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_', symObjAddr: 0xBB0, symBinAddr: 0x21B530, symSize: 0x44C } + - { offset: 0x2DB34D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_yyScMYccfU_', symObjAddr: 0xFFC, symBinAddr: 0x21B97C, symSize: 0x110 } + - { offset: 0x2DB698, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC21handleInvalidResouces33_F9EEFDC5370A00C4ACDB141165CBB172LL3url8response5errory10Foundation3URLV_So13NSURLResponseCSgs5Error_pSgtF', symObjAddr: 0x1A84, symBinAddr: 0x21C404, symSize: 0x14C } + - { offset: 0x2DB81D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC06cancelD8Download6forURLy10Foundation0I0V_tF', symObjAddr: 0x1BD0, symBinAddr: 0x21C550, symSize: 0xD4 } + - { offset: 0x2DB8FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC22cancelDownloadSequenceyyF', symObjAddr: 0x1CA4, symBinAddr: 0x21C624, symSize: 0x200 } + - { offset: 0x2DBC2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC21downloadImagesToFiles4urlsySaySSG_tF', symObjAddr: 0x1EA4, symBinAddr: 0x21C824, symSize: 0x57C } + - { offset: 0x2DC457, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC08downloadD033_F9EEFDC5370A00C4ACDB141165CBB172LL3urly10Foundation3URLV_tFySo7UIImageCSgcfU_', symObjAddr: 0x2420, symBinAddr: 0x21CDA0, symSize: 0xD8 } + - { offset: 0x2DC6B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC14getPathForFile33_F9EEFDC5370A00C4ACDB141165CBB172LL3url10Foundation3URLVAI_tF', symObjAddr: 0x24F8, symBinAddr: 0x21CE78, symSize: 0x134 } + - { offset: 0x2DC7E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC03getD13FromDocuments3urlSo7UIImageCSg10Foundation3URLV_tF', symObjAddr: 0x262C, symBinAddr: 0x21CFAC, symSize: 0x1DC } + - { offset: 0x2DC8CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheCfd', symObjAddr: 0x2808, symBinAddr: 0x21D188, symSize: 0x3C } + - { offset: 0x2DC8FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheCfD', symObjAddr: 0x2844, symBinAddr: 0x21D1C4, symSize: 0x44 } + - { offset: 0x2DCA4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadd4FromE033_F9EEFDC5370A00C4ACDB141165CBB172LLySo7UIImageCSg10Foundation3URLVFTf4nd_n', symObjAddr: 0x3628, symBinAddr: 0x21DF14, symSize: 0x158 } + - { offset: 0x2DD08B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateC12fetchRequestSo07NSFetchG0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x21FA84, symSize: 0x6C } + - { offset: 0x2DD0E6, size: 0x8, addend: 0x0, symName: _keypath_get_selector_lastUpdateTime, symObjAddr: 0x6C, symBinAddr: 0x21FAF0, symSize: 0xC } + - { offset: 0x2DD0FA, size: 0x8, addend: 0x0, symName: _keypath_get_selector_tableName, symObjAddr: 0xB0, symBinAddr: 0x21FB34, symSize: 0xC } + - { offset: 0x2DD93D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperCMa', symObjAddr: 0x13B0, symBinAddr: 0x220F28, symSize: 0x20 } + - { offset: 0x2DD951, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC03setD4Mode4mode10completionyAA0dG0O_ySbcSgtFyycfU_TA', symObjAddr: 0x1704, symBinAddr: 0x2211E4, symSize: 0xC } + - { offset: 0x2DDB80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC03setD4Mode4mode10completionyAA0dG0O_ySbcSgtF', symObjAddr: 0x0, symBinAddr: 0x21FB78, symSize: 0x5E4 } + - { offset: 0x2DDDD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC03setD4Mode4mode10completionyAA0dG0O_ySbcSgtFyycfU_', symObjAddr: 0x5E4, symBinAddr: 0x22015C, symSize: 0x100 } + - { offset: 0x2DDF80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC7drawMap3for10completiony7Penguin5FloorCSg_ySbcSgtF', symObjAddr: 0x6E4, symBinAddr: 0x22025C, symSize: 0x1F8 } + - { offset: 0x2DE065, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC13removeObjectsyyF', symObjAddr: 0x8DC, symBinAddr: 0x220454, symSize: 0x88 } + - { offset: 0x2DE197, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC19drawNavigationRoute7subpathy7Penguin7SubPathCSg_tF', symObjAddr: 0x964, symBinAddr: 0x2204DC, symSize: 0x5F4 } + - { offset: 0x2DE4EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC29setLocationProviderCoordinate_28skipsIntermediateCoordinatesySo22CLLocationCoordinate2DVSg_SbtF', symObjAddr: 0xF58, symBinAddr: 0x220AD0, symSize: 0xC8 } + - { offset: 0x2DE597, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC30setLocationIndicatorCoordinate_5usingySo22CLLocationCoordinate2DV_17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0x1020, symBinAddr: 0x220B98, symSize: 0xEC } + - { offset: 0x2DE629, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC34setLocationIndicatorAccuracyRadiusyySdSgF', symObjAddr: 0x1204, symBinAddr: 0x220D7C, symSize: 0xE8 } + - { offset: 0x2DE6C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC25setLocationIndicatorStyleyyAA0ghI0OF', symObjAddr: 0x12EC, symBinAddr: 0x220E64, symSize: 0x80 } + - { offset: 0x2DE75C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperCfD', symObjAddr: 0x136C, symBinAddr: 0x220EE4, symSize: 0x44 } + - { offset: 0x2DE7EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC13renderingView17mapEventsDelegateACSo6UIViewC_17PenguinINRenderer05PIMapg5EventJ0_pSgtcfcTf4ngn_n', symObjAddr: 0x13D0, symBinAddr: 0x220F48, symSize: 0xE4 } + - { offset: 0x2DE8A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC16updateMapBearing4mode7bearing13isLowAccuracyyAA0G11CameraStateO_SdSgSbtFTf4nndn_n', symObjAddr: 0x14B4, symBinAddr: 0x22102C, symSize: 0x124 } + - { offset: 0x2DECCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7pdfData4size6insets10Foundation0F0VSo6CGSizeVSg_AC6InsetsVtKF', symObjAddr: 0x0, symBinAddr: 0x2211F4, symSize: 0x1D0 } + - { offset: 0x2DF21D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8RendererPAAE7performyyAA0D7CommandOy5TypesQzGFAA06CGTextD0C_Tg5', symObjAddr: 0x1D0, symBinAddr: 0x2213C4, symSize: 0xA24 } + - { offset: 0x2E05C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8RendererPAAE7performyyAA0D7CommandOy5TypesQzGFAA10CGRendererV_Tg5', symObjAddr: 0xBF4, symBinAddr: 0x221DE8, symSize: 0x3EC } + - { offset: 0x2E1004, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_03958A0088F2E35131ADBC7FF9D1DD6CLLVAFsAdAWl', symObjAddr: 0xFE0, symBinAddr: 0x2221D4, symSize: 0x40 } + - { offset: 0x2E10F1, size: 0x8, addend: 0x0, symName: '_$sSo12CGContextRefa8PenNavUIE4draw_2inyAC3SVGC_So6CGRectVSgtF', symObjAddr: 0x1020, symBinAddr: 0x222214, symSize: 0x1C4 } + - { offset: 0x2E12D4, size: 0x8, addend: 0x0, symName: '_$sSo12CGContextRefa8PenNavUIE4draw33_03958A0088F2E35131ADBC7FF9D1DD6CLL_2in5scaleySayAC15RendererCommandOyAC7CGTypesVGG_So6CGRectVSo6CGSizeVtF', symObjAddr: 0x125C, symBinAddr: 0x2223D8, symSize: 0x144 } + - { offset: 0x2E1462, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_03958A0088F2E35131ADBC7FF9D1DD6CLLVMa', symObjAddr: 0x14FC, symBinAddr: 0x22251C, symSize: 0x10 } + - { offset: 0x2E1476, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_03958A0088F2E35131ADBC7FF9D1DD6CLLV10Foundation09LocalizedE0AAsADPWb', symObjAddr: 0x150C, symBinAddr: 0x22252C, symSize: 0x4 } + - { offset: 0x2E213D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererV12makeExpanded4path9transform9precisionS2S_SSSitKFZ', symObjAddr: 0x0, symBinAddr: 0x222530, symSize: 0x6CC } + - { offset: 0x2E2769, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererVMa', symObjAddr: 0xC94, symBinAddr: 0x223070, symSize: 0x10 } + - { offset: 0x2E2A30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererV12makeExpanded4path9transform9precisionS2S_SSSitKFZ', symObjAddr: 0x0, symBinAddr: 0x222530, symSize: 0x6CC } + - { offset: 0x2E347F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererV7makeDOM7segment9formatterSSAA9LayerTreeO4PathC7SegmentO_AA19CoordinateFormatterVtFZTf4nnd_n', symObjAddr: 0x710, symBinAddr: 0x222BFC, symSize: 0x264 } + - { offset: 0x2E395A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererV7makeDOM4path9precisionSSAA9LayerTreeO4PathC_SitFZTf4nnd_n', symObjAddr: 0x974, symBinAddr: 0x222E60, symSize: 0x210 } + - { offset: 0x2E4082, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0CMa', symObjAddr: 0x2FC, symBinAddr: 0x22337C, symSize: 0x20 } + - { offset: 0x2E4096, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOy', symObjAddr: 0x348, symBinAddr: 0x22339C, symSize: 0x140 } + - { offset: 0x2E40AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0OWOy', symObjAddr: 0x4AC, symBinAddr: 0x2234DC, symSize: 0x48 } + - { offset: 0x2E40BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0OWOy', symObjAddr: 0x4F4, symBinAddr: 0x223524, symSize: 0x60 } + - { offset: 0x2E40D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwxx', symObjAddr: 0x59C, symBinAddr: 0x223584, symSize: 0x58 } + - { offset: 0x2E40E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOe', symObjAddr: 0x5F4, symBinAddr: 0x2235DC, symSize: 0x140 } + - { offset: 0x2E40FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0OWOe', symObjAddr: 0x758, symBinAddr: 0x22371C, symSize: 0x48 } + - { offset: 0x2E410E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwcp', symObjAddr: 0x848, symBinAddr: 0x223764, symSize: 0x114 } + - { offset: 0x2E4122, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwca', symObjAddr: 0x95C, symBinAddr: 0x223878, symSize: 0x14C } + - { offset: 0x2E4136, size: 0x8, addend: 0x0, symName: ___swift_memcpy153_8, symObjAddr: 0xAA8, symBinAddr: 0x2239C4, symSize: 0x34 } + - { offset: 0x2E414A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwta', symObjAddr: 0xADC, symBinAddr: 0x2239F8, symSize: 0xA4 } + - { offset: 0x2E415E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwet', symObjAddr: 0xB80, symBinAddr: 0x223A9C, symSize: 0x5C } + - { offset: 0x2E4172, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwst', symObjAddr: 0xBDC, symBinAddr: 0x223AF8, symSize: 0x90 } + - { offset: 0x2E4186, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwui', symObjAddr: 0xC88, symBinAddr: 0x223B88, symSize: 0x34 } + - { offset: 0x2E419A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOMa', symObjAddr: 0xCBC, symBinAddr: 0x223BBC, symSize: 0x10 } + - { offset: 0x2E43AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwxx', symObjAddr: 0x1F2C, symBinAddr: 0x224DB0, symSize: 0x8 } + - { offset: 0x2E43C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwcp', symObjAddr: 0x1F34, symBinAddr: 0x224DB8, symSize: 0x4C } + - { offset: 0x2E43D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwca', symObjAddr: 0x1F80, symBinAddr: 0x224E04, symSize: 0x6C } + - { offset: 0x2E43EA, size: 0x8, addend: 0x0, symName: ___swift_memcpy45_8, symObjAddr: 0x1FEC, symBinAddr: 0x224E70, symSize: 0x14 } + - { offset: 0x2E43FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwta', symObjAddr: 0x2000, symBinAddr: 0x224E84, symSize: 0x54 } + - { offset: 0x2E4412, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwet', symObjAddr: 0x2054, symBinAddr: 0x224ED8, symSize: 0x48 } + - { offset: 0x2E4426, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwst', symObjAddr: 0x209C, symBinAddr: 0x224F20, symSize: 0x50 } + - { offset: 0x2E443A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVMa', symObjAddr: 0x20EC, symBinAddr: 0x224F70, symSize: 0x10 } + - { offset: 0x2E444E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwcp', symObjAddr: 0x20FC, symBinAddr: 0x224F80, symSize: 0x94 } + - { offset: 0x2E4462, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwca', symObjAddr: 0x2190, symBinAddr: 0x225014, symSize: 0xA8 } + - { offset: 0x2E4476, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwta', symObjAddr: 0x2254, symBinAddr: 0x2250BC, symSize: 0x64 } + - { offset: 0x2E448A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwet', symObjAddr: 0x22B8, symBinAddr: 0x225120, symSize: 0x44 } + - { offset: 0x2E449E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwst', symObjAddr: 0x22FC, symBinAddr: 0x225164, symSize: 0x54 } + - { offset: 0x2E44B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVMa', symObjAddr: 0x2350, symBinAddr: 0x2251B8, symSize: 0x10 } + - { offset: 0x2E44C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwcp', symObjAddr: 0x2360, symBinAddr: 0x2251C8, symSize: 0x9C } + - { offset: 0x2E44DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwca', symObjAddr: 0x23FC, symBinAddr: 0x225264, symSize: 0xB8 } + - { offset: 0x2E44EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwta', symObjAddr: 0x24C8, symBinAddr: 0x22531C, symSize: 0x6C } + - { offset: 0x2E4502, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwet', symObjAddr: 0x2534, symBinAddr: 0x225388, symSize: 0x48 } + - { offset: 0x2E4516, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwst', symObjAddr: 0x257C, symBinAddr: 0x2253D0, symSize: 0x54 } + - { offset: 0x2E452A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVMa', symObjAddr: 0x25D0, symBinAddr: 0x225424, symSize: 0x10 } + - { offset: 0x2E453E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0Owet', symObjAddr: 0x2634, symBinAddr: 0x22546C, symSize: 0x48 } + - { offset: 0x2E4552, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0Owst', symObjAddr: 0x267C, symBinAddr: 0x2254B4, symSize: 0x54 } + - { offset: 0x2E4566, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0OMa', symObjAddr: 0x26E4, symBinAddr: 0x225518, symSize: 0x10 } + - { offset: 0x2E457A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0Owet', symObjAddr: 0x28B8, symBinAddr: 0x2256EC, symSize: 0x48 } + - { offset: 0x2E458E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0Owst', symObjAddr: 0x2900, symBinAddr: 0x225734, symSize: 0x54 } + - { offset: 0x2E45A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0OMa', symObjAddr: 0x2958, symBinAddr: 0x225788, symSize: 0x10 } + - { offset: 0x2E4656, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x223080, symSize: 0x94 } + - { offset: 0x2E4685, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C14simpleContentsAE0G0OSgvg', symObjAddr: 0x94, symBinAddr: 0x223114, symSize: 0x1AC } + - { offset: 0x2E4775, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0Cfd', symObjAddr: 0x240, symBinAddr: 0x2232C0, symSize: 0x9C } + - { offset: 0x2E479A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0CfD', symObjAddr: 0x2DC, symBinAddr: 0x22335C, symSize: 0x20 } + - { offset: 0x2E47CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0CSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xCCC, symBinAddr: 0x223BCC, symSize: 0xC } + - { offset: 0x2E4807, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0OSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xCD8, symBinAddr: 0x223BD8, symSize: 0x58 } + - { offset: 0x2E4843, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xD30, symBinAddr: 0x223C30, symSize: 0x48 } + - { offset: 0x2E487F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0OSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xD78, symBinAddr: 0x223C78, symSize: 0x58 } + - { offset: 0x2E48D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xDD0, symBinAddr: 0x223CD0, symSize: 0xF0 } + - { offset: 0x2E49AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xEC0, symBinAddr: 0x223DC0, symSize: 0x48 } + - { offset: 0x2E4A7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0O2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0xF08, symBinAddr: 0x223E08, symSize: 0x280 } + - { offset: 0x2E4BF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x1188, symBinAddr: 0x224088, symSize: 0x1B4 } + - { offset: 0x2E4D48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x133C, symBinAddr: 0x22423C, symSize: 0x154 } + - { offset: 0x2E4DB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0O2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x1490, symBinAddr: 0x224390, symSize: 0x2D4 } + - { offset: 0x2E4F16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x1764, symBinAddr: 0x224664, symSize: 0xEC } + - { offset: 0x2E4FED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x1850, symBinAddr: 0x224750, symSize: 0x218 } + - { offset: 0x2E515C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsO2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x1A68, symBinAddr: 0x224968, symSize: 0x448 } + - { offset: 0x2E5606, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC15campusNameLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2257A8, symSize: 0x20 } + - { offset: 0x2E5DB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC019handleFavoriteUIFordE0yyF', symObjAddr: 0x5D4, symBinAddr: 0x225D7C, symSize: 0x5CC } + - { offset: 0x2E604A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC019handleFavoriteUIFordE0yyFyycfU_', symObjAddr: 0x30A4, symBinAddr: 0x22884C, symSize: 0x5C } + - { offset: 0x2E62BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCfE', symObjAddr: 0x29E8, symBinAddr: 0x228190, symSize: 0x14C } + - { offset: 0x2E62EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCfETo', symObjAddr: 0x2B64, symBinAddr: 0x22830C, symSize: 0x158 } + - { offset: 0x2E6319, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCMa', symObjAddr: 0x2CBC, symBinAddr: 0x228464, symSize: 0x20 } + - { offset: 0x2E6369, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC14layoutForPanelAA08FloatingK6Layout_pyFTo', symObjAddr: 0x2CDC, symBinAddr: 0x228484, symSize: 0x98 } + - { offset: 0x2E6415, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC16behaviorForPanelAA08FloatingK8Behavior_pyFTo', symObjAddr: 0x2D74, symBinAddr: 0x22851C, symSize: 0x24 } + - { offset: 0x2E647B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x2D98, symBinAddr: 0x228540, symSize: 0x98 } + - { offset: 0x2E64F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingjH0CF', symObjAddr: 0x2E30, symBinAddr: 0x2285D8, symSize: 0x224 } + - { offset: 0x2E66F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingjH0CFTo', symObjAddr: 0x3054, symBinAddr: 0x2287FC, symSize: 0x50 } + - { offset: 0x2E6715, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC14handleFavorite33_BBE7875B2892A8418F35ED4165555988LL02isJ0ySb_tF', symObjAddr: 0x3100, symBinAddr: 0x2288A8, symSize: 0x1C0 } + - { offset: 0x2E68E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtF', symObjAddr: 0x32C0, symBinAddr: 0x228A68, symSize: 0x258 } + - { offset: 0x2E6A9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0lQ0OSgtFTW', symObjAddr: 0x3594, symBinAddr: 0x228CC0, symSize: 0x8 } + - { offset: 0x2E6ABB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC019handleFavoriteUIFordE0yyFyycfU_TA', symObjAddr: 0x35E4, symBinAddr: 0x228D10, symSize: 0xC } + - { offset: 0x2E6ACF, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x365C, symBinAddr: 0x228D1C, symSize: 0x10 } + - { offset: 0x2E6AE3, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x366C, symBinAddr: 0x228D2C, symSize: 0x8 } + - { offset: 0x2E6AF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC17showRouteOverviewyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x3700, symBinAddr: 0x228D58, symSize: 0x20 } + - { offset: 0x2E6B31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFyycfU_TA', symObjAddr: 0x38B0, symBinAddr: 0x228E78, symSize: 0x8 } + - { offset: 0x2E6B45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFyycfU0_TA', symObjAddr: 0x38B8, symBinAddr: 0x228E80, symSize: 0x8 } + - { offset: 0x2E70B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC15campusNameLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2257A8, symSize: 0x20 } + - { offset: 0x2E7117, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC15campusNameLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x2257C8, symSize: 0x14 } + - { offset: 0x2E7168, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC14venueNameLabelSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x2257DC, symSize: 0x20 } + - { offset: 0x2E71BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC14venueNameLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x2257FC, symSize: 0x14 } + - { offset: 0x2E720E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x225810, symSize: 0x20 } + - { offset: 0x2E7263, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x225830, symSize: 0x14 } + - { offset: 0x2E72B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC010directionsG0AA06HapticG0CSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x225844, symSize: 0x20 } + - { offset: 0x2E730E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC010directionsG0AA06HapticG0CSgvsTo', symObjAddr: 0xBC, symBinAddr: 0x225864, symSize: 0x14 } + - { offset: 0x2E735F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC011reportIssueG0AA06HapticG0CSgvgTo', symObjAddr: 0xD0, symBinAddr: 0x225878, symSize: 0x20 } + - { offset: 0x2E73B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC011reportIssueG0AA06HapticG0CSgvsTo', symObjAddr: 0xF0, symBinAddr: 0x225898, symSize: 0x14 } + - { offset: 0x2E7405, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC016reportIssueStackG0So07UIStackG0CSgvgTo', symObjAddr: 0x104, symBinAddr: 0x2258AC, symSize: 0x10 } + - { offset: 0x2E741D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC016reportIssueStackG0So07UIStackG0CSgvgTo', symObjAddr: 0x104, symBinAddr: 0x2258AC, symSize: 0x10 } + - { offset: 0x2E745D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC016reportIssueStackG0So07UIStackG0CSgvsTo', symObjAddr: 0x114, symBinAddr: 0x2258BC, symSize: 0x34 } + - { offset: 0x2E74AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC013addToFavoriteG0AA06HapticG0CSgvgTo', symObjAddr: 0x148, symBinAddr: 0x2258F0, symSize: 0x20 } + - { offset: 0x2E7501, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC013addToFavoriteG0AA06HapticG0CSgvsTo', symObjAddr: 0x168, symBinAddr: 0x225910, symSize: 0x14 } + - { offset: 0x2E7552, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC13favoriteLabelSo7UILabelCSgvgTo', symObjAddr: 0x17C, symBinAddr: 0x225924, symSize: 0x20 } + - { offset: 0x2E75A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC13favoriteLabelSo7UILabelCSgvsTo', symObjAddr: 0x19C, symBinAddr: 0x225944, symSize: 0x14 } + - { offset: 0x2E75F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC13favoriteImageSo07UIImageG0CSgvgTo', symObjAddr: 0x1B0, symBinAddr: 0x225958, symSize: 0x20 } + - { offset: 0x2E7652, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC13favoriteImageSo07UIImageG0CSgvsTo', symObjAddr: 0x1D0, symBinAddr: 0x225978, symSize: 0x14 } + - { offset: 0x2E76A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC9nameLabelAA09IntrinsicJ0CSgvgTo', symObjAddr: 0x1E4, symBinAddr: 0x22598C, symSize: 0x20 } + - { offset: 0x2E76FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC9nameLabelAA09IntrinsicJ0CSgvsTo', symObjAddr: 0x204, symBinAddr: 0x2259AC, symSize: 0x14 } + - { offset: 0x2E774E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x218, symBinAddr: 0x2259C0, symSize: 0x10 } + - { offset: 0x2E7766, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x218, symBinAddr: 0x2259C0, symSize: 0x10 } + - { offset: 0x2E77A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x228, symBinAddr: 0x2259D0, symSize: 0x34 } + - { offset: 0x2E7882, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x25C, symBinAddr: 0x225A04, symSize: 0x21C } + - { offset: 0x2E79CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFyycfU_', symObjAddr: 0x478, symBinAddr: 0x225C20, symSize: 0x54 } + - { offset: 0x2E79F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFyycfU0_', symObjAddr: 0x4CC, symBinAddr: 0x225C74, symSize: 0x108 } + - { offset: 0x2E7AA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0xBA0, symBinAddr: 0x226348, symSize: 0x28 } + - { offset: 0x2E7BF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC03setC033_BBE7875B2892A8418F35ED4165555988LLyyF', symObjAddr: 0xBC8, symBinAddr: 0x226370, symSize: 0x154 } + - { offset: 0x2E7E22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC03setdeC0yyF', symObjAddr: 0xD1C, symBinAddr: 0x2264C4, symSize: 0x5B4 } + - { offset: 0x2E8251, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC31applyLanguageBasedTextAlignmentyyF', symObjAddr: 0x12D0, symBinAddr: 0x226A78, symSize: 0x208 } + - { offset: 0x2E8570, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x14D8, symBinAddr: 0x226C80, symSize: 0x88 } + - { offset: 0x2E862E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5shareyySo8UIButtonCFySSSgcfU_', symObjAddr: 0x1560, symBinAddr: 0x226D08, symSize: 0x4C8 } + - { offset: 0x2E87FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5shareyySo8UIButtonCFTo', symObjAddr: 0x1A28, symBinAddr: 0x2271D0, symSize: 0x4C } + - { offset: 0x2E88B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC17showRouteOverviewyyF', symObjAddr: 0x1A74, symBinAddr: 0x22721C, symSize: 0x474 } + - { offset: 0x2E8DC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC26presentRouteOverviewScreen33_BBE7875B2892A8418F35ED4165555988LL6sourceyAA5PlaceCSg_tF', symObjAddr: 0x1EE8, symBinAddr: 0x227690, symSize: 0x3E4 } + - { offset: 0x2E91BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC18removeFromFavoriteyyF', symObjAddr: 0x22CC, symBinAddr: 0x227A74, symSize: 0xB0 } + - { offset: 0x2E9294, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x237C, symBinAddr: 0x227B24, symSize: 0x304 } + - { offset: 0x2E9462, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x2680, symBinAddr: 0x227E28, symSize: 0x60 } + - { offset: 0x2E94AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x26E0, symBinAddr: 0x227E88, symSize: 0x2E0 } + - { offset: 0x2E966A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x29C0, symBinAddr: 0x228168, symSize: 0x28 } + - { offset: 0x2E967E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCfD', symObjAddr: 0x2B34, symBinAddr: 0x2282DC, symSize: 0x30 } + - { offset: 0x2E97DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5shareyySo8UIButtonCFTf4dn_n', symObjAddr: 0x3728, symBinAddr: 0x228D78, symSize: 0x100 } + - { offset: 0x2E9C47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC18parkingDetailsViewAA0dgH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x228E88, symSize: 0x10 } + - { offset: 0x2E9D92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellCfETo', symObjAddr: 0x358, symBinAddr: 0x2291E0, symSize: 0x3C } + - { offset: 0x2E9DC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellCMa', symObjAddr: 0x394, symBinAddr: 0x22921C, symSize: 0x20 } + - { offset: 0x2E9DD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC12awakeFromNibyyFyycfU_TA', symObjAddr: 0x3D8, symBinAddr: 0x229260, symSize: 0x8 } + - { offset: 0x2E9E77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC18parkingDetailsViewAA0dgH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x228E88, symSize: 0x10 } + - { offset: 0x2E9E8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC18parkingDetailsViewAA0dgH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x228E88, symSize: 0x10 } + - { offset: 0x2E9ED5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC18parkingDetailsViewAA0dgH0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x228E98, symSize: 0x34 } + - { offset: 0x2E9F47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC12awakeFromNibyyF', symObjAddr: 0x44, symBinAddr: 0x228ECC, symSize: 0xDC } + - { offset: 0x2E9FC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC12awakeFromNibyyFyycfU_', symObjAddr: 0x120, symBinAddr: 0x228FA8, symSize: 0x88 } + - { offset: 0x2EA021, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC12awakeFromNibyyFTo', symObjAddr: 0x1A8, symBinAddr: 0x229030, symSize: 0x28 } + - { offset: 0x2EA07C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x1D0, symBinAddr: 0x229058, symSize: 0xC0 } + - { offset: 0x2EA0FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x290, symBinAddr: 0x229118, symSize: 0x98 } + - { offset: 0x2EA131, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellCfD', symObjAddr: 0x328, symBinAddr: 0x2291B0, symSize: 0x30 } + - { offset: 0x2EA4C4, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUIE21getDownloadedModelUriSSSgyF', symObjAddr: 0x0, symBinAddr: 0x229268, symSize: 0x250 } + - { offset: 0x2EA4E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC14sharedInstance33_7986A3E1D5A26839C9FF19770735FC58LLACSgvpZ', symObjAddr: 0x1060, symBinAddr: 0x36E938, symSize: 0x0 } + - { offset: 0x2EA615, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUIE21getDownloadedModelUriSSSgyF', symObjAddr: 0x0, symBinAddr: 0x229268, symSize: 0x250 } + - { offset: 0x2EA7FF, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUIE8assetURL10Foundation0H0VSgvg', symObjAddr: 0xE24, symBinAddr: 0x22A068, symSize: 0xF0 } + - { offset: 0x2EA81E, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUI16FileDownloadDataA2dEP8assetURL10Foundation0K0VSgvgTW', symObjAddr: 0xF14, symBinAddr: 0x22A158, symSize: 0x4 } + - { offset: 0x2EA858, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUI16FileDownloadDataA2dEP10downloadIdSiSgvgTW', symObjAddr: 0xF18, symBinAddr: 0x22A15C, symSize: 0x18 } + - { offset: 0x2EA894, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerCMa', symObjAddr: 0xF30, symBinAddr: 0x22A174, symSize: 0x20 } + - { offset: 0x2EAA59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC03getD10ByFloorIdsySay7Penguin10PoiPolygonVGSaySiSgGF', symObjAddr: 0x250, symBinAddr: 0x2294B8, symSize: 0x1F8 } + - { offset: 0x2EAD9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC03getD12ByCategoryId05floorI008categoryI0Say7Penguin10PoiPolygonVGSi_SitF', symObjAddr: 0x448, symBinAddr: 0x2296B0, symSize: 0x1EC } + - { offset: 0x2EAFB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC10getPoiByIdy7Penguin0G7PolygonVSgSiSgF', symObjAddr: 0x634, symBinAddr: 0x22989C, symSize: 0x234 } + - { offset: 0x2EB26E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC014getCategorizedD02in8categorySay7Penguin10PoiPolygonVGAG5VenueCSg_AG11POICategoryVSgtFSbAIXEfU_', symObjAddr: 0x868, symBinAddr: 0x229AD0, symSize: 0x148 } + - { offset: 0x2EB2B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC24getPoiListForDownloadingSay7Penguin0G7PolygonVGyF', symObjAddr: 0x9B0, symBinAddr: 0x229C18, symSize: 0x450 } + - { offset: 0x2EBE2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC14loadCategoriesyyF', symObjAddr: 0x4BC, symBinAddr: 0x22A650, symSize: 0xB4 } + - { offset: 0x2EBF41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCfE', symObjAddr: 0x598, symBinAddr: 0x22A72C, symSize: 0x15C } + - { offset: 0x2EBF6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCfETo', symObjAddr: 0x8A0, symBinAddr: 0x22AA34, symSize: 0x168 } + - { offset: 0x2EC154, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCMa', symObjAddr: 0x1364, symBinAddr: 0x22B4F8, symSize: 0x20 } + - { offset: 0x2EC177, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC16numberOfSections2inSiSo07UITableE0C_tFTo', symObjAddr: 0x1384, symBinAddr: 0x22B518, symSize: 0x4 } + - { offset: 0x2EC197, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC16numberOfSections2inSiSo07UITableE0C_tFTo', symObjAddr: 0x1384, symBinAddr: 0x22B518, symSize: 0x4 } + - { offset: 0x2EC1B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x1388, symBinAddr: 0x22B51C, symSize: 0x60 } + - { offset: 0x2EC4A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0x13E8, symBinAddr: 0x22B57C, symSize: 0x960 } + - { offset: 0x2ECA7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyAA8FavoriteCcfU1_', symObjAddr: 0x1FB8, symBinAddr: 0x22C14C, symSize: 0x90 } + - { offset: 0x2ECAD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFSb7Penguin11POICategoryV_AOtXEfU3_', symObjAddr: 0x20D0, symBinAddr: 0x22C1DC, symSize: 0xA0 } + - { offset: 0x2ECB25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU4_', symObjAddr: 0x2170, symBinAddr: 0x22C27C, symSize: 0xB0 } + - { offset: 0x2ECB9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU7_', symObjAddr: 0x22C4, symBinAddr: 0x22C3D0, symSize: 0x90 } + - { offset: 0x2ECBEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU9_', symObjAddr: 0x2864, symBinAddr: 0x22C918, symSize: 0x1E4 } + - { offset: 0x2ECE0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC19showMyLocationSheet33_D0641B0FFCA1271976891547CEED6A97LLyyF', symObjAddr: 0x1D48, symBinAddr: 0x22BEDC, symSize: 0x270 } + - { offset: 0x2ED028, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC17didTapShareButton33_D0641B0FFCA1271976891547CEED6A97LLyyF', symObjAddr: 0x23AC, symBinAddr: 0x22C460, symSize: 0x4B8 } + - { offset: 0x2ED3EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2A48, symBinAddr: 0x22CAFC, symSize: 0xB8 } + - { offset: 0x2ED426, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2B00, symBinAddr: 0x22CBB4, symSize: 0x84 } + - { offset: 0x2ED463, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC06scrollE9DidScrollyySo08UIScrollE0CF', symObjAddr: 0x2B84, symBinAddr: 0x22CC38, symSize: 0x50 } + - { offset: 0x2ED4DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC06scrollE9DidScrollyySo08UIScrollE0CFTo', symObjAddr: 0x2BD4, symBinAddr: 0x22CC88, symSize: 0x50 } + - { offset: 0x2ED560, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC17shareUserLocation33_D0641B0FFCA1271976891547CEED6A97LLyyF', symObjAddr: 0x2C24, symBinAddr: 0x22CCD8, symSize: 0xD8 } + - { offset: 0x2ED782, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x31D4, symBinAddr: 0x22CDB0, symSize: 0x98 } + - { offset: 0x2ED82E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x326C, symBinAddr: 0x22CE48, symSize: 0x24 } + - { offset: 0x2ED8A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC10setupPanelyyF', symObjAddr: 0x3290, symBinAddr: 0x22CE6C, symSize: 0xBC } + - { offset: 0x2ED944, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC10setupPanelyyFTo', symObjAddr: 0x334C, symBinAddr: 0x22CF28, symSize: 0x28 } + - { offset: 0x2ED982, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x3374, symBinAddr: 0x22CF50, symSize: 0x214 } + - { offset: 0x2EDB88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x3588, symBinAddr: 0x22D164, symSize: 0x50 } + - { offset: 0x2EDBC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC28searchBarTextDidBeginEditingyyAA06SearchH0CF', symObjAddr: 0x35D8, symBinAddr: 0x22D1B4, symSize: 0x408 } + - { offset: 0x2EDF31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC28searchBarTextDidBeginEditingyyAA06SearchH0CFyycACcfu_yycfu0_', symObjAddr: 0x39E0, symBinAddr: 0x22D5BC, symSize: 0x50 } + - { offset: 0x2EDF81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCAA17SearchBarDelegateA2aDP06searchH19TextDidBeginEditingyyAA0gH0CFTW', symObjAddr: 0x3A30, symBinAddr: 0x22D60C, symSize: 0x4 } + - { offset: 0x2EDFA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtF', symObjAddr: 0x3A34, symBinAddr: 0x22D610, symSize: 0x27C } + - { offset: 0x2EE14E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x3D2C, symBinAddr: 0x22D88C, symSize: 0x8 } + - { offset: 0x2EE1C5, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin11POICategoryV_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lo39C_10Foundation9IndexPathVtFSb7Penguin11F11V_AOtXEfU3_Tf1cn_n', symObjAddr: 0x3D78, symBinAddr: 0x22D894, symSize: 0x108 } + - { offset: 0x2EE3F5, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin11POICategoryV_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lo39C_10Foundation9IndexPathVtFSb7Penguin11F11V_AOtXEfU3_Tf1nnncn_n', symObjAddr: 0x3E80, symBinAddr: 0x22D99C, symSize: 0x7B4 } + - { offset: 0x2EE86A, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry7Penguin11POICategoryVG_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0ls15C_10Foundation9g19PathVtFSb7Penguin11J11V_AOtXEfU3_Tf1nncn_n', symObjAddr: 0x4634, symBinAddr: 0x22E150, symSize: 0x260 } + - { offset: 0x2EE9D4, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin11POICategoryV_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lp39C_10Foundation9IndexPathVtFSb7Penguin11G11V_AOtXEfU3_Tf1nncn_n', symObjAddr: 0x4894, symBinAddr: 0x22E3B0, symSize: 0x284 } + - { offset: 0x2EED59, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin11POICategoryV_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lq39C_10Foundation9IndexPathVtFSb7Penguin11H11V_AOtXEfU3_Tf1nnnnc_n', symObjAddr: 0x4B18, symBinAddr: 0x22E634, symSize: 0x59C } + - { offset: 0x2EEE7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC28searchBarTextDidBeginEditingyyAA06SearchH0CFyycACcfu_yycfu0_TA', symObjAddr: 0x50D8, symBinAddr: 0x22EBF4, symSize: 0x8 } + - { offset: 0x2EEE8E, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x5114, symBinAddr: 0x22EC20, symSize: 0x10 } + - { offset: 0x2EEEA2, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x5124, symBinAddr: 0x22EC30, symSize: 0x8 } + - { offset: 0x2EEEB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU8_TA', symObjAddr: 0x5158, symBinAddr: 0x22EC5C, symSize: 0x20 } + - { offset: 0x2EEECA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU9_TA', symObjAddr: 0x5178, symBinAddr: 0x22EC7C, symSize: 0x8 } + - { offset: 0x2EEEDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFy7Penguin10PoiPolygonVcfU6_TA', symObjAddr: 0x5180, symBinAddr: 0x22EC84, symSize: 0x30 } + - { offset: 0x2EEEF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU7_TA', symObjAddr: 0x51C0, symBinAddr: 0x22ECB4, symSize: 0x8 } + - { offset: 0x2EEF06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU4_TA', symObjAddr: 0x51C8, symBinAddr: 0x22ECBC, symSize: 0x8 } + - { offset: 0x2EEF1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFy7Penguin11POICategoryVcfU5_TA', symObjAddr: 0x51D0, symBinAddr: 0x22ECC4, symSize: 0x30 } + - { offset: 0x2EEF2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU2_TA', symObjAddr: 0x5200, symBinAddr: 0x22ECF4, symSize: 0x20 } + - { offset: 0x2EEF42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU0_TA', symObjAddr: 0x5220, symBinAddr: 0x22ED14, symSize: 0x20 } + - { offset: 0x2EEF56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyAA8FavoriteCcfU1_TA', symObjAddr: 0x5240, symBinAddr: 0x22ED34, symSize: 0x8 } + - { offset: 0x2EEF6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU_TA', symObjAddr: 0x5248, symBinAddr: 0x22ED3C, symSize: 0x20 } + - { offset: 0x2EEF7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC17didTapShareButton33_D0641B0FFCA1271976891547CEED6A97LLyyFyycACcfu_yycfu0_TA', symObjAddr: 0x5278, symBinAddr: 0x22ED5C, symSize: 0x20 } + - { offset: 0x2EEFB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC16numberOfSections2inSiSo07UITableE0C_tFTf4dd_n', symObjAddr: 0x553C, symBinAddr: 0x22EF98, symSize: 0x8C } + - { offset: 0x2EF0CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTf4dnn_n', symObjAddr: 0x55C8, symBinAddr: 0x22F024, symSize: 0x1C8 } + - { offset: 0x2EF353, size: 0x8, addend: 0x0, symName: '_$sSo15UITableViewCellCMa', symObjAddr: 0x5790, symBinAddr: 0x22F1EC, symSize: 0x44 } + - { offset: 0x2EF381, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin11POICategoryVG_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lp39C_10Foundation9IndexPathVtFSb7Penguin11G11V_AOtXEfU3_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x22A194, symSize: 0x80 } + - { offset: 0x2EF889, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC9searchBarAA06SearchH0CSgvgTo', symObjAddr: 0x80, symBinAddr: 0x22A214, symSize: 0x10 } + - { offset: 0x2EF8A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC9searchBarAA06SearchH0CSgvgTo', symObjAddr: 0x80, symBinAddr: 0x22A214, symSize: 0x10 } + - { offset: 0x2EF8E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC9searchBarAA06SearchH0CSgvsTo', symObjAddr: 0x90, symBinAddr: 0x22A224, symSize: 0x34 } + - { offset: 0x2EFAD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0xC4, symBinAddr: 0x22A258, symSize: 0x10 } + - { offset: 0x2EFAEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0xC4, symBinAddr: 0x22A258, symSize: 0x10 } + - { offset: 0x2EFB2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0So07UITableE0CSgvsTo', symObjAddr: 0xD4, symBinAddr: 0x22A268, symSize: 0x34 } + - { offset: 0x2EFB7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC09separatorE0So6UIViewCSgvgTo', symObjAddr: 0x108, symBinAddr: 0x22A29C, symSize: 0x10 } + - { offset: 0x2EFB96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC09separatorE0So6UIViewCSgvgTo', symObjAddr: 0x108, symBinAddr: 0x22A29C, symSize: 0x10 } + - { offset: 0x2EFBD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC09separatorE0So6UIViewCSgvsTo', symObjAddr: 0x118, symBinAddr: 0x22A2AC, symSize: 0x34 } + - { offset: 0x2EFC25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC14tryAgainButtonSo8UIButtonCSgvgTo', symObjAddr: 0x14C, symBinAddr: 0x22A2E0, symSize: 0x10 } + - { offset: 0x2EFC3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC14tryAgainButtonSo8UIButtonCSgvgTo', symObjAddr: 0x14C, symBinAddr: 0x22A2E0, symSize: 0x10 } + - { offset: 0x2EFC7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC14tryAgainButtonSo8UIButtonCSgvsTo', symObjAddr: 0x15C, symBinAddr: 0x22A2F0, symSize: 0x34 } + - { offset: 0x2EFDD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC11viewDidLoadyyF', symObjAddr: 0x190, symBinAddr: 0x22A324, symSize: 0x32C } + - { offset: 0x2F004C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x570, symBinAddr: 0x22A704, symSize: 0x28 } + - { offset: 0x2F0060, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCfD', symObjAddr: 0x6F4, symBinAddr: 0x22A888, symSize: 0xCC } + - { offset: 0x2F00A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCfDTo', symObjAddr: 0x7C0, symBinAddr: 0x22A954, symSize: 0xE0 } + - { offset: 0x2F00DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC24updateParkingElapsedTimeyyF', symObjAddr: 0xA08, symBinAddr: 0x22AB9C, symSize: 0x17C } + - { offset: 0x2F02DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC24updateParkingElapsedTimeyyFTo', symObjAddr: 0xB84, symBinAddr: 0x22AD18, symSize: 0x28 } + - { offset: 0x2F03CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC23feedbackSheetDidDismissyyF', symObjAddr: 0xBAC, symBinAddr: 0x22AD40, symSize: 0x128 } + - { offset: 0x2F0597, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC15retryConnectionyyFTo', symObjAddr: 0xCD4, symBinAddr: 0x22AE68, symSize: 0x94 } + - { offset: 0x2F0689, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xD68, symBinAddr: 0x22AEFC, symSize: 0x2CC } + - { offset: 0x2F0857, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x1034, symBinAddr: 0x22B1C8, symSize: 0x60 } + - { offset: 0x2F086B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1094, symBinAddr: 0x22B228, symSize: 0x2A8 } + - { offset: 0x2F0A2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x133C, symBinAddr: 0x22B4D0, symSize: 0x28 } + - { offset: 0x2F1165, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC24showsUserLocationSection33_D0641B0FFCA1271976891547CEED6A97LLSbvgTf4d_n', symObjAddr: 0x5320, symBinAddr: 0x22ED7C, symSize: 0x190 } + - { offset: 0x2F12B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC19showsParkingSection33_D0641B0FFCA1271976891547CEED6A97LLSbvgTf4d_n', symObjAddr: 0x54B0, symBinAddr: 0x22EF0C, symSize: 0x8C } + - { offset: 0x2F1C64, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE12scheduleDaysSayAA0E3DayVGvg', symObjAddr: 0x0, symBinAddr: 0x22F234, symSize: 0x258 } + - { offset: 0x2F20F0, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE10isTodayOffSbvg', symObjAddr: 0x258, symBinAddr: 0x22F48C, symSize: 0x240 } + - { offset: 0x2F240D, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE6isOpenSbvg', symObjAddr: 0x498, symBinAddr: 0x22F6CC, symSize: 0x4C4 } + - { offset: 0x2F27BE, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE17todayOpeningHoursSSSgvg', symObjAddr: 0x95C, symBinAddr: 0x22FB90, symSize: 0x1E4 } + - { offset: 0x2F2972, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC7addressSSvg', symObjAddr: 0xCF0, symBinAddr: 0x22FD74, symSize: 0x1B0 } + - { offset: 0x2F2BFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataCMa', symObjAddr: 0x1100, symBinAddr: 0x230144, symSize: 0x20 } + - { offset: 0x2F2C0E, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE9isOpenNowSbvg', symObjAddr: 0x1120, symBinAddr: 0x230164, symSize: 0x374 } + - { offset: 0x2F3225, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonVSgWOc', symObjAddr: 0x356C, symBinAddr: 0x230D08, symSize: 0x48 } + - { offset: 0x2F3288, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVSgWOy', symObjAddr: 0x3AE0, symBinAddr: 0x231240, symSize: 0x30 } + - { offset: 0x2F34D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC9amenitiesSayAA9AmenitiesVGSgvM', symObjAddr: 0xEA0, symBinAddr: 0x22FF24, symSize: 0x30 } + - { offset: 0x2F34EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC6imagesSaySSGSgvM', symObjAddr: 0xED0, symBinAddr: 0x22FF54, symSize: 0x30 } + - { offset: 0x2F34FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC8scheduleSay7Penguin8ScheduleCGSgvM', symObjAddr: 0xF04, symBinAddr: 0x22FF84, symSize: 0x30 } + - { offset: 0x2F3512, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC012setupOfflineF0yyF', symObjAddr: 0xF70, symBinAddr: 0x22FFB4, symSize: 0xFC } + - { offset: 0x2F3586, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataCfd', symObjAddr: 0x106C, symBinAddr: 0x2300B0, symSize: 0x74 } + - { offset: 0x2F35A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataCfD', symObjAddr: 0x10E0, symBinAddr: 0x230124, symSize: 0x20 } + - { offset: 0x2F36C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC3poiAC7Penguin0D7PolygonVSg_tcfCTf4nd_n', symObjAddr: 0x2D3C, symBinAddr: 0x2304D8, symSize: 0x830 } + - { offset: 0x2F3AD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC05placeF0AcA7POIDataC_tcfCTf4nd_n', symObjAddr: 0x35F0, symBinAddr: 0x230D50, symSize: 0x4F0 } + - { offset: 0x2F3FD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC12messageTitleSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x231270, symSize: 0x20 } + - { offset: 0x2F41C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellCfETo', symObjAddr: 0x3E4, symBinAddr: 0x231654, symSize: 0x38 } + - { offset: 0x2F41F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellCMa', symObjAddr: 0x41C, symBinAddr: 0x23168C, symSize: 0x20 } + - { offset: 0x2F4292, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC12messageTitleSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x231270, symSize: 0x20 } + - { offset: 0x2F42F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC12messageTitleSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x231290, symSize: 0x14 } + - { offset: 0x2F4343, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC18messageDescriptionSo7UILabelCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x2312A4, symSize: 0x20 } + - { offset: 0x2F4398, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC18messageDescriptionSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x2312C4, symSize: 0x14 } + - { offset: 0x2F43E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC12awakeFromNibyyFTo', symObjAddr: 0x68, symBinAddr: 0x2312D8, symSize: 0x68 } + - { offset: 0x2F445B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0xD0, symBinAddr: 0x231340, symSize: 0x54 } + - { offset: 0x2F449E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC03setdE07messageyAA0dE0C_tF', symObjAddr: 0x124, symBinAddr: 0x231394, symSize: 0x108 } + - { offset: 0x2F4532, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x22C, symBinAddr: 0x23149C, symSize: 0xE4 } + - { offset: 0x2F45AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x310, symBinAddr: 0x231580, symSize: 0xA4 } + - { offset: 0x2F45E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellCfD', symObjAddr: 0x3B4, symBinAddr: 0x231624, symSize: 0x30 } + - { offset: 0x2F4970, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10parseImageyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x2316AC, symSize: 0x300 } + - { offset: 0x2F49E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10parseImageyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x2316AC, symSize: 0x300 } + - { offset: 0x2F4F36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ScrollViewCMa', symObjAddr: 0x90, symBinAddr: 0x231A3C, symSize: 0x20 } + - { offset: 0x2F4F95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20InteractiveTableViewCMa', symObjAddr: 0x268, symBinAddr: 0x231BE4, symSize: 0x20 } + - { offset: 0x2F4FD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ScrollViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xC, symBinAddr: 0x2319B8, symSize: 0x6C } + - { offset: 0x2F505D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20InteractiveTableViewC5frame5styleACSo6CGRectV_So07UITableF5StyleVtcfcTo', symObjAddr: 0x130, symBinAddr: 0x231ADC, symSize: 0x74 } + - { offset: 0x2F5751, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23displayFirstInstructionyyF', symObjAddr: 0x0, symBinAddr: 0x231C04, symSize: 0x62C } + - { offset: 0x2F5AB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22handleVoiceInstruction4text4type8distance06isLastI0ySSSg_AISdSgSbtF', symObjAddr: 0x62C, symBinAddr: 0x232230, symSize: 0x430 } + - { offset: 0x2F6101, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC31shouldDisplayGoAheadInstructionSbyF', symObjAddr: 0xA5C, symBinAddr: 0x232660, symSize: 0x330 } + - { offset: 0x2F6354, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC25displayGoAheadInstructionyyF', symObjAddr: 0xD8C, symBinAddr: 0x232990, symSize: 0xB2C } + - { offset: 0x2F69E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC30displayUpcomingTurnInstructionyyF', symObjAddr: 0x18B8, symBinAddr: 0x2334BC, symSize: 0xF08 } + - { offset: 0x2F7517, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC29displayLastGoAheadInstructionyyF', symObjAddr: 0x27C0, symBinAddr: 0x2343C4, symSize: 0xDA4 } + - { offset: 0x2F7EBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC26displayElevatorInstruction12upcomingTurny7Penguin11SubpathEdgeC_tF', symObjAddr: 0x3564, symBinAddr: 0x235168, symSize: 0x520 } + - { offset: 0x2F82D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC27displayEscalatorInstruction12upcomingTurny7Penguin11SubpathEdgeC_tF', symObjAddr: 0x3A84, symBinAddr: 0x235688, symSize: 0x390 } + - { offset: 0x2F859E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9speakText4textySS_tFTf4nd_n', symObjAddr: 0x3EF8, symBinAddr: 0x235AFC, symSize: 0x78 } + - { offset: 0x2F862E, size: 0x8, addend: 0x0, symName: '_$s7Penguin13FloorSettingsVSgWOh', symObjAddr: 0x41B4, symBinAddr: 0x235D04, symSize: 0x40 } + - { offset: 0x2F8E41, size: 0x8, addend: 0x0, symName: '_$sSo19NSRegularExpressionC7pattern7optionsABSS_So0aB7OptionsVtKcfcTO', symObjAddr: 0x3E14, symBinAddr: 0x235A18, symSize: 0xE4 } + - { offset: 0x2F9225, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4zeroAEvpZ', symObjAddr: 0x7200, symBinAddr: 0x36EE28, symSize: 0x0 } + - { offset: 0x2F987C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7fileURL7optionsACSg10Foundation0F0V_AC7OptionsVtcfC', symObjAddr: 0x0, symBinAddr: 0x235D44, symSize: 0x14C } + - { offset: 0x2F99F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5named2in7optionsACSgSS_So8NSBundleCAC7OptionsVtcfC', symObjAddr: 0x15C, symBinAddr: 0x235E98, symSize: 0x268 } + - { offset: 0x2F9BBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC4data7optionsACSg10Foundation4DataV_AC7OptionsVtcfC', symObjAddr: 0x3C4, symBinAddr: 0x236100, symSize: 0xE0 } + - { offset: 0x2F9CD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGCfETo', symObjAddr: 0x79C, symBinAddr: 0x2362BC, symSize: 0x10 } + - { offset: 0x2F9D08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4zero_WZ', symObjAddr: 0x83C, symBinAddr: 0x23632C, symSize: 0x14 } + - { offset: 0x2F9D26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4zero_WZ', symObjAddr: 0x83C, symBinAddr: 0x23632C, symSize: 0x14 } + - { offset: 0x2FA522, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs9OptionSetAASYWb', symObjAddr: 0x6CE0, symBinAddr: 0x23C78C, symSize: 0x4 } + - { offset: 0x2FA536, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVAESYAAWl', symObjAddr: 0x6CE4, symBinAddr: 0x23C790, symSize: 0x40 } + - { offset: 0x2FA54A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs9OptionSetAAs0G7AlgebraPWb', symObjAddr: 0x6D24, symBinAddr: 0x23C7D0, symSize: 0x4 } + - { offset: 0x2FA55E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVAEs10SetAlgebraAAWl', symObjAddr: 0x6D28, symBinAddr: 0x23C7D4, symSize: 0x40 } + - { offset: 0x2FA572, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs10SetAlgebraAASQWb', symObjAddr: 0x6D68, symBinAddr: 0x23C814, symSize: 0x4 } + - { offset: 0x2FA586, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVAESQAAWl', symObjAddr: 0x6D6C, symBinAddr: 0x23C818, symSize: 0x40 } + - { offset: 0x2FA59A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs10SetAlgebraAAs25ExpressibleByArrayLiteralPWb', symObjAddr: 0x6DAC, symBinAddr: 0x23C858, symSize: 0x4 } + - { offset: 0x2FA5AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVAEs25ExpressibleByArrayLiteralAAWl', symObjAddr: 0x6DB0, symBinAddr: 0x23C85C, symSize: 0x40 } + - { offset: 0x2FA5C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGCMa', symObjAddr: 0x6DF0, symBinAddr: 0x23C89C, symSize: 0x20 } + - { offset: 0x2FA5D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVMa', symObjAddr: 0x6E74, symBinAddr: 0x23C8C8, symSize: 0x10 } + - { offset: 0x2FA5EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsVMa', symObjAddr: 0x6F08, symBinAddr: 0x23C8D8, symSize: 0x10 } + - { offset: 0x2FA63D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs25ExpressibleByArrayLiteralAAsAFP05arrayI0x0hI7ElementQzd_tcfCTW', symObjAddr: 0x6EC, symBinAddr: 0x236260, symSize: 0x4 } + - { offset: 0x2FA893, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsV8rawValueAESi_tcfC', symObjAddr: 0x14C, symBinAddr: 0x235E90, symSize: 0x8 } + - { offset: 0x2FA8E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4zeroAEvgZ', symObjAddr: 0x4A4, symBinAddr: 0x2361E0, symSize: 0x58 } + - { offset: 0x2FA916, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC4sizeSo6CGSizeVvg', symObjAddr: 0x4FC, symBinAddr: 0x236238, symSize: 0x14 } + - { offset: 0x2FA939, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsV8rawValueSivg', symObjAddr: 0x510, symBinAddr: 0x23624C, symSize: 0x8 } + - { offset: 0x2FA94D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvgZ', symObjAddr: 0x518, symBinAddr: 0x236254, symSize: 0xC } + - { offset: 0x2FA9A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGCACycfc', symObjAddr: 0x710, symBinAddr: 0x236264, symSize: 0x2C } + - { offset: 0x2FA9FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGCACycfcTo', symObjAddr: 0x73C, symBinAddr: 0x236290, symSize: 0x2C } + - { offset: 0x2FAA59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvg', symObjAddr: 0x7AC, symBinAddr: 0x2362CC, symSize: 0x8 } + - { offset: 0x2FAA6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvs', symObjAddr: 0x7B4, symBinAddr: 0x2362D4, symSize: 0x8 } + - { offset: 0x2FAAA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvg', symObjAddr: 0x7D0, symBinAddr: 0x2362DC, symSize: 0x8 } + - { offset: 0x2FAAB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvs', symObjAddr: 0x7D8, symBinAddr: 0x2362E4, symSize: 0x8 } + - { offset: 0x2FAAE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvM', symObjAddr: 0x7E0, symBinAddr: 0x2362EC, symSize: 0x10 } + - { offset: 0x2FAB0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvg', symObjAddr: 0x7F4, symBinAddr: 0x2362FC, symSize: 0x8 } + - { offset: 0x2FAB1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvs', symObjAddr: 0x7FC, symBinAddr: 0x236304, symSize: 0x8 } + - { offset: 0x2FAB52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvg', symObjAddr: 0x818, symBinAddr: 0x23630C, symSize: 0x8 } + - { offset: 0x2FAB66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvs', symObjAddr: 0x820, symBinAddr: 0x236314, symSize: 0x8 } + - { offset: 0x2FAB99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvM', symObjAddr: 0x828, symBinAddr: 0x23631C, symSize: 0x10 } + - { offset: 0x2FABC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV2eeoiySbAE_AEtFZ', symObjAddr: 0x850, symBinAddr: 0x236340, symSize: 0x4 } + - { offset: 0x2FB4BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA10CGProviderV_Tg5Tf4nnnen_nAA09LuminanceuN0V_Tg5', symObjAddr: 0x858, symBinAddr: 0x236344, symSize: 0x1F3C } + - { offset: 0x2FD8A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA10CGProviderV_Tg5Tf4nnnen_nAA07DefaultuN0V_Tg5', symObjAddr: 0x2794, symBinAddr: 0x238280, symSize: 0x1DE0 } + - { offset: 0x3000C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0D0C_AA05ColorL0_ptFAA10CGProviderV_Tg5Tf4nen_nAA09LuminanceoL0V_Tg5', symObjAddr: 0x4574, symBinAddr: 0x23A060, symSize: 0xF08 } + - { offset: 0x30174C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0D0C_AA05ColorL0_ptFAA10CGProviderV_Tg5Tf4nen_nAA07DefaultoL0V_Tg5', symObjAddr: 0x547C, symBinAddr: 0x23AF68, symSize: 0xE94 } + - { offset: 0x302CB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x6310, symBinAddr: 0x23BDFC, symSize: 0x3C } + - { offset: 0x302D3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC3dom7optionsAcA3DOMOABC_AC7OptionsVtcfcTf4gnn_n', symObjAddr: 0x6B80, symBinAddr: 0x23C62C, symSize: 0x160 } + - { offset: 0x30322E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18originalDismissImp33_73EE1AFD99A8C7D37AD8BE1B977755A6LLs13OpaquePointerVSgvp', symObjAddr: 0x6610, symBinAddr: 0x36EEB0, symSize: 0x0 } + - { offset: 0x3040D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvpACTk', symObjAddr: 0x758, symBinAddr: 0x23CF38, symSize: 0x44 } + - { offset: 0x30426A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvpACTK', symObjAddr: 0x4A60, symBinAddr: 0x2410DC, symSize: 0x6C } + - { offset: 0x3042CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvpACTk', symObjAddr: 0x4ACC, symBinAddr: 0x241148, symSize: 0x64 } + - { offset: 0x30433A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerCfETo', symObjAddr: 0x4CA4, symBinAddr: 0x241320, symSize: 0x78 } + - { offset: 0x304398, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16dismissSwizzling33_73EE1AFD99A8C7D37AD8BE1B977755A6LL_WZ', symObjAddr: 0x4D1C, symBinAddr: 0x241398, symSize: 0x74 } + - { offset: 0x3043FB, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE18__swizzled_dismiss33_73EE1AFD99A8C7D37AD8BE1B977755A6LL8animated10completionySb_yycSgtF', symObjAddr: 0x4D90, symBinAddr: 0x24140C, symSize: 0x2E4 } + - { offset: 0x3044AE, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE18__swizzled_dismiss33_73EE1AFD99A8C7D37AD8BE1B977755A6LL8animated10completionySb_yycSgtFTo', symObjAddr: 0x5074, symBinAddr: 0x2416F0, symSize: 0x90 } + - { offset: 0x3045F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerCMa', symObjAddr: 0x595C, symBinAddr: 0x241F54, symSize: 0x20 } + - { offset: 0x30461B, size: 0x8, addend: 0x0, symName: _keypath_get_selector_safeAreaInsets, symObjAddr: 0x5AEC, symBinAddr: 0x2420E4, symSize: 0xC } + - { offset: 0x30462F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtFySo6UIViewC_10Foundation24NSKeyValueObservedChangeVySo12UIEdgeInsetsVGtYbcfU_TA', symObjAddr: 0x5B50, symBinAddr: 0x242148, symSize: 0x8 } + - { offset: 0x304643, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtFyycfU_TA', symObjAddr: 0x5B94, symBinAddr: 0x24218C, symSize: 0xC } + - { offset: 0x304657, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorOSHAASQWb', symObjAddr: 0x5BF0, symBinAddr: 0x2421CC, symSize: 0x4 } + - { offset: 0x30466B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorOAESQAAWl', symObjAddr: 0x5BF4, symBinAddr: 0x2421D0, symSize: 0x40 } + - { offset: 0x30467F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11ContentModeOSHAASQWb', symObjAddr: 0x5C34, symBinAddr: 0x242210, symSize: 0x4 } + - { offset: 0x304693, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11ContentModeOAESQAAWl', symObjAddr: 0x5C38, symBinAddr: 0x242214, symSize: 0x40 } + - { offset: 0x3046A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorOMa', symObjAddr: 0x6420, symBinAddr: 0x242820, symSize: 0x10 } + - { offset: 0x3046BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11ContentModeOMa', symObjAddr: 0x6430, symBinAddr: 0x242830, symSize: 0x10 } + - { offset: 0x3046DA, size: 0x8, addend: 0x0, symName: '_$sIeyB_Ieg_TRTA', symObjAddr: 0x6474, symBinAddr: 0x242864, symSize: 0xC } + - { offset: 0x304703, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x6480, symBinAddr: 0x242870, symSize: 0x10 } + - { offset: 0x304717, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x6490, symBinAddr: 0x242880, symSize: 0x8 } + - { offset: 0x30472B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyFyycfU0_TA', symObjAddr: 0x6498, symBinAddr: 0x242888, symSize: 0x8 } + - { offset: 0x30473F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyFyycfU_TA', symObjAddr: 0x64A0, symBinAddr: 0x242890, symSize: 0x8 } + - { offset: 0x304AA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvgTo', symObjAddr: 0x108, symBinAddr: 0x23C8E8, symSize: 0x48 } + - { offset: 0x304ADB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvg', symObjAddr: 0x150, symBinAddr: 0x23C930, symSize: 0x44 } + - { offset: 0x304AFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvsTo', symObjAddr: 0x194, symBinAddr: 0x23C974, symSize: 0x40 } + - { offset: 0x304B8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvs', symObjAddr: 0x1D4, symBinAddr: 0x23C9B4, symSize: 0x150 } + - { offset: 0x304CC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvM', symObjAddr: 0x324, symBinAddr: 0x23CB04, symSize: 0x84 } + - { offset: 0x304D00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvM.resume.0', symObjAddr: 0x3A8, symBinAddr: 0x23CB88, symSize: 0x168 } + - { offset: 0x304EA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvgTo', symObjAddr: 0x580, symBinAddr: 0x23CD60, symSize: 0x38 } + - { offset: 0x304ED3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvgTo', symObjAddr: 0x580, symBinAddr: 0x23CD60, symSize: 0x38 } + - { offset: 0x304F21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvg', symObjAddr: 0x5B8, symBinAddr: 0x23CD98, symSize: 0x28 } + - { offset: 0x304F41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvg', symObjAddr: 0x5B8, symBinAddr: 0x23CD98, symSize: 0x28 } + - { offset: 0x304FBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvgTo', symObjAddr: 0x668, symBinAddr: 0x23CE48, symSize: 0x3C } + - { offset: 0x305001, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvgTo', symObjAddr: 0x668, symBinAddr: 0x23CE48, symSize: 0x3C } + - { offset: 0x305052, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvg', symObjAddr: 0x6A4, symBinAddr: 0x23CE84, symSize: 0x2C } + - { offset: 0x305087, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvg', symObjAddr: 0x6A4, symBinAddr: 0x23CE84, symSize: 0x2C } + - { offset: 0x3050DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvsTo', symObjAddr: 0x6D0, symBinAddr: 0x23CEB0, symSize: 0x5C } + - { offset: 0x305100, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvs', symObjAddr: 0x72C, symBinAddr: 0x23CF0C, symSize: 0x2C } + - { offset: 0x305114, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvM', symObjAddr: 0x79C, symBinAddr: 0x23CF7C, symSize: 0x60 } + - { offset: 0x3051B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvM.resume.0', symObjAddr: 0x7FC, symBinAddr: 0x23CFDC, symSize: 0x74 } + - { offset: 0x305222, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvgTo', symObjAddr: 0x870, symBinAddr: 0x23D050, symSize: 0x3C } + - { offset: 0x305268, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvgTo', symObjAddr: 0x870, symBinAddr: 0x23D050, symSize: 0x3C } + - { offset: 0x305299, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvg', symObjAddr: 0x8AC, symBinAddr: 0x23D08C, symSize: 0x2C } + - { offset: 0x3052CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvg', symObjAddr: 0x8AC, symBinAddr: 0x23D08C, symSize: 0x2C } + - { offset: 0x3052FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvsTo', symObjAddr: 0x8D8, symBinAddr: 0x23D0B8, symSize: 0x40 } + - { offset: 0x305355, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvs', symObjAddr: 0x918, symBinAddr: 0x23D0F8, symSize: 0x2D0 } + - { offset: 0x305546, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvM', symObjAddr: 0xBE8, symBinAddr: 0x23D3C8, symSize: 0x60 } + - { offset: 0x3055CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvM.resume.0', symObjAddr: 0xC48, symBinAddr: 0x23D428, symSize: 0x44 } + - { offset: 0x305601, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0VvgTo', symObjAddr: 0xC8C, symBinAddr: 0x23D46C, symSize: 0x90 } + - { offset: 0x305630, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0VvgTo', symObjAddr: 0xC8C, symBinAddr: 0x23D46C, symSize: 0x90 } + - { offset: 0x305660, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0Vvg', symObjAddr: 0xD1C, symBinAddr: 0x23D4FC, symSize: 0x80 } + - { offset: 0x3056C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvgTo', symObjAddr: 0xD9C, symBinAddr: 0x23D57C, symSize: 0x44 } + - { offset: 0x3056F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovg', symObjAddr: 0xDE0, symBinAddr: 0x23D5C0, symSize: 0x40 } + - { offset: 0x30573C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvsTo', symObjAddr: 0xE20, symBinAddr: 0x23D600, symSize: 0x50 } + - { offset: 0x305777, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovs', symObjAddr: 0xE70, symBinAddr: 0x23D650, symSize: 0x4C } + - { offset: 0x3057A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvM', symObjAddr: 0xEBC, symBinAddr: 0x23D69C, symSize: 0x40 } + - { offset: 0x30582A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvsTo', symObjAddr: 0xF58, symBinAddr: 0x23D734, symSize: 0x28 } + - { offset: 0x30585F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvsTo', symObjAddr: 0xF58, symBinAddr: 0x23D734, symSize: 0x28 } + - { offset: 0x3058B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvs', symObjAddr: 0xF80, symBinAddr: 0x23D75C, symSize: 0x2C } + - { offset: 0x3058DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvs', symObjAddr: 0xF80, symBinAddr: 0x23D75C, symSize: 0x2C } + - { offset: 0x30595A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM', symObjAddr: 0xFAC, symBinAddr: 0x23D788, symSize: 0x40 } + - { offset: 0x3059D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM.resume.0', symObjAddr: 0xFEC, symBinAddr: 0x23D7C8, symSize: 0x34 } + - { offset: 0x3059F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM.resume.0', symObjAddr: 0xFEC, symBinAddr: 0x23D7C8, symSize: 0x34 } + - { offset: 0x305A0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM.resume.0', symObjAddr: 0xFEC, symBinAddr: 0x23D7C8, symSize: 0x34 } + - { offset: 0x305ACA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvg', symObjAddr: 0x1030, symBinAddr: 0x23D80C, symSize: 0x30 } + - { offset: 0x305B2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvsTo', symObjAddr: 0x1060, symBinAddr: 0x23D83C, symSize: 0x54 } + - { offset: 0x305B5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvs', symObjAddr: 0x10B4, symBinAddr: 0x23D890, symSize: 0x24 } + - { offset: 0x305B88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvM', symObjAddr: 0x10D8, symBinAddr: 0x23D8B4, symSize: 0x40 } + - { offset: 0x305BD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvM.resume.0', symObjAddr: 0x1118, symBinAddr: 0x23D8F4, symSize: 0x54 } + - { offset: 0x305C35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvg', symObjAddr: 0x116C, symBinAddr: 0x23D948, symSize: 0x98 } + - { offset: 0x305D03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvgTo', symObjAddr: 0x1204, symBinAddr: 0x23D9E0, symSize: 0x44 } + - { offset: 0x305D37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovg', symObjAddr: 0x1248, symBinAddr: 0x23DA24, symSize: 0x40 } + - { offset: 0x305D7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvsTo', symObjAddr: 0x1288, symBinAddr: 0x23DA64, symSize: 0x68 } + - { offset: 0x305DB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovs', symObjAddr: 0x12F0, symBinAddr: 0x23DACC, symSize: 0x50 } + - { offset: 0x305E26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvW', symObjAddr: 0x1340, symBinAddr: 0x23DB1C, symSize: 0x11C } + - { offset: 0x305F38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvM', symObjAddr: 0x145C, symBinAddr: 0x23DC38, symSize: 0x44 } + - { offset: 0x305F5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvM.resume.0', symObjAddr: 0x14A0, symBinAddr: 0x23DC7C, symSize: 0x30 } + - { offset: 0x305FC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1514, symBinAddr: 0x23DCAC, symSize: 0x110 } + - { offset: 0x306014, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1624, symBinAddr: 0x23DDBC, symSize: 0x28 } + - { offset: 0x306028, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x164C, symBinAddr: 0x23DDE4, symSize: 0x114 } + - { offset: 0x306075, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x1760, symBinAddr: 0x23DEF8, symSize: 0x54 } + - { offset: 0x306089, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAcA0deF8Delegate_pSg_tcfC', symObjAddr: 0x17B4, symBinAddr: 0x23DF4C, symSize: 0x30 } + - { offset: 0x30609D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAcA0deF8Delegate_pSg_tcfc', symObjAddr: 0x17E4, symBinAddr: 0x23DF7C, symSize: 0x134 } + - { offset: 0x3060EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAcA0deF8Delegate_pSg_tcfcTo', symObjAddr: 0x1918, symBinAddr: 0x23E0B0, symSize: 0x30 } + - { offset: 0x306167, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5setUp33_73EE1AFD99A8C7D37AD8BE1B977755A6LLyyF', symObjAddr: 0x1948, symBinAddr: 0x23E0E0, symSize: 0x19C } + - { offset: 0x3062FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8loadViewyyF', symObjAddr: 0x1AE4, symBinAddr: 0x23E27C, symSize: 0x1A0 } + - { offset: 0x3064D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8loadViewyyFTo', symObjAddr: 0x1C84, symBinAddr: 0x23E41C, symSize: 0x28 } + - { offset: 0x3064E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21viewDidLayoutSubviewsyyF', symObjAddr: 0x1CAC, symBinAddr: 0x23E444, symSize: 0x94 } + - { offset: 0x306560, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21viewDidLayoutSubviewsyyFTo', symObjAddr: 0x1D40, symBinAddr: 0x23E4D8, symSize: 0x28 } + - { offset: 0x306596, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC13viewDidAppearyySbFTo', symObjAddr: 0x1DD0, symBinAddr: 0x23E500, symSize: 0x8C } + - { offset: 0x3065F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18viewWillTransition2to4withySo6CGSizeV_So06UIViewfI11Coordinator_ptF', symObjAddr: 0x1E5C, symBinAddr: 0x23E58C, symSize: 0x274 } + - { offset: 0x306744, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18viewWillTransition2to4withySo6CGSizeV_So06UIViewfI11Coordinator_ptFTo', symObjAddr: 0x20D0, symBinAddr: 0x23E800, symSize: 0x60 } + - { offset: 0x30675F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC14willTransition2to4withySo17UITraitCollectionC_So06UIViewfH11Coordinator_ptF', symObjAddr: 0x2130, symBinAddr: 0x23E860, symSize: 0x17C } + - { offset: 0x30688D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC14willTransition2to4withySo17UITraitCollectionC_So06UIViewfH11Coordinator_ptFTo', symObjAddr: 0x22AC, symBinAddr: 0x23E9DC, symSize: 0x68 } + - { offset: 0x306904, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC17viewWillDisappearyySbFTo', symObjAddr: 0x2368, symBinAddr: 0x23EA44, symSize: 0x7C } + - { offset: 0x30699D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6update33_73EE1AFD99A8C7D37AD8BE1B977755A6LL14safeAreaInsetsySo06UIEdgeS0V_tF', symObjAddr: 0x23E4, symBinAddr: 0x23EAC0, symSize: 0x360 } + - { offset: 0x306DA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyF', symObjAddr: 0x2744, symBinAddr: 0x23EE20, symSize: 0x2BC } + - { offset: 0x306F31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyFyycfU_', symObjAddr: 0x2A00, symBinAddr: 0x23F0DC, symSize: 0xC0 } + - { offset: 0x306FA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyFyycfU0_', symObjAddr: 0x2AC0, symBinAddr: 0x23F19C, symSize: 0xF4 } + - { offset: 0x307046, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtF', symObjAddr: 0x2BB4, symBinAddr: 0x23F290, symSize: 0x1F0 } + - { offset: 0x30724E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtFySo6UIViewC_10Foundation24NSKeyValueObservedChangeVySo12UIEdgeInsetsVGtYbcfU_', symObjAddr: 0x2DA4, symBinAddr: 0x23F480, symSize: 0x238 } + - { offset: 0x30732F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtFTo', symObjAddr: 0x2FDC, symBinAddr: 0x23F6B8, symSize: 0x90 } + - { offset: 0x307343, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4hide8animated10completionySb_yycSgtF', symObjAddr: 0x306C, symBinAddr: 0x23F748, symSize: 0xC0 } + - { offset: 0x307441, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4hide8animated10completionySb_yycSgtFTo', symObjAddr: 0x312C, symBinAddr: 0x23F808, symSize: 0x120 } + - { offset: 0x30756E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtF', symObjAddr: 0x324C, symBinAddr: 0x23F928, symSize: 0x798 } + - { offset: 0x3077AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtFyycfU_', symObjAddr: 0x39E4, symBinAddr: 0x2400C0, symSize: 0x7C } + - { offset: 0x307811, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtFTo', symObjAddr: 0x3A60, symBinAddr: 0x24013C, symSize: 0xC0 } + - { offset: 0x307825, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtF', symObjAddr: 0x3B20, symBinAddr: 0x2401FC, symSize: 0x1C4 } + - { offset: 0x307999, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtFyycfU_', symObjAddr: 0x3CE4, symBinAddr: 0x2403C0, symSize: 0x134 } + - { offset: 0x307A28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtFTo', symObjAddr: 0x3E18, symBinAddr: 0x2404F4, symSize: 0x90 } + - { offset: 0x307A3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4move2to8animated10completionyAA0dE5StateC_SbyycSgtF', symObjAddr: 0x3EA8, symBinAddr: 0x240584, symSize: 0x9C } + - { offset: 0x307AFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4move2to8animated10completionyAA0dE5StateC_SbyycSgtFTo', symObjAddr: 0x3F44, symBinAddr: 0x240620, symSize: 0x108 } + - { offset: 0x307BE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC3set011contentViewF0ySo06UIViewF0CSg_tF', symObjAddr: 0x404C, symBinAddr: 0x240728, symSize: 0x194 } + - { offset: 0x307D5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5track10scrollViewySo08UIScrollI0C_tF', symObjAddr: 0x41E0, symBinAddr: 0x2408BC, symSize: 0x1AC } + - { offset: 0x307F08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5track10scrollViewySo08UIScrollI0C_tFTo', symObjAddr: 0x438C, symBinAddr: 0x240A68, symSize: 0x50 } + - { offset: 0x307F1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC24followScrollViewBouncingyyF', symObjAddr: 0x43DC, symBinAddr: 0x240AB8, symSize: 0x3C } + - { offset: 0x307F75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC7untrack10scrollViewySo08UIScrollI0C_tF', symObjAddr: 0x4418, symBinAddr: 0x240AF4, symSize: 0x118 } + - { offset: 0x308041, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC7untrack10scrollViewySo08UIScrollI0C_tFTo', symObjAddr: 0x4530, symBinAddr: 0x240C0C, symSize: 0x50 } + - { offset: 0x30806A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC26accessibilityPerformEscapeSbyFTo', symObjAddr: 0x45E0, symBinAddr: 0x240C5C, symSize: 0x5C } + - { offset: 0x3080B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC26accessibilityPerformEscapeSbyFTo', symObjAddr: 0x45E0, symBinAddr: 0x240C5C, symSize: 0x5C } + - { offset: 0x308101, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16invalidateLayoutyyF', symObjAddr: 0x463C, symBinAddr: 0x240CB8, symSize: 0x134 } + - { offset: 0x30820B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16invalidateLayoutyyFTo', symObjAddr: 0x4770, symBinAddr: 0x240DEC, symSize: 0x28 } + - { offset: 0x30821F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocation3forSo7CGPointVAA0dE5StateC_tF', symObjAddr: 0x4798, symBinAddr: 0x240E14, symSize: 0x70 } + - { offset: 0x30829D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocation3forSo7CGPointVAA0dE5StateC_tFTo', symObjAddr: 0x4808, symBinAddr: 0x240E84, symSize: 0xA0 } + - { offset: 0x3082D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocation3forSo7CGPointVAA0dE5StateC_tFTo', symObjAddr: 0x4808, symBinAddr: 0x240E84, symSize: 0xA0 } + - { offset: 0x308308, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvgTo', symObjAddr: 0x48A8, symBinAddr: 0x240F24, symSize: 0x78 } + - { offset: 0x308338, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvgTo', symObjAddr: 0x48A8, symBinAddr: 0x240F24, symSize: 0x78 } + - { offset: 0x308369, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvg', symObjAddr: 0x4920, symBinAddr: 0x240F9C, symSize: 0x68 } + - { offset: 0x3083E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvsTo', symObjAddr: 0x4988, symBinAddr: 0x241004, symSize: 0x74 } + - { offset: 0x30841C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvsTo', symObjAddr: 0x4988, symBinAddr: 0x241004, symSize: 0x74 } + - { offset: 0x30844D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvs', symObjAddr: 0x49FC, symBinAddr: 0x241078, symSize: 0x64 } + - { offset: 0x3084A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM', symObjAddr: 0x4B30, symBinAddr: 0x2411AC, symSize: 0x78 } + - { offset: 0x308513, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM.resume.0', symObjAddr: 0x4BA8, symBinAddr: 0x241224, symSize: 0x68 } + - { offset: 0x308538, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM.resume.0', symObjAddr: 0x4BA8, symBinAddr: 0x241224, symSize: 0x68 } + - { offset: 0x30854C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM.resume.0', symObjAddr: 0x4BA8, symBinAddr: 0x241224, symSize: 0x68 } + - { offset: 0x3085E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC13addTopPadding7paddingy12CoreGraphics7CGFloatV_tF', symObjAddr: 0x4C10, symBinAddr: 0x24128C, symSize: 0x64 } + - { offset: 0x30864C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerCfD', symObjAddr: 0x4C74, symBinAddr: 0x2412F0, symSize: 0x30 } + - { offset: 0x308679, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvsTf4en_n', symObjAddr: 0x5104, symBinAddr: 0x241780, symSize: 0x2EC } + - { offset: 0x3089DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC_6layout8behaviorAcA23FloatingPanelControllerC_AA0gH6Layout_pAA0gH8Behavior_ptcfcTf4nnen_nAA0gh7DefaultK0C_Tg5', symObjAddr: 0x53F0, symBinAddr: 0x241A6C, symSize: 0x4E8 } + - { offset: 0x308BD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18shouldUpdateLayout33_73EE1AFD99A8C7D37AD8BE1B977755A6LL4from2toSbSo17UITraitCollectionC_AItFTf4nnd_n', symObjAddr: 0x597C, symBinAddr: 0x241F74, symSize: 0x170 } + - { offset: 0x3090DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC13insertCampign10geofenceIdySiSg_tF', symObjAddr: 0x0, symBinAddr: 0x2428EC, symSize: 0x198 } + - { offset: 0x309254, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryCMa', symObjAddr: 0x864, symBinAddr: 0x24312C, symSize: 0x20 } + - { offset: 0x309268, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC13insertCampign10geofenceIdySiSg_tFyyYbXEfU_TA', symObjAddr: 0x930, symBinAddr: 0x243170, symSize: 0x8 } + - { offset: 0x30927C, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x950, symBinAddr: 0x243188, symSize: 0x10 } + - { offset: 0x309290, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x960, symBinAddr: 0x243198, symSize: 0x8 } + - { offset: 0x3093FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC13insertCampign10geofenceIdySiSg_tF', symObjAddr: 0x0, symBinAddr: 0x2428EC, symSize: 0x198 } + - { offset: 0x30949F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC13insertCampign10geofenceIdySiSg_tFyyYbXEfU_', symObjAddr: 0x198, symBinAddr: 0x242A84, symSize: 0x218 } + - { offset: 0x309559, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC06removeD033_4371A12B79815A679BB985BCBBAFD484LL2idySi_tF', symObjAddr: 0x3B0, symBinAddr: 0x242C9C, symSize: 0x258 } + - { offset: 0x3097D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC15getNotification2idAA0D8TrackingCSgSi_tF', symObjAddr: 0x608, symBinAddr: 0x242EF4, symSize: 0x238 } + - { offset: 0x309DB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC14placeImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2431A0, symSize: 0x10 } + - { offset: 0x30A216, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellCfETo', symObjAddr: 0x1280, symBinAddr: 0x244420, symSize: 0x98 } + - { offset: 0x30A245, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellCMa', symObjAddr: 0x1318, symBinAddr: 0x2444B8, symSize: 0x20 } + - { offset: 0x30A259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC8setImage3foryAA5PlaceCSg_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x13CC, symBinAddr: 0x244528, symSize: 0x8 } + - { offset: 0x30A3E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC14placeImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2431A0, symSize: 0x10 } + - { offset: 0x30A3FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC14placeImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2431A0, symSize: 0x10 } + - { offset: 0x30A440, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC14placeImageViewSo07UIImageH0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x2431B0, symSize: 0x34 } + - { offset: 0x30A48F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x2431E4, symSize: 0x10 } + - { offset: 0x30A4A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x2431E4, symSize: 0x10 } + - { offset: 0x30A4E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x2431F4, symSize: 0x34 } + - { offset: 0x30A536, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17distanceStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x243228, symSize: 0x10 } + - { offset: 0x30A54E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17distanceStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0x88, symBinAddr: 0x243228, symSize: 0x10 } + - { offset: 0x30A58E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17distanceStackViewSo07UIStackH0CSgvsTo', symObjAddr: 0x98, symBinAddr: 0x243238, symSize: 0x34 } + - { offset: 0x30A5DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x24326C, symSize: 0x10 } + - { offset: 0x30A5F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x24326C, symSize: 0x10 } + - { offset: 0x30A630, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x24327C, symSize: 0x34 } + - { offset: 0x30A67F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13categoryLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x2432B0, symSize: 0x10 } + - { offset: 0x30A697, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13categoryLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x2432B0, symSize: 0x10 } + - { offset: 0x30A6D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13categoryLabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x2432C0, symSize: 0x34 } + - { offset: 0x30A721, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x2432F4, symSize: 0x10 } + - { offset: 0x30A739, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x154, symBinAddr: 0x2432F4, symSize: 0x10 } + - { offset: 0x30A774, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0x164, symBinAddr: 0x243304, symSize: 0x34 } + - { offset: 0x30A7C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17subtitleStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x243338, symSize: 0x10 } + - { offset: 0x30A7DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17subtitleStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0x198, symBinAddr: 0x243338, symSize: 0x10 } + - { offset: 0x30A816, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17subtitleStackViewSo07UIStackH0CSgvsTo', symObjAddr: 0x1A8, symBinAddr: 0x243348, symSize: 0x34 } + - { offset: 0x30A865, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC12awakeFromNibyyFTo', symObjAddr: 0x1DC, symBinAddr: 0x24337C, symSize: 0x3C } + - { offset: 0x30A931, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC9configure3for12showsDetailsyAA5PlaceCSg_SbtF', symObjAddr: 0x218, symBinAddr: 0x2433B8, symSize: 0x844 } + - { offset: 0x30AD5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC8setImage3foryAA5PlaceCSg_tF', symObjAddr: 0xA5C, symBinAddr: 0x243BFC, symSize: 0x348 } + - { offset: 0x30AEC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC8setImage3foryAA5PlaceCSg_tFySo7UIImageCSgcfU_', symObjAddr: 0xDA4, symBinAddr: 0x243F44, symSize: 0x150 } + - { offset: 0x30AF73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC15prepareForReuseyyF', symObjAddr: 0xEF4, symBinAddr: 0x244094, symSize: 0x114 } + - { offset: 0x30AFF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC15prepareForReuseyyFTo', symObjAddr: 0x1008, symBinAddr: 0x2441A8, symSize: 0x28 } + - { offset: 0x30B00B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x1030, symBinAddr: 0x2441D0, symSize: 0xE4 } + - { offset: 0x30B04C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x1114, symBinAddr: 0x2442B4, symSize: 0x48 } + - { offset: 0x30B084, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x115C, symBinAddr: 0x2442FC, symSize: 0xCC } + - { offset: 0x30B0B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1228, symBinAddr: 0x2443C8, symSize: 0x28 } + - { offset: 0x30B0CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellCfD', symObjAddr: 0x1250, symBinAddr: 0x2443F0, symSize: 0x30 } + - { offset: 0x30BD26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22FloatingPanelPresenterPAAE7present_5level5state8animated10completionyAA0dE11Presentable_pSg_SiAA0dE5StateCSgSbyycSgtFAA18HomeViewControllerC_Tg5', symObjAddr: 0xC0, symBinAddr: 0x244530, symSize: 0x3C8 } + - { offset: 0x30C3AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tF', symObjAddr: 0x17E4, symBinAddr: 0x245C54, symSize: 0x774 } + - { offset: 0x30CB86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycAA03MapeF0Ccfu5_yycfu6_', symObjAddr: 0x5FF8, symBinAddr: 0x24A468, symSize: 0x88 } + - { offset: 0x30CC1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycfU0_', symObjAddr: 0x6080, symBinAddr: 0x24A4F0, symSize: 0xC8 } + - { offset: 0x30D244, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showPoiDetails3poi06sourceE0y7Penguin0H7PolygonV_AA06SourceE0OtF', symObjAddr: 0x2C2C, symBinAddr: 0x24709C, symSize: 0x688 } + - { offset: 0x30DA89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC16showVenueDetails5venuey7Penguin0H0C_tF', symObjAddr: 0x32B4, symBinAddr: 0x247724, symSize: 0x640 } + - { offset: 0x30E2DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showCampusDetails6campusy7Penguin5VenueCSg_tF', symObjAddr: 0x38F4, symBinAddr: 0x247D64, symSize: 0x650 } + - { offset: 0x30EA07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showCampusDetails6campusy7Penguin5VenueCSg_tFyycfU_', symObjAddr: 0x8D64, symBinAddr: 0x24D134, symSize: 0xF4 } + - { offset: 0x30EB20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tF', symObjAddr: 0x3F44, symBinAddr: 0x2483B4, symSize: 0x4D0 } + - { offset: 0x30F032, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tFyycfU_', symObjAddr: 0x9C38, symBinAddr: 0x24E008, symSize: 0x198 } + - { offset: 0x30F1C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tFyycfU0_', symObjAddr: 0x9DD0, symBinAddr: 0x24E1A0, symSize: 0x13C } + - { offset: 0x30F3DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC19showCategoryResults8category7filtersy7Penguin11POICategoryV_AA0H7FiltersVSgtF', symObjAddr: 0x451C, symBinAddr: 0x24898C, symSize: 0x308 } + - { offset: 0x30F723, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showSharedUserLocation8locationyAA5PlaceCSg_tF', symObjAddr: 0x4824, symBinAddr: 0x248C94, symSize: 0x4E8 } + - { offset: 0x30FE25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCfETo', symObjAddr: 0x54C4, symBinAddr: 0x249934, symSize: 0x118 } + - { offset: 0x30FE54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCMa', symObjAddr: 0x55DC, symBinAddr: 0x249A4C, symSize: 0x20 } + - { offset: 0x30FE68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA22FloatingPanelPresenterA2aDP08floatingH7DidMoveyyAA0ghF0CFTW', symObjAddr: 0x56C8, symBinAddr: 0x249B38, symSize: 0x4 } + - { offset: 0x30FEC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x56CC, symBinAddr: 0x249B3C, symSize: 0x184 } + - { offset: 0x310097, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13showDirectoryyyF', symObjAddr: 0x5850, symBinAddr: 0x249CC0, symSize: 0x3E4 } + - { offset: 0x310519, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showCategories10categoriesySay7Penguin11POICategoryVG_tF', symObjAddr: 0x5C34, symBinAddr: 0x24A0A4, symSize: 0x3C4 } + - { offset: 0x310958, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showCategories10categoriesySay7Penguin11POICategoryVG_tFyAHcfU0_', symObjAddr: 0x72AC, symBinAddr: 0x24B67C, symSize: 0x4C } + - { offset: 0x310AF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15showSearchPanel4overyAA08FloatingI11Presentable_pSg_tF', symObjAddr: 0x6148, symBinAddr: 0x24A5B8, symSize: 0x470 } + - { offset: 0x311092, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC16showAllFavoritesyyF', symObjAddr: 0x65B8, symBinAddr: 0x24AA28, symSize: 0x3D8 } + - { offset: 0x31158C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12showFavorite8favoriteyAA0H0C_tF', symObjAddr: 0x6990, symBinAddr: 0x24AE00, symSize: 0x244 } + - { offset: 0x3116BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC20handleFiltersDisplay11displayType11selectedIdsyAA03TagiK0O_SaySiGtF', symObjAddr: 0x6BD4, symBinAddr: 0x24B044, symSize: 0x120 } + - { offset: 0x3118A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showAllFilters33_A0A4D0656B505EF3DF25D7EB9947CEF6LL06searchI0yAA12SearchFilterCSg_tF', symObjAddr: 0x6CF4, symBinAddr: 0x24B164, symSize: 0x3AC } + - { offset: 0x311CE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showAllFilters33_A0A4D0656B505EF3DF25D7EB9947CEF6LL06searchI0yAA12SearchFilterCSg_tFyAIcfU_', symObjAddr: 0xA848, symBinAddr: 0x24EC18, symSize: 0x10C } + - { offset: 0x311E1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtF', symObjAddr: 0x72F8, symBinAddr: 0x24B6C8, symSize: 0x558 } + - { offset: 0x312411, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFySaySSGcAA03MapeF0Ccfu_yAKcfu0_', symObjAddr: 0x7850, symBinAddr: 0x24BC20, symSize: 0x144 } + - { offset: 0x31249E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyycfU0_', symObjAddr: 0x7994, symBinAddr: 0x24BD64, symSize: 0x1F4 } + - { offset: 0x3125C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyAA0H7FiltersVSgcAA0hieF0Ccfu1_yAMcfu2_', symObjAddr: 0x7B88, symBinAddr: 0x24BF58, symSize: 0xD4 } + - { offset: 0x312713, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showVenueSelector33_A0A4D0656B505EF3DF25D7EB9947CEF6LL07currentH2IdySiSg_tF', symObjAddr: 0x7C5C, symBinAddr: 0x24C02C, symSize: 0x3AC } + - { offset: 0x312BF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25displayFloorSelectorPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL7venueId11closeActionySiSg_yAHcSgtF', symObjAddr: 0x8008, symBinAddr: 0x24C3D8, symSize: 0x438 } + - { offset: 0x3130DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25displayFloorSelectorPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL7venueId11closeActionySiSg_yAHcSgtFy7Penguin0H0CcfU_', symObjAddr: 0x8440, symBinAddr: 0x24C810, symSize: 0xEC } + - { offset: 0x3131B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showNavigationFeedback11destination5titleyAA5PlaceCSg_SSSgtF', symObjAddr: 0x852C, symBinAddr: 0x24C8FC, symSize: 0x414 } + - { offset: 0x31367A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showNavigationFeedback11destination5titleyAA5PlaceCSg_SSSgtFyycfU_', symObjAddr: 0x8E58, symBinAddr: 0x24D228, symSize: 0x1DC } + - { offset: 0x3137FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25chooseSourceForNavigation10completionyyAA5PlaceCSgc_tF', symObjAddr: 0x8940, symBinAddr: 0x24CD10, symSize: 0x424 } + - { offset: 0x313CA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25chooseSourceForNavigation10completionyyAA5PlaceCSgc_tFyAHcfU_', symObjAddr: 0xBE68, symBinAddr: 0x250238, symSize: 0xA14 } + - { offset: 0x3143E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21showUserLocationPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LLyyF', symObjAddr: 0x9034, symBinAddr: 0x24D404, symSize: 0x4E4 } + - { offset: 0x314996, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21showUserLocationPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LLyyFyycfU0_', symObjAddr: 0x959C, symBinAddr: 0x24D96C, symSize: 0xF0 } + - { offset: 0x314A90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC35showFavoriteDetailForSharedLocation11sharedPlaceyAA0N0C_tF', symObjAddr: 0x98BC, symBinAddr: 0x24DC8C, symSize: 0x37C } + - { offset: 0x314F6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15didCancelSearchyyF', symObjAddr: 0x9F0C, symBinAddr: 0x24E2DC, symSize: 0x4C0 } + - { offset: 0x31561A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC019showFilterSelectionF033_A0A4D0656B505EF3DF25D7EB9947CEF6LL4type4data11selectedIdsyAA14TagDisplayTypeO_SayAA0W10DataSource_pGSaySiGtF', symObjAddr: 0xA3CC, symBinAddr: 0x24E79C, symSize: 0x3EC } + - { offset: 0x315AC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC019showFilterSelectionF033_A0A4D0656B505EF3DF25D7EB9947CEF6LL4type4data11selectedIdsyAA14TagDisplayTypeO_SayAA0W10DataSource_pGSaySiGtFyAJSg_AMtcfU_', symObjAddr: 0xA7B8, symBinAddr: 0x24EB88, symSize: 0x90 } + - { offset: 0x315B2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC19showFavoriteDetails3foryAA0H0C_tF', symObjAddr: 0xA954, symBinAddr: 0x24ED24, symSize: 0x34C } + - { offset: 0x315F59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17locationDidChangeyyF', symObjAddr: 0xACA0, symBinAddr: 0x24F070, symSize: 0xBC } + - { offset: 0x31607E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23locationStatusDidChange6statusyAA08LocationH0O_tF', symObjAddr: 0xAD5C, symBinAddr: 0x24F12C, symSize: 0x49C } + - { offset: 0x31656D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25userLocationStatusChangedyyF', symObjAddr: 0xB1F8, symBinAddr: 0x24F5C8, symSize: 0x224 } + - { offset: 0x316A2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtF', symObjAddr: 0xB41C, symBinAddr: 0x24F7EC, symSize: 0x228 } + - { offset: 0x316F6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15favoritesLoadedyyF', symObjAddr: 0xB644, symBinAddr: 0x24FA14, symSize: 0x2D0 } + - { offset: 0x3173A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC29sharedLocationAddedToFavorite8favoriteyAA0K0C_tF', symObjAddr: 0xB914, symBinAddr: 0x24FCE4, symSize: 0x22C } + - { offset: 0x31767B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC33sharedLocationRemovedFromFavorite8favoriteyAA0K0C_tF', symObjAddr: 0xBB40, symBinAddr: 0x24FF10, symSize: 0x178 } + - { offset: 0x31788F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21sharedLocationUpdated8favoriteyAA8FavoriteC_tF', symObjAddr: 0xBCB8, symBinAddr: 0x250088, symSize: 0x1B0 } + - { offset: 0x317C45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7addGate33_A0A4D0656B505EF3DF25D7EB9947CEF6LL2in10completionyAA5PlaceCSg_yAJctF', symObjAddr: 0xC87C, symBinAddr: 0x250C4C, symSize: 0x3D8 } + - { offset: 0x3180A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7addGate33_A0A4D0656B505EF3DF25D7EB9947CEF6LL2in10completionyAA5PlaceCSg_yAJctFyAJcfU_', symObjAddr: 0xCC54, symBinAddr: 0x251024, symSize: 0x118 } + - { offset: 0x31810F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showMessageDetail7messageyAA0hI0C_tF', symObjAddr: 0xCD6C, symBinAddr: 0x25113C, symSize: 0x410 } + - { offset: 0x3185A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showMessageDetail7messageyAA0hI0C_tFyycfU_', symObjAddr: 0xD424, symBinAddr: 0x2517F4, symSize: 0x64 } + - { offset: 0x318649, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showRouteOverview33_A0A4D0656B505EF3DF25D7EB9947CEF6LL5placeyAA5PlaceCSg_tF', symObjAddr: 0xD17C, symBinAddr: 0x25154C, symSize: 0x2A8 } + - { offset: 0x31891C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA36LocationBasedMessagesManagerDelegateA2aDP19loadMessageForFloor7messageyAA0M6DetailC_tFTW', symObjAddr: 0xD488, symBinAddr: 0x251858, symSize: 0x4 } + - { offset: 0x31893C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA36LocationBasedMessagesManagerDelegateA2aDP19loadMessageForFloor7messageyAA0M6DetailC_tFTW', symObjAddr: 0xD488, symBinAddr: 0x251858, symSize: 0x4 } + - { offset: 0x318960, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0xD48C, symBinAddr: 0x25185C, symSize: 0x8 } + - { offset: 0x31897C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0xD494, symBinAddr: 0x251864, symSize: 0x4 } + - { offset: 0x318A1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21showUserLocationPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LLyyFyycfU_TA', symObjAddr: 0xE910, symBinAddr: 0x251960, symSize: 0x20 } + - { offset: 0x318A30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21showUserLocationPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LLyyFyycfU0_TA', symObjAddr: 0xE930, symBinAddr: 0x251980, symSize: 0x8 } + - { offset: 0x318C0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tFyycfU_TA', symObjAddr: 0xEAF0, symBinAddr: 0x251B30, symSize: 0x8 } + - { offset: 0x318C1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tFyycfU0_TA', symObjAddr: 0xEAF8, symBinAddr: 0x251B38, symSize: 0x8 } + - { offset: 0x318C33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25chooseSourceForNavigation10completionyyAA5PlaceCSgc_tFyAHcfU_TA', symObjAddr: 0xEB00, symBinAddr: 0x251B40, symSize: 0xC } + - { offset: 0x318C47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7addGate33_A0A4D0656B505EF3DF25D7EB9947CEF6LL2in10completionyAA5PlaceCSg_yAJctFyAJcfU_TA', symObjAddr: 0xEB38, symBinAddr: 0x251B78, symSize: 0xC } + - { offset: 0x318C5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showNavigationFeedback11destination5titleyAA5PlaceCSg_SSSgtFyycfU_TA', symObjAddr: 0xEB44, symBinAddr: 0x251B84, symSize: 0x8 } + - { offset: 0x318C6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showMessageDetail7messageyAA0hI0C_tFyAA5PlaceCSgcACcfu_yAJcfu0_TA', symObjAddr: 0xEB94, symBinAddr: 0x251B8C, symSize: 0x20 } + - { offset: 0x318CA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showMessageDetail7messageyAA0hI0C_tFyycfU_TA', symObjAddr: 0xEBB4, symBinAddr: 0x251BAC, symSize: 0x8 } + - { offset: 0x318CBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyycAA04MaineF0Ccfu_yycfu0_TA', symObjAddr: 0xEBBC, symBinAddr: 0x251BB4, symSize: 0x28 } + - { offset: 0x318D43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFy7Penguin10PoiPolygonV_AA06SourceE0OtcACcfu1_yAG_AItcfu2_TA', symObjAddr: 0xEBE4, symBinAddr: 0x251BDC, symSize: 0x20 } + - { offset: 0x318D86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFy7Penguin5VenueCcACcfu3_yAGcfu4_TA', symObjAddr: 0xEC04, symBinAddr: 0x251BFC, symSize: 0x20 } + - { offset: 0x318DC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFy7Penguin5VenueCSgcACcfu5_yAHcfu6_TA', symObjAddr: 0xEC24, symBinAddr: 0x251C1C, symSize: 0x20 } + - { offset: 0x318DFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyAA5PlaceCSgcACcfu7_yAGcfu8_TA', symObjAddr: 0xEC44, symBinAddr: 0x251C3C, symSize: 0x20 } + - { offset: 0x318E34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFySiSgcACcfu9_yAEcfu10_TA', symObjAddr: 0xEC64, symBinAddr: 0x251C5C, symSize: 0xC } + - { offset: 0x318E48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFy7Penguin11POICategoryV_AA15CategoryFiltersVSgtcACcfu11_yAG_AJtcfu12_TA', symObjAddr: 0xEC70, symBinAddr: 0x251C68, symSize: 0x34 } + - { offset: 0x318E8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyAA5PlaceCSgcACcfu13_yAGcfu14_TA', symObjAddr: 0xECA4, symBinAddr: 0x251C9C, symSize: 0x20 } + - { offset: 0x318EC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyycyKXEfu17_yycAA0aB9UIManagerCcfu18_yycfu19_TA', symObjAddr: 0xECC4, symBinAddr: 0x251CBC, symSize: 0x20 } + - { offset: 0x318EF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyycAA16PIEventsDelegate_pcfu15_yycfu16_TA', symObjAddr: 0xEDE8, symBinAddr: 0x251D24, symSize: 0x44 } + - { offset: 0x318F1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showSharedUserLocation8locationyAA5PlaceCSg_tFyAGcACcfu5_yAGcfu6_TA', symObjAddr: 0xEE50, symBinAddr: 0x251D68, symSize: 0x20 } + - { offset: 0x318F54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFySaySSGcAA03MapeF0Ccfu_yAKcfu0_TA', symObjAddr: 0xEE70, symBinAddr: 0x251D88, symSize: 0x8 } + - { offset: 0x318F68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyycfU0_TA', symObjAddr: 0xEE78, symBinAddr: 0x251D90, symSize: 0x8 } + - { offset: 0x318F7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyycfU1_TA', symObjAddr: 0xEE80, symBinAddr: 0x251D98, symSize: 0x20 } + - { offset: 0x318F90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyAA0H7FiltersVSgcAA0hieF0Ccfu1_yAMcfu2_TA', symObjAddr: 0xEEA0, symBinAddr: 0x251DB8, symSize: 0x14 } + - { offset: 0x318FC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC19floorSelectorTapped33_A0A4D0656B505EF3DF25D7EB9947CEF6LL14currentVenueIdySiSg_tFyAGcACcfu_yAGcfu0_TA', symObjAddr: 0xEEB4, symBinAddr: 0x251DCC, symSize: 0x24 } + - { offset: 0x319003, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25displayFloorSelectorPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL7venueId11closeActionySiSg_yAHcSgtFy7Penguin0H0CcfU_TA', symObjAddr: 0xEED8, symBinAddr: 0x251DF0, symSize: 0x8 } + - { offset: 0x319017, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showCampusDetails6campusy7Penguin5VenueCSg_tFyycfU_TA', symObjAddr: 0xEF14, symBinAddr: 0x251E1C, symSize: 0x8 } + - { offset: 0x319058, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC16showVenueDetails5venuey7Penguin0H0C_tFySiSgcACcfu2_yAIcfu3_TA', symObjAddr: 0xEF1C, symBinAddr: 0x251E24, symSize: 0x2C } + - { offset: 0x3190BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showPoiDetails3poi06sourceE0y7Penguin0H7PolygonV_AA06SourceE0OtFyAA5PlaceCSg_SSSgtcACcfu0_yAN_AOtcfu1_TA', symObjAddr: 0xEF8C, symBinAddr: 0x251E50, symSize: 0x20 } + - { offset: 0x319101, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showPoiDetails3poi06sourceE0y7Penguin0H7PolygonV_AA06SourceE0OtFyycAA16SelectionManagerCcfu2_yycfu3_TA', symObjAddr: 0xEFAC, symBinAddr: 0x251E70, symSize: 0x18 } + - { offset: 0x319115, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showPoiDetails3poi06sourceE0y7Penguin0H7PolygonV_AA06SourceE0OtFyyAA5PlaceCSgccACcfu4_yyANccfu5_TA', symObjAddr: 0xEFC4, symBinAddr: 0x251E88, symSize: 0x20 } + - { offset: 0x319151, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC07loadAllD4Info10completionyyyc_tFySayAA9VenueDataCG_SSSgtcfU_TA', symObjAddr: 0xF014, symBinAddr: 0x251ED8, symSize: 0xC } + - { offset: 0x319165, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC21loadCampusInformationyyFyAA9VenueDataCSgcfU_TA', symObjAddr: 0xF05C, symBinAddr: 0x251EE4, symSize: 0x8 } + - { offset: 0x3191FD, size: 0x8, addend: 0x0, symName: '_$sSo7UISceneCSo8NSObjectCSH10ObjectiveCWl', symObjAddr: 0xF594, symBinAddr: 0x25241C, symSize: 0x54 } + - { offset: 0x319211, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyFyyScMYccfU_TA', symObjAddr: 0xF628, symBinAddr: 0x252470, symSize: 0x20 } + - { offset: 0x319225, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xF648, symBinAddr: 0x252490, symSize: 0x10 } + - { offset: 0x319239, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xF658, symBinAddr: 0x2524A0, symSize: 0x8 } + - { offset: 0x31924D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC13loadAmenitiesyyFySayAA0G0VGcfU_TA', symObjAddr: 0xF734, symBinAddr: 0x2524A8, symSize: 0x8 } + - { offset: 0x319261, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyFyycfU0_TA', symObjAddr: 0xF768, symBinAddr: 0x2524D4, symSize: 0x8 } + - { offset: 0x319275, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC03getD010completionyyycSg_tFySayAA13VenueCardDataVGcfU_TA', symObjAddr: 0xF7A8, symBinAddr: 0x252514, symSize: 0xC } + - { offset: 0x319289, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycACcfu_yycfu0_TA', symObjAddr: 0xF7B4, symBinAddr: 0x252520, symSize: 0x20 } + - { offset: 0x3192BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFySay7Penguin11POICategoryVGcACcfu1_yAJcfu2_TA', symObjAddr: 0xF7D4, symBinAddr: 0x252540, symSize: 0x20 } + - { offset: 0x3192F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFy7Penguin11POICategoryVcAA03MapeF0Ccfu3_yAIcfu4_TA', symObjAddr: 0xF7F4, symBinAddr: 0x252560, symSize: 0x20 } + - { offset: 0x319330, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycAA03MapeF0Ccfu5_yycfu6_TA', symObjAddr: 0xF814, symBinAddr: 0x252580, symSize: 0x8 } + - { offset: 0x319344, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycAA03MapeF0Ccfu7_yycfu8_TA', symObjAddr: 0xF81C, symBinAddr: 0x252588, symSize: 0x20 } + - { offset: 0x319376, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFy7Penguin10PoiPolygonVcfU_TA', symObjAddr: 0xF83C, symBinAddr: 0x2525A8, symSize: 0x18 } + - { offset: 0x31938A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycfU0_TA', symObjAddr: 0xF854, symBinAddr: 0x2525C0, symSize: 0x8 } + - { offset: 0x31939E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycfU1_TA', symObjAddr: 0xF85C, symBinAddr: 0x2525C8, symSize: 0x20 } + - { offset: 0x3193B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycfU2_TA', symObjAddr: 0xF87C, symBinAddr: 0x2525E8, symSize: 0x18 } + - { offset: 0x3193C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycACcfu9_yycfu10_TA', symObjAddr: 0xF894, symBinAddr: 0x252600, symSize: 0x20 } + - { offset: 0x3193F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyAA8FavoriteCcACcfu11_yAHcfu12_TA', symObjAddr: 0xF8B4, symBinAddr: 0x252620, symSize: 0x20 } + - { offset: 0x319432, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC16showAllFavoritesyyFyAA8FavoriteCcACcfu_yAFcfu0_TA', symObjAddr: 0xF918, symBinAddr: 0x252640, symSize: 0x20 } + - { offset: 0x31946C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15showSearchPanel4overyAA08FloatingI11Presentable_pSg_tFyAA14TagDisplayTypeO_SaySiGtcACcfu_yAI_AJtcfu0_TA', symObjAddr: 0xF938, symBinAddr: 0x252660, symSize: 0x24 } + - { offset: 0x3194A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15showSearchPanel4overyAA08FloatingI11Presentable_pSg_tFyAA0H6FilterCSgcACcfu1_yAJcfu2_TA', symObjAddr: 0xF95C, symBinAddr: 0x252684, symSize: 0x20 } + - { offset: 0x3194E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showAllFilters33_A0A4D0656B505EF3DF25D7EB9947CEF6LL06searchI0yAA12SearchFilterCSg_tFyAIcfU_TA', symObjAddr: 0xF97C, symBinAddr: 0x2526A4, symSize: 0x8 } + - { offset: 0x3194F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC019showFilterSelectionF033_A0A4D0656B505EF3DF25D7EB9947CEF6LL4type4data11selectedIdsyAA14TagDisplayTypeO_SayAA0W10DataSource_pGSaySiGtFyAJSg_AMtcfU_TA', symObjAddr: 0xF984, symBinAddr: 0x2526AC, symSize: 0x8 } + - { offset: 0x319508, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showCategories10categoriesySay7Penguin11POICategoryVG_tFyAHcfU0_TA', symObjAddr: 0xF98C, symBinAddr: 0x2526B4, symSize: 0x8 } + - { offset: 0x31951C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13showDirectoryyyFyycfU_TA', symObjAddr: 0xF994, symBinAddr: 0x2526BC, symSize: 0x20 } + - { offset: 0x3195FF, size: 0x8, addend: 0x0, symName: '_$sSh9formUnionyyqd__n7ElementQyd__RszSTRd__lF8PenNavUI9ToastTypeO_ShyAFGTg5', symObjAddr: 0x1104, symBinAddr: 0x245574, symSize: 0xCC } + - { offset: 0x31A078, size: 0x8, addend: 0x0, symName: '_$sSh9formUnionyyqd__n7ElementQyd__RszSTRd__lF8PenNavUI18FloatingPanelStateC_SayAFGTg5Tf4gn_n', symObjAddr: 0xE7D4, symBinAddr: 0x251868, symSize: 0xD4 } + - { offset: 0x31A38A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC09presentedE11ControllersSayAA24FloatingPanelPresentable_pGvM', symObjAddr: 0x11D0, symBinAddr: 0x245640, symSize: 0x6C } + - { offset: 0x31A3BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC09presentedE11ControllersSayAA24FloatingPanelPresentable_pGvM.resume.0', symObjAddr: 0x123C, symBinAddr: 0x2456AC, symSize: 0x88 } + - { offset: 0x31A6E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyF', symObjAddr: 0x12C4, symBinAddr: 0x245734, symSize: 0x520 } + - { offset: 0x31A9F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyFyycfU0_', symObjAddr: 0x1F58, symBinAddr: 0x2463C8, symSize: 0x74 } + - { offset: 0x31AC84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x1FCC, symBinAddr: 0x24643C, symSize: 0x28 } + - { offset: 0x31AD25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0x1FF4, symBinAddr: 0x246464, symSize: 0xB8 } + - { offset: 0x31AE52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13viewDidAppearyySbF', symObjAddr: 0x20AC, symBinAddr: 0x24651C, symSize: 0x104 } + - { offset: 0x31AF21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13viewDidAppearyySbFyycfU_', symObjAddr: 0x21B0, symBinAddr: 0x246620, symSize: 0x194 } + - { offset: 0x31B0F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0x2344, symBinAddr: 0x2467B4, symSize: 0x30 } + - { offset: 0x31B11A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyF', symObjAddr: 0x2374, symBinAddr: 0x2467E4, symSize: 0x8B8 } + - { offset: 0x31B52F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFySiSgcACcfu9_yAEcfu10_', symObjAddr: 0x4414, symBinAddr: 0x248884, symSize: 0x108 } + - { offset: 0x31BEC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC9removeMapyyF', symObjAddr: 0x4D0C, symBinAddr: 0x24917C, symSize: 0xD0 } + - { offset: 0x31C086, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC012deinitializeaB0yyF', symObjAddr: 0x4DDC, symBinAddr: 0x24924C, symSize: 0x2CC } + - { offset: 0x31C32A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x50A8, symBinAddr: 0x249518, symSize: 0x1C8 } + - { offset: 0x31C36B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x5270, symBinAddr: 0x2496E0, symSize: 0x60 } + - { offset: 0x31C3B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x52D0, symBinAddr: 0x249740, symSize: 0x19C } + - { offset: 0x31C3E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x546C, symBinAddr: 0x2498DC, symSize: 0x28 } + - { offset: 0x31C3FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCfD', symObjAddr: 0x5494, symBinAddr: 0x249904, symSize: 0x30 } + - { offset: 0x31C41D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvgTW', symObjAddr: 0x55FC, symBinAddr: 0x249A6C, symSize: 0x44 } + - { offset: 0x31C450, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvMTW', symObjAddr: 0x5640, symBinAddr: 0x249AB0, symSize: 0x5C } + - { offset: 0x31C479, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvMTW.resume.0', symObjAddr: 0x569C, symBinAddr: 0x249B0C, symSize: 0x2C } + - { offset: 0x31D255, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22deinitializeSingletonsyyFTf4d_n', symObjAddr: 0xE938, symBinAddr: 0x251988, symSize: 0x1A8 } + - { offset: 0x31D477, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15addSessionLabelyyFTf4d_n', symObjAddr: 0xF064, symBinAddr: 0x251EEC, symSize: 0x530 } + - { offset: 0x31DBFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesCMa', symObjAddr: 0x254, symBinAddr: 0x252938, symSize: 0x20 } + - { offset: 0x31DC13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOAFs0E3KeyAAWl', symObjAddr: 0x7A4, symBinAddr: 0x252E20, symSize: 0x40 } + - { offset: 0x31DC27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOACSeAAWl', symObjAddr: 0x804, symBinAddr: 0x252E60, symSize: 0x40 } + - { offset: 0x31DC3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOACSEAAWl', symObjAddr: 0x844, symBinAddr: 0x252EA0, symSize: 0x40 } + - { offset: 0x31DC4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOMa', symObjAddr: 0x9E8, symBinAddr: 0x252EE0, symSize: 0x10 } + - { offset: 0x31DC63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOSHAASQWb', symObjAddr: 0x9F8, symBinAddr: 0x252EF0, symSize: 0x4 } + - { offset: 0x31DC77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOAFSQAAWl', symObjAddr: 0x9FC, symBinAddr: 0x252EF4, symSize: 0x40 } + - { offset: 0x31DC8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xA3C, symBinAddr: 0x252F34, symSize: 0x4 } + - { offset: 0x31DC9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xA40, symBinAddr: 0x252F38, symSize: 0x40 } + - { offset: 0x31DCB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0xA80, symBinAddr: 0x252F78, symSize: 0x4 } + - { offset: 0x31DCC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0xA84, symBinAddr: 0x252F7C, symSize: 0x40 } + - { offset: 0x31DD00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x1D8, symBinAddr: 0x2528BC, symSize: 0x28 } + - { offset: 0x31DD1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x200, symBinAddr: 0x2528E4, symSize: 0x28 } + - { offset: 0x31DD71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs0E3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0xC0, symBinAddr: 0x2527BC, symSize: 0xDC } + - { offset: 0x31DDA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs0E3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x19C, symBinAddr: 0x252898, symSize: 0x24 } + - { offset: 0x31DDF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesCfD', symObjAddr: 0x228, symBinAddr: 0x25290C, symSize: 0x2C } + - { offset: 0x31DE2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC6encode2toys7Encoder_p_tKF', symObjAddr: 0x274, symBinAddr: 0x252958, symSize: 0x1F0 } + - { offset: 0x31DE5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x464, symBinAddr: 0x252B48, symSize: 0x264 } + - { offset: 0x31DE9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x6C8, symBinAddr: 0x252DAC, symSize: 0x54 } + - { offset: 0x31DEC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x71C, symBinAddr: 0x252E00, symSize: 0x20 } + - { offset: 0x31DED8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0xAC4, symBinAddr: 0x252FBC, symSize: 0x210 } + - { offset: 0x31E36F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV07makeUseD8Contents4from4withAC0D0C0I0OAA3DOMO0H0C_AE5StateVtKF', symObjAddr: 0x0, symBinAddr: 0x2531CC, symSize: 0x338 } + - { offset: 0x31E39D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV07makeUseD8Contents4from4withAC0D0C0I0OAA3DOMO0H0C_AE5StateVtKF', symObjAddr: 0x0, symBinAddr: 0x2531CC, symSize: 0x338 } + - { offset: 0x31E50E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV16makeTextContents4from4withAC0D0C0I0OAA3DOMO0H0C_AE5StateVtFZTf4nnd_n', symObjAddr: 0x338, symBinAddr: 0x253504, symSize: 0x238 } + - { offset: 0x31E5A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVWOc', symObjAddr: 0x570, symBinAddr: 0x25373C, symSize: 0x3C } + - { offset: 0x31E5B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOi1_', symObjAddr: 0x5AC, symBinAddr: 0x253778, symSize: 0x34 } + - { offset: 0x31E5CD, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVACs23CustomStringConvertibleAAWl', symObjAddr: 0x620, symBinAddr: 0x2537AC, symSize: 0x44 } + - { offset: 0x31EA33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22NavigationEventTrackerVMa', symObjAddr: 0x0, symBinAddr: 0x2537F0, symSize: 0x10 } + - { offset: 0x31EA4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22NavigationEventTrackerVMa', symObjAddr: 0x0, symBinAddr: 0x2537F0, symSize: 0x10 } + - { offset: 0x31EC86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVWOc', symObjAddr: 0x1AFC, symBinAddr: 0x255220, symSize: 0x34 } + - { offset: 0x31EC9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwxx', symObjAddr: 0x25F0, symBinAddr: 0x255CBC, symSize: 0x50 } + - { offset: 0x31ECAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwcp', symObjAddr: 0x2640, symBinAddr: 0x255D0C, symSize: 0x1C4 } + - { offset: 0x31ECC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwca', symObjAddr: 0x2804, symBinAddr: 0x255ED0, symSize: 0x234 } + - { offset: 0x31ECD6, size: 0x8, addend: 0x0, symName: ___swift_memcpy401_8, symObjAddr: 0x2A38, symBinAddr: 0x256104, symSize: 0x8 } + - { offset: 0x31ECEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwta', symObjAddr: 0x2A40, symBinAddr: 0x25610C, symSize: 0x1C4 } + - { offset: 0x31ECFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwet', symObjAddr: 0x2C04, symBinAddr: 0x2562D0, symSize: 0x5C } + - { offset: 0x31ED12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwst', symObjAddr: 0x2C60, symBinAddr: 0x25632C, symSize: 0xC0 } + - { offset: 0x31ED26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVMa', symObjAddr: 0x2D20, symBinAddr: 0x2563EC, symSize: 0x10 } + - { offset: 0x31ED3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOAFs0G3KeyAAWl', symObjAddr: 0x2D98, symBinAddr: 0x2563FC, symSize: 0x40 } + - { offset: 0x31ED4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOwet', symObjAddr: 0x2E28, symBinAddr: 0x25643C, symSize: 0x90 } + - { offset: 0x31ED62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOwst', symObjAddr: 0x2EB8, symBinAddr: 0x2564CC, symSize: 0xB0 } + - { offset: 0x31ED76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOMa', symObjAddr: 0x2F7C, symBinAddr: 0x25657C, symSize: 0x10 } + - { offset: 0x31ED8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOSHAASQWb', symObjAddr: 0x2F8C, symBinAddr: 0x25658C, symSize: 0x4 } + - { offset: 0x31ED9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOAFSQAAWl', symObjAddr: 0x2F90, symBinAddr: 0x256590, symSize: 0x40 } + - { offset: 0x31EDB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2FD0, symBinAddr: 0x2565D0, symSize: 0x4 } + - { offset: 0x31EDC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2FD4, symBinAddr: 0x2565D4, symSize: 0x40 } + - { offset: 0x31EDDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x3014, symBinAddr: 0x256614, symSize: 0x4 } + - { offset: 0x31EDEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x3018, symBinAddr: 0x256618, symSize: 0x40 } + - { offset: 0x31EE3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x93C, symBinAddr: 0x254060, symSize: 0x28 } + - { offset: 0x31EE5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x964, symBinAddr: 0x254088, symSize: 0x28 } + - { offset: 0x31EF2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLO11stringValueSSvg', symObjAddr: 0x10, symBinAddr: 0x253800, symSize: 0x2E4 } + - { offset: 0x31EFD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x2F4, symBinAddr: 0x253AE4, symSize: 0x544 } + - { offset: 0x31F01A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x8F8, symBinAddr: 0x254028, symSize: 0x8 } + - { offset: 0x31F035, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x900, symBinAddr: 0x254030, symSize: 0x24 } + - { offset: 0x31F05E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x930, symBinAddr: 0x254054, symSize: 0xC } + - { offset: 0x31F072, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x98C, symBinAddr: 0x2540B0, symSize: 0x14 } + - { offset: 0x31F0E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV6source11destination9eventTypeAcA5PlaceC_AHSgAA0deJ0OtcfCTf4nnnd_n', symObjAddr: 0x9A0, symBinAddr: 0x2540C4, symSize: 0xB54 } + - { offset: 0x31F2E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV9eventType6rating8feedbackAcA0deH0O_SiSSSgtcfCTf4nnnd_n', symObjAddr: 0x14F4, symBinAddr: 0x254C18, symSize: 0x608 } + - { offset: 0x31F392, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV12userLocation011destinationH00I4Type0I6EdgeId05eventJ013isDestinationAC7Penguin10PILocationC_AJ0O0CSgAA05PlaceJ0OSgSiSgAA0deJ0OSbtcfCTf4nnnnnnd_n', symObjAddr: 0x1B5C, symBinAddr: 0x255254, symSize: 0xA68 } + - { offset: 0x31F47C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x3058, symBinAddr: 0x256658, symSize: 0x878 } + - { offset: 0x31FCF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22LocationMessageTrackerCMa', symObjAddr: 0x10, symBinAddr: 0x256FB8, symSize: 0x20 } + - { offset: 0x31FEC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVWOc', symObjAddr: 0xBF8, symBinAddr: 0x257AC8, symSize: 0x34 } + - { offset: 0x31FED7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwxx', symObjAddr: 0xC84, symBinAddr: 0x257AFC, symSize: 0x38 } + - { offset: 0x31FEEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwcp', symObjAddr: 0xCBC, symBinAddr: 0x257B34, symSize: 0xF4 } + - { offset: 0x31FEFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwca', symObjAddr: 0xDB0, symBinAddr: 0x257C28, symSize: 0x13C } + - { offset: 0x31FF13, size: 0x8, addend: 0x0, symName: ___swift_memcpy201_8, symObjAddr: 0xEEC, symBinAddr: 0x257D64, symSize: 0x44 } + - { offset: 0x31FF27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwta', symObjAddr: 0xF30, symBinAddr: 0x257DA8, symSize: 0xF4 } + - { offset: 0x31FF3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwet', symObjAddr: 0x1024, symBinAddr: 0x257E9C, symSize: 0x5C } + - { offset: 0x31FF4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwst', symObjAddr: 0x1080, symBinAddr: 0x257EF8, symSize: 0x88 } + - { offset: 0x31FF63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVMa', symObjAddr: 0x1108, symBinAddr: 0x257F80, symSize: 0x10 } + - { offset: 0x31FF77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOAFs0H3KeyAAWl', symObjAddr: 0x1180, symBinAddr: 0x257F90, symSize: 0x40 } + - { offset: 0x31FF8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOMa', symObjAddr: 0x1364, symBinAddr: 0x257FD0, symSize: 0x10 } + - { offset: 0x31FF9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOSHAASQWb', symObjAddr: 0x1374, symBinAddr: 0x257FE0, symSize: 0x4 } + - { offset: 0x31FFB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOAFSQAAWl', symObjAddr: 0x1378, symBinAddr: 0x257FE4, symSize: 0x40 } + - { offset: 0x31FFC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x13B8, symBinAddr: 0x258024, symSize: 0x4 } + - { offset: 0x31FFDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x13BC, symBinAddr: 0x258028, symSize: 0x40 } + - { offset: 0x31FFEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x13FC, symBinAddr: 0x258068, symSize: 0x4 } + - { offset: 0x320003, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x1400, symBinAddr: 0x25806C, symSize: 0x40 } + - { offset: 0x320056, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x558, symBinAddr: 0x257428, symSize: 0x28 } + - { offset: 0x320072, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x580, symBinAddr: 0x257450, symSize: 0x28 } + - { offset: 0x3200A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLO11stringValueSSvg', symObjAddr: 0x30, symBinAddr: 0x256FD8, symSize: 0x130 } + - { offset: 0x3200C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x160, symBinAddr: 0x257108, symSize: 0x2F4 } + - { offset: 0x320109, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs0H3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x514, symBinAddr: 0x2573FC, symSize: 0x8 } + - { offset: 0x320124, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs0H3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x51C, symBinAddr: 0x257404, symSize: 0x24 } + - { offset: 0x32014D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x5A8, symBinAddr: 0x257478, symSize: 0x14 } + - { offset: 0x320199, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV4from4adIdAC7Penguin10PILocationC_SiSgtcfCTf4nnd_n', symObjAddr: 0x5BC, symBinAddr: 0x25748C, symSize: 0x63C } + - { offset: 0x32026B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x1440, symBinAddr: 0x2580AC, symSize: 0x400 } + - { offset: 0x3214E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCfE', symObjAddr: 0x255C, symBinAddr: 0x25A900, symSize: 0xF4 } + - { offset: 0x321514, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCfETo', symObjAddr: 0x2684, symBinAddr: 0x25AA28, symSize: 0x100 } + - { offset: 0x321543, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCMU', symObjAddr: 0x2784, symBinAddr: 0x25AB28, symSize: 0x8 } + - { offset: 0x321557, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCMa', symObjAddr: 0x278C, symBinAddr: 0x25AB30, symSize: 0x38 } + - { offset: 0x32156B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCMr', symObjAddr: 0x27C4, symBinAddr: 0x25AB68, symSize: 0xB0 } + - { offset: 0x32157F, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonVSgMa', symObjAddr: 0x2874, symBinAddr: 0x25AC18, symSize: 0x54 } + - { offset: 0x321593, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x28C8, symBinAddr: 0x25AC6C, symSize: 0x8 } + - { offset: 0x3215BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x28D0, symBinAddr: 0x25AC74, symSize: 0x60 } + - { offset: 0x321904, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x2930, symBinAddr: 0x25ACD4, symSize: 0xA54 } + - { offset: 0x32202D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyycfU_', symObjAddr: 0x3384, symBinAddr: 0x25B728, symSize: 0x70 } + - { offset: 0x32209F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU0_', symObjAddr: 0x33F4, symBinAddr: 0x25B798, symSize: 0x174 } + - { offset: 0x3221AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x3568, symBinAddr: 0x25B90C, symSize: 0xB8 } + - { offset: 0x3221FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x3620, symBinAddr: 0x25B9C4, symSize: 0xB4 } + - { offset: 0x32228D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0x36D4, symBinAddr: 0x25BA78, symSize: 0x26C } + - { offset: 0x3222FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_', symObjAddr: 0x3940, symBinAddr: 0x25BCE4, symSize: 0x1C8 } + - { offset: 0x3223D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0x3B08, symBinAddr: 0x25BEAC, symSize: 0x50 } + - { offset: 0x322403, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC22didTapDirectionsActionyyF', symObjAddr: 0x3B58, symBinAddr: 0x25BEFC, symSize: 0x474 } + - { offset: 0x32281C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC17showRouteOverview6sourceyAA5PlaceCSg_tF', symObjAddr: 0x3FCC, symBinAddr: 0x25C370, symSize: 0x320 } + - { offset: 0x322A99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC22didTapDirectionsActionyyFTo', symObjAddr: 0x42EC, symBinAddr: 0x25C690, symSize: 0x28 } + - { offset: 0x322AD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC17didTapPhoneActionyyF', symObjAddr: 0x4314, symBinAddr: 0x25C6B8, symSize: 0x210 } + - { offset: 0x322BA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC17didTapPhoneActionyyFTo', symObjAddr: 0x4524, symBinAddr: 0x25C8C8, symSize: 0x28 } + - { offset: 0x322BBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC19didTapWebsiteActionyyF', symObjAddr: 0x454C, symBinAddr: 0x25C8F0, symSize: 0x388 } + - { offset: 0x322CE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC19didTapWebsiteActionyyFTo', symObjAddr: 0x48D4, symBinAddr: 0x25CC78, symSize: 0x28 } + - { offset: 0x322D1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC16didTapMailActionyyF', symObjAddr: 0x48FC, symBinAddr: 0x25CCA0, symSize: 0x198 } + - { offset: 0x322E1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC16didTapMailActionyyFTo', symObjAddr: 0x4A94, symBinAddr: 0x25CE38, symSize: 0x28 } + - { offset: 0x322E5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20didExpandDescriptionyyFTo', symObjAddr: 0x4ABC, symBinAddr: 0x25CE60, symSize: 0x30 } + - { offset: 0x322E7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20didExpandDescriptionyyFTo', symObjAddr: 0x4ABC, symBinAddr: 0x25CE60, symSize: 0x30 } + - { offset: 0x322E9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20didExpandDescriptionyyFTo', symObjAddr: 0x4ABC, symBinAddr: 0x25CE60, symSize: 0x30 } + - { offset: 0x322EFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20didTapExpandScheduleyyFTo', symObjAddr: 0x4AF4, symBinAddr: 0x25CE90, symSize: 0x2C } + - { offset: 0x322F17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC22didTapCollapseScheduleyyFTo', symObjAddr: 0x4D00, symBinAddr: 0x25D094, symSize: 0x2C } + - { offset: 0x322F60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20didTapAddToFavorites10isFavoriteySb_tFTo', symObjAddr: 0x4D2C, symBinAddr: 0x25D0C0, symSize: 0x30 } + - { offset: 0x322FB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC017didTapTodayStatusF0yyF', symObjAddr: 0x4D5C, symBinAddr: 0x25D0F0, symSize: 0x198 } + - { offset: 0x32307A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC017didTapTodayStatusF0yyFTo', symObjAddr: 0x4EF4, symBinAddr: 0x25D288, symSize: 0x28 } + - { offset: 0x3230C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC011mailComposeG0_13didFinishWith5errorySo06MFMailifG0C_So0nI6ResultVs5Error_pSgtFTo', symObjAddr: 0x4F1C, symBinAddr: 0x25D2B0, symSize: 0x18 } + - { offset: 0x323109, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC25adaptivePresentationStyle3forSo07UIModaliJ0VSo014UIPresentationG0C_tFTo', symObjAddr: 0x4F34, symBinAddr: 0x25D2C8, symSize: 0x8 } + - { offset: 0x323163, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x4F3C, symBinAddr: 0x25D2D0, symSize: 0x98 } + - { offset: 0x323213, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x4FD4, symBinAddr: 0x25D368, symSize: 0x24 } + - { offset: 0x32328A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x4FF8, symBinAddr: 0x25D38C, symSize: 0x110 } + - { offset: 0x323336, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x5108, symBinAddr: 0x25D49C, symSize: 0x28 } + - { offset: 0x323374, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x5130, symBinAddr: 0x25D4C4, symSize: 0x244 } + - { offset: 0x3235A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x5374, symBinAddr: 0x25D708, symSize: 0x50 } + - { offset: 0x3235BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC15placeDataLoaded0hI0yAA0dfI0C_tF', symObjAddr: 0x53C4, symBinAddr: 0x25D758, symSize: 0x128 } + - { offset: 0x32368D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x54EC, symBinAddr: 0x25D880, symSize: 0x354 } + - { offset: 0x3238AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC25userLocationStatusChangedyyF', symObjAddr: 0x58BC, symBinAddr: 0x25DBD4, symSize: 0x138 } + - { offset: 0x323983, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x59F4, symBinAddr: 0x25DD0C, symSize: 0x8 } + - { offset: 0x32399F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x59FC, symBinAddr: 0x25DD14, symSize: 0x4 } + - { offset: 0x3239BB, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x5BF4, symBinAddr: 0x25DD3C, symSize: 0x10 } + - { offset: 0x3239CF, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x5C04, symBinAddr: 0x25DD4C, symSize: 0x8 } + - { offset: 0x3239E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC22didTapDirectionsActionyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x5C80, symBinAddr: 0x25DD78, symSize: 0x20 } + - { offset: 0x323A1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_TA', symObjAddr: 0x5D28, symBinAddr: 0x25DDC4, symSize: 0x8 } + - { offset: 0x323A31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU0_TA', symObjAddr: 0x5E00, symBinAddr: 0x25DDCC, symSize: 0x8 } + - { offset: 0x323A45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyycfU_TA', symObjAddr: 0x5E08, symBinAddr: 0x25DDD4, symSize: 0x8 } + - { offset: 0x323B52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x5E10, symBinAddr: 0x25DDDC, symSize: 0x268 } + - { offset: 0x323D70, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonVSgWOd', symObjAddr: 0x6124, symBinAddr: 0x25E044, symSize: 0x48 } + - { offset: 0x323D84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9menuItemsSayAA8MenuItemVGvgyycfU_TA', symObjAddr: 0x61A8, symBinAddr: 0x25E08C, symSize: 0x8 } + - { offset: 0x323DD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC15placeTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x37C, symBinAddr: 0x258828, symSize: 0x10 } + - { offset: 0x323DE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC15placeTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x37C, symBinAddr: 0x258828, symSize: 0x10 } + - { offset: 0x323E2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC15placeTitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x38C, symBinAddr: 0x258838, symSize: 0x34 } + - { offset: 0x323E7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC18categoryTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x3C0, symBinAddr: 0x25886C, symSize: 0x10 } + - { offset: 0x323E95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC18categoryTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x3C0, symBinAddr: 0x25886C, symSize: 0x10 } + - { offset: 0x323ED0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC18categoryTitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x3D0, symBinAddr: 0x25887C, symSize: 0x34 } + - { offset: 0x323F1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9separatorSo6UIViewCSgvgTo', symObjAddr: 0x404, symBinAddr: 0x2588B0, symSize: 0x10 } + - { offset: 0x323F37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9separatorSo6UIViewCSgvgTo', symObjAddr: 0x404, symBinAddr: 0x2588B0, symSize: 0x10 } + - { offset: 0x323F77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9separatorSo6UIViewCSgvsTo', symObjAddr: 0x414, symBinAddr: 0x2588C0, symSize: 0x34 } + - { offset: 0x323FC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x448, symBinAddr: 0x2588F4, symSize: 0x10 } + - { offset: 0x323FDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x448, symBinAddr: 0x2588F4, symSize: 0x10 } + - { offset: 0x32401E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x458, symBinAddr: 0x258904, symSize: 0x34 } + - { offset: 0x32406D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x48C, symBinAddr: 0x258938, symSize: 0x10 } + - { offset: 0x324085, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x48C, symBinAddr: 0x258938, symSize: 0x10 } + - { offset: 0x3240C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x49C, symBinAddr: 0x258948, symSize: 0x34 } + - { offset: 0x324135, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9placeDataAA0dfI0Cvg', symObjAddr: 0x4D0, symBinAddr: 0x25897C, symSize: 0xBC } + - { offset: 0x324324, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9menuItemsSayAA8MenuItemVGvg', symObjAddr: 0x58C, symBinAddr: 0x258A38, symSize: 0x3F0 } + - { offset: 0x32466D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9menuItemsSayAA8MenuItemVGvgyycfU_', symObjAddr: 0x97C, symBinAddr: 0x258E28, symSize: 0xD8 } + - { offset: 0x32476E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9viewModel33_64DA4970C83DEE4A6AFA2A73E139E454LLAA011PlaceDetailfI0Cvg', symObjAddr: 0xB5C, symBinAddr: 0x258F00, symSize: 0xB4 } + - { offset: 0x324904, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0xC10, symBinAddr: 0x258FB4, symSize: 0x288 } + - { offset: 0x324AD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0xE98, symBinAddr: 0x25923C, symSize: 0x28 } + - { offset: 0x324B2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0xEC0, symBinAddr: 0x259264, symSize: 0x98 } + - { offset: 0x324B8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC13registerCellsyyF', symObjAddr: 0xF58, symBinAddr: 0x2592FC, symSize: 0x1D8 } + - { offset: 0x324D12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC14setupPlaceInfoyyF', symObjAddr: 0x1130, symBinAddr: 0x2594D4, symSize: 0x314 } + - { offset: 0x324F39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC19sendFavoriteRequest02isI0ySb_tF', symObjAddr: 0x1444, symBinAddr: 0x2597E8, symSize: 0x464 } + - { offset: 0x325194, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x18A8, symBinAddr: 0x259C4C, symSize: 0x88 } + - { offset: 0x3251D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5shareyyF', symObjAddr: 0x1930, symBinAddr: 0x259CD4, symSize: 0x184 } + - { offset: 0x3252A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0x1AB4, symBinAddr: 0x259E58, symSize: 0x5B8 } + - { offset: 0x32551A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5shareyyFTo', symObjAddr: 0x206C, symBinAddr: 0x25A410, symSize: 0x28 } + - { offset: 0x32552E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC17handleOfflineDatayyF', symObjAddr: 0x2094, symBinAddr: 0x25A438, symSize: 0x11C } + - { offset: 0x325629, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x21B0, symBinAddr: 0x25A554, symSize: 0x1A8 } + - { offset: 0x32566A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x2358, symBinAddr: 0x25A6FC, symSize: 0x60 } + - { offset: 0x3256B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x23B8, symBinAddr: 0x25A75C, symSize: 0x17C } + - { offset: 0x3256E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2534, symBinAddr: 0x25A8D8, symSize: 0x28 } + - { offset: 0x3256F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCfD', symObjAddr: 0x2650, symBinAddr: 0x25A9F4, symSize: 0x34 } + - { offset: 0x32617A, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFShySSG_Tg577$s8PenNavUI9XMLParserV7ScannerV10scanString11matchingAnySSShySSG_tKFSbSSXEfU_0eF2UI0H0V0J0VTf1cn_n', symObjAddr: 0x0, symBinAddr: 0x25E09C, symSize: 0x14C } + - { offset: 0x3261B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseMatrix33_892AF320A73F92CC7AB19393F72C04FDLLyAA3DOMO9TransformOSgAC7ScannerVzKFTf4nd_n', symObjAddr: 0x14C, symBinAddr: 0x25E1E8, symSize: 0x3E0 } + - { offset: 0x326459, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseRotate33_892AF320A73F92CC7AB19393F72C04FDLLyAA3DOMO9TransformOSgAC7ScannerVzKFTf4nd_n', symObjAddr: 0x52C, symBinAddr: 0x25E5C8, symSize: 0x2B8 } + - { offset: 0x32685B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseTransformySayAA3DOMO0F0OGSSKFTf4nd_n', symObjAddr: 0x7E4, symBinAddr: 0x25E880, symSize: 0x14A8 } + - { offset: 0x327966, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFShySSG_Tg577$s8PenNavUI9XMLParserV7ScannerV10scanString11matchingAnySSShySSG_tKFSbSSXEfU_0eF2UI0H0V0J0VTf1cn_n', symObjAddr: 0x0, symBinAddr: 0x25E09C, symSize: 0x14C } + - { offset: 0x3280BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOwet', symObjAddr: 0x10, symBinAddr: 0x25FD28, symSize: 0x90 } + - { offset: 0x3280D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOwst', symObjAddr: 0xA0, symBinAddr: 0x25FDB8, symSize: 0xB0 } + - { offset: 0x3280E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOMa', symObjAddr: 0x164, symBinAddr: 0x25FE68, symSize: 0x10 } + - { offset: 0x3280FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x174, symBinAddr: 0x25FE78, symSize: 0x4 } + - { offset: 0x32810E, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI14DetailsSectionOGSayxGSlsWl', symObjAddr: 0x178, symBinAddr: 0x25FE7C, symSize: 0x48 } + - { offset: 0x3281BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOSHAASQWb', symObjAddr: 0x334, symBinAddr: 0x25FF24, symSize: 0x4 } + - { offset: 0x3281D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOACSQAAWl', symObjAddr: 0x338, symBinAddr: 0x25FF28, symSize: 0x40 } + - { offset: 0x328224, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x2C8, symBinAddr: 0x25FEC4, symSize: 0x28 } + - { offset: 0x328261, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOs12CaseIterableAAsADP8allCases03AllI0QzvgZTW', symObjAddr: 0x2FC, symBinAddr: 0x25FEEC, symSize: 0x38 } + - { offset: 0x3282B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x378, symBinAddr: 0x25FF68, symSize: 0x10 } + - { offset: 0x32865B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC16instructionImageSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x25FF78, symSize: 0x10 } + - { offset: 0x328A64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellCfETo', symObjAddr: 0x11D4, symBinAddr: 0x26114C, symSize: 0x48 } + - { offset: 0x328A93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellCMa', symObjAddr: 0x121C, symBinAddr: 0x261194, symSize: 0x20 } + - { offset: 0x328AA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC18setInstructionIcon3foryAA05RouteD0V_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x138C, symBinAddr: 0x26127C, symSize: 0x40 } + - { offset: 0x328CCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC16instructionImageSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x25FF78, symSize: 0x10 } + - { offset: 0x328CE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC16instructionImageSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x25FF78, symSize: 0x10 } + - { offset: 0x328D2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC16instructionImageSo11UIImageViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x25FF88, symSize: 0x34 } + - { offset: 0x328D79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5titleSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x25FFBC, symSize: 0x10 } + - { offset: 0x328D91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5titleSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x25FFBC, symSize: 0x10 } + - { offset: 0x328DD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5titleSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x25FFCC, symSize: 0x34 } + - { offset: 0x328E20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC8subtitleSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x260000, symSize: 0x10 } + - { offset: 0x328E38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC8subtitleSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x260000, symSize: 0x10 } + - { offset: 0x328E73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC8subtitleSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x260010, symSize: 0x34 } + - { offset: 0x328EF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC12awakeFromNibyyF', symObjAddr: 0xCC, symBinAddr: 0x260044, symSize: 0x1BC } + - { offset: 0x328FCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC12awakeFromNibyyFTo', symObjAddr: 0x288, symBinAddr: 0x260200, symSize: 0x28 } + - { offset: 0x329127, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC9configure3foryAA05RouteD0V_tF', symObjAddr: 0x2B0, symBinAddr: 0x260228, symSize: 0x8CC } + - { offset: 0x329481, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC18setInstructionIcon3foryAA05RouteD0V_tFySo7UIImageCSgcfU_', symObjAddr: 0xB7C, symBinAddr: 0x260AF4, symSize: 0x310 } + - { offset: 0x329626, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC15prepareForReuseyyF', symObjAddr: 0xE8C, symBinAddr: 0x260E04, symSize: 0x178 } + - { offset: 0x3296FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC15prepareForReuseyyFTo', symObjAddr: 0x1004, symBinAddr: 0x260F7C, symSize: 0x28 } + - { offset: 0x32973F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x102C, symBinAddr: 0x260FA4, symSize: 0xC0 } + - { offset: 0x329780, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x10EC, symBinAddr: 0x261064, symSize: 0x90 } + - { offset: 0x3297B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x117C, symBinAddr: 0x2610F4, symSize: 0x28 } + - { offset: 0x3297C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellCfD', symObjAddr: 0x11A4, symBinAddr: 0x26111C, symSize: 0x30 } + - { offset: 0x329B5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC06detailF0So11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2612BC, symSize: 0x20 } + - { offset: 0x329D2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellCfETo', symObjAddr: 0x2DC, symBinAddr: 0x261598, symSize: 0x38 } + - { offset: 0x329D5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellCMa', symObjAddr: 0x314, symBinAddr: 0x2615D0, symSize: 0x20 } + - { offset: 0x329E2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC06detailF0So11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2612BC, symSize: 0x20 } + - { offset: 0x329E8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC06detailF0So11UIImageViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x2612DC, symSize: 0x14 } + - { offset: 0x329EDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC21imageHeightConstraintSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x34, symBinAddr: 0x2612F0, symSize: 0x20 } + - { offset: 0x329F38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC21imageHeightConstraintSo08NSLayoutJ0CSgvsTo', symObjAddr: 0x54, symBinAddr: 0x261310, symSize: 0x14 } + - { offset: 0x329F89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC12awakeFromNibyyFTo', symObjAddr: 0x68, symBinAddr: 0x261324, symSize: 0x68 } + - { offset: 0x329FFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0xD0, symBinAddr: 0x26138C, symSize: 0x54 } + - { offset: 0x32A061, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0x124, symBinAddr: 0x2613E0, symSize: 0xE4 } + - { offset: 0x32A0DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x208, symBinAddr: 0x2614C4, symSize: 0xA4 } + - { offset: 0x32A114, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellCfD', symObjAddr: 0x2AC, symBinAddr: 0x261568, symSize: 0x30 } + - { offset: 0x32A4B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwxx', symObjAddr: 0x50, symBinAddr: 0x2615F0, symSize: 0x14 } + - { offset: 0x32A4CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwcp', symObjAddr: 0x88, symBinAddr: 0x261604, symSize: 0x5C } + - { offset: 0x32A4DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwca', symObjAddr: 0xE4, symBinAddr: 0x261660, symSize: 0x6C } + - { offset: 0x32A4F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwta', symObjAddr: 0x164, symBinAddr: 0x2616CC, symSize: 0x4C } + - { offset: 0x32A506, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwet', symObjAddr: 0x1B0, symBinAddr: 0x261718, symSize: 0x48 } + - { offset: 0x32A51A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwst', symObjAddr: 0x1F8, symBinAddr: 0x261760, symSize: 0x48 } + - { offset: 0x32A52E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOMa', symObjAddr: 0x254, symBinAddr: 0x2617A8, symSize: 0x10 } + - { offset: 0x32A713, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSHAASQWb', symObjAddr: 0x50C, symBinAddr: 0x261A60, symSize: 0x4 } + - { offset: 0x32A83D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC3arc33_3D1849BFB3F9132BAB159E8D460AA85ALL2to5large5radiiyAC5PointV_SbAC4SizeVtF', symObjAddr: 0x550, symBinAddr: 0x261A64, symSize: 0x194 } + - { offset: 0x32AB4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8makeLine7betweenAESayAC5PointVG_tFZTf4nd_n', symObjAddr: 0x934, symBinAddr: 0x261E48, symSize: 0x160 } + - { offset: 0x32AF3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8makeRect6within5radiiAeC0H0V_AC4SizeVtFZTf4nnd_n', symObjAddr: 0xAD8, symBinAddr: 0x261FA8, symSize: 0x688 } + - { offset: 0x32BA14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC11makeEllipse6withinAeC4RectV_tFZTf4nd_n', symObjAddr: 0x1160, symBinAddr: 0x262630, symSize: 0x1DC } + - { offset: 0x32BD19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC11makePolygon7betweenAESayAC5PointVG_tFZTf4nd_n', symObjAddr: 0x133C, symBinAddr: 0x26280C, symSize: 0xF0 } + - { offset: 0x32BFCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x48C, symBinAddr: 0x2619E0, symSize: 0x5C } + - { offset: 0x32C21F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO4hash4intoys6HasherVz_tF', symObjAddr: 0x264, symBinAddr: 0x2617B8, symSize: 0x1B8 } + - { offset: 0x32C7E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSHAASH9hashValueSivgTW', symObjAddr: 0x41C, symBinAddr: 0x261970, symSize: 0x60 } + - { offset: 0x32C85F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x47C, symBinAddr: 0x2619D0, symSize: 0x10 } + - { offset: 0x32C886, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x4E8, symBinAddr: 0x261A3C, symSize: 0x24 } + - { offset: 0x32C947, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x6E4, symBinAddr: 0x261BF8, symSize: 0x250 } + - { offset: 0x32D0B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvgTo', symObjAddr: 0x0, symBinAddr: 0x2628FC, symSize: 0x48 } + - { offset: 0x32D228, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvpACTk', symObjAddr: 0x140, symBinAddr: 0x262A3C, symSize: 0x64 } + - { offset: 0x32D27C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewCMa', symObjAddr: 0x3CC, symBinAddr: 0x262C74, symSize: 0x20 } + - { offset: 0x32D290, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewCfETo', symObjAddr: 0x444, symBinAddr: 0x262CEC, symSize: 0x10 } + - { offset: 0x32D328, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvgTo', symObjAddr: 0x0, symBinAddr: 0x2628FC, symSize: 0x48 } + - { offset: 0x32D35B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvg', symObjAddr: 0x48, symBinAddr: 0x262944, symSize: 0x40 } + - { offset: 0x32D3A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvsTo', symObjAddr: 0x88, symBinAddr: 0x262984, symSize: 0x64 } + - { offset: 0x32D3E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvs', symObjAddr: 0xEC, symBinAddr: 0x2629E8, symSize: 0x54 } + - { offset: 0x32D409, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvM', symObjAddr: 0x1A4, symBinAddr: 0x262AA0, symSize: 0x40 } + - { offset: 0x32D456, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewCACycfcTo', symObjAddr: 0x1E8, symBinAddr: 0x262AE0, symSize: 0xB4 } + - { offset: 0x32D509, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x29C, symBinAddr: 0x262B94, symSize: 0x58 } + - { offset: 0x32D551, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x344, symBinAddr: 0x262BEC, symSize: 0x2C } + - { offset: 0x32D5BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x370, symBinAddr: 0x262C18, symSize: 0x2C } + - { offset: 0x32D61E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewCfD', symObjAddr: 0x39C, symBinAddr: 0x262C44, symSize: 0x30 } + - { offset: 0x32D9CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6campus33_2D041EA7C21D1E6F1ABCD9FDC43C0821LL7Penguin5VenueCSgvp', symObjAddr: 0x3078, symBinAddr: 0x36F490, symSize: 0x0 } + - { offset: 0x32D9DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6campus33_2D041EA7C21D1E6F1ABCD9FDC43C0821LL_WZ', symObjAddr: 0x0, symBinAddr: 0x262D08, symSize: 0x84 } + - { offset: 0x32DF78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCMU', symObjAddr: 0x2200, symBinAddr: 0x264EF0, symSize: 0x8 } + - { offset: 0x32DF8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCMa', symObjAddr: 0x2208, symBinAddr: 0x264EF8, symSize: 0x38 } + - { offset: 0x32DFA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCMr', symObjAddr: 0x2240, symBinAddr: 0x264F30, symSize: 0x9C } + - { offset: 0x32DFB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOMa', symObjAddr: 0x275C, symBinAddr: 0x265290, symSize: 0x10 } + - { offset: 0x32DFD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSHAASQWb', symObjAddr: 0x2B10, symBinAddr: 0x265644, symSize: 0x4 } + - { offset: 0x32DFE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOACSQAAWl', symObjAddr: 0x2B14, symBinAddr: 0x265648, symSize: 0x40 } + - { offset: 0x32DFFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOAEs0E3KeyAAWl', symObjAddr: 0x2BBC, symBinAddr: 0x265688, symSize: 0x40 } + - { offset: 0x32E00F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOACSeAAWl', symObjAddr: 0x2C1C, symBinAddr: 0x2656C8, symSize: 0x40 } + - { offset: 0x32E023, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOACSYAAWl', symObjAddr: 0x2CA4, symBinAddr: 0x265708, symSize: 0x40 } + - { offset: 0x32E037, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOACSEAAWl', symObjAddr: 0x2CE4, symBinAddr: 0x265748, symSize: 0x40 } + - { offset: 0x32E04B, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonVSgWOh', symObjAddr: 0x2DAC, symBinAddr: 0x2657C8, symSize: 0x40 } + - { offset: 0x32E05F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOMa', symObjAddr: 0x2F40, symBinAddr: 0x265808, symSize: 0x10 } + - { offset: 0x32E073, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASQWb', symObjAddr: 0x2F50, symBinAddr: 0x265818, symSize: 0x4 } + - { offset: 0x32E087, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOAESQAAWl', symObjAddr: 0x2F54, symBinAddr: 0x26581C, symSize: 0x40 } + - { offset: 0x32E09B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2F94, symBinAddr: 0x26585C, symSize: 0x4 } + - { offset: 0x32E0AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2F98, symBinAddr: 0x265860, symSize: 0x40 } + - { offset: 0x32E0C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x2FD8, symBinAddr: 0x2658A0, symSize: 0x4 } + - { offset: 0x32E0D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x2FDC, symBinAddr: 0x2658A4, symSize: 0x40 } + - { offset: 0x32E113, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0x262EE8, symSize: 0xC } + - { offset: 0x32E14D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x1EC, symBinAddr: 0x262EF4, symSize: 0xC } + - { offset: 0x32E16D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x1EC, symBinAddr: 0x262EF4, symSize: 0xC } + - { offset: 0x32E181, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x1EC, symBinAddr: 0x262EF4, symSize: 0xC } + - { offset: 0x32E193, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1F8, symBinAddr: 0x262F00, symSize: 0x8 } + - { offset: 0x32E1AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x200, symBinAddr: 0x262F08, symSize: 0x8 } + - { offset: 0x32E1E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x454, symBinAddr: 0x263144, symSize: 0x28 } + - { offset: 0x32E1FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x47C, symBinAddr: 0x26316C, symSize: 0x28 } + - { offset: 0x32E362, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x27E4, symBinAddr: 0x265318, symSize: 0x9C } + - { offset: 0x32E449, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x2880, symBinAddr: 0x2653B4, symSize: 0x78 } + - { offset: 0x32E4FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x28F8, symBinAddr: 0x26542C, symSize: 0x54 } + - { offset: 0x32E56F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x294C, symBinAddr: 0x265480, symSize: 0x74 } + - { offset: 0x32E601, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x2A68, symBinAddr: 0x26559C, symSize: 0x5C } + - { offset: 0x32E624, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x2AC4, symBinAddr: 0x2655F8, symSize: 0x4C } + - { offset: 0x32E732, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10identifierSSvg', symObjAddr: 0x84, symBinAddr: 0x262D8C, symSize: 0x15C } + - { offset: 0x32E7D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x208, symBinAddr: 0x262F10, symSize: 0x2C } + - { offset: 0x32E813, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x234, symBinAddr: 0x262F3C, symSize: 0xF4 } + - { offset: 0x32E84E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs0E3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x328, symBinAddr: 0x263030, symSize: 0xF0 } + - { offset: 0x32E8A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs0E3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x418, symBinAddr: 0x263120, symSize: 0x24 } + - { offset: 0x32E9DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC9cacheDataAcA0d5CacheF0C_tcfc', symObjAddr: 0x4A4, symBinAddr: 0x263194, symSize: 0x418 } + - { offset: 0x32EBE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC5placeAcA5PlaceCSg_tcfc', symObjAddr: 0x8BC, symBinAddr: 0x2635AC, symSize: 0x30C } + - { offset: 0x32ED57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC4fromACs7Decoder_p_tKcfc', symObjAddr: 0xBC8, symBinAddr: 0x2638B8, symSize: 0x41C } + - { offset: 0x32EE04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC13favoriteAliasSSvg', symObjAddr: 0xFE4, symBinAddr: 0x263CD4, symSize: 0x148 } + - { offset: 0x32EE51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC12favoriteNameSSvg', symObjAddr: 0x112C, symBinAddr: 0x263E1C, symSize: 0x158 } + - { offset: 0x32EFA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC27favoriteDistanceInformationSSvg', symObjAddr: 0x1284, symBinAddr: 0x263F74, symSize: 0x5F0 } + - { offset: 0x32F4E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC16favoriteCategory7Penguin11POICategoryVSgvg', symObjAddr: 0x1874, symBinAddr: 0x264564, symSize: 0x1B0 } + - { offset: 0x32F615, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC7iconUrlSSSgvg', symObjAddr: 0x1A24, symBinAddr: 0x264714, symSize: 0x14C } + - { offset: 0x32F6C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC15favoriteAddressSSvg', symObjAddr: 0x1B70, symBinAddr: 0x264860, symSize: 0x638 } + - { offset: 0x32FB98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCfD', symObjAddr: 0x21A8, symBinAddr: 0x264E98, symSize: 0x58 } + - { offset: 0x32FBD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC6encode2toys7Encoder_p_tKF', symObjAddr: 0x22DC, symBinAddr: 0x264FCC, symSize: 0x2C4 } + - { offset: 0x32FC0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x276C, symBinAddr: 0x2652A0, symSize: 0x58 } + - { offset: 0x32FC39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x27C4, symBinAddr: 0x2652F8, symSize: 0x20 } + - { offset: 0x32FC71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x29C0, symBinAddr: 0x2654F4, symSize: 0x70 } + - { offset: 0x32FCBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x2A30, symBinAddr: 0x265564, symSize: 0x38 } + - { offset: 0x32FCF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x301C, symBinAddr: 0x2658E4, symSize: 0x5C } + - { offset: 0x3300CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV10scanStringySbSSKF', symObjAddr: 0x0, symBinAddr: 0x265940, symSize: 0x160 } + - { offset: 0x3303B5, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE8scanBoolSbyKF', symObjAddr: 0x4EC, symBinAddr: 0x265DE8, symSize: 0x410 } + - { offset: 0x3304B1, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE5ErrorOAEsAdCWl', symObjAddr: 0xAF0, symBinAddr: 0x2662C0, symSize: 0x40 } + - { offset: 0x3304C5, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE5ErrorOMa', symObjAddr: 0xC14, symBinAddr: 0x266300, symSize: 0x10 } + - { offset: 0x3304D9, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE5ErrorOSHACSQWb', symObjAddr: 0xC24, symBinAddr: 0x266310, symSize: 0x4 } + - { offset: 0x3304ED, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE5ErrorOAESQACWl', symObjAddr: 0xC28, symBinAddr: 0x266314, symSize: 0x40 } + - { offset: 0x330557, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV10scanStringySbSSKF', symObjAddr: 0x0, symBinAddr: 0x265940, symSize: 0x160 } + - { offset: 0x33069E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV14scanPercentageSfyKF', symObjAddr: 0x1A4, symBinAddr: 0x265AA0, symSize: 0x1B8 } + - { offset: 0x33078D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV13scanCharacter11matchingAnySJ10Foundation0G3SetV_tKF', symObjAddr: 0x35C, symBinAddr: 0x265C58, symSize: 0x190 } + - { offset: 0x3308A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV10scanString11matchingAnySS10Foundation12CharacterSetV_tKF', symObjAddr: 0x8FC, symBinAddr: 0x2661F8, symSize: 0xC8 } + - { offset: 0x330FAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellCfETo', symObjAddr: 0xC4C, symBinAddr: 0x266FA0, symSize: 0x58 } + - { offset: 0x330FDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellCMa', symObjAddr: 0xCA4, symBinAddr: 0x266FF8, symSize: 0x20 } + - { offset: 0x330FEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC8setImage3foryAA0D0C_tFySo7UIImageCSgcfU_TA', symObjAddr: 0xDDC, symBinAddr: 0x267068, symSize: 0x8 } + - { offset: 0x331002, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvWyycfU0_TA', symObjAddr: 0xDE4, symBinAddr: 0x267070, symSize: 0x30 } + - { offset: 0x331016, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xE14, symBinAddr: 0x2670A0, symSize: 0x10 } + - { offset: 0x33102A, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xE24, symBinAddr: 0x2670B0, symSize: 0x8 } + - { offset: 0x33103E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvWyycfU_TA', symObjAddr: 0xE2C, symBinAddr: 0x2670B8, symSize: 0x30 } + - { offset: 0x331191, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC09containerF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x266354, symSize: 0x10 } + - { offset: 0x3311A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC09containerF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x266354, symSize: 0x10 } + - { offset: 0x3311EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC09containerF0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x266364, symSize: 0x34 } + - { offset: 0x33123E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC05imageF0So07UIImageF0CSgvgTo', symObjAddr: 0x44, symBinAddr: 0x266398, symSize: 0x20 } + - { offset: 0x331298, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC05imageF0So07UIImageF0CSgvsTo', symObjAddr: 0x64, symBinAddr: 0x2663B8, symSize: 0x14 } + - { offset: 0x3312E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x78, symBinAddr: 0x2663CC, symSize: 0x20 } + - { offset: 0x331343, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x2663EC, symSize: 0x14 } + - { offset: 0x331394, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC12awakeFromNibyyFTo', symObjAddr: 0xAC, symBinAddr: 0x266400, symSize: 0x3C } + - { offset: 0x3313EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvgTo', symObjAddr: 0xE8, symBinAddr: 0x26643C, symSize: 0x3C } + - { offset: 0x331447, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvsTo', symObjAddr: 0x124, symBinAddr: 0x266478, symSize: 0x68 } + - { offset: 0x33147C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvW', symObjAddr: 0x18C, symBinAddr: 0x2664E0, symSize: 0x160 } + - { offset: 0x3314C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC7setData3foryAA0D0C_tF', symObjAddr: 0x3AC, symBinAddr: 0x266700, symSize: 0xAC } + - { offset: 0x331556, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC8setImage3foryAA0D0C_tF', symObjAddr: 0x458, symBinAddr: 0x2667AC, symSize: 0x2F0 } + - { offset: 0x33164B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC8setImage3foryAA0D0C_tFySo7UIImageCSgcfU_', symObjAddr: 0x748, symBinAddr: 0x266A9C, symSize: 0x1B8 } + - { offset: 0x331728, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC15prepareForReuseyyF', symObjAddr: 0x900, symBinAddr: 0x266C54, symSize: 0x174 } + - { offset: 0x3317C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC15prepareForReuseyyFTo', symObjAddr: 0xA74, symBinAddr: 0x266DC8, symSize: 0x28 } + - { offset: 0x3317FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xA9C, symBinAddr: 0x266DF0, symSize: 0xAC } + - { offset: 0x331854, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB48, symBinAddr: 0x266E9C, symSize: 0xAC } + - { offset: 0x331887, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xBF4, symBinAddr: 0x266F48, symSize: 0x28 } + - { offset: 0x33189B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellCfD', symObjAddr: 0xC1C, symBinAddr: 0x266F70, symSize: 0x30 } + - { offset: 0x331C43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewC5frame5colorACSo6CGRectV_So7UIColorCtcfc', symObjAddr: 0x0, symBinAddr: 0x2670F0, symSize: 0x384 } + - { offset: 0x331E10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewCMa', symObjAddr: 0x460, symBinAddr: 0x267550, symSize: 0x20 } + - { offset: 0x331EF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewC5frame5colorACSo6CGRectV_So7UIColorCtcfc', symObjAddr: 0x0, symBinAddr: 0x2670F0, symSize: 0x384 } + - { offset: 0x3320F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x384, symBinAddr: 0x267474, symSize: 0x80 } + - { offset: 0x33214F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x404, symBinAddr: 0x2674F4, symSize: 0x2C } + - { offset: 0x3321AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewCfD', symObjAddr: 0x430, symBinAddr: 0x267520, symSize: 0x30 } + - { offset: 0x33254D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5frame11circleColor05arrowJ0ACSo6CGRectV_So7UIColorCAJtcfc', symObjAddr: 0x0, symBinAddr: 0x267570, symSize: 0x140 } + - { offset: 0x33278D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewCfETo', symObjAddr: 0x718, symBinAddr: 0x267C88, symSize: 0x38 } + - { offset: 0x3327BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewCMa', symObjAddr: 0x750, symBinAddr: 0x267CC0, symSize: 0x20 } + - { offset: 0x3327D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5frame11circleColor05arrowJ0ACSo6CGRectV_So7UIColorCAJtcfc', symObjAddr: 0x0, symBinAddr: 0x267570, symSize: 0x140 } + - { offset: 0x332889, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x140, symBinAddr: 0x2676B0, symSize: 0xF0 } + - { offset: 0x3328E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x230, symBinAddr: 0x2677A0, symSize: 0x28 } + - { offset: 0x33291A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC015setupArrowImageG033_1FCC85171C0AF7556E3C336142678B89LL10arrowColorySo7UIColorC_tF', symObjAddr: 0x258, symBinAddr: 0x2677C8, symSize: 0x11C } + - { offset: 0x3329CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC14layoutSubviewsyyF', symObjAddr: 0x374, symBinAddr: 0x2678E4, symSize: 0xC8 } + - { offset: 0x332A8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC14layoutSubviewsyyFTo', symObjAddr: 0x43C, symBinAddr: 0x2679AC, symSize: 0x28 } + - { offset: 0x332AAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC4drawyySo6CGRectVF', symObjAddr: 0x464, symBinAddr: 0x2679D4, symSize: 0x200 } + - { offset: 0x332B51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC4drawyySo6CGRectVFTo', symObjAddr: 0x664, symBinAddr: 0x267BD4, symSize: 0x58 } + - { offset: 0x332B8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x6BC, symBinAddr: 0x267C2C, symSize: 0x2C } + - { offset: 0x332BEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewCfD', symObjAddr: 0x6E8, symBinAddr: 0x267C58, symSize: 0x30 } + - { offset: 0x332FAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19FloorDrawingManagerV04drawD0_5using012setsCameraToD010completiony7Penguin0D0CSg_0M10INRenderer10PIRendererCSgSbySbcSgtFZySbcfU_', symObjAddr: 0x0, symBinAddr: 0x267CE0, symSize: 0x13C } + - { offset: 0x3330C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19FloorDrawingManagerV04drawD0_5using012setsCameraToD010completiony7Penguin0D0CSg_0M10INRenderer10PIRendererCSgSbySbcSgtFZySbcfU_', symObjAddr: 0x0, symBinAddr: 0x267CE0, symSize: 0x13C } + - { offset: 0x333175, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19FloorDrawingManagerV04drawD0_5using012setsCameraToD010completiony7Penguin0D0CSg_0M10INRenderer10PIRendererCSgSbySbcSgtFZTf4nnnnd_n', symObjAddr: 0x13C, symBinAddr: 0x267E1C, symSize: 0x39C } + - { offset: 0x3335B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC4size14indicatorColor06strokeI0AC12CoreGraphics7CGFloatV_So7UIColorCAKtcfc', symObjAddr: 0x0, symBinAddr: 0x2681F4, symSize: 0x12C } + - { offset: 0x3336F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewCfETo', symObjAddr: 0x50C, symBinAddr: 0x268700, symSize: 0x38 } + - { offset: 0x333725, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewCMa', symObjAddr: 0x544, symBinAddr: 0x268738, symSize: 0x20 } + - { offset: 0x33378E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC4size14indicatorColor06strokeI0AC12CoreGraphics7CGFloatV_So7UIColorCAKtcfc', symObjAddr: 0x0, symBinAddr: 0x2681F4, symSize: 0x12C } + - { offset: 0x33381B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x12C, symBinAddr: 0x268320, symSize: 0x120 } + - { offset: 0x333850, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x24C, symBinAddr: 0x268440, symSize: 0x28 } + - { offset: 0x3338C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC4drawyySo6CGRectVF', symObjAddr: 0x274, symBinAddr: 0x268468, symSize: 0x1E4 } + - { offset: 0x3339B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC4drawyySo6CGRectVFTo', symObjAddr: 0x458, symBinAddr: 0x26864C, symSize: 0x58 } + - { offset: 0x3339EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x4B0, symBinAddr: 0x2686A4, symSize: 0x2C } + - { offset: 0x333A4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewCfD', symObjAddr: 0x4DC, symBinAddr: 0x2686D0, symSize: 0x30 } + - { offset: 0x333E35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC04pathE00D006NWPathE0CSgvpZ', symObjAddr: 0x8518, symBinAddr: 0x384FA0, symSize: 0x0 } + - { offset: 0x333E4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC13interfaceType0D011NWInterfaceV09InterfaceG0OvpZ', symObjAddr: 0x8520, symBinAddr: 0x384FA8, symSize: 0x0 } + - { offset: 0x333E69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC17monitoringStartedSbvpZ', symObjAddr: 0x8538, symBinAddr: 0x384FC0, symSize: 0x0 } + - { offset: 0x333F62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC13interfaceType_WZ', symObjAddr: 0x25C, symBinAddr: 0x2689B4, symSize: 0x58 } + - { offset: 0x333F8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorCMa', symObjAddr: 0x80C, symBinAddr: 0x268F4C, symSize: 0x20 } + - { offset: 0x333FA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC5startyyFZy0D06NWPathVcfU_TA', symObjAddr: 0x848, symBinAddr: 0x268F88, symSize: 0x8 } + - { offset: 0x333FC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC25networkInterfaceDidChange33_91F7F947D07FC5BC8196B21D1F1C565BLL2toy0D011NWInterfaceV0G4TypeO_tFZyyScMYccfU_TA', symObjAddr: 0x101C, symBinAddr: 0x269664, symSize: 0x2C } + - { offset: 0x333FDA, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1048, symBinAddr: 0x269690, symSize: 0x10 } + - { offset: 0x333FEE, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1058, symBinAddr: 0x2696A0, symSize: 0x8 } + - { offset: 0x334002, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZy0D06NWPathVcfU_TA', symObjAddr: 0x114C, symBinAddr: 0x269714, symSize: 0xC } + - { offset: 0x334016, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZy0D06NWPathVcfU_yyScMYccfU_TA', symObjAddr: 0x11C4, symBinAddr: 0x26978C, symSize: 0x30 } + - { offset: 0x334158, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC5startyyFZ', symObjAddr: 0x0, symBinAddr: 0x268758, symSize: 0x25C } + - { offset: 0x3341F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC5startyyFZy0D06NWPathVcfU_', symObjAddr: 0x5DC, symBinAddr: 0x268D34, symSize: 0x10C } + - { offset: 0x334250, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZy0D06NWPathVcfU_', symObjAddr: 0x2B4, symBinAddr: 0x268A0C, symSize: 0x258 } + - { offset: 0x3342BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZy0D06NWPathVcfU_yyScMYccfU_', symObjAddr: 0x50C, symBinAddr: 0x268C64, symSize: 0xD0 } + - { offset: 0x334317, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC25networkInterfaceDidChange33_91F7F947D07FC5BC8196B21D1F1C565BLL2toy0D011NWInterfaceV0G4TypeO_tFZyyScMYccfU_', symObjAddr: 0x6E8, symBinAddr: 0x268E40, symSize: 0x10C } + - { offset: 0x334356, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZTf4nd_n', symObjAddr: 0x930, symBinAddr: 0x268F90, symSize: 0x228 } + - { offset: 0x33440A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC6cancelyyFZTf4d_n', symObjAddr: 0xB58, symBinAddr: 0x2691B8, symSize: 0x14C } + - { offset: 0x33442C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC25networkInterfaceDidChange33_91F7F947D07FC5BC8196B21D1F1C565BLL2toy0D011NWInterfaceV0G4TypeO_tFZTf4nd_n', symObjAddr: 0xCA4, symBinAddr: 0x269304, symSize: 0x308 } + - { offset: 0x334853, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ScheduleDayVMa', symObjAddr: 0x134, symBinAddr: 0x2697C4, symSize: 0x10 } + - { offset: 0x334C14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ScheduleDayV10timeRangesSSvg', symObjAddr: 0x144, symBinAddr: 0x2697D4, symSize: 0x448 } + - { offset: 0x33505F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ScheduleDayV05shortE4NameSSvgTf4x_n', symObjAddr: 0x758, symBinAddr: 0x269D64, symSize: 0xFC } + - { offset: 0x335124, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ScheduleDayV04longE4NameSSSgvgTf4x_n', symObjAddr: 0x854, symBinAddr: 0x269E60, symSize: 0x144 } + - { offset: 0x335565, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5labelSo7UILabelCvpfiAFyXEfU_', symObjAddr: 0x0, symBinAddr: 0x269FA4, symSize: 0x1DC } + - { offset: 0x3356A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelCfETo', symObjAddr: 0x47C, symBinAddr: 0x26A420, symSize: 0x10 } + - { offset: 0x3356D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelCMa', symObjAddr: 0x48C, symBinAddr: 0x26A430, symSize: 0x20 } + - { offset: 0x3357A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5labelSo7UILabelCvpfiAFyXEfU_', symObjAddr: 0x0, symBinAddr: 0x269FA4, symSize: 0x1DC } + - { offset: 0x3358A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5frameACSo6CGRectV_tcfc', symObjAddr: 0x1DC, symBinAddr: 0x26A180, symSize: 0x1E0 } + - { offset: 0x3358DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x3BC, symBinAddr: 0x26A360, symSize: 0x20 } + - { offset: 0x335927, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x3DC, symBinAddr: 0x26A380, symSize: 0x70 } + - { offset: 0x33596D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelCfD', symObjAddr: 0x44C, symBinAddr: 0x26A3F0, symSize: 0x30 } + - { offset: 0x335D20, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15updateFontStyleyyAC0fG0OF', symObjAddr: 0x0, symBinAddr: 0x26A450, symSize: 0x140 } + - { offset: 0x335E32, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15updateFontStyle3for5styleySaySSG_AC0fG0OtF', symObjAddr: 0x140, symBinAddr: 0x26A590, symSize: 0x1F4 } + - { offset: 0x335FAE, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE33updateFontStyleForWordsContaining_5styleySS_AC0fG0OtF', symObjAddr: 0x334, symBinAddr: 0x26A784, symSize: 0x1FC } + - { offset: 0x3360F6, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE9fontStyleSSvsTo', symObjAddr: 0x530, symBinAddr: 0x26A980, symSize: 0x54 } + - { offset: 0x336112, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x708, symBinAddr: 0x26A9D4, symSize: 0x8 } + - { offset: 0x33612E, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15colorIdentifierSivsTo', symObjAddr: 0x710, symBinAddr: 0x26A9DC, symSize: 0x38 } + - { offset: 0x33614A, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x754, symBinAddr: 0x26AA14, symSize: 0x8 } + - { offset: 0x336166, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x75C, symBinAddr: 0x26AA1C, symSize: 0x38 } + - { offset: 0x3361AC, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15localizationKeySSvsTo', symObjAddr: 0x8D4, symBinAddr: 0x26AA54, symSize: 0x94 } + - { offset: 0x3366E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x26AAF0, symSize: 0x10 } + - { offset: 0x3369E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellCfETo', symObjAddr: 0x808, symBinAddr: 0x26B2F4, symSize: 0x4C } + - { offset: 0x336A12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellCMa', symObjAddr: 0x854, symBinAddr: 0x26B340, symSize: 0x20 } + - { offset: 0x336A26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC25adaptivePresentationStyle3forSo07UIModalhI0VSo24UIPresentationControllerC_tFTo', symObjAddr: 0x874, symBinAddr: 0x26B360, symSize: 0x8 } + - { offset: 0x336A42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC05shareD0yyFyycfU_TA', symObjAddr: 0x8E4, symBinAddr: 0x26B38C, symSize: 0x8 } + - { offset: 0x336B66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x26AAF0, symSize: 0x10 } + - { offset: 0x336B7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x26AAF0, symSize: 0x10 } + - { offset: 0x336BC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x26AB00, symSize: 0x34 } + - { offset: 0x336C13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC17reportIssueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x26AB34, symSize: 0x10 } + - { offset: 0x336C2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC17reportIssueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x26AB34, symSize: 0x10 } + - { offset: 0x336C66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC17reportIssueButtonSo8UIButtonCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x26AB44, symSize: 0x34 } + - { offset: 0x336CB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC12awakeFromNibyyF', symObjAddr: 0x88, symBinAddr: 0x26AB78, symSize: 0xDC } + - { offset: 0x336D01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC12awakeFromNibyyFTo', symObjAddr: 0x164, symBinAddr: 0x26AC54, symSize: 0x28 } + - { offset: 0x336D1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC13reportAnIssueyySo8UIButtonCFTo', symObjAddr: 0x18C, symBinAddr: 0x26AC7C, symSize: 0x4 } + - { offset: 0x336D34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC13reportAnIssueyySo8UIButtonCFTo', symObjAddr: 0x18C, symBinAddr: 0x26AC7C, symSize: 0x4 } + - { offset: 0x336DC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC05shareD0yyF', symObjAddr: 0x190, symBinAddr: 0x26AC80, symSize: 0x414 } + - { offset: 0x33700C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC05shareD0yyFyycfU_', symObjAddr: 0x5A4, symBinAddr: 0x26B094, symSize: 0x88 } + - { offset: 0x337074, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC05shareD0yyFTo', symObjAddr: 0x630, symBinAddr: 0x26B11C, symSize: 0x28 } + - { offset: 0x3370BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x658, symBinAddr: 0x26B144, symSize: 0xC4 } + - { offset: 0x33711F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x71C, symBinAddr: 0x26B208, symSize: 0x94 } + - { offset: 0x337152, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x7B0, symBinAddr: 0x26B29C, symSize: 0x28 } + - { offset: 0x337166, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellCfD', symObjAddr: 0x7D8, symBinAddr: 0x26B2C4, symSize: 0x30 } + - { offset: 0x337189, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC13reportAnIssueyySo8UIButtonCFTf4dd_n', symObjAddr: 0x90C, symBinAddr: 0x26B394, symSize: 0xE0 } + - { offset: 0x33752A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4fromSSAA9LayerTreeO5ShapeO_tF', symObjAddr: 0x0, symBinAddr: 0x26B474, symSize: 0x1BC } + - { offset: 0x3375FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4fromSSAA9LayerTreeO5ShapeO_tF', symObjAddr: 0x0, symBinAddr: 0x26B474, symSize: 0x1BC } + - { offset: 0x337886, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderRect33_7CD13BB8671B7C502D9AF163B5323DF8LL4fromSSAA9LayerTreeO0G0V_tF', symObjAddr: 0x1BC, symBinAddr: 0x26B630, symSize: 0x274 } + - { offset: 0x337C4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC14renderRectPath5frame5radiiSSAA9LayerTreeO0G0V_AH4SizeVtF', symObjAddr: 0x430, symBinAddr: 0x26B8A4, symSize: 0x15C } + - { offset: 0x337EDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC17renderPolygonPath7betweenSSSayAA9LayerTreeO5PointVG_tF', symObjAddr: 0x58C, symBinAddr: 0x26BA00, symSize: 0x3A0 } + - { offset: 0x3384F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4from9formatterSSAA9LayerTreeO0G0C_AA19CoordinateFormatterVtFZ0F5PointL_AESSAH0N0V_tF', symObjAddr: 0x92C, symBinAddr: 0x26BDA0, symSize: 0x160 } + - { offset: 0x33874B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4from9formatterSSAA9LayerTreeO0G0C_AA19CoordinateFormatterVtFZTf4nnd_n', symObjAddr: 0xA8C, symBinAddr: 0x26BF00, symSize: 0x364 } + - { offset: 0x33911B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwCP', symObjAddr: 0x0, symBinAddr: 0x26C264, symSize: 0xE0 } + - { offset: 0x33912F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwxx', symObjAddr: 0xE0, symBinAddr: 0x26C344, symSize: 0x4C } + - { offset: 0x339143, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwcp', symObjAddr: 0x12C, symBinAddr: 0x26C390, symSize: 0xB4 } + - { offset: 0x339157, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwca', symObjAddr: 0x1E0, symBinAddr: 0x26C444, symSize: 0xD4 } + - { offset: 0x33916B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwtk', symObjAddr: 0x2B4, symBinAddr: 0x26C518, symSize: 0x90 } + - { offset: 0x33917F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwta', symObjAddr: 0x344, symBinAddr: 0x26C5A8, symSize: 0xA4 } + - { offset: 0x339193, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwet', symObjAddr: 0x3E8, symBinAddr: 0x26C64C, symSize: 0xC } + - { offset: 0x3391A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwst', symObjAddr: 0x470, symBinAddr: 0x26C6D4, symSize: 0xC } + - { offset: 0x3391BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVMa', symObjAddr: 0x4F0, symBinAddr: 0x26C754, symSize: 0x38 } + - { offset: 0x3391CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVMr', symObjAddr: 0x528, symBinAddr: 0x26C78C, symSize: 0x9C } + - { offset: 0x3393DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOAFs0F3KeyAAWl', symObjAddr: 0xEE8, symBinAddr: 0x26D03C, symSize: 0x40 } + - { offset: 0x3393FD, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10LiveObjectVGSayxGSesSeRzlWl', symObjAddr: 0x15F4, symBinAddr: 0x26D5A0, symSize: 0x80 } + - { offset: 0x339411, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOMa', symObjAddr: 0x189C, symBinAddr: 0x26D620, symSize: 0x10 } + - { offset: 0x339425, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOSHAASQWb', symObjAddr: 0x18AC, symBinAddr: 0x26D630, symSize: 0x4 } + - { offset: 0x339439, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOAFSQAAWl', symObjAddr: 0x18B0, symBinAddr: 0x26D634, symSize: 0x40 } + - { offset: 0x33944D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x18F0, symBinAddr: 0x26D674, symSize: 0x4 } + - { offset: 0x339461, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x18F4, symBinAddr: 0x26D678, symSize: 0x40 } + - { offset: 0x339475, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1934, symBinAddr: 0x26D6B8, symSize: 0x4 } + - { offset: 0x339489, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x1938, symBinAddr: 0x26D6BC, symSize: 0x40 } + - { offset: 0x3394CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0xE2C, symBinAddr: 0x26CFC4, symSize: 0x28 } + - { offset: 0x3394EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0xE54, symBinAddr: 0x26CFEC, symSize: 0x28 } + - { offset: 0x3395A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV8getImage10completionyySo7UIImageCc_tFyAGSgcfU_', symObjAddr: 0x5C4, symBinAddr: 0x26C828, symSize: 0x40 } + - { offset: 0x3395EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLO11stringValueSSvg', symObjAddr: 0x604, symBinAddr: 0x26C868, symSize: 0x108 } + - { offset: 0x339611, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0x70C, symBinAddr: 0x26C970, symSize: 0x25C } + - { offset: 0x339648, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV4fromACs7Decoder_p_tKcfC', symObjAddr: 0x968, symBinAddr: 0x26CBCC, symSize: 0x3C0 } + - { offset: 0x33967C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0xDE8, symBinAddr: 0x26CF8C, symSize: 0x8 } + - { offset: 0x339697, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0xDF0, symBinAddr: 0x26CF94, symSize: 0x24 } + - { offset: 0x3396C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0xE20, symBinAddr: 0x26CFB8, symSize: 0xC } + - { offset: 0x3396DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xE7C, symBinAddr: 0x26D014, symSize: 0x14 } + - { offset: 0x3396EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xE90, symBinAddr: 0x26D028, symSize: 0x14 } + - { offset: 0x3397AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV6decode4fromSayACGSg10Foundation4DataVSg_tFZTf4nd_n', symObjAddr: 0xFA8, symBinAddr: 0x26D07C, symSize: 0x524 } + - { offset: 0x3398D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x1978, symBinAddr: 0x26D6FC, symSize: 0x2E4 } + - { offset: 0x339E45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC6colorsAA14ColorsResponseVSgvpZ', symObjAddr: 0x9810, symBinAddr: 0x384FC8, symSize: 0x0 } + - { offset: 0x339EA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC20panelBackgroundColorSo7UIColorCvpZ', symObjAddr: 0x9828, symBinAddr: 0x384FE0, symSize: 0x0 } + - { offset: 0x339EBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC29secondaryPanelBackgroundColorSo7UIColorCvpZ', symObjAddr: 0x9830, symBinAddr: 0x384FE8, symSize: 0x0 } + - { offset: 0x339ED4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC10labelColorSo7UIColorCvpZ', symObjAddr: 0x9838, symBinAddr: 0x384FF0, symSize: 0x0 } + - { offset: 0x339EEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC19secondaryLabelColorSo7UIColorCvpZ', symObjAddr: 0x9840, symBinAddr: 0x384FF8, symSize: 0x0 } + - { offset: 0x339F08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC27borderColorOnGrayBackgroundSo7UIColorCvpZ', symObjAddr: 0x9848, symBinAddr: 0x385000, symSize: 0x0 } + - { offset: 0x339F22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC28borderColorOnWhiteBackgroundSo7UIColorCvpZ', symObjAddr: 0x9850, symBinAddr: 0x385008, symSize: 0x0 } + - { offset: 0x339F3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC11buttonColorSo7UIColorCvpZ', symObjAddr: 0x9858, symBinAddr: 0x385010, symSize: 0x0 } + - { offset: 0x339F56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC22locationIndicatorColorSo7UIColorCvpZ', symObjAddr: 0x9860, symBinAddr: 0x385018, symSize: 0x0 } + - { offset: 0x339F70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC19accuracyCircleColorSo7UIColorCvpZ', symObjAddr: 0x9868, symBinAddr: 0x385020, symSize: 0x0 } + - { offset: 0x339F8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC14routeLineColorSo7UIColorCvpZ', symObjAddr: 0x9870, symBinAddr: 0x385028, symSize: 0x0 } + - { offset: 0x339FA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC20routeLineCasingColorSo7UIColorCvpZ', symObjAddr: 0x9878, symBinAddr: 0x385030, symSize: 0x0 } + - { offset: 0x339FBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC18openingStatusColorSo7UIColorCvpZ', symObjAddr: 0x9880, symBinAddr: 0x385038, symSize: 0x0 } + - { offset: 0x339FD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC18closureStatusColorSo7UIColorCvpZ', symObjAddr: 0x9888, symBinAddr: 0x385040, symSize: 0x0 } + - { offset: 0x339FF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC23panelGrabberHandleColorSo7UIColorCvpZ', symObjAddr: 0x9890, symBinAddr: 0x385048, symSize: 0x0 } + - { offset: 0x33A00C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC16closeButtonColorSo7UIColorCvpZ', symObjAddr: 0x9898, symBinAddr: 0x385050, symSize: 0x0 } + - { offset: 0x33A026, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC16placeholderColorSo7UIColorCvpZ', symObjAddr: 0x98A0, symBinAddr: 0x385058, symSize: 0x0 } + - { offset: 0x33A040, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC14selectionColorSo7UIColorCvpZ', symObjAddr: 0x98A8, symBinAddr: 0x385060, symSize: 0x0 } + - { offset: 0x33A04E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC14selectionColor_WZ', symObjAddr: 0x224, symBinAddr: 0x26DC04, symSize: 0x48 } + - { offset: 0x33A247, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeCMa', symObjAddr: 0x27C, symBinAddr: 0x26DC4C, symSize: 0x20 } + - { offset: 0x33A392, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC020floorExtrudedPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0x2E0, symBinAddr: 0x26DC6C, symSize: 0x12C } + - { offset: 0x33A4C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC012venuePolygonD0AA14ColorsResponseV0fD0VvgZTf4d_n', symObjAddr: 0x40C, symBinAddr: 0x26DD98, symSize: 0x128 } + - { offset: 0x33A5FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC012venue3dModelD0AA14ColorsResponseV07PolygonD0VvgZTf4d_n', symObjAddr: 0x540, symBinAddr: 0x26DECC, symSize: 0x144 } + - { offset: 0x33A731, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC020venueExtrudedPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0x684, symBinAddr: 0x26E010, symSize: 0x144 } + - { offset: 0x33A866, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC016indoorPoiPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0x7C8, symBinAddr: 0x26E154, symSize: 0x138 } + - { offset: 0x33A99B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC017outdoorPoiPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0x900, symBinAddr: 0x26E28C, symSize: 0x138 } + - { offset: 0x33AB1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC010getPolygonD03forSS9fillColor_Sd0H7OpacitySS06borderI0Sd0kJ0t7Penguin03PoiF0V_tFZTf4nd_n', symObjAddr: 0xA38, symBinAddr: 0x26E3C4, symSize: 0x2BC } + - { offset: 0x33AD1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC010poi3dModelD0AA14ColorsResponseV07PolygonD0VvgZTf4d_n', symObjAddr: 0xCF4, symBinAddr: 0x26E680, symSize: 0x13C } + - { offset: 0x33AE51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC018poiExtrudedPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0xE30, symBinAddr: 0x26E7BC, symSize: 0x144 } + - { offset: 0x33AF86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC13campusPolygonAA14ColorsResponseV0fD0VvgZTf4d_n', symObjAddr: 0xFA8, symBinAddr: 0x26E900, symSize: 0x128 } + - { offset: 0x33B446, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC14sharedInstance33_1714430FC00978376F0CBFC2182C8579LLACSgvpZ', symObjAddr: 0x3200, symBinAddr: 0x36FAC8, symSize: 0x0 } + - { offset: 0x33B701, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC22startMonitoringRegions20forceLocationUpdatesySb_tF', symObjAddr: 0x64, symBinAddr: 0x26EC3C, symSize: 0x2FC } + - { offset: 0x33B9BA, size: 0x8, addend: 0x0, symName: '_$sSbs5Error_pSgIeghyg_SbSo7NSErrorCSgIeyBhyy_TR', symObjAddr: 0x360, symBinAddr: 0x26EF38, symSize: 0x64 } + - { offset: 0x33BA09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCMa', symObjAddr: 0x534, symBinAddr: 0x26F0D0, symSize: 0x20 } + - { offset: 0x33BA5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC9sendError5errorySSSg_tF', symObjAddr: 0x92C, symBinAddr: 0x26F4C8, symSize: 0x1DC } + - { offset: 0x33BAC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC9sendError5errorySSSg_tFyyScMYccfU_', symObjAddr: 0x26B0, symBinAddr: 0x2711C4, symSize: 0xD4 } + - { offset: 0x33BB20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC20startGeofenceProcess33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0xB08, symBinAddr: 0x26F6A4, symSize: 0x2B0 } + - { offset: 0x33BC01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC20startGeofenceProcess33_1714430FC00978376F0CBFC2182C8579LLyyFySSSg_7Penguin9ErrorCodeOSgtcfU_', symObjAddr: 0x18D8, symBinAddr: 0x2703EC, symSize: 0x94 } + - { offset: 0x33BC95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC21stopMonitoringRegions33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0xFA0, symBinAddr: 0x26FB3C, symSize: 0x240 } + - { offset: 0x33BDF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVWOc', symObjAddr: 0x1598, symBinAddr: 0x270134, symSize: 0x3C } + - { offset: 0x33BE06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25PIGeofenceManagerDelegate_pSgWOd', symObjAddr: 0x165C, symBinAddr: 0x270170, symSize: 0x48 } + - { offset: 0x33BE1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCfETo', symObjAddr: 0x1800, symBinAddr: 0x270314, symSize: 0x7C } + - { offset: 0x33BE49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_22didChangeAuthorizationySo010CLLocationE0C_So21CLAuthorizationStatusVtF', symObjAddr: 0x187C, symBinAddr: 0x270390, symSize: 0x8 } + - { offset: 0x33BE6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_22didChangeAuthorizationySo010CLLocationE0C_So21CLAuthorizationStatusVtFTo', symObjAddr: 0x1884, symBinAddr: 0x270398, symSize: 0x54 } + - { offset: 0x33BEA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC11handleError5errory7Penguin0G4CodeO_tF', symObjAddr: 0x196C, symBinAddr: 0x270480, symSize: 0x74 } + - { offset: 0x33BF51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC21loadCampusInformation33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0x19E0, symBinAddr: 0x2704F4, symSize: 0x304 } + - { offset: 0x33BFD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC21loadCampusInformation33_1714430FC00978376F0CBFC2182C8579LLyyFySay7Penguin0G0CGSgcfU_', symObjAddr: 0x1CE4, symBinAddr: 0x2707F8, symSize: 0x244 } + - { offset: 0x33C077, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC18loadRemoteSettings33_1714430FC00978376F0CBFC2182C8579LLyyFy7Penguin9ErrorCodeOSgcfU_', symObjAddr: 0x1F28, symBinAddr: 0x270A3C, symSize: 0x170 } + - { offset: 0x33C0FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC12loadGeofence33_1714430FC00978376F0CBFC2182C8579LLyyFySay7Penguin0G6RegionVG_So7NSErrorCSgtcfU_', symObjAddr: 0x2098, symBinAddr: 0x270BAC, symSize: 0xF4 } + - { offset: 0x33C1C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC24registerRegionMonitoring33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0x218C, symBinAddr: 0x270CA0, symSize: 0x33C } + - { offset: 0x33C338, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC24registerRegionMonitoring33_1714430FC00978376F0CBFC2182C8579LLyyFyyScMYccfU_', symObjAddr: 0x24C8, symBinAddr: 0x270FDC, symSize: 0x1E8 } + - { offset: 0x33C3E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_14didEnterRegionySo010CLLocationE0C_So8CLRegionCtF', symObjAddr: 0x2784, symBinAddr: 0x271298, symSize: 0x8 } + - { offset: 0x33C406, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_14didEnterRegionySo010CLLocationE0C_So8CLRegionCtFTo', symObjAddr: 0x278C, symBinAddr: 0x2712A0, symSize: 0x68 } + - { offset: 0x33C439, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC14stopGeofencingyyFyyScMYccfU_TA', symObjAddr: 0x2818, symBinAddr: 0x27132C, symSize: 0x8 } + - { offset: 0x33C44D, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2820, symBinAddr: 0x271334, symSize: 0x10 } + - { offset: 0x33C461, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2830, symBinAddr: 0x271344, symSize: 0x8 } + - { offset: 0x33C475, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC12loadGeofence33_1714430FC00978376F0CBFC2182C8579LLyyFySay7Penguin0G6RegionVG_So7NSErrorCSgtcfU_TA', symObjAddr: 0x2930, symBinAddr: 0x271370, symSize: 0x8 } + - { offset: 0x33C489, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_22didChangeAuthorizationySo010CLLocationE0C_So21CLAuthorizationStatusVtFTf4dnn_n', symObjAddr: 0x2938, symBinAddr: 0x271378, symSize: 0xB8 } + - { offset: 0x33C54D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_14didEnterRegionySo010CLLocationE0C_So8CLRegionCtFTf4dnd_n', symObjAddr: 0x29F0, symBinAddr: 0x271430, symSize: 0x1CC } + - { offset: 0x33C63B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorO10Foundation09LocalizedE0AAs0E0PWb', symObjAddr: 0x2BBC, symBinAddr: 0x2715FC, symSize: 0x4 } + - { offset: 0x33C64F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOACs0E0AAWl', symObjAddr: 0x2BC0, symBinAddr: 0x271600, symSize: 0x40 } + - { offset: 0x33C663, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwxx', symObjAddr: 0x2C04, symBinAddr: 0x271644, symSize: 0x18 } + - { offset: 0x33C677, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwca', symObjAddr: 0x2C68, symBinAddr: 0x2716A8, symSize: 0xA0 } + - { offset: 0x33C68B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwta', symObjAddr: 0x2D14, symBinAddr: 0x271748, symSize: 0x78 } + - { offset: 0x33C69F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwet', symObjAddr: 0x2D8C, symBinAddr: 0x2717C0, symSize: 0x5C } + - { offset: 0x33C6B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwst', symObjAddr: 0x2DE8, symBinAddr: 0x27181C, symSize: 0x50 } + - { offset: 0x33C6C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwug', symObjAddr: 0x2E38, symBinAddr: 0x27186C, symSize: 0x18 } + - { offset: 0x33C6DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwui', symObjAddr: 0x2E54, symBinAddr: 0x271884, symSize: 0x20 } + - { offset: 0x33C6EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOMa', symObjAddr: 0x2E74, symBinAddr: 0x2718A4, symSize: 0x10 } + - { offset: 0x33C703, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVSgWOe', symObjAddr: 0x2F58, symBinAddr: 0x271910, symSize: 0x50 } + - { offset: 0x33C717, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC24registerRegionMonitoring33_1714430FC00978376F0CBFC2182C8579LLyyFyyScMYccfU_TA', symObjAddr: 0x2FA8, symBinAddr: 0x271960, symSize: 0x8 } + - { offset: 0x33C72B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC20startGeofenceProcess33_1714430FC00978376F0CBFC2182C8579LLyyFySSSg_7Penguin9ErrorCodeOSgtcfU_TA', symObjAddr: 0x3090, symBinAddr: 0x271968, symSize: 0xC } + - { offset: 0x33C73F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC21loadCampusInformation33_1714430FC00978376F0CBFC2182C8579LLyyFySay7Penguin0G0CGSgcfU_TA', symObjAddr: 0x309C, symBinAddr: 0x271974, symSize: 0x8 } + - { offset: 0x33C753, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC18loadRemoteSettings33_1714430FC00978376F0CBFC2182C8579LLyyFy7Penguin9ErrorCodeOSgcfU_TA', symObjAddr: 0x30E8, symBinAddr: 0x27197C, symSize: 0xC } + - { offset: 0x33C767, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC9sendError5errorySSSg_tFyyScMYccfU_TA', symObjAddr: 0x3120, symBinAddr: 0x2719B4, symSize: 0xC } + - { offset: 0x33C9A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC6sharedACvgZ', symObjAddr: 0x0, symBinAddr: 0x26EBD8, symSize: 0x64 } + - { offset: 0x33CB61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvg', symObjAddr: 0x3C4, symBinAddr: 0x26EF9C, symSize: 0x130 } + - { offset: 0x33CC06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorO10Foundation09LocalizedE0AadEP16errorDescriptionSSSgvgTW', symObjAddr: 0x504, symBinAddr: 0x26F0CC, symSize: 0x4 } + - { offset: 0x33CCCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC018initializeLocationE0yyF', symObjAddr: 0x554, symBinAddr: 0x26F0F0, symSize: 0x10C } + - { offset: 0x33CE52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC28setGeofenceSDKConfigurationsyyAA0G13ConfigurationVF', symObjAddr: 0x660, symBinAddr: 0x26F1FC, symSize: 0xC0 } + - { offset: 0x33CEC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC19setGeofenceDelegate8delegateyAA0deH0_p_tF', symObjAddr: 0x720, symBinAddr: 0x26F2BC, symSize: 0x58 } + - { offset: 0x33CF9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC15startGeofencing8delegateyAA0dE8Delegate_p_tF', symObjAddr: 0x778, symBinAddr: 0x26F314, symSize: 0x1B4 } + - { offset: 0x33D22E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC14stopGeofencingyyF', symObjAddr: 0xDB8, symBinAddr: 0x26F954, symSize: 0x1E8 } + - { offset: 0x33D2BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC14stopGeofencingyyFyyScMYccfU_', symObjAddr: 0x11E0, symBinAddr: 0x26FD7C, symSize: 0xC0 } + - { offset: 0x33D349, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC16updateGeofencingyyF', symObjAddr: 0x12A0, symBinAddr: 0x26FE3C, symSize: 0x118 } + - { offset: 0x33D42F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC30enableBackgroundLocationUpdate33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0x13B8, symBinAddr: 0x26FF54, symSize: 0x1E0 } + - { offset: 0x33D4C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCACycfc', symObjAddr: 0x16A4, symBinAddr: 0x2701B8, symSize: 0x90 } + - { offset: 0x33D4F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCACycfcTo', symObjAddr: 0x1734, symBinAddr: 0x270248, symSize: 0x9C } + - { offset: 0x33D52D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCfD', symObjAddr: 0x17D0, symBinAddr: 0x2702E4, symSize: 0x30 } + - { offset: 0x33D9BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC9imageViewSo07UIImageG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2719E4, symSize: 0x10 } + - { offset: 0x33DE6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCfE', symObjAddr: 0x16C4, symBinAddr: 0x2730A8, symSize: 0xB8 } + - { offset: 0x33DE97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCfETo', symObjAddr: 0x17AC, symBinAddr: 0x273190, symSize: 0xC4 } + - { offset: 0x33DEC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCMa', symObjAddr: 0x1870, symBinAddr: 0x273254, symSize: 0x20 } + - { offset: 0x33DEDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC14layoutForPanelAA08FloatingH6Layout_pyFTo', symObjAddr: 0x1968, symBinAddr: 0x273274, symSize: 0x34 } + - { offset: 0x33DF07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC16behaviorForPanelAA08FloatingH8Behavior_pyFTo', symObjAddr: 0x199C, symBinAddr: 0x2732A8, symSize: 0x24 } + - { offset: 0x33DF85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC10setupPanelyyF', symObjAddr: 0x19C0, symBinAddr: 0x2732CC, symSize: 0x228 } + - { offset: 0x33E1CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC10setupPanelyyFTo', symObjAddr: 0x1BE8, symBinAddr: 0x2734F4, symSize: 0x28 } + - { offset: 0x33E1F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTW', symObjAddr: 0x1C10, symBinAddr: 0x27351C, symSize: 0x4 } + - { offset: 0x33E216, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTW', symObjAddr: 0x1C10, symBinAddr: 0x27351C, symSize: 0x4 } + - { offset: 0x33E228, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC23onToastVisibilityChange7visible9toastTypeySb_AA0gL0OSgtFTf4ddn_n', symObjAddr: 0x1C14, symBinAddr: 0x273520, symSize: 0x1C0 } + - { offset: 0x33E40D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC14startCountdownyyFySo7NSTimerCYbcfU_TA', symObjAddr: 0x1E4C, symBinAddr: 0x273704, symSize: 0x8 } + - { offset: 0x33E421, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1E54, symBinAddr: 0x27370C, symSize: 0x10 } + - { offset: 0x33E435, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1E64, symBinAddr: 0x27371C, symSize: 0x8 } + - { offset: 0x33E449, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC12setupButtonsyyFyycfU0_TA', symObjAddr: 0x1EB8, symBinAddr: 0x273760, symSize: 0xC } + - { offset: 0x33E803, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC9imageViewSo07UIImageG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2719E4, symSize: 0x10 } + - { offset: 0x33E81B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC9imageViewSo07UIImageG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2719E4, symSize: 0x10 } + - { offset: 0x33E861, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC9imageViewSo07UIImageG0CSgvsTo', symObjAddr: 0x10, symBinAddr: 0x2719F4, symSize: 0x34 } + - { offset: 0x33E8B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x271A28, symSize: 0x10 } + - { offset: 0x33E8C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x271A28, symSize: 0x10 } + - { offset: 0x33E908, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x271A38, symSize: 0x34 } + - { offset: 0x33E957, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC13subtitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x271A6C, symSize: 0x10 } + - { offset: 0x33E96F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC13subtitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x88, symBinAddr: 0x271A6C, symSize: 0x10 } + - { offset: 0x33E9AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC13subtitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x98, symBinAddr: 0x271A7C, symSize: 0x34 } + - { offset: 0x33E9F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC16buttonsStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x271AB0, symSize: 0x10 } + - { offset: 0x33EA11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC16buttonsStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0xCC, symBinAddr: 0x271AB0, symSize: 0x10 } + - { offset: 0x33EA51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC16buttonsStackViewSo07UIStackH0CSgvsTo', symObjAddr: 0xDC, symBinAddr: 0x271AC0, symSize: 0x34 } + - { offset: 0x33EADC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC11viewDidLoadyyF', symObjAddr: 0x110, symBinAddr: 0x271AF4, symSize: 0x1E4 } + - { offset: 0x33EC29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC11viewDidLoadyyFTo', symObjAddr: 0x2F4, symBinAddr: 0x271CD8, symSize: 0x28 } + - { offset: 0x33EC3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC12setupButtonsyyF', symObjAddr: 0x31C, symBinAddr: 0x271D00, symSize: 0xC94 } + - { offset: 0x33F270, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC12setupButtonsyyFyycfU0_', symObjAddr: 0xFB0, symBinAddr: 0x272994, symSize: 0xDC } + - { offset: 0x33F46F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC11setSubtitle4text5style5colorySSSg_AA9FontStyleOSgSo7UIColorCSgtF', symObjAddr: 0x108C, symBinAddr: 0x272A70, symSize: 0x17C } + - { offset: 0x33F584, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC14startCountdownyyF', symObjAddr: 0x1208, symBinAddr: 0x272BEC, symSize: 0xEC } + - { offset: 0x33F5CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC14startCountdownyyFySo7NSTimerCYbcfU_', symObjAddr: 0x12F4, symBinAddr: 0x272CD8, symSize: 0xF8 } + - { offset: 0x33F6E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x13EC, symBinAddr: 0x272DD0, symSize: 0x134 } + - { offset: 0x33F728, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x1520, symBinAddr: 0x272F04, symSize: 0x60 } + - { offset: 0x33F73C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1580, symBinAddr: 0x272F64, symSize: 0x11C } + - { offset: 0x33F76F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x169C, symBinAddr: 0x273080, symSize: 0x28 } + - { offset: 0x33F783, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCfD', symObjAddr: 0x177C, symBinAddr: 0x273160, symSize: 0x30 } + - { offset: 0x34048E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6render7fileURL4size7options3api9precisionSS10Foundation0H0V_Si5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ', symObjAddr: 0x4CF0, symBinAddr: 0x27845C, symSize: 0x18 } + - { offset: 0x340623, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC21logUnsupportedFiltersyySayAA3DOMO6FilterC6EffectOGFAA14CGTextProviderV_Tg5', symObjAddr: 0x4D7C, symBinAddr: 0x2784E8, symSize: 0x23C } + - { offset: 0x3408E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC21logUnsupportedFiltersyySayAA3DOMO6FilterC6EffectOGFAA10CGProviderV_Tg5', symObjAddr: 0x4FB8, symBinAddr: 0x278724, symSize: 0x23C } + - { offset: 0x341684, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC18logUnsupportedMaskyyFAA14CGTextProviderV_Tg5', symObjAddr: 0x6708, symBinAddr: 0x279E74, symSize: 0xC4 } + - { offset: 0x341720, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC18logUnsupportedMaskyyFAA10CGProviderV_Tg5', symObjAddr: 0x67CC, symBinAddr: 0x279F38, symSize: 0xC4 } + - { offset: 0x3417BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC22logUnsupportedGradientyyFAA14CGTextProviderV_Tg5', symObjAddr: 0x6890, symBinAddr: 0x279FFC, symSize: 0xC4 } + - { offset: 0x341858, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC22logUnsupportedGradientyyFAA10CGProviderV_Tg5', symObjAddr: 0x6954, symBinAddr: 0x27A0C0, symSize: 0xC4 } + - { offset: 0x34190A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6render5named2in4size7options3api9precisionS2S_So8NSBundleCSi5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ', symObjAddr: 0x6A18, symBinAddr: 0x27A184, symSize: 0x1B0 } + - { offset: 0x341C20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6render4data7options3api9precisionSS10Foundation4DataV_AA3SVGC7OptionsVAC3APIOSitKFZ', symObjAddr: 0x6BC8, symBinAddr: 0x27A334, symSize: 0x3F8 } + - { offset: 0x34218C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4fromS2S_tKFZ', symObjAddr: 0x6FC0, symBinAddr: 0x27A72C, symSize: 0x240 } + - { offset: 0x3423C6, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x7248, symBinAddr: 0x27A96C, symSize: 0x98 } + - { offset: 0x342455, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSS_SSTg5', symObjAddr: 0x72E0, symBinAddr: 0x27AA04, symSize: 0x50 } + - { offset: 0x3424FA, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x7330, symBinAddr: 0x27AA54, symSize: 0x98 } + - { offset: 0x342594, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSi_8PenNavUI5ColorVTg5', symObjAddr: 0x73C8, symBinAddr: 0x27AAEC, symSize: 0x4C } + - { offset: 0x34262E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSS_ypTg5', symObjAddr: 0x7414, symBinAddr: 0x27AB38, symSize: 0x68 } + - { offset: 0x3426C8, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x747C, symBinAddr: 0x27ABA0, symSize: 0x48 } + - { offset: 0x342762, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0x74C4, symBinAddr: 0x27ABE8, symSize: 0x48 } + - { offset: 0x342800, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x750C, symBinAddr: 0x27AC30, symSize: 0x44 } + - { offset: 0x34289E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF8PenNavUI9LayerTreeO8GradientV_SSTg5', symObjAddr: 0x7550, symBinAddr: 0x27AC74, symSize: 0x48 } + - { offset: 0x342FFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6render7fileURL4size7options3api9precisionSS10Foundation0H0V_Si5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZTf4nnnnnd_n', symObjAddr: 0xDF84, symBinAddr: 0x2816A8, symSize: 0x658 } + - { offset: 0x3434B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC5Error33_6F9262CB821AA9E5A3E1381913BD0F9CLLVAFsAdAWl', symObjAddr: 0xE5DC, symBinAddr: 0x281D00, symSize: 0x40 } + - { offset: 0x3434C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC5Error33_6F9262CB821AA9E5A3E1381913BD0F9CLLVMa', symObjAddr: 0xE7F8, symBinAddr: 0x281D40, symSize: 0x10 } + - { offset: 0x3434DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC5Error33_6F9262CB821AA9E5A3E1381913BD0F9CLLV10Foundation09LocalizedF0AAsADPWb', symObjAddr: 0xE808, symBinAddr: 0x281D50, symSize: 0x4 } + - { offset: 0x3434EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA11CGTextTypesVGSgWOe', symObjAddr: 0xE81C, symBinAddr: 0x281D54, symSize: 0x14 } + - { offset: 0x343502, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA11CGTextTypesVGWOe', symObjAddr: 0xE830, symBinAddr: 0x281D68, symSize: 0x94 } + - { offset: 0x343516, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefaAB14CoreFoundation9_CFObjectSCWl', symObjAddr: 0xEC64, symBinAddr: 0x281DFC, symSize: 0x44 } + - { offset: 0x343814, size: 0x8, addend: 0x0, symName: '_$sSlsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lFSay8PenNavUI9LayerTreeO8GradientV4StopVG_ALs5NeverOTg5', symObjAddr: 0x4BA0, symBinAddr: 0x27830C, symSize: 0x150 } + - { offset: 0x3439C5, size: 0x8, addend: 0x0, symName: '_$sSTsE10allSatisfyyS2b7ElementQzKXEKFSay8PenNavUI9LayerTreeO8GradientV4StopVG_Tg503$s8de3UI9gh2O8i19V8isOpaqueSbvgSbAE4J52Vcfu_33_67bbb279b13e8c472f24efacf0d06563AHSbTf3npk_nTf1cn_n', symObjAddr: 0x4D08, symBinAddr: 0x278474, symSize: 0x74 } + - { offset: 0x343E10, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC10Foundation3URLV_So20NSURLSessionDataTaskCTt0g5Tf4g_n', symObjAddr: 0xC998, symBinAddr: 0x2800BC, symSize: 0x160 } + - { offset: 0x343F39, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_SSTt0g5Tf4g_n', symObjAddr: 0xCAF8, symBinAddr: 0x28021C, symSize: 0x108 } + - { offset: 0x34407A, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTt0g5Tf4g_n', symObjAddr: 0xCC00, symBinAddr: 0x280324, symSize: 0x158 } + - { offset: 0x3441B3, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSi_8PenNavUI5ColorVTt0g5Tf4g_n', symObjAddr: 0xCD58, symBinAddr: 0x28047C, symSize: 0x130 } + - { offset: 0x3442F0, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI18FloatingPanelStateC_AC0fG15LayoutAnchoring_pTt0g5Tf4g_n', symObjAddr: 0xCE88, symBinAddr: 0x2805AC, symSize: 0xEC } + - { offset: 0x344437, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI18FloatingPanelStateC_SaySo18NSLayoutConstraintCGTt0g5Tf4g_n', symObjAddr: 0xCF74, symBinAddr: 0x280698, symSize: 0xEC } + - { offset: 0x34457E, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_SbTt0g5Tf4g_n', symObjAddr: 0xD060, symBinAddr: 0x280784, symSize: 0xF0 } + - { offset: 0x3446BF, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_ypTt0g5Tf4g_n', symObjAddr: 0xD150, symBinAddr: 0x280874, symSize: 0x118 } + - { offset: 0x3447FC, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI9FontStyleO_So6UIFontCTt0g5Tf4g_n', symObjAddr: 0xD284, symBinAddr: 0x2809A8, symSize: 0xE8 } + - { offset: 0x34493D, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI13AppFontWeightO_SSTt0g5Tf4g_n', symObjAddr: 0xD36C, symBinAddr: 0x280A90, symSize: 0xEC } + - { offset: 0x344A84, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI8MenuItemV0fG9AttributeO_SbTt0g5Tf4g_n', symObjAddr: 0xD458, symBinAddr: 0x280B7C, symSize: 0xD4 } + - { offset: 0x344BCB, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSo21NSAttributedStringKeya_So6UIFontCTt0g5Tf4g_n', symObjAddr: 0xD52C, symBinAddr: 0x280C50, symSize: 0xF0 } + - { offset: 0x344D12, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_SSSgTt0g5Tf4g_n', symObjAddr: 0xD61C, symBinAddr: 0x280D40, symSize: 0x108 } + - { offset: 0x344E53, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI9LayerTreeO8GradientV_SSTt0g5Tf4g_n', symObjAddr: 0xD724, symBinAddr: 0x280E48, symSize: 0x124 } + - { offset: 0x344F90, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGTt0g5Tf4g_n', symObjAddr: 0xD848, symBinAddr: 0x280F6C, symSize: 0x118 } + - { offset: 0x3450C7, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI3DOMO10StyleSheetV8SelectorO_AE22PresentationAttributesVTt0g5Tf4g_n', symObjAddr: 0xD960, symBinAddr: 0x281084, symSize: 0x17C } + - { offset: 0x3451FC, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSo11CFStringRefa_So06CTFontD0aTt0g5Tf4g_n', symObjAddr: 0xDADC, symBinAddr: 0x281200, symSize: 0xF0 } + - { offset: 0x345343, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_SdTt0g5Tf4g_n', symObjAddr: 0xDBCC, symBinAddr: 0x2812F0, symSize: 0xF8 } + - { offset: 0x3455E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC7optionsAEy_xGAA0G7OptionsV_tcfcAA11CGTextTypesV_Tg5', symObjAddr: 0x0, symBinAddr: 0x27376C, symSize: 0x58 } + - { offset: 0x345624, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC7optionsAEy_xGAA0G7OptionsV_tcfcAA7CGTypesV_Tg5', symObjAddr: 0x58, symBinAddr: 0x2737C4, symSize: 0x6C } + - { offset: 0x345792, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC011filterStateF03forAA08RendererF0OyxGSgAJ_tFAA11CGTextTypesV_Tg5', symObjAddr: 0xC4, symBinAddr: 0x273830, symSize: 0x1F8C } + - { offset: 0x346BDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC011filterStateF03forAA08RendererF0OyxGSgAJ_tFAA7CGTypesV_Tg5', symObjAddr: 0x2050, symBinAddr: 0x2757BC, symSize: 0x1D38 } + - { offset: 0x347F23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackV3topxvsAA9LayerTreeO16CommandOptimizerC5StateVy_AA11CGTextTypesV_G_Tg5', symObjAddr: 0x3D88, symBinAddr: 0x2774F4, symSize: 0x1AC } + - { offset: 0x34817B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackV3topxvsAA9LayerTreeO16CommandOptimizerC5StateVy_AA7CGTypesV_G_Tg5', symObjAddr: 0x3F34, symBinAddr: 0x2776A0, symSize: 0x1A4 } + - { offset: 0x3483D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackV3popSbyFAA9LayerTreeO16CommandOptimizerC5StateVy_AA11CGTextTypesV_G_Tg5', symObjAddr: 0x40D8, symBinAddr: 0x277844, symSize: 0xF8 } + - { offset: 0x34852C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC16optimizeCommandsySayAA08RendererF0OyxGGAJFAA11CGTextTypesV_Tg5', symObjAddr: 0x41D0, symBinAddr: 0x27793C, symSize: 0x44C } + - { offset: 0x34898D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC16optimizeCommandsySayAA08RendererF0OyxGGAJFAA7CGTypesV_Tg5', symObjAddr: 0x461C, symBinAddr: 0x277D88, symSize: 0x584 } + - { offset: 0x349066, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands7forMaskSayAA08RendererF0Oy5TypesQzGGAC0D0CSg_tFAA14CGTextProviderV_Tg5', symObjAddr: 0x51F4, symBinAddr: 0x278960, symSize: 0x5A8 } + - { offset: 0x349CDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands7forMaskSayAA08RendererF0Oy5TypesQzGGAC0D0CSg_tFAA10CGProviderV_Tg5', symObjAddr: 0x579C, symBinAddr: 0x278F08, symSize: 0xA34 } + - { offset: 0x34AE29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands9forRadial2in7opacity14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0K8GradientV_AC4RectVSfAA05ColorO0_ptFAA14CGTextProviderV_Tg5', symObjAddr: 0x61D0, symBinAddr: 0x27993C, symSize: 0x538 } + - { offset: 0x34BC05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA14CGTextProviderV_Tg5Tf4nnnen_nAA09LuminanceuN0V_Tg5', symObjAddr: 0x7598, symBinAddr: 0x27ACBC, symSize: 0x23FC } + - { offset: 0x34E966, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA14CGTextProviderV_Tg5Tf4nnnen_nAA07DefaultuN0V_Tg5', symObjAddr: 0x9994, symBinAddr: 0x27D0B8, symSize: 0x23FC } + - { offset: 0x35175D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands7forClip5usingSayAA08RendererF0Oy5TypesQzGGSayAC5ShapeOG_AA3DOMO8FillRuleOSgtFAA14CGTextProviderV_Tg5Tf4nnd_n', symObjAddr: 0xDDEC, symBinAddr: 0x281510, symSize: 0x198 } + - { offset: 0x351B13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands7forClip5usingSayAA08RendererF0Oy5TypesQzGGSayAC5ShapeOG_AA3DOMO8FillRuleOSgtFAA10CGProviderV_Tg5Tf4nnd_n', symObjAddr: 0xECEC, symBinAddr: 0x281E40, symSize: 0x228 } + - { offset: 0x3521AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC05sharedE6ButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x282068, symSize: 0x20 } + - { offset: 0x352570, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellCfETo', symObjAddr: 0x81C, symBinAddr: 0x282884, symSize: 0x8C } + - { offset: 0x35259F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellCMa', symObjAddr: 0x8A8, symBinAddr: 0x282910, symSize: 0x20 } + - { offset: 0x3525B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC06showMyE0yycSgvWyycfU_TA', symObjAddr: 0x8FC, symBinAddr: 0x282954, symSize: 0x8 } + - { offset: 0x352733, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC05sharedE6ButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x282068, symSize: 0x20 } + - { offset: 0x352793, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC05sharedE6ButtonSo8UIButtonCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x282088, symSize: 0x14 } + - { offset: 0x3527E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC19markAsParkingButtonSo8UIButtonCSgvgTo', symObjAddr: 0x34, symBinAddr: 0x28209C, symSize: 0x20 } + - { offset: 0x352839, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC19markAsParkingButtonSo8UIButtonCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x2820BC, symSize: 0x14 } + - { offset: 0x35288A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC17reportIssueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x68, symBinAddr: 0x2820D0, symSize: 0x20 } + - { offset: 0x3528DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC17reportIssueButtonSo8UIButtonCSgvsTo', symObjAddr: 0x88, symBinAddr: 0x2820F0, symSize: 0x14 } + - { offset: 0x352930, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE4ViewAA06HapticH0CSgvgTo', symObjAddr: 0x9C, symBinAddr: 0x282104, symSize: 0x20 } + - { offset: 0x35298A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE4ViewAA06HapticH0CSgvsTo', symObjAddr: 0xBC, symBinAddr: 0x282124, symSize: 0x14 } + - { offset: 0x3529DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE5LabelSo7UILabelCSgvgTo', symObjAddr: 0xD0, symBinAddr: 0x282138, symSize: 0x20 } + - { offset: 0x352A35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE5LabelSo7UILabelCSgvsTo', symObjAddr: 0xF0, symBinAddr: 0x282158, symSize: 0x14 } + - { offset: 0x352A86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE10FloorLabelSo7UILabelCSgvgTo', symObjAddr: 0x104, symBinAddr: 0x28216C, symSize: 0x20 } + - { offset: 0x352ADB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE10FloorLabelSo7UILabelCSgvsTo', symObjAddr: 0x124, symBinAddr: 0x28218C, symSize: 0x14 } + - { offset: 0x352B38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC06showMyE0yycSgvWyycfU_', symObjAddr: 0x138, symBinAddr: 0x2821A0, symSize: 0x88 } + - { offset: 0x352BBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC06showMyE0yycSgvs', symObjAddr: 0x1C0, symBinAddr: 0x282228, symSize: 0xC0 } + - { offset: 0x352C78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC12awakeFromNibyyFTo', symObjAddr: 0x280, symBinAddr: 0x2822E8, symSize: 0x68 } + - { offset: 0x352CEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0x2E8, symBinAddr: 0x282350, symSize: 0x54 } + - { offset: 0x352D2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC7setData04userE06campusy7Penguin10PILocationCSg_AG5VenueCSgtF', symObjAddr: 0x33C, symBinAddr: 0x2823A4, symSize: 0x240 } + - { offset: 0x352E14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x57C, symBinAddr: 0x2825E4, symSize: 0x110 } + - { offset: 0x352E55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x68C, symBinAddr: 0x2826F4, symSize: 0x48 } + - { offset: 0x352E8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x6D4, symBinAddr: 0x28273C, symSize: 0xF0 } + - { offset: 0x352EC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x7C4, symBinAddr: 0x28282C, symSize: 0x28 } + - { offset: 0x352ED4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellCfD', symObjAddr: 0x7EC, symBinAddr: 0x282854, symSize: 0x30 } + - { offset: 0x35328A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x0, symBinAddr: 0x28295C, symSize: 0x68 } + - { offset: 0x3534D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCfETo', symObjAddr: 0x2AC, symBinAddr: 0x282C08, symSize: 0x48 } + - { offset: 0x353508, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCMa', symObjAddr: 0x2F4, symBinAddr: 0x282C50, symSize: 0x20 } + - { offset: 0x35351C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC05setupE0yyFTo', symObjAddr: 0x31C, symBinAddr: 0x282C78, symSize: 0x4 } + - { offset: 0x353547, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP09layoutForE0AA0dE6Layout_pSgyFTW', symObjAddr: 0x44C, symBinAddr: 0x282DA8, symSize: 0x24 } + - { offset: 0x353588, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP011behaviorForE0AA0dE8Behavior_pSgyFTW', symObjAddr: 0x470, symBinAddr: 0x282DCC, symSize: 0x24 } + - { offset: 0x3535C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP05setupE0yyFTW', symObjAddr: 0x494, symBinAddr: 0x282DF0, symSize: 0x10 } + - { offset: 0x35360C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC08floatingE7DidMoveyyAA0deG0CF', symObjAddr: 0x4A4, symBinAddr: 0x282E00, symSize: 0x15C } + - { offset: 0x353766, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC08floatingE7DidMoveyyAA0deG0CFTo', symObjAddr: 0x600, symBinAddr: 0x282F5C, symSize: 0x50 } + - { offset: 0x353782, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC08floatingE10WillRemoveyyAA0deG0CF', symObjAddr: 0x650, symBinAddr: 0x282FAC, symSize: 0xC4 } + - { offset: 0x35381B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC08floatingE10WillRemoveyyAA0deG0CFTo', symObjAddr: 0x714, symBinAddr: 0x283070, symSize: 0x50 } + - { offset: 0x353857, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x0, symBinAddr: 0x28295C, symSize: 0x68 } + - { offset: 0x35396A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x68, symBinAddr: 0x2829C4, symSize: 0xD8 } + - { offset: 0x3539AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x140, symBinAddr: 0x282A9C, symSize: 0x60 } + - { offset: 0x3539F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1A0, symBinAddr: 0x282AFC, symSize: 0xB4 } + - { offset: 0x353A26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x254, symBinAddr: 0x282BB0, symSize: 0x28 } + - { offset: 0x353A3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCfD', symObjAddr: 0x27C, symBinAddr: 0x282BD8, symSize: 0x30 } + - { offset: 0x353A71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP5panelAA0deG0CSgvgTW', symObjAddr: 0x320, symBinAddr: 0x282C7C, symSize: 0x30 } + - { offset: 0x353AC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP5panelAA0deG0CSgvsTW', symObjAddr: 0x350, symBinAddr: 0x282CAC, symSize: 0x18 } + - { offset: 0x353AE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP5panelAA0deG0CSgvsTW', symObjAddr: 0x350, symBinAddr: 0x282CAC, symSize: 0x18 } + - { offset: 0x353B18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelLevelSiSgvgTW', symObjAddr: 0x368, symBinAddr: 0x282CC4, symSize: 0x18 } + - { offset: 0x353B30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelLevelSiSgvgTW', symObjAddr: 0x368, symBinAddr: 0x282CC4, symSize: 0x18 } + - { offset: 0x353B70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelLevelSiSgvsTW', symObjAddr: 0x380, symBinAddr: 0x282CDC, symSize: 0x1C } + - { offset: 0x353B88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelLevelSiSgvsTW', symObjAddr: 0x380, symBinAddr: 0x282CDC, symSize: 0x1C } + - { offset: 0x353BC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelStateAA0deJ0CSgvgTW', symObjAddr: 0x39C, symBinAddr: 0x282CF8, symSize: 0x30 } + - { offset: 0x353C19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelStateAA0deJ0CSgvsTW', symObjAddr: 0x3CC, symBinAddr: 0x282D28, symSize: 0x18 } + - { offset: 0x353C31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelStateAA0deJ0CSgvsTW', symObjAddr: 0x3CC, symBinAddr: 0x282D28, symSize: 0x18 } + - { offset: 0x353C68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP9presenterAA0dE9Presenter_pSgvgTW', symObjAddr: 0x3E4, symBinAddr: 0x282D40, symSize: 0x30 } + - { offset: 0x353CC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP9presenterAA0dE9Presenter_pSgvsTW', symObjAddr: 0x414, symBinAddr: 0x282D70, symSize: 0x38 } + - { offset: 0x3543FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryCMa', symObjAddr: 0x109C, symBinAddr: 0x284100, symSize: 0x20 } + - { offset: 0x35440E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC06updateD09venueDatayAA0dH0C_tFyyYbXEfU_TA', symObjAddr: 0x1150, symBinAddr: 0x28412C, symSize: 0xC } + - { offset: 0x354422, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x117C, symBinAddr: 0x284138, symSize: 0x10 } + - { offset: 0x354436, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x118C, symBinAddr: 0x284148, symSize: 0x8 } + - { offset: 0x35444A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12getAllVenuesSayAA0D4DataCGyFyyYbXEfU_TA', symObjAddr: 0x11B8, symBinAddr: 0x284174, symSize: 0x8 } + - { offset: 0x35445E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12insertVenues6venuesySayAA0D4DataCG_tFyyYbXEfU_TA', symObjAddr: 0x1204, symBinAddr: 0x2841C0, symSize: 0xC } + - { offset: 0x354472, size: 0x8, addend: 0x0, symName: '_$s7Penguin12UpdateStatusOACSYAAWl', symObjAddr: 0x1220, symBinAddr: 0x2841DC, symSize: 0x44 } + - { offset: 0x35464C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12insertVenues6venuesySayAA0D4DataCG_tF', symObjAddr: 0x40, symBinAddr: 0x2830C8, symSize: 0x1A0 } + - { offset: 0x3546D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12insertVenues6venuesySayAA0D4DataCG_tFyyYbXEfU_', symObjAddr: 0x1E0, symBinAddr: 0x283268, symSize: 0x4F4 } + - { offset: 0x354A86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12getAllVenuesSayAA0D4DataCGyF', symObjAddr: 0x6D4, symBinAddr: 0x28375C, symSize: 0x194 } + - { offset: 0x354B3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12getAllVenuesSayAA0D4DataCGyFyyYbXEfU_', symObjAddr: 0x868, symBinAddr: 0x2838F0, symSize: 0x20C } + - { offset: 0x354DF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC06updateD09venueDatayAA0dH0C_tF', symObjAddr: 0xA74, symBinAddr: 0x283AFC, symSize: 0x1A0 } + - { offset: 0x354E81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC06updateD09venueDatayAA0dH0C_tFyyYbXEfU_', symObjAddr: 0xC14, symBinAddr: 0x283C9C, symSize: 0xF0 } + - { offset: 0x354ECD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC09insertNewD033_D6148AF0073D78926608A03AA9FA7FD1LL9venueDatayAA0dP0C_tF', symObjAddr: 0xD04, symBinAddr: 0x283D8C, symSize: 0x104 } + - { offset: 0x354F55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC06removeD033_D6148AF0073D78926608A03AA9FA7FD1LL5venueyAA0D4DataC_tF', symObjAddr: 0xE08, symBinAddr: 0x283E90, symSize: 0x270 } + - { offset: 0x3557AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelCMa', symObjAddr: 0xBC4, symBinAddr: 0x284DE4, symSize: 0x20 } + - { offset: 0x3557BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC012handleCampusE8Response33_6E592137D65A8EF25B4559D528B849A4LL9venueDatayAA0dT0CSg_tFyyScMYccfU_TA', symObjAddr: 0xC58, symBinAddr: 0x284E34, symSize: 0x8 } + - { offset: 0x3557D3, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xC60, symBinAddr: 0x284E3C, symSize: 0x10 } + - { offset: 0x3557E7, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xC70, symBinAddr: 0x284E4C, symSize: 0x8 } + - { offset: 0x3557FB, size: 0x8, addend: 0x0, symName: '_$sSS_SStWOh', symObjAddr: 0xD90, symBinAddr: 0x284E54, symSize: 0x40 } + - { offset: 0x35580F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC15fetchCampusData33_6E592137D65A8EF25B4559D528B849A4LL8campusIdySi_tFyAA0dJ0CSgcACcfu_yAIcfu0_TA', symObjAddr: 0xDD0, symBinAddr: 0x284E94, symSize: 0x4 } + - { offset: 0x355827, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC15fetchCampusData33_6E592137D65A8EF25B4559D528B849A4LL8campusIdySi_tFyAA0dJ0CSgcACcfu_yAIcfu0_TA', symObjAddr: 0xDD0, symBinAddr: 0x284E94, symSize: 0x4 } + - { offset: 0x355849, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tFySayAA5PlaceCGcfU_TA', symObjAddr: 0xDD4, symBinAddr: 0x284E98, symSize: 0x8 } + - { offset: 0x35585D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tFySayAA5PlaceCGcfU_yyScMYccfU_TA', symObjAddr: 0xE28, symBinAddr: 0x284EE0, symSize: 0x8 } + - { offset: 0x355871, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC06handledE8Response33_6E592137D65A8EF25B4559D528B849A4LL9venueDatayAA0dS0CSg_tFyyScMYccfU_TA', symObjAddr: 0xE68, symBinAddr: 0x284EE8, symSize: 0x8 } + - { offset: 0x355885, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD4Data33_6E592137D65A8EF25B4559D528B849A4LL7venueIdySi_tFyAA0dI0CSgcACcfu_yAIcfu0_TA', symObjAddr: 0xE70, symBinAddr: 0x284EF0, symSize: 0x4 } + - { offset: 0x35589D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD4Data33_6E592137D65A8EF25B4559D528B849A4LL7venueIdySi_tFyAA0dI0CSgcACcfu_yAIcfu0_TA', symObjAddr: 0xE70, symBinAddr: 0x284EF0, symSize: 0x4 } + - { offset: 0x3558DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD4Data33_6E592137D65A8EF25B4559D528B849A4LL7venueIdySi_tF', symObjAddr: 0x18, symBinAddr: 0x284238, symSize: 0x10C } + - { offset: 0x355B55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tF', symObjAddr: 0x284, symBinAddr: 0x2844A4, symSize: 0x1E4 } + - { offset: 0x355C84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tFySayAA5PlaceCGcfU_', symObjAddr: 0x468, symBinAddr: 0x284688, symSize: 0x200 } + - { offset: 0x355CE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tFySayAA5PlaceCGcfU_yyScMYccfU_', symObjAddr: 0x668, symBinAddr: 0x284888, symSize: 0x94 } + - { offset: 0x355D5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC15fetchCampusData33_6E592137D65A8EF25B4559D528B849A4LL8campusIdySi_tF', symObjAddr: 0x6FC, symBinAddr: 0x28491C, symSize: 0xFC } + - { offset: 0x355EDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelCfD', symObjAddr: 0xB90, symBinAddr: 0x284DB0, symSize: 0x34 } + - { offset: 0x3562AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC8positionAA0eF8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x284F0C, symSize: 0x8 } + - { offset: 0x356460, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutCMa', symObjAddr: 0x204, symBinAddr: 0x285110, symSize: 0x20 } + - { offset: 0x35647C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC8positionAA0eF8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x284F0C, symSize: 0x8 } + - { offset: 0x356494, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC8positionAA0eF8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x284F0C, symSize: 0x8 } + - { offset: 0x3564AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC12initialStateAA0efI0CvgTo', symObjAddr: 0x8, symBinAddr: 0x284F14, symSize: 0x8 } + - { offset: 0x3564C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC12initialStateAA0efI0CvgTo', symObjAddr: 0x8, symBinAddr: 0x284F14, symSize: 0x8 } + - { offset: 0x3564F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC7anchorsSDyAA0eF5StateCAA0efG9Anchoring_pGvgTo', symObjAddr: 0x10, symBinAddr: 0x284F1C, symSize: 0x7C } + - { offset: 0x3565FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC7anchorsSDyAA0eF5StateCAA0efG9Anchoring_pGvg', symObjAddr: 0x8C, symBinAddr: 0x284F98, symSize: 0x144 } + - { offset: 0x356735, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA0eF5StateC_tFTo', symObjAddr: 0x1D0, symBinAddr: 0x2850DC, symSize: 0x8 } + - { offset: 0x35674D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA0eF5StateC_tFTo', symObjAddr: 0x1D0, symBinAddr: 0x2850DC, symSize: 0x8 } + - { offset: 0x35677C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutCfD', symObjAddr: 0x1D8, symBinAddr: 0x2850E4, symSize: 0x2C } + - { offset: 0x356B4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ColorVMa', symObjAddr: 0x1D4, symBinAddr: 0x285130, symSize: 0x10 } + - { offset: 0x356EDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC22getAddressWithBuildingSSyF', symObjAddr: 0x0, symBinAddr: 0x285140, symSize: 0xCC } + - { offset: 0x356FD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC22getAddressWithBuildingSSyF', symObjAddr: 0x0, symBinAddr: 0x285140, symSize: 0xCC } + - { offset: 0x3571C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataCMa', symObjAddr: 0xEB4, symBinAddr: 0x285FF0, symSize: 0x20 } + - { offset: 0x3571E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC6imagesSaySSGSgvM', symObjAddr: 0xCC, symBinAddr: 0x28520C, symSize: 0x30 } + - { offset: 0x3571F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC8scheduleSay7Penguin8ScheduleCGSgvM', symObjAddr: 0x100, symBinAddr: 0x28523C, symSize: 0x30 } + - { offset: 0x35733D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC05venueF0AcA0dF0C_tcfc', symObjAddr: 0x130, symBinAddr: 0x28526C, symSize: 0x320 } + - { offset: 0x35746F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC5venueAC7Penguin0D0CSg_tcfc', symObjAddr: 0x450, symBinAddr: 0x28558C, symSize: 0x4D0 } + - { offset: 0x35761A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC12campusDetailAC7Penguin0D0CSg_tcfc', symObjAddr: 0x920, symBinAddr: 0x285A5C, symSize: 0x440 } + - { offset: 0x3577C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC29setupOfflineCampusInformationyyF', symObjAddr: 0xD60, symBinAddr: 0x285E9C, symSize: 0xC8 } + - { offset: 0x357824, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataCfd', symObjAddr: 0xE28, symBinAddr: 0x285F64, symSize: 0x6C } + - { offset: 0x357847, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataCfD', symObjAddr: 0xE94, symBinAddr: 0x285FD0, symSize: 0x20 } + - { offset: 0x357BF1, size: 0x8, addend: 0x0, symName: '_$sSo11UIStackViewC8PenNavUIE13arabicSpacing12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x0, symBinAddr: 0x286010, symSize: 0x8 } + - { offset: 0x357C09, size: 0x8, addend: 0x0, symName: '_$sSo11UIStackViewC8PenNavUIE13arabicSpacing12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x0, symBinAddr: 0x286010, symSize: 0x8 } + - { offset: 0x357C25, size: 0x8, addend: 0x0, symName: '_$sSo11UIStackViewC8PenNavUIE13arabicSpacing12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x8, symBinAddr: 0x286018, symSize: 0x38 } + - { offset: 0x357C57, size: 0x8, addend: 0x0, symName: '_$sSo11UIStackViewC8PenNavUIE13arabicSpacing12CoreGraphics7CGFloatVvs', symObjAddr: 0x40, symBinAddr: 0x286050, symSize: 0x90 } + - { offset: 0x3580ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x2860E0, symSize: 0x8 } + - { offset: 0x3582F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutCMa', symObjAddr: 0x3F4, symBinAddr: 0x2864B0, symSize: 0x20 } + - { offset: 0x358346, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x2860E0, symSize: 0x8 } + - { offset: 0x35835E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x2860E0, symSize: 0x8 } + - { offset: 0x35837D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvsTo', symObjAddr: 0x8, symBinAddr: 0x2860E8, symSize: 0x8 } + - { offset: 0x358395, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvsTo', symObjAddr: 0x8, symBinAddr: 0x2860E8, symSize: 0x8 } + - { offset: 0x3583AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvgTo', symObjAddr: 0x10, symBinAddr: 0x2860F0, symSize: 0x8 } + - { offset: 0x3583C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvgTo', symObjAddr: 0x10, symBinAddr: 0x2860F0, symSize: 0x8 } + - { offset: 0x3583DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvsTo', symObjAddr: 0x18, symBinAddr: 0x2860F8, symSize: 0x2C } + - { offset: 0x358427, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC7anchorsSDyAA18FloatingPanelStateCAA0ijG9Anchoring_pGvgTo', symObjAddr: 0x44, symBinAddr: 0x286124, symSize: 0x7C } + - { offset: 0x358573, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC7anchorsSDyAA18FloatingPanelStateCAA0ijG9Anchoring_pGvg', symObjAddr: 0xC0, symBinAddr: 0x2861A0, symSize: 0x268 } + - { offset: 0x358746, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tFTo', symObjAddr: 0x328, symBinAddr: 0x286408, symSize: 0xA8 } + - { offset: 0x3587F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC09topAnchorE012CoreGraphics7CGFloatVvgZTf4d_n', symObjAddr: 0x458, symBinAddr: 0x2864D0, symSize: 0x148 } + - { offset: 0x359006, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwxx', symObjAddr: 0x2C, symBinAddr: 0x286618, symSize: 0x30 } + - { offset: 0x35901A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwcp', symObjAddr: 0x5C, symBinAddr: 0x286648, symSize: 0x4C } + - { offset: 0x35902E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwca', symObjAddr: 0xA8, symBinAddr: 0x286694, symSize: 0x7C } + - { offset: 0x359042, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwta', symObjAddr: 0x130, symBinAddr: 0x286710, symSize: 0x54 } + - { offset: 0x359056, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwet', symObjAddr: 0x184, symBinAddr: 0x286764, symSize: 0x48 } + - { offset: 0x35906A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwst', symObjAddr: 0x1CC, symBinAddr: 0x2867AC, symSize: 0x40 } + - { offset: 0x35907E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVMa', symObjAddr: 0x20C, symBinAddr: 0x2867EC, symSize: 0x10 } + - { offset: 0x359667, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegV13getDirections12subPathIndexSayAA14RouteDirectionVGSi_tF', symObjAddr: 0x21C, symBinAddr: 0x2867FC, symSize: 0x220 } + - { offset: 0x3599EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegV13getDirections12subPathIndexSayAA14RouteDirectionVGSi_tFy7Penguin11SubpathEdgeCXEfU_Tf4nxnnn_n', symObjAddr: 0xFB0, symBinAddr: 0x287590, symSize: 0x144C } + - { offset: 0x35B3F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegV10directionsSayAA14RouteDirectionVGvg', symObjAddr: 0x43C, symBinAddr: 0x286A1C, symSize: 0xB74 } + - { offset: 0x35C249, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegV8durationSdvgTf4x_n', symObjAddr: 0x23FC, symBinAddr: 0x2889DC, symSize: 0x24C } + - { offset: 0x35C83D, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE9fontStyleSSvgTo', symObjAddr: 0x0, symBinAddr: 0x288C28, symSize: 0x1C } + - { offset: 0x35C859, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE9fontStyleSSvsTo', symObjAddr: 0x1C, symBinAddr: 0x288C44, symSize: 0x54 } + - { offset: 0x35C875, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE19textColorIdentifierSivgTo', symObjAddr: 0x1F4, symBinAddr: 0x288C98, symSize: 0x8 } + - { offset: 0x35C891, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE19textColorIdentifierSivsTo', symObjAddr: 0x1FC, symBinAddr: 0x288CA0, symSize: 0x38 } + - { offset: 0x35C8AD, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x240, symBinAddr: 0x288CD8, symSize: 0x8 } + - { offset: 0x35C8C9, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x248, symBinAddr: 0x288CE0, symSize: 0x38 } + - { offset: 0x35C8E5, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE19tintColorIdentifierSivgTo', symObjAddr: 0x28C, symBinAddr: 0x288D18, symSize: 0x8 } + - { offset: 0x35C901, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE19tintColorIdentifierSivsTo', symObjAddr: 0x294, symBinAddr: 0x288D20, symSize: 0x38 } + - { offset: 0x35CCE5, size: 0x8, addend: 0x0, symName: '_$ss14_ArrayProtocolPsE6filterySay7ElementQzGSbAEKXEKFSay7Penguin10PoiPolygonVG_Tg5', symObjAddr: 0x0, symBinAddr: 0x288D58, symSize: 0x208 } + - { offset: 0x35CD09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC14sharedInstance33_DB5F0CED90D641A8D90FE1F51FA03EE5LLACSgvpZ', symObjAddr: 0x1C18, symBinAddr: 0x370390, symSize: 0x0 } + - { offset: 0x35CFB4, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryV8PenNavUI13TagDataSourceA2dEP5tagIdSivgTW', symObjAddr: 0x744, symBinAddr: 0x2893D0, symSize: 0x1C } + - { offset: 0x35D00E, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryV8PenNavUI13TagDataSourceA2dEP7tagNameSSvgTW', symObjAddr: 0x760, symBinAddr: 0x2893EC, symSize: 0x24 } + - { offset: 0x35D04A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerCMa', symObjAddr: 0x784, symBinAddr: 0x289410, symSize: 0x20 } + - { offset: 0x35D05E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11POICategoryVGFSbAE10PoiPolygonVXEfU_TA', symObjAddr: 0x7A4, symBinAddr: 0x289430, symSize: 0x64 } + - { offset: 0x35D0F7, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin11POICategoryV_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11F17VGFSbAG_AGtXEfU0_Tf1cn_n', symObjAddr: 0x808, symBinAddr: 0x289494, symSize: 0x108 } + - { offset: 0x35D31C, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin11POICategoryV_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11F17VGFSbAG_AGtXEfU0_Tf1nnncn_n', symObjAddr: 0x910, symBinAddr: 0x28959C, symSize: 0x7B4 } + - { offset: 0x35D7DE, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin11POICategoryV_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11G17VGFSbAG_AGtXEfU0_Tf1nncn_n', symObjAddr: 0x1324, symBinAddr: 0x289D50, symSize: 0x284 } + - { offset: 0x35DB63, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin11POICategoryV_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11H17VGFSbAG_AGtXEfU0_Tf1nnnnc_n', symObjAddr: 0x15A8, symBinAddr: 0x289FD4, symSize: 0x5A4 } + - { offset: 0x35DCDC, size: 0x8, addend: 0x0, symName: '_$ss14_ArrayProtocolPsE6filterySay7ElementQzGSbAEKXEKFSay7Penguin10PoiPolygonVG_Tg5', symObjAddr: 0x0, symBinAddr: 0x288D58, symSize: 0x208 } + - { offset: 0x35DE67, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin11POICategoryVG_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11G17VGFSbAG_AGtXEfU0_Tf1cn_n', symObjAddr: 0x208, symBinAddr: 0x288F60, symSize: 0x80 } + - { offset: 0x35E120, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11POICategoryVGF', symObjAddr: 0x288, symBinAddr: 0x288FE0, symSize: 0x270 } + - { offset: 0x35E4D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC17getCategoryWithIdy7Penguin11POICategoryVSgSiSgF', symObjAddr: 0x598, symBinAddr: 0x289250, symSize: 0x158 } + - { offset: 0x35E623, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC13loadAmenitiesyyFySayAA0G0VGcfU_', symObjAddr: 0x6F0, symBinAddr: 0x2893A8, symSize: 0x28 } + - { offset: 0x35ED76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellCfETo', symObjAddr: 0x8DC, symBinAddr: 0x28AF1C, symSize: 0x48 } + - { offset: 0x35EDA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellCMa', symObjAddr: 0x924, symBinAddr: 0x28AF64, symSize: 0x20 } + - { offset: 0x35EDB9, size: 0x8, addend: 0x0, symName: '_$sypSgWOc', symObjAddr: 0x944, symBinAddr: 0x28AF84, symSize: 0x48 } + - { offset: 0x35EDCD, size: 0x8, addend: 0x0, symName: '_$sypSgWOd', symObjAddr: 0xA10, symBinAddr: 0x28AFCC, symSize: 0x48 } + - { offset: 0x35EEFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC16descriptionLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x28A640, symSize: 0x10 } + - { offset: 0x35EF15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC16descriptionLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x28A640, symSize: 0x10 } + - { offset: 0x35EF5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC16descriptionLabelSo7UILabelCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x28A650, symSize: 0x34 } + - { offset: 0x35EFAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC12awakeFromNibyyFTo', symObjAddr: 0x44, symBinAddr: 0x28A684, symSize: 0x68 } + - { offset: 0x35F072, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC10updateInfo3for21isDescriptionExpandedyAA11PoiViewDataCSg_SbtF', symObjAddr: 0xAC, symBinAddr: 0x28A6EC, symSize: 0x210 } + - { offset: 0x35F1C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC10updateInfo3for21isDescriptionExpandedyAA13VenueViewDataCSg_SbtF', symObjAddr: 0x2BC, symBinAddr: 0x28A8FC, symSize: 0x210 } + - { offset: 0x35F342, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC17expandDescriptionyyF', symObjAddr: 0x4CC, symBinAddr: 0x28AB0C, symSize: 0x1CC } + - { offset: 0x35F44D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC17expandDescriptionyyFTo', symObjAddr: 0x698, symBinAddr: 0x28ACD8, symSize: 0x28 } + - { offset: 0x35F461, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x6C0, symBinAddr: 0x28AD00, symSize: 0xCC } + - { offset: 0x35F4A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x78C, symBinAddr: 0x28ADCC, symSize: 0x48 } + - { offset: 0x35F4B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x7D4, symBinAddr: 0x28AE14, symSize: 0xB0 } + - { offset: 0x35F4E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x884, symBinAddr: 0x28AEC4, symSize: 0x28 } + - { offset: 0x35F4FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellCfD', symObjAddr: 0x8AC, symBinAddr: 0x28AEEC, symSize: 0x30 } + - { offset: 0x35F5B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC7trimmedySo18NSAttributedStringCSSFTf4nd_n', symObjAddr: 0xA58, symBinAddr: 0x28B014, symSize: 0x434 } + - { offset: 0x35FBB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorC06allowseF03forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x28B448, symSize: 0xC } + - { offset: 0x35FC32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorCMa', symObjAddr: 0x1C, symBinAddr: 0x28B454, symSize: 0x20 } + - { offset: 0x35FC91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorC06allowseF03forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x28B448, symSize: 0xC } + - { offset: 0x35FCA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorC06allowseF03forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x28B448, symSize: 0xC } + - { offset: 0x35FCC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorC06allowseF03forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x28B448, symSize: 0xC } + - { offset: 0x35FCDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorC06allowseF03forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x28B448, symSize: 0xC } + - { offset: 0x360079, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV6colors33_616753A7FF7E0F369F73FFA5ED6E61FBLL_WZ', symObjAddr: 0x0, symBinAddr: 0x28B474, symSize: 0x60 } + - { offset: 0x36009D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV6colors33_616753A7FF7E0F369F73FFA5ED6E61FBLLSDySiAA0D0VGvpZ', symObjAddr: 0x1C8, symBinAddr: 0x370588, symSize: 0x0 } + - { offset: 0x3600DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV6colors33_616753A7FF7E0F369F73FFA5ED6E61FBLL_WZ', symObjAddr: 0x0, symBinAddr: 0x28B474, symSize: 0x60 } + - { offset: 0x36033D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV06updatedE003newdE0ySayAA14ColorsResponseV0E4ItemVG_tFZTf4nd_n', symObjAddr: 0xA4, symBinAddr: 0x28B4D4, symSize: 0x120 } + - { offset: 0x3608D7, size: 0x8, addend: 0x0, symName: '_$sSo6UIFontCMa', symObjAddr: 0x1114, symBinAddr: 0x28C684, symSize: 0x44 } + - { offset: 0x3608EB, size: 0x8, addend: 0x0, symName: '_$sSnySS5IndexVGSnyxGSXsWl', symObjAddr: 0x11D8, symBinAddr: 0x28C6C8, symSize: 0x48 } + - { offset: 0x3609D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TimeFormatterV20getFormattedDuration7seconds23includesMeasurementUnitSSSd_SbtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x28B5F4, symSize: 0x240 } + - { offset: 0x360C7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TimeFormatterV019getFormattedArrivalD05afterSSSgSd_tFZTf4nd_n', symObjAddr: 0x240, symBinAddr: 0x28B834, symSize: 0x3B4 } + - { offset: 0x360E99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TimeFormatterV019getFormattedArrivalD05afterSo18NSAttributedStringCSgSd_tFZTf4nd_n', symObjAddr: 0x678, symBinAddr: 0x28BBE8, symSize: 0xA9C } + - { offset: 0x361707, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC8tagTitleSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x28C710, symSize: 0x20 } + - { offset: 0x3618DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellCfETo', symObjAddr: 0x588, symBinAddr: 0x28CC98, symSize: 0x10 } + - { offset: 0x36190D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellCMa', symObjAddr: 0x598, symBinAddr: 0x28CCA8, symSize: 0x20 } + - { offset: 0x3619BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC8tagTitleSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x28C710, symSize: 0x20 } + - { offset: 0x361A1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC8tagTitleSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x28C730, symSize: 0x14 } + - { offset: 0x361A6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC12awakeFromNibyyFTo', symObjAddr: 0x34, symBinAddr: 0x28C744, symSize: 0x3C } + - { offset: 0x361B0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC15handleSelection33_8D5042F874946FF25E371E94CE6EE3E9LL10isSelectedySb_tF', symObjAddr: 0x70, symBinAddr: 0x28C780, symSize: 0x3D4 } + - { offset: 0x361CB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x444, symBinAddr: 0x28CB54, symSize: 0x80 } + - { offset: 0x361D2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x4C4, symBinAddr: 0x28CBD4, symSize: 0x94 } + - { offset: 0x361D66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellCfD', symObjAddr: 0x558, symBinAddr: 0x28CC68, symSize: 0x30 } + - { offset: 0x362113, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVwxx', symObjAddr: 0x2C, symBinAddr: 0x28CCC8, symSize: 0x4C } + - { offset: 0x362127, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVwcp', symObjAddr: 0x78, symBinAddr: 0x28CD14, symSize: 0x84 } + - { offset: 0x36213B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVwca', symObjAddr: 0xFC, symBinAddr: 0x28CD98, symSize: 0xDC } + - { offset: 0x36214F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVwta', symObjAddr: 0x1F4, symBinAddr: 0x28CE74, symSize: 0xB0 } + - { offset: 0x362163, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVMa', symObjAddr: 0x338, symBinAddr: 0x28CF24, symSize: 0x10 } + - { offset: 0x362177, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV14ImagePlacementOMa', symObjAddr: 0x570, symBinAddr: 0x28CF34, symSize: 0x10 } + - { offset: 0x36218B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV0dE9AttributeOMa', symObjAddr: 0x6D4, symBinAddr: 0x28CF44, symSize: 0x10 } + - { offset: 0x36219F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV0dE9AttributeOSHAASQWb', symObjAddr: 0x6E4, symBinAddr: 0x28CF54, symSize: 0x4 } + - { offset: 0x3621B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV0dE9AttributeOAESQAAWl', symObjAddr: 0x6E8, symBinAddr: 0x28CF58, symSize: 0x40 } + - { offset: 0x3621C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV14ImagePlacementOSHAASQWb', symObjAddr: 0x728, symBinAddr: 0x28CF98, symSize: 0x4 } + - { offset: 0x3621DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV14ImagePlacementOAESQAAWl', symObjAddr: 0x72C, symBinAddr: 0x28CF9C, symSize: 0x40 } + - { offset: 0x363DFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperCMa', symObjAddr: 0x7480, symBinAddr: 0x2943E4, symSize: 0x20 } + - { offset: 0x363E1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP18onReachDestinationyyFTW', symObjAddr: 0x74C0, symBinAddr: 0x294424, symSize: 0x4 } + - { offset: 0x363E3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP18onReachDestinationyyFTW', symObjAddr: 0x74C0, symBinAddr: 0x294424, symSize: 0x4 } + - { offset: 0x364056, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC18onReachDestinationyyFTf4d_n', symObjAddr: 0xBE2C, symBinAddr: 0x298D90, symSize: 0x114 } + - { offset: 0x3641EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC24addNavigationSearchPanel4stop5index11closeActionyAA5PlaceCSg_SiyycSgtFyAJcfU_TA', symObjAddr: 0xBFD4, symBinAddr: 0x298EF4, symSize: 0xC } + - { offset: 0x3641FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20addGateSelectorPanel5venue5indexyAA5PlaceCSg_SitFyAIcfU_TA', symObjAddr: 0xC014, symBinAddr: 0x298F24, symSize: 0x8 } + - { offset: 0x364212, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12OptionsPanelyyFyycfU_TA', symObjAddr: 0xC01C, symBinAddr: 0x298F2C, symSize: 0x8 } + - { offset: 0x364226, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycAA24NavigationViewControllerCcfu1_yycfu2_TA', symObjAddr: 0xC068, symBinAddr: 0x298F58, symSize: 0x20 } + - { offset: 0x364258, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycAA24NavigationViewControllerCcfu3_yycfu4_TA', symObjAddr: 0xC088, symBinAddr: 0x298F78, symSize: 0x20 } + - { offset: 0x36428A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu5_yycfu6_TA', symObjAddr: 0xC0A8, symBinAddr: 0x298F98, symSize: 0x4 } + - { offset: 0x3642A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu5_yycfu6_TA', symObjAddr: 0xC0A8, symBinAddr: 0x298F98, symSize: 0x4 } + - { offset: 0x3642BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyAA08FloatingI10ControllerCcACcfu7_yAHcfu8_TA', symObjAddr: 0xC0AC, symBinAddr: 0x298F9C, symSize: 0x4 } + - { offset: 0x3642D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyAA08FloatingI10ControllerCcACcfu7_yAHcfu8_TA', symObjAddr: 0xC0AC, symBinAddr: 0x298F9C, symSize: 0x4 } + - { offset: 0x3642F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu9_yycfu10_TA', symObjAddr: 0xC0B0, symBinAddr: 0x298FA0, symSize: 0x4 } + - { offset: 0x36430E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu9_yycfu10_TA', symObjAddr: 0xC0B0, symBinAddr: 0x298FA0, symSize: 0x4 } + - { offset: 0x364328, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyAA5PlaceCSg_SitcACcfu11_yAI_Sitcfu12_TA', symObjAddr: 0xC0B4, symBinAddr: 0x298FA4, symSize: 0x4 } + - { offset: 0x364340, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyAA5PlaceCSg_SitcACcfu11_yAI_Sitcfu12_TA', symObjAddr: 0xC0B4, symBinAddr: 0x298FA4, symSize: 0x4 } + - { offset: 0x36436A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu13_yycfu14_TA', symObjAddr: 0xC0B8, symBinAddr: 0x298FA8, symSize: 0x4 } + - { offset: 0x364382, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu13_yycfu14_TA', symObjAddr: 0xC0B8, symBinAddr: 0x298FA8, symSize: 0x4 } + - { offset: 0x36439C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycAA24NavigationViewControllerCcfu15_yycfu16_TA', symObjAddr: 0xC0BC, symBinAddr: 0x298FAC, symSize: 0x20 } + - { offset: 0x3643CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySbcfU1_TA', symObjAddr: 0xC1B0, symBinAddr: 0x29901C, symSize: 0x8 } + - { offset: 0x3643E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySo7UIImageCSgcfU0_TA', symObjAddr: 0xC23C, symBinAddr: 0x299064, symSize: 0xC } + - { offset: 0x3643F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySo7UIImageCSgcfU_TA', symObjAddr: 0xC27C, symBinAddr: 0x2990A4, symSize: 0xC } + - { offset: 0x36440A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20setupSubpathsStepperyyFyycfU_TA', symObjAddr: 0xC2CC, symBinAddr: 0x2990B0, symSize: 0x20 } + - { offset: 0x36441E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20setupSubpathsStepperyyFyycfU0_TA', symObjAddr: 0xC2EC, symBinAddr: 0x2990D0, symSize: 0x20 } + - { offset: 0x364432, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC013getNavigationD0yyFy7Penguin0D0VSg_AE0D5ErrorOSgtcACcfu_yAH_AKtcfu0_TA', symObjAddr: 0xC3E4, symBinAddr: 0x2990F0, symSize: 0x4 } + - { offset: 0x36444A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC013getNavigationD0yyFy7Penguin0D0VSg_AE0D5ErrorOSgtcACcfu_yAH_AKtcfu0_TA', symObjAddr: 0xC3E4, symBinAddr: 0x2990F0, symSize: 0x4 } + - { offset: 0x364E0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC013getNavigationD0yyF', symObjAddr: 0x0, symBinAddr: 0x28CFDC, symSize: 0x638 } + - { offset: 0x3653DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP02onD9PathReady5routeyAD0D0VSg_tFTW', symObjAddr: 0x74A0, symBinAddr: 0x294404, symSize: 0x4 } + - { offset: 0x3653F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP010onFailLoadD09errorCodeyAD05ErrorO0O_tFTW', symObjAddr: 0x74A4, symBinAddr: 0x294408, symSize: 0x4 } + - { offset: 0x365412, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP17onStartNavigationyyFTW', symObjAddr: 0x74A8, symBinAddr: 0x29440C, symSize: 0x4 } + - { offset: 0x36542E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP16onStopNavigationyyFTW', symObjAddr: 0x74AC, symBinAddr: 0x294410, symSize: 0x4 } + - { offset: 0x36544A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP18onInstructionReady15instructionListySayAD09DirectionL0CG_tFTW', symObjAddr: 0x74B0, symBinAddr: 0x294414, symSize: 0x4 } + - { offset: 0x365466, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP11onErrorPath02isL0ySb_tFTW', symObjAddr: 0x74B4, symBinAddr: 0x294418, symSize: 0x4 } + - { offset: 0x365482, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP12onErrorFloor6statusySb_tFTW', symObjAddr: 0x74B8, symBinAddr: 0x29441C, symSize: 0x4 } + - { offset: 0x36549E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP12onErrorVenue6statusySb_tFTW', symObjAddr: 0x74BC, symBinAddr: 0x294420, symSize: 0x4 } + - { offset: 0x3654BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP19onReachedEndSubPath4typeyAD8NodeTypeO_tFTW', symObjAddr: 0x74C4, symBinAddr: 0x294428, symSize: 0x4 } + - { offset: 0x3654D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP16onErrorPathReady10errorEdgesySayAD0L4EdgeCGSg_tFTW', symObjAddr: 0x74C8, symBinAddr: 0x29442C, symSize: 0x4 } + - { offset: 0x3654F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP15onSubPathChange03subM0yAD010NavigationlM0C_tFTW', symObjAddr: 0x74CC, symBinAddr: 0x294430, symSize: 0x4 } + - { offset: 0x36565C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC06handleD8Response5route5errory7Penguin0D0VSg_AG0D5ErrorOSgtF', symObjAddr: 0x638, symBinAddr: 0x28D614, symSize: 0x70C } + - { offset: 0x365C4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03setD0_5errory7Penguin0D0VSg_AF0D5ErrorOSgtF', symObjAddr: 0xD44, symBinAddr: 0x28DD20, symSize: 0x32C } + - { offset: 0x365F76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20setupSubpathsStepperyyF', symObjAddr: 0x1070, symBinAddr: 0x28E04C, symSize: 0x500 } + - { offset: 0x3660FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC15drawNextSubpathyyF', symObjAddr: 0x15C8, symBinAddr: 0x28E54C, symSize: 0x59C } + - { offset: 0x36677D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC19drawPreviousSubpathyyF', symObjAddr: 0x1B64, symBinAddr: 0x28EAE8, symSize: 0x488 } + - { offset: 0x366C80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC25showUserLocationIndicator2at8selectedySo22CLLocationCoordinate2DVSg_SbtF', symObjAddr: 0x200C, symBinAddr: 0x28EF70, symSize: 0x130 } + - { offset: 0x366E46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC13drawFirstNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath16startPointMarker11coordinatesy7Penguin7SubPathCSg_So7UIImageCSgSaySo22CLLocationCoordinate2DVGtF', symObjAddr: 0x213C, symBinAddr: 0x28F0A0, symSize: 0x788 } + - { offset: 0x36772B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgF', symObjAddr: 0x28C4, symBinAddr: 0x28F828, symSize: 0x21A0 } + - { offset: 0x3694C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySo7UIImageCSgcfU_', symObjAddr: 0x4A64, symBinAddr: 0x2919C8, symSize: 0xA0 } + - { offset: 0x3694F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySo7UIImageCSgcfU0_', symObjAddr: 0x4B04, symBinAddr: 0x291A68, symSize: 0x254 } + - { offset: 0x36976E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySbcfU1_', symObjAddr: 0x4D58, symBinAddr: 0x291CBC, symSize: 0xB8 } + - { offset: 0x3698C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC32updateUserLocationIndicatorColoryyF', symObjAddr: 0x4E10, symBinAddr: 0x291D74, symSize: 0x528 } + - { offset: 0x369C67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tF', symObjAddr: 0x5338, symBinAddr: 0x29229C, symSize: 0x588 } + - { offset: 0x36A523, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12DetailsPanelyyF', symObjAddr: 0x58C0, symBinAddr: 0x292824, symSize: 0x2EC } + - { offset: 0x36A8B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12OptionsPanelyyF', symObjAddr: 0x5BAC, symBinAddr: 0x292B10, symSize: 0x34C } + - { offset: 0x36AC50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12OptionsPanelyyFyycfU_', symObjAddr: 0x5EF8, symBinAddr: 0x292E5C, symSize: 0xE4 } + - { offset: 0x36AC99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC24addNavigationSearchPanel4stop5index11closeActionyAA5PlaceCSg_SiyycSgtFyAJcfU_', symObjAddr: 0x5FDC, symBinAddr: 0x292F40, symSize: 0x78 } + - { offset: 0x36AD32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20addGateSelectorPanel5venue5indexyAA5PlaceCSg_SitF', symObjAddr: 0x6054, symBinAddr: 0x292FB8, symSize: 0x390 } + - { offset: 0x36B10B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20addGateSelectorPanel5venue5indexyAA5PlaceCSg_SitFyAIcfU_', symObjAddr: 0x63E4, symBinAddr: 0x293348, symSize: 0x21C } + - { offset: 0x36B28A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20floatingPanelDidMoveyyAA08FloatingH10ControllerCF', symObjAddr: 0x6600, symBinAddr: 0x293564, symSize: 0x24C } + - { offset: 0x36B3F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC10didTapStop_2atyAA5PlaceCSg_SitF', symObjAddr: 0x684C, symBinAddr: 0x2937B0, symSize: 0x118 } + - { offset: 0x36B5E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC21didSelectSearchResult_9replacing2atyAA5PlaceCSg_AISitF', symObjAddr: 0x6964, symBinAddr: 0x2938C8, symSize: 0xAE8 } + - { offset: 0x36BD3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperCfD', symObjAddr: 0x744C, symBinAddr: 0x2943B0, symSize: 0x34 } + - { offset: 0x36BD8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03getD11Coordinates4fromSaySo22CLLocationCoordinate2DVG7Penguin7SubPathCSg_tFTf4nd_n', symObjAddr: 0x74D0, symBinAddr: 0x294434, symSize: 0xE00 } + - { offset: 0x36D0B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC8getImage3for2onSo7UIImageCSg7Penguin11SubPathNodeCSg_AJ0mN0CSgtFTf4nnd_n', symObjAddr: 0x82D0, symBinAddr: 0x295234, symSize: 0x175C } + - { offset: 0x36D676, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC15detectFirstNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath10completiony7Penguin7SubPathCSg_ySo7UIImageCSgctF03$s8ab4UI19def25C11drawSubpathyy7Penguin7st8CSgFySo7U7CSgcfU_ACSgXwz_XxAKSaySo22CLLocationCoordinate2DVGz_XxTf1ncn_nTf4nnggg_n', symObjAddr: 0x9A2C, symBinAddr: 0x296990, symSize: 0x728 } + - { offset: 0x36DB42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC12drawLastNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath14endPointMarker0Q5Title11coordinatesy7Penguin7SubPathCSg_So7UIImageCSgSSSaySo22CLLocationCoordinate2DVGtFTf4nndnn_n', symObjAddr: 0xA154, symBinAddr: 0x2970B8, symSize: 0xC88 } + - { offset: 0x36E5F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC14detectLastNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath11coordinates10completiony7Penguin7SubPathCSg_SaySo22CLLocationCoordinate2DVGySo7UIImageCSgctF03$s8ab4UI19def25C11drawSubpathyy7Penguin7tu8CSgFySo7X8CSgcfU0_ACSgXwz_XxAlOz_XxTf1nncn_nTf4nnnggg_n', symObjAddr: 0xADDC, symBinAddr: 0x297D40, symSize: 0xBC4 } + - { offset: 0x36F230, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC24addNavigationSearchPanel4stop5index11closeActionyAA5PlaceCSg_SiyycSgtFTf4nndn_n', symObjAddr: 0xB9A0, symBinAddr: 0x298904, symSize: 0x48C } + - { offset: 0x36FA46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV8parseUseyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x299104, symSize: 0x200 } + - { offset: 0x36FAAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV8parseUseyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x299104, symSize: 0x200 } + - { offset: 0x36FF2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC07contentG0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x299304, symSize: 0x10 } + - { offset: 0x3700EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewCfETo', symObjAddr: 0x72C, symBinAddr: 0x299A30, symSize: 0x38 } + - { offset: 0x37011A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewCMa', symObjAddr: 0x764, symBinAddr: 0x299A68, symSize: 0x20 } + - { offset: 0x37022B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC07contentG0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x299304, symSize: 0x10 } + - { offset: 0x370243, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC07contentG0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x299304, symSize: 0x10 } + - { offset: 0x370289, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC07contentG0So6UIViewCSgvsTo', symObjAddr: 0x10, symBinAddr: 0x299314, symSize: 0x34 } + - { offset: 0x3702D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC18selectedVenueTitleSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x299348, symSize: 0x10 } + - { offset: 0x3702F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC18selectedVenueTitleSo7UILabelCSgvgTo', symObjAddr: 0x44, symBinAddr: 0x299348, symSize: 0x10 } + - { offset: 0x370330, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC18selectedVenueTitleSo7UILabelCSgvsTo', symObjAddr: 0x54, symBinAddr: 0x299358, symSize: 0x34 } + - { offset: 0x370411, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x88, symBinAddr: 0x29938C, symSize: 0x31C } + - { offset: 0x37050C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x3A4, symBinAddr: 0x2996A8, symSize: 0x20 } + - { offset: 0x370520, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3C4, symBinAddr: 0x2996C8, symSize: 0x310 } + - { offset: 0x37062C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x6D4, symBinAddr: 0x2999D8, symSize: 0x28 } + - { offset: 0x370640, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewCfD', symObjAddr: 0x6FC, symBinAddr: 0x299A00, symSize: 0x30 } + - { offset: 0x370A10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14resourceBundle33_8254639E4C1A24707C71223CBC54B699LLSo8NSBundleCvp', symObjAddr: 0xDC0, symBinAddr: 0x3707D8, symSize: 0x0 } + - { offset: 0x370A2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV5arrowACvpZ', symObjAddr: 0x8960, symBinAddr: 0x385068, symSize: 0x0 } + - { offset: 0x370A50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7bicycleACvpZ', symObjAddr: 0x8978, symBinAddr: 0x385080, symSize: 0x0 } + - { offset: 0x370A6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10campusGateACvpZ', symObjAddr: 0x8990, symBinAddr: 0x385098, symSize: 0x0 } + - { offset: 0x370A84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV3carACvpZ', symObjAddr: 0x89A8, symBinAddr: 0x3850B0, symSize: 0x0 } + - { offset: 0x370A9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV5clockACvpZ', symObjAddr: 0x89C0, symBinAddr: 0x3850C8, symSize: 0x0 } + - { offset: 0x370AB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7compassACvpZ', symObjAddr: 0x89D8, symBinAddr: 0x3850E0, symSize: 0x0 } + - { offset: 0x370AD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4gateACvpZ', symObjAddr: 0x89F0, symBinAddr: 0x3850F8, symSize: 0x0 } + - { offset: 0x370AEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12groupedStopsACvpZ', symObjAddr: 0x8A08, symBinAddr: 0x385110, symSize: 0x0 } + - { offset: 0x370B06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV16mapDownEscalatorACvpZ', symObjAddr: 0x8A20, symBinAddr: 0x385128, symSize: 0x0 } + - { offset: 0x370B20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV11mapElevatorACvpZ', symObjAddr: 0x8A38, symBinAddr: 0x385140, symSize: 0x0 } + - { offset: 0x370B3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12mapEscalatorACvpZ', symObjAddr: 0x8A50, symBinAddr: 0x385158, symSize: 0x0 } + - { offset: 0x370B54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7mapGateACvpZ', symObjAddr: 0x8A68, symBinAddr: 0x385170, symSize: 0x0 } + - { offset: 0x370B6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7mapRampACvpZ', symObjAddr: 0x8A80, symBinAddr: 0x385188, symSize: 0x0 } + - { offset: 0x370B88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9mapStairsACvpZ', symObjAddr: 0x8A98, symBinAddr: 0x3851A0, symSize: 0x0 } + - { offset: 0x370BA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV14mapUpEscalatorACvpZ', symObjAddr: 0x8AB0, symBinAddr: 0x3851B8, symSize: 0x0 } + - { offset: 0x370BBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV8sharePDFACvpZ', symObjAddr: 0x8AC8, symBinAddr: 0x3851D0, symSize: 0x0 } + - { offset: 0x370BD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9shareTextACvpZ', symObjAddr: 0x8AE0, symBinAddr: 0x3851E8, symSize: 0x0 } + - { offset: 0x370BF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7transitACvpZ', symObjAddr: 0x8AF8, symBinAddr: 0x385200, symSize: 0x0 } + - { offset: 0x370C0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4walkACvpZ', symObjAddr: 0x8B10, symBinAddr: 0x385218, symSize: 0x0 } + - { offset: 0x370C24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4waveACvpZ', symObjAddr: 0x8B28, symBinAddr: 0x385230, symSize: 0x0 } + - { offset: 0x370C3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12buildingFillACvpZ', symObjAddr: 0x8B40, symBinAddr: 0x385248, symSize: 0x0 } + - { offset: 0x370C5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV14currentAlignedACvpZ', symObjAddr: 0x8B58, symBinAddr: 0x385260, symSize: 0x0 } + - { offset: 0x370C75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10currentlocACvpZ', symObjAddr: 0x8B70, symBinAddr: 0x385278, symSize: 0x0 } + - { offset: 0x370C90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV16currentlocFilledACvpZ', symObjAddr: 0x8B88, symBinAddr: 0x385290, symSize: 0x0 } + - { offset: 0x370CAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV15exclamationMarkACvpZ', symObjAddr: 0x8BA0, symBinAddr: 0x3852A8, symSize: 0x0 } + - { offset: 0x370CC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV19feedbackDestinationACvpZ', symObjAddr: 0x8BB8, symBinAddr: 0x3852C0, symSize: 0x0 } + - { offset: 0x370CE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV11fitToCampusACvpZ', symObjAddr: 0x8BD0, symBinAddr: 0x3852D8, symSize: 0x0 } + - { offset: 0x370CFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV17fitToCampusFilledACvpZ', symObjAddr: 0x8BE8, symBinAddr: 0x3852F0, symSize: 0x0 } + - { offset: 0x370D17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10myLocationACvpZ', symObjAddr: 0x8C00, symBinAddr: 0x385308, symSize: 0x0 } + - { offset: 0x370D32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV13pinCircleFillACvpZ', symObjAddr: 0x8C18, symBinAddr: 0x385320, symSize: 0x0 } + - { offset: 0x370D4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV20selectedUserLocationACvpZ', symObjAddr: 0x8C30, symBinAddr: 0x385338, symSize: 0x0 } + - { offset: 0x370D68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV6updownACvpZ', symObjAddr: 0x8C48, symBinAddr: 0x385350, symSize: 0x0 } + - { offset: 0x370D83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9usingGateACvpZ', symObjAddr: 0x8C60, symBinAddr: 0x385368, symSize: 0x0 } + - { offset: 0x370D91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19ResourceBundleClass33_8254639E4C1A24707C71223CBC54B699LLCMa', symObjAddr: 0x10, symBinAddr: 0x299A88, symSize: 0x20 } + - { offset: 0x370DA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14resourceBundle33_8254639E4C1A24707C71223CBC54B699LL_WZ', symObjAddr: 0x30, symBinAddr: 0x299AA8, symSize: 0x54 } + - { offset: 0x370DE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV5arrow_WZ', symObjAddr: 0x84, symBinAddr: 0x299AFC, symSize: 0x60 } + - { offset: 0x370E0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7bicycle_WZ', symObjAddr: 0xE4, symBinAddr: 0x299B5C, symSize: 0x64 } + - { offset: 0x370E36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10campusGate_WZ', symObjAddr: 0x148, symBinAddr: 0x299BC0, symSize: 0x68 } + - { offset: 0x370E5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV3car_WZ', symObjAddr: 0x1B0, symBinAddr: 0x299C28, symSize: 0x5C } + - { offset: 0x370E86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV5clock_WZ', symObjAddr: 0x20C, symBinAddr: 0x299C84, symSize: 0x60 } + - { offset: 0x370EAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7compass_WZ', symObjAddr: 0x26C, symBinAddr: 0x299CE4, symSize: 0x64 } + - { offset: 0x370ED6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4gate_WZ', symObjAddr: 0x2D0, symBinAddr: 0x299D48, symSize: 0x5C } + - { offset: 0x370EFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12groupedStops_WZ', symObjAddr: 0x32C, symBinAddr: 0x299DA4, symSize: 0x6C } + - { offset: 0x370F26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV16mapDownEscalator_WZ', symObjAddr: 0x398, symBinAddr: 0x299E10, symSize: 0x68 } + - { offset: 0x370F63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV11mapElevator_WZ', symObjAddr: 0x400, symBinAddr: 0x299E78, symSize: 0x6C } + - { offset: 0x370F8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12mapEscalator_WZ', symObjAddr: 0x46C, symBinAddr: 0x299EE4, symSize: 0x6C } + - { offset: 0x370FB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7mapGate_WZ', symObjAddr: 0x4D8, symBinAddr: 0x299F50, symSize: 0x64 } + - { offset: 0x370FDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7mapRamp_WZ', symObjAddr: 0x53C, symBinAddr: 0x299FB4, symSize: 0x64 } + - { offset: 0x371003, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9mapStairs_WZ', symObjAddr: 0x5A0, symBinAddr: 0x29A018, symSize: 0x68 } + - { offset: 0x37102B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV14mapUpEscalator_WZ', symObjAddr: 0x608, symBinAddr: 0x29A080, symSize: 0x70 } + - { offset: 0x371053, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV8sharePDF_WZ', symObjAddr: 0x678, symBinAddr: 0x29A0F0, symSize: 0x64 } + - { offset: 0x37107B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9shareText_WZ', symObjAddr: 0x6DC, symBinAddr: 0x29A154, symSize: 0x68 } + - { offset: 0x3710A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7transit_WZ', symObjAddr: 0x744, symBinAddr: 0x29A1BC, symSize: 0x64 } + - { offset: 0x3710CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4walk_WZ', symObjAddr: 0x7A8, symBinAddr: 0x29A220, symSize: 0x5C } + - { offset: 0x3710F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4wave_WZ', symObjAddr: 0x804, symBinAddr: 0x29A27C, symSize: 0x5C } + - { offset: 0x37111B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12buildingFill_WZ', symObjAddr: 0x860, symBinAddr: 0x29A2D8, symSize: 0x70 } + - { offset: 0x371145, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV14currentAligned_WZ', symObjAddr: 0x8D0, symBinAddr: 0x29A348, symSize: 0x70 } + - { offset: 0x37116F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10currentloc_WZ', symObjAddr: 0x940, symBinAddr: 0x29A3B8, symSize: 0x68 } + - { offset: 0x371199, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV16currentlocFilled_WZ', symObjAddr: 0x9A8, symBinAddr: 0x29A420, symSize: 0x68 } + - { offset: 0x3711D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV15exclamationMark_WZ', symObjAddr: 0xA10, symBinAddr: 0x29A488, symSize: 0x68 } + - { offset: 0x371219, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV19feedbackDestination_WZ', symObjAddr: 0xA78, symBinAddr: 0x29A4F0, symSize: 0x68 } + - { offset: 0x371259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV11fitToCampus_WZ', symObjAddr: 0xAE0, symBinAddr: 0x29A558, symSize: 0x70 } + - { offset: 0x371283, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV17fitToCampusFilled_WZ', symObjAddr: 0xB50, symBinAddr: 0x29A5C8, symSize: 0x68 } + - { offset: 0x3712C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10myLocation_WZ', symObjAddr: 0xBB8, symBinAddr: 0x29A630, symSize: 0x68 } + - { offset: 0x3712ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV13pinCircleFill_WZ', symObjAddr: 0xC20, symBinAddr: 0x29A698, symSize: 0x70 } + - { offset: 0x371317, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV20selectedUserLocation_WZ', symObjAddr: 0xC90, symBinAddr: 0x29A708, symSize: 0x68 } + - { offset: 0x371357, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV6updown_WZ', symObjAddr: 0xCF8, symBinAddr: 0x29A770, symSize: 0x60 } + - { offset: 0x371381, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9usingGate_WZ', symObjAddr: 0xD58, symBinAddr: 0x29A7D0, symSize: 0x68 } +... diff --git a/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/Relocations/x86_64/PenNavUI.yml b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/Relocations/x86_64/PenNavUI.yml new file mode 100644 index 00000000..9ecee806 --- /dev/null +++ b/ios/PenNavUI.xcframework/ios-arm64_x86_64-simulator/dSYMs/PenNavUI.framework.dSYM/Contents/Resources/Relocations/x86_64/PenNavUI.yml @@ -0,0 +1,9715 @@ +--- +triple: 'x86_64-apple-darwin' +binary-path: '/Users/fawzialrifai/Library/Developer/Xcode/DerivedData/PenNavDemo-biuexotajfaxfmfipsnstjaczmxm/Build/Intermediates.noindex/ArchiveIntermediates/PenNavDemo/InstallationBuildProductsLocation/Library/Frameworks/PenNavUI.framework/PenNavUI' +relocations: + - { offset: 0x88267, size: 0x8, addend: 0x0, symName: _PenNavUIVersionString, symObjAddr: 0x0, symBinAddr: 0x2E0650, symSize: 0x0 } + - { offset: 0x8829C, size: 0x8, addend: 0x0, symName: _PenNavUIVersionNumber, symObjAddr: 0x30, symBinAddr: 0x2E0680, symSize: 0x0 } + - { offset: 0x882F5, size: 0x8, addend: 0x0, symName: ___swift_memcpy4_4, symObjAddr: 0x0, symBinAddr: 0x1DF0, symSize: 0x10 } + - { offset: 0x88309, size: 0x8, addend: 0x0, symName: ___swift_noop_void_return, symObjAddr: 0x10, symBinAddr: 0x1E00, symSize: 0x10 } + - { offset: 0x8831D, size: 0x8, addend: 0x0, symName: '_$sSo16os_unfair_lock_sVwet', symObjAddr: 0x20, symBinAddr: 0x1E10, symSize: 0x20 } + - { offset: 0x88331, size: 0x8, addend: 0x0, symName: '_$sSo16os_unfair_lock_sVwst', symObjAddr: 0x40, symBinAddr: 0x1E30, symSize: 0x20 } + - { offset: 0x88345, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_8, symObjAddr: 0x80, symBinAddr: 0x1E70, symSize: 0x10 } + - { offset: 0x88359, size: 0x8, addend: 0x0, symName: ___swift_memcpy1_1, symObjAddr: 0x160, symBinAddr: 0x1F50, symSize: 0x10 } + - { offset: 0x8836D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwet', symObjAddr: 0x170, symBinAddr: 0x1F60, symSize: 0x80 } + - { offset: 0x88381, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwst', symObjAddr: 0x1F0, symBinAddr: 0x1FE0, symSize: 0xD0 } + - { offset: 0x88395, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwug', symObjAddr: 0x2C0, symBinAddr: 0x20B0, symSize: 0x10 } + - { offset: 0x883A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwup', symObjAddr: 0x2D0, symBinAddr: 0x20C0, symSize: 0x10 } + - { offset: 0x883BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOwui', symObjAddr: 0x2E0, symBinAddr: 0x20D0, symSize: 0x10 } + - { offset: 0x883D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOMa', symObjAddr: 0x2F0, symBinAddr: 0x20E0, symSize: 0x10 } + - { offset: 0x883E5, size: 0x8, addend: 0x0, symName: ___swift_memcpy32_8, symObjAddr: 0x3D0, symBinAddr: 0x21C0, symSize: 0x20 } + - { offset: 0x88575, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSHAASQWb', symObjAddr: 0xB00, symBinAddr: 0x2880, symSize: 0x10 } + - { offset: 0x88589, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOACSQAAWl', symObjAddr: 0xB10, symBinAddr: 0x2890, symSize: 0x30 } + - { offset: 0x8859D, size: 0x8, addend: 0x0, symName: '_$sSo18CALayerCornerCurveas20_SwiftNewtypeWrapperSCSYWb', symObjAddr: 0xDF0, symBinAddr: 0x2AD0, symSize: 0x20 } + - { offset: 0x885B1, size: 0x8, addend: 0x0, symName: '_$sSo18CALayerCornerCurveas20_SwiftNewtypeWrapperSCs35_HasCustomAnyHashableRepresentationPWb', symObjAddr: 0xE10, symBinAddr: 0x2AF0, symSize: 0x20 } + - { offset: 0x885F1, size: 0x8, addend: 0x0, symName: '_$sSo18CALayerCornerCurveaSHSCSQWb', symObjAddr: 0x13E0, symBinAddr: 0x30C0, symSize: 0x20 } + - { offset: 0x88605, size: 0x8, addend: 0x0, symName: '_$sSo13CGPathElementVwet', symObjAddr: 0x1400, symBinAddr: 0x30E0, symSize: 0x30 } + - { offset: 0x88619, size: 0x8, addend: 0x0, symName: '_$sSo13CGPathElementVwst', symObjAddr: 0x1430, symBinAddr: 0x3110, symSize: 0x40 } + - { offset: 0x8862D, size: 0x8, addend: 0x0, symName: ___swift_memcpy48_8, symObjAddr: 0x1650, symBinAddr: 0x3330, symSize: 0x20 } + - { offset: 0x88641, size: 0x8, addend: 0x0, symName: '_$sSo17CGAffineTransformVwet', symObjAddr: 0x1670, symBinAddr: 0x3350, symSize: 0x20 } + - { offset: 0x88655, size: 0x8, addend: 0x0, symName: '_$sSo17CGAffineTransformVwst', symObjAddr: 0x1690, symBinAddr: 0x3370, symSize: 0x40 } + - { offset: 0x88669, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefaSHSCSQWb', symObjAddr: 0x16F0, symBinAddr: 0x33D0, symSize: 0x20 } + - { offset: 0x8867D, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefaSHSCSQWb', symObjAddr: 0x1710, symBinAddr: 0x33F0, symSize: 0x20 } + - { offset: 0x88691, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefaSHSCSQWb', symObjAddr: 0x1730, symBinAddr: 0x3410, symSize: 0x20 } + - { offset: 0x886A5, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefaSHSCSQWb', symObjAddr: 0x1750, symBinAddr: 0x3430, symSize: 0x20 } + - { offset: 0x886B9, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyas20_SwiftNewtypeWrapperSCSYWb', symObjAddr: 0x1770, symBinAddr: 0x3450, symSize: 0x20 } + - { offset: 0x886CD, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyas20_SwiftNewtypeWrapperSCs35_HasCustomAnyHashableRepresentationPWb', symObjAddr: 0x1790, symBinAddr: 0x3470, symSize: 0x20 } + - { offset: 0x886E1, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyas20_SwiftNewtypeWrapperSCSYWb', symObjAddr: 0x17B0, symBinAddr: 0x3490, symSize: 0x20 } + - { offset: 0x886F5, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyas20_SwiftNewtypeWrapperSCs35_HasCustomAnyHashableRepresentationPWb', symObjAddr: 0x17D0, symBinAddr: 0x34B0, symSize: 0x20 } + - { offset: 0x88709, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas20_SwiftNewtypeWrapperSCSYWb', symObjAddr: 0x17F0, symBinAddr: 0x34D0, symSize: 0x20 } + - { offset: 0x8871D, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas20_SwiftNewtypeWrapperSCs35_HasCustomAnyHashableRepresentationPWb', symObjAddr: 0x1810, symBinAddr: 0x34F0, symSize: 0x20 } + - { offset: 0x88731, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSHSCSQWb', symObjAddr: 0x1830, symBinAddr: 0x3510, symSize: 0x20 } + - { offset: 0x88745, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x1850, symBinAddr: 0x3530, symSize: 0x20 } + - { offset: 0x88759, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaSHSCSQWb', symObjAddr: 0x1870, symBinAddr: 0x3550, symSize: 0x20 } + - { offset: 0x8876D, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x1890, symBinAddr: 0x3570, symSize: 0x20 } + - { offset: 0x88781, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x18B0, symBinAddr: 0x3590, symSize: 0x20 } + - { offset: 0x88795, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x18D0, symBinAddr: 0x35B0, symSize: 0x20 } + - { offset: 0x887A9, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefa14CoreFoundation9_CFObjectSCSHWb', symObjAddr: 0x18F0, symBinAddr: 0x35D0, symSize: 0x20 } + - { offset: 0x887BD, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyaSHSCSQWb', symObjAddr: 0x1910, symBinAddr: 0x35F0, symSize: 0x20 } + - { offset: 0x887D1, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyaSHSCSQWb', symObjAddr: 0x1930, symBinAddr: 0x3610, symSize: 0x20 } + - { offset: 0x88886, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateO5imageSo7UIImageCvg', symObjAddr: 0x480, symBinAddr: 0x2270, symSize: 0x1D0 } + - { offset: 0x889E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x6C0, symBinAddr: 0x24B0, symSize: 0x40 } + - { offset: 0x88A77, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas21_ObjectiveCBridgeableSCsACP09_bridgeToC1C01_C5CTypeQzyFTW', symObjAddr: 0x710, symBinAddr: 0x24F0, symSize: 0x10 } + - { offset: 0x88AF4, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas21_ObjectiveCBridgeableSCsACP016_forceBridgeFromC1C_6resulty01_C5CTypeQz_xSgztFZTW', symObjAddr: 0x720, symBinAddr: 0x2500, symSize: 0x40 } + - { offset: 0x88B5D, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas21_ObjectiveCBridgeableSCsACP024_conditionallyBridgeFromC1C_6resultSb01_C5CTypeQz_xSgztFZTW', symObjAddr: 0x760, symBinAddr: 0x2540, symSize: 0x40 } + - { offset: 0x88BB7, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas21_ObjectiveCBridgeableSCsACP026_unconditionallyBridgeFromC1Cyx01_C5CTypeQzSgFZTW', symObjAddr: 0x7A0, symBinAddr: 0x2580, symSize: 0x20 } + - { offset: 0x88C18, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityas35_HasCustomAnyHashableRepresentationSCsACP03_todeF0s0eF0VSgyFTW', symObjAddr: 0xD00, symBinAddr: 0x29E0, symSize: 0x80 } + - { offset: 0x88C34, size: 0x8, addend: 0x0, symName: '_$sSo18CALayerCornerCurveas35_HasCustomAnyHashableRepresentationSCsACP03_toefG0s0fG0VSgyFTW', symObjAddr: 0xD80, symBinAddr: 0x2A60, symSize: 0x70 } + - { offset: 0x88C50, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyas35_HasCustomAnyHashableRepresentationSCsACP03_toghI0s0hI0VSgyFTW', symObjAddr: 0xE60, symBinAddr: 0x2B40, symSize: 0x70 } + - { offset: 0x88C6C, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyas35_HasCustomAnyHashableRepresentationSCsACP03_toefG0s0fG0VSgyFTW', symObjAddr: 0xF10, symBinAddr: 0x2BF0, symSize: 0x70 } + - { offset: 0x88C97, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSHSCSH9hashValueSivgTW', symObjAddr: 0x1220, symBinAddr: 0x2F00, symSize: 0x10 } + - { offset: 0x88CEC, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1230, symBinAddr: 0x2F10, symSize: 0x30 } + - { offset: 0x88D41, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSHSCSH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1260, symBinAddr: 0x2F40, symSize: 0x20 } + - { offset: 0x88D96, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0x1350, symBinAddr: 0x3030, symSize: 0x20 } + - { offset: 0x88E10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x650, symBinAddr: 0x2440, symSize: 0x10 } + - { offset: 0x88E84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSHAASH9hashValueSivgTW', symObjAddr: 0x660, symBinAddr: 0x2450, symSize: 0x40 } + - { offset: 0x88F4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14MapCameraStateOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x6A0, symBinAddr: 0x2490, symSize: 0x20 } + - { offset: 0x89042, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0xA00, symBinAddr: 0x2780, symSize: 0x40 } + - { offset: 0x8905E, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0xA40, symBinAddr: 0x27C0, symSize: 0x40 } + - { offset: 0x8907A, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0xA80, symBinAddr: 0x2800, symSize: 0x40 } + - { offset: 0x89096, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0xAC0, symBinAddr: 0x2840, symSize: 0x40 } + - { offset: 0x890B2, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaSHSCSH9hashValueSivgTW', symObjAddr: 0xBB0, symBinAddr: 0x28C0, symSize: 0x30 } + - { offset: 0x890CE, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xBE0, symBinAddr: 0x28F0, symSize: 0x40 } + - { offset: 0x890EA, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaSQSCSQ2eeoiySbx_xtFZTW', symObjAddr: 0xCB0, symBinAddr: 0x2990, symSize: 0x40 } + - { offset: 0x89106, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefaSHSCSH9hashValueSivgTW', symObjAddr: 0xF80, symBinAddr: 0x2C60, symSize: 0x30 } + - { offset: 0x89122, size: 0x8, addend: 0x0, symName: '_$sSo10CGColorRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xFB0, symBinAddr: 0x2C90, symSize: 0x40 } + - { offset: 0x8913E, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefaSHSCSH9hashValueSivgTW', symObjAddr: 0x1010, symBinAddr: 0x2CF0, symSize: 0x30 } + - { offset: 0x8915A, size: 0x8, addend: 0x0, symName: '_$sSo13CGGradientRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1040, symBinAddr: 0x2D20, symSize: 0x40 } + - { offset: 0x89176, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefaSHSCSH9hashValueSivgTW', symObjAddr: 0x10A0, symBinAddr: 0x2D80, symSize: 0x30 } + - { offset: 0x89192, size: 0x8, addend: 0x0, symName: '_$sSo10CGImageRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x10D0, symBinAddr: 0x2DB0, symSize: 0x40 } + - { offset: 0x891AE, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefaSHSCSH9hashValueSivgTW', symObjAddr: 0x1130, symBinAddr: 0x2E10, symSize: 0x30 } + - { offset: 0x891CA, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefaSHSCSH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1160, symBinAddr: 0x2E40, symSize: 0x40 } + - { offset: 0x89270, size: 0x8, addend: 0x0, symName: '_$sSo24UIGestureRecognizerStateVSYSCSY8rawValuexSg03RawE0Qz_tcfCTW', symObjAddr: 0xC40, symBinAddr: 0x2950, symSize: 0x10 } + - { offset: 0x8928A, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaSYSCSY8rawValue03RawD0QzvgTW', symObjAddr: 0xCF0, symBinAddr: 0x29D0, symSize: 0x10 } + - { offset: 0x8996C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCfETo', symObjAddr: 0xC80, symBinAddr: 0x4430, symSize: 0x50 } + - { offset: 0x8999B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCMU', symObjAddr: 0xCD0, symBinAddr: 0x4480, symSize: 0x10 } + - { offset: 0x899AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCMa', symObjAddr: 0xCE0, symBinAddr: 0x4490, symSize: 0x30 } + - { offset: 0x899C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCMr', symObjAddr: 0xD10, symBinAddr: 0x44C0, symSize: 0x70 } + - { offset: 0x899D7, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgMa', symObjAddr: 0xD80, symBinAddr: 0x4530, symSize: 0x50 } + - { offset: 0x899EB, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorCMa', symObjAddr: 0xDD0, symBinAddr: 0x4580, symSize: 0x40 } + - { offset: 0x899FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC8setImage3fory7Penguin11POICategoryV_tFySo7UIImageCSgcfU_TA', symObjAddr: 0xEA0, symBinAddr: 0x4650, symSize: 0x40 } + - { offset: 0x89A13, size: 0x8, addend: 0x0, symName: ___swift_instantiateConcreteTypeFromMangledName, symObjAddr: 0xEE0, symBinAddr: 0x4690, symSize: 0x40 } + - { offset: 0x89A27, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgWOc', symObjAddr: 0xF20, symBinAddr: 0x46D0, symSize: 0x40 } + - { offset: 0x89A3B, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgWOh', symObjAddr: 0xF60, symBinAddr: 0x4710, symSize: 0x30 } + - { offset: 0x89A4F, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgWOd', symObjAddr: 0xF90, symBinAddr: 0x4740, symSize: 0x40 } + - { offset: 0x89A63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvWyycfU0_TA', symObjAddr: 0xFD0, symBinAddr: 0x4780, symSize: 0x20 } + - { offset: 0x89A77, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xFF0, symBinAddr: 0x47A0, symSize: 0x20 } + - { offset: 0x89A8B, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1010, symBinAddr: 0x47C0, symSize: 0x10 } + - { offset: 0x89A9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvWyycfU_TA', symObjAddr: 0x1020, symBinAddr: 0x47D0, symSize: 0x20 } + - { offset: 0x89BEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x37B0, symSize: 0x20 } + - { offset: 0x89C4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x37D0, symSize: 0x20 } + - { offset: 0x89C9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC05imageF0So07UIImageF0CSgvgTo', symObjAddr: 0x40, symBinAddr: 0x37F0, symSize: 0x20 } + - { offset: 0x89CF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC05imageF0So07UIImageF0CSgvsTo', symObjAddr: 0x60, symBinAddr: 0x3810, symSize: 0x20 } + - { offset: 0x89D4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC014imageContainerF0So6UIViewCSgvgTo', symObjAddr: 0x80, symBinAddr: 0x3830, symSize: 0x20 } + - { offset: 0x89DA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC014imageContainerF0So6UIViewCSgvsTo', symObjAddr: 0xA0, symBinAddr: 0x3850, symSize: 0x20 } + - { offset: 0x89E0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvgTo', symObjAddr: 0xC0, symBinAddr: 0x3870, symSize: 0x40 } + - { offset: 0x89E64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvsTo', symObjAddr: 0x100, symBinAddr: 0x38B0, symSize: 0x60 } + - { offset: 0x89E9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC13isHighlightedSbvW', symObjAddr: 0x160, symBinAddr: 0x3910, symSize: 0x150 } + - { offset: 0x89EFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC12awakeFromNibyyF', symObjAddr: 0x390, symBinAddr: 0x3B40, symSize: 0x120 } + - { offset: 0x89F8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC12awakeFromNibyyFTo', symObjAddr: 0x4B0, symBinAddr: 0x3C60, symSize: 0x30 } + - { offset: 0x89FDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC7setData3fory7Penguin11POICategoryV_tF', symObjAddr: 0x4E0, symBinAddr: 0x3C90, symSize: 0x120 } + - { offset: 0x8A057, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC8setImage3fory7Penguin11POICategoryV_tF', symObjAddr: 0x600, symBinAddr: 0x3DB0, symSize: 0x220 } + - { offset: 0x8A0F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC8setImage3fory7Penguin11POICategoryV_tFySo7UIImageCSgcfU_', symObjAddr: 0x820, symBinAddr: 0x3FD0, symSize: 0x160 } + - { offset: 0x8A193, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC15prepareForReuseyyF', symObjAddr: 0x980, symBinAddr: 0x4130, symSize: 0xD0 } + - { offset: 0x8A1F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC15prepareForReuseyyFTo', symObjAddr: 0xA50, symBinAddr: 0x4200, symSize: 0x30 } + - { offset: 0x8A251, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xA80, symBinAddr: 0x4230, symSize: 0xD0 } + - { offset: 0x8A2AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB50, symBinAddr: 0x4300, symSize: 0xD0 } + - { offset: 0x8A2DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xC20, symBinAddr: 0x43D0, symSize: 0x30 } + - { offset: 0x8A2F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26CategoryCollectionViewCellCfD', symObjAddr: 0xC50, symBinAddr: 0x4400, symSize: 0x30 } + - { offset: 0x8A692, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCMi', symObjAddr: 0x0, symBinAddr: 0x4810, symSize: 0x10 } + - { offset: 0x8A6AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCMi', symObjAddr: 0x0, symBinAddr: 0x4810, symSize: 0x10 } + - { offset: 0x8A6BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCMr', symObjAddr: 0x10, symBinAddr: 0x4820, symSize: 0x80 } + - { offset: 0x8A794, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCMa', symObjAddr: 0x100, symBinAddr: 0x4910, symSize: 0x10 } + - { offset: 0x8A7A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVMa', symObjAddr: 0x110, symBinAddr: 0x4920, symSize: 0x10 } + - { offset: 0x8A7BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVMa', symObjAddr: 0x120, symBinAddr: 0x4930, symSize: 0x10 } + - { offset: 0x8A7D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVMi', symObjAddr: 0x130, symBinAddr: 0x4940, symSize: 0x10 } + - { offset: 0x8A7E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVMr', symObjAddr: 0x140, symBinAddr: 0x4950, symSize: 0x1A0 } + - { offset: 0x8A7F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwCP', symObjAddr: 0x2E0, symBinAddr: 0x4AF0, symSize: 0x5E0 } + - { offset: 0x8A80C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwxx', symObjAddr: 0x8C0, symBinAddr: 0x50D0, symSize: 0x2A0 } + - { offset: 0x8A820, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwcp', symObjAddr: 0xB60, symBinAddr: 0x5370, symSize: 0x460 } + - { offset: 0x8A834, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwca', symObjAddr: 0xFC0, symBinAddr: 0x57D0, symSize: 0x6E0 } + - { offset: 0x8A848, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwtk', symObjAddr: 0x16A0, symBinAddr: 0x5EB0, symSize: 0x460 } + - { offset: 0x8A85C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwta', symObjAddr: 0x1B00, symBinAddr: 0x6310, symSize: 0x6E0 } + - { offset: 0x8A870, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwet', symObjAddr: 0x21E0, symBinAddr: 0x69F0, symSize: 0x430 } + - { offset: 0x8A884, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC5StateVwst', symObjAddr: 0x2610, symBinAddr: 0x6E20, symSize: 0x5E0 } + - { offset: 0x8A8C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAASQWb', symObjAddr: 0x2E10, symBinAddr: 0x7600, symSize: 0x10 } + - { offset: 0x8A8D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVACSQAAWl', symObjAddr: 0x2E20, symBinAddr: 0x7610, symSize: 0x30 } + - { offset: 0x8A8EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAs25ExpressibleByArrayLiteralPWb', symObjAddr: 0x2E50, symBinAddr: 0x7640, symSize: 0x10 } + - { offset: 0x8A900, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVACs25ExpressibleByArrayLiteralAAWl', symObjAddr: 0x2E60, symBinAddr: 0x7650, symSize: 0x30 } + - { offset: 0x8A914, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs9OptionSetAASYWb', symObjAddr: 0x2E90, symBinAddr: 0x7680, symSize: 0x10 } + - { offset: 0x8A928, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVACSYAAWl', symObjAddr: 0x2EA0, symBinAddr: 0x7690, symSize: 0x30 } + - { offset: 0x8A93C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs9OptionSetAAs0G7AlgebraPWb', symObjAddr: 0x2ED0, symBinAddr: 0x76C0, symSize: 0x10 } + - { offset: 0x8A950, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVACs10SetAlgebraAAWl', symObjAddr: 0x2EE0, symBinAddr: 0x76D0, symSize: 0x30 } + - { offset: 0x8A964, size: 0x8, addend: 0x0, symName: ___swift_instantiateGenericMetadata, symObjAddr: 0x2F10, symBinAddr: 0x7700, symSize: 0x30 } + - { offset: 0x8A992, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCfd', symObjAddr: 0x90, symBinAddr: 0x48A0, symSize: 0x50 } + - { offset: 0x8A9C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerCfD', symObjAddr: 0xE0, symBinAddr: 0x48F0, symSize: 0x20 } + - { offset: 0x8A9FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADPxycfCTW', symObjAddr: 0x2C20, symBinAddr: 0x7410, symSize: 0x10 } + - { offset: 0x8AA48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP5unionyxxnFTW', symObjAddr: 0x2C30, symBinAddr: 0x7420, symSize: 0x10 } + - { offset: 0x8AAE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP12intersectionyxxFTW', symObjAddr: 0x2C40, symBinAddr: 0x7430, symSize: 0x10 } + - { offset: 0x8AB7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP19symmetricDifferenceyxxnFTW', symObjAddr: 0x2C50, symBinAddr: 0x7440, symSize: 0x10 } + - { offset: 0x8AC26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP6insertySb8inserted_7ElementQz17memberAfterInserttAInFTW', symObjAddr: 0x2C60, symBinAddr: 0x7450, symSize: 0x30 } + - { offset: 0x8AD83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP6removey7ElementQzSgAHFTW', symObjAddr: 0x2C90, symBinAddr: 0x7480, symSize: 0x30 } + - { offset: 0x8AE80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP6update4with7ElementQzSgAIn_tFTW', symObjAddr: 0x2CC0, symBinAddr: 0x74B0, symSize: 0x30 } + - { offset: 0x8AF6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP9formUnionyyxnFTW', symObjAddr: 0x2CF0, symBinAddr: 0x74E0, symSize: 0x10 } + - { offset: 0x8AFAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP16formIntersectionyyxFTW', symObjAddr: 0x2D00, symBinAddr: 0x74F0, symSize: 0x10 } + - { offset: 0x8AFE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP23formSymmetricDifferenceyyxnFTW', symObjAddr: 0x2D10, symBinAddr: 0x7500, symSize: 0x10 } + - { offset: 0x8B035, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP11subtractingyxxFTW', symObjAddr: 0x2D20, symBinAddr: 0x7510, symSize: 0x20 } + - { offset: 0x8B0DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP8isSubset2ofSbx_tFTW', symObjAddr: 0x2D40, symBinAddr: 0x7530, symSize: 0x20 } + - { offset: 0x8B155, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP10isDisjoint4withSbx_tFTW', symObjAddr: 0x2D60, symBinAddr: 0x7550, symSize: 0x10 } + - { offset: 0x8B1FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP7isEmptySbvgTW', symObjAddr: 0x2D90, symBinAddr: 0x7580, symSize: 0x10 } + - { offset: 0x8B266, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADPyxqd__ncSTRd__7ElementQyd__AFRtzlufCTW', symObjAddr: 0x2DA0, symBinAddr: 0x7590, symSize: 0x20 } + - { offset: 0x8B282, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs10SetAlgebraAAsADP8subtractyyxFTW', symObjAddr: 0x2DC0, symBinAddr: 0x75B0, symSize: 0x10 } + - { offset: 0x8B2FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x2DD0, symBinAddr: 0x75C0, symSize: 0x10 } + - { offset: 0x8B34B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs25ExpressibleByArrayLiteralAAsADP05arrayI0x0hI7ElementQzd_tcfCTW', symObjAddr: 0x2DE0, symBinAddr: 0x75D0, symSize: 0x30 } + - { offset: 0x8B383, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16OptimizerOptionsVs9OptionSetAAsADP8rawValuex03RawI0Qz_tcfCTW', symObjAddr: 0x2BF0, symBinAddr: 0x7400, symSize: 0x10 } + - { offset: 0x8B72C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO7ElementCfD', symObjAddr: 0x0, symBinAddr: 0x7750, symSize: 0x40 } + - { offset: 0x8B77D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO7ElementCMa', symObjAddr: 0x40, symBinAddr: 0x7790, symSize: 0x20 } + - { offset: 0x8B791, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLOMa', symObjAddr: 0x60, symBinAddr: 0x77B0, symSize: 0xA } + - { offset: 0x8B7D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO7ElementCfD', symObjAddr: 0x0, symBinAddr: 0x7750, symSize: 0x40 } + - { offset: 0x8BB8B, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE9maybeDataACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x77C0, symSize: 0x2C0 } + - { offset: 0x8BBA3, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE9maybeDataACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x77C0, symSize: 0x2C0 } + - { offset: 0x8BBF9, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE11decodedDataSS8mimeType_AA0G0V4datatSgvg', symObjAddr: 0x2C0, symBinAddr: 0x7A80, symSize: 0x400 } + - { offset: 0x8BD86, size: 0x8, addend: 0x0, symName: '_$sS2SSysWl', symObjAddr: 0x700, symBinAddr: 0x7E80, symSize: 0x30 } + - { offset: 0x8C1AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16drawProgressLine2toySo22CLLocationCoordinate2DV_tF', symObjAddr: 0x0, symBinAddr: 0x7EE0, symSize: 0x9F0 } + - { offset: 0x8C3DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16drawProgressLine2toySo22CLLocationCoordinate2DV_tF', symObjAddr: 0x0, symBinAddr: 0x7EE0, symSize: 0x9F0 } + - { offset: 0x8CA69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17resetProgressLineyyF', symObjAddr: 0x9F0, symBinAddr: 0x88D0, symSize: 0x100 } + - { offset: 0x8D161, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DistanceFormatterV012getFormattedD08distance23includesMeasurementUnitSSSd_SbtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x89D0, symSize: 0x3CE } + - { offset: 0x8D3BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DistanceFormatterV012getFormattedD08distance23includesMeasurementUnitSSSd_SbtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x89D0, symSize: 0x3CE } + - { offset: 0x8DB41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCMa', symObjAddr: 0x50, symBinAddr: 0x8DF0, symSize: 0x20 } + - { offset: 0x8E968, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC7segment2at7forwardAA0D7SegmentV12CoreGraphics7CGFloatV_SbtF', symObjAddr: 0x8E00, symBinAddr: 0x11BA0, symSize: 0x3C0 } + - { offset: 0x8F0C1, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF8PenNavUI18FloatingPanelStateC_Tg503$s8ef82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18hiJ17CGvgSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x9220, symBinAddr: 0x11FC0, symSize: 0x100 } + - { offset: 0x8F303, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI18FloatingPanelStateC_Tg503$s8ef82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18hiJ17CGvgSbAG_AGtXEfU_Tf1nnncn_n', symObjAddr: 0x9320, symBinAddr: 0x120C0, symSize: 0x430 } + - { offset: 0x8F85D, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry8PenNavUI18FloatingPanelStateCG_Tg503$s8ij82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18lmN17CGvgSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x9750, symBinAddr: 0x124F0, symSize: 0x80 } + - { offset: 0x8F9F0, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI18FloatingPanelStateC_Tg503$s8fg82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18ijK17CGvgSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x97D0, symBinAddr: 0x12570, symSize: 0x2B0 } + - { offset: 0x8FD92, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI18FloatingPanelStateC_Tg503$s8gh82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18jkL17CGvgSbAG_AGtXEfU_Tf1nnnnc_n', symObjAddr: 0x9A80, symBinAddr: 0x12820, symSize: 0x200 } + - { offset: 0x8FF14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterCMa', symObjAddr: 0xA160, symBinAddr: 0x12F00, symSize: 0x20 } + - { offset: 0x8FF28, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI18FloatingPanelStateC_Tg503$s8gh57UI13LayoutAdapterC30sortedAnchorStatesByCoordinateSayAA18jkL17CGvgSbAF_AFtXEfU_AH0oP0CTf1nnnnc_nTf4nnnng_n', symObjAddr: 0xA180, symBinAddr: 0x12F20, symSize: 0x3B0 } + - { offset: 0x90104, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI18FloatingPanelStateC_Tg503$s8fg57UI13LayoutAdapterC30sortedAnchorStatesByCoordinateSayAA18ijK17CGvgSbAF_AFtXEfU_AG0nO0CTf1nncn_nTf4nnng_n', symObjAddr: 0xA530, symBinAddr: 0x132D0, symSize: 0x330 } + - { offset: 0x90485, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI18FloatingPanelStateC_Tg503$s8ef57UI13LayoutAdapterC30sortedAnchorStatesByCoordinateSayAA18hiJ17CGvgSbAF_AFtXEfU_AD0mN0CTf1nnncn_nTf4nnnng_n', symObjAddr: 0xA860, symBinAddr: 0x13600, symSize: 0x720 } + - { offset: 0x90B58, size: 0x8, addend: 0x0, symName: '_$sS2Ss7CVarArg10FoundationWl', symObjAddr: 0xBED0, symBinAddr: 0x14C30, symSize: 0x30 } + - { offset: 0x90B6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCSo8NSObjectCSH10ObjectiveCWl', symObjAddr: 0xC1E0, symBinAddr: 0x14F40, symSize: 0x40 } + - { offset: 0x90B80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LayoutGuideProvider_pWOb', symObjAddr: 0xC220, symBinAddr: 0x14F80, symSize: 0x20 } + - { offset: 0x90B94, size: 0x8, addend: 0x0, symName: ___swift_project_boxed_opaque_existential_1, symObjAddr: 0xC240, symBinAddr: 0x14FA0, symSize: 0x30 } + - { offset: 0x90BA8, size: 0x8, addend: 0x0, symName: ___swift_destroy_boxed_opaque_existential_1, symObjAddr: 0xC270, symBinAddr: 0x14FD0, symSize: 0x30 } + - { offset: 0x90BBC, size: 0x8, addend: 0x0, symName: '_$sSD8IteratorV8_VariantOy8PenNavUI18FloatingPanelStateCAE0fG15LayoutAnchoring_p__GWOe', symObjAddr: 0xC2D0, symBinAddr: 0x15030, symSize: 0x20 } + - { offset: 0x90BD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LayoutGuideProvider_pSgWOh', symObjAddr: 0xC2F0, symBinAddr: 0x15050, symSize: 0x30 } + - { offset: 0x90C09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCACycfC', symObjAddr: 0x0, symBinAddr: 0x8DA0, symSize: 0x20 } + - { offset: 0x90C1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCACycfc', symObjAddr: 0x20, symBinAddr: 0x8DC0, symSize: 0x30 } + - { offset: 0x90C55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCACycfcTo', symObjAddr: 0x70, symBinAddr: 0x8E10, symSize: 0x30 } + - { offset: 0x90CBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0CvgTo', symObjAddr: 0xA0, symBinAddr: 0x8E40, symSize: 0x40 } + - { offset: 0x90CD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0CvgTo', symObjAddr: 0xA0, symBinAddr: 0x8E40, symSize: 0x40 } + - { offset: 0x90CF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC12initialStateAA0deI0Cvg', symObjAddr: 0xE0, symBinAddr: 0x8E80, symSize: 0x40 } + - { offset: 0x90E36, size: 0x8, addend: 0x0, symName: '_$sSDyq_Sgxcig8PenNavUI18FloatingPanelStateC_AB0dE15LayoutAnchoring_pTg5', symObjAddr: 0x14E0, symBinAddr: 0xA280, symSize: 0xE0 } + - { offset: 0x91185, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI18FloatingPanelStateCG_Tg503$s8fg82UI13LayoutAdapterC18sortedAnchorStates33_995BB7604D732323B0F3BB3065CA5A1ELLSayAA18ijK17CGvgSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x91C0, symBinAddr: 0x11F60, symSize: 0x60 } + - { offset: 0x912AA, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI18FloatingPanelStateCG_Tg503$s8fg57UI13LayoutAdapterC30sortedAnchorStatesByCoordinateSayAA18ijK17CGvgSbAF_AFtXEfU_AG0nO0CTf1cn_nTf4ng_n', symObjAddr: 0xAF80, symBinAddr: 0x13D20, symSize: 0x2D0 } + - { offset: 0x915FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvgTo', symObjAddr: 0x120, symBinAddr: 0x8EC0, symSize: 0x60 } + - { offset: 0x91627, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvg', symObjAddr: 0x180, symBinAddr: 0x8F20, symSize: 0x10 } + - { offset: 0x9163B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC8positionAA0dE8PositionOvgTo', symObjAddr: 0x190, symBinAddr: 0x8F30, symSize: 0x10 } + - { offset: 0x9164F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC8positionAA0dE8PositionOvg', symObjAddr: 0x1A0, symBinAddr: 0x8F40, symSize: 0x10 } + - { offset: 0x91712, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC07prepareG011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtF', symObjAddr: 0x1B0, symBinAddr: 0x8F50, symSize: 0x10 } + - { offset: 0x9172D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC07prepareG011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtFTo', symObjAddr: 0x1C0, symBinAddr: 0x8F60, symSize: 0xA0 } + - { offset: 0x91757, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA0dE5StateC_tF', symObjAddr: 0x260, symBinAddr: 0x9000, symSize: 0x80 } + - { offset: 0x917AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA0dE5StateC_tFTo', symObjAddr: 0x2E0, symBinAddr: 0x9080, symSize: 0xA0 } + - { offset: 0x917EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutCfD', symObjAddr: 0x380, symBinAddr: 0x9120, symSize: 0x30 } + - { offset: 0x91859, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC20leastCoordinateState33_995BB7604D732323B0F3BB3065CA5A1ELLAA013FloatingPanelH0Cvg', symObjAddr: 0x3B0, symBinAddr: 0x9150, symSize: 0x180 } + - { offset: 0x91A24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC19mostCoordinateState33_995BB7604D732323B0F3BB3065CA5A1ELLAA013FloatingPanelH0Cvg', symObjAddr: 0x530, symBinAddr: 0x92D0, symSize: 0x190 } + - { offset: 0x91C3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC18leastExpandedStateAA013FloatingPanelH0Cvg', symObjAddr: 0x6C0, symBinAddr: 0x9460, symSize: 0x230 } + - { offset: 0x91EF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC17mostExpandedStateAA013FloatingPanelH0Cvg', symObjAddr: 0x8F0, symBinAddr: 0x9690, symSize: 0x2A0 } + - { offset: 0x9229C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC21adjustedContentInsetsSo06UIEdgeH0Vvg', symObjAddr: 0xB90, symBinAddr: 0x9930, symSize: 0x180 } + - { offset: 0x924BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC15surfaceLocationSo7CGPointVvg', symObjAddr: 0xD10, symBinAddr: 0x9AB0, symSize: 0x7D0 } + - { offset: 0x929EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC15surfaceLocationSo7CGPointVvs', symObjAddr: 0x15C0, symBinAddr: 0xA360, symSize: 0x7D0 } + - { offset: 0x92F7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC6offset4from12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tF', symObjAddr: 0x1D90, symBinAddr: 0xAB30, symSize: 0x450 } + - { offset: 0x93361, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC12hiddenAnchor33_995BB7604D732323B0F3BB3065CA5A1ELLAA013FloatingPanelD9Anchoring_pvg', symObjAddr: 0x21E0, symBinAddr: 0xAF80, symSize: 0x220 } + - { offset: 0x93538, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC15surfaceLocation3forSo7CGPointVAA18FloatingPanelStateC_tF', symObjAddr: 0x2400, symBinAddr: 0xB1A0, symSize: 0x1A0 } + - { offset: 0x93695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC8position3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tF', symObjAddr: 0x25A0, symBinAddr: 0xB340, symSize: 0xA70 } + - { offset: 0x93E7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC8position3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tFAHyXEfU_', symObjAddr: 0x3010, symBinAddr: 0xBDB0, symSize: 0x280 } + - { offset: 0x93FD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC8position3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tFAHyXEfU0_', symObjAddr: 0x3290, symBinAddr: 0xC030, symSize: 0x1A0 } + - { offset: 0x940C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC13referenceEdge33_995BB7604D732323B0F3BB3065CA5A1ELL2ofAA022FloatingPanelReferenceG0OAA0pqD9Anchoring_p_tF', symObjAddr: 0x3430, symBinAddr: 0xC1D0, symSize: 0xF0 } + - { offset: 0x941BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC07prepareD0yyF', symObjAddr: 0x3520, symBinAddr: 0xC2C0, symSize: 0x1220 } + - { offset: 0x94C43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC22updateStateConstraints33_995BB7604D732323B0F3BB3065CA5A1ELLyyF', symObjAddr: 0x4740, symBinAddr: 0xD4E0, symSize: 0x1140 } + - { offset: 0x95894, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC15setUpAttraction2toSo18NSLayoutConstraintC_12CoreGraphics7CGFloatVtAA18FloatingPanelStateC_tF', symObjAddr: 0x5880, symBinAddr: 0xE620, symSize: 0x1820 } + - { offset: 0x965BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC18tearDownAttraction33_995BB7604D732323B0F3BB3065CA5A1ELLyyF', symObjAddr: 0x70A0, symBinAddr: 0xFE40, symSize: 0x100 } + - { offset: 0x966A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC22updateStaticConstraintyyF', symObjAddr: 0x71A0, symBinAddr: 0xFF40, symSize: 0xE00 } + - { offset: 0x9733D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC31updateInteractiveEdgeConstraint4diff16scrollingContent19allowsRubberBandingy12CoreGraphics7CGFloatV_S2bSo06UIRectH0VXEtF6$deferL_yyF', symObjAddr: 0x7FA0, symBinAddr: 0x10D40, symSize: 0x170 } + - { offset: 0x97453, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC08activateD03for05forceD0yAA18FloatingPanelStateC_SbtF', symObjAddr: 0x8110, symBinAddr: 0x10EB0, symSize: 0x620 } + - { offset: 0x97827, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC08activateD03for05forceD0yAA18FloatingPanelStateC_SbtF6$deferL_yyF', symObjAddr: 0x8730, symBinAddr: 0x114D0, symSize: 0x520 } + - { offset: 0x97B80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC21layoutSurfaceIfNeeded33_995BB7604D732323B0F3BB3065CA5A1ELLyyF', symObjAddr: 0x8C50, symBinAddr: 0x119F0, symSize: 0x120 } + - { offset: 0x97C64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterCfd', symObjAddr: 0x8D70, symBinAddr: 0x11B10, symSize: 0x70 } + - { offset: 0x97C87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterCfD', symObjAddr: 0x8DE0, symBinAddr: 0x11B80, symSize: 0x20 } + - { offset: 0x97D28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC7anchorsSDyAA0dE5StateCAA0deG9Anchoring_pGvgTf4d_n', symObjAddr: 0x9C80, symBinAddr: 0x12A20, symSize: 0x2A0 } + - { offset: 0x97ED7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelBottomLayoutC07prepareG011surfaceView2inSaySo18NSLayoutConstraintCGSo6UIViewC_AKtFTf4nnd_n', symObjAddr: 0x9F20, symBinAddr: 0x12CC0, symSize: 0x180 } + - { offset: 0x97F93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC2vc6layoutAcA23FloatingPanelControllerC_AA0hiD0_ptcfcTf4gnn_n', symObjAddr: 0xB250, symBinAddr: 0x13FF0, symSize: 0x90 } + - { offset: 0x98003, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC16startInteraction2at6offsetyAA18FloatingPanelStateC_So7CGPointVtFTf4dnn_n', symObjAddr: 0xB2E0, symBinAddr: 0x14080, symSize: 0xBB0 } + - { offset: 0x98860, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC6layout33_995BB7604D732323B0F3BB3065CA5A1ELLAA013FloatingPanelD0_pvsTf4en_nTf4gn_n', symObjAddr: 0xC320, symBinAddr: 0x15080, symSize: 0xB0 } + - { offset: 0x99D63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCfE', symObjAddr: 0x1AF0, symBinAddr: 0x169E0, symSize: 0x120 } + - { offset: 0x99D90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCfETo', symObjAddr: 0x1C40, symBinAddr: 0x16B30, symSize: 0x110 } + - { offset: 0x99DBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCMa', symObjAddr: 0x1D50, symBinAddr: 0x16C40, symSize: 0x20 } + - { offset: 0x99E07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1D70, symBinAddr: 0x16C60, symSize: 0x20 } + - { offset: 0x99EAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x1D90, symBinAddr: 0x16C80, symSize: 0x60 } + - { offset: 0x9A145, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1DF0, symBinAddr: 0x16CE0, symSize: 0x600 } + - { offset: 0x9A530, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU_', symObjAddr: 0x23F0, symBinAddr: 0x172E0, symSize: 0x170 } + - { offset: 0x9A5E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2560, symBinAddr: 0x17450, symSize: 0xB0 } + - { offset: 0x9A627, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2610, symBinAddr: 0x17500, symSize: 0xC0 } + - { offset: 0x9A6A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0x26D0, symBinAddr: 0x175C0, symSize: 0x2A0 } + - { offset: 0x9A70A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_', symObjAddr: 0x2970, symBinAddr: 0x17860, symSize: 0x280 } + - { offset: 0x9A806, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0x2BF0, symBinAddr: 0x17AE0, symSize: 0x50 } + - { offset: 0x9A822, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC18didTapFloorsActionyyF', symObjAddr: 0x2C40, symBinAddr: 0x17B30, symSize: 0xB0 } + - { offset: 0x9A88D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC18didTapFloorsActionyyFTo', symObjAddr: 0x2CF0, symBinAddr: 0x17BE0, symSize: 0x30 } + - { offset: 0x9A8A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC20didTapExpandScheduleyyFTo', symObjAddr: 0x2D30, symBinAddr: 0x17C10, symSize: 0x30 } + - { offset: 0x9A8C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC22didTapCollapseScheduleyyFTo', symObjAddr: 0x2EB0, symBinAddr: 0x17D80, symSize: 0x30 } + - { offset: 0x9A8E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC22didTapDirectionsActionyyF', symObjAddr: 0x2EE0, symBinAddr: 0x17DB0, symSize: 0x4F0 } + - { offset: 0x9AD4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC17showRouteOverview6sourceyAA5PlaceCSg_tF', symObjAddr: 0x33D0, symBinAddr: 0x182A0, symSize: 0x310 } + - { offset: 0x9AFDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC22didTapDirectionsActionyyFTo', symObjAddr: 0x36E0, symBinAddr: 0x185B0, symSize: 0x30 } + - { offset: 0x9B022, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC17handleOfflineDatayyF', symObjAddr: 0x3710, symBinAddr: 0x185E0, symSize: 0x110 } + - { offset: 0x9B18E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x3820, symBinAddr: 0x186F0, symSize: 0xA0 } + - { offset: 0x9B263, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x38C0, symBinAddr: 0x18790, symSize: 0x30 } + - { offset: 0x9B2D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x38F0, symBinAddr: 0x187C0, symSize: 0xC0 } + - { offset: 0x9B379, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x39B0, symBinAddr: 0x18880, symSize: 0x30 } + - { offset: 0x9B3B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x39E0, symBinAddr: 0x188B0, symSize: 0x200 } + - { offset: 0x9B5B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x3BE0, symBinAddr: 0x18AB0, symSize: 0x50 } + - { offset: 0x9B5CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC17venueDetailLoaded4datayAA0dF4DataC_tF', symObjAddr: 0x3C30, symBinAddr: 0x18B00, symSize: 0x100 } + - { offset: 0x9B6DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC16venueGatesLoaded5gatesySayAA5PlaceCG_tF', symObjAddr: 0x3D30, symBinAddr: 0x18C00, symSize: 0x1A0 } + - { offset: 0x9B97F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA0d6DetailF19ModelOutputProtocolA2aDP05venueH6Loaded4datayAA0dF4DataC_tFTW', symObjAddr: 0x3ED0, symBinAddr: 0x18DA0, symSize: 0x10 } + - { offset: 0x9B99B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA0d6DetailF19ModelOutputProtocolA2aDP16venueGatesLoaded5gatesySayAA5PlaceCG_tFTW', symObjAddr: 0x3EE0, symBinAddr: 0x18DB0, symSize: 0x10 } + - { offset: 0x9B9D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA0d6DetailF19ModelOutputProtocolA2aDP05venueH10LoadFailedyyFTW', symObjAddr: 0x3EF0, symBinAddr: 0x18DC0, symSize: 0x30 } + - { offset: 0x9BA58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x3F20, symBinAddr: 0x18DF0, symSize: 0x2B0 } + - { offset: 0x9BC8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFyycfU_', symObjAddr: 0x41D0, symBinAddr: 0x190A0, symSize: 0x80 } + - { offset: 0x9BCBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x4250, symBinAddr: 0x19120, symSize: 0x10 } + - { offset: 0x9BCF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x4260, symBinAddr: 0x19130, symSize: 0x10 } + - { offset: 0x9BD3F, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV19_uninitializedCount15minimumCapacityAByxGSi_SitcfC10Foundation3URLV_Tt1g5', symObjAddr: 0x4550, symBinAddr: 0x19420, symSize: 0xD0 } + - { offset: 0x9BDB1, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSS_Tg5', symObjAddr: 0x4700, symBinAddr: 0x195D0, symSize: 0x20 } + - { offset: 0x9BDC9, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo18NSLayoutConstraintC_Tg5', symObjAddr: 0x4720, symBinAddr: 0x195F0, symSize: 0x40 } + - { offset: 0x9BDE1, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI15LocalizedObjectV_Tg5', symObjAddr: 0x4760, symBinAddr: 0x19630, symSize: 0x20 } + - { offset: 0x9BDF9, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI11RouteOptionV_Tg5', symObjAddr: 0x4780, symBinAddr: 0x19650, symSize: 0x20 } + - { offset: 0x9BE11, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSS_Sbt_Tg5', symObjAddr: 0x47A0, symBinAddr: 0x19670, symSize: 0x20 } + - { offset: 0x9BE29, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI24FloatingPanelPresentable_p_Tg5', symObjAddr: 0x47C0, symBinAddr: 0x19690, symSize: 0x20 } + - { offset: 0x9BE41, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo6UIViewC_Tg5', symObjAddr: 0x47E0, symBinAddr: 0x196B0, symSize: 0x40 } + - { offset: 0x9BE59, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI5PlaceC_Tg5', symObjAddr: 0x4820, symBinAddr: 0x196F0, symSize: 0x30 } + - { offset: 0x9BE71, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9LayerTreeO5PointV1p_AK3cp1AK3cp2t_Tg5', symObjAddr: 0x4850, symBinAddr: 0x19720, symSize: 0x20 } + - { offset: 0x9BE89, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9LayerTreeO4PathC7SegmentO_Tg5', symObjAddr: 0x4870, symBinAddr: 0x19740, symSize: 0x20 } + - { offset: 0x9BEA1, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9LayerTreeO5PointV_Tg5', symObjAddr: 0x4890, symBinAddr: 0x19760, symSize: 0x20 } + - { offset: 0x9BEB9, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin10PoiPolygonV_Tg5', symObjAddr: 0x48B0, symBinAddr: 0x19780, symSize: 0x30 } + - { offset: 0x9BED1, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo7CGPointV_Tg5', symObjAddr: 0x48E0, symBinAddr: 0x197B0, symSize: 0x20 } + - { offset: 0x9BEE9, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI11RouteOptionV0qR3KeyO_Sbt_Tg5', symObjAddr: 0x4900, symBinAddr: 0x197D0, symSize: 0x20 } + - { offset: 0x9BF01, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin13GateNodeModelC_Tg5', symObjAddr: 0x4920, symBinAddr: 0x197F0, symSize: 0x30 } + - { offset: 0x9BF19, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5FloorC_Tg5', symObjAddr: 0x4950, symBinAddr: 0x19820, symSize: 0x30 } + - { offset: 0x9BF31, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin4EdgeC_Tg5', symObjAddr: 0x4980, symBinAddr: 0x19850, symSize: 0x30 } + - { offset: 0x9BF49, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5VenueC_Tg5', symObjAddr: 0x49B0, symBinAddr: 0x19880, symSize: 0x30 } + - { offset: 0x9BF61, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI8FavoriteC_Tg5', symObjAddr: 0x49E0, symBinAddr: 0x198B0, symSize: 0x30 } + - { offset: 0x9BF79, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSiSg_Tg5', symObjAddr: 0x4A10, symBinAddr: 0x198E0, symSize: 0x20 } + - { offset: 0x9BF91, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSi_Tg5', symObjAddr: 0x4A30, symBinAddr: 0x19900, symSize: 0x20 } + - { offset: 0x9BFA9, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5FloorCSg_Tg5', symObjAddr: 0x4A50, symBinAddr: 0x19920, symSize: 0x30 } + - { offset: 0x9BFC1, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF17PenguinINRenderer20FeatureConfigurationV_Tg5', symObjAddr: 0x4A80, symBinAddr: 0x19950, symSize: 0x30 } + - { offset: 0x9BFD9, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI7POIDataC_Tg5', symObjAddr: 0x4AB0, symBinAddr: 0x19980, symSize: 0x30 } + - { offset: 0x9BFF1, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF10Foundation9IndexPathV_Tg5', symObjAddr: 0x4AE0, symBinAddr: 0x199B0, symSize: 0x30 } + - { offset: 0x9C009, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x4B10, symBinAddr: 0x199E0, symSize: 0x20 } + - { offset: 0x9C021, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9LayerTreeO8GradientV4StopV_Tg5', symObjAddr: 0x4B30, symBinAddr: 0x19A00, symSize: 0x20 } + - { offset: 0x9C039, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF12CoreGraphics7CGFloatV_Tg5', symObjAddr: 0x4B50, symBinAddr: 0x19A20, symSize: 0x20 } + - { offset: 0x9C051, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo10CGColorRefa_Tg5', symObjAddr: 0x4B70, symBinAddr: 0x19A40, symSize: 0x30 } + - { offset: 0x9C069, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI15RendererCommandOyAG11CGTextTypesVG_Tg5', symObjAddr: 0x4BA0, symBinAddr: 0x19A70, symSize: 0x20 } + - { offset: 0x9C081, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSay8PenNavUI9LayerTreeO5ShapeOG_Tg5', symObjAddr: 0x4BC0, symBinAddr: 0x19A90, symSize: 0x20 } + - { offset: 0x9C099, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3DOMO4PathC_Tg5', symObjAddr: 0x4BE0, symBinAddr: 0x19AB0, symSize: 0x30 } + - { offset: 0x9C0B1, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3DOMO4PathC7SegmentO_Tg5', symObjAddr: 0x4C10, symBinAddr: 0x19AE0, symSize: 0x20 } + - { offset: 0x9C0C9, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3XMLO7ElementC_Tg5', symObjAddr: 0x4C30, symBinAddr: 0x19B00, symSize: 0x30 } + - { offset: 0x9C0E1, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI3DOMO10StyleSheetV_Tg5', symObjAddr: 0x4C60, symBinAddr: 0x19B30, symSize: 0x20 } + - { offset: 0x9C0F9, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI15RendererCommandOyAG7CGTypesVG_Tg5', symObjAddr: 0x4C80, symBinAddr: 0x19B50, symSize: 0x20 } + - { offset: 0x9C111, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo9CGPathRefa_Tg5', symObjAddr: 0x4CA0, symBinAddr: 0x19B70, symSize: 0x30 } + - { offset: 0x9C129, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin8ScheduleC_Tg5', symObjAddr: 0x4CD0, symBinAddr: 0x19BA0, symSize: 0x30 } + - { offset: 0x9C141, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFyp_Tg5', symObjAddr: 0x4D00, symBinAddr: 0x19BD0, symSize: 0x20 } + - { offset: 0x9C159, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin7SubPathC_Tg5', symObjAddr: 0x4D20, symBinAddr: 0x19BF0, symSize: 0x30 } + - { offset: 0x9C171, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9VenueGateV_Tg5', symObjAddr: 0x4D50, symBinAddr: 0x19C20, symSize: 0x20 } + - { offset: 0x9C189, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI6CampusC_Tg5', symObjAddr: 0x4D70, symBinAddr: 0x19C40, symSize: 0x30 } + - { offset: 0x9C1A1, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI13TagDataSource_p_Tg5', symObjAddr: 0x4DA0, symBinAddr: 0x19C70, symSize: 0x30 } + - { offset: 0x9C1B9, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI16FileDownloadData_p_Tg5', symObjAddr: 0x4DD0, symBinAddr: 0x19CA0, symSize: 0x30 } + - { offset: 0x9C1D1, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5VenueCSg_Tg5', symObjAddr: 0x4E00, symBinAddr: 0x19CD0, symSize: 0x30 } + - { offset: 0x9C1E9, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI10LiveObjectV_Tg5', symObjAddr: 0x4E30, symBinAddr: 0x19D00, symSize: 0x30 } + - { offset: 0x9C201, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFSo7CALayerC_Tg5', symObjAddr: 0x4E60, symBinAddr: 0x19D30, symSize: 0x40 } + - { offset: 0x9C219, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF10Foundation3URLV_Tg5', symObjAddr: 0x4EA0, symBinAddr: 0x19D70, symSize: 0x30 } + - { offset: 0x9C231, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI13MessageDetailC_Tg5', symObjAddr: 0x4ED0, symBinAddr: 0x19DA0, symSize: 0x30 } + - { offset: 0x9C249, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF7Penguin5GnodeC_Tg5', symObjAddr: 0x4F00, symBinAddr: 0x19DD0, symSize: 0x30 } + - { offset: 0x9C261, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI10AlertSheetC_Tg5', symObjAddr: 0x4F30, symBinAddr: 0x19E00, symSize: 0x30 } + - { offset: 0x9C279, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtFs7UnicodeO6ScalarV_Tg5', symObjAddr: 0x4F60, symBinAddr: 0x19E30, symSize: 0x20 } + - { offset: 0x9C291, size: 0x8, addend: 0x0, symName: '_$ss15ContiguousArrayV16_createNewBuffer14bufferIsUnique15minimumCapacity13growForAppendySb_SiSbtF8PenNavUI9VenueDataC_Tg5', symObjAddr: 0x4F80, symBinAddr: 0x19E50, symSize: 0x30 } + - { offset: 0x9C301, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSS_Tg5', symObjAddr: 0x4FB0, symBinAddr: 0x19E80, symSize: 0x120 } + - { offset: 0x9C445, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15LocalizedObjectV_Tg5', symObjAddr: 0x5230, symBinAddr: 0x1A100, symSize: 0x110 } + - { offset: 0x9C589, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSS_Sbt_Tg5', symObjAddr: 0x5340, symBinAddr: 0x1A210, symSize: 0x140 } + - { offset: 0x9C6CD, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI24FloatingPanelPresentable_p_Tg5', symObjAddr: 0x5480, symBinAddr: 0x1A350, symSize: 0x140 } + - { offset: 0x9C811, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi3key_Say7Penguin8ScheduleCG5valuet_Tg5', symObjAddr: 0x5710, symBinAddr: 0x1A5E0, symSize: 0x140 } + - { offset: 0x9C8FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFyycfU_TA', symObjAddr: 0x5890, symBinAddr: 0x1A760, symSize: 0x10 } + - { offset: 0x9C911, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x58A0, symBinAddr: 0x1A770, symSize: 0x20 } + - { offset: 0x9C925, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x58C0, symBinAddr: 0x1A790, symSize: 0x10 } + - { offset: 0x9C991, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO5PointV1p_AL3cp1AL3cp2t_Tg5', symObjAddr: 0x58D0, symBinAddr: 0x1A7A0, symSize: 0x120 } + - { offset: 0x9CAD5, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO5PointV_Tg5', symObjAddr: 0x59F0, symBinAddr: 0x1A8C0, symSize: 0x110 } + - { offset: 0x9CC19, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSo7CGPointV_Tg5', symObjAddr: 0x5B20, symBinAddr: 0x1A9F0, symSize: 0x110 } + - { offset: 0x9CD4D, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSiSg_Tg5', symObjAddr: 0x5D80, symBinAddr: 0x1AC50, symSize: 0x110 } + - { offset: 0x9CE91, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi_Tg5', symObjAddr: 0x5E90, symBinAddr: 0x1AD60, symSize: 0x110 } + - { offset: 0x9CFD5, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x5FA0, symBinAddr: 0x1AE70, symSize: 0x120 } + - { offset: 0x9D119, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO8GradientV4StopV_Tg5', symObjAddr: 0x60C0, symBinAddr: 0x1AF90, symSize: 0x120 } + - { offset: 0x9D24D, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF12CoreGraphics7CGFloatV_Tg5', symObjAddr: 0x61E0, symBinAddr: 0x1B0B0, symSize: 0x110 } + - { offset: 0x9D391, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15RendererCommandOyAH11CGTextTypesVG_Tg5', symObjAddr: 0x62F0, symBinAddr: 0x1B1C0, symSize: 0x140 } + - { offset: 0x9D4D5, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSay8PenNavUI9LayerTreeO5ShapeOG_Tg5', symObjAddr: 0x6430, symBinAddr: 0x1B300, symSize: 0x140 } + - { offset: 0x9D619, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO10StyleSheetV_Tg5', symObjAddr: 0x6690, symBinAddr: 0x1B560, symSize: 0x110 } + - { offset: 0x9D768, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15RendererCommandOyAH7CGTypesVG_Tg5', symObjAddr: 0x67A0, symBinAddr: 0x1B670, symSize: 0x1B0 } + - { offset: 0x9D8E3, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFyp_Tg5', symObjAddr: 0x6950, symBinAddr: 0x1B820, symSize: 0x120 } + - { offset: 0x9DA27, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9VenueGateV_Tg5', symObjAddr: 0x6A70, symBinAddr: 0x1B940, symSize: 0x120 } + - { offset: 0x9DB6B, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFs7UnicodeO6ScalarV_Tg5', symObjAddr: 0x6FD0, symBinAddr: 0x1BEA0, symSize: 0x110 } + - { offset: 0x9DCBA, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF8PenNavUI9LayerTreeO9TransformO_s15CollectionOfOneVyAJGTg5', symObjAddr: 0x7210, symBinAddr: 0x1BFB0, symSize: 0xE0 } + - { offset: 0x9DDE2, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF8PenNavUI20FloorSelectorSectionO_s15CollectionOfOneVyAHGTg5', symObjAddr: 0x72F0, symBinAddr: 0x1C090, symSize: 0xD0 } + - { offset: 0x9DF15, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy8PenNavUI20FloorSelectorSectionOG_s010CollectionH3OneVyANGTg5', symObjAddr: 0x74D0, symBinAddr: 0x1C270, symSize: 0xA0 } + - { offset: 0x9E06A, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0VySo22CLLocationCoordinate2DVG_s010CollectionH3OneVyAMGTg5', symObjAddr: 0x7570, symBinAddr: 0x1C310, symSize: 0xD0 } + - { offset: 0x9E1FB, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0VySo22CLLocationCoordinate2DVG_SayAMGTg5Tf4nngn_n', symObjAddr: 0x7640, symBinAddr: 0x1C3E0, symSize: 0xE0 } + - { offset: 0x9E3B5, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lFSo22CLLocationCoordinate2DV_SayAGGTg5Tf4ngn_n', symObjAddr: 0x7720, symBinAddr: 0x1C4C0, symSize: 0xD0 } + - { offset: 0x9E52E, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy8PenNavUI24FloatingPanelPresentable_pG_s15EmptyCollectionVyAlM_pGTg5Tf4nndn_n', symObjAddr: 0x77F0, symBinAddr: 0x1C590, symSize: 0xC0 } + - { offset: 0x9E705, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x7A80, symBinAddr: 0x1C7E0, symSize: 0x240 } + - { offset: 0x9E9B2, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy8PenNavUI5PlaceCG_s010CollectionH3OneVyANGTg5Tf4nngn_n', symObjAddr: 0x7CC0, symBinAddr: 0x1CA20, symSize: 0x140 } + - { offset: 0x9EAFE, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lF8PenNavUI5PlaceC_s15CollectionOfOneVyAHGTg5Tf4ngn_n', symObjAddr: 0x7E00, symBinAddr: 0x1CB60, symSize: 0x100 } + - { offset: 0x9EC4A, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0VySSG_s15EmptyCollectionVySSGTg5Tf4nndn_n', symObjAddr: 0x7F00, symBinAddr: 0x1CC60, symSize: 0xC0 } + - { offset: 0x9ED33, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0VySSG_s010CollectionH3OneVySSGTg5Tf4nngn_n', symObjAddr: 0x7FE0, symBinAddr: 0x1CD40, symSize: 0xE0 } + - { offset: 0x9EE86, size: 0x8, addend: 0x0, symName: '_$sSa15replaceSubrange_4withySnySiG_qd__nt7ElementQyd__RszSlRd__lFSS_s15CollectionOfOneVySSGTg5Tf4ngn_n', symObjAddr: 0x80C0, symBinAddr: 0x1CE20, symSize: 0xD0 } + - { offset: 0x9EFAC, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy8PenNavUI13VenueCardDataVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x83F0, symBinAddr: 0x1D150, symSize: 0xD0 } + - { offset: 0x9F0E2, size: 0x8, addend: 0x0, symName: '_$ss20_ArrayBufferProtocolPsE15replaceSubrange_4with10elementsOfySnySiG_Siqd__ntSlRd__7ElementQyd__AGRtzlFs01_aB0Vy10Foundation3URLVG_s15EmptyCollectionVyANGTg5Tf4nndn_n', symObjAddr: 0x84C0, symBinAddr: 0x1D220, symSize: 0x120 } + - { offset: 0x9F1E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC22didTapDirectionsActionyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x86E0, symBinAddr: 0x1D440, symSize: 0x20 } + - { offset: 0x9F222, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC24handleConnectivityAction10completionyyycSg_tFyycACcfu_yycfu0_TA', symObjAddr: 0x8740, symBinAddr: 0x1D4A0, symSize: 0x10 } + - { offset: 0x9F236, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_TA', symObjAddr: 0x8780, symBinAddr: 0x1D4E0, symSize: 0x20 } + - { offset: 0x9F24A, size: 0x8, addend: 0x0, symName: '_$sSay8Dispatch0A13WorkItemFlagsVGMa', symObjAddr: 0x87D0, symBinAddr: 0x1D500, symSize: 0x50 } + - { offset: 0x9F25E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU_TA', symObjAddr: 0x8820, symBinAddr: 0x1D550, symSize: 0x10 } + - { offset: 0x9F272, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18NavigationDelegate_pSgXwWOh', symObjAddr: 0x8830, symBinAddr: 0x1D560, symSize: 0x20 } + - { offset: 0x9F286, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16PIEventsDelegate_pWOc', symObjAddr: 0x8850, symBinAddr: 0x1D580, symSize: 0x30 } + - { offset: 0x9F410, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x15150, symSize: 0x20 } + - { offset: 0x9F46E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x15170, symSize: 0x30 } + - { offset: 0x9F4BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC13subtitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x151A0, symSize: 0x20 } + - { offset: 0x9F510, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC13subtitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x151C0, symSize: 0x30 } + - { offset: 0x9F55F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x151F0, symSize: 0x20 } + - { offset: 0x9F5B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x15210, symSize: 0x30 } + - { offset: 0x9F606, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC09separatorF0So6UIViewCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x15240, symSize: 0x20 } + - { offset: 0x9F65E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC09separatorF0So6UIViewCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x15260, symSize: 0x30 } + - { offset: 0x9F6AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x140, symBinAddr: 0x15290, symSize: 0x20 } + - { offset: 0x9F707, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x160, symBinAddr: 0x152B0, symSize: 0x20 } + - { offset: 0x9F767, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC9venueData33_49E053E0F82157DDFC7F5E6B1EE27E5FLLAA0dfI0Cvg', symObjAddr: 0x180, symBinAddr: 0x152D0, symSize: 0xA0 } + - { offset: 0x9F891, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC9viewModel33_49E053E0F82157DDFC7F5E6B1EE27E5FLLAA0d6DetailfI0Cvg', symObjAddr: 0x220, symBinAddr: 0x15370, symSize: 0x150 } + - { offset: 0x9FBC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x370, symBinAddr: 0x154C0, symSize: 0x1F0 } + - { offset: 0x9FD49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x560, symBinAddr: 0x156B0, symSize: 0x30 } + - { offset: 0x9FD5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC13registerCells33_49E053E0F82157DDFC7F5E6B1EE27E5FLLyyF', symObjAddr: 0x590, symBinAddr: 0x156E0, symSize: 0x100 } + - { offset: 0x9FE6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC03setD4Info33_49E053E0F82157DDFC7F5E6B1EE27E5FLLyyF', symObjAddr: 0x690, symBinAddr: 0x157E0, symSize: 0x310 } + - { offset: 0xA0158, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC7dismissyyFTo', symObjAddr: 0xE70, symBinAddr: 0x15D60, symSize: 0x80 } + - { offset: 0xA0195, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5shareyyF', symObjAddr: 0xEF0, symBinAddr: 0x15DE0, symSize: 0x120 } + - { offset: 0xA0264, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0x1010, symBinAddr: 0x15F00, symSize: 0x550 } + - { offset: 0xA0570, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5shareyyFTo', symObjAddr: 0x1560, symBinAddr: 0x16450, symSize: 0x30 } + - { offset: 0xA05F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC06handleD5GatesyyF', symObjAddr: 0x1590, symBinAddr: 0x16480, symSize: 0x1D0 } + - { offset: 0xA0795, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x1760, symBinAddr: 0x16650, symSize: 0x190 } + - { offset: 0xA07D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x18F0, symBinAddr: 0x167E0, symSize: 0x50 } + - { offset: 0xA0808, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1940, symBinAddr: 0x16830, symSize: 0x180 } + - { offset: 0xA083B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1AC0, symBinAddr: 0x169B0, symSize: 0x30 } + - { offset: 0xA084F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerCfD', symObjAddr: 0x1C10, symBinAddr: 0x16B00, symSize: 0x30 } + - { offset: 0xA116F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC17addGrabberGestureyyF', symObjAddr: 0x0, symBinAddr: 0x1D600, symSize: 0x3A0 } + - { offset: 0xA1386, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC17addGrabberGestureyyF', symObjAddr: 0x0, symBinAddr: 0x1D600, symSize: 0x3A0 } + - { offset: 0xA16D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16handleTapGesture33_2EE35CB3C04EDC940EAF12BD78B47A2BLLyyF', symObjAddr: 0x3A0, symBinAddr: 0x1D9A0, symSize: 0x1710 } + - { offset: 0xA2465, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16handleTapGesture33_2EE35CB3C04EDC940EAF12BD78B47A2BLLyyFTo', symObjAddr: 0x1AB0, symBinAddr: 0x1F0B0, symSize: 0x30 } + - { offset: 0xA295F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV9makeShape4fromAC0H0OSgAA3DOMO15GraphicsElementC_tFZTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x1F0E0, symSize: 0x4E0 } + - { offset: 0xA2B88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV9makeShape4fromAC0H0OSgAA3DOMO15GraphicsElementC_tFZTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x1F0E0, symSize: 0x4E0 } + - { offset: 0xA3513, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SessionIdGeneratorV14getCurrentTime33_0AD976D144EE60DA8D29C4E8D9C88D43LLSSyFTf4d_n', symObjAddr: 0x0, symBinAddr: 0x1F5C0, symSize: 0x1B0 } + - { offset: 0xA3537, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SessionIdGeneratorV6sharedACSgvpZ', symObjAddr: 0x5A8E, symBinAddr: 0x3BCEF0, symSize: 0x0 } + - { offset: 0xA35A2, size: 0x8, addend: 0x0, symName: '_$s10Foundation4UUIDVSgWOb', symObjAddr: 0x5B0, symBinAddr: 0x1FB30, symSize: 0x40 } + - { offset: 0xA35B6, size: 0x8, addend: 0x0, symName: '_$s10Foundation4UUIDVSgWOh', symObjAddr: 0x5F0, symBinAddr: 0x1FB70, symSize: 0x30 } + - { offset: 0xA36AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SessionIdGeneratorV14getCurrentTime33_0AD976D144EE60DA8D29C4E8D9C88D43LLSSyFTf4d_n', symObjAddr: 0x0, symBinAddr: 0x1F5C0, symSize: 0x1B0 } + - { offset: 0xA3732, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SessionIdGeneratorV016getNewNavigationdE0SSyFTf4d_n', symObjAddr: 0x1B0, symBinAddr: 0x1F770, symSize: 0x3C0 } + - { offset: 0xA487F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyF', symObjAddr: 0x1090, symBinAddr: 0x20C30, symSize: 0x470 } + - { offset: 0xA4C99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_', symObjAddr: 0x3DD0, symBinAddr: 0x23970, symSize: 0x4A0 } + - { offset: 0xA4E9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU_', symObjAddr: 0x5190, symBinAddr: 0x24D30, symSize: 0x90 } + - { offset: 0xA5061, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06updateC033_A0B591B96AA499ED77538E2604F14735LL14responsePlacesySayAA7POIDataCG_tF', symObjAddr: 0x20D0, symBinAddr: 0x21C70, symSize: 0x1D0 } + - { offset: 0xA53EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCfE', symObjAddr: 0x35A0, symBinAddr: 0x23140, symSize: 0x170 } + - { offset: 0xA5417, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCfETo', symObjAddr: 0x3740, symBinAddr: 0x232E0, symSize: 0x160 } + - { offset: 0xA5446, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCMU', symObjAddr: 0x38A0, symBinAddr: 0x23440, symSize: 0x10 } + - { offset: 0xA545A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCMa', symObjAddr: 0x38B0, symBinAddr: 0x23450, symSize: 0x30 } + - { offset: 0xA546E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCMr', symObjAddr: 0x38E0, symBinAddr: 0x23480, symSize: 0x150 } + - { offset: 0xA548D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC19getLocationParamter33_A0B591B96AA499ED77538E2604F14735LLSDySSypGyF', symObjAddr: 0x3A30, symBinAddr: 0x235D0, symSize: 0x3A0 } + - { offset: 0xA60AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC17loadPOIDataForMap33_A0B591B96AA499ED77538E2604F14735LL6placesySayAA0I0CG_tF', symObjAddr: 0x5220, symBinAddr: 0x24DC0, symSize: 0x250 } + - { offset: 0xA643F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC17appendOutdoorPOIs33_A0B591B96AA499ED77538E2604F14735LLyyF', symObjAddr: 0x5470, symBinAddr: 0x25010, symSize: 0x4B0 } + - { offset: 0xA6879, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x5920, symBinAddr: 0x254C0, symSize: 0xA0 } + - { offset: 0xA692F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x59C0, symBinAddr: 0x25560, symSize: 0x30 } + - { offset: 0xA69A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC10setupPanelyyF', symObjAddr: 0x59F0, symBinAddr: 0x25590, symSize: 0xD0 } + - { offset: 0xA6A4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC10setupPanelyyFTo', symObjAddr: 0x5AC0, symBinAddr: 0x25660, symSize: 0x30 } + - { offset: 0xA6A79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x5AF0, symBinAddr: 0x25690, symSize: 0x280 } + - { offset: 0xA6CBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x5D70, symBinAddr: 0x25910, symSize: 0x50 } + - { offset: 0xA6CD8, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_8, symObjAddr: 0x5E00, symBinAddr: 0x25960, symSize: 0x20 } + - { offset: 0xA6CEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CategoryFiltersVwet', symObjAddr: 0x5E20, symBinAddr: 0x25980, symSize: 0x20 } + - { offset: 0xA6D00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CategoryFiltersVwst', symObjAddr: 0x5E40, symBinAddr: 0x259A0, symSize: 0x30 } + - { offset: 0xA6D14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CategoryFiltersVMa', symObjAddr: 0x5E70, symBinAddr: 0x259D0, symSize: 0x10 } + - { offset: 0xA6D37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x5F00, symBinAddr: 0x259E0, symSize: 0x20 } + - { offset: 0xA6D8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x5F20, symBinAddr: 0x25A00, symSize: 0x70 } + - { offset: 0xA6E24, size: 0x8, addend: 0x0, symName: '_$sypWOb', symObjAddr: 0x5FD0, symBinAddr: 0x25A70, symSize: 0x20 } + - { offset: 0xA6E64, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x62B0, symBinAddr: 0x25D10, symSize: 0x130 } + - { offset: 0xA6EDF, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSS_SSTg5', symObjAddr: 0x63E0, symBinAddr: 0x25E40, symSize: 0x120 } + - { offset: 0xA6F4F, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSS_ypTg5', symObjAddr: 0x6500, symBinAddr: 0x25F60, symSize: 0x110 } + - { offset: 0xA6FB6, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x6610, symBinAddr: 0x26070, symSize: 0xF0 } + - { offset: 0xA7031, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtF8PenNavUI9LayerTreeO8GradientV_SSTg5', symObjAddr: 0x6700, symBinAddr: 0x26160, symSize: 0x110 } + - { offset: 0xA70AC, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x6810, symBinAddr: 0x26270, symSize: 0x100 } + - { offset: 0xA7127, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0x6910, symBinAddr: 0x26370, symSize: 0x100 } + - { offset: 0xA71A2, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x6A10, symBinAddr: 0x26470, symSize: 0x100 } + - { offset: 0xA721D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x6B10, symBinAddr: 0x26570, symSize: 0x210 } + - { offset: 0xA72DA, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI18FloatingPanelStateC_SaySo18NSLayoutConstraintCGTg5', symObjAddr: 0x6D20, symBinAddr: 0x26780, symSize: 0x190 } + - { offset: 0xA739E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_SSTg5', symObjAddr: 0x6EB0, symBinAddr: 0x26910, symSize: 0x1B0 } + - { offset: 0xA7478, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_SbTg5', symObjAddr: 0x7060, symBinAddr: 0x26AC0, symSize: 0x180 } + - { offset: 0xA7547, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_ypTg5', symObjAddr: 0x71E0, symBinAddr: 0x26C40, symSize: 0x1F0 } + - { offset: 0xA75F9, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI11RouteOptionV0gH3KeyO_SbTg5', symObjAddr: 0x73D0, symBinAddr: 0x26E30, symSize: 0x140 } + - { offset: 0xA76D3, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x7510, symBinAddr: 0x26F70, symSize: 0x160 } + - { offset: 0xA77A2, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI9LayerTreeO8GradientV_SSTg5', symObjAddr: 0x7670, symBinAddr: 0x270D0, symSize: 0x1B0 } + - { offset: 0xA787C, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_8PenNavUI3DOMO15GraphicsElementCTg5', symObjAddr: 0x7820, symBinAddr: 0x27280, symSize: 0x1B0 } + - { offset: 0xA7961, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGTg5', symObjAddr: 0x79D0, symBinAddr: 0x27430, symSize: 0x1B0 } + - { offset: 0xA7A30, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x7B80, symBinAddr: 0x275E0, symSize: 0x180 } + - { offset: 0xA7B15, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI9FontStyleO_So6UIFontCTg5', symObjAddr: 0x7D00, symBinAddr: 0x27760, symSize: 0x160 } + - { offset: 0xA7BEF, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSi_8PenNavUI5ColorVTg5', symObjAddr: 0x7E60, symBinAddr: 0x278C0, symSize: 0x1C0 } + - { offset: 0xA7CD4, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI11CommandLineO8ModifierO_SSSgTg5', symObjAddr: 0x8020, symBinAddr: 0x27A80, symSize: 0x180 } + - { offset: 0xA7DA3, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x81A0, symBinAddr: 0x27C00, symSize: 0x210 } + - { offset: 0xA7E4A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI3DOMO10StyleSheetV8SelectorO_AF22PresentationAttributesVTg5', symObjAddr: 0x83B0, symBinAddr: 0x27E10, symSize: 0x240 } + - { offset: 0xA7EF1, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0x85F0, symBinAddr: 0x28050, symSize: 0x1B0 } + - { offset: 0xA7FCB, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV4copyyyF8PenNavUI18FloatingPanelStateC_AD0gH15LayoutAnchoring_pTg5', symObjAddr: 0x87A0, symBinAddr: 0x28200, symSize: 0x190 } + - { offset: 0xA80BB, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x8930, symBinAddr: 0x28390, symSize: 0x350 } + - { offset: 0xA81C1, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI18FloatingPanelStateC_SaySo18NSLayoutConstraintCGTg5', symObjAddr: 0x8C80, symBinAddr: 0x286E0, symSize: 0x2B0 } + - { offset: 0xA82D2, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_SSTg5', symObjAddr: 0x8F30, symBinAddr: 0x28990, symSize: 0x300 } + - { offset: 0xA83D8, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_SbTg5', symObjAddr: 0x9230, symBinAddr: 0x28C90, symSize: 0x2F0 } + - { offset: 0xA84E9, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_ypTg5', symObjAddr: 0x9520, symBinAddr: 0x28F80, symSize: 0x320 } + - { offset: 0xA85FC, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSi_Say7Penguin8ScheduleCGTg5', symObjAddr: 0x9840, symBinAddr: 0x292A0, symSize: 0x2C0 } + - { offset: 0xA86F7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI11RouteOptionV0nO3KeyO_SbTg5', symObjAddr: 0x9B00, symBinAddr: 0x29560, symSize: 0x170 } + - { offset: 0xA876B, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x9C70, symBinAddr: 0x296D0, symSize: 0x2D0 } + - { offset: 0xA88B6, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI9LayerTreeO8GradientV_SSTg5', symObjAddr: 0x9F40, symBinAddr: 0x299A0, symSize: 0x300 } + - { offset: 0xA8A30, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_8PenNavUI3DOMO15GraphicsElementCTg5', symObjAddr: 0xA240, symBinAddr: 0x29CA0, symSize: 0x300 } + - { offset: 0xA8B7D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGTg5', symObjAddr: 0xA540, symBinAddr: 0x29FA0, symSize: 0x320 } + - { offset: 0xA8D3E, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0xA860, symBinAddr: 0x2A2C0, symSize: 0x360 } + - { offset: 0xA8EF0, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI9FontStyleO_So6UIFontCTg5', symObjAddr: 0xABC0, symBinAddr: 0x2A620, symSize: 0x490 } + - { offset: 0xA906D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSi_8PenNavUI5ColorVTg5', symObjAddr: 0xB050, symBinAddr: 0x2AAB0, symSize: 0x300 } + - { offset: 0xA91A8, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI11CommandLineO8ModifierO_SSSgTg5', symObjAddr: 0xB350, symBinAddr: 0x2ADB0, symSize: 0x4B0 } + - { offset: 0xA9325, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0xB800, symBinAddr: 0x2B260, symSize: 0x310 } + - { offset: 0xA9428, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_AH22PresentationAttributesVTg5', symObjAddr: 0xBB10, symBinAddr: 0x2B570, symSize: 0x360 } + - { offset: 0xA95A0, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0xBE70, symBinAddr: 0x2B8D0, symSize: 0x300 } + - { offset: 0xA96A6, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV20_copyOrMoveAndResize8capacity12moveElementsySi_SbtF8PenNavUI18FloatingPanelStateC_AF0nO15LayoutAnchoring_pTg5', symObjAddr: 0xC170, symBinAddr: 0x2BBD0, symSize: 0x2B0 } + - { offset: 0xA97DE, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV16_unsafeInsertNew3key5valueyxn_q_ntF8PenNavUI11RouteOptionV0kL3KeyO_SbTg5', symObjAddr: 0xC420, symBinAddr: 0x2BE80, symSize: 0x150 } + - { offset: 0xA994C, size: 0x8, addend: 0x0, symName: '_$sSa13_copyContents12initializings16IndexingIteratorVySayxGG_SitSryxG_tFSo18NSLayoutConstraintC_Tg5', symObjAddr: 0xC570, symBinAddr: 0x2BFD0, symSize: 0x250 } + - { offset: 0xA9B29, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSbABXEfU_SaySSG_TG5', symObjAddr: 0xCC40, symBinAddr: 0x2C680, symSize: 0x50 } + - { offset: 0xA9B71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_TA', symObjAddr: 0xCCB0, symBinAddr: 0x2C6F0, symSize: 0x10 } + - { offset: 0xA9BD2, size: 0x8, addend: 0x0, symName: '_$sSh21_nonEmptyArrayLiteralShyxGSayxG_tcfC8PenNavUI9ToastTypeO_Tt0g5Tf4g_n', symObjAddr: 0xCCC0, symBinAddr: 0x2C700, symSize: 0x130 } + - { offset: 0xA9D55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU_TA', symObjAddr: 0xCE20, symBinAddr: 0x2C860, symSize: 0x20 } + - { offset: 0xA9D69, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xCE40, symBinAddr: 0x2C880, symSize: 0x20 } + - { offset: 0xA9D7D, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xCE60, symBinAddr: 0x2C8A0, symSize: 0x10 } + - { offset: 0xA9D91, size: 0x8, addend: 0x0, symName: '_$sSay8Dispatch0A13WorkItemFlagsVGSayxGSTsWl', symObjAddr: 0xCE70, symBinAddr: 0x2C8B0, symSize: 0x50 } + - { offset: 0xA9DB7, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSbABXEfU_SaySSG_TG5TA', symObjAddr: 0xCF10, symBinAddr: 0x2C950, symSize: 0x50 } + - { offset: 0xA9E0C, size: 0x8, addend: 0x0, symName: '_$sypWOc', symObjAddr: 0xCF90, symBinAddr: 0x2C9A0, symSize: 0x30 } + - { offset: 0xA9E20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4dnn_n', symObjAddr: 0xD090, symBinAddr: 0x2CAA0, symSize: 0x1B0 } + - { offset: 0xA9F05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC13dismissAction33_A0B591B96AA499ED77538E2604F14735LLyyFyycfU_TA', symObjAddr: 0xD250, symBinAddr: 0x2CC50, symSize: 0x10 } + - { offset: 0xA9F3A, size: 0x8, addend: 0x0, symName: '_$sSh21_nonEmptyArrayLiteralShyxGSayxG_tcfCSS_Tt0g5Tf4g_n', symObjAddr: 0xD2A0, symBinAddr: 0x2CC60, symSize: 0x180 } + - { offset: 0xAA0A7, size: 0x8, addend: 0x0, symName: '_$sSh21_nonEmptyArrayLiteralShyxGSayxG_tcfC10Foundation8CalendarV9ComponentO_Tt0g5Tf4g_n', symObjAddr: 0xD420, symBinAddr: 0x2CDE0, symSize: 0x250 } + - { offset: 0xAA160, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetWOb', symObjAddr: 0xD6D0, symBinAddr: 0x2D060, symSize: 0x40 } + - { offset: 0xAA174, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetWOd', symObjAddr: 0xD710, symBinAddr: 0x2D0A0, symSize: 0x40 } + - { offset: 0xAA188, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_TA', symObjAddr: 0xD780, symBinAddr: 0x2D110, symSize: 0x20 } + - { offset: 0xAA19C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFSb7Penguin10PoiPolygonVXEfU_TA', symObjAddr: 0xD7A0, symBinAddr: 0x2D130, symSize: 0x20 } + - { offset: 0xAA1B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC03setC033_A0B591B96AA499ED77538E2604F14735LLyyFySo7UIImageCSgcfU_TA', symObjAddr: 0xD820, symBinAddr: 0x2D180, symSize: 0x10 } + - { offset: 0xAA1C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVWOc', symObjAddr: 0xD830, symBinAddr: 0x2D190, symSize: 0x30 } + - { offset: 0xAA1D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVWOh', symObjAddr: 0xD860, symBinAddr: 0x2D1C0, symSize: 0x30 } + - { offset: 0xAA1EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVWOc', symObjAddr: 0xD890, symBinAddr: 0x2D1F0, symSize: 0x30 } + - { offset: 0xAA200, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOWOy', symObjAddr: 0xD8C0, symBinAddr: 0x2D220, symSize: 0x20 } + - { offset: 0xAA214, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVWOb', symObjAddr: 0xD8E0, symBinAddr: 0x2D240, symSize: 0x30 } + - { offset: 0xAA242, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x0, symBinAddr: 0x1FBA0, symSize: 0x120 } + - { offset: 0xAA301, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x120, symBinAddr: 0x1FCC0, symSize: 0xB0 } + - { offset: 0xAA42B, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x1D0, symBinAddr: 0x1FD70, symSize: 0x1E0 } + - { offset: 0xAA5A2, size: 0x8, addend: 0x0, symName: '_$sSh8containsySbxFSi_Tg5', symObjAddr: 0x3B0, symBinAddr: 0x1FF50, symSize: 0x90 } + - { offset: 0xAA5F3, size: 0x8, addend: 0x0, symName: '_$sSTsE8contains5whereS2b7ElementQzKXE_tKFSS_Tg5', symObjAddr: 0x440, symBinAddr: 0x1FFE0, symSize: 0xE0 } + - { offset: 0xAA65A, size: 0x8, addend: 0x0, symName: '_$sSTsE8contains5whereS2b7ElementQzKXE_tKFSaySSG_Tg5', symObjAddr: 0x520, symBinAddr: 0x200C0, symSize: 0xB0 } + - { offset: 0xAA782, size: 0x8, addend: 0x0, symName: '_$sSTsE8contains5whereS2b7ElementQzKXE_tKFSay8PenNavUI5PlaceCG_Tg5', symObjAddr: 0x5D0, symBinAddr: 0x20170, symSize: 0x120 } + - { offset: 0xAA8DA, size: 0x8, addend: 0x0, symName: '_$sSTsE8contains5whereS2b7ElementQzKXE_tKFSaySo19UIGestureRecognizerCG_Tg5', symObjAddr: 0x6F0, symBinAddr: 0x20290, symSize: 0x120 } + - { offset: 0xAAAFD, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFSay7Penguin10PoiPolygonVG_Tg5', symObjAddr: 0xAA0, symBinAddr: 0x20640, symSize: 0x140 } + - { offset: 0xAABB0, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFSay8PenNavUI3DOMO7PatternVG_Tg5', symObjAddr: 0xD40, symBinAddr: 0x208E0, symSize: 0x1A0 } + - { offset: 0xAAF37, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSo18NSLayoutConstraintC_SayAFGTg5', symObjAddr: 0x4270, symBinAddr: 0x23E10, symSize: 0x100 } + - { offset: 0xAB114, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI9LayerTreeO4PathC7SegmentO_SayAKGTg5', symObjAddr: 0x4370, symBinAddr: 0x23F10, symSize: 0xF0 } + - { offset: 0xAB39E, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSf_SaySfGTg5', symObjAddr: 0x45A0, symBinAddr: 0x24140, symSize: 0xE0 } + - { offset: 0xAB628, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF7Penguin5FloorCSg_SayAHGTg5', symObjAddr: 0x4700, symBinAddr: 0x242A0, symSize: 0x100 } + - { offset: 0xAB883, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSS_SaySSGTg5', symObjAddr: 0x4800, symBinAddr: 0x243A0, symSize: 0xF0 } + - { offset: 0xABB0D, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSo22CLLocationCoordinate2DV_SayAFGTg5', symObjAddr: 0x48F0, symBinAddr: 0x24490, symSize: 0xE0 } + - { offset: 0xABD97, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI3DOMO10StyleSheetV8SelectorO_SayAKGTg5', symObjAddr: 0x4A50, symBinAddr: 0x245F0, symSize: 0xF0 } + - { offset: 0xAC021, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI15RendererCommandOyAE11CGTextTypesVG_SayAJGTg5', symObjAddr: 0x4B40, symBinAddr: 0x246E0, symSize: 0x100 } + - { offset: 0xAC28B, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI16SFSymbolRendererV10SymbolPathV_SayAIGTg5', symObjAddr: 0x4C40, symBinAddr: 0x247E0, symSize: 0xF0 } + - { offset: 0xAC515, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lF8PenNavUI15RendererCommandOyAE7CGTypesVG_SayAJGTg5', symObjAddr: 0x4D30, symBinAddr: 0x248D0, symSize: 0x100 } + - { offset: 0xAC7C8, size: 0x8, addend: 0x0, symName: '_$sSa6append10contentsOfyqd__n_t7ElementQyd__RszSTRd__lFSi_SaySiGTg5', symObjAddr: 0x4E30, symBinAddr: 0x249D0, symSize: 0xE0 } + - { offset: 0xACAB8, size: 0x8, addend: 0x0, symName: '_$sSh10isDisjoint4withSbShyxG_tF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x5FF0, symBinAddr: 0x25A90, symSize: 0x170 } + - { offset: 0xAD044, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x810, symBinAddr: 0x203B0, symSize: 0x20 } + - { offset: 0xAD09E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x830, symBinAddr: 0x203D0, symSize: 0x20 } + - { offset: 0xAD0F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC13iconContainerSo6UIViewCSgvgTo', symObjAddr: 0x850, symBinAddr: 0x203F0, symSize: 0x20 } + - { offset: 0xAD14B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC13iconContainerSo6UIViewCSgvsTo', symObjAddr: 0x870, symBinAddr: 0x20410, symSize: 0x20 } + - { offset: 0xAD19E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12categoryNameSo7UILabelCSgvgTo', symObjAddr: 0x890, symBinAddr: 0x20430, symSize: 0x20 } + - { offset: 0xAD1F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12categoryNameSo7UILabelCSgvsTo', symObjAddr: 0x8B0, symBinAddr: 0x20450, symSize: 0x20 } + - { offset: 0xAD24B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC19categoryInformationSo7UILabelCSgvgTo', symObjAddr: 0x8D0, symBinAddr: 0x20470, symSize: 0x20 } + - { offset: 0xAD2A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC19categoryInformationSo7UILabelCSgvsTo', symObjAddr: 0x8F0, symBinAddr: 0x20490, symSize: 0x20 } + - { offset: 0xAD2F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12categoryIconSo07UIImageF0CSgvgTo', symObjAddr: 0x910, symBinAddr: 0x204B0, symSize: 0x20 } + - { offset: 0xAD34D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12categoryIconSo07UIImageF0CSgvsTo', symObjAddr: 0x930, symBinAddr: 0x204D0, symSize: 0x20 } + - { offset: 0xAD3A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC07loadingF0So07UIStackF0CSgvgTo', symObjAddr: 0x950, symBinAddr: 0x204F0, symSize: 0x20 } + - { offset: 0xAD3FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC07loadingF0So07UIStackF0CSgvsTo', symObjAddr: 0x970, symBinAddr: 0x20510, symSize: 0x20 } + - { offset: 0xAD44D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC18exploreVenueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x990, symBinAddr: 0x20530, symSize: 0x20 } + - { offset: 0xAD4A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC18exploreVenueButtonSo8UIButtonCSgvsTo', symObjAddr: 0x9B0, symBinAddr: 0x20550, symSize: 0x20 } + - { offset: 0xAD4FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12exploreStackSo07UIStackF0CSgvgTo', symObjAddr: 0x9D0, symBinAddr: 0x20570, symSize: 0x20 } + - { offset: 0xAD54F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC12exploreStackSo07UIStackF0CSgvsTo', symObjAddr: 0x9F0, symBinAddr: 0x20590, symSize: 0x20 } + - { offset: 0xAD5A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC22searchVerticalConstantSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0xA10, symBinAddr: 0x205B0, symSize: 0x20 } + - { offset: 0xAD5FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC22searchVerticalConstantSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0xA30, symBinAddr: 0x205D0, symSize: 0x20 } + - { offset: 0xAD64F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC09separatorF0So6UIViewCSgvgTo', symObjAddr: 0xA50, symBinAddr: 0x205F0, symSize: 0x20 } + - { offset: 0xAD6A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC09separatorF0So6UIViewCSgvsTo', symObjAddr: 0xA70, symBinAddr: 0x20610, symSize: 0x30 } + - { offset: 0xAD73D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC11viewDidLoadyyF', symObjAddr: 0xEE0, symBinAddr: 0x20A80, symSize: 0x1B0 } + - { offset: 0xAD910, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x1500, symBinAddr: 0x210A0, symSize: 0x30 } + - { offset: 0xAD924, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC03setC033_A0B591B96AA499ED77538E2604F14735LLyyF', symObjAddr: 0x1530, symBinAddr: 0x210D0, symSize: 0x370 } + - { offset: 0xADA69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC03setC033_A0B591B96AA499ED77538E2604F14735LLyyFySo7UIImageCSgcfU_', symObjAddr: 0x18A0, symBinAddr: 0x21440, symSize: 0xA0 } + - { offset: 0xADBB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC03setD16CountInformation33_A0B591B96AA499ED77538E2604F14735LLyyF', symObjAddr: 0x1940, symBinAddr: 0x214E0, symSize: 0x400 } + - { offset: 0xADF04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC7dismissyyFTo', symObjAddr: 0x1D40, symBinAddr: 0x218E0, symSize: 0xA0 } + - { offset: 0xADF8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC13dismissAction33_A0B591B96AA499ED77538E2604F14735LLyyFyycfU_', symObjAddr: 0x1DE0, symBinAddr: 0x21980, symSize: 0x80 } + - { offset: 0xADFF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC18exploreVenueActionyySo8UIButtonCFTo', symObjAddr: 0x1E60, symBinAddr: 0x21A00, symSize: 0x60 } + - { offset: 0xAE0D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC9resetData33_A0B591B96AA499ED77538E2604F14735LLyyF', symObjAddr: 0x1EC0, symBinAddr: 0x21A60, symSize: 0x210 } + - { offset: 0xAE2AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x22A0, symBinAddr: 0x21E40, symSize: 0x70 } + - { offset: 0xAE3B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x2310, symBinAddr: 0x21EB0, symSize: 0x1F0 } + - { offset: 0xAE64C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2500, symBinAddr: 0x220A0, symSize: 0xB0 } + - { offset: 0xAE688, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x25B0, symBinAddr: 0x22150, symSize: 0x160 } + - { offset: 0xAE71B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFSb7Penguin10PoiPolygonVXEfU_', symObjAddr: 0x2710, symBinAddr: 0x222B0, symSize: 0xE0 } + - { offset: 0xAE818, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x27F0, symBinAddr: 0x22390, symSize: 0xA0 } + - { offset: 0xAE833, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x2890, symBinAddr: 0x22430, symSize: 0xC0 } + - { offset: 0xAE8B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0x2950, symBinAddr: 0x224F0, symSize: 0x290 } + - { offset: 0xAE911, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_', symObjAddr: 0x2BE0, symBinAddr: 0x22780, symSize: 0xE0 } + - { offset: 0xAE9B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0x2CC0, symBinAddr: 0x22860, symSize: 0x50 } + - { offset: 0xAEA8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x2D10, symBinAddr: 0x228B0, symSize: 0x420 } + - { offset: 0xAED15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x3130, symBinAddr: 0x22CD0, symSize: 0x50 } + - { offset: 0xAED29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3180, symBinAddr: 0x22D20, symSize: 0x3F0 } + - { offset: 0xAEFA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x3570, symBinAddr: 0x23110, symSize: 0x30 } + - { offset: 0xAEFB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerCfD', symObjAddr: 0x3710, symBinAddr: 0x232B0, symSize: 0x30 } + - { offset: 0xAF3B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29CategoryResultsViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTf4dnnn_n', symObjAddr: 0xCFC0, symBinAddr: 0x2C9D0, symSize: 0xD0 } + - { offset: 0xAF867, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AppleSynthesizerCfD', symObjAddr: 0x0, symBinAddr: 0x2D2C0, symSize: 0x30 } + - { offset: 0xAF8B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AppleSynthesizerCMa', symObjAddr: 0x30, symBinAddr: 0x2D2F0, symSize: 0x14 } + - { offset: 0xAF8FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AppleSynthesizerCfD', symObjAddr: 0x0, symBinAddr: 0x2D2C0, symSize: 0x30 } + - { offset: 0xB0251, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC11makeNonZeroAEyF', symObjAddr: 0x0, symBinAddr: 0x2D310, symSize: 0x1480 } + - { offset: 0xB1F58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC9makeNodes33_6ED7540220CCE3981622A6B3F3D0E057LLSayAA03SubF4NodeAGLLVGyF', symObjAddr: 0x1480, symBinAddr: 0x2E790, symSize: 0x6A0 } + - { offset: 0xB2916, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8reversedAEvg', symObjAddr: 0x1B20, symBinAddr: 0x2EE30, symSize: 0x700 } + - { offset: 0xB33B8, size: 0x8, addend: 0x0, symName: '_$sST8PenNavUIAA9LayerTreeO4PathC7SegmentO7ElementRtzrlE9directionAE9DirectionOvgSayAGG_Tg5', symObjAddr: 0x2850, symBinAddr: 0x2FB60, symSize: 0x270 } + - { offset: 0xB3807, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVWOc', symObjAddr: 0x3000, symBinAddr: 0x30310, symSize: 0x30 } + - { offset: 0xB381B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVWOh', symObjAddr: 0x3030, symBinAddr: 0x30340, symSize: 0x20 } + - { offset: 0xB382F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwxx', symObjAddr: 0x30F0, symBinAddr: 0x30360, symSize: 0x30 } + - { offset: 0xB3843, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwcp', symObjAddr: 0x3120, symBinAddr: 0x30390, symSize: 0x60 } + - { offset: 0xB3857, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwca', symObjAddr: 0x3180, symBinAddr: 0x303F0, symSize: 0xA0 } + - { offset: 0xB386B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwta', symObjAddr: 0x3240, symBinAddr: 0x30490, symSize: 0x50 } + - { offset: 0xB387F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwet', symObjAddr: 0x3290, symBinAddr: 0x304E0, symSize: 0x40 } + - { offset: 0xB3893, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVwst', symObjAddr: 0x32D0, symBinAddr: 0x30520, symSize: 0x50 } + - { offset: 0xB38A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLVMa', symObjAddr: 0x3320, symBinAddr: 0x30570, symSize: 0xA } + - { offset: 0xB3B26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV08containsF0ySbADF', symObjAddr: 0x2220, symBinAddr: 0x2F530, symSize: 0x250 } + - { offset: 0xB3EA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV6appendyyADF', symObjAddr: 0x2470, symBinAddr: 0x2F780, symSize: 0x3E0 } + - { offset: 0xB4472, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV9windPathsySayAA9LayerTreeO0E0CGAI9DirectionOF', symObjAddr: 0x2AC0, symBinAddr: 0x2FDD0, symSize: 0x540 } + - { offset: 0xB4E90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC12fetchRequestSo07NSFetchG0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x30580, symSize: 0x70 } + - { offset: 0xB4F2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC12fetchRequestSo07NSFetchG0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x30580, symSize: 0x70 } + - { offset: 0xB4F99, size: 0x8, addend: 0x0, symName: _keypath_get_selector_campaignId, symObjAddr: 0x70, symBinAddr: 0x305F0, symSize: 0x10 } + - { offset: 0xB4FAD, size: 0x8, addend: 0x0, symName: _keypath_get_selector_lastNotificationDate, symObjAddr: 0xD0, symBinAddr: 0x30650, symSize: 0x10 } + - { offset: 0xB4FC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvpACTK', symObjAddr: 0xE0, symBinAddr: 0x30660, symSize: 0x70 } + - { offset: 0xB4FD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC20lastNotificationDate10Foundation0H0VSgvpACTk', symObjAddr: 0x160, symBinAddr: 0x306E0, symSize: 0xB0 } + - { offset: 0xB4FF1, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVSgWOc', symObjAddr: 0x260, symBinAddr: 0x307A0, symSize: 0x31 } + - { offset: 0xB5390, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10scrollViewAA06ScrollH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x30800, symSize: 0x20 } + - { offset: 0xB5B94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellCfETo', symObjAddr: 0x1170, symBinAddr: 0x31970, symSize: 0xE0 } + - { offset: 0xB5BC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellCMa', symObjAddr: 0x1250, symBinAddr: 0x31A50, symSize: 0x20 } + - { offset: 0xB5BD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SectionDelegate_pSgXwWOh', symObjAddr: 0x1270, symBinAddr: 0x31A70, symSize: 0x18 } + - { offset: 0xB5DA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10scrollViewAA06ScrollH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x30800, symSize: 0x20 } + - { offset: 0xB5E01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10scrollViewAA06ScrollH0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x30820, symSize: 0x30 } + - { offset: 0xB5EE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9stackViewSo6UIViewCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x30850, symSize: 0x20 } + - { offset: 0xB5F41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9stackViewSo6UIViewCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x30870, symSize: 0x30 } + - { offset: 0xB5F90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20outerTodayStatusViewSo6UIViewCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x308A0, symSize: 0x20 } + - { offset: 0xB5FE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20outerTodayStatusViewSo6UIViewCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x308C0, symSize: 0x30 } + - { offset: 0xB6032, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20innerTodayStatusViewSo6UIViewCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x308F0, symSize: 0x20 } + - { offset: 0xB6085, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC20innerTodayStatusViewSo6UIViewCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x30910, symSize: 0x30 } + - { offset: 0xB60D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11statusLabelSo7UILabelCSgvgTo', symObjAddr: 0x140, symBinAddr: 0x30940, symSize: 0x20 } + - { offset: 0xB612C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11statusLabelSo7UILabelCSgvsTo', symObjAddr: 0x160, symBinAddr: 0x30960, symSize: 0x30 } + - { offset: 0xB617B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x190, symBinAddr: 0x30990, symSize: 0x20 } + - { offset: 0xB61CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x309B0, symSize: 0x30 } + - { offset: 0xB621D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11campusLabelSo7UILabelCSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0x309E0, symSize: 0x20 } + - { offset: 0xB6270, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11campusLabelSo7UILabelCSgvsTo', symObjAddr: 0x200, symBinAddr: 0x30A00, symSize: 0x30 } + - { offset: 0xB62BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10campusViewSo6UIViewCSgvgTo', symObjAddr: 0x230, symBinAddr: 0x30A30, symSize: 0x20 } + - { offset: 0xB6312, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10campusViewSo6UIViewCSgvsTo', symObjAddr: 0x250, symBinAddr: 0x30A50, symSize: 0x30 } + - { offset: 0xB6361, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x280, symBinAddr: 0x30A80, symSize: 0x20 } + - { offset: 0xB63B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0x2A0, symBinAddr: 0x30AA0, symSize: 0x30 } + - { offset: 0xB6403, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9venueViewSo6UIViewCSgvgTo', symObjAddr: 0x2D0, symBinAddr: 0x30AD0, symSize: 0x20 } + - { offset: 0xB6456, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9venueViewSo6UIViewCSgvsTo', symObjAddr: 0x2F0, symBinAddr: 0x30AF0, symSize: 0x30 } + - { offset: 0xB64A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x320, symBinAddr: 0x30B20, symSize: 0x20 } + - { offset: 0xB64F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x340, symBinAddr: 0x30B40, symSize: 0x30 } + - { offset: 0xB6547, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9floorViewSo6UIViewCSgvgTo', symObjAddr: 0x370, symBinAddr: 0x30B70, symSize: 0x20 } + - { offset: 0xB659A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC9floorViewSo6UIViewCSgvsTo', symObjAddr: 0x390, symBinAddr: 0x30B90, symSize: 0x30 } + - { offset: 0xB65E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC13distanceStackSo11UIStackViewCSgvgTo', symObjAddr: 0x3C0, symBinAddr: 0x30BC0, symSize: 0x20 } + - { offset: 0xB6643, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC13distanceStackSo11UIStackViewCSgvsTo', symObjAddr: 0x3E0, symBinAddr: 0x30BE0, symSize: 0x20 } + - { offset: 0xB66E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC12awakeFromNibyyF', symObjAddr: 0x400, symBinAddr: 0x30C00, symSize: 0x1D0 } + - { offset: 0xB684E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC12awakeFromNibyyFTo', symObjAddr: 0x5D0, symBinAddr: 0x30DD0, symSize: 0x30 } + - { offset: 0xB688A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC16didTapStatusViewyyFTo', symObjAddr: 0x600, symBinAddr: 0x30E00, symSize: 0x60 } + - { offset: 0xB6924, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0x660, symBinAddr: 0x30E60, symSize: 0x50 } + - { offset: 0xB69DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC10updateInfo3foryAA11PoiViewDataCSg_tF', symObjAddr: 0x6B0, symBinAddr: 0x30EB0, symSize: 0x780 } + - { offset: 0xB6EA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0xE30, symBinAddr: 0x31630, symSize: 0x160 } + - { offset: 0xB6EE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xF90, symBinAddr: 0x31790, symSize: 0x30 } + - { offset: 0xB6F1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xFC0, symBinAddr: 0x317C0, symSize: 0x150 } + - { offset: 0xB6F4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1110, symBinAddr: 0x31910, symSize: 0x30 } + - { offset: 0xB6F62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DetailsHeaderCellCfD', symObjAddr: 0x1140, symBinAddr: 0x31940, symSize: 0x30 } + - { offset: 0xB7301, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionViewSo012UICollectionG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x31A90, symSize: 0x20 } + - { offset: 0xB7520, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellCfETo', symObjAddr: 0x3A0, symBinAddr: 0x31E30, symSize: 0x70 } + - { offset: 0xB754F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellCMa', symObjAddr: 0x410, symBinAddr: 0x31EA0, symSize: 0x20 } + - { offset: 0xB75C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionG0C_SitFTo', symObjAddr: 0x430, symBinAddr: 0x31EC0, symSize: 0x50 } + - { offset: 0xB7724, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionView_13cellForItemAtSo012UICollectiongE0CSo0lG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x480, symBinAddr: 0x31F10, symSize: 0x150 } + - { offset: 0xB781D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionView_15didSelectItemAtySo012UICollectionG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x5D0, symBinAddr: 0x32060, symSize: 0xA0 } + - { offset: 0xB784F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionView_15didSelectItemAtySo012UICollectionG0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x670, symBinAddr: 0x32100, symSize: 0xC0 } + - { offset: 0xB7A85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionViewSo012UICollectionG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x31A90, symSize: 0x20 } + - { offset: 0xB7AE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC14collectionViewSo012UICollectionG0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x31AB0, symSize: 0x20 } + - { offset: 0xB7B38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x31AD0, symSize: 0x20 } + - { offset: 0xB7B90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC12seeAllButtonSo8UIButtonCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x31AF0, symSize: 0x30 } + - { offset: 0xB7BFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC12awakeFromNibyyFTo', symObjAddr: 0x90, symBinAddr: 0x31B20, symSize: 0x90 } + - { offset: 0xB7C86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC13sellAllButtonyySo8UIButtonCFTo', symObjAddr: 0x120, symBinAddr: 0x31BB0, symSize: 0x60 } + - { offset: 0xB7CC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x180, symBinAddr: 0x31C10, symSize: 0xD0 } + - { offset: 0xB7D0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x250, symBinAddr: 0x31CE0, symSize: 0x30 } + - { offset: 0xB7D42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x280, symBinAddr: 0x31D10, symSize: 0xC0 } + - { offset: 0xB7D75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x340, symBinAddr: 0x31DD0, symSize: 0x30 } + - { offset: 0xB7D89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FavoritesCellCfD', symObjAddr: 0x370, symBinAddr: 0x31E00, symSize: 0x30 } + - { offset: 0xB816C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseAnchor_7elementAA3DOMO0F0CSgAA15AttributeParser_p_AA3XMLO7ElementCtKF', symObjAddr: 0x0, symBinAddr: 0x321D0, symSize: 0x1A0 } + - { offset: 0xB81E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseAnchor_7elementAA3DOMO0F0CSgAA15AttributeParser_p_AA3XMLO7ElementCtKF', symObjAddr: 0x0, symBinAddr: 0x321D0, symSize: 0x1A0 } + - { offset: 0xB82F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseText_5valueAA3DOMO0F0CAA15AttributeParser_p_SStKFTf4nnd_n', symObjAddr: 0x1A0, symBinAddr: 0x32370, symSize: 0x190 } + - { offset: 0xB83CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseText_7elementAA3DOMO0F0CSgAA15AttributeParser_p_AA3XMLO7ElementCtKFTf4nnd_n', symObjAddr: 0x330, symBinAddr: 0x32500, symSize: 0x120 } + - { offset: 0xB8449, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgWOd', symObjAddr: 0x4F0, symBinAddr: 0x32620, symSize: 0x31 } + - { offset: 0xB8DB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCfE', symObjAddr: 0x1290, symBinAddr: 0x338F0, symSize: 0xB0 } + - { offset: 0xB8DE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCfETo', symObjAddr: 0x1370, symBinAddr: 0x339D0, symSize: 0xB0 } + - { offset: 0xB8E10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCMa', symObjAddr: 0x1420, symBinAddr: 0x33A80, symSize: 0x20 } + - { offset: 0xB8E4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x1440, symBinAddr: 0x33AA0, symSize: 0x70 } + - { offset: 0xB8FB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x14B0, symBinAddr: 0x33B10, symSize: 0x180 } + - { offset: 0xB91DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0x1630, symBinAddr: 0x33C90, symSize: 0x3B0 } + - { offset: 0xB95C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x19E0, symBinAddr: 0x34040, symSize: 0xA0 } + - { offset: 0xB9606, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0_11willDisplay8forRowAtySo07UITableE0C_So0mE4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x1A80, symBinAddr: 0x340E0, symSize: 0x100 } + - { offset: 0xB96DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC06scrollE9DidScrollyySo08UIScrollE0CF', symObjAddr: 0x1B80, symBinAddr: 0x341E0, symSize: 0x50 } + - { offset: 0xB9757, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC06scrollE9DidScrollyySo08UIScrollE0CFTo', symObjAddr: 0x1BD0, symBinAddr: 0x34230, symSize: 0x50 } + - { offset: 0xB9782, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x1C20, symBinAddr: 0x34280, symSize: 0x20 } + - { offset: 0xB97CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x1C40, symBinAddr: 0x342A0, symSize: 0x30 } + - { offset: 0xB9840, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC10setupPanelyyF', symObjAddr: 0x1C70, symBinAddr: 0x342D0, symSize: 0xC0 } + - { offset: 0xB98DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC10setupPanelyyFTo', symObjAddr: 0x1D30, symBinAddr: 0x34390, symSize: 0x30 } + - { offset: 0xB991D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x1D60, symBinAddr: 0x343C0, symSize: 0x270 } + - { offset: 0xB9B53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x1FD0, symBinAddr: 0x34630, symSize: 0x50 } + - { offset: 0xB9B80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC27floatingPanelDidChangeStateyyAA08FloatinghF0CF', symObjAddr: 0x2020, symBinAddr: 0x34680, symSize: 0xE0 } + - { offset: 0xB9C52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC27floatingPanelDidChangeStateyyAA08FloatinghF0CFTo', symObjAddr: 0x2100, symBinAddr: 0x34760, symSize: 0x50 } + - { offset: 0xB9C98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCAA17SearchBarDelegateA2aDP06searchH19TextDidBeginEditingyyAA0gH0CFTW', symObjAddr: 0x2150, symBinAddr: 0x347B0, symSize: 0x60 } + - { offset: 0xB9CFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x2230, symBinAddr: 0x34810, symSize: 0x20 } + - { offset: 0xB9D4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x2250, symBinAddr: 0x34830, symSize: 0x40 } + - { offset: 0xB9E33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTf4d_n', symObjAddr: 0x2610, symBinAddr: 0x34BF0, symSize: 0xA0 } + - { offset: 0xB9EA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4dnn_n', symObjAddr: 0x26B0, symBinAddr: 0x34C90, symSize: 0x110 } + - { offset: 0xB9F08, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x27F0, symBinAddr: 0x34DC0, symSize: 0x20 } + - { offset: 0xB9F1C, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2810, symBinAddr: 0x34DE0, symSize: 0x10 } + - { offset: 0xB9F30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_TA', symObjAddr: 0x2860, symBinAddr: 0x34DF0, symSize: 0x10 } + - { offset: 0xB9F44, size: 0x8, addend: 0x0, symName: '_$sSo17OS_dispatch_queueCMa', symObjAddr: 0x2870, symBinAddr: 0x34E00, symSize: 0x40 } + - { offset: 0xB9F58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU0_TA', symObjAddr: 0x28B0, symBinAddr: 0x34E40, symSize: 0x10 } + - { offset: 0xB9F6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU_TA', symObjAddr: 0x2980, symBinAddr: 0x34E50, symSize: 0x10 } + - { offset: 0xBA380, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x32660, symSize: 0x20 } + - { offset: 0xBA3DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC05tableE0So07UITableE0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x32680, symSize: 0x30 } + - { offset: 0xBA42D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9searchBarAA06SearchH0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0x326B0, symSize: 0x20 } + - { offset: 0xBA485, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9searchBarAA06SearchH0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0x326D0, symSize: 0x30 } + - { offset: 0xBA4D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC09separatorE0So6UIViewCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x32700, symSize: 0x20 } + - { offset: 0xBA52C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC09separatorE0So6UIViewCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x32720, symSize: 0x30 } + - { offset: 0xBA5A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC11viewDidLoadyyFTo', symObjAddr: 0xF0, symBinAddr: 0x32750, symSize: 0xA0 } + - { offset: 0xBA634, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC014configureTableE0yyF', symObjAddr: 0x190, symBinAddr: 0x327F0, symSize: 0x1F0 } + - { offset: 0xBA754, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC10showLoaderyyF', symObjAddr: 0x380, symBinAddr: 0x329E0, symSize: 0x190 } + - { offset: 0xBA968, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyF', symObjAddr: 0x510, symBinAddr: 0x32B70, symSize: 0x2F0 } + - { offset: 0xBAC73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_', symObjAddr: 0x800, symBinAddr: 0x32E60, symSize: 0x580 } + - { offset: 0xBAE89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU_', symObjAddr: 0xD80, symBinAddr: 0x333E0, symSize: 0x80 } + - { offset: 0xBAEE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC9getPlacesyyFySayAA7POIDataCGSgcfU_yyScMYccfU0_', symObjAddr: 0xE00, symBinAddr: 0x33460, symSize: 0x150 } + - { offset: 0xBB08F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC10closePanelyyFTo', symObjAddr: 0xF50, symBinAddr: 0x335B0, symSize: 0x40 } + - { offset: 0xBB0C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xF90, symBinAddr: 0x335F0, symSize: 0x150 } + - { offset: 0xBB133, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x10E0, symBinAddr: 0x33740, symSize: 0x50 } + - { offset: 0xBB147, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1130, symBinAddr: 0x33790, symSize: 0x130 } + - { offset: 0xBB1A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1260, symBinAddr: 0x338C0, symSize: 0x30 } + - { offset: 0xBB1B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerCfD', symObjAddr: 0x1340, symBinAddr: 0x339A0, symSize: 0x30 } + - { offset: 0xBB46A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23DirectoryViewControllerC19getLocationParamter33_78381C2850B81E97E495CA315016B4E5LLSDySSypGyFTf4d_n', symObjAddr: 0x2290, symBinAddr: 0x34870, symSize: 0x380 } + - { offset: 0xBBA74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV13encodeElement_6indentSSAC0G0C_SitF', symObjAddr: 0x0, symBinAddr: 0x34EA0, symSize: 0x4A0 } + - { offset: 0xBBB67, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVySSG_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1cn_n', symObjAddr: 0x650, symBinAddr: 0x354B0, symSize: 0x60 } + - { offset: 0xBBD1F, size: 0x8, addend: 0x0, symName: '_$sSlsE8dropLasty11SubSequenceQzSiFSS_Tg5Tf4ng_n', symObjAddr: 0x1D10, symBinAddr: 0x36B70, symSize: 0xC0 } + - { offset: 0xBC0E1, size: 0x8, addend: 0x0, symName: '_$sSaySSGSayxGSKsWl', symObjAddr: 0x6B0, symBinAddr: 0x35510, symSize: 0x40 } + - { offset: 0xBC0F5, size: 0x8, addend: 0x0, symName: '_$sSaySSGMa', symObjAddr: 0x6F0, symBinAddr: 0x35550, symSize: 0x30 } + - { offset: 0xBC164, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFSS_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1cn_n', symObjAddr: 0x720, symBinAddr: 0x35580, symSize: 0xE0 } + - { offset: 0xBC3AA, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_SS_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1nnncn_n', symObjAddr: 0x800, symBinAddr: 0x35660, symSize: 0x790 } + - { offset: 0xBCA69, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSrySSG_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1nncn_n', symObjAddr: 0xF90, symBinAddr: 0x35DF0, symSize: 0x1A0 } + - { offset: 0xBCC94, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKFSS_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1nncn_n', symObjAddr: 0x1130, symBinAddr: 0x35F90, symSize: 0x2C0 } + - { offset: 0xBD036, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlFSS_Tg5105$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFSbSS_SStcfu_Tf1nnnnc_n', symObjAddr: 0x13F0, symBinAddr: 0x36250, symSize: 0x420 } + - { offset: 0xBD39E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV13encodeElement_6indentSSAC0G0C_SitF', symObjAddr: 0x0, symBinAddr: 0x34EA0, symSize: 0x4A0 } + - { offset: 0xBDA11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV18encodeElementStart33_714E3D04D4D736208724671E75290AF9LL_6indentSSAC0G0C_SitF', symObjAddr: 0x4A0, symBinAddr: 0x35340, symSize: 0x170 } + - { offset: 0xBDCE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV16encodeAttributes33_714E3D04D4D736208724671E75290AF9LLySSSDyS2SGFTf4nd_n', symObjAddr: 0x1810, symBinAddr: 0x36670, symSize: 0x500 } + - { offset: 0xBE449, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x36C30, symSize: 0x10 } + - { offset: 0xBE4BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x10, symBinAddr: 0x36C40, symSize: 0x50 } + - { offset: 0xBE598, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x60, symBinAddr: 0x36C90, symSize: 0x30 } + - { offset: 0xBE615, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x90, symBinAddr: 0x36CC0, symSize: 0x50 } + - { offset: 0xBE6D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x220, symBinAddr: 0x36E50, symSize: 0x20 } + - { offset: 0xBE6F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x240, symBinAddr: 0x36E70, symSize: 0x20 } + - { offset: 0xBE74B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xA00, symBinAddr: 0x37620, symSize: 0x70 } + - { offset: 0xBE81E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0xA70, symBinAddr: 0x37690, symSize: 0x50 } + - { offset: 0xBE89C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xAC0, symBinAddr: 0x376E0, symSize: 0x30 } + - { offset: 0xBE8EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xAF0, symBinAddr: 0x37710, symSize: 0x50 } + - { offset: 0xBE950, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0xBF0, symBinAddr: 0x37800, symSize: 0x20 } + - { offset: 0xBE96C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0xC10, symBinAddr: 0x37820, symSize: 0x20 } + - { offset: 0xBE9B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x1AB0, symBinAddr: 0x38610, symSize: 0x20 } + - { offset: 0xBE9CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x1AD0, symBinAddr: 0x38630, symSize: 0x20 } + - { offset: 0xBEB99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseCMa', symObjAddr: 0x280, symBinAddr: 0x36EB0, symSize: 0x20 } + - { offset: 0xBED99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataCMa', symObjAddr: 0xDC0, symBinAddr: 0x379D0, symSize: 0x20 } + - { offset: 0xBEF74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailCMa', symObjAddr: 0x1B10, symBinAddr: 0x38670, symSize: 0x20 } + - { offset: 0xBEF88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOAEs0H3KeyAAWl', symObjAddr: 0x1F10, symBinAddr: 0x38A00, symSize: 0x30 } + - { offset: 0xBEF9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOAEs0F3KeyAAWl', symObjAddr: 0x1F70, symBinAddr: 0x38A30, symSize: 0x30 } + - { offset: 0xBEFB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVACSeAAWl', symObjAddr: 0x2040, symBinAddr: 0x38B00, symSize: 0x30 } + - { offset: 0xBEFC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOAFs0F3KeyAAWl', symObjAddr: 0x20B0, symBinAddr: 0x38B70, symSize: 0x30 } + - { offset: 0xBEFD8, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE6decode2asxSgxm_tSeRzlFSayAA15LocalizedObjectVG_Tt0g5', symObjAddr: 0x20E0, symBinAddr: 0x38BA0, symSize: 0x130 } + - { offset: 0xBF079, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVSgWOe', symObjAddr: 0x2240, symBinAddr: 0x38CD0, symSize: 0x20 } + - { offset: 0xBF08D, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationOWOe', symObjAddr: 0x2260, symBinAddr: 0x38CF0, symSize: 0x40 } + - { offset: 0xBF0A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVACSEAAWl', symObjAddr: 0x22A0, symBinAddr: 0x38D30, symSize: 0x30 } + - { offset: 0xBF0B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOwet', symObjAddr: 0x2480, symBinAddr: 0x38EF0, symSize: 0x80 } + - { offset: 0xBF0C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOwst', symObjAddr: 0x2500, symBinAddr: 0x38F70, symSize: 0xD0 } + - { offset: 0xBF0DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOwui', symObjAddr: 0x25F0, symBinAddr: 0x39040, symSize: 0x10 } + - { offset: 0xBF0F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOMa', symObjAddr: 0x2600, symBinAddr: 0x39050, symSize: 0x10 } + - { offset: 0xBF105, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOwet', symObjAddr: 0x2610, symBinAddr: 0x39060, symSize: 0x80 } + - { offset: 0xBF119, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOwst', symObjAddr: 0x2690, symBinAddr: 0x390E0, symSize: 0xD0 } + - { offset: 0xBF12D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOMa', symObjAddr: 0x2790, symBinAddr: 0x391B0, symSize: 0x10 } + - { offset: 0xBF141, size: 0x8, addend: 0x0, symName: ___swift_memcpy0_1, symObjAddr: 0x27A0, symBinAddr: 0x391C0, symSize: 0x10 } + - { offset: 0xBF155, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOwet', symObjAddr: 0x27B0, symBinAddr: 0x391D0, symSize: 0x50 } + - { offset: 0xBF169, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOwst', symObjAddr: 0x2800, symBinAddr: 0x39220, symSize: 0xA0 } + - { offset: 0xBF17D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOwug', symObjAddr: 0x28A0, symBinAddr: 0x392C0, symSize: 0x10 } + - { offset: 0xBF191, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOMa', symObjAddr: 0x28D0, symBinAddr: 0x392D0, symSize: 0x10 } + - { offset: 0xBF1A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x28E0, symBinAddr: 0x392E0, symSize: 0x10 } + - { offset: 0xBF1B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x28F0, symBinAddr: 0x392F0, symSize: 0x30 } + - { offset: 0xBF1CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSHAASQWb', symObjAddr: 0x2920, symBinAddr: 0x39320, symSize: 0x10 } + - { offset: 0xBF1E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOAESQAAWl', symObjAddr: 0x2930, symBinAddr: 0x39330, symSize: 0x30 } + - { offset: 0xBF1F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOSHAASQWb', symObjAddr: 0x2960, symBinAddr: 0x39360, symSize: 0x10 } + - { offset: 0xBF209, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOAFSQAAWl', symObjAddr: 0x2970, symBinAddr: 0x39370, symSize: 0x30 } + - { offset: 0xBF21D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x29A0, symBinAddr: 0x393A0, symSize: 0x10 } + - { offset: 0xBF231, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x29B0, symBinAddr: 0x393B0, symSize: 0x30 } + - { offset: 0xBF245, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x29E0, symBinAddr: 0x393E0, symSize: 0x10 } + - { offset: 0xBF259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x29F0, symBinAddr: 0x393F0, symSize: 0x30 } + - { offset: 0xBF26D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2A20, symBinAddr: 0x39420, symSize: 0x10 } + - { offset: 0xBF281, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2A30, symBinAddr: 0x39430, symSize: 0x30 } + - { offset: 0xBF295, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x2A60, symBinAddr: 0x39460, symSize: 0x10 } + - { offset: 0xBF2A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x2A70, symBinAddr: 0x39470, symSize: 0x30 } + - { offset: 0xBF2BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2AA0, symBinAddr: 0x394A0, symSize: 0x10 } + - { offset: 0xBF2D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2AB0, symBinAddr: 0x394B0, symSize: 0x30 } + - { offset: 0xBF2E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x2AE0, symBinAddr: 0x394E0, symSize: 0x10 } + - { offset: 0xBF2F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x2AF0, symBinAddr: 0x394F0, symSize: 0x30 } + - { offset: 0xBF351, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSYAASY8rawValuexSg03RawK0Qz_tcfCTW', symObjAddr: 0xE0, symBinAddr: 0x36D10, symSize: 0x60 } + - { offset: 0xBF391, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x140, symBinAddr: 0x36D70, symSize: 0x30 } + - { offset: 0xBF3D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x170, symBinAddr: 0x36DA0, symSize: 0x30 } + - { offset: 0xBF43D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1A0, symBinAddr: 0x36DD0, symSize: 0x60 } + - { offset: 0xBF494, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP8intValueSiSgvgTW', symObjAddr: 0x200, symBinAddr: 0x36E30, symSize: 0x10 } + - { offset: 0xBF4A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC10CodingKeysOs0H3KeyAAsAFP8intValuexSgSi_tcfCTW', symObjAddr: 0x210, symBinAddr: 0x36E40, symSize: 0x10 } + - { offset: 0xBF4E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseCfD', symObjAddr: 0x260, symBinAddr: 0x36E90, symSize: 0x20 } + - { offset: 0xBF526, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x2A0, symBinAddr: 0x36ED0, symSize: 0x100 } + - { offset: 0xBF557, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x3A0, symBinAddr: 0x36FD0, symSize: 0x160 } + - { offset: 0xBF588, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetVenueInfoResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x520, symBinAddr: 0x37150, symSize: 0x20 } + - { offset: 0xBF5A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC06cachedE0AcA06CachedD0C_tcfc', symObjAddr: 0x540, symBinAddr: 0x37170, symSize: 0x340 } + - { offset: 0xBF604, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xB40, symBinAddr: 0x37760, symSize: 0x30 } + - { offset: 0xBF62D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0xB70, symBinAddr: 0x37790, symSize: 0x30 } + - { offset: 0xBF641, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xBA0, symBinAddr: 0x377C0, symSize: 0x10 } + - { offset: 0xBF667, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0xBB0, symBinAddr: 0x377D0, symSize: 0x20 } + - { offset: 0xBF6AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysOs0F3KeyAAsAFP8intValuexSgSi_tcfCTW', symObjAddr: 0xBE0, symBinAddr: 0x377F0, symSize: 0x10 } + - { offset: 0xBF6C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC7getNameSSSgyF', symObjAddr: 0xC30, symBinAddr: 0x37840, symSize: 0xF0 } + - { offset: 0xBF73E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataCfd', symObjAddr: 0xD20, symBinAddr: 0x37930, symSize: 0x80 } + - { offset: 0xBF761, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataCfD', symObjAddr: 0xDA0, symBinAddr: 0x379B0, symSize: 0x20 } + - { offset: 0xBF784, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC6encode2toys7Encoder_p_tKF', symObjAddr: 0xDE0, symBinAddr: 0x379F0, symSize: 0x540 } + - { offset: 0xBF7B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x1320, symBinAddr: 0x37F30, symSize: 0x590 } + - { offset: 0xBF7E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x18D0, symBinAddr: 0x384E0, symSize: 0x20 } + - { offset: 0xBF827, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x18F0, symBinAddr: 0x38500, symSize: 0x10 } + - { offset: 0xBF86D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x19A0, symBinAddr: 0x38510, symSize: 0x30 } + - { offset: 0xBF8A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x19D0, symBinAddr: 0x38540, symSize: 0xC0 } + - { offset: 0xBF906, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC10CodingKeys33_FBE678A01224144075F96E5141E98FD5LLOs0F3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x1AA0, symBinAddr: 0x38600, symSize: 0x10 } + - { offset: 0xBF933, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailCfD', symObjAddr: 0x1AF0, symBinAddr: 0x38650, symSize: 0x20 } + - { offset: 0xBF974, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC6encode2toys7Encoder_p_tKF', symObjAddr: 0x1B30, symBinAddr: 0x38690, symSize: 0x140 } + - { offset: 0xBF9A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x1C70, symBinAddr: 0x387D0, symSize: 0x190 } + - { offset: 0xBF9D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12CampusDetailCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1E80, symBinAddr: 0x389E0, symSize: 0x20 } + - { offset: 0xBFA26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueDataC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x2B20, symBinAddr: 0x39520, symSize: 0x60 } + - { offset: 0xBFDFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfC', symObjAddr: 0x0, symBinAddr: 0x39580, symSize: 0x50 } + - { offset: 0xBFE98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueCMa', symObjAddr: 0xB0, symBinAddr: 0x39630, symSize: 0x20 } + - { offset: 0xBFF15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfC', symObjAddr: 0x0, symBinAddr: 0x39580, symSize: 0x50 } + - { offset: 0xBFF29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x50, symBinAddr: 0x395D0, symSize: 0x60 } + - { offset: 0xBFF93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xD0, symBinAddr: 0x39650, symSize: 0x50 } + - { offset: 0xBFFDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueCfD', symObjAddr: 0x120, symBinAddr: 0x396A0, symSize: 0x2B } + - { offset: 0xC0374, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC12fetchRequestSo07NSFetchI0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x396D0, symSize: 0x70 } + - { offset: 0xC0421, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC12fetchRequestSo07NSFetchI0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x396D0, symSize: 0x70 } + - { offset: 0xC048C, size: 0x8, addend: 0x0, symName: _keypath_get_selector_edgeId, symObjAddr: 0x70, symBinAddr: 0x39740, symSize: 0x10 } + - { offset: 0xC04A0, size: 0x8, addend: 0x0, symName: _keypath_get_selector_floorId, symObjAddr: 0xD0, symBinAddr: 0x397A0, symSize: 0x10 } + - { offset: 0xC04B4, size: 0x8, addend: 0x0, symName: _keypath_get_selector_latitude, symObjAddr: 0x130, symBinAddr: 0x39800, symSize: 0x10 } + - { offset: 0xC04C8, size: 0x8, addend: 0x0, symName: _keypath_get_selector_longitude, symObjAddr: 0x190, symBinAddr: 0x39860, symSize: 0x10 } + - { offset: 0xC04DC, size: 0x8, addend: 0x0, symName: _keypath_get_selector_navigationAvoid, symObjAddr: 0x1F0, symBinAddr: 0x398C0, symSize: 0x10 } + - { offset: 0xC04F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvpACTK', symObjAddr: 0x200, symBinAddr: 0x398D0, symSize: 0x60 } + - { offset: 0xC0508, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC15navigationAvoidSSSgvpACTk', symObjAddr: 0x270, symBinAddr: 0x39940, symSize: 0x50 } + - { offset: 0xC0520, size: 0x8, addend: 0x0, symName: _keypath_get_selector_venueId, symObjAddr: 0x2D0, symBinAddr: 0x399A0, symSize: 0x10 } + - { offset: 0xC0534, size: 0x8, addend: 0x0, symName: _keypath_get_selector_x, symObjAddr: 0x330, symBinAddr: 0x39A00, symSize: 0x10 } + - { offset: 0xC0548, size: 0x8, addend: 0x0, symName: _keypath_get_selector_y, symObjAddr: 0x390, symBinAddr: 0x39A60, symSize: 0x10 } + - { offset: 0xC0567, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC7matches5otherSbAA0d8FavoriteE0C_tF', symObjAddr: 0x3F0, symBinAddr: 0x39AC0, symSize: 0x1F0 } + - { offset: 0xC05BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC03mapE08locationACXDAA0d8FavoriteE0C_tFTf4nn_g', symObjAddr: 0x5E0, symBinAddr: 0x39CB0, symSize: 0x1CA } + - { offset: 0xC0BF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCfE', symObjAddr: 0xD0, symBinAddr: 0x39EA0, symSize: 0x20 } + - { offset: 0xC0C3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCMU', symObjAddr: 0x150, symBinAddr: 0x39F20, symSize: 0x10 } + - { offset: 0xC0C50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCMa', symObjAddr: 0x160, symBinAddr: 0x39F30, symSize: 0x30 } + - { offset: 0xC0C64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCMr', symObjAddr: 0x190, symBinAddr: 0x39F60, symSize: 0x40 } + - { offset: 0xC0C78, size: 0x8, addend: 0x0, symName: ___swift_memcpy25_4, symObjAddr: 0x210, symBinAddr: 0x39FA0, symSize: 0x20 } + - { offset: 0xC0C8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwet', symObjAddr: 0x230, symBinAddr: 0x39FC0, symSize: 0x50 } + - { offset: 0xC0CA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwst', symObjAddr: 0x280, symBinAddr: 0x3A010, symSize: 0x60 } + - { offset: 0xC0CB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwug', symObjAddr: 0x2E0, symBinAddr: 0x3A070, symSize: 0x20 } + - { offset: 0xC0CC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwup', symObjAddr: 0x300, symBinAddr: 0x3A090, symSize: 0x10 } + - { offset: 0xC0CDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOwui', symObjAddr: 0x310, symBinAddr: 0x3A0A0, symSize: 0x30 } + - { offset: 0xC0CF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentOMa', symObjAddr: 0x340, symBinAddr: 0x3A0D0, symSize: 0x10 } + - { offset: 0xC0D04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVWOh', symObjAddr: 0x350, symBinAddr: 0x3A0E0, symSize: 0x30 } + - { offset: 0xC0D18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentO15CoordinateSpaceOMa', symObjAddr: 0x670, symBinAddr: 0x3A270, symSize: 0x10 } + - { offset: 0xC0D2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentO15CoordinateSpaceOSHAASQWb', symObjAddr: 0x680, symBinAddr: 0x3A280, symSize: 0x10 } + - { offset: 0xC0D40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7SegmentO15CoordinateSpaceOAISQAAWl', symObjAddr: 0x690, symBinAddr: 0x3A290, symSize: 0x2D } + - { offset: 0xC0D67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7CommandO8rawValues7UnicodeO6ScalarVvg', symObjAddr: 0xB0, symBinAddr: 0x39E80, symSize: 0x20 } + - { offset: 0xC0DB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathCfD', symObjAddr: 0xF0, symBinAddr: 0x39EC0, symSize: 0x60 } + - { offset: 0xC0DFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4PathC7CommandO8rawValueAGSgs7UnicodeO6ScalarV_tcfCTf4nd_n', symObjAddr: 0x380, symBinAddr: 0x3A110, symSize: 0x160 } + - { offset: 0xC11C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOMa', symObjAddr: 0x140, symBinAddr: 0x3A2C0, symSize: 0x10 } + - { offset: 0xC11D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOSHAASQWb', symObjAddr: 0x150, symBinAddr: 0x3A2D0, symSize: 0x10 } + - { offset: 0xC11EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOACSQAAWl', symObjAddr: 0x160, symBinAddr: 0x3A2E0, symSize: 0x30 } + - { offset: 0xC12C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1F0, symBinAddr: 0x3A360, symSize: 0x2A } + - { offset: 0xC1380, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x1A0, symBinAddr: 0x3A310, symSize: 0x30 } + - { offset: 0xC1447, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AlertTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1D0, symBinAddr: 0x3A340, symSize: 0x20 } + - { offset: 0xC1822, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC9cacheDataAcA0df5CacheH0C_tcfc', symObjAddr: 0x0, symBinAddr: 0x3A390, symSize: 0x1B0 } + - { offset: 0xC1A4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCMa', symObjAddr: 0x940, symBinAddr: 0x3ACC0, symSize: 0x20 } + - { offset: 0xC1A6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xC10, symBinAddr: 0x3AF90, symSize: 0x10 } + - { offset: 0xC1A9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOAEs0G3KeyAAWl', symObjAddr: 0xC90, symBinAddr: 0x3AFA0, symSize: 0x30 } + - { offset: 0xC1AB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0xCF0, symBinAddr: 0x3AFD0, symSize: 0x110 } + - { offset: 0xC1AEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOwet', symObjAddr: 0xE20, symBinAddr: 0x3B0E0, symSize: 0x80 } + - { offset: 0xC1B02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOwst', symObjAddr: 0xEA0, symBinAddr: 0x3B160, symSize: 0xD0 } + - { offset: 0xC1B16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOMa', symObjAddr: 0xFA0, symBinAddr: 0x3B230, symSize: 0x10 } + - { offset: 0xC1B2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASQWb', symObjAddr: 0xFB0, symBinAddr: 0x3B240, symSize: 0x10 } + - { offset: 0xC1B3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOAESQAAWl', symObjAddr: 0xFC0, symBinAddr: 0x3B250, symSize: 0x30 } + - { offset: 0xC1B52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xFF0, symBinAddr: 0x3B280, symSize: 0x10 } + - { offset: 0xC1B66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1000, symBinAddr: 0x3B290, symSize: 0x30 } + - { offset: 0xC1B7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1030, symBinAddr: 0x3B2C0, symSize: 0x10 } + - { offset: 0xC1B8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1040, symBinAddr: 0x3B2D0, symSize: 0x30 } + - { offset: 0xC1BA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC9cacheDataAcA0df5CacheH0C_tcfc', symObjAddr: 0x0, symBinAddr: 0x3A390, symSize: 0x1B0 } + - { offset: 0xC1BE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1B0, symBinAddr: 0x3A540, symSize: 0x10 } + - { offset: 0xC1C1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x1C0, symBinAddr: 0x3A550, symSize: 0x20 } + - { offset: 0xC1C63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1E0, symBinAddr: 0x3A570, symSize: 0x10 } + - { offset: 0xC1C7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1F0, symBinAddr: 0x3A580, symSize: 0x10 } + - { offset: 0xC1C9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x420, symBinAddr: 0x3A7A0, symSize: 0x20 } + - { offset: 0xC1CBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x440, symBinAddr: 0x3A7C0, symSize: 0x20 } + - { offset: 0xC1D20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSYAASY8rawValuexSg03RawJ0Qz_tcfCTW', symObjAddr: 0x200, symBinAddr: 0x3A590, symSize: 0x30 } + - { offset: 0xC1D60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOSYAASY8rawValue03RawJ0QzvgTW', symObjAddr: 0x230, symBinAddr: 0x3A5C0, symSize: 0xE0 } + - { offset: 0xC1D9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x310, symBinAddr: 0x3A6A0, symSize: 0xD0 } + - { offset: 0xC1DF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x3E0, symBinAddr: 0x3A770, symSize: 0x20 } + - { offset: 0xC1E38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysOs0G3KeyAAsAFP8intValuexSgSi_tcfCTW', symObjAddr: 0x410, symBinAddr: 0x3A790, symSize: 0x10 } + - { offset: 0xC1E4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x460, symBinAddr: 0x3A7E0, symSize: 0x2C0 } + - { offset: 0xC1EAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC5match5placeSbAA5PlaceCSg_tF', symObjAddr: 0x720, symBinAddr: 0x3AAA0, symSize: 0x1F0 } + - { offset: 0xC1F8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCfD', symObjAddr: 0x910, symBinAddr: 0x3AC90, symSize: 0x30 } + - { offset: 0xC1FCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC6encode2toys7Encoder_p_tKF', symObjAddr: 0x960, symBinAddr: 0x3ACE0, symSize: 0x240 } + - { offset: 0xC200A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xBA0, symBinAddr: 0x3AF20, symSize: 0x50 } + - { offset: 0xC2034, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xBF0, symBinAddr: 0x3AF70, symSize: 0x20 } + - { offset: 0xC204E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22SharedFavoriteLocationC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x1070, symBinAddr: 0x3B300, symSize: 0x53 } + - { offset: 0xC241F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV14expandOutlines3for6strokeAA9LayerTreeO4PathCSgAJ_AH16StrokeAttributesVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x3B360, symSize: 0x185 } + - { offset: 0xC2492, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV14expandOutlines3for6strokeAA9LayerTreeO4PathCSgAJ_AH16StrokeAttributesVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x3B360, symSize: 0x185 } + - { offset: 0xC2A6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x3B4F0, symSize: 0x50 } + - { offset: 0xC2B66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewCMa', symObjAddr: 0x2D0, symBinAddr: 0x3B7C0, symSize: 0x20 } + - { offset: 0xC2B7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5imageSo7UIImageCSgvgySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0x320, symBinAddr: 0x3B810, symSize: 0x10 } + - { offset: 0xC2B8E, size: 0x8, addend: 0x0, symName: '_$sSo30UIGraphicsImageRendererContextCIgg_ABIegg_TRTA', symObjAddr: 0x350, symBinAddr: 0x3B840, symSize: 0x20 } + - { offset: 0xC2BA2, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x370, symBinAddr: 0x3B860, symSize: 0x20 } + - { offset: 0xC2BB6, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x390, symBinAddr: 0x3B880, symSize: 0xE } + - { offset: 0xC2C02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x3B4F0, symSize: 0x50 } + - { offset: 0xC2CCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5imageSo7UIImageCSgvg', symObjAddr: 0x50, symBinAddr: 0x3B540, symSize: 0x1A0 } + - { offset: 0xC2D66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5imageSo7UIImageCSgvgySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0x1F0, symBinAddr: 0x3B6E0, symSize: 0x80 } + - { offset: 0xC2DCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x270, symBinAddr: 0x3B760, symSize: 0x30 } + - { offset: 0xC2E2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NodeSymbolViewCfD', symObjAddr: 0x2A0, symBinAddr: 0x3B790, symSize: 0x30 } + - { offset: 0xC31BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC8drawText2inySo6CGRectV_tFTo', symObjAddr: 0x0, symBinAddr: 0x3B890, symSize: 0xE0 } + - { offset: 0xC32EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelCMa', symObjAddr: 0x3C0, symBinAddr: 0x3BC50, symSize: 0x14 } + - { offset: 0xC3345, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC8drawText2inySo6CGRectV_tFTo', symObjAddr: 0x0, symBinAddr: 0x3B890, symSize: 0xE0 } + - { offset: 0xC33B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0xE0, symBinAddr: 0x3B970, symSize: 0x70 } + - { offset: 0xC3453, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC5frameACSo6CGRectV_tcfc', symObjAddr: 0x150, symBinAddr: 0x3B9E0, symSize: 0x100 } + - { offset: 0xC34E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x250, symBinAddr: 0x3BAE0, symSize: 0x30 } + - { offset: 0xC351D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x280, symBinAddr: 0x3BB10, symSize: 0xE0 } + - { offset: 0xC35AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x360, symBinAddr: 0x3BBF0, symSize: 0x30 } + - { offset: 0xC35C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14IntrinsicLabelCfD', symObjAddr: 0x390, symBinAddr: 0x3BC20, symSize: 0x30 } + - { offset: 0xC3974, size: 0x8, addend: 0x0, symName: _UIEdgeInsetsInsetRect, symObjAddr: 0x3D4, symBinAddr: 0x3BC64, symSize: 0x48 } + - { offset: 0xC3982, size: 0x8, addend: 0x0, symName: _UIEdgeInsetsInsetRect, symObjAddr: 0x3D4, symBinAddr: 0x3BC64, symSize: 0x48 } + - { offset: 0xC3A7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingCMa', symObjAddr: 0xB0, symBinAddr: 0x3BD10, symSize: 0x20 } + - { offset: 0xC3AE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x50, symBinAddr: 0x3BCB0, symSize: 0x60 } + - { offset: 0xC3B4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xD0, symBinAddr: 0x3BD30, symSize: 0x50 } + - { offset: 0xC3B97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampaignTrackingCfD', symObjAddr: 0x120, symBinAddr: 0x3BD80, symSize: 0x2B } + - { offset: 0xC3F31, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE4make6bounds6matrix4step6tiling9isColored4drawABSo6CGRectV_So17CGAffineTransformVSo6CGSizeVSo0A6TilingVSbySo09CGContextB0actFZySvSg_ATtcfU_To', symObjAddr: 0x0, symBinAddr: 0x3BDB0, symSize: 0x60 } + - { offset: 0xC3FBE, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE4make6bounds6matrix4step6tiling9isColored4drawABSo6CGRectV_So17CGAffineTransformVSo6CGSizeVSo0A6TilingVSbySo09CGContextB0actFZySvSg_ATtcfU_To', symObjAddr: 0x0, symBinAddr: 0x3BDB0, symSize: 0x60 } + - { offset: 0xC4039, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE4make6bounds6matrix4step6tiling9isColored4drawABSo6CGRectV_So17CGAffineTransformVSo6CGSizeVSo0A6TilingVSbySo09CGContextB0actFZySvSgcfU0_To', symObjAddr: 0x60, symBinAddr: 0x3BE10, symSize: 0x20 } + - { offset: 0xC407F, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE3Box33_101E42A8A083D3733C304760DAD44B97LLCMa', symObjAddr: 0xA0, symBinAddr: 0x3BE50, symSize: 0x14 } + - { offset: 0xC4126, size: 0x8, addend: 0x0, symName: '_$sSo12CGPatternRefa8PenNavUIE3Box33_101E42A8A083D3733C304760DAD44B97LLCfD', symObjAddr: 0x80, symBinAddr: 0x3BE30, symSize: 0x20 } + - { offset: 0xC44DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3BE70, symSize: 0x20 } + - { offset: 0xC47F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellCfETo', symObjAddr: 0x980, symBinAddr: 0x3C7F0, symSize: 0x70 } + - { offset: 0xC4827, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellCMa', symObjAddr: 0x9F0, symBinAddr: 0x3C860, symSize: 0x20 } + - { offset: 0xC483B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC8setImage3foryAA0D0C_tFySo7UIImageCSgcfU_TA', symObjAddr: 0xA60, symBinAddr: 0x3C8D0, symSize: 0x20 } + - { offset: 0xC4984, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3BE70, symSize: 0x20 } + - { offset: 0xC49E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x3BE90, symSize: 0x20 } + - { offset: 0xC4A37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC13subtitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x3BEB0, symSize: 0x20 } + - { offset: 0xC4A8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC13subtitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x3BED0, symSize: 0x20 } + - { offset: 0xC4ADF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC013favoriteImageF0So07UIImageF0CSgvgTo', symObjAddr: 0x80, symBinAddr: 0x3BEF0, symSize: 0x20 } + - { offset: 0xC4B39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC013favoriteImageF0So07UIImageF0CSgvsTo', symObjAddr: 0xA0, symBinAddr: 0x3BF10, symSize: 0x20 } + - { offset: 0xC4B8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC12awakeFromNibyyFTo', symObjAddr: 0xC0, symBinAddr: 0x3BF30, symSize: 0x30 } + - { offset: 0xC4BE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC7setData8favoriteyAA0D0C_tF', symObjAddr: 0xF0, symBinAddr: 0x3BF60, symSize: 0x100 } + - { offset: 0xC4C92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC8setImage3foryAA0D0C_tF', symObjAddr: 0x1F0, symBinAddr: 0x3C060, symSize: 0x1F0 } + - { offset: 0xC4D71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC8setImage3foryAA0D0C_tFySo7UIImageCSgcfU_', symObjAddr: 0x3E0, symBinAddr: 0x3C250, symSize: 0x1C0 } + - { offset: 0xC4E7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC04showD6DetailyySo8UIButtonCFTo', symObjAddr: 0x5A0, symBinAddr: 0x3C410, symSize: 0x80 } + - { offset: 0xC4EEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC15prepareForReuseyyF', symObjAddr: 0x620, symBinAddr: 0x3C490, symSize: 0x110 } + - { offset: 0xC4F74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC15prepareForReuseyyFTo', symObjAddr: 0x730, symBinAddr: 0x3C5A0, symSize: 0x30 } + - { offset: 0xC4F88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfc', symObjAddr: 0x760, symBinAddr: 0x3C5D0, symSize: 0xD0 } + - { offset: 0xC4FC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfcTo', symObjAddr: 0x830, symBinAddr: 0x3C6A0, symSize: 0x30 } + - { offset: 0xC5001, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x860, symBinAddr: 0x3C6D0, symSize: 0xC0 } + - { offset: 0xC5034, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x920, symBinAddr: 0x3C790, symSize: 0x30 } + - { offset: 0xC5048, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FavoriteTableViewCellCfD', symObjAddr: 0x950, symBinAddr: 0x3C7C0, symSize: 0x30 } + - { offset: 0xC53F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidStairsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3C8F0, symSize: 0x20 } + - { offset: 0xC5A4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCfE', symObjAddr: 0x1030, symBinAddr: 0x3D920, symSize: 0x90 } + - { offset: 0xC5A7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCfETo', symObjAddr: 0x10F0, symBinAddr: 0x3D9E0, symSize: 0x90 } + - { offset: 0xC5AAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCMa', symObjAddr: 0x1180, symBinAddr: 0x3DA70, symSize: 0x20 } + - { offset: 0xC5BC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutCMa', symObjAddr: 0x1260, symBinAddr: 0x3DB20, symSize: 0x20 } + - { offset: 0xC5BFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x1280, symBinAddr: 0x3DB40, symSize: 0x70 } + - { offset: 0xC5C70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x12F0, symBinAddr: 0x3DBB0, symSize: 0x30 } + - { offset: 0xC5CB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC10setupPanelyyF', symObjAddr: 0x1320, symBinAddr: 0x3DBE0, symSize: 0x90 } + - { offset: 0xC5D2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC10setupPanelyyFTo', symObjAddr: 0x13B0, symBinAddr: 0x3DC70, symSize: 0x30 } + - { offset: 0xC5D81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1460, symBinAddr: 0x3DCA0, symSize: 0xC0 } + - { offset: 0xC5DB4, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1550, symBinAddr: 0x3DD80, symSize: 0x20 } + - { offset: 0xC5DC8, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1570, symBinAddr: 0x3DDA0, symSize: 0x10 } + - { offset: 0xC5E9A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV5merge_8isUnique16uniquingKeysWithyqd__n_Sbq_q__q_tKXEtKSTRd__x_q_t7ElementRtd__lF8PenNavUI11RouteOptionV0mN3KeyO_SbSayAL_SbtGTg5012$sSD20uniquegh33ValuesSDyxq_Gqd__n_tcSTRd__x_q_t7i24Rtd__lufcq_q__q_tKXEfU_8jk4UI11mn5V0iJ3O17O_SbSayAI_SbtGTG5Tf1nncn_n', symObjAddr: 0x1580, symBinAddr: 0x3DDB0, symSize: 0x390 } + - { offset: 0xC60BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC_AA0dE15LayoutAnchoring_ptWOh', symObjAddr: 0x1AE0, symBinAddr: 0x3E290, symSize: 0x30 } + - { offset: 0xC60D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5applyyyFyycfU_TA', symObjAddr: 0x1B60, symBinAddr: 0x3E2F0, symSize: 0x20 } + - { offset: 0xC641E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidStairsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3C8F0, symSize: 0x20 } + - { offset: 0xC647C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidStairsSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x3C910, symSize: 0x30 } + - { offset: 0xC64CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC21avoidEscalatorsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x3C940, symSize: 0x20 } + - { offset: 0xC651E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC21avoidEscalatorsSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x3C960, symSize: 0x30 } + - { offset: 0xC656D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC20avoidElevatorsSwitchSo8UISwitchCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x3C990, symSize: 0x20 } + - { offset: 0xC65C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC20avoidElevatorsSwitchSo8UISwitchCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x3C9B0, symSize: 0x30 } + - { offset: 0xC660F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC18avoidOutdoorSwitchSo8UISwitchCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x3C9E0, symSize: 0x20 } + - { offset: 0xC6662, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC18avoidOutdoorSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x3CA00, symSize: 0x30 } + - { offset: 0xC66B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidIndoorSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x140, symBinAddr: 0x3CA30, symSize: 0x20 } + - { offset: 0xC6704, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC17avoidIndoorSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x160, symBinAddr: 0x3CA50, symSize: 0x30 } + - { offset: 0xC6753, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC15avoidRampSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x190, symBinAddr: 0x3CA80, symSize: 0x20 } + - { offset: 0xC67A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC15avoidRampSwitchSo8UISwitchCSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x3CAA0, symSize: 0x20 } + - { offset: 0xC67FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC011environmenteF0So6UIViewCSgvgTo', symObjAddr: 0x1D0, symBinAddr: 0x3CAC0, symSize: 0x20 } + - { offset: 0xC6855, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC011environmenteF0So6UIViewCSgvsTo', symObjAddr: 0x1F0, symBinAddr: 0x3CAE0, symSize: 0x20 } + - { offset: 0xC68A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC8switchesSaySo8UISwitchCGvg', symObjAddr: 0x210, symBinAddr: 0x3CB00, symSize: 0x130 } + - { offset: 0xC69F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x340, symBinAddr: 0x3CC30, symSize: 0x60 } + - { offset: 0xC6A35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC05setupdE0yyF', symObjAddr: 0x3A0, symBinAddr: 0x3CC90, symSize: 0x720 } + - { offset: 0xC7105, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC6cancelyyFTo', symObjAddr: 0xAC0, symBinAddr: 0x3D3B0, symSize: 0x40 } + - { offset: 0xC713B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5applyyyF', symObjAddr: 0xB00, symBinAddr: 0x3D3F0, symSize: 0x1D0 } + - { offset: 0xC7286, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5applyyyFyycfU_', symObjAddr: 0xCD0, symBinAddr: 0x3D5C0, symSize: 0xB0 } + - { offset: 0xC7327, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5applyyyFTo', symObjAddr: 0xD80, symBinAddr: 0x3D670, symSize: 0x30 } + - { offset: 0xC733B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xDB0, symBinAddr: 0x3D6A0, symSize: 0x110 } + - { offset: 0xC737C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xEC0, symBinAddr: 0x3D7B0, symSize: 0x50 } + - { offset: 0xC73BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xF10, symBinAddr: 0x3D800, symSize: 0xF0 } + - { offset: 0xC73F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1000, symBinAddr: 0x3D8F0, symSize: 0x30 } + - { offset: 0xC7405, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerCfD', symObjAddr: 0x10C0, symBinAddr: 0x3D9B0, symSize: 0x30 } + - { offset: 0xC742F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC8positionAA08FloatingH8PositionOvgTo', symObjAddr: 0x11A0, symBinAddr: 0x3DA90, symSize: 0x10 } + - { offset: 0xC7460, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC12initialStateAA08FloatinghK0CvgTo', symObjAddr: 0x11B0, symBinAddr: 0x3DAA0, symSize: 0x10 } + - { offset: 0xC7491, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC7anchorsSDyAA08FloatingH5StateCAA0khI9Anchoring_pGvgTo', symObjAddr: 0x11C0, symBinAddr: 0x3DAB0, symSize: 0x60 } + - { offset: 0xC74BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA08FloatingH5StateC_tFTo', symObjAddr: 0x1220, symBinAddr: 0x3DB10, symSize: 0x10 } + - { offset: 0xC75BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteOptionsViewControllerC11PanelLayoutC7anchorsSDyAA08FloatingH5StateCAA0khI9Anchoring_pGvgTf4d_n', symObjAddr: 0x1910, symBinAddr: 0x3E140, symSize: 0x150 } + - { offset: 0xC7CAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontCMa', symObjAddr: 0x230, symBinAddr: 0x3E480, symSize: 0x20 } + - { offset: 0xC7CBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOAFs0F3KeyAAWl', symObjAddr: 0x810, symBinAddr: 0x3E9F0, symSize: 0x30 } + - { offset: 0xC7CD2, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI6StylesCGMa', symObjAddr: 0x870, symBinAddr: 0x3EA20, symSize: 0x50 } + - { offset: 0xC7CE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOwet', symObjAddr: 0x980, symBinAddr: 0x3EB10, symSize: 0x80 } + - { offset: 0xC7CFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOwst', symObjAddr: 0xA00, symBinAddr: 0x3EB90, symSize: 0xD0 } + - { offset: 0xC7D0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOMa', symObjAddr: 0xB00, symBinAddr: 0x3EC60, symSize: 0x10 } + - { offset: 0xC7D22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOSHAASQWb', symObjAddr: 0xB10, symBinAddr: 0x3EC70, symSize: 0x10 } + - { offset: 0xC7D36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOAFSQAAWl', symObjAddr: 0xB20, symBinAddr: 0x3EC80, symSize: 0x30 } + - { offset: 0xC7D4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xB50, symBinAddr: 0x3ECB0, symSize: 0x10 } + - { offset: 0xC7D5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xB60, symBinAddr: 0x3ECC0, symSize: 0x30 } + - { offset: 0xC7D72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0xB90, symBinAddr: 0x3ECF0, symSize: 0x10 } + - { offset: 0xC7D86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0xBA0, symBinAddr: 0x3ED00, symSize: 0x30 } + - { offset: 0xC7DBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x1A0, symBinAddr: 0x3E3F0, symSize: 0x20 } + - { offset: 0xC7DDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x1C0, symBinAddr: 0x3E410, symSize: 0x20 } + - { offset: 0xC7E30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0xB0, symBinAddr: 0x3E310, symSize: 0xB0 } + - { offset: 0xC7E60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x160, symBinAddr: 0x3E3C0, symSize: 0x20 } + - { offset: 0xC7E89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLOs0F3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x190, symBinAddr: 0x3E3E0, symSize: 0x10 } + - { offset: 0xC7EC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontCfD', symObjAddr: 0x1E0, symBinAddr: 0x3E430, symSize: 0x50 } + - { offset: 0xC7EFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC6encode2toys7Encoder_p_tKF', symObjAddr: 0x250, symBinAddr: 0x3E4A0, symSize: 0x200 } + - { offset: 0xC7F30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x450, symBinAddr: 0x3E6A0, symSize: 0x2E0 } + - { offset: 0xC7F6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x730, symBinAddr: 0x3E980, symSize: 0x50 } + - { offset: 0xC7F97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x780, symBinAddr: 0x3E9D0, symSize: 0x20 } + - { offset: 0xC7FAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7AppFontC10CodingKeys33_AC9E80C6C21D35E6D3439852DEE2EB5CLLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0xBD0, symBinAddr: 0x3ED30, symSize: 0x1C1 } + - { offset: 0xC8D31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06updateD7ResultsyyF', symObjAddr: 0x5B0, symBinAddr: 0x3F4B0, symSize: 0xF0 } + - { offset: 0xC9221, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCfE', symObjAddr: 0x3810, symBinAddr: 0x42710, symSize: 0x100 } + - { offset: 0xC924E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCfETo', symObjAddr: 0x3940, symBinAddr: 0x42840, symSize: 0x100 } + - { offset: 0xC927D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCMa', symObjAddr: 0x3A40, symBinAddr: 0x42940, symSize: 0x20 } + - { offset: 0xC94F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC28searchBarTextDidBeginEditingyyAA0dH0CF', symObjAddr: 0x3A60, symBinAddr: 0x42960, symSize: 0x610 } + - { offset: 0xC9C23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09searchBarD13ButtonClickedyyAA0dH0CF', symObjAddr: 0x4070, symBinAddr: 0x42F70, symSize: 0x1E0 } + - { offset: 0xC9F19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06cancelD0yyF', symObjAddr: 0x4250, symBinAddr: 0x43150, symSize: 0xC0 } + - { offset: 0xCA05E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC015clearResultsAndD033_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x4310, symBinAddr: 0x43210, symSize: 0x120 } + - { offset: 0xCA1A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC015clearResultsAndD033_C480B119D398ADAB3164E62059E8A172LLyyFTo', symObjAddr: 0x4430, symBinAddr: 0x43330, symSize: 0x30 } + - { offset: 0xCA1BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG19TextDidBeginEditingyyAA0dG0CFTW', symObjAddr: 0x4460, symBinAddr: 0x43360, symSize: 0x10 } + - { offset: 0xCA1E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG0_13textDidChangeyAA0dG0C_SStFTW', symObjAddr: 0x4470, symBinAddr: 0x43370, symSize: 0x10 } + - { offset: 0xCA21A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchgD13ButtonClickedyyAA0dG0CFTW', symObjAddr: 0x4480, symBinAddr: 0x43380, symSize: 0x10 } + - { offset: 0xCA245, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG18ClearButtonClickedyyAA0dG0CFTW', symObjAddr: 0x4490, symBinAddr: 0x43390, symSize: 0x10 } + - { offset: 0xCA2A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA0D11BarDelegateA2aDP06searchG19CancelButtonClickedyyAA0dG0CFTW', symObjAddr: 0x44A0, symBinAddr: 0x433A0, symSize: 0x10 } + - { offset: 0xCA316, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x44B0, symBinAddr: 0x433B0, symSize: 0x70 } + - { offset: 0xCA4D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0x4520, symBinAddr: 0x43420, symSize: 0x270 } + - { offset: 0xCA7D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x4790, symBinAddr: 0x43690, symSize: 0xB0 } + - { offset: 0xCA7FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_11willDisplay8forRowAtySo07UITableE0C_So0mE4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x4840, symBinAddr: 0x43740, symSize: 0xB0 } + - { offset: 0xCA86A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0x48F0, symBinAddr: 0x437F0, symSize: 0x160 } + - { offset: 0xCAA2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x4A50, symBinAddr: 0x43950, symSize: 0xA0 } + - { offset: 0xCAA56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x4AF0, symBinAddr: 0x439F0, symSize: 0x20 } + - { offset: 0xCAAA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x4B10, symBinAddr: 0x43A10, symSize: 0x30 } + - { offset: 0xCAB18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC10setupPanelyyF', symObjAddr: 0x4B40, symBinAddr: 0x43A40, symSize: 0x110 } + - { offset: 0xCABCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC10setupPanelyyFTo', symObjAddr: 0x4C50, symBinAddr: 0x43B50, symSize: 0x30 } + - { offset: 0xCAC09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x4C80, symBinAddr: 0x43B80, symSize: 0x270 } + - { offset: 0xCAE83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x4EF0, symBinAddr: 0x43DF0, symSize: 0x50 } + - { offset: 0xCAE9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC27floatingPanelDidChangeStateyyAA08FloatinghF0CF', symObjAddr: 0x4F40, symBinAddr: 0x43E40, symSize: 0x240 } + - { offset: 0xCB0E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC27floatingPanelDidChangeStateyyAA08FloatinghF0CFTo', symObjAddr: 0x5180, symBinAddr: 0x44080, symSize: 0x50 } + - { offset: 0xCB10F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x5250, symBinAddr: 0x440D0, symSize: 0x20 } + - { offset: 0xCB162, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x5270, symBinAddr: 0x440F0, symSize: 0x10 } + - { offset: 0xCB19E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC9searchBar_13textDidChangeyAA0dH0C_SStFTf4dnn_n', symObjAddr: 0x5280, symBinAddr: 0x44100, symSize: 0x1C0 } + - { offset: 0xCB305, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC27searchBarClearButtonClickedyyAA0dH0CFTf4dn_n', symObjAddr: 0x5440, symBinAddr: 0x442C0, symSize: 0x170 } + - { offset: 0xCB4E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE0_11willDisplay8forRowAtySo07UITableE0C_So0mE4CellC10Foundation9IndexPathVtFTf4ddnn_n', symObjAddr: 0x55E0, symBinAddr: 0x44430, symSize: 0x150 } + - { offset: 0xCB6B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTf4d_n', symObjAddr: 0x5730, symBinAddr: 0x44580, symSize: 0xA0 } + - { offset: 0xCB729, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4dnn_n', symObjAddr: 0x57D0, symBinAddr: 0x44620, symSize: 0xF0 } + - { offset: 0xCB769, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x58F0, symBinAddr: 0x44730, symSize: 0x20 } + - { offset: 0xCB77D, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x5910, symBinAddr: 0x44750, symSize: 0x10 } + - { offset: 0xCB791, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20showNoResultsMessage33_C480B119D398ADAB3164E62059E8A172LLyyFyyScMYccfU_TA', symObjAddr: 0x59A0, symBinAddr: 0x44760, symSize: 0x10 } + - { offset: 0xCB7A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_TA', symObjAddr: 0x5A40, symBinAddr: 0x44780, symSize: 0x20 } + - { offset: 0xCB7B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_yyXEfU_TA', symObjAddr: 0x5AC0, symBinAddr: 0x447F0, symSize: 0x20 } + - { offset: 0xCB7CD, size: 0x8, addend: 0x0, symName: '_$sIg_Ieg_TRTA', symObjAddr: 0x5B00, symBinAddr: 0x44830, symSize: 0x20 } + - { offset: 0xCB7E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC6search33_C480B119D398ADAB3164E62059E8A172LL6manualySb_tFySayAA7POIDataCGSgcfU_TA', symObjAddr: 0x5B60, symBinAddr: 0x44870, symSize: 0x20 } + - { offset: 0xCB7F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09configureD3Bar33_C480B119D398ADAB3164E62059E8A172LLyyFyyScMYccfU_TA', symObjAddr: 0x5BB0, symBinAddr: 0x44890, symSize: 0x10 } + - { offset: 0xCB809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC11viewDidLoadyyFyycfU0_TA', symObjAddr: 0x5BC0, symBinAddr: 0x448A0, symSize: 0x10 } + - { offset: 0xCBD6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC9searchBar33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x3EF00, symSize: 0x20 } + - { offset: 0xCBDCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC9searchBar33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x3EF20, symSize: 0x30 } + - { offset: 0xCBEF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE033_C480B119D398ADAB3164E62059E8A172LLSo07UITableE0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0x3EF50, symSize: 0x20 } + - { offset: 0xCBF4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE033_C480B119D398ADAB3164E62059E8A172LLSo07UITableE0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0x3EF70, symSize: 0x30 } + - { offset: 0xCBF9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09separatorE033_C480B119D398ADAB3164E62059E8A172LLSo6UIViewCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x3EFA0, symSize: 0x20 } + - { offset: 0xCBFF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09separatorE033_C480B119D398ADAB3164E62059E8A172LLSo6UIViewCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x3EFC0, symSize: 0x30 } + - { offset: 0xCC042, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE16BottomConstraint33_C480B119D398ADAB3164E62059E8A172LLSo08NSLayoutI0CSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x3EFF0, symSize: 0x20 } + - { offset: 0xCC09A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC05tableE16BottomConstraint33_C480B119D398ADAB3164E62059E8A172LLSo08NSLayoutI0CSgvsTo', symObjAddr: 0x110, symBinAddr: 0x3F010, symSize: 0x30 } + - { offset: 0xCC0E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC13searchOptions33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvgTo', symObjAddr: 0x140, symBinAddr: 0x3F040, symSize: 0x20 } + - { offset: 0xCC141, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC13searchOptions33_C480B119D398ADAB3164E62059E8A172LLAA0dH0CSgvsTo', symObjAddr: 0x160, symBinAddr: 0x3F060, symSize: 0x30 } + - { offset: 0xCC37C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC11viewDidLoadyyF', symObjAddr: 0x190, symBinAddr: 0x3F090, symSize: 0x420 } + - { offset: 0xCC80B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x7C0, symBinAddr: 0x3F6C0, symSize: 0x30 } + - { offset: 0xCC833, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC13updateFilters4type7filtersyAA14TagDisplayTypeOSg_SaySiGtF', symObjAddr: 0x7F0, symBinAddr: 0x3F6F0, symSize: 0xA0 } + - { offset: 0xCC982, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09configureD3Bar33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x890, symBinAddr: 0x3F790, symSize: 0x250 } + - { offset: 0xCCAA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC09configureD3Bar33_C480B119D398ADAB3164E62059E8A172LLyyFyyScMYccfU_', symObjAddr: 0xAE0, symBinAddr: 0x3F9E0, symSize: 0x80 } + - { offset: 0xCCB2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC014configureTableE033_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0xB60, symBinAddr: 0x3FA60, symSize: 0x110 } + - { offset: 0xCCCE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC15configureLoader33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0xC70, symBinAddr: 0x3FB70, symSize: 0x2E0 } + - { offset: 0xCCF2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC25configureNoResultsMessage33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0xF50, symBinAddr: 0x3FE50, symSize: 0x530 } + - { offset: 0xCD33C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC6search33_C480B119D398ADAB3164E62059E8A172LL6manualySb_tF', symObjAddr: 0x1480, symBinAddr: 0x40380, symSize: 0x2C0 } + - { offset: 0xCD62B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC6search33_C480B119D398ADAB3164E62059E8A172LL6manualySb_tFySayAA7POIDataCGSgcfU_', symObjAddr: 0x1740, symBinAddr: 0x40640, symSize: 0x90 } + - { offset: 0xCD6A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC21getLocationParameters33_C480B119D398ADAB3164E62059E8A172LLSDySSypGyF', symObjAddr: 0x17D0, symBinAddr: 0x406D0, symSize: 0x210 } + - { offset: 0xCD901, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC15getUserLocation33_C480B119D398ADAB3164E62059E8A172LL7Penguin10PILocationCSgyF', symObjAddr: 0x19E0, symBinAddr: 0x408E0, symSize: 0x130 } + - { offset: 0xCDA33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtF', symObjAddr: 0x1B10, symBinAddr: 0x40A10, symSize: 0x210 } + - { offset: 0xCDAA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_', symObjAddr: 0x1D20, symBinAddr: 0x40C20, symSize: 0xA10 } + - { offset: 0xCE0C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06handleD7Results33_C480B119D398ADAB3164E62059E8A172LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_yyXEfU_', symObjAddr: 0x2730, symBinAddr: 0x41630, symSize: 0x100 } + - { offset: 0xCE1E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC23indexPathsForNewResults33_C480B119D398ADAB3164E62059E8A172LL03newK0Say10Foundation9IndexPathVGSayAA7POIDataCG_tF', symObjAddr: 0x2830, symBinAddr: 0x41730, symSize: 0x210 } + - { offset: 0xCE5DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC10showLoader33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x2A40, symBinAddr: 0x41940, symSize: 0x330 } + - { offset: 0xCE8A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20showNoResultsMessage33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x2D70, symBinAddr: 0x41C70, symSize: 0x1D0 } + - { offset: 0xCE8F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC20showNoResultsMessage33_C480B119D398ADAB3164E62059E8A172LLyyFyyScMYccfU_', symObjAddr: 0x2F40, symBinAddr: 0x41E40, symSize: 0x1A0 } + - { offset: 0xCEA1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC06updateD6Result33_C480B119D398ADAB3164E62059E8A172LLyyF', symObjAddr: 0x30E0, symBinAddr: 0x41FE0, symSize: 0x1D0 } + - { offset: 0xCEC8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x32B0, symBinAddr: 0x421B0, symSize: 0x280 } + - { offset: 0xCEDAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x3530, symBinAddr: 0x42430, symSize: 0x50 } + - { offset: 0xCEDC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3580, symBinAddr: 0x42480, symSize: 0x260 } + - { offset: 0xCEED1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x37E0, symBinAddr: 0x426E0, symSize: 0x30 } + - { offset: 0xCEEE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20SearchViewControllerCfD', symObjAddr: 0x3910, symBinAddr: 0x42810, symSize: 0x30 } + - { offset: 0xCF5C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC2idSiSgvg', symObjAddr: 0x0, symBinAddr: 0x44940, symSize: 0x30 } + - { offset: 0xCF703, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC4nameSSSgvpACTk', symObjAddr: 0xA0, symBinAddr: 0x449E0, symSize: 0x60 } + - { offset: 0xCF743, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvpACTk', symObjAddr: 0x1B0, symBinAddr: 0x44AF0, symSize: 0x60 } + - { offset: 0xCF783, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusCMa', symObjAddr: 0x440, symBinAddr: 0x44D80, symSize: 0x20 } + - { offset: 0xCF7E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC2idSiSgvg', symObjAddr: 0x0, symBinAddr: 0x44940, symSize: 0x30 } + - { offset: 0xCF809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC2idSiSgvs', symObjAddr: 0x30, symBinAddr: 0x44970, symSize: 0x40 } + - { offset: 0xCF830, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC2idSiSgvM', symObjAddr: 0x70, symBinAddr: 0x449B0, symSize: 0x30 } + - { offset: 0xCF87D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC4nameSSSgvg', symObjAddr: 0x100, symBinAddr: 0x44A40, symSize: 0x40 } + - { offset: 0xCF89A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC4nameSSSgvs', symObjAddr: 0x140, symBinAddr: 0x44A80, symSize: 0x40 } + - { offset: 0xCF8C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC4nameSSSgvM', symObjAddr: 0x180, symBinAddr: 0x44AC0, symSize: 0x30 } + - { offset: 0xCF904, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvg', symObjAddr: 0x210, symBinAddr: 0x44B50, symSize: 0x40 } + - { offset: 0xCF921, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvs', symObjAddr: 0x250, symBinAddr: 0x44B90, symSize: 0x40 } + - { offset: 0xCF948, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvM', symObjAddr: 0x290, symBinAddr: 0x44BD0, symSize: 0x30 } + - { offset: 0xCF96B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusC10coverImageSSSgvM.resume.0', symObjAddr: 0x2C0, symBinAddr: 0x44C00, symSize: 0x10 } + - { offset: 0xCF99C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusCfd', symObjAddr: 0x2D0, symBinAddr: 0x44C10, symSize: 0x20 } + - { offset: 0xCF9CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6CampusCfD', symObjAddr: 0x2F0, symBinAddr: 0x44C30, symSize: 0x30 } + - { offset: 0xCFDE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC15venueTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x44ED0, symSize: 0x20 } + - { offset: 0xD02B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCfE', symObjAddr: 0x1110, symBinAddr: 0x45FE0, symSize: 0x70 } + - { offset: 0xD02E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCfETo', symObjAddr: 0x11B0, symBinAddr: 0x46080, symSize: 0x70 } + - { offset: 0xD0310, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCMa', symObjAddr: 0x1220, symBinAddr: 0x460F0, symSize: 0x20 } + - { offset: 0xD034E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x1240, symBinAddr: 0x46110, symSize: 0x70 } + - { offset: 0xD0481, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x12B0, symBinAddr: 0x46180, symSize: 0x260 } + - { offset: 0xD06AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1510, symBinAddr: 0x463E0, symSize: 0xB0 } + - { offset: 0xD06C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x15C0, symBinAddr: 0x46490, symSize: 0x270 } + - { offset: 0xD0856, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1830, symBinAddr: 0x46700, symSize: 0xA0 } + - { offset: 0xD08D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyF', symObjAddr: 0x18D0, symBinAddr: 0x467A0, symSize: 0xE0 } + - { offset: 0xD095F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x19B0, symBinAddr: 0x46880, symSize: 0x30 } + - { offset: 0xD0992, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x19E0, symBinAddr: 0x468B0, symSize: 0x30 } + - { offset: 0xD0A60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC10setupPanelyyF', symObjAddr: 0x1A10, symBinAddr: 0x468E0, symSize: 0x2A0 } + - { offset: 0xD0CBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC10setupPanelyyFTo', symObjAddr: 0x1CB0, symBinAddr: 0x46B80, symSize: 0x30 } + - { offset: 0xD0CE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1CE0, symBinAddr: 0x46BB0, symSize: 0x20 } + - { offset: 0xD0D50, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI5PlaceC_Tg503$s8gh48UI26GateSelectorViewControllerC8getGatesyyFSbAA5J11C_AFtXEfU2_AH0mnoP0CTf1nnnnc_nTf4nnnng_n', symObjAddr: 0x1E70, symBinAddr: 0x46D40, symSize: 0x360 } + - { offset: 0xD0F7E, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI5PlaceC_Tg503$s8fg48UI26GateSelectorViewControllerC8getGatesyyFSbAA5I11C_AFtXEfU2_AG0lmnO0CTf1nncn_nTf4nnng_n', symObjAddr: 0x21D0, symBinAddr: 0x470A0, symSize: 0x340 } + - { offset: 0xD1406, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI5PlaceC_Tg503$s8ef48UI26GateSelectorViewControllerC8getGatesyyFSbAA5H11C_AFtXEfU2_AD0klmN0CTf1nnncn_nTf4nnnng_n', symObjAddr: 0x2510, symBinAddr: 0x473E0, symSize: 0x710 } + - { offset: 0xD19EE, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF8PenNavUI5PlaceC_Tg503$s8ef48UI26GateSelectorViewControllerC8getGatesyyFSbAA5H11C_AFtXEfU2_AC0klmN0CTf1cn_nTf4ng_n', symObjAddr: 0x2C20, symBinAddr: 0x47AF0, symSize: 0x270 } + - { offset: 0xD1C80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4dnn_n', symObjAddr: 0x2F60, symBinAddr: 0x47E30, symSize: 0x1F0 } + - { offset: 0xD1E56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC8getGatesyyFySayAA5PlaceCGcfU_TA', symObjAddr: 0x31F0, symBinAddr: 0x48040, symSize: 0x10 } + - { offset: 0xD1E6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD18SortedByTravelTime3for6origin19withNavigationAvoid10completiony7Penguin5VenueCSg_AA5PlaceCSgSbySayANGctFySayAA0R4GateVGcfU_TA', symObjAddr: 0x3260, symBinAddr: 0x480B0, symSize: 0x1A } + - { offset: 0xD209C, size: 0x8, addend: 0x0, symName: '_$sSh2eeoiySbShyxG_ABtFZ8PenNavUI9ToastTypeO_Tt1g5', symObjAddr: 0x1D00, symBinAddr: 0x46BD0, symSize: 0x170 } + - { offset: 0xD21E4, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFSay8PenNavUI5PlaceCG_Tg503$s8de48UI26GateSelectorViewControllerC8getGatesyyFSbAA5G11C_AFtXEfU2_AE0jklM0CTf1cn_nTf4ng_n', symObjAddr: 0x2E90, symBinAddr: 0x47D60, symSize: 0xD0 } + - { offset: 0xD2418, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC15venueTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x44ED0, symSize: 0x20 } + - { offset: 0xD2476, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC15venueTitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x44EF0, symSize: 0x30 } + - { offset: 0xD24C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0x44F20, symSize: 0x20 } + - { offset: 0xD251D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0x44F40, symSize: 0x30 } + - { offset: 0xD256C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC11viewDidLoadyyF', symObjAddr: 0xA0, symBinAddr: 0x44F70, symSize: 0xF0 } + - { offset: 0xD25E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x190, symBinAddr: 0x45060, symSize: 0x30 } + - { offset: 0xD2635, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC014configureTableF0yyF', symObjAddr: 0x1C0, symBinAddr: 0x45090, symSize: 0x160 } + - { offset: 0xD28F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC8getGatesyyF', symObjAddr: 0x320, symBinAddr: 0x451F0, symSize: 0x9E0 } + - { offset: 0xD3279, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC8getGatesyyFySayAA5PlaceCGcfU_', symObjAddr: 0xD00, symBinAddr: 0x45BD0, symSize: 0x120 } + - { offset: 0xD336A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC8getGatesyyFSbAA5PlaceC_AFtXEfU2_', symObjAddr: 0xE20, symBinAddr: 0x45CF0, symSize: 0xA0 } + - { offset: 0xD345B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC7dismissyyFTo', symObjAddr: 0xEC0, symBinAddr: 0x45D90, symSize: 0x40 } + - { offset: 0xD3485, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xF00, symBinAddr: 0x45DD0, symSize: 0xD0 } + - { offset: 0xD34C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xFD0, symBinAddr: 0x45EA0, symSize: 0x50 } + - { offset: 0xD34F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1020, symBinAddr: 0x45EF0, symSize: 0xC0 } + - { offset: 0xD352B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x10E0, symBinAddr: 0x45FB0, symSize: 0x30 } + - { offset: 0xD353F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GateSelectorViewControllerCfD', symObjAddr: 0x1180, symBinAddr: 0x46050, symSize: 0x30 } + - { offset: 0xD3A63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwCP', symObjAddr: 0x0, symBinAddr: 0x480D0, symSize: 0xF0 } + - { offset: 0xD3A77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwxx', symObjAddr: 0xF0, symBinAddr: 0x481C0, symSize: 0x50 } + - { offset: 0xD3A8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwcp', symObjAddr: 0x140, symBinAddr: 0x48210, symSize: 0xC0 } + - { offset: 0xD3A9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwca', symObjAddr: 0x200, symBinAddr: 0x482D0, symSize: 0xE0 } + - { offset: 0xD3AB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwtk', symObjAddr: 0x2E0, symBinAddr: 0x483B0, symSize: 0xA0 } + - { offset: 0xD3AC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwta', symObjAddr: 0x380, symBinAddr: 0x48450, symSize: 0xC0 } + - { offset: 0xD3ADB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwet', symObjAddr: 0x440, symBinAddr: 0x48510, symSize: 0x20 } + - { offset: 0xD3AEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVwst', symObjAddr: 0x4D0, symBinAddr: 0x485A0, symSize: 0x20 } + - { offset: 0xD3B03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVMa', symObjAddr: 0x550, symBinAddr: 0x48620, symSize: 0x30 } + - { offset: 0xD3B17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVMr', symObjAddr: 0x580, symBinAddr: 0x48650, symSize: 0x90 } + - { offset: 0xD3E43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSHAASH9hashValueSivgTW', symObjAddr: 0x1440, symBinAddr: 0x49510, symSize: 0x60 } + - { offset: 0xD3F12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x14A0, symBinAddr: 0x49570, symSize: 0x40 } + - { offset: 0xD3F8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1540, symBinAddr: 0x49610, symSize: 0x10 } + - { offset: 0xD3FD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSHAASQWb', symObjAddr: 0x1550, symBinAddr: 0x49620, symSize: 0x20 } + - { offset: 0xD3FE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVWOc', symObjAddr: 0x15A0, symBinAddr: 0x49640, symSize: 0x30 } + - { offset: 0xD3FFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVWOh', symObjAddr: 0x15D0, symBinAddr: 0x49670, symSize: 0x30 } + - { offset: 0xD41C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x14E0, symBinAddr: 0x495B0, symSize: 0x60 } + - { offset: 0xD432F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionV11coordinatesSaySo22CLLocationCoordinate2DVGvg', symObjAddr: 0x610, symBinAddr: 0x486E0, symSize: 0x710 } + - { offset: 0xD4B93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionV19getArrowCoordinates5orderSaySo22CLLocationCoordinate2DVGSgSi_tF', symObjAddr: 0xD20, symBinAddr: 0x48DF0, symSize: 0x720 } + - { offset: 0xD5414, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordO8rawValueSSvg', symObjAddr: 0x0, symBinAddr: 0x496A0, symSize: 0xD70 } + - { offset: 0xD545C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xD70, symBinAddr: 0x4A410, symSize: 0x70 } + - { offset: 0xD552F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSHAASH9hashValueSivgTW', symObjAddr: 0xDE0, symBinAddr: 0x4A480, symSize: 0x50 } + - { offset: 0xD55AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE30, symBinAddr: 0x4A4D0, symSize: 0x30 } + - { offset: 0xD55FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xE60, symBinAddr: 0x4A500, symSize: 0x50 } + - { offset: 0xD5779, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordO4rgbis5UInt8V_A2Jtvg', symObjAddr: 0xF50, symBinAddr: 0x4A5F0, symSize: 0x30 } + - { offset: 0xD57A8, size: 0x8, addend: 0x0, symName: ___swift_memcpy13_4, symObjAddr: 0x16C0, symBinAddr: 0x4AD20, symSize: 0x20 } + - { offset: 0xD57BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOwet', symObjAddr: 0x16F0, symBinAddr: 0x4AD40, symSize: 0x50 } + - { offset: 0xD57D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOwst', symObjAddr: 0x1740, symBinAddr: 0x4AD90, symSize: 0x50 } + - { offset: 0xD57E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOwug', symObjAddr: 0x1790, symBinAddr: 0x4ADE0, symSize: 0x20 } + - { offset: 0xD57F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOwui', symObjAddr: 0x17C0, symBinAddr: 0x4AE00, symSize: 0x20 } + - { offset: 0xD580C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOMa', symObjAddr: 0x17E0, symBinAddr: 0x4AE20, symSize: 0x10 } + - { offset: 0xD5820, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOwet', symObjAddr: 0x1800, symBinAddr: 0x4AE30, symSize: 0x90 } + - { offset: 0xD5834, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOwst', symObjAddr: 0x1890, symBinAddr: 0x4AEC0, symSize: 0xD0 } + - { offset: 0xD5848, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOMa', symObjAddr: 0x1990, symBinAddr: 0x4AF90, symSize: 0x10 } + - { offset: 0xD585C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSHAASQWb', symObjAddr: 0x19A0, symBinAddr: 0x4AFA0, symSize: 0x10 } + - { offset: 0xD5870, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOAGSQAAWl', symObjAddr: 0x19B0, symBinAddr: 0x4AFB0, symSize: 0x2D } + - { offset: 0xD5885, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordO8rawValueSSvg', symObjAddr: 0x0, symBinAddr: 0x496A0, symSize: 0xD70 } + - { offset: 0xD5902, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xEB0, symBinAddr: 0x4A550, symSize: 0x30 } + - { offset: 0xD592B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xEE0, symBinAddr: 0x4A580, symSize: 0x30 } + - { offset: 0xD5952, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xF10, symBinAddr: 0x4A5B0, symSize: 0x40 } + - { offset: 0xD597B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0xF80, symBinAddr: 0x4A620, symSize: 0x160 } + - { offset: 0xD5A0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ColorO7KeywordO8rawValueAGSgSS_tcfCTf4nd_n', symObjAddr: 0x10E0, symBinAddr: 0x4A780, symSize: 0x5A0 } + - { offset: 0xD5DFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC17maxOperationCountSivpZ', symObjAddr: 0x1AD8, symBinAddr: 0x39B1E0, symSize: 0x0 } + - { offset: 0xD60D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCfETo', symObjAddr: 0x650, symBinAddr: 0x4B630, symSize: 0x50 } + - { offset: 0xD6100, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCMa', symObjAddr: 0x6A0, symBinAddr: 0x4B680, symSize: 0x20 } + - { offset: 0xD6114, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFyyScMYccfU_', symObjAddr: 0x6C0, symBinAddr: 0x4B6A0, symSize: 0x80 } + - { offset: 0xD617E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFTo', symObjAddr: 0x740, symBinAddr: 0x4B720, symSize: 0xC0 } + - { offset: 0xD61B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask12didWriteData17totalBytesWritten0mn10ExpectedToK0ySo12NSURLSessionC_So0rdI0Cs5Int64VA2NtFyyScMYccfU_', symObjAddr: 0x800, symBinAddr: 0x4B7E0, symSize: 0xB0 } + - { offset: 0xD623F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask12didWriteData17totalBytesWritten0mn10ExpectedToK0ySo12NSURLSessionC_So0rdI0Cs5Int64VA2NtFTo', symObjAddr: 0x8B0, symBinAddr: 0x4B890, symSize: 0x80 } + - { offset: 0xD627C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_4task20didCompleteWithErrorySo12NSURLSessionC_So0M4TaskCs0L0_pSgtFyyScMYccfU_', symObjAddr: 0x930, symBinAddr: 0x4B910, symSize: 0xE0 } + - { offset: 0xD6303, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_4task20didCompleteWithErrorySo12NSURLSessionC_So0M4TaskCs0L0_pSgtFTo', symObjAddr: 0xA10, symBinAddr: 0x4B9F0, symSize: 0x80 } + - { offset: 0xD6344, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFTf4dnnn_n', symObjAddr: 0xA90, symBinAddr: 0x4BA70, symSize: 0x3F0 } + - { offset: 0xD6448, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask12didWriteData17totalBytesWritten0mn10ExpectedToK0ySo12NSURLSessionC_So0rdI0Cs5Int64VA2NtFTf4dndnnn_n', symObjAddr: 0xE80, symBinAddr: 0x4BE60, symSize: 0x400 } + - { offset: 0xD65CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_4task20didCompleteWithErrorySo12NSURLSessionC_So0M4TaskCs0L0_pSgtFTf4dnnn_n', symObjAddr: 0x1280, symBinAddr: 0x4C260, symSize: 0x4A0 } + - { offset: 0xD673D, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgWOh', symObjAddr: 0x1760, symBinAddr: 0x4C700, symSize: 0x30 } + - { offset: 0xD6751, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_4task20didCompleteWithErrorySo12NSURLSessionC_So0M4TaskCs0L0_pSgtFyyScMYccfU_TA', symObjAddr: 0x1850, symBinAddr: 0x4C7B0, symSize: 0x30 } + - { offset: 0xD6765, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1880, symBinAddr: 0x4C7E0, symSize: 0x20 } + - { offset: 0xD6779, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x18A0, symBinAddr: 0x4C800, symSize: 0x10 } + - { offset: 0xD678D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask12didWriteData17totalBytesWritten0mn10ExpectedToK0ySo12NSURLSessionC_So0rdI0Cs5Int64VA2NtFyyScMYccfU_TA', symObjAddr: 0x19A0, symBinAddr: 0x4C880, symSize: 0x30 } + - { offset: 0xD67A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC10urlSession_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFyyScMYccfU_TA', symObjAddr: 0x1A40, symBinAddr: 0x4C920, symSize: 0x30 } + - { offset: 0xD68B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC17maxOperationCountSivgZTo', symObjAddr: 0x0, symBinAddr: 0x4AFE0, symSize: 0x10 } + - { offset: 0xD68FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC17maxOperationCountSivsZTo', symObjAddr: 0x10, symBinAddr: 0x4AFF0, symSize: 0x10 } + - { offset: 0xD69ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC7sessionSo12NSURLSessionCvgTo', symObjAddr: 0x20, symBinAddr: 0x4B000, symSize: 0x30 } + - { offset: 0xD6A01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC7sessionSo12NSURLSessionCvg', symObjAddr: 0x50, symBinAddr: 0x4B030, symSize: 0xC0 } + - { offset: 0xD6AD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC7sessionSo12NSURLSessionCvsTo', symObjAddr: 0x110, symBinAddr: 0x4B0F0, symSize: 0x30 } + - { offset: 0xD6B22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC15processDelegateAA0D15ProcessProtocol_pSgvgTo', symObjAddr: 0x140, symBinAddr: 0x4B120, symSize: 0x20 } + - { offset: 0xD6B7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC15processDelegateAA0D15ProcessProtocol_pSgvsTo', symObjAddr: 0x160, symBinAddr: 0x4B140, symSize: 0x20 } + - { offset: 0xD6C41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC03addD0yAA0D9OperationC10Foundation3URLVF', symObjAddr: 0x180, symBinAddr: 0x4B160, symSize: 0x1C0 } + - { offset: 0xD6D65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC03addD0yAA0D9OperationC10Foundation3URLVFTo', symObjAddr: 0x340, symBinAddr: 0x4B320, symSize: 0x90 } + - { offset: 0xD6D8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC9cancelAllyyF', symObjAddr: 0x3D0, symBinAddr: 0x4B3B0, symSize: 0x120 } + - { offset: 0xD6E8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerC9cancelAllyyFTo', symObjAddr: 0x4F0, symBinAddr: 0x4B4D0, symSize: 0x30 } + - { offset: 0xD6ED1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCACycfc', symObjAddr: 0x520, symBinAddr: 0x4B500, symSize: 0xE0 } + - { offset: 0xD6F3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCACycfcTo', symObjAddr: 0x600, symBinAddr: 0x4B5E0, symSize: 0x20 } + - { offset: 0xD6F52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DownloadManagerCfD', symObjAddr: 0x620, symBinAddr: 0x4B600, symSize: 0x30 } + - { offset: 0xD739C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23IntrinsicCollectionViewCMa', symObjAddr: 0x130, symBinAddr: 0x4CAC0, symSize: 0x20 } + - { offset: 0xD7411, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DynamicHeightCollectionViewCMa', symObjAddr: 0x3B0, symBinAddr: 0x4CD40, symSize: 0x20 } + - { offset: 0xD750E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewCMa', symObjAddr: 0x6C0, symBinAddr: 0x4D050, symSize: 0x14 } + - { offset: 0xD753C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23IntrinsicCollectionViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0x0, symBinAddr: 0x4C990, symSize: 0x90 } + - { offset: 0xD7585, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DynamicHeightCollectionViewC14layoutSubviewsyyFTo', symObjAddr: 0x150, symBinAddr: 0x4CAE0, symSize: 0xB0 } + - { offset: 0xD75DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DynamicHeightCollectionViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0x200, symBinAddr: 0x4CB90, symSize: 0x80 } + - { offset: 0xD7677, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewC5frame010collectionG6LayoutACSo6CGRectV_So012UICollectiongJ0CtcfcTo', symObjAddr: 0x3D0, symBinAddr: 0x4CD60, symSize: 0xB0 } + - { offset: 0xD7720, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x480, symBinAddr: 0x4CE10, symSize: 0x90 } + - { offset: 0xD7789, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewC10reloadDatayyFTo', symObjAddr: 0x5F0, symBinAddr: 0x4CF80, symSize: 0x60 } + - { offset: 0xD77CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelfSizingCollectionViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0x650, symBinAddr: 0x4CFE0, symSize: 0x20 } + - { offset: 0xD7B60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x4D070, symSize: 0x20 } + - { offset: 0xD7CD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCfE', symObjAddr: 0x3F0, symBinAddr: 0x4D460, symSize: 0x20 } + - { offset: 0xD7D02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCfETo', symObjAddr: 0x440, symBinAddr: 0x4D4B0, symSize: 0x20 } + - { offset: 0xD7D31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCMa', symObjAddr: 0x460, symBinAddr: 0x4D4D0, symSize: 0x20 } + - { offset: 0xD7D54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x480, symBinAddr: 0x4D4F0, symSize: 0x10 } + - { offset: 0xD7D95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x490, symBinAddr: 0x4D500, symSize: 0xB0 } + - { offset: 0xD7DD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyF', symObjAddr: 0x540, symBinAddr: 0x4D5B0, symSize: 0xE0 } + - { offset: 0xD7E67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x620, symBinAddr: 0x4D690, symSize: 0x30 } + - { offset: 0xD7E9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x650, symBinAddr: 0x4D6C0, symSize: 0x30 } + - { offset: 0xD7F3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x680, symBinAddr: 0x4D6F0, symSize: 0x2D0 } + - { offset: 0xD81D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x950, symBinAddr: 0x4D9C0, symSize: 0x30 } + - { offset: 0xD81FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x980, symBinAddr: 0x4D9F0, symSize: 0x10 } + - { offset: 0xD8246, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4ddd_n', symObjAddr: 0x990, symBinAddr: 0x4DA00, symSize: 0xC0 } + - { offset: 0xD8372, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTf4nnd_n', symObjAddr: 0xA50, symBinAddr: 0x4DAC0, symSize: 0x210 } + - { offset: 0xD84EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0xC60, symBinAddr: 0x4DCD0, symSize: 0x1D0 } + - { offset: 0xD86B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVSgWOe', symObjAddr: 0xE70, symBinAddr: 0x4DEA0, symSize: 0x2F } + - { offset: 0xD8867, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x4D070, symSize: 0x20 } + - { offset: 0xD88C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x4D090, symSize: 0x30 } + - { offset: 0xD8914, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x50, symBinAddr: 0x4D0C0, symSize: 0x60 } + - { offset: 0xD8953, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC014configureTableF0yyF', symObjAddr: 0xB0, symBinAddr: 0x4D120, symSize: 0x1B0 } + - { offset: 0xD8A2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x260, symBinAddr: 0x4D2D0, symSize: 0x40 } + - { offset: 0xD8A95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x2A0, symBinAddr: 0x4D310, symSize: 0xC0 } + - { offset: 0xD8AED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x360, symBinAddr: 0x4D3D0, symSize: 0x90 } + - { offset: 0xD8B24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RouteDetailsViewControllerCfD', symObjAddr: 0x410, symBinAddr: 0x4D480, symSize: 0x30 } + - { offset: 0xD9133, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOwet', symObjAddr: 0x100, symBinAddr: 0x4DF00, symSize: 0x80 } + - { offset: 0xD9147, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOwst', symObjAddr: 0x180, symBinAddr: 0x4DF80, symSize: 0xD0 } + - { offset: 0xD915B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOMa', symObjAddr: 0x280, symBinAddr: 0x4E050, symSize: 0x10 } + - { offset: 0xD916F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOSHAASQWb', symObjAddr: 0x290, symBinAddr: 0x4E060, symSize: 0x10 } + - { offset: 0xD9183, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOACSQAAWl', symObjAddr: 0x2A0, symBinAddr: 0x4E070, symSize: 0x2D } + - { offset: 0xD91BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xB0, symBinAddr: 0x4DED0, symSize: 0x20 } + - { offset: 0xD91E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LocationDetectionStatusOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xD0, symBinAddr: 0x4DEF0, symSize: 0x10 } + - { offset: 0xD957F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9makeCubic4from2to5large5sweep2rx2ry8rotationSayAA9LayerTreeO5PointV1p_AM3cp1AM3cp2tGAM_AMS2bS3ftF', symObjAddr: 0x0, symBinAddr: 0x4E0A0, symSize: 0x7A0 } + - { offset: 0xD9A31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9makeCubic4from2to5large5sweep2rx2ry8rotationSayAA9LayerTreeO5PointV1p_AM3cp1AM3cp2tGAM_AMS2bS3ftF', symObjAddr: 0x0, symBinAddr: 0x4E0A0, symSize: 0x7A0 } + - { offset: 0xDA921, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtF', symObjAddr: 0x0, symBinAddr: 0x4E840, symSize: 0x160 } + - { offset: 0xDAA18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewCfETo', symObjAddr: 0x310, symBinAddr: 0x4EB50, symSize: 0x20 } + - { offset: 0xDAA47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewCMa', symObjAddr: 0x330, symBinAddr: 0x4EB70, symSize: 0x20 } + - { offset: 0xDAA5B, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewCMa', symObjAddr: 0x350, symBinAddr: 0x4EB90, symSize: 0x32 } + - { offset: 0xDAADD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtF', symObjAddr: 0x0, symBinAddr: 0x4E840, symSize: 0x160 } + - { offset: 0xDAB77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtFTo', symObjAddr: 0x160, symBinAddr: 0x4E9A0, symSize: 0x80 } + - { offset: 0xDABAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1E0, symBinAddr: 0x4EA20, symSize: 0x70 } + - { offset: 0xDAC2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x250, symBinAddr: 0x4EA90, symSize: 0x90 } + - { offset: 0xDAC67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PassthroughViewCfD', symObjAddr: 0x2E0, symBinAddr: 0x4EB20, symSize: 0x30 } + - { offset: 0xDBE7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCMU', symObjAddr: 0x7F90, symBinAddr: 0x56AA0, symSize: 0x10 } + - { offset: 0xDBE90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCMa', symObjAddr: 0x7FA0, symBinAddr: 0x56AB0, symSize: 0x30 } + - { offset: 0xDBEA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCMr', symObjAddr: 0x7FD0, symBinAddr: 0x56AE0, symSize: 0x140 } + - { offset: 0xDBEB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOAFs0E3KeyAAWl', symObjAddr: 0x94A0, symBinAddr: 0x57F40, symSize: 0x30 } + - { offset: 0xDBECC, size: 0x8, addend: 0x0, symName: '_$sSaySo22CLLocationCoordinate2DVGSayxGSesSeRzlWl', symObjAddr: 0x9500, symBinAddr: 0x57F70, symSize: 0x80 } + - { offset: 0xDBEE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOACSeAAWl', symObjAddr: 0x9580, symBinAddr: 0x57FF0, symSize: 0x30 } + - { offset: 0xDBEF4, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI5PlaceCGSayxGSesSeRzlWl', symObjAddr: 0x95B0, symBinAddr: 0x58020, symSize: 0x80 } + - { offset: 0xDBF08, size: 0x8, addend: 0x0, symName: '_$sSay7Penguin8ScheduleCGSayxGSesSeRzlWl', symObjAddr: 0x9630, symBinAddr: 0x580A0, symSize: 0x80 } + - { offset: 0xDBF1C, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVSgWOd', symObjAddr: 0x9700, symBinAddr: 0x58120, symSize: 0x40 } + - { offset: 0xDBF30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVSgWOg', symObjAddr: 0x9740, symBinAddr: 0x58160, symSize: 0x30 } + - { offset: 0xDC05D, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI5PlaceC_Tg503$s8ef3UI5H37C12setEntrancesyySayACGFSbAC_ACtXEfU_Tf1nnncn_n', symObjAddr: 0x9770, symBinAddr: 0x58190, symSize: 0x4A0 } + - { offset: 0xDC58F, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI5PlaceC_Tg503$s8fg3UI5I37C12setEntrancesyySayACGFSbAC_ACtXEfU_Tf1nncn_n', symObjAddr: 0x9C10, symBinAddr: 0x58630, symSize: 0x2B0 } + - { offset: 0xDC931, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI5PlaceC_Tg503$s8gh3UI5J37C12setEntrancesyySayACGFSbAC_ACtXEfU_Tf1nnnnc_n', symObjAddr: 0x9EC0, symBinAddr: 0x588E0, symSize: 0x260 } + - { offset: 0xDCD5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19detectEndMarkerType9floorPath09isLastSubL010completiony7Penguin0oL0CSg_SbySo7UIImageCSgctFyANcfU0_TA', symObjAddr: 0xC880, symBinAddr: 0x5B2A0, symSize: 0x20 } + - { offset: 0xDCD71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14getOrderedIcon5order10completionySi_ySo7UIImageCSgctFyAIcfU_TA', symObjAddr: 0xC8A0, symBinAddr: 0x5B2C0, symSize: 0x20 } + - { offset: 0xDCD85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctFyAKcfU1_TA', symObjAddr: 0xC8C0, symBinAddr: 0x5B2E0, symSize: 0x20 } + - { offset: 0xDCD99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctFyAKcfU0_TA', symObjAddr: 0xC8E0, symBinAddr: 0x5B300, symSize: 0x30 } + - { offset: 0xDCDAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctFyAKcfU_TA', symObjAddr: 0xC910, symBinAddr: 0x5B330, symSize: 0x30 } + - { offset: 0xDCEDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21detectStartMarkerType9floorPath10completiony7Penguin03SubL0C_ySo7UIImageCSgctFyALcfU0_TA', symObjAddr: 0x107B0, symBinAddr: 0x5F190, symSize: 0x20 } + - { offset: 0xDCEF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC23showArrivalConfirmation33_2BE4A475C9A281DA0308C98892968072LL3foryAA5PlaceCSg_tFySo7UIImageCSgcfU0_TA', symObjAddr: 0x10830, symBinAddr: 0x5F1B0, symSize: 0x10 } + - { offset: 0xDCF04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC23setCurrentLocationImage2inySo11UIImageViewCSg_tFySo010UIGraphicsH15RendererContextCXEfU_TA', symObjAddr: 0x10870, symBinAddr: 0x5F1F0, symSize: 0x10 } + - { offset: 0xDCF18, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x108C0, symBinAddr: 0x5F220, symSize: 0x20 } + - { offset: 0xDCF2C, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x108E0, symBinAddr: 0x5F240, symSize: 0x10 } + - { offset: 0xDCF40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC21drawDestinationSymbol3for2atyAA5PlaceCSg_So22CLLocationCoordinate2DVSgtFySo7UIImageCSgcfU1_TA', symObjAddr: 0x10900, symBinAddr: 0x5F260, symSize: 0x20 } + - { offset: 0xDCF54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7getIcon10completionyySo7UIImageCSgc_tFyAHcfU0_TA', symObjAddr: 0x10970, symBinAddr: 0x5F2D0, symSize: 0x20 } + - { offset: 0xDCF90, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationOWOy', symObjAddr: 0x109D0, symBinAddr: 0x5F2F0, symSize: 0x40 } + - { offset: 0xDCFA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC16updateSymbolIconyyFySo7UIImageCSgcfU_TA', symObjAddr: 0x10A60, symBinAddr: 0x5F360, symSize: 0x20 } + - { offset: 0xDCFB8, size: 0x8, addend: 0x0, symName: '_$sSaySo22CLLocationCoordinate2DVGSayxGSEsSERzlWl', symObjAddr: 0x10AB0, symBinAddr: 0x5F380, symSize: 0x80 } + - { offset: 0xDCFCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOACSEAAWl', symObjAddr: 0x10B30, symBinAddr: 0x5F400, symSize: 0x30 } + - { offset: 0xDCFE0, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI5PlaceCGSayxGSEsSERzlWl', symObjAddr: 0x10B60, symBinAddr: 0x5F430, symSize: 0x80 } + - { offset: 0xDCFF4, size: 0x8, addend: 0x0, symName: '_$sSay7Penguin8ScheduleCGSayxGSEsSERzlWl', symObjAddr: 0x10BE0, symBinAddr: 0x5F4B0, symSize: 0x80 } + - { offset: 0xDD008, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8setImage2inySo11UIImageViewCSg_tFySo0H0CSgcfU0_TA', symObjAddr: 0x10C90, symBinAddr: 0x5F530, symSize: 0x20 } + - { offset: 0xDD042, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOwet', symObjAddr: 0x10D50, symBinAddr: 0x5F550, symSize: 0x80 } + - { offset: 0xDD056, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOwst', symObjAddr: 0x10DD0, symBinAddr: 0x5F5D0, symSize: 0xD0 } + - { offset: 0xDD06A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOMa', symObjAddr: 0x10ED0, symBinAddr: 0x5F6A0, symSize: 0x10 } + - { offset: 0xDD07E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOSHAASQWb', symObjAddr: 0x10EE0, symBinAddr: 0x5F6B0, symSize: 0x10 } + - { offset: 0xDD092, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOAFSQAAWl', symObjAddr: 0x10EF0, symBinAddr: 0x5F6C0, symSize: 0x30 } + - { offset: 0xDD0A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x10F20, symBinAddr: 0x5F6F0, symSize: 0x10 } + - { offset: 0xDD0BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x10F30, symBinAddr: 0x5F700, symSize: 0x30 } + - { offset: 0xDD0CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x10F60, symBinAddr: 0x5F730, symSize: 0x10 } + - { offset: 0xDD0E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x10F70, symBinAddr: 0x5F740, symSize: 0x30 } + - { offset: 0xDD13C, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI5PlaceCG_Tg503$s8fg3UI5I37C12setEntrancesyySayACGFSbAC_ACtXEfU_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x4EBD0, symSize: 0x190 } + - { offset: 0xDD6CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x7E70, symBinAddr: 0x56980, symSize: 0x20 } + - { offset: 0xDD6E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x7E90, symBinAddr: 0x569A0, symSize: 0x20 } + - { offset: 0xDD8CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC12setEntrancesyySayACGF', symObjAddr: 0x5960, symBinAddr: 0x54530, symSize: 0x820 } + - { offset: 0xDE0FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8category7Penguin11POICategoryVSgvg', symObjAddr: 0x190, symBinAddr: 0x4ED60, symSize: 0xA0 } + - { offset: 0xDE1E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC5floor7Penguin5FloorCSgvg', symObjAddr: 0x230, symBinAddr: 0x4EE00, symSize: 0xA0 } + - { offset: 0xDE4D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14compactAddressSSSgvg', symObjAddr: 0x2D0, symBinAddr: 0x4EEA0, symSize: 0x1C0 } + - { offset: 0xDE67C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14stopDictionarySDySSypGvg', symObjAddr: 0x490, symBinAddr: 0x4F060, symSize: 0x330 } + - { offset: 0xDE891, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10isFavoriteSbvg', symObjAddr: 0x7C0, symBinAddr: 0x4F390, symSize: 0x160 } + - { offset: 0xDE992, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13isRawLocationSbvg', symObjAddr: 0x920, symBinAddr: 0x4F4F0, symSize: 0x300 } + - { offset: 0xDEBAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCACycfc', symObjAddr: 0xC20, symBinAddr: 0x4F7F0, symSize: 0x1B0 } + - { offset: 0xDEC8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC12searchResultAcA7POIDataCSg_tcfc', symObjAddr: 0xDD0, symBinAddr: 0x4F9A0, symSize: 0xDE0 } + - { offset: 0xDF167, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8location4typeAC7Penguin10PILocationCSg_AA0D4TypeOtcfc', symObjAddr: 0x1BB0, symBinAddr: 0x50780, symSize: 0x5F0 } + - { offset: 0xDF430, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCyA2CSgcfc', symObjAddr: 0x21A0, symBinAddr: 0x50D70, symSize: 0x5D0 } + - { offset: 0xDF4CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC3poi8scheduleAC7Penguin10PoiPolygonVSg_SayAF8ScheduleCGSgtcfc', symObjAddr: 0x2770, symBinAddr: 0x51340, symSize: 0xA20 } + - { offset: 0xDF656, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC3poiAcA7POIDataCSg_tcfc', symObjAddr: 0x3190, symBinAddr: 0x51D60, symSize: 0x4D0 } + - { offset: 0xDF716, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8favoriteAcA8FavoriteC_tcfc', symObjAddr: 0x3660, symBinAddr: 0x52230, symSize: 0xDF0 } + - { offset: 0xDFB0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC5venue8scheduleAC7Penguin5VenueCSg_SayAF8ScheduleCGSgtcfc', symObjAddr: 0x4450, symBinAddr: 0x53020, symSize: 0x4B0 } + - { offset: 0xDFC03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC6campusAC7Penguin5VenueCSg_tcfc', symObjAddr: 0x4900, symBinAddr: 0x534D0, symSize: 0x4A0 } + - { offset: 0xDFCEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC4gate7venueId4typeAcA9VenueGateVSg_SiSgAA0D4TypeOSgtcfc', symObjAddr: 0x4DA0, symBinAddr: 0x53970, symSize: 0x450 } + - { offset: 0xDFD41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC4gate7venueId4typeACSg7Penguin13GateNodeModelCSg_SiSgAA0D4TypeOSgtcfc', symObjAddr: 0x51F0, symBinAddr: 0x53DC0, symSize: 0x2E0 } + - { offset: 0xDFDB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13setNearPlacesyy7Penguin0fD0VSgF', symObjAddr: 0x54D0, symBinAddr: 0x540A0, symSize: 0x200 } + - { offset: 0xDFDE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC11setEntranceyyACSgF', symObjAddr: 0x56D0, symBinAddr: 0x542A0, symSize: 0x100 } + - { offset: 0xDFF15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC12setEntrancesyyACSgd_tF', symObjAddr: 0x57D0, symBinAddr: 0x543A0, symSize: 0x190 } + - { offset: 0xE0197, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14selectEntranceyyACSgF', symObjAddr: 0x6180, symBinAddr: 0x54D50, symSize: 0x160 } + - { offset: 0xE03DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC8setImage2inySo11UIImageViewCSg_tF', symObjAddr: 0x62E0, symBinAddr: 0x54EB0, symSize: 0x620 } + - { offset: 0xE063E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC23setCurrentLocationImage2inySo11UIImageViewCSg_tFySo010UIGraphicsH15RendererContextCXEfU_', symObjAddr: 0x6900, symBinAddr: 0x554D0, symSize: 0x80 } + - { offset: 0xE06BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF', symObjAddr: 0x6980, symBinAddr: 0x55550, symSize: 0x5E0 } + - { offset: 0xE08F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctFyAKcfU1_', symObjAddr: 0x7040, symBinAddr: 0x55C10, symSize: 0xE0 } + - { offset: 0xE0973, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7getIcon10completionyySo7UIImageCSgc_tFyAHcfU0_', symObjAddr: 0x7120, symBinAddr: 0x55CF0, symSize: 0x20 } + - { offset: 0xE099C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC14getOrderedIcon5order10completionySi_ySo7UIImageCSgctFyAIcfU_', symObjAddr: 0x7140, symBinAddr: 0x55D10, symSize: 0x50 } + - { offset: 0xE09D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7matchesySbACSgF', symObjAddr: 0x7190, symBinAddr: 0x55D60, symSize: 0x470 } + - { offset: 0xE0BA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC16mapToDestination7Penguin0G0CyF', symObjAddr: 0x7600, symBinAddr: 0x561D0, symSize: 0x1C0 } + - { offset: 0xE0C92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC11setLocationyy7Penguin10PILocationCSgF', symObjAddr: 0x77C0, symBinAddr: 0x56390, symSize: 0x2C0 } + - { offset: 0xE0CC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLO11stringValueSSvg', symObjAddr: 0x7A80, symBinAddr: 0x56650, symSize: 0x2F0 } + - { offset: 0xE0D73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x7E20, symBinAddr: 0x56940, symSize: 0x10 } + - { offset: 0xE0D8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x7E30, symBinAddr: 0x56950, symSize: 0x20 } + - { offset: 0xE0DB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLOs0E3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x7E60, symBinAddr: 0x56970, symSize: 0x10 } + - { offset: 0xE0DCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCfd', symObjAddr: 0x7EB0, symBinAddr: 0x569C0, symSize: 0xC0 } + - { offset: 0xE0DEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCfD', symObjAddr: 0x7F70, symBinAddr: 0x56A80, symSize: 0x20 } + - { offset: 0xE0E11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC6encode2toys7Encoder_p_tKF', symObjAddr: 0x8110, symBinAddr: 0x56C20, symSize: 0x850 } + - { offset: 0xE0E42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x8960, symBinAddr: 0x57470, symSize: 0xA60 } + - { offset: 0xE0E7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x93C0, symBinAddr: 0x57ED0, symSize: 0x50 } + - { offset: 0xE0EA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x9410, symBinAddr: 0x57F20, symSize: 0x20 } + - { offset: 0xE0EC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC22getOrderedLetterString5orderSSSgSi_tFTf4nd_n', symObjAddr: 0xA120, symBinAddr: 0x58B40, symSize: 0xF0 } + - { offset: 0xE0FA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC6campus7Penguin5VenueCSgvgTf4d_n', symObjAddr: 0xA210, symBinAddr: 0x58C30, symSize: 0x150 } + - { offset: 0xE1467, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7getIcon10completionyySo7UIImageCSgc_tF03$s8ab46UI16SelectionManagerC16updateSymbolIconyyFySo7H7CSgcfU_AA0kL0CSgXwz_XxACTf1cn_nTf4ngg_n', symObjAddr: 0xA360, symBinAddr: 0x58D80, symSize: 0xF20 } + - { offset: 0xE1B1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC23setCurrentLocationImage2inySo11UIImageViewCSg_tFTf4nd_n', symObjAddr: 0xB280, symBinAddr: 0x59CA0, symSize: 0x5B0 } + - { offset: 0xE1D47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab102UI27DirectionCollectionViewCellC23showArrivalConfirmation33_2BE4A475C9A281DA0308C98892968072LL3foryAA5d10CSg_tFySo7L8CSgcfU0_AA0opqR0CSgXwz_XxTf1ncn_nTf4nng_n', symObjAddr: 0xB830, symBinAddr: 0x5A250, symSize: 0x730 } + - { offset: 0xE200D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab105UI24NavigationViewControllerC19detectEndMarkerType9floorPath09isLastSubL010completiony7Penguin0oL0CSg_SbysltU7ANcfU0_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xBF60, symBinAddr: 0x5A980, symSize: 0x900 } + - { offset: 0xE2427, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab93UI24NavigationViewControllerC21detectStartMarkerType9floorPath10completiony7Penguin03SubL0C_ysltU7ALcfU0_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xC980, symBinAddr: 0x5B360, symSize: 0x900 } + - { offset: 0xE2841, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab93UI24NavigationViewControllerC21detectStartMarkerType9floorPath10completiony7Penguin03SubL0C_ysltU7ALcfU2_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xD280, symBinAddr: 0x5BC60, symSize: 0x900 } + - { offset: 0xE2C7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab163UI19RouteOverviewHelperC14detectLastNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath11coordinates10completiony7Penguin7SubPathCSg_SaySo22CLLocationCoordinate2DVGysltU7ARcfU0_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xDB80, symBinAddr: 0x5C560, symSize: 0x900 } + - { offset: 0xE30B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC13getFramedIcon9tintColor10completionySo7UIColorC_ySo7UIImageCSgctF03$s8ab3UI5d43C14getOrderedIcon5order10completionySi_ySo7L13CSgctFyAIcfU_AKIegg_Tf1ncn_n0mab120UI19RouteOverviewHelperC15detectFirstNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath10completiony7Penguin7SubPathCSg_ysltU7ANcfU0_AKIegg_Tf1nnc_nTf4nng_n', symObjAddr: 0xE480, symBinAddr: 0x5CE60, symSize: 0x900 } + - { offset: 0xE34F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC7getIcon10completionyySo7UIImageCSgc_tF03$s8ab56UI17PoiDrawingManagerC21drawDestinationSymbol3for2atyAA5d39CSg_So22CLLocationCoordinate2DVSgtFySo7H8CSgcfU1_ACSgA2hA0klM0CSgXwz_XxTf1cn_nTf4ngggg_n', symObjAddr: 0xED80, symBinAddr: 0x5D760, symSize: 0x1730 } + - { offset: 0xE3C9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC16getOrderedLetter5orderSo7UIImageCSgSi_tFTf4nd_n', symObjAddr: 0x104B0, symBinAddr: 0x5EE90, symSize: 0x300 } + - { offset: 0xE3DC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceC10CodingKeys33_6C2A348886843BD7788C530388579832LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x10FA0, symBinAddr: 0x5F770, symSize: 0x7B0 } + - { offset: 0xE44B3, size: 0x8, addend: 0x0, symName: '_$sSq8PenNavUISdRszlE16toDistanceStringSSvg', symObjAddr: 0x0, symBinAddr: 0x60200, symSize: 0x11E } + - { offset: 0xE4537, size: 0x8, addend: 0x0, symName: '_$sSq8PenNavUISdRszlE16toDistanceStringSSvg', symObjAddr: 0x0, symBinAddr: 0x60200, symSize: 0x11E } + - { offset: 0xE5186, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVSgSo13NSURLResponseCSgs5Error_pSgIeghggg_So6NSDataCSgAGSo7NSErrorCSgIeyBhyyy_TR', symObjAddr: 0x13A0, symBinAddr: 0x616C0, symSize: 0xF0 } + - { offset: 0xE519E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCfETo', symObjAddr: 0x1720, symBinAddr: 0x61A40, symSize: 0x80 } + - { offset: 0xE51CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCMa', symObjAddr: 0x17A0, symBinAddr: 0x61AC0, symSize: 0x20 } + - { offset: 0xE51E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC15makePOSTRequest33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLL3url8postData7headers10completionySS_10Foundation0Q0VSDyS2SGySDySSyXlGctFyALSg_So13NSURLResponseCSgs5Error_pSgtYbcfU_TA', symObjAddr: 0x1890, symBinAddr: 0x61B30, symSize: 0x30 } + - { offset: 0xE51F5, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x18C0, symBinAddr: 0x61B60, symSize: 0x20 } + - { offset: 0xE5209, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x18E0, symBinAddr: 0x61B80, symSize: 0x10 } + - { offset: 0xE521D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC5speakyySSSgFySDySSyXlGcfU_TA', symObjAddr: 0x19A0, symBinAddr: 0x61B90, symSize: 0x10 } + - { offset: 0xE5231, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVSgWOy', symObjAddr: 0x1A90, symBinAddr: 0x61C50, symSize: 0x20 } + - { offset: 0xE52A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC5speakyySSSgF', symObjAddr: 0x0, symBinAddr: 0x60320, symSize: 0x2F0 } + - { offset: 0xE53FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC5speakyySSSgFySDySSyXlGcfU_', symObjAddr: 0x2F0, symBinAddr: 0x60610, symSize: 0x400 } + - { offset: 0xE59D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC13buildPostData33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLL4text10Foundation0H0VSSSg_tF', symObjAddr: 0x6F0, symBinAddr: 0x60A10, symSize: 0x710 } + - { offset: 0xE609B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC15makePOSTRequest33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLL3url8postData7headers10completionySS_10Foundation0Q0VSDyS2SGySDySSyXlGctF', symObjAddr: 0xE00, symBinAddr: 0x61120, symSize: 0x3D0 } + - { offset: 0xE623A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC15makePOSTRequest33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLL3url8postData7headers10completionySS_10Foundation0Q0VSDyS2SGySDySSyXlGctFyALSg_So13NSURLResponseCSgs5Error_pSgtYbcfU_', symObjAddr: 0x11D0, symBinAddr: 0x614F0, symSize: 0x1D0 } + - { offset: 0xE631A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC27audioPlayerDidFinishPlaying_12successfullyySo07AVAudioG0C_SbtFTo', symObjAddr: 0x1490, symBinAddr: 0x617B0, symSize: 0x50 } + - { offset: 0xE6344, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC16resetAudioPlayer33_11BAA8D416F9AEAC8BEBCBDF8D5102DFLLyyF', symObjAddr: 0x14E0, symBinAddr: 0x61800, symSize: 0x60 } + - { offset: 0xE63CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC12stopSpeakingyyF', symObjAddr: 0x1540, symBinAddr: 0x61860, symSize: 0x90 } + - { offset: 0xE648E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCACycfc', symObjAddr: 0x15D0, symBinAddr: 0x618F0, symSize: 0x100 } + - { offset: 0xE64DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCACycfcTo', symObjAddr: 0x16D0, symBinAddr: 0x619F0, symSize: 0x20 } + - { offset: 0xE64F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerCfD', symObjAddr: 0x16F0, symBinAddr: 0x61A10, symSize: 0x30 } + - { offset: 0xE6514, size: 0x8, addend: 0x0, symName: '_$sSo13AVAudioPlayerC4dataAB10Foundation4DataV_tKcfcTOTf4gn_n', symObjAddr: 0x19E0, symBinAddr: 0x61BA0, symSize: 0xB0 } + - { offset: 0xE652F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17GoogleSynthesizerC27audioPlayerDidFinishPlaying_12successfullyySo07AVAudioG0C_SbtFTf4ddn_n', symObjAddr: 0x1AB0, symBinAddr: 0x61C70, symSize: 0x1E0 } + - { offset: 0xE6BEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13RenderingModeOMa', symObjAddr: 0x140, symBinAddr: 0x61E50, symSize: 0x10 } + - { offset: 0xE6C03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13RenderingModeOSHAASQWb', symObjAddr: 0x150, symBinAddr: 0x61E60, symSize: 0x10 } + - { offset: 0xE6C17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13RenderingModeOACSQAAWl', symObjAddr: 0x160, symBinAddr: 0x61E70, symSize: 0x30 } + - { offset: 0xE6FAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC12getFloorByIdy7Penguin0G0CSgSiSgF', symObjAddr: 0x0, symBinAddr: 0x61EA0, symSize: 0x100 } + - { offset: 0xE6FD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC14sharedInstance33_956C2914F155F2C44055070183674D2FLLACSgvpZ', symObjAddr: 0xCB8, symBinAddr: 0x39B9D8, symSize: 0x0 } + - { offset: 0xE729E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerCMa', symObjAddr: 0xCA0, symBinAddr: 0x62B20, symSize: 0x14 } + - { offset: 0xE744E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC12getFloorByIdy7Penguin0G0CSgSiSgF', symObjAddr: 0x0, symBinAddr: 0x61EA0, symSize: 0x100 } + - { offset: 0xE7607, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC14getCampusFloor7Penguin0H0CSgyF', symObjAddr: 0x100, symBinAddr: 0x61FA0, symSize: 0xF0 } + - { offset: 0xE7825, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13FloorsManagerC012getConnectedD04withSay7Penguin5FloorCGAHSg_tF', symObjAddr: 0x1F0, symBinAddr: 0x62090, symSize: 0xA90 } + - { offset: 0xE936C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC3APIOSHAASQWb', symObjAddr: 0x6B60, symBinAddr: 0x69580, symSize: 0x10 } + - { offset: 0xE9380, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC3APIOAESQAAWl', symObjAddr: 0x6B70, symBinAddr: 0x69590, symSize: 0x30 } + - { offset: 0xE9394, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAcA08RendererE0AAWl', symObjAddr: 0x6BA0, symBinAddr: 0x695C0, symSize: 0x30 } + - { offset: 0xE93A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererCMa', symObjAddr: 0x6BD0, symBinAddr: 0x695F0, symSize: 0x20 } + - { offset: 0xE93BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC3APIOMa', symObjAddr: 0x6DB0, symBinAddr: 0x69630, symSize: 0x10 } + - { offset: 0xE93D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOMa', symObjAddr: 0x6F40, symBinAddr: 0x69640, symSize: 0x10 } + - { offset: 0xE93E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVMa', symObjAddr: 0x6F50, symBinAddr: 0x69650, symSize: 0x10 } + - { offset: 0xE93F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwxx', symObjAddr: 0x6F90, symBinAddr: 0x69660, symSize: 0x30 } + - { offset: 0xE940C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwcp', symObjAddr: 0x6FC0, symBinAddr: 0x69690, symSize: 0x50 } + - { offset: 0xE9420, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwca', symObjAddr: 0x7010, symBinAddr: 0x696E0, symSize: 0x70 } + - { offset: 0xE9434, size: 0x8, addend: 0x0, symName: ___swift_memcpy40_8, symObjAddr: 0x7080, symBinAddr: 0x69750, symSize: 0x20 } + - { offset: 0xE9448, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwta', symObjAddr: 0x70A0, symBinAddr: 0x69770, symSize: 0x50 } + - { offset: 0xE945C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwet', symObjAddr: 0x70F0, symBinAddr: 0x697C0, symSize: 0x40 } + - { offset: 0xE9470, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVwst', symObjAddr: 0x7130, symBinAddr: 0x69800, symSize: 0x40 } + - { offset: 0xE9484, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderVMa', symObjAddr: 0x7170, symBinAddr: 0x69840, symSize: 0x10 } + - { offset: 0xE9498, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSHAASQWb', symObjAddr: 0x7190, symBinAddr: 0x69860, symSize: 0x10 } + - { offset: 0xE94AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOAESQAAWl', symObjAddr: 0x71A0, symBinAddr: 0x69870, symSize: 0x30 } + - { offset: 0xE94C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA9BlendModeAaDP_SQWT', symObjAddr: 0x71D0, symBinAddr: 0x698A0, symSize: 0x10 } + - { offset: 0xE94D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA5FloatAaDP_SQWT', symObjAddr: 0x7200, symBinAddr: 0x698B0, symSize: 0x10 } + - { offset: 0xE94E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA8GradientAaDP_SQWT', symObjAddr: 0x7210, symBinAddr: 0x698C0, symSize: 0x10 } + - { offset: 0xE94FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVAESQAAWl', symObjAddr: 0x7220, symBinAddr: 0x698D0, symSize: 0x30 } + - { offset: 0xE9510, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA5ImageAaDP_SQWT', symObjAddr: 0x7250, symBinAddr: 0x69900, symSize: 0x10 } + - { offset: 0xE9524, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOAESQAAWl', symObjAddr: 0x7260, symBinAddr: 0x69910, symSize: 0x30 } + - { offset: 0xE9538, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CGTextTypesVAA08RendererE0AA4PathAaDP_SQWT', symObjAddr: 0x72B0, symBinAddr: 0x69940, symSize: 0x10 } + - { offset: 0xE954C, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI9LayerTreeO5ShapeOGSayxGSQsSQRzlWl', symObjAddr: 0x72C0, symBinAddr: 0x69950, symSize: 0x60 } + - { offset: 0xE9560, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOAESQAAWl', symObjAddr: 0x7320, symBinAddr: 0x699B0, symSize: 0x30 } + - { offset: 0xE95B6, size: 0x8, addend: 0x0, symName: '_$ss26DefaultStringInterpolationV8PenNavUIE06appendC0_6indentySayAC9LayerTreeO5PointVG_SitF', symObjAddr: 0x73A0, symBinAddr: 0x699E0, symSize: 0x410 } + - { offset: 0xE9B40, size: 0x8, addend: 0x0, symName: '_$sSlsE5split9maxSplits25omittingEmptySubsequences14whereSeparatorSay11SubSequenceQzGSi_S2b7ElementQzKXEtKFSS_Tg5', symObjAddr: 0x77B0, symBinAddr: 0x69DF0, symSize: 0x4F0 } + - { offset: 0xEA005, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOWOy', symObjAddr: 0x8380, symBinAddr: 0x6A880, symSize: 0x30 } + - { offset: 0xEA019, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOWOe', symObjAddr: 0x83B0, symBinAddr: 0x6A8B0, symSize: 0x30 } + - { offset: 0xEA02D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA11CGTextTypesVGWOc', symObjAddr: 0x8430, symBinAddr: 0x6A8E0, symSize: 0x40 } + - { offset: 0xEA041, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA11CGTextTypesVGWOh', symObjAddr: 0x8470, symBinAddr: 0x6A920, symSize: 0x30 } + - { offset: 0xEA244, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xEA0, symBinAddr: 0x638C0, symSize: 0xC0 } + - { offset: 0xEA34F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSHAASH9hashValueSivgTW', symObjAddr: 0xFE0, symBinAddr: 0x63A00, symSize: 0x80 } + - { offset: 0xEA3FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1060, symBinAddr: 0x63A80, symSize: 0x60 } + - { offset: 0xEA461, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x10C0, symBinAddr: 0x63AE0, symSize: 0x80 } + - { offset: 0xEA83E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV11createPoint4fromSSAA9LayerTreeO0G0V_tF', symObjAddr: 0x0, symBinAddr: 0x62B40, symSize: 0x1A0 } + - { offset: 0xEAA2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV10createRect4fromSSAA9LayerTreeO0G0V_tF', symObjAddr: 0x1A0, symBinAddr: 0x62CE0, symSize: 0x2A0 } + - { offset: 0xEADDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV11createColor4fromSSAA9LayerTreeO0G0O_tF', symObjAddr: 0x440, symBinAddr: 0x62F80, symSize: 0x300 } + - { offset: 0xEB29D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV13createPattern4from8contentsSSAA9LayerTreeO0G0C_SayAA15RendererCommandOyAA0D5TypesVGGtF', symObjAddr: 0x740, symBinAddr: 0x63280, symSize: 0x640 } + - { offset: 0xEBABB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xF60, symBinAddr: 0x63980, symSize: 0x30 } + - { offset: 0xEBAE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0xF90, symBinAddr: 0x639B0, symSize: 0x50 } + - { offset: 0xEBB13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC16createColorSpaceyyAC0gH0OF', symObjAddr: 0x1140, symBinAddr: 0x63B60, symSize: 0x350 } + - { offset: 0xEBEE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC11updateColoryS2SF', symObjAddr: 0x1490, symBinAddr: 0x63EB0, symSize: 0x1C0 } + - { offset: 0xEBFE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC16createOrGetColoryS2SF', symObjAddr: 0x1650, symBinAddr: 0x64070, symSize: 0x2B0 } + - { offset: 0xEC2BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC16createOrGetColorySSAA9LayerTreeO0I0OF', symObjAddr: 0x1900, symBinAddr: 0x64320, symSize: 0x380 } + - { offset: 0xEC6EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC15createOrGetPathyS2SF', symObjAddr: 0x1C80, symBinAddr: 0x646A0, symSize: 0x3C0 } + - { offset: 0xECA23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC20createOrGetTransformyS2SF', symObjAddr: 0x2040, symBinAddr: 0x64A60, symSize: 0x3C0 } + - { offset: 0xECD6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC21createOrGetColorSpace3forAC0iJ0OAA9LayerTreeOAFO_tF', symObjAddr: 0x2400, symBinAddr: 0x64E20, symSize: 0x680 } + - { offset: 0xED4A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC19createOrGetGradientySSAA9LayerTreeO0I0VF', symObjAddr: 0x2A80, symBinAddr: 0x654A0, symSize: 0x760 } + - { offset: 0xEDF75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC18createOrGetPatternyS2SF', symObjAddr: 0x31E0, symBinAddr: 0x65C00, symSize: 0x5F0 } + - { offset: 0xEE352, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC11concatenate9transformySS_tF', symObjAddr: 0x37D0, symBinAddr: 0x661F0, symSize: 0x160 } + - { offset: 0xEE541, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC9translate2tx2tyySf_SftF', symObjAddr: 0x3930, symBinAddr: 0x66350, symSize: 0x260 } + - { offset: 0xEE83E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC5scale2sx2syySf_SftF', symObjAddr: 0x3BC0, symBinAddr: 0x665E0, symSize: 0x250 } + - { offset: 0xEEB25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setFill5colorySS_tF', symObjAddr: 0x3E10, symBinAddr: 0x66830, symSize: 0x160 } + - { offset: 0xEED14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setFill7patternySS_tF', symObjAddr: 0x3F70, symBinAddr: 0x66990, symSize: 0x410 } + - { offset: 0xEF246, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC9setStroke5colorySS_tF', symObjAddr: 0x4380, symBinAddr: 0x66DA0, symSize: 0x160 } + - { offset: 0xEF435, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setLine5widthySf_tF', symObjAddr: 0x44E0, symBinAddr: 0x66F00, symSize: 0x1D0 } + - { offset: 0xEF661, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setLine3capySS_tF', symObjAddr: 0x46B0, symBinAddr: 0x670D0, symSize: 0x140 } + - { offset: 0xEF822, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setLine4joinySS_tF', symObjAddr: 0x47F0, symBinAddr: 0x67210, symSize: 0x150 } + - { offset: 0xEF9F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setLine10miterLimitySf_tF', symObjAddr: 0x4940, symBinAddr: 0x67360, symSize: 0x1D0 } + - { offset: 0xEFC2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setClip4path4ruleySayAA9LayerTreeO5ShapeOG_SStF', symObjAddr: 0x4B10, symBinAddr: 0x67530, symSize: 0x430 } + - { offset: 0xF00E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC7setClip4mask5frameySayypG_SStF', symObjAddr: 0x4F40, symBinAddr: 0x67960, symSize: 0x190 } + - { offset: 0xF02FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC8setBlend4modeySS_tF', symObjAddr: 0x52B0, symBinAddr: 0x67CD0, symSize: 0x150 } + - { offset: 0xF04F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6stroke4pathySayAA9LayerTreeO5ShapeOG_tF', symObjAddr: 0x5400, symBinAddr: 0x67E20, symSize: 0x510 } + - { offset: 0xF0B96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC17clipStrokeOutline4pathySayAA9LayerTreeO5ShapeOG_tF', symObjAddr: 0x5910, symBinAddr: 0x68330, symSize: 0x2D0 } + - { offset: 0xF0EF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC4fill4path4ruleySayAA9LayerTreeO5ShapeOG_SStF', symObjAddr: 0x5BE0, symBinAddr: 0x68600, symSize: 0x6E0 } + - { offset: 0xF1756, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC4draw6linear4from2toyAA9LayerTreeO8GradientV_S2StF', symObjAddr: 0x62C0, symBinAddr: 0x68CE0, symSize: 0x1C0 } + - { offset: 0xF1A9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC9makeUIKitSSyF', symObjAddr: 0x6480, symBinAddr: 0x68EA0, symSize: 0x1C0 } + - { offset: 0xF1DE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10makeAppKitSSyF', symObjAddr: 0x6640, symBinAddr: 0x69060, symSize: 0x1B0 } + - { offset: 0xF20A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC8makeTextSSyF', symObjAddr: 0x67F0, symBinAddr: 0x69210, symSize: 0x2D0 } + - { offset: 0xF23D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererCfd', symObjAddr: 0x6AC0, symBinAddr: 0x694E0, symSize: 0x80 } + - { offset: 0xF23F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererCfD', symObjAddr: 0x6B40, symBinAddr: 0x69560, symSize: 0x20 } + - { offset: 0xF248A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceO3forAESgSS_tcfCTf4nd_n', symObjAddr: 0x7CF0, symBinAddr: 0x6A2E0, symSize: 0x140 } + - { offset: 0xF2503, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC4draw5imageyAA9LayerTreeO5ImageO_tFTf4dn_n', symObjAddr: 0x7E30, symBinAddr: 0x6A420, symSize: 0x2A0 } + - { offset: 0xF28FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextProviderV10createPath4fromSayAA9LayerTreeO5ShapeOGSayAJG_tFTf4nd_n', symObjAddr: 0x80D0, symBinAddr: 0x6A6C0, symSize: 0x150 } + - { offset: 0xF2BEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10ColorSpaceO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x8220, symBinAddr: 0x6A810, symSize: 0x60 } + - { offset: 0xF4A83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCfE', symObjAddr: 0x67D0, symBinAddr: 0x71150, symSize: 0x1E0 } + - { offset: 0xF4AB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCfETo', symObjAddr: 0x69E0, symBinAddr: 0x71360, symSize: 0x1E0 } + - { offset: 0xF4ADF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCMa', symObjAddr: 0x6BC0, symBinAddr: 0x71540, symSize: 0x20 } + - { offset: 0xF4B02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x6BE0, symBinAddr: 0x71560, symSize: 0x60 } + - { offset: 0xF4CC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x6C40, symBinAddr: 0x715C0, symSize: 0x19F0 } + - { offset: 0xF65EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x8690, symBinAddr: 0x73010, symSize: 0xB0 } + - { offset: 0xF6606, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtF', symObjAddr: 0x8740, symBinAddr: 0x730C0, symSize: 0xE0 } + - { offset: 0xF6689, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x8820, symBinAddr: 0x731A0, symSize: 0xC0 } + - { offset: 0xF66DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x88E0, symBinAddr: 0x73260, symSize: 0x120 } + - { offset: 0xF674F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x8A00, symBinAddr: 0x73380, symSize: 0x1360 } + - { offset: 0xF797F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFyycfU_', symObjAddr: 0x9D60, symBinAddr: 0x746E0, symSize: 0xB0 } + - { offset: 0xF79CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x9E10, symBinAddr: 0x74790, symSize: 0xA0 } + - { offset: 0xF7A17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12canMoveRowAtSbSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x9EB0, symBinAddr: 0x74830, symSize: 0xA0 } + - { offset: 0xF7A91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12canEditRowAtSbSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x9F50, symBinAddr: 0x748D0, symSize: 0x120 } + - { offset: 0xF7B10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_032titleForDeleteConfirmationButtonJ5RowAtSSSgSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xA070, symBinAddr: 0x749F0, symSize: 0xA0 } + - { offset: 0xF7B4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtF', symObjAddr: 0xA110, symBinAddr: 0x74A90, symSize: 0x5E0 } + - { offset: 0xF7E35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtFyyXEfU_', symObjAddr: 0xA6F0, symBinAddr: 0x75070, symSize: 0x170 } + - { offset: 0xF7F8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtFTo', symObjAddr: 0xA860, symBinAddr: 0x751E0, symSize: 0xB0 } + - { offset: 0xF7FE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_31targetIndexPathForMoveFromRowAt010toProposedjK010Foundation0jK0VSo07UITableF0C_A2ItFTo', symObjAddr: 0xA910, symBinAddr: 0x75290, symSize: 0x100 } + - { offset: 0xF8022, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_9moveRowAt2toySo07UITableF0C_10Foundation9IndexPathVAKtF', symObjAddr: 0xAA10, symBinAddr: 0x75390, symSize: 0x510 } + - { offset: 0xF81D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_9moveRowAt2toySo07UITableF0C_10Foundation9IndexPathVAKtFyyScMYccfU_', symObjAddr: 0xAF20, symBinAddr: 0x758A0, symSize: 0x1B0 } + - { offset: 0xF82EB, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUIE13movingElement4from2toSayxGSi_SitFAA5PlaceC_Tg5', symObjAddr: 0xB0D0, symBinAddr: 0x75A50, symSize: 0x110 } + - { offset: 0xF84C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_9moveRowAt2toySo07UITableF0C_10Foundation9IndexPathVAKtFTo', symObjAddr: 0xB1E0, symBinAddr: 0x75B60, symSize: 0xD0 } + - { offset: 0xF84E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_18didEndEditingRowAtySo07UITableF0C_10Foundation9IndexPathVSgtFyyScMYccfU_', symObjAddr: 0xB360, symBinAddr: 0x75CE0, symSize: 0x130 } + - { offset: 0xF85BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_18didEndEditingRowAtySo07UITableF0C_10Foundation9IndexPathVSgtFTo', symObjAddr: 0xB490, symBinAddr: 0x75E10, symSize: 0xD0 } + - { offset: 0xF8600, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0xB560, symBinAddr: 0x75EE0, symSize: 0x80 } + - { offset: 0xF86AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0xB5E0, symBinAddr: 0x75F60, symSize: 0x30 } + - { offset: 0xF8723, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10setupPanelyyF', symObjAddr: 0xB610, symBinAddr: 0x75F90, symSize: 0x110 } + - { offset: 0xF87D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10setupPanelyyFTo', symObjAddr: 0xB720, symBinAddr: 0x760A0, symSize: 0x30 } + - { offset: 0xF8814, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0xB750, symBinAddr: 0x760D0, symSize: 0x350 } + - { offset: 0xF8AD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0xBAA0, symBinAddr: 0x76420, symSize: 0x50 } + - { offset: 0xF8AF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC27floatingPanelDidChangeStateyyAA08FloatingiG0CF', symObjAddr: 0xBAF0, symBinAddr: 0x76470, symSize: 0x4F0 } + - { offset: 0xF8D4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC27floatingPanelDidChangeStateyyAA08FloatingiG0CFyyScMYccfU_', symObjAddr: 0xBFE0, symBinAddr: 0x76960, symSize: 0x80 } + - { offset: 0xF8D9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC27floatingPanelDidChangeStateyyAA08FloatingiG0CFTo', symObjAddr: 0xC060, symBinAddr: 0x769E0, symSize: 0x50 } + - { offset: 0xF8DB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC25adaptivePresentationStyle3forSo07UIModaliJ0VSo014UIPresentationG0C_tFTo', symObjAddr: 0xC0B0, symBinAddr: 0x76A30, symSize: 0x10 } + - { offset: 0xF8E0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0xC0C0, symBinAddr: 0x76A40, symSize: 0x50 } + - { offset: 0xF8E98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC27floatingPanelDidChangeStateyyAA08FloatingiG0CFyyScMYccfU_TA', symObjAddr: 0xC590, symBinAddr: 0x76F10, symSize: 0x10 } + - { offset: 0xF8EAC, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xC5A0, symBinAddr: 0x76F20, symSize: 0x20 } + - { offset: 0xF8EC0, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xC5C0, symBinAddr: 0x76F40, symSize: 0x10 } + - { offset: 0xF8ED4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4ndn_n', symObjAddr: 0xC680, symBinAddr: 0x76F50, symSize: 0x730 } + - { offset: 0xF951C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC31shouldReplaceStopIconWithLetter2at4stopSbSi_AA5PlaceCSgtFTf4nnd_n', symObjAddr: 0xCDB0, symBinAddr: 0x77680, symSize: 0x300 } + - { offset: 0xF9784, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_18didEndEditingRowAtySo07UITableF0C_10Foundation9IndexPathVSgtFTf4dnn_n', symObjAddr: 0xD0B0, symBinAddr: 0x77980, symSize: 0x320 } + - { offset: 0xF980A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_18didEndEditingRowAtySo07UITableF0C_10Foundation9IndexPathVSgtFyyScMYccfU_TA', symObjAddr: 0xD440, symBinAddr: 0x77D10, symSize: 0x30 } + - { offset: 0xF981E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_9moveRowAt2toySo07UITableF0C_10Foundation9IndexPathVAKtFyyScMYccfU_TA', symObjAddr: 0xD520, symBinAddr: 0x77DF0, symSize: 0x40 } + - { offset: 0xF9832, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtFyyXEfU_TA', symObjAddr: 0xD5E0, symBinAddr: 0x77EA0, symSize: 0x40 } + - { offset: 0xF9846, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_6commit8forRowAtySo07UITableF0C_So0mF16CellEditingStyleV10Foundation9IndexPathVtFySbcfU0_TA', symObjAddr: 0xD690, symBinAddr: 0x77F30, symSize: 0x20 } + - { offset: 0xF9878, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFyycfU_TA', symObjAddr: 0xD6D0, symBinAddr: 0x77F50, symSize: 0x10 } + - { offset: 0xF988C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyAA5PlaceCSgcfU_TA', symObjAddr: 0xD6E0, symBinAddr: 0x77F60, symSize: 0x20 } + - { offset: 0xF98A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyAA5PlaceCSgcfU0_TA', symObjAddr: 0xD700, symBinAddr: 0x77F80, symSize: 0x20 } + - { offset: 0xF98B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17previewDirections33_4796038DC95783C2E375AC3B61AF64B9LL2toyAA5PlaceCSg_tFyycfU_TA', symObjAddr: 0xD750, symBinAddr: 0x77FA0, symSize: 0x20 } + - { offset: 0xF98C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC15startNavigation33_4796038DC95783C2E375AC3B61AF64B9LL2toyAA5PlaceCSg_tFyycfU_TA', symObjAddr: 0xD770, symBinAddr: 0x77FC0, symSize: 0x20 } + - { offset: 0xF98DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14setTravelModesyyFyAA0I4ModeOXEfU_yycfU_TA', symObjAddr: 0xD840, symBinAddr: 0x78000, symSize: 0x20 } + - { offset: 0xF98F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC11viewDidLoadyyFyycfU_TA', symObjAddr: 0xD860, symBinAddr: 0x78020, symSize: 0x20 } + - { offset: 0xF9904, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC11viewDidLoadyyFyycfU0_TA', symObjAddr: 0xD880, symBinAddr: 0x78040, symSize: 0x20 } + - { offset: 0xF9932, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC06scrollF0AA06ScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x6A980, symSize: 0x20 } + - { offset: 0xF9990, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC06scrollF0AA06ScrollF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x6A9A0, symSize: 0x30 } + - { offset: 0xF99DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC018travelModeTappableF0AA06HapticF0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0x6A9D0, symSize: 0x20 } + - { offset: 0xF9A37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC018travelModeTappableF0AA06HapticF0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0x6A9F0, symSize: 0x30 } + - { offset: 0xF9B06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC15travelModeLabelSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x6AA20, symSize: 0x20 } + - { offset: 0xF9B5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC15travelModeLabelSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x6AA40, symSize: 0x30 } + - { offset: 0xF9BAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC015travelModeImageF0So07UIImageF0CSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x6AA70, symSize: 0x20 } + - { offset: 0xF9C05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC015travelModeImageF0So07UIImageF0CSgvsTo', symObjAddr: 0x110, symBinAddr: 0x6AA90, symSize: 0x30 } + - { offset: 0xF9C54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC020routeOptionsTappableF0AA06HapticF0CSgvgTo', symObjAddr: 0x140, symBinAddr: 0x6AAC0, symSize: 0x20 } + - { offset: 0xF9CA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC020routeOptionsTappableF0AA06HapticF0CSgvsTo', symObjAddr: 0x160, symBinAddr: 0x6AAE0, symSize: 0x30 } + - { offset: 0xF9CF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17routeOptionsLabelSo7UILabelCSgvgTo', symObjAddr: 0x190, symBinAddr: 0x6AB10, symSize: 0x20 } + - { offset: 0xF9D49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17routeOptionsLabelSo7UILabelCSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x6AB30, symSize: 0x30 } + - { offset: 0xF9D98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC23routeOptionsChevronIconSo07UIImageF0CSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0x6AB60, symSize: 0x20 } + - { offset: 0xF9DEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC23routeOptionsChevronIconSo07UIImageF0CSgvsTo', symObjAddr: 0x200, symBinAddr: 0x6AB80, symSize: 0x30 } + - { offset: 0xF9E3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorLabelSo7UILabelCSgvgTo', symObjAddr: 0x230, symBinAddr: 0x6ABB0, symSize: 0x20 } + - { offset: 0xF9E8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorLabelSo7UILabelCSgvsTo', symObjAddr: 0x250, symBinAddr: 0x6ABD0, symSize: 0x30 } + - { offset: 0xF9EDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorTitleSo7UILabelCSgvgTo', symObjAddr: 0x280, symBinAddr: 0x6AC00, symSize: 0x20 } + - { offset: 0xF9F2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC10errorTitleSo7UILabelCSgvsTo', symObjAddr: 0x2A0, symBinAddr: 0x6AC20, symSize: 0x30 } + - { offset: 0xF9F7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC021errorMessageContainerF0So6UIViewCSgvgTo', symObjAddr: 0x2D0, symBinAddr: 0x6AC50, symSize: 0x20 } + - { offset: 0xF9FD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC021errorMessageContainerF0So6UIViewCSgvsTo', symObjAddr: 0x2F0, symBinAddr: 0x6AC70, symSize: 0x30 } + - { offset: 0xFA025, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC016loadingContainerF0So6UIViewCSgvgTo', symObjAddr: 0x320, symBinAddr: 0x6ACA0, symSize: 0x20 } + - { offset: 0xFA078, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC016loadingContainerF0So6UIViewCSgvsTo', symObjAddr: 0x340, symBinAddr: 0x6ACC0, symSize: 0x30 } + - { offset: 0xFA0C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsTableF0So07UITableF0CSgvgTo', symObjAddr: 0x370, symBinAddr: 0x6ACF0, symSize: 0x20 } + - { offset: 0xFA11F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsTableF0So07UITableF0CSgvsTo', symObjAddr: 0x390, symBinAddr: 0x6AD10, symSize: 0x30 } + - { offset: 0xFA16E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010outerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x3C0, symBinAddr: 0x6AD40, symSize: 0x20 } + - { offset: 0xFA1C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010outerStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x3E0, symBinAddr: 0x6AD60, symSize: 0x30 } + - { offset: 0xFA215, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010innerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x410, symBinAddr: 0x6AD90, symSize: 0x20 } + - { offset: 0xFA268, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010innerStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x430, symBinAddr: 0x6ADB0, symSize: 0x30 } + - { offset: 0xFA2B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsStackF0So6UIViewCSgvgTo', symObjAddr: 0x460, symBinAddr: 0x6ADE0, symSize: 0x20 } + - { offset: 0xFA30A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC010stopsStackF0So6UIViewCSgvsTo', symObjAddr: 0x480, symBinAddr: 0x6AE00, symSize: 0x30 } + - { offset: 0xFA359, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC011routesTableF0So07UITableF0CSgvgTo', symObjAddr: 0x4B0, symBinAddr: 0x6AE30, symSize: 0x20 } + - { offset: 0xFA3AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC011routesTableF0So07UITableF0CSgvsTo', symObjAddr: 0x4D0, symBinAddr: 0x6AE50, symSize: 0x30 } + - { offset: 0xFA43F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC11viewDidLoadyyF', symObjAddr: 0x500, symBinAddr: 0x6AE80, symSize: 0x200 } + - { offset: 0xFA57E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x750, symBinAddr: 0x6B0D0, symSize: 0x30 } + - { offset: 0xFA5B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14setTravelModesyyF', symObjAddr: 0x780, symBinAddr: 0x6B100, symSize: 0x100 } + - { offset: 0xFA691, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14setTravelModesyyFyAA0I4ModeOXEfU_', symObjAddr: 0x880, symBinAddr: 0x6B200, symSize: 0x3B0 } + - { offset: 0xFA916, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14setTravelModesyyFyAA0I4ModeOXEfU_yycfU_', symObjAddr: 0xC30, symBinAddr: 0x6B5B0, symSize: 0x60 } + - { offset: 0xFB2A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC16selectTravelModeyyAA0iJ0OF', symObjAddr: 0xC90, symBinAddr: 0x6B610, symSize: 0x520 } + - { offset: 0xFB800, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC16updateTravelModeyyF', symObjAddr: 0x11B0, symBinAddr: 0x6BB30, symSize: 0x260 } + - { offset: 0xFB92C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC20updateLayoutIfNeededyyF', symObjAddr: 0x1410, symBinAddr: 0x6BD90, symSize: 0x280 } + - { offset: 0xFBB24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC019configureStopsTableF0yyF', symObjAddr: 0x1690, symBinAddr: 0x6C010, symSize: 0x2A0 } + - { offset: 0xFBBF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC8drawDotsyyF', symObjAddr: 0x1930, symBinAddr: 0x6C2B0, symSize: 0x9F0 } + - { offset: 0xFC4C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14routePathReadyyyF', symObjAddr: 0x2320, symBinAddr: 0x6CCA0, symSize: 0x300 } + - { offset: 0xFC69F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC15startNavigation33_4796038DC95783C2E375AC3B61AF64B9LL2toyAA5PlaceCSg_tF', symObjAddr: 0x2620, symBinAddr: 0x6CFA0, symSize: 0xA50 } + - { offset: 0xFD0CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17previewDirections33_4796038DC95783C2E375AC3B61AF64B9LL2toyAA5PlaceCSg_tF', symObjAddr: 0x3070, symBinAddr: 0x6D9F0, symSize: 0xA60 } + - { offset: 0xFDB3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC16TripStartDidFailyyF', symObjAddr: 0x3B50, symBinAddr: 0x6E4D0, symSize: 0x420 } + - { offset: 0xFDF99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC22updateSelectedEntrance33_4796038DC95783C2E375AC3B61AF64B9LL10completionyyycSg_tF', symObjAddr: 0x3F70, symBinAddr: 0x6E8F0, symSize: 0x130 } + - { offset: 0xFE0C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC24scrollToSelectedEntrance33_4796038DC95783C2E375AC3B61AF64B9LLyyF', symObjAddr: 0x40A0, symBinAddr: 0x6EA20, symSize: 0x680 } + - { offset: 0xFE6FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14isStopSortable2atSbSi_tF', symObjAddr: 0x48F0, symBinAddr: 0x6F270, symSize: 0x210 } + - { offset: 0xFE966, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC06updateD7OptionsyyF', symObjAddr: 0x4B00, symBinAddr: 0x6F480, symSize: 0x590 } + - { offset: 0xFEC3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC18sortableStopsCountSivg', symObjAddr: 0x5090, symBinAddr: 0x6FA10, symSize: 0x1F0 } + - { offset: 0xFEF0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC14canReorderCell2atSbSi_tF', symObjAddr: 0x5280, symBinAddr: 0x6FC00, symSize: 0x110 } + - { offset: 0xFEFF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC13canDeleteCell2atSbSi_tF', symObjAddr: 0x5390, symBinAddr: 0x6FD10, symSize: 0x2B0 } + - { offset: 0xFF286, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC18showLoadingMessageyyF', symObjAddr: 0x5640, symBinAddr: 0x6FFC0, symSize: 0x90 } + - { offset: 0xFF30E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC31showDirectionsNotAvailableError5errory7Penguin0dL0OSg_tF', symObjAddr: 0x56D0, symBinAddr: 0x70050, symSize: 0x560 } + - { offset: 0xFF671, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC05closeD14OverviewScreenyyFTo', symObjAddr: 0x5C30, symBinAddr: 0x705B0, symSize: 0x60 } + - { offset: 0xFF87A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC22didTapTravelModeButtonyyF', symObjAddr: 0x5C90, symBinAddr: 0x70610, symSize: 0x240 } + - { offset: 0xFF9F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC06didTapD13OptionsButtonyyF', symObjAddr: 0x5ED0, symBinAddr: 0x70850, symSize: 0x230 } + - { offset: 0xFFBB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC17updatePanelLayoutyyF', symObjAddr: 0x6100, symBinAddr: 0x70A80, symSize: 0x1B0 } + - { offset: 0xFFCCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x62B0, symBinAddr: 0x70C30, symSize: 0x260 } + - { offset: 0xFFD39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x6510, symBinAddr: 0x70E90, symSize: 0x50 } + - { offset: 0xFFD7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x6560, symBinAddr: 0x70EE0, symSize: 0x240 } + - { offset: 0xFFDD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x67A0, symBinAddr: 0x71120, symSize: 0x30 } + - { offset: 0xFFDED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerCfD', symObjAddr: 0x69B0, symBinAddr: 0x71330, symSize: 0x30 } + - { offset: 0x1000EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC13routeDurationSdvgTf4d_n', symObjAddr: 0xC110, symBinAddr: 0x76A90, symSize: 0x160 } + - { offset: 0x10030A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LayoutAdapterC6layout33_995BB7604D732323B0F3BB3065CA5A1ELLAA013FloatingPanelD0_pvsTf4en_nAA019AbsoluteInsetDrivenD0C_Tg5Tf4gn_n', symObjAddr: 0xC270, symBinAddr: 0x76BF0, symSize: 0xB0 } + - { offset: 0x100412, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26RoutePlannerViewControllerC7addStop_2atyAA5PlaceCSg_SiSgtFTf4ddn_n', symObjAddr: 0xC320, symBinAddr: 0x76CA0, symSize: 0x250 } + - { offset: 0x10091E, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI9PlaceTypeO_Tg5', symObjAddr: 0x0, symBinAddr: 0x78110, symSize: 0x240 } + - { offset: 0x100D5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO12processImage4with10Foundation4DataVAC13ConfigurationV_tKFZ', symObjAddr: 0x14D0, symBinAddr: 0x794A0, symSize: 0x850 } + - { offset: 0x101077, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO11makeTextAPI3forAA14CGTextRendererC0H0OAcHOSg_tFZ', symObjAddr: 0x1D20, symBinAddr: 0x79CF0, symSize: 0x20 } + - { offset: 0x1010CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO14makeSVGOptions3forAA3SVGC7OptionsVAC13ConfigurationV_tFZ', symObjAddr: 0x1D40, symBinAddr: 0x79D10, symSize: 0x110 } + - { offset: 0x10123A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ErrorOAEsAdAWl', symObjAddr: 0x1E50, symBinAddr: 0x79E20, symSize: 0x30 } + - { offset: 0x10124E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO12processImage_4with10Foundation4DataVAA3SVGC_AC13ConfigurationVtKFZ', symObjAddr: 0x1E80, symBinAddr: 0x79E50, symSize: 0x10 } + - { offset: 0x1012AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO15makeImageInsets3forAA3SVGC0H0VAcHV_tKFZ', symObjAddr: 0x1E90, symBinAddr: 0x79E60, symSize: 0xD0 } + - { offset: 0x10152B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO12processImage_4with10Foundation4DataVAA3SVGC_AC13ConfigurationVtKFZTf4nnd_n', symObjAddr: 0x1FA0, symBinAddr: 0x79F30, symSize: 0x500 } + - { offset: 0x101817, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVWOh', symObjAddr: 0x24A0, symBinAddr: 0x7A430, symSize: 0x30 } + - { offset: 0x10182B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_64660464CF3F4A91161BC661976AF1A2LLVAFsAdAWl', symObjAddr: 0x2500, symBinAddr: 0x7A460, symSize: 0x2D } + - { offset: 0x101877, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI9PlaceTypeO_Tg5', symObjAddr: 0x0, symBinAddr: 0x78110, symSize: 0x240 } + - { offset: 0x101944, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI9AmenitiesV10CodingKeysO_Tg5', symObjAddr: 0x240, symBinAddr: 0x78350, symSize: 0x1A0 } + - { offset: 0x101A0F, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI8FavoriteC10CodingKeysO_Tg5', symObjAddr: 0x3E0, symBinAddr: 0x784F0, symSize: 0x250 } + - { offset: 0x101AC2, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI22SharedFavoriteLocationC10CodingKeysO_Tg5', symObjAddr: 0x630, symBinAddr: 0x78740, symSize: 0x250 } + - { offset: 0x101B85, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysO_Tg5', symObjAddr: 0x880, symBinAddr: 0x78990, symSize: 0x170 } + - { offset: 0x101C20, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI21GetCampusInfoResponseC10CodingKeysO_Tg5', symObjAddr: 0x9F0, symBinAddr: 0x78B00, symSize: 0x190 } + - { offset: 0x101CE3, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI12MapDimensionO_Tg5', symObjAddr: 0xCC0, symBinAddr: 0x78C90, symSize: 0x160 } + - { offset: 0x101D8E, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI11RouteOptionV0gH3KeyO_Tg5', symObjAddr: 0xE20, symBinAddr: 0x78DF0, symSize: 0x200 } + - { offset: 0x101E29, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI11CommandLineO6FormatO_TB5', symObjAddr: 0x1020, symBinAddr: 0x78FF0, symSize: 0x190 } + - { offset: 0x101EE4, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI10TravelModeO_Tg5', symObjAddr: 0x11B0, symBinAddr: 0x79180, symSize: 0x180 } + - { offset: 0x101F7F, size: 0x8, addend: 0x0, symName: '_$ss2eeoiySbx_xtSYRzSQ8RawValueRpzlF8PenNavUI10SourceViewO_Tg5', symObjAddr: 0x1330, symBinAddr: 0x79300, symSize: 0x1A0 } + - { offset: 0x1027DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC11toastHeight_WZ', symObjAddr: 0x0, symBinAddr: 0x7A490, symSize: 0x30 } + - { offset: 0x102803, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC11toastHeight12CoreGraphics7CGFloatVvpZ', symObjAddr: 0xAFF0, symBinAddr: 0x3BCF78, symSize: 0x0 } + - { offset: 0x102820, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC11toastHeight_WZ', symObjAddr: 0x0, symBinAddr: 0x7A490, symSize: 0x30 } + - { offset: 0x102CAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewCfETo', symObjAddr: 0xCD0, symBinAddr: 0x7B160, symSize: 0x90 } + - { offset: 0x102CDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewCMa', symObjAddr: 0xD60, symBinAddr: 0x7B1F0, symSize: 0x20 } + - { offset: 0x102CEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC10setMessage4typeyAA0D4TypeO_tFyycfU_TA', symObjAddr: 0xDA0, symBinAddr: 0x7B230, symSize: 0x10 } + - { offset: 0x102F4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC12messageLabelSo7UILabelCSgvgTo', symObjAddr: 0x30, symBinAddr: 0x7A4C0, symSize: 0x20 } + - { offset: 0x102FAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC12messageLabelSo7UILabelCSgvsTo', symObjAddr: 0x50, symBinAddr: 0x7A4E0, symSize: 0x20 } + - { offset: 0x102FFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC06hapticE0AA06HapticE0CSgvgTo', symObjAddr: 0x70, symBinAddr: 0x7A500, symSize: 0x20 } + - { offset: 0x103059, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC06hapticE0AA06HapticE0CSgvsTo', symObjAddr: 0x90, symBinAddr: 0x7A520, symSize: 0x20 } + - { offset: 0x1030AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC010blurEffectE0AA04BlurgE0CSgvgTo', symObjAddr: 0xB0, symBinAddr: 0x7A540, symSize: 0x20 } + - { offset: 0x103106, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC010blurEffectE0AA04BlurgE0CSgvsTo', symObjAddr: 0xD0, symBinAddr: 0x7A560, symSize: 0x20 } + - { offset: 0x103159, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC05imageE0So07UIImageE0CSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x7A580, symSize: 0x20 } + - { offset: 0x1031B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC05imageE0So07UIImageE0CSgvsTo', symObjAddr: 0x110, symBinAddr: 0x7A5A0, symSize: 0x20 } + - { offset: 0x103206, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC05stackE0So07UIStackE0CSgvgTo', symObjAddr: 0x130, symBinAddr: 0x7A5C0, symSize: 0x20 } + - { offset: 0x103260, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC05stackE0So07UIStackE0CSgvsTo', symObjAddr: 0x150, symBinAddr: 0x7A5E0, symSize: 0x20 } + - { offset: 0x1032B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC26activityIndicatorContainerSo6UIViewCSgvgTo', symObjAddr: 0x170, symBinAddr: 0x7A600, symSize: 0x20 } + - { offset: 0x10330D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC26activityIndicatorContainerSo6UIViewCSgvsTo', symObjAddr: 0x190, symBinAddr: 0x7A620, symSize: 0x20 } + - { offset: 0x10335A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC13iconImageName33_7711327B376EF5477089E69F768F33CBLLSSvg', symObjAddr: 0x1B0, symBinAddr: 0x7A640, symSize: 0xF0 } + - { offset: 0x103410, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC12bouncingDotsAA08BouncingG17ActivityIndicatorCvg', symObjAddr: 0x2A0, symBinAddr: 0x7A730, symSize: 0x100 } + - { offset: 0x1034D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x3A0, symBinAddr: 0x7A830, symSize: 0x140 } + - { offset: 0x10350B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x4E0, symBinAddr: 0x7A970, symSize: 0x30 } + - { offset: 0x103558, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x510, symBinAddr: 0x7A9A0, symSize: 0x110 } + - { offset: 0x10358D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x620, symBinAddr: 0x7AAB0, symSize: 0x30 } + - { offset: 0x1035D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC10commonInit33_7711327B376EF5477089E69F768F33CBLLyyF', symObjAddr: 0x650, symBinAddr: 0x7AAE0, symSize: 0x260 } + - { offset: 0x1037F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC10setMessage4typeyAA0D4TypeO_tF', symObjAddr: 0x8B0, symBinAddr: 0x7AD40, symSize: 0x310 } + - { offset: 0x1039D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewC10setMessage4typeyAA0D4TypeO_tFyycfU_', symObjAddr: 0xBC0, symBinAddr: 0x7B050, symSize: 0xE0 } + - { offset: 0x103AF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastViewCfD', symObjAddr: 0xCA0, symBinAddr: 0x7B130, symSize: 0x30 } + - { offset: 0x103EB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7B240, symSize: 0x20 } + - { offset: 0x104043, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellCfETo', symObjAddr: 0x250, symBinAddr: 0x7B490, symSize: 0x40 } + - { offset: 0x104072, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellCMa', symObjAddr: 0x290, symBinAddr: 0x7B4D0, symSize: 0x14 } + - { offset: 0x104144, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7B240, symSize: 0x20 } + - { offset: 0x1041A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x7B260, symSize: 0x30 } + - { offset: 0x1041F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0x7B290, symSize: 0x20 } + - { offset: 0x104249, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0x7B2B0, symSize: 0x30 } + - { offset: 0x104298, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC12awakeFromNibyyFTo', symObjAddr: 0xA0, symBinAddr: 0x7B2E0, symSize: 0x30 } + - { offset: 0x1042EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0xD0, symBinAddr: 0x7B310, symSize: 0xC0 } + - { offset: 0x10436A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x190, symBinAddr: 0x7B3D0, symSize: 0x90 } + - { offset: 0x1043A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20TrailingIconMenuCellCfD', symObjAddr: 0x220, symBinAddr: 0x7B460, symSize: 0x30 } + - { offset: 0x104727, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC7doneBtnSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7B4F0, symSize: 0x20 } + - { offset: 0x104AB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageCfETo', symObjAddr: 0x1130, symBinAddr: 0x7C620, symSize: 0x80 } + - { offset: 0x104AE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageCMa', symObjAddr: 0x11B0, symBinAddr: 0x7C6A0, symSize: 0x20 } + - { offset: 0x104C43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC7doneBtnSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7B4F0, symSize: 0x20 } + - { offset: 0x104CA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC7doneBtnSo8UIButtonCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x7B510, symSize: 0x20 } + - { offset: 0x104CF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC15viewVidioPlayerSo6UIViewCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x7B530, symSize: 0x20 } + - { offset: 0x104D50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC15viewVidioPlayerSo6UIViewCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x7B550, symSize: 0x20 } + - { offset: 0x104DA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC4viewSo6UIViewCSgvgTo', symObjAddr: 0x80, symBinAddr: 0x7B570, symSize: 0x20 } + - { offset: 0x104DF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC4viewSo6UIViewCSgvsTo', symObjAddr: 0xA0, symBinAddr: 0x7B590, symSize: 0x30 } + - { offset: 0x104E31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC5frameACSo6CGRectV_tcfc', symObjAddr: 0xD0, symBinAddr: 0x7B5C0, symSize: 0x120 } + - { offset: 0x104E66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1F0, symBinAddr: 0x7B6E0, symSize: 0x30 } + - { offset: 0x104EC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x220, symBinAddr: 0x7B710, symSize: 0xF0 } + - { offset: 0x104EFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x310, symBinAddr: 0x7B800, symSize: 0x30 } + - { offset: 0x105055, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC10commonInityyF', symObjAddr: 0x340, symBinAddr: 0x7B830, symSize: 0xB90 } + - { offset: 0x1053DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC10hideActionyyypFTo', symObjAddr: 0xED0, symBinAddr: 0x7C3C0, symSize: 0x90 } + - { offset: 0x10543F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC11videoDidEndyyFTo', symObjAddr: 0xF60, symBinAddr: 0x7C450, symSize: 0xA0 } + - { offset: 0x1054B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC14layoutSubviewsyyF', symObjAddr: 0x1000, symBinAddr: 0x7C4F0, symSize: 0xD0 } + - { offset: 0x10552A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageC14layoutSubviewsyyFTo', symObjAddr: 0x10D0, symBinAddr: 0x7C5C0, symSize: 0x30 } + - { offset: 0x10553E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CalibrateMessageCfD', symObjAddr: 0x1100, symBinAddr: 0x7C5F0, symSize: 0x30 } + - { offset: 0x1058D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7C6C0, symSize: 0x20 } + - { offset: 0x105C96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellCfETo', symObjAddr: 0xAF0, symBinAddr: 0x7D1B0, symSize: 0x50 } + - { offset: 0x105CC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellCMa', symObjAddr: 0xB40, symBinAddr: 0x7D200, symSize: 0x20 } + - { offset: 0x105EA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x7C6C0, symSize: 0x20 } + - { offset: 0x105F07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x7C6E0, symSize: 0x30 } + - { offset: 0x105F56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x7C710, symSize: 0x20 } + - { offset: 0x105FA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x7C730, symSize: 0x30 } + - { offset: 0x105FF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC18selectionImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x7C760, symSize: 0x20 } + - { offset: 0x106050, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC18selectionImageViewSo07UIImageH0CSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x7C780, symSize: 0x30 } + - { offset: 0x10609F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC13gateImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x7C7B0, symSize: 0x20 } + - { offset: 0x1060F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC13gateImageViewSo07UIImageH0CSgvsTo', symObjAddr: 0x110, symBinAddr: 0x7C7D0, symSize: 0x20 } + - { offset: 0x106147, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC12awakeFromNibyyFTo', symObjAddr: 0x130, symBinAddr: 0x7C7F0, symSize: 0x30 } + - { offset: 0x1062C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC9configure4with10isSelectedyAA5PlaceCSg_SbtF', symObjAddr: 0x160, symBinAddr: 0x7C820, symSize: 0x790 } + - { offset: 0x10684B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x8F0, symBinAddr: 0x7CFB0, symSize: 0xC0 } + - { offset: 0x10688C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x9B0, symBinAddr: 0x7D070, symSize: 0x30 } + - { offset: 0x1068C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x9E0, symBinAddr: 0x7D0A0, symSize: 0xB0 } + - { offset: 0x1068F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xA90, symBinAddr: 0x7D150, symSize: 0x30 } + - { offset: 0x10690B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8GateCellCfD', symObjAddr: 0xAC0, symBinAddr: 0x7D180, symSize: 0x30 } + - { offset: 0x106CAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVMi', symObjAddr: 0x0, symBinAddr: 0x7D220, symSize: 0x10 } + - { offset: 0x106CC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVMi', symObjAddr: 0x0, symBinAddr: 0x7D220, symSize: 0x10 } + - { offset: 0x106CDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVMr', symObjAddr: 0x10, symBinAddr: 0x7D230, symSize: 0x70 } + - { offset: 0x106CEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwCP', symObjAddr: 0x80, symBinAddr: 0x7D2A0, symSize: 0xA0 } + - { offset: 0x106D03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwxx', symObjAddr: 0x120, symBinAddr: 0x7D340, symSize: 0x40 } + - { offset: 0x106D17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwcp', symObjAddr: 0x160, symBinAddr: 0x7D380, symSize: 0x50 } + - { offset: 0x106D2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwca', symObjAddr: 0x1B0, symBinAddr: 0x7D3D0, symSize: 0x60 } + - { offset: 0x106D3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwtk', symObjAddr: 0x210, symBinAddr: 0x7D430, symSize: 0x50 } + - { offset: 0x106D53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwta', symObjAddr: 0x260, symBinAddr: 0x7D480, symSize: 0x60 } + - { offset: 0x106D67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwet', symObjAddr: 0x2C0, symBinAddr: 0x7D4E0, symSize: 0x110 } + - { offset: 0x106D7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVwst', symObjAddr: 0x3D0, symBinAddr: 0x7D5F0, symSize: 0x180 } + - { offset: 0x106D8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackVMa', symObjAddr: 0x550, symBinAddr: 0x7D770, symSize: 0x10 } + - { offset: 0x107125, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI8FavoriteCG_Tg503$s8fg4UI18I51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x7D780, symSize: 0x60 } + - { offset: 0x107453, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryCMa', symObjAddr: 0x1400, symBinAddr: 0x7EB80, symSize: 0x20 } + - { offset: 0x107467, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC12getFavoritesSayAA0D0CGyFyyYbXEfU_TA', symObjAddr: 0x1460, symBinAddr: 0x7EBE0, symSize: 0x20 } + - { offset: 0x10747B, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x14A0, symBinAddr: 0x7EC00, symSize: 0x20 } + - { offset: 0x10748F, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x14C0, symBinAddr: 0x7EC20, symSize: 0x10 } + - { offset: 0x107568, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF8PenNavUI8FavoriteC_Tg503$s8ef4UI18H51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1cn_n', symObjAddr: 0x14D0, symBinAddr: 0x7EC30, symSize: 0x420 } + - { offset: 0x1078AC, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI8FavoriteC_Tg503$s8ef4UI18H51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1nnncn_n', symObjAddr: 0x18F0, symBinAddr: 0x7F050, symSize: 0xA00 } + - { offset: 0x107E9C, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI8FavoriteC_Tg503$s8fg4UI18I51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1nncn_n', symObjAddr: 0x22F0, symBinAddr: 0x7FA50, symSize: 0x2B0 } + - { offset: 0x10823E, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI8FavoriteC_Tg503$s8gh4UI18J51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1nnnnc_n', symObjAddr: 0x25A0, symBinAddr: 0x7FD00, symSize: 0x400 } + - { offset: 0x10837E, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVSgWOh', symObjAddr: 0x29E0, symBinAddr: 0x80100, symSize: 0x30 } + - { offset: 0x108392, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC05clearD5TableyyFyyYbXEfU_TA', symObjAddr: 0x2A50, symBinAddr: 0x80170, symSize: 0x20 } + - { offset: 0x1083A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC15insertFavorites9favoritesySayAA0D0CG_tFyyYbXEfU_TA', symObjAddr: 0x2AA0, symBinAddr: 0x801C0, symSize: 0x20 } + - { offset: 0x1083D4, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy8PenNavUI8FavoriteCG_Tg503$s8fg4UI18I51RepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x7D780, symSize: 0x60 } + - { offset: 0x1086D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC15insertFavorites9favoritesySayAA0D0CG_tF', symObjAddr: 0x60, symBinAddr: 0x7D7E0, symSize: 0x190 } + - { offset: 0x10875E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC15insertFavorites9favoritesySayAA0D0CG_tFyyYbXEfU_', symObjAddr: 0x1F0, symBinAddr: 0x7D970, symSize: 0x390 } + - { offset: 0x108942, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC06removeD08favoriteyAA0D0C_tF', symObjAddr: 0x580, symBinAddr: 0x7DD00, symSize: 0x360 } + - { offset: 0x108BBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC05clearD5TableyyF', symObjAddr: 0x8E0, symBinAddr: 0x7E060, symSize: 0x200 } + - { offset: 0x108CA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC05clearD5TableyyFyyYbXEfU_', symObjAddr: 0xAE0, symBinAddr: 0x7E260, symSize: 0x1B0 } + - { offset: 0x108E60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC12getFavoritesSayAA0D0CGyF', symObjAddr: 0xC90, symBinAddr: 0x7E410, symSize: 0x290 } + - { offset: 0x108F6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC12getFavoritesSayAA0D0CGyFyyYbXEfU_', symObjAddr: 0xF20, symBinAddr: 0x7E6A0, symSize: 0x250 } + - { offset: 0x1092A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryC12getFavoritesSayAA0D0CGyFSbAF_AFtXEfU0_', symObjAddr: 0x1170, symBinAddr: 0x7E8F0, symSize: 0x270 } + - { offset: 0x1093A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FavoriteRepositoryCfD', symObjAddr: 0x13E0, symBinAddr: 0x7EB60, symSize: 0x20 } + - { offset: 0x109DC2, size: 0x8, addend: 0x0, symName: '_$sIg_Ieg_TR', symObjAddr: 0x0, symBinAddr: 0x80270, symSize: 0x20 } + - { offset: 0x109DD6, size: 0x8, addend: 0x0, symName: '_$sIeg_IyB_TR', symObjAddr: 0x20, symBinAddr: 0x80290, symSize: 0x20 } + - { offset: 0x10AC89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCfE', symObjAddr: 0x4240, symBinAddr: 0x844B0, symSize: 0x130 } + - { offset: 0x10ACB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCfETo', symObjAddr: 0x43A0, symBinAddr: 0x84610, symSize: 0x130 } + - { offset: 0x10ACE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCMa', symObjAddr: 0x44D0, symBinAddr: 0x84740, symSize: 0x20 } + - { offset: 0x10ACF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC09searchBarE13ButtonClickedyyAA0eI0CF', symObjAddr: 0x44F0, symBinAddr: 0x84760, symSize: 0x100 } + - { offset: 0x10AE39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC015clearResultsAndE033_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x45F0, symBinAddr: 0x84860, symSize: 0x2E0 } + - { offset: 0x10B048, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC015clearResultsAndE033_D7A566C795799BF1F9604DDE695EDC30LLyyFTo', symObjAddr: 0x48D0, symBinAddr: 0x84B40, symSize: 0x30 } + - { offset: 0x10B091, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH19TextDidBeginEditingyyAA0eH0CFTW', symObjAddr: 0x4900, symBinAddr: 0x84B70, symSize: 0x20 } + - { offset: 0x10B10A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH0_13textDidChangeyAA0eH0C_SStFTW', symObjAddr: 0x4920, symBinAddr: 0x84B90, symSize: 0x10 } + - { offset: 0x10B13D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchhE13ButtonClickedyyAA0eH0CFTW', symObjAddr: 0x4930, symBinAddr: 0x84BA0, symSize: 0x10 } + - { offset: 0x10B168, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH18ClearButtonClickedyyAA0eH0CFTW', symObjAddr: 0x4940, symBinAddr: 0x84BB0, symSize: 0x10 } + - { offset: 0x10B1C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA0E11BarDelegateA2aDP06searchH19CancelButtonClickedyyAA0eH0CFTW', symObjAddr: 0x4950, symBinAddr: 0x84BC0, symSize: 0x20 } + - { offset: 0x10B22E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x4970, symBinAddr: 0x84BE0, symSize: 0x30 } + - { offset: 0x10B2BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x49A0, symBinAddr: 0x84C10, symSize: 0x60 } + - { offset: 0x10B3B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x4A00, symBinAddr: 0x84C70, symSize: 0x580 } + - { offset: 0x10BAD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x4F80, symBinAddr: 0x851F0, symSize: 0xB0 } + - { offset: 0x10BB24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_22viewForHeaderInSectionSo6UIViewCSgSo07UITableF0C_SitFTo', symObjAddr: 0x5520, symBinAddr: 0x85790, symSize: 0x70 } + - { offset: 0x10BB66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_24heightForHeaderInSection12CoreGraphics7CGFloatVSo07UITableF0C_SitFTo', symObjAddr: 0x5590, symBinAddr: 0x85800, symSize: 0x60 } + - { offset: 0x10BB99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_24heightForFooterInSection12CoreGraphics7CGFloatVSo07UITableF0C_SitFTo', symObjAddr: 0x55F0, symBinAddr: 0x85860, symSize: 0x10 } + - { offset: 0x10BBC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTo', symObjAddr: 0x5600, symBinAddr: 0x85870, symSize: 0xB0 } + - { offset: 0x10BC2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x56B0, symBinAddr: 0x85920, symSize: 0x4B0 } + - { offset: 0x10C31B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x5B60, symBinAddr: 0x85DD0, symSize: 0xA0 } + - { offset: 0x10C393, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x5C00, symBinAddr: 0x85E70, symSize: 0x70 } + - { offset: 0x10C40B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x5C70, symBinAddr: 0x85EE0, symSize: 0x30 } + - { offset: 0x10C482, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10setupPanelyyF', symObjAddr: 0x5CA0, symBinAddr: 0x85F10, symSize: 0x160 } + - { offset: 0x10C580, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10setupPanelyyFTo', symObjAddr: 0x5E00, symBinAddr: 0x86070, symSize: 0x30 } + - { offset: 0x10C59C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x5EE0, symBinAddr: 0x860A0, symSize: 0x150 } + - { offset: 0x10C6F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x60B0, symBinAddr: 0x861F0, symSize: 0x10 } + - { offset: 0x10C76D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC9searchBar_13textDidChangeyAA0eI0C_SStFTf4dnn_n', symObjAddr: 0x6B50, symBinAddr: 0x86C90, symSize: 0x1A0 } + - { offset: 0x10C8A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC27searchBarClearButtonClickedyyAA0eI0CFTf4dn_n', symObjAddr: 0x6CF0, symBinAddr: 0x86E30, symSize: 0x1A0 } + - { offset: 0x10CA6F, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x6EF0, symBinAddr: 0x86FF0, symSize: 0x20 } + - { offset: 0x10CA83, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x6F10, symBinAddr: 0x87010, symSize: 0x10 } + - { offset: 0x10CA97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x6F60, symBinAddr: 0x87020, symSize: 0xF0 } + - { offset: 0x10CBCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_22viewForHeaderInSectionSo6UIViewCSgSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x7050, symBinAddr: 0x87110, symSize: 0x100 } + - { offset: 0x10CD35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_24heightForHeaderInSection12CoreGraphics7CGFloatVSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x7150, symBinAddr: 0x87210, symSize: 0xD0 } + - { offset: 0x10CE2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF0_11willDisplay8forRowAtySo07UITableF0C_So0nF4CellC10Foundation9IndexPathVtFTf4ddnn_n', symObjAddr: 0x7220, symBinAddr: 0x872E0, symSize: 0x290 } + - { offset: 0x10D073, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC20showNoResultsMessage33_D7A566C795799BF1F9604DDE695EDC30LLyyFyyScMYccfU_TA', symObjAddr: 0x7540, symBinAddr: 0x875A0, symSize: 0x20 } + - { offset: 0x10D087, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC6search33_D7A566C795799BF1F9604DDE695EDC30LL6manualySb_tFySayAA7POIDataCGSgcfU_TA', symObjAddr: 0x7620, symBinAddr: 0x875E0, symSize: 0x20 } + - { offset: 0x10D09B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_TA', symObjAddr: 0x7650, symBinAddr: 0x87610, symSize: 0x20 } + - { offset: 0x10D0AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_yyXEfU_TA', symObjAddr: 0x76B0, symBinAddr: 0x87660, symSize: 0x20 } + - { offset: 0x10D0CE, size: 0x8, addend: 0x0, symName: '_$sSS_yptWOh', symObjAddr: 0x7710, symBinAddr: 0x876A0, symSize: 0x30 } + - { offset: 0x10D0E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC09configureE3Bar33_D7A566C795799BF1F9604DDE695EDC30LLyyFyyScMYccfU_TA', symObjAddr: 0x7770, symBinAddr: 0x876D0, symSize: 0x10 } + - { offset: 0x10D0F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyFySayAA0I0CGcfU_TA', symObjAddr: 0x7780, symBinAddr: 0x876E0, symSize: 0x10 } + - { offset: 0x10D10A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyFySayAA0I0CGcfU_yyScMYccfU0_TA', symObjAddr: 0x7790, symBinAddr: 0x876F0, symSize: 0x10 } + - { offset: 0x10D11E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchSectionOMa', symObjAddr: 0x7940, symBinAddr: 0x87700, symSize: 0x10 } + - { offset: 0x10D132, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchSectionOSHAASQWb', symObjAddr: 0x7950, symBinAddr: 0x87710, symSize: 0x10 } + - { offset: 0x10D146, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchSectionOACSQAAWl', symObjAddr: 0x7960, symBinAddr: 0x87720, symSize: 0x30 } + - { offset: 0x10D3C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10titleLabel33_D7A566C795799BF1F9604DDE695EDC30LLSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x802B0, symSize: 0x20 } + - { offset: 0x10D41E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10titleLabel33_D7A566C795799BF1F9604DDE695EDC30LLSo7UILabelCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x802D0, symSize: 0x30 } + - { offset: 0x10D46D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC9searchBar33_D7A566C795799BF1F9604DDE695EDC30LLAA0eI0CSgvgTo', symObjAddr: 0x90, symBinAddr: 0x80300, symSize: 0x20 } + - { offset: 0x10D4C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC9searchBar33_D7A566C795799BF1F9604DDE695EDC30LLAA0eI0CSgvsTo', symObjAddr: 0xB0, symBinAddr: 0x80320, symSize: 0x30 } + - { offset: 0x10D514, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF033_D7A566C795799BF1F9604DDE695EDC30LLSo07UITableF0CSgvgTo', symObjAddr: 0xE0, symBinAddr: 0x80350, symSize: 0x20 } + - { offset: 0x10D56C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF033_D7A566C795799BF1F9604DDE695EDC30LLSo07UITableF0CSgvsTo', symObjAddr: 0x100, symBinAddr: 0x80370, symSize: 0x30 } + - { offset: 0x10D5BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF16BottomConstraint33_D7A566C795799BF1F9604DDE695EDC30LLSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x130, symBinAddr: 0x803A0, symSize: 0x20 } + - { offset: 0x10D613, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC05tableF16BottomConstraint33_D7A566C795799BF1F9604DDE695EDC30LLSo08NSLayoutJ0CSgvsTo', symObjAddr: 0x150, symBinAddr: 0x803C0, symSize: 0x30 } + - { offset: 0x10D67C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC8sectionsSayAA0E7SectionOGvg', symObjAddr: 0x180, symBinAddr: 0x803F0, symSize: 0xC0 } + - { offset: 0x10D783, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC11viewDidLoadyyF', symObjAddr: 0x240, symBinAddr: 0x804B0, symSize: 0xE0 } + - { offset: 0x10D7F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x320, symBinAddr: 0x80590, symSize: 0x30 } + - { offset: 0x10D846, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0x350, symBinAddr: 0x805C0, symSize: 0x60 } + - { offset: 0x10DAF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setRelevantPlacesyyF', symObjAddr: 0x3B0, symBinAddr: 0x80620, symSize: 0x420 } + - { offset: 0x10DF6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyF', symObjAddr: 0x7D0, symBinAddr: 0x80A40, symSize: 0x180 } + - { offset: 0x10E0B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyFySayAA0I0CGcfU_', symObjAddr: 0x950, symBinAddr: 0x80BC0, symSize: 0x3C0 } + - { offset: 0x10E346, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17setFavoritePlacesyyFySayAA0I0CGcfU_yyScMYccfU0_', symObjAddr: 0xD10, symBinAddr: 0x80F80, symSize: 0x80 } + - { offset: 0x10E4C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC09configureE3Bar33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0xD90, symBinAddr: 0x81000, symSize: 0x2C0 } + - { offset: 0x10E673, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC09configureE3Bar33_D7A566C795799BF1F9604DDE695EDC30LLyyFyyScMYccfU_', symObjAddr: 0x1050, symBinAddr: 0x812C0, symSize: 0x1E0 } + - { offset: 0x10E788, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC014configureTableF033_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x1230, symBinAddr: 0x814A0, symSize: 0x120 } + - { offset: 0x10E953, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC15configureLoader33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x1350, symBinAddr: 0x815C0, symSize: 0x2E0 } + - { offset: 0x10EBA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC25configureNoResultsMessage33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x1630, symBinAddr: 0x818A0, symSize: 0x530 } + - { offset: 0x10EFE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC6search33_D7A566C795799BF1F9604DDE695EDC30LL6manualySb_tF', symObjAddr: 0x1B60, symBinAddr: 0x81DD0, symSize: 0x3E0 } + - { offset: 0x10F42A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC6search33_D7A566C795799BF1F9604DDE695EDC30LL6manualySb_tFySayAA7POIDataCGSgcfU_', symObjAddr: 0x1F40, symBinAddr: 0x821B0, symSize: 0x90 } + - { offset: 0x10F576, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_', symObjAddr: 0x1FD0, symBinAddr: 0x82240, symSize: 0x8A0 } + - { offset: 0x10FA55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFyyScMYccfU_yyXEfU_', symObjAddr: 0x2870, symBinAddr: 0x82AE0, symSize: 0x100 } + - { offset: 0x10FADE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC23indexPathsForNewResults33_D7A566C795799BF1F9604DDE695EDC30LL03newL0Say10Foundation9IndexPathVGSayAA7POIDataCG_tF', symObjAddr: 0x2970, symBinAddr: 0x82BE0, symSize: 0x250 } + - { offset: 0x10FFB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC10showLoader33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x2BC0, symBinAddr: 0x82E30, symSize: 0x350 } + - { offset: 0x1101BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC20showNoResultsMessage33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x2F10, symBinAddr: 0x83180, symSize: 0x240 } + - { offset: 0x110241, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC20showNoResultsMessage33_D7A566C795799BF1F9604DDE695EDC30LLyyFyyScMYccfU_', symObjAddr: 0x3150, symBinAddr: 0x833C0, symSize: 0x230 } + - { offset: 0x110351, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC18handleUserLocation33_D7A566C795799BF1F9604DDE695EDC30LLyyF', symObjAddr: 0x3380, symBinAddr: 0x835F0, symSize: 0x910 } + - { offset: 0x110E12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x3C90, symBinAddr: 0x83F00, symSize: 0x2A0 } + - { offset: 0x110F31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x3F30, symBinAddr: 0x841A0, symSize: 0x50 } + - { offset: 0x110F45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3F80, symBinAddr: 0x841F0, symSize: 0x290 } + - { offset: 0x111056, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x4210, symBinAddr: 0x84480, symSize: 0x30 } + - { offset: 0x11106A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerCfD', symObjAddr: 0x4370, symBinAddr: 0x845E0, symSize: 0x30 } + - { offset: 0x1111B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchSectionO10headerViewSo6UIViewCSgvg', symObjAddr: 0x5030, symBinAddr: 0x852A0, symSize: 0x4F0 } + - { offset: 0x1111DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchSectionO10headerViewSo6UIViewCSgvg', symObjAddr: 0x5030, symBinAddr: 0x852A0, symSize: 0x4F0 } + - { offset: 0x111451, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17showsUserLocationSbvgTf4d_n', symObjAddr: 0x60C0, symBinAddr: 0x86200, symSize: 0x370 } + - { offset: 0x1116C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC17handleOfflineMode33_D7A566C795799BF1F9604DDE695EDC30LLyyFTf4d_n', symObjAddr: 0x6430, symBinAddr: 0x86570, symSize: 0x110 } + - { offset: 0x111793, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC15getUserLocation33_D7A566C795799BF1F9604DDE695EDC30LL7Penguin10PILocationCSgyFTf4d_n', symObjAddr: 0x6540, symBinAddr: 0x86680, symSize: 0x140 } + - { offset: 0x111895, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC21getLocationParameters33_D7A566C795799BF1F9604DDE695EDC30LLSDySSypGyFTf4d_n', symObjAddr: 0x6680, symBinAddr: 0x867C0, symSize: 0x2D0 } + - { offset: 0x111AAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30NavigationSearchViewControllerC06handleE7Results33_D7A566C795799BF1F9604DDE695EDC30LL_6manualySayAA7POIDataCGSg_SbtFTf4ndn_n', symObjAddr: 0x6950, symBinAddr: 0x86A90, symSize: 0x200 } + - { offset: 0x111EF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11campusLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x87800, symSize: 0x20 } + - { offset: 0x112525, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCfE', symObjAddr: 0x460, symBinAddr: 0x87C60, symSize: 0xE0 } + - { offset: 0x112552, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCfETo', symObjAddr: 0x6D0, symBinAddr: 0x87ED0, symSize: 0xE0 } + - { offset: 0x1127D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCMa', symObjAddr: 0x2450, symBinAddr: 0x89C50, symSize: 0x20 } + - { offset: 0x1127FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC14layoutForPanelAA08FloatingK6Layout_pyF', symObjAddr: 0x2470, symBinAddr: 0x89C70, symSize: 0xE0 } + - { offset: 0x112885, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC14layoutForPanelAA08FloatingK6Layout_pyFTo', symObjAddr: 0x2550, symBinAddr: 0x89D50, symSize: 0x30 } + - { offset: 0x1128B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC16behaviorForPanelAA08FloatingK8Behavior_pyFTo', symObjAddr: 0x2580, symBinAddr: 0x89D80, symSize: 0x30 } + - { offset: 0x112920, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x25B0, symBinAddr: 0x89DB0, symSize: 0x280 } + - { offset: 0x112B6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x2830, symBinAddr: 0x8A030, symSize: 0x30 } + - { offset: 0x112B95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0lQ0OSgtFTW', symObjAddr: 0x2860, symBinAddr: 0x8A060, symSize: 0x20 } + - { offset: 0x112BC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTf4dnn_n', symObjAddr: 0x2D90, symBinAddr: 0x8A590, symSize: 0x220 } + - { offset: 0x112DB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC23didTapSaveParkingButtonyyFyycACcfu_yycfu0_TA', symObjAddr: 0x3120, symBinAddr: 0x8A800, symSize: 0x20 } + - { offset: 0x112DE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyFyycfU_TA', symObjAddr: 0x3140, symBinAddr: 0x8A820, symSize: 0x10 } + - { offset: 0x112DFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyFyycfU0_TA', symObjAddr: 0x3150, symBinAddr: 0x8A830, symSize: 0x10 } + - { offset: 0x112E0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17didTapShareButtonyySo8UIButtonCFyycACcfu_yycfu0_TA', symObjAddr: 0x3160, symBinAddr: 0x8A840, symSize: 0x20 } + - { offset: 0x113105, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11campusLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x87800, symSize: 0x20 } + - { offset: 0x113165, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11campusLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x87820, symSize: 0x20 } + - { offset: 0x1131B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x87840, symSize: 0x20 } + - { offset: 0x11320D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x87860, symSize: 0x20 } + - { offset: 0x113260, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x80, symBinAddr: 0x87880, symSize: 0x20 } + - { offset: 0x1132B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0xA0, symBinAddr: 0x878A0, symSize: 0x20 } + - { offset: 0x113308, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17saveParkingButtonAA06HapticG0CSgvgTo', symObjAddr: 0xC0, symBinAddr: 0x878C0, symSize: 0x20 } + - { offset: 0x113360, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17saveParkingButtonAA06HapticG0CSgvsTo', symObjAddr: 0xE0, symBinAddr: 0x878E0, symSize: 0x30 } + - { offset: 0x1133AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC07parkingfG0AA07ParkingfG0CSgvgTo', symObjAddr: 0x110, symBinAddr: 0x87910, symSize: 0x20 } + - { offset: 0x113407, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC07parkingfG0AA07ParkingfG0CSgvsTo', symObjAddr: 0x130, symBinAddr: 0x87930, symSize: 0x30 } + - { offset: 0x113456, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC9nameLabelAA09IntrinsicJ0CSgvgTo', symObjAddr: 0x160, symBinAddr: 0x87960, symSize: 0x20 } + - { offset: 0x1134B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC9nameLabelAA09IntrinsicJ0CSgvsTo', symObjAddr: 0x180, symBinAddr: 0x87980, symSize: 0x20 } + - { offset: 0x113503, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x1A0, symBinAddr: 0x879A0, symSize: 0x20 } + - { offset: 0x11355B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x1C0, symBinAddr: 0x879C0, symSize: 0x30 } + - { offset: 0x1135AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC16saveParkingStackSo07UIStackG0CSgvgTo', symObjAddr: 0x1F0, symBinAddr: 0x879F0, symSize: 0x20 } + - { offset: 0x113604, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC16saveParkingStackSo07UIStackG0CSgvsTo', symObjAddr: 0x210, symBinAddr: 0x87A10, symSize: 0x20 } + - { offset: 0x1136BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x230, symBinAddr: 0x87A30, symSize: 0x200 } + - { offset: 0x11379B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x430, symBinAddr: 0x87C30, symSize: 0x30 } + - { offset: 0x1137AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCfD', symObjAddr: 0x540, symBinAddr: 0x87D40, symSize: 0xC0 } + - { offset: 0x1137EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerCfDTo', symObjAddr: 0x600, symBinAddr: 0x87E00, symSize: 0xD0 } + - { offset: 0x113844, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC24updateParkingElapsedTimeyyFTo', symObjAddr: 0x7B0, symBinAddr: 0x87FB0, symSize: 0x60 } + - { offset: 0x1138B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC31applyLanguageBasedTextAlignmentyyF', symObjAddr: 0x810, symBinAddr: 0x88010, symSize: 0x1F0 } + - { offset: 0x113C91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyF', symObjAddr: 0xA00, symBinAddr: 0x88200, symSize: 0x290 } + - { offset: 0x113E9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyFyycfU_', symObjAddr: 0xC90, symBinAddr: 0x88490, symSize: 0x50 } + - { offset: 0x113ECA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC20updateParkingSectionyyFyycfU0_', symObjAddr: 0xCE0, symBinAddr: 0x884E0, symSize: 0x80 } + - { offset: 0x1140C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC23didTapSaveParkingButtonyyF', symObjAddr: 0xD60, symBinAddr: 0x88560, symSize: 0x4F0 } + - { offset: 0x1144BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC11saveParkingyyF', symObjAddr: 0x1250, symBinAddr: 0x88A50, symSize: 0x170 } + - { offset: 0x1145F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC9setUIDatayyF', symObjAddr: 0x13C0, symBinAddr: 0x88BC0, symSize: 0x4C0 } + - { offset: 0x11485B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x1880, symBinAddr: 0x89080, symSize: 0x60 } + - { offset: 0x1148A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17didTapShareButtonyySo8UIButtonCFTo', symObjAddr: 0x18E0, symBinAddr: 0x890E0, symSize: 0x50 } + - { offset: 0x1148DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC5shareyyF', symObjAddr: 0x1930, symBinAddr: 0x89130, symSize: 0xE0 } + - { offset: 0x11498B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0x1A10, symBinAddr: 0x89210, symSize: 0x4E0 } + - { offset: 0x114C49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x1EF0, symBinAddr: 0x896F0, symSize: 0x280 } + - { offset: 0x114E37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x2170, symBinAddr: 0x89970, symSize: 0x50 } + - { offset: 0x114E69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x21C0, symBinAddr: 0x899C0, symSize: 0x260 } + - { offset: 0x115049, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2420, symBinAddr: 0x89C20, symSize: 0x30 } + - { offset: 0x115172, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC17didTapShareButtonyySo8UIButtonCFTf4dn_n', symObjAddr: 0x2880, symBinAddr: 0x8A080, symSize: 0x510 } + - { offset: 0x115C50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellCfETo', symObjAddr: 0xC40, symBinAddr: 0x8B4C0, symSize: 0xB0 } + - { offset: 0x115C7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellCMa', symObjAddr: 0xCF0, symBinAddr: 0x8B570, symSize: 0x20 } + - { offset: 0x115CD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableView_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0xD10, symBinAddr: 0x8B590, symSize: 0x20 } + - { offset: 0x115DE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableView_12cellForRowAtSo07UITablegE0CSo0lG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xD30, symBinAddr: 0x8B5B0, symSize: 0x110 } + - { offset: 0x115FC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewCMa', symObjAddr: 0x1190, symBinAddr: 0x8BA10, symSize: 0x20 } + - { offset: 0x116175, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC16todayStatusLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x8A880, symSize: 0x20 } + - { offset: 0x1161D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC16todayStatusLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x8A8A0, symSize: 0x30 } + - { offset: 0x116222, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC18todayScheduleLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x8A8D0, symSize: 0x20 } + - { offset: 0x116275, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC18todayScheduleLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x8A8F0, symSize: 0x30 } + - { offset: 0x1162C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC20expandScheduleButtonSo8UIButtonCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x8A920, symSize: 0x20 } + - { offset: 0x11631C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC20expandScheduleButtonSo8UIButtonCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x8A940, symSize: 0x30 } + - { offset: 0x11636B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC22collapseScheduleButtonSo8UIButtonCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x8A970, symSize: 0x20 } + - { offset: 0x1163BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC22collapseScheduleButtonSo8UIButtonCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x8A990, symSize: 0x30 } + - { offset: 0x11640D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableViewSo07UITableG0CSgvgTo', symObjAddr: 0x140, symBinAddr: 0x8A9C0, symSize: 0x20 } + - { offset: 0x116465, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC9tableViewSo07UITableG0CSgvsTo', symObjAddr: 0x160, symBinAddr: 0x8A9E0, symSize: 0x30 } + - { offset: 0x1164B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC018tableViewContainerG0So6UIViewCSgvgTo', symObjAddr: 0x190, symBinAddr: 0x8AA10, symSize: 0x20 } + - { offset: 0x11650C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC018tableViewContainerG0So6UIViewCSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x8AA30, symSize: 0x30 } + - { offset: 0x11655B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC26expandedScheduleConstraintSo08NSLayoutH0CSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0x8AA60, symSize: 0x20 } + - { offset: 0x1165B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC26expandedScheduleConstraintSo08NSLayoutH0CSgvsTo', symObjAddr: 0x200, symBinAddr: 0x8AA80, symSize: 0x30 } + - { offset: 0x116602, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC27collapsedScheduleConstraintSo08NSLayoutH0CSgvgTo', symObjAddr: 0x230, symBinAddr: 0x8AAB0, symSize: 0x20 } + - { offset: 0x116655, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC27collapsedScheduleConstraintSo08NSLayoutH0CSgvsTo', symObjAddr: 0x250, symBinAddr: 0x8AAD0, symSize: 0x30 } + - { offset: 0x1166A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC12awakeFromNibyyF', symObjAddr: 0x280, symBinAddr: 0x8AB00, symSize: 0x160 } + - { offset: 0x1167A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC12awakeFromNibyyFTo', symObjAddr: 0x3E0, symBinAddr: 0x8AC60, symSize: 0x30 } + - { offset: 0x1167EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC14updateSchedule3foryAA0dG4DataV_tF', symObjAddr: 0x410, symBinAddr: 0x8AC90, symSize: 0x4F0 } + - { offset: 0x116AE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x990, symBinAddr: 0x8B210, symSize: 0x120 } + - { offset: 0x116B28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0xAB0, symBinAddr: 0x8B330, symSize: 0x30 } + - { offset: 0x116B60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xAE0, symBinAddr: 0x8B360, symSize: 0x110 } + - { offset: 0x116B93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9HoursCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xBF0, symBinAddr: 0x8B470, symSize: 0x30 } + - { offset: 0x116C08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0xF00, symBinAddr: 0x8B780, symSize: 0x60 } + - { offset: 0x116C46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC11contentSizeSo6CGSizeVvgTo', symObjAddr: 0xF60, symBinAddr: 0x8B7E0, symSize: 0x30 } + - { offset: 0x116CB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC11contentSizeSo6CGSizeVvsTo', symObjAddr: 0xF90, symBinAddr: 0x8B810, symSize: 0x70 } + - { offset: 0x116D11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC10reloadDatayyFTo', symObjAddr: 0x1000, symBinAddr: 0x8B880, symSize: 0x60 } + - { offset: 0x116D70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC5frame5styleACSo6CGRectV_So07UITableF5StyleVtcfcTo', symObjAddr: 0x1060, symBinAddr: 0x8B8E0, symSize: 0x60 } + - { offset: 0x116DD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17ScheduleTableViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x10C0, symBinAddr: 0x8B940, symSize: 0x80 } + - { offset: 0x11763F, size: 0x8, addend: 0x0, symName: '_$sSaySo29NSCollectionLayoutVisibleItem_pGSo7CGPointVSo0aB11Environment_pIeggyg_So7NSArrayCADSoAE_pIeyByyy_TR', symObjAddr: 0x10C0, symBinAddr: 0x8CDB0, symSize: 0x90 } + - { offset: 0x117805, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperCfETo', symObjAddr: 0x3E20, symBinAddr: 0x8FB10, symSize: 0x70 } + - { offset: 0x117834, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperCMa', symObjAddr: 0x3E90, symBinAddr: 0x8FB80, symSize: 0x20 } + - { offset: 0x117848, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSgWOh', symObjAddr: 0x3FF0, symBinAddr: 0x8FBA0, symSize: 0x30 } + - { offset: 0x11785C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC19configureDataSourceyyFSo20UICollectionViewCellCSgSo0iJ0C_10Foundation9IndexPathVAA14RouteDirectionVtcfU_TA', symObjAddr: 0x4050, symBinAddr: 0x8FC00, symSize: 0x10 } + - { offset: 0x117870, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVACSHAAWl', symObjAddr: 0x4060, symBinAddr: 0x8FC10, symSize: 0x40 } + - { offset: 0x117884, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC12createLayoutSo016UICollectionViewG0CyFySaySo012NSCollectionG11VisibleItem_pG_So7CGPointVSo0jG11Environment_ptcfU_TA', symObjAddr: 0x40F0, symBinAddr: 0x8FC70, symSize: 0x10 } + - { offset: 0x117898, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x4100, symBinAddr: 0x8FC80, symSize: 0x20 } + - { offset: 0x1178AC, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x4120, symBinAddr: 0x8FCA0, symSize: 0xE } + - { offset: 0x117CBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x8BCF0, symSize: 0x20 } + - { offset: 0x117D1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11contentViewSo6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x8BD10, symSize: 0x30 } + - { offset: 0x117D6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC14collectionViewSo012UICollectionG0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0x8BD40, symSize: 0x20 } + - { offset: 0x117DC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC14collectionViewSo012UICollectionG0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0x8BD60, symSize: 0x30 } + - { offset: 0x117E11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11pageControlSo06UIPageG0CSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x8BD90, symSize: 0x20 } + - { offset: 0x117E69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC11pageControlSo06UIPageG0CSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x8BDB0, symSize: 0x30 } + - { offset: 0x117EA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC5frameACSo6CGRectV_tcfc', symObjAddr: 0xF0, symBinAddr: 0x8BDE0, symSize: 0xF0 } + - { offset: 0x117ED9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1E0, symBinAddr: 0x8BED0, symSize: 0x30 } + - { offset: 0x117F2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x210, symBinAddr: 0x8BF00, symSize: 0xC0 } + - { offset: 0x117F60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2D0, symBinAddr: 0x8BFC0, symSize: 0x30 } + - { offset: 0x117F9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC10commonInit33_35E8C3D16CDCA173FFC7655A38207CE6LLyyF', symObjAddr: 0x300, symBinAddr: 0x8BFF0, symSize: 0x3A0 } + - { offset: 0x1180CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC17setCollectionViewyyF', symObjAddr: 0x6A0, symBinAddr: 0x8C390, symSize: 0xB0 } + - { offset: 0x118731, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC14setPageControlyyF', symObjAddr: 0x750, symBinAddr: 0x8C440, symSize: 0x250 } + - { offset: 0x11891D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC12createLayoutSo016UICollectionViewG0CyF', symObjAddr: 0x9A0, symBinAddr: 0x8C690, symSize: 0x320 } + - { offset: 0x118ABF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC12createLayoutSo016UICollectionViewG0CyFySaySo012NSCollectionG11VisibleItem_pG_So7CGPointVSo0jG11Environment_ptcfU_', symObjAddr: 0xCC0, symBinAddr: 0x8C9B0, symSize: 0x400 } + - { offset: 0x118EB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC19configureDataSourceyyF', symObjAddr: 0x1150, symBinAddr: 0x8CE40, symSize: 0x270 } + - { offset: 0x118FEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC19configureDataSourceyyFSo20UICollectionViewCellCSgSo0iJ0C_10Foundation9IndexPathVAA14RouteDirectionVtcfU_', symObjAddr: 0x13C0, symBinAddr: 0x8D0B0, symSize: 0x150 } + - { offset: 0x1190F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC26updateCollectionViewHeight3fory10Foundation9IndexPathV_tF', symObjAddr: 0x1510, symBinAddr: 0x8D200, symSize: 0x6E0 } + - { offset: 0x11959C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperC15didScrollToItem2aty10Foundation9IndexPathV_tF', symObjAddr: 0x1BF0, symBinAddr: 0x8D8E0, symSize: 0x2200 } + - { offset: 0x11B02E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DirectionsStepperCfD', symObjAddr: 0x3DF0, symBinAddr: 0x8FAE0, symSize: 0x30 } + - { offset: 0x11B420, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC20floorsCountContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x8FCB0, symSize: 0x20 } + - { offset: 0x11B6E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellCfETo', symObjAddr: 0x6A0, symBinAddr: 0x90350, symSize: 0x60 } + - { offset: 0x11B717, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellCMa', symObjAddr: 0x700, symBinAddr: 0x903B0, symSize: 0x14 } + - { offset: 0x11B823, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC20floorsCountContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x8FCB0, symSize: 0x20 } + - { offset: 0x11B883, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC20floorsCountContainerSo6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x8FCD0, symSize: 0x20 } + - { offset: 0x11B8D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC16floorsCountLabelSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x8FCF0, symSize: 0x20 } + - { offset: 0x11B930, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC16floorsCountLabelSo7UILabelCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x8FD10, symSize: 0x20 } + - { offset: 0x11B983, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC16addressContainerSo6UIViewCSgvgTo', symObjAddr: 0x80, symBinAddr: 0x8FD30, symSize: 0x20 } + - { offset: 0x11B9D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC16addressContainerSo6UIViewCSgvsTo', symObjAddr: 0xA0, symBinAddr: 0x8FD50, symSize: 0x20 } + - { offset: 0x11BA2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0xC0, symBinAddr: 0x8FD70, symSize: 0x20 } + - { offset: 0x11BA7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0xE0, symBinAddr: 0x8FD90, symSize: 0x30 } + - { offset: 0x11BACD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC11campusLabelSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x8FDC0, symSize: 0x20 } + - { offset: 0x11BB22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC11campusLabelSo7UILabelCSgvsTo', symObjAddr: 0x130, symBinAddr: 0x8FDE0, symSize: 0x20 } + - { offset: 0x11BB75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC12awakeFromNibyyFTo', symObjAddr: 0x150, symBinAddr: 0x8FE00, symSize: 0x60 } + - { offset: 0x11BBDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC7setData3foryAA0d4ViewH0CSg_tF', symObjAddr: 0x1B0, symBinAddr: 0x8FE60, symSize: 0x2D0 } + - { offset: 0x11BD14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x480, symBinAddr: 0x90130, symSize: 0xD0 } + - { offset: 0x11BD55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x550, symBinAddr: 0x90200, symSize: 0x30 } + - { offset: 0x11BD8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x580, symBinAddr: 0x90230, symSize: 0xC0 } + - { offset: 0x11BDC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x640, symBinAddr: 0x902F0, symSize: 0x30 } + - { offset: 0x11BDD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueDetailCellCfD', symObjAddr: 0x670, symBinAddr: 0x90320, symSize: 0x30 } + - { offset: 0x11C4C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutCMa', symObjAddr: 0xB40, symBinAddr: 0x90E50, symSize: 0x20 } + - { offset: 0x11C796, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSo22CLLocationCoordinate2DV_Tg5', symObjAddr: 0x1770, symBinAddr: 0x91A50, symSize: 0x110 } + - { offset: 0x11C8E3, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSnySiG_Tg5', symObjAddr: 0x1880, symBinAddr: 0x91B60, symSize: 0x110 } + - { offset: 0x11CA3B, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSo18NSLayoutConstraintC_Tg5', symObjAddr: 0x1990, symBinAddr: 0x91C70, symSize: 0x140 } + - { offset: 0x11CBCD, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI11ScheduleDayV_Tg5', symObjAddr: 0x1B20, symBinAddr: 0x91E00, symSize: 0x120 } + - { offset: 0x11CD32, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3LegV_Tg5', symObjAddr: 0x1C70, symBinAddr: 0x91F50, symSize: 0x110 } + - { offset: 0x11CE97, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSS_Tg5', symObjAddr: 0x1D80, symBinAddr: 0x92060, symSize: 0x120 } + - { offset: 0x11CFFC, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSf_Tg5', symObjAddr: 0x1F40, symBinAddr: 0x92220, symSize: 0x110 } + - { offset: 0x11D161, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV_Tg5', symObjAddr: 0x2070, symBinAddr: 0x92350, symSize: 0x130 } + - { offset: 0x11D2C6, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSs_Tg5', symObjAddr: 0x2470, symBinAddr: 0x92750, symSize: 0x110 } + - { offset: 0x11D42B, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15RendererCommandOyAH11CGTextTypesVG_Tg5', symObjAddr: 0x2580, symBinAddr: 0x92860, symSize: 0x140 } + - { offset: 0x11D590, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AH11CGTextTypesV_G_Tg5', symObjAddr: 0x26C0, symBinAddr: 0x929A0, symSize: 0x140 } + - { offset: 0x11D6F5, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO5ShapeO_Tg5', symObjAddr: 0x2800, symBinAddr: 0x92AE0, symSize: 0x110 } + - { offset: 0x11D85A, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI8MenuItemV_Tg5', symObjAddr: 0x2910, symBinAddr: 0x92BF0, symSize: 0x120 } + - { offset: 0x11D9BF, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO7PatternV_Tg5', symObjAddr: 0x2D60, symBinAddr: 0x93040, symSize: 0x120 } + - { offset: 0x11DB24, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO6FilterC6EffectO_Tg5', symObjAddr: 0x2E80, symBinAddr: 0x93160, symSize: 0x110 } + - { offset: 0x11DC89, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO10StyleSheetV_Tg5', symObjAddr: 0x2FF0, symBinAddr: 0x932D0, symSize: 0x110 } + - { offset: 0x11DDEE, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x3100, symBinAddr: 0x933E0, symSize: 0x120 } + - { offset: 0x11DF53, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO0R0C8ContentsO_Tg5', symObjAddr: 0x3360, symBinAddr: 0x93640, symSize: 0x120 } + - { offset: 0x11E0B8, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI16SFSymbolRendererV10SymbolPathV_Tg5', symObjAddr: 0x3480, symBinAddr: 0x93760, symSize: 0x130 } + - { offset: 0x11E228, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI15RendererCommandOyAH7CGTypesVG_Tg5', symObjAddr: 0x35B0, symBinAddr: 0x93890, symSize: 0x1B0 } + - { offset: 0x11E3CF, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AH7CGTypesV_G_Tg5', symObjAddr: 0x3760, symBinAddr: 0x93A40, symSize: 0x140 } + - { offset: 0x11E534, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSi_Tg5', symObjAddr: 0x38F0, symBinAddr: 0x93BD0, symSize: 0x110 } + - { offset: 0x11E699, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF12CoreGraphics7CGFloatV_Tg5', symObjAddr: 0x3A50, symBinAddr: 0x93D30, symSize: 0x110 } + - { offset: 0x11E7FE, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI11RouteOptionV_Tg5', symObjAddr: 0x3E80, symBinAddr: 0x94030, symSize: 0x110 } + - { offset: 0x11E963, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI16FileDownloadData_p_Tg5', symObjAddr: 0x3F90, symBinAddr: 0x94140, symSize: 0x150 } + - { offset: 0x11EAC8, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI9VenueGateV_Tg5', symObjAddr: 0x4100, symBinAddr: 0x942B0, symSize: 0x120 } + - { offset: 0x11EC2D, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI20FloorSelectorSectionO_Tg5', symObjAddr: 0x4220, symBinAddr: 0x943D0, symSize: 0x100 } + - { offset: 0x11ED92, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtFSo9CGPathRefa8PenNavUIE7SegmentO_Tg5', symObjAddr: 0x4680, symBinAddr: 0x94830, symSize: 0x110 } + - { offset: 0x11EEF7, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNew14bufferIsUnique15minimumCapacity13growForAppendAByxGSb_SiSbtF8PenNavUI13VenueCardDataV_Tg5', symObjAddr: 0x4A40, symBinAddr: 0x94BF0, symSize: 0x130 } + - { offset: 0x11F030, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV13_copyContents8subRange12initializingSpyxGSnySiG_AFtFSo18NSLayoutConstraintC_Tg5', symObjAddr: 0x4B70, symBinAddr: 0x94D20, symSize: 0x120 } + - { offset: 0x11F118, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSnySiG_Tg5', symObjAddr: 0x4EB0, symBinAddr: 0x95060, symSize: 0x20 } + - { offset: 0x11F150, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI24FloatingPanelPresentable_p_Tg5', symObjAddr: 0x4ED0, symBinAddr: 0x95080, symSize: 0x30 } + - { offset: 0x11F188, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI9LayerTreeO4PathC7SegmentO_Tg5', symObjAddr: 0x4F00, symBinAddr: 0x950B0, symSize: 0x20 } + - { offset: 0x11F1B5, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI11SubPathNode33_6ED7540220CCE3981622A6B3F3D0E057LLV_Tg5', symObjAddr: 0x4F20, symBinAddr: 0x950D0, symSize: 0x20 } + - { offset: 0x11F1E2, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AE11CGTextTypesV_G_Tg5', symObjAddr: 0x4F60, symBinAddr: 0x95110, symSize: 0x20 } + - { offset: 0x11F20F, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI15RendererCommandOyAE11CGTextTypesVG_Tg5', symObjAddr: 0x4F80, symBinAddr: 0x95130, symSize: 0x20 } + - { offset: 0x11F247, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI3DOMO4PathC7SegmentO_Tg5', symObjAddr: 0x4FA0, symBinAddr: 0x95150, symSize: 0x20 } + - { offset: 0x11F274, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AE7CGTypesV_G_Tg5', symObjAddr: 0x4FC0, symBinAddr: 0x95170, symSize: 0x20 } + - { offset: 0x11F2A1, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI15RendererCommandOyAE7CGTypesVG_Tg5', symObjAddr: 0x4FE0, symBinAddr: 0x95190, symSize: 0x20 } + - { offset: 0x11F2CE, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF12CoreGraphics7CGFloatV_Tg5', symObjAddr: 0x5090, symBinAddr: 0x95240, symSize: 0x20 } + - { offset: 0x11F306, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSay12CoreGraphics7CGFloatVG_Tg5', symObjAddr: 0x50B0, symBinAddr: 0x95260, symSize: 0x30 } + - { offset: 0x11F333, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI11RouteOptionV_Tg5', symObjAddr: 0x5100, symBinAddr: 0x952B0, symSize: 0x20 } + - { offset: 0x11F360, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI3LegV_Tg5', symObjAddr: 0x5120, symBinAddr: 0x952D0, symSize: 0x20 } + - { offset: 0x11F38D, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI16FileDownloadData_p_Tg5', symObjAddr: 0x5140, symBinAddr: 0x952F0, symSize: 0x20 } + - { offset: 0x11F3BA, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI9VenueGateV_Tg5', symObjAddr: 0x5160, symBinAddr: 0x95310, symSize: 0x20 } + - { offset: 0x11F3E7, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSi_Tg5', symObjAddr: 0x5180, symBinAddr: 0x95330, symSize: 0x20 } + - { offset: 0x11F414, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyFSo22CLLocationCoordinate2DV_Tg5', symObjAddr: 0x51C0, symBinAddr: 0x95370, symSize: 0x20 } + - { offset: 0x11F441, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI13VenueCardDataV_Tg5', symObjAddr: 0x51E0, symBinAddr: 0x95390, symSize: 0x20 } + - { offset: 0x11F479, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI14RouteDirectionV_Tg5', symObjAddr: 0x5200, symBinAddr: 0x953B0, symSize: 0x30 } + - { offset: 0x11F4C7, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x5260, symBinAddr: 0x95410, symSize: 0x1C0 } + - { offset: 0x11F58E, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiFSo9CGPathRefa_Tg5', symObjAddr: 0x59B0, symBinAddr: 0x95B60, symSize: 0x1C0 } + - { offset: 0x11F641, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiF8PenNavUI17FavoriteCacheDataC_Tg5', symObjAddr: 0x5B70, symBinAddr: 0x95D20, symSize: 0x1C0 } + - { offset: 0x11F708, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiFSo29NSCollectionLayoutVisibleItem_p_Tg5', symObjAddr: 0x5D30, symBinAddr: 0x95EE0, symSize: 0x1E0 } + - { offset: 0x11F7B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentOSHAASQWb', symObjAddr: 0x5F50, symBinAddr: 0x960C0, symSize: 0x10 } + - { offset: 0x11F7CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentOAESQAAWl', symObjAddr: 0x5F60, symBinAddr: 0x960D0, symSize: 0x30 } + - { offset: 0x11F7E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentOMa', symObjAddr: 0x6130, symBinAddr: 0x96100, symSize: 0x10 } + - { offset: 0x11F80B, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiF8PenNavUI0gH13UITableUpdateC_Tg5', symObjAddr: 0x6300, symBinAddr: 0x962D0, symSize: 0x1C0 } + - { offset: 0x11F8D2, size: 0x8, addend: 0x0, symName: '_$ss12_ArrayBufferV19_getElementSlowPathyyXlSiF8PenNavUI16CampaignTrackingC_Tg5', symObjAddr: 0x64F0, symBinAddr: 0x964C0, symSize: 0x1C0 } + - { offset: 0x11F983, size: 0x8, addend: 0x0, symName: ___swift_allocate_boxed_opaque_existential_1, symObjAddr: 0x68E0, symBinAddr: 0x968B0, symSize: 0x30 } + - { offset: 0x11F997, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVWOc', symObjAddr: 0x6930, symBinAddr: 0x968E0, symSize: 0x30 } + - { offset: 0x11FB39, size: 0x8, addend: 0x0, symName: '_$ss15_arrayForceCastySayq_GSayxGr0_lFSo32UICollectionViewLayoutAttributesC_ypTg5', symObjAddr: 0xB90, symBinAddr: 0x90EA0, symSize: 0x260 } + - { offset: 0x11FDBE, size: 0x8, addend: 0x0, symName: '_$ss15_arrayForceCastySayq_GSayxGr0_lF8PenNavUI9AmenitiesV_AD13TagDataSource_pTg5', symObjAddr: 0xE20, symBinAddr: 0x91130, symSize: 0x170 } + - { offset: 0x11FF98, size: 0x8, addend: 0x0, symName: '_$ss15_arrayForceCastySayq_GSayxGr0_lF7Penguin5VenueC_8PenNavUI16FileDownloadData_pTg5', symObjAddr: 0x1140, symBinAddr: 0x91450, symSize: 0x220 } + - { offset: 0x120449, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueAESgSi_tcfC', symObjAddr: 0x0, symBinAddr: 0x903D0, symSize: 0x20 } + - { offset: 0x12046A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentO8rawValueSivg', symObjAddr: 0x20, symBinAddr: 0x903F0, symSize: 0x10 } + - { offset: 0x120491, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC0F9AlignmentOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xE0, symBinAddr: 0x90400, symSize: 0x10 } + - { offset: 0x120524, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x100, symBinAddr: 0x90410, symSize: 0x80 } + - { offset: 0x12058F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC27layoutAttributesForElements2inSaySo016UICollectionViewfH0CGSgSo6CGRectV_tF', symObjAddr: 0x180, symBinAddr: 0x90490, symSize: 0x9C0 } + - { offset: 0x120E4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC27layoutAttributesForElements2inSaySo016UICollectionViewfH0CGSgSo6CGRectV_tFTo', symObjAddr: 0x15B0, symBinAddr: 0x918C0, symSize: 0xB0 } + - { offset: 0x120E77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvgTo', symObjAddr: 0x1660, symBinAddr: 0x91970, symSize: 0x10 } + - { offset: 0x120E9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutC011developmentF9DirectionSo015UIUserInterfacefH0VvgTo', symObjAddr: 0x1680, symBinAddr: 0x91980, symSize: 0x20 } + - { offset: 0x120F02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutCACycfC', symObjAddr: 0x16C0, symBinAddr: 0x919A0, symSize: 0x20 } + - { offset: 0x120F16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutCACycfc', symObjAddr: 0x16E0, symBinAddr: 0x919C0, symSize: 0x30 } + - { offset: 0x120F6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutCACycfcTo', symObjAddr: 0x1710, symBinAddr: 0x919F0, symSize: 0x30 } + - { offset: 0x120FCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TagFlowLayoutCfD', symObjAddr: 0x1740, symBinAddr: 0x91A20, symSize: 0x30 } + - { offset: 0x1213CA, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerC8PenNavUIE14getDefaultPath10Foundation3URLVyFZ', symObjAddr: 0x0, symBinAddr: 0x96980, symSize: 0x2A0 } + - { offset: 0x12146F, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerC8PenNavUIE14getDefaultPath10Foundation3URLVyFZ', symObjAddr: 0x0, symBinAddr: 0x96980, symSize: 0x2A0 } + - { offset: 0x12156E, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerC8PenNavUIE13defaultFolderSSvgZTf4d_n', symObjAddr: 0x2A0, symBinAddr: 0x96C20, symSize: 0xC0 } + - { offset: 0x1215B9, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerC8PenNavUIE10fileExists2atSb10Foundation3URLV_tFZTf4nd_n', symObjAddr: 0x360, symBinAddr: 0x96CE0, symSize: 0x120 } + - { offset: 0x121616, size: 0x8, addend: 0x0, symName: '_$sSo13NSFileManagerCMa', symObjAddr: 0x480, symBinAddr: 0x96E00, symSize: 0x32 } + - { offset: 0x1219E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x96E40, symSize: 0x20 } + - { offset: 0x121BF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellCfETo', symObjAddr: 0x4D0, symBinAddr: 0x97310, symSize: 0x50 } + - { offset: 0x121C28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellCMa', symObjAddr: 0x520, symBinAddr: 0x97360, symSize: 0x20 } + - { offset: 0x121D34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x96E40, symSize: 0x20 } + - { offset: 0x121D92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x96E60, symSize: 0x30 } + - { offset: 0x121DE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC9floorNameSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x96E90, symSize: 0x20 } + - { offset: 0x121E34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC9floorNameSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x96EB0, symSize: 0x30 } + - { offset: 0x121E83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC24selectionStatusImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x96EE0, symSize: 0x20 } + - { offset: 0x121EDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC24selectionStatusImageViewSo07UIImageI0CSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x96F00, symSize: 0x30 } + - { offset: 0x121F2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC12awakeFromNibyyFTo', symObjAddr: 0xF0, symBinAddr: 0x96F30, symSize: 0x30 } + - { offset: 0x121F64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC9configure4with10isSelectedy7Penguin0D0CSg_SbtF', symObjAddr: 0x120, symBinAddr: 0x96F60, symSize: 0x200 } + - { offset: 0x122041, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x320, symBinAddr: 0x97160, symSize: 0xC0 } + - { offset: 0x1220A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3E0, symBinAddr: 0x97220, symSize: 0x90 } + - { offset: 0x1220D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x470, symBinAddr: 0x972B0, symSize: 0x30 } + - { offset: 0x1220ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FloorCellCfD', symObjAddr: 0x4A0, symBinAddr: 0x972E0, symSize: 0x30 } + - { offset: 0x1224B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC14sharedInstance33_28F2A874F3DA7E21FDD4D0C208D8D7C5LLACSgvpZ', symObjAddr: 0x3A90, symBinAddr: 0x39C770, symSize: 0x0 } + - { offset: 0x122654, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC4findyAA8FavoriteCSgAA5PlaceCSgF', symObjAddr: 0x40, symBinAddr: 0x97380, symSize: 0x540 } + - { offset: 0x122C75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD4List12withLocation23ignoresRoutePreferences10completionySb_SbySayAA8FavoriteCGctF', symObjAddr: 0x580, symBinAddr: 0x978C0, symSize: 0x6A0 } + - { offset: 0x123033, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD4List12withLocation23ignoresRoutePreferences10completionySb_SbySayAA8FavoriteCGctFyAJcfU_', symObjAddr: 0x2770, symBinAddr: 0x99A70, symSize: 0x110 } + - { offset: 0x1232C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerCMa', symObjAddr: 0x2670, symBinAddr: 0x999B0, symSize: 0x20 } + - { offset: 0x123384, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC8getAlias3forSSSgAA5PlaceC_tF', symObjAddr: 0x2880, symBinAddr: 0x99B80, symSize: 0x3C0 } + - { offset: 0x123692, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC25getFavoriteWithIdentifier10identifierAA0G0CSgSS_tF', symObjAddr: 0x2C40, symBinAddr: 0x99F40, symSize: 0x170 } + - { offset: 0x123868, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD4List12withLocation23ignoresRoutePreferences10completionySb_SbySayAA8FavoriteCGctFyAJcfU_TA', symObjAddr: 0x2EC0, symBinAddr: 0x9A1C0, symSize: 0x20 } + - { offset: 0x12387C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD012withLocationySb_tFySayAA8FavoriteCGcfU_yyScMYccfU_TA', symObjAddr: 0x2F40, symBinAddr: 0x9A1E0, symSize: 0x10 } + - { offset: 0x123890, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2F50, symBinAddr: 0x9A1F0, symSize: 0x20 } + - { offset: 0x1238A4, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2F70, symBinAddr: 0x9A210, symSize: 0x10 } + - { offset: 0x1238B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC14updateFavorite8favoriteyAA0G0C_tFySbcfU_TA', symObjAddr: 0x3000, symBinAddr: 0x9A220, symSize: 0x20 } + - { offset: 0x123950, size: 0x8, addend: 0x0, symName: '_$sSMsE20_halfStablePartition15isSuffixElement5IndexQzSb0F0QzKXE_tKFSay8PenNavUI8FavoriteCG_Tg503$s8hi29UI16FavoritesManagerC22removeK43Location8favoriteyAA0G0C_tFySbcfU_SbAGXEfU_AITf1cn_nTf4ng_n', symObjAddr: 0x3020, symBinAddr: 0x9A240, symSize: 0x420 } + - { offset: 0x123E89, size: 0x8, addend: 0x0, symName: '_$sSMsE20_halfStablePartition15isSuffixElement5IndexQzSb0F0QzKXE_tKFSay8PenNavUI8FavoriteCG_Tg503$s8hi29UI16FavoritesManagerC22removeK44Location8favoriteyAA0G0C_tFySbcfU_SbAGXEfU0_AITf1cn_nTf4ng_n', symObjAddr: 0x3440, symBinAddr: 0x9A660, symSize: 0x400 } + - { offset: 0x1243F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC14updateFavorite8favoriteyAA0G0C_tFySbcfU_yyScMYccfU0_TA', symObjAddr: 0x3850, symBinAddr: 0x9AA70, symSize: 0x20 } + - { offset: 0x124406, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC22removeFavoriteLocation8favoriteyAA0G0C_tFySbcfU_TA', symObjAddr: 0x3870, symBinAddr: 0x9AA90, symSize: 0x20 } + - { offset: 0x12441A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC22removeFavoriteLocation8favoriteyAA0G0C_tFySbcfU_yyScMYccfU1_TA', symObjAddr: 0x38C0, symBinAddr: 0x9AAB0, symSize: 0x20 } + - { offset: 0x12442E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC19addFavoriteLocation8favoriteyAA0G0C_tFySbcfU_TA', symObjAddr: 0x38E0, symBinAddr: 0x9AAD0, symSize: 0x20 } + - { offset: 0x124442, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC19addFavoriteLocation8favoriteyAA0G0C_tFySbcfU_ySayAGGcfU_TA', symObjAddr: 0x3900, symBinAddr: 0x9AAF0, symSize: 0x20 } + - { offset: 0x124456, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC19addFavoriteLocation8favoriteyAA0G0C_tFySbcfU_ySayAGGcfU_yyScMYccfU_TA', symObjAddr: 0x3950, symBinAddr: 0x9AB40, symSize: 0x20 } + - { offset: 0x1247A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD012withLocationySb_tFySayAA8FavoriteCGcfU_', symObjAddr: 0xC20, symBinAddr: 0x97F60, symSize: 0x1E0 } + - { offset: 0x124802, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD012withLocationySb_tFySayAA8FavoriteCGcfU_yyScMYccfU_', symObjAddr: 0xE00, symBinAddr: 0x98140, symSize: 0x70 } + - { offset: 0x1248E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC22removeFavoriteLocation8favoriteyAA0G0C_tF', symObjAddr: 0x1220, symBinAddr: 0x98560, symSize: 0x3F0 } + - { offset: 0x124BCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC22removeFavoriteLocation8favoriteyAA0G0C_tFySbcfU_', symObjAddr: 0x1610, symBinAddr: 0x98950, symSize: 0x4D0 } + - { offset: 0x125310, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerCfD', symObjAddr: 0x2630, symBinAddr: 0x99970, symSize: 0x40 } + - { offset: 0x1253BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerCACycfc', symObjAddr: 0x26D0, symBinAddr: 0x999D0, symSize: 0xA0 } + - { offset: 0x1254AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC6sharedACvgZTf4d_n', symObjAddr: 0x2DB0, symBinAddr: 0x9A0B0, symSize: 0xC0 } + - { offset: 0x1258EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC13iconImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x9AC60, symSize: 0x20 } + - { offset: 0x125ABF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellCfETo', symObjAddr: 0x2A0, symBinAddr: 0x9AF00, symSize: 0x40 } + - { offset: 0x125AEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellCMa', symObjAddr: 0x2E0, symBinAddr: 0x9AF40, symSize: 0x14 } + - { offset: 0x125BC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC13iconImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x9AC60, symSize: 0x20 } + - { offset: 0x125C1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC13iconImageViewSo07UIImageH0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x9AC80, symSize: 0x30 } + - { offset: 0x125C6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x9ACB0, symSize: 0x20 } + - { offset: 0x125CC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x9ACD0, symSize: 0x30 } + - { offset: 0x125D14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC12awakeFromNibyyFTo', symObjAddr: 0xA0, symBinAddr: 0x9AD00, symSize: 0x30 } + - { offset: 0x125D8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0xD0, symBinAddr: 0x9AD30, symSize: 0x50 } + - { offset: 0x125E02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x120, symBinAddr: 0x9AD80, symSize: 0xC0 } + - { offset: 0x125E7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1E0, symBinAddr: 0x9AE40, symSize: 0x90 } + - { offset: 0x125EB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ActionCellCfD', symObjAddr: 0x270, symBinAddr: 0x9AED0, symSize: 0x30 } + - { offset: 0x12645D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCfETo', symObjAddr: 0x820, symBinAddr: 0x9B780, symSize: 0x50 } + - { offset: 0x12648C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCMU', symObjAddr: 0x870, symBinAddr: 0x9B7D0, symSize: 0x10 } + - { offset: 0x1264A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCMa', symObjAddr: 0x880, symBinAddr: 0x9B7E0, symSize: 0x30 } + - { offset: 0x1264B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCMr', symObjAddr: 0x8B0, symBinAddr: 0x9B810, symSize: 0x70 } + - { offset: 0x1264C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC7setData8categoryy7Penguin11POICategoryV_tFySo7UIImageCSgcfU_TA', symObjAddr: 0xAC0, symBinAddr: 0x9B910, symSize: 0x40 } + - { offset: 0x126648, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC13iconContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x9AF60, symSize: 0x20 } + - { offset: 0x1266A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC13iconContainerSo6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x9AF80, symSize: 0x20 } + - { offset: 0x1266FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC17categoryNameLabelSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x9AFA0, symSize: 0x20 } + - { offset: 0x126755, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC17categoryNameLabelSo7UILabelCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x9AFC0, symSize: 0x20 } + - { offset: 0x1267A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC13categoryImageSo07UIImageF0CSgvgTo', symObjAddr: 0x80, symBinAddr: 0x9AFE0, symSize: 0x20 } + - { offset: 0x126802, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC13categoryImageSo07UIImageF0CSgvsTo', symObjAddr: 0xA0, symBinAddr: 0x9B000, symSize: 0x20 } + - { offset: 0x126881, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC7setData8categoryy7Penguin11POICategoryV_tF', symObjAddr: 0xE0, symBinAddr: 0x9B040, symSize: 0x300 } + - { offset: 0x126985, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC7setData8categoryy7Penguin11POICategoryV_tFySo7UIImageCSgcfU_', symObjAddr: 0x3E0, symBinAddr: 0x9B340, symSize: 0x1A0 } + - { offset: 0x126A50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfc', symObjAddr: 0x5E0, symBinAddr: 0x9B540, symSize: 0xE0 } + - { offset: 0x126A91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfcTo', symObjAddr: 0x6C0, symBinAddr: 0x9B620, symSize: 0x30 } + - { offset: 0x126AC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x6F0, symBinAddr: 0x9B650, symSize: 0xD0 } + - { offset: 0x126AFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x7C0, symBinAddr: 0x9B720, symSize: 0x30 } + - { offset: 0x126B10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CategoryTableViewCellCfD', symObjAddr: 0x7F0, symBinAddr: 0x9B750, symSize: 0x30 } + - { offset: 0x126F1E, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE7nibNameABSSSg_tcfC', symObjAddr: 0x0, symBinAddr: 0x9B950, symSize: 0xA0 } + - { offset: 0x126F72, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo18NSLayoutConstraintCSg_tF', symObjAddr: 0xA0, symBinAddr: 0x9B9F0, symSize: 0x2C0 } + - { offset: 0x126FC8, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE011topMostViewB0AByF', symObjAddr: 0x360, symBinAddr: 0x9BCB0, symSize: 0x180 } + - { offset: 0x127057, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo12UIScrollViewCSg_tF', symObjAddr: 0x4E0, symBinAddr: 0x9BE30, symSize: 0x2C0 } + - { offset: 0x1270AC, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo12UIScrollViewCSg_tFy10Foundation12NotificationVYbcfU0_', symObjAddr: 0xAF0, symBinAddr: 0x9C440, symSize: 0xE0 } + - { offset: 0x12713B, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo12UIScrollViewCSg_tFy10Foundation12NotificationVYbcfU_TA', symObjAddr: 0x7C0, symBinAddr: 0x9C110, symSize: 0x20 } + - { offset: 0x127185, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16keyboardWillShow33_EA3C84DA480CAA94B4D682CC82750B36LL12notification10scrollViewy10Foundation12NotificationV_So08UIScrollS0CtF', symObjAddr: 0x7E0, symBinAddr: 0x9C130, symSize: 0x250 } + - { offset: 0x127271, size: 0x8, addend: 0x0, symName: '_$s10Foundation12NotificationVIeghn_So14NSNotificationCIeyBhy_TR', symObjAddr: 0xA30, symBinAddr: 0x9C380, symSize: 0x90 } + - { offset: 0x127289, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xAC0, symBinAddr: 0x9C410, symSize: 0x20 } + - { offset: 0x12729D, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xAE0, symBinAddr: 0x9C430, symSize: 0x10 } + - { offset: 0x1272DB, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo12UIScrollViewCSg_tFy10Foundation12NotificationVYbcfU0_TA', symObjAddr: 0xBD0, symBinAddr: 0x9C520, symSize: 0x20 } + - { offset: 0x127331, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16keyboardWillShow33_EA3C84DA480CAA94B4D682CC82750B36LL12notification10constrainty10Foundation12NotificationV_So18NSLayoutConstraintCtF', symObjAddr: 0xBF0, symBinAddr: 0x9C540, symSize: 0x310 } + - { offset: 0x127450, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16keyboardWillHide33_EA3C84DA480CAA94B4D682CC82750B36LL12notification10constrainty10Foundation12NotificationV_So18NSLayoutConstraintCtF', symObjAddr: 0xF60, symBinAddr: 0x9C8B0, symSize: 0x1E0 } + - { offset: 0x127522, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16adjustConstraint33_EA3C84DA480CAA94B4D682CC82750B36LL_8constant8durationySo08NSLayoutG0C_12CoreGraphics7CGFloatVSdtFyycfU_', symObjAddr: 0x1140, symBinAddr: 0x9CA90, symSize: 0x80 } + - { offset: 0x127561, size: 0x8, addend: 0x0, symName: '_$ss11AnyHashableVWOh', symObjAddr: 0x11C0, symBinAddr: 0x9CB10, symSize: 0x30 } + - { offset: 0x127575, size: 0x8, addend: 0x0, symName: '_$sypSgWOh', symObjAddr: 0x11F0, symBinAddr: 0x9CB40, symSize: 0x30 } + - { offset: 0x127589, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo18NSLayoutConstraintCSg_tFy10Foundation12NotificationVYbcfU_TA', symObjAddr: 0x12A0, symBinAddr: 0x9CB80, symSize: 0x20 } + - { offset: 0x12759D, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE22setupKeyboardObservers3forySo18NSLayoutConstraintCSg_tFy10Foundation12NotificationVYbcfU0_TA', symObjAddr: 0x12F0, symBinAddr: 0x9CBD0, symSize: 0x20 } + - { offset: 0x1275B1, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE16adjustConstraint33_EA3C84DA480CAA94B4D682CC82750B36LL_8constant8durationySo08NSLayoutG0C_12CoreGraphics7CGFloatVSdtFyycfU_TA', symObjAddr: 0x1310, symBinAddr: 0x9CBF0, symSize: 0x10 } + - { offset: 0x127CB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwCP', symObjAddr: 0x0, symBinAddr: 0x9CCE0, symSize: 0x450 } + - { offset: 0x127CCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwxx', symObjAddr: 0x490, symBinAddr: 0x9D130, symSize: 0x170 } + - { offset: 0x127CE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwcp', symObjAddr: 0x600, symBinAddr: 0x9D2A0, symSize: 0x410 } + - { offset: 0x127CF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwca', symObjAddr: 0xA10, symBinAddr: 0x9D6B0, symSize: 0x700 } + - { offset: 0x127D09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwtk', symObjAddr: 0x1110, symBinAddr: 0x9DDB0, symSize: 0x3E0 } + - { offset: 0x127D1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwta', symObjAddr: 0x14F0, symBinAddr: 0x9E190, symSize: 0x6E0 } + - { offset: 0x127D31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwet', symObjAddr: 0x1BD0, symBinAddr: 0x9E870, symSize: 0x20 } + - { offset: 0x127D45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVwst', symObjAddr: 0x1C80, symBinAddr: 0x9E920, symSize: 0x20 } + - { offset: 0x127D59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVMa', symObjAddr: 0x1D20, symBinAddr: 0x9E9C0, symSize: 0x30 } + - { offset: 0x127D6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVMr', symObjAddr: 0x1D50, symBinAddr: 0x9E9F0, symSize: 0x140 } + - { offset: 0x127E14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22presentationAttributes3for6stylesAC012PresentationF0VAC15GraphicsElementC_SayAC10StyleSheetVGtFZ', symObjAddr: 0x2050, symBinAddr: 0x9ECF0, symSize: 0x1B0 } + - { offset: 0x127FDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14makeAttributes3for6stylesAC012PresentationF0VAC10StyleSheetV8SelectorO_SayAJGtFZ', symObjAddr: 0x2230, symBinAddr: 0x9EEA0, symSize: 0x2D0 } + - { offset: 0x12813D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesV08applyingF0yA2EF', symObjAddr: 0x2500, symBinAddr: 0x9F170, symSize: 0x840 } + - { offset: 0x128189, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementC11elementNameSSSgvg', symObjAddr: 0x2D40, symBinAddr: 0x9F9B0, symSize: 0x160 } + - { offset: 0x1283A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO13makeSelectors3forSayAC10StyleSheetV8SelectorOGAC15GraphicsElementC_tFZTf4nd_n', symObjAddr: 0x2EA0, symBinAddr: 0x9FB10, symSize: 0x4B0 } + - { offset: 0x1288E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOWOe', symObjAddr: 0x3370, symBinAddr: 0x9FFC0, symSize: 0x20 } + - { offset: 0x1288FC, size: 0x8, addend: 0x0, symName: '_$sSlsSQ7ElementRpzrlE5split9separator9maxSplits25omittingEmptySubsequencesSay11SubSequenceQzGAB_SiSbtFSbABXEfU_SS_TG5TA', symObjAddr: 0x3480, symBinAddr: 0xA0070, symSize: 0x10 } + - { offset: 0x128910, size: 0x8, addend: 0x0, symName: '_$sS2sSysWl', symObjAddr: 0x3490, symBinAddr: 0xA0080, symSize: 0x30 } + - { offset: 0x12892B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVAEycfC', symObjAddr: 0x1ED0, symBinAddr: 0x9EB70, symSize: 0x180 } + - { offset: 0x128D2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC14sharedInstance33_5C10FF997BD11BB4616773E7BD77AA9CLLACSgvpZ', symObjAddr: 0x2570, symBinAddr: 0x39CA28, symSize: 0x0 } + - { offset: 0x128F3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC18loadFontsFromCacheyyF', symObjAddr: 0x100, symBinAddr: 0xA01B0, symSize: 0xF0 } + - { offset: 0x129415, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerCMa', symObjAddr: 0x2090, symBinAddr: 0xA2140, symSize: 0x20 } + - { offset: 0x129429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtFyyYbcfU_TA', symObjAddr: 0x2190, symBinAddr: 0xA2240, symSize: 0x20 } + - { offset: 0x12943D, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x21B0, symBinAddr: 0xA2260, symSize: 0x20 } + - { offset: 0x129451, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x21D0, symBinAddr: 0xA2280, symSize: 0x10 } + - { offset: 0x129465, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtFyyYbcfU_yyScMYccfU_TA', symObjAddr: 0x2230, symBinAddr: 0xA22B0, symSize: 0x20 } + - { offset: 0x129479, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC9loadFonts33_5C10FF997BD11BB4616773E7BD77AA9CLLyyFySayAA7AppFontCG_10Foundation4DataVSgtcfU_TA', symObjAddr: 0x23B0, symBinAddr: 0xA22D0, symSize: 0x10 } + - { offset: 0x12948D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC10loadColors33_5C10FF997BD11BB4616773E7BD77AA9CLLyyFyAA0G8ResponseVSg_10Foundation4DataVSgtcfU_TA', symObjAddr: 0x2460, symBinAddr: 0xA22E0, symSize: 0x10 } + - { offset: 0x1294A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVSgWOe', symObjAddr: 0x2470, symBinAddr: 0xA22F0, symSize: 0x30 } + - { offset: 0x1294B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVSgWOy', symObjAddr: 0x24A0, symBinAddr: 0xA2320, symSize: 0x30 } + - { offset: 0x1294C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC15fetchThemesDatayyFyycfU_TA', symObjAddr: 0x24D0, symBinAddr: 0xA2350, symSize: 0x10 } + - { offset: 0x1294DD, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgWOb', symObjAddr: 0x24E0, symBinAddr: 0xA2360, symSize: 0x40 } + - { offset: 0x1297F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC04loadD010completionyyyc_tF', symObjAddr: 0x0, symBinAddr: 0xA00B0, symSize: 0x100 } + - { offset: 0x1298EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16loadDefaultFontsyyF', symObjAddr: 0x1F0, symBinAddr: 0xA02A0, symSize: 0x410 } + - { offset: 0x129E10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC15fetchThemesDatayyF', symObjAddr: 0x600, symBinAddr: 0xA06B0, symSize: 0x1E0 } + - { offset: 0x129E5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC15fetchThemesDatayyFyycfU_', symObjAddr: 0x7E0, symBinAddr: 0xA0890, symSize: 0x30 } + - { offset: 0x129E8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC14cancelAllTasksyyF', symObjAddr: 0x810, symBinAddr: 0xA08C0, symSize: 0x220 } + - { offset: 0x12A39B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC22extractFontsToDownload33_5C10FF997BD11BB4616773E7BD77AA9CLL5fontsySayAA7AppFontCG_tF', symObjAddr: 0xE30, symBinAddr: 0xA0EE0, symSize: 0x9E0 } + - { offset: 0x12AB29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtF', symObjAddr: 0x1810, symBinAddr: 0xA18C0, symSize: 0x4F0 } + - { offset: 0x12AED2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtFyyYbcfU_', symObjAddr: 0x1D00, symBinAddr: 0xA1DB0, symSize: 0x200 } + - { offset: 0x12AF37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerC16startDownloading4urls5fontsySay10Foundation3URLVG_SayAA7AppFontCGtFyyYbcfU_yyScMYccfU_', symObjAddr: 0x1F00, symBinAddr: 0xA1FB0, symSize: 0x110 } + - { offset: 0x12AFE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerCfd', symObjAddr: 0x2010, symBinAddr: 0xA20C0, symSize: 0x60 } + - { offset: 0x12B005, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerCfD', symObjAddr: 0x2070, symBinAddr: 0xA2120, symSize: 0x20 } + - { offset: 0x12B0A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ThemeManagerCACycfc', symObjAddr: 0x20B0, symBinAddr: 0xA2160, symSize: 0xD0 } + - { offset: 0x12BA3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVMa', symObjAddr: 0xB0, symBinAddr: 0xA2490, symSize: 0x30 } + - { offset: 0x12BA52, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgWOc', symObjAddr: 0xE0, symBinAddr: 0xA24C0, symSize: 0x40 } + - { offset: 0x12C01F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO18parseConfiguration4from13baseDirectoryAC0G0VSaySSG_10Foundation3URLVtKFZ', symObjAddr: 0x1380, symBinAddr: 0xA3460, symSize: 0x10D0 } + - { offset: 0x12C81E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO9parseSize4fromAC0G0OSSSgSg_tKFZ', symObjAddr: 0x2450, symBinAddr: 0xA4530, symSize: 0x1C0 } + - { offset: 0x12CA61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO11parseInsets4fromAC0G0VSSSgSg_tKFZ', symObjAddr: 0x2610, symBinAddr: 0xA46F0, symSize: 0x1130 } + - { offset: 0x12D77C, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE03newB03for5scaleAcD11CommandLineO6FormatO_AI5ScaleOtF', symObjAddr: 0x3740, symBinAddr: 0xA5820, symSize: 0x1D0 } + - { offset: 0x12D8E6, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLV8PenNavUIE21lastPathComponentNameSSvg', symObjAddr: 0x3910, symBinAddr: 0xA59F0, symSize: 0x140 } + - { offset: 0x12D9F8, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF10Foundation3URLV_Tg5', symObjAddr: 0x3A50, symBinAddr: 0xA5B30, symSize: 0x60 } + - { offset: 0x12DA1B, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFSS_Tg5', symObjAddr: 0x3AB0, symBinAddr: 0xA5B90, symSize: 0x60 } + - { offset: 0x12DA53, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFSi_Tg5', symObjAddr: 0x3B10, symBinAddr: 0xA5BF0, symSize: 0x30 } + - { offset: 0x12DA8B, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x3B40, symBinAddr: 0xA5C20, symSize: 0x30 } + - { offset: 0x12DAB8, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI11RouteOptionV0mN3KeyO_Tg5', symObjAddr: 0x3B80, symBinAddr: 0xA5C60, symSize: 0x100 } + - { offset: 0x12DB5D, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI13AppFontWeightO_Tg5', symObjAddr: 0x3CA0, symBinAddr: 0xA5D80, symSize: 0xB0 } + - { offset: 0x12DC85, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI8MenuItemV0mN9AttributeO_Tg5', symObjAddr: 0x3D50, symBinAddr: 0xA5E30, symSize: 0x50 } + - { offset: 0x12DDF8, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI9LayerTreeO8GradientV_Tg5', symObjAddr: 0x3DA0, symBinAddr: 0xA5E80, symSize: 0x50 } + - { offset: 0x12DF1C, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x3DF0, symBinAddr: 0xA5ED0, symSize: 0x70 } + - { offset: 0x12DFF0, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFSo11CFStringRefa_Tg5', symObjAddr: 0x3E60, symBinAddr: 0xA5F40, symSize: 0x80 } + - { offset: 0x12E052, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4findys10_HashTableV6BucketV6bucket_Sb5foundtxSHRzlFs11AnyHashableV_Tg5', symObjAddr: 0x3EE0, symBinAddr: 0xA5FC0, symSize: 0x30 } + - { offset: 0x12E07F, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF10Foundation3URLV_Tg5', symObjAddr: 0x4020, symBinAddr: 0xA6100, symSize: 0x120 } + - { offset: 0x12E097, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlFSS_Tg5', symObjAddr: 0x4140, symBinAddr: 0xA6220, symSize: 0xC0 } + - { offset: 0x12E0F9, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlFSi_Tg5', symObjAddr: 0x4200, symBinAddr: 0xA62E0, symSize: 0x70 } + - { offset: 0x12E131, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x4270, symBinAddr: 0xA6350, symSize: 0xC0 } + - { offset: 0x12E15E, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI11RouteOptionV0oP3KeyO_Tg5', symObjAddr: 0x4330, symBinAddr: 0xA6410, symSize: 0x2B0 } + - { offset: 0x12E231, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI9FontStyleO_Tg5', symObjAddr: 0x45E0, symBinAddr: 0xA66C0, symSize: 0x450 } + - { offset: 0x12E304, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI13AppFontWeightO_Tg5', symObjAddr: 0x4A30, symBinAddr: 0xA6B10, symSize: 0x190 } + - { offset: 0x12E3E0, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI8MenuItemV0oP9AttributeO_Tg5', symObjAddr: 0x4BC0, symBinAddr: 0xA6CA0, symSize: 0x70 } + - { offset: 0x12E4AD, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI9LayerTreeO8GradientV_Tg5', symObjAddr: 0x4C30, symBinAddr: 0xA6D10, symSize: 0x270 } + - { offset: 0x12E620, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x4EA0, symBinAddr: 0xA6F80, symSize: 0xF0 } + - { offset: 0x12E6A0, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlFSo11CFStringRefa_Tg5', symObjAddr: 0x4F90, symBinAddr: 0xA7070, symSize: 0xE0 } + - { offset: 0x12E6D8, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlFs11AnyHashableV_Tg5', symObjAddr: 0x5070, symBinAddr: 0xA7150, symSize: 0xC0 } + - { offset: 0x12E705, size: 0x8, addend: 0x0, symName: '_$ss22__RawDictionaryStorageC4find_9hashValues10_HashTableV6BucketV6bucket_Sb5foundtx_SitSHRzlF8PenNavUI11CommandLineO8ModifierO_Tg5', symObjAddr: 0x5130, symBinAddr: 0xA7210, symSize: 0x470 } + - { offset: 0x12E83F, size: 0x8, addend: 0x0, symName: '_$ss32_copyCollectionToContiguousArrayys0dE0Vy7ElementQzGxSlRzlFs0E5SliceVySSG_Tg5', symObjAddr: 0x57C0, symBinAddr: 0xA78A0, symSize: 0xE0 } + - { offset: 0x12EA21, size: 0x8, addend: 0x0, symName: '_$ss32_copyCollectionToContiguousArrayys0dE0Vy7ElementQzGxSlRzlFs0E5SliceVy7Penguin11POICategoryVG_Tg5', symObjAddr: 0x59A0, symBinAddr: 0xA7A80, symSize: 0x140 } + - { offset: 0x12EBA4, size: 0x8, addend: 0x0, symName: '_$sSSSgSgWOe', symObjAddr: 0x5C20, symBinAddr: 0xA7CA0, symSize: 0x20 } + - { offset: 0x12EC7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO14parsePrecision4fromSiSgSSSgSg_tKFZTf4nd_n', symObjAddr: 0x5C40, symBinAddr: 0xA7CC0, symSize: 0x320 } + - { offset: 0x12F051, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSHAASQWb', symObjAddr: 0x5FA0, symBinAddr: 0xA7FE0, symSize: 0x10 } + - { offset: 0x12F065, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOAESQAAWl', symObjAddr: 0x5FB0, symBinAddr: 0xA7FF0, symSize: 0x30 } + - { offset: 0x12F079, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSHAASQWb', symObjAddr: 0x5FE0, symBinAddr: 0xA8020, symSize: 0x10 } + - { offset: 0x12F08D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOAESQAAWl', symObjAddr: 0x5FF0, symBinAddr: 0xA8030, symSize: 0x30 } + - { offset: 0x12F0A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ScaleOSHAASQWb', symObjAddr: 0x6020, symBinAddr: 0xA8060, symSize: 0x10 } + - { offset: 0x12F0B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ScaleOAESQAAWl', symObjAddr: 0x6030, symBinAddr: 0xA8070, symSize: 0x30 } + - { offset: 0x12F0C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwCP', symObjAddr: 0x6060, symBinAddr: 0xA80A0, symSize: 0x270 } + - { offset: 0x12F0DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwxx', symObjAddr: 0x62D0, symBinAddr: 0xA8310, symSize: 0xA0 } + - { offset: 0x12F0F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwcp', symObjAddr: 0x6370, symBinAddr: 0xA83B0, symSize: 0x230 } + - { offset: 0x12F105, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwca', symObjAddr: 0x65A0, symBinAddr: 0xA85E0, symSize: 0x340 } + - { offset: 0x12F119, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwtk', symObjAddr: 0x68E0, symBinAddr: 0xA8920, symSize: 0x230 } + - { offset: 0x12F12D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwta', symObjAddr: 0x6B10, symBinAddr: 0xA8B50, symSize: 0x340 } + - { offset: 0x12F141, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwet', symObjAddr: 0x6E50, symBinAddr: 0xA8E90, symSize: 0x20 } + - { offset: 0x12F155, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVwst', symObjAddr: 0x6F00, symBinAddr: 0xA8F40, symSize: 0x20 } + - { offset: 0x12F169, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationVMr', symObjAddr: 0x6FA0, symBinAddr: 0xA8FE0, symSize: 0xF0 } + - { offset: 0x12F17D, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVSgMa', symObjAddr: 0x7090, symBinAddr: 0xA90D0, symSize: 0x50 } + - { offset: 0x12F191, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOwet', symObjAddr: 0x7100, symBinAddr: 0xA9120, symSize: 0x80 } + - { offset: 0x12F1A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOwst', symObjAddr: 0x7180, symBinAddr: 0xA91A0, symSize: 0xD0 } + - { offset: 0x12F1B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOMa', symObjAddr: 0x7260, symBinAddr: 0xA9270, symSize: 0x10 } + - { offset: 0x12F1CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOMa', symObjAddr: 0x73F0, symBinAddr: 0xA9280, symSize: 0x10 } + - { offset: 0x12F1E1, size: 0x8, addend: 0x0, symName: ___swift_memcpy17_8, symObjAddr: 0x7400, symBinAddr: 0xA9290, symSize: 0x20 } + - { offset: 0x12F1F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOwet', symObjAddr: 0x7420, symBinAddr: 0xA92B0, symSize: 0x20 } + - { offset: 0x12F209, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOwst', symObjAddr: 0x7440, symBinAddr: 0xA92D0, symSize: 0x30 } + - { offset: 0x12F21D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOwug', symObjAddr: 0x7470, symBinAddr: 0xA9300, symSize: 0x20 } + - { offset: 0x12F231, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOwui', symObjAddr: 0x74A0, symBinAddr: 0xA9320, symSize: 0x20 } + - { offset: 0x12F245, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeOMa', symObjAddr: 0x74C0, symBinAddr: 0xA9340, symSize: 0x10 } + - { offset: 0x12F259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ScaleOMa', symObjAddr: 0x7650, symBinAddr: 0xA9350, symSize: 0x10 } + - { offset: 0x12F26D, size: 0x8, addend: 0x0, symName: ___swift_memcpy57_8, symObjAddr: 0x7690, symBinAddr: 0xA9360, symSize: 0x30 } + - { offset: 0x12F281, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsVwet', symObjAddr: 0x76C0, symBinAddr: 0xA9390, symSize: 0x20 } + - { offset: 0x12F295, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsVwst', symObjAddr: 0x76E0, symBinAddr: 0xA93B0, symSize: 0x40 } + - { offset: 0x12F2A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsVMa', symObjAddr: 0x7720, symBinAddr: 0xA93F0, symSize: 0x10 } + - { offset: 0x12F2BD, size: 0x8, addend: 0x0, symName: '_$ss11AnyHashableVWOc', symObjAddr: 0x7750, symBinAddr: 0xA9400, symSize: 0x30 } + - { offset: 0x12F2D1, size: 0x8, addend: 0x0, symName: '_$sSSWOh', symObjAddr: 0x77E0, symBinAddr: 0xA9430, symSize: 0x30 } + - { offset: 0x12F2E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOAEsAdAWl', symObjAddr: 0x7810, symBinAddr: 0xA9460, symSize: 0x30 } + - { offset: 0x12F2F9, size: 0x8, addend: 0x0, symName: '_$sSSSgSgWOy', symObjAddr: 0x7840, symBinAddr: 0xA9490, symSize: 0x20 } + - { offset: 0x12F346, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvg', symObjAddr: 0x0, symBinAddr: 0xA23F0, symSize: 0x30 } + - { offset: 0x12F371, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvs', symObjAddr: 0x30, symBinAddr: 0xA2420, symSize: 0x30 } + - { offset: 0x12F3A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5input10Foundation3URLVvM', symObjAddr: 0x60, symBinAddr: 0xA2450, symSize: 0x10 } + - { offset: 0x12F428, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x9C0, symBinAddr: 0xA2C60, symSize: 0x10 } + - { offset: 0x12F48F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSHAASH9hashValueSivgTW', symObjAddr: 0x9D0, symBinAddr: 0xA2C70, symSize: 0xC0 } + - { offset: 0x12F53A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xA90, symBinAddr: 0xA2D30, symSize: 0xA0 } + - { offset: 0x12F5A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xB30, symBinAddr: 0xA2DD0, symSize: 0xC0 } + - { offset: 0x12F662, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xD50, symBinAddr: 0xA2FF0, symSize: 0xA0 } + - { offset: 0x12F746, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSHAASH9hashValueSivgTW', symObjAddr: 0xDF0, symBinAddr: 0xA3090, symSize: 0x80 } + - { offset: 0x12F7F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xE70, symBinAddr: 0xA3110, symSize: 0x50 } + - { offset: 0x12F858, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xEC0, symBinAddr: 0xA3160, symSize: 0x80 } + - { offset: 0x12FCD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvg', symObjAddr: 0x80, symBinAddr: 0xA2460, symSize: 0x30 } + - { offset: 0x12FCF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvs', symObjAddr: 0x160, symBinAddr: 0xA2500, symSize: 0x30 } + - { offset: 0x12FD2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV15inputUltralight10Foundation3URLVSgvM', symObjAddr: 0x1D0, symBinAddr: 0xA2530, symSize: 0x20 } + - { offset: 0x12FD4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvg', symObjAddr: 0x200, symBinAddr: 0xA2550, symSize: 0x30 } + - { offset: 0x12FD72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvs', symObjAddr: 0x230, symBinAddr: 0xA2580, symSize: 0x30 } + - { offset: 0x12FDA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV10inputBlack10Foundation3URLVSgvM', symObjAddr: 0x260, symBinAddr: 0xA25B0, symSize: 0x20 } + - { offset: 0x12FDCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvg', symObjAddr: 0x290, symBinAddr: 0xA25D0, symSize: 0x40 } + - { offset: 0x12FDEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvs', symObjAddr: 0x2D0, symBinAddr: 0xA2610, symSize: 0x40 } + - { offset: 0x12FE22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6output10Foundation3URLVvM', symObjAddr: 0x310, symBinAddr: 0xA2650, symSize: 0x20 } + - { offset: 0x12FE46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvg', symObjAddr: 0x340, symBinAddr: 0xA2670, symSize: 0x30 } + - { offset: 0x12FE6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvs', symObjAddr: 0x370, symBinAddr: 0xA26A0, symSize: 0x20 } + - { offset: 0x12FE9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6formatAC6FormatOvM', symObjAddr: 0x390, symBinAddr: 0xA26C0, symSize: 0x20 } + - { offset: 0x12FEC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvg', symObjAddr: 0x3C0, symBinAddr: 0xA26E0, symSize: 0x30 } + - { offset: 0x12FEE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvs', symObjAddr: 0x3F0, symBinAddr: 0xA2710, symSize: 0x30 } + - { offset: 0x12FF1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV4sizeAC4SizeOvM', symObjAddr: 0x420, symBinAddr: 0xA2740, symSize: 0x20 } + - { offset: 0x12FF3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvg', symObjAddr: 0x450, symBinAddr: 0xA2760, symSize: 0x30 } + - { offset: 0x12FF62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvs', symObjAddr: 0x480, symBinAddr: 0xA2790, symSize: 0x20 } + - { offset: 0x12FF96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV3apiAC3APIOSgvM', symObjAddr: 0x4A0, symBinAddr: 0xA27B0, symSize: 0x20 } + - { offset: 0x12FFBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvg', symObjAddr: 0x4D0, symBinAddr: 0xA27D0, symSize: 0x50 } + - { offset: 0x12FFDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvs', symObjAddr: 0x520, symBinAddr: 0xA2820, symSize: 0x50 } + - { offset: 0x130012, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV6insetsAC6InsetsVvM', symObjAddr: 0x570, symBinAddr: 0xA2870, symSize: 0x20 } + - { offset: 0x130036, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvg', symObjAddr: 0x5A0, symBinAddr: 0xA2890, symSize: 0x50 } + - { offset: 0x13005A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvs', symObjAddr: 0x5F0, symBinAddr: 0xA28E0, symSize: 0x50 } + - { offset: 0x13008E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV16insetsUltralightAC6InsetsVSgvM', symObjAddr: 0x640, symBinAddr: 0xA2930, symSize: 0x20 } + - { offset: 0x1300B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvg', symObjAddr: 0x670, symBinAddr: 0xA2950, symSize: 0x50 } + - { offset: 0x1300D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvs', symObjAddr: 0x6C0, symBinAddr: 0xA29A0, symSize: 0x50 } + - { offset: 0x13010A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV11insetsBlackAC6InsetsVSgvM', symObjAddr: 0x710, symBinAddr: 0xA29F0, symSize: 0x20 } + - { offset: 0x13012E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvg', symObjAddr: 0x740, symBinAddr: 0xA2A10, symSize: 0x30 } + - { offset: 0x130152, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvs', symObjAddr: 0x770, symBinAddr: 0xA2A40, symSize: 0x20 } + - { offset: 0x130186, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV5scaleAC5ScaleOvM', symObjAddr: 0x790, symBinAddr: 0xA2A60, symSize: 0x20 } + - { offset: 0x1301AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvg', symObjAddr: 0x7C0, symBinAddr: 0xA2A80, symSize: 0x30 } + - { offset: 0x1301CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvs', symObjAddr: 0x7F0, symBinAddr: 0xA2AB0, symSize: 0x20 } + - { offset: 0x130202, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV7optionsAA3SVGC7OptionsVvM', symObjAddr: 0x810, symBinAddr: 0xA2AD0, symSize: 0x20 } + - { offset: 0x130226, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvg', symObjAddr: 0x840, symBinAddr: 0xA2AF0, symSize: 0x20 } + - { offset: 0x13024A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvs', symObjAddr: 0x860, symBinAddr: 0xA2B10, symSize: 0x30 } + - { offset: 0x13027E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO13ConfigurationV9precisionSiSgvM', symObjAddr: 0x890, symBinAddr: 0xA2B40, symSize: 0x20 } + - { offset: 0x1302AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatO8rawValueAESgSS_tcfC', symObjAddr: 0x8C0, symBinAddr: 0xA2B60, symSize: 0x70 } + - { offset: 0x1302E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatO8rawValueSSvg', symObjAddr: 0x930, symBinAddr: 0xA2BD0, symSize: 0x90 } + - { offset: 0x130324, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xBF0, symBinAddr: 0xA2E90, symSize: 0x20 } + - { offset: 0x130338, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6FormatOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xC10, symBinAddr: 0xA2EB0, symSize: 0x90 } + - { offset: 0x130367, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIO8rawValueAESgSS_tcfC', symObjAddr: 0xCA0, symBinAddr: 0xA2F40, symSize: 0x70 } + - { offset: 0x13039A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIO8rawValueSSvg', symObjAddr: 0xD10, symBinAddr: 0xA2FB0, symSize: 0x40 } + - { offset: 0x1303F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xF40, symBinAddr: 0xA31E0, symSize: 0x70 } + - { offset: 0x130430, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO3APIOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xFB0, symBinAddr: 0xA3250, symSize: 0x50 } + - { offset: 0x130465, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO4SizeO2eeoiySbAE_AEtFZ', symObjAddr: 0x1000, symBinAddr: 0xA32A0, symSize: 0x40 } + - { offset: 0x1304D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV3topSdSgvg', symObjAddr: 0x11A0, symBinAddr: 0xA32E0, symSize: 0x10 } + - { offset: 0x1304EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV3topSdSgvs', symObjAddr: 0x11B0, symBinAddr: 0xA32F0, symSize: 0x20 } + - { offset: 0x13051E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvg', symObjAddr: 0x11F0, symBinAddr: 0xA3310, symSize: 0x10 } + - { offset: 0x130532, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvs', symObjAddr: 0x1200, symBinAddr: 0xA3320, symSize: 0x20 } + - { offset: 0x130566, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV4leftSdSgvM', symObjAddr: 0x1220, symBinAddr: 0xA3340, symSize: 0x20 } + - { offset: 0x13058A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvg', symObjAddr: 0x1250, symBinAddr: 0xA3360, symSize: 0x10 } + - { offset: 0x13059E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvs', symObjAddr: 0x1260, symBinAddr: 0xA3370, symSize: 0x20 } + - { offset: 0x1305D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV6bottomSdSgvM', symObjAddr: 0x1280, symBinAddr: 0xA3390, symSize: 0x20 } + - { offset: 0x1305F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvg', symObjAddr: 0x12B0, symBinAddr: 0xA33B0, symSize: 0x10 } + - { offset: 0x13060A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvs', symObjAddr: 0x12C0, symBinAddr: 0xA33C0, symSize: 0x20 } + - { offset: 0x13063E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV5rightSdSgvM', symObjAddr: 0x12E0, symBinAddr: 0xA33E0, symSize: 0x20 } + - { offset: 0x130668, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV3top4left6bottom5rightAESdSg_A3JtcfC', symObjAddr: 0x1310, symBinAddr: 0xA3400, symSize: 0x50 } + - { offset: 0x1306AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV2eeoiySbAE_AEtFZ', symObjAddr: 0x1360, symBinAddr: 0xA3450, symSize: 0x10 } + - { offset: 0x130AFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO6InsetsV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x5AE0, symBinAddr: 0xA7BC0, symSize: 0xE0 } + - { offset: 0x130F21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PositionTrackerCfD', symObjAddr: 0x0, symBinAddr: 0xA94F0, symSize: 0x20 } + - { offset: 0x130F5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PositionTrackerCMa', symObjAddr: 0x20, symBinAddr: 0xA9510, symSize: 0x20 } + - { offset: 0x131148, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVWOc', symObjAddr: 0x9F0, symBinAddr: 0xA9E20, symSize: 0x30 } + - { offset: 0x131163, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVWOh', symObjAddr: 0xA20, symBinAddr: 0xA9E50, symSize: 0x30 } + - { offset: 0x13118C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwxx', symObjAddr: 0xA80, symBinAddr: 0xA9E80, symSize: 0x30 } + - { offset: 0x1311A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwcp', symObjAddr: 0xAB0, symBinAddr: 0xA9EB0, symSize: 0xC0 } + - { offset: 0x1311B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwca', symObjAddr: 0xB70, symBinAddr: 0xA9F70, symSize: 0xF0 } + - { offset: 0x1311C8, size: 0x8, addend: 0x0, symName: ___swift_memcpy144_8, symObjAddr: 0xC60, symBinAddr: 0xAA060, symSize: 0x10 } + - { offset: 0x1311DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwta', symObjAddr: 0xC70, symBinAddr: 0xAA070, symSize: 0xD0 } + - { offset: 0x1311F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwet', symObjAddr: 0xD40, symBinAddr: 0xAA140, symSize: 0x50 } + - { offset: 0x131204, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVwst', symObjAddr: 0xD90, symBinAddr: 0xAA190, symSize: 0x70 } + - { offset: 0x131218, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVMa', symObjAddr: 0xE00, symBinAddr: 0xAA200, symSize: 0x10 } + - { offset: 0x13122C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOAFs0G3KeyAAWl', symObjAddr: 0xE80, symBinAddr: 0xAA210, symSize: 0x30 } + - { offset: 0x131240, size: 0x8, addend: 0x0, symName: '_$s12CoreGraphics7CGFloatVACSEAAWl', symObjAddr: 0xEB0, symBinAddr: 0xAA240, symSize: 0x30 } + - { offset: 0x131254, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOwet', symObjAddr: 0xF00, symBinAddr: 0xAA270, symSize: 0x80 } + - { offset: 0x131268, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOwst', symObjAddr: 0xF80, symBinAddr: 0xAA2F0, symSize: 0xD0 } + - { offset: 0x13127C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOMa', symObjAddr: 0x1080, symBinAddr: 0xAA3C0, symSize: 0x10 } + - { offset: 0x131290, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOSHAASQWb', symObjAddr: 0x1090, symBinAddr: 0xAA3D0, symSize: 0x10 } + - { offset: 0x1312A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOAFSQAAWl', symObjAddr: 0x10A0, symBinAddr: 0xAA3E0, symSize: 0x30 } + - { offset: 0x1312B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x10D0, symBinAddr: 0xAA410, symSize: 0x10 } + - { offset: 0x1312CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x10E0, symBinAddr: 0xAA420, symSize: 0x30 } + - { offset: 0x1312E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1110, symBinAddr: 0xAA450, symSize: 0x10 } + - { offset: 0x1312F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x1120, symBinAddr: 0xAA460, symSize: 0x30 } + - { offset: 0x13131A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PositionTrackerCfD', symObjAddr: 0x0, symBinAddr: 0xA94F0, symSize: 0x20 } + - { offset: 0x131367, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x4F0, symBinAddr: 0xA9920, symSize: 0x20 } + - { offset: 0x131383, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x510, symBinAddr: 0xA9940, symSize: 0x20 } + - { offset: 0x1313AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLO11stringValueSSvg', symObjAddr: 0x40, symBinAddr: 0xA9530, symSize: 0x100 } + - { offset: 0x1313E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x140, symBinAddr: 0xA9630, symSize: 0x2B0 } + - { offset: 0x131426, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x4A0, symBinAddr: 0xA98E0, symSize: 0x10 } + - { offset: 0x131441, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x4B0, symBinAddr: 0xA98F0, symSize: 0x20 } + - { offset: 0x13146A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLOs0G3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x4E0, symBinAddr: 0xA9910, symSize: 0x10 } + - { offset: 0x13147E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x530, symBinAddr: 0xA9960, symSize: 0x10 } + - { offset: 0x1314C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV4from12isNavigationAC7Penguin10PILocationC_SbtcfCTf4nnd_n', symObjAddr: 0x540, symBinAddr: 0xA9970, symSize: 0x4B0 } + - { offset: 0x131530, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataV10CodingKeys33_31C53FE19793A6247CCBE3CF8830CF1BLLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x1150, symBinAddr: 0xAA490, symSize: 0x2DC } + - { offset: 0x131E17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellCfETo', symObjAddr: 0x1490, symBinAddr: 0xABC00, symSize: 0xA0 } + - { offset: 0x131E46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellCMa', symObjAddr: 0x1530, symBinAddr: 0xABCA0, symSize: 0x20 } + - { offset: 0x131E5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA11PoiViewDataCSg_tFyycfU_TA', symObjAddr: 0x15C0, symBinAddr: 0xABCE0, symSize: 0x20 } + - { offset: 0x131E6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA11PoiViewDataCSg_tFyycfU0_TA', symObjAddr: 0x15E0, symBinAddr: 0xABD00, symSize: 0x20 } + - { offset: 0x131E82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA11PoiViewDataCSg_tFyycfU1_TA', symObjAddr: 0x1600, symBinAddr: 0xABD20, symSize: 0x20 } + - { offset: 0x13200B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC13containerViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xAA770, symSize: 0x20 } + - { offset: 0x132069, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC13containerViewSo6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0xAA790, symSize: 0x30 } + - { offset: 0x1320B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC18phoneContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0xAA7C0, symSize: 0x20 } + - { offset: 0x132110, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC18phoneContainerViewAA06HapticI0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0xAA7E0, symSize: 0x30 } + - { offset: 0x13215F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC10phoneLabelSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0xAA810, symSize: 0x20 } + - { offset: 0x1321B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC10phoneLabelSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0xAA830, symSize: 0x30 } + - { offset: 0x132206, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC20websiteContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0xF0, symBinAddr: 0xAA860, symSize: 0x20 } + - { offset: 0x132259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC20websiteContainerViewAA06HapticI0CSgvsTo', symObjAddr: 0x110, symBinAddr: 0xAA880, symSize: 0x30 } + - { offset: 0x1322A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12websiteLabelSo7UILabelCSgvgTo', symObjAddr: 0x140, symBinAddr: 0xAA8B0, symSize: 0x20 } + - { offset: 0x1322FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12websiteLabelSo7UILabelCSgvsTo', symObjAddr: 0x160, symBinAddr: 0xAA8D0, symSize: 0x30 } + - { offset: 0x13234A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC17mailContainerViewAA06HapticI0CSgvgTo', symObjAddr: 0x190, symBinAddr: 0xAA900, symSize: 0x20 } + - { offset: 0x13239D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC17mailContainerViewAA06HapticI0CSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0xAA920, symSize: 0x30 } + - { offset: 0x1323EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC9mailLabelSo7UILabelCSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0xAA950, symSize: 0x20 } + - { offset: 0x13243F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC9mailLabelSo7UILabelCSgvsTo', symObjAddr: 0x200, symBinAddr: 0xAA970, symSize: 0x30 } + - { offset: 0x13248E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x230, symBinAddr: 0xAA9A0, symSize: 0x20 } + - { offset: 0x1324E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0x250, symBinAddr: 0xAA9C0, symSize: 0x30 } + - { offset: 0x132537, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12awakeFromNibyyFTo', symObjAddr: 0x280, symBinAddr: 0xAA9F0, symSize: 0xB0 } + - { offset: 0x13258D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC15prepareForReuseyyF', symObjAddr: 0x330, symBinAddr: 0xAAAA0, symSize: 0x90 } + - { offset: 0x132616, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC15prepareForReuseyyFTo', symObjAddr: 0x3C0, symBinAddr: 0xAAB30, symSize: 0x30 } + - { offset: 0x13265A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA11PoiViewDataCSg_tF', symObjAddr: 0x3F0, symBinAddr: 0xAAB60, symSize: 0x6C0 } + - { offset: 0x1328BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC12setUpActions3foryAA13VenueViewDataCSg_tF', symObjAddr: 0xAB0, symBinAddr: 0xAB220, symSize: 0x6B0 } + - { offset: 0x132B2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x11F0, symBinAddr: 0xAB960, symSize: 0x110 } + - { offset: 0x132B6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x1300, symBinAddr: 0xABA70, symSize: 0x30 } + - { offset: 0x132BA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1330, symBinAddr: 0xABAA0, symSize: 0x100 } + - { offset: 0x132BD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1430, symBinAddr: 0xABBA0, symSize: 0x30 } + - { offset: 0x132BEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ContactDetailsCellCfD', symObjAddr: 0x1460, symBinAddr: 0xABBD0, symSize: 0x30 } + - { offset: 0x132F8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC07contentF0AA06HapticF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xABD70, symSize: 0x20 } + - { offset: 0x133344, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewCfETo', symObjAddr: 0xC90, symBinAddr: 0xACA00, symSize: 0x80 } + - { offset: 0x133373, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewCMa', symObjAddr: 0xD10, symBinAddr: 0xACA80, symSize: 0x20 } + - { offset: 0x133387, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10commonInit33_80B0D1C32DEBDD219C999A651F3DBB75LLyyFyycfU_TA', symObjAddr: 0xDC0, symBinAddr: 0xACAC0, symSize: 0x10 } + - { offset: 0x133497, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC07contentF0AA06HapticF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xABD70, symSize: 0x20 } + - { offset: 0x1334F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC07contentF0AA06HapticF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xABD90, symSize: 0x30 } + - { offset: 0x1335AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC010outerStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0xABDC0, symSize: 0x20 } + - { offset: 0x133606, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC010outerStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0xABDE0, symSize: 0x30 } + - { offset: 0x133655, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC09iconImageF0So07UIImageF0CSgvgTo', symObjAddr: 0xA0, symBinAddr: 0xABE10, symSize: 0x20 } + - { offset: 0x1336AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC09iconImageF0So07UIImageF0CSgvsTo', symObjAddr: 0xC0, symBinAddr: 0xABE30, symSize: 0x30 } + - { offset: 0x1336FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC020locationDetailsStackF0So07UIStackF0CSgvgTo', symObjAddr: 0xF0, symBinAddr: 0xABE60, symSize: 0x20 } + - { offset: 0x13374F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC020locationDetailsStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x110, symBinAddr: 0xABE80, symSize: 0x30 } + - { offset: 0x13379E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x140, symBinAddr: 0xABEB0, symSize: 0x20 } + - { offset: 0x1337F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0x160, symBinAddr: 0xABED0, symSize: 0x30 } + - { offset: 0x133845, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x190, symBinAddr: 0xABF00, symSize: 0x20 } + - { offset: 0x133898, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0xABF20, symSize: 0x30 } + - { offset: 0x1338D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x1E0, symBinAddr: 0xABF50, symSize: 0x110 } + - { offset: 0x133908, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x2F0, symBinAddr: 0xAC060, symSize: 0x30 } + - { offset: 0x13396B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x320, symBinAddr: 0xAC090, symSize: 0xE0 } + - { offset: 0x1339A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x400, symBinAddr: 0xAC170, symSize: 0x30 } + - { offset: 0x133A21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10commonInit33_80B0D1C32DEBDD219C999A651F3DBB75LLyyF', symObjAddr: 0x430, symBinAddr: 0xAC1A0, symSize: 0x4E0 } + - { offset: 0x133BF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC10commonInit33_80B0D1C32DEBDD219C999A651F3DBB75LLyyFyycfU_', symObjAddr: 0x910, symBinAddr: 0xAC680, symSize: 0x80 } + - { offset: 0x133C58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewC11setLocationyy7Penguin10PILocationCSgF', symObjAddr: 0x990, symBinAddr: 0xAC700, symSize: 0x2D0 } + - { offset: 0x133CFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserTrackingViewCfD', symObjAddr: 0xC60, symBinAddr: 0xAC9D0, symSize: 0x30 } + - { offset: 0x1340E5, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUI19LayoutGuideProviderA2cDP11widthAnchorSo17NSLayoutDimensionCvgTW', symObjAddr: 0x80, symBinAddr: 0xACB50, symSize: 0x20 } + - { offset: 0x134125, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUI19LayoutGuideProviderA2cDP12heightAnchorSo17NSLayoutDimensionCvgTW', symObjAddr: 0xA0, symBinAddr: 0xACB70, symSize: 0x20 } + - { offset: 0x134209, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE17fp_safeAreaInsetsSo06UIEdgeI0VvgTo', symObjAddr: 0xC0, symBinAddr: 0xACB90, symSize: 0xA0 } + - { offset: 0x134253, size: 0x8, addend: 0x0, symName: '_$sSo12UIScrollViewC8PenNavUIE19fp_contentOffsetMaxSo7CGPointVvg', symObjAddr: 0x160, symBinAddr: 0xACC30, symSize: 0x120 } + - { offset: 0x134370, size: 0x8, addend: 0x0, symName: '_$sSo24UISpringTimingParametersC8PenNavUIE16decelerationRate17frequencyResponse15initialVelocityAB12CoreGraphics7CGFloatV_AISo8CGVectorVtcfC', symObjAddr: 0x280, symBinAddr: 0xACD50, symSize: 0x90 } + - { offset: 0x13446C, size: 0x8, addend: 0x0, symName: '_$sSo24UISpringTimingParametersC8PenNavUIE12dampingRatio17frequencyResponse15initialVelocityAB12CoreGraphics7CGFloatV_AISo8CGVectorVtcfC', symObjAddr: 0x310, symBinAddr: 0xACDE0, symSize: 0x80 } + - { offset: 0x134558, size: 0x8, addend: 0x0, symName: '_$sSo12UIBezierPathC8PenNavUIE4path11roundedRect10appearanceABSo6CGRectV_AC17SurfaceAppearanceCtFZTf4nnd_n', symObjAddr: 0x3F0, symBinAddr: 0xACE60, symSize: 0x840 } + - { offset: 0x134DEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC14sharedInstance33_64C1391F925319CFCBF0C1DCA796F972LLACSgvpZ', symObjAddr: 0xA0B8, symBinAddr: 0x39CE78, symSize: 0x0 } + - { offset: 0x1351DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC11serviceRateAA07ServiceG0CvpZ', symObjAddr: 0x42560, symBinAddr: 0x3BCF88, symSize: 0x0 } + - { offset: 0x135CC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC11serviceRate_WZ', symObjAddr: 0x3F90, symBinAddr: 0xB1670, symSize: 0x20 } + - { offset: 0x135EAB, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUIE4safexSgSi_tcisAA3LegV_Tg5', symObjAddr: 0x6AB0, symBinAddr: 0xB4190, symSize: 0xF0 } + - { offset: 0x1362AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCMU', symObjAddr: 0x9510, symBinAddr: 0xB6BF0, symSize: 0x10 } + - { offset: 0x1362C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCMa', symObjAddr: 0x9520, symBinAddr: 0xB6C00, symSize: 0x30 } + - { offset: 0x1362D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCMr', symObjAddr: 0x9550, symBinAddr: 0xB6C30, symSize: 0xC0 } + - { offset: 0x1362EB, size: 0x8, addend: 0x0, symName: '_$s7Penguin5RouteVSgMa', symObjAddr: 0x9610, symBinAddr: 0xB6CF0, symSize: 0x50 } + - { offset: 0x136357, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVWOh', symObjAddr: 0x9F10, symBinAddr: 0xB75C0, symSize: 0x30 } + - { offset: 0x13636B, size: 0x8, addend: 0x0, symName: '_$s7Penguin5RouteVSgWOc', symObjAddr: 0x9F80, symBinAddr: 0xB75F0, symSize: 0x40 } + - { offset: 0x13637F, size: 0x8, addend: 0x0, symName: '_$s7Penguin5RouteVSgWOf', symObjAddr: 0x9FC0, symBinAddr: 0xB7630, symSize: 0x40 } + - { offset: 0x136393, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVWOb', symObjAddr: 0xA050, symBinAddr: 0xB7670, symSize: 0x2C } + - { offset: 0x13641D, size: 0x8, addend: 0x0, symName: '_$sSTsE7forEachyyy7ElementQzKXEKFSay8PenNavUI3LegVG_Tg503$s8de63UI17NavigationManagerC10directionsSayAA14RouteDirectionVGvgyAA3G6VXEfU_SayAD0oP0VGTf1cn_n', symObjAddr: 0x0, symBinAddr: 0xAD6F0, symSize: 0xC0 } + - { offset: 0x136E0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC10directionsSayAA14RouteDirectionVGvg', symObjAddr: 0x220, symBinAddr: 0xAD900, symSize: 0x360 } + - { offset: 0x1372D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC4legsSayAA3LegVGvM', symObjAddr: 0x1D0, symBinAddr: 0xAD8C0, symSize: 0x40 } + - { offset: 0x137393, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC14currentSubpath7Penguin7SubPathCSgvg', symObjAddr: 0x580, symBinAddr: 0xADC60, symSize: 0xF0 } + - { offset: 0x137615, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC22isCurrentSubpathIndoorSbvg', symObjAddr: 0x670, symBinAddr: 0xADD50, symSize: 0xD0 } + - { offset: 0x1376B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC21routeEndsInCurrentLegSbvg', symObjAddr: 0x740, symBinAddr: 0xADE20, symSize: 0x200 } + - { offset: 0x13787D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC23legEndsInCurrentSubpathSbvg', symObjAddr: 0x940, symBinAddr: 0xAE020, symSize: 0x110 } + - { offset: 0x137A8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC15previousSubpath7Penguin7SubPathCSgvg', symObjAddr: 0xA50, symBinAddr: 0xAE130, symSize: 0x240 } + - { offset: 0x137E6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC20previousSubpathInLeg7Penguin7SubPathCSgvg', symObjAddr: 0xC90, symBinAddr: 0xAE370, symSize: 0x100 } + - { offset: 0x138057, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC16nextSubpathInLeg7Penguin7SubPathCSgvg', symObjAddr: 0xD90, symBinAddr: 0xAE470, symSize: 0x100 } + - { offset: 0x138255, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC6sourceAA5PlaceCSgvM', symObjAddr: 0xE90, symBinAddr: 0xAE570, symSize: 0x100 } + - { offset: 0x138401, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC6sourceAA5PlaceCSgvM.resume.0', symObjAddr: 0xF90, symBinAddr: 0xAE670, symSize: 0x1C0 } + - { offset: 0x1385BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC13combinedRoute7Penguin0G3LegVvg', symObjAddr: 0x1150, symBinAddr: 0xAE830, symSize: 0xF10 } + - { offset: 0x139294, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC9pathNodesSaySiGvg', symObjAddr: 0x2060, symBinAddr: 0xAF740, symSize: 0x760 } + - { offset: 0x139D37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC15stopsDictionarySaySDySSypGGvg', symObjAddr: 0x27C0, symBinAddr: 0xAFEA0, symSize: 0x750 } + - { offset: 0x13A61D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC15routeParametersSDySSypGvg', symObjAddr: 0x2F10, symBinAddr: 0xB05F0, symSize: 0x1080 } + - { offset: 0x13B601, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC14setDestinationyyAA5PlaceCSgF', symObjAddr: 0x3FB0, symBinAddr: 0xB1690, symSize: 0xF0 } + - { offset: 0x13B702, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC10resetRouteyyF', symObjAddr: 0x40A0, symBinAddr: 0xB1780, symSize: 0xA0 } + - { offset: 0x13B781, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC8setRouteyy7Penguin0G0VSgF', symObjAddr: 0x4140, symBinAddr: 0xB1820, symSize: 0x1460 } + - { offset: 0x13CA68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC28removeIsolatedGatesFromRouteyyF', symObjAddr: 0x55A0, symBinAddr: 0xB2C80, symSize: 0x170 } + - { offset: 0x13CC9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC18removeMatchedStopsyyF', symObjAddr: 0x5710, symBinAddr: 0xB2DF0, symSize: 0x13A0 } + - { offset: 0x13DEDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC13fixRouteNodesyyF', symObjAddr: 0x6BA0, symBinAddr: 0xB4280, symSize: 0x1810 } + - { offset: 0x13FA1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC7addStop_2atyAA5PlaceCSg_SiSgtF', symObjAddr: 0x83B0, symBinAddr: 0xB5A90, symSize: 0x5D0 } + - { offset: 0x140040, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC11getNextStopAA5PlaceCSgyF', symObjAddr: 0x8980, symBinAddr: 0xB6060, symSize: 0x2A0 } + - { offset: 0x140281, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC10getSubPath5index7Penguin0gH0CSgSi_tF', symObjAddr: 0x8C20, symBinAddr: 0xB6300, symSize: 0x1A0 } + - { offset: 0x140479, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC15getSubPathIndex03subH0SiSg7Penguin0gH0C_tF', symObjAddr: 0x8DC0, symBinAddr: 0xB64A0, symSize: 0xE0 } + - { offset: 0x140558, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC34getFirstNodeTitleForOutdoorSubpath7subpathSSSg7Penguin7SubPathCSg_tF', symObjAddr: 0x8EA0, symBinAddr: 0xB6580, symSize: 0x230 } + - { offset: 0x1407C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC12logRouteLegsyyF', symObjAddr: 0x90D0, symBinAddr: 0xB67B0, symSize: 0x3C0 } + - { offset: 0x140BB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCfD', symObjAddr: 0x9490, symBinAddr: 0xB6B70, symSize: 0x80 } + - { offset: 0x140BF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerCACycfc', symObjAddr: 0x9660, symBinAddr: 0xB6D40, symSize: 0xD0 } + - { offset: 0x140C3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC19removeIsolatedGates33_64C1391F925319CFCBF0C1DCA796F972LL8subpathsSay7Penguin7SubPathCGAJ_tFTf4nd_n', symObjAddr: 0x9730, symBinAddr: 0xB6E10, symSize: 0x340 } + - { offset: 0x141102, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17NavigationManagerC33getLastNodeTitleForOutdoorSubpath7subpath12currentIndexSSSg7Penguin7SubPathCSg_SiSgtFTf4ndn_n', symObjAddr: 0x9A70, symBinAddr: 0xB7150, symSize: 0x470 } + - { offset: 0x141828, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC9imageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xB76A0, symSize: 0x20 } + - { offset: 0x141A01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellCfETo', symObjAddr: 0x520, symBinAddr: 0xB7BC0, symSize: 0x50 } + - { offset: 0x141A30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellCMa', symObjAddr: 0x570, symBinAddr: 0xB7C10, symSize: 0x20 } + - { offset: 0x141A53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC03setE03url10completionySS_ySbcSgtFySo7UIImageCSgcfU_TA', symObjAddr: 0x6E0, symBinAddr: 0xB7D80, symSize: 0x20 } + - { offset: 0x141A67, size: 0x8, addend: 0x0, symName: '_$sSbIegy_SgWOe', symObjAddr: 0x700, symBinAddr: 0xB7DA0, symSize: 0x14 } + - { offset: 0x141B46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC9imageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xB76A0, symSize: 0x20 } + - { offset: 0x141BA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC9imageViewSo07UIImageH0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xB76C0, symSize: 0x20 } + - { offset: 0x141BE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC12awakeFromNibyyF', symObjAddr: 0x40, symBinAddr: 0xB76E0, symSize: 0xF0 } + - { offset: 0x141C3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC12awakeFromNibyyFTo', symObjAddr: 0x130, symBinAddr: 0xB77D0, symSize: 0x30 } + - { offset: 0x141C6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC03setE03url10completionySS_ySbcSgtFySo7UIImageCSgcfU_', symObjAddr: 0x160, symBinAddr: 0xB7800, symSize: 0x150 } + - { offset: 0x141D31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC15prepareForReuseyyF', symObjAddr: 0x2B0, symBinAddr: 0xB7950, symSize: 0xB0 } + - { offset: 0x141D98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC15prepareForReuseyyFTo', symObjAddr: 0x360, symBinAddr: 0xB7A00, symSize: 0x30 } + - { offset: 0x141DCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x390, symBinAddr: 0xB7A30, symSize: 0x90 } + - { offset: 0x141E28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x420, symBinAddr: 0xB7AC0, symSize: 0xA0 } + - { offset: 0x141E5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x4C0, symBinAddr: 0xB7B60, symSize: 0x30 } + - { offset: 0x141E6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellCfD', symObjAddr: 0x4F0, symBinAddr: 0xB7B90, symSize: 0x30 } + - { offset: 0x141EA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PlaceImageCellC03setE03url10completionySS_ySbcSgtFTf4ndn_n', symObjAddr: 0x590, symBinAddr: 0xB7C30, symSize: 0x100 } + - { offset: 0x1422AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0AA014IntrinsicTableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xB7DC0, symSize: 0x20 } + - { offset: 0x142529, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCfE', symObjAddr: 0xA50, symBinAddr: 0xB8810, symSize: 0x70 } + - { offset: 0x142556, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCfETo', symObjAddr: 0xAF0, symBinAddr: 0xB88B0, symSize: 0x70 } + - { offset: 0x142585, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCMa', symObjAddr: 0xB60, symBinAddr: 0xB8920, symSize: 0x20 } + - { offset: 0x1425FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0xB80, symBinAddr: 0xB8940, symSize: 0x70 } + - { offset: 0x142749, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0xBF0, symBinAddr: 0xB89B0, symSize: 0x1F0 } + - { offset: 0x1428D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyAA8FavoriteCcfU_', symObjAddr: 0xDE0, symBinAddr: 0xB8BA0, symSize: 0x90 } + - { offset: 0x142974, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xE70, symBinAddr: 0xB8C30, symSize: 0xB0 } + - { offset: 0x1429C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_41trailingSwipeActionsConfigurationForRowAtSo07UISwipejK0CSgSo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0xF20, symBinAddr: 0xB8CE0, symSize: 0x290 } + - { offset: 0x142AE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_41trailingSwipeActionsConfigurationForRowAtSo07UISwipejK0CSgSo07UITableE0C_10Foundation9IndexPathVtFySo18UIContextualActionC_So6UIViewCySbctcfU_', symObjAddr: 0x11B0, symBinAddr: 0xB8F70, symSize: 0x220 } + - { offset: 0x142CD8, size: 0x8, addend: 0x0, symName: '_$sSo18UIContextualActionCSo6UIViewCSbIegy_Iegggg_AbDSbIeyBy_IeyByyy_TR', symObjAddr: 0x13D0, symBinAddr: 0xB9190, symSize: 0xB0 } + - { offset: 0x142CF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_41trailingSwipeActionsConfigurationForRowAtSo07UISwipejK0CSgSo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1480, symBinAddr: 0xB9240, symSize: 0xB0 } + - { offset: 0x142D0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0x1530, symBinAddr: 0xB92F0, symSize: 0x110 } + - { offset: 0x142E2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1640, symBinAddr: 0xB9400, symSize: 0xA0 } + - { offset: 0x142E56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x16E0, symBinAddr: 0xB94A0, symSize: 0x20 } + - { offset: 0x142E9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x1700, symBinAddr: 0xB94C0, symSize: 0x30 } + - { offset: 0x142F14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC10setupPanelyyF', symObjAddr: 0x1730, symBinAddr: 0xB94F0, symSize: 0xA0 } + - { offset: 0x142F90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC10setupPanelyyFTo', symObjAddr: 0x17D0, symBinAddr: 0xB9590, symSize: 0x30 } + - { offset: 0x142FCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x1800, symBinAddr: 0xB95C0, symSize: 0x220 } + - { offset: 0x1431D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x1A20, symBinAddr: 0xB97E0, symSize: 0x50 } + - { offset: 0x1431FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x1AF0, symBinAddr: 0xB9830, symSize: 0x20 } + - { offset: 0x14323E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x1B10, symBinAddr: 0xB9850, symSize: 0x10 } + - { offset: 0x143270, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4dnn_n', symObjAddr: 0x1BC0, symBinAddr: 0xB9860, symSize: 0x250 } + - { offset: 0x1433BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC25userLocationStatusChangedyyFTf4d_n', symObjAddr: 0x1E10, symBinAddr: 0xB9AB0, symSize: 0x180 } + - { offset: 0x1434E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16FavoritesManagerC04loadD012withLocationySb_tFySayAA8FavoriteCGcfU_TA', symObjAddr: 0x1FF0, symBinAddr: 0xB9C50, symSize: 0x10 } + - { offset: 0x1434FC, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2030, symBinAddr: 0xB9C80, symSize: 0x20 } + - { offset: 0x143510, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2050, symBinAddr: 0xB9CA0, symSize: 0x10 } + - { offset: 0x143524, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_41trailingSwipeActionsConfigurationForRowAtSo07UISwipejK0CSgSo07UITableE0C_10Foundation9IndexPathVtFySo18UIContextualActionC_So6UIViewCySbctcfU_TA', symObjAddr: 0x2110, symBinAddr: 0xB9D40, symSize: 0x80 } + - { offset: 0x143538, size: 0x8, addend: 0x0, symName: '_$sSo18UIContextualActionCMa', symObjAddr: 0x2190, symBinAddr: 0xB9DC0, symSize: 0x40 } + - { offset: 0x143557, size: 0x8, addend: 0x0, symName: '_$sSbIeyBy_SbIegy_TRTA', symObjAddr: 0x21F0, symBinAddr: 0xB9E20, symSize: 0x20 } + - { offset: 0x143580, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyAA8FavoriteCcfU_TA', symObjAddr: 0x2210, symBinAddr: 0xB9E40, symSize: 0x10 } + - { offset: 0x143594, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11viewDidLoadyyFySayAA8FavoriteCGcfU_TA', symObjAddr: 0x2220, symBinAddr: 0xB9E50, symSize: 0x10 } + - { offset: 0x1437BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0AA014IntrinsicTableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xB7DC0, symSize: 0x20 } + - { offset: 0x14381C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC05tableE0AA014IntrinsicTableE0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xB7DE0, symSize: 0x20 } + - { offset: 0x143972, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11removeImageSo7UIImageCSgvpfiAGyXEfU_', symObjAddr: 0x40, symBinAddr: 0xB7E00, symSize: 0x2B0 } + - { offset: 0x143B6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11viewDidLoadyyF', symObjAddr: 0x2F0, symBinAddr: 0xB80B0, symSize: 0x1A0 } + - { offset: 0x143C97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11viewDidLoadyyFySayAA8FavoriteCGcfU_', symObjAddr: 0x490, symBinAddr: 0xB8250, symSize: 0xF0 } + - { offset: 0x143D42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x580, symBinAddr: 0xB8340, symSize: 0x30 } + - { offset: 0x143D6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC12cancelButtonyySo8UIButtonCFTo', symObjAddr: 0x5B0, symBinAddr: 0xB8370, symSize: 0x40 } + - { offset: 0x143DA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC13registerCellsyyF', symObjAddr: 0x5F0, symBinAddr: 0xB83B0, symSize: 0x240 } + - { offset: 0x143EEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x830, symBinAddr: 0xB85F0, symSize: 0xE0 } + - { offset: 0x143F30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x910, symBinAddr: 0xB86D0, symSize: 0x50 } + - { offset: 0x143F78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x960, symBinAddr: 0xB8720, symSize: 0xC0 } + - { offset: 0x143FAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xA20, symBinAddr: 0xB87E0, symSize: 0x30 } + - { offset: 0x143FBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FavoritesViewControllerCfD', symObjAddr: 0xAC0, symBinAddr: 0xB8880, symSize: 0x30 } + - { offset: 0x144570, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC05imageF033_23A362561214FEFFEA9B414ED0F52193LLSo07UIImageF0Cvg', symObjAddr: 0x0, symBinAddr: 0xB9E90, symSize: 0xD0 } + - { offset: 0x1446F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewCfETo', symObjAddr: 0x750, symBinAddr: 0xBA5E0, symSize: 0x40 } + - { offset: 0x144726, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewCMa', symObjAddr: 0x790, symBinAddr: 0xBA620, symSize: 0x20 } + - { offset: 0x144809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC05imageF033_23A362561214FEFFEA9B414ED0F52193LLSo07UIImageF0Cvg', symObjAddr: 0x0, symBinAddr: 0xB9E90, symSize: 0xD0 } + - { offset: 0x1448AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC04starF033_23A362561214FEFFEA9B414ED0F52193LLSo6UIViewCvg', symObjAddr: 0xD0, symBinAddr: 0xB9F60, symSize: 0xB0 } + - { offset: 0x1449AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC5imageACSo7UIImageCSg_tcfc', symObjAddr: 0x180, symBinAddr: 0xBA010, symSize: 0x4C0 } + - { offset: 0x144B7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x640, symBinAddr: 0xBA4D0, symSize: 0xB0 } + - { offset: 0x144BEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x6F0, symBinAddr: 0xBA580, symSize: 0x30 } + - { offset: 0x144C49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteBadgeViewCfD', symObjAddr: 0x720, symBinAddr: 0xBA5B0, symSize: 0x30 } + - { offset: 0x145011, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC6sharedACvpZ', symObjAddr: 0xA080, symBinAddr: 0x3BCFE8, symSize: 0x0 } + - { offset: 0x1450D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC6shared_WZ', symObjAddr: 0x70, symBinAddr: 0xBA640, symSize: 0x80 } + - { offset: 0x1451F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderCMa', symObjAddr: 0x9E0, symBinAddr: 0xBAFB0, symSize: 0x20 } + - { offset: 0x145209, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC19downloadingProgress_8fileNameySf_SStFTo', symObjAddr: 0xA00, symBinAddr: 0xBAFD0, symSize: 0x10 } + - { offset: 0x145225, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC17downloadSucceededyySSF', symObjAddr: 0xA10, symBinAddr: 0xBAFE0, symSize: 0x270 } + - { offset: 0x145427, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC17downloadSucceededyySSFTo', symObjAddr: 0xC80, symBinAddr: 0xBB250, symSize: 0x50 } + - { offset: 0x145443, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tFyyYbcfU_TA', symObjAddr: 0xDF0, symBinAddr: 0xBB2A0, symSize: 0x10 } + - { offset: 0x145457, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xE00, symBinAddr: 0xBB2B0, symSize: 0x20 } + - { offset: 0x14546B, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xE20, symBinAddr: 0xBB2D0, symSize: 0x10 } + - { offset: 0x14547F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tFyyYbcfU_yyScMYccfU_TA', symObjAddr: 0xE90, symBinAddr: 0xBB300, symSize: 0x10 } + - { offset: 0x145621, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tF', symObjAddr: 0xF0, symBinAddr: 0xBA6C0, symSize: 0x390 } + - { offset: 0x1458B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tFyyYbcfU_', symObjAddr: 0x480, symBinAddr: 0xBAA50, symSize: 0x1D0 } + - { offset: 0x145907, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC16startDownloading33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tFyyYbcfU_yyScMYccfU_', symObjAddr: 0x650, symBinAddr: 0xBAC20, symSize: 0xC0 } + - { offset: 0x1459BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderC22appendOperationToQueue33_4DF7F0E8EA407CE151421767F98EF411LL4dataySayAA0D12DownloadData_pG_tF', symObjAddr: 0x710, symBinAddr: 0xBACE0, symSize: 0x280 } + - { offset: 0x145C4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FileDownloaderCfD', symObjAddr: 0x990, symBinAddr: 0xBAF60, symSize: 0x50 } + - { offset: 0x146026, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE9fontStyleSSvsTo', symObjAddr: 0x0, symBinAddr: 0xBB330, symSize: 0x50 } + - { offset: 0x1460C7, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE9fontStyleSSvs', symObjAddr: 0x50, symBinAddr: 0xBB380, symSize: 0x1A0 } + - { offset: 0x1461C9, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE19textColorIdentifierSivgTo', symObjAddr: 0x1F0, symBinAddr: 0xBB520, symSize: 0x10 } + - { offset: 0x1461E5, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE19textColorIdentifierSivsTo', symObjAddr: 0x200, symBinAddr: 0xBB530, symSize: 0x30 } + - { offset: 0x146201, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x250, symBinAddr: 0xBB560, symSize: 0x10 } + - { offset: 0x14621D, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x260, symBinAddr: 0xBB570, symSize: 0x30 } + - { offset: 0x146239, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE19tintColorIdentifierSivgTo', symObjAddr: 0x2B0, symBinAddr: 0xBB5A0, symSize: 0x10 } + - { offset: 0x146255, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE19tintColorIdentifierSivsTo', symObjAddr: 0x2C0, symBinAddr: 0xBB5B0, symSize: 0x30 } + - { offset: 0x14629B, size: 0x8, addend: 0x0, symName: '_$sSo11UITextFieldC8PenNavUIE26placeholderLocalizationKeySSvsTo', symObjAddr: 0x440, symBinAddr: 0xBB710, symSize: 0x90 } + - { offset: 0x146F13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiCMa', symObjAddr: 0x3640, symBinAddr: 0xBEDF0, symSize: 0x20 } + - { offset: 0x146F74, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV11removeValue6forKeyq_Sgx_tFSS_SSTg5', symObjAddr: 0x3660, symBinAddr: 0xBEE10, symSize: 0xC0 } + - { offset: 0x147060, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV11removeValue6forKeyq_Sgx_tFSS_ypTg5', symObjAddr: 0x3720, symBinAddr: 0xBEED0, symSize: 0xC0 } + - { offset: 0x147138, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV11removeValue6forKeyq_Sgx_tFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x37E0, symBinAddr: 0xBEF90, symSize: 0x80 } + - { offset: 0x147207, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV11removeValue6forKeyq_Sgx_tFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0x3860, symBinAddr: 0xBF010, symSize: 0xB0 } + - { offset: 0x1472DD, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x3910, symBinAddr: 0xBF0C0, symSize: 0x250 } + - { offset: 0x147389, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI18FloatingPanelStateC_SaySo18NSLayoutConstraintCGTg5', symObjAddr: 0x3B60, symBinAddr: 0xBF310, symSize: 0x1B0 } + - { offset: 0x147434, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSS_SSTg5', symObjAddr: 0x3D10, symBinAddr: 0xBF4C0, symSize: 0x1D0 } + - { offset: 0x1474D7, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSS_ypTg5', symObjAddr: 0x3EE0, symBinAddr: 0xBF690, symSize: 0x1F0 } + - { offset: 0x147590, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0x40D0, symBinAddr: 0xBF880, symSize: 0x160 } + - { offset: 0x147645, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x4230, symBinAddr: 0xBF9E0, symSize: 0x1F0 } + - { offset: 0x147773, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI9FontStyleO_So6UIFontCTg5', symObjAddr: 0x4420, symBinAddr: 0xBFBD0, symSize: 0x350 } + - { offset: 0x147896, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSi_8PenNavUI5ColorVTg5', symObjAddr: 0x4770, symBinAddr: 0xBFF20, symSize: 0x180 } + - { offset: 0x147940, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x48F0, symBinAddr: 0xC00A0, symSize: 0x1B0 } + - { offset: 0x147A00, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI3DOMO10StyleSheetV8SelectorO_AK22PresentationAttributesVTg5', symObjAddr: 0x4AA0, symBinAddr: 0xC0250, symSize: 0x250 } + - { offset: 0x147B2F, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_delete2atys10_HashTableV6BucketV_tFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0x4CF0, symBinAddr: 0xC04A0, symSize: 0x1D0 } + - { offset: 0x147C2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC6search10parameters17completionHandlerSo20NSURLSessionDataTaskCSgSDySSypG_ySayAA7POIDataCGSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x5A80, symBinAddr: 0xC1230, symSize: 0x20 } + - { offset: 0x147C3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getFavorites10parameters17completionHandlerySDySSypG_ySayAA8FavoriteCGctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x5E70, symBinAddr: 0xC1580, symSize: 0x40 } + - { offset: 0x147C52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getFavorites10parameters17completionHandlerySDySSypG_ySayAA8FavoriteCGctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_TA', symObjAddr: 0x5EF0, symBinAddr: 0xC15C0, symSize: 0x60 } + - { offset: 0x147C66, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x5F50, symBinAddr: 0xC1620, symSize: 0x20 } + - { offset: 0x147C7A, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x5F70, symBinAddr: 0xC1640, symSize: 0x10 } + - { offset: 0x147C8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC26getGatesSortedByTravelTime4from2to25withNavigationAvoidOption10completionyAA5PlaceC_7Penguin5VenueCSbySayAA0T4GateVGctFyAK10PIResponseOyAA03GettF17DistancesResponseVSgGcfU_TA', symObjAddr: 0x6020, symBinAddr: 0xC1650, symSize: 0x40 } + - { offset: 0x147CA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVACSeAAWl', symObjAddr: 0x6060, symBinAddr: 0xC1690, symSize: 0x30 } + - { offset: 0x147CB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVACSEAAWl', symObjAddr: 0x6090, symBinAddr: 0xC16C0, symSize: 0x30 } + - { offset: 0x147CCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVWOc', symObjAddr: 0x6150, symBinAddr: 0xC1780, symSize: 0x30 } + - { offset: 0x147CDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC28convertDeepLinkToHttpsScheme04deepG010completionySS_ySSSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x6180, symBinAddr: 0xC17B0, symSize: 0x40 } + - { offset: 0x147E4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getAllVenuesInfo14lastUpdateDate17completionHandlerySS_ySayAA9VenueDataCG_SSSgtctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x7810, symBinAddr: 0xC2DD0, symSize: 0x20 } + - { offset: 0x147E5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getVenues17completionHandleryySayAA13VenueCardDataVGc_tFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x7830, symBinAddr: 0xC2DF0, symSize: 0x20 } + - { offset: 0x147E73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseVACSeAAWl', symObjAddr: 0x7850, symBinAddr: 0xC2E10, symSize: 0x30 } + - { offset: 0x147E87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAmenties17completionHandleryySayAA9AmenitiesVGc_tFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x7A20, symBinAddr: 0xC2FE0, symSize: 0x30 } + - { offset: 0x147E9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getDistance2to10completionyAA5PlaceCSg_ySdSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x7A50, symBinAddr: 0xC3010, symSize: 0x40 } + - { offset: 0x147EAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getEdgeAds9paramters17completionHandlerySDySSypG_ySayAA13MessageDetailCGctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x7E10, symBinAddr: 0xC33D0, symSize: 0x30 } + - { offset: 0x147EC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getFloorAds9paramters17completionHandlerySDySSypG_ySayAA13MessageDetailCGctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x7E40, symBinAddr: 0xC3400, symSize: 0x30 } + - { offset: 0x147ED7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getObjects6floors10completionSo20NSURLSessionDataTaskCSgSay7Penguin5FloorCSgG_ySayAA10LiveObjectVGSgctFyAJ10PIResponseOyypSgGcfU1_TA', symObjAddr: 0x8230, symBinAddr: 0xC37C0, symSize: 0x40 } + - { offset: 0x147EEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVACSeAAWl', symObjAddr: 0x8300, symBinAddr: 0xC3890, symSize: 0x30 } + - { offset: 0x147EFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVACSEAAWl', symObjAddr: 0x8330, symBinAddr: 0xC38C0, symSize: 0x30 } + - { offset: 0x147F13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC15getPlaceDetails10parameters17completionHandlerySDySSypG_yAA7POIDataCSgcSgtFy7Penguin10PIResponseOyAA18GetPoIByIdResponseCSgGcfU_TA', symObjAddr: 0x8370, symBinAddr: 0xC3900, symSize: 0x20 } + - { offset: 0x147F27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseCSgSgWOe', symObjAddr: 0x83B0, symBinAddr: 0xC3920, symSize: 0x20 } + - { offset: 0x147F3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getCampusDetails10parameters10completionySDySSypG_yAA9VenueDataCSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x83D0, symBinAddr: 0xC3940, symSize: 0x20 } + - { offset: 0x147F4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getCampusDetails10parameters10completionySDySSypG_yAA9VenueDataCSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_TA', symObjAddr: 0x8400, symBinAddr: 0xC3970, symSize: 0x20 } + - { offset: 0x147F8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x8420, symBinAddr: 0xC3990, symSize: 0x20 } + - { offset: 0x147F9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_TA', symObjAddr: 0x8470, symBinAddr: 0xC39E0, symSize: 0x20 } + - { offset: 0x147FB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAppFonts17completionHandlerSo20NSURLSessionDataTaskCSgySayAA0F4FontCG_10Foundation0K0VSgtc_tFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x8490, symBinAddr: 0xC3A00, symSize: 0x20 } + - { offset: 0x147FC7, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI7AppFontCGSayxGSesSeRzlWl', symObjAddr: 0x84B0, symBinAddr: 0xC3A20, symSize: 0x80 } + - { offset: 0x147FDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getColors17completionHandlerSo20NSURLSessionDataTaskCSgyAA0F8ResponseVSg_10Foundation0J0VSgtc_tFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x8570, symBinAddr: 0xC3AE0, symSize: 0x20 } + - { offset: 0x147FEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVACSeAAWl', symObjAddr: 0x8590, symBinAddr: 0xC3B00, symSize: 0x30 } + - { offset: 0x148003, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC14updateFavorite10parameters17completionHandlerySDySSypG_ySbcSgtFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x85C0, symBinAddr: 0xC3B30, symSize: 0x20 } + - { offset: 0x148017, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getPlaces10parameters17completionHandlerSo20NSURLSessionDataTaskCSgSDySSypG_ySayAA7POIDataCGSgctFy7Penguin10PIResponseOyypSgGcfU_TA', symObjAddr: 0x8610, symBinAddr: 0xC3B80, symSize: 0x20 } + - { offset: 0x14802B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC19getPoiByReferenceId_10completionySS_yAA26GetPoIByRefIDResultElementVSgctFy7Penguin10PIResponseOyAA0klmnO0VSgGcfU_TA', symObjAddr: 0x8660, symBinAddr: 0xC3BA0, symSize: 0x20 } + - { offset: 0x14803F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVACSeAAWl', symObjAddr: 0x8680, symBinAddr: 0xC3BC0, symSize: 0x30 } + - { offset: 0x148053, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVACSEAAWl', symObjAddr: 0x86B0, symBinAddr: 0xC3BF0, symSize: 0x30 } + - { offset: 0x148067, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVSgWOe', symObjAddr: 0x86E0, symBinAddr: 0xC3C20, symSize: 0x20 } + - { offset: 0x14807B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVSgSgWOe', symObjAddr: 0x8700, symBinAddr: 0xC3C40, symSize: 0x20 } + - { offset: 0x14808F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVSgWOe', symObjAddr: 0x8720, symBinAddr: 0xC3C60, symSize: 0x20 } + - { offset: 0x14884C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC26getGatesSortedByTravelTime4from2to25withNavigationAvoidOption10completionyAA5PlaceC_7Penguin5VenueCSbySayAA0T4GateVGctFyAK10PIResponseOyAA03GettF17DistancesResponseVSgGcfU_yyScMYccfU_', symObjAddr: 0x0, symBinAddr: 0xBB7C0, symSize: 0x320 } + - { offset: 0x148B55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getColors17completionHandlerSo20NSURLSessionDataTaskCSgyAA0F8ResponseVSg_10Foundation0J0VSgtc_tFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x320, symBinAddr: 0xBBAE0, symSize: 0x280 } + - { offset: 0x148C17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAppFonts17completionHandlerSo20NSURLSessionDataTaskCSgySayAA0F4FontCG_10Foundation0K0VSgtc_tFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x5A0, symBinAddr: 0xBBD60, symSize: 0x250 } + - { offset: 0x148CE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getDistance2to10completionyAA5PlaceCSg_ySdSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_', symObjAddr: 0x7F0, symBinAddr: 0xBBFB0, symSize: 0x2F0 } + - { offset: 0x148E15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC28convertDeepLinkToHttpsScheme04deepG010completionySS_ySSSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_', symObjAddr: 0xAE0, symBinAddr: 0xBC2A0, symSize: 0x310 } + - { offset: 0x148EB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getVenues17completionHandleryySayAA13VenueCardDataVGc_tFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0xDF0, symBinAddr: 0xBC5B0, symSize: 0x160 } + - { offset: 0x148F34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getAllVenuesInfo14lastUpdateDate17completionHandlerySS_ySayAA9VenueDataCG_SSSgtctFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0xF50, symBinAddr: 0xBC710, symSize: 0x2A0 } + - { offset: 0x148FFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctF', symObjAddr: 0x13B0, symBinAddr: 0xBCB70, symSize: 0x190 } + - { offset: 0x14915D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x1540, symBinAddr: 0xBCD00, symSize: 0x350 } + - { offset: 0x149225, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getVenueInfo10parameters17completionHandlerySDySSypG_yAA0F4DataCSgctFy7Penguin10PIResponseOyypSgGcfU_yyScMYccfU_', symObjAddr: 0x1890, symBinAddr: 0xBD050, symSize: 0xB0 } + - { offset: 0x149391, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getCampusDetails10parameters10completionySDySSypG_yAA9VenueDataCSgctF', symObjAddr: 0x1940, symBinAddr: 0xBD100, symSize: 0x190 } + - { offset: 0x1494F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getCampusDetails10parameters10completionySDySSypG_yAA9VenueDataCSgctFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x1AD0, symBinAddr: 0xBD290, symSize: 0x350 } + - { offset: 0x149601, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC24submitNavigationFeedbackyyFy7Penguin10PIResponseOyypSgGcfU_', symObjAddr: 0x1E20, symBinAddr: 0xBD5E0, symSize: 0x40 } + - { offset: 0x14964B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC15getPlaceDetails10parameters17completionHandlerySDySSypG_yAA7POIDataCSgcSgtF', symObjAddr: 0x2070, symBinAddr: 0xBD830, symSize: 0x1F0 } + - { offset: 0x1497AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC15getPlaceDetails10parameters17completionHandlerySDySSypG_yAA7POIDataCSgcSgtFy7Penguin10PIResponseOyAA18GetPoIByIdResponseCSgGcfU_', symObjAddr: 0x2260, symBinAddr: 0xBDA20, symSize: 0x2C0 } + - { offset: 0x14994E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC19getPoiByReferenceId_10completionySS_yAA26GetPoIByRefIDResultElementVSgctF', symObjAddr: 0x2850, symBinAddr: 0xBE010, symSize: 0x270 } + - { offset: 0x149B85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC19getPoiByReferenceId_10completionySS_yAA26GetPoIByRefIDResultElementVSgctFy7Penguin10PIResponseOyAA0klmnO0VSgGcfU_', symObjAddr: 0x2AC0, symBinAddr: 0xBE280, symSize: 0x160 } + - { offset: 0x149C83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC18setNavigationEvent010navigationG010httpMethodySDySSypGSg_7Penguin04HttpJ0OtF', symObjAddr: 0x2C20, symBinAddr: 0xBE3E0, symSize: 0x100 } + - { offset: 0x149DED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC7logData6method4dataySS_SDySSypGSgtF', symObjAddr: 0x2D20, symBinAddr: 0xBE4E0, symSize: 0x170 } + - { offset: 0x149F4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getObjects6floors10completionSo20NSURLSessionDataTaskCSgSay7Penguin5FloorCSgG_ySayAA10LiveObjectVGSgctF', symObjAddr: 0x2EA0, symBinAddr: 0xBE650, symSize: 0x420 } + - { offset: 0x14A4F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getObjects6floors10completionSo20NSURLSessionDataTaskCSgSay7Penguin5FloorCSgG_ySayAA10LiveObjectVGSgctFyAJ10PIResponseOyypSgGcfU1_yyScMYccfU_', symObjAddr: 0x3520, symBinAddr: 0xBECD0, symSize: 0xE0 } + - { offset: 0x14A59B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiCfD', symObjAddr: 0x3600, symBinAddr: 0xBEDB0, symSize: 0x40 } + - { offset: 0x14A68F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC26getGatesSortedByTravelTime4from2to25withNavigationAvoidOption10completionyAA5PlaceC_7Penguin5VenueCSbySayAA0T4GateVGctFTf4nnnnd_n', symObjAddr: 0x4EC0, symBinAddr: 0xC0670, symSize: 0x7D0 } + - { offset: 0x14AC58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC28convertDeepLinkToHttpsScheme04deepG010completionySS_ySSSgctFTf4nnd_n', symObjAddr: 0x5690, symBinAddr: 0xC0E40, symSize: 0x240 } + - { offset: 0x14AE3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC6search10parameters17completionHandlerSo20NSURLSessionDataTaskCSgSDySSypG_ySayAA7POIDataCGSgctFTf4nnd_n', symObjAddr: 0x58D0, symBinAddr: 0xC1080, symSize: 0x190 } + - { offset: 0x14AF77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getPlaces10parameters17completionHandlerSo20NSURLSessionDataTaskCSgSDySSypG_ySayAA7POIDataCGSgctFTf4nnd_n', symObjAddr: 0x5B40, symBinAddr: 0xC1250, symSize: 0x190 } + - { offset: 0x14B0DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC12getFavorites10parameters17completionHandlerySDySSypG_ySayAA8FavoriteCGctFTf4nnd_n', symObjAddr: 0x5CD0, symBinAddr: 0xC13E0, symSize: 0x1A0 } + - { offset: 0x14B1E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getColors17completionHandlerSo20NSURLSessionDataTaskCSgyAA0F8ResponseVSg_10Foundation0J0VSgtc_tFTf4nd_n', symObjAddr: 0x64C0, symBinAddr: 0xC1A80, symSize: 0x1A0 } + - { offset: 0x14B305, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAppFonts17completionHandlerSo20NSURLSessionDataTaskCSgySayAA0F4FontCG_10Foundation0K0VSgtc_tFTf4nd_n', symObjAddr: 0x6660, symBinAddr: 0xC1C20, symSize: 0x1A0 } + - { offset: 0x14B477, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getDistance2to10completionyAA5PlaceCSg_ySdSgctFTf4nnd_n', symObjAddr: 0x6800, symBinAddr: 0xC1DC0, symSize: 0xB50 } + - { offset: 0x14BD32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC9getVenues17completionHandleryySayAA13VenueCardDataVGc_tFTf4nd_n', symObjAddr: 0x7350, symBinAddr: 0xC2910, symSize: 0x260 } + - { offset: 0x14BF25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC16getAllVenuesInfo14lastUpdateDate17completionHandlerySS_ySayAA9VenueDataCG_SSSgtctFTf4nnd_n', symObjAddr: 0x75B0, symBinAddr: 0xC2B70, symSize: 0x260 } + - { offset: 0x14C11F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getAmenties17completionHandleryySayAA9AmenitiesVGc_tFTf4nd_n', symObjAddr: 0x7880, symBinAddr: 0xC2E40, symSize: 0x1A0 } + - { offset: 0x14C222, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC11getFloorAds9paramters17completionHandlerySDySSypG_ySayAA13MessageDetailCGctFTf4nnd_n', symObjAddr: 0x7AB0, symBinAddr: 0xC3070, symSize: 0x1B0 } + - { offset: 0x14C354, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC10getEdgeAds9paramters17completionHandlerySDySSypG_ySayAA13MessageDetailCGctFTf4nnd_n', symObjAddr: 0x7C60, symBinAddr: 0xC3220, symSize: 0x1B0 } + - { offset: 0x14C4C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0A3ApiC24submitNavigationFeedbackyyFTf4d_n', symObjAddr: 0x7E70, symBinAddr: 0xC3430, symSize: 0x390 } + - { offset: 0x14CAB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVwxx', symObjAddr: 0x30, symBinAddr: 0xC3ED0, symSize: 0x30 } + - { offset: 0x14CAC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVwcp', symObjAddr: 0x60, symBinAddr: 0xC3F00, symSize: 0x70 } + - { offset: 0x14CADA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVwca', symObjAddr: 0xD0, symBinAddr: 0xC3F70, symSize: 0xB0 } + - { offset: 0x14CAEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVwta', symObjAddr: 0x1A0, symBinAddr: 0xC4020, symSize: 0xA0 } + - { offset: 0x14CB02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11AlertActionVMa', symObjAddr: 0x2C0, symBinAddr: 0xC40C0, symSize: 0xA } + - { offset: 0x14CE9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xC40D0, symSize: 0x20 } + - { offset: 0x14D71C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCfE', symObjAddr: 0x1480, symBinAddr: 0xC5550, symSize: 0xC0 } + - { offset: 0x14D749, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCfETo', symObjAddr: 0x1570, symBinAddr: 0xC5640, symSize: 0xC0 } + - { offset: 0x14D778, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCMa', symObjAddr: 0x1630, symBinAddr: 0xC5700, symSize: 0x20 } + - { offset: 0x14D79B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF15DidBeginEditingyySo06UITextF0CFTo', symObjAddr: 0x1650, symBinAddr: 0xC5720, symSize: 0x50 } + - { offset: 0x14D7DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF13DidEndEditingyySo06UITextF0CFTo', symObjAddr: 0x16A0, symBinAddr: 0xC5770, symSize: 0x50 } + - { offset: 0x14D80E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF9DidChangeyySo06UITextF0CF', symObjAddr: 0x16F0, symBinAddr: 0xC57C0, symSize: 0x260 } + - { offset: 0x14D8F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC06adjuste4TextF10Appearance33_23C295E8B772560134401F0065970F3ALL3forySS_tF', symObjAddr: 0x1950, symBinAddr: 0xC5A20, symSize: 0x3D0 } + - { offset: 0x14DA55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF9DidChangeyySo06UITextF0CFTo', symObjAddr: 0x1D20, symBinAddr: 0xC5DF0, symSize: 0x50 } + - { offset: 0x14DBE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutCMa', symObjAddr: 0x22B0, symBinAddr: 0xC6380, symSize: 0x20 } + - { offset: 0x14DC14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x22D0, symBinAddr: 0xC63A0, symSize: 0xA0 } + - { offset: 0x14DC92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x2370, symBinAddr: 0xC6440, symSize: 0x30 } + - { offset: 0x14DD21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10setupPanelyyF', symObjAddr: 0x23A0, symBinAddr: 0xC6470, symSize: 0x240 } + - { offset: 0x14DEF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10setupPanelyyFTo', symObjAddr: 0x25E0, symBinAddr: 0xC66B0, symSize: 0x30 } + - { offset: 0x14DF3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC23floatingPanelWillRemoveyyAA08FloatingiG0CFTo', symObjAddr: 0x2610, symBinAddr: 0xC66E0, symSize: 0xC0 } + - { offset: 0x14DF9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x2750, symBinAddr: 0xC67A0, symSize: 0x10 } + - { offset: 0x14DFCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF15DidBeginEditingyySo06UITextF0CFTf4dn_n', symObjAddr: 0x2760, symBinAddr: 0xC67B0, symSize: 0x190 } + - { offset: 0x14E182, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC04textF13DidEndEditingyySo06UITextF0CFTf4dn_n', symObjAddr: 0x28F0, symBinAddr: 0xC6940, symSize: 0xF0 } + - { offset: 0x14E2EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0x29E0, symBinAddr: 0xC6A30, symSize: 0x110 } + - { offset: 0x14E359, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2B20, symBinAddr: 0xC6B60, symSize: 0x20 } + - { offset: 0x14E36D, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2B40, symBinAddr: 0xC6B80, symSize: 0x10 } + - { offset: 0x14E661, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xC40D0, symSize: 0x20 } + - { offset: 0x14E6BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC06scrollF0So08UIScrollF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xC40F0, symSize: 0x30 } + - { offset: 0x14E70E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0xC4120, symSize: 0x20 } + - { offset: 0x14E766, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0xC4140, symSize: 0x30 } + - { offset: 0x14E7B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC23destinationReachedLabelSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0xC4170, symSize: 0x20 } + - { offset: 0x14E808, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC23destinationReachedLabelSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0xC4190, symSize: 0x30 } + - { offset: 0x14E857, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC21feedbackTextContainerSo6UIViewCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0xC41C0, symSize: 0x20 } + - { offset: 0x14E8AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC21feedbackTextContainerSo6UIViewCSgvsTo', symObjAddr: 0x110, symBinAddr: 0xC41E0, symSize: 0x30 } + - { offset: 0x14E8FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC012feedbackTextF0AA018PlaceholderEnablediF0CSgvgTo', symObjAddr: 0x140, symBinAddr: 0xC4210, symSize: 0x20 } + - { offset: 0x14E956, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC012feedbackTextF0AA018PlaceholderEnablediF0CSgvsTo', symObjAddr: 0x160, symBinAddr: 0xC4230, symSize: 0x30 } + - { offset: 0x14E9A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC27feedbackCharacterCountLabelSo7UILabelCSgvgTo', symObjAddr: 0x190, symBinAddr: 0xC4260, symSize: 0x20 } + - { offset: 0x14E9F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC27feedbackCharacterCountLabelSo7UILabelCSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0xC4280, symSize: 0x30 } + - { offset: 0x14EA47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11ratingStackSo07UIStackF0CSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0xC42B0, symSize: 0x20 } + - { offset: 0x14EA9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11ratingStackSo07UIStackF0CSgvsTo', symObjAddr: 0x200, symBinAddr: 0xC42D0, symSize: 0x30 } + - { offset: 0x14EAEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC18feedbackTextHeightSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x230, symBinAddr: 0xC4300, symSize: 0x20 } + - { offset: 0x14EB48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC18feedbackTextHeightSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x250, symBinAddr: 0xC4320, symSize: 0x20 } + - { offset: 0x14EB87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15expectedPadding12CoreGraphics7CGFloatVvg', symObjAddr: 0x270, symBinAddr: 0xC4340, symSize: 0x40 } + - { offset: 0x14EBA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15expectedPadding12CoreGraphics7CGFloatVvgAGyXEfU_', symObjAddr: 0x2B0, symBinAddr: 0xC4380, symSize: 0x2C0 } + - { offset: 0x14EE2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11viewDidLoadyyF', symObjAddr: 0x570, symBinAddr: 0xC4640, symSize: 0x3C0 } + - { offset: 0x14EFFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x930, symBinAddr: 0xC4A00, symSize: 0x30 } + - { offset: 0x14F171, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15didSelectRatingyySo8UIButtonCF', symObjAddr: 0x960, symBinAddr: 0xC4A30, symSize: 0x420 } + - { offset: 0x14F584, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15didSelectRatingyySo8UIButtonCFTo', symObjAddr: 0xD80, symBinAddr: 0xC4E50, symSize: 0x50 } + - { offset: 0x14F5B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10didTapDoneyyF', symObjAddr: 0xDD0, symBinAddr: 0xC4EA0, symSize: 0x180 } + - { offset: 0x14F64A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC10didTapDoneyyFTo', symObjAddr: 0xF50, symBinAddr: 0xC5020, symSize: 0x30 } + - { offset: 0x14F672, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC12didTapCancelyyFTo', symObjAddr: 0xF80, symBinAddr: 0xC5050, symSize: 0x40 } + - { offset: 0x14F733, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC15submitAnalyticsyyF', symObjAddr: 0xFC0, symBinAddr: 0xC5090, symSize: 0x1A0 } + - { offset: 0x14F895, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x1160, symBinAddr: 0xC5230, symSize: 0x160 } + - { offset: 0x14F8D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x12C0, symBinAddr: 0xC5390, symSize: 0x50 } + - { offset: 0x14F908, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1310, symBinAddr: 0xC53E0, symSize: 0x140 } + - { offset: 0x14F93B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1450, symBinAddr: 0xC5520, symSize: 0x30 } + - { offset: 0x14F94F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerCfD', symObjAddr: 0x1540, symBinAddr: 0xC5610, symSize: 0x30 } + - { offset: 0x14F980, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC8positionAA08FloatingH8PositionOvgTo', symObjAddr: 0x1D70, symBinAddr: 0xC5E40, symSize: 0x10 } + - { offset: 0x14F9B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC12initialStateAA08FloatinghK0CvgTo', symObjAddr: 0x1D80, symBinAddr: 0xC5E50, symSize: 0x10 } + - { offset: 0x14F9DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC7anchorsSDyAA08FloatingH5StateCAA0khI9Anchoring_pGvgTo', symObjAddr: 0x1D90, symBinAddr: 0xC5E60, symSize: 0x70 } + - { offset: 0x14FABD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC7anchorsSDyAA08FloatingH5StateCAA0khI9Anchoring_pGvg', symObjAddr: 0x1E00, symBinAddr: 0xC5ED0, symSize: 0x470 } + - { offset: 0x14FDC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA08FloatingH5StateC_tFTo', symObjAddr: 0x2270, symBinAddr: 0xC6340, symSize: 0x10 } + - { offset: 0x14FDF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI32NavigationFeedbackViewControllerC11PanelLayoutCfD', symObjAddr: 0x2280, symBinAddr: 0xC6350, symSize: 0x30 } + - { offset: 0x1502A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvpZ', symObjAddr: 0x8200, symBinAddr: 0x39D870, symSize: 0x0 } + - { offset: 0x1506AA, size: 0x8, addend: 0x0, symName: '_$sIeg_IeyB_TR', symObjAddr: 0x0, symBinAddr: 0xC6B90, symSize: 0x30 } + - { offset: 0x1506C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6shared_WZ', symObjAddr: 0x30, symBinAddr: 0xC6BC0, symSize: 0x30 } + - { offset: 0x150703, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvpZACmTK', symObjAddr: 0x190, symBinAddr: 0xC6D20, symSize: 0x60 } + - { offset: 0x150728, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvpZACmTk', symObjAddr: 0x1F0, symBinAddr: 0xC6D80, symSize: 0x70 } + - { offset: 0x150C7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC06handleaB5Error5error05feralF0yAA0aB7UIErrorO_SbtF', symObjAddr: 0x3200, symBinAddr: 0xC9CC0, symSize: 0x200 } + - { offset: 0x150CFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC06handleaB5Error5error05feralF0yAA0aB7UIErrorO_SbtFyyScMYccfU_', symObjAddr: 0x5B30, symBinAddr: 0xCC590, symSize: 0x1D0 } + - { offset: 0x150DBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCfETo', symObjAddr: 0x3710, symBinAddr: 0xCA1C0, symSize: 0xC0 } + - { offset: 0x150E16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14continueActionyyypFTo', symObjAddr: 0x37D0, symBinAddr: 0xCA280, symSize: 0xD0 } + - { offset: 0x150EDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17loadCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x38A0, symBinAddr: 0xCA350, symSize: 0x230 } + - { offset: 0x150F4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17loadCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyFySayAA0F0CGSgcfU_', symObjAddr: 0x3CB0, symBinAddr: 0xCA760, symSize: 0x1C0 } + - { offset: 0x151025, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC21validateCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x3AD0, symBinAddr: 0xCA580, symSize: 0x1E0 } + - { offset: 0x151120, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC20startLocationManager33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x3E70, symBinAddr: 0xCA920, symSize: 0x3B0 } + - { offset: 0x151279, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22startLoadingPenguinSDKyyF', symObjAddr: 0x4220, symBinAddr: 0xCACD0, symSize: 0x1A0 } + - { offset: 0x151322, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22startLoadingPenguinSDKyyFySSSg_0G09ErrorCodeOSgtcfU_', symObjAddr: 0x43C0, symBinAddr: 0xCAE70, symSize: 0x100 } + - { offset: 0x1513CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x4510, symBinAddr: 0xCAF70, symSize: 0x350 } + - { offset: 0x151474, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyFySbcfU_', symObjAddr: 0x4B90, symBinAddr: 0xCB5F0, symSize: 0x130 } + - { offset: 0x1514CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyFySbcfU_ySSSg_0F09ErrorCodeOSgtcfU_', symObjAddr: 0x4CC0, symBinAddr: 0xCB720, symSize: 0xD0 } + - { offset: 0x151525, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC37locationManagerDidChangeAuthorizationyySo010CLLocationF0CF', symObjAddr: 0x4860, symBinAddr: 0xCB2C0, symSize: 0x110 } + - { offset: 0x15168E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC37locationManagerDidChangeAuthorizationyySo010CLLocationF0CFTo', symObjAddr: 0x4970, symBinAddr: 0xCB3D0, symSize: 0x50 } + - { offset: 0x1516AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15locationManager_22didChangeAuthorizationySo010CLLocationF0C_So21CLAuthorizationStatusVtF', symObjAddr: 0x49C0, symBinAddr: 0xCB420, symSize: 0x10 } + - { offset: 0x1516CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15locationManager_22didChangeAuthorizationySo010CLLocationF0C_So21CLAuthorizationStatusVtFTo', symObjAddr: 0x49D0, symBinAddr: 0xCB430, symSize: 0x60 } + - { offset: 0x151700, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14validateInputsyyKF', symObjAddr: 0x4A30, symBinAddr: 0xCB490, symSize: 0x160 } + - { offset: 0x1517B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tF', symObjAddr: 0x4D90, symBinAddr: 0xCB7F0, symSize: 0x10 } + - { offset: 0x1517CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tFyyScMYccfU_', symObjAddr: 0x4DA0, symBinAddr: 0xCB800, symSize: 0x3E0 } + - { offset: 0x151AA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC26requestGeofencePermissionsyyF', symObjAddr: 0x5180, symBinAddr: 0xCBBE0, symSize: 0x220 } + - { offset: 0x151C17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tFTo', symObjAddr: 0x53A0, symBinAddr: 0xCBE00, symSize: 0x30 } + - { offset: 0x151C4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tF', symObjAddr: 0x53D0, symBinAddr: 0xCBE30, symSize: 0x1E0 } + - { offset: 0x151CB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tFyyScMYccfU_', symObjAddr: 0x55B0, symBinAddr: 0xCC010, symSize: 0x150 } + - { offset: 0x151D2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tFTo', symObjAddr: 0x5700, symBinAddr: 0xCC160, symSize: 0x30 } + - { offset: 0x151D48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tF', symObjAddr: 0x5730, symBinAddr: 0xCC190, symSize: 0x230 } + - { offset: 0x151DCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tFyyScMYccfU_', symObjAddr: 0x5960, symBinAddr: 0xCC3C0, symSize: 0x1A0 } + - { offset: 0x151E5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tFTo', symObjAddr: 0x5B00, symBinAddr: 0xCC560, symSize: 0x30 } + - { offset: 0x151EB0, size: 0x8, addend: 0x0, symName: '_$sSDsSQR_rlE2eeoiySbSDyxq_G_ABtFZSS_SSTt1g5', symObjAddr: 0x5D00, symBinAddr: 0xCC760, symSize: 0x210 } + - { offset: 0x151F53, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI5PlaceC_Ttg5', symObjAddr: 0x5F10, symBinAddr: 0xCC970, symSize: 0x50 } + - { offset: 0x151F80, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo18NSLayoutConstraintC_Ttg5', symObjAddr: 0x5F60, symBinAddr: 0xCC9C0, symSize: 0x60 } + - { offset: 0x151FAD, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI18FloatingPanelStateC_Ttg5', symObjAddr: 0x5FC0, symBinAddr: 0xCCA20, symSize: 0x50 } + - { offset: 0x151FDA, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI9VenueDataC_Ttg5', symObjAddr: 0x6010, symBinAddr: 0xCCA70, symSize: 0x50 } + - { offset: 0x152007, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin5VenueC_Ttg5', symObjAddr: 0x6060, symBinAddr: 0xCCAC0, symSize: 0x50 } + - { offset: 0x152034, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo28NSPersistentStoreDescriptionC_Ttg5', symObjAddr: 0x60B0, symBinAddr: 0xCCB10, symSize: 0x60 } + - { offset: 0x152061, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin8ScheduleC_Ttg5', symObjAddr: 0x6110, symBinAddr: 0xCCB70, symSize: 0x50 } + - { offset: 0x15208E, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin13GateNodeModelC_Ttg5', symObjAddr: 0x6160, symBinAddr: 0xCCBC0, symSize: 0x50 } + - { offset: 0x1520BB, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin5FloorC_Ttg5', symObjAddr: 0x61B0, symBinAddr: 0xCCC10, symSize: 0x50 } + - { offset: 0x1520E8, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo6UIViewC_Ttg5', symObjAddr: 0x6200, symBinAddr: 0xCCC60, symSize: 0x60 } + - { offset: 0x152115, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI7POIDataC_Ttg5', symObjAddr: 0x6260, symBinAddr: 0xCCCC0, symSize: 0x50 } + - { offset: 0x152142, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI9LayerTreeO4PathC_Ttg5', symObjAddr: 0x62B0, symBinAddr: 0xCCD10, symSize: 0x50 } + - { offset: 0x15216F, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI8FavoriteC_Ttg5', symObjAddr: 0x6300, symBinAddr: 0xCCD60, symSize: 0x50 } + - { offset: 0x15219C, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO15GraphicsElementC_Ttg5', symObjAddr: 0x6350, symBinAddr: 0xCCDB0, symSize: 0x50 } + - { offset: 0x1521C9, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo8UISwitchC_Ttg5', symObjAddr: 0x63A0, symBinAddr: 0xCCE00, symSize: 0x60 } + - { offset: 0x1521F6, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin4EdgeC_Ttg5', symObjAddr: 0x6400, symBinAddr: 0xCCE60, symSize: 0x50 } + - { offset: 0x152223, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin5GnodeC_Ttg5', symObjAddr: 0x6450, symBinAddr: 0xCCEB0, symSize: 0x50 } + - { offset: 0x152250, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin11SubpathEdgeC_Ttg5', symObjAddr: 0x64A0, symBinAddr: 0xCCF00, symSize: 0x50 } + - { offset: 0x15227D, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO14LinearGradientC_Ttg5', symObjAddr: 0x64F0, symBinAddr: 0xCCF50, symSize: 0x50 } + - { offset: 0x1522AA, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO14RadialGradientC_Ttg5', symObjAddr: 0x6540, symBinAddr: 0xCCFA0, symSize: 0x50 } + - { offset: 0x1522D7, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO6FilterC_Ttg5', symObjAddr: 0x6590, symBinAddr: 0xCCFF0, symSize: 0x50 } + - { offset: 0x152304, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3XMLO7ElementC_Ttg5', symObjAddr: 0x65E0, symBinAddr: 0xCD040, symSize: 0x50 } + - { offset: 0x152331, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo10CGColorRefa_Ttg5', symObjAddr: 0x6630, symBinAddr: 0xCD090, symSize: 0x50 } + - { offset: 0x15235E, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI3DOMO4PathC_Ttg5', symObjAddr: 0x6680, symBinAddr: 0xCD0E0, symSize: 0x50 } + - { offset: 0x15238B, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo9CGPathRefa_Ttg5', symObjAddr: 0x66D0, symBinAddr: 0xCD130, symSize: 0x50 } + - { offset: 0x1523B8, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo11CAAnimationC_Ttg5', symObjAddr: 0x6720, symBinAddr: 0xCD180, symSize: 0x60 } + - { offset: 0x1523E5, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo8NSNumberC_Ttg5', symObjAddr: 0x6780, symBinAddr: 0xCD1E0, symSize: 0x60 } + - { offset: 0x152412, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF7Penguin7SubPathC_Ttg5', symObjAddr: 0x67E0, symBinAddr: 0xCD240, symSize: 0x50 } + - { offset: 0x15243F, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo22NSCollectionLayoutItemC_Ttg5', symObjAddr: 0x6830, symBinAddr: 0xCD290, symSize: 0x60 } + - { offset: 0x15246C, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo11NSOperationC_Ttg5', symObjAddr: 0x6890, symBinAddr: 0xCD2F0, symSize: 0x60 } + - { offset: 0x152499, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo20NSURLSessionDataTaskC_Ttg5', symObjAddr: 0x68F0, symBinAddr: 0xCD350, symSize: 0x60 } + - { offset: 0x1524C6, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo18UIContextualActionC_Ttg5', symObjAddr: 0x6950, symBinAddr: 0xCD3B0, symSize: 0x60 } + - { offset: 0x1524F3, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI13MessageDetailC_Ttg5', symObjAddr: 0x69B0, symBinAddr: 0xCD410, symSize: 0x50 } + - { offset: 0x152520, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI6CampusC_Ttg5', symObjAddr: 0x6A00, symBinAddr: 0xCD460, symSize: 0x50 } + - { offset: 0x15254D, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlFSo7CALayerC_Ttg5', symObjAddr: 0x6A50, symBinAddr: 0xCD4B0, symSize: 0x60 } + - { offset: 0x15257A, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI10AlertSheetC_Ttg5', symObjAddr: 0x6AB0, symBinAddr: 0xCD510, symSize: 0x50 } + - { offset: 0x1525A7, size: 0x8, addend: 0x0, symName: '_$ss29getContiguousArrayStorageType3fors01_bcD0CyxGmxm_tlF8PenNavUI17SurfaceAppearanceC6ShadowC_Ttg5', symObjAddr: 0x6B00, symBinAddr: 0xCD560, symSize: 0x50 } + - { offset: 0x152642, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtFyAA26GetPoIByRefIDResultElementVSgcfU_TA', symObjAddr: 0x7140, symBinAddr: 0xCDBA0, symSize: 0x20 } + - { offset: 0x152656, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15locationManager_22didChangeAuthorizationySo010CLLocationF0C_So21CLAuthorizationStatusVtFTf4dnn_n', symObjAddr: 0x7230, symBinAddr: 0xCDC10, symSize: 0xC0 } + - { offset: 0x1528DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tFTf4dn_n', symObjAddr: 0x72F0, symBinAddr: 0xCDCD0, symSize: 0x610 } + - { offset: 0x152CC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC19onInitilzationError5errory7Penguin0G4CodeO_tFyyScMYccfU_TA', symObjAddr: 0x7930, symBinAddr: 0xCE310, symSize: 0x20 } + - { offset: 0x152CD9, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x7950, symBinAddr: 0xCE330, symSize: 0x20 } + - { offset: 0x152CED, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x7970, symBinAddr: 0xCE350, symSize: 0x10 } + - { offset: 0x152D01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC30onInitializationProgressChange6statusy7Penguin12SDKOperationO_tFyyScMYccfU_TA', symObjAddr: 0x7A50, symBinAddr: 0xCE3B0, symSize: 0x20 } + - { offset: 0x152D15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCMa', symObjAddr: 0x7A90, symBinAddr: 0xCE3F0, symSize: 0x20 } + - { offset: 0x152D29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17cancelLoadingDatayyFyycfU_TA', symObjAddr: 0x7AE0, symBinAddr: 0xCE410, symSize: 0x10 } + - { offset: 0x152D3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7onReady7warningy7Penguin11WarningCodeO_tFyyScMYccfU_TA', symObjAddr: 0x7B20, symBinAddr: 0xCE420, symSize: 0x10 } + - { offset: 0x152D51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22startLoadingPenguinSDKyyFySSSg_0G09ErrorCodeOSgtcfU_TA', symObjAddr: 0x7B30, symBinAddr: 0xCE430, symSize: 0x20 } + - { offset: 0x152D65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22startLoadingPenguinSDKyyFySSSg_0G09ErrorCodeOSgtcfU_yycfU_TA', symObjAddr: 0x7BD0, symBinAddr: 0xCE4D0, symSize: 0x20 } + - { offset: 0x152D79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyFySbcfU_TA', symObjAddr: 0x7BF0, symBinAddr: 0xCE4F0, symSize: 0x10 } + - { offset: 0x152D8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC15startPenguinSDK33_4D2F781F14079E7D09B9917D3C968006LLyyFySbcfU_ySSSg_0F09ErrorCodeOSgtcfU_TA', symObjAddr: 0x7C30, symBinAddr: 0xCE530, symSize: 0x20 } + - { offset: 0x152DA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ValidationErrorOACs0E0AAWl', symObjAddr: 0x7C50, symBinAddr: 0xCE550, symSize: 0x30 } + - { offset: 0x152DB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC06handleaB5Error5error05feralF0yAA0aB7UIErrorO_SbtFyyScMYccfU_TA', symObjAddr: 0x7CA0, symBinAddr: 0xCE5A0, symSize: 0x20 } + - { offset: 0x152DC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_TA', symObjAddr: 0x7CE0, symBinAddr: 0xCE5E0, symSize: 0x20 } + - { offset: 0x152DDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_yAMcfU_TA', symObjAddr: 0x7D10, symBinAddr: 0xCE610, symSize: 0x30 } + - { offset: 0x152DF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_yAMcfU_yyScMYccfU_TA', symObjAddr: 0x7D90, symBinAddr: 0xCE690, symSize: 0x30 } + - { offset: 0x152E39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctFySSSg_7Penguin9ErrorCodeOSgtcfU_ySayAoJCGSgcfU_TA', symObjAddr: 0x7DC0, symBinAddr: 0xCE6C0, symSize: 0x20 } + - { offset: 0x152E4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtFyAA26GetPoIByRefIDResultElementVSgcfU_yyScMYccfU_TA', symObjAddr: 0x7E20, symBinAddr: 0xCE720, symSize: 0x30 } + - { offset: 0x152E61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVSgWOy', symObjAddr: 0x7E50, symBinAddr: 0xCE750, symSize: 0x20 } + - { offset: 0x152E75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17loadCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyFySayAA0F0CGSgcfU_TA', symObjAddr: 0x7ED0, symBinAddr: 0xCE770, symSize: 0x10 } + - { offset: 0x152E89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17loadCampusListing33_4D2F781F14079E7D09B9917D3C968006LLyyFySayAA0F0CGSgcfU_yyScMYccfU_TA', symObjAddr: 0x7F60, symBinAddr: 0xCE800, symSize: 0x20 } + - { offset: 0x152E9D, size: 0x8, addend: 0x0, symName: '_$sSo8CLRegionCSo8NSObjectCSH10ObjectiveCWl', symObjAddr: 0x8010, symBinAddr: 0xCE820, symSize: 0x50 } + - { offset: 0x152ED7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCACycfC', symObjAddr: 0x60, symBinAddr: 0xC6BF0, symSize: 0x20 } + - { offset: 0x152F07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvgZ', symObjAddr: 0x80, symBinAddr: 0xC6C10, symSize: 0x50 } + - { offset: 0x152F3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvsZ', symObjAddr: 0xD0, symBinAddr: 0xC6C60, symSize: 0x60 } + - { offset: 0x152F77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC6sharedACvMZ', symObjAddr: 0x130, symBinAddr: 0xC6CC0, symSize: 0x60 } + - { offset: 0x152FA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC22initializationDelegateAA0ab14InitializationF0_pSgvM', symObjAddr: 0x2E0, symBinAddr: 0xC6E30, symSize: 0x40 } + - { offset: 0x152FC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14eventsDelegateAA08PIEventsF0_pSgvM', symObjAddr: 0x400, symBinAddr: 0xC6F50, symSize: 0x40 } + - { offset: 0x152FEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16locationDelegateAA010PILocationF0_pSgvM', symObjAddr: 0x4C0, symBinAddr: 0xC6FD0, symSize: 0x40 } + - { offset: 0x15323A, size: 0x8, addend: 0x0, symName: '_$sSlsE6prefixy11SubSequenceQzSiFSS_Tg5Tf4ng_n', symObjAddr: 0x6B50, symBinAddr: 0xCD5B0, symSize: 0x90 } + - { offset: 0x1534AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC5buildyyF', symObjAddr: 0x500, symBinAddr: 0xC7010, symSize: 0x110 } + - { offset: 0x153602, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC10showLoader33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0x610, symBinAddr: 0xC7120, symSize: 0x2F0 } + - { offset: 0x1537DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC13clearDatabaseyyF', symObjAddr: 0x900, symBinAddr: 0xC7410, symSize: 0x10 } + - { offset: 0x15385D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17cancelLoadingDatayyF', symObjAddr: 0x910, symBinAddr: 0xC7420, symSize: 0x1F0 } + - { offset: 0x1538F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17cancelLoadingDatayyFyycfU_', symObjAddr: 0xB00, symBinAddr: 0xC7610, symSize: 0x110 } + - { offset: 0x15391E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14clearDelegates33_4D2F781F14079E7D09B9917D3C968006LLyyF', symObjAddr: 0xC10, symBinAddr: 0xC7720, symSize: 0x160 } + - { offset: 0x153976, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17cancelLoadingDatayyFTo', symObjAddr: 0xD70, symBinAddr: 0xC7880, symSize: 0x30 } + - { offset: 0x1539ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC11setLanguageyACSSF', symObjAddr: 0xDA0, symBinAddr: 0xC78B0, symSize: 0x120 } + - { offset: 0x153ABB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC11setLanguageyySSFZ', symObjAddr: 0xEC0, symBinAddr: 0xC79D0, symSize: 0xE0 } + - { offset: 0x153BFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC21setDeepLinkComponents6scheme4hostACSS_SStF', symObjAddr: 0xFA0, symBinAddr: 0xC7AB0, symSize: 0x1B0 } + - { offset: 0x153D3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC11setDeepLinkyy10Foundation3URLVSgF', symObjAddr: 0x1150, symBinAddr: 0xC7C60, symSize: 0xA0 } + - { offset: 0x153DE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtF', symObjAddr: 0x1290, symBinAddr: 0xC7DA0, symSize: 0x120 } + - { offset: 0x153E47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtFyAA26GetPoIByRefIDResultElementVSgcfU_', symObjAddr: 0x13B0, symBinAddr: 0xC7EC0, symSize: 0x240 } + - { offset: 0x153EAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8navigate2to10completionySS_ySb_AA0aB7UIErrorOSgtcSgtFyAA26GetPoIByRefIDResultElementVSgcfU_yyScMYccfU_', symObjAddr: 0x15F0, symBinAddr: 0xC8100, symSize: 0x320 } + - { offset: 0x15419B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctF', symObjAddr: 0x1910, symBinAddr: 0xC8420, symSize: 0x1B0 } + - { offset: 0x1541E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctFySSSg_7Penguin9ErrorCodeOSgtcfU_', symObjAddr: 0x1AC0, symBinAddr: 0xC85D0, symSize: 0xB0 } + - { offset: 0x154272, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC16getCampusListing7baseURL11serviceName8clientID0L3Key10completionySS_S3SySayAA0F0CGSgctFySSSg_7Penguin9ErrorCodeOSgtcfU_ySayAoJCGSgcfU_', symObjAddr: 0x1B70, symBinAddr: 0xC8680, symSize: 0x290 } + - { offset: 0x154542, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC10getVersionSSyFZ', symObjAddr: 0x1E50, symBinAddr: 0xC8910, symSize: 0x20 } + - { offset: 0x154591, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7present4root4viewySo16UIViewControllerC_So0H0CtF', symObjAddr: 0x1E70, symBinAddr: 0xC8930, symSize: 0x460 } + - { offset: 0x1546A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC7dismissyyF', symObjAddr: 0x22D0, symBinAddr: 0xC8D90, symSize: 0x1D0 } + - { offset: 0x15474D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC12switchCampus8campusIdySi_tF', symObjAddr: 0x24A0, symBinAddr: 0xC8F60, symSize: 0x160 } + - { offset: 0x1547C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC11setCampusIDyACSiF', symObjAddr: 0x2600, symBinAddr: 0xC90C0, symSize: 0xC0 } + - { offset: 0x154828, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC14setServiceName04datafG008positionfG0ACSS_SStF', symObjAddr: 0x27A0, symBinAddr: 0xC9260, symSize: 0xB0 } + - { offset: 0x154876, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC10setBaseURL04dataG008positionG0ACSS_SStF', symObjAddr: 0x2850, symBinAddr: 0xC9310, symSize: 0x170 } + - { offset: 0x1548C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC24setSimulationModeEnabled8isEnableACSb_tF', symObjAddr: 0x2AC0, symBinAddr: 0xC9580, symSize: 0x90 } + - { offset: 0x154924, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctF', symObjAddr: 0x2C40, symBinAddr: 0xC9700, symSize: 0xF0 } + - { offset: 0x154980, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_', symObjAddr: 0x2D30, symBinAddr: 0xC97F0, symSize: 0x200 } + - { offset: 0x1549F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_', symObjAddr: 0x2F30, symBinAddr: 0xC99F0, symSize: 0xA0 } + - { offset: 0x154A40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC8getToken8clientID0G3Key12showProgress10completionySS_SSSbySSSg_7Penguin9ErrorCodeOSgtctFySbcfU_yAI_AMtcfU_yAMcfU_', symObjAddr: 0x2FD0, symBinAddr: 0xC9A90, symSize: 0x230 } + - { offset: 0x154B08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC10getVersionSSSgyF', symObjAddr: 0x3410, symBinAddr: 0xC9EC0, symSize: 0x130 } + - { offset: 0x154B44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCACycfc', symObjAddr: 0x3540, symBinAddr: 0xC9FF0, symSize: 0x180 } + - { offset: 0x154B69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCACycfcTo', symObjAddr: 0x36C0, symBinAddr: 0xCA170, symSize: 0x20 } + - { offset: 0x154B7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerCfD', symObjAddr: 0x36E0, symBinAddr: 0xCA190, symSize: 0x30 } + - { offset: 0x154EFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC13clearDatabaseyyFTf4d_n', symObjAddr: 0x6BE0, symBinAddr: 0xCD640, symSize: 0x90 } + - { offset: 0x154F82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC17clearDataIfNeededyyFTf4d_n', symObjAddr: 0x6C70, symBinAddr: 0xCD6D0, symSize: 0x280 } + - { offset: 0x1550AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB9UIManagerC18storeConfigurationyyFTf4d_n', symObjAddr: 0x6EF0, symBinAddr: 0xCD950, symSize: 0x220 } + - { offset: 0x1558CC, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFSay7Penguin13GateNodeModelCG_Tg5075$s8PenNavUI12GatesManagerC06updateD4Data3for5gatesy7Penguin5VenueC_SayAA0K4e12VGztFSbAG0L9fG7CXEfU2_Say0iJ2UI0rE0VGSiTf1cn_n', symObjAddr: 0x0, symBinAddr: 0xCE9C0, symSize: 0x140 } + - { offset: 0x1558F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC14sharedInstance33_17E138AFC5ED4208587E3B78D3E802C7LLACSgvpZ', symObjAddr: 0x2F20, symBinAddr: 0x39DAA8, symSize: 0x0 } + - { offset: 0x155EB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerCMa', symObjAddr: 0x1DC0, symBinAddr: 0xD0760, symSize: 0x20 } + - { offset: 0x155F26, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF8PenNavUI9VenueGateV_Tg503$s8ef33UI12GatesManagerC04sortD0yySayAA9hI17VGzFSbAF_AFtXEfU_Tf1cn_n', symObjAddr: 0x1DE0, symBinAddr: 0xD0780, symSize: 0xE0 } + - { offset: 0x156161, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI9VenueGateV_Tg503$s8ef33UI12GatesManagerC04sortD0yySayAA9hI17VGzFSbAF_AFtXEfU_Tf1nnncn_n', symObjAddr: 0x1EC0, symBinAddr: 0xD0860, symSize: 0x590 } + - { offset: 0x156668, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry8PenNavUI9VenueGateVG_Tg503$s8ij33UI12GatesManagerC04sortD0yySayAA9lM17VGzFSbAF_AFtXEfU_Tf1nncn_n', symObjAddr: 0x2450, symBinAddr: 0xD0DF0, symSize: 0x130 } + - { offset: 0x1567D8, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI9VenueGateV_Tg503$s8fg33UI12GatesManagerC04sortD0yySayAA9iJ17VGzFSbAF_AFtXEfU_Tf1nncn_n', symObjAddr: 0x2580, symBinAddr: 0xD0F20, symSize: 0x2C0 } + - { offset: 0x156B7A, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI9VenueGateV_Tg503$s8gh33UI12GatesManagerC04sortD0yySayAA9jK17VGzFSbAF_AFtXEfU_Tf1nnnnc_n', symObjAddr: 0x2840, symBinAddr: 0xD11E0, symSize: 0x310 } + - { offset: 0x156C77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVWOh', symObjAddr: 0x2B90, symBinAddr: 0xD14F0, symSize: 0x30 } + - { offset: 0x156D12, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFSay7Penguin13GateNodeModelCG_Tg5075$s8PenNavUI12GatesManagerC06updateD4Data3for5gatesy7Penguin5VenueC_SayAA0K4e12VGztFSbAG0L9fG7CXEfU2_Say0iJ2UI0rE0VGSiTf1cn_n', symObjAddr: 0x0, symBinAddr: 0xCE9C0, symSize: 0x140 } + - { offset: 0x156EB2, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFSay8PenNavUI9VenueGateVG_Tg503$s8de33UI12GatesManagerC04sortD0yySayAA9gH17VGzFSbAF_AFtXEfU_Tf1cn_n', symObjAddr: 0x140, symBinAddr: 0xCEB00, symSize: 0x60 } + - { offset: 0x1571C3, size: 0x8, addend: 0x0, symName: '_$ss14_ArrayProtocolPsE6filterySay7ElementQzGSbAEKXEKFSay7Penguin13GateNodeModelCG_Tg5075$s8PenNavUI12GatesManagerC06updateD4Data3for5gatesy7Penguin5VenueC_SayAA0K4f12VGztFSbAG0L9gH7CXEfU0_Say0jK2UI0sF0VGSiTf1cn_nTf4gnn_n', symObjAddr: 0x2BC0, symBinAddr: 0xD1520, symSize: 0x280 } + - { offset: 0x157487, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC06updateD4Data3for5gatesy7Penguin5VenueC_SayAA0K4GateVGztF', symObjAddr: 0x12A0, symBinAddr: 0xCFC60, symSize: 0xB00 } + - { offset: 0x1581BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD9ByPlaceIdySay7Penguin13GateNodeModelCGSiSgF', symObjAddr: 0x1A0, symBinAddr: 0xCEB60, symSize: 0x5B0 } + - { offset: 0x1587FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD9ByFloorIdySay7Penguin13GateNodeModelCGSiSgF', symObjAddr: 0x750, symBinAddr: 0xCF110, symSize: 0x1C0 } + - { offset: 0x158A30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD10ByFloorIdsySay7Penguin13GateNodeModelCGSaySiGF', symObjAddr: 0x910, symBinAddr: 0xCF2D0, symSize: 0x1E0 } + - { offset: 0x158D6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD09isOutdoor0G13FloorGateNodeSay7Penguin0jK5ModelCGSb_SbtF', symObjAddr: 0xAF0, symBinAddr: 0xCF4B0, symSize: 0x1C0 } + - { offset: 0x158FBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC09getCampusD0Say7Penguin13GateNodeModelCGyF', symObjAddr: 0xCB0, symBinAddr: 0xCF670, symSize: 0x1B0 } + - { offset: 0x15927C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD18SortedByTravelTime3for6origin19withNavigationAvoid10completiony7Penguin5VenueCSg_AA5PlaceCSgSbySayANGctFySayAA0R4GateVGcfU_', symObjAddr: 0xE60, symBinAddr: 0xCF820, symSize: 0x440 } + - { offset: 0x159692, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC04sortD0yySayAA9VenueGateVGzFTf4nd_n', symObjAddr: 0x2E40, symBinAddr: 0xD17A0, symSize: 0xC3 } + - { offset: 0x159B7D, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintC8PenNavUIE14arabicConstant12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x0, symBinAddr: 0xD1870, symSize: 0x10 } + - { offset: 0x159B95, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintC8PenNavUIE14arabicConstant12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x0, symBinAddr: 0xD1870, symSize: 0x10 } + - { offset: 0x159BB1, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintC8PenNavUIE14arabicConstant12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x10, symBinAddr: 0xD1880, symSize: 0x30 } + - { offset: 0x159BE3, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintC8PenNavUIE14arabicConstant12CoreGraphics7CGFloatVvs', symObjAddr: 0x40, symBinAddr: 0xD18B0, symSize: 0x86 } + - { offset: 0x15A07B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD1940, symSize: 0x20 } + - { offset: 0x15A2B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewCfETo', symObjAddr: 0x630, symBinAddr: 0xD1F70, symSize: 0x40 } + - { offset: 0x15A2DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewCMa', symObjAddr: 0x670, symBinAddr: 0xD1FB0, symSize: 0x20 } + - { offset: 0x15A3CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD1940, symSize: 0x20 } + - { offset: 0x15A429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC07contentF0So6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0xD1960, symSize: 0x30 } + - { offset: 0x15A478, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0xD1990, symSize: 0x20 } + - { offset: 0x15A4D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0xD19B0, symSize: 0x30 } + - { offset: 0x15A530, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xA0, symBinAddr: 0xD19E0, symSize: 0x90 } + - { offset: 0x15A5AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x130, symBinAddr: 0xD1A70, symSize: 0x90 } + - { offset: 0x15A5E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1C0, symBinAddr: 0xD1B00, symSize: 0x30 } + - { offset: 0x15A632, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC10commonInit33_5C7060CF019BF0F945901014F8A98CB4LLyyF', symObjAddr: 0x1F0, symBinAddr: 0xD1B30, symSize: 0x340 } + - { offset: 0x15A76F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewC03setD0yy7Penguin0D0CSgF', symObjAddr: 0x530, symBinAddr: 0xD1E70, symSize: 0xD0 } + - { offset: 0x15A7C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloorIndicatorViewCfD', symObjAddr: 0x600, symBinAddr: 0xD1F40, symSize: 0x30 } + - { offset: 0x15AB76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD1FD0, symSize: 0x20 } + - { offset: 0x15B54C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCfE', symObjAddr: 0x17D0, symBinAddr: 0xD37A0, symSize: 0x90 } + - { offset: 0x15B579, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCfETo', symObjAddr: 0x1890, symBinAddr: 0xD3860, symSize: 0x90 } + - { offset: 0x15B5A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCMa', symObjAddr: 0x1920, symBinAddr: 0xD38F0, symSize: 0x20 } + - { offset: 0x15B5F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1940, symBinAddr: 0xD3910, symSize: 0x40 } + - { offset: 0x15B697, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x1980, symBinAddr: 0xD3950, symSize: 0x20 } + - { offset: 0x15B6D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_22viewForHeaderInSectionSo6UIViewCSgSo07UITableF0C_SitFTo', symObjAddr: 0x19A0, symBinAddr: 0xD3970, symSize: 0x70 } + - { offset: 0x15B95D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1A10, symBinAddr: 0xD39E0, symSize: 0x590 } + - { offset: 0x15BE8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1FA0, symBinAddr: 0xD3F70, symSize: 0xB0 } + - { offset: 0x15BEAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_24heightForHeaderInSection12CoreGraphics7CGFloatVSo07UITableF0C_SitFTo', symObjAddr: 0x2050, symBinAddr: 0xD4020, symSize: 0x10 } + - { offset: 0x15BEF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2060, symBinAddr: 0xD4030, symSize: 0xE0 } + - { offset: 0x15BF7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtF', symObjAddr: 0x2140, symBinAddr: 0xD4110, symSize: 0x220 } + - { offset: 0x15C15F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_14didSelectRowAtySo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2360, symBinAddr: 0xD4330, symSize: 0xA0 } + - { offset: 0x15C18C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyF', symObjAddr: 0x2400, symBinAddr: 0xD43D0, symSize: 0xE0 } + - { offset: 0x15C21B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x24E0, symBinAddr: 0xD44B0, symSize: 0x30 } + - { offset: 0x15C24E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x2510, symBinAddr: 0xD44E0, symSize: 0x30 } + - { offset: 0x15C2EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC10setupPanelyyF', symObjAddr: 0x2540, symBinAddr: 0xD4510, symSize: 0x2D0 } + - { offset: 0x15C587, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC10setupPanelyyFTo', symObjAddr: 0x2810, symBinAddr: 0xD47E0, symSize: 0x30 } + - { offset: 0x15C5A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC18expandVenueSection7venueId0H0ySi_SbtF', symObjAddr: 0x2840, symBinAddr: 0xD4810, symSize: 0x460 } + - { offset: 0x15CC08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x2CA0, symBinAddr: 0xD4C70, symSize: 0x10 } + - { offset: 0x15CC3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x2F40, symBinAddr: 0xD4F10, symSize: 0xB0 } + - { offset: 0x15CD32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0_22viewForHeaderInSectionSo6UIViewCSgSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x2FF0, symBinAddr: 0xD4FC0, symSize: 0x250 } + - { offset: 0x15CEE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0x3240, symBinAddr: 0xD5210, symSize: 0x1D0 } + - { offset: 0x15D0C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD1FD0, symSize: 0x20 } + - { offset: 0x15D124, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC05tableF0AA014IntrinsicTableF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xD1FF0, symSize: 0x30 } + - { offset: 0x15D205, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC13selectedVenueAA0I8CardDataVSgvg', symObjAddr: 0x50, symBinAddr: 0xD2020, symSize: 0xF0 } + - { offset: 0x15D349, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC11viewDidLoadyyF', symObjAddr: 0x140, symBinAddr: 0xD2110, symSize: 0x310 } + - { offset: 0x15D58D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x450, symBinAddr: 0xD2420, symSize: 0x30 } + - { offset: 0x15D68D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC8loadDatayyF', symObjAddr: 0x480, symBinAddr: 0xD2450, symSize: 0x590 } + - { offset: 0x15DCDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC012loadSelectedD0yyF', symObjAddr: 0xA10, symBinAddr: 0xD29E0, symSize: 0x980 } + - { offset: 0x15E70A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC06selectD0yyF', symObjAddr: 0x1390, symBinAddr: 0xD3360, symSize: 0x90 } + - { offset: 0x15E776, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC06selectD0yyFTo', symObjAddr: 0x1420, symBinAddr: 0xD33F0, symSize: 0x30 } + - { offset: 0x15E79E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC6cancelyyF', symObjAddr: 0x1450, symBinAddr: 0xD3420, symSize: 0x90 } + - { offset: 0x15E815, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC6cancelyyFTo', symObjAddr: 0x14E0, symBinAddr: 0xD34B0, symSize: 0x30 } + - { offset: 0x15E82F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x1510, symBinAddr: 0xD34E0, symSize: 0x130 } + - { offset: 0x15E885, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x1640, symBinAddr: 0xD3610, symSize: 0x50 } + - { offset: 0x15E8CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1690, symBinAddr: 0xD3660, symSize: 0x110 } + - { offset: 0x15E915, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x17A0, symBinAddr: 0xD3770, symSize: 0x30 } + - { offset: 0x15E929, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloorSelectorViewControllerCfD', symObjAddr: 0x1860, symBinAddr: 0xD3830, symSize: 0x30 } + - { offset: 0x15EDC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC03setdE4Data5venue8expanded13selectedFloor8delegatey7Penguin0E0C_SbAI0L0CSgAA0dE15SectionDelegate_ptFTf4nnnen_nAA0L22SelectorViewControllerC_Tg5', symObjAddr: 0x2CB0, symBinAddr: 0xD4C80, symSize: 0x290 } + - { offset: 0x15F76A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCfE', symObjAddr: 0xF40, symBinAddr: 0xD6320, symSize: 0x70 } + - { offset: 0x15F797, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCfETo', symObjAddr: 0xFE0, symBinAddr: 0xD63C0, symSize: 0x70 } + - { offset: 0x15F7C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCMa', symObjAddr: 0x1050, symBinAddr: 0xD6430, symSize: 0x20 } + - { offset: 0x15F7DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1070, symBinAddr: 0xD6450, symSize: 0x10 } + - { offset: 0x15F846, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x1080, symBinAddr: 0xD6460, symSize: 0x60 } + - { offset: 0x15FA54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x10E0, symBinAddr: 0xD64C0, symSize: 0x500 } + - { offset: 0x15FDE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x15E0, symBinAddr: 0xD69C0, symSize: 0xB0 } + - { offset: 0x15FE3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1690, symBinAddr: 0xD6A70, symSize: 0xD0 } + - { offset: 0x15FED5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyF', symObjAddr: 0x1760, symBinAddr: 0xD6B40, symSize: 0xE0 } + - { offset: 0x15FF64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x1840, symBinAddr: 0xD6C20, symSize: 0x30 } + - { offset: 0x15FF97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x1870, symBinAddr: 0xD6C50, symSize: 0x30 } + - { offset: 0x160037, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x18A0, symBinAddr: 0xD6C80, symSize: 0x2E0 } + - { offset: 0x1602D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x1B80, symBinAddr: 0xD6F60, symSize: 0x30 } + - { offset: 0x1602EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC22didTapDirectionsActionyyF', symObjAddr: 0x1BB0, symBinAddr: 0xD6F90, symSize: 0x410 } + - { offset: 0x1604DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC22didTapDirectionsActionyyFyycfU_', symObjAddr: 0x1FC0, symBinAddr: 0xD73A0, symSize: 0x110 } + - { offset: 0x160575, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC22didTapDirectionsActionyyFTo', symObjAddr: 0x20D0, symBinAddr: 0xD74B0, symSize: 0x30 } + - { offset: 0x160591, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC17didTapPhoneActionyyF', symObjAddr: 0x2100, symBinAddr: 0xD74E0, symSize: 0x200 } + - { offset: 0x160675, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC17didTapPhoneActionyyFTo', symObjAddr: 0x2300, symBinAddr: 0xD76E0, symSize: 0x30 } + - { offset: 0x160691, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC19didTapWebsiteActionyyF', symObjAddr: 0x2330, symBinAddr: 0xD7710, symSize: 0x3A0 } + - { offset: 0x1607C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC19didTapWebsiteActionyyFTo', symObjAddr: 0x26D0, symBinAddr: 0xD7AB0, symSize: 0x30 } + - { offset: 0x160806, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16didTapMailActionyyF', symObjAddr: 0x2700, symBinAddr: 0xD7AE0, symSize: 0x1D0 } + - { offset: 0x16091C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16didTapMailActionyyFTo', symObjAddr: 0x28D0, symBinAddr: 0xD7CB0, symSize: 0x30 } + - { offset: 0x160962, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC011mailComposeG0_13didFinishWith5errorySo06MFMailifG0C_So0nI6ResultVs5Error_pSgtFTo', symObjAddr: 0x2900, symBinAddr: 0xD7CE0, symSize: 0x20 } + - { offset: 0x1609A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC25adaptivePresentationStyle3forSo07UIModaliJ0VSo014UIPresentationG0C_tFTo', symObjAddr: 0x2920, symBinAddr: 0xD7D00, symSize: 0x10 } + - { offset: 0x1609D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x2930, symBinAddr: 0xD7D10, symSize: 0x10 } + - { offset: 0x160A04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0x2940, symBinAddr: 0xD7D20, symSize: 0x1D0 } + - { offset: 0x160BCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC22didTapDirectionsActionyyFyycfU_TA', symObjAddr: 0x2C40, symBinAddr: 0xD7F80, symSize: 0x30 } + - { offset: 0x160BDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyFySo7UIImageCSgcfU_TA', symObjAddr: 0x2CC0, symBinAddr: 0xD7FB0, symSize: 0x10 } + - { offset: 0x160BF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyFySo7UIImageCSgcfU_yyScMYccfU_TA', symObjAddr: 0x2D90, symBinAddr: 0xD7FC0, symSize: 0x10 } + - { offset: 0x160C06, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2DA0, symBinAddr: 0xD7FD0, symSize: 0x20 } + - { offset: 0x160C1A, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2DC0, symBinAddr: 0xD7FF0, symSize: 0x10 } + - { offset: 0x160E7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xD53E0, symSize: 0x20 } + - { offset: 0x160EDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xD5400, symSize: 0x20 } + - { offset: 0x160F32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC12showsActionsSbvg', symObjAddr: 0x40, symBinAddr: 0xD5420, symSize: 0xD0 } + - { offset: 0x160FB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC16showsDescriptionSbvg', symObjAddr: 0x110, symBinAddr: 0xD54F0, symSize: 0xF0 } + - { offset: 0x161046, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x200, symBinAddr: 0xD55E0, symSize: 0x100 } + - { offset: 0x161117, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x300, symBinAddr: 0xD56E0, symSize: 0x30 } + - { offset: 0x161405, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyF', symObjAddr: 0x330, symBinAddr: 0xD5710, symSize: 0x6F0 } + - { offset: 0x1618CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyFySo7UIImageCSgcfU_', symObjAddr: 0xA20, symBinAddr: 0xD5E00, symSize: 0x210 } + - { offset: 0x161954, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC04loadD5ImageyyFySo7UIImageCSgcfU_yyScMYccfU_', symObjAddr: 0xC30, symBinAddr: 0xD6010, symSize: 0x80 } + - { offset: 0x161A06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC7dismissyySo8UIButtonCFTo', symObjAddr: 0xCB0, symBinAddr: 0xD6090, symSize: 0x80 } + - { offset: 0x161A36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xD30, symBinAddr: 0xD6110, symSize: 0xD0 } + - { offset: 0x161A77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xE00, symBinAddr: 0xD61E0, symSize: 0x50 } + - { offset: 0x161A8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xE50, symBinAddr: 0xD6230, symSize: 0xC0 } + - { offset: 0x161ABE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xF10, symBinAddr: 0xD62F0, symSize: 0x30 } + - { offset: 0x161AD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28MessageDetailsViewControllerCfD', symObjAddr: 0xFB0, symBinAddr: 0xD6390, symSize: 0x30 } + - { offset: 0x162332, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvgTo', symObjAddr: 0x0, symBinAddr: 0xD8000, symSize: 0x10 } + - { offset: 0x1623DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutCMa', symObjAddr: 0xF0, symBinAddr: 0xD80F0, symSize: 0x14 } + - { offset: 0x162408, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutC027flipsHorizontallyInOppositeF9DirectionSbvgTo', symObjAddr: 0x0, symBinAddr: 0xD8000, symSize: 0x10 } + - { offset: 0x162435, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutCACycfcTo', symObjAddr: 0x10, symBinAddr: 0xD8010, symSize: 0x30 } + - { offset: 0x1624C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x40, symBinAddr: 0xD8040, symSize: 0x80 } + - { offset: 0x162502, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CustomFlowLayoutCfD', symObjAddr: 0xC0, symBinAddr: 0xD80C0, symSize: 0x30 } + - { offset: 0x16289A, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerC8PenNavUIE7closureAByyc_tcfC', symObjAddr: 0x0, symBinAddr: 0xD8110, symSize: 0x140 } + - { offset: 0x1628BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10closureKey33_20A0826EEFCB6382929B746827715658LLs5UInt8Vvp', symObjAddr: 0x300, symBinAddr: 0x39DD08, symSize: 0x0 } + - { offset: 0x1628CC, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerC8PenNavUIE7closureAByyc_tcfC', symObjAddr: 0x0, symBinAddr: 0xD8110, symSize: 0x140 } + - { offset: 0x162923, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerC8PenNavUIE9handleTap33_20A0826EEFCB6382929B746827715658LLyyF', symObjAddr: 0x140, symBinAddr: 0xD8250, symSize: 0xE0 } + - { offset: 0x162967, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerC8PenNavUIE9handleTap33_20A0826EEFCB6382929B746827715658LLyyFTo', symObjAddr: 0x220, symBinAddr: 0xD8330, symSize: 0x30 } + - { offset: 0x162F2F, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUIAA15LocalizedObjectVRszlE03getD4TextSSSgyF', symObjAddr: 0x0, symBinAddr: 0xD8380, symSize: 0x230 } + - { offset: 0x163471, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseCMa', symObjAddr: 0x3D0, symBinAddr: 0xD86B0, symSize: 0x20 } + - { offset: 0x163D63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataCMa', symObjAddr: 0x1BC0, symBinAddr: 0xD9CB0, symSize: 0x20 } + - { offset: 0x163E35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailCMa', symObjAddr: 0x32F0, symBinAddr: 0xDB2F0, symSize: 0x20 } + - { offset: 0x163E49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwxx', symObjAddr: 0x3440, symBinAddr: 0xDB440, symSize: 0x30 } + - { offset: 0x163E5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwcp', symObjAddr: 0x3470, symBinAddr: 0xDB470, symSize: 0x70 } + - { offset: 0x163E71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwca', symObjAddr: 0x34E0, symBinAddr: 0xDB4E0, symSize: 0x90 } + - { offset: 0x163E85, size: 0x8, addend: 0x0, symName: ___swift_memcpy56_8, symObjAddr: 0x3570, symBinAddr: 0xDB570, symSize: 0x30 } + - { offset: 0x163E99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwta', symObjAddr: 0x35A0, symBinAddr: 0xDB5A0, symSize: 0x70 } + - { offset: 0x163EAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwet', symObjAddr: 0x3610, symBinAddr: 0xDB610, symSize: 0x50 } + - { offset: 0x163EC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVwst', symObjAddr: 0x3660, symBinAddr: 0xDB660, symSize: 0x50 } + - { offset: 0x163ED5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVMa', symObjAddr: 0x36B0, symBinAddr: 0xDB6B0, symSize: 0x10 } + - { offset: 0x163EE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwcp', symObjAddr: 0x36F0, symBinAddr: 0xDB6C0, symSize: 0x40 } + - { offset: 0x163EFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwca', symObjAddr: 0x3730, symBinAddr: 0xDB700, symSize: 0x80 } + - { offset: 0x163F11, size: 0x8, addend: 0x0, symName: ___swift_memcpy64_8, symObjAddr: 0x37B0, symBinAddr: 0xDB780, symSize: 0x30 } + - { offset: 0x163F25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwta', symObjAddr: 0x37E0, symBinAddr: 0xDB7B0, symSize: 0x50 } + - { offset: 0x163F39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwet', symObjAddr: 0x3830, symBinAddr: 0xDB800, symSize: 0x40 } + - { offset: 0x163F4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVwst', symObjAddr: 0x3870, symBinAddr: 0xDB840, symSize: 0x50 } + - { offset: 0x163F61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVMa', symObjAddr: 0x38C0, symBinAddr: 0xDB890, symSize: 0x10 } + - { offset: 0x163F75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwxx', symObjAddr: 0x38D0, symBinAddr: 0xDB8A0, symSize: 0x40 } + - { offset: 0x163F89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwcp', symObjAddr: 0x3910, symBinAddr: 0xDB8E0, symSize: 0x90 } + - { offset: 0x163F9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwca', symObjAddr: 0x39A0, symBinAddr: 0xDB970, symSize: 0xD0 } + - { offset: 0x163FB1, size: 0x8, addend: 0x0, symName: ___swift_memcpy80_8, symObjAddr: 0x3A70, symBinAddr: 0xDBA40, symSize: 0x30 } + - { offset: 0x163FC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwta', symObjAddr: 0x3AA0, symBinAddr: 0xDBA70, symSize: 0x90 } + - { offset: 0x163FD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwet', symObjAddr: 0x3B30, symBinAddr: 0xDBB00, symSize: 0x40 } + - { offset: 0x163FED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVwst', symObjAddr: 0x3B70, symBinAddr: 0xDBB40, symSize: 0x50 } + - { offset: 0x164001, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVMa', symObjAddr: 0x3BC0, symBinAddr: 0xDBB90, symSize: 0x10 } + - { offset: 0x164015, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVwet', symObjAddr: 0x3BF0, symBinAddr: 0xDBBA0, symSize: 0x40 } + - { offset: 0x164029, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVwst', symObjAddr: 0x3C30, symBinAddr: 0xDBBE0, symSize: 0x50 } + - { offset: 0x16403D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVMa', symObjAddr: 0x3C80, symBinAddr: 0xDBC30, symSize: 0x10 } + - { offset: 0x164051, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectVMa', symObjAddr: 0x3D40, symBinAddr: 0xDBCE0, symSize: 0x10 } + - { offset: 0x164065, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectVMa', symObjAddr: 0x3E10, symBinAddr: 0xDBDB0, symSize: 0x10 } + - { offset: 0x164079, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVwet', symObjAddr: 0x3F80, symBinAddr: 0xDBF20, symSize: 0x40 } + - { offset: 0x16408D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVwst', symObjAddr: 0x3FC0, symBinAddr: 0xDBF60, symSize: 0x50 } + - { offset: 0x1640A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVMa', symObjAddr: 0x4010, symBinAddr: 0xDBFB0, symSize: 0x10 } + - { offset: 0x1640B5, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUIAA15LocalizedObjectVRszlE26getDefaultLocalizationText33_121BF5CBCE29A3B1F134342B29E6E083LLSSSgyF', symObjAddr: 0x4560, symBinAddr: 0xDC410, symSize: 0x200 } + - { offset: 0x164576, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVAA13TagDataSourceA2aDP5tagIdSivgTW', symObjAddr: 0x4EC0, symBinAddr: 0xDCD60, symSize: 0x20 } + - { offset: 0x1645B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVAA13TagDataSourceA2aDP7tagNameSSvgTW', symObjAddr: 0x4EE0, symBinAddr: 0xDCD80, symSize: 0xC0 } + - { offset: 0x1645F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs0I3KeyAAWl', symObjAddr: 0x5010, symBinAddr: 0xDCE40, symSize: 0x30 } + - { offset: 0x164605, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI7POIDataCGSayxGSesSeRzlWl', symObjAddr: 0x5070, symBinAddr: 0xDCE70, symSize: 0x80 } + - { offset: 0x164619, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs0E3KeyAAWl', symObjAddr: 0x50F0, symBinAddr: 0xDCEF0, symSize: 0x30 } + - { offset: 0x16462D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVSgWOe', symObjAddr: 0x5150, symBinAddr: 0xDCF20, symSize: 0x30 } + - { offset: 0x164641, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectVAESeAAWl', symObjAddr: 0x5180, symBinAddr: 0xDCF50, symSize: 0x30 } + - { offset: 0x164655, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectVAESeAAWl', symObjAddr: 0x51B0, symBinAddr: 0xDCF80, symSize: 0x30 } + - { offset: 0x164669, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVAESeAAWl', symObjAddr: 0x51E0, symBinAddr: 0xDCFB0, symSize: 0x30 } + - { offset: 0x16467D, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI15LocalizedObjectVGSayxGSesSeRzlWl', symObjAddr: 0x5210, symBinAddr: 0xDCFE0, symSize: 0x60 } + - { offset: 0x164691, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVAESeAAWl', symObjAddr: 0x52A0, symBinAddr: 0xDD040, symSize: 0x30 } + - { offset: 0x1646A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVAESeAAWl', symObjAddr: 0x52D0, symBinAddr: 0xDD070, symSize: 0x30 } + - { offset: 0x1646B9, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI16CategoriesDetailCGSayxGSesSeRzlWl', symObjAddr: 0x5300, symBinAddr: 0xDD0A0, symSize: 0x80 } + - { offset: 0x1646CD, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI9AmenitiesVGSayxGSesSeRzlWl', symObjAddr: 0x5440, symBinAddr: 0xDD120, symSize: 0x60 } + - { offset: 0x1646E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVACSeAAWl', symObjAddr: 0x54A0, symBinAddr: 0xDD180, symSize: 0x30 } + - { offset: 0x1646F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs0F3KeyAAWl', symObjAddr: 0x54D0, symBinAddr: 0xDD1B0, symSize: 0x30 } + - { offset: 0x164709, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOAEs0E3KeyAAWl', symObjAddr: 0x7330, symBinAddr: 0xDEE80, symSize: 0x30 } + - { offset: 0x16471D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVWOh', symObjAddr: 0x7390, symBinAddr: 0xDEEB0, symSize: 0x20 } + - { offset: 0x164731, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI15LocalizedObjectVGSayxGSEsSERzlWl', symObjAddr: 0x73B0, symBinAddr: 0xDEED0, symSize: 0x60 } + - { offset: 0x164745, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x7440, symBinAddr: 0xDEF30, symSize: 0x30 } + - { offset: 0x164759, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI7POIDataC11PointObjectVGSayxGSesSeRzlWl', symObjAddr: 0x7470, symBinAddr: 0xDEF60, symSize: 0x60 } + - { offset: 0x16476D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVAESeAAWl', symObjAddr: 0x7500, symBinAddr: 0xDEFC0, symSize: 0x30 } + - { offset: 0x164788, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVWOc', symObjAddr: 0x7530, symBinAddr: 0xDEFF0, symSize: 0x50 } + - { offset: 0x1647B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVWOh', symObjAddr: 0x7580, symBinAddr: 0xDF040, symSize: 0x20 } + - { offset: 0x1647E1, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI7POIDataC11PointObjectVGSayxGSEsSERzlWl', symObjAddr: 0x75A0, symBinAddr: 0xDF060, symSize: 0x60 } + - { offset: 0x1647F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVAESEAAWl', symObjAddr: 0x7600, symBinAddr: 0xDF0C0, symSize: 0x30 } + - { offset: 0x164809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0H3KeyAAWl', symObjAddr: 0x7630, symBinAddr: 0xDF0F0, symSize: 0x30 } + - { offset: 0x16481D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVWOc', symObjAddr: 0x7660, symBinAddr: 0xDF120, symSize: 0x30 } + - { offset: 0x164831, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVWOh', symObjAddr: 0x7690, symBinAddr: 0xDF150, symSize: 0x20 } + - { offset: 0x164845, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x76B0, symBinAddr: 0xDF170, symSize: 0x30 } + - { offset: 0x164859, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x76E0, symBinAddr: 0xDF1A0, symSize: 0x30 } + - { offset: 0x16486D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x7710, symBinAddr: 0xDF1D0, symSize: 0x30 } + - { offset: 0x164881, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs0F3KeyAAWl', symObjAddr: 0x7740, symBinAddr: 0xDF200, symSize: 0x30 } + - { offset: 0x164895, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectVAESEAAWl', symObjAddr: 0x7770, symBinAddr: 0xDF230, symSize: 0x30 } + - { offset: 0x1648A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectVAESEAAWl', symObjAddr: 0x77A0, symBinAddr: 0xDF260, symSize: 0x30 } + - { offset: 0x1648BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVAESEAAWl', symObjAddr: 0x77D0, symBinAddr: 0xDF290, symSize: 0x30 } + - { offset: 0x1648D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVAESEAAWl', symObjAddr: 0x7800, symBinAddr: 0xDF2C0, symSize: 0x30 } + - { offset: 0x1648E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVAESEAAWl', symObjAddr: 0x7860, symBinAddr: 0xDF2F0, symSize: 0x30 } + - { offset: 0x1648F9, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI16CategoriesDetailCGSayxGSEsSERzlWl', symObjAddr: 0x7890, symBinAddr: 0xDF320, symSize: 0x80 } + - { offset: 0x16490D, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI9AmenitiesVGSayxGSEsSERzlWl', symObjAddr: 0x79F0, symBinAddr: 0xDF3A0, symSize: 0x60 } + - { offset: 0x164921, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVACSEAAWl', symObjAddr: 0x7A50, symBinAddr: 0xDF400, symSize: 0x30 } + - { offset: 0x164935, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVSgWOe', symObjAddr: 0x7A80, symBinAddr: 0xDF430, symSize: 0x50 } + - { offset: 0x164949, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI7POIDataCGSayxGSEsSERzlWl', symObjAddr: 0x7AD0, symBinAddr: 0xDF480, symSize: 0x80 } + - { offset: 0x16495D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7BF0, symBinAddr: 0xDF520, symSize: 0x10 } + - { offset: 0x164971, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7C10, symBinAddr: 0xDF530, symSize: 0x10 } + - { offset: 0x164985, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7C30, symBinAddr: 0xDF540, symSize: 0x10 } + - { offset: 0x164999, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7C90, symBinAddr: 0xDF570, symSize: 0x10 } + - { offset: 0x1649AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOwet', symObjAddr: 0x7CA0, symBinAddr: 0xDF580, symSize: 0x80 } + - { offset: 0x1649C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOwst', symObjAddr: 0x7D20, symBinAddr: 0xDF600, symSize: 0xD0 } + - { offset: 0x1649D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7E00, symBinAddr: 0xDF6D0, symSize: 0x10 } + - { offset: 0x1649E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x7F70, symBinAddr: 0xDF6E0, symSize: 0x10 } + - { offset: 0x1649FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOMa', symObjAddr: 0x7F90, symBinAddr: 0xDF6F0, symSize: 0x10 } + - { offset: 0x164A11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x8100, symBinAddr: 0xDF700, symSize: 0x10 } + - { offset: 0x164A25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOwet', symObjAddr: 0x8110, symBinAddr: 0xDF710, symSize: 0x80 } + - { offset: 0x164A39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOwst', symObjAddr: 0x8190, symBinAddr: 0xDF790, symSize: 0xD0 } + - { offset: 0x164A4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x8270, symBinAddr: 0xDF860, symSize: 0x10 } + - { offset: 0x164A61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x83B0, symBinAddr: 0xDF870, symSize: 0x10 } + - { offset: 0x164A75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVMa', symObjAddr: 0x8440, symBinAddr: 0xDF880, symSize: 0x10 } + - { offset: 0x164A89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8450, symBinAddr: 0xDF890, symSize: 0x10 } + - { offset: 0x164A9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFSQAAWl', symObjAddr: 0x8460, symBinAddr: 0xDF8A0, symSize: 0x30 } + - { offset: 0x164AB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8490, symBinAddr: 0xDF8D0, symSize: 0x10 } + - { offset: 0x164AC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFSQAAWl', symObjAddr: 0x84A0, symBinAddr: 0xDF8E0, symSize: 0x30 } + - { offset: 0x164AD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x84D0, symBinAddr: 0xDF910, symSize: 0x10 } + - { offset: 0x164AED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFSQAAWl', symObjAddr: 0x84E0, symBinAddr: 0xDF920, symSize: 0x30 } + - { offset: 0x164B01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSHAASQWb', symObjAddr: 0x8510, symBinAddr: 0xDF950, symSize: 0x10 } + - { offset: 0x164B15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOAESQAAWl', symObjAddr: 0x8520, symBinAddr: 0xDF960, symSize: 0x30 } + - { offset: 0x164B29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8550, symBinAddr: 0xDF990, symSize: 0x10 } + - { offset: 0x164B3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x8560, symBinAddr: 0xDF9A0, symSize: 0x30 } + - { offset: 0x164B51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8590, symBinAddr: 0xDF9D0, symSize: 0x10 } + - { offset: 0x164B65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x85A0, symBinAddr: 0xDF9E0, symSize: 0x30 } + - { offset: 0x164B79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x85D0, symBinAddr: 0xDFA10, symSize: 0x10 } + - { offset: 0x164B8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x85E0, symBinAddr: 0xDFA20, symSize: 0x30 } + - { offset: 0x164BA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8610, symBinAddr: 0xDFA50, symSize: 0x10 } + - { offset: 0x164BB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x8620, symBinAddr: 0xDFA60, symSize: 0x30 } + - { offset: 0x164BC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8650, symBinAddr: 0xDFA90, symSize: 0x10 } + - { offset: 0x164BDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x8660, symBinAddr: 0xDFAA0, symSize: 0x30 } + - { offset: 0x164BF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8690, symBinAddr: 0xDFAD0, symSize: 0x10 } + - { offset: 0x164C05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFSQAAWl', symObjAddr: 0x86A0, symBinAddr: 0xDFAE0, symSize: 0x30 } + - { offset: 0x164C19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x86D0, symBinAddr: 0xDFB10, symSize: 0x10 } + - { offset: 0x164C2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x86E0, symBinAddr: 0xDFB20, symSize: 0x30 } + - { offset: 0x164C41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8710, symBinAddr: 0xDFB50, symSize: 0x10 } + - { offset: 0x164C55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x8720, symBinAddr: 0xDFB60, symSize: 0x30 } + - { offset: 0x164C69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8750, symBinAddr: 0xDFB90, symSize: 0x10 } + - { offset: 0x164C7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8760, symBinAddr: 0xDFBA0, symSize: 0x30 } + - { offset: 0x164C91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8790, symBinAddr: 0xDFBD0, symSize: 0x10 } + - { offset: 0x164CA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x87A0, symBinAddr: 0xDFBE0, symSize: 0x30 } + - { offset: 0x164CB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x87D0, symBinAddr: 0xDFC10, symSize: 0x10 } + - { offset: 0x164CCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x87E0, symBinAddr: 0xDFC20, symSize: 0x30 } + - { offset: 0x164CE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8810, symBinAddr: 0xDFC50, symSize: 0x10 } + - { offset: 0x164CF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x8820, symBinAddr: 0xDFC60, symSize: 0x30 } + - { offset: 0x164D09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8850, symBinAddr: 0xDFC90, symSize: 0x10 } + - { offset: 0x164D1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8860, symBinAddr: 0xDFCA0, symSize: 0x30 } + - { offset: 0x164D31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8890, symBinAddr: 0xDFCD0, symSize: 0x10 } + - { offset: 0x164D45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x88A0, symBinAddr: 0xDFCE0, symSize: 0x30 } + - { offset: 0x164D59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x88D0, symBinAddr: 0xDFD10, symSize: 0x10 } + - { offset: 0x164D6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x88E0, symBinAddr: 0xDFD20, symSize: 0x30 } + - { offset: 0x164D81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8910, symBinAddr: 0xDFD50, symSize: 0x10 } + - { offset: 0x164D95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x8920, symBinAddr: 0xDFD60, symSize: 0x30 } + - { offset: 0x164DA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8950, symBinAddr: 0xDFD90, symSize: 0x10 } + - { offset: 0x164DBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8960, symBinAddr: 0xDFDA0, symSize: 0x30 } + - { offset: 0x164DD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8990, symBinAddr: 0xDFDD0, symSize: 0x10 } + - { offset: 0x164DE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x89A0, symBinAddr: 0xDFDE0, symSize: 0x30 } + - { offset: 0x164DF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x89D0, symBinAddr: 0xDFE10, symSize: 0x10 } + - { offset: 0x164E0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x89E0, symBinAddr: 0xDFE20, symSize: 0x30 } + - { offset: 0x164E21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8A10, symBinAddr: 0xDFE50, symSize: 0x10 } + - { offset: 0x164E35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x8A20, symBinAddr: 0xDFE60, symSize: 0x30 } + - { offset: 0x164E49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8A50, symBinAddr: 0xDFE90, symSize: 0x10 } + - { offset: 0x164E5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8A60, symBinAddr: 0xDFEA0, symSize: 0x30 } + - { offset: 0x164E71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8A90, symBinAddr: 0xDFED0, symSize: 0x10 } + - { offset: 0x164E85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x8AA0, symBinAddr: 0xDFEE0, symSize: 0x30 } + - { offset: 0x164E99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8AD0, symBinAddr: 0xDFF10, symSize: 0x10 } + - { offset: 0x164EAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8AE0, symBinAddr: 0xDFF20, symSize: 0x30 } + - { offset: 0x164EC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8B10, symBinAddr: 0xDFF50, symSize: 0x10 } + - { offset: 0x164ED5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x8B20, symBinAddr: 0xDFF60, symSize: 0x30 } + - { offset: 0x164EE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0I3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8B50, symBinAddr: 0xDFF90, symSize: 0x10 } + - { offset: 0x164EFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8B60, symBinAddr: 0xDFFA0, symSize: 0x30 } + - { offset: 0x164F11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0I3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8B90, symBinAddr: 0xDFFD0, symSize: 0x10 } + - { offset: 0x164F25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x8BA0, symBinAddr: 0xDFFE0, symSize: 0x30 } + - { offset: 0x164F39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs0G3KeyAAWl', symObjAddr: 0x8BD0, symBinAddr: 0xE0010, symSize: 0x30 } + - { offset: 0x164F4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOMa', symObjAddr: 0x8D80, symBinAddr: 0xE0060, symSize: 0x10 } + - { offset: 0x164F61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASQWb', symObjAddr: 0x8D90, symBinAddr: 0xE0070, symSize: 0x10 } + - { offset: 0x164F75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHSQAAWl', symObjAddr: 0x8DA0, symBinAddr: 0xE0080, symSize: 0x30 } + - { offset: 0x164F89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x8DD0, symBinAddr: 0xE00B0, symSize: 0x10 } + - { offset: 0x164F9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x8DE0, symBinAddr: 0xE00C0, symSize: 0x30 } + - { offset: 0x164FB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x8E10, symBinAddr: 0xE00F0, symSize: 0x10 } + - { offset: 0x164FC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x8E20, symBinAddr: 0xE0100, symSize: 0x30 } + - { offset: 0x165086, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x290, symBinAddr: 0xD85B0, symSize: 0x30 } + - { offset: 0x16511A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x370, symBinAddr: 0xD8670, symSize: 0x20 } + - { offset: 0x165136, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x390, symBinAddr: 0xD8690, symSize: 0x20 } + - { offset: 0x165152, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0xE30, symBinAddr: 0xD90C0, symSize: 0x20 } + - { offset: 0x16516E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0xE50, symBinAddr: 0xD90E0, symSize: 0x20 } + - { offset: 0x165190, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0xF70, symBinAddr: 0xD9180, symSize: 0x20 } + - { offset: 0x1651AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0xF90, symBinAddr: 0xD91A0, symSize: 0x20 } + - { offset: 0x1651CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x1110, symBinAddr: 0xD92C0, symSize: 0x20 } + - { offset: 0x1651EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x1130, symBinAddr: 0xD92E0, symSize: 0x20 } + - { offset: 0x16520C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x12B0, symBinAddr: 0xD9450, symSize: 0x20 } + - { offset: 0x165228, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x12D0, symBinAddr: 0xD9470, symSize: 0x20 } + - { offset: 0x16524A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x13D0, symBinAddr: 0xD9560, symSize: 0x20 } + - { offset: 0x165266, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x13F0, symBinAddr: 0xD9580, symSize: 0x20 } + - { offset: 0x165288, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x1530, symBinAddr: 0xD96B0, symSize: 0x20 } + - { offset: 0x1652A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x1550, symBinAddr: 0xD96D0, symSize: 0x20 } + - { offset: 0x16531B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x1A30, symBinAddr: 0xD9B20, symSize: 0x20 } + - { offset: 0x165337, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x1A50, symBinAddr: 0xD9B40, symSize: 0x20 } + - { offset: 0x165353, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x3290, symBinAddr: 0xDB2B0, symSize: 0x20 } + - { offset: 0x16536F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x32B0, symBinAddr: 0xDB2D0, symSize: 0x20 } + - { offset: 0x165391, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x44D0, symBinAddr: 0xDC380, symSize: 0x20 } + - { offset: 0x1653AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x44F0, symBinAddr: 0xDC3A0, symSize: 0x20 } + - { offset: 0x1653CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x4A10, symBinAddr: 0xDC8C0, symSize: 0x10 } + - { offset: 0x165436, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x4A20, symBinAddr: 0xDC8D0, symSize: 0xD0 } + - { offset: 0x1654F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x4AF0, symBinAddr: 0xDC9A0, symSize: 0xC0 } + - { offset: 0x165572, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x4BB0, symBinAddr: 0xDCA60, symSize: 0xD0 } + - { offset: 0x165616, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x4E30, symBinAddr: 0xDCCD0, symSize: 0x20 } + - { offset: 0x165632, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x4E50, symBinAddr: 0xDCCF0, symSize: 0x20 } + - { offset: 0x1656D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0I3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x2C0, symBinAddr: 0xD85E0, symSize: 0x20 } + - { offset: 0x1656FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0I3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x2E0, symBinAddr: 0xD8600, symSize: 0x70 } + - { offset: 0x165756, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x3F0, symBinAddr: 0xD86D0, symSize: 0xE0 } + - { offset: 0x165787, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x4D0, symBinAddr: 0xD87B0, symSize: 0x140 } + - { offset: 0x1657B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetPoIByIdResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x630, symBinAddr: 0xD8910, symSize: 0x20 } + - { offset: 0x1657CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0x7B0, symBinAddr: 0xD8A50, symSize: 0x150 } + - { offset: 0x1657FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0x900, symBinAddr: 0xD8BA0, symSize: 0x230 } + - { offset: 0x16582E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0xB30, symBinAddr: 0xD8DD0, symSize: 0x170 } + - { offset: 0x16585F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0xCA0, symBinAddr: 0xD8F40, symSize: 0x180 } + - { offset: 0x165890, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC12CampusObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xE90, symBinAddr: 0xD9120, symSize: 0x30 } + - { offset: 0x1658B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11VenueObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1000, symBinAddr: 0xD9210, symSize: 0x30 } + - { offset: 0x1658E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0x1080, symBinAddr: 0xD9240, symSize: 0x50 } + - { offset: 0x165917, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0x10D0, symBinAddr: 0xD9290, symSize: 0x20 } + - { offset: 0x165953, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x1150, symBinAddr: 0xD9300, symSize: 0x30 } + - { offset: 0x16597C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1180, symBinAddr: 0xD9330, symSize: 0x20 } + - { offset: 0x1659A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0x11A0, symBinAddr: 0xD9350, symSize: 0xD0 } + - { offset: 0x1659E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1270, symBinAddr: 0xD9420, symSize: 0x20 } + - { offset: 0x165A0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0H3KeyAAsAIP8intValuexSgSi_tcfCTW', symObjAddr: 0x12A0, symBinAddr: 0xD9440, symSize: 0x10 } + - { offset: 0x165A33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x12F0, symBinAddr: 0xD9490, symSize: 0x50 } + - { offset: 0x165A5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1340, symBinAddr: 0xD94E0, symSize: 0x10 } + - { offset: 0x165A87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0x1350, symBinAddr: 0xD94F0, symSize: 0x50 } + - { offset: 0x165AC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0x13A0, symBinAddr: 0xD9540, symSize: 0x20 } + - { offset: 0x165AFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x1410, symBinAddr: 0xD95A0, symSize: 0x40 } + - { offset: 0x165B28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1450, symBinAddr: 0xD95E0, symSize: 0x10 } + - { offset: 0x165B53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0x1460, symBinAddr: 0xD95F0, symSize: 0x90 } + - { offset: 0x165B8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0G3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0x14F0, symBinAddr: 0xD9680, symSize: 0x20 } + - { offset: 0x165BCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x1570, symBinAddr: 0xD96F0, symSize: 0x40 } + - { offset: 0x165BF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x15B0, symBinAddr: 0xD9730, symSize: 0x10 } + - { offset: 0x165CA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC8getFloor7Penguin0F0CSgyF', symObjAddr: 0x15C0, symBinAddr: 0xD9740, symSize: 0x160 } + - { offset: 0x165E9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueSSvg', symObjAddr: 0x1720, symBinAddr: 0xD98A0, symSize: 0x240 } + - { offset: 0x165ED2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x19E0, symBinAddr: 0xD9AE0, symSize: 0x10 } + - { offset: 0x165EF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x19F0, symBinAddr: 0xD9AF0, symSize: 0x20 } + - { offset: 0x165F22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0E3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0x1A20, symBinAddr: 0xD9B10, symSize: 0x10 } + - { offset: 0x165F36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataCfd', symObjAddr: 0x1A70, symBinAddr: 0xD9B60, symSize: 0x130 } + - { offset: 0x165F59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataCfD', symObjAddr: 0x1BA0, symBinAddr: 0xD9C90, symSize: 0x20 } + - { offset: 0x165F7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC6encode2toys7Encoder_p_tKF', symObjAddr: 0x1BE0, symBinAddr: 0xD9CD0, symSize: 0x930 } + - { offset: 0x165FAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x2510, symBinAddr: 0xDA600, symSize: 0xC70 } + - { offset: 0x165FDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x31A0, symBinAddr: 0xDB290, symSize: 0x20 } + - { offset: 0x165FF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC6encode2toys7Encoder_p_tKF', symObjAddr: 0x3310, symBinAddr: 0xDB310, symSize: 0x130 } + - { offset: 0x166028, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x4020, symBinAddr: 0xDBFC0, symSize: 0x180 } + - { offset: 0x166059, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0x41A0, symBinAddr: 0xDC140, symSize: 0x110 } + - { offset: 0x16608A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CategoriesDetailCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x4330, symBinAddr: 0xDC270, symSize: 0x20 } + - { offset: 0x1660B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x43D0, symBinAddr: 0xDC290, symSize: 0x30 } + - { offset: 0x1660FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x4400, symBinAddr: 0xDC2C0, symSize: 0xC0 } + - { offset: 0x16616D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x4510, symBinAddr: 0xDC3C0, symSize: 0x30 } + - { offset: 0x166196, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x4540, symBinAddr: 0xDC3F0, symSize: 0x20 } + - { offset: 0x1661B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV8imageURLSSSgvg', symObjAddr: 0x4760, symBinAddr: 0xDC610, symSize: 0xF0 } + - { offset: 0x16629A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV6encode2toys7Encoder_p_tKF', symObjAddr: 0x4850, symBinAddr: 0xDC700, symSize: 0x1C0 } + - { offset: 0x1662FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x4C80, symBinAddr: 0xDCB30, symSize: 0x30 } + - { offset: 0x166325, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x4CB0, symBinAddr: 0xDCB60, symSize: 0xB0 } + - { offset: 0x166375, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs0E3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x4D60, symBinAddr: 0xDCC10, symSize: 0xA0 } + - { offset: 0x1663CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysOs0E3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x4E00, symBinAddr: 0xDCCB0, symSize: 0x20 } + - { offset: 0x166425, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x4E70, symBinAddr: 0xDCD10, symSize: 0x40 } + - { offset: 0x16644E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x4EB0, symBinAddr: 0xDCD50, symSize: 0x10 } + - { offset: 0x166469, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x57E0, symBinAddr: 0xDD330, symSize: 0xF0 } + - { offset: 0x1664D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x58D0, symBinAddr: 0xDD420, symSize: 0x1A0 } + - { offset: 0x1664FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x5A70, symBinAddr: 0xDD5C0, symSize: 0x210 } + - { offset: 0x1665CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC21PrimaryCategoryObjectV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x5C80, symBinAddr: 0xDD7D0, symSize: 0x450 } + - { offset: 0x1665EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x60D0, symBinAddr: 0xDDC20, symSize: 0x100 } + - { offset: 0x16665D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC13PolygonObjectV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x61D0, symBinAddr: 0xDDD20, symSize: 0x2B0 } + - { offset: 0x166680, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x6480, symBinAddr: 0xDDFD0, symSize: 0x180 } + - { offset: 0x166720, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11PointObjectV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x6600, symBinAddr: 0xDE150, symSize: 0x1B0 } + - { offset: 0x166743, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC10CodingKeys33_121BF5CBCE29A3B1F134342B29E6E083LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x67B0, symBinAddr: 0xDE300, symSize: 0x6A0 } + - { offset: 0x1669B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LocalizedObjectV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x6E50, symBinAddr: 0xDE9A0, symSize: 0x150 } + - { offset: 0x1669E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x6FA0, symBinAddr: 0xDEAF0, symSize: 0x60 } + - { offset: 0x166A19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AmenitiesV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x7000, symBinAddr: 0xDEB50, symSize: 0x330 } + - { offset: 0x166DE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xE02F0, symSize: 0x20 } + - { offset: 0x166FFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellCfETo', symObjAddr: 0x2C0, symBinAddr: 0xE05B0, symSize: 0x40 } + - { offset: 0x167029, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellCMa', symObjAddr: 0x300, symBinAddr: 0xE05F0, symSize: 0x20 } + - { offset: 0x167141, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xE02F0, symSize: 0x20 } + - { offset: 0x1671A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC13iconImageViewSo07UIImageJ0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xE0310, symSize: 0x20 } + - { offset: 0x1671F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0xE0330, symSize: 0x20 } + - { offset: 0x16724E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x60, symBinAddr: 0xE0350, symSize: 0x20 } + - { offset: 0x1672A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC27selectionIndicatorImageViewSo07UIImageK0CSgvgTo', symObjAddr: 0x80, symBinAddr: 0xE0370, symSize: 0x20 } + - { offset: 0x1672F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC27selectionIndicatorImageViewSo07UIImageK0CSgvsTo', symObjAddr: 0xA0, symBinAddr: 0xE0390, symSize: 0x20 } + - { offset: 0x167349, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC12awakeFromNibyyFTo', symObjAddr: 0xC0, symBinAddr: 0xE03B0, symSize: 0x30 } + - { offset: 0x1673AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0xF0, symBinAddr: 0xE03E0, symSize: 0xD0 } + - { offset: 0x167411, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1C0, symBinAddr: 0xE04B0, symSize: 0xA0 } + - { offset: 0x167444, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x260, symBinAddr: 0xE0550, symSize: 0x30 } + - { offset: 0x167458, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellCfD', symObjAddr: 0x290, symBinAddr: 0xE0580, symSize: 0x30 } + - { offset: 0x16748B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19LeadingIconMenuCellC9configure4withyAA0F4ItemV_tFTf4xn_n', symObjAddr: 0x320, symBinAddr: 0xE0610, symSize: 0x2F2 } + - { offset: 0x16797E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6sysLog_WZ', symObjAddr: 0x0, symBinAddr: 0xE0910, symSize: 0x60 } + - { offset: 0x1679A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6sysLogSo9OS_os_logCvp', symObjAddr: 0x42D0, symBinAddr: 0x3BCFF0, symSize: 0x0 } + - { offset: 0x1679BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6devLogSo9OS_os_logCvp', symObjAddr: 0x42D8, symBinAddr: 0x3BCFF8, symSize: 0x0 } + - { offset: 0x1679CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6sysLog_WZ', symObjAddr: 0x0, symBinAddr: 0xE0910, symSize: 0x60 } + - { offset: 0x1679E4, size: 0x8, addend: 0x0, symName: '_$sSo9OS_os_logCMa', symObjAddr: 0x60, symBinAddr: 0xE0970, symSize: 0x40 } + - { offset: 0x1679F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6devLog_WZ', symObjAddr: 0xA0, symBinAddr: 0xE09B0, symSize: 0x25 } + - { offset: 0x167DAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC10DerivativeV5rootsSaySfGvg', symObjAddr: 0x0, symBinAddr: 0xE09E0, symSize: 0x210 } + - { offset: 0x167DD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointV7minimumAEvpZ', symObjAddr: 0x72A0, symBinAddr: 0x3BD000, symSize: 0x0 } + - { offset: 0x167F1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointV7minimum_WZ', symObjAddr: 0x210, symBinAddr: 0xE0BF0, symSize: 0x20 } + - { offset: 0x1680B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC10DerivativeV5rootsSaySfGvg', symObjAddr: 0x0, symBinAddr: 0xE09E0, symSize: 0x210 } + - { offset: 0x168496, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC12BoundsFinderV04makeG04from8control18control22toAC5PointV3min_AN3maxtAN_A3NtFZTf4nnnnd_n', symObjAddr: 0x230, symBinAddr: 0xE0C10, symSize: 0x380 } + - { offset: 0x168B3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC9tintColor04fillI05imageACSo7UIColorC_AHSo7UIImageCtcfc', symObjAddr: 0x0, symBinAddr: 0xE0F90, symSize: 0x3E0 } + - { offset: 0x168D78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewCfETo', symObjAddr: 0x800, symBinAddr: 0xE1790, symSize: 0x50 } + - { offset: 0x168DA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewCMa', symObjAddr: 0x850, symBinAddr: 0xE17E0, symSize: 0x20 } + - { offset: 0x168EB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC9tintColor04fillI05imageACSo7UIColorC_AHSo7UIImageCtcfc', symObjAddr: 0x0, symBinAddr: 0xE0F90, symSize: 0x3E0 } + - { offset: 0x169041, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3E0, symBinAddr: 0xE1370, symSize: 0x180 } + - { offset: 0x1690AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x560, symBinAddr: 0xE14F0, symSize: 0x30 } + - { offset: 0x1690CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC4drawyySo6CGRectVFTo', symObjAddr: 0x590, symBinAddr: 0xE1520, symSize: 0x30 } + - { offset: 0x1690F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC011adjustImageG5Frame33_2FCAADA1E67DE0FBB04DAE24AC8894DBLLyyF', symObjAddr: 0x5C0, symBinAddr: 0xE1550, symSize: 0x110 } + - { offset: 0x1691EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC14layoutSubviewsyyFTo', symObjAddr: 0x6D0, symBinAddr: 0xE1660, symSize: 0xD0 } + - { offset: 0x16923B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x7A0, symBinAddr: 0xE1730, symSize: 0x30 } + - { offset: 0x16929A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewCfD', symObjAddr: 0x7D0, symBinAddr: 0xE1760, symSize: 0x30 } + - { offset: 0x1692EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29SelectedLocationIndicatorViewC4drawyySo6CGRectVFTf4dn_n', symObjAddr: 0x870, symBinAddr: 0xE1800, symSize: 0x60B } + - { offset: 0x1698BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xE1E10, symSize: 0x20 } + - { offset: 0x16A08D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellCfETo', symObjAddr: 0x1920, symBinAddr: 0xE3730, symSize: 0xC0 } + - { offset: 0x16A0BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellCMa', symObjAddr: 0x19E0, symBinAddr: 0xE37F0, symSize: 0x20 } + - { offset: 0x16A0D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVSgWOy', symObjAddr: 0x1A30, symBinAddr: 0xE3810, symSize: 0x30 } + - { offset: 0x16A4AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xE1E10, symSize: 0x20 } + - { offset: 0x16A508, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointStackViewSo07UIStackI0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xE1E30, symSize: 0x30 } + - { offset: 0x16A557, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15secondPointViewSo6UIViewCSgvgTo', symObjAddr: 0x50, symBinAddr: 0xE1E60, symSize: 0x20 } + - { offset: 0x16A5AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15secondPointViewSo6UIViewCSgvsTo', symObjAddr: 0x70, symBinAddr: 0xE1E80, symSize: 0x30 } + - { offset: 0x16A5FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15firstPointLabelSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0xE1EB0, symSize: 0x20 } + - { offset: 0x16A656, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15firstPointLabelSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0xE1ED0, symSize: 0x30 } + - { offset: 0x16A6A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC16secondPointLabelSo7UILabelCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0xE1F00, symSize: 0x20 } + - { offset: 0x16A6F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC16secondPointLabelSo7UILabelCSgvsTo', symObjAddr: 0x110, symBinAddr: 0xE1F20, symSize: 0x30 } + - { offset: 0x16A747, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0x140, symBinAddr: 0xE1F50, symSize: 0x20 } + - { offset: 0x16A79A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC11lengthLabelSo7UILabelCSgvsTo', symObjAddr: 0x160, symBinAddr: 0xE1F70, symSize: 0x30 } + - { offset: 0x16A7E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15lengthUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0x190, symBinAddr: 0xE1FA0, symSize: 0x20 } + - { offset: 0x16A83C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15lengthUnitLabelSo7UILabelCSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0xE1FC0, symSize: 0x30 } + - { offset: 0x16A88B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0xE1FF0, symSize: 0x20 } + - { offset: 0x16A8DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC13durationLabelSo7UILabelCSgvsTo', symObjAddr: 0x200, symBinAddr: 0xE2010, symSize: 0x30 } + - { offset: 0x16A92D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0x230, symBinAddr: 0xE2040, symSize: 0x20 } + - { offset: 0x16A985, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC19firstPointImageViewSo07UIImageI0CSgvsTo', symObjAddr: 0x250, symBinAddr: 0xE2060, symSize: 0x30 } + - { offset: 0x16A9D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC20secondPointImageViewSo07UIImageI0CSgvgTo', symObjAddr: 0x280, symBinAddr: 0xE2090, symSize: 0x20 } + - { offset: 0x16AA27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC20secondPointImageViewSo07UIImageI0CSgvsTo', symObjAddr: 0x2A0, symBinAddr: 0xE20B0, symSize: 0x30 } + - { offset: 0x16AA76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC12awakeFromNibyyFTo', symObjAddr: 0x2D0, symBinAddr: 0xE20E0, symSize: 0x60 } + - { offset: 0x16ABFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC9configure3for2atyAA0D0VSg_SitF', symObjAddr: 0x330, symBinAddr: 0xE2140, symSize: 0x9B0 } + - { offset: 0x16B1C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC10removeDotsyyF', symObjAddr: 0xCE0, symBinAddr: 0xE2AF0, symSize: 0x260 } + - { offset: 0x16B54C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC8drawDotsyyF', symObjAddr: 0xF40, symBinAddr: 0xE2D50, symSize: 0x340 } + - { offset: 0x16B68E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15prepareForReuseyyF', symObjAddr: 0x1280, symBinAddr: 0xE3090, symSize: 0x390 } + - { offset: 0x16B838, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC15prepareForReuseyyFTo', symObjAddr: 0x1610, symBinAddr: 0xE3420, symSize: 0x30 } + - { offset: 0x16B84C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x1640, symBinAddr: 0xE3450, symSize: 0x130 } + - { offset: 0x16B88D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x1770, symBinAddr: 0xE3580, symSize: 0x30 } + - { offset: 0x16B8A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x17A0, symBinAddr: 0xE35B0, symSize: 0x120 } + - { offset: 0x16B8D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x18C0, symBinAddr: 0xE36D0, symSize: 0x30 } + - { offset: 0x16B8E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellCfD', symObjAddr: 0x18F0, symBinAddr: 0xE3700, symSize: 0x30 } + - { offset: 0x16B93A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7LegCellC9getLetter3for2atSo7UIImageCSgSo0J4ViewCSg_SitFTf4dnd_n', symObjAddr: 0x1AA0, symBinAddr: 0xE3840, symSize: 0x340 } + - { offset: 0x16BE04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC24setParkingLocationButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xE3B80, symSize: 0x20 } + - { offset: 0x16C109, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellCfETo', symObjAddr: 0xCA0, symBinAddr: 0xE4820, symSize: 0x70 } + - { offset: 0x16C138, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellCMa', symObjAddr: 0xD10, symBinAddr: 0xE4890, symSize: 0x20 } + - { offset: 0x16C14C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC23didTapSaveParkingButtonyyFyycACcfu_yycfu0_TA', symObjAddr: 0xDF0, symBinAddr: 0xE48E0, symSize: 0x20 } + - { offset: 0x16C293, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC24setParkingLocationButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xE3B80, symSize: 0x20 } + - { offset: 0x16C2F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC24setParkingLocationButtonSo8UIButtonCSgvsTo', symObjAddr: 0x20, symBinAddr: 0xE3BA0, symSize: 0x30 } + - { offset: 0x16C340, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x50, symBinAddr: 0xE3BD0, symSize: 0x20 } + - { offset: 0x16C393, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueButtonSo8UIButtonCSgvsTo', symObjAddr: 0x70, symBinAddr: 0xE3BF0, symSize: 0x30 } + - { offset: 0x16C3E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0xE3C20, symSize: 0x20 } + - { offset: 0x16C435, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0xE3C40, symSize: 0x30 } + - { offset: 0x16C4C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC12awakeFromNibyyF', symObjAddr: 0xF0, symBinAddr: 0xE3C70, symSize: 0x1A0 } + - { offset: 0x16C5A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x290, symBinAddr: 0xE3E10, symSize: 0x30 } + - { offset: 0x16C62A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC9configureyyF', symObjAddr: 0x2C0, symBinAddr: 0xE3E40, symSize: 0xD0 } + - { offset: 0x16C73B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC19shareLocationActionyySo8UIButtonCFTo', symObjAddr: 0x390, symBinAddr: 0xE3F10, symSize: 0x60 } + - { offset: 0x16C8BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC23didTapSaveParkingButtonyyF', symObjAddr: 0x3F0, symBinAddr: 0xE3F70, symSize: 0x540 } + - { offset: 0x16CC75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC23didTapSaveParkingButtonyyFTo', symObjAddr: 0x930, symBinAddr: 0xE44B0, symSize: 0x30 } + - { offset: 0x16CCAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC11saveParkingyyF', symObjAddr: 0x960, symBinAddr: 0xE44E0, symSize: 0x120 } + - { offset: 0x16CDA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueActionyySo8UIButtonCFTo', symObjAddr: 0xA80, symBinAddr: 0xE4600, symSize: 0x10 } + - { offset: 0x16CDCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfc', symObjAddr: 0xA90, symBinAddr: 0xE4610, symSize: 0xC0 } + - { offset: 0x16CE0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0xB50, symBinAddr: 0xE46D0, symSize: 0x30 } + - { offset: 0x16CE45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB80, symBinAddr: 0xE4700, symSize: 0xC0 } + - { offset: 0x16CE78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xC40, symBinAddr: 0xE47C0, symSize: 0x30 } + - { offset: 0x16CE8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellCfD', symObjAddr: 0xC70, symBinAddr: 0xE47F0, symSize: 0x30 } + - { offset: 0x16CEAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20MainPanelActionsCellC17reportIssueActionyySo8UIButtonCFTf4dd_n', symObjAddr: 0xE10, symBinAddr: 0xE4900, symSize: 0xD0 } + - { offset: 0x16D245, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCfE', symObjAddr: 0x0, symBinAddr: 0xE49D0, symSize: 0x30 } + - { offset: 0x16D25D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCfE', symObjAddr: 0x0, symBinAddr: 0xE49D0, symSize: 0x30 } + - { offset: 0x16D2C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCMU', symObjAddr: 0xB0, symBinAddr: 0xE4A80, symSize: 0x10 } + - { offset: 0x16D2D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCMa', symObjAddr: 0xC0, symBinAddr: 0xE4A90, symSize: 0x30 } + - { offset: 0x16D2ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCMr', symObjAddr: 0xF0, symBinAddr: 0xE4AC0, symSize: 0x80 } + - { offset: 0x16D338, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ImageCfD', symObjAddr: 0x30, symBinAddr: 0xE4A00, symSize: 0x80 } + - { offset: 0x16DC52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC19updateLayoutForText04textF0ySo06UITextF0C_tF', symObjAddr: 0x840, symBinAddr: 0xE5380, symSize: 0x160 } + - { offset: 0x16DCF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC19updateLayoutForText04textF0ySo06UITextF0C_tFyycfU_', symObjAddr: 0x1810, symBinAddr: 0xE6350, symSize: 0x50 } + - { offset: 0x16DE15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCfE', symObjAddr: 0x1380, symBinAddr: 0xE5EC0, symSize: 0x70 } + - { offset: 0x16DE42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCfETo', symObjAddr: 0x1420, symBinAddr: 0xE5F60, symSize: 0x70 } + - { offset: 0x16DE71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCMa', symObjAddr: 0x1490, symBinAddr: 0xE5FD0, symSize: 0x20 } + - { offset: 0x16DE94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF15DidBeginEditingyySo06UITextF0CFTo', symObjAddr: 0x14B0, symBinAddr: 0xE5FF0, symSize: 0x50 } + - { offset: 0x16DED5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF13DidEndEditingyySo06UITextF0CFTo', symObjAddr: 0x1500, symBinAddr: 0xE6040, symSize: 0x50 } + - { offset: 0x16DF16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF0_18shouldChangeTextIn011replacementK0SbSo06UITextF0C_So8_NSRangeVSStFTo', symObjAddr: 0x1550, symBinAddr: 0xE6090, symSize: 0x90 } + - { offset: 0x16DF75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF9DidChangeyySo06UITextF0CF', symObjAddr: 0x15E0, symBinAddr: 0xE6120, symSize: 0x1E0 } + - { offset: 0x16E06A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF9DidChangeyySo06UITextF0CFTo', symObjAddr: 0x17C0, symBinAddr: 0xE6300, symSize: 0x50 } + - { offset: 0x16E097, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyF', symObjAddr: 0x1860, symBinAddr: 0xE63A0, symSize: 0xF0 } + - { offset: 0x16E144, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x1950, symBinAddr: 0xE6490, symSize: 0x30 } + - { offset: 0x16E177, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x1980, symBinAddr: 0xE64C0, symSize: 0x30 } + - { offset: 0x16E1EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x19B0, symBinAddr: 0xE64F0, symSize: 0x250 } + - { offset: 0x16E411, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x1C00, symBinAddr: 0xE6740, symSize: 0x30 } + - { offset: 0x16E43C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1C30, symBinAddr: 0xE6770, symSize: 0x20 } + - { offset: 0x16E46E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC04textF0_18shouldChangeTextIn011replacementK0SbSo06UITextF0C_So8_NSRangeVSStFTf4nnnd_n', symObjAddr: 0x1DB0, symBinAddr: 0xE68F0, symSize: 0x150 } + - { offset: 0x16E4FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4dnn_n', symObjAddr: 0x1F00, symBinAddr: 0xE6A40, symSize: 0x210 } + - { offset: 0x16E6D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC19updateLayoutForText04textF0ySo06UITextF0C_tFyycfU_TA', symObjAddr: 0x2180, symBinAddr: 0xE6C80, symSize: 0x10 } + - { offset: 0x16E6E8, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2190, symBinAddr: 0xE6C90, symSize: 0x20 } + - { offset: 0x16E6FC, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x21B0, symBinAddr: 0xE6CB0, symSize: 0x10 } + - { offset: 0x16E910, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14labelTextfieldAA022PlaceholderEnabledTextF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xE4B40, symSize: 0x20 } + - { offset: 0x16E970, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14labelTextfieldAA022PlaceholderEnabledTextF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xE4B60, symSize: 0x20 } + - { offset: 0x16EA85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC9nameLabelSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0xE4B80, symSize: 0x20 } + - { offset: 0x16EADF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC9nameLabelSo7UILabelCSgvsTo', symObjAddr: 0x60, symBinAddr: 0xE4BA0, symSize: 0x20 } + - { offset: 0x16EB32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x80, symBinAddr: 0xE4BC0, symSize: 0x20 } + - { offset: 0x16EB87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0xA0, symBinAddr: 0xE4BE0, symSize: 0x20 } + - { offset: 0x16EBC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC13maximumHeight33_D05BDCBC073B527819C56126746805B0LL12CoreGraphics7CGFloatVvg', symObjAddr: 0xC0, symBinAddr: 0xE4C00, symSize: 0x40 } + - { offset: 0x16EBF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC24labelFieldHeightConstantSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x100, symBinAddr: 0xE4C40, symSize: 0x20 } + - { offset: 0x16EC51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC24labelFieldHeightConstantSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x120, symBinAddr: 0xE4C60, symSize: 0x20 } + - { offset: 0x16ECFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14applicableFont33_D05BDCBC073B527819C56126746805B0LLSo6UIFontCvpfiAGyXEfU_', symObjAddr: 0x140, symBinAddr: 0xE4C80, symSize: 0x120 } + - { offset: 0x16EDE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x260, symBinAddr: 0xE4DA0, symSize: 0xC0 } + - { offset: 0x16EE95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x320, symBinAddr: 0xE4E60, symSize: 0x30 } + - { offset: 0x16EF34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC03setC0yyF', symObjAddr: 0x350, symBinAddr: 0xE4E90, symSize: 0x4F0 } + - { offset: 0x16F2C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC21setAddressInformationyyF', symObjAddr: 0x9A0, symBinAddr: 0xE54E0, symSize: 0xE0 } + - { offset: 0x16F3AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0xA80, symBinAddr: 0xE55C0, symSize: 0x40 } + - { offset: 0x16F40E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0xAC0, symBinAddr: 0xE5600, symSize: 0x90 } + - { offset: 0x16F482, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC5closeyySo8UIButtonCFTo', symObjAddr: 0xB50, symBinAddr: 0xE5690, symSize: 0x40 } + - { offset: 0x16F4B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC4saveyySo8UIButtonCFTo', symObjAddr: 0xB90, symBinAddr: 0xE56D0, symSize: 0x50 } + - { offset: 0x16F4EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC06updateD033_D05BDCBC073B527819C56126746805B0LLyyF', symObjAddr: 0xBE0, symBinAddr: 0xE5720, symSize: 0x170 } + - { offset: 0x16F5BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC15saveSharedPlace33_D05BDCBC073B527819C56126746805B0LLyyF', symObjAddr: 0xD50, symBinAddr: 0xE5890, symSize: 0x330 } + - { offset: 0x16F848, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x1080, symBinAddr: 0xE5BC0, symSize: 0x150 } + - { offset: 0x16F889, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x11D0, symBinAddr: 0xE5D10, symSize: 0x50 } + - { offset: 0x16F89D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1220, symBinAddr: 0xE5D60, symSize: 0x130 } + - { offset: 0x16F8D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1350, symBinAddr: 0xE5E90, symSize: 0x30 } + - { offset: 0x16F8E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerCfD', symObjAddr: 0x13F0, symBinAddr: 0xE5F30, symSize: 0x30 } + - { offset: 0x16FA71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29FavoriteDetailsViewControllerC4saveyySo8UIButtonCFTf4dn_n', symObjAddr: 0x1C50, symBinAddr: 0xE6790, symSize: 0xB0 } + - { offset: 0x1707C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCfE', symObjAddr: 0x1420, symBinAddr: 0xE80E0, symSize: 0x140 } + - { offset: 0x1707EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCfETo', symObjAddr: 0x1590, symBinAddr: 0xE8250, symSize: 0x130 } + - { offset: 0x17081E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCMa', symObjAddr: 0x16C0, symBinAddr: 0xE8380, symSize: 0x20 } + - { offset: 0x170841, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_22numberOfItemsInSectionSiSo012UICollectionF0C_SitFTo', symObjAddr: 0x16E0, symBinAddr: 0xE83A0, symSize: 0x60 } + - { offset: 0x170902, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_13cellForItemAtSo012UICollectionF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1740, symBinAddr: 0xE8400, symSize: 0x540 } + - { offset: 0x170F92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_13cellForItemAtSo012UICollectionF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1C80, symBinAddr: 0xE8940, symSize: 0xB0 } + - { offset: 0x170FAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_15didSelectItemAtySo012UICollectionF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1D30, symBinAddr: 0xE89F0, symSize: 0x130 } + - { offset: 0x1710E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC23updateCategoryInFilters6sourceyAA13TagDataSource_p_tF', symObjAddr: 0x1E60, symBinAddr: 0xE8B20, symSize: 0x1B0 } + - { offset: 0x171333, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC24updateAmenitiesInFilters6sourceyAA13TagDataSource_p_tF', symObjAddr: 0x2010, symBinAddr: 0xE8CD0, symSize: 0x1B0 } + - { offset: 0x17157D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_15didSelectItemAtySo012UICollectionF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x21C0, symBinAddr: 0xE8E80, symSize: 0xA0 } + - { offset: 0x1715BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x2260, symBinAddr: 0xE8F20, symSize: 0x70 } + - { offset: 0x171630, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x22D0, symBinAddr: 0xE8F90, symSize: 0x30 } + - { offset: 0x1716B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC10setupPanelyyF', symObjAddr: 0x2300, symBinAddr: 0xE8FC0, symSize: 0x120 } + - { offset: 0x1717A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC10setupPanelyyFTo', symObjAddr: 0x2420, symBinAddr: 0xE90E0, symSize: 0x30 } + - { offset: 0x1717F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x24D0, symBinAddr: 0xE9110, symSize: 0xC0 } + - { offset: 0x17182B, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x25C0, symBinAddr: 0xE91F0, symSize: 0x20 } + - { offset: 0x17183F, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x25E0, symBinAddr: 0xE9210, symSize: 0x10 } + - { offset: 0x171853, size: 0x8, addend: 0x0, symName: '_$sSo16UICollectionViewCMa', symObjAddr: 0x2650, symBinAddr: 0xE9220, symSize: 0x40 } + - { offset: 0x17187D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC010collectionF0_22numberOfItemsInSectionSiSo012UICollectionF0C_SitFTf4ndn_n', symObjAddr: 0x2840, symBinAddr: 0xE93A0, symSize: 0xA0 } + - { offset: 0x171919, size: 0x8, addend: 0x0, symName: _keypath_get_selector_contentSize, symObjAddr: 0x2920, symBinAddr: 0xE9440, symSize: 0x10 } + - { offset: 0x17192D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC11viewDidLoadyyFySo012UICollectionF0C_10Foundation24NSKeyValueObservedChangeVySo6CGSizeVGtYbcfU_TA', symObjAddr: 0x2980, symBinAddr: 0xE94A0, symSize: 0x20 } + - { offset: 0x171941, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC11viewDidLoadyyFySo012UICollectionF0C_10Foundation24NSKeyValueObservedChangeVySo6CGSizeVGtYbcfU0_TA', symObjAddr: 0x29A0, symBinAddr: 0xE94C0, symSize: 0x1C } + - { offset: 0x1719B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC019amenitiesCollectionF0So012UICollectionF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0xE6CC0, symSize: 0x20 } + - { offset: 0x171A19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC019amenitiesCollectionF0So012UICollectionF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0xE6CE0, symSize: 0x20 } + - { offset: 0x171A6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC020categoriesCollectionF0So012UICollectionF0CSgvgTo', symObjAddr: 0x40, symBinAddr: 0xE6D00, symSize: 0x20 } + - { offset: 0x171AC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC020categoriesCollectionF0So012UICollectionF0CSgvsTo', symObjAddr: 0x60, symBinAddr: 0xE6D20, symSize: 0x20 } + - { offset: 0x171B14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC13openNowSwitchSo8UISwitchCSgvgTo', symObjAddr: 0x80, symBinAddr: 0xE6D40, symSize: 0x20 } + - { offset: 0x171B6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC13openNowSwitchSo8UISwitchCSgvsTo', symObjAddr: 0xA0, symBinAddr: 0xE6D60, symSize: 0x30 } + - { offset: 0x171BBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC16categoriesHeightSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0xD0, symBinAddr: 0xE6D90, symSize: 0x20 } + - { offset: 0x171C15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC16categoriesHeightSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0xF0, symBinAddr: 0xE6DB0, symSize: 0x20 } + - { offset: 0x171C68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC15amenitiesHeightSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x110, symBinAddr: 0xE6DD0, symSize: 0x20 } + - { offset: 0x171CBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC15amenitiesHeightSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x130, symBinAddr: 0xE6DF0, symSize: 0x20 } + - { offset: 0x171D10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC08amentiesF0So6UIViewCSgvgTo', symObjAddr: 0x150, symBinAddr: 0xE6E10, symSize: 0x20 } + - { offset: 0x171D6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC08amentiesF0So6UIViewCSgvsTo', symObjAddr: 0x170, symBinAddr: 0xE6E30, symSize: 0x20 } + - { offset: 0x171DBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x190, symBinAddr: 0xE6E50, symSize: 0x20 } + - { offset: 0x171E17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC06scrollF0So08UIScrollF0CSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0xE6E70, symSize: 0x20 } + - { offset: 0x171FDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC11viewDidLoadyyF', symObjAddr: 0x1D0, symBinAddr: 0xE6E90, symSize: 0x660 } + - { offset: 0x172429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x950, symBinAddr: 0xE7610, symSize: 0x30 } + - { offset: 0x172476, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0x980, symBinAddr: 0xE7640, symSize: 0x40 } + - { offset: 0x1724FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC9setupDatayyF', symObjAddr: 0x9C0, symBinAddr: 0xE7680, symSize: 0xB0 } + - { offset: 0x1725E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC5closeyySo8UIButtonCFTo', symObjAddr: 0xA70, symBinAddr: 0xE7730, symSize: 0x50 } + - { offset: 0x172619, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC05applyE0yySo8UIButtonCFTo', symObjAddr: 0xAC0, symBinAddr: 0xE7780, symSize: 0x50 } + - { offset: 0x172657, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC13toggleOpenNowyySo8UISwitchCFTo', symObjAddr: 0xB10, symBinAddr: 0xE77D0, symSize: 0x50 } + - { offset: 0x1726F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xB60, symBinAddr: 0xE7820, symSize: 0x430 } + - { offset: 0x1728B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xF90, symBinAddr: 0xE7C50, symSize: 0x50 } + - { offset: 0x1728FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xFE0, symBinAddr: 0xE7CA0, symSize: 0x410 } + - { offset: 0x172AA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x13F0, symBinAddr: 0xE80B0, symSize: 0x30 } + - { offset: 0x172ABC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerCfD', symObjAddr: 0x1560, symBinAddr: 0xE8220, symSize: 0x30 } + - { offset: 0x172C77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC5closeyySo8UIButtonCFTf4dn_n', symObjAddr: 0x2700, symBinAddr: 0xE9260, symSize: 0x70 } + - { offset: 0x172D02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23AllFilterViewControllerC05applyE0yySo8UIButtonCFTf4dn_n', symObjAddr: 0x2770, symBinAddr: 0xE92D0, symSize: 0xD0 } + - { offset: 0x173CA6, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE9indenting33_AA9324E1861CF61D6C42F582051A183CLL6spacesSSSi_tF', symObjAddr: 0x2660, symBinAddr: 0xEBB40, symSize: 0x200 } + - { offset: 0x1742FA, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_SS_Tg5048$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_K9SSG_Tt1G5Tf1nnncn_n', symObjAddr: 0x5EC0, symBinAddr: 0xEF3A0, symSize: 0x4D0 } + - { offset: 0x174A81, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5052$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8ef9UI3DOMO10ij2V8K8OG_Tt1G5Tf1nnncn_n', symObjAddr: 0x6390, symBinAddr: 0xEF870, symSize: 0x730 } + - { offset: 0x1751B3, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSrySSG_Tg508$sSTsSL7h33RpzrlE6sortedSayABGyFSbAB_ABtcfu_N9SSG_Tt1G5Tf1nncn_n', symObjAddr: 0x6AC0, symBinAddr: 0xEFFA0, symSize: 0xE0 } + - { offset: 0x17535B, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry8PenNavUI3DOMO10StyleSheetV8SelectorOG_Tg508$sSTsSL7h37RpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8ij9UI3DOMO10mn2V8O8OG_Tt1G5Tf1nncn_n', symObjAddr: 0x6BA0, symBinAddr: 0xF0080, symSize: 0x170 } + - { offset: 0x175567, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKFSS_Tg5048$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_L9SSG_Tt1G5Tf1nncn_n', symObjAddr: 0x6D10, symBinAddr: 0xF01F0, symSize: 0x2C0 } + - { offset: 0x1758F3, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5052$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8fg9UI3DOMO10jk2V8L8OG_Tt1G5Tf1nncn_n', symObjAddr: 0x6FD0, symBinAddr: 0xF04B0, symSize: 0x2B0 } + - { offset: 0x175C95, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlFSS_Tg5048$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_M9SSG_Tt1G5Tf1nnnnc_n', symObjAddr: 0x7280, symBinAddr: 0xF0760, symSize: 0x280 } + - { offset: 0x175E60, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5052$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8gh9UI3DOMO10kl2V8M8OG_Tt1G5Tf1nnnnc_n', symObjAddr: 0x7500, symBinAddr: 0xF09E0, symSize: 0x3D0 } + - { offset: 0x176081, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVWOc', symObjAddr: 0x78D0, symBinAddr: 0xF0DB0, symSize: 0x30 } + - { offset: 0x176095, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVWOh', symObjAddr: 0x7900, symBinAddr: 0xF0DE0, symSize: 0x30 } + - { offset: 0x1760A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVACs010TextOutputF0AAWl', symObjAddr: 0x79D0, symBinAddr: 0xF0E10, symSize: 0x30 } + - { offset: 0x1760BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOAGsAfAWl', symObjAddr: 0x7A00, symBinAddr: 0xF0E40, symSize: 0x30 } + - { offset: 0x1760D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVWOc', symObjAddr: 0x7AB0, symBinAddr: 0xF0E70, symSize: 0x30 } + - { offset: 0x1760E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVWOh', symObjAddr: 0x7AE0, symBinAddr: 0xF0EA0, symSize: 0x30 } + - { offset: 0x1760F9, size: 0x8, addend: 0x0, symName: '_$sSTsSL7ElementRpzrlE6sortedSayABGyFSbAB_ABtcfu_Say8PenNavUI3DOMO10StyleSheetV8SelectorOG_Tt1g5', symObjAddr: 0x7B80, symBinAddr: 0xF0ED0, symSize: 0xB0 } + - { offset: 0x176280, size: 0x8, addend: 0x0, symName: '_$sSD5IndexV8_VariantOyS2S__GWOe', symObjAddr: 0x8D10, symBinAddr: 0xF1FF0, symSize: 0x20 } + - { offset: 0x176294, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOWOb', symObjAddr: 0x8D60, symBinAddr: 0xF2010, symSize: 0x30 } + - { offset: 0x1762A8, size: 0x8, addend: 0x0, symName: ___swift_initWithCopy_strong, symObjAddr: 0x8DF0, symBinAddr: 0xF2070, symSize: 0x20 } + - { offset: 0x1762BC, size: 0x8, addend: 0x0, symName: ___swift_destroy_strong, symObjAddr: 0x8E10, symBinAddr: 0xF2090, symSize: 0x10 } + - { offset: 0x1762D0, size: 0x8, addend: 0x0, symName: ___swift_assignWithCopy_strong, symObjAddr: 0x8E20, symBinAddr: 0xF20A0, symSize: 0x30 } + - { offset: 0x1762E4, size: 0x8, addend: 0x0, symName: ___swift_memcpy8_8, symObjAddr: 0x8E50, symBinAddr: 0xF20D0, symSize: 0x10 } + - { offset: 0x1762F8, size: 0x8, addend: 0x0, symName: ___swift_assignWithTake_strong, symObjAddr: 0x8E60, symBinAddr: 0xF20E0, symSize: 0x30 } + - { offset: 0x17630C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOwet', symObjAddr: 0x8E90, symBinAddr: 0xF2110, symSize: 0x40 } + - { offset: 0x176320, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOwst', symObjAddr: 0x8ED0, symBinAddr: 0xF2150, symSize: 0x40 } + - { offset: 0x176334, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOMa', symObjAddr: 0x8F40, symBinAddr: 0xF2190, symSize: 0xA } + - { offset: 0x17642C, size: 0x8, addend: 0x0, symName: '_$sSlsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lFSDyS2SG_SSs5NeverOTg5031$sS3SIgggo_SS3key_SS5valuetSSs5D132OIegnrzr_TR108$s8PenNavUI3XMLO9FormatterV3SVGV18makeStyleAttribute4fromSSSgAA3DOMO22PresentationAttributesV_tFS2S_SStXEfU_Tf3nnnpf_nTf1cn_n', symObjAddr: 0x0, symBinAddr: 0xE94E0, symSize: 0x300 } + - { offset: 0x1766BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOsAfAsAFP7_domainSSvgTW', symObjAddr: 0x380, symBinAddr: 0xE9860, symSize: 0x10 } + - { offset: 0x1766DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOsAfAsAFP5_codeSivgTW', symObjAddr: 0x390, symBinAddr: 0xE9870, symSize: 0x10 } + - { offset: 0x1766F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOsAfAsAFP9_userInfoyXlSgvgTW', symObjAddr: 0x3A0, symBinAddr: 0xE9880, symSize: 0x10 } + - { offset: 0x176712, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV5ErrorOsAfAsAFP19_getEmbeddedNSErroryXlSgyFTW', symObjAddr: 0x3B0, symBinAddr: 0xE9890, symSize: 0x10 } + - { offset: 0x176D49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV18makeStyleAttribute4fromSSSgAA3DOMO22PresentationAttributesV_tF', symObjAddr: 0x3D20, symBinAddr: 0xED200, symSize: 0x120 } + - { offset: 0x176FC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMOAFC_tKF', symObjAddr: 0x3C0, symBinAddr: 0xE98A0, symSize: 0x7A0 } + - { offset: 0x17750F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV22makeGraphicsAttributes4fromSDyS2SGAA3DOMO0H7ElementC_tF', symObjAddr: 0xB60, symBinAddr: 0xEA040, symSize: 0x240 } + - { offset: 0x177680, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV10makeStylesySayAC7ElementCGSayAA3DOMO10StyleSheetVGKF', symObjAddr: 0xDA0, symBinAddr: 0xEA280, symSize: 0x210 } + - { offset: 0x17799B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV8makeDefsyAC7ElementCSgAA3DOMOAFC0H0VKF', symObjAddr: 0xFB0, symBinAddr: 0xEA490, symSize: 0x320 } + - { offset: 0x177D52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV12makeElements4fromSayAC7ElementCGx_tKSTRzAA3DOMO08GraphicsJ0CAJRtzlFSayAPG_Tg5', symObjAddr: 0x12D0, symBinAddr: 0xEA7B0, symSize: 0x590 } + - { offset: 0x17813E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV12makeElements4fromSayAC7ElementCGx_tKSTRzAA3DOMO08GraphicsJ0CAJRtzlFSD6ValuesVySSAP_G_Tg5', symObjAddr: 0x1860, symBinAddr: 0xEAD40, symSize: 0x560 } + - { offset: 0x178438, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV9makeStyleyAC7ElementCSgAA3DOMO0H5SheetVKF', symObjAddr: 0x1DC0, symBinAddr: 0xEB2A0, symSize: 0x8A0 } + - { offset: 0x178E53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV22makeGraphicsAttributes4fromSDyS2SGAA3DOMO012PresentationI0V_tF', symObjAddr: 0x2860, symBinAddr: 0xEBD40, symSize: 0x14C0 } + - { offset: 0x17A269, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV15encodeTransformySSAA3DOMO0H0OF', symObjAddr: 0x3E40, symBinAddr: 0xED320, symSize: 0x3E0 } + - { offset: 0x17A634, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO08GraphicsH0C_tKF', symObjAddr: 0x4220, symBinAddr: 0xED700, symSize: 0x300 } + - { offset: 0x17A7A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO4RectC_tF', symObjAddr: 0x4520, symBinAddr: 0xEDA00, symSize: 0x460 } + - { offset: 0x17ACA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO3UseC_tF', symObjAddr: 0x4980, symBinAddr: 0xEDE60, symSize: 0x2D0 } + - { offset: 0x17AF4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO4TextC_tF', symObjAddr: 0x4C50, symBinAddr: 0xEE130, symSize: 0x220 } + - { offset: 0x17B197, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO6AnchorC_tF', symObjAddr: 0x4E70, symBinAddr: 0xEE350, symSize: 0x1B0 } + - { offset: 0x17B28D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11makeElement4fromAC0H0CAA3DOMO4PathC_tF', symObjAddr: 0x5020, symBinAddr: 0xEE500, symSize: 0x120 } + - { offset: 0x17B377, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV14encodeSegmentsySSSayAA3DOMO4PathC7SegmentOGF', symObjAddr: 0x5140, symBinAddr: 0xEE620, symSize: 0x170 } + - { offset: 0x17B5FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV13encodeSegmentySSAA3DOMO4PathC0H0OF', symObjAddr: 0x52B0, symBinAddr: 0xEE790, symSize: 0xB20 } + - { offset: 0x17C6A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV11encodeColor4fromSSAA3DOMO0H0O_tFTf4nd_n', symObjAddr: 0x7C30, symBinAddr: 0xF0F80, symSize: 0x5C0 } + - { offset: 0x17CE6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV13sortSelectorsySayAA3DOMO10StyleSheetV8SelectorOGxSTRzAN7ElementRtzlFSD4KeysVyAnJ22PresentationAttributesV_G_Tg5Tf4nd_n', symObjAddr: 0x8320, symBinAddr: 0xF1670, symSize: 0x5D0 } + - { offset: 0x17D3DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9FormatterV3SVGV18makeLinearGradientyAC7ElementCAA3DOMO0hI0CFTf4nd_n', symObjAddr: 0x88F0, symBinAddr: 0xF1C40, symSize: 0x3B0 } + - { offset: 0x17DBEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12TimerManagerC05startD0yyFZySo7NSTimerCYbcfU_', symObjAddr: 0x0, symBinAddr: 0xF21A0, symSize: 0x80 } + - { offset: 0x17DC0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12TimerManagerC5timer33_CC8C55DF2BE95D919F2CE62DA66C3617LLSo7NSTimerCSgvpZ', symObjAddr: 0xB8, symBinAddr: 0x39E848, symSize: 0x0 } + - { offset: 0x17DC62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12TimerManagerCMa', symObjAddr: 0xA0, symBinAddr: 0xF2220, symSize: 0x14 } + - { offset: 0x17DCD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12TimerManagerC05startD0yyFZySo7NSTimerCYbcfU_', symObjAddr: 0x0, symBinAddr: 0xF21A0, symSize: 0x80 } + - { offset: 0x17E085, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x0, symBinAddr: 0xF2240, symSize: 0xA0 } + - { offset: 0x17E13E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewCfETo', symObjAddr: 0x100, symBinAddr: 0xF2340, symSize: 0x40 } + - { offset: 0x17E16D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewCMa', symObjAddr: 0x140, symBinAddr: 0xF2380, symSize: 0x14 } + - { offset: 0x17E1DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x0, symBinAddr: 0xF2240, symSize: 0xA0 } + - { offset: 0x17E24F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xA0, symBinAddr: 0xF22E0, symSize: 0x30 } + - { offset: 0x17E2AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9BadgeViewCfD', symObjAddr: 0xD0, symBinAddr: 0xF2310, symSize: 0x30 } + - { offset: 0x17E65C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOMa', symObjAddr: 0x1A0, symBinAddr: 0xF23A0, symSize: 0x10 } + - { offset: 0x17E670, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x1B0, symBinAddr: 0xF23B0, symSize: 0x10 } + - { offset: 0x17E684, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10TravelModeOGSayxGSlsWl', symObjAddr: 0x1C0, symBinAddr: 0xF23C0, symSize: 0x40 } + - { offset: 0x17E698, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10TravelModeOGMa', symObjAddr: 0x200, symBinAddr: 0xF2400, symSize: 0x30 } + - { offset: 0x17E83F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSHAASQWb', symObjAddr: 0x860, symBinAddr: 0xF2A60, symSize: 0x10 } + - { offset: 0x17E853, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOACSQAAWl', symObjAddr: 0x870, symBinAddr: 0xF2A70, symSize: 0x30 } + - { offset: 0x17E8B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeO5imageSo7UIImageCvg', symObjAddr: 0x230, symBinAddr: 0xF2430, symSize: 0x310 } + - { offset: 0x17EA29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x540, symBinAddr: 0xF2740, symSize: 0x10 } + - { offset: 0x17EA90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSHAASH9hashValueSivgTW', symObjAddr: 0x550, symBinAddr: 0xF2750, symSize: 0xC0 } + - { offset: 0x17EB3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x610, symBinAddr: 0xF2810, symSize: 0xA0 } + - { offset: 0x17EBA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x6B0, symBinAddr: 0xF28B0, symSize: 0xC0 } + - { offset: 0x17EC8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x770, symBinAddr: 0xF2970, symSize: 0x30 } + - { offset: 0x17ECB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x7A0, symBinAddr: 0xF29A0, symSize: 0x90 } + - { offset: 0x17ECEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeOs12CaseIterableAAsADP8allCases03AllI0QzvgZTW', symObjAddr: 0x830, symBinAddr: 0xF2A30, symSize: 0x30 } + - { offset: 0x17ED30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10TravelModeO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x8A0, symBinAddr: 0xF2AA0, symSize: 0x60 } + - { offset: 0x17F2C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseCMa', symObjAddr: 0x1A0, symBinAddr: 0xF2B40, symSize: 0x20 } + - { offset: 0x17F2DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOAFs0G3KeyAAWl', symObjAddr: 0x500, symBinAddr: 0xF2E30, symSize: 0x30 } + - { offset: 0x17F2EF, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI8FavoriteCGMa', symObjAddr: 0x560, symBinAddr: 0xF2E60, symSize: 0x50 } + - { offset: 0x17F303, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOMa', symObjAddr: 0x790, symBinAddr: 0xF2F50, symSize: 0x10 } + - { offset: 0x17F317, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOSHAASQWb', symObjAddr: 0x7A0, symBinAddr: 0xF2F60, symSize: 0x10 } + - { offset: 0x17F32B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOAFSQAAWl', symObjAddr: 0x7B0, symBinAddr: 0xF2F70, symSize: 0x30 } + - { offset: 0x17F33F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x7E0, symBinAddr: 0xF2FA0, symSize: 0x10 } + - { offset: 0x17F353, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x7F0, symBinAddr: 0xF2FB0, symSize: 0x30 } + - { offset: 0x17F367, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x820, symBinAddr: 0xF2FE0, symSize: 0x10 } + - { offset: 0x17F37B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x830, symBinAddr: 0xF2FF0, symSize: 0x2D } + - { offset: 0x17F3A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x140, symBinAddr: 0xF2B00, symSize: 0x20 } + - { offset: 0x17F3C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC10CodingKeys33_5C5F919966167684C639FDA8387660E5LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x160, symBinAddr: 0xF2B20, symSize: 0x20 } + - { offset: 0x17F409, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x1C0, symBinAddr: 0xF2B60, symSize: 0x100 } + - { offset: 0x17F43A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x2C0, symBinAddr: 0xF2C60, symSize: 0x160 } + - { offset: 0x17F478, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x420, symBinAddr: 0xF2DC0, symSize: 0x50 } + - { offset: 0x17F4A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFavoriteResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x470, symBinAddr: 0xF2E10, symSize: 0x20 } + - { offset: 0x17FAD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVMa', symObjAddr: 0x330, symBinAddr: 0xF3350, symSize: 0x30 } + - { offset: 0x18069B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV20makeStrokeAttributes4withAC0hI0VAE5StateV_tF', symObjAddr: 0x1FA0, symBinAddr: 0xF4FC0, symSize: 0x400 } + - { offset: 0x180908, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeFillAttributes4withAC0hI0VAE5StateV_tF', symObjAddr: 0x23A0, symBinAddr: 0xF53C0, symSize: 0xA50 } + - { offset: 0x180B6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeFillAttributes4withAC0hI0VAE5StateV_tFSbAA3DOMO7PatternVXEfU_', symObjAddr: 0x2DF0, symBinAddr: 0xF5E10, symSize: 0x80 } + - { offset: 0x180BCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11makePattern3forAC0H0CAA3DOMOAHV_tF', symObjAddr: 0x2E70, symBinAddr: 0xF5E90, symSize: 0x3A0 } + - { offset: 0x180FBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV12makeGradient3forAC06LinearH0VSgAA3DOMOAHC_tF', symObjAddr: 0x3210, symBinAddr: 0xF6230, symSize: 0x750 } + - { offset: 0x18199A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV12makeGradient3forAC06RadialH0VSgAA3DOMOAHC_tF', symObjAddr: 0x3960, symBinAddr: 0xF6980, symSize: 0x860 } + - { offset: 0x1822D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11createState3for10inheritingAE0H0VAA3DOMO22PresentationAttributesV_AJtFZ', symObjAddr: 0x4260, symBinAddr: 0xF7280, symSize: 0x5E0 } + - { offset: 0x1823F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV17makeGradientStops3forSayAC0H0V4StopVGAA3DOMO06LinearH0C_tFTf4nd_n', symObjAddr: 0x4840, symBinAddr: 0xF7860, symSize: 0x190 } + - { offset: 0x1825BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV17makeGradientStops3forSayAC0H0V4StopVGAA3DOMO06RadialH0C_tFTf4nd_n', symObjAddr: 0x49D0, symBinAddr: 0xF79F0, symSize: 0x190 } + - { offset: 0x182736, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeTextAttributes4withAC0hI0VAE5StateV_tFZTf4nd_g', symObjAddr: 0x4B60, symBinAddr: 0xF7B80, symSize: 0x150 } + - { offset: 0x182810, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOSgWOg', symObjAddr: 0x4EC0, symBinAddr: 0xF7EA0, symSize: 0x30 } + - { offset: 0x182824, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV15makeAllContents4from4withSayAC0D0C0I0OGAA3DOMO15GraphicsElementC_AE5StateVtFyAQXEfU_TA', symObjAddr: 0x4F40, symBinAddr: 0xF7ED0, symSize: 0x20 } + - { offset: 0x182838, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOc', symObjAddr: 0x4F90, symBinAddr: 0xF7EF0, symSize: 0x30 } + - { offset: 0x18284C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOi2_', symObjAddr: 0x4FC0, symBinAddr: 0xF7F20, symSize: 0x30 } + - { offset: 0x182860, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOSgWOi0_', symObjAddr: 0x4FF0, symBinAddr: 0xF7F50, symSize: 0x50 } + - { offset: 0x182874, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOAEsAdAWl', symObjAddr: 0x5050, symBinAddr: 0xF7FA0, symSize: 0x30 } + - { offset: 0x182888, size: 0x8, addend: 0x0, symName: '_$sSS8mimeType_10Foundation4DataV4datatSgWOe', symObjAddr: 0x5100, symBinAddr: 0xF7FD0, symSize: 0x30 } + - { offset: 0x18289C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOi0_', symObjAddr: 0x5130, symBinAddr: 0xF8000, symSize: 0x30 } + - { offset: 0x1828B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOi_', symObjAddr: 0x5160, symBinAddr: 0xF8030, symSize: 0x30 } + - { offset: 0x1828C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0OWOe', symObjAddr: 0x51F0, symBinAddr: 0xF8060, symSize: 0x50 } + - { offset: 0x1828D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVWOc', symObjAddr: 0x5240, symBinAddr: 0xF80B0, symSize: 0x30 } + - { offset: 0x1828EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVWOh', symObjAddr: 0x5270, symBinAddr: 0xF80E0, symSize: 0x30 } + - { offset: 0x182900, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeFillAttributes4withAC0hI0VAE5StateV_tFSbAA3DOMO14LinearGradientCXEfU0_TA', symObjAddr: 0x52A0, symBinAddr: 0xF8110, symSize: 0x10 } + - { offset: 0x182914, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV18makeFillAttributes4withAC0hI0VAE5StateV_tFSbAA3DOMO7PatternVXEfU_TA', symObjAddr: 0x52B0, symBinAddr: 0xF8120, symSize: 0x10 } + - { offset: 0x182928, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVSgWOe', symObjAddr: 0x52C0, symBinAddr: 0xF8130, symSize: 0x30 } + - { offset: 0x18293C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVWOc', symObjAddr: 0x52F0, symBinAddr: 0xF8160, symSize: 0x30 } + - { offset: 0x182950, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVWOh', symObjAddr: 0x5320, symBinAddr: 0xF8190, symSize: 0x30 } + - { offset: 0x182964, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOWOd', symObjAddr: 0x53B0, symBinAddr: 0xF81C0, symSize: 0x30 } + - { offset: 0x182978, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwCP', symObjAddr: 0x5450, symBinAddr: 0xF81F0, symSize: 0x240 } + - { offset: 0x18298C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwxx', symObjAddr: 0x5690, symBinAddr: 0xF8430, symSize: 0xD0 } + - { offset: 0x1829A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwcp', symObjAddr: 0x5760, symBinAddr: 0xF8500, symSize: 0x220 } + - { offset: 0x1829B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwca', symObjAddr: 0x5980, symBinAddr: 0xF8720, symSize: 0x2E0 } + - { offset: 0x1829C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwtk', symObjAddr: 0x5C60, symBinAddr: 0xF8A00, symSize: 0x200 } + - { offset: 0x1829DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwta', symObjAddr: 0x5E60, symBinAddr: 0xF8C00, symSize: 0x2D0 } + - { offset: 0x1829F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwet', symObjAddr: 0x6130, symBinAddr: 0xF8ED0, symSize: 0x20 } + - { offset: 0x182A04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVwst', symObjAddr: 0x61D0, symBinAddr: 0xF8F70, symSize: 0x20 } + - { offset: 0x182A18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV5StateVMr', symObjAddr: 0x6270, symBinAddr: 0xF9010, symSize: 0x110 } + - { offset: 0x182A8E, size: 0x8, addend: 0x0, symName: '_$sSTsE7forEachyyy7ElementQzKXEKFSay8PenNavUI3DOMO08GraphicsC0CG_Tg5', symObjAddr: 0x0, symBinAddr: 0xF3020, symSize: 0x110 } + - { offset: 0x182FE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV04makeD0AC0D0CyF', symObjAddr: 0x110, symBinAddr: 0xF3130, symSize: 0x220 } + - { offset: 0x1831BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV04makeD04from10inheritingAC0D0CAA3DOMO15GraphicsElementC_AE5StateVtF', symObjAddr: 0x360, symBinAddr: 0xF3380, symSize: 0x960 } + - { offset: 0x183B4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV16createClipShapes3forSayAC5ShapeOGAA3DOMO15GraphicsElementC_tF', symObjAddr: 0xCC0, symBinAddr: 0xF3CE0, symSize: 0x370 } + - { offset: 0x183F10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV010createMaskD03forAC0D0CSgAA3DOMO15GraphicsElementC_tF', symObjAddr: 0x1030, symBinAddr: 0xF4050, symSize: 0x760 } + - { offset: 0x1844E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV15makeAllContents4from4withSayAC0D0C0I0OGAA3DOMO15GraphicsElementC_AE5StateVtF', symObjAddr: 0x1790, symBinAddr: 0xF47B0, symSize: 0x240 } + - { offset: 0x184617, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV15makeAllContents4from4withSayAC0D0C0I0OGAA3DOMO15GraphicsElementC_AE5StateVtFyAQXEfU_', symObjAddr: 0x1EA0, symBinAddr: 0xF4EC0, symSize: 0x100 } + - { offset: 0x184787, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV12makeContents4from4withAC0D0C0H0OSgAA3DOMO15GraphicsElementC_AE5StateVtF', symObjAddr: 0x19D0, symBinAddr: 0xF49F0, symSize: 0x4D0 } + - { offset: 0x184BC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV13makeTransform3for5width6heightSayAC0H0OGAA3DOMO3SVGC7ViewBoxVSg_S2itFZTf4nnnd_n', symObjAddr: 0x4CB0, symBinAddr: 0xF7CD0, symSize: 0x1D0 } + - { offset: 0x1851EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseRadialGradientsySayAA3DOMO0F8GradientCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0xF9140, symSize: 0x320 } + - { offset: 0x185396, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseRadialGradientsySayAA3DOMO0F8GradientCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0xF9140, symSize: 0x320 } + - { offset: 0x1858F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV19parseRadialGradientyAA3DOMO0fG0CAA3XMLO7ElementCKFTf4nx_n', symObjAddr: 0x320, symBinAddr: 0xF9460, symSize: 0xBF0 } + - { offset: 0x185E1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOAGSYAAWl', symObjAddr: 0xFE0, symBinAddr: 0xFA050, symSize: 0x30 } + - { offset: 0x185E33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parsePercentageySfSgSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_TG5TA', symObjAddr: 0x1050, symBinAddr: 0xFA080, symSize: 0x10 } + - { offset: 0x185E47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOWOc', symObjAddr: 0x1060, symBinAddr: 0xFA090, symSize: 0x30 } + - { offset: 0x185E5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOWOh', symObjAddr: 0x1090, symBinAddr: 0xFA0C0, symSize: 0x30 } + - { offset: 0x185E6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOWOh', symObjAddr: 0x10C0, symBinAddr: 0xFA0F0, symSize: 0x21 } + - { offset: 0x18688B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterCMa', symObjAddr: 0x280, symBinAddr: 0xFA2D0, symSize: 0x20 } + - { offset: 0x18689F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC4copy4withyp10ObjectiveC6NSZoneVSg_tF', symObjAddr: 0x830, symBinAddr: 0xFA880, symSize: 0x100 } + - { offset: 0x186955, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC4copy4withyp10ObjectiveC6NSZoneVSg_tFTo', symObjAddr: 0x930, symBinAddr: 0xFA980, symSize: 0x60 } + - { offset: 0x186A0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleCMa', symObjAddr: 0x11F0, symBinAddr: 0xFB220, symSize: 0x20 } + - { offset: 0x186A1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOMa', symObjAddr: 0x13B0, symBinAddr: 0xFB240, symSize: 0x10 } + - { offset: 0x186AAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSHAASQWb', symObjAddr: 0x18C0, symBinAddr: 0xFB6F0, symSize: 0x10 } + - { offset: 0x186AC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOACSQAAWl', symObjAddr: 0x18D0, symBinAddr: 0xFB700, symSize: 0x30 } + - { offset: 0x186AD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOAFs0F3KeyAAWl', symObjAddr: 0x1940, symBinAddr: 0xFB730, symSize: 0x30 } + - { offset: 0x186AE9, size: 0x8, addend: 0x0, symName: '_$sSaySiGMa', symObjAddr: 0x1970, symBinAddr: 0xFB760, symSize: 0x30 } + - { offset: 0x186AFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOAEs0F3KeyAAWl', symObjAddr: 0x19A0, symBinAddr: 0xFB790, symSize: 0x30 } + - { offset: 0x186B11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOMa', symObjAddr: 0x1C10, symBinAddr: 0xFB840, symSize: 0x10 } + - { offset: 0x186B25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOMa', symObjAddr: 0x1DA0, symBinAddr: 0xFB850, symSize: 0x10 } + - { offset: 0x186B39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOSHAASQWb', symObjAddr: 0x1DB0, symBinAddr: 0xFB860, symSize: 0x10 } + - { offset: 0x186B4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOAFSQAAWl', symObjAddr: 0x1DC0, symBinAddr: 0xFB870, symSize: 0x30 } + - { offset: 0x186B61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSHAASQWb', symObjAddr: 0x1DF0, symBinAddr: 0xFB8A0, symSize: 0x10 } + - { offset: 0x186B75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOAESQAAWl', symObjAddr: 0x1E00, symBinAddr: 0xFB8B0, symSize: 0x30 } + - { offset: 0x186B89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1E30, symBinAddr: 0xFB8E0, symSize: 0x10 } + - { offset: 0x186B9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1E40, symBinAddr: 0xFB8F0, symSize: 0x30 } + - { offset: 0x186BB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1E70, symBinAddr: 0xFB920, symSize: 0x10 } + - { offset: 0x186BC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1E80, symBinAddr: 0xFB930, symSize: 0x30 } + - { offset: 0x186BD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1EB0, symBinAddr: 0xFB960, symSize: 0x10 } + - { offset: 0x186BED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1EC0, symBinAddr: 0xFB970, symSize: 0x30 } + - { offset: 0x186C01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1EF0, symBinAddr: 0xFB9A0, symSize: 0x10 } + - { offset: 0x186C15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x1F00, symBinAddr: 0xFB9B0, symSize: 0x30 } + - { offset: 0x186C57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x200, symBinAddr: 0xFA250, symSize: 0x20 } + - { offset: 0x186C73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x220, symBinAddr: 0xFA270, symSize: 0x20 } + - { offset: 0x186CF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x990, symBinAddr: 0xFA9E0, symSize: 0xE0 } + - { offset: 0x186E00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0xA70, symBinAddr: 0xFAAC0, symSize: 0x90 } + - { offset: 0x186EAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xB00, symBinAddr: 0xFAB50, symSize: 0x70 } + - { offset: 0x186F12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xB70, symBinAddr: 0xFABC0, symSize: 0x90 } + - { offset: 0x186FA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0xD30, symBinAddr: 0xFAD60, symSize: 0x20 } + - { offset: 0x186FBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0xD50, symBinAddr: 0xFAD80, symSize: 0x20 } + - { offset: 0x186FE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1600, symBinAddr: 0xFB430, symSize: 0xA0 } + - { offset: 0x1870CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSHAASH9hashValueSivgTW', symObjAddr: 0x16A0, symBinAddr: 0xFB4D0, symSize: 0x80 } + - { offset: 0x187167, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1720, symBinAddr: 0xFB550, symSize: 0x60 } + - { offset: 0x1871CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1780, symBinAddr: 0xFB5B0, symSize: 0x80 } + - { offset: 0x1872A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC13toggleOpenNowyyF', symObjAddr: 0x0, symBinAddr: 0xFA120, symSize: 0x60 } + - { offset: 0x187324, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x110, symBinAddr: 0xFA180, symSize: 0xB0 } + - { offset: 0x187354, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1C0, symBinAddr: 0xFA230, symSize: 0x20 } + - { offset: 0x1873A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterCfD', symObjAddr: 0x240, symBinAddr: 0xFA290, symSize: 0x40 } + - { offset: 0x1873DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC6encode2toys7Encoder_p_tKF', symObjAddr: 0x2A0, symBinAddr: 0xFA2F0, symSize: 0x270 } + - { offset: 0x18740B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x510, symBinAddr: 0xFA560, symSize: 0x2E0 } + - { offset: 0x18743C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x810, symBinAddr: 0xFA860, symSize: 0x20 } + - { offset: 0x1874FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xC00, symBinAddr: 0xFAC50, symSize: 0x30 } + - { offset: 0x187527, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0xC30, symBinAddr: 0xFAC80, symSize: 0x60 } + - { offset: 0x187562, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs0F3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xC90, symBinAddr: 0xFACE0, symSize: 0x60 } + - { offset: 0x1875B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysOs0F3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0xCF0, symBinAddr: 0xFAD40, symSize: 0x20 } + - { offset: 0x18762A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC6isOpenACSb_tcfc', symObjAddr: 0xD70, symBinAddr: 0xFADA0, symSize: 0x190 } + - { offset: 0x1876AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC6encode2toys7Encoder_p_tKF', symObjAddr: 0xF00, symBinAddr: 0xFAF30, symSize: 0x2D0 } + - { offset: 0x187762, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleCfD', symObjAddr: 0x11D0, symBinAddr: 0xFB200, symSize: 0x20 } + - { offset: 0x1877A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x13C0, symBinAddr: 0xFB250, symSize: 0x1A0 } + - { offset: 0x1877D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x15E0, symBinAddr: 0xFB410, symSize: 0x20 } + - { offset: 0x187831, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x1800, symBinAddr: 0xFB630, symSize: 0x70 } + - { offset: 0x18787E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SortMethodOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x1870, symBinAddr: 0xFB6A0, symSize: 0x50 } + - { offset: 0x1878A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SearchFilterC10CodingKeys33_41D41ADADA70D229E833C88488A21D94LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x1F30, symBinAddr: 0xFB9E0, symSize: 0x1D0 } + - { offset: 0x187960, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14FilterScheduleC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x2100, symBinAddr: 0xFBBB0, symSize: 0x60 } + - { offset: 0x187D40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xFBC10, symSize: 0x20 } + - { offset: 0x18866F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17displayFilterData33_328DE9E08D573BB4E70209B25156AC30LLyyF', symObjAddr: 0x1D00, symBinAddr: 0xFD910, symSize: 0x4D0 } + - { offset: 0x188A88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsCfETo', symObjAddr: 0x2870, symBinAddr: 0xFE480, symSize: 0x130 } + - { offset: 0x188AB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsCMa', symObjAddr: 0x29A0, symBinAddr: 0xFE5B0, symSize: 0x20 } + - { offset: 0x188B09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC20toggleSelectionColor33_328DE9E08D573BB4E70209B25156AC30LL13containerView0P4Text5valueySo6UIViewC_So7UILabelCSbtFTf4nnnd_n', symObjAddr: 0x29C0, symBinAddr: 0xFE5D0, symSize: 0x1C0 } + - { offset: 0x188BDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC13isHighlightedSbvWyycfU0_TA', symObjAddr: 0x2BE0, symBinAddr: 0xFE7B0, symSize: 0x10 } + - { offset: 0x188BF0, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2BF0, symBinAddr: 0xFE7C0, symSize: 0x20 } + - { offset: 0x188C04, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2C10, symBinAddr: 0xFE7E0, symSize: 0x10 } + - { offset: 0x188C18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyFyycfU_TA', symObjAddr: 0x2C60, symBinAddr: 0xFE7F0, symSize: 0x10 } + - { offset: 0x188C2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyFyycfU0_TA', symObjAddr: 0x2C70, symBinAddr: 0xFE800, symSize: 0x10 } + - { offset: 0x188C40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC22customizeOpenNowFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_TA', symObjAddr: 0x2C90, symBinAddr: 0xFE810, symSize: 0x10 } + - { offset: 0x188C54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC23customizeCategoryFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_TA', symObjAddr: 0x2CA0, symBinAddr: 0xFE820, symSize: 0x10 } + - { offset: 0x188C68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC22customizeAmenityFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_TA', symObjAddr: 0x2CB0, symBinAddr: 0xFE830, symSize: 0x10 } + - { offset: 0x188C7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC19customizeAllFilters33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_TA', symObjAddr: 0x2CC0, symBinAddr: 0xFE840, symSize: 0x10 } + - { offset: 0x188F3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0xFBC10, symSize: 0x20 } + - { offset: 0x188F99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11contentViewSo6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0xFBC30, symSize: 0x30 } + - { offset: 0x188FE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC10filterViewAA06HapticG0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0xFBC60, symSize: 0x20 } + - { offset: 0x189040, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC10filterViewAA06HapticG0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0xFBC80, symSize: 0x30 } + - { offset: 0x18908F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC8sortViewAA06HapticG0CSgvgTo', symObjAddr: 0xA0, symBinAddr: 0xFBCB0, symSize: 0x20 } + - { offset: 0x1890E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC8sortViewAA06HapticG0CSgvsTo', symObjAddr: 0xC0, symBinAddr: 0xFBCD0, symSize: 0x30 } + - { offset: 0x189131, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC15sortMethodLabelSo7UILabelCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0xFBD00, symSize: 0x20 } + - { offset: 0x189189, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC15sortMethodLabelSo7UILabelCSgvsTo', symObjAddr: 0x110, symBinAddr: 0xFBD20, symSize: 0x30 } + - { offset: 0x1891D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12categoryViewAA06HapticG0CSgvgTo', symObjAddr: 0x140, symBinAddr: 0xFBD50, symSize: 0x20 } + - { offset: 0x18922D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12categoryViewAA06HapticG0CSgvsTo', symObjAddr: 0x160, symBinAddr: 0xFBD70, symSize: 0x20 } + - { offset: 0x189280, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13categoryLabelSo7UILabelCSgvgTo', symObjAddr: 0x180, symBinAddr: 0xFBD90, symSize: 0x20 } + - { offset: 0x1892D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13categoryLabelSo7UILabelCSgvsTo', symObjAddr: 0x1A0, symBinAddr: 0xFBDB0, symSize: 0x20 } + - { offset: 0x189328, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13amenitiesViewAA06HapticG0CSgvgTo', symObjAddr: 0x1C0, symBinAddr: 0xFBDD0, symSize: 0x20 } + - { offset: 0x18937D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13amenitiesViewAA06HapticG0CSgvsTo', symObjAddr: 0x1E0, symBinAddr: 0xFBDF0, symSize: 0x20 } + - { offset: 0x1893D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC14amenitiesLabelSo7UILabelCSgvgTo', symObjAddr: 0x200, symBinAddr: 0xFBE10, symSize: 0x20 } + - { offset: 0x189425, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC14amenitiesLabelSo7UILabelCSgvsTo', symObjAddr: 0x220, symBinAddr: 0xFBE30, symSize: 0x20 } + - { offset: 0x189478, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11openNowViewAA06HapticH0CSgvgTo', symObjAddr: 0x240, symBinAddr: 0xFBE50, symSize: 0x20 } + - { offset: 0x1894CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC11openNowViewAA06HapticH0CSgvsTo', symObjAddr: 0x260, symBinAddr: 0xFBE70, symSize: 0x30 } + - { offset: 0x18951A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12openNowLabelSo7UILabelCSgvgTo', symObjAddr: 0x290, symBinAddr: 0xFBEA0, symSize: 0x20 } + - { offset: 0x18956F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12openNowLabelSo7UILabelCSgvsTo', symObjAddr: 0x2B0, symBinAddr: 0xFBEC0, symSize: 0x20 } + - { offset: 0x1895C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC10scrollViewSo08UIScrollG0CSgvgTo', symObjAddr: 0x2D0, symBinAddr: 0xFBEE0, symSize: 0x20 } + - { offset: 0x18961C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC10scrollViewSo08UIScrollG0CSgvsTo', symObjAddr: 0x2F0, symBinAddr: 0xFBF00, symSize: 0x20 } + - { offset: 0x18966F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12optionsStackSo11UIStackViewCSgvgTo', symObjAddr: 0x310, symBinAddr: 0xFBF20, symSize: 0x20 } + - { offset: 0x1896C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC12optionsStackSo11UIStackViewCSgvsTo', symObjAddr: 0x330, symBinAddr: 0xFBF40, symSize: 0x20 } + - { offset: 0x189887, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC5frameACSo6CGRectV_tcfc', symObjAddr: 0x350, symBinAddr: 0xFBF60, symSize: 0x420 } + - { offset: 0x189A70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x770, symBinAddr: 0xFC380, symSize: 0x30 } + - { offset: 0x189A84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x7A0, symBinAddr: 0xFC3B0, symSize: 0x3F0 } + - { offset: 0x189C87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xB90, symBinAddr: 0xFC7A0, symSize: 0x30 } + - { offset: 0x189D5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC09customized6FilterE0yyF', symObjAddr: 0xBC0, symBinAddr: 0xFC7D0, symSize: 0x6D0 } + - { offset: 0x18A1EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyF', symObjAddr: 0x1290, symBinAddr: 0xFCEA0, symSize: 0x530 } + - { offset: 0x18A56D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyFyycfU_', symObjAddr: 0x17C0, symBinAddr: 0xFD3D0, symSize: 0xB0 } + - { offset: 0x18A603, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC17customizeSortMenuyyFyycfU0_', symObjAddr: 0x1870, symBinAddr: 0xFD480, symSize: 0x390 } + - { offset: 0x18A91A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC22customizeOpenNowFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x1C00, symBinAddr: 0xFD810, symSize: 0x100 } + - { offset: 0x18A9D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC31handleLocationNotAvailableToast33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x21D0, symBinAddr: 0xFDDE0, symSize: 0x170 } + - { offset: 0x18AAA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC23customizeCategoryFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x2340, symBinAddr: 0xFDF50, symSize: 0xF0 } + - { offset: 0x18AB0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC22customizeAmenityFilter33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x2430, symBinAddr: 0xFE040, symSize: 0xF0 } + - { offset: 0x18AB85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC19customizeAllFilters33_328DE9E08D573BB4E70209B25156AC30LLyyFyycfU_', symObjAddr: 0x2520, symBinAddr: 0xFE130, symSize: 0xD0 } + - { offset: 0x18ABEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsC13setSortOption4sortyAA0G6MethodO_tF', symObjAddr: 0x25F0, symBinAddr: 0xFE200, symSize: 0x250 } + - { offset: 0x18AD81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SearchOptionsCfD', symObjAddr: 0x2840, symBinAddr: 0xFE450, symSize: 0x30 } + - { offset: 0x18B14D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVMa', symObjAddr: 0x0, symBinAddr: 0xFE8B0, symSize: 0x10 } + - { offset: 0x18B165, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVMa', symObjAddr: 0x0, symBinAddr: 0xFE8B0, symSize: 0x10 } + - { offset: 0x18B64C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVwxx', symObjAddr: 0xAB0, symBinAddr: 0xFF240, symSize: 0x20 } + - { offset: 0x18B660, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVwcp', symObjAddr: 0xAD0, symBinAddr: 0xFF260, symSize: 0x50 } + - { offset: 0x18B674, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVwca', symObjAddr: 0xB20, symBinAddr: 0xFF2B0, symSize: 0xA0 } + - { offset: 0x18B688, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVwta', symObjAddr: 0xBE0, symBinAddr: 0xFF350, symSize: 0x50 } + - { offset: 0x18B69C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVMa', symObjAddr: 0xCC0, symBinAddr: 0xFF3A0, symSize: 0x10 } + - { offset: 0x18B6B0, size: 0x8, addend: 0x0, symName: ___swift_memcpy28_4, symObjAddr: 0xCE0, symBinAddr: 0xFF3B0, symSize: 0x20 } + - { offset: 0x18B6C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVwet', symObjAddr: 0xD00, symBinAddr: 0xFF3D0, symSize: 0x50 } + - { offset: 0x18B6D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVwst', symObjAddr: 0xD50, symBinAddr: 0xFF420, symSize: 0x60 } + - { offset: 0x18B6EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVMa', symObjAddr: 0xDB0, symBinAddr: 0xFF480, symSize: 0x10 } + - { offset: 0x18B700, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSHAASQWb', symObjAddr: 0xDC0, symBinAddr: 0xFF490, symSize: 0x10 } + - { offset: 0x18B714, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVAGSQAAWl', symObjAddr: 0xDD0, symBinAddr: 0xFF4A0, symSize: 0x30 } + - { offset: 0x18B728, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSHAASQWb', symObjAddr: 0xE00, symBinAddr: 0xFF4D0, symSize: 0x10 } + - { offset: 0x18B73C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVAESQAAWl', symObjAddr: 0xE10, symBinAddr: 0xFF4E0, symSize: 0x30 } + - { offset: 0x18B750, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV5UnitsOMa', symObjAddr: 0xFD0, symBinAddr: 0xFF510, symSize: 0x10 } + - { offset: 0x18B764, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV5UnitsOSHAASQWb', symObjAddr: 0xFE0, symBinAddr: 0xFF520, symSize: 0x10 } + - { offset: 0x18B778, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV5UnitsOAGSQAAWl', symObjAddr: 0xFF0, symBinAddr: 0xFF530, symSize: 0x30 } + - { offset: 0x18B78C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwxx', symObjAddr: 0x1020, symBinAddr: 0xFF560, symSize: 0x20 } + - { offset: 0x18B7A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwcp', symObjAddr: 0x1040, symBinAddr: 0xFF580, symSize: 0x40 } + - { offset: 0x18B7B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwca', symObjAddr: 0x1080, symBinAddr: 0xFF5C0, symSize: 0x90 } + - { offset: 0x18B7C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwta', symObjAddr: 0x1130, symBinAddr: 0xFF650, symSize: 0x50 } + - { offset: 0x18B7DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwet', symObjAddr: 0x1180, symBinAddr: 0xFF6A0, symSize: 0x40 } + - { offset: 0x18B7F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVwst', symObjAddr: 0x11C0, symBinAddr: 0xFF6E0, symSize: 0x40 } + - { offset: 0x18B804, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVMa', symObjAddr: 0x1200, symBinAddr: 0xFF720, symSize: 0x10 } + - { offset: 0x18B818, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSHAASQWb', symObjAddr: 0x1210, symBinAddr: 0xFF730, symSize: 0x10 } + - { offset: 0x18B82C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVAESQAAWl', symObjAddr: 0x1220, symBinAddr: 0xFF740, symSize: 0x30 } + - { offset: 0x18B96F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xB0, symBinAddr: 0xFE960, symSize: 0x30 } + - { offset: 0x18B9E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x220, symBinAddr: 0xFEA20, symSize: 0x40 } + - { offset: 0x18BAC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x4E0, symBinAddr: 0xFECA0, symSize: 0x30 } + - { offset: 0x18BB33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x7F0, symBinAddr: 0xFEFB0, symSize: 0x30 } + - { offset: 0x18BB87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopV4hash4intoys6HasherVz_tF', symObjAddr: 0x10, symBinAddr: 0xFE8C0, symSize: 0x50 } + - { offset: 0x18BC51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSHAASH9hashValueSivgTW', symObjAddr: 0x60, symBinAddr: 0xFE910, symSize: 0x40 } + - { offset: 0x18BCCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xA0, symBinAddr: 0xFE950, symSize: 0x10 } + - { offset: 0x18BCF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xE0, symBinAddr: 0xFE990, symSize: 0x40 } + - { offset: 0x18BD9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVSHAASH9hashValueSivgTW', symObjAddr: 0x1D0, symBinAddr: 0xFE9D0, symSize: 0x40 } + - { offset: 0x18BE63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x210, symBinAddr: 0xFEA10, symSize: 0x10 } + - { offset: 0x18BEEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x260, symBinAddr: 0xFEA60, symSize: 0x10 } + - { offset: 0x18BF8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientV4hash4intoys6HasherVz_tF', symObjAddr: 0x2B0, symBinAddr: 0xFEA70, symSize: 0x1E0 } + - { offset: 0x18C403, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSHAASH9hashValueSivgTW', symObjAddr: 0x490, symBinAddr: 0xFEC50, symSize: 0x40 } + - { offset: 0x18C480, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x4D0, symBinAddr: 0xFEC90, symSize: 0x10 } + - { offset: 0x18C4A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x510, symBinAddr: 0xFECD0, symSize: 0x80 } + - { offset: 0x18C4D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientV4hash4intoys6HasherVz_tF', symObjAddr: 0x590, symBinAddr: 0xFED50, symSize: 0x210 } + - { offset: 0x18C99B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSHAASH9hashValueSivgTW', symObjAddr: 0x7A0, symBinAddr: 0xFEF60, symSize: 0x40 } + - { offset: 0x18CA18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x7E0, symBinAddr: 0xFEFA0, symSize: 0x10 } + - { offset: 0x18CA3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x820, symBinAddr: 0xFEFE0, symSize: 0x50 } + - { offset: 0x18CA8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14LinearGradientV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x870, symBinAddr: 0xFF030, symSize: 0x80 } + - { offset: 0x18CB1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14RadialGradientV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x8F0, symBinAddr: 0xFF0B0, symSize: 0xA0 } + - { offset: 0x18CBD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV4StopV2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x990, symBinAddr: 0xFF150, symSize: 0xF0 } + - { offset: 0x18D103, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewCfETo', symObjAddr: 0xC60, symBinAddr: 0x1003E0, symSize: 0x40 } + - { offset: 0x18D132, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewCMa', symObjAddr: 0xCA0, symBinAddr: 0x100420, symSize: 0x20 } + - { offset: 0x18D146, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC05setupF033_C991B0327AE82E62E13D985A70F5DE62LLyyFyyScMYccfU_TA', symObjAddr: 0xCE0, symBinAddr: 0x100460, symSize: 0x10 } + - { offset: 0x18D15A, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xCF0, symBinAddr: 0x100470, symSize: 0x20 } + - { offset: 0x18D16E, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xD10, symBinAddr: 0x100490, symSize: 0x10 } + - { offset: 0x18D21A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x0, symBinAddr: 0xFF780, symSize: 0x290 } + - { offset: 0x18D2E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x290, symBinAddr: 0xFFA10, symSize: 0x30 } + - { offset: 0x18D334, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2C0, symBinAddr: 0xFFA40, symSize: 0xC0 } + - { offset: 0x18D406, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC05setupF033_C991B0327AE82E62E13D985A70F5DE62LLyyF', symObjAddr: 0x380, symBinAddr: 0xFFB00, symSize: 0x7B0 } + - { offset: 0x18D4A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewC05setupF033_C991B0327AE82E62E13D985A70F5DE62LLyyFyyScMYccfU_', symObjAddr: 0xB30, symBinAddr: 0x1002B0, symSize: 0x100 } + - { offset: 0x18D4E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LoadingInitializingViewCfD', symObjAddr: 0xC30, symBinAddr: 0x1003B0, symSize: 0x30 } + - { offset: 0x18D88D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMOMa', symObjAddr: 0x140, symBinAddr: 0x1004A0, symSize: 0x10 } + - { offset: 0x18D8A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOMa', symObjAddr: 0x170, symBinAddr: 0x1004B0, symSize: 0x10 } + - { offset: 0x18D8B5, size: 0x8, addend: 0x0, symName: ___swift_memcpy8_4, symObjAddr: 0x180, symBinAddr: 0x1004C0, symSize: 0x10 } + - { offset: 0x18D8C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5PointVwet', symObjAddr: 0x190, symBinAddr: 0x1004D0, symSize: 0x20 } + - { offset: 0x18D8DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5PointVwst', symObjAddr: 0x1B0, symBinAddr: 0x1004F0, symSize: 0x20 } + - { offset: 0x18D8F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5PointVMa', symObjAddr: 0x1D0, symBinAddr: 0x100510, symSize: 0x10 } + - { offset: 0x18D905, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOwet', symObjAddr: 0x230, symBinAddr: 0x100520, symSize: 0x50 } + - { offset: 0x18D919, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOwst', symObjAddr: 0x280, symBinAddr: 0x100570, symSize: 0x50 } + - { offset: 0x18D92D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOwug', symObjAddr: 0x2D0, symBinAddr: 0x1005C0, symSize: 0x10 } + - { offset: 0x18D941, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOwui', symObjAddr: 0x2F0, symBinAddr: 0x1005D0, symSize: 0x10 } + - { offset: 0x18D955, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOMa', symObjAddr: 0x300, symBinAddr: 0x1005E0, symSize: 0x10 } + - { offset: 0x18D969, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwCP', symObjAddr: 0x310, symBinAddr: 0x1005F0, symSize: 0xA0 } + - { offset: 0x18D97D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwxx', symObjAddr: 0x3B0, symBinAddr: 0x100690, symSize: 0x40 } + - { offset: 0x18D991, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwcp', symObjAddr: 0x3F0, symBinAddr: 0x1006D0, symSize: 0x80 } + - { offset: 0x18D9A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwca', symObjAddr: 0x470, symBinAddr: 0x100750, symSize: 0x80 } + - { offset: 0x18D9B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOMa', symObjAddr: 0x520, symBinAddr: 0x1007D0, symSize: 0x30 } + - { offset: 0x18D9CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwtk', symObjAddr: 0x550, symBinAddr: 0x100800, symSize: 0x80 } + - { offset: 0x18D9E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwta', symObjAddr: 0x5D0, symBinAddr: 0x100880, symSize: 0x80 } + - { offset: 0x18D9F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwet', symObjAddr: 0x650, symBinAddr: 0x100900, symSize: 0x10 } + - { offset: 0x18DA09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwst', symObjAddr: 0x660, symBinAddr: 0x100910, symSize: 0x10 } + - { offset: 0x18DA1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwug', symObjAddr: 0x670, symBinAddr: 0x100920, symSize: 0x10 } + - { offset: 0x18DA31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOwui', symObjAddr: 0x690, symBinAddr: 0x100930, symSize: 0x20 } + - { offset: 0x18DA45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOMr', symObjAddr: 0x6B0, symBinAddr: 0x100950, symSize: 0x60 } + - { offset: 0x18DD21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSHAASQWb', symObjAddr: 0x1390, symBinAddr: 0x101630, symSize: 0x10 } + - { offset: 0x18DD35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOAESQAAWl', symObjAddr: 0x13A0, symBinAddr: 0x101640, symSize: 0x30 } + - { offset: 0x18DD49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillO_AEtWOh', symObjAddr: 0x17A0, symBinAddr: 0x101990, symSize: 0x30 } + - { offset: 0x18DD5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ErrorOMa', symObjAddr: 0x1940, symBinAddr: 0x1019C0, symSize: 0x10 } + - { offset: 0x18DD71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOMa', symObjAddr: 0x19A0, symBinAddr: 0x1019D0, symSize: 0x10 } + - { offset: 0x18DD85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOMa', symObjAddr: 0x19C0, symBinAddr: 0x1019E0, symSize: 0x10 } + - { offset: 0x18DD99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOMa', symObjAddr: 0x1B30, symBinAddr: 0x1019F0, symSize: 0x10 } + - { offset: 0x18DDAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOMa', symObjAddr: 0x1CE0, symBinAddr: 0x101A00, symSize: 0x10 } + - { offset: 0x18DDC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSHAASQWb', symObjAddr: 0x1CF0, symBinAddr: 0x101A10, symSize: 0x10 } + - { offset: 0x18DDD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOAESQAAWl', symObjAddr: 0x1D00, symBinAddr: 0x101A20, symSize: 0x30 } + - { offset: 0x18DDE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSHAASQWb', symObjAddr: 0x1D30, symBinAddr: 0x101A50, symSize: 0x10 } + - { offset: 0x18DDFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOAESQAAWl', symObjAddr: 0x1D40, symBinAddr: 0x101A60, symSize: 0x30 } + - { offset: 0x18DE11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSHAASQWb', symObjAddr: 0x1D70, symBinAddr: 0x101A90, symSize: 0x10 } + - { offset: 0x18DE25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOAESQAAWl', symObjAddr: 0x1D80, symBinAddr: 0x101AA0, symSize: 0x30 } + - { offset: 0x18DE39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSHAASQWb', symObjAddr: 0x1DB0, symBinAddr: 0x101AD0, symSize: 0x10 } + - { offset: 0x18DE4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOAESQAAWl', symObjAddr: 0x1DC0, symBinAddr: 0x101AE0, symSize: 0x30 } + - { offset: 0x18DE8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x750, symBinAddr: 0x1009F0, symSize: 0x70 } + - { offset: 0x18DF71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSHAASH9hashValueSivgTW', symObjAddr: 0x7C0, symBinAddr: 0x100A60, symSize: 0x70 } + - { offset: 0x18E00C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x830, symBinAddr: 0x100AD0, symSize: 0x50 } + - { offset: 0x18E073, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x880, symBinAddr: 0x100B20, symSize: 0x70 } + - { offset: 0x18E0FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x950, symBinAddr: 0x100BF0, symSize: 0x90 } + - { offset: 0x18E1DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSHAASH9hashValueSivgTW', symObjAddr: 0x9E0, symBinAddr: 0x100C80, symSize: 0x60 } + - { offset: 0x18E28A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xA40, symBinAddr: 0x100CE0, symSize: 0x40 } + - { offset: 0x18E2F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xA80, symBinAddr: 0x100D20, symSize: 0x60 } + - { offset: 0x18E389, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xBA0, symBinAddr: 0x100E40, symSize: 0xE0 } + - { offset: 0x18E496, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSHAASH9hashValueSivgTW', symObjAddr: 0xC80, symBinAddr: 0x100F20, symSize: 0x90 } + - { offset: 0x18E541, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xD10, symBinAddr: 0x100FB0, symSize: 0x70 } + - { offset: 0x18E5A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xD80, symBinAddr: 0x101020, symSize: 0x90 } + - { offset: 0x18E646, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xEA0, symBinAddr: 0x101140, symSize: 0x60 } + - { offset: 0x18E753, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSHAASH9hashValueSivgTW', symObjAddr: 0xF00, symBinAddr: 0x1011A0, symSize: 0x60 } + - { offset: 0x18E7FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xF60, symBinAddr: 0x101200, symSize: 0x40 } + - { offset: 0x18E865, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xFA0, symBinAddr: 0x101240, symSize: 0x60 } + - { offset: 0x18E903, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1060, symBinAddr: 0x101300, symSize: 0xD0 } + - { offset: 0x18EA10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSHAASH9hashValueSivgTW', symObjAddr: 0x1130, symBinAddr: 0x1013D0, symSize: 0x90 } + - { offset: 0x18EABB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x11C0, symBinAddr: 0x101460, symSize: 0x70 } + - { offset: 0x18EB22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1230, symBinAddr: 0x1014D0, symSize: 0x90 } + - { offset: 0x18EBC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5PointVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x710, symBinAddr: 0x1009B0, symSize: 0x30 } + - { offset: 0x18EBF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x740, symBinAddr: 0x1009E0, symSize: 0x10 } + - { offset: 0x18EC46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x910, symBinAddr: 0x100BB0, symSize: 0x40 } + - { offset: 0x18EC8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xB70, symBinAddr: 0x100E10, symSize: 0x30 } + - { offset: 0x18ECE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0xE10, symBinAddr: 0x1010B0, symSize: 0x30 } + - { offset: 0x18ED10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0xE40, symBinAddr: 0x1010E0, symSize: 0x60 } + - { offset: 0x18ED6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x1000, symBinAddr: 0x1012A0, symSize: 0x30 } + - { offset: 0x18ED93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x1030, symBinAddr: 0x1012D0, symSize: 0x30 } + - { offset: 0x18EDED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x12C0, symBinAddr: 0x101560, symSize: 0x30 } + - { offset: 0x18EE16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x12F0, symBinAddr: 0x101590, symSize: 0x60 } + - { offset: 0x18EE52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1350, symBinAddr: 0x1015F0, symSize: 0x40 } + - { offset: 0x18EE82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4FillO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x1450, symBinAddr: 0x101670, symSize: 0x1A0 } + - { offset: 0x18EEC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO9TransformO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x15F0, symBinAddr: 0x101810, symSize: 0x180 } + - { offset: 0x18FCEF, size: 0x8, addend: 0x0, symName: '_$sSE8PenNavUIE10dictionarySDySSypGSgvgAA20PositionTrackingDataV_Tg5', symObjAddr: 0x280, symBinAddr: 0x101E00, symSize: 0x220 } + - { offset: 0x18FD80, size: 0x8, addend: 0x0, symName: '_$sSE8PenNavUIE10dictionarySDySSypGSgvgAA19NavigationEventDataV_Tg5', symObjAddr: 0x4A0, symBinAddr: 0x102020, symSize: 0x220 } + - { offset: 0x18FE11, size: 0x8, addend: 0x0, symName: '_$sSE8PenNavUIE10dictionarySDySSypGSgvgAA27LocationMessageTrackingDataV_Tg5', symObjAddr: 0x6C0, symBinAddr: 0x102240, symSize: 0x220 } + - { offset: 0x190B4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18initializeRendereryyF', symObjAddr: 0xA20, symBinAddr: 0x1025A0, symSize: 0x780 } + - { offset: 0x19127F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyF', symObjAddr: 0x11A0, symBinAddr: 0x102D20, symSize: 0x650 } + - { offset: 0x1915AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU_', symObjAddr: 0x12F20, symBinAddr: 0x114A30, symSize: 0x80 } + - { offset: 0x1915FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU0_', symObjAddr: 0x12FA0, symBinAddr: 0x114AB0, symSize: 0x2E0 } + - { offset: 0x1917BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU1_', symObjAddr: 0x13610, symBinAddr: 0x115120, symSize: 0x50 } + - { offset: 0x1917EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU2_', symObjAddr: 0x13660, symBinAddr: 0x115170, symSize: 0x100 } + - { offset: 0x19185B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU3_', symObjAddr: 0x13760, symBinAddr: 0x115270, symSize: 0x390 } + - { offset: 0x191C64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCfETo', symObjAddr: 0x1A60, symBinAddr: 0x1035E0, symSize: 0x220 } + - { offset: 0x1920B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC16onLocationChange8locationy7Penguin10PILocationC_tF', symObjAddr: 0x2200, symBinAddr: 0x103D80, symSize: 0x560 } + - { offset: 0x192432, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC29controlUserLocationVisibility017_A507C9F1E7FC9E02P13BD01692CD1214LLyyF', symObjAddr: 0x2760, symBinAddr: 0x1042E0, symSize: 0x12F0 } + - { offset: 0x19296E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23setUserLocationAndFocus8location7showGPS0M7BlueDoty7Penguin10PILocationC_S2btF', symObjAddr: 0x3A50, symBinAddr: 0x1055D0, symSize: 0x290 } + - { offset: 0x192FAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11moveToFloor_12isManualMode010setsCamerahI0y7Penguin0I0CSg_S2btF', symObjAddr: 0x5340, symBinAddr: 0x106EC0, symSize: 0x7D0 } + - { offset: 0x193733, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22deselectedUserLocation12dismissPanelySb_tF', symObjAddr: 0x5B10, symBinAddr: 0x107690, symSize: 0x1A0 } + - { offset: 0x193D1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC32resetCategoryForIndoorWayfindingyyF', symObjAddr: 0x8DB0, symBinAddr: 0x10A930, symSize: 0x2A0 } + - { offset: 0x193EB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC05setupD12Restrictions017_A507C9F1E7FC9E02N13BD01692CD1214LL4modeyAA14LocationStatusO_tF', symObjAddr: 0x9200, symBinAddr: 0x10AD80, symSize: 0x1C0 } + - { offset: 0x193F92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC05setupD6Bounds017_A507C9F1E7FC9E02N13BD01692CD1214LL06enableH0ySb_tF', symObjAddr: 0x93C0, symBinAddr: 0x10AF40, symSize: 0x110 } + - { offset: 0x194182, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20setupOffCampusCamera017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtF', symObjAddr: 0xABB0, symBinAddr: 0x10C730, symSize: 0x750 } + - { offset: 0x1944C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20setupOffCampusCamera017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtFyyScMYccfU_', symObjAddr: 0x10B10, symBinAddr: 0x112670, symSize: 0x70 } + - { offset: 0x194577, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCMa', symObjAddr: 0xBD50, symBinAddr: 0x10D8D0, symSize: 0x20 } + - { offset: 0x194724, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC02onD5ReadyyyF', symObjAddr: 0xBD70, symBinAddr: 0x10D8F0, symSize: 0xA30 } + - { offset: 0x195073, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC02onD5ReadyyyFyycfU_', symObjAddr: 0xC8B0, symBinAddr: 0x10E430, symSize: 0x230 } + - { offset: 0x19510A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC19startUpdateLocationyyF', symObjAddr: 0xC7A0, symBinAddr: 0x10E320, symSize: 0x110 } + - { offset: 0x19513B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC21puckLocationDidUpdate10coordinateySo22CLLocationCoordinate2DV_tF', symObjAddr: 0xCAE0, symBinAddr: 0x10E660, symSize: 0x220 } + - { offset: 0x1952A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22selectCampusInfoScreen10identifierySS_tF', symObjAddr: 0xCD00, symBinAddr: 0x10E880, symSize: 0x470 } + - { offset: 0x19554A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC15mapAlignedNorthyyF', symObjAddr: 0xD180, symBinAddr: 0x10ECF0, symSize: 0xD0 } + - { offset: 0x1956D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC15cameraDidChangeyyF', symObjAddr: 0xD440, symBinAddr: 0x10EFB0, symSize: 0x670 } + - { offset: 0x195B9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14onSelectSymbol10identifierySS_tF', symObjAddr: 0xDAB0, symBinAddr: 0x10F620, symSize: 0x380 } + - { offset: 0x195F24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11onSelectPOI10identifierySS_tF', symObjAddr: 0xDE30, symBinAddr: 0x10F9A0, symSize: 0x750 } + - { offset: 0x196639, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC21selectVenueInfoScreen10identifierySS_tF', symObjAddr: 0xE580, symBinAddr: 0x1100F0, symSize: 0x780 } + - { offset: 0x196CE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC12selectCampus017_A507C9F1E7FC9E02N13BD01692CD1214LL6campusy7Penguin5VenueC_tFyycfU_', symObjAddr: 0xED00, symBinAddr: 0x110870, symSize: 0x2C0 } + - { offset: 0x196F28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP27locationIndicatorCoordinateSo22CLLocationCoordinate2DVSgvgTW', symObjAddr: 0xEFC0, symBinAddr: 0x110B30, symSize: 0x20 } + - { offset: 0x196FA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP26isLocationIndicatorVisibleSbvgTW', symObjAddr: 0xEFE0, symBinAddr: 0x110B50, symSize: 0x20 } + - { offset: 0x196FFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP14onSelectSymbol10identifierySS_tFTW', symObjAddr: 0xF020, symBinAddr: 0x110B80, symSize: 0x10 } + - { offset: 0x19701A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP20onSelectUserLocationyyFTW', symObjAddr: 0xF030, symBinAddr: 0x110B90, symSize: 0x80 } + - { offset: 0x1970A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP15cameraDidChangeyyFTW', symObjAddr: 0xF0B0, symBinAddr: 0x110C10, symSize: 0x10 } + - { offset: 0x1970C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP15mapAlignedNorthyyFTW', symObjAddr: 0xF0C0, symBinAddr: 0x110C20, symSize: 0x10 } + - { offset: 0x1970DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP21puckLocationDidUpdate10coordinateySo22CLLocationCoordinate2DV_tFTW', symObjAddr: 0xF0D0, symBinAddr: 0x110C30, symSize: 0x10 } + - { offset: 0x19711C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC19firstUpdateLocation017_A507C9F1E7FC9E02O13BD01692CD1214LLyy7Penguin5FloorC_AF10PILocationC0R10INRenderer10PIRendererCS2btF', symObjAddr: 0xF0E0, symBinAddr: 0x110C40, symSize: 0x610 } + - { offset: 0x19763C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20setUserLocationColor017_A507C9F1E7FC9E02P13BD01692CD1214LLyyF', symObjAddr: 0xF6F0, symBinAddr: 0x111250, symSize: 0x2C0 } + - { offset: 0x197809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22initializeUserLocation017_A507C9F1E7FC9E02O13BD01692CD1214LL8locationy7Penguin10PILocationC_tF', symObjAddr: 0xF9B0, symBinAddr: 0x111510, symSize: 0x130 } + - { offset: 0x1978EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC06updateD12LocationMode017_A507C9F1E7FC9E02O13BD01692CD1214LL8locationy7Penguin10PILocationC_tF', symObjAddr: 0xFAE0, symBinAddr: 0x111640, symSize: 0x2C0 } + - { offset: 0x197A68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23handleOffCampusLocation017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtF', symObjAddr: 0xFDA0, symBinAddr: 0x111900, symSize: 0x100 } + - { offset: 0x197B6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22handleOnCampusLocation017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtF', symObjAddr: 0xFEA0, symBinAddr: 0x111A00, symSize: 0x5D0 } + - { offset: 0x197F50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC29setLocationProviderCoordinateyySo22CLLocationCoordinate2DVF', symObjAddr: 0x10470, symBinAddr: 0x111FD0, symSize: 0xC0 } + - { offset: 0x198007, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC24handleUserLocationCamera017_A507C9F1E7FC9E02P13BD01692CD1214LL8locationy7Penguin10PILocationC_tF', symObjAddr: 0x10530, symBinAddr: 0x112090, symSize: 0x110 } + - { offset: 0x1981D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC32onSourceConnectivityStatusChange6statusy7Penguin0h10ConnectionJ0O_tF', symObjAddr: 0x10640, symBinAddr: 0x1121A0, symSize: 0x4D0 } + - { offset: 0x19860B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC13onVenueChange5venuey7Penguin0H0C_tF', symObjAddr: 0x10B80, symBinAddr: 0x1126E0, symSize: 0x590 } + - { offset: 0x198AA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC13onFloorChange5floory7Penguin0H0C_tF', symObjAddr: 0x11110, symBinAddr: 0x112C70, symSize: 0x4E0 } + - { offset: 0x198FE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC28handleConnectedFloorOnChange017_A507C9F1E7FC9E02Q13BD01692CD1214LL5floory7Penguin0I0CSg_tF', symObjAddr: 0x115F0, symBinAddr: 0x113150, symSize: 0x3B0 } + - { offset: 0x199391, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC9drawFloor017_A507C9F1E7FC9E02N13BD01692CD1214LL_012setsCameraToH0y7Penguin0H0C_SbtF', symObjAddr: 0x119A0, symBinAddr: 0x113500, symSize: 0xC60 } + - { offset: 0x1999F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC16onRotationChange8rotationy7Penguin10PIRotationC_tF', symObjAddr: 0x12600, symBinAddr: 0x114160, symSize: 0x3F0 } + - { offset: 0x199D89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC26onConnectivityStatusChange6statusy7Penguin06ServerhI0O_tF', symObjAddr: 0x129F0, symBinAddr: 0x114550, symSize: 0x200 } + - { offset: 0x199ED9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22onBlePowerStatusChange6statusy7Penguin08BLEPowerJ0O_tFyyScMYccfU_', symObjAddr: 0x12C40, symBinAddr: 0x1147A0, symSize: 0xC0 } + - { offset: 0x199F22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP16onLocationChange8locationyAD0H0C_tFTW', symObjAddr: 0x12D00, symBinAddr: 0x114860, symSize: 0x10 } + - { offset: 0x199F3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP13onVenueChange5venueyAD0L0C_tFTW', symObjAddr: 0x12D20, symBinAddr: 0x114870, symSize: 0x10 } + - { offset: 0x199F5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP13onFloorChange5flooryAD0L0C_tFTW', symObjAddr: 0x12D30, symBinAddr: 0x114880, symSize: 0x10 } + - { offset: 0x199F76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP16onRotationChange8rotationyAD10PIRotationC_tFTW', symObjAddr: 0x12D40, symBinAddr: 0x114890, symSize: 0x10 } + - { offset: 0x199F92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP26onConnectivityStatusChange6statusyAD06ServerlM0O_tFTW', symObjAddr: 0x12D50, symBinAddr: 0x1148A0, symSize: 0x10 } + - { offset: 0x199FAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP32onSourceConnectivityStatusChange6statusyAD0l10ConnectionN0O_tFTW', symObjAddr: 0x12D60, symBinAddr: 0x1148B0, symSize: 0x10 } + - { offset: 0x19A008, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP017onGPSStatusChangeM06statusyAD25SourceGPSConnectionStatusO_tFTW', symObjAddr: 0x12D70, symBinAddr: 0x1148C0, symSize: 0xC0 } + - { offset: 0x19A05F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7Penguin25PILocationManagerDelegateAadEP22onBlePowerStatusChange6statusyAD08BLEPowerN0O_tFTW', symObjAddr: 0x12E70, symBinAddr: 0x114980, symSize: 0x10 } + - { offset: 0x19A0B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC13setCameraMode017_A507C9F1E7FC9E02O13BD01692CD1214LLyyF', symObjAddr: 0x13280, symBinAddr: 0x114D90, symSize: 0x390 } + - { offset: 0x19A47A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14selectCategory8categoryy7Penguin11POICategoryV_tF', symObjAddr: 0x13AF0, symBinAddr: 0x115600, symSize: 0x310 } + - { offset: 0x19A6A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC16deselectCategoryyyF', symObjAddr: 0x13E00, symBinAddr: 0x115910, symSize: 0x3F0 } + - { offset: 0x19AB41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18selectUserLocationyyF', symObjAddr: 0x141F0, symBinAddr: 0x115D00, symSize: 0x190 } + - { offset: 0x19ACC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC15didTapPlaceLink5placey7Penguin10PoiPolygonV_tF', symObjAddr: 0x14380, symBinAddr: 0x115E90, symSize: 0x120 } + - { offset: 0x19AD9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCAA16DeepLinkDelegateA2aDP011didTapPlaceH05placey7Penguin10PoiPolygonV_tFTW', symObjAddr: 0x145C0, symBinAddr: 0x116070, symSize: 0x10 } + - { offset: 0x19ADB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCAA16DeepLinkDelegateA2aDP011didTapVenueH05venuey7Penguin0L0C_tFTW', symObjAddr: 0x145D0, symBinAddr: 0x116080, symSize: 0x20 } + - { offset: 0x19ADD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCAA16DeepLinkDelegateA2aDP012didTapCampusH06campusy7Penguin5VenueC_tFTW', symObjAddr: 0x145F0, symBinAddr: 0x1160A0, symSize: 0x20 } + - { offset: 0x19ADEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCAA16DeepLinkDelegateA2aDP018didTapUserLocationH08locationyAA5PlaceC_tFTW', symObjAddr: 0x14610, symBinAddr: 0x1160C0, symSize: 0x20 } + - { offset: 0x19AFB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17updateFavoritePOI017_A507C9F1E7FC9E02O13BD01692CD1214LL5poiIdySiSg_tF', symObjAddr: 0x14630, symBinAddr: 0x1160E0, symSize: 0x8B0 } + - { offset: 0x19B758, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC30reloadSelectedFavoriteLocation017_A507C9F1E7FC9E02P13BD01692CD1214LLyyF', symObjAddr: 0x14EE0, symBinAddr: 0x116990, symSize: 0xE0 } + - { offset: 0x19B890, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC19updateFavoritePlace017_A507C9F1E7FC9E02O13BD01692CD1214LL8favorite7isAddedyAA0H0C_SbtF', symObjAddr: 0x14FC0, symBinAddr: 0x116A70, symSize: 0x240 } + - { offset: 0x19BAC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtF', symObjAddr: 0x15200, symBinAddr: 0x116CB0, symSize: 0x8E0 } + - { offset: 0x19C00F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFyycfU_', symObjAddr: 0x15AE0, symBinAddr: 0x117590, symSize: 0x140 } + - { offset: 0x19C0DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18handleUserLocation017_A507C9F1E7FC9E02O13BD01692CD1214LLyyF', symObjAddr: 0x15C20, symBinAddr: 0x1176D0, symSize: 0x430 } + - { offset: 0x19C53D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC35handleRecenterWhenLocationAvailable017_A507C9F1E7FC9E02Q13BD01692CD1214LLyyF', symObjAddr: 0x16050, symBinAddr: 0x117B00, symSize: 0x270 } + - { offset: 0x19C5BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC35handleRecenterWhenLocationAvailable017_A507C9F1E7FC9E02Q13BD01692CD1214LLyyFyyScMYccfU_', symObjAddr: 0x16410, symBinAddr: 0x117EC0, symSize: 0xF0 } + - { offset: 0x19C6B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC30handleSelectedLocationForToast017_A507C9F1E7FC9E02Q13BD01692CD1214LLyyF', symObjAddr: 0x162C0, symBinAddr: 0x117D70, symSize: 0x150 } + - { offset: 0x19C882, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17getConnectedFloor06activeI07Penguin0I0CSgAI_tFTf4nd_n', symObjAddr: 0x16500, symBinAddr: 0x117FB0, symSize: 0x340 } + - { offset: 0x19CC28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC35handlingUserLocationOnceFloorChange017_A507C9F1E7FC9E02R13BD01692CD1214LLyy17PenguinINRenderer10PIRendererC_0U010PILocationCSbAI0K0CSbAI5VenueCtFTf4nnnnndn_n', symObjAddr: 0x16A60, symBinAddr: 0x1184A0, symSize: 0x6B0 } + - { offset: 0x19D129, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC26handleVenueSymbolSelection017_A507C9F1E7FC9E02P13BD01692CD1214LL5venuey7Penguin0H0C_tFTf4dn_n', symObjAddr: 0x17110, symBinAddr: 0x118B50, symSize: 0x4A0 } + - { offset: 0x19D481, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18updateUserLocation017_A507C9F1E7FC9E02O13BD01692CD1214LL8locationySo22CLLocationCoordinate2DV_tFTf4dn_n', symObjAddr: 0x175D0, symBinAddr: 0x118FF0, symSize: 0x600 } + - { offset: 0x19D8C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOWOh', symObjAddr: 0x17DD0, symBinAddr: 0x1197F0, symSize: 0x30 } + - { offset: 0x19D8D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOWOc', symObjAddr: 0x17E00, symBinAddr: 0x119820, symSize: 0x30 } + - { offset: 0x19D8EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC9drawFloor017_A507C9F1E7FC9E02N13BD01692CD1214LL_012setsCameraToH0y7Penguin0H0C_SbtFySbcfU0_TA', symObjAddr: 0x17E50, symBinAddr: 0x119870, symSize: 0x20 } + - { offset: 0x19D8FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVWOh', symObjAddr: 0x17E70, symBinAddr: 0x119890, symSize: 0x30 } + - { offset: 0x19D912, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC12selectCampus017_A507C9F1E7FC9E02N13BD01692CD1214LL6campusy7Penguin5VenueC_tFyycfU_TA', symObjAddr: 0x17F60, symBinAddr: 0x119950, symSize: 0x20 } + - { offset: 0x19D926, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22onBlePowerStatusChange6statusy7Penguin08BLEPowerJ0O_tFTf4nd_n', symObjAddr: 0x17FA0, symBinAddr: 0x119970, symSize: 0x260 } + - { offset: 0x19D983, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC22onBlePowerStatusChange6statusy7Penguin08BLEPowerJ0O_tFyyScMYccfU_TA', symObjAddr: 0x18260, symBinAddr: 0x119BF0, symSize: 0x10 } + - { offset: 0x19D997, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x18270, symBinAddr: 0x119C00, symSize: 0x20 } + - { offset: 0x19D9AB, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x18290, symBinAddr: 0x119C20, symSize: 0x10 } + - { offset: 0x19D9BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFyycfU_TA', symObjAddr: 0x183E0, symBinAddr: 0x119C30, symSize: 0x10 } + - { offset: 0x19D9D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC35handleRecenterWhenLocationAvailable017_A507C9F1E7FC9E02Q13BD01692CD1214LLyyFyyScMYccfU_TA', symObjAddr: 0x183F0, symBinAddr: 0x119C40, symSize: 0x10 } + - { offset: 0x19D9E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20setupOffCampusCamera017_A507C9F1E7FC9E02P13BD01692CD1214LL8renderer8locationy17PenguinINRenderer10PIRendererC_0U010PILocationCtFyyScMYccfU_TA', symObjAddr: 0x18430, symBinAddr: 0x119C80, symSize: 0x10 } + - { offset: 0x19D9FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PositionTrackingDataVACSEAAWl', symObjAddr: 0x18440, symBinAddr: 0x119C90, symSize: 0x30 } + - { offset: 0x19DA0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVACSEAAWl', symObjAddr: 0x184D0, symBinAddr: 0x119CC0, symSize: 0x30 } + - { offset: 0x19DA23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVACSEAAWl', symObjAddr: 0x18530, symBinAddr: 0x119CF0, symSize: 0x30 } + - { offset: 0x19DA37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20didTapRecenterButtonyyFyycACcfu_yycfu0_TA', symObjAddr: 0x18560, symBinAddr: 0x119D20, symSize: 0x20 } + - { offset: 0x19DA69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC34handleServerConnectionReconnectingyyFyyScMYccfU_TA', symObjAddr: 0x185E0, symBinAddr: 0x119D60, symSize: 0x10 } + - { offset: 0x19DA7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC28checkLocationDetectionStatus017_A507C9F1E7FC9E02P13BD01692CD1214LLyyFyyScMYccfU_TA', symObjAddr: 0x185F0, symBinAddr: 0x119D70, symSize: 0x10 } + - { offset: 0x19DA91, size: 0x8, addend: 0x0, symName: '_$s7Penguin5FloorCSgSgWOe', symObjAddr: 0x18600, symBinAddr: 0x119D80, symSize: 0x20 } + - { offset: 0x19DAA5, size: 0x8, addend: 0x0, symName: '_$s7Penguin5FloorCSgSgWOy', symObjAddr: 0x18620, symBinAddr: 0x119DA0, symSize: 0x20 } + - { offset: 0x19DAB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14viewWillAppearyySbFyycfU_TA', symObjAddr: 0x18640, symBinAddr: 0x119DC0, symSize: 0x10 } + - { offset: 0x19DACD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU0_TA', symObjAddr: 0x18650, symBinAddr: 0x119DD0, symSize: 0x10 } + - { offset: 0x19DAE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU1_TA', symObjAddr: 0x18660, symBinAddr: 0x119DE0, symSize: 0x10 } + - { offset: 0x19DAF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU2_TA', symObjAddr: 0x18670, symBinAddr: 0x119DF0, symSize: 0x10 } + - { offset: 0x19DB09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU3_TA', symObjAddr: 0x18680, symBinAddr: 0x119E00, symSize: 0x10 } + - { offset: 0x19DB1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC09configureD8Controls017_A507C9F1E7FC9E02N13BD01692CD1214LLyyFyycfU_TA', symObjAddr: 0x18690, symBinAddr: 0x119E10, symSize: 0x10 } + - { offset: 0x19DB31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18initializeRendereryyFyycACcfu0_yycfu1_TA', symObjAddr: 0x186A0, symBinAddr: 0x119E20, symSize: 0x20 } + - { offset: 0x19DB63, size: 0x8, addend: 0x0, symName: '_$s7Penguin13FloorSettingsVSgWOb', symObjAddr: 0x18760, symBinAddr: 0x119EE0, symSize: 0x40 } + - { offset: 0x19DB77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC02onD5ReadyyyFyycfU_TA', symObjAddr: 0x187A0, symBinAddr: 0x119F20, symSize: 0x30 } + - { offset: 0x19DCCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14toastContainerSo6UIViewCSgvgTo', symObjAddr: 0x8E0, symBinAddr: 0x102460, symSize: 0x20 } + - { offset: 0x19DD2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14toastContainerSo6UIViewCSgvsTo', symObjAddr: 0x900, symBinAddr: 0x102480, symSize: 0x20 } + - { offset: 0x19DD81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20toastContainerHeightSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x920, symBinAddr: 0x1024A0, symSize: 0x20 } + - { offset: 0x19DDDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20toastContainerHeightSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x940, symBinAddr: 0x1024C0, symSize: 0x20 } + - { offset: 0x19E003, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11campusFloor7Penguin0H0CSgvg', symObjAddr: 0x960, symBinAddr: 0x1024E0, symSize: 0xC0 } + - { offset: 0x19E53F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x17F0, symBinAddr: 0x103370, symSize: 0xE0 } + - { offset: 0x19E579, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCfD', symObjAddr: 0x18D0, symBinAddr: 0x103450, symSize: 0xC0 } + - { offset: 0x19E5B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerCfDTo', symObjAddr: 0x1990, symBinAddr: 0x103510, symSize: 0xD0 } + - { offset: 0x19ED45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14viewWillAppearyySbF', symObjAddr: 0x1C80, symBinAddr: 0x103800, symSize: 0x580 } + - { offset: 0x19F3CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0x3CE0, symBinAddr: 0x105860, symSize: 0x30 } + - { offset: 0x19F418, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC010setupDebugE0yyF', symObjAddr: 0x3D10, symBinAddr: 0x105890, symSize: 0x270 } + - { offset: 0x19F4CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18oneSecondDidElapseyyFTo', symObjAddr: 0x3F80, symBinAddr: 0x105B00, symSize: 0x60 } + - { offset: 0x19F56F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC28checkLocationDetectionStatus017_A507C9F1E7FC9E02P13BD01692CD1214LLyyF', symObjAddr: 0x3FE0, symBinAddr: 0x105B60, symSize: 0x320 } + - { offset: 0x19F5D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC28checkLocationDetectionStatus017_A507C9F1E7FC9E02P13BD01692CD1214LLyyFyyScMYccfU_', symObjAddr: 0x4300, symBinAddr: 0x105E80, symSize: 0x430 } + - { offset: 0x19F8E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC25retryConnectivityCallback017_A507C9F1E7FC9E02O13BD01692CD1214LLyyF', symObjAddr: 0x4730, symBinAddr: 0x1062B0, symSize: 0xD0 } + - { offset: 0x19F99D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC34handleServerConnectionReconnectingyyF', symObjAddr: 0x4800, symBinAddr: 0x106380, symSize: 0x320 } + - { offset: 0x19FA05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC34handleServerConnectionReconnectingyyFyyScMYccfU_', symObjAddr: 0x4B20, symBinAddr: 0x1066A0, symSize: 0x1B0 } + - { offset: 0x19FC9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11moveToPlace_8animatedyAA0I0CSg_SbtF', symObjAddr: 0x4CD0, symBinAddr: 0x106850, symSize: 0x670 } + - { offset: 0x1A01EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC9moveToPoi_06sourceE08animatedy7Penguin0I7PolygonVSg_AA06SourceE0OSbtF', symObjAddr: 0x5CB0, symBinAddr: 0x107830, symSize: 0x310 } + - { offset: 0x1A0444, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC11moveToVenue_8animatedy7Penguin0I0CSg_SbtF', symObjAddr: 0x5FC0, symBinAddr: 0x107B40, symSize: 0x700 } + - { offset: 0x1A0898, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC12moveToCampus_8animatedy7Penguin5VenueCSg_SbtF', symObjAddr: 0x66C0, symBinAddr: 0x108240, symSize: 0x250 } + - { offset: 0x1A0A20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC06filterD016filteredFeatures6manualySayAA7POIDataCG_SbtF', symObjAddr: 0x6910, symBinAddr: 0x108490, symSize: 0x820 } + - { offset: 0x1A144A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC13moveToFeature7featureyAA7POIDataCSg_tF', symObjAddr: 0x7130, symBinAddr: 0x108CB0, symSize: 0x6D0 } + - { offset: 0x1A19E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC05clearD6FilteryyF', symObjAddr: 0x7800, symBinAddr: 0x109380, symSize: 0xE0 } + - { offset: 0x1A1B7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC19drawParkingLocation012setsCameraToH0ySb_tF', symObjAddr: 0x78E0, symBinAddr: 0x109460, symSize: 0x3F0 } + - { offset: 0x1A1E97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC21removeParkingLocationyyF', symObjAddr: 0x7CD0, symBinAddr: 0x109850, symSize: 0xE0 } + - { offset: 0x1A1FE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC03getD7PaddingSo12UIEdgeInsetsVyF', symObjAddr: 0x7DB0, symBinAddr: 0x109930, symSize: 0x3A0 } + - { offset: 0x1A22E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17fitToCampusAction8animatedySb_tF', symObjAddr: 0x8150, symBinAddr: 0x109CD0, symSize: 0xC60 } + - { offset: 0x1A2AB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC17fitToCampusAction8animatedySb_tFTo', symObjAddr: 0x9050, symBinAddr: 0x10ABD0, symSize: 0x30 } + - { offset: 0x1A2ACD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC26setupCameraToDisplayCampus017_A507C9F1E7FC9E02Q13BD01692CD1214LL8animated10completionySb_yycSgtF', symObjAddr: 0x9080, symBinAddr: 0x10AC00, symSize: 0x180 } + - { offset: 0x1A2C08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC18updateVenueSymbolsyyF', symObjAddr: 0x94D0, symBinAddr: 0x10B050, symSize: 0x390 } + - { offset: 0x1A2F92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC16focusOnGPSCampus3loc9withFocusy7Penguin10PILocationC_SbtF', symObjAddr: 0x9860, symBinAddr: 0x10B3E0, symSize: 0x4D0 } + - { offset: 0x1A3513, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20didTapRecenterButtonyyF', symObjAddr: 0x9D30, symBinAddr: 0x10B8B0, symSize: 0x2B0 } + - { offset: 0x1A36DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC20didTapRecenterButtonyyFTo', symObjAddr: 0x9FE0, symBinAddr: 0x10BB60, symSize: 0x30 } + - { offset: 0x1A3758, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC8recenteryyF', symObjAddr: 0xA010, symBinAddr: 0x10BB90, symSize: 0xBA0 } + - { offset: 0x1A411F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC06updateD8ControlsyyF', symObjAddr: 0xB300, symBinAddr: 0x10CE80, symSize: 0x190 } + - { offset: 0x1A4284, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xB490, symBinAddr: 0x10D010, symSize: 0x430 } + - { offset: 0x1A4367, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xB8C0, symBinAddr: 0x10D440, symSize: 0x50 } + - { offset: 0x1A43AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB910, symBinAddr: 0x10D490, symSize: 0x410 } + - { offset: 0x1A4486, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xBD20, symBinAddr: 0x10D8A0, symSize: 0x30 } + - { offset: 0x1A4B03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC010initializeE09withFocusySb_tFTf4dn_n', symObjAddr: 0x168B0, symBinAddr: 0x1182F0, symSize: 0x1B0 } + - { offset: 0x1A4D83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC21selectParkingLocation_8animatedyAA5PlaceCSg_SbtFTf4ndn_n', symObjAddr: 0x17BD0, symBinAddr: 0x1195F0, symSize: 0x200 } + - { offset: 0x1A52D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC12fetchRequestSo07NSFetchF0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x11A0A0, symSize: 0x60 } + - { offset: 0x1A536A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC12fetchRequestSo07NSFetchF0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x11A0A0, symSize: 0x60 } + - { offset: 0x1A53C0, size: 0x8, addend: 0x0, symName: _keypath_get_selector_type, symObjAddr: 0x60, symBinAddr: 0x11A100, symSize: 0x10 } + - { offset: 0x1A53D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC4typeSSSgvpACTK', symObjAddr: 0x70, symBinAddr: 0x11A110, symSize: 0x60 } + - { offset: 0x1A53EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC4typeSSSgvpACTk', symObjAddr: 0xE0, symBinAddr: 0x11A180, symSize: 0x50 } + - { offset: 0x1A5404, size: 0x8, addend: 0x0, symName: _keypath_get_selector_value, symObjAddr: 0x140, symBinAddr: 0x11A1E0, symSize: 0x10 } + - { offset: 0x1A5418, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvpACTK', symObjAddr: 0x150, symBinAddr: 0x11A1F0, symSize: 0x70 } + - { offset: 0x1A5430, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC5value10Foundation4DataVSgvpACTk', symObjAddr: 0x1D0, symBinAddr: 0x11A270, symSize: 0x50 } + - { offset: 0x1A57EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineOMa', symObjAddr: 0x140, symBinAddr: 0x11A2D0, symSize: 0xA } + - { offset: 0x1A5D84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCMa', symObjAddr: 0x2C0, symBinAddr: 0x11A580, symSize: 0x20 } + - { offset: 0x1A5DD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15BehaviorAdapterCMa', symObjAddr: 0x3F0, symBinAddr: 0x11A680, symSize: 0x14 } + - { offset: 0x1A5E05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCACycfC', symObjAddr: 0x0, symBinAddr: 0x11A2E0, symSize: 0x30 } + - { offset: 0x1A5E38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCACycfc', symObjAddr: 0x30, symBinAddr: 0x11A310, symSize: 0x20 } + - { offset: 0x1A5E6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x50, symBinAddr: 0x11A330, symSize: 0x20 } + - { offset: 0x1A5E95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22springDecelerationRate12CoreGraphics7CGFloatVvg', symObjAddr: 0x70, symBinAddr: 0x11A350, symSize: 0x20 } + - { offset: 0x1A5EB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x90, symBinAddr: 0x11A370, symSize: 0x10 } + - { offset: 0x1A5EC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC18springResponseTime12CoreGraphics7CGFloatVvg', symObjAddr: 0xA0, symBinAddr: 0x11A380, symSize: 0x10 } + - { offset: 0x1A5EF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate12CoreGraphics7CGFloatVvgTo', symObjAddr: 0xB0, symBinAddr: 0x11A390, symSize: 0x20 } + - { offset: 0x1A5F23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC22momentumProjectionRate12CoreGraphics7CGFloatVvg', symObjAddr: 0xD0, symBinAddr: 0x11A3B0, symSize: 0x20 } + - { offset: 0x1A5F3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC21redirectionalProgress_4from2to12CoreGraphics7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtF', symObjAddr: 0xF0, symBinAddr: 0x11A3D0, symSize: 0x10 } + - { offset: 0x1A5F83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC21redirectionalProgress_4from2to12CoreGraphics7CGFloatVAA0dE10ControllerC_AA0dE5StateCAMtFTo', symObjAddr: 0x100, symBinAddr: 0x11A3E0, symSize: 0x10 } + - { offset: 0x1A5FCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x120, symBinAddr: 0x11A3F0, symSize: 0x10 } + - { offset: 0x1A5FF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x130, symBinAddr: 0x11A400, symSize: 0x30 } + - { offset: 0x1A602A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvg', symObjAddr: 0x160, symBinAddr: 0x11A430, symSize: 0x30 } + - { offset: 0x1A6072, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x190, symBinAddr: 0x11A460, symSize: 0x40 } + - { offset: 0x1A60AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvs', symObjAddr: 0x1D0, symBinAddr: 0x11A4A0, symSize: 0x40 } + - { offset: 0x1A60D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorC35removalInteractionVelocityThreshold12CoreGraphics7CGFloatVvM', symObjAddr: 0x210, symBinAddr: 0x11A4E0, symSize: 0x30 } + - { offset: 0x1A6109, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCfd', symObjAddr: 0x250, symBinAddr: 0x11A510, symSize: 0x10 } + - { offset: 0x1A612E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28FloatingPanelDefaultBehaviorCfD', symObjAddr: 0x260, symBinAddr: 0x11A520, symSize: 0x20 } + - { offset: 0x1A616C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15BehaviorAdapterCfD', symObjAddr: 0x3C0, symBinAddr: 0x11A650, symSize: 0x30 } + - { offset: 0x1A6552, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC07getFontD0SayAA03AppG0CGyF', symObjAddr: 0x0, symBinAddr: 0x11A6A0, symSize: 0x190 } + - { offset: 0x1A672F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryCMa', symObjAddr: 0x1160, symBinAddr: 0x11B7E0, symSize: 0x20 } + - { offset: 0x1A6743, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC06insertD033_8B542D7846C5C7CE4D2E83195C6CABFALL5style4datayAA0abD4TypeO_10Foundation4DataVtFyyYbXEfU_TA', symObjAddr: 0x11F0, symBinAddr: 0x11B830, symSize: 0x20 } + - { offset: 0x1A6757, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1230, symBinAddr: 0x11B850, symSize: 0x20 } + - { offset: 0x1A676B, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1250, symBinAddr: 0x11B870, symSize: 0x10 } + - { offset: 0x1A677F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC05clearD033_8B542D7846C5C7CE4D2E83195C6CABFALLyyAA0abD4TypeOFyyYbXEfU_TA', symObjAddr: 0x12D0, symBinAddr: 0x11B8B0, symSize: 0x20 } + - { offset: 0x1A6793, size: 0x8, addend: 0x0, symName: '_$sSo11NSPredicateCMa', symObjAddr: 0x12F0, symBinAddr: 0x11B8D0, symSize: 0x40 } + - { offset: 0x1A67A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC15getColorsStylesAA0G8ResponseVSgyFyyYbXEfU_TA', symObjAddr: 0x13E0, symBinAddr: 0x11B950, symSize: 0x20 } + - { offset: 0x1A67BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC07getFontD0SayAA03AppG0CGyFyyYbXEfU_TA', symObjAddr: 0x14B0, symBinAddr: 0x11B9C0, symSize: 0x20 } + - { offset: 0x1A695A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC07getFontD0SayAA03AppG0CGyF', symObjAddr: 0x0, symBinAddr: 0x11A6A0, symSize: 0x190 } + - { offset: 0x1A69ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC07getFontD0SayAA03AppG0CGyFyyYbXEfU_', symObjAddr: 0x190, symBinAddr: 0x11A830, symSize: 0x330 } + - { offset: 0x1A6CF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC15getColorsStylesAA0G8ResponseVSgyF', symObjAddr: 0x4C0, symBinAddr: 0x11AB60, symSize: 0x2C0 } + - { offset: 0x1A6E4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC15getColorsStylesAA0G8ResponseVSgyFyyYbXEfU_', symObjAddr: 0x780, symBinAddr: 0x11AE20, symSize: 0x1F0 } + - { offset: 0x1A7034, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC05clearD033_8B542D7846C5C7CE4D2E83195C6CABFALLyyAA0abD4TypeOF', symObjAddr: 0x970, symBinAddr: 0x11B010, symSize: 0x190 } + - { offset: 0x1A70ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC05clearD033_8B542D7846C5C7CE4D2E83195C6CABFALLyyAA0abD4TypeOFyyYbXEfU_', symObjAddr: 0xB00, symBinAddr: 0x11B1A0, symSize: 0x2B0 } + - { offset: 0x1A7322, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC06insertD033_8B542D7846C5C7CE4D2E83195C6CABFALL5style4datayAA0abD4TypeO_10Foundation4DataVtF', symObjAddr: 0xDB0, symBinAddr: 0x11B450, symSize: 0x1B0 } + - { offset: 0x1A73BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB15StyleRepositoryC06insertD033_8B542D7846C5C7CE4D2E83195C6CABFALL5style4datayAA0abD4TypeO_10Foundation4DataVtFyyYbXEfU_', symObjAddr: 0xF60, symBinAddr: 0x11B600, symSize: 0x1E0 } + - { offset: 0x1A7D0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCfE', symObjAddr: 0x1580, symBinAddr: 0x11CFF0, symSize: 0x40 } + - { offset: 0x1A7D3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCfETo', symObjAddr: 0x15F0, symBinAddr: 0x11D060, symSize: 0x50 } + - { offset: 0x1A7D6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCMa', symObjAddr: 0x1640, symBinAddr: 0x11D0B0, symSize: 0x20 } + - { offset: 0x1A7D8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x1660, symBinAddr: 0x11D0D0, symSize: 0x10 } + - { offset: 0x1A7E66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1670, symBinAddr: 0x11D0E0, symSize: 0x3B0 } + - { offset: 0x1A8094, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyycfU_', symObjAddr: 0x1A20, symBinAddr: 0x11D490, symSize: 0x50 } + - { offset: 0x1A80C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1A70, symBinAddr: 0x11D4E0, symSize: 0xB0 } + - { offset: 0x1A80FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1B20, symBinAddr: 0x11D590, symSize: 0x70 } + - { offset: 0x1A8159, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x1B90, symBinAddr: 0x11D600, symSize: 0x70 } + - { offset: 0x1A81CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x1C00, symBinAddr: 0x11D670, symSize: 0x30 } + - { offset: 0x1A8243, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC10setupPanelyyF', symObjAddr: 0x1C30, symBinAddr: 0x11D6A0, symSize: 0x110 } + - { offset: 0x1A832C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC10setupPanelyyFTo', symObjAddr: 0x1D40, symBinAddr: 0x11D7B0, symSize: 0x30 } + - { offset: 0x1A837E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x1DF0, symBinAddr: 0x11D7E0, symSize: 0xC0 } + - { offset: 0x1A83B1, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1EE0, symBinAddr: 0x11D8C0, symSize: 0x20 } + - { offset: 0x1A83C5, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1F00, symBinAddr: 0x11D8E0, symSize: 0x10 } + - { offset: 0x1A83D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyycfU_TA', symObjAddr: 0x1F50, symBinAddr: 0x11D8F0, symSize: 0x10 } + - { offset: 0x1A83ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4ddd_n', symObjAddr: 0x1FE0, symBinAddr: 0x11D900, symSize: 0xA0 } + - { offset: 0x1A848D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC014shareFormattedE0yySSFyyScMYccfU0_TA', symObjAddr: 0x20F0, symBinAddr: 0x11D9D0, symSize: 0x20 } + - { offset: 0x1A871C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC12topContainerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x11BA70, symSize: 0x20 } + - { offset: 0x1A877A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC12topContainerSo6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x11BA90, symSize: 0x30 } + - { offset: 0x1A87C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x11BAC0, symSize: 0x20 } + - { offset: 0x1A8821, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x11BAE0, symSize: 0x30 } + - { offset: 0x1A8870, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x11BB10, symSize: 0x20 } + - { offset: 0x1A88C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x11BB30, symSize: 0x30 } + - { offset: 0x1A8AAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC11viewDidLoadyyF', symObjAddr: 0xF0, symBinAddr: 0x11BB60, symSize: 0x290 } + - { offset: 0x1A8D1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x380, symBinAddr: 0x11BDF0, symSize: 0x30 } + - { offset: 0x1A8D42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC7dismissyyFTo', symObjAddr: 0x3B0, symBinAddr: 0x11BE20, symSize: 0x40 } + - { offset: 0x1A8D8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC014configureTableF0yyF', symObjAddr: 0x3F0, symBinAddr: 0x11BE60, symSize: 0x140 } + - { offset: 0x1A8EE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC06formatE6AsTextyyF', symObjAddr: 0x530, symBinAddr: 0x11BFA0, symSize: 0x590 } + - { offset: 0x1A96F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC014shareFormattedE0yySSF', symObjAddr: 0xAC0, symBinAddr: 0x11C530, symSize: 0x890 } + - { offset: 0x1A9C75, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC014shareFormattedE0yySSFyyScMYccfU0_', symObjAddr: 0x1350, symBinAddr: 0x11CDC0, symSize: 0x70 } + - { offset: 0x1A9D64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x13C0, symBinAddr: 0x11CE30, symSize: 0xB0 } + - { offset: 0x1A9DA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x1470, symBinAddr: 0x11CEE0, symSize: 0x50 } + - { offset: 0x1A9DED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x14C0, symBinAddr: 0x11CF30, symSize: 0x90 } + - { offset: 0x1A9E20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1550, symBinAddr: 0x11CFC0, symSize: 0x30 } + - { offset: 0x1A9E34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29RouteDirectionsViewControllerCfD', symObjAddr: 0x15C0, symBinAddr: 0x11D030, symSize: 0x30 } + - { offset: 0x1AA2D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9IssueTypeOSHAASQWb', symObjAddr: 0x120, symBinAddr: 0x11DA10, symSize: 0x10 } + - { offset: 0x1AA2EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9IssueTypeOACSQAAWl', symObjAddr: 0x130, symBinAddr: 0x11DA20, symSize: 0x30 } + - { offset: 0x1AA2FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9IssueTypeOMa', symObjAddr: 0x300, symBinAddr: 0x11DA50, symSize: 0xA } + - { offset: 0x1AA693, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfC', symObjAddr: 0x0, symBinAddr: 0x11DA60, symSize: 0x10 } + - { offset: 0x1AA6F3, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfC', symObjAddr: 0x0, symBinAddr: 0x11DA60, symSize: 0x10 } + - { offset: 0x1AA707, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DV8PenNavUIE6encode2toys7Encoder_p_tKF', symObjAddr: 0x10, symBinAddr: 0x11DA70, symSize: 0xC0 } + - { offset: 0x1AA757, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DVSe8PenNavUISe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xD0, symBinAddr: 0x11DB30, symSize: 0x30 } + - { offset: 0x1AA7DD, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DVSE8PenNavUISE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x100, symBinAddr: 0x11DB60, symSize: 0xD0 } + - { offset: 0x1AA831, size: 0x8, addend: 0x0, symName: '_$sSo22CLLocationCoordinate2DV8PenNavUIE4fromABs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x1D0, symBinAddr: 0x11DC30, symSize: 0xF0 } + - { offset: 0x1AA8BB, size: 0x8, addend: 0x0, symName: ___swift_mutable_project_boxed_opaque_existential_1, symObjAddr: 0x2F0, symBinAddr: 0x11DD20, symSize: 0x30 } + - { offset: 0x1AAC87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwxx', symObjAddr: 0x20, symBinAddr: 0x11DD70, symSize: 0x10 } + - { offset: 0x1AAC9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwca', symObjAddr: 0x30, symBinAddr: 0x11DD80, symSize: 0x30 } + - { offset: 0x1AACAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwta', symObjAddr: 0x70, symBinAddr: 0x11DDB0, symSize: 0x30 } + - { offset: 0x1AACC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwet', symObjAddr: 0xA0, symBinAddr: 0x11DDE0, symSize: 0x50 } + - { offset: 0x1AACD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVwst', symObjAddr: 0xF0, symBinAddr: 0x11DE30, symSize: 0x40 } + - { offset: 0x1AACEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVMa', symObjAddr: 0x130, symBinAddr: 0x11DE70, symSize: 0x10 } + - { offset: 0x1AB07B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs0I3KeyAAWl', symObjAddr: 0x8F0, symBinAddr: 0x11E3B0, symSize: 0x30 } + - { offset: 0x1AB08F, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI26GetPoIByRefIDResultElementVGMa', symObjAddr: 0x950, symBinAddr: 0x11E3E0, symSize: 0x30 } + - { offset: 0x1AB0A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVACSeAAWl', symObjAddr: 0x980, symBinAddr: 0x11E410, symSize: 0x30 } + - { offset: 0x1AB0B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVACSEAAWl', symObjAddr: 0xA10, symBinAddr: 0x11E4A0, symSize: 0x30 } + - { offset: 0x1AB0CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOMa', symObjAddr: 0xB80, symBinAddr: 0x11E4D0, symSize: 0x10 } + - { offset: 0x1AB0DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwxx', symObjAddr: 0xBC0, symBinAddr: 0x11E4E0, symSize: 0x10 } + - { offset: 0x1AB0F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwcp', symObjAddr: 0xBD0, symBinAddr: 0x11E4F0, symSize: 0x40 } + - { offset: 0x1AB107, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwca', symObjAddr: 0xC10, symBinAddr: 0x11E530, symSize: 0x40 } + - { offset: 0x1AB11B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwta', symObjAddr: 0xC70, symBinAddr: 0x11E570, symSize: 0x40 } + - { offset: 0x1AB12F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwet', symObjAddr: 0xCB0, symBinAddr: 0x11E5B0, symSize: 0x50 } + - { offset: 0x1AB143, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVwst', symObjAddr: 0xD00, symBinAddr: 0x11E600, symSize: 0x50 } + - { offset: 0x1AB157, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVMa', symObjAddr: 0xD50, symBinAddr: 0x11E650, symSize: 0x10 } + - { offset: 0x1AB16B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOSHAASQWb', symObjAddr: 0xD60, symBinAddr: 0x11E660, symSize: 0x10 } + - { offset: 0x1AB17F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFSQAAWl', symObjAddr: 0xD70, symBinAddr: 0x11E670, symSize: 0x30 } + - { offset: 0x1AB193, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0I3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xDA0, symBinAddr: 0x11E6A0, symSize: 0x10 } + - { offset: 0x1AB1A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xDB0, symBinAddr: 0x11E6B0, symSize: 0x30 } + - { offset: 0x1AB1BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0I3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0xDE0, symBinAddr: 0x11E6E0, symSize: 0x10 } + - { offset: 0x1AB1CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0xDF0, symBinAddr: 0x11E6F0, symSize: 0x30 } + - { offset: 0x1AB1E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs0J3KeyAAWl', symObjAddr: 0xF50, symBinAddr: 0x11E850, symSize: 0x30 } + - { offset: 0x1AB1F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOMa', symObjAddr: 0x1110, symBinAddr: 0x11E880, symSize: 0x10 } + - { offset: 0x1AB20B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOSHAASQWb', symObjAddr: 0x1120, symBinAddr: 0x11E890, symSize: 0x10 } + - { offset: 0x1AB21F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFSQAAWl', symObjAddr: 0x1130, symBinAddr: 0x11E8A0, symSize: 0x30 } + - { offset: 0x1AB233, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0J3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1160, symBinAddr: 0x11E8D0, symSize: 0x10 } + - { offset: 0x1AB247, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1170, symBinAddr: 0x11E8E0, symSize: 0x30 } + - { offset: 0x1AB25B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0J3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x11A0, symBinAddr: 0x11E910, symSize: 0x10 } + - { offset: 0x1AB26F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x11B0, symBinAddr: 0x11E920, symSize: 0x30 } + - { offset: 0x1AB2B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x370, symBinAddr: 0x11DF70, symSize: 0x20 } + - { offset: 0x1AB2CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x390, symBinAddr: 0x11DF90, symSize: 0x20 } + - { offset: 0x1AB2F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x6C0, symBinAddr: 0x11E1F0, symSize: 0x20 } + - { offset: 0x1AB30C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x6E0, symBinAddr: 0x11E210, symSize: 0x20 } + - { offset: 0x1AB329, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV6encode2toys7Encoder_p_tKF', symObjAddr: 0x140, symBinAddr: 0x11DE80, symSize: 0xF0 } + - { offset: 0x1AB37E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x3B0, symBinAddr: 0x11DFB0, symSize: 0x20 } + - { offset: 0x1AB3A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x3D0, symBinAddr: 0x11DFD0, symSize: 0x10 } + - { offset: 0x1AB3BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV6encode2toys7Encoder_p_tKF', symObjAddr: 0x3E0, symBinAddr: 0x11DFE0, symSize: 0x110 } + - { offset: 0x1AB40F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0J3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x5A0, symBinAddr: 0x11E0F0, symSize: 0x40 } + - { offset: 0x1AB44A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV10CodingKeys33_CE74B5F3CAC4E9B38721DB6B603014C3LLOs0J3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x5E0, symBinAddr: 0x11E130, symSize: 0xC0 } + - { offset: 0x1AB4BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x700, symBinAddr: 0x11E230, symSize: 0x30 } + - { offset: 0x1AB4E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x730, symBinAddr: 0x11E260, symSize: 0x30 } + - { offset: 0x1AB4F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetPoIByRefIDResultV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x760, symBinAddr: 0x11E290, symSize: 0x120 } + - { offset: 0x1AB51B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26GetPoIByRefIDResultElementV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0xE20, symBinAddr: 0x11E720, symSize: 0x130 } + - { offset: 0x1ABAD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV22parseContainerChildrenySayAA3DOMO15GraphicsElementCGAA3XMLO0J0CKF', symObjAddr: 0x0, symBinAddr: 0x11E970, symSize: 0x740 } + - { offset: 0x1AC5B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseGraphicsElementyAA3DOMO0fG0CSgAA3XMLO0G0CKF', symObjAddr: 0x740, symBinAddr: 0x11F0B0, symSize: 0xB40 } + - { offset: 0x1ACAEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10parseGroupyAA3DOMO0F0CAA3XMLO7ElementCKF', symObjAddr: 0x1280, symBinAddr: 0x11FBF0, symSize: 0x140 } + - { offset: 0x1ACBFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseSwitchyAA3DOMO0F0CAA3XMLO7ElementCKF', symObjAddr: 0x13C0, symBinAddr: 0x11FD30, symSize: 0x150 } + - { offset: 0x1ACCF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseStyleAttributesyAA3DOMO012PresentationG0VAA3XMLO7ElementCKF', symObjAddr: 0x1510, symBinAddr: 0x11FE80, symSize: 0x120 } + - { offset: 0x1ACDB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV27parsePresentationAttributesyAA3DOMO0fG0VAA15AttributeParser_pKF', symObjAddr: 0x1630, symBinAddr: 0x11FFA0, symSize: 0xC40 } + - { offset: 0x1ACE78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO11DisplayModeOAESYAAWl', symObjAddr: 0x2310, symBinAddr: 0x120BE0, symSize: 0x30 } + - { offset: 0x1ACE8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7LineCapOAESYAAWl', symObjAddr: 0x2340, symBinAddr: 0x120C10, symSize: 0x30 } + - { offset: 0x1ACEA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8LineJoinOAESYAAWl', symObjAddr: 0x2370, symBinAddr: 0x120C40, symSize: 0x30 } + - { offset: 0x1ACEB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8FillRuleOAESYAAWl', symObjAddr: 0x23A0, symBinAddr: 0x120C70, symSize: 0x30 } + - { offset: 0x1ACEC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10TextAnchorOAESYAAWl', symObjAddr: 0x23D0, symBinAddr: 0x120CA0, symSize: 0x30 } + - { offset: 0x1ACF3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV19parseStyleAttribute33_F9D38FD2680150F6E65C6F1BDEFE6498LLySS_SStAC7ScannerVzKFTf4nd_n', symObjAddr: 0x2430, symBinAddr: 0x120CD0, symSize: 0x220 } + - { offset: 0x1AD09D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseStyleAttributesySDyS2SGSSKFTf4nd_n', symObjAddr: 0x2650, symBinAddr: 0x120EF0, symSize: 0x2B0 } + - { offset: 0x1AD299, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV15parseAttributesyAC0F0CAA3XMLO7ElementCKFTf4nx_n', symObjAddr: 0x2900, symBinAddr: 0x1211A0, symSize: 0x230 } + - { offset: 0x1AD487, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseLineyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x2B30, symBinAddr: 0x1213D0, symSize: 0x1D0 } + - { offset: 0x1AD592, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseCircleyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x2D00, symBinAddr: 0x1215A0, symSize: 0x180 } + - { offset: 0x1AD66C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseEllipseyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x2E80, symBinAddr: 0x121720, symSize: 0x1E0 } + - { offset: 0x1AD767, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseRectyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x3060, symBinAddr: 0x121900, symSize: 0x320 } + - { offset: 0x1AD85B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOWOc', symObjAddr: 0x33E0, symBinAddr: 0x121C20, symSize: 0x30 } + - { offset: 0x1AD86F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOSgWOh', symObjAddr: 0x3440, symBinAddr: 0x121C50, symSize: 0x30 } + - { offset: 0x1AD909, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV15logParsingError3for8filename7parsingys0G0_p_SSSgAA3XMLO7ElementCSgtFZTf4nnnd_n', symObjAddr: 0x3470, symBinAddr: 0x121C80, symSize: 0xAE0 } + - { offset: 0x1ADE89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVWOd', symObjAddr: 0x3F80, symBinAddr: 0x122760, symSize: 0x30 } + - { offset: 0x1ADEC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parsePointsySayAA3DOMO5PointVGSSKFAISSKXEfU_AA9XMLParserV10AttributesC_TG5', symObjAddr: 0x3FB0, symBinAddr: 0x122790, symSize: 0x50 } + - { offset: 0x1ADF51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parsePointsySayAA3DOMO5PointVGSSKFAISSKXEfU_AA9XMLParserV10AttributesC_TG5TA', symObjAddr: 0x4000, symBinAddr: 0x1227E0, symSize: 0x10 } + - { offset: 0x1AE9FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataCMa', symObjAddr: 0xB0, symBinAddr: 0x122860, symSize: 0x20 } + - { offset: 0x1AEA78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x50, symBinAddr: 0x122800, symSize: 0x60 } + - { offset: 0x1AEAE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xD0, symBinAddr: 0x122880, symSize: 0x50 } + - { offset: 0x1AEB2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataCfD', symObjAddr: 0x120, symBinAddr: 0x1228D0, symSize: 0x2B } + - { offset: 0x1AF31D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationCfETo', symObjAddr: 0x1620, symBinAddr: 0x123F20, symSize: 0xB0 } + - { offset: 0x1AF34C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationCMa', symObjAddr: 0x16D0, symBinAddr: 0x123FD0, symSize: 0x20 } + - { offset: 0x1AF539, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC13actionMessageSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x122900, symSize: 0x20 } + - { offset: 0x1AF599, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC13actionMessageSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x122920, symSize: 0x20 } + - { offset: 0x1AF5EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC12titleMessageSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x122940, symSize: 0x20 } + - { offset: 0x1AF641, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC12titleMessageSo7UILabelCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x122960, symSize: 0x20 } + - { offset: 0x1AF694, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9ignoreBtnSo8UIButtonCSgvgTo', symObjAddr: 0x80, symBinAddr: 0x122980, symSize: 0x20 } + - { offset: 0x1AF6EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9ignoreBtnSo8UIButtonCSgvsTo', symObjAddr: 0xA0, symBinAddr: 0x1229A0, symSize: 0x20 } + - { offset: 0x1AF741, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9acceptBtnSo8UIButtonCSgvgTo', symObjAddr: 0xC0, symBinAddr: 0x1229C0, symSize: 0x20 } + - { offset: 0x1AF796, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9acceptBtnSo8UIButtonCSgvsTo', symObjAddr: 0xE0, symBinAddr: 0x1229E0, symSize: 0x20 } + - { offset: 0x1AF7E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC4viewSo6UIViewCSgvgTo', symObjAddr: 0x100, symBinAddr: 0x122A00, symSize: 0x20 } + - { offset: 0x1AF841, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC4viewSo6UIViewCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x122A20, symSize: 0x30 } + - { offset: 0x1AF890, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9containerSo11UIStackViewCSgvgTo', symObjAddr: 0x150, symBinAddr: 0x122A50, symSize: 0x20 } + - { offset: 0x1AF8EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC9containerSo11UIStackViewCSgvsTo', symObjAddr: 0x170, symBinAddr: 0x122A70, symSize: 0x20 } + - { offset: 0x1AF93D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC12containerYesSo6UIViewCSgvgTo', symObjAddr: 0x190, symBinAddr: 0x122A90, symSize: 0x20 } + - { offset: 0x1AF992, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC12containerYesSo6UIViewCSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x122AB0, symSize: 0x20 } + - { offset: 0x1AFA43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC5frameACSo6CGRectV_tcfc', symObjAddr: 0x1D0, symBinAddr: 0x122AD0, symSize: 0x2C0 } + - { offset: 0x1AFB29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x490, symBinAddr: 0x122D90, symSize: 0x30 } + - { offset: 0x1AFB8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x4C0, symBinAddr: 0x122DC0, symSize: 0x110 } + - { offset: 0x1AFBC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x5D0, symBinAddr: 0x122ED0, symSize: 0x30 } + - { offset: 0x1AFC73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC10commonInityyF', symObjAddr: 0x600, symBinAddr: 0x122F00, symSize: 0xCF0 } + - { offset: 0x1B0143, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC14layoutSubviewsyyFTo', symObjAddr: 0x12F0, symBinAddr: 0x123BF0, symSize: 0x10 } + - { offset: 0x1B0157, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationC11setupLayout9container8centerOfySo6UIViewC_AHtF', symObjAddr: 0x13D0, symBinAddr: 0x123CD0, symSize: 0x220 } + - { offset: 0x1B019C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14StopNavigationCfD', symObjAddr: 0x15F0, symBinAddr: 0x123EF0, symSize: 0x30 } + - { offset: 0x1B0546, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x123FF0, symSize: 0xA0 } + - { offset: 0x1B06A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewCfETo', symObjAddr: 0x740, symBinAddr: 0x124730, symSize: 0x20 } + - { offset: 0x1B06D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewCMa', symObjAddr: 0x760, symBinAddr: 0x124750, symSize: 0x20 } + - { offset: 0x1B06EB, size: 0x8, addend: 0x0, symName: '_$sSo8NSNumberCMa', symObjAddr: 0x820, symBinAddr: 0x124770, symSize: 0x32 } + - { offset: 0x1B07B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x123FF0, symSize: 0xA0 } + - { offset: 0x1B08CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xA0, symBinAddr: 0x124090, symSize: 0xB0 } + - { offset: 0x1B093E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC14layoutSubviewsyyFTo', symObjAddr: 0x150, symBinAddr: 0x124140, symSize: 0xA0 } + - { offset: 0x1B0993, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC05setupE033_31A9481671A2BC924BF3D57FBE295DCFLLyyF', symObjAddr: 0x1F0, symBinAddr: 0x1241E0, symSize: 0x280 } + - { offset: 0x1B0A8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewC14startAnimatingyyF', symObjAddr: 0x470, symBinAddr: 0x124460, symSize: 0x2A0 } + - { offset: 0x1B0C03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12SkeletonViewCfD', symObjAddr: 0x710, symBinAddr: 0x124700, symSize: 0x30 } + - { offset: 0x1B0F8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17HoursScheduleDataV4data10isExpandedAcA09VenueViewF0CSg_SbtcfCTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1247B0, symSize: 0x1E0 } + - { offset: 0x1B1139, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17HoursScheduleDataV4data10isExpandedAcA09VenueViewF0CSg_SbtcfCTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1247B0, symSize: 0x1E0 } + - { offset: 0x1B11DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17HoursScheduleDataV4data10isExpandedAcA07PoiViewF0CSg_SbtcfCTf4nnd_n', symObjAddr: 0x1E0, symBinAddr: 0x124990, symSize: 0x1D3 } + - { offset: 0x1B1606, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LiveObjectDrawingManagerV11drawObjects_5usingySayAA0dE0VGSg_17PenguinINRenderer10PIRendererCSgtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x124B70, symSize: 0x940 } + - { offset: 0x1B19A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVWOc', symObjAddr: 0x980, symBinAddr: 0x1254B0, symSize: 0x30 } + - { offset: 0x1B19B8, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized10targetSizeABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0x9E0, symBinAddr: 0x125510, symSize: 0x20 } + - { offset: 0x1B19CC, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xA40, symBinAddr: 0x125550, symSize: 0x20 } + - { offset: 0x1B19E0, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xA60, symBinAddr: 0x125570, symSize: 0x10 } + - { offset: 0x1B19F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVWOh', symObjAddr: 0xA70, symBinAddr: 0x125580, symSize: 0x30 } + - { offset: 0x1B1A08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LiveObjectDrawingManagerV11drawObjects_5usingySayAA0dE0VGSg_17PenguinINRenderer10PIRendererCSgtFZySo7UIImageCcfU0_TA', symObjAddr: 0xAD0, symBinAddr: 0x1255E0, symSize: 0x30 } + - { offset: 0x1B1E8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LiveObjectDrawingManagerV11drawObjects_5usingySayAA0dE0VGSg_17PenguinINRenderer10PIRendererCSgtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x124B70, symSize: 0x940 } + - { offset: 0x1B2389, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LiveObjectDrawingManagerV13removeObjects_5usingySayAA0dE0VG_17PenguinINRenderer10PIRendererCSgtFZTf4nnd_n', symObjAddr: 0xB70, symBinAddr: 0x125610, symSize: 0x15F } + - { offset: 0x1B28DA, size: 0x8, addend: 0x0, symName: '_$s7Penguin12NearGateDataVSgWOh', symObjAddr: 0x60, symBinAddr: 0x125790, symSize: 0x30 } + - { offset: 0x1B2C02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14drawNearFloors8locationy7Penguin10PILocationC_tF', symObjAddr: 0x930, symBinAddr: 0x126040, symSize: 0xE00 } + - { offset: 0x1B364F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14drawNearFloors8locationy7Penguin10PILocationC_tFySbcfU1_', symObjAddr: 0x17D0, symBinAddr: 0x126EE0, symSize: 0x1A0 } + - { offset: 0x1B38A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC25handleClosestFloorsToUser__19forceSelectedRedrawy17PenguinINRenderer10PIRendererC_0O010PILocationCSbtFySbcfU2_', symObjAddr: 0x1730, symBinAddr: 0x126E40, symSize: 0xA0 } + - { offset: 0x1B3938, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnFSf_Tg5', symObjAddr: 0x1990, symBinAddr: 0x1270A0, symSize: 0xF0 } + - { offset: 0x1B39DB, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x1D10, symBinAddr: 0x127420, symSize: 0x230 } + - { offset: 0x1B3BB5, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x1F40, symBinAddr: 0x127650, symSize: 0xE0 } + - { offset: 0x1B3CAD, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnFSi_Tg5', symObjAddr: 0x2020, symBinAddr: 0x127730, symSize: 0xD0 } + - { offset: 0x1B3D24, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6insertySb8inserted_x17memberAfterInserttxnF10Foundation3URLV_Tg5', symObjAddr: 0x20F0, symBinAddr: 0x127800, symSize: 0x200 } + - { offset: 0x1B3D86, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtFSf_Tg5', symObjAddr: 0x24E0, symBinAddr: 0x127BF0, symSize: 0x140 } + - { offset: 0x1B3E1E, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x2780, symBinAddr: 0x127E90, symSize: 0x260 } + - { offset: 0x1B3FFA, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x29E0, symBinAddr: 0x1280F0, symSize: 0x120 } + - { offset: 0x1B4113, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtFSi_Tg5', symObjAddr: 0x2B00, symBinAddr: 0x128210, symSize: 0x100 } + - { offset: 0x1B41AB, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV9insertNew_2at8isUniqueyxn_s10_HashTableV6BucketVSbtF10Foundation3URLV_Tg5', symObjAddr: 0x2C00, symBinAddr: 0x128310, symSize: 0x1D0 } + - { offset: 0x1B4204, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyFSf_Tg5', symObjAddr: 0x2DD0, symBinAddr: 0x1284E0, symSize: 0x130 } + - { offset: 0x1B4281, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x3050, symBinAddr: 0x128760, symSize: 0x130 } + - { offset: 0x1B42FE, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x3180, symBinAddr: 0x128890, symSize: 0x130 } + - { offset: 0x1B437B, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyFSi_Tg5', symObjAddr: 0x32B0, symBinAddr: 0x1289C0, symSize: 0x130 } + - { offset: 0x1B43F8, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV4copyyyF10Foundation3URLV_Tg5', symObjAddr: 0x33E0, symBinAddr: 0x128AF0, symSize: 0x1F0 } + - { offset: 0x1B4463, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tFSf_Tg5', symObjAddr: 0x35D0, symBinAddr: 0x128CE0, symSize: 0x210 } + - { offset: 0x1B4519, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x39F0, symBinAddr: 0x129100, symSize: 0x290 } + - { offset: 0x1B463C, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x3C80, symBinAddr: 0x129390, symSize: 0x230 } + - { offset: 0x1B4746, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tFSi_Tg5', symObjAddr: 0x3EB0, symBinAddr: 0x1295C0, symSize: 0x1F0 } + - { offset: 0x1B47FC, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13copyAndResize8capacityySi_tF10Foundation3URLV_Tg5', symObjAddr: 0x40A0, symBinAddr: 0x1297B0, symSize: 0x2A0 } + - { offset: 0x1B4881, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tFSf_Tg5', symObjAddr: 0x4340, symBinAddr: 0x129A50, symSize: 0x260 } + - { offset: 0x1B495F, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF8PenNavUI14CGTextRendererC10ColorSpaceO_Tg5', symObjAddr: 0x4800, symBinAddr: 0x129F10, symSize: 0x2F0 } + - { offset: 0x1B4AA2, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x4AF0, symBinAddr: 0x12A200, symSize: 0x280 } + - { offset: 0x1B4BD4, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tFSi_Tg5', symObjAddr: 0x4D70, symBinAddr: 0x12A480, symSize: 0x240 } + - { offset: 0x1B4CB2, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6resize8capacityySi_tF10Foundation3URLV_Tg5', symObjAddr: 0x4FB0, symBinAddr: 0x12A6C0, symSize: 0x300 } + - { offset: 0x1B4D41, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6removeyxSgxFSi_Tg5', symObjAddr: 0x5310, symBinAddr: 0x12AA20, symSize: 0xD0 } + - { offset: 0x1B4DCA, size: 0x8, addend: 0x0, symName: '_$sSh8_VariantV6removeyxSgxF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x53E0, symBinAddr: 0x12AAF0, symSize: 0xF0 } + - { offset: 0x1B4ED4, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV7_delete2atys10_HashTableV6BucketV_tFSi_Tg5', symObjAddr: 0x54D0, symBinAddr: 0x12ABE0, symSize: 0x190 } + - { offset: 0x1B4F48, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV7_delete2atys10_HashTableV6BucketV_tF8PenNavUI9ToastTypeO_Tg5', symObjAddr: 0x5660, symBinAddr: 0x12AD70, symSize: 0x1D0 } + - { offset: 0x1B501C, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV13extractSubset5using5countAByxGs13_UnsafeBitsetV_SitFSi_Tg5', symObjAddr: 0x5830, symBinAddr: 0x12AF40, symSize: 0x1E0 } + - { offset: 0x1B515C, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6filteryAByxGSbxKXEKFADs13_UnsafeBitsetVKXEfU_Si_Tg596$s8PenNavUI17MapViewControllerC19removeDistantFloors8locationy7Penguin10PILocationC_tFSbSiXEfU0_SaySiGTf1nnc_nTf4nng_n', symObjAddr: 0x5A10, symBinAddr: 0x12B120, symSize: 0x120 } + - { offset: 0x1B53F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC25handleClosestFloorsToUser__19forceSelectedRedrawy17PenguinINRenderer10PIRendererC_0O010PILocationCSbtFTf4dndn_n', symObjAddr: 0x5B30, symBinAddr: 0x12B240, symSize: 0xFA0 } + - { offset: 0x1B60F7, size: 0x8, addend: 0x0, symName: '_$ss10_NativeSetV6filteryAByxGSbxKXEKFADs13_UnsafeBitsetVKXEfU_Si_Tg592$s8PenNavUI17MapViewControllerC15removeNearFloor8locationy7Penguin10PILocationC_tFSbSiXEfU0_SaySiGTf1nnc_nTf4nng_n', symObjAddr: 0x6AD0, symBinAddr: 0x12C1E0, symSize: 0x120 } + - { offset: 0x1B6261, size: 0x8, addend: 0x0, symName: '_$s7Penguin8MapLevelOSgWOd', symObjAddr: 0x6E00, symBinAddr: 0x12C4E0, symSize: 0x40 } + - { offset: 0x1B6275, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC25handleClosestFloorsToUser__19forceSelectedRedrawy17PenguinINRenderer10PIRendererC_0O010PILocationCSbtFySbcfU2_TA', symObjAddr: 0x6E90, symBinAddr: 0x12C570, symSize: 0x20 } + - { offset: 0x1B6289, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MapViewControllerC14drawNearFloors8locationy7Penguin10PILocationC_tFySbcfU1_TA', symObjAddr: 0x6F30, symBinAddr: 0x12C5D0, symSize: 0x20 } + - { offset: 0x1B6E71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15NavigationStateOMa', symObjAddr: 0x1A0, symBinAddr: 0x12C660, symSize: 0x10 } + - { offset: 0x1B6E85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15NavigationStateOSHAASQWb', symObjAddr: 0x1B0, symBinAddr: 0x12C670, symSize: 0x10 } + - { offset: 0x1B6E99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15NavigationStateOACSQAAWl', symObjAddr: 0x1C0, symBinAddr: 0x12C680, symSize: 0x30 } + - { offset: 0x1B6F87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15NavigationStateOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x260, symBinAddr: 0x12C6B0, symSize: 0x32 } + - { offset: 0x1B73F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC14sharedInstance33_3D6BD24F9690AB8735E9219D8905A864LLACSgvpZ', symObjAddr: 0x6460, symBinAddr: 0x39F780, symSize: 0x0 } + - { offset: 0x1B7AE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerCMa', symObjAddr: 0x3DB0, symBinAddr: 0x130460, symSize: 0x20 } + - { offset: 0x1B7BBC, size: 0x8, addend: 0x0, symName: '_$sSS11withCStringyxxSPys4Int8VGKXEKlFSb_Tg5024$sSdySdSgxcSyRzlufcSbSpyf6GXEfU_j5SPys4C7VGXEfU_SpySdGTf1cn_n', symObjAddr: 0x3DD0, symBinAddr: 0x130480, symSize: 0xF0 } + - { offset: 0x1B7DCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5shareyyFySSSgcfU_TA', symObjAddr: 0x50C0, symBinAddr: 0x131770, symSize: 0x10 } + - { offset: 0x1B7DDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC17shareUserLocation33_D0641B0FFCA1271976891547CEED6A97LLyyFySSSgcfU_TA', symObjAddr: 0x58A0, symBinAddr: 0x131E80, symSize: 0x10 } + - { offset: 0x1B7DF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5shareyySo8UIButtonCFySSSgcfU_TA', symObjAddr: 0x5EB0, symBinAddr: 0x132490, symSize: 0x10 } + - { offset: 0x1B7E07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5shareyyFySSSgcfU_TA', symObjAddr: 0x5EC0, symBinAddr: 0x1324A0, symSize: 0x10 } + - { offset: 0x1B7E1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC016openUserLocationE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_TA', symObjAddr: 0x5F50, symBinAddr: 0x132500, symSize: 0x20 } + - { offset: 0x1B7E2F, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x5F70, symBinAddr: 0x132520, symSize: 0x20 } + - { offset: 0x1B7E43, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x5F90, symBinAddr: 0x132540, symSize: 0x10 } + - { offset: 0x1B7E57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFyyScMYccfU_TA', symObjAddr: 0x6040, symBinAddr: 0x132570, symSize: 0x10 } + - { offset: 0x1B7E6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFyyScMYccfU_ySo13UIAlertActionCcfU_TA', symObjAddr: 0x6050, symBinAddr: 0x132580, symSize: 0x10 } + - { offset: 0x1B7E7F, size: 0x8, addend: 0x0, symName: '_$sSdySdSgxcSyRzlufcSbSpySdGXEfU_SbSPys4Int8VGXEfU_TA', symObjAddr: 0x6090, symBinAddr: 0x132590, symSize: 0x50 } + - { offset: 0x1B7EA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC010openCampusE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_TA', symObjAddr: 0x60F0, symBinAddr: 0x1325F0, symSize: 0x20 } + - { offset: 0x1B7EB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openVenueE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_TA', symObjAddr: 0x6140, symBinAddr: 0x132610, symSize: 0x20 } + - { offset: 0x1B7EC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openPlaceE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_TA', symObjAddr: 0x61D0, symBinAddr: 0x1326A0, symSize: 0x30 } + - { offset: 0x1B7EDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC8delegateAA0dE8Delegate_pSgvWyyScMYccfU_TA', symObjAddr: 0x6200, symBinAddr: 0x1326D0, symSize: 0x10 } + - { offset: 0x1B7EF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33UserLocationDetailsViewControllerC5shareyyFySSSgcfU_TA', symObjAddr: 0x6250, symBinAddr: 0x1326E0, symSize: 0x10 } + - { offset: 0x1B7F04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26VenueDetailsViewControllerC5shareyyFySSSgcfU_TA', symObjAddr: 0x6260, symBinAddr: 0x1326F0, symSize: 0x10 } + - { offset: 0x1B8264, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC02isD17LinkingConfiguredSbvg', symObjAddr: 0x40, symBinAddr: 0x12C6F0, symSize: 0x190 } + - { offset: 0x1B8345, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC8delegateAA0dE8Delegate_pSgvWyyScMYccfU_', symObjAddr: 0x1D0, symBinAddr: 0x12C880, symSize: 0x180 } + - { offset: 0x1B8451, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC8delegateAA0dE8Delegate_pSgvs', symObjAddr: 0x350, symBinAddr: 0x12CA00, symSize: 0x230 } + - { offset: 0x1B8500, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC03setdE0yy10Foundation3URLVSgF', symObjAddr: 0x580, symBinAddr: 0x12CC30, symSize: 0x2F0 } + - { offset: 0x1B8650, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC014generateCampusdE08campusId10completionySiSg_ySSSgctFyAHcfU_', symObjAddr: 0x870, symBinAddr: 0x12CF20, symSize: 0x20 } + - { offset: 0x1B8908, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openPlaceE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tF', symObjAddr: 0x890, symBinAddr: 0x12CF40, symSize: 0xC40 } + - { offset: 0x1B9561, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openPlaceE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_', symObjAddr: 0x14D0, symBinAddr: 0x12DB80, symSize: 0x90 } + - { offset: 0x1B9615, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openVenueE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tF', symObjAddr: 0x1560, symBinAddr: 0x12DC10, symSize: 0xA70 } + - { offset: 0x1BA169, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC09openVenueE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_', symObjAddr: 0x1FD0, symBinAddr: 0x12E680, symSize: 0x90 } + - { offset: 0x1BA1C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC010openCampusE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tF', symObjAddr: 0x2060, symBinAddr: 0x12E710, symSize: 0x760 } + - { offset: 0x1BA893, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC010openCampusE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_', symObjAddr: 0x27C0, symBinAddr: 0x12EE70, symSize: 0x90 } + - { offset: 0x1BA982, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC016openUserLocationE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tF', symObjAddr: 0x2850, symBinAddr: 0x12EF00, symSize: 0xF30 } + - { offset: 0x1BBA6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC016openUserLocationE033_3D6BD24F9690AB8735E9219D8905A864LL4pathySS_tFyyScMYccfU_', symObjAddr: 0x3780, symBinAddr: 0x12FE30, symSize: 0x150 } + - { offset: 0x1BBBB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFyyScMYccfU_', symObjAddr: 0x38D0, symBinAddr: 0x12FF80, symSize: 0x420 } + - { offset: 0x1BBDAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFyyScMYccfU_ySo13UIAlertActionCcfU_', symObjAddr: 0x3CF0, symBinAddr: 0x1303A0, symSize: 0x70 } + - { offset: 0x1BBE06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerCfD', symObjAddr: 0x3D60, symBinAddr: 0x130410, symSize: 0x50 } + - { offset: 0x1BC023, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC013generateVenuedE07venueId10completionySiSg_ySSSgctF03$s8ab4UI26H40DetailsViewControllerC5shareyyFySSSgcfU_AA0hnoP0CSgXwz_XxTf1ncn_nTf4nng_n', symObjAddr: 0x3EC0, symBinAddr: 0x130570, symSize: 0x420 } + - { offset: 0x1BC25D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC12getPlaceType33_3D6BD24F9690AB8735E9219D8905A864LL4fromAA0hI0OSgSS_tFTf4nd_n', symObjAddr: 0x4310, symBinAddr: 0x1309C0, symSize: 0xB0 } + - { offset: 0x1BC3CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC11isPathValid33_3D6BD24F9690AB8735E9219D8905A864LL3for4pathSbAA9PlaceTypeOSg_SStFTf4nnd_n', symObjAddr: 0x43C0, symBinAddr: 0x130A70, symSize: 0x720 } + - { offset: 0x1BCB9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC21showSwitchCampusAlert33_3D6BD24F9690AB8735E9219D8905A864LL8campusIdySi_tFTf4nd_n', symObjAddr: 0x4AE0, symBinAddr: 0x131190, symSize: 0x1C0 } + - { offset: 0x1BCBF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC013generatePlacedE07placeId10completionySiSg_ySSSgctF03$s8aB47UI24PoiDetailsViewControllerC5shareyyFySSSgcfU_AA0nopQ0CSgXwz_XxTf1ncn_nTf4nng_n', symObjAddr: 0x4CA0, symBinAddr: 0x131350, symSize: 0x420 } + - { offset: 0x1BD1D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC6boundsAC4RectVvg', symObjAddr: 0x0, symBinAddr: 0x132830, symSize: 0x220 } + - { offset: 0x1BD674, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC6boundsAC4RectVvg', symObjAddr: 0x0, symBinAddr: 0x132830, symSize: 0x220 } + - { offset: 0x1BDE8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCMa', symObjAddr: 0x35C0, symBinAddr: 0x135A90, symSize: 0x20 } + - { offset: 0x1BDEA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOwet', symObjAddr: 0x3640, symBinAddr: 0x135AB0, symSize: 0x50 } + - { offset: 0x1BDEB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOwst', symObjAddr: 0x3690, symBinAddr: 0x135B00, symSize: 0x50 } + - { offset: 0x1BDECA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOwug', symObjAddr: 0x36E0, symBinAddr: 0x135B50, symSize: 0x20 } + - { offset: 0x1BDEDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOwui', symObjAddr: 0x3710, symBinAddr: 0x135B70, symSize: 0x20 } + - { offset: 0x1BDEF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOMa', symObjAddr: 0x3730, symBinAddr: 0x135B90, symSize: 0x10 } + - { offset: 0x1BDF06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSHAASQWb', symObjAddr: 0x3740, symBinAddr: 0x135BA0, symSize: 0x10 } + - { offset: 0x1BDF1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOAGSQAAWl', symObjAddr: 0x3750, symBinAddr: 0x135BB0, symSize: 0x30 } + - { offset: 0x1BDF39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSHAASQWb', symObjAddr: 0x38B0, symBinAddr: 0x135D10, symSize: 0x10 } + - { offset: 0x1BDF4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCAESQAAWl', symObjAddr: 0x38C0, symBinAddr: 0x135D20, symSize: 0x30 } + - { offset: 0x1BE00F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8locationAC5PointVSgvg', symObjAddr: 0x38F0, symBinAddr: 0x135D50, symSize: 0x100 } + - { offset: 0x1BE2A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8applying6matrixAeC9TransformO6MatrixV_tF', symObjAddr: 0x39F0, symBinAddr: 0x135E50, symSize: 0x2B0 } + - { offset: 0x1BE574, size: 0x8, addend: 0x0, symName: '_$sSasSHRzlE4hash4intoys6HasherVz_tF8PenNavUI9LayerTreeO8GradientV4StopV_Tg5', symObjAddr: 0x3CA0, symBinAddr: 0x136100, symSize: 0x1D0 } + - { offset: 0x1BE83D, size: 0x8, addend: 0x0, symName: '_$sSasSHRzlE4hash4intoys6HasherVz_tF8PenNavUI9LayerTreeO4PathC7SegmentO_Tg5', symObjAddr: 0x3E70, symBinAddr: 0x1362D0, symSize: 0x1F0 } + - { offset: 0x1BEBEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOg', symObjAddr: 0x4060, symBinAddr: 0x1364C0, symSize: 0x10 } + - { offset: 0x1BEC0A, size: 0x8, addend: 0x0, symName: '_$sSasSHRzlE4hash4intoys6HasherVz_tF8PenNavUI9LayerTreeO5PointV_Tg5', symObjAddr: 0x4070, symBinAddr: 0x1364D0, symSize: 0x80 } + - { offset: 0x1BED17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOh', symObjAddr: 0x4120, symBinAddr: 0x136550, symSize: 0x30 } + - { offset: 0x1BED2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC9DirectionOMa', symObjAddr: 0x43F0, symBinAddr: 0x136690, symSize: 0x10 } + - { offset: 0x1BED3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC9DirectionOSHAASQWb', symObjAddr: 0x4400, symBinAddr: 0x1366A0, symSize: 0x10 } + - { offset: 0x1BED53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC9DirectionOAGSQAAWl', symObjAddr: 0x4410, symBinAddr: 0x1366B0, symSize: 0x30 } + - { offset: 0x1BEE04, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO8GradientV4StopV_Tt1g5', symObjAddr: 0x220, symBinAddr: 0x132A50, symSize: 0x1A0 } + - { offset: 0x1BEE24, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO8GradientV4StopV_Tt1g5', symObjAddr: 0x220, symBinAddr: 0x132A50, symSize: 0x1A0 } + - { offset: 0x1BEE38, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO8GradientV4StopV_Tt1g5', symObjAddr: 0x220, symBinAddr: 0x132A50, symSize: 0x1A0 } + - { offset: 0x1BEE4C, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO8GradientV4StopV_Tt1g5', symObjAddr: 0x220, symBinAddr: 0x132A50, symSize: 0x1A0 } + - { offset: 0x1BEFAA, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO0E0C8ContentsO_Tt1g5', symObjAddr: 0x3C0, symBinAddr: 0x132BF0, symSize: 0x1E90 } + - { offset: 0x1BF9C8, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO4PathC7SegmentO_Tt1g5', symObjAddr: 0x2250, symBinAddr: 0x134A80, symSize: 0x1C0 } + - { offset: 0x1BFAFF, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO9TransformO_Tt1g5', symObjAddr: 0x2410, symBinAddr: 0x134C40, symSize: 0x170 } + - { offset: 0x1BFB1F, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO9TransformO_Tt1g5', symObjAddr: 0x2410, symBinAddr: 0x134C40, symSize: 0x170 } + - { offset: 0x1BFB33, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO9TransformO_Tt1g5', symObjAddr: 0x2410, symBinAddr: 0x134C40, symSize: 0x170 } + - { offset: 0x1BFB47, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO9TransformO_Tt1g5', symObjAddr: 0x2410, symBinAddr: 0x134C40, symSize: 0x170 } + - { offset: 0x1BFC51, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI9LayerTreeO5ShapeO_Tt1g5', symObjAddr: 0x2580, symBinAddr: 0x134DB0, symSize: 0x480 } + - { offset: 0x1C00A9, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO6FilterC6EffectO_Tt1g5', symObjAddr: 0x2A00, symBinAddr: 0x135230, symSize: 0x60 } + - { offset: 0x1C00C9, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO6FilterC6EffectO_Tt1g5', symObjAddr: 0x2A00, symBinAddr: 0x135230, symSize: 0x60 } + - { offset: 0x1C00DD, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO6FilterC6EffectO_Tt1g5', symObjAddr: 0x2A00, symBinAddr: 0x135230, symSize: 0x60 } + - { offset: 0x1C00F1, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO6FilterC6EffectO_Tt1g5', symObjAddr: 0x2A00, symBinAddr: 0x135230, symSize: 0x60 } + - { offset: 0x1C01C6, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI3DOMO14RadialGradientC4StopV_Tt1g5', symObjAddr: 0x2A60, symBinAddr: 0x135290, symSize: 0x290 } + - { offset: 0x1C0323, size: 0x8, addend: 0x0, symName: '_$sSasSQRzlE2eeoiySbSayxG_ABtFZ8PenNavUI11RouteOptionV_Tt1g5', symObjAddr: 0x2F80, symBinAddr: 0x135520, symSize: 0x2C0 } + - { offset: 0x1C0570, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x3450, symBinAddr: 0x1359F0, symSize: 0x60 } + - { offset: 0x1C05D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x3810, symBinAddr: 0x135C70, symSize: 0x50 } + - { offset: 0x1C0DCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentO4hash4intoys6HasherVz_tF', symObjAddr: 0x3240, symBinAddr: 0x1357E0, symSize: 0x190 } + - { offset: 0x1C1135, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSHAASH9hashValueSivgTW', symObjAddr: 0x33D0, symBinAddr: 0x135970, symSize: 0x60 } + - { offset: 0x1C11B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x3430, symBinAddr: 0x1359D0, symSize: 0x20 } + - { offset: 0x1C11C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x34B0, symBinAddr: 0x135A50, symSize: 0x40 } + - { offset: 0x1C123D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSHAASH9hashValueSivgTW', symObjAddr: 0x3780, symBinAddr: 0x135BE0, symSize: 0x50 } + - { offset: 0x1C1316, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x37D0, symBinAddr: 0x135C30, symSize: 0x40 } + - { offset: 0x1C137C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x3860, symBinAddr: 0x135CC0, symSize: 0x50 } + - { offset: 0x1C144B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC7SegmentO2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x4160, symBinAddr: 0x136590, symSize: 0x100 } + - { offset: 0x1C1858, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO06layoutI0yAA0fI8Provider_pSgAA0dE10ControllerCF', symObjAddr: 0x0, symBinAddr: 0x1366E0, symSize: 0x120 } + - { offset: 0x1C1979, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideO06layoutH02vcAA0fH8Provider_pSo16UIViewControllerC_tF', symObjAddr: 0x220, symBinAddr: 0x1368D0, symSize: 0xF0 } + - { offset: 0x1C1A33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeOSHAASQWb', symObjAddr: 0x400, symBinAddr: 0x136AA0, symSize: 0x10 } + - { offset: 0x1C1A47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeOACSQAAWl', symObjAddr: 0x410, symBinAddr: 0x136AB0, symSize: 0x30 } + - { offset: 0x1C1A5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideOSHAASQWb', symObjAddr: 0x440, symBinAddr: 0x136AE0, symSize: 0x10 } + - { offset: 0x1C1A6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideOACSQAAWl', symObjAddr: 0x450, symBinAddr: 0x136AF0, symSize: 0x30 } + - { offset: 0x1C1A83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideOSHAASQWb', symObjAddr: 0x480, symBinAddr: 0x136B20, symSize: 0x10 } + - { offset: 0x1C1A97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideOACSQAAWl', symObjAddr: 0x490, symBinAddr: 0x136B30, symSize: 0x30 } + - { offset: 0x1C1AAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeOMa', symObjAddr: 0x4C0, symBinAddr: 0x136B60, symSize: 0x10 } + - { offset: 0x1C1ABF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideOMa', symObjAddr: 0x4D0, symBinAddr: 0x136B70, symSize: 0x10 } + - { offset: 0x1C1AD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideOMa', symObjAddr: 0x4E0, symBinAddr: 0x136B80, symSize: 0x10 } + - { offset: 0x1C1B14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueACSgSi_tcfC', symObjAddr: 0x120, symBinAddr: 0x136800, symSize: 0x10 } + - { offset: 0x1C1B28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueSivg', symObjAddr: 0x130, symBinAddr: 0x136810, symSize: 0x10 } + - { offset: 0x1C1B58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0x190, symBinAddr: 0x136860, symSize: 0x30 } + - { offset: 0x1C1B87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideO8rawValueACSgSi_tcfC', symObjAddr: 0x1D0, symBinAddr: 0x136890, symSize: 0x20 } + - { offset: 0x1C1BC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelLayoutReferenceGuideOSYAASY8rawValuexSg03RawJ0Qz_tcfCTW', symObjAddr: 0x200, symBinAddr: 0x1368B0, symSize: 0x20 } + - { offset: 0x1C1BF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideO8rawValueACSgSi_tcfC', symObjAddr: 0x310, symBinAddr: 0x1369C0, symSize: 0x20 } + - { offset: 0x1C1C25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI39FloatingPanelLayoutContentBoundingGuideOSYAASY8rawValuexSg03RawK0Qz_tcfCTW', symObjAddr: 0x3C0, symBinAddr: 0x136A60, symSize: 0x20 } + - { offset: 0x1C1C4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FloatingPanelReferenceEdgeO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x3E0, symBinAddr: 0x136A80, symSize: 0x20 } + - { offset: 0x1C2045, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC11placeholderSo7UIImageCSgvpZ', symObjAddr: 0xC7B8, symBinAddr: 0x3BD030, symSize: 0x0 } + - { offset: 0x1C205F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC11placeholderSo7UIImageCSgvpZ', symObjAddr: 0xC7C0, symBinAddr: 0x3BD038, symSize: 0x0 } + - { offset: 0x1C2190, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC11placeholder_WZ', symObjAddr: 0x0, symBinAddr: 0x136BE0, symSize: 0x100 } + - { offset: 0x1C229C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewCfETo', symObjAddr: 0x8E0, symBinAddr: 0x1374C0, symSize: 0x10 } + - { offset: 0x1C22C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewCMa', symObjAddr: 0x8F0, symBinAddr: 0x1374D0, symSize: 0x20 } + - { offset: 0x1C22DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC11placeholder_WZ', symObjAddr: 0x910, symBinAddr: 0x1374F0, symSize: 0x20 } + - { offset: 0x1C2416, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewCfETo', symObjAddr: 0x1680, symBinAddr: 0x138260, symSize: 0x40 } + - { offset: 0x1C2445, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewCMa', symObjAddr: 0x16C0, symBinAddr: 0x1382A0, symSize: 0x20 } + - { offset: 0x1C266D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC5image5width6height12cornerRadius11contentModeACSo7UIImageC_S3dSo013UIViewContentM0Vtcfc', symObjAddr: 0x100, symBinAddr: 0x136CE0, symSize: 0x740 } + - { offset: 0x1C28B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x840, symBinAddr: 0x137420, symSize: 0x50 } + - { offset: 0x1C2923, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16CampusSymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x890, symBinAddr: 0x137470, symSize: 0x30 } + - { offset: 0x1C298F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC11placeholderSo7UIImageCSgvpZfiAGyXEfU_', symObjAddr: 0x930, symBinAddr: 0x137510, symSize: 0x140 } + - { offset: 0x1C2A08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC5image11contentModeACSo7UIImageCSg_So013UIViewContentJ0Vtcfc', symObjAddr: 0xA70, symBinAddr: 0x137650, symSize: 0x1A0 } + - { offset: 0x1C2A78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xC10, symBinAddr: 0x1377F0, symSize: 0x110 } + - { offset: 0x1C2AD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xD20, symBinAddr: 0x137900, symSize: 0x30 } + - { offset: 0x1C2B05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC05setupG033_5BC7EB4CFBE79E2FDCB9A3883CF0BD47LLyyF', symObjAddr: 0xD50, symBinAddr: 0x137930, symSize: 0x360 } + - { offset: 0x1C2C3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC4drawyySo6CGRectVF', symObjAddr: 0x10B0, symBinAddr: 0x137C90, symSize: 0x4E0 } + - { offset: 0x1C2E39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC4drawyySo6CGRectVFTo', symObjAddr: 0x1590, symBinAddr: 0x138170, symSize: 0x70 } + - { offset: 0x1C2E6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24SelectedCampusSymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1600, symBinAddr: 0x1381E0, symSize: 0x30 } + - { offset: 0x1C32D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC14sharedInstance33_FDD434C73DE549E6BD19BD9C4E1DE7EDLLACSgvpZ', symObjAddr: 0x1280, symBinAddr: 0x39FA48, symSize: 0x0 } + - { offset: 0x1C33DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerCMa', symObjAddr: 0x20, symBinAddr: 0x1382C0, symSize: 0x20 } + - { offset: 0x1C3414, size: 0x8, addend: 0x0, symName: '_$sSa36_reserveCapacityAssumingUniqueBuffer8oldCountySi_tF8PenNavUI5PlaceC_Tg5', symObjAddr: 0x170, symBinAddr: 0x138410, symSize: 0x50 } + - { offset: 0x1C3471, size: 0x8, addend: 0x0, symName: '_$sSa37_appendElementAssumeUniqueAndCapacity_03newB0ySi_xntF8PenNavUI5PlaceC_Tg5', symObjAddr: 0x1C0, symBinAddr: 0x138460, symSize: 0x30 } + - { offset: 0x1C366F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCSgxSgSEsSERzlWl', symObjAddr: 0x1130, symBinAddr: 0x139310, symSize: 0x60 } + - { offset: 0x1C3683, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5PlaceCSgMa', symObjAddr: 0x1190, symBinAddr: 0x139370, symSize: 0x50 } + - { offset: 0x1C3849, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC3keySSSgvgTf4d_n', symObjAddr: 0x1F0, symBinAddr: 0x138490, symSize: 0x190 } + - { offset: 0x1C39E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC03getD8Location33_FDD434C73DE549E6BD19BD9C4E1DE7EDLLAA5PlaceCSgyFTf4d_n', symObjAddr: 0x380, symBinAddr: 0x138620, symSize: 0x2E0 } + - { offset: 0x1C3D00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC04drawD16LocationIfNeeded2on5usingySay7Penguin5FloorCG_0L10INRenderer10PIRendererCSgtFTf4nnd_n', symObjAddr: 0x6A0, symBinAddr: 0x138900, symSize: 0x810 } + - { offset: 0x1C4162, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ParkingManagerC04saveD8LocationyyAA5PlaceCSgFTf4nd_n', symObjAddr: 0xF30, symBinAddr: 0x139110, symSize: 0x200 } + - { offset: 0x1C4556, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x139400, symSize: 0x20 } + - { offset: 0x1C4701, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCfE', symObjAddr: 0x4D0, symBinAddr: 0x1398D0, symSize: 0x40 } + - { offset: 0x1C472E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCfETo', symObjAddr: 0x540, symBinAddr: 0x139940, symSize: 0x50 } + - { offset: 0x1C475D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCMa', symObjAddr: 0x590, symBinAddr: 0x139990, symSize: 0x20 } + - { offset: 0x1C47B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x5B0, symBinAddr: 0x1399B0, symSize: 0x20 } + - { offset: 0x1C48AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x5D0, symBinAddr: 0x1399D0, symSize: 0x140 } + - { offset: 0x1C4961, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtF', symObjAddr: 0x710, symBinAddr: 0x139B10, symSize: 0x100 } + - { offset: 0x1C4A2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x810, symBinAddr: 0x139C10, symSize: 0xA0 } + - { offset: 0x1C4A56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x8B0, symBinAddr: 0x139CB0, symSize: 0x20 } + - { offset: 0x1C4A9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x8D0, symBinAddr: 0x139CD0, symSize: 0x30 } + - { offset: 0x1C4B14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC10setupPanelyyF', symObjAddr: 0x900, symBinAddr: 0x139D00, symSize: 0xD0 } + - { offset: 0x1C4BB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC10setupPanelyyFTo', symObjAddr: 0x9D0, symBinAddr: 0x139DD0, symSize: 0x30 } + - { offset: 0x1C4BF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0xA00, symBinAddr: 0x139E00, symSize: 0x220 } + - { offset: 0x1C4DF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0xC20, symBinAddr: 0x13A020, symSize: 0x50 } + - { offset: 0x1C4E22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0xCF0, symBinAddr: 0x13A070, symSize: 0x20 } + - { offset: 0x1C4E54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4dnn_n', symObjAddr: 0xD10, symBinAddr: 0x13A090, symSize: 0xF0 } + - { offset: 0x1C4E91, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xE30, symBinAddr: 0x13A1A0, symSize: 0x20 } + - { offset: 0x1C4EA5, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xE50, symBinAddr: 0x13A1C0, symSize: 0x10 } + - { offset: 0x1C5069, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x139400, symSize: 0x20 } + - { offset: 0x1C50C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC05tableE0So07UITableE0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x139420, symSize: 0x20 } + - { offset: 0x1C511C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x40, symBinAddr: 0x139440, symSize: 0x60 } + - { offset: 0x1C515B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC7dismissyySo8UIButtonCFTo', symObjAddr: 0xA0, symBinAddr: 0x1394A0, symSize: 0x40 } + - { offset: 0x1C51A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC12registerCellyyF', symObjAddr: 0xE0, symBinAddr: 0x1394E0, symSize: 0x210 } + - { offset: 0x1C52D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x2F0, symBinAddr: 0x1396F0, symSize: 0xC0 } + - { offset: 0x1C5319, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x3B0, symBinAddr: 0x1397B0, symSize: 0x50 } + - { offset: 0x1C5361, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x400, symBinAddr: 0x139800, symSize: 0xA0 } + - { offset: 0x1C5394, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x4A0, symBinAddr: 0x1398A0, symSize: 0x30 } + - { offset: 0x1C53A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24CategoriesViewControllerCfD', symObjAddr: 0x510, symBinAddr: 0x139910, symSize: 0x30 } + - { offset: 0x1C643A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCfE', symObjAddr: 0x18F0, symBinAddr: 0x13BAC0, symSize: 0x110 } + - { offset: 0x1C6467, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCfETo', symObjAddr: 0x1A30, symBinAddr: 0x13BC00, symSize: 0x110 } + - { offset: 0x1C6496, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCMa', symObjAddr: 0x1B40, symBinAddr: 0x13BD10, symSize: 0x20 } + - { offset: 0x1C64DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x1B60, symBinAddr: 0x13BD30, symSize: 0x20 } + - { offset: 0x1C6585, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x1B80, symBinAddr: 0x13BD50, symSize: 0x60 } + - { offset: 0x1C67DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x1BE0, symBinAddr: 0x13BDB0, symSize: 0x6F0 } + - { offset: 0x1C6C72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU_', symObjAddr: 0x22D0, symBinAddr: 0x13C4A0, symSize: 0x170 } + - { offset: 0x1C6D23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2440, symBinAddr: 0x13C610, symSize: 0xB0 } + - { offset: 0x1C6D69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x24F0, symBinAddr: 0x13C6C0, symSize: 0xC0 } + - { offset: 0x1C6DE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0x25B0, symBinAddr: 0x13C780, symSize: 0x290 } + - { offset: 0x1C6E4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_', symObjAddr: 0x2840, symBinAddr: 0x13CA10, symSize: 0x1C0 } + - { offset: 0x1C6F08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0x2A00, symBinAddr: 0x13CBD0, symSize: 0x50 } + - { offset: 0x1C6F24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC22didTapDirectionsActionyyF', symObjAddr: 0x2A50, symBinAddr: 0x13CC20, symSize: 0x4F0 } + - { offset: 0x1C731F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC17showRouteOverview6sourceyAA5PlaceCSg_tF', symObjAddr: 0x2F40, symBinAddr: 0x13D110, symSize: 0x2E0 } + - { offset: 0x1C75AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC22didTapDirectionsActionyyFTo', symObjAddr: 0x3220, symBinAddr: 0x13D3F0, symSize: 0x30 } + - { offset: 0x1C75E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC18didTapVenuesActionyyFTo', symObjAddr: 0x3250, symBinAddr: 0x13D420, symSize: 0x60 } + - { offset: 0x1C7631, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20didTapExpandScheduleyyFTo', symObjAddr: 0x32C0, symBinAddr: 0x13D480, symSize: 0x30 } + - { offset: 0x1C764D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC22didTapCollapseScheduleyyFTo', symObjAddr: 0x3440, symBinAddr: 0x13D5F0, symSize: 0x30 } + - { offset: 0x1C7687, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20didExpandDescriptionyyFTo', symObjAddr: 0x3470, symBinAddr: 0x13D620, symSize: 0x30 } + - { offset: 0x1C7710, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC17didTapPhoneActionyyF', symObjAddr: 0x34A0, symBinAddr: 0x13D650, symSize: 0x1F0 } + - { offset: 0x1C77D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC17didTapPhoneActionyyFTo', symObjAddr: 0x3690, symBinAddr: 0x13D840, symSize: 0x30 } + - { offset: 0x1C77F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC19didTapWebsiteActionyyF', symObjAddr: 0x36C0, symBinAddr: 0x13D870, symSize: 0x380 } + - { offset: 0x1C790F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC19didTapWebsiteActionyyFTo', symObjAddr: 0x3A40, symBinAddr: 0x13DBF0, symSize: 0x30 } + - { offset: 0x1C792B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16didTapMailActionyyF', symObjAddr: 0x3A70, symBinAddr: 0x13DC20, symSize: 0x1D0 } + - { offset: 0x1C7A2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16didTapMailActionyyFTo', symObjAddr: 0x3C40, symBinAddr: 0x13DDF0, symSize: 0x30 } + - { offset: 0x1C7AB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16venueGatesLoaded5gatesySayAA5PlaceCG_tF', symObjAddr: 0x3C70, symBinAddr: 0x13DE20, symSize: 0x230 } + - { offset: 0x1C7D52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC011mailComposeG0_13didFinishWith5errorySo06MFMailifG0C_So0nI6ResultVs5Error_pSgtFTo', symObjAddr: 0x3EA0, symBinAddr: 0x13E050, symSize: 0x20 } + - { offset: 0x1C7DD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x3EC0, symBinAddr: 0x13E070, symSize: 0xA0 } + - { offset: 0x1C7E8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x3F60, symBinAddr: 0x13E110, symSize: 0x30 } + - { offset: 0x1C7F03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x3F90, symBinAddr: 0x13E140, symSize: 0xC0 } + - { offset: 0x1C7FA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x4050, symBinAddr: 0x13E200, symSize: 0x30 } + - { offset: 0x1C7FE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x4080, symBinAddr: 0x13E230, symSize: 0x200 } + - { offset: 0x1C81DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x4280, symBinAddr: 0x13E430, symSize: 0x50 } + - { offset: 0x1C83F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC17venueDetailLoaded4datayAA05VenueF4DataC_tF', symObjAddr: 0x42D0, symBinAddr: 0x13E480, symSize: 0x170 } + - { offset: 0x1C84C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCAA011VenueDetailF19ModelOutputProtocolA2aDP05venueI6Loaded4datayAA0hF4DataC_tFTW', symObjAddr: 0x4710, symBinAddr: 0x13E8C0, symSize: 0x10 } + - { offset: 0x1C84E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCAA011VenueDetailF19ModelOutputProtocolA2aDP16venueGatesLoaded5gatesySayAA5PlaceCG_tFTW', symObjAddr: 0x4720, symBinAddr: 0x13E8D0, symSize: 0x10 } + - { offset: 0x1C8521, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x4740, symBinAddr: 0x13E8E0, symSize: 0x3A0 } + - { offset: 0x1C87CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x4B60, symBinAddr: 0x13EC80, symSize: 0x10 } + - { offset: 0x1C8809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x4B70, symBinAddr: 0x13EC90, symSize: 0x10 } + - { offset: 0x1C8845, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC16venueGatesLoaded5gatesySayAA5PlaceCG_tFyycfU0_TA', symObjAddr: 0x4BA0, symBinAddr: 0x13ECC0, symSize: 0x20 } + - { offset: 0x1C8859, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x4BC0, symBinAddr: 0x13ECE0, symSize: 0x20 } + - { offset: 0x1C886D, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x4BE0, symBinAddr: 0x13ED00, symSize: 0x10 } + - { offset: 0x1C8881, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC22didTapDirectionsActionyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x4D10, symBinAddr: 0x13ED50, symSize: 0x20 } + - { offset: 0x1C88BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_TA', symObjAddr: 0x4DF0, symBinAddr: 0x13EDA0, symSize: 0x20 } + - { offset: 0x1C88CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU_TA', symObjAddr: 0x4E60, symBinAddr: 0x13EDC0, symSize: 0x10 } + - { offset: 0x1C89F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x4E70, symBinAddr: 0x13EDD0, symSize: 0x2D0 } + - { offset: 0x1C8C51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5shareyyFySSSgcfU_TA', symObjAddr: 0x5160, symBinAddr: 0x13F0A0, symSize: 0x10 } + - { offset: 0x1C8C65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DeepLinkManagerC014generateCampusdE08campusId10completionySiSg_ySSSgctFyAHcfU_TA', symObjAddr: 0x5230, symBinAddr: 0x13F0D0, symSize: 0x20 } + - { offset: 0x1C8E0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x13A1D0, symSize: 0x20 } + - { offset: 0x1C8E6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x13A1F0, symSize: 0x30 } + - { offset: 0x1C8EBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x13A220, symSize: 0x20 } + - { offset: 0x1C8F14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x13A240, symSize: 0x30 } + - { offset: 0x1C8F63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x13A270, symSize: 0x20 } + - { offset: 0x1C8FB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x13A290, symSize: 0x30 } + - { offset: 0x1C9005, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC09separatorF0AA09SeparatorF0CSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x13A2C0, symSize: 0x20 } + - { offset: 0x1C905D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC09separatorF0AA09SeparatorF0CSgvsTo', symObjAddr: 0x110, symBinAddr: 0x13A2E0, symSize: 0x30 } + - { offset: 0x1C90AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC010titleStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x140, symBinAddr: 0x13A310, symSize: 0x20 } + - { offset: 0x1C9104, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC010titleStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x160, symBinAddr: 0x13A330, symSize: 0x30 } + - { offset: 0x1C9153, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x190, symBinAddr: 0x13A360, symSize: 0x20 } + - { offset: 0x1C91AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x13A380, symSize: 0x30 } + - { offset: 0x1C9207, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC06campusE033_1B1727CC5BB5A738712554D2E2121BF2LLAA05VenueF4DataCvg', symObjAddr: 0x1E0, symBinAddr: 0x13A3B0, symSize: 0xA0 } + - { offset: 0x1C9325, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC9viewModel33_1B1727CC5BB5A738712554D2E2121BF2LLAA011VenueDetailfI0Cvg', symObjAddr: 0x280, symBinAddr: 0x13A450, symSize: 0x150 } + - { offset: 0x1C95CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x3D0, symBinAddr: 0x13A5A0, symSize: 0x1B0 } + - { offset: 0x1C9700, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x580, symBinAddr: 0x13A750, symSize: 0x30 } + - { offset: 0x1C97C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC14viewWillAppearyySbF', symObjAddr: 0x5B0, symBinAddr: 0x13A780, symSize: 0x110 } + - { offset: 0x1C989C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0x6C0, symBinAddr: 0x13A890, symSize: 0x30 } + - { offset: 0x1C98B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC04loadD11Information33_1B1727CC5BB5A738712554D2E2121BF2LLyyF', symObjAddr: 0x6F0, symBinAddr: 0x13A8C0, symSize: 0xE0 } + - { offset: 0x1C9954, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC13registerCellsyyF', symObjAddr: 0x7D0, symBinAddr: 0x13A9A0, symSize: 0x120 } + - { offset: 0x1C9A40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC03setD11InformationyyF', symObjAddr: 0x8F0, symBinAddr: 0x13AAC0, symSize: 0xD0 } + - { offset: 0x1C9AE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x9C0, symBinAddr: 0x13AB90, symSize: 0x80 } + - { offset: 0x1C9C0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5shareyyF', symObjAddr: 0xA40, symBinAddr: 0x13AC10, symSize: 0x470 } + - { offset: 0x1C9E8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0xEB0, symBinAddr: 0x13B080, symSize: 0x4A0 } + - { offset: 0x1CA0F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5shareyyFTo', symObjAddr: 0x1350, symBinAddr: 0x13B520, symSize: 0x30 } + - { offset: 0x1CA144, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC04loadD5GatesyyF', symObjAddr: 0x1380, symBinAddr: 0x13B550, symSize: 0x1E0 } + - { offset: 0x1CA2E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x1560, symBinAddr: 0x13B730, symSize: 0x190 } + - { offset: 0x1CA325, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x16F0, symBinAddr: 0x13B8C0, symSize: 0x50 } + - { offset: 0x1CA36D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1740, symBinAddr: 0x13B910, symSize: 0x180 } + - { offset: 0x1CA3A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x18C0, symBinAddr: 0x13BA90, symSize: 0x30 } + - { offset: 0x1CA3B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27CampusDetailsViewControllerCfD', symObjAddr: 0x1A00, symBinAddr: 0x13BBD0, symSize: 0x30 } + - { offset: 0x1CAD45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOMa', symObjAddr: 0x1A0, symBinAddr: 0x13F1A0, symSize: 0x10 } + - { offset: 0x1CADDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASQWb', symObjAddr: 0xA70, symBinAddr: 0x13FA70, symSize: 0x10 } + - { offset: 0x1CADF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOACSQAAWl', symObjAddr: 0xA80, symBinAddr: 0x13FA80, symSize: 0x30 } + - { offset: 0x1CAE07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOACSYAAWl', symObjAddr: 0xB50, symBinAddr: 0x13FB10, symSize: 0x2D } + - { offset: 0x1CAE29, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE4hash4intoys6HasherVz_tF8PenNavUI8FavoriteC10CodingKeysO_Tg5', symObjAddr: 0x1B0, symBinAddr: 0x13F1B0, symSize: 0xE0 } + - { offset: 0x1CAE76, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE4hash4intoys6HasherVz_tF8PenNavUI22SharedFavoriteLocationC10CodingKeysO_Tg5', symObjAddr: 0x290, symBinAddr: 0x13F290, symSize: 0xF0 } + - { offset: 0x1CAEF1, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE08_rawHashB04seedS2i_tF8PenNavUI11RouteOptionV0iJ3KeyO_Tg5', symObjAddr: 0x380, symBinAddr: 0x13F380, symSize: 0xF0 } + - { offset: 0x1CAF9E, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE08_rawHashB04seedS2i_tF8PenNavUI22SharedFavoriteLocationC10CodingKeysO_Tg5', symObjAddr: 0x470, symBinAddr: 0x13F470, symSize: 0x120 } + - { offset: 0x1CB04B, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE08_rawHashB04seedS2i_tF8PenNavUI8FavoriteC10CodingKeysO_Tg5', symObjAddr: 0x590, symBinAddr: 0x13F590, symSize: 0x100 } + - { offset: 0x1CB0E7, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE08_rawHashB04seedS2i_tF8PenNavUI9PlaceTypeO_Tg5', symObjAddr: 0x690, symBinAddr: 0x13F690, symSize: 0x110 } + - { offset: 0x1CB18B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x7A0, symBinAddr: 0x13F7A0, symSize: 0x10 } + - { offset: 0x1CB1C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x7B0, symBinAddr: 0x13F7B0, symSize: 0x20 } + - { offset: 0x1CB20B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x7D0, symBinAddr: 0x13F7D0, symSize: 0xF0 } + - { offset: 0x1CB288, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x8C0, symBinAddr: 0x13F8C0, symSize: 0x10 } + - { offset: 0x1CB2A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x9E0, symBinAddr: 0x13F9E0, symSize: 0x50 } + - { offset: 0x1CB2C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xA30, symBinAddr: 0x13FA30, symSize: 0x40 } + - { offset: 0x1CB389, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x8D0, symBinAddr: 0x13F8D0, symSize: 0x30 } + - { offset: 0x1CB3B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x900, symBinAddr: 0x13F900, symSize: 0xE0 } + - { offset: 0x1CB3F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9PlaceTypeO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0xAB0, symBinAddr: 0x13FAB0, symSize: 0x60 } + - { offset: 0x1CB7B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierO8rawValueSSvg', symObjAddr: 0x0, symBinAddr: 0x13FB40, symSize: 0x140 } + - { offset: 0x1CB7FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x140, symBinAddr: 0x13FC80, symSize: 0x70 } + - { offset: 0x1CB8C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSHAASH9hashValueSivgTW', symObjAddr: 0x1B0, symBinAddr: 0x13FCF0, symSize: 0x50 } + - { offset: 0x1CB947, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x200, symBinAddr: 0x13FD40, symSize: 0x30 } + - { offset: 0x1CB999, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x230, symBinAddr: 0x13FD70, symSize: 0x50 } + - { offset: 0x1CBBEF, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUISSRszlE12takeModifier33_87DA5707E664C852F4BDCF261BF8A634LLAA11CommandLineO0E0O_SSSgtSgyKF', symObjAddr: 0x2E0, symBinAddr: 0x13FE20, symSize: 0x1F0 } + - { offset: 0x1CBE37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ErrorOSHAASQWb', symObjAddr: 0x5F0, symBinAddr: 0x140010, symSize: 0x10 } + - { offset: 0x1CBE4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ErrorOAESQAAWl', symObjAddr: 0x600, symBinAddr: 0x140020, symSize: 0x30 } + - { offset: 0x1CBE5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO5ErrorOMa', symObjAddr: 0x810, symBinAddr: 0x140050, symSize: 0x10 } + - { offset: 0x1CBEEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO14parseModifiers4fromSDyAC8ModifierOSSSgGSaySSG_tKFZTf4nd_n', symObjAddr: 0x880, symBinAddr: 0x1400C0, symSize: 0x290 } + - { offset: 0x1CC091, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierO_SSSgtSgWOe', symObjAddr: 0xB40, symBinAddr: 0x140350, symSize: 0x20 } + - { offset: 0x1CC0A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOwet', symObjAddr: 0xBA0, symBinAddr: 0x140370, symSize: 0x80 } + - { offset: 0x1CC0B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOwst', symObjAddr: 0xC20, symBinAddr: 0x1403F0, symSize: 0xD0 } + - { offset: 0x1CC0CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOMa', symObjAddr: 0xD00, symBinAddr: 0x1404C0, symSize: 0x10 } + - { offset: 0x1CC0E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSHAASQWb', symObjAddr: 0xD10, symBinAddr: 0x1404D0, symSize: 0x10 } + - { offset: 0x1CC0F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOAESQAAWl', symObjAddr: 0xD20, symBinAddr: 0x1404E0, symSize: 0x30 } + - { offset: 0x1CC10A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierO8rawValueSSvg', symObjAddr: 0x0, symBinAddr: 0x13FB40, symSize: 0x140 } + - { offset: 0x1CC16F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x280, symBinAddr: 0x13FDC0, symSize: 0x30 } + - { offset: 0x1CC198, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x2B0, symBinAddr: 0x13FDF0, symSize: 0x30 } + - { offset: 0x1CC1EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CommandLineO8ModifierO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x820, symBinAddr: 0x140060, symSize: 0x60 } + - { offset: 0x1CC6AE, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE13underlineTextyyF', symObjAddr: 0x0, symBinAddr: 0x140510, symSize: 0x2F0 } + - { offset: 0x1CC7E0, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE9fontStyleSSvsTo', symObjAddr: 0x2F0, symBinAddr: 0x140800, symSize: 0x50 } + - { offset: 0x1CC807, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE9fontStyleSSvs', symObjAddr: 0x340, symBinAddr: 0x140850, symSize: 0x1E0 } + - { offset: 0x1CC901, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19textColorIdentifierSivgTo', symObjAddr: 0x520, symBinAddr: 0x140A30, symSize: 0x10 } + - { offset: 0x1CC91D, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19textColorIdentifierSivsTo', symObjAddr: 0x530, symBinAddr: 0x140A40, symSize: 0x30 } + - { offset: 0x1CC955, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19textColorIdentifierSivs', symObjAddr: 0x560, symBinAddr: 0x140A70, symSize: 0x110 } + - { offset: 0x1CC9D9, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x670, symBinAddr: 0x140B80, symSize: 0x10 } + - { offset: 0x1CC9F5, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x680, symBinAddr: 0x140B90, symSize: 0x30 } + - { offset: 0x1CCA11, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19tintColorIdentifierSivgTo', symObjAddr: 0x6D0, symBinAddr: 0x140BC0, symSize: 0x10 } + - { offset: 0x1CCA2D, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE19tintColorIdentifierSivsTo', symObjAddr: 0x6E0, symBinAddr: 0x140BD0, symSize: 0x30 } + - { offset: 0x1CCA73, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE15localizationKeySSvsTo', symObjAddr: 0x860, symBinAddr: 0x140D10, symSize: 0x90 } + - { offset: 0x1CCAA8, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeyaABSHSCWl', symObjAddr: 0x930, symBinAddr: 0x140DA0, symSize: 0x40 } + - { offset: 0x1CCF7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC14SubpathBuilderV13appendSegmentyyAE0J0OF', symObjAddr: 0x0, symBinAddr: 0x140E00, symSize: 0x4E0 } + - { offset: 0x1CD2A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC14SubpathBuilderV13appendSegmentyyAE0J0OF', symObjAddr: 0x0, symBinAddr: 0x140E00, symSize: 0x4E0 } + - { offset: 0x1CD940, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC14SubpathBuilderV12makeSubpaths3forSayAEGAE_tFTf4nn_g', symObjAddr: 0x4E0, symBinAddr: 0x1412E0, symSize: 0x160 } + - { offset: 0x1CDFFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22FloatingPanelPresenterPAAE20applyDismissingRules2onyAA0dE11Presentable_pSg_tF', symObjAddr: 0x40, symBinAddr: 0x141440, symSize: 0x470 } + - { offset: 0x1CE085, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22FloatingPanelPresenterPAAE20applyDismissingRules2onyAA0dE11Presentable_pSg_tF', symObjAddr: 0x40, symBinAddr: 0x141440, symSize: 0x470 } + - { offset: 0x1CE601, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22FloatingPanelPresenterPAAE20removeViewControlleryyAA0dE11Presentable_pSgF', symObjAddr: 0x4B0, symBinAddr: 0x1418B0, symSize: 0x500 } + - { offset: 0x1CEE33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtFyycfU_TA', symObjAddr: 0xA00, symBinAddr: 0x141E00, symSize: 0x20 } + - { offset: 0x1CEE47, size: 0x8, addend: 0x0, symName: '_$sSo8NSObjectCMa', symObjAddr: 0xA20, symBinAddr: 0x141E20, symSize: 0x40 } + - { offset: 0x1CEED4, size: 0x8, addend: 0x0, symName: '_$sSMsE20_halfStablePartition15isSuffixElement5IndexQzSb0F0QzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg503$s8hi4UI22kl44PresenterPAAE20removeViewControlleryyAA0dE11M18_pSgFSbAaE_pXEfU2_AgH_pTf1cn_nTf4ng_n', symObjAddr: 0xB10, symBinAddr: 0x141F10, symSize: 0x1EA } + - { offset: 0x1CF345, size: 0x8, addend: 0x0, symName: '_$sSlsE10firstIndex5where0B0QzSgSb7ElementQzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg503$s8ef4UI22hi44PresenterPAAE20removeViewControlleryyAA0dE11J18_pSgFSbAaE_pXEfU2_AhI_pTf1cn_nTf4ng_n', symObjAddr: 0xA60, symBinAddr: 0x141E60, symSize: 0xB0 } + - { offset: 0x1CF9AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28DefaultFloatingPanelBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x142100, symSize: 0x10 } + - { offset: 0x1CF9FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28DefaultFloatingPanelBehaviorCMa', symObjAddr: 0x30, symBinAddr: 0x142110, symSize: 0x14 } + - { offset: 0x1CFA28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28DefaultFloatingPanelBehaviorC19allowsRubberBanding3forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x142100, symSize: 0x10 } + - { offset: 0x1CFDC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseLinearGradientsySayAA3DOMO0F8GradientCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0x142130, symSize: 0x320 } + - { offset: 0x1CFF8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV20parseLinearGradientsySayAA3DOMO0F8GradientCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0x142130, symSize: 0x320 } + - { offset: 0x1D0492, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV19parseLinearGradientyAA3DOMO0fG0CAA3XMLO7ElementCKFTf4nx_n', symObjAddr: 0x320, symBinAddr: 0x142450, symSize: 0xB40 } + - { offset: 0x1D109E, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE9localizedSSyF', symObjAddr: 0x0, symBinAddr: 0x142F90, symSize: 0x1F0 } + - { offset: 0x1D11EA, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized10targetSizeABSgSo6CGSizeV_tF', symObjAddr: 0x1F0, symBinAddr: 0x143180, symSize: 0x1D0 } + - { offset: 0x1D12DF, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized10targetSizeABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0x12E0, symBinAddr: 0x144270, symSize: 0x40 } + - { offset: 0x1D1366, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE22localizedWithArgumentsySSs7CVarArg_pd_tF', symObjAddr: 0x3C0, symBinAddr: 0x143350, symSize: 0x130 } + - { offset: 0x1D14B1, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE8containsySbSaySSGF', symObjAddr: 0x4F0, symBinAddr: 0x143480, symSize: 0xA0 } + - { offset: 0x1D167A, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE7trimmed12maximumWidth0E5Lines4fontSS12CoreGraphics7CGFloatV_SiSo6UIFontCtF', symObjAddr: 0x590, symBinAddr: 0x143520, symSize: 0x600 } + - { offset: 0x1D1B4D, size: 0x8, addend: 0x0, symName: '_$sSo8UIButtonC8PenNavUIE9setInsets17forContentPadding010imageTitleI0ySo06UIEdgeF0V_12CoreGraphics7CGFloatVtF', symObjAddr: 0x1130, symBinAddr: 0x1440C0, symSize: 0x1B0 } + - { offset: 0x1D1BC4, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE6fadeIn_5delay10completionySd_SdySbctFyycfU_', symObjAddr: 0x1330, symBinAddr: 0x1442B0, symSize: 0x20 } + - { offset: 0x1D1BED, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE7fadeOut_5delay10completionySd_SdySbctFyycfU_', symObjAddr: 0x1350, symBinAddr: 0x1442D0, symSize: 0x20 } + - { offset: 0x1D1C16, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE16trimHorizontally33_16B44A3E237573F8ABE391799BEDA5FELL12maximumWidth4fonty12CoreGraphics7CGFloatV_So6UIFontCtF', symObjAddr: 0x1370, symBinAddr: 0x1442F0, symSize: 0x380 } + - { offset: 0x1D1E61, size: 0x8, addend: 0x0, symName: '_$sSo13UIApplicationC8PenNavUIE21topMostViewControllerSo06UIViewH0CSgyFTf4d_n', symObjAddr: 0x16F0, symBinAddr: 0x144670, symSize: 0x1A0 } + - { offset: 0x1D1FD7, size: 0x8, addend: 0x0, symName: '_$sSo13UIApplicationC8PenNavUIE16topSafeAreaInset12CoreGraphics7CGFloatVvgZTf4d_n', symObjAddr: 0x1890, symBinAddr: 0x144810, symSize: 0x150 } + - { offset: 0x1D211A, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized10targetSizeABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0x1B40, symBinAddr: 0x144990, symSize: 0x40 } + - { offset: 0x1D2144, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1BC0, symBinAddr: 0x1449F0, symSize: 0x20 } + - { offset: 0x1D2158, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1BE0, symBinAddr: 0x144A10, symSize: 0x10 } + - { offset: 0x1D22A3, size: 0x8, addend: 0x0, symName: '_$ss17_dictionaryUpCastySDyq0_q1_GSDyxq_GSHRzSHR0_r2_lFSS_S2SypTg5', symObjAddr: 0xB90, symBinAddr: 0x143B20, symSize: 0x290 } + - { offset: 0x1D2413, size: 0x8, addend: 0x0, symName: '_$ss17_dictionaryUpCastySDyq0_q1_GSDyxq_GSHRzSHR0_r2_lFSo21NSAttributedStringKeya_So6UIFontCAEypTg5', symObjAddr: 0xE20, symBinAddr: 0x143DB0, symSize: 0x310 } + - { offset: 0x1D3502, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellCfETo', symObjAddr: 0x2930, symBinAddr: 0x147350, symSize: 0xB0 } + - { offset: 0x1D3531, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellCMa', symObjAddr: 0x29E0, symBinAddr: 0x147400, symSize: 0x20 } + - { offset: 0x1D3545, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13configureIcon3foryAA5PlaceCSg_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x2A50, symBinAddr: 0x147470, symSize: 0x20 } + - { offset: 0x1D3906, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x144A20, symSize: 0x20 } + - { offset: 0x1D3964, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x144A40, symSize: 0x30 } + - { offset: 0x1D39B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17subtitleStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0x144A70, symSize: 0x20 } + - { offset: 0x1D3A0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17subtitleStackViewSo07UIStackI0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0x144A90, symSize: 0x30 } + - { offset: 0x1D3A5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x144AC0, symSize: 0x20 } + - { offset: 0x1D3AAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x144AE0, symSize: 0x30 } + - { offset: 0x1D3AFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x144B10, symSize: 0x20 } + - { offset: 0x1D3B4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x144B30, symSize: 0x30 } + - { offset: 0x1D3B9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x140, symBinAddr: 0x144B60, symSize: 0x20 } + - { offset: 0x1D3BF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x160, symBinAddr: 0x144B80, symSize: 0x30 } + - { offset: 0x1D3C40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC9iconImageSo11UIImageViewCSgvgTo', symObjAddr: 0x190, symBinAddr: 0x144BB0, symSize: 0x20 } + - { offset: 0x1D3C98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC9iconImageSo11UIImageViewCSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x144BD0, symSize: 0x30 } + - { offset: 0x1D3CE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC19scheduleStatusLabelSo7UILabelCSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0x144C00, symSize: 0x20 } + - { offset: 0x1D3D3A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC19scheduleStatusLabelSo7UILabelCSgvsTo', symObjAddr: 0x200, symBinAddr: 0x144C20, symSize: 0x30 } + - { offset: 0x1D3D89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC22scheduleTimeRangeLabelSo7UILabelCSgvgTo', symObjAddr: 0x230, symBinAddr: 0x144C50, symSize: 0x20 } + - { offset: 0x1D3DDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC22scheduleTimeRangeLabelSo7UILabelCSgvsTo', symObjAddr: 0x250, symBinAddr: 0x144C70, symSize: 0x30 } + - { offset: 0x1D3E2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17scheduleContainerSo11UIStackViewCSgvgTo', symObjAddr: 0x280, symBinAddr: 0x144CA0, symSize: 0x20 } + - { offset: 0x1D3E7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17scheduleContainerSo11UIStackViewCSgvsTo', symObjAddr: 0x2A0, symBinAddr: 0x144CC0, symSize: 0x30 } + - { offset: 0x1D3ECD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC12awakeFromNibyyFTo', symObjAddr: 0x2D0, symBinAddr: 0x144CF0, symSize: 0x30 } + - { offset: 0x1D3F44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC14configureTitle10searchTextySSSg_tF', symObjAddr: 0x300, symBinAddr: 0x144D20, symSize: 0x290 } + - { offset: 0x1D41DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17configureSchedule010shouldShowH0ySb_tF', symObjAddr: 0x590, symBinAddr: 0x144FB0, symSize: 0x8C0 } + - { offset: 0x1D49CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC17configureSubtitleyyF', symObjAddr: 0xE50, symBinAddr: 0x145870, symSize: 0x7F0 } + - { offset: 0x1D4E67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC19configureSeparatorsyyF', symObjAddr: 0x1640, symBinAddr: 0x146060, symSize: 0x3F0 } + - { offset: 0x1D52E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13configureIcon3foryAA5PlaceCSg_tF', symObjAddr: 0x1A30, symBinAddr: 0x146450, symSize: 0x9B0 } + - { offset: 0x1D574A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC13configureIcon3foryAA5PlaceCSg_tFySo7UIImageCSgcfU_', symObjAddr: 0x23E0, symBinAddr: 0x146E00, symSize: 0x140 } + - { offset: 0x1D57ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC15prepareForReuseyyF', symObjAddr: 0x2520, symBinAddr: 0x146F40, symSize: 0x130 } + - { offset: 0x1D588D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC15prepareForReuseyyFTo', symObjAddr: 0x2650, symBinAddr: 0x147070, symSize: 0x30 } + - { offset: 0x1D58A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x2680, symBinAddr: 0x1470A0, symSize: 0x110 } + - { offset: 0x1D58E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x2790, symBinAddr: 0x1471B0, symSize: 0x30 } + - { offset: 0x1D591A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x27C0, symBinAddr: 0x1471E0, symSize: 0x110 } + - { offset: 0x1D594D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x28D0, symBinAddr: 0x1472F0, symSize: 0x30 } + - { offset: 0x1D5961, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SearchResultCellCfD', symObjAddr: 0x2900, symBinAddr: 0x147320, symSize: 0x30 } + - { offset: 0x1D5D5A, size: 0x8, addend: 0x0, symName: '_$sSo9UIControlC8PenNavUIE13_handleAction33_5E6DC34DF67332EDC181E10990F14522LLyyF', symObjAddr: 0x0, symBinAddr: 0x147490, symSize: 0xE0 } + - { offset: 0x1D5D7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10closureKey33_5E6DC34DF67332EDC181E10990F14522LLs5UInt8Vvp', symObjAddr: 0x178, symBinAddr: 0x39FDC8, symSize: 0x0 } + - { offset: 0x1D5D97, size: 0x8, addend: 0x0, symName: '_$sSo9UIControlC8PenNavUIE13_handleAction33_5E6DC34DF67332EDC181E10990F14522LLyyF', symObjAddr: 0x0, symBinAddr: 0x147490, symSize: 0xE0 } + - { offset: 0x1D5DDB, size: 0x8, addend: 0x0, symName: '_$sSo9UIControlC8PenNavUIE13_handleAction33_5E6DC34DF67332EDC181E10990F14522LLyyFTo', symObjAddr: 0xE0, symBinAddr: 0x147570, symSize: 0x30 } + - { offset: 0x1D619E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC4dataAE10Foundation4DataV_tc33_46DA244A1B05B1F166AC1DDE992677D0Llfc', symObjAddr: 0x0, symBinAddr: 0x1475A0, symSize: 0x160 } + - { offset: 0x1D63F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserCfETo', symObjAddr: 0x420, symBinAddr: 0x1479C0, symSize: 0x60 } + - { offset: 0x1D6421, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserCMa', symObjAddr: 0x480, symBinAddr: 0x147A20, symSize: 0x20 } + - { offset: 0x1D6475, size: 0x8, addend: 0x0, symName: '_$sSa17_customRemoveLastxSgyF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AC11CGTextTypesV_G_Tg5', symObjAddr: 0x4A0, symBinAddr: 0x147A40, symSize: 0x90 } + - { offset: 0x1D6517, size: 0x8, addend: 0x0, symName: '_$sSa17_customRemoveLastxSgyF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AC7CGTypesV_G_Tg5', symObjAddr: 0x530, symBinAddr: 0x147AD0, symSize: 0x80 } + - { offset: 0x1D65CF, size: 0x8, addend: 0x0, symName: '_$sSa17_customRemoveLastxSgyF8PenNavUI3XMLO7ElementC_Tg5', symObjAddr: 0x5B0, symBinAddr: 0x147B50, symSize: 0x70 } + - { offset: 0x1D692E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC4dataAE10Foundation4DataV_tc33_46DA244A1B05B1F166AC1DDE992677D0Llfc', symObjAddr: 0x0, symBinAddr: 0x1475A0, symSize: 0x160 } + - { offset: 0x1D69A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_15didStartElement12namespaceURI13qualifiedName10attributesySo11NSXMLParserC_S2SSgAMSDyS2SGtFTo', symObjAddr: 0x160, symBinAddr: 0x147700, symSize: 0x110 } + - { offset: 0x1D69D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_13didEndElement12namespaceURI13qualifiedNameySo11NSXMLParserC_S2SSgALtFTo', symObjAddr: 0x270, symBinAddr: 0x147810, symSize: 0xE0 } + - { offset: 0x1D6A0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_15foundCharactersySo11NSXMLParserC_SStFTo', symObjAddr: 0x350, symBinAddr: 0x1478F0, symSize: 0x70 } + - { offset: 0x1D6A4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserCAEycfcTo', symObjAddr: 0x3C0, symBinAddr: 0x147960, symSize: 0x30 } + - { offset: 0x1D6AAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserCfD', symObjAddr: 0x3F0, symBinAddr: 0x147990, symSize: 0x30 } + - { offset: 0x1D6AF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC5parse4dataAC7ElementC10Foundation4DataV_tKFZTf4nd_n', symObjAddr: 0x620, symBinAddr: 0x147BC0, symSize: 0x250 } + - { offset: 0x1D6CE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_15didStartElement12namespaceURI13qualifiedName10attributesySo11NSXMLParserC_S2SSgAMSDyS2SGtFTf4nnndnn_n', symObjAddr: 0x870, symBinAddr: 0x147E10, symSize: 0x370 } + - { offset: 0x1D7096, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_13didEndElement12namespaceURI13qualifiedNameySo11NSXMLParserC_S2SSgALtFTf4dnndn_n', symObjAddr: 0xBE0, symBinAddr: 0x148180, symSize: 0x280 } + - { offset: 0x1D7447, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3XMLO9SAXParserC6parser_15foundCharactersySo11NSXMLParserC_SStFTf4dnn_n', symObjAddr: 0xE60, symBinAddr: 0x148400, symSize: 0x1A0 } + - { offset: 0x1D79BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16PIEventsDelegateP19onBackButtonPressedyyF', symObjAddr: 0x0, symBinAddr: 0x1485A0, symSize: 0x70 } + - { offset: 0x1D7A11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16PIEventsDelegateP19onBackButtonPressedyyF', symObjAddr: 0x0, symBinAddr: 0x1485A0, symSize: 0x70 } + - { offset: 0x1D7DE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC10layerClassyXlXpvgZTo', symObjAddr: 0x0, symBinAddr: 0x148650, symSize: 0x20 } + - { offset: 0x1D8092, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewCfETo', symObjAddr: 0x780, symBinAddr: 0x148DD0, symSize: 0x50 } + - { offset: 0x1D80C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewCMa', symObjAddr: 0xA30, symBinAddr: 0x149080, symSize: 0x20 } + - { offset: 0x1D81FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerCMa', symObjAddr: 0xF30, symBinAddr: 0x149580, symSize: 0x20 } + - { offset: 0x1D8212, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC21setupPropertyAnimator33_8C639E5594D44A54C22F58F98E146AE7LLyyFyycfU_TA', symObjAddr: 0x1000, symBinAddr: 0x1495C0, symSize: 0x10 } + - { offset: 0x1D8226, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1010, symBinAddr: 0x1495D0, symSize: 0x20 } + - { offset: 0x1D823A, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1030, symBinAddr: 0x1495F0, symSize: 0x10 } + - { offset: 0x1D826E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC10layerClassyXlXpvgZTo', symObjAddr: 0x0, symBinAddr: 0x148650, symSize: 0x20 } + - { offset: 0x1D8358, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC9intensity12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x20, symBinAddr: 0x148670, symSize: 0x90 } + - { offset: 0x1D83C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC9intensity12CoreGraphics7CGFloatVvsTo', symObjAddr: 0xB0, symBinAddr: 0x148700, symSize: 0x90 } + - { offset: 0x1D850D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC6effectSo06UIBlurE0CvgTo', symObjAddr: 0x140, symBinAddr: 0x148790, symSize: 0x20 } + - { offset: 0x1D8579, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC6effectSo06UIBlurE0CvsTo', symObjAddr: 0x160, symBinAddr: 0x1487B0, symSize: 0x70 } + - { offset: 0x1D85F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x1D0, symBinAddr: 0x148820, symSize: 0x1F0 } + - { offset: 0x1D8686, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x3C0, symBinAddr: 0x148A10, symSize: 0x30 } + - { offset: 0x1D86B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3F0, symBinAddr: 0x148A40, symSize: 0x1C0 } + - { offset: 0x1D8743, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x5B0, symBinAddr: 0x148C00, symSize: 0x30 } + - { offset: 0x1D879D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC14layoutSubviewsyyF', symObjAddr: 0x5E0, symBinAddr: 0x148C30, symSize: 0xB0 } + - { offset: 0x1D8853, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC14layoutSubviewsyyFTo', symObjAddr: 0x690, symBinAddr: 0x148CE0, symSize: 0x30 } + - { offset: 0x1D8867, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewCfD', symObjAddr: 0x6C0, symBinAddr: 0x148D10, symSize: 0x50 } + - { offset: 0x1D8898, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewCfDTo', symObjAddr: 0x710, symBinAddr: 0x148D60, symSize: 0x70 } + - { offset: 0x1D88FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC21setupPropertyAnimator33_8C639E5594D44A54C22F58F98E146AE7LLyyF', symObjAddr: 0x7D0, symBinAddr: 0x148E20, symSize: 0x140 } + - { offset: 0x1D89AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC21setupPropertyAnimator33_8C639E5594D44A54C22F58F98E146AE7LLyyFyycfU_', symObjAddr: 0x910, symBinAddr: 0x148F60, symSize: 0xD0 } + - { offset: 0x1D8A4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC7displayyySo7CALayerCFTo', symObjAddr: 0x9E0, symBinAddr: 0x149030, symSize: 0x50 } + - { offset: 0x1D8A84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC5layerACyp_tcfc', symObjAddr: 0xA50, symBinAddr: 0x1490A0, symSize: 0x100 } + - { offset: 0x1D8AD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC5layerACyp_tcfcTo', symObjAddr: 0xB50, symBinAddr: 0x1491A0, symSize: 0x50 } + - { offset: 0x1D8B03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerCACycfcTo', symObjAddr: 0xBA0, symBinAddr: 0x1491F0, symSize: 0x30 } + - { offset: 0x1D8B5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xBD0, symBinAddr: 0x149220, symSize: 0x80 } + - { offset: 0x1D8BE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC12needsDisplay6forKeySbSS_tFZTo', symObjAddr: 0xC50, symBinAddr: 0x1492A0, symSize: 0xF0 } + - { offset: 0x1D8C40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC6action6forKeySo8CAAction_pSgSS_tF', symObjAddr: 0xD40, symBinAddr: 0x149390, symSize: 0x160 } + - { offset: 0x1D8CC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerC6action6forKeySo8CAAction_pSgSS_tFTo', symObjAddr: 0xEA0, symBinAddr: 0x1494F0, symSize: 0x60 } + - { offset: 0x1D8CDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18BlurIntensityLayerCfD', symObjAddr: 0xF00, symBinAddr: 0x149550, symSize: 0x30 } + - { offset: 0x1D8D00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14BlurEffectViewC7displayyySo7CALayerCFTf4dn_n', symObjAddr: 0x1040, symBinAddr: 0x149600, symSize: 0x91 } + - { offset: 0x1D9141, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC10imagePlaceSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1496A0, symSize: 0x20 } + - { offset: 0x1D957C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellCfETo', symObjAddr: 0xE50, symBinAddr: 0x14A4F0, symSize: 0x80 } + - { offset: 0x1D95AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellCMa', symObjAddr: 0xED0, symBinAddr: 0x14A570, symSize: 0x20 } + - { offset: 0x1D95BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9configure3for6filteryAA7POIDataCSg_AA0D7FiltersVSgtFySo7UIImageCSgcfU_TA', symObjAddr: 0xF70, symBinAddr: 0x14A5E0, symSize: 0x12 } + - { offset: 0x1D972F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC10imagePlaceSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1496A0, symSize: 0x20 } + - { offset: 0x1D978F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC10imagePlaceSo11UIImageViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x1496C0, symSize: 0x20 } + - { offset: 0x1D97E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9placeNameSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x1496E0, symSize: 0x20 } + - { offset: 0x1D983C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9placeNameSo7UILabelCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x149700, symSize: 0x20 } + - { offset: 0x1D988F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x80, symBinAddr: 0x149720, symSize: 0x20 } + - { offset: 0x1D98E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0xA0, symBinAddr: 0x149740, symSize: 0x20 } + - { offset: 0x1D9937, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9venueNameSo7UILabelCSgvgTo', symObjAddr: 0xC0, symBinAddr: 0x149760, symSize: 0x20 } + - { offset: 0x1D998C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9venueNameSo7UILabelCSgvsTo', symObjAddr: 0xE0, symBinAddr: 0x149780, symSize: 0x20 } + - { offset: 0x1D99DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9floorNameSo7UILabelCSgvgTo', symObjAddr: 0x100, symBinAddr: 0x1497A0, symSize: 0x20 } + - { offset: 0x1D9A34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9floorNameSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x1497C0, symSize: 0x20 } + - { offset: 0x1D9A87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC16placeholderImageSo11UIImageViewCSgvgTo', symObjAddr: 0x140, symBinAddr: 0x1497E0, symSize: 0x20 } + - { offset: 0x1D9ADC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC16placeholderImageSo11UIImageViewCSgvsTo', symObjAddr: 0x160, symBinAddr: 0x149800, symSize: 0x20 } + - { offset: 0x1D9B2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC12awakeFromNibyyFTo', symObjAddr: 0x180, symBinAddr: 0x149820, symSize: 0x30 } + - { offset: 0x1D9BAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9configure3for6filteryAA7POIDataCSg_AA0D7FiltersVSgtF', symObjAddr: 0x1B0, symBinAddr: 0x149850, symSize: 0x2E0 } + - { offset: 0x1D9CE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC9configure3for6filteryAA7POIDataCSg_AA0D7FiltersVSgtFySo7UIImageCSgcfU_', symObjAddr: 0x490, symBinAddr: 0x149B30, symSize: 0x180 } + - { offset: 0x1D9DEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC34setPlaceDetailsForIndoorWayFinding5place6filteryAA7POIDataCSg_AA0D7FiltersVSgtF', symObjAddr: 0x610, symBinAddr: 0x149CB0, symSize: 0x330 } + - { offset: 0x1D9F09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC15setPlaceDetails5placeyAA7POIDataCSg_tF', symObjAddr: 0x940, symBinAddr: 0x149FE0, symSize: 0x1E0 } + - { offset: 0x1D9FB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC15prepareForReuseyyF', symObjAddr: 0xB20, symBinAddr: 0x14A1C0, symSize: 0xA0 } + - { offset: 0x1DA024, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC15prepareForReuseyyFTo', symObjAddr: 0xBC0, symBinAddr: 0x14A260, symSize: 0x30 } + - { offset: 0x1DA038, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0xBF0, symBinAddr: 0x14A290, symSize: 0xF0 } + - { offset: 0x1DA079, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xCE0, symBinAddr: 0x14A380, symSize: 0x30 } + - { offset: 0x1DA0B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xD10, symBinAddr: 0x14A3B0, symSize: 0xE0 } + - { offset: 0x1DA0E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xDF0, symBinAddr: 0x14A490, symSize: 0x30 } + - { offset: 0x1DA0F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CategoryResultCellCfD', symObjAddr: 0xE20, symBinAddr: 0x14A4C0, symSize: 0x30 } + - { offset: 0x1DA76D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerCMa', symObjAddr: 0x1040, symBinAddr: 0x14B640, symSize: 0x20 } + - { offset: 0x1DA80B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC10setBearing_7visible5usingySdSg_Sb17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0x0, symBinAddr: 0x14A600, symSize: 0xC0 } + - { offset: 0x1DA87F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC13setVisibility7visible5usingySb_17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0xC0, symBinAddr: 0x14A6C0, symSize: 0xD0 } + - { offset: 0x1DA931, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC20setBearingVisibility7visible5usingySb_17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0x190, symBinAddr: 0x14A790, symSize: 0x180 } + - { offset: 0x1DA9C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC11setDotStyle5usingy17PenguinINRenderer10PIRendererCSg_tF', symObjAddr: 0x310, symBinAddr: 0x14A910, symSize: 0x270 } + - { offset: 0x1DAA6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC13setArrowStyle5usingy17PenguinINRenderer10PIRendererCSg_tF', symObjAddr: 0x580, symBinAddr: 0x14AB80, symSize: 0x200 } + - { offset: 0x1DAB6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC6select5using8animatedy17PenguinINRenderer10PIRendererCSg_SbtF', symObjAddr: 0x780, symBinAddr: 0x14AD80, symSize: 0x390 } + - { offset: 0x1DACA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC8deselect5usingy17PenguinINRenderer10PIRendererCSg_tF', symObjAddr: 0xB10, symBinAddr: 0x14B110, symSize: 0x100 } + - { offset: 0x1DACD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerC8setColor09indicatorH006strokeH0014accuracyCircleH05usingySo7UIColorC_A2J17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0xC10, symBinAddr: 0x14B210, symSize: 0x3F0 } + - { offset: 0x1DADBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerCfD', symObjAddr: 0x1000, symBinAddr: 0x14B600, symSize: 0x40 } + - { offset: 0x1DADF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24LocationIndicatorManagerCACycfc', symObjAddr: 0x1060, symBinAddr: 0x14B660, symSize: 0xF0 } + - { offset: 0x1DB1D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOMa', symObjAddr: 0x1A0, symBinAddr: 0x14B750, symSize: 0x10 } + - { offset: 0x1DB26A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSHAASQWb', symObjAddr: 0x4E0, symBinAddr: 0x14BA90, symSize: 0x10 } + - { offset: 0x1DB27E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOACSQAAWl', symObjAddr: 0x4F0, symBinAddr: 0x14BAA0, symSize: 0x30 } + - { offset: 0x1DB2A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1B0, symBinAddr: 0x14B760, symSize: 0x10 } + - { offset: 0x1DB307, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSHAASH9hashValueSivgTW', symObjAddr: 0x1C0, symBinAddr: 0x14B770, symSize: 0xD0 } + - { offset: 0x1DB3B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x290, symBinAddr: 0x14B840, symSize: 0xB0 } + - { offset: 0x1DB419, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x340, symBinAddr: 0x14B8F0, symSize: 0xD0 } + - { offset: 0x1DB4EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x410, symBinAddr: 0x14B9C0, symSize: 0x30 } + - { offset: 0x1DB518, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x440, symBinAddr: 0x14B9F0, symSize: 0xA0 } + - { offset: 0x1DB547, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SourceViewO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x520, symBinAddr: 0x14BAD0, symSize: 0x60 } + - { offset: 0x1DB91A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOMa', symObjAddr: 0x1A0, symBinAddr: 0x14BB30, symSize: 0x10 } + - { offset: 0x1DBA0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSHAASQWb', symObjAddr: 0x8A0, symBinAddr: 0x14C230, symSize: 0x10 } + - { offset: 0x1DBA20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOACSQAAWl', symObjAddr: 0x8B0, symBinAddr: 0x14C240, symSize: 0x30 } + - { offset: 0x1DBA6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x5F0, symBinAddr: 0x14BF80, symSize: 0x10 } + - { offset: 0x1DBAD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSHAASH9hashValueSivgTW', symObjAddr: 0x600, symBinAddr: 0x14BF90, symSize: 0xB0 } + - { offset: 0x1DBB7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x6B0, symBinAddr: 0x14C040, symSize: 0x90 } + - { offset: 0x1DBBE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x740, symBinAddr: 0x14C0D0, symSize: 0xB0 } + - { offset: 0x1DBC9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionO8isManualSbvg', symObjAddr: 0x1B0, symBinAddr: 0x14BB40, symSize: 0x190 } + - { offset: 0x1DBE5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionO16isTwoDimensionalSbvg', symObjAddr: 0x340, symBinAddr: 0x14BCD0, symSize: 0x140 } + - { offset: 0x1DC024, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionO18isThreeDimensionalSbvg', symObjAddr: 0x480, symBinAddr: 0x14BE10, symSize: 0x170 } + - { offset: 0x1DC1FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x7F0, symBinAddr: 0x14C180, symSize: 0x30 } + - { offset: 0x1DC225, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x820, symBinAddr: 0x14C1B0, symSize: 0x80 } + - { offset: 0x1DC261, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12MapDimensionO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x8E0, symBinAddr: 0x14C270, symSize: 0x60 } + - { offset: 0x1DC642, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12EdgesManagerC14sharedInstance33_1A4BCECDB650D7AA17333C6F73CF17CELLACSgvpZ', symObjAddr: 0x38, symBinAddr: 0x3A0180, symSize: 0x0 } + - { offset: 0x1DC650, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12EdgesManagerCMa', symObjAddr: 0x20, symBinAddr: 0x14C2D0, symSize: 0x14 } + - { offset: 0x1DCA10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC05setupdE0012enableGoogleD0ySb_tF', symObjAddr: 0x0, symBinAddr: 0x14C2F0, symSize: 0x120 } + - { offset: 0x1DCA34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC15_sharedInstance33_06CA1F9145C9A0D8436D32F3E461F428LLACSgvpZ', symObjAddr: 0x588, symBinAddr: 0x3A0250, symSize: 0x0 } + - { offset: 0x1DCC5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerCMa', symObjAddr: 0x570, symBinAddr: 0x14C860, symSize: 0x14 } + - { offset: 0x1DCE05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC05setupdE0012enableGoogleD0ySb_tF', symObjAddr: 0x0, symBinAddr: 0x14C2F0, symSize: 0x120 } + - { offset: 0x1DCF49, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC5speak4textySSSg_tF', symObjAddr: 0x120, symBinAddr: 0x14C410, symSize: 0x1C0 } + - { offset: 0x1DD12D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC4muteyyF', symObjAddr: 0x2E0, symBinAddr: 0x14C5D0, symSize: 0x170 } + - { offset: 0x1DD286, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerC6unmuteyyF', symObjAddr: 0x450, symBinAddr: 0x14C740, symSize: 0xF0 } + - { offset: 0x1DD39A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SpeechManagerCfD', symObjAddr: 0x540, symBinAddr: 0x14C830, symSize: 0x30 } + - { offset: 0x1DD76F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TagDisplayTypeOMa', symObjAddr: 0x1C0, symBinAddr: 0x14C880, symSize: 0x10 } + - { offset: 0x1DD783, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TagDisplayTypeOSHAASQWb', symObjAddr: 0x1D0, symBinAddr: 0x14C890, symSize: 0x10 } + - { offset: 0x1DD797, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TagDisplayTypeOACSQAAWl', symObjAddr: 0x1E0, symBinAddr: 0x14C8A0, symSize: 0x30 } + - { offset: 0x1DDB2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOMi', symObjAddr: 0x320, symBinAddr: 0x14C8D0, symSize: 0x10 } + - { offset: 0x1DDB43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOMi', symObjAddr: 0x320, symBinAddr: 0x14C8D0, symSize: 0x10 } + - { offset: 0x1DDB57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOMr', symObjAddr: 0x330, symBinAddr: 0x14C8E0, symSize: 0x490 } + - { offset: 0x1DDB6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwCP', symObjAddr: 0x7C0, symBinAddr: 0x14CD70, symSize: 0xB00 } + - { offset: 0x1DDB7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwxx', symObjAddr: 0x12C0, symBinAddr: 0x14D870, symSize: 0x770 } + - { offset: 0x1DDB93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwcp', symObjAddr: 0x1A30, symBinAddr: 0x14DFE0, symSize: 0x9A0 } + - { offset: 0x1DDBA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwca', symObjAddr: 0x23D0, symBinAddr: 0x14E980, symSize: 0xD80 } + - { offset: 0x1DDBBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwtk', symObjAddr: 0x3150, symBinAddr: 0x14F700, symSize: 0x9A0 } + - { offset: 0x1DDBCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwta', symObjAddr: 0x3AF0, symBinAddr: 0x1500A0, symSize: 0xD80 } + - { offset: 0x1DDBE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwet', symObjAddr: 0x4870, symBinAddr: 0x150E20, symSize: 0x440 } + - { offset: 0x1DDBF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwst', symObjAddr: 0x4CB0, symBinAddr: 0x151260, symSize: 0x520 } + - { offset: 0x1DDC0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwug', symObjAddr: 0x51D0, symBinAddr: 0x151780, symSize: 0x3A0 } + - { offset: 0x1DDC1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOwui', symObjAddr: 0x5580, symBinAddr: 0x151B20, symSize: 0x6E0 } + - { offset: 0x1DDC33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOMa', symObjAddr: 0x5C60, symBinAddr: 0x152200, symSize: 0x10 } + - { offset: 0x1DE060, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateCMa', symObjAddr: 0xB0, symBinAddr: 0x152270, symSize: 0x20 } + - { offset: 0x1DE0DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x50, symBinAddr: 0x152210, symSize: 0x60 } + - { offset: 0x1DE147, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xD0, symBinAddr: 0x152290, symSize: 0x50 } + - { offset: 0x1DE192, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateCfD', symObjAddr: 0x120, symBinAddr: 0x1522E0, symSize: 0x2B } + - { offset: 0x1DECC7, size: 0x8, addend: 0x0, symName: '_$ss13_parseInteger5ascii5radixq_Sgx_SitSyRzs010FixedWidthB0R_r0_lFSs_SuTg5', symObjAddr: 0x13B0, symBinAddr: 0x1534F0, symSize: 0x130 } + - { offset: 0x1DED1D, size: 0x8, addend: 0x0, symName: '_$ss13_parseInteger5ascii5radixq_Sgx_SitSyRzs010FixedWidthB0R_r0_lFSS_SiTg5', symObjAddr: 0x14E0, symBinAddr: 0x153620, symSize: 0x120 } + - { offset: 0x1DED91, size: 0x8, addend: 0x0, symName: '_$ss13_parseInteger5ascii5radixq_Sgx_SitSyRzs010FixedWidthB0R_r0_lFADSRys5UInt8VGXEfU_Ss_SuTg5', symObjAddr: 0x1600, symBinAddr: 0x153740, symSize: 0x270 } + - { offset: 0x1DEED5, size: 0x8, addend: 0x0, symName: '_$ss13_parseInteger5ascii5radixq_Sgx_SitSyRzs010FixedWidthB0R_r0_lFADSRys5UInt8VGXEfU_SS_SiTg5', symObjAddr: 0x1870, symBinAddr: 0x1539B0, symSize: 0x270 } + - { offset: 0x1DEFED, size: 0x8, addend: 0x0, symName: '_$sSS8_copyingyS2SFZ', symObjAddr: 0x1AE0, symBinAddr: 0x153C20, symSize: 0x50 } + - { offset: 0x1DF005, size: 0x8, addend: 0x0, symName: '_$sSlsEy11SubSequenceQzqd__cSXRd__5BoundQyd__5IndexRtzluigSS_s16PartialRangeFromVySSAEVGTgq5', symObjAddr: 0x1B30, symBinAddr: 0x153C70, symSize: 0x70 } + - { offset: 0x1DF04F, size: 0x8, addend: 0x0, symName: '_$sSS8_copyingySSSsFZ', symObjAddr: 0x1BA0, symBinAddr: 0x153CE0, symSize: 0x160 } + - { offset: 0x1DF0A9, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV19_uninitializedCount15minimumCapacityAByxGSi_SitcfCs5UInt8V_Tt1gq5', symObjAddr: 0x1D00, symBinAddr: 0x153E40, symSize: 0x70 } + - { offset: 0x1DF0E1, size: 0x8, addend: 0x0, symName: '_$sSTsE21_copySequenceContents12initializing8IteratorQz_SitSry7ElementQzG_tFSs8UTF8ViewV_Tgq5', symObjAddr: 0x1D70, symBinAddr: 0x153EB0, symSize: 0x2E0 } + - { offset: 0x1DF12E, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV27_slowEnsureMatchingEncodingySS5IndexVAEF', symObjAddr: 0x2050, symBinAddr: 0x154190, symSize: 0xB0 } + - { offset: 0x1DF158, size: 0x8, addend: 0x0, symName: '_$ss17FixedWidthIntegerPsE_5radixxSgqd___SitcSyRd__lufcADSRys5UInt8VGXEfU_Su_SsTG5', symObjAddr: 0x2100, symBinAddr: 0x154240, symSize: 0x290 } + - { offset: 0x1DF2A9, size: 0x8, addend: 0x0, symName: '_$ss17FixedWidthIntegerPsE_5radixxSgqd___SitcSyRd__lufcADSRys5UInt8VGXEfU_Su_SsTG5TA', symObjAddr: 0x2450, symBinAddr: 0x154590, symSize: 0x10 } + - { offset: 0x1DF2BD, size: 0x8, addend: 0x0, symName: '_$sS2sSTsWl', symObjAddr: 0x2460, symBinAddr: 0x1545A0, symSize: 0x30 } + - { offset: 0x1DF2E7, size: 0x8, addend: 0x0, symName: '_$ss5SliceV32withContiguousStorageIfAvailableyqd__Sgqd__SRy7ElementQzGKXEKlFqd__AGKXEfU_SS8UTF8ViewV_SuSgTg5Tf4xnn_n', symObjAddr: 0x2C80, symBinAddr: 0x154D80, symSize: 0x260 } + - { offset: 0x1DF37C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwxx', symObjAddr: 0x2EF0, symBinAddr: 0x154FF0, symSize: 0x30 } + - { offset: 0x1DF390, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwca', symObjAddr: 0x2F60, symBinAddr: 0x155060, symSize: 0x60 } + - { offset: 0x1DF3A4, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_8, symObjAddr: 0x2FC0, symBinAddr: 0x1550C0, symSize: 0x20 } + - { offset: 0x1DF3B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwta', symObjAddr: 0x2FE0, symBinAddr: 0x1550E0, symSize: 0x40 } + - { offset: 0x1DF3CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwet', symObjAddr: 0x3020, symBinAddr: 0x155120, symSize: 0x40 } + - { offset: 0x1DF3E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVwst', symObjAddr: 0x3060, symBinAddr: 0x155160, symSize: 0x40 } + - { offset: 0x1DF3F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVMa', symObjAddr: 0x30A0, symBinAddr: 0x1551A0, symSize: 0x10 } + - { offset: 0x1DF408, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwxx', symObjAddr: 0x30E0, symBinAddr: 0x1551B0, symSize: 0x30 } + - { offset: 0x1DF41C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwcp', symObjAddr: 0x3110, symBinAddr: 0x1551E0, symSize: 0x70 } + - { offset: 0x1DF430, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwca', symObjAddr: 0x3180, symBinAddr: 0x155250, symSize: 0x90 } + - { offset: 0x1DF444, size: 0x8, addend: 0x0, symName: ___swift_memcpy49_8, symObjAddr: 0x3210, symBinAddr: 0x1552E0, symSize: 0x30 } + - { offset: 0x1DF458, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwta', symObjAddr: 0x3240, symBinAddr: 0x155310, symSize: 0x70 } + - { offset: 0x1DF46C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwet', symObjAddr: 0x32B0, symBinAddr: 0x155380, symSize: 0x40 } + - { offset: 0x1DF480, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVwst', symObjAddr: 0x32F0, symBinAddr: 0x1553C0, symSize: 0x50 } + - { offset: 0x1DF494, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVMa', symObjAddr: 0x3340, symBinAddr: 0x155410, symSize: 0x10 } + - { offset: 0x1DF4A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAFs0F3KeyAAWl', symObjAddr: 0x3380, symBinAddr: 0x155420, symSize: 0x30 } + - { offset: 0x1DF4BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVAESeAAWl', symObjAddr: 0x33E0, symBinAddr: 0x155450, symSize: 0x30 } + - { offset: 0x1DF4D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVAESEAAWl', symObjAddr: 0x3410, symBinAddr: 0x155480, symSize: 0x30 } + - { offset: 0x1DF4E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs0H3KeyAAWl', symObjAddr: 0x3440, symBinAddr: 0x1554B0, symSize: 0x30 } + - { offset: 0x1DF4F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOMa', symObjAddr: 0x3610, symBinAddr: 0x1554E0, symSize: 0x10 } + - { offset: 0x1DF50C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOMa', symObjAddr: 0x3670, symBinAddr: 0x1554F0, symSize: 0x10 } + - { offset: 0x1DF520, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwxx', symObjAddr: 0x3690, symBinAddr: 0x155510, symSize: 0x20 } + - { offset: 0x1DF534, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwca', symObjAddr: 0x36E0, symBinAddr: 0x155560, symSize: 0x50 } + - { offset: 0x1DF548, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwta', symObjAddr: 0x3740, symBinAddr: 0x1555B0, symSize: 0x30 } + - { offset: 0x1DF55C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwet', symObjAddr: 0x3770, symBinAddr: 0x1555E0, symSize: 0x40 } + - { offset: 0x1DF570, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVwst', symObjAddr: 0x37B0, symBinAddr: 0x155620, symSize: 0x40 } + - { offset: 0x1DF584, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVMa', symObjAddr: 0x37F0, symBinAddr: 0x155660, symSize: 0x10 } + - { offset: 0x1DF598, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOSHAASQWb', symObjAddr: 0x3800, symBinAddr: 0x155670, symSize: 0x10 } + - { offset: 0x1DF5AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAFSQAAWl', symObjAddr: 0x3810, symBinAddr: 0x155680, symSize: 0x30 } + - { offset: 0x1DF5C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOSHAASQWb', symObjAddr: 0x3840, symBinAddr: 0x1556B0, symSize: 0x10 } + - { offset: 0x1DF5D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHSQAAWl', symObjAddr: 0x3850, symBinAddr: 0x1556C0, symSize: 0x30 } + - { offset: 0x1DF5E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x3880, symBinAddr: 0x1556F0, symSize: 0x10 } + - { offset: 0x1DF5FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x3890, symBinAddr: 0x155700, symSize: 0x30 } + - { offset: 0x1DF610, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x38C0, symBinAddr: 0x155730, symSize: 0x10 } + - { offset: 0x1DF624, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x38D0, symBinAddr: 0x155740, symSize: 0x30 } + - { offset: 0x1DF638, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x3900, symBinAddr: 0x155770, symSize: 0x10 } + - { offset: 0x1DF64C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x3910, symBinAddr: 0x155780, symSize: 0x30 } + - { offset: 0x1DF660, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x3940, symBinAddr: 0x1557B0, symSize: 0x10 } + - { offset: 0x1DF674, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x3950, symBinAddr: 0x1557C0, symSize: 0x30 } + - { offset: 0x1DF688, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOAGs0G3KeyAAWl', symObjAddr: 0x3980, symBinAddr: 0x1557F0, symSize: 0x30 } + - { offset: 0x1DF69C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVAESeAAWl', symObjAddr: 0x39B0, symBinAddr: 0x155820, symSize: 0x30 } + - { offset: 0x1DF6B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVAESeAAWl', symObjAddr: 0x3A10, symBinAddr: 0x155850, symSize: 0x30 } + - { offset: 0x1DF6C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVAESEAAWl', symObjAddr: 0x3AB0, symBinAddr: 0x1558F0, symSize: 0x30 } + - { offset: 0x1DF6D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVAESEAAWl', symObjAddr: 0x3B50, symBinAddr: 0x155990, symSize: 0x30 } + - { offset: 0x1DF6EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOMa', symObjAddr: 0x3B90, symBinAddr: 0x1559C0, symSize: 0x10 } + - { offset: 0x1DF700, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwxx', symObjAddr: 0x3BD0, symBinAddr: 0x155A00, symSize: 0x10 } + - { offset: 0x1DF714, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwca', symObjAddr: 0x3BE0, symBinAddr: 0x155A10, symSize: 0x40 } + - { offset: 0x1DF728, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwta', symObjAddr: 0x3C20, symBinAddr: 0x155A50, symSize: 0x30 } + - { offset: 0x1DF73C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwet', symObjAddr: 0x3C50, symBinAddr: 0x155A80, symSize: 0x40 } + - { offset: 0x1DF750, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVwst', symObjAddr: 0x3C90, symBinAddr: 0x155AC0, symSize: 0x40 } + - { offset: 0x1DF764, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVMa', symObjAddr: 0x3CD0, symBinAddr: 0x155B00, symSize: 0x10 } + - { offset: 0x1DF778, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSHAASQWb', symObjAddr: 0x3CE0, symBinAddr: 0x155B10, symSize: 0x10 } + - { offset: 0x1DF78C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOAGSQAAWl', symObjAddr: 0x3CF0, symBinAddr: 0x155B20, symSize: 0x30 } + - { offset: 0x1DF7A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x3D20, symBinAddr: 0x155B50, symSize: 0x10 } + - { offset: 0x1DF7B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOAGs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x3D30, symBinAddr: 0x155B60, symSize: 0x30 } + - { offset: 0x1DF7C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x3D60, symBinAddr: 0x155B90, symSize: 0x10 } + - { offset: 0x1DF7DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOAGs23CustomStringConvertibleAAWl', symObjAddr: 0x3D70, symBinAddr: 0x155BA0, symSize: 0x30 } + - { offset: 0x1DF7F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs0H3KeyAAWl', symObjAddr: 0x3DA0, symBinAddr: 0x155BD0, symSize: 0x30 } + - { offset: 0x1DF804, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOMa', symObjAddr: 0x3F30, symBinAddr: 0x155C00, symSize: 0x10 } + - { offset: 0x1DF818, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOSHAASQWb', symObjAddr: 0x3F40, symBinAddr: 0x155C10, symSize: 0x10 } + - { offset: 0x1DF82C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHSQAAWl', symObjAddr: 0x3F50, symBinAddr: 0x155C20, symSize: 0x30 } + - { offset: 0x1DF840, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x3F80, symBinAddr: 0x155C50, symSize: 0x10 } + - { offset: 0x1DF854, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x3F90, symBinAddr: 0x155C60, symSize: 0x30 } + - { offset: 0x1DF868, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x3FC0, symBinAddr: 0x155C90, symSize: 0x10 } + - { offset: 0x1DF87C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOAHs23CustomStringConvertibleAAWl', symObjAddr: 0x3FD0, symBinAddr: 0x155CA0, symSize: 0x30 } + - { offset: 0x1DF8C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x170, symBinAddr: 0x152480, symSize: 0x70 } + - { offset: 0x1DF9A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x1E0, symBinAddr: 0x1524F0, symSize: 0x70 } + - { offset: 0x1DFA41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x250, symBinAddr: 0x152560, symSize: 0x50 } + - { offset: 0x1DFAA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x2A0, symBinAddr: 0x1525B0, symSize: 0x70 } + - { offset: 0x1DFB3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs28CustomDebugStringConvertibleAAsAHP16debugDescriptionSSvgTW', symObjAddr: 0x470, symBinAddr: 0x152770, symSize: 0x20 } + - { offset: 0x1DFB58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs23CustomStringConvertibleAAsAHP11descriptionSSvgTW', symObjAddr: 0x490, symBinAddr: 0x152790, symSize: 0x20 } + - { offset: 0x1DFBA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0xF10, symBinAddr: 0x153150, symSize: 0x20 } + - { offset: 0x1DFBC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0xF30, symBinAddr: 0x153170, symSize: 0x20 } + - { offset: 0x1DFBE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs28CustomDebugStringConvertibleAAsAIP16debugDescriptionSSvgTW', symObjAddr: 0x10C0, symBinAddr: 0x1532E0, symSize: 0x20 } + - { offset: 0x1DFBFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs23CustomStringConvertibleAAsAIP11descriptionSSvgTW', symObjAddr: 0x10E0, symBinAddr: 0x153300, symSize: 0x20 } + - { offset: 0x1DFC20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x1320, symBinAddr: 0x153460, symSize: 0x20 } + - { offset: 0x1DFC3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x1340, symBinAddr: 0x153480, symSize: 0x20 } + - { offset: 0x1DFC70, size: 0x8, addend: 0x0, symName: '_$sSKsE6suffixy11SubSequenceQzSiFSS_Tg5Tf4ng_n', symObjAddr: 0x2390, symBinAddr: 0x1544D0, symSize: 0xC0 } + - { offset: 0x1DFD2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x0, symBinAddr: 0x152310, symSize: 0x170 } + - { offset: 0x1DFDAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSYAASY8rawValuexSg03RawJ0Qz_tcfCTW', symObjAddr: 0x310, symBinAddr: 0x152620, symSize: 0x70 } + - { offset: 0x1DFDF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOSYAASY8rawValue03RawJ0QzvgTW', symObjAddr: 0x380, symBinAddr: 0x152690, symSize: 0x40 } + - { offset: 0x1DFE33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs0G3KeyAAsAHP11stringValueSSvgTW', symObjAddr: 0x3C0, symBinAddr: 0x1526D0, symSize: 0x30 } + - { offset: 0x1DFE83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV10CodingKeysOs0G3KeyAAsAHP11stringValuexSgSS_tcfCTW', symObjAddr: 0x3F0, symBinAddr: 0x152700, symSize: 0x70 } + - { offset: 0x1DFEFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x4B0, symBinAddr: 0x1527B0, symSize: 0x30 } + - { offset: 0x1DFF23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x4E0, symBinAddr: 0x1527E0, symSize: 0x20 } + - { offset: 0x1DFF5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV11fillOpacitySdvg', symObjAddr: 0x500, symBinAddr: 0x152800, symSize: 0x290 } + - { offset: 0x1E00D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV13borderOpacitySdvg', symObjAddr: 0x790, symBinAddr: 0x152A90, symSize: 0x290 } + - { offset: 0x1E0254, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV6encode2toys7Encoder_p_tKF', symObjAddr: 0xA20, symBinAddr: 0x152D20, symSize: 0x160 } + - { offset: 0x1E0285, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV6encode2toys7Encoder_p_tKF', symObjAddr: 0xB80, symBinAddr: 0x152E80, symSize: 0x100 } + - { offset: 0x1E02B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV6encode2toys7Encoder_p_tKF', symObjAddr: 0xC80, symBinAddr: 0x152F80, symSize: 0x120 } + - { offset: 0x1E030A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0xE50, symBinAddr: 0x1530A0, symSize: 0x80 } + - { offset: 0x1E033A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0xED0, symBinAddr: 0x153120, symSize: 0x20 } + - { offset: 0x1E0363, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP8intValuexSgSi_tcfCTW', symObjAddr: 0xF00, symBinAddr: 0x153140, symSize: 0x10 } + - { offset: 0x1E038A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xF50, symBinAddr: 0x153190, symSize: 0x40 } + - { offset: 0x1E03B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xF90, symBinAddr: 0x1531D0, symSize: 0x10 } + - { offset: 0x1E03DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP11stringValueSSvgTW', symObjAddr: 0xFA0, symBinAddr: 0x1531E0, symSize: 0x40 } + - { offset: 0x1E0425, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0H3KeyAAsAIP11stringValuexSgSS_tcfCTW', symObjAddr: 0xFE0, symBinAddr: 0x153220, symSize: 0xC0 } + - { offset: 0x1E0496, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x1100, symBinAddr: 0x153320, symSize: 0x30 } + - { offset: 0x1E04BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1130, symBinAddr: 0x153350, symSize: 0x20 } + - { offset: 0x1E04F6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x1220, symBinAddr: 0x153370, symSize: 0x30 } + - { offset: 0x1E0531, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1250, symBinAddr: 0x1533A0, symSize: 0xC0 } + - { offset: 0x1E05A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x1360, symBinAddr: 0x1534A0, symSize: 0x30 } + - { offset: 0x1E05CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1390, symBinAddr: 0x1534D0, symSize: 0x20 } + - { offset: 0x1E060E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4DataV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x24D0, symBinAddr: 0x1545D0, symSize: 0x1B0 } + - { offset: 0x1E0631, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV10CodingKeys33_AEB21DE9FC00D842F750E601C2758EDDLLO11stringValueAHSgSS_tcfCTf4nd_n', symObjAddr: 0x2680, symBinAddr: 0x154780, symSize: 0x140 } + - { offset: 0x1E06B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV12PolygonThemeV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x27C0, symBinAddr: 0x1548C0, symSize: 0x260 } + - { offset: 0x1E06DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV11PaletteItemV4fromAEs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x2A20, symBinAddr: 0x154B20, symSize: 0x120 } + - { offset: 0x1E06FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ColorsResponseV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x2B40, symBinAddr: 0x154C40, symSize: 0x140 } + - { offset: 0x1E0B43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PIAnalyticsAPIClientC14sharedInstance33_DB679343185B7764DCFBEC6E7A080E97LLACSgvpZ', symObjAddr: 0x200, symBinAddr: 0x3A0550, symSize: 0x0 } + - { offset: 0x1E0B8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PIAnalyticsAPIClientCMa', symObjAddr: 0x20, symBinAddr: 0x155D20, symSize: 0x20 } + - { offset: 0x1E0C59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PIAnalyticsAPIClientC20trackNavigationEvent010navigationH04typeyAA0gH4DataV_AA0gH4TypeOtFTf4nnd_n', symObjAddr: 0x40, symBinAddr: 0x155D40, symSize: 0x1BC } + - { offset: 0x1E1119, size: 0x8, addend: 0x0, symName: '_$sSo23UIActivityIndicatorViewC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x0, symBinAddr: 0x155F00, symSize: 0x10 } + - { offset: 0x1E1131, size: 0x8, addend: 0x0, symName: '_$sSo23UIActivityIndicatorViewC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x0, symBinAddr: 0x155F00, symSize: 0x10 } + - { offset: 0x1E114D, size: 0x8, addend: 0x0, symName: '_$sSo23UIActivityIndicatorViewC8PenNavUIE15colorIdentifierSivsTo', symObjAddr: 0x10, symBinAddr: 0x155F10, symSize: 0x30 } + - { offset: 0x1E1185, size: 0x8, addend: 0x0, symName: '_$sSo23UIActivityIndicatorViewC8PenNavUIE15colorIdentifierSivs', symObjAddr: 0x40, symBinAddr: 0x155F40, symSize: 0x100 } + - { offset: 0x1E1F6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10makeBounds3svg4auto3forAA9LayerTreeO4RectVAA3DOMO3SVGC_AkC7VariantOtKF', symObjAddr: 0x23D0, symBinAddr: 0x1583D0, symSize: 0x250 } + - { offset: 0x1E2257, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantV11appendPaths33_8F409FCBEB799BD4B2CB8F30218B4645LL_4fromySayAA0D8RendererV10SymbolPathVG_AA9LayerTreeO4RectVtF', symObjAddr: 0x2620, symBinAddr: 0x158620, symSize: 0x950 } + - { offset: 0x1E2F2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV14getSymbolPaths3for3ctmSayAC0G4PathVGAA9LayerTreeO0L0C_AK9TransformO6MatrixVtFZ', symObjAddr: 0x2F70, symBinAddr: 0x158F70, symSize: 0xCF0 } + - { offset: 0x1E3ABC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwxx', symObjAddr: 0x3E90, symBinAddr: 0x159DE0, symSize: 0x30 } + - { offset: 0x1E3AD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwcp', symObjAddr: 0x3EC0, symBinAddr: 0x159E10, symSize: 0xF0 } + - { offset: 0x1E3AE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwca', symObjAddr: 0x3FB0, symBinAddr: 0x159F00, symSize: 0x180 } + - { offset: 0x1E3AF8, size: 0x8, addend: 0x0, symName: ___swift_memcpy240_8, symObjAddr: 0x4130, symBinAddr: 0x15A080, symSize: 0x10 } + - { offset: 0x1E3B0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwta', symObjAddr: 0x4140, symBinAddr: 0x15A090, symSize: 0x170 } + - { offset: 0x1E3B20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwet', symObjAddr: 0x42B0, symBinAddr: 0x15A200, symSize: 0x40 } + - { offset: 0x1E3B34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVwst', symObjAddr: 0x42F0, symBinAddr: 0x15A240, symSize: 0xA0 } + - { offset: 0x1E3B48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVMa', symObjAddr: 0x4390, symBinAddr: 0x15A2E0, symSize: 0x10 } + - { offset: 0x1E3E24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererVWOc', symObjAddr: 0x52D0, symBinAddr: 0x15B1D0, symSize: 0x30 } + - { offset: 0x1E3E3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVWOh', symObjAddr: 0x5330, symBinAddr: 0x15B200, symSize: 0x20 } + - { offset: 0x1E3E53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorVAEsAdAWl', symObjAddr: 0x5350, symBinAddr: 0x15B220, symSize: 0x30 } + - { offset: 0x1E3E67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV11printInsets3top4left6bottom5right7variantySd_S3dAC7VariantOtFZTf4nnnnnd_n', symObjAddr: 0x5380, symBinAddr: 0x15B250, symSize: 0x430 } + - { offset: 0x1E412D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO22PresentationAttributesVSgWOh', symObjAddr: 0x58B0, symBinAddr: 0x15B760, symSize: 0x30 } + - { offset: 0x1E4141, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVWOc', symObjAddr: 0x5970, symBinAddr: 0x15B790, symSize: 0x30 } + - { offset: 0x1E4155, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ContainerError33_8F409FCBEB799BD4B2CB8F30218B4645LLOADs0E0AAWl', symObjAddr: 0x59A0, symBinAddr: 0x15B7C0, symSize: 0x30 } + - { offset: 0x1E4169, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10SymbolPathVwxx', symObjAddr: 0x5AC0, symBinAddr: 0x15B800, symSize: 0x30 } + - { offset: 0x1E417D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10SymbolPathVwca', symObjAddr: 0x5B30, symBinAddr: 0x15B870, symSize: 0x60 } + - { offset: 0x1E4191, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10SymbolPathVwta', symObjAddr: 0x5BB0, symBinAddr: 0x15B8D0, symSize: 0x40 } + - { offset: 0x1E41A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV10SymbolPathVMa', symObjAddr: 0x5C70, symBinAddr: 0x15B910, symSize: 0x10 } + - { offset: 0x1E41B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ContainerError33_8F409FCBEB799BD4B2CB8F30218B4645LLOMa', symObjAddr: 0x5DC0, symBinAddr: 0x15B920, symSize: 0x10 } + - { offset: 0x1E41CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorVwet', symObjAddr: 0x5E10, symBinAddr: 0x15B930, symSize: 0x50 } + - { offset: 0x1E41E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorVwst', symObjAddr: 0x5E60, symBinAddr: 0x15B980, symSize: 0x50 } + - { offset: 0x1E41F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorVMa', symObjAddr: 0x5EB0, symBinAddr: 0x15B9D0, symSize: 0x10 } + - { offset: 0x1E4209, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwxx', symObjAddr: 0x5EC0, symBinAddr: 0x15B9E0, symSize: 0x70 } + - { offset: 0x1E421D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwcp', symObjAddr: 0x5F30, symBinAddr: 0x15BA50, symSize: 0xE0 } + - { offset: 0x1E4231, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwca', symObjAddr: 0x6010, symBinAddr: 0x15BB30, symSize: 0x120 } + - { offset: 0x1E4245, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwta', symObjAddr: 0x6160, symBinAddr: 0x15BC50, symSize: 0xA0 } + - { offset: 0x1E4259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwet', symObjAddr: 0x6200, symBinAddr: 0x15BCF0, symSize: 0x40 } + - { offset: 0x1E426D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVwst', symObjAddr: 0x6240, symBinAddr: 0x15BD30, symSize: 0x50 } + - { offset: 0x1E4281, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateVMa', symObjAddr: 0x6290, symBinAddr: 0x15BD80, symSize: 0x10 } + - { offset: 0x1E4295, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AAsADPWb', symObjAddr: 0x62A0, symBinAddr: 0x15BD90, symSize: 0x10 } + - { offset: 0x1E42A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwxx', symObjAddr: 0x62C0, symBinAddr: 0x15BDB0, symSize: 0x30 } + - { offset: 0x1E42BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwca', symObjAddr: 0x6340, symBinAddr: 0x15BE30, symSize: 0x70 } + - { offset: 0x1E42D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwta', symObjAddr: 0x63B0, symBinAddr: 0x15BEA0, symSize: 0x40 } + - { offset: 0x1E42E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwet', symObjAddr: 0x63F0, symBinAddr: 0x15BEE0, symSize: 0x40 } + - { offset: 0x1E42F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVwst', symObjAddr: 0x6430, symBinAddr: 0x15BF20, symSize: 0x40 } + - { offset: 0x1E430D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantVMa', symObjAddr: 0x6470, symBinAddr: 0x15BF60, symSize: 0x10 } + - { offset: 0x1E4321, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV8ContentsVMa', symObjAddr: 0x6480, symBinAddr: 0x15BF70, symSize: 0x10 } + - { offset: 0x1E4335, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV5GuideVMa', symObjAddr: 0x6490, symBinAddr: 0x15BF80, symSize: 0x10 } + - { offset: 0x1E488E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV7options6insets0G10Ultralight0G5Black9precisionAcA3SVGC7OptionsV_AA11CommandLineO6InsetsVA2PSitcfC', symObjAddr: 0x0, symBinAddr: 0x156040, symSize: 0x1A0 } + - { offset: 0x1E495D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AafGP13failureReasonSSSgvgTW', symObjAddr: 0x3C90, symBinAddr: 0x159C90, symSize: 0x10 } + - { offset: 0x1E4979, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AafGP18recoverySuggestionSSSgvgTW', symObjAddr: 0x3CA0, symBinAddr: 0x159CA0, symSize: 0x10 } + - { offset: 0x1E4995, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AafGP10helpAnchorSSSgvgTW', symObjAddr: 0x3CB0, symBinAddr: 0x159CB0, symSize: 0x10 } + - { offset: 0x1E4A13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV6render7regular10ultralight5blackSS10Foundation3URLV_AJSgAKtKF', symObjAddr: 0x1A0, symBinAddr: 0x1561E0, symSize: 0x430 } + - { offset: 0x1E4CE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV6render7default10ultralight5blackSSAA3DOMO3SVGC_AKSgALtKF', symObjAddr: 0x610, symBinAddr: 0x156610, symSize: 0x1800 } + - { offset: 0x1E6816, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV20makeSymbolStyleSheet4fromAA3DOMO0hI0VAI_tF', symObjAddr: 0x1E10, symBinAddr: 0x157E10, symSize: 0x5C0 } + - { offset: 0x1E6BAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV5ErrorV10Foundation09LocalizedF0AafGP16errorDescriptionSSSgvgTW', symObjAddr: 0x3C60, symBinAddr: 0x159C60, symSize: 0x30 } + - { offset: 0x1E6BBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV5GuideV1xSfvs', symObjAddr: 0x3CC0, symBinAddr: 0x159CC0, symSize: 0x120 } + - { offset: 0x1E6CE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolRendererV20containsAcceptedNameySbSSSgFZTf4nd_n', symObjAddr: 0x43F0, symBinAddr: 0x15A2F0, symSize: 0x170 } + - { offset: 0x1E6D6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantV3svg4kindAeA3DOMO3SVGC_SStKcfCTf4nnd_n', symObjAddr: 0x4560, symBinAddr: 0x15A460, symSize: 0xB50 } + - { offset: 0x1E78A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV3svgAcA3DOMO3SVGC_tKcfCTf4nd_n', symObjAddr: 0x50B0, symBinAddr: 0x15AFB0, symSize: 0x220 } + - { offset: 0x1E7916, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SFSymbolTemplateV7VariantV6boundsAA9LayerTreeO4RectVvgTf4x_n', symObjAddr: 0x57B0, symBinAddr: 0x15B680, symSize: 0xE0 } + - { offset: 0x1E7DBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwxx', symObjAddr: 0x30, symBinAddr: 0x15C000, symSize: 0x10 } + - { offset: 0x1E7DCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwcp', symObjAddr: 0x40, symBinAddr: 0x15C010, symSize: 0xB0 } + - { offset: 0x1E7DE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwca', symObjAddr: 0xF0, symBinAddr: 0x15C0C0, symSize: 0xC0 } + - { offset: 0x1E7DF7, size: 0x8, addend: 0x0, symName: ___swift_memcpy137_8, symObjAddr: 0x1B0, symBinAddr: 0x15C180, symSize: 0x10 } + - { offset: 0x1E7E0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwta', symObjAddr: 0x1C0, symBinAddr: 0x15C190, symSize: 0xB0 } + - { offset: 0x1E7E1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwet', symObjAddr: 0x270, symBinAddr: 0x15C240, symSize: 0x50 } + - { offset: 0x1E7E33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVwst', symObjAddr: 0x2C0, symBinAddr: 0x15C290, symSize: 0x70 } + - { offset: 0x1E7E47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVMa', symObjAddr: 0x330, symBinAddr: 0x15C300, symSize: 0x10 } + - { offset: 0x1E7E5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVwca', symObjAddr: 0x380, symBinAddr: 0x15C340, symSize: 0x30 } + - { offset: 0x1E7E6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVwta', symObjAddr: 0x3C0, symBinAddr: 0x15C370, symSize: 0x30 } + - { offset: 0x1E7E83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVMa', symObjAddr: 0x490, symBinAddr: 0x15C3A0, symSize: 0x10 } + - { offset: 0x1E825E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs0I3KeyAAWl', symObjAddr: 0xF40, symBinAddr: 0x15CC40, symSize: 0x30 } + - { offset: 0x1E8272, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI9VenueGateVGMa', symObjAddr: 0xFA0, symBinAddr: 0x15CC70, symSize: 0x30 } + - { offset: 0x1E8286, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVACSeAAWl', symObjAddr: 0xFD0, symBinAddr: 0x15CCA0, symSize: 0x30 } + - { offset: 0x1E829A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVACSEAAWl', symObjAddr: 0x1060, symBinAddr: 0x15CD30, symSize: 0x30 } + - { offset: 0x1E82AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs0F3KeyAAWl', symObjAddr: 0x1E30, symBinAddr: 0x15DB00, symSize: 0x30 } + - { offset: 0x1E82D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOMa', symObjAddr: 0x2110, symBinAddr: 0x15DB70, symSize: 0x10 } + - { offset: 0x1E82E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOMa', symObjAddr: 0x22A0, symBinAddr: 0x15DB80, symSize: 0x10 } + - { offset: 0x1E82F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOSHAASQWb', symObjAddr: 0x22B0, symBinAddr: 0x15DB90, symSize: 0x10 } + - { offset: 0x1E830C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFSQAAWl', symObjAddr: 0x22C0, symBinAddr: 0x15DBA0, symSize: 0x30 } + - { offset: 0x1E8320, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOSHAASQWb', symObjAddr: 0x22F0, symBinAddr: 0x15DBD0, symSize: 0x10 } + - { offset: 0x1E8334, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFSQAAWl', symObjAddr: 0x2300, symBinAddr: 0x15DBE0, symSize: 0x30 } + - { offset: 0x1E8348, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2330, symBinAddr: 0x15DC10, symSize: 0x10 } + - { offset: 0x1E835C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2340, symBinAddr: 0x15DC20, symSize: 0x30 } + - { offset: 0x1E8370, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x2370, symBinAddr: 0x15DC50, symSize: 0x10 } + - { offset: 0x1E8384, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x2380, symBinAddr: 0x15DC60, symSize: 0x30 } + - { offset: 0x1E8398, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0I3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x23B0, symBinAddr: 0x15DC90, symSize: 0x10 } + - { offset: 0x1E83AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x23C0, symBinAddr: 0x15DCA0, symSize: 0x30 } + - { offset: 0x1E83C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0I3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x23F0, symBinAddr: 0x15DCD0, symSize: 0x10 } + - { offset: 0x1E83D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x2400, symBinAddr: 0x15DCE0, symSize: 0x30 } + - { offset: 0x1E8417, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x790, symBinAddr: 0x15C5D0, symSize: 0x20 } + - { offset: 0x1E8433, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x7B0, symBinAddr: 0x15C5F0, symSize: 0x20 } + - { offset: 0x1E8464, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0xCD0, symBinAddr: 0x15CA40, symSize: 0x20 } + - { offset: 0x1E8480, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0xCF0, symBinAddr: 0x15CA60, symSize: 0x20 } + - { offset: 0x1E849D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV6encode2toys7Encoder_p_tKF', symObjAddr: 0x4A0, symBinAddr: 0x15C3B0, symSize: 0x130 } + - { offset: 0x1E84F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0I3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x680, symBinAddr: 0x15C4E0, symSize: 0x30 } + - { offset: 0x1E8531, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0I3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x6B0, symBinAddr: 0x15C510, symSize: 0xC0 } + - { offset: 0x1E85A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x7D0, symBinAddr: 0x15C610, symSize: 0x30 } + - { offset: 0x1E85CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x800, symBinAddr: 0x15C640, symSize: 0x20 } + - { offset: 0x1E85DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLO11stringValueSSvg', symObjAddr: 0x820, symBinAddr: 0x15C660, symSize: 0x120 } + - { offset: 0x1E8614, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV6encode2toys7Encoder_p_tKF', symObjAddr: 0x940, symBinAddr: 0x15C780, symSize: 0x290 } + - { offset: 0x1E8656, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0xC80, symBinAddr: 0x15CA10, symSize: 0x10 } + - { offset: 0x1E8671, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0xC90, symBinAddr: 0x15CA20, symSize: 0x20 } + - { offset: 0x1E86AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xD10, symBinAddr: 0x15CA80, symSize: 0x50 } + - { offset: 0x1E86D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xD60, symBinAddr: 0x15CAD0, symSize: 0x10 } + - { offset: 0x1E86EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI30GetVenueGatesDistancesResponseV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0xD70, symBinAddr: 0x15CAE0, symSize: 0x160 } + - { offset: 0x1E870D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV10CodingKeys33_AC99F0E7840CCAADE27B75EC476CB775LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x1090, symBinAddr: 0x15CD60, symSize: 0x2E0 } + - { offset: 0x1E883E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueGateV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x1370, symBinAddr: 0x15D040, symSize: 0xAC0 } + - { offset: 0x1E8C0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOMa', symObjAddr: 0x130, symBinAddr: 0x15DD30, symSize: 0x10 } + - { offset: 0x1E8C22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixV12concatenatedyA2GF', symObjAddr: 0x140, symBinAddr: 0x15DD40, symSize: 0x60 } + - { offset: 0x1E8E1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSHAASQWb', symObjAddr: 0x510, symBinAddr: 0x15E110, symSize: 0x10 } + - { offset: 0x1E8E2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOAESQAAWl', symObjAddr: 0x520, symBinAddr: 0x15E120, symSize: 0x30 } + - { offset: 0x1E8E42, size: 0x8, addend: 0x0, symName: ___swift_memcpy24_4, symObjAddr: 0x6E0, symBinAddr: 0x15E2E0, symSize: 0x20 } + - { offset: 0x1E8E56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVwet', symObjAddr: 0x700, symBinAddr: 0x15E300, symSize: 0x20 } + - { offset: 0x1E8E6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVwst', symObjAddr: 0x720, symBinAddr: 0x15E320, symSize: 0x30 } + - { offset: 0x1E8E7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVMa', symObjAddr: 0x750, symBinAddr: 0x15E350, symSize: 0x10 } + - { offset: 0x1E8E92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSHAASQWb', symObjAddr: 0x760, symBinAddr: 0x15E360, symSize: 0x10 } + - { offset: 0x1E8EA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVAGSQAAWl', symObjAddr: 0x770, symBinAddr: 0x15E370, symSize: 0x2D } + - { offset: 0x1E8EFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x380, symBinAddr: 0x15DF80, symSize: 0x30 } + - { offset: 0x1E8F66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x470, symBinAddr: 0x15E070, symSize: 0x60 } + - { offset: 0x1E8FA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixV4hash4intoys6HasherVz_tF', symObjAddr: 0x1A0, symBinAddr: 0x15DDA0, symSize: 0x90 } + - { offset: 0x1E90E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO4hash4intoys6HasherVz_tF', symObjAddr: 0x230, symBinAddr: 0x15DE30, symSize: 0x100 } + - { offset: 0x1E9270, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSHAASH9hashValueSivgTW', symObjAddr: 0x330, symBinAddr: 0x15DF30, symSize: 0x40 } + - { offset: 0x1E92ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x370, symBinAddr: 0x15DF70, symSize: 0x10 } + - { offset: 0x1E9329, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x3B0, symBinAddr: 0x15DFB0, symSize: 0x40 } + - { offset: 0x1E9370, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSHAASH9hashValueSivgTW', symObjAddr: 0x3F0, symBinAddr: 0x15DFF0, symSize: 0x60 } + - { offset: 0x1E93EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x450, symBinAddr: 0x15E050, symSize: 0x20 } + - { offset: 0x1E9416, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x4D0, symBinAddr: 0x15E0D0, symSize: 0x40 } + - { offset: 0x1E943F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO6MatrixV2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x550, symBinAddr: 0x15E150, symSize: 0x60 } + - { offset: 0x1E946E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO9TransformO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x5B0, symBinAddr: 0x15E1B0, symSize: 0x130 } + - { offset: 0x1E9857, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOMa', symObjAddr: 0x1A0, symBinAddr: 0x15E3A0, symSize: 0x10 } + - { offset: 0x1E986B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x1B0, symBinAddr: 0x15E3B0, symSize: 0x10 } + - { offset: 0x1E987F, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI20FloorSelectorSectionOGSayxGSlsWl', symObjAddr: 0x1C0, symBinAddr: 0x15E3C0, symSize: 0x40 } + - { offset: 0x1E9893, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI20FloorSelectorSectionOGMa', symObjAddr: 0x200, symBinAddr: 0x15E400, symSize: 0x30 } + - { offset: 0x1E9922, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOSHAASQWb', symObjAddr: 0x350, symBinAddr: 0x15E490, symSize: 0x10 } + - { offset: 0x1E9936, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOACSQAAWl', symObjAddr: 0x360, symBinAddr: 0x15E4A0, symSize: 0x30 } + - { offset: 0x1E9987, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x2E0, symBinAddr: 0x15E430, symSize: 0x30 } + - { offset: 0x1E99BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20FloorSelectorSectionOs12CaseIterableAAsADP8allCases03AllJ0QzvgZTW', symObjAddr: 0x320, symBinAddr: 0x15E460, symSize: 0x30 } + - { offset: 0x1E9D7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC18addToFavoritesViewAA06HapticJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x15E4D0, symSize: 0x20 } + - { offset: 0x1EA1BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellCfETo', symObjAddr: 0xF60, symBinAddr: 0x15F430, symSize: 0x90 } + - { offset: 0x1EA1EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellCMa', symObjAddr: 0xFF0, symBinAddr: 0x15F4C0, symSize: 0x20 } + - { offset: 0x1EA1FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC05setUpE03foryAA11PoiViewDataCSg_tFyycfU_TA', symObjAddr: 0x10E0, symBinAddr: 0x15F500, symSize: 0x10 } + - { offset: 0x1EA37C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC18addToFavoritesViewAA06HapticJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x15E4D0, symSize: 0x20 } + - { offset: 0x1EA3DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC18addToFavoritesViewAA06HapticJ0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x15E4F0, symSize: 0x30 } + - { offset: 0x1EA4B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC19addToFavoritesLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x15E520, symSize: 0x20 } + - { offset: 0x1EA510, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC19addToFavoritesLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x15E540, symSize: 0x30 } + - { offset: 0x1EA55F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC23addToFavoritesImageViewSo07UIImageK0CSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x15E570, symSize: 0x20 } + - { offset: 0x1EA5B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC23addToFavoritesImageViewSo07UIImageK0CSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x15E590, symSize: 0x30 } + - { offset: 0x1EA606, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC15reportIssueViewAA06HapticI0CSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x15E5C0, symSize: 0x20 } + - { offset: 0x1EA65B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC15reportIssueViewAA06HapticI0CSgvsTo', symObjAddr: 0x110, symBinAddr: 0x15E5E0, symSize: 0x20 } + - { offset: 0x1EA6AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC20reportIssueStackViewSo07UIStackJ0CSgvgTo', symObjAddr: 0x130, symBinAddr: 0x15E600, symSize: 0x20 } + - { offset: 0x1EA708, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC20reportIssueStackViewSo07UIStackJ0CSgvsTo', symObjAddr: 0x150, symBinAddr: 0x15E620, symSize: 0x20 } + - { offset: 0x1EA75B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC13seperatorViewAA09SeparatorH0CSgvgTo', symObjAddr: 0x170, symBinAddr: 0x15E640, symSize: 0x20 } + - { offset: 0x1EA7B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC13seperatorViewAA09SeparatorH0CSgvsTo', symObjAddr: 0x190, symBinAddr: 0x15E660, symSize: 0x20 } + - { offset: 0x1EA808, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x1B0, symBinAddr: 0x15E680, symSize: 0x70 } + - { offset: 0x1EA84E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC15prepareForReuseyyFTo', symObjAddr: 0x220, symBinAddr: 0x15E6F0, symSize: 0x80 } + - { offset: 0x1EA93B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC05setUpE03foryAA11PoiViewDataCSg_tF', symObjAddr: 0x2A0, symBinAddr: 0x15E770, symSize: 0x580 } + - { offset: 0x1EABD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC05setUpE03foryAA11PoiViewDataCSg_tFyycfU_', symObjAddr: 0x820, symBinAddr: 0x15ECF0, symSize: 0x160 } + - { offset: 0x1EAD6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC013setupFavoriteC0yyF', symObjAddr: 0x980, symBinAddr: 0x15EE50, symSize: 0x1A0 } + - { offset: 0x1EAECB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC16setupReportIssue33_9AB79F14116E50BD905211A038D22488LLyyF', symObjAddr: 0xB20, symBinAddr: 0x15EFF0, symSize: 0xF0 } + - { offset: 0x1EAF76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC16setupReportIssue33_9AB79F14116E50BD905211A038D22488LLyyFyycfU_', symObjAddr: 0xC10, symBinAddr: 0x15F0E0, symSize: 0xD0 } + - { offset: 0x1EAF9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0xCE0, symBinAddr: 0x15F1B0, symSize: 0x100 } + - { offset: 0x1EAFE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xDE0, symBinAddr: 0x15F2B0, symSize: 0x30 } + - { offset: 0x1EB018, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xE10, symBinAddr: 0x15F2E0, symSize: 0xF0 } + - { offset: 0x1EB04B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xF00, symBinAddr: 0x15F3D0, symSize: 0x30 } + - { offset: 0x1EB05F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17BottomActionsCellCfD', symObjAddr: 0xF30, symBinAddr: 0x15F400, symSize: 0x30 } + - { offset: 0x1EB406, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionViewSo012UICollectionH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x15F510, symSize: 0x20 } + - { offset: 0x1EB721, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellCfETo', symObjAddr: 0x830, symBinAddr: 0x15FD40, symSize: 0x70 } + - { offset: 0x1EB750, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellCMa', symObjAddr: 0x8A0, symBinAddr: 0x15FDB0, symSize: 0x20 } + - { offset: 0x1EB78E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionH0C_SitFTo', symObjAddr: 0x8C0, symBinAddr: 0x15FDD0, symSize: 0x20 } + - { offset: 0x1EB89E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionView_13cellForItemAtSo012UICollectionhF0CSo0mH0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x8E0, symBinAddr: 0x15FDF0, symSize: 0x110 } + - { offset: 0x1EB934, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC08validateE0yyFySSXEfU_ySo7UIImageCSgcfU_TA', symObjAddr: 0xA40, symBinAddr: 0x15FF50, symSize: 0x20 } + - { offset: 0x1EBA81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionViewSo012UICollectionH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x15F510, symSize: 0x20 } + - { offset: 0x1EBADF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC14collectionViewSo012UICollectionH0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x15F530, symSize: 0x30 } + - { offset: 0x1EBB2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC12awakeFromNibyyF', symObjAddr: 0x50, symBinAddr: 0x15F560, symSize: 0x190 } + - { offset: 0x1EBBDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC12awakeFromNibyyFTo', symObjAddr: 0x1E0, symBinAddr: 0x15F6F0, symSize: 0x30 } + - { offset: 0x1EBC53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC15prepareForReuseyyFTo', symObjAddr: 0x210, symBinAddr: 0x15F720, symSize: 0xD0 } + - { offset: 0x1EBD26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC08validateE0yyF', symObjAddr: 0x2E0, symBinAddr: 0x15F7F0, symSize: 0x160 } + - { offset: 0x1EBEED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC08validateE0yyFySSXEfU_ySo7UIImageCSgcfU_', symObjAddr: 0x440, symBinAddr: 0x15F950, symSize: 0x1F0 } + - { offset: 0x1EC1CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x630, symBinAddr: 0x15FB40, symSize: 0xC0 } + - { offset: 0x1EC20D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x6F0, symBinAddr: 0x15FC00, symSize: 0x30 } + - { offset: 0x1EC245, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x720, symBinAddr: 0x15FC30, symSize: 0xB0 } + - { offset: 0x1EC278, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x7D0, symBinAddr: 0x15FCE0, symSize: 0x30 } + - { offset: 0x1EC28C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15PlaceImagesCellCfD', symObjAddr: 0x800, symBinAddr: 0x15FD10, symSize: 0x30 } + - { offset: 0x1EC650, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x15FF70, symSize: 0x60 } + - { offset: 0x1EC714, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV2eeoiySbAC_ACtFZSbSWXEfU_', symObjAddr: 0x60, symBinAddr: 0x15FFD0, symSize: 0x280 } + - { offset: 0x1EC87C, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15withUnsafeBytesyxxSWKXEKlFSb_Tgq5015$s10Foundation4B26V2eeoiySbAC_ACtFZSbSWXEfU_ACTf1cn_n', symObjAddr: 0x2E0, symBinAddr: 0x160250, symSize: 0x1D0 } + - { offset: 0x1EC95E, size: 0x8, addend: 0x0, symName: '_$s10Foundation13__DataStorageC15withUnsafeBytes2in5applyxSnySiG_xSWKXEtKlFSb_Tgq5015$s10Foundation4B26V2eeoiySbAC_ACtFZSbSWXEfU_AA0B0VTf1ncn_nTf4nng_n', symObjAddr: 0x4B0, symBinAddr: 0x160420, symSize: 0xA0 } + - { offset: 0x1EC994, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOWOy', symObjAddr: 0x900, symBinAddr: 0x1607F0, symSize: 0x20 } + - { offset: 0x1EC9A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwxx', symObjAddr: 0x920, symBinAddr: 0x160810, symSize: 0x20 } + - { offset: 0x1EC9BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOWOe', symObjAddr: 0x940, symBinAddr: 0x160830, symSize: 0x20 } + - { offset: 0x1EC9D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwca', symObjAddr: 0x960, symBinAddr: 0x160850, symSize: 0x40 } + - { offset: 0x1EC9E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwta', symObjAddr: 0x9B0, symBinAddr: 0x160890, symSize: 0x30 } + - { offset: 0x1EC9F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwet', symObjAddr: 0x9E0, symBinAddr: 0x1608C0, symSize: 0x50 } + - { offset: 0x1ECA0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwst', symObjAddr: 0xA30, symBinAddr: 0x160910, symSize: 0x60 } + - { offset: 0x1ECA20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwug', symObjAddr: 0xA90, symBinAddr: 0x160970, symSize: 0x20 } + - { offset: 0x1ECA34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwup', symObjAddr: 0xAB0, symBinAddr: 0x160990, symSize: 0x10 } + - { offset: 0x1ECA48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOwui', symObjAddr: 0xAC0, symBinAddr: 0x1609A0, symSize: 0x30 } + - { offset: 0x1ECA5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOMa', symObjAddr: 0xAF0, symBinAddr: 0x1609D0, symSize: 0x10 } + - { offset: 0x1ECB34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x15FF70, symSize: 0x60 } + - { offset: 0x1ECB8B, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x550, symBinAddr: 0x1604C0, symSize: 0x160 } + - { offset: 0x1ECBB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ImageO8mimeType4dataAESgSS_10Foundation4DataVtcfCTf4nnd_n', symObjAddr: 0x730, symBinAddr: 0x160620, symSize: 0x190 } + - { offset: 0x1ED084, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleCMa', symObjAddr: 0xB0, symBinAddr: 0x160A60, symSize: 0x20 } + - { offset: 0x1ED101, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x50, symBinAddr: 0x160A00, symSize: 0x60 } + - { offset: 0x1ED16B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xD0, symBinAddr: 0x160A80, symSize: 0x50 } + - { offset: 0x1ED1B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB5StyleCfD', symObjAddr: 0x120, symBinAddr: 0x160AD0, symSize: 0x2B } + - { offset: 0x1ED54C, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE07dismisscD12Notification_WZ', symObjAddr: 0x0, symBinAddr: 0x160B00, symSize: 0x30 } + - { offset: 0x1ED570, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE07dismisscD12NotificationABvpZ', symObjAddr: 0x51A0, symBinAddr: 0x3BD040, symSize: 0x0 } + - { offset: 0x1ED58A, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE30oneSecondDidElapseNotificationABvpZ', symObjAddr: 0x51A8, symBinAddr: 0x3BD048, symSize: 0x0 } + - { offset: 0x1ED5A4, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37networkInterfaceDidChangeNotificationABvpZ', symObjAddr: 0x51B0, symBinAddr: 0x3BD050, symSize: 0x0 } + - { offset: 0x1ED5BE, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE34locationStateDidChangeNotificationABvpZ', symObjAddr: 0x51B8, symBinAddr: 0x3BD058, symSize: 0x0 } + - { offset: 0x1ED5D8, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE35bluetoothStateDidChangeNotificationABvpZ', symObjAddr: 0x51C0, symBinAddr: 0x3BD060, symSize: 0x0 } + - { offset: 0x1ED5F2, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37locationAccuracyDidChangeNotificationABvpZ', symObjAddr: 0x51C8, symBinAddr: 0x3BD068, symSize: 0x0 } + - { offset: 0x1ED60C, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37connectionStatusDidChangeNotificationABvpZ', symObjAddr: 0x51D0, symBinAddr: 0x3BD070, symSize: 0x0 } + - { offset: 0x1ED626, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE43directionsAvailabilityDidChangeNotificationABvpZ', symObjAddr: 0x51D8, symBinAddr: 0x3BD078, symSize: 0x0 } + - { offset: 0x1ED640, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE43locationDetectionStateDidChangeNotificationABvpZ', symObjAddr: 0x51E0, symBinAddr: 0x3BD080, symSize: 0x0 } + - { offset: 0x1ED64E, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE07dismisscD12Notification_WZ', symObjAddr: 0x0, symBinAddr: 0x160B00, symSize: 0x30 } + - { offset: 0x1ED67E, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE30oneSecondDidElapseNotification_WZ', symObjAddr: 0x30, symBinAddr: 0x160B30, symSize: 0x30 } + - { offset: 0x1ED6AE, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37networkInterfaceDidChangeNotification_WZ', symObjAddr: 0x60, symBinAddr: 0x160B60, symSize: 0x30 } + - { offset: 0x1ED6DE, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE34locationStateDidChangeNotification_WZ', symObjAddr: 0x90, symBinAddr: 0x160B90, symSize: 0x30 } + - { offset: 0x1ED70E, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE35bluetoothStateDidChangeNotification_WZ', symObjAddr: 0xC0, symBinAddr: 0x160BC0, symSize: 0x30 } + - { offset: 0x1ED73E, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37locationAccuracyDidChangeNotification_WZ', symObjAddr: 0xF0, symBinAddr: 0x160BF0, symSize: 0x30 } + - { offset: 0x1ED76E, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE37connectionStatusDidChangeNotification_WZ', symObjAddr: 0x120, symBinAddr: 0x160C20, symSize: 0x30 } + - { offset: 0x1ED79E, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE43directionsAvailabilityDidChangeNotification_WZ', symObjAddr: 0x150, symBinAddr: 0x160C50, symSize: 0x30 } + - { offset: 0x1ED7CE, size: 0x8, addend: 0x0, symName: '_$sSo18NSNotificationNamea8PenNavUIE43locationDetectionStateDidChangeNotification_WZ', symObjAddr: 0x180, symBinAddr: 0x160C80, symSize: 0x30 } + - { offset: 0x1EDBD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0So012UICollectionE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x160CB0, symSize: 0x20 } + - { offset: 0x1EE105, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCfE', symObjAddr: 0x750, symBinAddr: 0x161400, symSize: 0x70 } + - { offset: 0x1EE132, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCfETo', symObjAddr: 0x7F0, symBinAddr: 0x1614A0, symSize: 0x80 } + - { offset: 0x1EE161, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCMa', symObjAddr: 0x870, symBinAddr: 0x161520, symSize: 0x20 } + - { offset: 0x1EE175, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC16numberOfSections2inSiSo012UICollectionE0C_tFTo', symObjAddr: 0x890, symBinAddr: 0x161540, symSize: 0x10 } + - { offset: 0x1EE1D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_22numberOfItemsInSectionSiSo012UICollectionE0C_SitFTo', symObjAddr: 0x8A0, symBinAddr: 0x161550, symSize: 0x20 } + - { offset: 0x1EE323, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_13cellForItemAtSo012UICollectionE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0x8C0, symBinAddr: 0x161570, symSize: 0x440 } + - { offset: 0x1EE7A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_13cellForItemAtSo012UICollectionE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xD00, symBinAddr: 0x1619B0, symSize: 0xB0 } + - { offset: 0x1EE7CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_15didSelectItemAtySo012UICollectionE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xDB0, symBinAddr: 0x161A60, symSize: 0xA0 } + - { offset: 0x1EE810, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC14layoutForPanelAA08FloatingI6Layout_pyF', symObjAddr: 0xE50, symBinAddr: 0x161B00, symSize: 0xE0 } + - { offset: 0x1EE89F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0xF30, symBinAddr: 0x161BE0, symSize: 0x30 } + - { offset: 0x1EE8D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0xF60, symBinAddr: 0x161C10, symSize: 0x30 } + - { offset: 0x1EE945, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC10setupPanelyyF', symObjAddr: 0xF90, symBinAddr: 0x161C40, symSize: 0x250 } + - { offset: 0x1EEB6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC10setupPanelyyFTo', symObjAddr: 0x11E0, symBinAddr: 0x161E90, symSize: 0x30 } + - { offset: 0x1EEB99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x1210, symBinAddr: 0x161EC0, symSize: 0x210 } + - { offset: 0x1EED5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x1420, symBinAddr: 0x1620D0, symSize: 0x50 } + - { offset: 0x1EED85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x1470, symBinAddr: 0x162120, symSize: 0x10 } + - { offset: 0x1EEDB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFTf4ddn_n', symObjAddr: 0x1480, symBinAddr: 0x162130, symSize: 0x1D0 } + - { offset: 0x1EEFD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0_15didSelectItemAtySo012UICollectionE0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x1740, symBinAddr: 0x1623B0, symSize: 0x1E0 } + - { offset: 0x1EF2A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TagDisplayTypeOSgSaySiGIegyg_SgWOy', symObjAddr: 0x19D0, symBinAddr: 0x162590, symSize: 0x14 } + - { offset: 0x1EF320, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0So012UICollectionE0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x160CB0, symSize: 0x20 } + - { offset: 0x1EF380, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC010collectionE0So012UICollectionE0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x160CD0, symSize: 0x20 } + - { offset: 0x1EF3D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC09separatorE0So6UIViewCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x160CF0, symSize: 0x20 } + - { offset: 0x1EF42D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC09separatorE0So6UIViewCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x160D10, symSize: 0x20 } + - { offset: 0x1EF480, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC8tagTitleSo7UILabelCSgvgTo', symObjAddr: 0x80, symBinAddr: 0x160D30, symSize: 0x20 } + - { offset: 0x1EF4DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC8tagTitleSo7UILabelCSgvsTo', symObjAddr: 0xA0, symBinAddr: 0x160D50, symSize: 0x20 } + - { offset: 0x1EF5BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC11viewDidLoadyyF', symObjAddr: 0xC0, symBinAddr: 0x160D70, symSize: 0x2D0 } + - { offset: 0x1EF7A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x390, symBinAddr: 0x161040, symSize: 0x30 } + - { offset: 0x1EF7EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0x3C0, symBinAddr: 0x161070, symSize: 0x90 } + - { offset: 0x1EF855, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC11applyFilteryySo8UIButtonCFTo', symObjAddr: 0x450, symBinAddr: 0x161100, symSize: 0x50 } + - { offset: 0x1EF893, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC5closeyySo8UIButtonCFTo', symObjAddr: 0x4A0, symBinAddr: 0x161150, symSize: 0x40 } + - { offset: 0x1EF8BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x4E0, symBinAddr: 0x161190, symSize: 0x100 } + - { offset: 0x1EF8FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x5E0, symBinAddr: 0x161290, symSize: 0x50 } + - { offset: 0x1EF946, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x630, symBinAddr: 0x1612E0, symSize: 0xF0 } + - { offset: 0x1EF979, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x720, symBinAddr: 0x1613D0, symSize: 0x30 } + - { offset: 0x1EF98D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerCfD', symObjAddr: 0x7C0, symBinAddr: 0x161470, symSize: 0x30 } + - { offset: 0x1EFC5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18TagsViewControllerC11applyFilteryySo8UIButtonCFTf4dn_n', symObjAddr: 0x1690, symBinAddr: 0x162300, symSize: 0xB0 } + - { offset: 0x1F008F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVMa', symObjAddr: 0x0, symBinAddr: 0x1625B0, symSize: 0x10 } + - { offset: 0x1F0109, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVMa', symObjAddr: 0x0, symBinAddr: 0x1625B0, symSize: 0x10 } + - { offset: 0x1F0128, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVAcA0B8ProtocolAAWl', symObjAddr: 0x2A0, symBinAddr: 0x162820, symSize: 0x30 } + - { offset: 0x1F014A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVs010TextOutputF0AAsADP5_lockyyFTW', symObjAddr: 0x10, symBinAddr: 0x1625C0, symSize: 0x10 } + - { offset: 0x1F0166, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVs010TextOutputF0AAsADP7_unlockyyFTW', symObjAddr: 0x20, symBinAddr: 0x1625D0, symSize: 0x10 } + - { offset: 0x1F0182, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVs010TextOutputF0AAsADP11_writeASCIIyySRys5UInt8VGFTW', symObjAddr: 0x40, symBinAddr: 0x1625F0, symSize: 0x10 } + - { offset: 0x1F01AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamVs010TextOutputF0AAsADP5writeyySSFTW', symObjAddr: 0x30, symBinAddr: 0x1625E0, symSize: 0x10 } + - { offset: 0x1F01ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19StandardErrorStreamV5writeyySSFTf4nd_n', symObjAddr: 0x50, symBinAddr: 0x162600, symSize: 0x220 } + - { offset: 0x1F05D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC21tableHeightConstraintSo08NSLayoutK0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x162850, symSize: 0x20 } + - { offset: 0x1F0979, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC09calculateF6HeightyyF', symObjAddr: 0x3D0, symBinAddr: 0x162C20, symSize: 0x5B0 } + - { offset: 0x1F0D2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellCfETo', symObjAddr: 0xC50, symBinAddr: 0x1634A0, symSize: 0x70 } + - { offset: 0x1F0D5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellCMa', symObjAddr: 0xCC0, symBinAddr: 0x163510, symSize: 0x20 } + - { offset: 0x1F0D7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0xCE0, symBinAddr: 0x163530, symSize: 0x20 } + - { offset: 0x1F0E01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0_12cellForRowAtSo07UITablegH0CSo0nG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xD00, symBinAddr: 0x163550, symSize: 0x130 } + - { offset: 0x1F0E8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0_21numberOfRowsInSectionSiSo07UITableG0C_SitFTf4ddn_n', symObjAddr: 0xE90, symBinAddr: 0x163680, symSize: 0x50 } + - { offset: 0x1F0FAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC12awakeFromNibyyFyycfU_TA', symObjAddr: 0xF30, symBinAddr: 0x1636F0, symSize: 0x10 } + - { offset: 0x1F1215, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC21tableHeightConstraintSo08NSLayoutK0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x162850, symSize: 0x20 } + - { offset: 0x1F1275, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC21tableHeightConstraintSo08NSLayoutK0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x162870, symSize: 0x20 } + - { offset: 0x1F12C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0So07UITableG0CSgvgTo', symObjAddr: 0x40, symBinAddr: 0x162890, symSize: 0x20 } + - { offset: 0x1F1322, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC05tableG0So07UITableG0CSgvsTo', symObjAddr: 0x60, symBinAddr: 0x1628B0, symSize: 0x20 } + - { offset: 0x1F1375, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC08showMoreG0AA06HapticG0CSgvgTo', symObjAddr: 0x80, symBinAddr: 0x1628D0, symSize: 0x20 } + - { offset: 0x1F13CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC08showMoreG0AA06HapticG0CSgvsTo', symObjAddr: 0xA0, symBinAddr: 0x1628F0, symSize: 0x20 } + - { offset: 0x1F1459, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC12awakeFromNibyyF', symObjAddr: 0xC0, symBinAddr: 0x162910, symSize: 0x140 } + - { offset: 0x1F1537, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC12awakeFromNibyyFyycfU_', symObjAddr: 0x200, symBinAddr: 0x162A50, symSize: 0xD0 } + - { offset: 0x1F1653, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC12awakeFromNibyyFTo', symObjAddr: 0x2D0, symBinAddr: 0x162B20, symSize: 0x30 } + - { offset: 0x1F16A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC7setData4dataySayAA0D0VG_tF', symObjAddr: 0x300, symBinAddr: 0x162B50, symSize: 0xD0 } + - { offset: 0x1F18BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0x980, symBinAddr: 0x1631D0, symSize: 0x50 } + - { offset: 0x1F190E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC5style15reuseIdentifierACSo07UITablegH5StyleV_SSSgtcfc', symObjAddr: 0x9D0, symBinAddr: 0x163220, symSize: 0x100 } + - { offset: 0x1F194F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC5style15reuseIdentifierACSo07UITablegH5StyleV_SSSgtcfcTo', symObjAddr: 0xAD0, symBinAddr: 0x163320, symSize: 0x30 } + - { offset: 0x1F1987, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB00, symBinAddr: 0x163350, symSize: 0xF0 } + - { offset: 0x1F19BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xBF0, symBinAddr: 0x163440, symSize: 0x30 } + - { offset: 0x1F19CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28AmenitiesDetailTableViewCellCfD', symObjAddr: 0xC20, symBinAddr: 0x163470, symSize: 0x30 } + - { offset: 0x1F1DBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC15_sharedInstance33_64A15AA8C9CFE359AAD8CEAC1C476F6DLLACSgvpZ', symObjAddr: 0x1E30, symBinAddr: 0x3A08A8, symSize: 0x0 } + - { offset: 0x1F1FBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageCMa', symObjAddr: 0x1050, symBinAddr: 0x164720, symSize: 0x20 } + - { offset: 0x1F2028, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV8getImage10completionyySo7UIImageCc_tFyAGSgcfU_TA', symObjAddr: 0x1900, symBinAddr: 0x164F90, symSize: 0x20 } + - { offset: 0x1F203C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctFyyYbcfU_TA', symObjAddr: 0x1AD0, symBinAddr: 0x1650B0, symSize: 0x90 } + - { offset: 0x1F2050, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1B60, symBinAddr: 0x165140, symSize: 0x20 } + - { offset: 0x1F2064, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1B80, symBinAddr: 0x165160, symSize: 0x10 } + - { offset: 0x1F2078, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctFyyYbcfU_ytSgyXEfU0_TA', symObjAddr: 0x1C10, symBinAddr: 0x165170, symSize: 0x20 } + - { offset: 0x1F208C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtFyyXEfU_TA', symObjAddr: 0x1D20, symBinAddr: 0x1651E0, symSize: 0x20 } + - { offset: 0x1F20A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtFyyScMYccfU0_TA', symObjAddr: 0x1D70, symBinAddr: 0x165230, symSize: 0x20 } + - { offset: 0x1F20BF, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageCSgIegg_ACytIegnr_TRTA', symObjAddr: 0x1D90, symBinAddr: 0x165250, symSize: 0x20 } + - { offset: 0x1F2387, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctFyyYbcfU_', symObjAddr: 0x30, symBinAddr: 0x163700, symSize: 0x750 } + - { offset: 0x1F2512, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctFyyYbcfU_ytSgyXEfU0_', symObjAddr: 0x780, symBinAddr: 0x163E50, symSize: 0x390 } + - { offset: 0x1F2777, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtF', symObjAddr: 0xB10, symBinAddr: 0x1641E0, symSize: 0x2C0 } + - { offset: 0x1F27FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtFyyXEfU_', symObjAddr: 0xDD0, symBinAddr: 0x1644A0, symSize: 0x190 } + - { offset: 0x1F28C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC19downloadDidComplete33_64A15AA8C9CFE359AAD8CEAC1C476F6DLL3for4withySS_So7UIImageCSgtFyyScMYccfU0_', symObjAddr: 0xF60, symBinAddr: 0x164630, symSize: 0xB0 } + - { offset: 0x1F2A4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageCfD', symObjAddr: 0x1010, symBinAddr: 0x1646E0, symSize: 0x40 } + - { offset: 0x1F2AF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ImageStorageC03getD04from4size10completiony10Foundation3URLVSg_So6CGSizeVySo7UIImageCSgctF03$s8ab41UI10LiveObjectV8getImage10completionyySo7M14Cc_tFyAGSgcfU_AOIegg_Tf1nncn_nTf4nnng_n', symObjAddr: 0x1070, symBinAddr: 0x164740, symSize: 0x830 } + - { offset: 0x1F309C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x1652E0, symSize: 0x70 } + - { offset: 0x1F3131, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCfE', symObjAddr: 0x70, symBinAddr: 0x165350, symSize: 0x40 } + - { offset: 0x1F3160, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCMU', symObjAddr: 0x110, symBinAddr: 0x1653F0, symSize: 0x10 } + - { offset: 0x1F3174, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCMa', symObjAddr: 0x120, symBinAddr: 0x165400, symSize: 0x30 } + - { offset: 0x1F3188, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCMr', symObjAddr: 0x150, symBinAddr: 0x165430, symSize: 0xA0 } + - { offset: 0x1F319C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOMa', symObjAddr: 0x3E0, symBinAddr: 0x1654D0, symSize: 0x10 } + - { offset: 0x1F31B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVwet', symObjAddr: 0x410, symBinAddr: 0x1654E0, symSize: 0x50 } + - { offset: 0x1F31C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVwst', symObjAddr: 0x460, symBinAddr: 0x165530, symSize: 0x50 } + - { offset: 0x1F31D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVMa', symObjAddr: 0x4B0, symBinAddr: 0x165580, symSize: 0x10 } + - { offset: 0x1F31FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x4C0, symBinAddr: 0x165590, symSize: 0x10 } + - { offset: 0x1F32B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSHAASQWb', symObjAddr: 0x790, symBinAddr: 0x165860, symSize: 0x10 } + - { offset: 0x1F32C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOAGSQAAWl', symObjAddr: 0x7A0, symBinAddr: 0x165870, symSize: 0x30 } + - { offset: 0x1F32DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x7D0, symBinAddr: 0x1658A0, symSize: 0x160 } + - { offset: 0x1F3372, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x4D0, symBinAddr: 0x1655A0, symSize: 0xA0 } + - { offset: 0x1F342D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSHAASH9hashValueSivgTW', symObjAddr: 0x570, symBinAddr: 0x165640, symSize: 0x80 } + - { offset: 0x1F34AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x5F0, symBinAddr: 0x1656C0, symSize: 0x60 } + - { offset: 0x1F34ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x650, symBinAddr: 0x165720, symSize: 0x80 } + - { offset: 0x1F357D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC4StopVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x1652E0, symSize: 0x70 } + - { offset: 0x1F35E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientCfD', symObjAddr: 0xB0, symBinAddr: 0x165390, symSize: 0x60 } + - { offset: 0x1F364B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0x6D0, symBinAddr: 0x1657A0, symSize: 0x70 } + - { offset: 0x1F3698, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14LinearGradientC5UnitsOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0x740, symBinAddr: 0x165810, symSize: 0x50 } + - { offset: 0x1F3A2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x165A00, symSize: 0x20 } + - { offset: 0x1F422E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewCfETo', symObjAddr: 0xDE0, symBinAddr: 0x1667E0, symSize: 0xC0 } + - { offset: 0x1F425D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewCMa', symObjAddr: 0xEA0, symBinAddr: 0x1668A0, symSize: 0x20 } + - { offset: 0x1F42CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x165A00, symSize: 0x20 } + - { offset: 0x1F432D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC07contentE0So6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x165A20, symSize: 0x30 } + - { offset: 0x1F437C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC16destinationLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x165A50, symSize: 0x20 } + - { offset: 0x1F43D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC16destinationLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x165A70, symSize: 0x30 } + - { offset: 0x1F4423, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC17destinationLetterSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x165AA0, symSize: 0x20 } + - { offset: 0x1F4476, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC17destinationLetterSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x165AC0, symSize: 0x30 } + - { offset: 0x1F44C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC027currentInstructionContainerE0So6UIViewCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x165AF0, symSize: 0x20 } + - { offset: 0x1F4518, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC027currentInstructionContainerE0So6UIViewCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x165B10, symSize: 0x30 } + - { offset: 0x1F4567, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC23currentInstructionLabelSo7UILabelCSgvgTo', symObjAddr: 0x140, symBinAddr: 0x165B40, symSize: 0x20 } + - { offset: 0x1F45BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC23currentInstructionLabelSo7UILabelCSgvsTo', symObjAddr: 0x160, symBinAddr: 0x165B60, symSize: 0x30 } + - { offset: 0x1F4609, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC023currentInstructionImageE0So07UIImageE0CSgvgTo', symObjAddr: 0x190, symBinAddr: 0x165B90, symSize: 0x20 } + - { offset: 0x1F4661, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC023currentInstructionImageE0So07UIImageE0CSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x165BB0, symSize: 0x30 } + - { offset: 0x1F46B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22remainingDistanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0x165BE0, symSize: 0x20 } + - { offset: 0x1F4703, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22remainingDistanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x200, symBinAddr: 0x165C00, symSize: 0x30 } + - { offset: 0x1F4752, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC024nextInstructionContainerE0So6UIViewCSgvgTo', symObjAddr: 0x230, symBinAddr: 0x165C30, symSize: 0x20 } + - { offset: 0x1F47A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC024nextInstructionContainerE0So6UIViewCSgvsTo', symObjAddr: 0x250, symBinAddr: 0x165C50, symSize: 0x30 } + - { offset: 0x1F47F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC020nextInstructionImageE0So07UIImageE0CSgvgTo', symObjAddr: 0x280, symBinAddr: 0x165C80, symSize: 0x20 } + - { offset: 0x1F4847, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC020nextInstructionImageE0So07UIImageE0CSgvsTo', symObjAddr: 0x2A0, symBinAddr: 0x165CA0, symSize: 0x30 } + - { offset: 0x1F4896, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22topFloorIndicatorLabelSo7UILabelCSgvgTo', symObjAddr: 0x2D0, symBinAddr: 0x165CD0, symSize: 0x20 } + - { offset: 0x1F48E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC22topFloorIndicatorLabelSo7UILabelCSgvsTo', symObjAddr: 0x2F0, symBinAddr: 0x165CF0, symSize: 0x30 } + - { offset: 0x1F4938, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC25bottomFloorIndicatorLabelSo7UILabelCSgvgTo', symObjAddr: 0x320, symBinAddr: 0x165D20, symSize: 0x20 } + - { offset: 0x1F498B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC25bottomFloorIndicatorLabelSo7UILabelCSgvsTo', symObjAddr: 0x340, symBinAddr: 0x165D40, symSize: 0x30 } + - { offset: 0x1F49C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x370, symBinAddr: 0x165D70, symSize: 0x150 } + - { offset: 0x1F49FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x4C0, symBinAddr: 0x165EC0, symSize: 0x30 } + - { offset: 0x1F4A5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x4F0, symBinAddr: 0x165EF0, symSize: 0x120 } + - { offset: 0x1F4A93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x610, symBinAddr: 0x166010, symSize: 0x30 } + - { offset: 0x1F4B0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC10commonInit33_186C74DDBAE18BF1C3F293BBFBA9D952LLyyF', symObjAddr: 0x640, symBinAddr: 0x166040, symSize: 0x210 } + - { offset: 0x1F4CFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewC14setDestinationyyAA5PlaceCSgF', symObjAddr: 0x850, symBinAddr: 0x166250, symSize: 0x560 } + - { offset: 0x1F5206, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16InstructionsViewCfD', symObjAddr: 0xDB0, symBinAddr: 0x1667B0, symSize: 0x30 } + - { offset: 0x1F558D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationV7baseURL11serviceName8clientId0J3Key06campusK0ACSS_S3SSiSgtcfC', symObjAddr: 0x0, symBinAddr: 0x1668C0, symSize: 0x40 } + - { offset: 0x1F55DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwxx', symObjAddr: 0x70, symBinAddr: 0x166900, symSize: 0x40 } + - { offset: 0x1F55F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwcp', symObjAddr: 0xB0, symBinAddr: 0x166940, symSize: 0x90 } + - { offset: 0x1F5604, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwca', symObjAddr: 0x140, symBinAddr: 0x1669D0, symSize: 0xB0 } + - { offset: 0x1F5618, size: 0x8, addend: 0x0, symName: ___swift_memcpy73_8, symObjAddr: 0x1F0, symBinAddr: 0x166A80, symSize: 0x30 } + - { offset: 0x1F562C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwta', symObjAddr: 0x220, symBinAddr: 0x166AB0, symSize: 0x90 } + - { offset: 0x1F5640, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwet', symObjAddr: 0x2B0, symBinAddr: 0x166B40, symSize: 0x40 } + - { offset: 0x1F5654, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVwst', symObjAddr: 0x2F0, symBinAddr: 0x166B80, symSize: 0x50 } + - { offset: 0x1F5668, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVMa', symObjAddr: 0x340, symBinAddr: 0x166BD0, symSize: 0xA } + - { offset: 0x1F56B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationV7baseURL11serviceName8clientId0J3Key06campusK0ACSS_S3SSiSgtcfC', symObjAddr: 0x0, symBinAddr: 0x1668C0, symSize: 0x40 } + - { offset: 0x1F5AA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x166BE0, symSize: 0x20 } + - { offset: 0x1F5C11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewCfETo', symObjAddr: 0x2F0, symBinAddr: 0x166ED0, symSize: 0x20 } + - { offset: 0x1F5C40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewCMa', symObjAddr: 0x310, symBinAddr: 0x166EF0, symSize: 0x20 } + - { offset: 0x1F5CC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x166BE0, symSize: 0x20 } + - { offset: 0x1F5D24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC07contentE0So6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x166C00, symSize: 0x30 } + - { offset: 0x1F5D84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x50, symBinAddr: 0x166C30, symSize: 0x90 } + - { offset: 0x1F5E25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xE0, symBinAddr: 0x166CC0, symSize: 0x90 } + - { offset: 0x1F5E85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewC10commonInit33_DB4F7BE1755D04AFBF1EE63777EB3A0ALLyyF', symObjAddr: 0x170, symBinAddr: 0x166D50, symSize: 0x150 } + - { offset: 0x1F5F4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ReroutingViewCfD', symObjAddr: 0x2C0, symBinAddr: 0x166EA0, symSize: 0x30 } + - { offset: 0x1F62D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC12createEngine33_11376204CEA7C09CC43961F62E014BCBLLyyF', symObjAddr: 0x0, symBinAddr: 0x166F10, symSize: 0x1A0 } + - { offset: 0x1F640C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerCMa', symObjAddr: 0x5E0, symBinAddr: 0x1674F0, symSize: 0x20 } + - { offset: 0x1F6420, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC12createEngine33_11376204CEA7C09CC43961F62E014BCBLLyyFyycfU_TA', symObjAddr: 0x600, symBinAddr: 0x167510, symSize: 0x10 } + - { offset: 0x1F6434, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x610, symBinAddr: 0x167520, symSize: 0x20 } + - { offset: 0x1F6448, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x630, symBinAddr: 0x167540, symSize: 0xE } + - { offset: 0x1F6463, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC12createEngine33_11376204CEA7C09CC43961F62E014BCBLLyyF', symObjAddr: 0x0, symBinAddr: 0x166F10, symSize: 0x1A0 } + - { offset: 0x1F64D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC12createEngine33_11376204CEA7C09CC43961F62E014BCBLLyyFyycfU_', symObjAddr: 0x1A0, symBinAddr: 0x1670B0, symSize: 0xC0 } + - { offset: 0x1F65BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerC04playD4File33_11376204CEA7C09CC43961F62E014BCBLL8fileNameySS_tF', symObjAddr: 0x260, symBinAddr: 0x167170, symSize: 0x350 } + - { offset: 0x1F6672, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13HapticManagerCfD', symObjAddr: 0x5B0, symBinAddr: 0x1674C0, symSize: 0x30 } + - { offset: 0x1F6A5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x167550, symSize: 0x90 } + - { offset: 0x1F6B72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonCfETo', symObjAddr: 0x380, symBinAddr: 0x1678D0, symSize: 0x20 } + - { offset: 0x1F6BA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonCMa', symObjAddr: 0x3A0, symBinAddr: 0x1678F0, symSize: 0x14 } + - { offset: 0x1F6BE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x167550, symSize: 0x90 } + - { offset: 0x1F6C8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x90, symBinAddr: 0x1675E0, symSize: 0x90 } + - { offset: 0x1F6D89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonC05setupD9Indicator33_72C2D151F8AD46D59A57D53E2C1FBE11LLyyF', symObjAddr: 0x120, symBinAddr: 0x167670, symSize: 0x230 } + - { offset: 0x1F6EA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13LoadingButtonCfD', symObjAddr: 0x350, symBinAddr: 0x1678A0, symSize: 0x30 } + - { offset: 0x1F78CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperCfETo', symObjAddr: 0x1FE0, symBinAddr: 0x1698F0, symSize: 0xB0 } + - { offset: 0x1F78FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperCMa', symObjAddr: 0x2090, symBinAddr: 0x1699A0, symSize: 0x20 } + - { offset: 0x1F7BB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10venueLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x167910, symSize: 0x20 } + - { offset: 0x1F7C14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10venueLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x167930, symSize: 0x30 } + - { offset: 0x1F7C63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x167960, symSize: 0x20 } + - { offset: 0x1F7CB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x167980, symSize: 0x30 } + - { offset: 0x1F7D05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC11contentViewSo6UIViewCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x1679B0, symSize: 0x20 } + - { offset: 0x1F7D5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC11contentViewSo6UIViewCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x1679D0, symSize: 0x30 } + - { offset: 0x1F7DAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10nextButtonSo8UIButtonCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x167A00, symSize: 0x20 } + - { offset: 0x1F7E04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC10nextButtonSo8UIButtonCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x167A20, symSize: 0x30 } + - { offset: 0x1F7E53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC18nextSeparatorWidthSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x140, symBinAddr: 0x167A50, symSize: 0x20 } + - { offset: 0x1F7EAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC18nextSeparatorWidthSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x160, symBinAddr: 0x167A70, symSize: 0x30 } + - { offset: 0x1F7EFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC14previousButtonSo8UIButtonCSgvgTo', symObjAddr: 0x190, symBinAddr: 0x167AA0, symSize: 0x20 } + - { offset: 0x1F7F4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC14previousButtonSo8UIButtonCSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x167AC0, symSize: 0x30 } + - { offset: 0x1F7F9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC22previousSeparatorWidthSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0x167AF0, symSize: 0x20 } + - { offset: 0x1F7FEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC22previousSeparatorWidthSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x200, symBinAddr: 0x167B10, symSize: 0x30 } + - { offset: 0x1F803E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC15labelsStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0x230, symBinAddr: 0x167B40, symSize: 0x20 } + - { offset: 0x1F8096, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC15labelsStackViewSo07UIStackH0CSgvsTo', symObjAddr: 0x250, symBinAddr: 0x167B60, symSize: 0x30 } + - { offset: 0x1F80D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC5frameACSo6CGRectV_tcfc', symObjAddr: 0x280, symBinAddr: 0x167B90, symSize: 0x140 } + - { offset: 0x1F8106, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x3C0, symBinAddr: 0x167CD0, symSize: 0x30 } + - { offset: 0x1F8169, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3F0, symBinAddr: 0x167D00, symSize: 0x110 } + - { offset: 0x1F819E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x500, symBinAddr: 0x167E10, symSize: 0x30 } + - { offset: 0x1F8217, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC9setupView33_B3F52FF1C7EB23C753FCB37EDFA4BFF4LLyyF', symObjAddr: 0x530, symBinAddr: 0x167E40, symSize: 0x6C0 } + - { offset: 0x1F86C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC12updateLabelsyyF', symObjAddr: 0xBF0, symBinAddr: 0x168500, symSize: 0xD50 } + - { offset: 0x1F91EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperC13updateButtonsyyF', symObjAddr: 0x1940, symBinAddr: 0x169250, symSize: 0x490 } + - { offset: 0x1F9590, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15SubpathsStepperCfD', symObjAddr: 0x1FB0, symBinAddr: 0x1698C0, symSize: 0x30 } + - { offset: 0x1F9F96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellCfETo', symObjAddr: 0x1600, symBinAddr: 0x16AFA0, symSize: 0xE0 } + - { offset: 0x1F9FC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellCMa', symObjAddr: 0x16E0, symBinAddr: 0x16B080, symSize: 0x20 } + - { offset: 0x1FA003, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_21numberOfRowsInSectionSiSo07UITableH0C_SitFTo', symObjAddr: 0x1700, symBinAddr: 0x16B0A0, symSize: 0x40 } + - { offset: 0x1FA12A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_12cellForRowAtSo07UITablehF0CSo0mH0C_10Foundation9IndexPathVtF', symObjAddr: 0x1740, symBinAddr: 0x16B0E0, symSize: 0x240 } + - { offset: 0x1FA354, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_12cellForRowAtSo07UITablehF0CSo0mH0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1980, symBinAddr: 0x16B320, symSize: 0xB0 } + - { offset: 0x1FA37F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_14didSelectRowAtySo07UITableH0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1A30, symBinAddr: 0x16B3D0, symSize: 0xA0 } + - { offset: 0x1FA3B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableH0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x1AD0, symBinAddr: 0x16B470, symSize: 0x60 } + - { offset: 0x1FA406, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9tableView_14didSelectRowAtySo07UITableH0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x1B30, symBinAddr: 0x16B4D0, symSize: 0x120 } + - { offset: 0x1FA590, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC08setUIForE033_06DAFF211FBCAE864BD7FDDCE90583D9LL5venuey7Penguin0E0C_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x1D10, symBinAddr: 0x16B640, symSize: 0x20 } + - { offset: 0x1FA5A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSgWOc', symObjAddr: 0x1D30, symBinAddr: 0x16B660, symSize: 0x40 } + - { offset: 0x1FA8D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC25tableViewBottomConstraintSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x20, symBinAddr: 0x1699C0, symSize: 0x20 } + - { offset: 0x1FA934, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC25tableViewBottomConstraintSo08NSLayoutJ0CSgvsTo', symObjAddr: 0x40, symBinAddr: 0x1699E0, symSize: 0x30 } + - { offset: 0x1FA983, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC25tableViewHeightConstraintSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x70, symBinAddr: 0x169A10, symSize: 0x20 } + - { offset: 0x1FA9D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC25tableViewHeightConstraintSo08NSLayoutJ0CSgvsTo', symObjAddr: 0x90, symBinAddr: 0x169A30, symSize: 0x20 } + - { offset: 0x1FAA2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC09connectedE5TableSo11UITableViewCSgvgTo', symObjAddr: 0xB0, symBinAddr: 0x169A50, symSize: 0x20 } + - { offset: 0x1FAA85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC09connectedE5TableSo11UITableViewCSgvsTo', symObjAddr: 0xD0, symBinAddr: 0x169A70, symSize: 0x20 } + - { offset: 0x1FAAD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC15floorCountLabelSo7UILabelCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x169A90, symSize: 0x20 } + - { offset: 0x1FAB32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC15floorCountLabelSo7UILabelCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x169AB0, symSize: 0x20 } + - { offset: 0x1FAB85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9venueNameSo7UILabelCSgvgTo', symObjAddr: 0x130, symBinAddr: 0x169AD0, symSize: 0x20 } + - { offset: 0x1FABDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9venueNameSo7UILabelCSgvsTo', symObjAddr: 0x150, symBinAddr: 0x169AF0, symSize: 0x20 } + - { offset: 0x1FAC2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC10venueImageSo11UIImageViewCSgvgTo', symObjAddr: 0x170, symBinAddr: 0x169B10, symSize: 0x20 } + - { offset: 0x1FAC87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC10venueImageSo11UIImageViewCSgvsTo', symObjAddr: 0x190, symBinAddr: 0x169B30, symSize: 0x20 } + - { offset: 0x1FACDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC12toggleButtonSo8UIButtonCSgvgTo', symObjAddr: 0x1B0, symBinAddr: 0x169B50, symSize: 0x20 } + - { offset: 0x1FAD34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC12toggleButtonSo8UIButtonCSgvsTo', symObjAddr: 0x1D0, symBinAddr: 0x169B70, symSize: 0x20 } + - { offset: 0x1FAD87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC14imageContainerSo6UIViewCSgvgTo', symObjAddr: 0x1F0, symBinAddr: 0x169B90, symSize: 0x20 } + - { offset: 0x1FADE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC14imageContainerSo6UIViewCSgvsTo', symObjAddr: 0x210, symBinAddr: 0x169BB0, symSize: 0x20 } + - { offset: 0x1FAE34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9separatorSo6UIViewCSgvgTo', symObjAddr: 0x230, symBinAddr: 0x169BD0, symSize: 0x20 } + - { offset: 0x1FAE87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC9separatorSo6UIViewCSgvsTo', symObjAddr: 0x250, symBinAddr: 0x169BF0, symSize: 0x30 } + - { offset: 0x1FAED6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC12awakeFromNibyyFTo', symObjAddr: 0x280, symBinAddr: 0x169C20, symSize: 0x70 } + - { offset: 0x1FAF51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC14configureTableyyF', symObjAddr: 0x2F0, symBinAddr: 0x169C90, symSize: 0x410 } + - { offset: 0x1FB119, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC03sete5ImageC0yyF', symObjAddr: 0x700, symBinAddr: 0x16A0A0, symSize: 0x3E0 } + - { offset: 0x1FB2D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC08setUIForE033_06DAFF211FBCAE864BD7FDDCE90583D9LL5venuey7Penguin0E0C_tF', symObjAddr: 0xAE0, symBinAddr: 0x16A480, symSize: 0x510 } + - { offset: 0x1FB4EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC08setUIForE033_06DAFF211FBCAE864BD7FDDCE90583D9LL5venuey7Penguin0E0C_tFySo7UIImageCSgcfU_', symObjAddr: 0xFF0, symBinAddr: 0x16A990, symSize: 0x1D0 } + - { offset: 0x1FB5F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC13toggleSectionyyF', symObjAddr: 0x11C0, symBinAddr: 0x16AB60, symSize: 0x90 } + - { offset: 0x1FB688, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC13toggleSectionyyFTo', symObjAddr: 0x1250, symBinAddr: 0x16ABF0, symSize: 0x30 } + - { offset: 0x1FB69C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x1280, symBinAddr: 0x16AC20, symSize: 0x180 } + - { offset: 0x1FB6DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x1400, symBinAddr: 0x16ADA0, symSize: 0x30 } + - { offset: 0x1FB715, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1430, symBinAddr: 0x16ADD0, symSize: 0x170 } + - { offset: 0x1FB748, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x15A0, symBinAddr: 0x16AF40, symSize: 0x30 } + - { offset: 0x1FB75C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ConnectedVenueCellCfD', symObjAddr: 0x15D0, symBinAddr: 0x16AF70, symSize: 0x30 } + - { offset: 0x1FBBB8, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE21makeBoundsLayoutGuideSo08UILayoutH0CyF', symObjAddr: 0x0, symBinAddr: 0x16B6A0, symSize: 0x2A0 } + - { offset: 0x1FBD88, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE21makeBoundsLayoutGuideSo08UILayoutH0CyF', symObjAddr: 0x0, symBinAddr: 0x16B6A0, symSize: 0x2A0 } + - { offset: 0x1FBE4D, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE7asImage15backgroundColor06borderH00I5WidthSo7UIImageCSgSo7UIColorCSg_AM12CoreGraphics7CGFloatVtF', symObjAddr: 0x2A0, symBinAddr: 0x16B940, symSize: 0x2C0 } + - { offset: 0x1FBF7B, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE21makeBoundsLayoutGuide12bottomAnchorSo08UILayoutH0C12CoreGraphics7CGFloatV_tF', symObjAddr: 0x560, symBinAddr: 0x16BC00, symSize: 0x2F0 } + - { offset: 0x1FC050, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15continuosCornerSbvgTo', symObjAddr: 0x850, symBinAddr: 0x16BEF0, symSize: 0x10 } + - { offset: 0x1FC096, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15continuosCornerSbvsTo', symObjAddr: 0x860, symBinAddr: 0x16BF00, symSize: 0x70 } + - { offset: 0x1FC0D5, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x8D0, symBinAddr: 0x16BF70, symSize: 0x10 } + - { offset: 0x1FC0F1, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15colorIdentifierSivsTo', symObjAddr: 0x8E0, symBinAddr: 0x16BF80, symSize: 0x30 } + - { offset: 0x1FC129, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE15colorIdentifierSivs', symObjAddr: 0x910, symBinAddr: 0x16BFB0, symSize: 0x110 } + - { offset: 0x1FC1D5, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE18showSkeletonLoaderyyF', symObjAddr: 0xA20, symBinAddr: 0x16C0C0, symSize: 0x3E0 } + - { offset: 0x1FC2B1, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE20removeSkeletonLoaderyyF', symObjAddr: 0xE00, symBinAddr: 0x16C4A0, symSize: 0x270 } + - { offset: 0x1FCA99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x0, symBinAddr: 0x16C710, symSize: 0x170 } + - { offset: 0x1FCC88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewCfETo', symObjAddr: 0xDF0, symBinAddr: 0x16D500, symSize: 0x50 } + - { offset: 0x1FCCB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewCMa', symObjAddr: 0xE40, symBinAddr: 0x16D550, symSize: 0x14 } + - { offset: 0x1FCD2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x0, symBinAddr: 0x16C710, symSize: 0x170 } + - { offset: 0x1FCD9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x170, symBinAddr: 0x16C880, symSize: 0x30 } + - { offset: 0x1FCE05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC14layoutSubviewsyyF', symObjAddr: 0x1A0, symBinAddr: 0x16C8B0, symSize: 0x110 } + - { offset: 0x1FCEE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC14layoutSubviewsyyFTo', symObjAddr: 0x2B0, symBinAddr: 0x16C9C0, symSize: 0x30 } + - { offset: 0x1FCF30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC4drawyySo6CGRectVF', symObjAddr: 0x2E0, symBinAddr: 0x16C9F0, symSize: 0xA40 } + - { offset: 0x1FD272, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC4drawyySo6CGRectVFTo', symObjAddr: 0xD20, symBinAddr: 0x16D430, symSize: 0x70 } + - { offset: 0x1FD2A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xD90, symBinAddr: 0x16D4A0, symSize: 0x30 } + - { offset: 0x1FD308, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SelectedPlaceViewCfD', symObjAddr: 0xDC0, symBinAddr: 0x16D4D0, symSize: 0x30 } + - { offset: 0x1FD6E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseStringySSSgSSKFAA9XMLParserV10AttributesC_Tg5', symObjAddr: 0x0, symBinAddr: 0x16D570, symSize: 0xB0 } + - { offset: 0x1FD748, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseStringySSSgSSKFAA9XMLParserV10AttributesC_Tg5', symObjAddr: 0x0, symBinAddr: 0x16D570, symSize: 0xB0 } + - { offset: 0x1FDB61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV8parseSVGyAA3DOMO0F0CAA3XMLO7ElementCKF', symObjAddr: 0xB0, symBinAddr: 0x16D620, symSize: 0xA60 } + - { offset: 0x1FE101, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseSVGDefsyAA3DOMO3SVGC4DefsVAA3XMLO7ElementCKF', symObjAddr: 0xB40, symBinAddr: 0x16E080, symSize: 0x470 } + - { offset: 0x1FE4F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseClipPathsySayAA3DOMO0F4PathVGAA3XMLO7ElementCKF', symObjAddr: 0xFB0, symBinAddr: 0x16E4F0, symSize: 0x510 } + - { offset: 0x1FEBCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10parseMasksySayAA3DOMO4MaskVGAA3XMLO7ElementCKF', symObjAddr: 0x14C0, symBinAddr: 0x16EA00, symSize: 0x4D0 } + - { offset: 0x1FF2A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV13parsePatternsySayAA3DOMO7PatternVGAA3XMLO7ElementCKF', symObjAddr: 0x1990, symBinAddr: 0x16EED0, symSize: 0x5C0 } + - { offset: 0x1FF81E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV15findDefElements6withinSayAA3XMLO7ElementCGAI_tF', symObjAddr: 0x1F50, symBinAddr: 0x16F490, symSize: 0x290 } + - { offset: 0x1FFC87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17parseDefsElementsySDySSAA3DOMO15GraphicsElementCGAA3XMLO0J0CKF', symObjAddr: 0x21E0, symBinAddr: 0x16F720, symSize: 0x380 } + - { offset: 0x1FFF5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE5parse_3expqd__SgSS_qd__SSKXEtKlFAA9XMLParserV10AttributesC_SfTg5', symObjAddr: 0x2560, symBinAddr: 0x16FAA0, symSize: 0xD0 } + - { offset: 0x200082, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParser_pAA3DOMO22PresentationAttributesVs5Error_pIegnrzo_SDyS2SGAFsAG_pIeggrzo_TR', symObjAddr: 0x2630, symBinAddr: 0x16FB70, symSize: 0x80 } + - { offset: 0x2000A1, size: 0x8, addend: 0x0, symName: '_$sxq_xq_Iegnnrr_x3key_q_5valuetx_q_tIegnr_SHRzr0_lTRSS_8PenNavUI3DOMO15GraphicsElementCTG5071$sSD5merge_16uniquingKeysWithySDyxq_Gn_q_q__q_tKXEtKFx_q_tx_q_tcfU_SS_8cd9UI3DOMO15gH4CTG5Tf3nnpf_n', symObjAddr: 0x26B0, symBinAddr: 0x16FBF0, symSize: 0x40 } + - { offset: 0x20015C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parsePercentageySfSgSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_TG5', symObjAddr: 0x26F0, symBinAddr: 0x16FC30, symSize: 0x20 } + - { offset: 0x200255, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parseCoordinateySfSgSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_TG5TA', symObjAddr: 0x2730, symBinAddr: 0x16FC50, symSize: 0x20 } + - { offset: 0x200341, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseViewBoxyAA3DOMO3SVGC0fG0VSgSSSgKFTf4nd_n', symObjAddr: 0x2750, symBinAddr: 0x16FC70, symSize: 0x350 } + - { offset: 0x20061C, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV5merge_8isUnique16uniquingKeysWithyqd__n_Sbq_q__q_tKXEtKSTRd__x_q_t7ElementRtd__lFSS_8PenNavUI3DOMO08GraphicsI0Cs15LazyMapSequenceVySDySSALGSS_ALtGTg503$s8jk54UI9XMLParserV12parseSVGDefsyAA3DOMO3SVGC4DefsVAA3XMLO7i13CKFySDySSAF08N27K0CGz_ANtKXEfU_A2P_APtXEfU_Tf1nncn_nTf4gnn_n', symObjAddr: 0x2AA0, symBinAddr: 0x16FFC0, symSize: 0x2B0 } + - { offset: 0x2007DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV22parseStyleSheetElementyAA3DOMO0fG0VSSSgKFAF22PresentationAttributesVAA15AttributeParser_pKcACcfu_AkaL_pKcfu0_TA', symObjAddr: 0x2DD0, symBinAddr: 0x170290, symSize: 0x20 } + - { offset: 0x2007F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParser_pAA3DOMO22PresentationAttributesVs5Error_pIegnrzo_SDyS2SGAFsAG_pIeggrzo_TRTA', symObjAddr: 0x2DF0, symBinAddr: 0x1702B0, symSize: 0x20 } + - { offset: 0x200859, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV9mapValuesyAByxqd__Gqd__q_KXEKlF8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGAG22PresentationAttributesVTg5010$sSDyS2SG8ef9UI3DOMO22lM35Vs5Error_pIggrzo_AaFsAG_pIegnrzo_TRAlNs0U0_pIggrzo_Tf1cn_nTf4ng_n', symObjAddr: 0x2E10, symBinAddr: 0x1702D0, symSize: 0x240 } + - { offset: 0x200925, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI3DOMO15GraphicsElementCGWOh', symObjAddr: 0x3130, symBinAddr: 0x170510, symSize: 0x30 } + - { offset: 0x201499, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientC2idAESS_tcfc', symObjAddr: 0x0, symBinAddr: 0x170950, symSize: 0xC0 } + - { offset: 0x201549, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCfE', symObjAddr: 0x130, symBinAddr: 0x170A10, symSize: 0x40 } + - { offset: 0x201578, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCMU', symObjAddr: 0x1D0, symBinAddr: 0x170AB0, symSize: 0x10 } + - { offset: 0x20158C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCMa', symObjAddr: 0x1E0, symBinAddr: 0x170AC0, symSize: 0x30 } + - { offset: 0x2015A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCMr', symObjAddr: 0x210, symBinAddr: 0x170AF0, symSize: 0xB0 } + - { offset: 0x2015B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientC4StopVMa', symObjAddr: 0x3E0, symBinAddr: 0x170BA0, symSize: 0x10 } + - { offset: 0x2015D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x3F0, symBinAddr: 0x170BB0, symSize: 0x10 } + - { offset: 0x201614, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientC2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x400, symBinAddr: 0x170BC0, symSize: 0xB0 } + - { offset: 0x20169B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientC2idAESS_tcfc', symObjAddr: 0x0, symBinAddr: 0x170950, symSize: 0xC0 } + - { offset: 0x201709, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO14RadialGradientCfD', symObjAddr: 0x170, symBinAddr: 0x170A50, symSize: 0x60 } + - { offset: 0x201B98, size: 0x8, addend: 0x0, symName: '_$sSbIegy_SbIeyBy_TR', symObjAddr: 0x0, symBinAddr: 0x170C70, symSize: 0x40 } + - { offset: 0x201F0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorCfETo', symObjAddr: 0x1050, symBinAddr: 0x171CC0, symSize: 0x50 } + - { offset: 0x201F39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorCMa', symObjAddr: 0x10A0, symBinAddr: 0x171D10, symSize: 0x20 } + - { offset: 0x201F4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC15startAnimiation8typeEdgey7Penguin0I7TypeNewO_tFySbcfU_TA', symObjAddr: 0x10F0, symBinAddr: 0x171D60, symSize: 0x10 } + - { offset: 0x201F61, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE7fadeOut_5delay10completionySd_SdySbctFyycfU_TA', symObjAddr: 0x1100, symBinAddr: 0x171D70, symSize: 0x10 } + - { offset: 0x201F75, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1110, symBinAddr: 0x171D80, symSize: 0x20 } + - { offset: 0x201F89, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1130, symBinAddr: 0x171DA0, symSize: 0x10 } + - { offset: 0x201F9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC15startAnimiation8typeEdgey7Penguin0I7TypeNewO_tFySo7NSTimerCYbcfU0_TA', symObjAddr: 0x1140, symBinAddr: 0x171DB0, symSize: 0x20 } + - { offset: 0x201FCF, size: 0x8, addend: 0x0, symName: '_$sSo6UIViewC8PenNavUIE6fadeIn_5delay10completionySd_SdySbctFyycfU_TA', symObjAddr: 0x1160, symBinAddr: 0x171DD0, symSize: 0x10 } + - { offset: 0x201FE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC10commonInityyFyyScMYccfU_TA', symObjAddr: 0x11F0, symBinAddr: 0x171DE0, symSize: 0x10 } + - { offset: 0x2020BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC2upSo11UIImageViewCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x170CB0, symSize: 0x20 } + - { offset: 0x20211A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC2upSo11UIImageViewCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x170CD0, symSize: 0x20 } + - { offset: 0x20216D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC4viewSo6UIViewCSgvgTo', symObjAddr: 0x80, symBinAddr: 0x170CF0, symSize: 0x20 } + - { offset: 0x2021C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC4viewSo6UIViewCSgvsTo', symObjAddr: 0xA0, symBinAddr: 0x170D10, symSize: 0x30 } + - { offset: 0x202214, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC14topAnchorImageSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0xD0, symBinAddr: 0x170D40, symSize: 0x20 } + - { offset: 0x20226E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC14topAnchorImageSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0xF0, symBinAddr: 0x170D60, symSize: 0x20 } + - { offset: 0x2022C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5titleSo7UILabelCSgvgTo', symObjAddr: 0x110, symBinAddr: 0x170D80, symSize: 0x20 } + - { offset: 0x20231B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5titleSo7UILabelCSgvsTo', symObjAddr: 0x130, symBinAddr: 0x170DA0, symSize: 0x20 } + - { offset: 0x20237F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x150, symBinAddr: 0x170DC0, symSize: 0xC0 } + - { offset: 0x2023AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x210, symBinAddr: 0x170E80, symSize: 0xB0 } + - { offset: 0x2023E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2C0, symBinAddr: 0x170F30, symSize: 0x30 } + - { offset: 0x202445, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC10commonInityyF', symObjAddr: 0x2F0, symBinAddr: 0x170F60, symSize: 0x320 } + - { offset: 0x2024C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC10commonInityyFyyScMYccfU_', symObjAddr: 0x610, symBinAddr: 0x171280, symSize: 0x240 } + - { offset: 0x2025EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC15startAnimiation8typeEdgey7Penguin0I7TypeNewO_tF', symObjAddr: 0x850, symBinAddr: 0x1714C0, symSize: 0x680 } + - { offset: 0x2027A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorC15startAnimiation8typeEdgey7Penguin0I7TypeNewO_tFySbcfU_', symObjAddr: 0xED0, symBinAddr: 0x171B40, symSize: 0x150 } + - { offset: 0x20286E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ChangingFloorCfD', symObjAddr: 0x1020, symBinAddr: 0x171C90, symSize: 0x30 } + - { offset: 0x202C3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC14sharedInstance33_85465E89B3ABB144AF46DA017B27447ELLACSgvpZ', symObjAddr: 0x1530, symBinAddr: 0x3A0EF8, symSize: 0x0 } + - { offset: 0x203085, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerCMa', symObjAddr: 0x11C0, symBinAddr: 0x1730B0, symSize: 0x20 } + - { offset: 0x203099, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVWOh', symObjAddr: 0x1280, symBinAddr: 0x173170, symSize: 0x30 } + - { offset: 0x2030AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF7ForEdgeyySiFySayAA13MessageDetailCGcfU_TA', symObjAddr: 0x13A0, symBinAddr: 0x1731C0, symSize: 0x10 } + - { offset: 0x2030C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF7ForEdgeyySiFySayAA13MessageDetailCGcfU_yyScMYccfU_TA', symObjAddr: 0x13F0, symBinAddr: 0x1731D0, symSize: 0x20 } + - { offset: 0x2030D5, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1410, symBinAddr: 0x1731F0, symSize: 0x20 } + - { offset: 0x2030E9, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1430, symBinAddr: 0x173210, symSize: 0x10 } + - { offset: 0x2030FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF8ForFlooryySiFySayAA13MessageDetailCGcfU_TA', symObjAddr: 0x14C0, symBinAddr: 0x173220, symSize: 0x10 } + - { offset: 0x203111, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF8ForFlooryySiFySayAA13MessageDetailCGcfU_yyScMYccfU_TA', symObjAddr: 0x14D0, symBinAddr: 0x173230, symSize: 0x20 } + - { offset: 0x2032C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF8ForFlooryySiF', symObjAddr: 0x20, symBinAddr: 0x171F10, symSize: 0x1B0 } + - { offset: 0x2033E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF8ForFlooryySiFySayAA13MessageDetailCGcfU_', symObjAddr: 0x1D0, symBinAddr: 0x1720C0, symSize: 0x240 } + - { offset: 0x20349A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC011handleFloorF033_85465E89B3ABB144AF46DA017B27447ELLyyF', symObjAddr: 0x410, symBinAddr: 0x172300, symSize: 0x340 } + - { offset: 0x2039FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF7ForEdgeyySiF', symObjAddr: 0x750, symBinAddr: 0x172640, symSize: 0x170 } + - { offset: 0x203B18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC04loadF7ForEdgeyySiFySayAA13MessageDetailCGcfU_', symObjAddr: 0x8C0, symBinAddr: 0x1727B0, symSize: 0x240 } + - { offset: 0x203B7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC06handleF7ForEdge33_85465E89B3ABB144AF46DA017B27447ELLyyF', symObjAddr: 0xB50, symBinAddr: 0x172A40, symSize: 0x340 } + - { offset: 0x204160, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC20handleMessageDisplay33_85465E89B3ABB144AF46DA017B27447ELL7messageyAA0I6DetailC_tF', symObjAddr: 0xE90, symBinAddr: 0x172D80, symSize: 0x2E0 } + - { offset: 0x204295, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerCfD', symObjAddr: 0x1170, symBinAddr: 0x173060, symSize: 0x50 } + - { offset: 0x2042EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationBasedMessagesManagerC6sharedACvgZTf4d_n', symObjAddr: 0x11E0, symBinAddr: 0x1730D0, symSize: 0xA0 } + - { offset: 0x204714, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7ElementCMa', symObjAddr: 0xA0, symBinAddr: 0x173270, symSize: 0x20 } + - { offset: 0x204728, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementCfE', symObjAddr: 0xC0, symBinAddr: 0x173290, symSize: 0x40 } + - { offset: 0x204790, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementCMU', symObjAddr: 0x170, symBinAddr: 0x173340, symSize: 0x10 } + - { offset: 0x2047A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementCMr', symObjAddr: 0x1A0, symBinAddr: 0x173370, symSize: 0x70 } + - { offset: 0x2047B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4LineCMU', symObjAddr: 0x220, symBinAddr: 0x1733F0, symSize: 0x10 } + - { offset: 0x2047CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6CircleCMU', symObjAddr: 0x260, symBinAddr: 0x173430, symSize: 0x10 } + - { offset: 0x2047E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6CircleCMr', symObjAddr: 0x290, symBinAddr: 0x173460, symSize: 0x50 } + - { offset: 0x2047F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7EllipseCMU', symObjAddr: 0x2E0, symBinAddr: 0x1734B0, symSize: 0x10 } + - { offset: 0x204808, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4RectCMU', symObjAddr: 0x3C0, symBinAddr: 0x173590, symSize: 0x10 } + - { offset: 0x20481C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4RectCMr', symObjAddr: 0x3F0, symBinAddr: 0x1735C0, symSize: 0x60 } + - { offset: 0x204830, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8PolylineCfE', symObjAddr: 0x450, symBinAddr: 0x173620, symSize: 0x20 } + - { offset: 0x20485D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8PolylineCMU', symObjAddr: 0x490, symBinAddr: 0x173660, symSize: 0x10 } + - { offset: 0x204871, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PolygonCfE', symObjAddr: 0x4C0, symBinAddr: 0x173690, symSize: 0x20 } + - { offset: 0x20489E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PolygonCMU', symObjAddr: 0x500, symBinAddr: 0x1736D0, symSize: 0x10 } + - { offset: 0x2048B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5GroupCfE', symObjAddr: 0x540, symBinAddr: 0x173710, symSize: 0x20 } + - { offset: 0x2048DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5GroupCMU', symObjAddr: 0x5E0, symBinAddr: 0x1737B0, symSize: 0x10 } + - { offset: 0x204923, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO15GraphicsElementCfD', symObjAddr: 0x100, symBinAddr: 0x1732D0, symSize: 0x70 } + - { offset: 0x204963, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5GroupCAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0x670, symBinAddr: 0x173800, symSize: 0x20 } + - { offset: 0x204D97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOMa', symObjAddr: 0x1D0, symBinAddr: 0x173A20, symSize: 0x30 } + - { offset: 0x204DAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwCP', symObjAddr: 0x2A0, symBinAddr: 0x173A50, symSize: 0xC0 } + - { offset: 0x204DBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwxx', symObjAddr: 0x360, symBinAddr: 0x173B10, symSize: 0x50 } + - { offset: 0x204DD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwcp', symObjAddr: 0x3B0, symBinAddr: 0x173B60, symSize: 0xA0 } + - { offset: 0x204DE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwca', symObjAddr: 0x450, symBinAddr: 0x173C00, symSize: 0x100 } + - { offset: 0x204DFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwtk', symObjAddr: 0x580, symBinAddr: 0x173D00, symSize: 0xA0 } + - { offset: 0x204E0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwta', symObjAddr: 0x620, symBinAddr: 0x173DA0, symSize: 0x100 } + - { offset: 0x204E23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwet', symObjAddr: 0x720, symBinAddr: 0x173EA0, symSize: 0x20 } + - { offset: 0x204E37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwst', symObjAddr: 0x780, symBinAddr: 0x173F00, symSize: 0x20 } + - { offset: 0x204E4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwug', symObjAddr: 0x7F0, symBinAddr: 0x173F70, symSize: 0x30 } + - { offset: 0x204E5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOwui', symObjAddr: 0x830, symBinAddr: 0x173FA0, symSize: 0x40 } + - { offset: 0x204E73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOMr', symObjAddr: 0x870, symBinAddr: 0x173FE0, symSize: 0x46 } + - { offset: 0x204E9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x173850, symSize: 0x10 } + - { offset: 0x204EC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14LocationStatusO2eeoiySbAC_ACtFZTf4nnd_n', symObjAddr: 0x10, symBinAddr: 0x173860, symSize: 0x1C0 } + - { offset: 0x2052B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC8dayLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x174030, symSize: 0x20 } + - { offset: 0x2054B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellCfETo', symObjAddr: 0xA00, symBinAddr: 0x174A30, symSize: 0x30 } + - { offset: 0x2054E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellCMa', symObjAddr: 0xA30, symBinAddr: 0x174A60, symSize: 0x14 } + - { offset: 0x2055F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC8dayLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x174030, symSize: 0x20 } + - { offset: 0x205658, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC8dayLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x174050, symSize: 0x20 } + - { offset: 0x2056AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC10hoursLabelSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x174070, symSize: 0x20 } + - { offset: 0x205700, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC10hoursLabelSo7UILabelCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x174090, symSize: 0x20 } + - { offset: 0x205753, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC12awakeFromNibyyFTo', symObjAddr: 0x80, symBinAddr: 0x1740B0, symSize: 0x60 } + - { offset: 0x205926, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC9configure4withyAA0eD0VSg_tF', symObjAddr: 0xE0, symBinAddr: 0x174110, symSize: 0x780 } + - { offset: 0x205DAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x860, symBinAddr: 0x174890, symSize: 0xD0 } + - { offset: 0x205E2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x930, symBinAddr: 0x174960, symSize: 0xA0 } + - { offset: 0x205E63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DayScheduleCellCfD', symObjAddr: 0x9D0, symBinAddr: 0x174A00, symSize: 0x30 } + - { offset: 0x2061FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x174A80, symSize: 0x10 } + - { offset: 0x206266, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x10, symBinAddr: 0x174A90, symSize: 0xC0 } + - { offset: 0x206311, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xD0, symBinAddr: 0x174B50, symSize: 0xA0 } + - { offset: 0x206378, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x170, symBinAddr: 0x174BF0, symSize: 0xC0 } + - { offset: 0x20640D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs28CustomDebugStringConvertibleAAsAHP16debugDescriptionSSvgTW', symObjAddr: 0x3B0, symBinAddr: 0x174E10, symSize: 0x20 } + - { offset: 0x206429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs23CustomStringConvertibleAAsAHP11descriptionSSvgTW', symObjAddr: 0x3D0, symBinAddr: 0x174E30, symSize: 0x20 } + - { offset: 0x206445, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x7D0, symBinAddr: 0x175230, symSize: 0x10 } + - { offset: 0x2064AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x7E0, symBinAddr: 0x175240, symSize: 0xD0 } + - { offset: 0x206557, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x8B0, symBinAddr: 0x175310, symSize: 0xB0 } + - { offset: 0x2065BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x960, symBinAddr: 0x1753C0, symSize: 0xD0 } + - { offset: 0x20664D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0xBE0, symBinAddr: 0x175620, symSize: 0x20 } + - { offset: 0x206669, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0xC00, symBinAddr: 0x175640, symSize: 0x20 } + - { offset: 0x2069DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseCMa', symObjAddr: 0xC60, symBinAddr: 0x1756A0, symSize: 0x20 } + - { offset: 0x2069EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleCMa', symObjAddr: 0xEF0, symBinAddr: 0x175930, symSize: 0x20 } + - { offset: 0x206A02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOAEs0H3KeyAAWl', symObjAddr: 0x12D0, symBinAddr: 0x175C40, symSize: 0x30 } + - { offset: 0x206A16, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI15LocalizedObjectVGMa', symObjAddr: 0x1330, symBinAddr: 0x175C70, symSize: 0x30 } + - { offset: 0x206A2A, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI21GetCampusInfoResponseC8ScheduleCGMa', symObjAddr: 0x13F0, symBinAddr: 0x175D00, symSize: 0x40 } + - { offset: 0x206A3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOAGs0I3KeyAAWl', symObjAddr: 0x1430, symBinAddr: 0x175D40, symSize: 0x30 } + - { offset: 0x206A52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOMa', symObjAddr: 0x16A0, symBinAddr: 0x175E00, symSize: 0x10 } + - { offset: 0x206A66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOMa', symObjAddr: 0x1830, symBinAddr: 0x175E10, symSize: 0x10 } + - { offset: 0x206A7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x1840, symBinAddr: 0x175E20, symSize: 0x10 } + - { offset: 0x206A8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x1850, symBinAddr: 0x175E30, symSize: 0x30 } + - { offset: 0x206AA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSHAASQWb', symObjAddr: 0x1880, symBinAddr: 0x175E60, symSize: 0x10 } + - { offset: 0x206AB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOAGSQAAWl', symObjAddr: 0x1890, symBinAddr: 0x175E70, symSize: 0x30 } + - { offset: 0x206ACA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs0I3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x18C0, symBinAddr: 0x175EA0, symSize: 0x10 } + - { offset: 0x206ADE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOAGs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x18D0, symBinAddr: 0x175EB0, symSize: 0x30 } + - { offset: 0x206AF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs0I3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1900, symBinAddr: 0x175EE0, symSize: 0x10 } + - { offset: 0x206B06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOAGs23CustomStringConvertibleAAWl', symObjAddr: 0x1910, symBinAddr: 0x175EF0, symSize: 0x30 } + - { offset: 0x206B1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1940, symBinAddr: 0x175F20, symSize: 0x10 } + - { offset: 0x206B2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1950, symBinAddr: 0x175F30, symSize: 0x30 } + - { offset: 0x206B42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1980, symBinAddr: 0x175F60, symSize: 0x10 } + - { offset: 0x206B56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1990, symBinAddr: 0x175F70, symSize: 0x30 } + - { offset: 0x206BA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSYAASY8rawValuexSg03RawL0Qz_tcfCTW', symObjAddr: 0x230, symBinAddr: 0x174CB0, symSize: 0x30 } + - { offset: 0x206BCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOSYAASY8rawValue03RawL0QzvgTW', symObjAddr: 0x260, symBinAddr: 0x174CE0, symSize: 0x90 } + - { offset: 0x206C06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs0I3KeyAAsAHP11stringValueSSvgTW', symObjAddr: 0x2F0, symBinAddr: 0x174D70, symSize: 0x80 } + - { offset: 0x206C5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysOs0I3KeyAAsAHP11stringValuexSgSS_tcfCTW', symObjAddr: 0x370, symBinAddr: 0x174DF0, symSize: 0x20 } + - { offset: 0x206CCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleCfD', symObjAddr: 0x3F0, symBinAddr: 0x174E50, symSize: 0x30 } + - { offset: 0x206D05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC6encode2toys7Encoder_p_tKF', symObjAddr: 0x420, symBinAddr: 0x174E80, symSize: 0x1B0 } + - { offset: 0x206D36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC4fromAEs7Decoder_p_tKcfc', symObjAddr: 0x5D0, symBinAddr: 0x175030, symSize: 0x1C0 } + - { offset: 0x206D67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x7B0, symBinAddr: 0x175210, symSize: 0x20 } + - { offset: 0x206DAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSYAASY8rawValuexSg03RawK0Qz_tcfCTW', symObjAddr: 0xA30, symBinAddr: 0x175490, symSize: 0x30 } + - { offset: 0x206DD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0xA60, symBinAddr: 0x1754C0, symSize: 0xA0 } + - { offset: 0x206E10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xB00, symBinAddr: 0x175560, symSize: 0xA0 } + - { offset: 0x206E60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysOs0H3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0xBA0, symBinAddr: 0x175600, symSize: 0x20 } + - { offset: 0x206EC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseCfD', symObjAddr: 0xC20, symBinAddr: 0x175660, symSize: 0x40 } + - { offset: 0x206EFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0xC80, symBinAddr: 0x1756C0, symSize: 0x270 } + - { offset: 0x206F2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0xF10, symBinAddr: 0x175950, symSize: 0x2B0 } + - { offset: 0x206F5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1240, symBinAddr: 0x175C20, symSize: 0x20 } + - { offset: 0x206F76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC8ScheduleC10CodingKeysO8rawValueAGSgSS_tcfCTf4nd_n', symObjAddr: 0x19C0, symBinAddr: 0x175FA0, symSize: 0x60 } + - { offset: 0x206FAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetCampusInfoResponseC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x1A20, symBinAddr: 0x176000, symSize: 0x60 } + - { offset: 0x20791A, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin8ScheduleC_Tg5013$s8PenNavUI14F66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1cn_n', symObjAddr: 0x790, symBinAddr: 0x1767F0, symSize: 0x100 } + - { offset: 0x207B67, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin8ScheduleC_Tg5013$s8PenNavUI14F66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1nnncn_n', symObjAddr: 0x890, symBinAddr: 0x1768F0, symSize: 0x630 } + - { offset: 0x2081F9, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_Si3key_Say7Penguin8ScheduleCG5valuet_Tg5013$s8PenNavUI14G87HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbSi3key_AK5valuet_SiAM_AkNttXEfU0_Tf1nnncn_n', symObjAddr: 0xEC0, symBinAddr: 0x176F20, symSize: 0x440 } + - { offset: 0x20873D, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry7Penguin8ScheduleCG_Tg5013$s8PenNavUI14J66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1nncn_n', symObjAddr: 0x1300, symBinAddr: 0x177360, symSize: 0x160 } + - { offset: 0x208908, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin8ScheduleC_Tg5013$s8PenNavUI14G66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1nncn_n', symObjAddr: 0x1460, symBinAddr: 0x1774C0, symSize: 0x2B0 } + - { offset: 0x208C94, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKFSi3key_Say7Penguin8ScheduleCG5valuet_Tg5013$s8PenNavUI14H87HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbSi3key_AK5valuet_SiAM_AkNttXEfU0_Tf1nncn_n', symObjAddr: 0x1710, symBinAddr: 0x177770, symSize: 0x2C0 } + - { offset: 0x209036, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin8ScheduleC_Tg5013$s8PenNavUI14H66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1nnnnc_n', symObjAddr: 0x19D0, symBinAddr: 0x177A30, symSize: 0x3A0 } + - { offset: 0x2091BF, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlFSi3key_Say7Penguin8ScheduleCG5valuet_Tg5013$s8PenNavUI14I87HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbSi3key_AK5valuet_SiAM_AkNttXEfU0_Tf1nnnnc_n', symObjAddr: 0x1D70, symBinAddr: 0x177DD0, symSize: 0x1F0 } + - { offset: 0x209303, size: 0x8, addend: 0x0, symName: '_$sSTsE21_copySequenceContents12initializing8IteratorQz_SitSry7ElementQzG_tFSDySiSay7Penguin8ScheduleCGG_Tg5', symObjAddr: 0x20B0, symBinAddr: 0x177FE0, symSize: 0x1A0 } + - { offset: 0x2093F1, size: 0x8, addend: 0x0, symName: '_$sSTsE21_copySequenceContents12initializing8IteratorQz_SitSry7ElementQzG_tFSD4KeysVyS2S_G_Tg5', symObjAddr: 0x2250, symBinAddr: 0x178180, symSize: 0x1A0 } + - { offset: 0x2094B5, size: 0x8, addend: 0x0, symName: '_$sSTsE21_copySequenceContents12initializing8IteratorQz_SitSry7ElementQzG_tFShy10Foundation3URLVG_Tg5', symObjAddr: 0x2700, symBinAddr: 0x178630, symSize: 0x220 } + - { offset: 0x209542, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI18FloatingPanelStateC_Tg5', symObjAddr: 0x2920, symBinAddr: 0x178850, symSize: 0x20 } + - { offset: 0x20957A, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF7Penguin8ScheduleC_Tg5', symObjAddr: 0x2940, symBinAddr: 0x178870, symSize: 0x20 } + - { offset: 0x2095B2, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyFSi3key_Say7Penguin8ScheduleCG5valuet_Tg5', symObjAddr: 0x2960, symBinAddr: 0x178890, symSize: 0x20 } + - { offset: 0x2095EA, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyFSS_Tg5', symObjAddr: 0x2980, symBinAddr: 0x1788B0, symSize: 0x20 } + - { offset: 0x209622, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI8FavoriteC_Tg5', symObjAddr: 0x29A0, symBinAddr: 0x1788D0, symSize: 0x20 } + - { offset: 0x20965A, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI5PlaceC_Tg5', symObjAddr: 0x29C0, symBinAddr: 0x1788F0, symSize: 0x20 } + - { offset: 0x209692, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF7Penguin11POICategoryV_Tg5', symObjAddr: 0x29E0, symBinAddr: 0x178910, symSize: 0x20 } + - { offset: 0x2096CA, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF7Penguin5FloorC_Tg5', symObjAddr: 0x2A20, symBinAddr: 0x178930, symSize: 0x20 } + - { offset: 0x209702, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF8PenNavUI3DOMO10StyleSheetV8SelectorO_Tg5', symObjAddr: 0x2A40, symBinAddr: 0x178950, symSize: 0x20 } + - { offset: 0x20973A, size: 0x8, addend: 0x0, symName: '_$ss22_ContiguousArrayBufferV20_consumeAndCreateNewAByxGyF7Penguin10PoiPolygonV_Tg5', symObjAddr: 0x2A60, symBinAddr: 0x178970, symSize: 0x20 } + - { offset: 0x209B32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA7CGTypesVGWOb', symObjAddr: 0x4FC0, symBinAddr: 0x17AE00, symSize: 0x31 } + - { offset: 0x209B5A, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tFSnySiG_Tg5', symObjAddr: 0x0, symBinAddr: 0x176060, symSize: 0x90 } + - { offset: 0x209BE0, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI15RendererCommandOyAC11CGTextTypesVG_Tg5', symObjAddr: 0x90, symBinAddr: 0x1760F0, symSize: 0xA0 } + - { offset: 0x209C6E, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AC11CGTextTypesV_G_Tg5', symObjAddr: 0x130, symBinAddr: 0x176190, symSize: 0xD0 } + - { offset: 0x209D02, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI15RendererCommandOyAC7CGTypesVG_Tg5', symObjAddr: 0x220, symBinAddr: 0x176280, symSize: 0xF0 } + - { offset: 0x209DB9, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI9LayerTreeO16CommandOptimizerC5StateVy_AC7CGTypesV_G_Tg5', symObjAddr: 0x310, symBinAddr: 0x176370, symSize: 0xC0 } + - { offset: 0x209E47, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tF8PenNavUI16FileDownloadData_p_Tg5', symObjAddr: 0x3F0, symBinAddr: 0x176450, symSize: 0xA0 } + - { offset: 0x209ED5, size: 0x8, addend: 0x0, symName: '_$sSa6remove2atxSi_tFSi_Tg5', symObjAddr: 0x490, symBinAddr: 0x1764F0, symSize: 0x80 } + - { offset: 0x209F6F, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin8ScheduleCG_Tg5013$s8PenNavUI14G66HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbAJ_AJtXEfU1_Tf1cn_n', symObjAddr: 0x5D0, symBinAddr: 0x176630, symSize: 0x60 } + - { offset: 0x20A02B, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVySi3key_Say7Penguin8ScheduleCG5valuetG_Tg5013$s8PenNavUI14H87HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSbSi3key_AK5valuet_SiAM_AkNttXEfU0_Tf1cn_n', symObjAddr: 0x630, symBinAddr: 0x176690, symSize: 0x160 } + - { offset: 0x20A6C7, size: 0x8, addend: 0x0, symName: '_$sSD8grouping2bySDyxSay7ElementQyd__GGqd__n_xADKXEtKcAERs_STRd__lufCSi_Say7Penguin8ScheduleCGTt1g5013$s8PenNavUI14E61HelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZSiAJXEfU_Tf1nc_nTf4g_n', symObjAddr: 0x2AA0, symBinAddr: 0x178990, symSize: 0x380 } + - { offset: 0x20AA64, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV03getD4DaysySayAA0D3DayVGSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x2E20, symBinAddr: 0x178D10, symSize: 0x2F0 } + - { offset: 0x20AFA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV10isTodayOffySbSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x3110, symBinAddr: 0x179000, symSize: 0x250 } + - { offset: 0x20B2A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV6isOpenySbSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x3360, symBinAddr: 0x179250, symSize: 0x500 } + - { offset: 0x20B679, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV23getNextOpeningTimeRangeySSSgSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x3860, symBinAddr: 0x179750, symSize: 0x930 } + - { offset: 0x20BEEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV26getCurrentOpeningTimeRange8scheduleSSSgSay7Penguin0D0CGSg_tFZTf4nd_n', symObjAddr: 0x4190, symBinAddr: 0x17A080, symSize: 0x5C0 } + - { offset: 0x20C317, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV6isTime33_5560619FF73D588933C2A2D07617F087LL_20earlierThanOrEqualToSb10Foundation14DateComponentsV_AItFZTf4nnd_n', symObjAddr: 0x4750, symBinAddr: 0x17A640, symSize: 0xC0 } + - { offset: 0x20C3F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14ScheduleHelperV20getRecentClosingTimeySSSgSay7Penguin0D0CGSgFZTf4nd_n', symObjAddr: 0x4810, symBinAddr: 0x17A700, symSize: 0x6C0 } + - { offset: 0x20CCA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOMa', symObjAddr: 0x1A0, symBinAddr: 0x17AE40, symSize: 0x10 } + - { offset: 0x20CCBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOwet', symObjAddr: 0x1B0, symBinAddr: 0x17AE50, symSize: 0x80 } + - { offset: 0x20CCCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOwst', symObjAddr: 0x230, symBinAddr: 0x17AED0, symSize: 0xD0 } + - { offset: 0x20CCE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOMa', symObjAddr: 0x310, symBinAddr: 0x17AFA0, symSize: 0x10 } + - { offset: 0x20CDA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSHAASQWb', symObjAddr: 0x620, symBinAddr: 0x17B2B0, symSize: 0x10 } + - { offset: 0x20CDB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOACSQAAWl', symObjAddr: 0x630, symBinAddr: 0x17B2C0, symSize: 0x30 } + - { offset: 0x20CE45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSHAASQWb', symObjAddr: 0x9F0, symBinAddr: 0x17B680, symSize: 0x10 } + - { offset: 0x20CE59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOACSQAAWl', symObjAddr: 0xA00, symBinAddr: 0x17B690, symSize: 0x30 } + - { offset: 0x20CF27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOACSYAAWl', symObjAddr: 0x1C70, symBinAddr: 0x17C8C0, symSize: 0x30 } + - { offset: 0x20CF67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x480, symBinAddr: 0x17B110, symSize: 0x70 } + - { offset: 0x20D03A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSHAASH9hashValueSivgTW', symObjAddr: 0x4F0, symBinAddr: 0x17B180, symSize: 0x50 } + - { offset: 0x20D0B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x540, symBinAddr: 0x17B1D0, symSize: 0x30 } + - { offset: 0x20D10A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x570, symBinAddr: 0x17B200, symSize: 0x50 } + - { offset: 0x20D17B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x660, symBinAddr: 0x17B2F0, symSize: 0xE0 } + - { offset: 0x20D288, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSHAASH9hashValueSivgTW', symObjAddr: 0x740, symBinAddr: 0x17B3D0, symSize: 0x90 } + - { offset: 0x20D333, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x7D0, symBinAddr: 0x17B460, symSize: 0x70 } + - { offset: 0x20D39A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x840, symBinAddr: 0x17B4D0, symSize: 0x90 } + - { offset: 0x20D429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x960, symBinAddr: 0x17B5F0, symSize: 0x50 } + - { offset: 0x20D44C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x9B0, symBinAddr: 0x17B640, symSize: 0x40 } + - { offset: 0x20D4D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleO8rawValueSSvg', symObjAddr: 0x320, symBinAddr: 0x17AFB0, symSize: 0x160 } + - { offset: 0x20D514, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x5C0, symBinAddr: 0x17B250, symSize: 0x30 } + - { offset: 0x20D53D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x5F0, symBinAddr: 0x17B280, symSize: 0x30 } + - { offset: 0x20D582, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x8D0, symBinAddr: 0x17B560, symSize: 0x30 } + - { offset: 0x20D5AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x900, symBinAddr: 0x17B590, symSize: 0x60 } + - { offset: 0x20D6BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleO12defaultFontsSDyACSo6UIFontCGvgZTf4d_n', symObjAddr: 0xA30, symBinAddr: 0x17B6C0, symSize: 0x1140 } + - { offset: 0x20DF77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9FontStyleO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x1BB0, symBinAddr: 0x17C800, symSize: 0x60 } + - { offset: 0x20DFAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightO8rawValueACSgSS_tcfCTf4nd_n', symObjAddr: 0x1C10, symBinAddr: 0x17C860, symSize: 0x60 } + - { offset: 0x20E37E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15GeofenceManagerC03getD4ByIdy7Penguin0D6RegionVSgSSF', symObjAddr: 0x0, symBinAddr: 0x17C8F0, symSize: 0x430 } + - { offset: 0x20E3A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15GeofenceManagerC14sharedInstance33_96AC6CA8D8EAACF3DB2766691F1A97FALLACSgvpZ', symObjAddr: 0x468, symBinAddr: 0x3A1F38, symSize: 0x0 } + - { offset: 0x20E541, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15GeofenceManagerCMa', symObjAddr: 0x450, symBinAddr: 0x17CD20, symSize: 0x14 } + - { offset: 0x20E614, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15GeofenceManagerC03getD4ByIdy7Penguin0D6RegionVSgSSF', symObjAddr: 0x0, symBinAddr: 0x17C8F0, symSize: 0x430 } + - { offset: 0x20EEE5, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateV8PenNavUIE07currentB4TimeSSvg', symObjAddr: 0x0, symBinAddr: 0x17CD40, symSize: 0x190 } + - { offset: 0x20EFD7, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateV8PenNavUIE07currentB4TimeSSvg', symObjAddr: 0x0, symBinAddr: 0x17CD40, symSize: 0x190 } + - { offset: 0x20F0EC, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateV8PenNavUIE7timeAgoSSvg', symObjAddr: 0x190, symBinAddr: 0x17CED0, symSize: 0x580 } + - { offset: 0x20F589, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateV8PenNavUIE8toString6formatS2S_tF', symObjAddr: 0x710, symBinAddr: 0x17D450, symSize: 0x230 } + - { offset: 0x20FAD7, size: 0x8, addend: 0x0, symName: ___swift_memcpy16_4, symObjAddr: 0x0, symBinAddr: 0x17D680, symSize: 0x10 } + - { offset: 0x20FAEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVMa', symObjAddr: 0x70, symBinAddr: 0x17D690, symSize: 0x10 } + - { offset: 0x20FAFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4SizeVMa', symObjAddr: 0xD0, symBinAddr: 0x17D6A0, symSize: 0x10 } + - { offset: 0x20FB13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeOMa', symObjAddr: 0xE0, symBinAddr: 0x17D6B0, symSize: 0x10 } + - { offset: 0x20FBA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4SizeVSHAASQWb', symObjAddr: 0x2B0, symBinAddr: 0x17D800, symSize: 0x10 } + - { offset: 0x20FBB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4SizeVAESQAAWl', symObjAddr: 0x2C0, symBinAddr: 0x17D810, symSize: 0x30 } + - { offset: 0x20FC78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSHAASQWb', symObjAddr: 0x4F0, symBinAddr: 0x17DA40, symSize: 0x10 } + - { offset: 0x20FC8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVAESQAAWl', symObjAddr: 0x500, symBinAddr: 0x17DA50, symSize: 0x30 } + - { offset: 0x20FCA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwxx', symObjAddr: 0x560, symBinAddr: 0x17DA80, symSize: 0x30 } + - { offset: 0x20FCB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwcp', symObjAddr: 0x5C0, symBinAddr: 0x17DAB0, symSize: 0x60 } + - { offset: 0x20FCC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwca', symObjAddr: 0x620, symBinAddr: 0x17DB10, symSize: 0x90 } + - { offset: 0x20FCDC, size: 0x8, addend: 0x0, symName: ___swift_memcpy33_8, symObjAddr: 0x6B0, symBinAddr: 0x17DBA0, symSize: 0x20 } + - { offset: 0x20FCF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwta', symObjAddr: 0x6D0, symBinAddr: 0x17DBC0, symSize: 0x80 } + - { offset: 0x20FD04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwet', symObjAddr: 0x750, symBinAddr: 0x17DC40, symSize: 0x40 } + - { offset: 0x20FD18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwst', symObjAddr: 0x790, symBinAddr: 0x17DC80, symSize: 0x50 } + - { offset: 0x20FD2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwug', symObjAddr: 0x7E0, symBinAddr: 0x17DCD0, symSize: 0x20 } + - { offset: 0x20FD40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOwui', symObjAddr: 0x810, symBinAddr: 0x17DCF0, symSize: 0x30 } + - { offset: 0x20FD54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ErrorOMa', symObjAddr: 0x840, symBinAddr: 0x17DD20, symSize: 0x10 } + - { offset: 0x20FD68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointVMa', symObjAddr: 0x850, symBinAddr: 0x17DD30, symSize: 0x10 } + - { offset: 0x20FD7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointVSHAASQWb', symObjAddr: 0x860, symBinAddr: 0x17DD40, symSize: 0x10 } + - { offset: 0x20FD90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5PointVAESQAAWl', symObjAddr: 0x870, symBinAddr: 0x17DD50, symSize: 0x30 } + - { offset: 0x20FE37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x430, symBinAddr: 0x17D980, symSize: 0x70 } + - { offset: 0x20FEF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectV4hash4intoys6HasherVz_tF', symObjAddr: 0x2F0, symBinAddr: 0x17D840, symSize: 0xA0 } + - { offset: 0x21008B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSHAASH9hashValueSivgTW', symObjAddr: 0x390, symBinAddr: 0x17D8E0, symSize: 0x70 } + - { offset: 0x210112, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x400, symBinAddr: 0x17D950, symSize: 0x30 } + - { offset: 0x210140, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4RectVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x4A0, symBinAddr: 0x17D9F0, symSize: 0x50 } + - { offset: 0x2104FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x17DDF0, symSize: 0xF0 } + - { offset: 0x2105A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewCMa', symObjAddr: 0x240, symBinAddr: 0x17E030, symSize: 0x14 } + - { offset: 0x2105E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x17DDF0, symSize: 0xF0 } + - { offset: 0x210646, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xF0, symBinAddr: 0x17DEE0, symSize: 0xF0 } + - { offset: 0x21067B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1E0, symBinAddr: 0x17DFD0, symSize: 0x30 } + - { offset: 0x210695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13SeparatorViewCfD', symObjAddr: 0x210, symBinAddr: 0x17E000, symSize: 0x30 } + - { offset: 0x210A46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MapStateOMa', symObjAddr: 0x1A0, symBinAddr: 0x17E050, symSize: 0x10 } + - { offset: 0x210A5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MapStateOSHAASQWb', symObjAddr: 0x1B0, symBinAddr: 0x17E060, symSize: 0x10 } + - { offset: 0x210A6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MapStateOACSQAAWl', symObjAddr: 0x1C0, symBinAddr: 0x17E070, symSize: 0x30 } + - { offset: 0x21126B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewCfETo', symObjAddr: 0x1360, symBinAddr: 0x17F400, symSize: 0x50 } + - { offset: 0x21129A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewCMa', symObjAddr: 0x13B0, symBinAddr: 0x17F450, symSize: 0x20 } + - { offset: 0x2112AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC25adaptivePresentationStyle3forSo07UIModalgH0VSo24UIPresentationControllerC_tFTo', symObjAddr: 0x13D0, symBinAddr: 0x17F470, symSize: 0x10 } + - { offset: 0x2112E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC33presentationControllerWillDismissyySo014UIPresentationG0CFTo', symObjAddr: 0x13E0, symBinAddr: 0x17F480, symSize: 0x30 } + - { offset: 0x21133C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC13isHighlightedSbvWyycfU0_TA', symObjAddr: 0x1430, symBinAddr: 0x17F4D0, symSize: 0x20 } + - { offset: 0x211350, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1450, symBinAddr: 0x17F4F0, symSize: 0x20 } + - { offset: 0x211364, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1470, symBinAddr: 0x17F510, symSize: 0x10 } + - { offset: 0x211378, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC13isHighlightedSbvWyycfU_TA', symObjAddr: 0x1480, symBinAddr: 0x17F520, symSize: 0x20 } + - { offset: 0x21138C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC8showMenuyyFyycfU_TA', symObjAddr: 0x1500, symBinAddr: 0x17F540, symSize: 0x10 } + - { offset: 0x2113A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x0, symBinAddr: 0x17E0A0, symSize: 0x170 } + - { offset: 0x211410, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x170, symBinAddr: 0x17E210, symSize: 0x30 } + - { offset: 0x211448, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1A0, symBinAddr: 0x17E240, symSize: 0x150 } + - { offset: 0x2114BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2F0, symBinAddr: 0x17E390, symSize: 0x30 } + - { offset: 0x2114D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC13isHighlightedSbvW', symObjAddr: 0x320, symBinAddr: 0x17E3C0, symSize: 0x140 } + - { offset: 0x2115DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC8showMenuyyF', symObjAddr: 0x5D0, symBinAddr: 0x17E670, symSize: 0x330 } + - { offset: 0x21173D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC8showMenuyyFyycfU_', symObjAddr: 0x900, symBinAddr: 0x17E9A0, symSize: 0x150 } + - { offset: 0x211888, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC15handleLongPress33_B7783B3256895AABB8F462833D3413D5LLyySo06UILongH17GestureRecognizerCF', symObjAddr: 0xA50, symBinAddr: 0x17EAF0, symSize: 0x880 } + - { offset: 0x211C37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC15handleLongPress33_B7783B3256895AABB8F462833D3413D5LLyySo06UILongH17GestureRecognizerCFTo', symObjAddr: 0x12D0, symBinAddr: 0x17F370, symSize: 0x50 } + - { offset: 0x211C5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewC17gestureRecognizer_33shouldRecognizeSimultaneouslyWithSbSo09UIGestureG0C_AGtFTo', symObjAddr: 0x1320, symBinAddr: 0x17F3C0, symSize: 0x10 } + - { offset: 0x211C73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10HapticViewCfD', symObjAddr: 0x1330, symBinAddr: 0x17F3D0, symSize: 0x30 } + - { offset: 0x21201B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x17F6D0, symSize: 0xC0 } + - { offset: 0x21211C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewCMa', symObjAddr: 0x230, symBinAddr: 0x17F900, symSize: 0x20 } + - { offset: 0x21217D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x17F6D0, symSize: 0xC0 } + - { offset: 0x2121FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xC0, symBinAddr: 0x17F790, symSize: 0x50 } + - { offset: 0x212256, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC4drawyySo6CGRectVFTo', symObjAddr: 0x110, symBinAddr: 0x17F7E0, symSize: 0x20 } + - { offset: 0x21231A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC7asImageSo7UIImageCyF', symObjAddr: 0x130, symBinAddr: 0x17F800, symSize: 0xD0 } + - { offset: 0x21239C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewCfD', symObjAddr: 0x200, symBinAddr: 0x17F8D0, symSize: 0x30 } + - { offset: 0x2123F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DestinationViewC4drawyySo6CGRectVFTf4nd_n', symObjAddr: 0x250, symBinAddr: 0x17F920, symSize: 0x2A3 } + - { offset: 0x212887, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC06updateD012fontResponseySayAA7AppFontCG_tF', symObjAddr: 0x0, symBinAddr: 0x17FBD0, symSize: 0x620 } + - { offset: 0x2128AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC14sharedInstance33_DA3E1E5F5878F3E7D999A070F7070CF4LLACSgvpZ', symObjAddr: 0x1230, symBinAddr: 0x3A20D8, symSize: 0x0 } + - { offset: 0x212BB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerCMa', symObjAddr: 0xB90, symBinAddr: 0x180760, symSize: 0x20 } + - { offset: 0x212C2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC12registerFont33_DA3E1E5F5878F3E7D999A070F7070CF4LL7fontUrlSSSgSS_tFTf4nd_n', symObjAddr: 0xDF0, symBinAddr: 0x180980, symSize: 0x3A0 } + - { offset: 0x212D47, size: 0x8, addend: 0x0, symName: '_$sSo10CFErrorRefaABs5Error10FoundationWl', symObjAddr: 0x11C0, symBinAddr: 0x180D20, symSize: 0x40 } + - { offset: 0x212FAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC06updateD012fontResponseySayAA7AppFontCG_tF', symObjAddr: 0x0, symBinAddr: 0x17FBD0, symSize: 0x620 } + - { offset: 0x2134F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC14updateFontName33_DA3E1E5F5878F3E7D999A070F7070CF4LL12fontResponseyAA03AppG0CSg_tF', symObjAddr: 0x620, symBinAddr: 0x1801F0, symSize: 0x180 } + - { offset: 0x213655, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerC16updateFontStyles33_DA3E1E5F5878F3E7D999A070F7070CF4LL12fontResponseyAA03AppG0CSg_tF', symObjAddr: 0x7A0, symBinAddr: 0x180370, symSize: 0x3C0 } + - { offset: 0x213A5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerCfD', symObjAddr: 0xB60, symBinAddr: 0x180730, symSize: 0x30 } + - { offset: 0x213ABE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FontsManagerCACycfc', symObjAddr: 0xBB0, symBinAddr: 0x180780, symSize: 0x200 } + - { offset: 0x21417A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x180D60, symSize: 0x20 } + - { offset: 0x2145CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCfE', symObjAddr: 0x3C0, symBinAddr: 0x181120, symSize: 0xB0 } + - { offset: 0x2145F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCfETo', symObjAddr: 0x590, symBinAddr: 0x1812F0, symSize: 0xB0 } + - { offset: 0x214665, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCMa', symObjAddr: 0xCD0, symBinAddr: 0x181A30, symSize: 0x20 } + - { offset: 0x21477F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutCMa', symObjAddr: 0xDB0, symBinAddr: 0x181AE0, symSize: 0x20 } + - { offset: 0x2147B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC09layoutForF0AA08FloatingF6Layout_pyFTo', symObjAddr: 0xDD0, symBinAddr: 0x181B00, symSize: 0x70 } + - { offset: 0x21482A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC011behaviorForF0AA08FloatingF8Behavior_pyFTo', symObjAddr: 0xE40, symBinAddr: 0x181B70, symSize: 0x30 } + - { offset: 0x214872, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC05setupF0yyF', symObjAddr: 0xE70, symBinAddr: 0x181BA0, symSize: 0x140 } + - { offset: 0x214961, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC05setupF0yyFTo', symObjAddr: 0xFB0, symBinAddr: 0x181CE0, symSize: 0x30 } + - { offset: 0x21498E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC08floatingF7DidMoveyyAA08FloatingfH0CF', symObjAddr: 0xFE0, symBinAddr: 0x181D10, symSize: 0x230 } + - { offset: 0x214B88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC08floatingF7DidMoveyyAA08FloatingfH0CFTo', symObjAddr: 0x1210, symBinAddr: 0x181F40, symSize: 0x50 } + - { offset: 0x214BDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0lQ0OSgtFTW', symObjAddr: 0x12E0, symBinAddr: 0x181F90, symSize: 0xC0 } + - { offset: 0x214C0D, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x13D0, symBinAddr: 0x182070, symSize: 0x20 } + - { offset: 0x214C21, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x13F0, symBinAddr: 0x182090, symSize: 0x10 } + - { offset: 0x214CB9, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8capacityAByxq_Gs07__CocoaB0Vn_SitcfC8PenNavUI18FloatingPanelStateC_AG0hI15LayoutAnchoring_pTt1g5', symObjAddr: 0x1420, symBinAddr: 0x1820A0, symSize: 0x230 } + - { offset: 0x214DDB, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV8setValue_6forKey8isUniqueyq_n_xSbtF8PenNavUI18FloatingPanelStateC_AF0lM15LayoutAnchoring_pTg5Tf4ennn_nAF0lmO6AnchorC_Tg5', symObjAddr: 0x1650, symBinAddr: 0x1822D0, symSize: 0x120 } + - { offset: 0x21510B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x180D60, symSize: 0x20 } + - { offset: 0x215169, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x180D80, symSize: 0x30 } + - { offset: 0x2151B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17distanceUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x180DB0, symSize: 0x20 } + - { offset: 0x21520B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17distanceUnitLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x180DD0, symSize: 0x30 } + - { offset: 0x21525A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x180E00, symSize: 0x20 } + - { offset: 0x2152AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC13durationLabelSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x180E20, symSize: 0x30 } + - { offset: 0x2152FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17durationUnitLabelSo7UILabelCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x180E50, symSize: 0x20 } + - { offset: 0x21534F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC17durationUnitLabelSo7UILabelCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x180E70, symSize: 0x30 } + - { offset: 0x21539E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16arrivalTimeLabelSo7UILabelCSgvgTo', symObjAddr: 0x140, symBinAddr: 0x180EA0, symSize: 0x20 } + - { offset: 0x2153F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16arrivalTimeLabelSo7UILabelCSgvsTo', symObjAddr: 0x160, symBinAddr: 0x180EC0, symSize: 0x30 } + - { offset: 0x215440, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16directionsButtonSo8UIButtonCSgvgTo', symObjAddr: 0x190, symBinAddr: 0x180EF0, symSize: 0x20 } + - { offset: 0x215498, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC16directionsButtonSo8UIButtonCSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x180F10, symSize: 0x30 } + - { offset: 0x2154FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC11viewDidLoadyyF', symObjAddr: 0x1E0, symBinAddr: 0x180F40, symSize: 0x1B0 } + - { offset: 0x21558D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x390, symBinAddr: 0x1810F0, symSize: 0x30 } + - { offset: 0x2155A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCfD', symObjAddr: 0x470, symBinAddr: 0x1811D0, symSize: 0x80 } + - { offset: 0x2155D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerCfDTo', symObjAddr: 0x4F0, symBinAddr: 0x181250, symSize: 0xA0 } + - { offset: 0x215627, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC03endE0yyFTo', symObjAddr: 0x640, symBinAddr: 0x1813A0, symSize: 0x60 } + - { offset: 0x215692, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC19showRouteDirectionsyySo8UIButtonCFTo', symObjAddr: 0x6A0, symBinAddr: 0x181400, symSize: 0x60 } + - { offset: 0x2156DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC9setLengthyySdF', symObjAddr: 0x700, symBinAddr: 0x181460, symSize: 0x140 } + - { offset: 0x21578F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC11setDurationyySdF', symObjAddr: 0x840, symBinAddr: 0x1815A0, symSize: 0x180 } + - { offset: 0x21585B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC14setArrivalTime8durationySd_tFTo', symObjAddr: 0x9C0, symBinAddr: 0x181720, symSize: 0x90 } + - { offset: 0x2158C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xA50, symBinAddr: 0x1817B0, symSize: 0x110 } + - { offset: 0x215906, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xB60, symBinAddr: 0x1818C0, symSize: 0x50 } + - { offset: 0x215938, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xBB0, symBinAddr: 0x181910, symSize: 0xF0 } + - { offset: 0x21596B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xCA0, symBinAddr: 0x181A00, symSize: 0x30 } + - { offset: 0x215986, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC8positionAA08FloatingF8PositionOvgTo', symObjAddr: 0xCF0, symBinAddr: 0x181A50, symSize: 0x10 } + - { offset: 0x2159B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC12initialStateAA08FloatingfK0CvgTo', symObjAddr: 0xD00, symBinAddr: 0x181A60, symSize: 0x10 } + - { offset: 0x2159E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC7anchorsSDyAA08FloatingF5StateCAA0kfI9Anchoring_pGvgTo', symObjAddr: 0xD10, symBinAddr: 0x181A70, symSize: 0x60 } + - { offset: 0x215A12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA08FloatingF5StateC_tFTo', symObjAddr: 0xD70, symBinAddr: 0x181AD0, symSize: 0x10 } + - { offset: 0x215BF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35BottomNavigationPanelViewControllerC0F6LayoutC7anchorsSDyAA08FloatingF5StateCAA0kfI9Anchoring_pGvgTf4d_n', symObjAddr: 0x1770, symBinAddr: 0x1823F0, symSize: 0x290 } + - { offset: 0x21661D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellCfETo', symObjAddr: 0xE50, symBinAddr: 0x1834D0, symSize: 0xA0 } + - { offset: 0x21664C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellCMa', symObjAddr: 0xEF0, symBinAddr: 0x183570, symSize: 0x20 } + - { offset: 0x216660, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtFyycfU_TA', symObjAddr: 0xF30, symBinAddr: 0x1835B0, symSize: 0x20 } + - { offset: 0x216674, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtFyycfU0_TA', symObjAddr: 0xF70, symBinAddr: 0x1835D0, symSize: 0x20 } + - { offset: 0x216688, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtFyycfU1_TA', symObjAddr: 0xF90, symBinAddr: 0x1835F0, symSize: 0x20 } + - { offset: 0x21669C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtFyycfU2_TA', symObjAddr: 0xFB0, symBinAddr: 0x183610, symSize: 0x20 } + - { offset: 0x2167FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC22directionsTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x182680, symSize: 0x20 } + - { offset: 0x21685A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC22directionsTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x1826A0, symSize: 0x30 } + - { offset: 0x2168A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16callTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0x1826D0, symSize: 0x20 } + - { offset: 0x2168FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16callTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0x1826F0, symSize: 0x30 } + - { offset: 0x21694B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16mailTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x182720, symSize: 0x20 } + - { offset: 0x21699E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16mailTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x182740, symSize: 0x30 } + - { offset: 0x2169ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC19websiteTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x182770, symSize: 0x20 } + - { offset: 0x216A40, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC19websiteTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x110, symBinAddr: 0x182790, symSize: 0x30 } + - { offset: 0x216A8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16moreTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x140, symBinAddr: 0x1827C0, symSize: 0x20 } + - { offset: 0x216AE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16moreTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x160, symBinAddr: 0x1827E0, symSize: 0x30 } + - { offset: 0x216BB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16buttonsStackViewSo07UIStackI0CSgvgTo', symObjAddr: 0x190, symBinAddr: 0x182810, symSize: 0x20 } + - { offset: 0x216C08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC16buttonsStackViewSo07UIStackI0CSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x182830, symSize: 0x30 } + - { offset: 0x216C57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC14directionLabelSo7UILabelCSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0x182860, symSize: 0x20 } + - { offset: 0x216CB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC14directionLabelSo7UILabelCSgvsTo', symObjAddr: 0x200, symBinAddr: 0x182880, symSize: 0x20 } + - { offset: 0x216D04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC13directionIconSo11UIImageViewCSgvgTo', symObjAddr: 0x220, symBinAddr: 0x1828A0, symSize: 0x20 } + - { offset: 0x216D5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC13directionIconSo11UIImageViewCSgvsTo', symObjAddr: 0x240, symBinAddr: 0x1828C0, symSize: 0x20 } + - { offset: 0x216DB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x260, symBinAddr: 0x1828E0, symSize: 0x70 } + - { offset: 0x216DE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC15prepareForReuseyyF', symObjAddr: 0x2D0, symBinAddr: 0x182950, symSize: 0xC0 } + - { offset: 0x216E8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC15prepareForReuseyyFTo', symObjAddr: 0x390, symBinAddr: 0x182A10, symSize: 0x30 } + - { offset: 0x216EF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC05setupE03for19showsSkeletonLoaderyAA0d6ActionF4DataCSg_SbtF', symObjAddr: 0x3C0, symBinAddr: 0x182A40, symSize: 0x4B0 } + - { offset: 0x2171F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC10setUpViewsyyF', symObjAddr: 0x900, symBinAddr: 0x182F80, symSize: 0x180 } + - { offset: 0x2172C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC21updateDirectionToStopyyF', symObjAddr: 0xA80, symBinAddr: 0x183100, symSize: 0x130 } + - { offset: 0x217356, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0xBB0, symBinAddr: 0x183230, symSize: 0x110 } + - { offset: 0x217397, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xCC0, symBinAddr: 0x183340, symSize: 0x30 } + - { offset: 0x2173CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xCF0, symBinAddr: 0x183370, symSize: 0x100 } + - { offset: 0x217402, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xDF0, symBinAddr: 0x183470, symSize: 0x30 } + - { offset: 0x217416, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14TopActionsCellCfD', symObjAddr: 0xE20, symBinAddr: 0x1834A0, symSize: 0x30 } + - { offset: 0x2177B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ClosureAlertTypeO5titleSSvg', symObjAddr: 0x0, symBinAddr: 0x183630, symSize: 0x110 } + - { offset: 0x217851, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ClosureAlertTypeO5titleSSvg', symObjAddr: 0x0, symBinAddr: 0x183630, symSize: 0x110 } + - { offset: 0x217EE1, size: 0x8, addend: 0x0, symName: '_$sSTsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lF9CryptoKit12SHA256DigestV_SSs5NeverOTg540$sSS8PenNavUIE6sha256SSyFSSs5UInt8VXEfU_Tf1cn_n', symObjAddr: 0x1820, symBinAddr: 0x184EF0, symSize: 0x330 } + - { offset: 0x2183EB, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE17heightForWithFont4font5width6insets12CoreGraphics7CGFloatVSo6UIFontC_AHSo12UIEdgeInsetsVtF', symObjAddr: 0x0, symBinAddr: 0x183740, symSize: 0x180 } + - { offset: 0x2184B7, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE10lineSpaced_4fontSo18NSAttributedStringC12CoreGraphics7CGFloatV_So6UIFontCtF', symObjAddr: 0x180, symBinAddr: 0x1838C0, symSize: 0x1F0 } + - { offset: 0x218786, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE6sha256SSyF', symObjAddr: 0xA80, symBinAddr: 0x1841C0, symSize: 0x1A0 } + - { offset: 0x218885, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE6toDate6format10Foundation0E0VSgSS_tF', symObjAddr: 0xC20, symBinAddr: 0x184360, symSize: 0x260 } + - { offset: 0x218AC2, size: 0x8, addend: 0x0, symName: '_$sSo18NSAttributedStringC8PenNavUIE30updatingFontForWordsContaining_4fontABSS_So6UIFontCtF', symObjAddr: 0xE80, symBinAddr: 0x1845C0, symSize: 0x4A0 } + - { offset: 0x218E97, size: 0x8, addend: 0x0, symName: '_$sSo18NSAttributedStringC8PenNavUIE12applyingFont_5afterABSo6UIFontC_SaySSGtF', symObjAddr: 0x14E0, symBinAddr: 0x184C20, symSize: 0x290 } + - { offset: 0x219058, size: 0x8, addend: 0x0, symName: '_$ss16PartialRangeFromVySS5IndexVGMa', symObjAddr: 0x17E0, symBinAddr: 0x184EB0, symSize: 0x40 } + - { offset: 0x2191D5, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationO22withUnsafeMutableBytesyxxSwKXEKlFs16IndexingIteratorVySS8UTF8ViewVG_Sit_Tg5', symObjAddr: 0x1B50, symBinAddr: 0x185220, symSize: 0x4B0 } + - { offset: 0x21931B, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufcAC15_RepresentationOSWXEfU_', symObjAddr: 0x2000, symBinAddr: 0x1856D0, symSize: 0xA0 } + - { offset: 0x2193A0, size: 0x8, addend: 0x0, symName: '_$sSw17withMemoryRebound2to_q0_xm_q0_SryxGq_YKXEtq_YKs5ErrorR_Ri_zRi_0_r1_lFs5UInt8V_s5NeverOs16IndexingIteratorVySS8UTF8ViewVG_SitTt1g5', symObjAddr: 0x20A0, symBinAddr: 0x185770, symSize: 0x50 } + - { offset: 0x2193D3, size: 0x8, addend: 0x0, symName: '_$s10Foundation13__DataStorageC22withUnsafeMutableBytes2in5applyxSnySiG_xSwKXEtKlFs16IndexingIteratorVySS8UTF8ViewVG_Sit_Tg5', symObjAddr: 0x20F0, symBinAddr: 0x1857C0, symSize: 0xA0 } + - { offset: 0x21942F, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufc8IteratorQz_SitSwXEfU1_AI_SitSryAEGXEfU_SS8UTF8ViewV_TG5', symObjAddr: 0x2190, symBinAddr: 0x185860, symSize: 0x60 } + - { offset: 0x21950E, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationO15withUnsafeBytesyxxSWKXEKlFyt_Tg5063$s9CryptoKit12HashFunctionPAAE6update4datayqd___t10Foundation12B70ProtocolRd__lFy7Regions_7ElementQYd__XEfU_ySWXEfU_AA6SHA256V_AF0H0VTg50H3Kit0X0VTf1ncn_n', symObjAddr: 0x21F0, symBinAddr: 0x1858C0, symSize: 0x1D0 } + - { offset: 0x21961A, size: 0x8, addend: 0x0, symName: '_$s10Foundation13__DataStorageC15withUnsafeBytes2in5applyxSnySiG_xSWKXEtKlFyt_Tg5063$s9CryptoKit12HashFunctionPAAE6update4datayqd___t10Foundation12B70ProtocolRd__lFy7Regions_7ElementQYd__XEfU_ySWXEfU_AA6SHA256V_AF0H0VTg50J3Kit0Z0VTf1nncn_n', symObjAddr: 0x23C0, symBinAddr: 0x185A90, symSize: 0xB0 } + - { offset: 0x219685, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV06InlineB0VyAESWcfCTf4nd_n', symObjAddr: 0x2520, symBinAddr: 0x185B40, symSize: 0xD0 } + - { offset: 0x219708, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV10LargeSliceVyAESWcfCTf4nd_n', symObjAddr: 0x25F0, symBinAddr: 0x185C10, symSize: 0x80 } + - { offset: 0x219735, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV11InlineSliceVyAESWcfCTf4nd_n', symObjAddr: 0x2670, symBinAddr: 0x185C90, symSize: 0x70 } + - { offset: 0x21978A, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationOyAESWcfCTf4nd_n', symObjAddr: 0x26E0, symBinAddr: 0x185D00, symSize: 0x70 } + - { offset: 0x2197DB, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataV15_RepresentationO5countAESi_tcfCTf4nd_n', symObjAddr: 0x2750, symBinAddr: 0x185D70, symSize: 0xC0 } + - { offset: 0x219846, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufc8IteratorQz_SitSwXEfU1_SS8UTF8ViewV_TG5TA', symObjAddr: 0x2810, symBinAddr: 0x185E30, symSize: 0x50 } + - { offset: 0x219884, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufc8IteratorQz_SitSwXEfU1_AI_SitSryAEGXEfU_SS8UTF8ViewV_TG5TA', symObjAddr: 0x2900, symBinAddr: 0x185E80, symSize: 0x20 } + - { offset: 0x219898, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeya_yptWOc', symObjAddr: 0x2920, symBinAddr: 0x185EA0, symSize: 0x40 } + - { offset: 0x219945, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DataVyACxcSTRzs5UInt8V7ElementRtzlufCSS8UTF8ViewV_Tt0g5', symObjAddr: 0x370, symBinAddr: 0x183AB0, symSize: 0x710 } + - { offset: 0x219F4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC10backButtonSo8UIButtonCvg', symObjAddr: 0x0, symBinAddr: 0x185EE0, symSize: 0x60 } + - { offset: 0x21A0FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlCfETo', symObjAddr: 0x970, symBinAddr: 0x186850, symSize: 0x40 } + - { offset: 0x21A129, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlCMa', symObjAddr: 0x9B0, symBinAddr: 0x186890, symSize: 0x20 } + - { offset: 0x21A1AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC10backButtonSo8UIButtonCvg', symObjAddr: 0x0, symBinAddr: 0x185EE0, symSize: 0x60 } + - { offset: 0x21A1C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC10backButtonSo8UIButtonCvgAFyXEfU_', symObjAddr: 0x60, symBinAddr: 0x185F40, symSize: 0x270 } + - { offset: 0x21A2C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlCACycfcTo', symObjAddr: 0x2D0, symBinAddr: 0x1861B0, symSize: 0xB0 } + - { offset: 0x21A319, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x380, symBinAddr: 0x186260, symSize: 0xB0 } + - { offset: 0x21A34E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x430, symBinAddr: 0x186310, symSize: 0x30 } + - { offset: 0x21A395, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC9setupView33_5733A01A08E10C5381DDE5E0766214B3LLyyF', symObjAddr: 0x460, symBinAddr: 0x186340, symSize: 0x450 } + - { offset: 0x21A4D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC16backButtonTappedyyFTo', symObjAddr: 0x8B0, symBinAddr: 0x186790, symSize: 0x60 } + - { offset: 0x21A53C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x910, symBinAddr: 0x1867F0, symSize: 0x30 } + - { offset: 0x21A59B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11BackControlCfD', symObjAddr: 0x940, symBinAddr: 0x186820, symSize: 0x30 } + - { offset: 0x21A97B, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE18substituteFontNameSSvgTo', symObjAddr: 0x0, symBinAddr: 0x1868B0, symSize: 0xA0 } + - { offset: 0x21A9BA, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE18substituteFontNameSSvsTo', symObjAddr: 0xA0, symBinAddr: 0x186950, symSize: 0x50 } + - { offset: 0x21A9D6, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE18substituteFontNameSSvs', symObjAddr: 0xF0, symBinAddr: 0x1869A0, symSize: 0xD00 } + - { offset: 0x21AB6F, size: 0x8, addend: 0x0, symName: '_$s10Foundation6LocaleVSgWOh', symObjAddr: 0x1CD0, symBinAddr: 0x188500, symSize: 0x30 } + - { offset: 0x21AFCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC08insertOre4LastE4Data9tableName10dateStringyAA0abdL0O_SSSgtF', symObjAddr: 0x0, symBinAddr: 0x188570, symSize: 0x490 } + - { offset: 0x21B155, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryCMa', symObjAddr: 0xAF0, symBinAddr: 0x189060, symSize: 0x20 } + - { offset: 0x21B169, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC18getLastUpdatedDate9tableNameSSAA0abdL0O_tFyyYbXEfU_TA', symObjAddr: 0xB40, symBinAddr: 0x1890B0, symSize: 0x20 } + - { offset: 0x21B17D, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xBA0, symBinAddr: 0x1890F0, symSize: 0x20 } + - { offset: 0x21B191, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xBC0, symBinAddr: 0x189110, symSize: 0x10 } + - { offset: 0x21B1A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC08insertOre4LastE4Data9tableName10dateStringyAA0abdL0O_SSSgtFyyYbXEfU_TA', symObjAddr: 0xCC0, symBinAddr: 0x189160, symSize: 0x20 } + - { offset: 0x21B3C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC08insertOre4LastE4Data9tableName10dateStringyAA0abdL0O_SSSgtF', symObjAddr: 0x0, symBinAddr: 0x188570, symSize: 0x490 } + - { offset: 0x21B511, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC08insertOre4LastE4Data9tableName10dateStringyAA0abdL0O_SSSgtFyyYbXEfU_', symObjAddr: 0x490, symBinAddr: 0x188A00, symSize: 0x220 } + - { offset: 0x21B5DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC18getLastUpdatedDate9tableNameSSAA0abdL0O_tF', symObjAddr: 0x6B0, symBinAddr: 0x188C20, symSize: 0x1B0 } + - { offset: 0x21B67F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC18getLastUpdatedDate9tableNameSSAA0abdL0O_tFyyYbXEfU_', symObjAddr: 0x860, symBinAddr: 0x188DD0, symSize: 0x260 } + - { offset: 0x21B92D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryCfD', symObjAddr: 0xAC0, symBinAddr: 0x189030, symSize: 0x30 } + - { offset: 0x21B96D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22TableUpdateRespositoryC21deleteLastUpdatedDate9tableNameyAA0abdL0O_tFTf4dn_n', symObjAddr: 0xCE0, symBinAddr: 0x189180, symSize: 0x260 } + - { offset: 0x21C12C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CGTransformingPatternCMa', symObjAddr: 0x100, symBinAddr: 0x189510, symSize: 0x20 } + - { offset: 0x21C140, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwxx', symObjAddr: 0x150, symBinAddr: 0x189530, symSize: 0x10 } + - { offset: 0x21C154, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwcp', symObjAddr: 0x160, symBinAddr: 0x189540, symSize: 0x40 } + - { offset: 0x21C168, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwca', symObjAddr: 0x1A0, symBinAddr: 0x189580, symSize: 0x80 } + - { offset: 0x21C17C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwta', symObjAddr: 0x250, symBinAddr: 0x189600, symSize: 0x40 } + - { offset: 0x21C190, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwet', symObjAddr: 0x290, symBinAddr: 0x189640, symSize: 0x40 } + - { offset: 0x21C1A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVwst', symObjAddr: 0x2D0, symBinAddr: 0x189680, symSize: 0x50 } + - { offset: 0x21C1B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVMa', symObjAddr: 0x320, symBinAddr: 0x1896D0, symSize: 0x10 } + - { offset: 0x21C1CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVMa', symObjAddr: 0x330, symBinAddr: 0x1896E0, symSize: 0x10 } + - { offset: 0x21C1E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA9BlendModeAaDP_SQWT', symObjAddr: 0x340, symBinAddr: 0x1896F0, symSize: 0x30 } + - { offset: 0x21C1F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA5ColorAaDP_SQWT', symObjAddr: 0x370, symBinAddr: 0x189720, symSize: 0x30 } + - { offset: 0x21C208, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA8FillRuleAaDP_SQWT', symObjAddr: 0x3A0, symBinAddr: 0x189750, symSize: 0x30 } + - { offset: 0x21C21C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA5FloatAaDP_SQWT', symObjAddr: 0x3D0, symBinAddr: 0x189780, symSize: 0x10 } + - { offset: 0x21C230, size: 0x8, addend: 0x0, symName: '_$s12CoreGraphics7CGFloatVACSQAAWl', symObjAddr: 0x3E0, symBinAddr: 0x189790, symSize: 0x30 } + - { offset: 0x21C244, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA8GradientAaDP_SQWT', symObjAddr: 0x410, symBinAddr: 0x1897C0, symSize: 0x30 } + - { offset: 0x21C258, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA5ImageAaDP_SQWT', symObjAddr: 0x440, symBinAddr: 0x1897F0, symSize: 0x30 } + - { offset: 0x21C26C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA7LineCapAaDP_SQWT', symObjAddr: 0x470, symBinAddr: 0x189820, symSize: 0x30 } + - { offset: 0x21C280, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA8LineJoinAaDP_SQWT', symObjAddr: 0x4A0, symBinAddr: 0x189850, symSize: 0x30 } + - { offset: 0x21C294, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA4PathAaDP_SQWT', symObjAddr: 0x4D0, symBinAddr: 0x189880, symSize: 0x30 } + - { offset: 0x21C2A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA7PatternAaDP_SQWT', symObjAddr: 0x500, symBinAddr: 0x1898B0, symSize: 0x20 } + - { offset: 0x21C2BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA5PointAaDP_SQWT', symObjAddr: 0x520, symBinAddr: 0x1898D0, symSize: 0x30 } + - { offset: 0x21C2D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA4RectAaDP_SQWT', symObjAddr: 0x550, symBinAddr: 0x189900, symSize: 0x30 } + - { offset: 0x21C2E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA4SizeAaDP_SQWT', symObjAddr: 0x580, symBinAddr: 0x189930, symSize: 0x30 } + - { offset: 0x21C2F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAA13RendererTypesAA9TransformAaDP_SQWT', symObjAddr: 0x5B0, symBinAddr: 0x189960, symSize: 0x30 } + - { offset: 0x21C30C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7CGTypesVAcA13RendererTypesAAWl', symObjAddr: 0x610, symBinAddr: 0x189990, symSize: 0x30 } + - { offset: 0x21C6E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererV7setFill7patternyAA21CGTransformingPatternC_tFySo12CGContextRefacAGcfu_yAIcfu0_TA', symObjAddr: 0xE60, symBinAddr: 0x18A1D0, symSize: 0x10 } + - { offset: 0x21C722, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA7CGTypesVGWOc', symObjAddr: 0xEB0, symBinAddr: 0x18A1E0, symSize: 0x40 } + - { offset: 0x21C736, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA7CGTypesVGWOh', symObjAddr: 0xEF0, symBinAddr: 0x18A220, symSize: 0x30 } + - { offset: 0x21C751, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererVWOh', symObjAddr: 0xF20, symBinAddr: 0x18A250, symSize: 0x20 } + - { offset: 0x21C964, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderVMa', symObjAddr: 0x1570, symBinAddr: 0x18A8A0, symSize: 0x10 } + - { offset: 0x21CC3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CGTransformingPatternC4drawyySo12CGContextRefaF', symObjAddr: 0x0, symBinAddr: 0x189410, symSize: 0xE0 } + - { offset: 0x21CDBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21CGTransformingPatternCfD', symObjAddr: 0xE0, symBinAddr: 0x1894F0, symSize: 0x20 } + - { offset: 0x21CEF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGRendererV7setFill7patternyAA21CGTransformingPatternC_tF', symObjAddr: 0x650, symBinAddr: 0x1899C0, symSize: 0x310 } + - { offset: 0x21D082, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV10createPath33_7E47ACCE2CDCE5B8B63E9B3009B7E758LL4fromSo9CGPathRefaAA9LayerTreeO0F0C_tFTf4nd_n', symObjAddr: 0x960, symBinAddr: 0x189CD0, symSize: 0x1B0 } + - { offset: 0x21D30C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV10createPath4fromSo9CGPathRefaAA9LayerTreeO5ShapeO_tFTf4nd_n', symObjAddr: 0xB10, symBinAddr: 0x189E80, symSize: 0x350 } + - { offset: 0x21D7B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV10createPath4from2at4withSo9CGPathRefaSgSS_AA9LayerTreeO5PointVAL14TextAttributesVtFTf4nnnd_n', symObjAddr: 0xF40, symBinAddr: 0x18A270, symSize: 0xF0 } + - { offset: 0x21D8B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV10createPath4fromSo9CGPathRefaSayAGG_tFTf4nd_n', symObjAddr: 0x1030, symBinAddr: 0x18A360, symSize: 0x120 } + - { offset: 0x21DB00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV11createColor4fromSo10CGColorRefaAA9LayerTreeO0F0O_tFTf4nd_n', symObjAddr: 0x1150, symBinAddr: 0x18A480, symSize: 0x200 } + - { offset: 0x21DE06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10CGProviderV14createGradient4fromSo13CGGradientRefaAA9LayerTreeO0F0V_tFTf4nd_n', symObjAddr: 0x1350, symBinAddr: 0x18A680, symSize: 0x220 } + - { offset: 0x21E60E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataC07poiViewG015showsMoreButtonAcA03PoiiG0C_Sbtcfc', symObjAddr: 0x0, symBinAddr: 0x18A8E0, symSize: 0xC0 } + - { offset: 0x21E69A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataCMa', symObjAddr: 0x100, symBinAddr: 0x18A9E0, symSize: 0x20 } + - { offset: 0x21E6AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataC07poiViewG015showsMoreButtonAcA03PoiiG0C_Sbtcfc', symObjAddr: 0x0, symBinAddr: 0x18A8E0, symSize: 0xC0 } + - { offset: 0x21E721, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataCfD', symObjAddr: 0xC0, symBinAddr: 0x18A9A0, symSize: 0x40 } + - { offset: 0x21E75A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17TopActionCellDataC13messageDetailAcA07MessageI0C_tcfcTf4gn_n', symObjAddr: 0x120, symBinAddr: 0x18AA00, symSize: 0x8B } + - { offset: 0x21ED05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseCMa', symObjAddr: 0x1A0, symBinAddr: 0x18AAD0, symSize: 0x20 } + - { offset: 0x21ED19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOAFs0G3KeyAAWl', symObjAddr: 0x4F0, symBinAddr: 0x18ADB0, symSize: 0x30 } + - { offset: 0x21ED2D, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI9AmenitiesVGMa', symObjAddr: 0x550, symBinAddr: 0x18ADE0, symSize: 0x30 } + - { offset: 0x21ED41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOMa', symObjAddr: 0x780, symBinAddr: 0x18AE70, symSize: 0x10 } + - { offset: 0x21ED55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOSHAASQWb', symObjAddr: 0x790, symBinAddr: 0x18AE80, symSize: 0x10 } + - { offset: 0x21ED69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOAFSQAAWl', symObjAddr: 0x7A0, symBinAddr: 0x18AE90, symSize: 0x30 } + - { offset: 0x21ED7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x7D0, symBinAddr: 0x18AEC0, symSize: 0x10 } + - { offset: 0x21ED91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x7E0, symBinAddr: 0x18AED0, symSize: 0x30 } + - { offset: 0x21EDA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x810, symBinAddr: 0x18AF00, symSize: 0x10 } + - { offset: 0x21EDB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x820, symBinAddr: 0x18AF10, symSize: 0x2D } + - { offset: 0x21EDE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x140, symBinAddr: 0x18AA90, symSize: 0x20 } + - { offset: 0x21EE03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC10CodingKeys33_8885278A1E98E79B2B7A554B73942BC4LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x160, symBinAddr: 0x18AAB0, symSize: 0x20 } + - { offset: 0x21EE47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x1C0, symBinAddr: 0x18AAF0, symSize: 0xF0 } + - { offset: 0x21EE78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x2B0, symBinAddr: 0x18ABE0, symSize: 0x160 } + - { offset: 0x21EEB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x410, symBinAddr: 0x18AD40, symSize: 0x50 } + - { offset: 0x21EEDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20GetAmenitiesResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x460, symBinAddr: 0x18AD90, symSize: 0x20 } + - { offset: 0x21F919, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC26extendPathToSharedLocationyy7Penguin03SubH0C_AE5FloorCtF', symObjAddr: 0x20, symBinAddr: 0x18AF40, symSize: 0x410 } + - { offset: 0x22009E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14setStartMarker9floorPath010startPointI08renderery7Penguin03SubK0C_So7UIImageCSg0O10INRenderer10PIRendererCSgtF', symObjAddr: 0x430, symBinAddr: 0x18B350, symSize: 0xAB0 } + - { offset: 0x220951, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEndMarker9floorPath08endPointI0y7Penguin03SubK0CSg_So7UIImageCSgtF', symObjAddr: 0xEE0, symBinAddr: 0x18BE00, symSize: 0x6E0 } + - { offset: 0x220EA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtF', symObjAddr: 0x15C0, symBinAddr: 0x18C4E0, symSize: 0x8E0 } + - { offset: 0x2217AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtFySo7UIImageCSgcfU_', symObjAddr: 0x1EA0, symBinAddr: 0x18CDC0, symSize: 0x70 } + - { offset: 0x2217EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtFySo7UIImageCSgcfU0_', symObjAddr: 0x1F10, symBinAddr: 0x18CE30, symSize: 0x60 } + - { offset: 0x221941, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tF', symObjAddr: 0x1F70, symBinAddr: 0x18CE90, symSize: 0x11E0 } + - { offset: 0x22263C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tFySbcfU0_', symObjAddr: 0x3150, symBinAddr: 0x18E070, symSize: 0x120 } + - { offset: 0x22271B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tFySo7UIImageCSgcfU1_Tf4nndn_n', symObjAddr: 0x93B0, symBinAddr: 0x194230, symSize: 0x430 } + - { offset: 0x222A0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC022removeConflictGateWithD6Marker33_135AC583F61BE0A660F84997D71AC5B4LLyy7Penguin10PILocationCSgF', symObjAddr: 0x3270, symBinAddr: 0x18E190, symSize: 0xE50 } + - { offset: 0x2235CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21drawRoutePathAndSigns5floor8location10refreshPOIy7Penguin5FloorCSg_AH10PILocationCSgSbtF', symObjAddr: 0x40C0, symBinAddr: 0x18EFE0, symSize: 0x300 } + - { offset: 0x223925, size: 0x8, addend: 0x0, symName: '_$s7Penguin8NodeTypeOACSQAAWl', symObjAddr: 0x4400, symBinAddr: 0x18F2E0, symSize: 0x40 } + - { offset: 0x223939, size: 0x8, addend: 0x0, symName: '_$s7Penguin8NodeTypeOSgWOc', symObjAddr: 0x4440, symBinAddr: 0x18F320, symSize: 0x40 } + - { offset: 0x223B69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8getImage3for2onSo7UIImageCSg7Penguin11SubPathNodeCSg_AJ0mN0CSgtFTf4nnd_n', symObjAddr: 0x4500, symBinAddr: 0x18F380, symSize: 0x18A0 } + - { offset: 0x22418F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21detectStartMarkerType9floorPath10completiony7Penguin03SubL0C_ySo7UIImageCSgctF03$s8ab4UI24def37C010drawMapAndB4Line_5floory7Penguin7ol17C_AF5FloorCtFySo7P7CSgcfU_ACSgXwz_XxAI0N10INRenderer10PIRendererCTf1ncn_nTf4nnggg_n', symObjAddr: 0x5DA0, symBinAddr: 0x190C20, symSize: 0x1BB0 } + - { offset: 0x224F04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21detectStartMarkerType9floorPath10completiony7Penguin03SubL0C_ySo7UIImageCSgctF03$s8ab4UI24def28C13drawRoutePathyy7Penguin03o10I0CSgFySo7P7CSgcfU_ACSgXwz_XxAITf1ncn_nTf4nngg_n', symObjAddr: 0x7950, symBinAddr: 0x1927D0, symSize: 0x1A60 } + - { offset: 0x225C92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19detectEndMarkerType9floorPath09isLastSubL010completiony7Penguin0oL0CSg_SbySo7UIImageCSgctF03$s8ab4UI24def47C23drawNextSubpathIfNeeded07currentI0y7Penguin7ol8C_tFySo7R8CSgcfU1_AJSi0Q10INRenderer10PIRendererCTf1nncn_nTf4nndgng_n', symObjAddr: 0x97E0, symBinAddr: 0x194660, symSize: 0x650 } + - { offset: 0x226134, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tFySbcfU0_TA', symObjAddr: 0xA570, symBinAddr: 0x1953F0, symSize: 0x20 } + - { offset: 0x226148, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23drawNextSubpathIfNeeded07currentI0y7Penguin7SubPathC_tFySo7UIImageCSgcfU1_TA', symObjAddr: 0xA650, symBinAddr: 0x195480, symSize: 0x20 } + - { offset: 0x226171, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtFySo7UIImageCSgcfU0_TA', symObjAddr: 0xA680, symBinAddr: 0x1954B0, symSize: 0x20 } + - { offset: 0x226185, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010drawMapAndB4Line_5floory7Penguin7SubPathC_AF5FloorCtFySo7UIImageCSgcfU_TA', symObjAddr: 0xA6E0, symBinAddr: 0x195510, symSize: 0x20 } + - { offset: 0x226199, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13drawRoutePathyy7Penguin03SubI0CSgFySo7UIImageCSgcfU_TA', symObjAddr: 0xA750, symBinAddr: 0x195530, symSize: 0x20 } + - { offset: 0x2272D9, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010venueGatesD0_WZ', symObjAddr: 0x0, symBinAddr: 0x1955A0, symSize: 0x290 } + - { offset: 0x2272FD, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010venueGatesD0ACvpZ', symObjAddr: 0x10BD8, symBinAddr: 0x3BD148, symSize: 0x0 } + - { offset: 0x227317, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010floorNodesD0ACvpZ', symObjAddr: 0x10BE0, symBinAddr: 0x3BD150, symSize: 0x0 } + - { offset: 0x227331, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010floorGatesD0ACvpZ', symObjAddr: 0x10BE8, symBinAddr: 0x3BD158, symSize: 0x0 } + - { offset: 0x22734B, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012venueSymbolsD0ACvpZ', symObjAddr: 0x10BF0, symBinAddr: 0x3BD160, symSize: 0x0 } + - { offset: 0x227365, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012campusSymbolD0ACvpZ', symObjAddr: 0x10BF8, symBinAddr: 0x3BD168, symSize: 0x0 } + - { offset: 0x22737F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012campusBorderD0ACvpZ', symObjAddr: 0x10C00, symBinAddr: 0x3BD170, symSize: 0x0 } + - { offset: 0x227399, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09routeLineD0ACvpZ', symObjAddr: 0x10C08, symBinAddr: 0x3BD178, symSize: 0x0 } + - { offset: 0x2273B3, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE015routeLineCasingD0ACvpZ', symObjAddr: 0x10C10, symBinAddr: 0x3BD180, symSize: 0x0 } + - { offset: 0x2273CD, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012progressLineD0ACvpZ', symObjAddr: 0x10C18, symBinAddr: 0x3BD188, symSize: 0x0 } + - { offset: 0x2273E7, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE015linkedRouteLineD0ACvpZ', symObjAddr: 0x10C20, symBinAddr: 0x3BD190, symSize: 0x0 } + - { offset: 0x227401, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021linkedRouteLineCasingD0ACvpZ', symObjAddr: 0x10C28, symBinAddr: 0x3BD198, symSize: 0x0 } + - { offset: 0x22741B, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE018progressLineCasingD0ACvpZ', symObjAddr: 0x10C30, symBinAddr: 0x3BD1A0, symSize: 0x0 } + - { offset: 0x227435, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013campusPolygonD0ACvpZ', symObjAddr: 0x10C38, symBinAddr: 0x3BD1A8, symSize: 0x0 } + - { offset: 0x22744F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019campusPolygonBorderD0ACvpZ', symObjAddr: 0x10C40, symBinAddr: 0x3BD1B0, symSize: 0x0 } + - { offset: 0x227469, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE011venueModelsD0ACvpZ', symObjAddr: 0x10C48, symBinAddr: 0x3BD1B8, symSize: 0x0 } + - { offset: 0x227483, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021extrudedVenuePolygonsD0ACvpZ', symObjAddr: 0x10C50, symBinAddr: 0x3BD1C0, symSize: 0x0 } + - { offset: 0x22749D, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013venuePolygonsD0ACvpZ', symObjAddr: 0x10C58, symBinAddr: 0x3BD1C8, symSize: 0x0 } + - { offset: 0x2274B7, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019venuePolygonBordersD0ACvpZ', symObjAddr: 0x10C60, symBinAddr: 0x3BD1D0, symSize: 0x0 } + - { offset: 0x2274D1, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE018outdoorPoiPolygonsD0ACvpZ', symObjAddr: 0x10C68, symBinAddr: 0x3BD1D8, symSize: 0x0 } + - { offset: 0x2274EB, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE024outdoorPoiPolygonBordersD0ACvpZ', symObjAddr: 0x10C70, symBinAddr: 0x3BD1E0, symSize: 0x0 } + - { offset: 0x227505, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017outdoorPoiSymbolsD0ACvpZ', symObjAddr: 0x10C78, symBinAddr: 0x3BD1E8, symSize: 0x0 } + - { offset: 0x22751F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09poiModelsD0ACvpZ', symObjAddr: 0x10C80, symBinAddr: 0x3BD1F0, symSize: 0x0 } + - { offset: 0x227539, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019extrudedPoiPolygonsD0ACvpZ', symObjAddr: 0x10C88, symBinAddr: 0x3BD1F8, symSize: 0x0 } + - { offset: 0x227553, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE016indoorPoiSymbolsD0ACvpZ', symObjAddr: 0x10C90, symBinAddr: 0x3BD200, symSize: 0x0 } + - { offset: 0x22756D, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE022outdoorLandmarkSymbolsD0ACvpZ', symObjAddr: 0x10C98, symBinAddr: 0x3BD208, symSize: 0x0 } + - { offset: 0x227588, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021indoorLandmarkSymbolsD0ACvpZ', symObjAddr: 0x10CA0, symBinAddr: 0x3BD210, symSize: 0x0 } + - { offset: 0x2275A3, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017indoorPoiPolygonsD0ACvpZ', symObjAddr: 0x10CA8, symBinAddr: 0x3BD218, symSize: 0x0 } + - { offset: 0x2275BE, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE023indoorPoiPolygonBordersD0ACvpZ', symObjAddr: 0x10CB0, symBinAddr: 0x3BD220, symSize: 0x0 } + - { offset: 0x2275D9, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019highPrioritySymbolsD0ACvpZ', symObjAddr: 0x10CB8, symBinAddr: 0x3BD228, symSize: 0x0 } + - { offset: 0x2275F4, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017destinationSymbolD0ACvpZ', symObjAddr: 0x10CC0, symBinAddr: 0x3BD230, symSize: 0x0 } + - { offset: 0x22760F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019indoorSelectedPlaceD0ACvpZ', symObjAddr: 0x10CC8, symBinAddr: 0x3BD238, symSize: 0x0 } + - { offset: 0x22762A, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE020outdoorSelectedPlaceD0ACvpZ', symObjAddr: 0x10CD0, symBinAddr: 0x3BD240, symSize: 0x0 } + - { offset: 0x227645, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE05floorcD0ACvpZ', symObjAddr: 0x10CD8, symBinAddr: 0x3BD248, symSize: 0x0 } + - { offset: 0x227660, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09pathNodesD0ACvpZ', symObjAddr: 0x10CE0, symBinAddr: 0x3BD250, symSize: 0x0 } + - { offset: 0x22767B, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE022progressLineStartPointD0ACvpZ', symObjAddr: 0x10CE8, symBinAddr: 0x3BD258, symSize: 0x0 } + - { offset: 0x227696, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013objectSymbolsD0ACvpZ', symObjAddr: 0x10CF0, symBinAddr: 0x3BD260, symSize: 0x0 } + - { offset: 0x2276A4, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010venueGatesD0_WZ', symObjAddr: 0x0, symBinAddr: 0x1955A0, symSize: 0x290 } + - { offset: 0x2276FE, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010floorNodesD0_WZ', symObjAddr: 0x290, symBinAddr: 0x195830, symSize: 0x290 } + - { offset: 0x227758, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE010floorGatesD0_WZ', symObjAddr: 0x520, symBinAddr: 0x195AC0, symSize: 0x290 } + - { offset: 0x2277B2, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012venueSymbolsD0_WZ', symObjAddr: 0x7B0, symBinAddr: 0x195D50, symSize: 0x290 } + - { offset: 0x2277F7, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012campusSymbolD0_WZ', symObjAddr: 0xA40, symBinAddr: 0x195FE0, symSize: 0x290 } + - { offset: 0x22783C, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012campusBorderD0_WZ', symObjAddr: 0xCD0, symBinAddr: 0x196270, symSize: 0x210 } + - { offset: 0x227892, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09routeLineD0_WZ', symObjAddr: 0xEE0, symBinAddr: 0x196480, symSize: 0x250 } + - { offset: 0x2278ED, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE015routeLineCasingD0_WZ', symObjAddr: 0x1130, symBinAddr: 0x1966D0, symSize: 0x250 } + - { offset: 0x227972, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE012progressLineD0_WZ', symObjAddr: 0x1380, symBinAddr: 0x196920, symSize: 0x250 } + - { offset: 0x2279BC, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE015linkedRouteLineD0_WZ', symObjAddr: 0x15D0, symBinAddr: 0x196B70, symSize: 0x250 } + - { offset: 0x227A06, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021linkedRouteLineCasingD0_WZ', symObjAddr: 0x1820, symBinAddr: 0x196DC0, symSize: 0x250 } + - { offset: 0x227A8B, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE018progressLineCasingD0_WZ', symObjAddr: 0x1A70, symBinAddr: 0x197010, symSize: 0x250 } + - { offset: 0x227AFF, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013campusPolygonD0_WZ', symObjAddr: 0x1CC0, symBinAddr: 0x197260, symSize: 0x1F0 } + - { offset: 0x227B2F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019campusPolygonBorderD0_WZ', symObjAddr: 0x1EB0, symBinAddr: 0x197450, symSize: 0x1F0 } + - { offset: 0x227B5F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE011venueModelsD0_WZ', symObjAddr: 0x20A0, symBinAddr: 0x197640, symSize: 0x1E0 } + - { offset: 0x227B8F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021extrudedVenuePolygonsD0_WZ', symObjAddr: 0x2280, symBinAddr: 0x197820, symSize: 0x1E0 } + - { offset: 0x227BBF, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013venuePolygonsD0_WZ', symObjAddr: 0x2460, symBinAddr: 0x197A00, symSize: 0x1E0 } + - { offset: 0x227BEF, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019venuePolygonBordersD0_WZ', symObjAddr: 0x2640, symBinAddr: 0x197BE0, symSize: 0x1E0 } + - { offset: 0x227C1F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE018outdoorPoiPolygonsD0_WZ', symObjAddr: 0x2820, symBinAddr: 0x197DC0, symSize: 0x1E0 } + - { offset: 0x227C4F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE024outdoorPoiPolygonBordersD0_WZ', symObjAddr: 0x2A00, symBinAddr: 0x197FA0, symSize: 0x1E0 } + - { offset: 0x227C7F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017outdoorPoiSymbolsD0_WZ', symObjAddr: 0x2BE0, symBinAddr: 0x198180, symSize: 0x260 } + - { offset: 0x227CAF, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09poiModelsD0_WZ', symObjAddr: 0x2E40, symBinAddr: 0x1983E0, symSize: 0x1E0 } + - { offset: 0x227CDF, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019extrudedPoiPolygonsD0_WZ', symObjAddr: 0x3020, symBinAddr: 0x1985C0, symSize: 0x1E0 } + - { offset: 0x227D0F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE016indoorPoiSymbolsD0_WZ', symObjAddr: 0x3200, symBinAddr: 0x1987A0, symSize: 0x260 } + - { offset: 0x227D3F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE022outdoorLandmarkSymbolsD0_WZ', symObjAddr: 0x3460, symBinAddr: 0x198A00, symSize: 0x270 } + - { offset: 0x227D6F, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE021indoorLandmarkSymbolsD0_WZ', symObjAddr: 0x36D0, symBinAddr: 0x198C70, symSize: 0x270 } + - { offset: 0x227DA1, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017indoorPoiPolygonsD0_WZ', symObjAddr: 0x3940, symBinAddr: 0x198EE0, symSize: 0x1E0 } + - { offset: 0x227DD3, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE023indoorPoiPolygonBordersD0_WZ', symObjAddr: 0x3B20, symBinAddr: 0x1990C0, symSize: 0x1E0 } + - { offset: 0x227E05, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019highPrioritySymbolsD0_WZ', symObjAddr: 0x3D00, symBinAddr: 0x1992A0, symSize: 0x270 } + - { offset: 0x227E62, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017destinationSymbolD0_WZ', symObjAddr: 0x3FB0, symBinAddr: 0x199510, symSize: 0x290 } + - { offset: 0x227ED5, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE019indoorSelectedPlaceD0_WZ', symObjAddr: 0x4240, symBinAddr: 0x1997A0, symSize: 0x290 } + - { offset: 0x227F48, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE020outdoorSelectedPlaceD0_WZ', symObjAddr: 0x44D0, symBinAddr: 0x199A30, symSize: 0x290 } + - { offset: 0x227FBB, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE05floorcD0_WZ', symObjAddr: 0x4760, symBinAddr: 0x199CC0, symSize: 0x1D0 } + - { offset: 0x227FED, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE09pathNodesD0_WZ', symObjAddr: 0x4930, symBinAddr: 0x199E90, symSize: 0x290 } + - { offset: 0x22804B, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE022progressLineStartPointD0_WZ', symObjAddr: 0x4BC0, symBinAddr: 0x19A120, symSize: 0x1E0 } + - { offset: 0x2280A8, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE013objectSymbolsD0_WZ', symObjAddr: 0x4DA0, symBinAddr: 0x19A300, symSize: 0x1E0 } + - { offset: 0x2280DA, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE028getSelectedLocationIndicatorD07visibleACSb_tFZTf4nd_n', symObjAddr: 0x4F80, symBinAddr: 0x19A4E0, symSize: 0x220 } + - { offset: 0x22816D, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE017getAccuracyCircleD04fromAcD24LocationIndicatorManagerC_tFZTf4nd_n', symObjAddr: 0x51A0, symBinAddr: 0x19A700, symSize: 0x260 } + - { offset: 0x22822C, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer18LayerConfigurationC8PenNavUIE020getLocationIndicatorD04fromAA0ijcD0CAD0iJ7ManagerC_tFZTf4nd_n', symObjAddr: 0x5400, symBinAddr: 0x19A960, symSize: 0x41E } + - { offset: 0x228957, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC11amenityNameSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x19AD80, symSize: 0x20 } + - { offset: 0x228B66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellCfETo', symObjAddr: 0x600, symBinAddr: 0x19B380, symSize: 0x30 } + - { offset: 0x228B95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellCMa', symObjAddr: 0x630, symBinAddr: 0x19B3B0, symSize: 0x20 } + - { offset: 0x228CAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC11amenityNameSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x19AD80, symSize: 0x20 } + - { offset: 0x228D0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC11amenityNameSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x19ADA0, symSize: 0x20 } + - { offset: 0x228D5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC12amenityImageSo07UIImageF0CSgvgTo', symObjAddr: 0x40, symBinAddr: 0x19ADC0, symSize: 0x20 } + - { offset: 0x228DB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC12amenityImageSo07UIImageF0CSgvsTo', symObjAddr: 0x60, symBinAddr: 0x19ADE0, symSize: 0x20 } + - { offset: 0x228E0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC12awakeFromNibyyFTo', symObjAddr: 0x80, symBinAddr: 0x19AE00, symSize: 0x30 } + - { offset: 0x228E3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC15prepareForReuseyyFTo', symObjAddr: 0xB0, symBinAddr: 0x19AE30, symSize: 0x10 } + - { offset: 0x228E98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0xC0, symBinAddr: 0x19AE40, symSize: 0x50 } + - { offset: 0x228FE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC7setData7amenityyAA9AmenitiesV_tF', symObjAddr: 0x110, symBinAddr: 0x19AE90, symSize: 0x2D0 } + - { offset: 0x229185, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC7setData7amenityyAA9AmenitiesV_tFySo7UIImageCSgcfU_', symObjAddr: 0x3E0, symBinAddr: 0x19B160, symSize: 0x80 } + - { offset: 0x22922F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC5style15reuseIdentifierACSo07UITablefG5StyleV_SSSgtcfcTo', symObjAddr: 0x460, symBinAddr: 0x19B1E0, symSize: 0xD0 } + - { offset: 0x229289, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x530, symBinAddr: 0x19B2B0, symSize: 0xA0 } + - { offset: 0x2292C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellCfD', symObjAddr: 0x5D0, symBinAddr: 0x19B350, symSize: 0x30 } + - { offset: 0x2298A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewCfETo', symObjAddr: 0xA60, symBinAddr: 0x19BE30, symSize: 0x20 } + - { offset: 0x2298D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewCMa', symObjAddr: 0xA80, symBinAddr: 0x19BE50, symSize: 0x20 } + - { offset: 0x22992F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC26placeholderLocalizationKeySSvgTo', symObjAddr: 0x0, symBinAddr: 0x19B3D0, symSize: 0x20 } + - { offset: 0x229A7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC26placeholderLocalizationKeySSvsTo', symObjAddr: 0x20, symBinAddr: 0x19B3F0, symSize: 0x80 } + - { offset: 0x229AEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC4textSSSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x19B470, symSize: 0xB0 } + - { offset: 0x229B41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC4textSSSgvsTo', symObjAddr: 0x150, symBinAddr: 0x19B520, symSize: 0xA0 } + - { offset: 0x229C8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC4drawyySo6CGRectVF', symObjAddr: 0x1F0, symBinAddr: 0x19B5C0, symSize: 0x6C0 } + - { offset: 0x229F15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC4drawyySo6CGRectVFTo', symObjAddr: 0x8B0, symBinAddr: 0x19BC80, symSize: 0x70 } + - { offset: 0x229F5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC5frame13textContainerACSo6CGRectV_So06NSTextJ0CSgtcfcTo', symObjAddr: 0x920, symBinAddr: 0x19BCF0, symSize: 0x80 } + - { offset: 0x229FBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x9A0, symBinAddr: 0x19BD70, symSize: 0x90 } + - { offset: 0x229FF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26PlaceholderEnabledTextViewCfD', symObjAddr: 0xA30, symBinAddr: 0x19BE00, symSize: 0x30 } + - { offset: 0x22A471, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CampaignMessageVMa', symObjAddr: 0x310, symBinAddr: 0x19BF00, symSize: 0xA } + - { offset: 0x22A48C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CampaignMessageV5titleSSvs', symObjAddr: 0x30, symBinAddr: 0x19BE70, symSize: 0x30 } + - { offset: 0x22A4C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CampaignMessageV11descriptionSSvg', symObjAddr: 0x80, symBinAddr: 0x19BEA0, symSize: 0x30 } + - { offset: 0x22A4D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15CampaignMessageV11descriptionSSvs', symObjAddr: 0xB0, symBinAddr: 0x19BED0, symSize: 0x30 } + - { offset: 0x22A88C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCfE', symObjAddr: 0x0, symBinAddr: 0x19BF10, symSize: 0x20 } + - { offset: 0x22A8A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCfE', symObjAddr: 0x0, symBinAddr: 0x19BF10, symSize: 0x20 } + - { offset: 0x22A932, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCMU', symObjAddr: 0x80, symBinAddr: 0x19BF90, symSize: 0x10 } + - { offset: 0x22A946, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCMa', symObjAddr: 0x90, symBinAddr: 0x19BFA0, symSize: 0x30 } + - { offset: 0x22A991, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCfD', symObjAddr: 0x20, symBinAddr: 0x19BF30, symSize: 0x60 } + - { offset: 0x22A9F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6SwitchCAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0x100, symBinAddr: 0x19BFD0, symSize: 0x20 } + - { offset: 0x22AD99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseFiltersySayAA3DOMO6FilterCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0x19BFF0, symSize: 0x320 } + - { offset: 0x22AF60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseFiltersySayAA3DOMO6FilterCGAA3XMLO7ElementCKF', symObjAddr: 0x0, symBinAddr: 0x19BFF0, symSize: 0x320 } + - { offset: 0x22B4CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseFilteryAA3DOMO0F0CAA3XMLO7ElementCKFTf4nx_n', symObjAddr: 0xBF0, symBinAddr: 0x19CBE0, symSize: 0x470 } + - { offset: 0x22B8F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE10parseFloatySfSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_TG5TA', symObjAddr: 0x1090, symBinAddr: 0x19D050, symSize: 0x20 } + - { offset: 0x22B97B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE10parseFloatySfSSKFSfSSKXEfU_AA9XMLParserV10AttributesC_Tg5Tf4nd_n', symObjAddr: 0x1120, symBinAddr: 0x19D070, symSize: 0x1C5 } + - { offset: 0x22BCCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parseyxSS_xSSKXEtKlFSf_Tg5', symObjAddr: 0x320, symBinAddr: 0x19C310, symSize: 0x470 } + - { offset: 0x22BFCE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parseyxSS_xSSKXEtKlFSayAA3DOMO5PointVG_Tg5', symObjAddr: 0x790, symBinAddr: 0x19C780, symSize: 0x460 } + - { offset: 0x22C6F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateC12asDictionarySDyS2SGvg', symObjAddr: 0x0, symBinAddr: 0x19D240, symSize: 0x810 } + - { offset: 0x22C7D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateCMa', symObjAddr: 0x880, symBinAddr: 0x19DAC0, symSize: 0x20 } + - { offset: 0x22C8BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateC12asDictionarySDyS2SGvg', symObjAddr: 0x0, symBinAddr: 0x19D240, symSize: 0x810 } + - { offset: 0x22CF30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateCfd', symObjAddr: 0x810, symBinAddr: 0x19DA50, symSize: 0x50 } + - { offset: 0x22CF53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateCfD', symObjAddr: 0x860, symBinAddr: 0x19DAA0, symSize: 0x20 } + - { offset: 0x22CF9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ServiceRateC03newdE0ACyFZTf4d_n', symObjAddr: 0x8A0, symBinAddr: 0x19DAE0, symSize: 0x11A } + - { offset: 0x22D415, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x10, symBinAddr: 0x19DC00, symSize: 0x50 } + - { offset: 0x22D4EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x60, symBinAddr: 0x19DC50, symSize: 0x30 } + - { offset: 0x22D56B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x90, symBinAddr: 0x19DC80, symSize: 0x50 } + - { offset: 0x22D618, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x190, symBinAddr: 0x19DD70, symSize: 0x20 } + - { offset: 0x22D634, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x1B0, symBinAddr: 0x19DD90, symSize: 0x20 } + - { offset: 0x22D69B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x2A0, symBinAddr: 0x19DE50, symSize: 0x50 } + - { offset: 0x22D774, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x2F0, symBinAddr: 0x19DEA0, symSize: 0x30 } + - { offset: 0x22D7F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x320, symBinAddr: 0x19DED0, symSize: 0x50 } + - { offset: 0x22D89E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x4F0, symBinAddr: 0x19E080, symSize: 0x20 } + - { offset: 0x22D8BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x510, symBinAddr: 0x19E0A0, symSize: 0x20 } + - { offset: 0x22D8F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xA20, symBinAddr: 0x19E560, symSize: 0x70 } + - { offset: 0x22D9C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0xA90, symBinAddr: 0x19E5D0, symSize: 0x50 } + - { offset: 0x22DA45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0xAE0, symBinAddr: 0x19E620, symSize: 0x30 } + - { offset: 0x22DA97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0xB10, symBinAddr: 0x19E650, symSize: 0x50 } + - { offset: 0x22DAF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0xC10, symBinAddr: 0x19E740, symSize: 0x20 } + - { offset: 0x22DB15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0xC30, symBinAddr: 0x19E760, symSize: 0x20 } + - { offset: 0x22DBEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseCMa', symObjAddr: 0x1D0, symBinAddr: 0x19DDB0, symSize: 0x20 } + - { offset: 0x22DCDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseCMa', symObjAddr: 0x550, symBinAddr: 0x19E0C0, symSize: 0x20 } + - { offset: 0x22DEB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCMa', symObjAddr: 0xCE0, symBinAddr: 0x19E810, symSize: 0x20 } + - { offset: 0x22DECB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOAEs0H3KeyAAWl', symObjAddr: 0x1710, symBinAddr: 0x19F1D0, symSize: 0x30 } + - { offset: 0x22DEDF, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI13MessageDetailCGMa', symObjAddr: 0x1770, symBinAddr: 0x19F200, symSize: 0x40 } + - { offset: 0x22DEF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOAEs0H3KeyAAWl', symObjAddr: 0x17B0, symBinAddr: 0x19F240, symSize: 0x30 } + - { offset: 0x22DF07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOAEs0F3KeyAAWl', symObjAddr: 0x17E0, symBinAddr: 0x19F270, symSize: 0x30 } + - { offset: 0x22DF1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOwet', symObjAddr: 0x19B0, symBinAddr: 0x19F330, symSize: 0x80 } + - { offset: 0x22DF2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOwst', symObjAddr: 0x1A30, symBinAddr: 0x19F3B0, symSize: 0xD0 } + - { offset: 0x22DF43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOMa', symObjAddr: 0x1B30, symBinAddr: 0x19F480, symSize: 0x10 } + - { offset: 0x22DF57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOMa', symObjAddr: 0x1BA0, symBinAddr: 0x19F4B0, symSize: 0x10 } + - { offset: 0x22DF6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOMa', symObjAddr: 0x1CD0, symBinAddr: 0x19F4C0, symSize: 0x10 } + - { offset: 0x22DF7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x1CE0, symBinAddr: 0x19F4D0, symSize: 0x10 } + - { offset: 0x22DF93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x1CF0, symBinAddr: 0x19F4E0, symSize: 0x30 } + - { offset: 0x22DFA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x1D20, symBinAddr: 0x19F510, symSize: 0x10 } + - { offset: 0x22DFBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x1D30, symBinAddr: 0x19F520, symSize: 0x30 } + - { offset: 0x22DFCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSHAASQWb', symObjAddr: 0x1D60, symBinAddr: 0x19F550, symSize: 0x10 } + - { offset: 0x22DFE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOAESQAAWl', symObjAddr: 0x1D70, symBinAddr: 0x19F560, symSize: 0x30 } + - { offset: 0x22DFF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1DA0, symBinAddr: 0x19F590, symSize: 0x10 } + - { offset: 0x22E00B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1DB0, symBinAddr: 0x19F5A0, symSize: 0x30 } + - { offset: 0x22E01F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1DE0, symBinAddr: 0x19F5D0, symSize: 0x10 } + - { offset: 0x22E033, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1DF0, symBinAddr: 0x19F5E0, symSize: 0x30 } + - { offset: 0x22E047, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1E20, symBinAddr: 0x19F610, symSize: 0x10 } + - { offset: 0x22E05B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1E30, symBinAddr: 0x19F620, symSize: 0x30 } + - { offset: 0x22E06F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1E60, symBinAddr: 0x19F650, symSize: 0x10 } + - { offset: 0x22E083, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1E70, symBinAddr: 0x19F660, symSize: 0x30 } + - { offset: 0x22E097, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1EA0, symBinAddr: 0x19F690, symSize: 0x10 } + - { offset: 0x22E0AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1EB0, symBinAddr: 0x19F6A0, symSize: 0x30 } + - { offset: 0x22E0BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1EE0, symBinAddr: 0x19F6D0, symSize: 0x10 } + - { offset: 0x22E0D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1EF0, symBinAddr: 0x19F6E0, symSize: 0x30 } + - { offset: 0x22E0FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x100, symBinAddr: 0x19DCF0, symSize: 0x30 } + - { offset: 0x22E142, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x130, symBinAddr: 0x19DD20, symSize: 0x30 } + - { offset: 0x22E196, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetFloorAdsResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x270, symBinAddr: 0x19DE30, symSize: 0x20 } + - { offset: 0x22E1B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOSYAASY8rawValue03RawK0QzvgTW', symObjAddr: 0x3F0, symBinAddr: 0x19DFA0, symSize: 0x30 } + - { offset: 0x22E1FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseC10CodingKeysOs0H3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x420, symBinAddr: 0x19DFD0, symSize: 0x30 } + - { offset: 0x22E268, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18GetEdgeAdsResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x8C0, symBinAddr: 0x19E410, symSize: 0x20 } + - { offset: 0x22E296, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSYAASY8rawValuexSg03RawI0Qz_tcfCTW', symObjAddr: 0xB60, symBinAddr: 0x19E6A0, symSize: 0x30 } + - { offset: 0x22E2BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOSYAASY8rawValue03RawI0QzvgTW', symObjAddr: 0xB90, symBinAddr: 0x19E6D0, symSize: 0x30 } + - { offset: 0x22E2D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0xBC0, symBinAddr: 0x19E700, symSize: 0x10 } + - { offset: 0x22E2FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0xBD0, symBinAddr: 0x19E710, symSize: 0x20 } + - { offset: 0x22E346, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysOs0F3KeyAAsAFP8intValuexSgSi_tcfCTW', symObjAddr: 0xC00, symBinAddr: 0x19E730, symSize: 0x10 } + - { offset: 0x22E35A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCfd', symObjAddr: 0xC50, symBinAddr: 0x19E780, symSize: 0x70 } + - { offset: 0x22E37D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCfD', symObjAddr: 0xCC0, symBinAddr: 0x19E7F0, symSize: 0x20 } + - { offset: 0x22E3A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC6encode2toys7Encoder_p_tKF', symObjAddr: 0xD00, symBinAddr: 0x19E830, symSize: 0x380 } + - { offset: 0x22E3D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x1080, symBinAddr: 0x19EBB0, symSize: 0x5B0 } + - { offset: 0x22E40F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x1630, symBinAddr: 0x19F160, symSize: 0x50 } + - { offset: 0x22E438, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x1680, symBinAddr: 0x19F1B0, symSize: 0x20 } + - { offset: 0x22E452, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13MessageDetailC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x1F20, symBinAddr: 0x19F710, symSize: 0x60 } + - { offset: 0x22E81B, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE8makePathAC9LayerTreeO0G0CyF', symObjAddr: 0x0, symBinAddr: 0x19F7C0, symSize: 0x330 } + - { offset: 0x22EC51, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE8makePathAC9LayerTreeO0G0CyF', symObjAddr: 0x0, symBinAddr: 0x19F7C0, symSize: 0x330 } + - { offset: 0x22F061, size: 0x8, addend: 0x0, symName: '_$sSS8PenNavUIE6toPath4fontSo9CGPathRefaSgSo06CTFontH0a_tF', symObjAddr: 0x330, symBinAddr: 0x19FAF0, symSize: 0x3E0 } + - { offset: 0x22F471, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7doApply6actionyySo0A7ElementVc_tFySpyyAGcGXEfU_ySvSg_SPyAGGtcfU_To', symObjAddr: 0x750, symBinAddr: 0x19FED0, symSize: 0x50 } + - { offset: 0x22F50F, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE8segmentsSayAbCE7SegmentOGyFySo0A7ElementVcfU_', symObjAddr: 0x800, symBinAddr: 0x19FF80, symSize: 0x420 } + - { offset: 0x22F549, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE8segmentsSayAbCE7SegmentOGyFySo0A7ElementVcfU_', symObjAddr: 0x800, symBinAddr: 0x19FF80, symSize: 0x420 } + - { offset: 0x22FA29, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefa_So06CTFontB0atWOh', symObjAddr: 0xD50, symBinAddr: 0x1A04D0, symSize: 0x30 } + - { offset: 0x22FA3D, size: 0x8, addend: 0x0, symName: '_$sSo11CFStringRefaABSHSCWl', symObjAddr: 0xD80, symBinAddr: 0x1A0500, symSize: 0x40 } + - { offset: 0x22FA51, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE8segmentsSayAbCE7SegmentOGyFySo0A7ElementVcfU_TA', symObjAddr: 0xDE0, symBinAddr: 0x1A0560, symSize: 0x10 } + - { offset: 0x22FA70, size: 0x8, addend: 0x0, symName: '_$sSo13CGPathElementVIegy_ABytIegnr_TRTA', symObjAddr: 0xE10, symBinAddr: 0x1A0590, symSize: 0x30 } + - { offset: 0x22FA99, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOwet', symObjAddr: 0xEB0, symBinAddr: 0x1A05C0, symSize: 0x50 } + - { offset: 0x22FAAD, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOwst', symObjAddr: 0xF00, symBinAddr: 0x1A0610, symSize: 0x60 } + - { offset: 0x22FAC1, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOwug', symObjAddr: 0xF60, symBinAddr: 0x1A0670, symSize: 0x20 } + - { offset: 0x22FAD5, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOwui', symObjAddr: 0xF90, symBinAddr: 0x1A0690, symSize: 0x30 } + - { offset: 0x22FAE9, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOMa', symObjAddr: 0xFC0, symBinAddr: 0x1A06C0, symSize: 0xA } + - { offset: 0x22FBC4, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentOSQACSQ2eeoiySbx_xtFZTW', symObjAddr: 0x7A0, symBinAddr: 0x19FF20, symSize: 0x60 } + - { offset: 0x22FBED, size: 0x8, addend: 0x0, symName: '_$sSo9CGPathRefa8PenNavUIE7SegmentO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0xC20, symBinAddr: 0x1A03A0, symSize: 0x130 } + - { offset: 0x23000D, size: 0x8, addend: 0x0, symName: '_$s7Penguin5FloorC8PenNavUIE5venueAA5VenueCSgvg', symObjAddr: 0x0, symBinAddr: 0x1A06D0, symSize: 0x167 } + - { offset: 0x2300BF, size: 0x8, addend: 0x0, symName: '_$s7Penguin5FloorC8PenNavUIE5venueAA5VenueCSgvg', symObjAddr: 0x0, symBinAddr: 0x1A06D0, symSize: 0x167 } + - { offset: 0x23089A, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUIE13getMapElement4icon0A10INRenderer20FeatureConfigurationVSo7UIImageCSg_tF', symObjAddr: 0x2A0, symBinAddr: 0x1A0AA0, symSize: 0x5F0 } + - { offset: 0x23113D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC21remainingTripDistanceSdSgvg', symObjAddr: 0x0, symBinAddr: 0x1A1090, symSize: 0x180 } + - { offset: 0x231DDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerCMa', symObjAddr: 0x22F0, symBinAddr: 0x1A3380, symSize: 0x20 } + - { offset: 0x231E83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC21remainingTripDistanceSdSgvg', symObjAddr: 0x0, symBinAddr: 0x1A1090, symSize: 0x180 } + - { offset: 0x23207A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC22distanceToUpcomingTurnSdSgvg', symObjAddr: 0x180, symBinAddr: 0x1A1210, symSize: 0x2B0 } + - { offset: 0x232247, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC26distanceToNextUpcomingTurnSdSgvg', symObjAddr: 0x430, symBinAddr: 0x1A14C0, symSize: 0x2E0 } + - { offset: 0x232515, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC17instructionStringSo012NSAttributedG0CSgvg', symObjAddr: 0x710, symBinAddr: 0x1A17A0, symSize: 0xC70 } + - { offset: 0x232CBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC11setLocationyy7Penguin10PILocationCSgF', symObjAddr: 0x1380, symBinAddr: 0x1A2410, symSize: 0x150 } + - { offset: 0x232E8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC12getEstimates4from2to18isLastEdgeIncludedSd8distance_Sd8durationtSgAA5PlaceCSg_7Penguin07SubpathL0CSgSbtF', symObjAddr: 0x14D0, symBinAddr: 0x1A2560, symSize: 0x9B0 } + - { offset: 0x233ACA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC18mergeEdgesIfNeededyyF', symObjAddr: 0x1E80, symBinAddr: 0x1A2F10, symSize: 0x420 } + - { offset: 0x233FC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerCfD', symObjAddr: 0x22A0, symBinAddr: 0x1A3330, symSize: 0x50 } + - { offset: 0x234005, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC17mergeSimilarEdgesyySay7Penguin11SubpathEdgeCGzFTf4nd_n', symObjAddr: 0x2310, symBinAddr: 0x1A33A0, symSize: 0x3F0 } + - { offset: 0x234490, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC15getUpcomingTurn5after2in7Penguin11SubpathEdgeCSgAJ_SayAIGtFTf4nnd_n', symObjAddr: 0x2700, symBinAddr: 0x1A3790, symSize: 0x260 } + - { offset: 0x2348A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC15mergeShortEdgesyySay7Penguin11SubpathEdgeCGzFTf4nd_n', symObjAddr: 0x2960, symBinAddr: 0x1A39F0, symSize: 0x850 } + - { offset: 0x235225, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18InstructionManagerC28mergeTransitionEdgesIfNeededySay7Penguin11SubpathEdgeCGAHzFTf4nd_n', symObjAddr: 0x31B0, symBinAddr: 0x1A4240, symSize: 0x580 } + - { offset: 0x235BE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerCfD', symObjAddr: 0x0, symBinAddr: 0x1A47C0, symSize: 0x40 } + - { offset: 0x235C07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerC14sharedInstance33_167A10DA86CA0DE015B6435B6348F1E4LLACSgvpZ', symObjAddr: 0x108, symBinAddr: 0x3A3328, symSize: 0x0 } + - { offset: 0x235C8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerCMa', symObjAddr: 0x40, symBinAddr: 0x1A4800, symSize: 0x20 } + - { offset: 0x235CF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerCfD', symObjAddr: 0x0, symBinAddr: 0x1A47C0, symSize: 0x40 } + - { offset: 0x235D5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18PIAnalyticsManagerC6sharedACvgZTf4d_n', symObjAddr: 0x60, symBinAddr: 0x1A4820, symSize: 0xA3 } + - { offset: 0x2361A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVMr', symObjAddr: 0x10, symBinAddr: 0x1A48D0, symSize: 0x70 } + - { offset: 0x2361B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwCP', symObjAddr: 0x80, symBinAddr: 0x1A4940, symSize: 0x80 } + - { offset: 0x2361C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwxx', symObjAddr: 0x100, symBinAddr: 0x1A49C0, symSize: 0x20 } + - { offset: 0x2361DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwcp', symObjAddr: 0x120, symBinAddr: 0x1A49E0, symSize: 0x40 } + - { offset: 0x2361F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwca', symObjAddr: 0x160, symBinAddr: 0x1A4A20, symSize: 0x40 } + - { offset: 0x236204, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwtk', symObjAddr: 0x1A0, symBinAddr: 0x1A4A60, symSize: 0x40 } + - { offset: 0x236218, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwta', symObjAddr: 0x1E0, symBinAddr: 0x1A4AA0, symSize: 0x40 } + - { offset: 0x23622C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwet', symObjAddr: 0x220, symBinAddr: 0x1A4AE0, symSize: 0x120 } + - { offset: 0x236240, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVwst', symObjAddr: 0x340, symBinAddr: 0x1A4C00, symSize: 0x230 } + - { offset: 0x236254, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVMa', symObjAddr: 0x570, symBinAddr: 0x1A4E30, symSize: 0x10 } + - { offset: 0x236268, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVMi', symObjAddr: 0x580, symBinAddr: 0x1A4E40, symSize: 0x10 } + - { offset: 0x23627C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVMr', symObjAddr: 0x590, symBinAddr: 0x1A4E50, symSize: 0xD0 } + - { offset: 0x236290, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwCP', symObjAddr: 0x660, symBinAddr: 0x1A4F20, symSize: 0x200 } + - { offset: 0x2362A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwxx', symObjAddr: 0x860, symBinAddr: 0x1A5120, symSize: 0xF0 } + - { offset: 0x2362B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwcp', symObjAddr: 0x950, symBinAddr: 0x1A5210, symSize: 0x1A0 } + - { offset: 0x2362CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwca', symObjAddr: 0xAF0, symBinAddr: 0x1A53B0, symSize: 0x250 } + - { offset: 0x2362E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwtk', symObjAddr: 0xD40, symBinAddr: 0x1A5600, symSize: 0x1A0 } + - { offset: 0x2362F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwta', symObjAddr: 0xEE0, symBinAddr: 0x1A57A0, symSize: 0x250 } + - { offset: 0x236308, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwet', symObjAddr: 0x1130, symBinAddr: 0x1A59F0, symSize: 0x220 } + - { offset: 0x23631C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVwst', symObjAddr: 0x1350, symBinAddr: 0x1A5C10, symSize: 0x320 } + - { offset: 0x236330, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVMa', symObjAddr: 0x1670, symBinAddr: 0x1A5F30, symSize: 0x10 } + - { offset: 0x236492, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAA8IteratorST_StWT', symObjAddr: 0x1FE0, symBinAddr: 0x1A68A0, symSize: 0x20 } + - { offset: 0x2364A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOMa', symObjAddr: 0x22A0, symBinAddr: 0x1A6970, symSize: 0x10 } + - { offset: 0x2364BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSHAASQWb', symObjAddr: 0x22B0, symBinAddr: 0x1A6980, symSize: 0x14 } + - { offset: 0x2364E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV12makeIteratorAC0G0Vyx_GyF', symObjAddr: 0x1680, symBinAddr: 0x1A5F40, symSize: 0xD0 } + - { offset: 0x23655C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x1C50, symBinAddr: 0x1A6510, symSize: 0x40 } + - { offset: 0x23659A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST31_customContainsEquatableElementySbSg0I0QzFTW', symObjAddr: 0x2040, symBinAddr: 0x1A68F0, symSize: 0x10 } + - { offset: 0x2365CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST22_copyToContiguousArrays0hI0Vy7ElementQzGyFTW', symObjAddr: 0x2050, symBinAddr: 0x1A6900, symSize: 0x30 } + - { offset: 0x2365FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST13_copyContents12initializing8IteratorQz_SitSry7ElementQzG_tFTW', symObjAddr: 0x2080, symBinAddr: 0x1A6930, symSize: 0x10 } + - { offset: 0x236618, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST32withContiguousStorageIfAvailableyqd__Sgqd__SRy7ElementQzGKXEKlFTW', symObjAddr: 0x2090, symBinAddr: 0x1A6940, symSize: 0x20 } + - { offset: 0x23663B, size: 0x8, addend: 0x0, symName: '_$sSTsE22_copyToContiguousArrays0cD0Vy7ElementQzGyFTf4g_n', symObjAddr: 0x20B0, symBinAddr: 0x1A6960, symSize: 0x10 } + - { offset: 0x236677, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorV4next7ElementQz_AhFtSgyF', symObjAddr: 0x1750, symBinAddr: 0x1A6010, symSize: 0x460 } + - { offset: 0x2366FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsO2eeoiySbAEyx_G_AGtFZ', symObjAddr: 0x1BB0, symBinAddr: 0x1A6470, symSize: 0x10 } + - { offset: 0x236755, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsO4hash4intoys6HasherVz_tF', symObjAddr: 0x1BC0, symBinAddr: 0x1A6480, symSize: 0x20 } + - { offset: 0x2367F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsO9hashValueSivg', symObjAddr: 0x1BE0, symBinAddr: 0x1A64A0, symSize: 0x40 } + - { offset: 0x2368C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1C20, symBinAddr: 0x1A64E0, symSize: 0x10 } + - { offset: 0x2368DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSHAASH9hashValueSivgTW', symObjAddr: 0x1C30, symBinAddr: 0x1A64F0, symSize: 0x10 } + - { offset: 0x2368EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV7OptionsOyx_GSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x1C40, symBinAddr: 0x1A6500, symSize: 0x10 } + - { offset: 0x23690F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorV_7optionsAEyx_GADQz_AC7OptionsOyx_GtcfC', symObjAddr: 0x1C90, symBinAddr: 0x1A6550, symSize: 0xF0 } + - { offset: 0x236952, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorV21makeWrappedIfRequired33_A7C4A18C5B2715847F18D055251CDC17LL7ElementQz_AI4nexttSgyF', symObjAddr: 0x1D80, symBinAddr: 0x1A6640, symSize: 0x250 } + - { offset: 0x2369B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceV8IteratorVyx_GStAASt4next7ElementQzSgyFTW', symObjAddr: 0x1FD0, symBinAddr: 0x1A6890, symSize: 0x10 } + - { offset: 0x2369C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14PairedSequenceVyxGSTAAST12makeIterator0G0QzyFTW', symObjAddr: 0x2000, symBinAddr: 0x1A68C0, symSize: 0x30 } + - { offset: 0x236DDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC14sharedInstance33_C354830B222D97D2F3184DA268CFF79DLLACSgvpZ', symObjAddr: 0x1850, symBinAddr: 0x3A35E0, symSize: 0x0 } + - { offset: 0x236F8D, size: 0x8, addend: 0x0, symName: '_$sSo13UIAlertActionCIegg_ABIeyBy_TR', symObjAddr: 0x0, symBinAddr: 0x1A69A0, symSize: 0x50 } + - { offset: 0x2370BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerCMa', symObjAddr: 0x1370, symBinAddr: 0x1A7D10, symSize: 0x20 } + - { offset: 0x23710F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC21handleLimitedAccuracy33_C354830B222D97D2F3184DA268CFF79DLLyyF', symObjAddr: 0x1390, symBinAddr: 0x1A7D30, symSize: 0x100 } + - { offset: 0x2371E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC21handleLimitedAccuracy33_C354830B222D97D2F3184DA268CFF79DLLyyFTo', symObjAddr: 0x1490, symBinAddr: 0x1A7E30, symSize: 0x30 } + - { offset: 0x237200, size: 0x8, addend: 0x0, symName: '_$sSo38UIApplicationOpenExternalURLOptionsKeyaABSHSCWl', symObjAddr: 0x1640, symBinAddr: 0x1A7FA0, symSize: 0x40 } + - { offset: 0x237214, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x16F0, symBinAddr: 0x1A7FF0, symSize: 0x20 } + - { offset: 0x237228, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1710, symBinAddr: 0x1A8010, symSize: 0x10 } + - { offset: 0x23723C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC06handleD11InteractionyyFyycACcfu1_yycfu2_TA', symObjAddr: 0x17B0, symBinAddr: 0x1A8050, symSize: 0x10 } + - { offset: 0x2373FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC09preferredD4Type33_C354830B222D97D2F3184DA268CFF79DLLAA0dG0OSgvg', symObjAddr: 0x50, symBinAddr: 0x1A69F0, symSize: 0x120 } + - { offset: 0x23748B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC20isServerDisconnectedSbvg', symObjAddr: 0x170, symBinAddr: 0x1A6B10, symSize: 0xC0 } + - { offset: 0x237549, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC14isReconnectingSbvg', symObjAddr: 0x230, symBinAddr: 0x1A6BD0, symSize: 0xB0 } + - { offset: 0x237622, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC25areDirectionsNotAvailableSbvg', symObjAddr: 0x2E0, symBinAddr: 0x1A6C80, symSize: 0xB0 } + - { offset: 0x23770D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC17locationDetection6statusyAA08LocationG6StatusO_tF', symObjAddr: 0x390, symBinAddr: 0x1A6D30, symSize: 0xD0 } + - { offset: 0x2377DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC25networkInterfaceDidChange2toy7Network11NWInterfaceV0G4TypeO_tF', symObjAddr: 0x460, symBinAddr: 0x1A6E00, symSize: 0x170 } + - { offset: 0x23786B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC24handleConnectivityAction10completionyyycSg_tFyycACcfu_yycfu0_', symObjAddr: 0x710, symBinAddr: 0x1A70B0, symSize: 0x10 } + - { offset: 0x2378E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC06handleD11InteractionyyF', symObjAddr: 0x720, symBinAddr: 0x1A70C0, symSize: 0x140 } + - { offset: 0x237976, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC06handleD11InteractionyyFyycACcfu1_yycfu2_', symObjAddr: 0x860, symBinAddr: 0x1A7200, symSize: 0x120 } + - { offset: 0x237AED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC9showPopup33_C354830B222D97D2F3184DA268CFF79DLL9toastType10completionyAA0dP0O_yycSgtF', symObjAddr: 0x980, symBinAddr: 0x1A7320, symSize: 0x370 } + - { offset: 0x237BDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC17showSettingsPopup33_C354830B222D97D2F3184DA268CFF79DLL9toastType6action11closeActionyAA0dQ0O_yycSgAKtF', symObjAddr: 0xCF0, symBinAddr: 0x1A7690, symSize: 0x4E0 } + - { offset: 0x237D1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC06removeD033_C354830B222D97D2F3184DA268CFF79DLL4fromySo6UIViewC_tF', symObjAddr: 0x11D0, symBinAddr: 0x1A7B70, symSize: 0x150 } + - { offset: 0x237EE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerCfD', symObjAddr: 0x1320, symBinAddr: 0x1A7CC0, symSize: 0x50 } + - { offset: 0x237F24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ToastManagerC11showSetting33_C354830B222D97D2F3184DA268CFF79DLLyyFTf4d_n', symObjAddr: 0x14C0, symBinAddr: 0x1A7E60, symSize: 0x140 } + - { offset: 0x23872A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarCfETo', symObjAddr: 0x1C40, symBinAddr: 0x1A9CF0, symSize: 0x60 } + - { offset: 0x238759, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarCMa', symObjAddr: 0x1CA0, symBinAddr: 0x1A9D50, symSize: 0x20 } + - { offset: 0x23878B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC24textFieldDidBeginEditingyySo06UITextG0CFTo', symObjAddr: 0x1CC0, symBinAddr: 0x1A9D70, symSize: 0x90 } + - { offset: 0x2387D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC9textField_24shouldChangeCharactersIn17replacementStringSbSo06UITextG0C_So8_NSRangeVSStF', symObjAddr: 0x1D50, symBinAddr: 0x1A9E00, symSize: 0x1B0 } + - { offset: 0x2388B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC9textField_24shouldChangeCharactersIn17replacementStringSbSo06UITextG0C_So8_NSRangeVSStFTo', symObjAddr: 0x1F00, symBinAddr: 0x1A9FB0, symSize: 0x90 } + - { offset: 0x2388FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC21textFieldShouldReturnySbSo06UITextG0CFTo', symObjAddr: 0x1F90, symBinAddr: 0x1AA040, symSize: 0xC0 } + - { offset: 0x238953, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldCMa', symObjAddr: 0x2300, symBinAddr: 0x1AA360, symSize: 0x20 } + - { offset: 0x238967, size: 0x8, addend: 0x0, symName: '_$sSo21NSAttributedStringKeya_yptWOh', symObjAddr: 0x23D0, symBinAddr: 0x1AA380, symSize: 0x30 } + - { offset: 0x2389DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC5frameACSo6CGRectV_tcfc', symObjAddr: 0xF0, symBinAddr: 0x1A81A0, symSize: 0x130 } + - { offset: 0x238A3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x220, symBinAddr: 0x1A82D0, symSize: 0x30 } + - { offset: 0x238B90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x250, symBinAddr: 0x1A8300, symSize: 0x110 } + - { offset: 0x238BF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x360, symBinAddr: 0x1A8410, symSize: 0x30 } + - { offset: 0x238C58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC05setupC033_43BDFA56F7E262D3F1D79FF4A74F188FLLyyF', symObjAddr: 0x390, symBinAddr: 0x1A8440, symSize: 0x320 } + - { offset: 0x238E36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC05setupD9TextFieldyyF', symObjAddr: 0x6B0, symBinAddr: 0x1A8760, symSize: 0x6E0 } + - { offset: 0x2392C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC17setupCancelButtonyyF', symObjAddr: 0xD90, symBinAddr: 0x1A8E40, symSize: 0x410 } + - { offset: 0x2395AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC05setupD4IconyyF', symObjAddr: 0x11A0, symBinAddr: 0x1A9250, symSize: 0x250 } + - { offset: 0x2397AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC16setupClearButtonyyF', symObjAddr: 0x13F0, symBinAddr: 0x1A94A0, symSize: 0x4F0 } + - { offset: 0x239A36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC03setD4TextyySSSgF', symObjAddr: 0x18E0, symBinAddr: 0x1A9990, symSize: 0x1A0 } + - { offset: 0x239B2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC18cancelButtonTapped33_43BDFA56F7E262D3F1D79FF4A74F188FLLyyFTo', symObjAddr: 0x1A80, symBinAddr: 0x1A9B30, symSize: 0x90 } + - { offset: 0x239B71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC17clearButtonTapped33_43BDFA56F7E262D3F1D79FF4A74F188FLLyyF', symObjAddr: 0x1B10, symBinAddr: 0x1A9BC0, symSize: 0xE0 } + - { offset: 0x239C1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9SearchBarC17clearButtonTapped33_43BDFA56F7E262D3F1D79FF4A74F188FLLyyFTo', symObjAddr: 0x1BF0, symBinAddr: 0x1A9CA0, symSize: 0x30 } + - { offset: 0x239C47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldC03hasF0SbvgTo', symObjAddr: 0x20A0, symBinAddr: 0x1AA100, symSize: 0x30 } + - { offset: 0x239C5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldC03hasF0Sbvg', symObjAddr: 0x20D0, symBinAddr: 0x1AA130, symSize: 0x100 } + - { offset: 0x239CBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x21D0, symBinAddr: 0x1AA230, symSize: 0x60 } + - { offset: 0x239D15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18SearchBarTextFieldC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2230, symBinAddr: 0x1AA290, symSize: 0x80 } + - { offset: 0x23A18D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7PatternCMa', symObjAddr: 0x20, symBinAddr: 0x1AA3B0, symSize: 0x20 } + - { offset: 0x23A1FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7PatternCSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x40, symBinAddr: 0x1AA3D0, symSize: 0x54 } + - { offset: 0x23A5AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC6cancelyyFTo', symObjAddr: 0x0, symBinAddr: 0x1AA430, symSize: 0x70 } + - { offset: 0x23A693, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCfE', symObjAddr: 0xD0, symBinAddr: 0x1AA500, symSize: 0x20 } + - { offset: 0x23A6C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCfETo', symObjAddr: 0x120, symBinAddr: 0x1AA550, symSize: 0x20 } + - { offset: 0x23A6EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCMa', symObjAddr: 0x140, symBinAddr: 0x1AA570, symSize: 0x20 } + - { offset: 0x23A712, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC05trackd2ByE0_12downloadTask22didFinishDownloadingToySo12NSURLSessionC_So0ndI0C10Foundation3URLVtFTf4dnnn_n', symObjAddr: 0x160, symBinAddr: 0x1AA590, symSize: 0x3E0 } + - { offset: 0x23A83B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC6cancelyyFTo', symObjAddr: 0x0, symBinAddr: 0x1AA430, symSize: 0x70 } + - { offset: 0x23A8AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationC4mainyyFTo', symObjAddr: 0x70, symBinAddr: 0x1AA4A0, symSize: 0x30 } + - { offset: 0x23A929, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCACycfcTo', symObjAddr: 0xA0, symBinAddr: 0x1AA4D0, symSize: 0x30 } + - { offset: 0x23A988, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17DownloadOperationCfD', symObjAddr: 0xF0, symBinAddr: 0x1AA520, symSize: 0x30 } + - { offset: 0x23AD8C, size: 0x8, addend: 0x0, symName: '_$sSo30UIGraphicsImageRendererContextCIegg_ABIyBy_TR', symObjAddr: 0x20, symBinAddr: 0x1AA970, symSize: 0x40 } + - { offset: 0x23AF67, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE8svgNamed2in7optionsABSgSS_So8NSBundleCAC3SVGC7OptionsVtcfC', symObjAddr: 0x60, symBinAddr: 0x1AA9B0, symSize: 0x360 } + - { offset: 0x23B1A3, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIEyAbC3SVGCcfC', symObjAddr: 0x3C0, symBinAddr: 0x1AAD10, symSize: 0x100 } + - { offset: 0x23B225, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7svgDataABSg10Foundation0F0V_tcfC', symObjAddr: 0x4C0, symBinAddr: 0x1AAE10, symSize: 0x70 } + - { offset: 0x23B2D6, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7svgDataABSg10Foundation0F0V_tcfc', symObjAddr: 0x530, symBinAddr: 0x1AAE80, symSize: 0x220 } + - { offset: 0x23B467, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7svgDataABSg10Foundation0F0V_tcfcTo', symObjAddr: 0x750, symBinAddr: 0x1AB0A0, symSize: 0x50 } + - { offset: 0x23B483, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE17contentsOfSVGFileABSgSS_tcfC', symObjAddr: 0x7A0, symBinAddr: 0x1AB0F0, symSize: 0x70 } + - { offset: 0x23B4A1, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE17contentsOfSVGFileABSgSS_tcfc', symObjAddr: 0x810, symBinAddr: 0x1AB160, symSize: 0x260 } + - { offset: 0x23B666, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE17contentsOfSVGFileABSgSS_tcfcTo', symObjAddr: 0xA70, symBinAddr: 0x1AB3C0, symSize: 0x30 } + - { offset: 0x23B682, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE9_svgNamedyABSgSSFZ', symObjAddr: 0xAA0, symBinAddr: 0x1AB3F0, symSize: 0x90 } + - { offset: 0x23B6D1, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE9_svgNamedyABSgSSFZTo', symObjAddr: 0xB30, symBinAddr: 0x1AB480, symSize: 0x80 } + - { offset: 0x23B70E, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE9_svgNamed_2inABSgSS_So8NSBundleCtFZ', symObjAddr: 0xBB0, symBinAddr: 0x1AB500, symSize: 0x70 } + - { offset: 0x23B773, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE9_svgNamed_2inABSgSS_So8NSBundleCtFZTo', symObjAddr: 0xC20, symBinAddr: 0x1AB570, symSize: 0x70 } + - { offset: 0x23B7B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC9rasterizeSo7UIImageCyF', symObjAddr: 0xC90, symBinAddr: 0x1AB5E0, symSize: 0x40 } + - { offset: 0x23B80F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtF', symObjAddr: 0xCD0, symBinAddr: 0x1AB620, symSize: 0x280 } + - { offset: 0x23B94A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtFySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0x1120, symBinAddr: 0x1ABA70, symSize: 0x90 } + - { offset: 0x23BA53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC10makeBounds4size5scale6insetsSo6CGRectV6bounds_Si10pixelsWideSi0L4HightSo6CGSizeVSg_12CoreGraphics7CGFloatVAC6InsetsVtF', symObjAddr: 0xF50, symBinAddr: 0x1AB8A0, symSize: 0x1D0 } + - { offset: 0x23BB55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7pngData4size5scale6insets10Foundation0F0VSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtKF', symObjAddr: 0x11B0, symBinAddr: 0x1ABB00, symSize: 0xD0 } + - { offset: 0x23BBF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC8jpegData4size5scale18compressionQuality6insets10Foundation0F0VSo6CGSizeVSg_12CoreGraphics7CGFloatVAQSo12UIEdgeInsetsVtKF', symObjAddr: 0x1280, symBinAddr: 0x1ABBD0, symSize: 0xF0 } + - { offset: 0x23BCAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC9rasterize4with5scale6insetsSo7UIImageCSo6CGSizeVSg_12CoreGraphics7CGFloatVSo12UIEdgeInsetsVtFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0x14F0, symBinAddr: 0x1ABCF0, symSize: 0x30 } + - { offset: 0x23BCC1, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1560, symBinAddr: 0x1ABD40, symSize: 0x20 } + - { offset: 0x23BCD5, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1580, symBinAddr: 0x1ABD60, symSize: 0x10 } + - { offset: 0x23BCE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_64660464CF3F4A91161BC661976AF1A2LLVMa', symObjAddr: 0x1720, symBinAddr: 0x1ABD70, symSize: 0x10 } + - { offset: 0x23BCFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_64660464CF3F4A91161BC661976AF1A2LLV10Foundation09LocalizedE0AAsADPWb', symObjAddr: 0x1730, symBinAddr: 0x1ABD80, symSize: 0x10 } + - { offset: 0x23CA29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCfE', symObjAddr: 0x2B10, symBinAddr: 0x1AE8A0, symSize: 0x100 } + - { offset: 0x23CA56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCfETo', symObjAddr: 0x2C40, symBinAddr: 0x1AE9D0, symSize: 0x100 } + - { offset: 0x23CA85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCMa', symObjAddr: 0x2D40, symBinAddr: 0x1AEAD0, symSize: 0x20 } + - { offset: 0x23CAD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x2D60, symBinAddr: 0x1AEAF0, symSize: 0xA0 } + - { offset: 0x23CB87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x2E00, symBinAddr: 0x1AEB90, symSize: 0x30 } + - { offset: 0x23CC08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x2E30, symBinAddr: 0x1AEBC0, symSize: 0x90 } + - { offset: 0x23CC77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x2EC0, symBinAddr: 0x1AEC50, symSize: 0x30 } + - { offset: 0x23CCB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x2EF0, symBinAddr: 0x1AEC80, symSize: 0x200 } + - { offset: 0x23CEBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x30F0, symBinAddr: 0x1AEE80, symSize: 0x50 } + - { offset: 0x23CEE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x3140, symBinAddr: 0x1AEED0, symSize: 0x140 } + - { offset: 0x23D00D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x3300, symBinAddr: 0x1AF010, symSize: 0x10 } + - { offset: 0x23D047, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x3310, symBinAddr: 0x1AF020, symSize: 0x10 } + - { offset: 0x23D082, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x3350, symBinAddr: 0x1AF050, symSize: 0x20 } + - { offset: 0x23D096, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x3370, symBinAddr: 0x1AF070, symSize: 0x10 } + - { offset: 0x23D0AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC17showRouteOverviewyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x34C0, symBinAddr: 0x1AF0B0, symSize: 0x20 } + - { offset: 0x23D0E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11getDistance2toyAA5PlaceCSg_tFySdSgcfU_TA', symObjAddr: 0x35A0, symBinAddr: 0x1AF0D0, symSize: 0x20 } + - { offset: 0x23D0F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11getDistance2toyAA5PlaceCSg_tFySdSgcfU_yycfU_TA', symObjAddr: 0x35E0, symBinAddr: 0x1AF110, symSize: 0x20 } + - { offset: 0x23D10C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyFyycfU_TA', symObjAddr: 0x3600, symBinAddr: 0x1AF130, symSize: 0x10 } + - { offset: 0x23D120, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyFyycfU0_TA', symObjAddr: 0x3610, symBinAddr: 0x1AF140, symSize: 0x10 } + - { offset: 0x23D5BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06scrollF0So08UIScrollF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1ABD90, symSize: 0x20 } + - { offset: 0x23D61A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06scrollF0So08UIScrollF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x1ABDB0, symSize: 0x30 } + - { offset: 0x23D669, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x1ABDE0, symSize: 0x20 } + - { offset: 0x23D6C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x1ABE00, symSize: 0x30 } + - { offset: 0x23D710, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11parkingTimeSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x1ABE30, symSize: 0x20 } + - { offset: 0x23D763, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11parkingTimeSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x1ABE50, symSize: 0x30 } + - { offset: 0x23D7B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x1ABE80, symSize: 0x20 } + - { offset: 0x23D805, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x1ABEA0, symSize: 0x30 } + - { offset: 0x23D854, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC16directionsButtonAA06HapticF0CSgvgTo', symObjAddr: 0x140, symBinAddr: 0x1ABED0, symSize: 0x20 } + - { offset: 0x23D8AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC16directionsButtonAA06HapticF0CSgvsTo', symObjAddr: 0x160, symBinAddr: 0x1ABEF0, symSize: 0x30 } + - { offset: 0x23D8FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06removeD6ButtonAA06HapticF0CSgvgTo', symObjAddr: 0x190, symBinAddr: 0x1ABF20, symSize: 0x20 } + - { offset: 0x23D94E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC06removeD6ButtonAA06HapticF0CSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x1ABF40, symSize: 0x30 } + - { offset: 0x23D99D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC010titleStackF0So07UIStackF0CSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0x1ABF70, symSize: 0x20 } + - { offset: 0x23D9F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC010titleStackF0So07UIStackF0CSgvsTo', symObjAddr: 0x200, symBinAddr: 0x1ABF90, symSize: 0x30 } + - { offset: 0x23DA44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x230, symBinAddr: 0x1ABFC0, symSize: 0x20 } + - { offset: 0x23DA9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x250, symBinAddr: 0x1ABFE0, symSize: 0x30 } + - { offset: 0x23DB41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x280, symBinAddr: 0x1AC010, symSize: 0x120 } + - { offset: 0x23DBF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x3A0, symBinAddr: 0x1AC130, symSize: 0x30 } + - { offset: 0x23DC3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyF', symObjAddr: 0x3D0, symBinAddr: 0x1AC160, symSize: 0x140 } + - { offset: 0x23DCFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyFyycfU_', symObjAddr: 0x510, symBinAddr: 0x1AC2A0, symSize: 0x50 } + - { offset: 0x23DD26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC10setActionsyyFyycfU0_', symObjAddr: 0x560, symBinAddr: 0x1AC2F0, symSize: 0x1C0 } + - { offset: 0x23E054, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC03setD7AddressyyF', symObjAddr: 0x720, symBinAddr: 0x1AC4B0, symSize: 0x530 } + - { offset: 0x23E5BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC014loadDistanceOfD0yyF', symObjAddr: 0xC50, symBinAddr: 0x1AC9E0, symSize: 0x220 } + - { offset: 0x23E7BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC03setD4DateyyF', symObjAddr: 0xE70, symBinAddr: 0x1ACC00, symSize: 0x7D0 } + - { offset: 0x23E9BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11getDistance2toyAA5PlaceCSg_tFySdSgcfU_', symObjAddr: 0x1640, symBinAddr: 0x1AD3D0, symSize: 0x280 } + - { offset: 0x23EAFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC11getDistance2toyAA5PlaceCSg_tFySdSgcfU_yycfU_', symObjAddr: 0x18C0, symBinAddr: 0x1AD650, symSize: 0x100 } + - { offset: 0x23EBD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC17showRouteOverviewyyF', symObjAddr: 0x19C0, symBinAddr: 0x1AD750, symSize: 0x4F0 } + - { offset: 0x23F088, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC22showNavigationOverview33_7A88AEBDF2F3A6A99527A4374A87C8B0LL6sourceyAA5PlaceCSg_tF', symObjAddr: 0x1EB0, symBinAddr: 0x1ADC40, symSize: 0x2A0 } + - { offset: 0x23F31C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5shareyyF', symObjAddr: 0x2150, symBinAddr: 0x1ADEE0, symSize: 0x100 } + - { offset: 0x23F3E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0x2250, symBinAddr: 0x1ADFE0, symSize: 0x4D0 } + - { offset: 0x23F65E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5shareyyFTo', symObjAddr: 0x2720, symBinAddr: 0x1AE4B0, symSize: 0x30 } + - { offset: 0x23F672, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x2750, symBinAddr: 0x1AE4E0, symSize: 0x80 } + - { offset: 0x23F6A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x27D0, symBinAddr: 0x1AE560, symSize: 0x170 } + - { offset: 0x23F6E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x2940, symBinAddr: 0x1AE6D0, symSize: 0x50 } + - { offset: 0x23F6F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x2990, symBinAddr: 0x1AE720, symSize: 0x150 } + - { offset: 0x23F72A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2AE0, symBinAddr: 0x1AE870, symSize: 0x30 } + - { offset: 0x23F73E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28ParkingDetailsViewControllerCfD', symObjAddr: 0x2C10, symBinAddr: 0x1AE9A0, symSize: 0x30 } + - { offset: 0x23FBF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVMa', symObjAddr: 0x0, symBinAddr: 0x1AF180, symSize: 0x10 } + - { offset: 0x23FC0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVMa', symObjAddr: 0x0, symBinAddr: 0x1AF180, symSize: 0x10 } + - { offset: 0x23FD10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOAFs0F3KeyAAWl', symObjAddr: 0x210, symBinAddr: 0x1AF2D0, symSize: 0x30 } + - { offset: 0x23FD24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOMa', symObjAddr: 0x240, symBinAddr: 0x1AF300, symSize: 0x10 } + - { offset: 0x23FD38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x250, symBinAddr: 0x1AF310, symSize: 0x10 } + - { offset: 0x23FD4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x260, symBinAddr: 0x1AF320, symSize: 0x30 } + - { offset: 0x23FD60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x290, symBinAddr: 0x1AF350, symSize: 0x10 } + - { offset: 0x23FD74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x2A0, symBinAddr: 0x1AF360, symSize: 0x2D } + - { offset: 0x23FDA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x70, symBinAddr: 0x1AF1D0, symSize: 0x20 } + - { offset: 0x23FDBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x90, symBinAddr: 0x1AF1F0, symSize: 0x20 } + - { offset: 0x23FDDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x10, symBinAddr: 0x1AF190, symSize: 0x20 } + - { offset: 0x23FDF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseV10CodingKeys33_9792B85FA2F3309A9135B5F035197D58LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x30, symBinAddr: 0x1AF1B0, symSize: 0x20 } + - { offset: 0x23FE1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xB0, symBinAddr: 0x1AF210, symSize: 0x20 } + - { offset: 0x23FE62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19DiscardableResponseVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xD0, symBinAddr: 0x1AF230, symSize: 0xA0 } + - { offset: 0x240213, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOMa', symObjAddr: 0x0, symBinAddr: 0x1AF390, symSize: 0x10 } + - { offset: 0x24022B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOMa', symObjAddr: 0x0, symBinAddr: 0x1AF390, symSize: 0x10 } + - { offset: 0x2402FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOSHAASQWb', symObjAddr: 0x530, symBinAddr: 0x1AF800, symSize: 0x10 } + - { offset: 0x240312, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOACSQAAWl', symObjAddr: 0x540, symBinAddr: 0x1AF810, symSize: 0x30 } + - { offset: 0x24034A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO7messageSSvg', symObjAddr: 0x10, symBinAddr: 0x1AF3A0, symSize: 0x100 } + - { offset: 0x240383, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO10popupTitleSSvg', symObjAddr: 0x110, symBinAddr: 0x1AF4A0, symSize: 0xF0 } + - { offset: 0x2403BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO12popupMessageSSvg', symObjAddr: 0x200, symBinAddr: 0x1AF590, symSize: 0xF0 } + - { offset: 0x2403F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO16popupCloseActionSSvg', symObjAddr: 0x2F0, symBinAddr: 0x1AF680, symSize: 0x150 } + - { offset: 0x240496, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x4F0, symBinAddr: 0x1AF7D0, symSize: 0x30 } + - { offset: 0x2404BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x570, symBinAddr: 0x1AF840, symSize: 0x17 } + - { offset: 0x2409D8, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelC8PenNavUIE14escalatorEdgesSayAA4EdgeCGvg', symObjAddr: 0x0, symBinAddr: 0x1AF860, symSize: 0x200 } + - { offset: 0x240C30, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelC8PenNavUIE14escalatorEdgesSayAA4EdgeCGvgSbAGXEfU_', symObjAddr: 0x200, symBinAddr: 0x1AFA60, symSize: 0x350 } + - { offset: 0x241219, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelCAA0C13Representable8PenNavUIAaDP13isUpEscalatorSbvgTW', symObjAddr: 0xF00, symBinAddr: 0x1B0760, symSize: 0x20 } + - { offset: 0x241235, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelCAA0C13Representable8PenNavUIAaDP15isDownEscalatorSbvgTW', symObjAddr: 0xF20, symBinAddr: 0x1B0780, symSize: 0x20 } + - { offset: 0x241251, size: 0x8, addend: 0x0, symName: '_$s7Penguin11EdgeTypeNewOACSYAAWl', symObjAddr: 0xF40, symBinAddr: 0x1B07A0, symSize: 0x33 } + - { offset: 0x2414E2, size: 0x8, addend: 0x0, symName: '_$s7Penguin13GateNodeModelCAA0C13Representable8PenNavUIAaDP8nodeTypeAA0cJ0OSgvgTW', symObjAddr: 0xEE0, symBinAddr: 0x1B0740, symSize: 0x20 } + - { offset: 0x241893, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOMa', symObjAddr: 0x1A0, symBinAddr: 0x1B07E0, symSize: 0x10 } + - { offset: 0x2418A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwxx', symObjAddr: 0x1E0, symBinAddr: 0x1B07F0, symSize: 0x30 } + - { offset: 0x2418BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwcp', symObjAddr: 0x210, symBinAddr: 0x1B0820, symSize: 0x70 } + - { offset: 0x2418CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwca', symObjAddr: 0x280, symBinAddr: 0x1B0890, symSize: 0xA0 } + - { offset: 0x2418E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwta', symObjAddr: 0x350, symBinAddr: 0x1B0930, symSize: 0x80 } + - { offset: 0x2418F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwet', symObjAddr: 0x3D0, symBinAddr: 0x1B09B0, symSize: 0x40 } + - { offset: 0x24190B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVwst', symObjAddr: 0x410, symBinAddr: 0x1B09F0, symSize: 0x50 } + - { offset: 0x24191F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVMa', symObjAddr: 0x460, symBinAddr: 0x1B0A40, symSize: 0x10 } + - { offset: 0x24194F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOSHAASQWb', symObjAddr: 0x480, symBinAddr: 0x1B0A60, symSize: 0x10 } + - { offset: 0x241963, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOAGSQAAWl', symObjAddr: 0x490, symBinAddr: 0x1B0A70, symSize: 0x30 } + - { offset: 0x241A08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternVAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0x470, symBinAddr: 0x1B0A50, symSize: 0x10 } + - { offset: 0x241A4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x6C0, symBinAddr: 0x1B0AA0, symSize: 0x70 } + - { offset: 0x242000, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCfE', symObjAddr: 0x270, symBinAddr: 0x1B0D80, symSize: 0xB0 } + - { offset: 0x24202D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCMU', symObjAddr: 0x430, symBinAddr: 0x1B0F40, symSize: 0x10 } + - { offset: 0x242041, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCMa', symObjAddr: 0x440, symBinAddr: 0x1B0F50, symSize: 0x30 } + - { offset: 0x242055, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCMr', symObjAddr: 0x470, symBinAddr: 0x1B0F80, symSize: 0x70 } + - { offset: 0x242069, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVwxx', symObjAddr: 0x510, symBinAddr: 0x1B0FF0, symSize: 0x50 } + - { offset: 0x24207D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVwcp', symObjAddr: 0x560, symBinAddr: 0x1B1040, symSize: 0xA0 } + - { offset: 0x242091, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVwca', symObjAddr: 0x600, symBinAddr: 0x1B10E0, symSize: 0xD0 } + - { offset: 0x2420A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVwta', symObjAddr: 0x700, symBinAddr: 0x1B11B0, symSize: 0x80 } + - { offset: 0x2420B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC4DefsVMa', symObjAddr: 0x810, symBinAddr: 0x1B1230, symSize: 0x10 } + - { offset: 0x2420CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetVMa', symObjAddr: 0x820, symBinAddr: 0x1B1240, symSize: 0x10 } + - { offset: 0x2420E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC7ViewBoxVMa', symObjAddr: 0x8A0, symBinAddr: 0x1B1250, symSize: 0x10 } + - { offset: 0x24210B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4MaskVMa', symObjAddr: 0xCF0, symBinAddr: 0x1B1650, symSize: 0x10 } + - { offset: 0x24211F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO8ClipPathVMa', symObjAddr: 0xE90, symBinAddr: 0x1B1740, symSize: 0x10 } + - { offset: 0x242133, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwxx', symObjAddr: 0xED0, symBinAddr: 0x1B1760, symSize: 0x20 } + - { offset: 0x242147, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwca', symObjAddr: 0xF50, symBinAddr: 0x1B17C0, symSize: 0x50 } + - { offset: 0x24215B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwta', symObjAddr: 0xFC0, symBinAddr: 0x1B1810, symSize: 0x40 } + - { offset: 0x24216F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwet', symObjAddr: 0x1000, symBinAddr: 0x1B1850, symSize: 0x50 } + - { offset: 0x242183, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwst', symObjAddr: 0x1050, symBinAddr: 0x1B18A0, symSize: 0x50 } + - { offset: 0x242197, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwug', symObjAddr: 0x10A0, symBinAddr: 0x1B18F0, symSize: 0x10 } + - { offset: 0x2421AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOwui', symObjAddr: 0x10C0, symBinAddr: 0x1B1900, symSize: 0x10 } + - { offset: 0x2421BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOMa', symObjAddr: 0x10D0, symBinAddr: 0x1B1910, symSize: 0x10 } + - { offset: 0x2421D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOAGSQAAWl', symObjAddr: 0x10E0, symBinAddr: 0x1B1920, symSize: 0x30 } + - { offset: 0x242213, size: 0x8, addend: 0x0, symName: '_$sSLsE2geoiySbx_xtFZ8PenNavUI3DOMO10StyleSheetV8SelectorO_Tt1g5', symObjAddr: 0x0, symBinAddr: 0x1B0B10, symSize: 0xB0 } + - { offset: 0x2422C0, size: 0x8, addend: 0x0, symName: '_$sSLsE1goiySbx_xtFZ8PenNavUI3DOMO10StyleSheetV8SelectorO_Tt1g5', symObjAddr: 0xB0, symBinAddr: 0x1B0BC0, symSize: 0xC0 } + - { offset: 0x2423A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x9B0, symBinAddr: 0x1B1330, symSize: 0x50 } + - { offset: 0x24245B, size: 0x8, addend: 0x0, symName: '_$sSLsE2leoiySbx_xtFZ8PenNavUI3DOMO10StyleSheetV8SelectorO_Tt1g5', symObjAddr: 0xA40, symBinAddr: 0x1B13C0, symSize: 0xB0 } + - { offset: 0x242556, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC5width6heightAESi_Sitcfc', symObjAddr: 0x170, symBinAddr: 0x1B0C80, symSize: 0xC0 } + - { offset: 0x2425C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGC7ViewBoxVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x230, symBinAddr: 0x1B0D40, symSize: 0x40 } + - { offset: 0x242620, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCfD', symObjAddr: 0x320, symBinAddr: 0x1B0E30, symSize: 0x110 } + - { offset: 0x24266D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3SVGCAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0x8B0, symBinAddr: 0x1B1260, symSize: 0x20 } + - { offset: 0x2426DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOSHAASH9hashValueSivgTW', symObjAddr: 0x910, symBinAddr: 0x1B1290, symSize: 0x60 } + - { offset: 0x2427DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x970, symBinAddr: 0x1B12F0, symSize: 0x40 } + - { offset: 0x24288A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xB60, symBinAddr: 0x1B14E0, symSize: 0x60 } + - { offset: 0x2428F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorO1loiySbAG_AGtFZTf4nnd_n', symObjAddr: 0xBC0, symBinAddr: 0x1B1540, symSize: 0xB0 } + - { offset: 0x242CFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5frame9dotsCountACSo6CGRectV_Sitcfc', symObjAddr: 0x0, symBinAddr: 0x1B1A00, symSize: 0x210 } + - { offset: 0x242FB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorCfETo', symObjAddr: 0xEB0, symBinAddr: 0x1B28B0, symSize: 0x20 } + - { offset: 0x242FE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorCMa', symObjAddr: 0xED0, symBinAddr: 0x1B28D0, symSize: 0x20 } + - { offset: 0x24315C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5frame9dotsCountACSo6CGRectV_Sitcfc', symObjAddr: 0x0, symBinAddr: 0x1B1A00, symSize: 0x210 } + - { offset: 0x24325F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5frameACSo6CGRectV_tcfc', symObjAddr: 0x210, symBinAddr: 0x1B1C10, symSize: 0x210 } + - { offset: 0x243352, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x420, symBinAddr: 0x1B1E20, symSize: 0x30 } + - { offset: 0x24338A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x450, symBinAddr: 0x1B1E50, symSize: 0x1D0 } + - { offset: 0x24348E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x620, symBinAddr: 0x1B2020, symSize: 0x30 } + - { offset: 0x243663, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorC14setUpAnimation2in4size5colorySo7CALayerC_So6CGSizeVSo7UIColorCtF', symObjAddr: 0x650, symBinAddr: 0x1B2050, symSize: 0x830 } + - { offset: 0x243B29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI29BouncingDotsActivityIndicatorCfD', symObjAddr: 0xE80, symBinAddr: 0x1B2880, symSize: 0x30 } + - { offset: 0x2442E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerCMU', symObjAddr: 0x1D30, symBinAddr: 0x1B4620, symSize: 0x10 } + - { offset: 0x2442FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerCMa', symObjAddr: 0x1D40, symBinAddr: 0x1B4630, symSize: 0x30 } + - { offset: 0x24430F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerCMr', symObjAddr: 0x1D70, symBinAddr: 0x1B4660, symSize: 0x70 } + - { offset: 0x244323, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryVSgWOf', symObjAddr: 0x1E70, symBinAddr: 0x1B46D0, symSize: 0x40 } + - { offset: 0x244337, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC014getCategorizedD02in8categorySay7Penguin10PoiPolygonVGAG5VenueCSg_AG11POICategoryVSgtFSbAIXEfU_TA', symObjAddr: 0x1F80, symBinAddr: 0x1B4730, symSize: 0x13 } + - { offset: 0x244762, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC6select_8category25setsCameraToSelectedPlace08animatesI0yAA0L0CSg_7Penguin11POICategoryVSgS2btF', symObjAddr: 0x0, symBinAddr: 0x1B28F0, symSize: 0xC40 } + - { offset: 0x244C97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC8deselectyyF', symObjAddr: 0xC40, symBinAddr: 0x1B3530, symSize: 0xE0 } + - { offset: 0x244CE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC22updateSymbolVisibility2ony7Penguin5FloorCSg_tF', symObjAddr: 0xD20, symBinAddr: 0x1B3610, symSize: 0x240 } + - { offset: 0x244D47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC16updateSymbolTextyySSF', symObjAddr: 0xF60, symBinAddr: 0x1B3850, symSize: 0x130 } + - { offset: 0x244F67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerC16updateSymbolIconyyFySo7UIImageCSgcfU_', symObjAddr: 0x1090, symBinAddr: 0x1B3980, symSize: 0xC50 } + - { offset: 0x24536E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16SelectionManagerCfD', symObjAddr: 0x1CE0, symBinAddr: 0x1B45D0, symSize: 0x50 } + - { offset: 0x247A53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC05clearD12PathFeaturesyyF', symObjAddr: 0x50, symBinAddr: 0x1B4750, symSize: 0x1D0 } + - { offset: 0x247D5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCfETo', symObjAddr: 0x710, symBinAddr: 0x1B4E10, symSize: 0x280 } + - { offset: 0x247ED0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11setLocation33_00AFBD3210DA1B0197CE155260A7E798LL_28skipsIntermediateCoordinatesy7Penguin10PILocationCSg_SbtF', symObjAddr: 0xB20, symBinAddr: 0x1B5220, symSize: 0x1A0 } + - { offset: 0x247FF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateCompassMarginsyyF', symObjAddr: 0xEF0, symBinAddr: 0x1B55F0, symSize: 0x280 } + - { offset: 0x24825D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8setupMapyyF', symObjAddr: 0x12D0, symBinAddr: 0x1B59D0, symSize: 0x310 } + - { offset: 0x248534, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8setupMapyyFySbcfU_', symObjAddr: 0x14820, symBinAddr: 0x1C8E00, symSize: 0x50 } + - { offset: 0x248861, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSgSbIegny_ACSbIegny_TR', symObjAddr: 0x33E0, symBinAddr: 0x1B7AE0, symSize: 0x90 } + - { offset: 0x24913B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC09addBottomD5PanelyyF', symObjAddr: 0x7ED0, symBinAddr: 0x1BC570, symSize: 0x400 } + - { offset: 0x2497EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23setToastBackgroundColoryySo7UIColorCF', symObjAddr: 0x82D0, symBinAddr: 0x1BC970, symSize: 0x2F0 } + - { offset: 0x249C1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13getMapPaddingSo12UIEdgeInsetsVyF', symObjAddr: 0xA400, symBinAddr: 0x1BEA20, symSize: 0x350 } + - { offset: 0x24A126, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC24resetRecalculateAttempts33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0xBF20, symBinAddr: 0x1C0540, symSize: 0x160 } + - { offset: 0x24A233, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC05resetD033_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0xC080, symBinAddr: 0x1C06A0, symSize: 0xD0 } + - { offset: 0x24A4A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC018handleUserLocationC033_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0xCCE0, symBinAddr: 0x1C1300, symSize: 0x4B0 } + - { offset: 0x24A7FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC04exitD0yyF', symObjAddr: 0xD190, symBinAddr: 0x1C17B0, symSize: 0x320 } + - { offset: 0x24AA9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15getMapZoomLevel12CoreGraphics7CGFloatVSgyF', symObjAddr: 0xE520, symBinAddr: 0x1C2B40, symSize: 0x2B0 } + - { offset: 0x24AD1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11getMapPitch12CoreGraphics7CGFloatVSgyF', symObjAddr: 0xE7D0, symBinAddr: 0x1C2DF0, symSize: 0x60 } + - { offset: 0x24AE31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCMa', symObjAddr: 0x10020, symBinAddr: 0x1C4640, symSize: 0x20 } + - { offset: 0x24AE45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA22FloatingPanelPresenterA2aDP08floatingH7DidMoveyyAA0ghF0CFTW', symObjAddr: 0x100D0, symBinAddr: 0x1C46E0, symSize: 0x10 } + - { offset: 0x24AE61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x100E0, symBinAddr: 0x1C46F0, symSize: 0x430 } + - { offset: 0x24B175, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x10510, symBinAddr: 0x1C4B20, symSize: 0x10 } + - { offset: 0x24B191, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtF', symObjAddr: 0x10520, symBinAddr: 0x1C4B30, symSize: 0xCC0 } + - { offset: 0x24BBE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFyycfU2_', symObjAddr: 0x21D40, symBinAddr: 0x1D6200, symSize: 0x80 } + - { offset: 0x24BD99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC10onMapReadyyyF', symObjAddr: 0x111E0, symBinAddr: 0x1C57F0, symSize: 0x280 } + - { offset: 0x24BF7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC10onMapReadyyyFyycfU_', symObjAddr: 0x11980, symBinAddr: 0x1C5F90, symSize: 0x720 } + - { offset: 0x24C64F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC30handleToastAppearanceOnMapLoad33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0x11460, symBinAddr: 0x1C5A70, symSize: 0x430 } + - { offset: 0x24CA08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19startUpdateLocationyyF', symObjAddr: 0x11890, symBinAddr: 0x1C5EA0, symSize: 0xF0 } + - { offset: 0x24CA48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18didFailToLoadRoute5errory7Penguin0K5ErrorOSg_tF', symObjAddr: 0x121B0, symBinAddr: 0x1C67C0, symSize: 0x340 } + - { offset: 0x24CDB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEntrances9rerouting10completionySb_yyctFySayAA5PlaceCGcfU_', symObjAddr: 0x124F0, symBinAddr: 0x1C6B00, symSize: 0x300 } + - { offset: 0x24D1FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11handleRetryyyF', symObjAddr: 0x127F0, symBinAddr: 0x1C6E00, symSize: 0x160 } + - { offset: 0x24D379, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15endTripIfNeededyyF', symObjAddr: 0x12950, symBinAddr: 0x1C6F60, symSize: 0x790 } + - { offset: 0x24DB3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18onReachDestinationyyF', symObjAddr: 0x130E0, symBinAddr: 0x1C76F0, symSize: 0xCC0 } + - { offset: 0x24E628, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18onReachDestinationyyFyycfU0_', symObjAddr: 0x1E020, symBinAddr: 0x1D25B0, symSize: 0x60 } + - { offset: 0x24E6FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21puckLocationDidUpdate10coordinateySo22CLLocationCoordinate2DV_tF', symObjAddr: 0x13DA0, symBinAddr: 0x1C83B0, symSize: 0x2C0 } + - { offset: 0x24E94A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11mapDidPinchyyF', symObjAddr: 0x14060, symBinAddr: 0x1C8670, symSize: 0xC0 } + - { offset: 0x24EA55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15mapAlignedNorthyyF', symObjAddr: 0x14130, symBinAddr: 0x1C8730, symSize: 0x2D0 } + - { offset: 0x24ECCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15cameraDidChangeyyF', symObjAddr: 0x14400, symBinAddr: 0x1C8A00, symSize: 0x240 } + - { offset: 0x24EE85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP27locationIndicatorCoordinateSo22CLLocationCoordinate2DVSgvgTW', symObjAddr: 0x14700, symBinAddr: 0x1C8D00, symSize: 0x50 } + - { offset: 0x24EED9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP26isLocationIndicatorVisibleSbvgTW', symObjAddr: 0x14750, symBinAddr: 0x1C8D50, symSize: 0x40 } + - { offset: 0x24EF35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP9mapDidTapyyFTW', symObjAddr: 0x14790, symBinAddr: 0x1C8D90, symSize: 0x20 } + - { offset: 0x24EFA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP11mapDidPinchyyFTW', symObjAddr: 0x147C0, symBinAddr: 0x1C8DC0, symSize: 0x10 } + - { offset: 0x24EFBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP15cameraDidChangeyyFTW', symObjAddr: 0x147F0, symBinAddr: 0x1C8DD0, symSize: 0x10 } + - { offset: 0x24EFD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP15mapAlignedNorthyyFTW', symObjAddr: 0x14800, symBinAddr: 0x1C8DE0, symSize: 0x10 } + - { offset: 0x24EFF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17PenguinINRenderer05PIMapE13EventDelegateAadEP21puckLocationDidUpdate10coordinateySo22CLLocationCoordinate2DV_tFTW', symObjAddr: 0x14810, symBinAddr: 0x1C8DF0, symSize: 0x10 } + - { offset: 0x24F021, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22onBlePowerStatusChange6statusy7Penguin08BLEPowerJ0O_tFyyScMYccfU_', symObjAddr: 0x14870, symBinAddr: 0x1C8E50, symSize: 0xC0 } + - { offset: 0x24F06A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22setUserLocationBlueDot8location28skipsIntermediateCoordinatesy7Penguin10PILocationC_SbtF', symObjAddr: 0x14930, symBinAddr: 0x1C8F10, symSize: 0x150 } + - { offset: 0x24F133, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23updateUserLocationOnMap8location4edge28skipsIntermediateCoordinatesySo22CLLocationCoordinate2DV_7Penguin4EdgeCSbtF', symObjAddr: 0x14A80, symBinAddr: 0x1C9060, symSize: 0xBE0 } + - { offset: 0x24FA4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16onLocationChange8locationy7Penguin10PILocationC_tF', symObjAddr: 0x15660, symBinAddr: 0x1C9C40, symSize: 0xDB0 } + - { offset: 0x250375, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC32onSourceConnectivityStatusChange6statusy7Penguin0h10ConnectionJ0O_tF', symObjAddr: 0x16410, symBinAddr: 0x1CA9F0, symSize: 0x400 } + - { offset: 0x25075D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18drawLocationChange33_00AFBD3210DA1B0197CE155260A7E798LLyy7Penguin10PILocationCF', symObjAddr: 0x16810, symBinAddr: 0x1CADF0, symSize: 0x390 } + - { offset: 0x250AE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19evaluateRouteStatus8locationy7Penguin10PILocationC_tF', symObjAddr: 0x16BA0, symBinAddr: 0x1CB180, symSize: 0x150 } + - { offset: 0x250C01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7reroute6reason014showsReroutingE0yAA13RerouteReasonO_SbtF', symObjAddr: 0x16CF0, symBinAddr: 0x1CB2D0, symSize: 0x6D0 } + - { offset: 0x25134F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC27drawingFloorsAndRoutingPathyy7Penguin10PILocationCSgF', symObjAddr: 0x173C0, symBinAddr: 0x1CB9A0, symSize: 0x840 } + - { offset: 0x251B95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12onEdgeChange4edgey7Penguin0H0C_tF', symObjAddr: 0x17C00, symBinAddr: 0x1CC1E0, symSize: 0x100 } + - { offset: 0x251CB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13onVenueChange5venuey7Penguin0H0C_tF', symObjAddr: 0x17D00, symBinAddr: 0x1CC2E0, symSize: 0x3D0 } + - { offset: 0x252026, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13onFloorChange5floory7Penguin0H0C_tF', symObjAddr: 0x180E0, symBinAddr: 0x1CC6B0, symSize: 0x560 } + - { offset: 0x252531, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16onRotationChange8rotationy7Penguin10PIRotationC_tF', symObjAddr: 0x18640, symBinAddr: 0x1CCC10, symSize: 0x420 } + - { offset: 0x2528C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC26onConnectivityStatusChange6statusy7Penguin06ServerhI0O_tF', symObjAddr: 0x18A60, symBinAddr: 0x1CD030, symSize: 0x240 } + - { offset: 0x252A32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC28handleServerRetryWithNoRouteyyF', symObjAddr: 0x18CA0, symBinAddr: 0x1CD270, symSize: 0x300 } + - { offset: 0x252C51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17handleServerRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0x18FA0, symBinAddr: 0x1CD570, symSize: 0x3C0 } + - { offset: 0x252D47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17handleServerRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyFyyScMYccfU_', symObjAddr: 0x19680, symBinAddr: 0x1CDC50, symSize: 0x1B0 } + - { offset: 0x252EAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19handleLocationRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0x19360, symBinAddr: 0x1CD930, symSize: 0x320 } + - { offset: 0x252F24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19handleLocationRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyFyyScMYccfU_', symObjAddr: 0x19830, symBinAddr: 0x1CDE00, symSize: 0x350 } + - { offset: 0x25312A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP16onLocationChange8locationyAD0H0C_tFTW', symObjAddr: 0x19B80, symBinAddr: 0x1CE150, symSize: 0x10 } + - { offset: 0x253146, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP12onEdgeChange4edgeyAD0L0C_tFTW', symObjAddr: 0x19B90, symBinAddr: 0x1CE160, symSize: 0x10 } + - { offset: 0x253162, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP13onVenueChange5venueyAD0L0C_tFTW', symObjAddr: 0x19BA0, symBinAddr: 0x1CE170, symSize: 0x10 } + - { offset: 0x25317E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP13onFloorChange5flooryAD0L0C_tFTW', symObjAddr: 0x19BB0, symBinAddr: 0x1CE180, symSize: 0x10 } + - { offset: 0x25319A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP16onRotationChange8rotationyAD10PIRotationC_tFTW', symObjAddr: 0x19BC0, symBinAddr: 0x1CE190, symSize: 0x10 } + - { offset: 0x2531B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP26onConnectivityStatusChange6statusyAD06ServerlM0O_tFTW', symObjAddr: 0x19BD0, symBinAddr: 0x1CE1A0, symSize: 0x10 } + - { offset: 0x2531D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP32onSourceConnectivityStatusChange6statusyAD0l10ConnectionN0O_tFTW', symObjAddr: 0x19BE0, symBinAddr: 0x1CE1B0, symSize: 0x10 } + - { offset: 0x25322C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP017onGPSStatusChangeM06statusyAD25SourceGPSConnectionStatusO_tFTW', symObjAddr: 0x19BF0, symBinAddr: 0x1CE1C0, symSize: 0xC0 } + - { offset: 0x253283, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin25PILocationManagerDelegateAadEP22onBlePowerStatusChange6statusyAD08BLEPowerN0O_tFTW', symObjAddr: 0x19CF0, symBinAddr: 0x1CE280, symSize: 0x10 } + - { offset: 0x25333A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15onSubPathChange03subI0y7Penguin0dhI0C_tF', symObjAddr: 0x19D00, symBinAddr: 0x1CE290, symSize: 0x490 } + - { offset: 0x2537D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20startAnimateSmoothlyyy7Penguin10PILocationCF', symObjAddr: 0x1A190, symBinAddr: 0x1CE720, symSize: 0xE0 } + - { offset: 0x25389C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC07onStartD0yyF', symObjAddr: 0x1A2C0, symBinAddr: 0x1CE850, symSize: 0x6A0 } + - { offset: 0x253F9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08logStartD5EventyyF', symObjAddr: 0x1A960, symBinAddr: 0x1CEEF0, symSize: 0x6E0 } + - { offset: 0x254725, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15setCameraOnPathyyF', symObjAddr: 0x1B040, symBinAddr: 0x1CF5D0, symSize: 0x3F0 } + - { offset: 0x254ACE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9didArrive2at10completionyAA5PlaceCSg_yycSgtF', symObjAddr: 0x1B430, symBinAddr: 0x1CF9C0, symSize: 0x1140 } + - { offset: 0x255BD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9didArrive2at10completionyAA5PlaceCSg_yycSgtFyycfU1_', symObjAddr: 0x1C570, symBinAddr: 0x1D0B00, symSize: 0x150 } + - { offset: 0x255F4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08continueD0yyF', symObjAddr: 0x1C6C0, symBinAddr: 0x1D0C50, symSize: 0x10F0 } + - { offset: 0x256B26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC04showD8Feedback4stopyAA5PlaceCSg_tFyycfU_Tf0sn_n', symObjAddr: 0x1D850, symBinAddr: 0x1D1DE0, symSize: 0x7D0 } + - { offset: 0x2570D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16evaluateSchedule3forySayAA5PlaceCG_tF', symObjAddr: 0x1E080, symBinAddr: 0x1D2610, symSize: 0xC70 } + - { offset: 0x258073, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11onErrorPath02isH0ySb_tF', symObjAddr: 0x1ECF0, symBinAddr: 0x1D3280, symSize: 0x1B0 } + - { offset: 0x2582E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC013showReroutingE06reasonyAA13RerouteReasonO_tF', symObjAddr: 0x1EEA0, symBinAddr: 0x1D3430, symSize: 0x150 } + - { offset: 0x2583D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12onErrorFloor6statusySb_tF', symObjAddr: 0x1EFF0, symBinAddr: 0x1D3580, symSize: 0x90 } + - { offset: 0x2584BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12onErrorVenue6statusySb_tF', symObjAddr: 0x1F080, symBinAddr: 0x1D3610, symSize: 0x90 } + - { offset: 0x258588, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16onErrorPathReady10errorEdgesySay7Penguin0H4EdgeCGSg_tF', symObjAddr: 0x1F110, symBinAddr: 0x1D36A0, symSize: 0x70 } + - { offset: 0x25866A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP07onStartD0yyFTW', symObjAddr: 0x1F1A0, symBinAddr: 0x1D3710, symSize: 0x20 } + - { offset: 0x2586A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP06onStopD0yyFTW', symObjAddr: 0x1F1C0, symBinAddr: 0x1D3730, symSize: 0x20 } + - { offset: 0x2586E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP11onErrorPath02isL0ySb_tFTW', symObjAddr: 0x1F1F0, symBinAddr: 0x1D3750, symSize: 0x20 } + - { offset: 0x2586FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP12onErrorFloor6statusySb_tFTW', symObjAddr: 0x1F210, symBinAddr: 0x1D3770, symSize: 0x20 } + - { offset: 0x25871A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP12onErrorVenue6statusySb_tFTW', symObjAddr: 0x1F230, symBinAddr: 0x1D3790, symSize: 0x20 } + - { offset: 0x258736, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP18onReachDestinationyyFTW', symObjAddr: 0x1F250, symBinAddr: 0x1D37B0, symSize: 0x20 } + - { offset: 0x258752, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP16onErrorPathReady10errorEdgesySayAD0L4EdgeCGSg_tFTW', symObjAddr: 0x1F280, symBinAddr: 0x1D37D0, symSize: 0x20 } + - { offset: 0x25876E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7Penguin27PIDirectionsServiceDelegateAadEP15onSubPathChange03subM0yAD0dlM0C_tFTW', symObjAddr: 0x1F2A0, symBinAddr: 0x1D37F0, symSize: 0x20 } + - { offset: 0x25878A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19drawConnectedFloors33_00AFBD3210DA1B0197CE155260A7E798LL4withy7Penguin5FloorCSg_tF', symObjAddr: 0x1F2C0, symBinAddr: 0x1D3810, symSize: 0x3D0 } + - { offset: 0x258A31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC03getD5Route9reroutingySb_tFy7Penguin0H0VSg_AF0H5ErrorOSgtcfU0_', symObjAddr: 0x1F730, symBinAddr: 0x1D3C80, symSize: 0x60 } + - { offset: 0x258A90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19handleRouteResponse5route5errory7Penguin0H0VSg_AG0H5ErrorOSgtF', symObjAddr: 0x1F790, symBinAddr: 0x1D3CE0, symSize: 0x7A0 } + - { offset: 0x2590C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8setRoute_5errory7Penguin0H0VSg_AF0H5ErrorOSgtF', symObjAddr: 0x1FF30, symBinAddr: 0x1D4480, symSize: 0xF40 } + - { offset: 0x259B72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21handleNoRouteResponse33_00AFBD3210DA1B0197CE155260A7E798LL5errory7Penguin0I5ErrorOSg_tF', symObjAddr: 0x20E70, symBinAddr: 0x1D53C0, symSize: 0x4E0 } + - { offset: 0x259EF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21handleNoRouteResponse33_00AFBD3210DA1B0197CE155260A7E798LL5errory7Penguin0I5ErrorOSg_tFyycACcfu_yycfu0_', symObjAddr: 0x21350, symBinAddr: 0x1D58A0, symSize: 0xC0 } + - { offset: 0x259F27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19showRouteDirections33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0x21460, symBinAddr: 0x1D5960, symSize: 0x4F0 } + - { offset: 0x25A430, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA16DeepLinkDelegateA2aDP011didTapPlaceH05placey7Penguin10PoiPolygonV_tFTW', symObjAddr: 0x21950, symBinAddr: 0x1D5E50, symSize: 0x40 } + - { offset: 0x25A49F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC32updateSubpathsStepperConstraints33_00AFBD3210DA1B0197CE155260A7E798LLyyF', symObjAddr: 0x219E0, symBinAddr: 0x1D5EA0, symSize: 0x360 } + - { offset: 0x25A774, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC30stopReceivingDirectionsUpdatesyyF', symObjAddr: 0x21DC0, symBinAddr: 0x1D6280, symSize: 0x240 } + - { offset: 0x25A911, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16setupPreviewMode02isH0ySb_tF', symObjAddr: 0x22000, symBinAddr: 0x1D64C0, symSize: 0x2C0 } + - { offset: 0x25AAD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC33updateBlueDotUIForLimitedAccuracyyyF', symObjAddr: 0x222C0, symBinAddr: 0x1D6780, symSize: 0x400 } + - { offset: 0x25ADFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19loadMessageForFloor7messageyAA0H6DetailC_tF', symObjAddr: 0x226C0, symBinAddr: 0x1D6B80, symSize: 0xC0 } + - { offset: 0x25AF16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17showMessageDetail7messageyAA0hI0C_tF', symObjAddr: 0x22780, symBinAddr: 0x1D6C40, symSize: 0x3E0 } + - { offset: 0x25B344, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17showMessageDetail7messageyAA0hI0C_tFyycfU_', symObjAddr: 0x230F0, symBinAddr: 0x1D75B0, symSize: 0x60 } + - { offset: 0x25B3C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18addStopForCampaign5placeyAA5PlaceCSg_tF', symObjAddr: 0x22B60, symBinAddr: 0x1D7020, symSize: 0x590 } + - { offset: 0x25B874, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14didUpdateStopsyyF', symObjAddr: 0x23150, symBinAddr: 0x1D7610, symSize: 0x360 } + - { offset: 0x25BBF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA36LocationBasedMessagesManagerDelegateA2aDP19loadMessageForFloor7messageyAA0M6DetailC_tFTW', symObjAddr: 0x234B0, symBinAddr: 0x1D7970, symSize: 0x10 } + - { offset: 0x25BC57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16showClosureAlert4typeyAA0hI4TypeO_tF', symObjAddr: 0x234C0, symBinAddr: 0x1D7980, symSize: 0x730 } + - { offset: 0x25C28D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtFyycfU2_TA', symObjAddr: 0x23CA0, symBinAddr: 0x1D8120, symSize: 0x10 } + - { offset: 0x25C2A1, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x23CB0, symBinAddr: 0x1D8130, symSize: 0x20 } + - { offset: 0x25C2B5, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x23CD0, symBinAddr: 0x1D8150, symSize: 0x10 } + - { offset: 0x25C2C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17logStopReachEventyyFTf4d_n', symObjAddr: 0x246C0, symBinAddr: 0x1D89D0, symSize: 0xB0 } + - { offset: 0x25C43F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC03getD5Route9reroutingySb_tFTf4dn_n', symObjAddr: 0x24770, symBinAddr: 0x1D8A80, symSize: 0x5A0 } + - { offset: 0x25C84F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEntrances9rerouting10completionySb_yyctFySayAA5PlaceCGcfU_03$s8ab4UI24deF65C7reroute6reason014showsReroutingE0yAA13RerouteReasonO_SbtFyycfU_ACSgXwz_XxTf1nc_nTf4ng_n', symObjAddr: 0x25BD0, symBinAddr: 0x1D9EE0, symSize: 0x350 } + - { offset: 0x25CC95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEntrances9rerouting10completionySb_yyctF03$s8ab4UI24deF65C7reroute6reason014showsReroutingE0yAA13RerouteReasonO_SbtFyycfU_ACSgXwz_XxTf1ncn_nTf4dng_n', symObjAddr: 0x25F20, symBinAddr: 0x1DA230, symSize: 0xBC0 } + - { offset: 0x25D570, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22onBlePowerStatusChange6statusy7Penguin08BLEPowerJ0O_tFTf4nd_n', symObjAddr: 0x26AE0, symBinAddr: 0x1DADF0, symSize: 0x270 } + - { offset: 0x25D5CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22onBlePowerStatusChange6statusy7Penguin08BLEPowerJ0O_tFyyScMYccfU_TA', symObjAddr: 0x26D70, symBinAddr: 0x1DB080, symSize: 0x10 } + - { offset: 0x25D5E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC26onConnectivityStatusChange6statusy7Penguin06ServerhI0O_tFyycfU_TA', symObjAddr: 0x26DD0, symBinAddr: 0x1DB090, symSize: 0x20 } + - { offset: 0x25D5F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17handleServerRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyFyyScMYccfU_TA', symObjAddr: 0x26DF0, symBinAddr: 0x1DB0B0, symSize: 0x10 } + - { offset: 0x25D609, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC03getD5Route9reroutingySb_tFy7Penguin0H0VSg_AF0H5ErrorOSgtcfU0_TA', symObjAddr: 0x26E00, symBinAddr: 0x1DB0C0, symSize: 0x10 } + - { offset: 0x25D61D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18onReachDestinationyyFyycfU0_TA', symObjAddr: 0x26E70, symBinAddr: 0x1DB0F0, symSize: 0x20 } + - { offset: 0x25D631, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9didArrive2at10completionyAA5PlaceCSg_yycSgtFyycfU1_TA', symObjAddr: 0x26F60, symBinAddr: 0x1DB190, symSize: 0x20 } + - { offset: 0x25D645, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9didArrive2at10completionyAA5PlaceCSg_yycSgtFyycfU2_TA', symObjAddr: 0x26F90, symBinAddr: 0x1DB1C0, symSize: 0x20 } + - { offset: 0x25D659, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC09addBottomD5PanelyyFyycfU_TA', symObjAddr: 0x27090, symBinAddr: 0x1DB220, symSize: 0x10 } + - { offset: 0x25D66D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC09addBottomD5PanelyyFyycACcfu_yycfu0_TA', symObjAddr: 0x270A0, symBinAddr: 0x1DB230, symSize: 0x20 } + - { offset: 0x25D69F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC09addBottomD5PanelyyFyAA08FloatingiF0CcACcfu1_yAFcfu2_TA', symObjAddr: 0x270C0, symBinAddr: 0x1DB250, symSize: 0x20 } + - { offset: 0x25D6D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21handleNoRouteResponse33_00AFBD3210DA1B0197CE155260A7E798LL5errory7Penguin0I5ErrorOSg_tFyycACcfu_yycfu0_TA', symObjAddr: 0x270E0, symBinAddr: 0x1DB270, symSize: 0x10 } + - { offset: 0x25D6ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16switchToOverviewyyFySbcfU_TA', symObjAddr: 0x270F0, symBinAddr: 0x1DB280, symSize: 0x10 } + - { offset: 0x25D701, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC28handleServerRetryWithNoRouteyyFyycfU_TA', symObjAddr: 0x27100, symBinAddr: 0x1DB290, symSize: 0x20 } + - { offset: 0x25D733, size: 0x8, addend: 0x0, symName: '_$s7Penguin5RouteVSgWOb', symObjAddr: 0x271C0, symBinAddr: 0x1DB350, symSize: 0x40 } + - { offset: 0x25D747, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16switchToOverviewyyFySbcfU_yycfU1_TA', symObjAddr: 0x27200, symBinAddr: 0x1DB390, symSize: 0x30 } + - { offset: 0x25D75B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12setEntrances9rerouting10completionySb_yyctFySayAA5PlaceCGcfU_TA', symObjAddr: 0x27230, symBinAddr: 0x1DB3C0, symSize: 0x20 } + - { offset: 0x25D76F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12GatesManagerC03getD18SortedByTravelTime3for6origin19withNavigationAvoid10completiony7Penguin5VenueCSg_AA5PlaceCSgSbySayANGctFySayAA0R4GateVGcfU_TA', symObjAddr: 0x27270, symBinAddr: 0x1DB400, symSize: 0x20 } + - { offset: 0x25D783, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19handleLocationRetry33_00AFBD3210DA1B0197CE155260A7E798LLyyFyyScMYccfU_TA', symObjAddr: 0x27290, symBinAddr: 0x1DB420, symSize: 0x10 } + - { offset: 0x25D797, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19drawConnectedFloors33_00AFBD3210DA1B0197CE155260A7E798LL4withy7Penguin5FloorCSg_tFySbcfU_TA', symObjAddr: 0x272A0, symBinAddr: 0x1DB430, symSize: 0x20 } + - { offset: 0x25D7AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7reroute6reason014showsReroutingE0yAA13RerouteReasonO_SbtFyycfU_TA', symObjAddr: 0x27330, symBinAddr: 0x1DB450, symSize: 0x20 } + - { offset: 0x25D7BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23updateUserLocationOnMap8location4edge28skipsIntermediateCoordinatesySo22CLLocationCoordinate2DV_7Penguin4EdgeCSbtFyycfU_TA', symObjAddr: 0x27350, symBinAddr: 0x1DB470, symSize: 0x20 } + - { offset: 0x25D7D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFyycfU_TA', symObjAddr: 0x27370, symBinAddr: 0x1DB490, symSize: 0x10 } + - { offset: 0x25D7E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFyycfU0_TA', symObjAddr: 0x27380, symBinAddr: 0x1DB4A0, symSize: 0x20 } + - { offset: 0x25D7FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17showMessageDetail7messageyAA0hI0C_tFyAA5PlaceCSgcACcfu_yAJcfu0_TA', symObjAddr: 0x273D0, symBinAddr: 0x1DB4F0, symSize: 0x20 } + - { offset: 0x25D835, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17showMessageDetail7messageyAA0hI0C_tFyycfU_TA', symObjAddr: 0x273F0, symBinAddr: 0x1DB510, symSize: 0x10 } + - { offset: 0x25D849, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18focusMapOnRecenter33_00AFBD3210DA1B0197CE155260A7E798LL12floorSetting4edgey7Penguin13FloorSettingsV_AH4EdgeCtFyycfU_TA', symObjAddr: 0x27400, symBinAddr: 0x1DB520, symSize: 0x20 } + - { offset: 0x25D85D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22setCameraOnDestinationyyFySbcfU_TA', symObjAddr: 0x27430, symBinAddr: 0x1DB550, symSize: 0x20 } + - { offset: 0x25D871, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9startTripyyFySbcfU_TA', symObjAddr: 0x274F0, symBinAddr: 0x1DB580, symSize: 0x10 } + - { offset: 0x25D885, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateRecenterButtonyyFyycfU_TA', symObjAddr: 0x27580, symBinAddr: 0x1DB5E0, symSize: 0x20 } + - { offset: 0x25D899, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21showDirectionsStepperyyFyAA14RouteDirectionVSg_SbtcACcfu_yAG_Sbtcfu0_TA', symObjAddr: 0x27680, symBinAddr: 0x1DB600, symSize: 0x20 } + - { offset: 0x25D8DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSgSbIegny_ACSbIegny_TRTA', symObjAddr: 0x276A0, symBinAddr: 0x1DB620, symSize: 0x20 } + - { offset: 0x25D8F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC017setupUserTrackingE0yyFyycfU_TA', symObjAddr: 0x276F0, symBinAddr: 0x1DB640, symSize: 0x20 } + - { offset: 0x25D904, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8setupMapyyFySbcfU_TA', symObjAddr: 0x27740, symBinAddr: 0x1DB660, symSize: 0x10 } + - { offset: 0x25D918, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC10onMapReadyyyFyycfU_TA', symObjAddr: 0x27750, symBinAddr: 0x1DB670, symSize: 0x10 } + - { offset: 0x25D92C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC10onMapReadyyyFyycfU_yycfU_TA', symObjAddr: 0x27760, symBinAddr: 0x1DB680, symSize: 0x10 } + - { offset: 0x25D9B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC014toastContainerE0So6UIViewCSgvgTo', symObjAddr: 0x220, symBinAddr: 0x1B4920, symSize: 0x20 } + - { offset: 0x25DA12, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC014toastContainerE0So6UIViewCSgvsTo', symObjAddr: 0x240, symBinAddr: 0x1B4940, symSize: 0x20 } + - { offset: 0x25DA6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15renderingHelperAA09RenderingH0Cvg', symObjAddr: 0x260, symBinAddr: 0x1B4960, symSize: 0xF0 } + - { offset: 0x25DB07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC19routeOverviewHelperAA05RoutehI0Cvg', symObjAddr: 0x350, symBinAddr: 0x1B4A50, symSize: 0xD0 } + - { offset: 0x25DC63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11viewDidLoadyyF', symObjAddr: 0x420, symBinAddr: 0x1B4B20, symSize: 0x140 } + - { offset: 0x25DD71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x560, symBinAddr: 0x1B4C60, symSize: 0x30 } + - { offset: 0x25DDC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCfD', symObjAddr: 0x590, symBinAddr: 0x1B4C90, symSize: 0x140 } + - { offset: 0x25DE4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCfDTo', symObjAddr: 0x6D0, symBinAddr: 0x1B4DD0, symSize: 0x40 } + - { offset: 0x25F520, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14viewWillAppearyySbF', symObjAddr: 0x990, symBinAddr: 0x1B5090, symSize: 0x190 } + - { offset: 0x25F69A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0xCC0, symBinAddr: 0x1B53C0, symSize: 0x30 } + - { offset: 0x25F6C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17viewWillDisappearyySbF', symObjAddr: 0xCF0, symBinAddr: 0x1B53F0, symSize: 0x1D0 } + - { offset: 0x25F765, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC17viewWillDisappearyySbFTo', symObjAddr: 0xEC0, symBinAddr: 0x1B55C0, symSize: 0x30 } + - { offset: 0x25F78D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21viewDidLayoutSubviewsyyFTo', symObjAddr: 0x1170, symBinAddr: 0x1B5870, symSize: 0x60 } + - { offset: 0x25F7B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23preferredStatusBarStyleSo08UIStatusiJ0VvgTo', symObjAddr: 0x11D0, symBinAddr: 0x1B58D0, symSize: 0x30 } + - { offset: 0x25F7E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23preferredStatusBarStyleSo08UIStatusiJ0Vvg', symObjAddr: 0x1200, symBinAddr: 0x1B5900, symSize: 0xD0 } + - { offset: 0x25F8E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC017setupInstructionsE0yyF', symObjAddr: 0x15E0, symBinAddr: 0x1B5CE0, symSize: 0x370 } + - { offset: 0x25FA0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC017setupUserTrackingE0yyF', symObjAddr: 0x1950, symBinAddr: 0x1B6050, symSize: 0x320 } + - { offset: 0x25FB16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC019setupFloorIndicatorE0yyF', symObjAddr: 0x1C70, symBinAddr: 0x1B6370, symSize: 0x250 } + - { offset: 0x25FB9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC014setupReroutingE0yyF', symObjAddr: 0x1EC0, symBinAddr: 0x1B65C0, symSize: 0x2F0 } + - { offset: 0x25FC6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC018setupSpeechControlE0yyF', symObjAddr: 0x21B0, symBinAddr: 0x1B68B0, symSize: 0x280 } + - { offset: 0x25FD71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC018setupChangingFloorE0yyF', symObjAddr: 0x2430, symBinAddr: 0x1B6B30, symSize: 0x390 } + - { offset: 0x25FEF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC010setupDebugE0yyF', symObjAddr: 0x27C0, symBinAddr: 0x1B6EC0, symSize: 0x6E0 } + - { offset: 0x26041A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18oneSecondDidElapseyyFTo', symObjAddr: 0x2EA0, symBinAddr: 0x1B75A0, symSize: 0x70 } + - { offset: 0x26047B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12removePanelsyyF', symObjAddr: 0x2F10, symBinAddr: 0x1B7610, symSize: 0xD0 } + - { offset: 0x2605F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12removePanelsyyFTo', symObjAddr: 0x2FE0, symBinAddr: 0x1B76E0, symSize: 0x30 } + - { offset: 0x260637, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC21showDirectionsStepperyyF', symObjAddr: 0x3010, symBinAddr: 0x1B7710, symSize: 0x3D0 } + - { offset: 0x260A52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16previewDirection_9redrawMapyAA05RouteH0VSg_SbtF', symObjAddr: 0x3470, symBinAddr: 0x1B7B70, symSize: 0x11A0 } + - { offset: 0x261595, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC29drawDestinationSymbolIfNeeded11destinationyAA5PlaceCSg_tF', symObjAddr: 0x4610, symBinAddr: 0x1B8D10, symSize: 0x440 } + - { offset: 0x261A15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13drawRoutePathyy7Penguin03SubI0CSgF', symObjAddr: 0x4A50, symBinAddr: 0x1B9150, symSize: 0x7C0 } + - { offset: 0x261F2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC13drawRoutePathyy7Penguin03SubI0CSgFySo7UIImageCSgcfU_', symObjAddr: 0x5210, symBinAddr: 0x1B9910, symSize: 0xD0 } + - { offset: 0x262BB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9drawFloor_012setsCameraToH0y7Penguin0H0CSg_SbtF', symObjAddr: 0x5340, symBinAddr: 0x1B99E0, symSize: 0xA70 } + - { offset: 0x263257, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9drawFloor_012setsCameraToH0y7Penguin0H0CSg_SbtFySbcfU_', symObjAddr: 0x5DB0, symBinAddr: 0x1BA450, symSize: 0x80 } + - { offset: 0x2632F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC14updateMapLevelyy7Penguin0hI0OSgF', symObjAddr: 0x5E30, symBinAddr: 0x1BA4D0, symSize: 0x190 } + - { offset: 0x263395, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateRecenterButtonyyF', symObjAddr: 0x5FC0, symBinAddr: 0x1BA660, symSize: 0x210 } + - { offset: 0x26348E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateRecenterButtonyyFyycfU_', symObjAddr: 0x61D0, symBinAddr: 0x1BA870, symSize: 0x220 } + - { offset: 0x263698, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15updateRoutePathyyF', symObjAddr: 0x63F0, symBinAddr: 0x1BAA90, symSize: 0xD80 } + - { offset: 0x264422, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9startTripyyF', symObjAddr: 0x7170, symBinAddr: 0x1BB810, symSize: 0xE0 } + - { offset: 0x2644A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9startTripyyFySbcfU_', symObjAddr: 0x7250, symBinAddr: 0x1BB8F0, symSize: 0x7C0 } + - { offset: 0x264B73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12previewRouteyyF', symObjAddr: 0x7A10, symBinAddr: 0x1BC0B0, symSize: 0x4C0 } + - { offset: 0x2651BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22setCameraOnDestinationyyF', symObjAddr: 0x85C0, symBinAddr: 0x1BCC60, symSize: 0x1DC0 } + - { offset: 0x266E0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16setCameraOnVenueyyF', symObjAddr: 0xA750, symBinAddr: 0x1BED70, symSize: 0x550 } + - { offset: 0x267344, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC03endD018switchesToOverviewySb_tF', symObjAddr: 0xACA0, symBinAddr: 0x1BF2C0, symSize: 0x270 } + - { offset: 0x26766D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16switchToOverviewyyFySbcfU_', symObjAddr: 0xAF10, symBinAddr: 0x1BF530, symSize: 0x1010 } + - { offset: 0x268663, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC16switchToOverviewyyFySbcfU_yycfU1_', symObjAddr: 0xC150, symBinAddr: 0x1C0770, symSize: 0xB90 } + - { offset: 0x2690A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFyycfU_', symObjAddr: 0xD4B0, symBinAddr: 0x1C1AD0, symSize: 0x100 } + - { offset: 0x26919D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFTo', symObjAddr: 0xD5B0, symBinAddr: 0x1C1BD0, symSize: 0x50 } + - { offset: 0x269224, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC12addObserversyyF', symObjAddr: 0xD600, symBinAddr: 0x1C1C20, symSize: 0x180 } + - { offset: 0x2692CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC15removeObserversyyF', symObjAddr: 0xD780, symBinAddr: 0x1C1DA0, symSize: 0x110 } + - { offset: 0x2693FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20didTapRecenterButtonyyF', symObjAddr: 0xD890, symBinAddr: 0x1C1EB0, symSize: 0x740 } + - { offset: 0x269A0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20didTapRecenterButtonyyFTo', symObjAddr: 0xDFD0, symBinAddr: 0x1C25F0, symSize: 0x30 } + - { offset: 0x269A5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC8recenteryyF', symObjAddr: 0xE000, symBinAddr: 0x1C2620, symSize: 0x520 } + - { offset: 0x269ECE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC20updateRouteEstimatesyyF', symObjAddr: 0xE830, symBinAddr: 0x1C2E50, symSize: 0x860 } + - { offset: 0x26A888, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xF090, symBinAddr: 0x1C36B0, symSize: 0x780 } + - { offset: 0x26AB68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xF810, symBinAddr: 0x1C3E30, symSize: 0x50 } + - { offset: 0x26AB7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xF860, symBinAddr: 0x1C3E80, symSize: 0x790 } + - { offset: 0x26AE4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xFFF0, symBinAddr: 0x1C4610, symSize: 0x30 } + - { offset: 0x26AE62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvgTW', symObjAddr: 0x10040, symBinAddr: 0x1C4660, symSize: 0x40 } + - { offset: 0x26AE95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvMTW', symObjAddr: 0x10080, symBinAddr: 0x1C46A0, symSize: 0x40 } + - { offset: 0x26BBC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC18focusMapOnRecenter33_00AFBD3210DA1B0197CE155260A7E798LL12floorSetting4edgey7Penguin13FloorSettingsV_AH4EdgeCtFTf4ndn_n', symObjAddr: 0x23E50, symBinAddr: 0x1D8160, symSize: 0x4A0 } + - { offset: 0x26BF3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC08showExitD5AlertyySo22UITapGestureRecognizerCSgFTf4dn_n', symObjAddr: 0x242F0, symBinAddr: 0x1D8600, symSize: 0x3D0 } + - { offset: 0x26C7A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6FilterCfE', symObjAddr: 0x20, symBinAddr: 0x1DB940, symSize: 0x20 } + - { offset: 0x26C7D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6FilterCMa', symObjAddr: 0x90, symBinAddr: 0x1DB9B0, symSize: 0x20 } + - { offset: 0x26C7E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6FilterC6EffectOMa', symObjAddr: 0x140, symBinAddr: 0x1DB9D0, symSize: 0xA } + - { offset: 0x26C835, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6FilterCfD', symObjAddr: 0x40, symBinAddr: 0x1DB960, symSize: 0x50 } + - { offset: 0x26CC03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserVwet', symObjAddr: 0x1C0, symBinAddr: 0x1DB9E0, symSize: 0x50 } + - { offset: 0x26CC17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserVwst', symObjAddr: 0x210, symBinAddr: 0x1DBA30, symSize: 0x50 } + - { offset: 0x26CC2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserVMa', symObjAddr: 0x260, symBinAddr: 0x1DBA80, symSize: 0x10 } + - { offset: 0x26CC3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVMa', symObjAddr: 0x270, symBinAddr: 0x1DBA90, symSize: 0x10 } + - { offset: 0x26CCC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseStringyS2SKF', symObjAddr: 0x3C0, symBinAddr: 0x1DBBE0, symSize: 0x40 } + - { offset: 0x26CD32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE8parseRawyqd__SgSSKSYRd__SS0G5ValueRtd__lF', symObjAddr: 0x400, symBinAddr: 0x1DBC20, symSize: 0x50 } + - { offset: 0x26CD8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE8parseRawyqd__SgSSKSYRd__SS0G5ValueRtd__lFqd__SSKXEfU_', symObjAddr: 0x1000, symBinAddr: 0x1DC5F0, symSize: 0x80 } + - { offset: 0x26CE04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseStringySSSgSSKF', symObjAddr: 0x450, symBinAddr: 0x1DBC70, symSize: 0x40 } + - { offset: 0x26CE56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parseCoordinateySfSSKF', symObjAddr: 0x4D0, symBinAddr: 0x1DBCF0, symSize: 0x50 } + - { offset: 0x26CEE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE10parseColoryAA3DOMO0G0OSgSSKF', symObjAddr: 0x520, symBinAddr: 0x1DBD40, symSize: 0x1A0 } + - { offset: 0x26CF9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseFloatsySaySfGSgSSKF', symObjAddr: 0x750, symBinAddr: 0x1DBF70, symSize: 0x80 } + - { offset: 0x26CFE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseFloatsySaySfGSgSSKFAESSKXEfU_', symObjAddr: 0xE10, symBinAddr: 0x1DC400, symSize: 0x70 } + - { offset: 0x26D066, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs10SetAlgebraAASQWb', symObjAddr: 0xAC0, symBinAddr: 0x1DC0B0, symSize: 0x10 } + - { offset: 0x26D07A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVAESQAAWl', symObjAddr: 0xAD0, symBinAddr: 0x1DC0C0, symSize: 0x30 } + - { offset: 0x26D08E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs10SetAlgebraAAs25ExpressibleByArrayLiteralPWb', symObjAddr: 0xB00, symBinAddr: 0x1DC0F0, symSize: 0x10 } + - { offset: 0x26D0A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVAEs25ExpressibleByArrayLiteralAAWl', symObjAddr: 0xB10, symBinAddr: 0x1DC100, symSize: 0x30 } + - { offset: 0x26D0B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs9OptionSetAASYWb', symObjAddr: 0xB40, symBinAddr: 0x1DC130, symSize: 0x10 } + - { offset: 0x26D0CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVAESYAAWl', symObjAddr: 0xB50, symBinAddr: 0x1DC140, symSize: 0x30 } + - { offset: 0x26D0DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs9OptionSetAAs0G7AlgebraPWb', symObjAddr: 0xB80, symBinAddr: 0x1DC170, symSize: 0x10 } + - { offset: 0x26D0F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVAEs10SetAlgebraAAWl', symObjAddr: 0xB90, symBinAddr: 0x1DC180, symSize: 0x30 } + - { offset: 0x26D106, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE5parse_3expqd__SgSS_qd__SSKXEtKlF', symObjAddr: 0xC80, symBinAddr: 0x1DC270, symSize: 0x120 } + - { offset: 0x26D258, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE16parseUrlSelectory10Foundation3URLVSgSSKFAGSSKXEfU_TA', symObjAddr: 0x1170, symBinAddr: 0x1DC760, symSize: 0x20 } + - { offset: 0x26D26C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE11parseFloatsySaySfGSgSSKFAESSKXEfU_TA', symObjAddr: 0x1220, symBinAddr: 0x1DC780, symSize: 0x20 } + - { offset: 0x26D280, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE10parseFloatySfSgSSKFSfSSKXEfU_TA', symObjAddr: 0x1240, symBinAddr: 0x1DC7A0, symSize: 0x20 } + - { offset: 0x26D294, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO5ErrorOAEsAdAWl', symObjAddr: 0x12C0, symBinAddr: 0x1DC7C0, symSize: 0x30 } + - { offset: 0x26D2A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE8parseRawyqd__SgSSKSYRd__SS0G5ValueRtd__lFqd__SSKXEfU_TA', symObjAddr: 0x12F0, symBinAddr: 0x1DC7F0, symSize: 0x30 } + - { offset: 0x26D2BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parsePercentageySfSgSSKFSfSSKXEfU_TA', symObjAddr: 0x1320, symBinAddr: 0x1DC820, symSize: 0x20 } + - { offset: 0x26D2D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE15parseCoordinateySfSSKFSfSSKXEfU_TA', symObjAddr: 0x1340, symBinAddr: 0x1DC840, symSize: 0x20 } + - { offset: 0x26D2E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15AttributeParserPAAE8parseUrly10Foundation3URLVSSKFAGSSKXEfU_TA', symObjAddr: 0x1440, symBinAddr: 0x1DC8E0, symSize: 0x20 } + - { offset: 0x26D2F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwxx', symObjAddr: 0x1490, symBinAddr: 0x1DC900, symSize: 0xA0 } + - { offset: 0x26D30C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwcp', symObjAddr: 0x1560, symBinAddr: 0x1DC9A0, symSize: 0x160 } + - { offset: 0x26D320, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwca', symObjAddr: 0x16C0, symBinAddr: 0x1DCB00, symSize: 0x1E0 } + - { offset: 0x26D334, size: 0x8, addend: 0x0, symName: ___swift_memcpy50_8, symObjAddr: 0x18A0, symBinAddr: 0x1DCCE0, symSize: 0x30 } + - { offset: 0x26D348, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwta', symObjAddr: 0x18D0, symBinAddr: 0x1DCD10, symSize: 0x170 } + - { offset: 0x26D35C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwet', symObjAddr: 0x1A40, symBinAddr: 0x1DCE80, symSize: 0x40 } + - { offset: 0x26D370, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwst', symObjAddr: 0x1A80, symBinAddr: 0x1DCEC0, symSize: 0x50 } + - { offset: 0x26D384, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwug', symObjAddr: 0x1AD0, symBinAddr: 0x1DCF10, symSize: 0x20 } + - { offset: 0x26D398, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOwui', symObjAddr: 0x1B00, symBinAddr: 0x1DCF30, symSize: 0x30 } + - { offset: 0x26D3AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV5ErrorOMa', symObjAddr: 0x1B30, symBinAddr: 0x1DCF60, symSize: 0x10 } + - { offset: 0x26D44C, size: 0x8, addend: 0x0, symName: '_$ss10SetAlgebraPs7ElementQz012ArrayLiteralC0RtzrlE05arrayE0xAFd_tcfC8PenNavUI3SVGC7OptionsV_Tg5', symObjAddr: 0x280, symBinAddr: 0x1DBAA0, symSize: 0x100 } + - { offset: 0x26D594, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7OptionsVs25ExpressibleByArrayLiteralAAsAFP05arrayI0x0hI7ElementQzd_tcfCTW', symObjAddr: 0xA90, symBinAddr: 0x1DC080, symSize: 0x30 } + - { offset: 0x26DAD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC22directionsTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1DCFB0, symSize: 0x20 } + - { offset: 0x26DCB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellCfETo', symObjAddr: 0x6C0, symBinAddr: 0x1DD670, symSize: 0x40 } + - { offset: 0x26DCE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellCMa', symObjAddr: 0x700, symBinAddr: 0x1DD6B0, symSize: 0x20 } + - { offset: 0x26DCF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtFyycfU_TA', symObjAddr: 0x740, symBinAddr: 0x1DD6F0, symSize: 0x10 } + - { offset: 0x26DD0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtFyycfU0_TA', symObjAddr: 0x770, symBinAddr: 0x1DD700, symSize: 0x10 } + - { offset: 0x26DDE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC22directionsTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1DCFB0, symSize: 0x20 } + - { offset: 0x26DE46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC22directionsTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x1DCFD0, symSize: 0x30 } + - { offset: 0x26DE95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC17floorTappableViewAA06HapticI0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0x1DD000, symSize: 0x20 } + - { offset: 0x26DEE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC17floorTappableViewAA06HapticI0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0x1DD020, symSize: 0x30 } + - { offset: 0x26DF3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12awakeFromNibyyF', symObjAddr: 0xA0, symBinAddr: 0x1DD050, symSize: 0xE0 } + - { offset: 0x26DFBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12awakeFromNibyyFTo', symObjAddr: 0x180, symBinAddr: 0x1DD130, symSize: 0x30 } + - { offset: 0x26E003, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtF', symObjAddr: 0x1B0, symBinAddr: 0x1DD160, symSize: 0x220 } + - { offset: 0x26E167, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtFyycfU_', symObjAddr: 0x3D0, symBinAddr: 0x1DD380, symSize: 0x90 } + - { offset: 0x26E1B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC12setupActions11venueDetail19showsSkeletonLoaderyAA0D8ViewDataCSg_SbtFyycfU0_', symObjAddr: 0x460, symBinAddr: 0x1DD410, symSize: 0xA0 } + - { offset: 0x26E27D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x500, symBinAddr: 0x1DD4B0, symSize: 0xC0 } + - { offset: 0x26E2E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x5C0, symBinAddr: 0x1DD570, symSize: 0xA0 } + - { offset: 0x26E313, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x660, symBinAddr: 0x1DD610, symSize: 0x30 } + - { offset: 0x26E327, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueActionCellCfD', symObjAddr: 0x690, symBinAddr: 0x1DD640, symSize: 0x30 } + - { offset: 0x26E6C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1DD710, symSize: 0x10 } + - { offset: 0x26E88F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutCMa', symObjAddr: 0x430, symBinAddr: 0x1DDB10, symSize: 0x20 } + - { offset: 0x26E8D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1DD710, symSize: 0x10 } + - { offset: 0x26E907, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvgTo', symObjAddr: 0x10, symBinAddr: 0x1DD720, symSize: 0x10 } + - { offset: 0x26E93E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvsTo', symObjAddr: 0x20, symBinAddr: 0x1DD730, symSize: 0x30 } + - { offset: 0x26E986, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC7anchorsSDyAA18FloatingPanelStateCAA0ijG9Anchoring_pGvgTo', symObjAddr: 0x50, symBinAddr: 0x1DD760, symSize: 0x70 } + - { offset: 0x26EA8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC7anchorsSDyAA18FloatingPanelStateCAA0ijG9Anchoring_pGvg', symObjAddr: 0xC0, symBinAddr: 0x1DD7D0, symSize: 0x2A0 } + - { offset: 0x26EC83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tFTo', symObjAddr: 0x360, symBinAddr: 0x1DDA70, symSize: 0xA0 } + - { offset: 0x26ED36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25AbsoluteInsetDrivenLayoutC09topAnchorE012CoreGraphics7CGFloatVvgZTf4d_n', symObjAddr: 0x490, symBinAddr: 0x1DDB30, symSize: 0x160 } + - { offset: 0x26F1DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC11viewDidLoadyyF', symObjAddr: 0x0, symBinAddr: 0x1DDC90, symSize: 0x200 } + - { offset: 0x26F533, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerCfETo', symObjAddr: 0x8A0, symBinAddr: 0x1DE530, symSize: 0x40 } + - { offset: 0x26F562, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerCMa', symObjAddr: 0x8E0, symBinAddr: 0x1DE570, symSize: 0x20 } + - { offset: 0x26F57D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC11viewDidLoadyyF', symObjAddr: 0x0, symBinAddr: 0x1DDC90, symSize: 0x200 } + - { offset: 0x26F5F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x200, symBinAddr: 0x1DDE90, symSize: 0x30 } + - { offset: 0x26F6BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x230, symBinAddr: 0x1DDEC0, symSize: 0x20 } + - { offset: 0x26F7E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0x250, symBinAddr: 0x1DDEE0, symSize: 0x350 } + - { offset: 0x26F9F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x5A0, symBinAddr: 0x1DE230, symSize: 0xB0 } + - { offset: 0x26FA14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x650, symBinAddr: 0x1DE2E0, symSize: 0xA0 } + - { offset: 0x26FA61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x6F0, symBinAddr: 0x1DE380, symSize: 0xE0 } + - { offset: 0x26FAB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x7D0, symBinAddr: 0x1DE460, symSize: 0xA0 } + - { offset: 0x26FAF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerCfD', symObjAddr: 0x870, symBinAddr: 0x1DE500, symSize: 0x30 } + - { offset: 0x26FB27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MenuViewControllerC05tableE0_14didSelectRowAtySo07UITableE0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x980, symBinAddr: 0x1DE590, symSize: 0xAD } + - { offset: 0x26FEFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC8positionAA08FloatingE8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1DE640, symSize: 0x10 } + - { offset: 0x270015, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutCMa', symObjAddr: 0xC0, symBinAddr: 0x1DE6D0, symSize: 0x20 } + - { offset: 0x2700BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC8positionAA08FloatingE8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x1DE640, symSize: 0x10 } + - { offset: 0x2700EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC12initialStateAA08FloatingeH0CvgTo', symObjAddr: 0x10, symBinAddr: 0x1DE650, symSize: 0x10 } + - { offset: 0x2701B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC7anchorsSDyAA08FloatingE5StateCAA0heF9Anchoring_pGvgTo', symObjAddr: 0x20, symBinAddr: 0x1DE660, symSize: 0x60 } + - { offset: 0x2701DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA08FloatingE5StateC_tFTo', symObjAddr: 0x80, symBinAddr: 0x1DE6C0, symSize: 0x10 } + - { offset: 0x27027F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC14topAnchorInset12CoreGraphics7CGFloatVvgZTf4d_n', symObjAddr: 0xE0, symBinAddr: 0x1DE6F0, symSize: 0x160 } + - { offset: 0x270405, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15FullPanelLayoutC7anchorsSDyAA08FloatingE5StateCAA0heF9Anchoring_pGvgTf4d_n', symObjAddr: 0x240, symBinAddr: 0x1DE850, symSize: 0x120 } + - { offset: 0x2708BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV9createArc4from4lastSayAC4PathC7SegmentOGSgAA3DOMOAICAKO_AC5PointVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1DE970, symSize: 0x170 } + - { offset: 0x2709F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV9createArc4from4lastSayAC4PathC7SegmentOGSgAA3DOMOAICAKO_AC5PointVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1DE970, symSize: 0x170 } + - { offset: 0x2710EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11makeSegment4from4last8previousAC4PathC0H0OSgAA3DOMOAJCALO_AC5PointVATSgtFZTf4nnnd_n', symObjAddr: 0x170, symBinAddr: 0x1DEAE0, symSize: 0x390 } + - { offset: 0x271580, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV10createPath4fromAC0H0CAA3DOMOAHC_tKFZTf4nd_n', symObjAddr: 0x500, symBinAddr: 0x1DEE70, symSize: 0x300 } + - { offset: 0x271ECD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataCMa', symObjAddr: 0xB0, symBinAddr: 0x1DF1F0, symSize: 0x20 } + - { offset: 0x271F4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfc', symObjAddr: 0x50, symBinAddr: 0x1DF190, symSize: 0x60 } + - { offset: 0x271FB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataC6entity10insertIntoACSo19NSEntityDescriptionC_So22NSManagedObjectContextCSgtcfcTo', symObjAddr: 0xD0, symBinAddr: 0x1DF210, symSize: 0x50 } + - { offset: 0x271FFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SharedLocationCacheDataCfD', symObjAddr: 0x120, symBinAddr: 0x1DF260, symSize: 0x2B } + - { offset: 0x2723AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AlertActionStyleOMa', symObjAddr: 0x1A0, symBinAddr: 0x1DF290, symSize: 0x10 } + - { offset: 0x2723C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AlertActionStyleOSHAASQWb', symObjAddr: 0x1B0, symBinAddr: 0x1DF2A0, symSize: 0x10 } + - { offset: 0x2723D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16AlertActionStyleOACSQAAWl', symObjAddr: 0x1C0, symBinAddr: 0x1DF2B0, symSize: 0x30 } + - { offset: 0x272A31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperCMa', symObjAddr: 0x17E0, symBinAddr: 0x1E0AC0, symSize: 0x20 } + - { offset: 0x272A66, size: 0x8, addend: 0x0, symName: '_$sSh9_subtractyyqd__7ElementQyd__RszSTRd__lF8PenNavUI9ToastTypeO_ShyAFGTg5', symObjAddr: 0x1840, symBinAddr: 0x1E0AE0, symSize: 0xE0 } + - { offset: 0x272B0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC12addObserversyyF', symObjAddr: 0x0, symBinAddr: 0x1DF2E0, symSize: 0x350 } + - { offset: 0x272B8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC15removeObserversyyF', symObjAddr: 0x350, symBinAddr: 0x1DF630, symSize: 0x2E0 } + - { offset: 0x272E8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC22locationStateDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0x630, symBinAddr: 0x1DF910, symSize: 0x210 } + - { offset: 0x273036, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC23bluetoothStateDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0x860, symBinAddr: 0x1DFB40, symSize: 0x1D0 } + - { offset: 0x273157, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC25locationAccuracyDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0xAA0, symBinAddr: 0x1DFD80, symSize: 0x1D0 } + - { offset: 0x273291, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC31locationDetectionStateDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0xC90, symBinAddr: 0x1DFF70, symSize: 0x1A0 } + - { offset: 0x2733BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC25networkInterfaceDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0xE50, symBinAddr: 0x1E0130, symSize: 0x2D0 } + - { offset: 0x2734A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC25connectionStatusDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0x1140, symBinAddr: 0x1E0420, symSize: 0x3E0 } + - { offset: 0x273781, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC31directionsAvailabilityDidChange12notificationySo14NSNotificationC_tF', symObjAddr: 0x1540, symBinAddr: 0x1E0820, symSize: 0x1E0 } + - { offset: 0x27388F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperC25userLocationStatusChangedyyFTo', symObjAddr: 0x1740, symBinAddr: 0x1E0A20, symSize: 0x80 } + - { offset: 0x2738CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23ToastNotificationHelperCfD', symObjAddr: 0x17C0, symBinAddr: 0x1E0AA0, symSize: 0x20 } + - { offset: 0x273CAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parseyxSS_xSSKXEtKlF', symObjAddr: 0x2A0, symBinAddr: 0x1E0E60, symSize: 0x290 } + - { offset: 0x273DCC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCMa', symObjAddr: 0x6F0, symBinAddr: 0x1E12B0, symSize: 0x20 } + - { offset: 0x274019, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserVMa', symObjAddr: 0x1EF0, symBinAddr: 0x1E2920, symSize: 0x10 } + - { offset: 0x2741A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parseyxSS_xSSKXEtKlF', symObjAddr: 0x2A0, symBinAddr: 0x1E0E60, symSize: 0x290 } + - { offset: 0x274291, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesC5parse_4with3forxSSSg_xSSKXESStKlF', symObjAddr: 0x530, symBinAddr: 0x1E10F0, symSize: 0x180 } + - { offset: 0x274348, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCfD', symObjAddr: 0x6B0, symBinAddr: 0x1E1270, symSize: 0x40 } + - { offset: 0x274388, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCAA15AttributeParserA2aFP6parserAA0f5ValueG0_pvgTW', symObjAddr: 0x710, symBinAddr: 0x1E12D0, symSize: 0x20 } + - { offset: 0x2743B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCAA15AttributeParserA2aFP7optionsAC7OptionsVvgTW', symObjAddr: 0x730, symBinAddr: 0x1E12F0, symSize: 0x10 } + - { offset: 0x2743E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10AttributesCAA15AttributeParserA2aFP5parseyqd__SS_qd__SSKXEtKlFTW', symObjAddr: 0x740, symBinAddr: 0x1E1300, symSize: 0x20 } + - { offset: 0x274597, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV16parseUrlSelectory10Foundation3URLVSSKF', symObjAddr: 0x760, symBinAddr: 0x1E1320, symSize: 0x5A0 } + - { offset: 0x27496E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV11parsePointsySayAA3DOMO5PointVGSSKF', symObjAddr: 0xD00, symBinAddr: 0x1E18C0, symSize: 0x10 } + - { offset: 0x274982, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV8parseRawyxSSKSYRzSS0hE0RtzlF', symObjAddr: 0xD10, symBinAddr: 0x1E18D0, symSize: 0x160 } + - { offset: 0x274A32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV15parseCoordinateySfSSKFTf4nd_n', symObjAddr: 0x1000, symBinAddr: 0x1E1A30, symSize: 0x1D0 } + - { offset: 0x274B23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV11parsePointsySayAA3DOMO5PointVGSSKFTf4nd_n', symObjAddr: 0x11D0, symBinAddr: 0x1E1C00, symSize: 0x4D0 } + - { offset: 0x274E41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV10parseFloatySfSSKFTf4nd_n', symObjAddr: 0x16A0, symBinAddr: 0x1E20D0, symSize: 0x1D0 } + - { offset: 0x274F19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV11parseFloatsySaySfGSSKFTf4nd_n', symObjAddr: 0x1870, symBinAddr: 0x1E22A0, symSize: 0x460 } + - { offset: 0x275270, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11ValueParserV15parsePercentageySfSSKFTf4nd_n', symObjAddr: 0x1CD0, symBinAddr: 0x1E2700, symSize: 0x220 } + - { offset: 0x275717, size: 0x8, addend: 0x0, symName: '_$sSlsE10firstIndex5where0B0QzSgSb7ElementQzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg5', symObjAddr: 0x110, symBinAddr: 0x1E2950, symSize: 0xD0 } + - { offset: 0x27586E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE06removeE08animated012restoresLastE010completionySb_SbyycSgtF', symObjAddr: 0x300, symBinAddr: 0x1E2B40, symSize: 0x250 } + - { offset: 0x275AED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE04moveE02to19ignoresCurrentState8animated10completionyAA0deK0CSg_S2byycSgtF', symObjAddr: 0x550, symBinAddr: 0x1E2D90, symSize: 0x1F0 } + - { offset: 0x275E00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE010initializeE05levelySi_tF', symObjAddr: 0x740, symBinAddr: 0x1E2F80, symSize: 0x2E0 } + - { offset: 0x275FC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE010initializeE05levelySi_tFAA17SurfaceAppearanceCyXEfU_', symObjAddr: 0xA20, symBinAddr: 0x1E3260, symSize: 0x100 } + - { offset: 0x2760C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24FloatingPanelPresentablePAAE06removeE08animated012restoresLastE010completionySb_SbyycSgtFSbAaB_pXEfU_TA', symObjAddr: 0xB20, symBinAddr: 0x1E3360, symSize: 0x10 } + - { offset: 0x276195, size: 0x8, addend: 0x0, symName: '_$sSMsE20_halfStablePartition15isSuffixElement5IndexQzSb0F0QzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg5', symObjAddr: 0xB30, symBinAddr: 0x1E3370, symSize: 0x24E } + - { offset: 0x276509, size: 0x8, addend: 0x0, symName: '_$sSlsE10firstIndex5where0B0QzSgSb7ElementQzKXE_tKFSay8PenNavUI24FloatingPanelPresentable_pG_Tg5', symObjAddr: 0x110, symBinAddr: 0x1E2950, symSize: 0xD0 } + - { offset: 0x276637, size: 0x8, addend: 0x0, symName: '_$sSlsE10firstIndex5where0B0QzSgSb7ElementQzKXE_tKFSay8PenNavUI5PlaceCG_Tg5', symObjAddr: 0x1E0, symBinAddr: 0x1E2A20, symSize: 0x120 } + - { offset: 0x276EE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22LocationIndicatorStyleOMa', symObjAddr: 0x1A0, symBinAddr: 0x1E35C0, symSize: 0x10 } + - { offset: 0x276EF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22LocationIndicatorStyleOSHAASQWb', symObjAddr: 0x1B0, symBinAddr: 0x1E35D0, symSize: 0x10 } + - { offset: 0x276F09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22LocationIndicatorStyleOACSQAAWl', symObjAddr: 0x1C0, symBinAddr: 0x1E35E0, symSize: 0x30 } + - { offset: 0x2772C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC4fullACvpZ', symObjAddr: 0x8A0, symBinAddr: 0x3A4548, symSize: 0x0 } + - { offset: 0x2774C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC4halfACvpZ', symObjAddr: 0x8A8, symBinAddr: 0x3A4550, symSize: 0x0 } + - { offset: 0x2774DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC3tipACvpZ', symObjAddr: 0x8B0, symBinAddr: 0x3A4558, symSize: 0x0 } + - { offset: 0x2774F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC6hiddenACvpZ', symObjAddr: 0x8B8, symBinAddr: 0x3A4560, symSize: 0x0 } + - { offset: 0x277503, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCMa', symObjAddr: 0xB0, symBinAddr: 0x1E36C0, symSize: 0x20 } + - { offset: 0x277538, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCfETo', symObjAddr: 0x7B0, symBinAddr: 0x1E3D10, symSize: 0x20 } + - { offset: 0x27763F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValueACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x1E3610, symSize: 0x60 } + - { offset: 0x27767C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValueACSgSS_tcfc', symObjAddr: 0x60, symBinAddr: 0x1E3670, symSize: 0x50 } + - { offset: 0x2776D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValue5orderACSS_SitcfC', symObjAddr: 0xD0, symBinAddr: 0x1E36E0, symSize: 0x60 } + - { offset: 0x27771B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValue5orderACSS_Sitcfc', symObjAddr: 0x130, symBinAddr: 0x1E3740, symSize: 0x50 } + - { offset: 0x27776C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC8rawValue5orderACSS_SitcfcTo', symObjAddr: 0x180, symBinAddr: 0x1E3790, symSize: 0x60 } + - { offset: 0x2777B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC5orderSivg', symObjAddr: 0x1E0, symBinAddr: 0x1E37F0, symSize: 0x20 } + - { offset: 0x2777DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC4copy4withyp10ObjectiveC6NSZoneVSg_tF', symObjAddr: 0x200, symBinAddr: 0x1E3810, symSize: 0x30 } + - { offset: 0x277825, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC4copy4withyp10ObjectiveC6NSZoneVSg_tFTo', symObjAddr: 0x230, symBinAddr: 0x1E3840, symSize: 0x10 } + - { offset: 0x27784D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC11descriptionSSvgTo', symObjAddr: 0x240, symBinAddr: 0x1E3850, symSize: 0x50 } + - { offset: 0x277880, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC11descriptionSSvg', symObjAddr: 0x290, symBinAddr: 0x1E38A0, symSize: 0x30 } + - { offset: 0x2778D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateC16debugDescriptionSSvgTo', symObjAddr: 0x2C0, symBinAddr: 0x1E38D0, symSize: 0xE0 } + - { offset: 0x27796D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCACycfC', symObjAddr: 0x700, symBinAddr: 0x1E3C60, symSize: 0x20 } + - { offset: 0x277981, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCACycfc', symObjAddr: 0x720, symBinAddr: 0x1E3C80, symSize: 0x30 } + - { offset: 0x2779DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCACycfcTo', symObjAddr: 0x750, symBinAddr: 0x1E3CB0, symSize: 0x30 } + - { offset: 0x277A39, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCfD', symObjAddr: 0x780, symBinAddr: 0x1E3CE0, symSize: 0x30 } + - { offset: 0x277A5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x7D0, symBinAddr: 0x1E3D30, symSize: 0x30 } + - { offset: 0x277A84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18FloatingPanelStateCSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x800, symBinAddr: 0x1E3D60, symSize: 0x30 } + - { offset: 0x277E2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11makeXOffset3for4withSfSS_AC14TextAttributesVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1E3E00, symSize: 0x15E } + - { offset: 0x277E80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV11makeXOffset3for4withSfSS_AC14TextAttributesVtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x1E3E00, symSize: 0x15E } + - { offset: 0x2783F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCMa', symObjAddr: 0x4C0, symBinAddr: 0x1E42D0, symSize: 0x20 } + - { offset: 0x27840D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCfETo', symObjAddr: 0x580, symBinAddr: 0x1E4390, symSize: 0x20 } + - { offset: 0x278443, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC08completeE0yyF', symObjAddr: 0x0, symBinAddr: 0x1E3F60, symSize: 0x60 } + - { offset: 0x27847A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC02isD0SbvgTo', symObjAddr: 0x60, symBinAddr: 0x1E3FC0, symSize: 0x10 } + - { offset: 0x27848E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC11isExecutingSbvsTo', symObjAddr: 0xC0, symBinAddr: 0x1E3FF0, symSize: 0x50 } + - { offset: 0x2784A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC10isFinishedSbvsTo', symObjAddr: 0x230, symBinAddr: 0x1E40C0, symSize: 0x50 } + - { offset: 0x2784CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationC5startyyFTo', symObjAddr: 0x3C0, symBinAddr: 0x1E41D0, symSize: 0x70 } + - { offset: 0x2784FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCACycfC', symObjAddr: 0x430, symBinAddr: 0x1E4240, symSize: 0x20 } + - { offset: 0x278576, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCACycfc', symObjAddr: 0x450, symBinAddr: 0x1E4260, symSize: 0x70 } + - { offset: 0x2785D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCACycfcTo', symObjAddr: 0x4E0, symBinAddr: 0x1E42F0, symSize: 0x70 } + - { offset: 0x278634, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21AsynchronousOperationCfD', symObjAddr: 0x550, symBinAddr: 0x1E4360, symSize: 0x30 } + - { offset: 0x279011, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvpAETk', symObjAddr: 0x260, symBinAddr: 0x1E4650, symSize: 0x60 } + - { offset: 0x27904F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowCMa', symObjAddr: 0x8D0, symBinAddr: 0x1E4CC0, symSize: 0x20 } + - { offset: 0x279063, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avpACTK', symObjAddr: 0xD50, symBinAddr: 0x1E5140, symSize: 0x50 } + - { offset: 0x2790B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvpACTk', symObjAddr: 0xF70, symBinAddr: 0x1E5360, symSize: 0x60 } + - { offset: 0x279118, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceCfETo', symObjAddr: 0x1490, symBinAddr: 0x1E5880, symSize: 0x60 } + - { offset: 0x279A62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvpACTk', symObjAddr: 0x2000, symBinAddr: 0x1E62E0, symSize: 0x60 } + - { offset: 0x279E9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewCfETo', symObjAddr: 0x6A70, symBinAddr: 0x1EAD40, symSize: 0x110 } + - { offset: 0x279EC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceCMa', symObjAddr: 0x6B80, symBinAddr: 0x1EAE50, symSize: 0x20 } + - { offset: 0x279EDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewCMa', symObjAddr: 0x6BA0, symBinAddr: 0x1EAE70, symSize: 0x20 } + - { offset: 0x279EF1, size: 0x8, addend: 0x0, symName: '_$sSo16UILayoutPriorityaAB5UIKit01_C23NumericRawRepresentableACWl', symObjAddr: 0x7AB0, symBinAddr: 0x1EBB60, symSize: 0x40 } + - { offset: 0x27A1CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvgTo', symObjAddr: 0x0, symBinAddr: 0x1E43F0, symSize: 0x40 } + - { offset: 0x27A1FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvg', symObjAddr: 0x40, symBinAddr: 0x1E4430, symSize: 0x30 } + - { offset: 0x27A246, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvsTo', symObjAddr: 0x70, symBinAddr: 0x1E4460, symSize: 0x40 } + - { offset: 0x27A281, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvs', symObjAddr: 0xB0, symBinAddr: 0x1E44A0, symSize: 0x40 } + - { offset: 0x27A2A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6hiddenSbvM', symObjAddr: 0xF0, symBinAddr: 0x1E44E0, symSize: 0x40 } + - { offset: 0x27A3A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvgTo', symObjAddr: 0x130, symBinAddr: 0x1E4520, symSize: 0x40 } + - { offset: 0x27A3D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvg', symObjAddr: 0x170, symBinAddr: 0x1E4560, symSize: 0x40 } + - { offset: 0x27A417, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvsTo', symObjAddr: 0x1B0, symBinAddr: 0x1E45A0, symSize: 0x60 } + - { offset: 0x27A452, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvs', symObjAddr: 0x210, symBinAddr: 0x1E4600, symSize: 0x50 } + - { offset: 0x27A479, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC5colorSo7UIColorCvM', symObjAddr: 0x2C0, symBinAddr: 0x1E46B0, symSize: 0x40 } + - { offset: 0x27A4C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvsTo', symObjAddr: 0x340, symBinAddr: 0x1E4730, symSize: 0x60 } + - { offset: 0x27A500, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvs', symObjAddr: 0x3A0, symBinAddr: 0x1E4790, symSize: 0x50 } + - { offset: 0x27A527, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6offsetSo6CGSizeVvM', symObjAddr: 0x3F0, symBinAddr: 0x1E47E0, symSize: 0x40 } + - { offset: 0x27A560, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvgTo', symObjAddr: 0x430, symBinAddr: 0x1E4820, symSize: 0x40 } + - { offset: 0x27A593, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvg', symObjAddr: 0x470, symBinAddr: 0x1E4860, symSize: 0x30 } + - { offset: 0x27A5D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvsTo', symObjAddr: 0x4A0, symBinAddr: 0x1E4890, symSize: 0x50 } + - { offset: 0x27A612, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvs', symObjAddr: 0x4F0, symBinAddr: 0x1E48E0, symSize: 0x40 } + - { offset: 0x27A639, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC7opacitySfvM', symObjAddr: 0x530, symBinAddr: 0x1E4920, symSize: 0x40 } + - { offset: 0x27A672, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x570, symBinAddr: 0x1E4960, symSize: 0x40 } + - { offset: 0x27A6A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvg', symObjAddr: 0x5B0, symBinAddr: 0x1E49A0, symSize: 0x30 } + - { offset: 0x27A6E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x5E0, symBinAddr: 0x1E49D0, symSize: 0x50 } + - { offset: 0x27A724, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvs', symObjAddr: 0x630, symBinAddr: 0x1E4A20, symSize: 0x40 } + - { offset: 0x27A74B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6radius12CoreGraphics7CGFloatVvM', symObjAddr: 0x670, symBinAddr: 0x1E4A60, symSize: 0x40 } + - { offset: 0x27A784, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x6B0, symBinAddr: 0x1E4AA0, symSize: 0x40 } + - { offset: 0x27A7B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvg', symObjAddr: 0x6F0, symBinAddr: 0x1E4AE0, symSize: 0x30 } + - { offset: 0x27A7F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x720, symBinAddr: 0x1E4B10, symSize: 0x50 } + - { offset: 0x27A831, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvs', symObjAddr: 0x770, symBinAddr: 0x1E4B60, symSize: 0x40 } + - { offset: 0x27A858, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowC6spread12CoreGraphics7CGFloatVvM', symObjAddr: 0x7B0, symBinAddr: 0x1E4BA0, symSize: 0x40 } + - { offset: 0x27A883, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowCAEycfC', symObjAddr: 0x7F0, symBinAddr: 0x1E4BE0, symSize: 0x20 } + - { offset: 0x27A897, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowCAEycfc', symObjAddr: 0x810, symBinAddr: 0x1E4C00, symSize: 0xC0 } + - { offset: 0x27A8CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowCAEycfcTo', symObjAddr: 0x8F0, symBinAddr: 0x1E4CE0, symSize: 0xC0 } + - { offset: 0x27A8FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC6ShadowCfETo', symObjAddr: 0x9D0, symBinAddr: 0x1E4DC0, symSize: 0x20 } + - { offset: 0x27A93D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvgTo', symObjAddr: 0x9F0, symBinAddr: 0x1E4DE0, symSize: 0x40 } + - { offset: 0x27A970, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvg', symObjAddr: 0xA30, symBinAddr: 0x1E4E20, symSize: 0x40 } + - { offset: 0x27A98D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvs', symObjAddr: 0xA90, symBinAddr: 0x1E4E80, symSize: 0x50 } + - { offset: 0x27A9B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC15backgroundColorSo7UIColorCSgvM', symObjAddr: 0xAE0, symBinAddr: 0x1E4ED0, symSize: 0x40 } + - { offset: 0x27A9ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvgTo', symObjAddr: 0xB20, symBinAddr: 0x1E4F10, symSize: 0x40 } + - { offset: 0x27AA20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvg', symObjAddr: 0xB60, symBinAddr: 0x1E4F50, symSize: 0x30 } + - { offset: 0x27AA5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvsTo', symObjAddr: 0xB90, symBinAddr: 0x1E4F80, symSize: 0x50 } + - { offset: 0x27AA9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvs', symObjAddr: 0xBE0, symBinAddr: 0x1E4FD0, symSize: 0x40 } + - { offset: 0x27AAC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC12cornerRadius12CoreGraphics7CGFloatVvM', symObjAddr: 0xC20, symBinAddr: 0x1E5010, symSize: 0x40 } + - { offset: 0x27AB5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avgTo', symObjAddr: 0xC60, symBinAddr: 0x1E5050, symSize: 0x50 } + - { offset: 0x27ABB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avg', symObjAddr: 0xCB0, symBinAddr: 0x1E50A0, symSize: 0x50 } + - { offset: 0x27AC35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avsTo', symObjAddr: 0xD00, symBinAddr: 0x1E50F0, symSize: 0x30 } + - { offset: 0x27AC96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avs', symObjAddr: 0xD30, symBinAddr: 0x1E5120, symSize: 0x20 } + - { offset: 0x27ACE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM', symObjAddr: 0xDA0, symBinAddr: 0x1E5190, symSize: 0x60 } + - { offset: 0x27AD41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11cornerCurveSo013CALayerCornerG0avM.resume.0', symObjAddr: 0xE00, symBinAddr: 0x1E51F0, symSize: 0x20 } + - { offset: 0x27ADD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvgTo', symObjAddr: 0xE20, symBinAddr: 0x1E5210, symSize: 0x60 } + - { offset: 0x27AE0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvg', symObjAddr: 0xE80, symBinAddr: 0x1E5270, symSize: 0x40 } + - { offset: 0x27AE4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvsTo', symObjAddr: 0xEC0, symBinAddr: 0x1E52B0, symSize: 0x60 } + - { offset: 0x27AE88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvs', symObjAddr: 0xF20, symBinAddr: 0x1E5310, symSize: 0x50 } + - { offset: 0x27AEAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC7shadowsSayAC6ShadowCGvM', symObjAddr: 0xFD0, symBinAddr: 0x1E53C0, symSize: 0x40 } + - { offset: 0x27AEE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvgTo', symObjAddr: 0x1010, symBinAddr: 0x1E5400, symSize: 0x40 } + - { offset: 0x27AF1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvg', symObjAddr: 0x1050, symBinAddr: 0x1E5440, symSize: 0x40 } + - { offset: 0x27AF38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvs', symObjAddr: 0x1110, symBinAddr: 0x1E5500, symSize: 0x50 } + - { offset: 0x27AF6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderColorSo7UIColorCSgvM', symObjAddr: 0x11C0, symBinAddr: 0x1E55B0, symSize: 0x40 } + - { offset: 0x27AFA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x1200, symBinAddr: 0x1E55F0, symSize: 0x40 } + - { offset: 0x27AFD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvg', symObjAddr: 0x1240, symBinAddr: 0x1E5630, symSize: 0x30 } + - { offset: 0x27B014, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x1270, symBinAddr: 0x1E5660, symSize: 0x50 } + - { offset: 0x27B051, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvs', symObjAddr: 0x12C0, symBinAddr: 0x1E56B0, symSize: 0x40 } + - { offset: 0x27B078, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceC11borderWidth12CoreGraphics7CGFloatVvM', symObjAddr: 0x1300, symBinAddr: 0x1E56F0, symSize: 0x40 } + - { offset: 0x27B0B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceCACycfc', symObjAddr: 0x1340, symBinAddr: 0x1E5730, symSize: 0x110 } + - { offset: 0x27B15A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SurfaceAppearanceCACycfcTo', symObjAddr: 0x1450, symBinAddr: 0x1E5840, symSize: 0x20 } + - { offset: 0x27B187, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC13grabberHandleAA07GrabberE0CvgTo', symObjAddr: 0x14F0, symBinAddr: 0x1E58E0, symSize: 0x20 } + - { offset: 0x27B1BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC13grabberHandleAA07GrabberE0Cvg', symObjAddr: 0x1510, symBinAddr: 0x1E5900, symSize: 0x20 } + - { offset: 0x27B1ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x1530, symBinAddr: 0x1E5920, symSize: 0x40 } + - { offset: 0x27B220, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvg', symObjAddr: 0x1570, symBinAddr: 0x1E5960, symSize: 0x30 } + - { offset: 0x27B271, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x15A0, symBinAddr: 0x1E5990, symSize: 0x50 } + - { offset: 0x27B2CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvs', symObjAddr: 0x15F0, symBinAddr: 0x1E59E0, symSize: 0x50 } + - { offset: 0x27B30F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20grabberHandlePadding12CoreGraphics7CGFloatVvM', symObjAddr: 0x1640, symBinAddr: 0x1E5A30, symSize: 0x40 } + - { offset: 0x27B348, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x1680, symBinAddr: 0x1E5A70, symSize: 0x40 } + - { offset: 0x27B37B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvg', symObjAddr: 0x16C0, symBinAddr: 0x1E5AB0, symSize: 0x30 } + - { offset: 0x27B3B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x16F0, symBinAddr: 0x1E5AE0, symSize: 0x50 } + - { offset: 0x27B3F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvs', symObjAddr: 0x1740, symBinAddr: 0x1E5B30, symSize: 0x40 } + - { offset: 0x27B41C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberAreaOffset12CoreGraphics7CGFloatVvM', symObjAddr: 0x1780, symBinAddr: 0x1E5B70, symSize: 0x40 } + - { offset: 0x27B475, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvsTo', symObjAddr: 0x1890, symBinAddr: 0x1E5C70, symSize: 0x70 } + - { offset: 0x27B4CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvs', symObjAddr: 0x1900, symBinAddr: 0x1E5CE0, symSize: 0x60 } + - { offset: 0x27B513, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17grabberHandleSizeSo6CGSizeVvM', symObjAddr: 0x1960, symBinAddr: 0x1E5D40, symSize: 0x40 } + - { offset: 0x27B54C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x19A0, symBinAddr: 0x1E5D80, symSize: 0x40 } + - { offset: 0x27B581, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvg', symObjAddr: 0x19E0, symBinAddr: 0x1E5DC0, symSize: 0x40 } + - { offset: 0x27B5C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvsTo', symObjAddr: 0x1A20, symBinAddr: 0x1E5E00, symSize: 0x40 } + - { offset: 0x27B602, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvs', symObjAddr: 0x1A60, symBinAddr: 0x1E5E40, symSize: 0x50 } + - { offset: 0x27B62B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvM', symObjAddr: 0x1AB0, symBinAddr: 0x1E5E90, symSize: 0x80 } + - { offset: 0x27B664, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC07contentE0So6UIViewCSgvM.resume.0', symObjAddr: 0x1B30, symBinAddr: 0x1E5F10, symSize: 0x70 } + - { offset: 0x27B685, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC14contentPaddingSo12UIEdgeInsetsVvM', symObjAddr: 0x1C20, symBinAddr: 0x1E6000, symSize: 0x40 } + - { offset: 0x27B6D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvgTo', symObjAddr: 0x1C70, symBinAddr: 0x1E6050, symSize: 0x60 } + - { offset: 0x27B788, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC15backgroundColorSo7UIColorCSgvsTo', symObjAddr: 0x1D30, symBinAddr: 0x1E60B0, symSize: 0xB0 } + - { offset: 0x27B803, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvgTo', symObjAddr: 0x1E80, symBinAddr: 0x1E6160, symSize: 0x40 } + - { offset: 0x27B836, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvg', symObjAddr: 0x1EC0, symBinAddr: 0x1E61A0, symSize: 0x40 } + - { offset: 0x27B873, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvsTo', symObjAddr: 0x1F00, symBinAddr: 0x1E61E0, symSize: 0x90 } + - { offset: 0x27B8AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvs', symObjAddr: 0x1F90, symBinAddr: 0x1E6270, symSize: 0x70 } + - { offset: 0x27B8D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvW', symObjAddr: 0x2060, symBinAddr: 0x1E6340, symSize: 0x1D0 } + - { offset: 0x27BB3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvM', symObjAddr: 0x2230, symBinAddr: 0x1E6510, symSize: 0x40 } + - { offset: 0x27BB62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC10appearanceAA0D10AppearanceCvM.resume.0', symObjAddr: 0x2270, symBinAddr: 0x1E6550, symSize: 0x30 } + - { offset: 0x27BB83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC16containerMarginsSo12UIEdgeInsetsVvM', symObjAddr: 0x24E0, symBinAddr: 0x1E67C0, symSize: 0x40 } + - { offset: 0x27BBBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC09containerE0So6UIViewCvgTo', symObjAddr: 0x2560, symBinAddr: 0x1E6840, symSize: 0x20 } + - { offset: 0x27BBF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC09containerE0So6UIViewCvg', symObjAddr: 0x2580, symBinAddr: 0x1E6860, symSize: 0x20 } + - { offset: 0x27BC22, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17containerOverflow12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x25A0, symBinAddr: 0x1E6880, symSize: 0x20 } + - { offset: 0x27BC89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17containerOverflow12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x25C0, symBinAddr: 0x1E68A0, symSize: 0x20 } + - { offset: 0x27BCF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x25E0, symBinAddr: 0x1E68C0, symSize: 0x20 } + - { offset: 0x27BD4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC8positionAA21FloatingPanelPositionOvsTo', symObjAddr: 0x2600, symBinAddr: 0x1E68E0, symSize: 0x40 } + - { offset: 0x27BE79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC8positionAA21FloatingPanelPositionOvW', symObjAddr: 0x2640, symBinAddr: 0x1E6920, symSize: 0x6A0 } + - { offset: 0x27C0C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC16grabberAreaFrameSo6CGRectVvgTo', symObjAddr: 0x2CE0, symBinAddr: 0x1E6FC0, symSize: 0x70 } + - { offset: 0x27C163, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC16grabberAreaFrameSo6CGRectVvg', symObjAddr: 0x2D50, symBinAddr: 0x1E7030, symSize: 0x3D0 } + - { offset: 0x27C30E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC28grabberHandleWidthConstraint33_23B1F6B61A4C6FEE495E0270C601A94CLLSo08NSLayoutI0Cvg', symObjAddr: 0x3270, symBinAddr: 0x1E7550, symSize: 0xD0 } + - { offset: 0x27C349, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC29grabberHandleHeightConstraint33_23B1F6B61A4C6FEE495E0270C601A94CLLSo08NSLayoutI0Cvg', symObjAddr: 0x3340, symBinAddr: 0x1E7620, symSize: 0xD0 } + - { offset: 0x27C384, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC29grabberHandleCenterConstraint33_23B1F6B61A4C6FEE495E0270C601A94CLLSo08NSLayoutI0Cvg', symObjAddr: 0x3410, symBinAddr: 0x1E76F0, symSize: 0xD0 } + - { offset: 0x27C3A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC34grabberHandleEdgePaddingConstraint33_23B1F6B61A4C6FEE495E0270C601A94CLLSo08NSLayoutJ0Cvg', symObjAddr: 0x34E0, symBinAddr: 0x1E77C0, symSize: 0x100 } + - { offset: 0x27C44C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC12shadowLayers33_23B1F6B61A4C6FEE495E0270C601A94CLLSaySo7CALayerCGvs', symObjAddr: 0x35E0, symBinAddr: 0x1E78C0, symSize: 0x210 } + - { offset: 0x27C745, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC29requiresConstraintBasedLayoutSbvgZTo', symObjAddr: 0x37F0, symBinAddr: 0x1E7AD0, symSize: 0x10 } + - { offset: 0x27C793, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x3810, symBinAddr: 0x1E7AE0, symSize: 0x2B0 } + - { offset: 0x27C815, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x3AC0, symBinAddr: 0x1E7D90, symSize: 0x30 } + - { offset: 0x27C829, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5coderACSgSo7NSCoderC_tcfC', symObjAddr: 0x3AF0, symBinAddr: 0x1E7DC0, symSize: 0x40 } + - { offset: 0x27C83D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x3B30, symBinAddr: 0x1E7E00, symSize: 0x280 } + - { offset: 0x27C8BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x3DB0, symBinAddr: 0x1E8080, symSize: 0x30 } + - { offset: 0x27C8D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC11addSubViews33_23B1F6B61A4C6FEE495E0270C601A94CLLyyF', symObjAddr: 0x3DE0, symBinAddr: 0x1E80B0, symSize: 0x9F0 } + - { offset: 0x27CFEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17updateConstraintsyyF', symObjAddr: 0x47D0, symBinAddr: 0x1E8AA0, symSize: 0x730 } + - { offset: 0x27D440, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC17updateConstraintsyyFTo', symObjAddr: 0x4F00, symBinAddr: 0x1E91D0, symSize: 0x30 } + - { offset: 0x27D475, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC14layoutSubviewsyyF', symObjAddr: 0x4F30, symBinAddr: 0x1E9200, symSize: 0x270 } + - { offset: 0x27D5C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC14layoutSubviewsyyFTo', symObjAddr: 0x51A0, symBinAddr: 0x1E9470, symSize: 0x30 } + - { offset: 0x27D5DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0x51D0, symBinAddr: 0x1E94A0, symSize: 0x40 } + - { offset: 0x27D5F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC20intrinsicContentSizeSo6CGSizeVvg', symObjAddr: 0x5210, symBinAddr: 0x1E94E0, symSize: 0x110 } + - { offset: 0x27D723, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC12updateShadow33_23B1F6B61A4C6FEE495E0270C601A94CLLyyF', symObjAddr: 0x5320, symBinAddr: 0x1E95F0, symSize: 0x920 } + - { offset: 0x27DC48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC18updateCornerRadius33_23B1F6B61A4C6FEE495E0270C601A94CLLyyF', symObjAddr: 0x5C40, symBinAddr: 0x1E9F10, symSize: 0x240 } + - { offset: 0x27DCFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC12updateBorder33_23B1F6B61A4C6FEE495E0270C601A94CLLyyF', symObjAddr: 0x5E80, symBinAddr: 0x1EA150, symSize: 0x120 } + - { offset: 0x27DD96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC3set07contentE04modeySo6UIViewC_AA23FloatingPanelControllerC11ContentModeOtF', symObjAddr: 0x5FA0, symBinAddr: 0x1EA270, symSize: 0x5F0 } + - { offset: 0x27E265, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC3set07contentE04modeySo6UIViewC_AA23FloatingPanelControllerC11ContentModeOtFTo', symObjAddr: 0x6590, symBinAddr: 0x1EA860, symSize: 0x60 } + - { offset: 0x27E279, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC08hasStackE0SbyF', symObjAddr: 0x65F0, symBinAddr: 0x1EA8C0, symSize: 0x190 } + - { offset: 0x27E435, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC08hasStackE0SbyFTo', symObjAddr: 0x6780, symBinAddr: 0x1EAA50, symSize: 0x30 } + - { offset: 0x27E449, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC19grabberAreaContainsySbSo7CGPointVF', symObjAddr: 0x67B0, symBinAddr: 0x1EAA80, symSize: 0x220 } + - { offset: 0x27E59F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SurfaceViewC19grabberAreaContainsySbSo7CGPointVFTo', symObjAddr: 0x69D0, symBinAddr: 0x1EACA0, symSize: 0x50 } + - { offset: 0x27EE72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewCfETo', symObjAddr: 0x1D10, symBinAddr: 0x1ED8B0, symSize: 0x40 } + - { offset: 0x27EEA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewCMa', symObjAddr: 0x1D50, symBinAddr: 0x1ED8F0, symSize: 0x20 } + - { offset: 0x27EEB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugModeOMa', symObjAddr: 0x1F10, symBinAddr: 0x1ED910, symSize: 0x10 } + - { offset: 0x27EEC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugModeOSHAASQWb', symObjAddr: 0x1F20, symBinAddr: 0x1ED920, symSize: 0x10 } + - { offset: 0x27EEDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugModeOACSQAAWl', symObjAddr: 0x1F30, symBinAddr: 0x1ED930, symSize: 0x30 } + - { offset: 0x27EEF1, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer19CameraConfigurationVSgWOc', symObjAddr: 0x1FA0, symBinAddr: 0x1ED960, symSize: 0x40 } + - { offset: 0x27EF05, size: 0x8, addend: 0x0, symName: '_$s17PenguinINRenderer19CameraConfigurationVSgWOh', symObjAddr: 0x1FE0, symBinAddr: 0x1ED9A0, symSize: 0x30 } + - { offset: 0x27EF87, size: 0x8, addend: 0x0, symName: '_$s12CoreGraphics7CGFloatVACs7CVarArgAAWl', symObjAddr: 0x2590, symBinAddr: 0x1EDEE0, symSize: 0x2D } + - { offset: 0x27F24B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xB0, symBinAddr: 0x1EBC50, symSize: 0xD0 } + - { offset: 0x27F2FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x180, symBinAddr: 0x1EBD20, symSize: 0xD0 } + - { offset: 0x27F387, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x250, symBinAddr: 0x1EBDF0, symSize: 0x30 } + - { offset: 0x27F3EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC5setup33_2F560D187A4C3D784FB69A11494F9267LLyyF', symObjAddr: 0x280, symBinAddr: 0x1EBE20, symSize: 0x320 } + - { offset: 0x27F535, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC06switchD4ModeyyF', symObjAddr: 0x5A0, symBinAddr: 0x1EC140, symSize: 0x120 } + - { offset: 0x27F5D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC21constrainLabelToEdges33_2F560D187A4C3D784FB69A11494F9267LLyySo7UILabelCF', symObjAddr: 0x6C0, symBinAddr: 0x1EC260, symSize: 0x290 } + - { offset: 0x27F816, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC15setUserLocationyy7Penguin10PILocationCSgF', symObjAddr: 0x950, symBinAddr: 0x1EC4F0, symSize: 0x530 } + - { offset: 0x27FEC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC22setCameraConfiguration_12currentFloory17PenguinINRenderer0gH0VSg_0K00J0CSgtF', symObjAddr: 0xE80, symBinAddr: 0x1ECA20, symSize: 0x7E0 } + - { offset: 0x280698, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC9handleTap33_2F560D187A4C3D784FB69A11494F9267LLyyFTo', symObjAddr: 0x1660, symBinAddr: 0x1ED200, symSize: 0x70 } + - { offset: 0x2806E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC9handlePan33_2F560D187A4C3D784FB69A11494F9267LLyySo22UIPanGestureRecognizerCF', symObjAddr: 0x16D0, symBinAddr: 0x1ED270, symSize: 0x5C0 } + - { offset: 0x280A95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC9handlePan33_2F560D187A4C3D784FB69A11494F9267LLyySo22UIPanGestureRecognizerCFTo', symObjAddr: 0x1C90, symBinAddr: 0x1ED830, symSize: 0x50 } + - { offset: 0x280AA9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewCfD', symObjAddr: 0x1CE0, symBinAddr: 0x1ED880, symSize: 0x30 } + - { offset: 0x280AE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC19getAttributedString33_2F560D187A4C3D784FB69A11494F9267LLySo012NSAttributedH0CSSFTf4nd_n', symObjAddr: 0x2010, symBinAddr: 0x1ED9D0, symSize: 0x220 } + - { offset: 0x280C47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9DebugViewC19getFormattedPadding33_2F560D187A4C3D784FB69A11494F9267LLySSSo12UIEdgeInsetsVSgFTf4nd_n', symObjAddr: 0x2400, symBinAddr: 0x1EDDC0, symSize: 0x120 } + - { offset: 0x2810BC, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x0, symBinAddr: 0x1EDF10, symSize: 0x10 } + - { offset: 0x2810D8, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE15colorIdentifierSivsTo', symObjAddr: 0x10, symBinAddr: 0x1EDF20, symSize: 0x30 } + - { offset: 0x2810F4, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x60, symBinAddr: 0x1EDF50, symSize: 0x10 } + - { offset: 0x281110, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x70, symBinAddr: 0x1EDF60, symSize: 0x30 } + - { offset: 0x28112C, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE12LanguageSafeSbvgTo', symObjAddr: 0x1D0, symBinAddr: 0x1EE0A0, symSize: 0x10 } + - { offset: 0x281157, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE12LanguageSafeSbvsTo', symObjAddr: 0x1E0, symBinAddr: 0x1EE0B0, symSize: 0x30 } + - { offset: 0x28119F, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE12LanguageSafeSbvsTf4dn_n', symObjAddr: 0x210, symBinAddr: 0x1EE0E0, symSize: 0x100 } + - { offset: 0x28165A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCACyc33_BDB7F6F569795A6AD4284161D4C54383Llfc', symObjAddr: 0x0, symBinAddr: 0x1EE1E0, symSize: 0xB0 } + - { offset: 0x28167E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerC14sharedInstance33_BDB7F6F569795A6AD4284161D4C54383LLACSgvpZ', symObjAddr: 0x8F8, symBinAddr: 0x3A47D0, symSize: 0x0 } + - { offset: 0x281858, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCfETo', symObjAddr: 0x6A0, symBinAddr: 0x1EE870, symSize: 0x20 } + - { offset: 0x281887, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCMa', symObjAddr: 0x6C0, symBinAddr: 0x1EE890, symSize: 0x20 } + - { offset: 0x28189B, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVSgWOb', symObjAddr: 0x720, symBinAddr: 0x1EE8B0, symSize: 0x40 } + - { offset: 0x2819B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCACyc33_BDB7F6F569795A6AD4284161D4C54383Llfc', symObjAddr: 0x0, symBinAddr: 0x1EE1E0, symSize: 0xB0 } + - { offset: 0x281A8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCACyc33_BDB7F6F569795A6AD4284161D4C54383LlfcTo', symObjAddr: 0xB0, symBinAddr: 0x1EE290, symSize: 0x20 } + - { offset: 0x281BC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerC04sendE03fory7Penguin14GeofenceRegionV_tF', symObjAddr: 0xE0, symBinAddr: 0x1EE2B0, symSize: 0x260 } + - { offset: 0x281D1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerC011willDisplayE02idSbSi_tF', symObjAddr: 0x340, symBinAddr: 0x1EE510, symSize: 0x330 } + - { offset: 0x281E7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerCfD', symObjAddr: 0x670, symBinAddr: 0x1EE840, symSize: 0x30 } + - { offset: 0x281F0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23UserNotificationManagerC19trackGeofenceRegion33_BDB7F6F569795A6AD4284161D4C54383LL8regionIdySi_tFTf4nd_n', symObjAddr: 0x790, symBinAddr: 0x1EE8F0, symSize: 0x140 } + - { offset: 0x282379, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerC29initializePersistentContaineryyF', symObjAddr: 0x0, symBinAddr: 0x1EEA30, symSize: 0x660 } + - { offset: 0x28239D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerC14sharedInstance33_B6E24855173BA72882FF864730241A42LLACSgvpZ', symObjAddr: 0xD60, symBinAddr: 0x3A4808, symSize: 0x0 } + - { offset: 0x282452, size: 0x8, addend: 0x0, symName: '_$sSo28NSPersistentStoreDescriptionCs5Error_pSgIeggg_ABSo7NSErrorCSgIeyByy_TR', symObjAddr: 0x670, symBinAddr: 0x1EF090, symSize: 0x70 } + - { offset: 0x282546, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerCMa', symObjAddr: 0xC20, symBinAddr: 0x1EF610, symSize: 0x20 } + - { offset: 0x28255A, size: 0x8, addend: 0x0, symName: '_$sSo28NSPersistentStoreDescriptionCMa', symObjAddr: 0xC80, symBinAddr: 0x1EF630, symSize: 0x40 } + - { offset: 0x28256E, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xD30, symBinAddr: 0x1EF670, symSize: 0x20 } + - { offset: 0x282582, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xD50, symBinAddr: 0x1EF690, symSize: 0xE } + - { offset: 0x282872, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerC29initializePersistentContaineryyF', symObjAddr: 0x0, symBinAddr: 0x1EEA30, symSize: 0x660 } + - { offset: 0x282ACA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB17UiCoreDataManagerC13resetDatabaseyyF', symObjAddr: 0x6E0, symBinAddr: 0x1EF100, symSize: 0x510 } + - { offset: 0x2831BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC15show3dBuildingsyyF', symObjAddr: 0x0, symBinAddr: 0x1EF6A0, symSize: 0x110 } + - { offset: 0x283217, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC15hide3dBuildingsyyF', symObjAddr: 0x110, symBinAddr: 0x1EF7B0, symSize: 0xD0 } + - { offset: 0x283325, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC13drawFavorites2on016includingOutdoorH0ySay7Penguin5FloorCSgG_SbtF', symObjAddr: 0x1E0, symBinAddr: 0x1EF880, symSize: 0x670 } + - { offset: 0x283F7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC12addFavoritesyySayAA8FavoriteCGF', symObjAddr: 0x850, symBinAddr: 0x1EFEF0, symSize: 0x4C0 } + - { offset: 0x284308, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC14downloadModelsyyF', symObjAddr: 0xD10, symBinAddr: 0x1F03B0, symSize: 0x130 } + - { offset: 0x284ADC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC14add3dBuildings3forySay7Penguin0D7PolygonVG_tF', symObjAddr: 0x32E0, symBinAddr: 0x1F2980, symSize: 0x1280 } + - { offset: 0x285B84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerCMa', symObjAddr: 0xA650, symBinAddr: 0x1F9CF0, symSize: 0x20 } + - { offset: 0x285B98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC8addModel3fory7Penguin0D7PolygonV_tF', symObjAddr: 0xA670, symBinAddr: 0x1F9D10, symSize: 0x1C0 } + - { offset: 0x285C7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC17downloadCompleted3foryAA16FileDownloadData_p_tF', symObjAddr: 0xA830, symBinAddr: 0x1F9ED0, symSize: 0x170 } + - { offset: 0x285D51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerCAA27FileDownloadProcessProtocolA2aDP17downloadCompleted3foryAA0gH4Data_p_tFTW', symObjAddr: 0xA9A0, symBinAddr: 0x1FA040, symSize: 0x10 } + - { offset: 0x285DDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9loadImage3for10completion13reloadsSourcey7Penguin0D7PolygonV_yycSgSbtFySo7UIImageCSgcfU_TA', symObjAddr: 0xB740, symBinAddr: 0x1FAD30, symSize: 0x60 } + - { offset: 0x285DEF, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xB7F0, symBinAddr: 0x1FADC0, symSize: 0x20 } + - { offset: 0x285E03, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xB810, symBinAddr: 0x1FADE0, symSize: 0x10 } + - { offset: 0x285E17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC013shouldDisplayD5OnMap3poiSb7Penguin0D7PolygonV_tFSbyKXEfu0_SbAA5PlaceCXEfU_TA', symObjAddr: 0xBB40, symBinAddr: 0x1FAFF0, symSize: 0x10 } + - { offset: 0x286A38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC15drawAllFeatures3for016includingOutdoorI0ySay7Penguin5FloorCG_SbtF', symObjAddr: 0xE40, symBinAddr: 0x1F04E0, symSize: 0xD40 } + - { offset: 0x287793, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC14removeFeatures3forySay7Penguin5FloorCG_tF', symObjAddr: 0x1B80, symBinAddr: 0x1F1220, symSize: 0xB60 } + - { offset: 0x2883A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC013shouldDisplayD5OnMap3poiSb7Penguin0D7PolygonV_tF', symObjAddr: 0x26E0, symBinAddr: 0x1F1D80, symSize: 0x130 } + - { offset: 0x288429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC013shouldDisplayD5OnMap3poiSb7Penguin0D7PolygonV_tFSbyKXEfu0_SbAA5PlaceCXEfU_', symObjAddr: 0x2810, symBinAddr: 0x1F1EB0, symSize: 0x160 } + - { offset: 0x28853D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC19drawOutdoorFeaturesyyF', symObjAddr: 0x2970, symBinAddr: 0x1F2010, symSize: 0x970 } + - { offset: 0x288D60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC03addD0yy7Penguin0D7PolygonVF', symObjAddr: 0x4560, symBinAddr: 0x1F3C00, symSize: 0x400 } + - { offset: 0x288FBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC06removeD0yy7Penguin0D7PolygonVF', symObjAddr: 0x4960, symBinAddr: 0x1F4000, symSize: 0x4E0 } + - { offset: 0x2892E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9drawNodes2onySay7Penguin5FloorCG_tF', symObjAddr: 0x4E40, symBinAddr: 0x1F44E0, symSize: 0x1E60 } + - { offset: 0x28A72C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC21drawDestinationSymbol3for2atyAA5PlaceCSg_So22CLLocationCoordinate2DVSgtF', symObjAddr: 0x6CA0, symBinAddr: 0x1F6340, symSize: 0xA80 } + - { offset: 0x28AB4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC21drawDestinationSymbol3for2atyAA5PlaceCSg_So22CLLocationCoordinate2DVSgtFySo7UIImageCSgcfU1_', symObjAddr: 0x7720, symBinAddr: 0x1F6DC0, symSize: 0xD40 } + - { offset: 0x28B188, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC16updateSymbolText3fory7Penguin0D7PolygonV_tF', symObjAddr: 0x8460, symBinAddr: 0x1F7B00, symSize: 0x630 } + - { offset: 0x28B670, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC06updateD6Source33_085DD519451CE0A7AAD2CF2829398ED6LL10isFavorite3poiySb_7Penguin0D7PolygonVtF', symObjAddr: 0x8A90, symBinAddr: 0x1F8130, symSize: 0x1C0 } + - { offset: 0x28B758, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9loadImage3for10completion13reloadsSourcey7Penguin0D7PolygonV_yycSgSbtF', symObjAddr: 0x8C50, symBinAddr: 0x1F82F0, symSize: 0xB10 } + - { offset: 0x28BAE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9loadImage3for10completion13reloadsSourcey7Penguin0D7PolygonV_yycSgSbtFySo7UIImageCSgcfU_', symObjAddr: 0x9760, symBinAddr: 0x1F8E00, symSize: 0x310 } + - { offset: 0x28BB5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC9loadImage3for10completion13reloadsSourcey7Penguin0D7PolygonV_yycSgSbtFySo7UIImageCSgcfU_yyScMYccfU_', symObjAddr: 0x9A70, symBinAddr: 0x1F9110, symSize: 0x340 } + - { offset: 0x28BE8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC8setImage5image10identifier5poiId13reloadsSourceySo7UIImageC_SSSiSbtFyyYbcfU_', symObjAddr: 0x9DB0, symBinAddr: 0x1F9450, symSize: 0x2A0 } + - { offset: 0x28BF48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC8setImage5image10identifier5poiId13reloadsSourceySo7UIImageC_SSSiSbtFyyYbcfU_yyScMYccfU_', symObjAddr: 0xA050, symBinAddr: 0x1F96F0, symSize: 0x330 } + - { offset: 0x28C219, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC6filter11filteredIdsySaySSG_tF', symObjAddr: 0xA380, symBinAddr: 0x1F9A20, symSize: 0x180 } + - { offset: 0x28C274, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC11clearFilteryyF', symObjAddr: 0xA500, symBinAddr: 0x1F9BA0, symSize: 0x110 } + - { offset: 0x28C2AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerCfD', symObjAddr: 0xA610, symBinAddr: 0x1F9CB0, symSize: 0x40 } + - { offset: 0x28C2E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC11getSourceId3forSS7Penguin0D7PolygonV_tFTf4nd_n', symObjAddr: 0xAF10, symBinAddr: 0x1FA570, symSize: 0x90 } + - { offset: 0x28C30D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC8renderer7mapModeAC17PenguinINRenderer10PIRendererCSg_AA8MapStateOtcfcTf4gnn_n', symObjAddr: 0xAFA0, symBinAddr: 0x1FA600, symSize: 0x1B0 } + - { offset: 0x28C441, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PoiDrawingManagerC14downloadImages3forySay7Penguin0D7PolygonVG_tFTf4nd_n', symObjAddr: 0xB150, symBinAddr: 0x1FA7B0, symSize: 0x4F0 } + - { offset: 0x28CD0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LanguageManagerC08selectedD033_74F133CCB03BCF72AC7567C3E94296E7LLAA03AppD0OSgvpZ', symObjAddr: 0x208, symBinAddr: 0x3A4A88, symSize: 0x0 } + - { offset: 0x28CDAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LanguageManagerCMa', symObjAddr: 0x20, symBinAddr: 0x1FB0B0, symSize: 0x20 } + - { offset: 0x28CEA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15LanguageManagerC07defaultD033_74F133CCB03BCF72AC7567C3E94296E7LLAA03AppD0OvgZTf4d_n', symObjAddr: 0x70, symBinAddr: 0x1FB0D0, symSize: 0x160 } + - { offset: 0x28D34C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1FB230, symSize: 0x20 } + - { offset: 0x28D65E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewCfETo', symObjAddr: 0xAE0, symBinAddr: 0x1FBD10, symSize: 0x70 } + - { offset: 0x28D68D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewCMa', symObjAddr: 0xB50, symBinAddr: 0x1FBD80, symSize: 0x20 } + - { offset: 0x28D6A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10commonInit33_A8C7BD0ECF30E7FBA1FEB7676CEE783ELLyyFyycfU_TA', symObjAddr: 0xC40, symBinAddr: 0x1FBDC0, symSize: 0x10 } + - { offset: 0x28D7A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1FB230, symSize: 0x20 } + - { offset: 0x28D803, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC07contentF0So6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x1FB250, symSize: 0x30 } + - { offset: 0x28D852, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC06selectD6ButtonAA06HapticF0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0x1FB280, symSize: 0x20 } + - { offset: 0x28D8AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC06selectD6ButtonAA06HapticF0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0x1FB2A0, symSize: 0x30 } + - { offset: 0x28D8F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x1FB2D0, symSize: 0x20 } + - { offset: 0x28D951, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x1FB2F0, symSize: 0x30 } + - { offset: 0x28D9A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x1FB320, symSize: 0x20 } + - { offset: 0x28D9F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x1FB340, symSize: 0x30 } + - { offset: 0x28DA42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC9dateLabelSo7UILabelCSgvgTo', symObjAddr: 0x140, symBinAddr: 0x1FB370, symSize: 0x20 } + - { offset: 0x28DA95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC9dateLabelSo7UILabelCSgvsTo', symObjAddr: 0x160, symBinAddr: 0x1FB390, symSize: 0x30 } + - { offset: 0x28DAD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x190, symBinAddr: 0x1FB3C0, symSize: 0x100 } + - { offset: 0x28DB05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x290, symBinAddr: 0x1FB4C0, symSize: 0x30 } + - { offset: 0x28DB68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x2C0, symBinAddr: 0x1FB4F0, symSize: 0xD0 } + - { offset: 0x28DB9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x390, symBinAddr: 0x1FB5C0, symSize: 0x30 } + - { offset: 0x28DC11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10commonInit33_A8C7BD0ECF30E7FBA1FEB7676CEE783ELLyyF', symObjAddr: 0x3C0, symBinAddr: 0x1FB5F0, symSize: 0x430 } + - { offset: 0x28DDC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC10commonInit33_A8C7BD0ECF30E7FBA1FEB7676CEE783ELLyyFyycfU_', symObjAddr: 0x7F0, symBinAddr: 0x1FBA20, symSize: 0x80 } + - { offset: 0x28DE6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewC06updateD4InfoyyF', symObjAddr: 0x870, symBinAddr: 0x1FBAA0, symSize: 0x240 } + - { offset: 0x28DF81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18ParkingDetailsViewCfD', symObjAddr: 0xAB0, symBinAddr: 0x1FBCE0, symSize: 0x30 } + - { offset: 0x28E7FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellCfETo', symObjAddr: 0x2730, symBinAddr: 0x1FE500, symSize: 0x60 } + - { offset: 0x28E82C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellCMa', symObjAddr: 0x2790, symBinAddr: 0x1FE560, symSize: 0x20 } + - { offset: 0x28E840, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC10fetchImage33_7EC171285E5253B799C832B9B77543BELL3foryAA5PlaceCSg_tFySo7UIImageCSgcfU0_TA', symObjAddr: 0x27D0, symBinAddr: 0x1FE5A0, symSize: 0x20 } + - { offset: 0x28EB1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC4iconSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1FBDD0, symSize: 0x20 } + - { offset: 0x28EB79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC4iconSo11UIImageViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x1FBDF0, symSize: 0x30 } + - { offset: 0x28EBC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5labelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x1FBE20, symSize: 0x20 } + - { offset: 0x28EC20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5labelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x1FBE40, symSize: 0x30 } + - { offset: 0x28EC6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC13entranceLabelSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x1FBE70, symSize: 0x20 } + - { offset: 0x28ECC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC13entranceLabelSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x1FBE90, symSize: 0x30 } + - { offset: 0x28ECFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC9starBadgeSo11UIImageViewCSgvg', symObjAddr: 0xF0, symBinAddr: 0x1FBEC0, symSize: 0x60 } + - { offset: 0x28ED1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC9starBadgeSo11UIImageViewCSgvgAGyXEfU_', symObjAddr: 0x150, symBinAddr: 0x1FBF20, symSize: 0x4B0 } + - { offset: 0x28EEBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC12awakeFromNibyyFTo', symObjAddr: 0x600, symBinAddr: 0x1FC3D0, symSize: 0xA0 } + - { offset: 0x28EEFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC14layoutSubviewsyyFTo', symObjAddr: 0x6A0, symBinAddr: 0x1FC470, symSize: 0x30 } + - { offset: 0x28EF92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC9configure3for2at10showLetteryAA5PlaceCSg_SiSbtF', symObjAddr: 0x6D0, symBinAddr: 0x1FC4A0, symSize: 0x500 } + - { offset: 0x28F1F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC09configureD033_7EC171285E5253B799C832B9B77543BELL_10showLetteryAA5PlaceCSg_SbtF', symObjAddr: 0xBD0, symBinAddr: 0x1FC9A0, symSize: 0x4C0 } + - { offset: 0x28F3FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC09configureD6Letter33_7EC171285E5253B799C832B9B77543BELLyyF', symObjAddr: 0x1090, symBinAddr: 0x1FCE60, symSize: 0x1E0 } + - { offset: 0x28F5D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC13configureIcon33_7EC171285E5253B799C832B9B77543BELL3foryAA5PlaceCSg_tF', symObjAddr: 0x1270, symBinAddr: 0x1FD040, symSize: 0x4F0 } + - { offset: 0x28F7BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC10fetchImage33_7EC171285E5253B799C832B9B77543BELL3foryAA5PlaceCSg_tF', symObjAddr: 0x1760, symBinAddr: 0x1FD530, symSize: 0xAE0 } + - { offset: 0x28FBA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC15prepareForReuseyyF', symObjAddr: 0x2390, symBinAddr: 0x1FE160, symSize: 0x140 } + - { offset: 0x28FC24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC15prepareForReuseyyFTo', symObjAddr: 0x24D0, symBinAddr: 0x1FE2A0, symSize: 0x30 } + - { offset: 0x28FC38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x2500, symBinAddr: 0x1FE2D0, symSize: 0xD0 } + - { offset: 0x28FC79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x25D0, symBinAddr: 0x1FE3A0, symSize: 0x30 } + - { offset: 0x28FCB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x2600, symBinAddr: 0x1FE3D0, symSize: 0xD0 } + - { offset: 0x28FCE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x26D0, symBinAddr: 0x1FE4A0, symSize: 0x30 } + - { offset: 0x28FCF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellCfD', symObjAddr: 0x2700, symBinAddr: 0x1FE4D0, symSize: 0x30 } + - { offset: 0x28FD36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC012getLetterForD033_7EC171285E5253B799C832B9B77543BELL2atSo7UIImageCSgSi_tFTf4nd_n', symObjAddr: 0x2870, symBinAddr: 0x1FE5D0, symSize: 0x330 } + - { offset: 0x28FE7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8StopCellC9configure5title10stopsCount5imageySS_SiSo7UIImageCtFTf4nddn_n', symObjAddr: 0x2C10, symBinAddr: 0x1FE900, symSize: 0x3C0 } + - { offset: 0x2903D3, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE9hexStringSSvg', symObjAddr: 0x0, symBinAddr: 0x1FED00, symSize: 0x310 } + - { offset: 0x29054E, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE9hexStringSSvg', symObjAddr: 0x0, symBinAddr: 0x1FED00, symSize: 0x310 } + - { offset: 0x2909B4, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE9hexStringABSSSg_tcfC', symObjAddr: 0x310, symBinAddr: 0x1FF010, symSize: 0x4F0 } + - { offset: 0x290C22, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE6darker2byAB12CoreGraphics7CGFloatV_tF', symObjAddr: 0x830, symBinAddr: 0x1FF500, symSize: 0x110 } + - { offset: 0x290D35, size: 0x8, addend: 0x0, symName: '_$sSo7UIColorC8PenNavUIE15opaqueHexStringSSvg', symObjAddr: 0x9B0, symBinAddr: 0x1FF610, symSize: 0x4A0 } + - { offset: 0x2914D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC37activityViewControllerPlaceholderItemyypSo010UIActivitygH0CFTo', symObjAddr: 0x0, symBinAddr: 0x1FFAB0, symSize: 0x60 } + - { offset: 0x29162B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentCfETo', symObjAddr: 0x2E0, symBinAddr: 0x1FFD90, symSize: 0x60 } + - { offset: 0x29165A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentCMa', symObjAddr: 0x340, symBinAddr: 0x1FFDF0, symSize: 0x20 } + - { offset: 0x291701, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC37activityViewControllerPlaceholderItemyypSo010UIActivitygH0CFTo', symObjAddr: 0x0, symBinAddr: 0x1FFAB0, symSize: 0x60 } + - { offset: 0x291757, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC22activityViewController_19itemForActivityTypeypSgSo010UIActivitygH0C_So0mL0aSgtF', symObjAddr: 0x60, symBinAddr: 0x1FFB10, symSize: 0xE0 } + - { offset: 0x291851, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC22activityViewController_19itemForActivityTypeypSgSo010UIActivitygH0C_So0mL0aSgtFTo', symObjAddr: 0x140, symBinAddr: 0x1FFBF0, symSize: 0xE0 } + - { offset: 0x29186C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC34activityViewControllerLinkMetadataySo06LPLinkJ0CSgSo010UIActivitygH0CFTo', symObjAddr: 0x220, symBinAddr: 0x1FFCD0, symSize: 0x60 } + - { offset: 0x2918AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentCACycfcTo', symObjAddr: 0x280, symBinAddr: 0x1FFD30, symSize: 0x30 } + - { offset: 0x291909, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentCfD', symObjAddr: 0x2B0, symBinAddr: 0x1FFD60, symSize: 0x30 } + - { offset: 0x291A18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16ShareableContentC34activityViewControllerLinkMetadataySo06LPLinkJ0CSgSo010UIActivitygH0CFTf4dn_n', symObjAddr: 0x360, symBinAddr: 0x1FFE10, symSize: 0x190 } + - { offset: 0x291FED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellCfETo', symObjAddr: 0x470, symBinAddr: 0x200410, symSize: 0x40 } + - { offset: 0x29201C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellCMa', symObjAddr: 0x4B0, symBinAddr: 0x200450, symSize: 0x20 } + - { offset: 0x292030, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12awakeFromNibyyFyycfU_TA', symObjAddr: 0x4F0, symBinAddr: 0x200490, symSize: 0x20 } + - { offset: 0x292044, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12awakeFromNibyyFyycfU0_TA', symObjAddr: 0x530, symBinAddr: 0x2004B0, symSize: 0x20 } + - { offset: 0x2920E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC16directionsButtonAA10HapticViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x1FFFA0, symSize: 0x20 } + - { offset: 0x292144, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC16directionsButtonAA10HapticViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x1FFFC0, symSize: 0x30 } + - { offset: 0x292193, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12venuesButtonAA10HapticViewCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x1FFFF0, symSize: 0x20 } + - { offset: 0x2921E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12venuesButtonAA10HapticViewCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x200010, symSize: 0x30 } + - { offset: 0x292251, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12awakeFromNibyyF', symObjAddr: 0xA0, symBinAddr: 0x200040, symSize: 0x150 } + - { offset: 0x292300, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x280, symBinAddr: 0x200220, symSize: 0x30 } + - { offset: 0x29236A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x2B0, symBinAddr: 0x200250, symSize: 0xC0 } + - { offset: 0x2923CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x370, symBinAddr: 0x200310, symSize: 0xA0 } + - { offset: 0x292400, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x410, symBinAddr: 0x2003B0, symSize: 0x30 } + - { offset: 0x292414, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CampusActionsCellCfD', symObjAddr: 0x440, symBinAddr: 0x2003E0, symSize: 0x30 } + - { offset: 0x2927A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC9containerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2004D0, symSize: 0x20 } + - { offset: 0x292DD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellCfETo', symObjAddr: 0x1C80, symBinAddr: 0x202150, symSize: 0xB0 } + - { offset: 0x292E06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellCMa', symObjAddr: 0x1D30, symBinAddr: 0x202200, symSize: 0x20 } + - { offset: 0x292E46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC27didTapStartNavigationButtonyySo8UIButtonCFyycACcfu1_yycfu2_TA', symObjAddr: 0x2810, symBinAddr: 0x202C30, symSize: 0x20 } + - { offset: 0x2930D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC9containerSo6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2004D0, symSize: 0x20 } + - { offset: 0x293132, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC9containerSo6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x2004F0, symSize: 0x30 } + - { offset: 0x293181, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x200520, symSize: 0x20 } + - { offset: 0x2931D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC11lengthLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x200540, symSize: 0x30 } + - { offset: 0x293228, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC13durationLabelSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x200570, symSize: 0x20 } + - { offset: 0x29327B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC13durationLabelSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x200590, symSize: 0x30 } + - { offset: 0x2932CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC16arrivalTimeLabelSo7UILabelCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x2005C0, symSize: 0x20 } + - { offset: 0x29331D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC16arrivalTimeLabelSo7UILabelCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x2005E0, symSize: 0x30 } + - { offset: 0x29336C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x140, symBinAddr: 0x200610, symSize: 0x20 } + - { offset: 0x2933BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x160, symBinAddr: 0x200630, symSize: 0x30 } + - { offset: 0x29340E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC21startNavigationButtonAA07LoadingH0CSgvgTo', symObjAddr: 0x190, symBinAddr: 0x200660, symSize: 0x20 } + - { offset: 0x293466, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC21startNavigationButtonAA07LoadingH0CSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x200680, symSize: 0x30 } + - { offset: 0x2934B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC12awakeFromNibyyFTo', symObjAddr: 0x1E0, symBinAddr: 0x2006B0, symSize: 0x60 } + - { offset: 0x293758, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC6config4with6length8durationyAA5PlaceCSg_S2dtF', symObjAddr: 0x240, symBinAddr: 0x200710, symSize: 0xC00 } + - { offset: 0x293F3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC15updateSelection10isSelectedySb_tF', symObjAddr: 0xE40, symBinAddr: 0x201310, symSize: 0x700 } + - { offset: 0x294365, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC27didTapStartNavigationButtonyySo8UIButtonCFTo', symObjAddr: 0x1540, symBinAddr: 0x201A10, symSize: 0x50 } + - { offset: 0x2943B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC15startNavigationyyF', symObjAddr: 0x1590, symBinAddr: 0x201A60, symSize: 0x2B0 } + - { offset: 0x294684, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC10showLoaderyyF', symObjAddr: 0x1840, symBinAddr: 0x201D10, symSize: 0x140 } + - { offset: 0x294761, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC15prepareForReuseyyFTo', symObjAddr: 0x1980, symBinAddr: 0x201E50, symSize: 0x80 } + - { offset: 0x2947A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x1A00, symBinAddr: 0x201ED0, symSize: 0x100 } + - { offset: 0x2947E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x1B00, symBinAddr: 0x201FD0, symSize: 0x30 } + - { offset: 0x29481C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1B30, symBinAddr: 0x202000, symSize: 0xF0 } + - { offset: 0x29484F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1C20, symBinAddr: 0x2020F0, symSize: 0x30 } + - { offset: 0x294863, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellCfD', symObjAddr: 0x1C50, symBinAddr: 0x202120, symSize: 0x30 } + - { offset: 0x29492C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9RouteCellC27didTapStartNavigationButtonyySo8UIButtonCFTf4dn_n', symObjAddr: 0x1E00, symBinAddr: 0x202220, symSize: 0x9E0 } + - { offset: 0x29536F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorO6create4from7currentAeA3DOMOADO_AKtFZ', symObjAddr: 0x10, symBinAddr: 0x202C50, symSize: 0xF0 } + - { offset: 0x295485, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorO6create4from7currentAeA3DOMOADO_AKtFZ', symObjAddr: 0x10, symBinAddr: 0x202C50, symSize: 0xF0 } + - { offset: 0x295795, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LuminanceColorConverterVMa', symObjAddr: 0x440, symBinAddr: 0x202FD0, symSize: 0x10 } + - { offset: 0x2957A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21DefaultColorConverterVMa', symObjAddr: 0x450, symBinAddr: 0x202FE0, symSize: 0x10 } + - { offset: 0x2957BD, size: 0x8, addend: 0x0, symName: ___swift_memcpy17_4, symObjAddr: 0x460, symBinAddr: 0x202FF0, symSize: 0x20 } + - { offset: 0x2957D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwet', symObjAddr: 0x490, symBinAddr: 0x203010, symSize: 0x50 } + - { offset: 0x2957E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwst', symObjAddr: 0x4E0, symBinAddr: 0x203060, symSize: 0x50 } + - { offset: 0x2957F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwug', symObjAddr: 0x530, symBinAddr: 0x2030B0, symSize: 0x20 } + - { offset: 0x29580D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwup', symObjAddr: 0x550, symBinAddr: 0x2030D0, symSize: 0x10 } + - { offset: 0x295821, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOwui', symObjAddr: 0x560, symBinAddr: 0x2030E0, symSize: 0x30 } + - { offset: 0x295835, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOMa', symObjAddr: 0x590, symBinAddr: 0x203110, symSize: 0x10 } + - { offset: 0x295849, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSHAASQWb', symObjAddr: 0x5A0, symBinAddr: 0x203120, symSize: 0x10 } + - { offset: 0x29585D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOAESQAAWl', symObjAddr: 0x5B0, symBinAddr: 0x203130, symSize: 0x30 } + - { offset: 0x295871, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO10ColorSpaceOMa', symObjAddr: 0x850, symBinAddr: 0x203240, symSize: 0x10 } + - { offset: 0x295885, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO10ColorSpaceOSHAASQWb', symObjAddr: 0x860, symBinAddr: 0x203250, symSize: 0x10 } + - { offset: 0x295899, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO10ColorSpaceOAESQAAWl', symObjAddr: 0x870, symBinAddr: 0x203260, symSize: 0x2D } + - { offset: 0x2958F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x2A0, symBinAddr: 0x202EE0, symSize: 0x50 } + - { offset: 0x295976, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorO4hash4intoys6HasherVz_tF', symObjAddr: 0x100, symBinAddr: 0x202D40, symSize: 0x130 } + - { offset: 0x295BA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSHAASH9hashValueSivgTW', symObjAddr: 0x230, symBinAddr: 0x202E70, symSize: 0x50 } + - { offset: 0x295C26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x280, symBinAddr: 0x202EC0, symSize: 0x20 } + - { offset: 0x295C53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x2F0, symBinAddr: 0x202F30, symSize: 0x30 } + - { offset: 0x295CA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21DefaultColorConverterVAA0eF0A2aDP06createE04fromAA9LayerTreeO0E0OAK_tFTW', symObjAddr: 0x3D0, symBinAddr: 0x202F60, symSize: 0x10 } + - { offset: 0x295D18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23LuminanceColorConverterVAA0eF0A2aDP06createE04fromAA9LayerTreeO0E0OAK_tFTW', symObjAddr: 0x3E0, symBinAddr: 0x202F70, symSize: 0x60 } + - { offset: 0x295D93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ColorO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x5E0, symBinAddr: 0x203160, symSize: 0xE0 } + - { offset: 0x29629D, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeC8PenNavUIE14escalatorEdgesSayAA4EdgeCGvg', symObjAddr: 0x0, symBinAddr: 0x203290, symSize: 0x200 } + - { offset: 0x2964F5, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeC8PenNavUIE14escalatorEdgesSayAA4EdgeCGvgSbAGXEfU_', symObjAddr: 0x200, symBinAddr: 0x203490, symSize: 0x2B0 } + - { offset: 0x2965CF, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeCAA17NodeRepresentable8PenNavUIAaDP13isUpEscalatorSbvgTW', symObjAddr: 0xE50, symBinAddr: 0x203A80, symSize: 0x20 } + - { offset: 0x2965EB, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeCAA17NodeRepresentable8PenNavUIAaDP15isDownEscalatorSbvgTW', symObjAddr: 0xE70, symBinAddr: 0x203AA0, symSize: 0x20 } + - { offset: 0x296729, size: 0x8, addend: 0x0, symName: '_$s7Penguin5GnodeCAA17NodeRepresentable8PenNavUIAaDP8nodeTypeAA0cI0OSgvgTW', symObjAddr: 0xE30, symBinAddr: 0x203A60, symSize: 0x20 } + - { offset: 0x296DE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ModalTransitionCMa', symObjAddr: 0xE0, symBinAddr: 0x203BA0, symSize: 0x20 } + - { offset: 0x296E65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerCMa', symObjAddr: 0x7B0, symBinAddr: 0x204270, symSize: 0x20 } + - { offset: 0x296E79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalPresentTransitionCMa', symObjAddr: 0x870, symBinAddr: 0x204330, symSize: 0x20 } + - { offset: 0x296E8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalDismissTransitionCMa', symObjAddr: 0xB50, symBinAddr: 0x204610, symSize: 0x20 } + - { offset: 0x29714E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalDismissTransitionC21interruptibleAnimator5usingSo25UIViewImplicitlyAnimating_pSo0J30ControllerContextTransitioning_p_tFyycfU_TA', symObjAddr: 0x1770, symBinAddr: 0x205230, symSize: 0x20 } + - { offset: 0x2972D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ModalTransitionC19animationController12forPresented10presenting6sourceSo06UIViewG21AnimatedTransitioning_pSgSo0lG0C_A2KtFTo', symObjAddr: 0x0, symBinAddr: 0x203AC0, symSize: 0x30 } + - { offset: 0x297326, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ModalTransitionC19animationController12forDismissedSo06UIViewG21AnimatedTransitioning_pSgSo0jG0C_tFTo', symObjAddr: 0x30, symBinAddr: 0x203AF0, symSize: 0x30 } + - { offset: 0x29739D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ModalTransitionC22presentationController12forPresented10presenting6sourceSo014UIPresentationG0CSgSo06UIViewG0C_ALSgALtFTo', symObjAddr: 0x60, symBinAddr: 0x203B20, symSize: 0x40 } + - { offset: 0x297410, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC31presentationTransitionWillBeginyyFTo', symObjAddr: 0x100, symBinAddr: 0x203BC0, symSize: 0x30 } + - { offset: 0x297455, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC28presentationTransitionDidEndyySbFTo', symObjAddr: 0x130, symBinAddr: 0x203BF0, symSize: 0x30 } + - { offset: 0x297486, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC25dismissalTransitionDidEndyySbFTo', symObjAddr: 0x160, symBinAddr: 0x203C20, symSize: 0x30 } + - { offset: 0x29753B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC31containerViewWillLayoutSubviewsyyF', symObjAddr: 0x190, symBinAddr: 0x203C50, symSize: 0x330 } + - { offset: 0x297627, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC31containerViewWillLayoutSubviewsyyFTo', symObjAddr: 0x4C0, symBinAddr: 0x203F80, symSize: 0x30 } + - { offset: 0x29764F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC14handleBackdrop10tapGestureySo05UITapI10RecognizerC_tFTo', symObjAddr: 0x4F0, symBinAddr: 0x203FB0, symSize: 0x70 } + - { offset: 0x297679, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC16addFloatingPanel33_1A977BFC7DFC5A82775C8BDEF1543E18LLyyF', symObjAddr: 0x560, symBinAddr: 0x204020, symSize: 0x1E0 } + - { offset: 0x29772F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC013presentedViewE010presentingACSo06UIViewE0C_AGSgtcfcTo', symObjAddr: 0x740, symBinAddr: 0x204200, symSize: 0x50 } + - { offset: 0x2977C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC28presentationTransitionDidEndyySbFTf4dn_n', symObjAddr: 0xB70, symBinAddr: 0x204630, symSize: 0x110 } + - { offset: 0x29792F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22PresentationControllerC25dismissalTransitionDidEndyySbFTf4dn_n', symObjAddr: 0xC80, symBinAddr: 0x204740, symSize: 0x1B0 } + - { offset: 0x297B4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalPresentTransitionC18transitionDuration5usingSdSo36UIViewControllerContextTransitioning_pSg_tFTf4nd_n', symObjAddr: 0xE30, symBinAddr: 0x2048F0, symSize: 0x250 } + - { offset: 0x297D84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalPresentTransitionC21interruptibleAnimator5usingSo25UIViewImplicitlyAnimating_pSo0J30ControllerContextTransitioning_p_tFTf4nd_n', symObjAddr: 0x1080, symBinAddr: 0x204B40, symSize: 0x2A0 } + - { offset: 0x297FEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalDismissTransitionC18transitionDuration5usingSdSo36UIViewControllerContextTransitioning_pSg_tFTf4nd_n', symObjAddr: 0x1320, symBinAddr: 0x204DE0, symSize: 0x1F0 } + - { offset: 0x29815E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22ModalDismissTransitionC21interruptibleAnimator5usingSo25UIViewImplicitlyAnimating_pSo0J30ControllerContextTransitioning_p_tFTf4nd_n', symObjAddr: 0x1510, symBinAddr: 0x204FD0, symSize: 0x230 } + - { offset: 0x298772, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC12awakeFromNibyyFTo', symObjAddr: 0x0, symBinAddr: 0x2052A0, symSize: 0x60 } + - { offset: 0x298887, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellCMa', symObjAddr: 0x1E0, symBinAddr: 0x205480, symSize: 0x14 } + - { offset: 0x2988BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC12awakeFromNibyyFTo', symObjAddr: 0x0, symBinAddr: 0x2052A0, symSize: 0x60 } + - { offset: 0x29894D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0x60, symBinAddr: 0x205300, symSize: 0x50 } + - { offset: 0x2989E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0xB0, symBinAddr: 0x205350, symSize: 0x80 } + - { offset: 0x298A65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x130, symBinAddr: 0x2053D0, symSize: 0x80 } + - { offset: 0x298A9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15DetailsTextCellCfD', symObjAddr: 0x1B0, symBinAddr: 0x205450, symSize: 0x30 } + - { offset: 0x298E4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC11placeholderSo7UIImageCSgvpZ', symObjAddr: 0xFA58, symBinAddr: 0x3BD2B0, symSize: 0x0 } + - { offset: 0x298E58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC11placeholder_WZ', symObjAddr: 0x0, symBinAddr: 0x2054A0, symSize: 0x20 } + - { offset: 0x29905E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewCfETo', symObjAddr: 0xEF0, symBinAddr: 0x206390, symSize: 0x10 } + - { offset: 0x299089, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewCMa', symObjAddr: 0xF00, symBinAddr: 0x2063A0, symSize: 0x20 } + - { offset: 0x299281, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewCfE', symObjAddr: 0x1710, symBinAddr: 0x206BB0, symSize: 0x40 } + - { offset: 0x2992AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewCfETo', symObjAddr: 0x17A0, symBinAddr: 0x206C40, symSize: 0x50 } + - { offset: 0x2992DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewCMa', symObjAddr: 0x17F0, symBinAddr: 0x206C90, symSize: 0x20 } + - { offset: 0x2992F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tFyyYbcfU_TA', symObjAddr: 0x1AC0, symBinAddr: 0x206F30, symSize: 0x40 } + - { offset: 0x299305, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1B00, symBinAddr: 0x206F70, symSize: 0x20 } + - { offset: 0x299319, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1B20, symBinAddr: 0x206F90, symSize: 0x10 } + - { offset: 0x29932D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tFyyYbcfU_ytSgyScMYcXEfU_TA', symObjAddr: 0x1C60, symBinAddr: 0x206FF0, symSize: 0x20 } + - { offset: 0x299364, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC014getCategorizedD02in8categorySay7Penguin10PoiPolygonVGAG5VenueCSg_AG11POICategoryVSgtFSbAIXEfU_TA', symObjAddr: 0x2230, symBinAddr: 0x207550, symSize: 0x20 } + - { offset: 0x2997CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC11placeholderSo7UIImageCSgvpZfiAGyXEfU_', symObjAddr: 0x20, symBinAddr: 0x2054C0, symSize: 0x760 } + - { offset: 0x299A48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x780, symBinAddr: 0x205C20, symSize: 0x80 } + - { offset: 0x299AC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tF', symObjAddr: 0x800, symBinAddr: 0x205CA0, symSize: 0x2E0 } + - { offset: 0x299B4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tFyyYbcfU_', symObjAddr: 0xAE0, symBinAddr: 0x205F80, symSize: 0x310 } + - { offset: 0x299C04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC8getImage10completionyySo7UIImageCSgc_tFyyYbcfU_ytSgyScMYcXEfU_', symObjAddr: 0xDF0, symBinAddr: 0x206290, symSize: 0xB0 } + - { offset: 0x299C8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueSymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xEA0, symBinAddr: 0x206340, symSize: 0x30 } + - { offset: 0x299CEE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC10countLabel33_085A561E2153F72061B7D688048F063BLLSo7UILabelCvg', symObjAddr: 0xF20, symBinAddr: 0x2063C0, symSize: 0x60 } + - { offset: 0x299D2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xF80, symBinAddr: 0x206420, symSize: 0xE0 } + - { offset: 0x299D60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1060, symBinAddr: 0x206500, symSize: 0x30 } + - { offset: 0x299DBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC11adjustFrameyyF', symObjAddr: 0x1090, symBinAddr: 0x206530, symSize: 0x130 } + - { offset: 0x299E86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC4drawyySo6CGRectVFTo', symObjAddr: 0x11C0, symBinAddr: 0x206660, symSize: 0xA0 } + - { offset: 0x299EB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC18defaultCircleYAxis12CoreGraphics7CGFloatVyF', symObjAddr: 0x1260, symBinAddr: 0x206700, symSize: 0x20 } + - { offset: 0x299FB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC14layoutSubviewsyyF', symObjAddr: 0x1280, symBinAddr: 0x206720, symSize: 0x460 } + - { offset: 0x29A1B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC14layoutSubviewsyyFTo', symObjAddr: 0x16E0, symBinAddr: 0x206B80, symSize: 0x30 } + - { offset: 0x29A33A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23SelectedVenueSymbolViewC19getPlaceholderImage5place8categorySo7UIImageCSgAA5PlaceCSg_7Penguin11POICategoryVSgtFZTf4nnd_n', symObjAddr: 0x1C80, symBinAddr: 0x207010, symSize: 0x540 } + - { offset: 0x29A8CE, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin10PoiPolygonVG_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10gH19VGvpfiSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x160, symBinAddr: 0x2076F0, symSize: 0x80 } + - { offset: 0x29AB58, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellCfETo', symObjAddr: 0x8C0, symBinAddr: 0x207E50, symSize: 0x70 } + - { offset: 0x29AB87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellCMa', symObjAddr: 0x930, symBinAddr: 0x207EC0, symSize: 0x20 } + - { offset: 0x29ABDB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_21numberOfRowsInSectionSiSo07UITableG0C_SitFTo', symObjAddr: 0x950, symBinAddr: 0x207EE0, symSize: 0x30 } + - { offset: 0x29ACFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_12cellForRowAtSo07UITablegE0CSo0lG0C_10Foundation9IndexPathVtF', symObjAddr: 0x980, symBinAddr: 0x207F10, symSize: 0x1D0 } + - { offset: 0x29AEB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_12cellForRowAtSo07UITablegE0CSo0lG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xB50, symBinAddr: 0x2080E0, symSize: 0xB0 } + - { offset: 0x29AED1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xC00, symBinAddr: 0x208190, symSize: 0x60 } + - { offset: 0x29AEED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_24heightForFooterInSection12CoreGraphics7CGFloatVSo07UITableG0C_SitFTo', symObjAddr: 0xC60, symBinAddr: 0x2081F0, symSize: 0x10 } + - { offset: 0x29AF14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_14didSelectRowAtySo07UITableG0C_10Foundation9IndexPathVtF', symObjAddr: 0xC70, symBinAddr: 0x208200, symSize: 0x100 } + - { offset: 0x29AFCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableView_14didSelectRowAtySo07UITableG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xD70, symBinAddr: 0x208300, symSize: 0xA0 } + - { offset: 0x29B044, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin10PoiPolygonV_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10fG19VGvpfiSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0xE70, symBinAddr: 0x2083A0, symSize: 0x100 } + - { offset: 0x29B274, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin10PoiPolygonV_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10fG19VGvpfiSbAG_AGtXEfU_Tf1nnncn_n', symObjAddr: 0xF70, symBinAddr: 0x2084A0, symSize: 0x8D0 } + - { offset: 0x29B736, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry7Penguin10PoiPolygonVG_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10jK19VGvpfiSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x1840, symBinAddr: 0x208D70, symSize: 0x220 } + - { offset: 0x29B895, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin10PoiPolygonV_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10gH19VGvpfiSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x1A60, symBinAddr: 0x208F90, symSize: 0x2E0 } + - { offset: 0x29BC2C, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin10PoiPolygonV_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10hI19VGvpfiSbAG_AGtXEfU_Tf1nnnnc_n', symObjAddr: 0x1D40, symBinAddr: 0x209270, symSize: 0x5A0 } + - { offset: 0x29BD37, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin10PoiPolygonVG_Tg5047$s8PenNavUI13DirectoryCellC6placesSay7Penguin10gH19VGvpfiSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x160, symBinAddr: 0x2076F0, symSize: 0x80 } + - { offset: 0x29BF34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableViewAA014IntrinsicTableG0CSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0x207770, symSize: 0x20 } + - { offset: 0x29BF8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC9tableViewAA014IntrinsicTableG0CSgvsTo', symObjAddr: 0x200, symBinAddr: 0x207790, symSize: 0x30 } + - { offset: 0x29C09D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x230, symBinAddr: 0x2077C0, symSize: 0x20 } + - { offset: 0x29C0F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC12seeAllButtonSo8UIButtonCSgvsTo', symObjAddr: 0x250, symBinAddr: 0x2077E0, symSize: 0x30 } + - { offset: 0x29C15B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC12awakeFromNibyyF', symObjAddr: 0x280, symBinAddr: 0x207810, symSize: 0x250 } + - { offset: 0x29C299, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC12awakeFromNibyyFTo', symObjAddr: 0x4D0, symBinAddr: 0x207A60, symSize: 0x30 } + - { offset: 0x29C2D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC04showD0yyFTo', symObjAddr: 0x500, symBinAddr: 0x207A90, symSize: 0x60 } + - { offset: 0x29C390, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x560, symBinAddr: 0x207AF0, symSize: 0x170 } + - { offset: 0x29C463, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x6D0, symBinAddr: 0x207C60, symSize: 0x30 } + - { offset: 0x29C49B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x700, symBinAddr: 0x207C90, symSize: 0x160 } + - { offset: 0x29C560, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x860, symBinAddr: 0x207DF0, symSize: 0x30 } + - { offset: 0x29C574, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectoryCellCfD', symObjAddr: 0x890, symBinAddr: 0x207E20, symSize: 0x30 } + - { offset: 0x29CA59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x10, symBinAddr: 0x209810, symSize: 0x50 } + - { offset: 0x29CB32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x60, symBinAddr: 0x209860, symSize: 0x30 } + - { offset: 0x29CBAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x90, symBinAddr: 0x209890, symSize: 0x50 } + - { offset: 0x29CC71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x220, symBinAddr: 0x209A00, symSize: 0x20 } + - { offset: 0x29CC8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x240, symBinAddr: 0x209A20, symSize: 0x20 } + - { offset: 0x29CCAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x710, symBinAddr: 0x209E00, symSize: 0x20 } + - { offset: 0x29CCCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x730, symBinAddr: 0x209E20, symSize: 0x20 } + - { offset: 0x29CE8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseCMa', symObjAddr: 0x280, symBinAddr: 0x209A40, symSize: 0x20 } + - { offset: 0x29D07A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryCMa', symObjAddr: 0x7A0, symBinAddr: 0x209E90, symSize: 0x20 } + - { offset: 0x29D08E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOAEs0G3KeyAAWl', symObjAddr: 0xEE0, symBinAddr: 0x20A500, symSize: 0x30 } + - { offset: 0x29D0A2, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI8CategoryCGMa', symObjAddr: 0xF40, symBinAddr: 0x20A530, symSize: 0x40 } + - { offset: 0x29D0B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOAFs0E3KeyAAWl', symObjAddr: 0xF80, symBinAddr: 0x20A570, symSize: 0x30 } + - { offset: 0x29D0CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOMa', symObjAddr: 0x12D0, symBinAddr: 0x20A630, symSize: 0x10 } + - { offset: 0x29D0DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOMa', symObjAddr: 0x1410, symBinAddr: 0x20A640, symSize: 0x10 } + - { offset: 0x29D0F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSHAASQWb', symObjAddr: 0x1420, symBinAddr: 0x20A650, symSize: 0x10 } + - { offset: 0x29D106, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOAESQAAWl', symObjAddr: 0x1430, symBinAddr: 0x20A660, symSize: 0x30 } + - { offset: 0x29D11A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOSHAASQWb', symObjAddr: 0x1460, symBinAddr: 0x20A690, symSize: 0x10 } + - { offset: 0x29D12E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOAFSQAAWl', symObjAddr: 0x1470, symBinAddr: 0x20A6A0, symSize: 0x30 } + - { offset: 0x29D142, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x14A0, symBinAddr: 0x20A6D0, symSize: 0x10 } + - { offset: 0x29D156, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x14B0, symBinAddr: 0x20A6E0, symSize: 0x30 } + - { offset: 0x29D16A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x14E0, symBinAddr: 0x20A710, symSize: 0x10 } + - { offset: 0x29D17E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x14F0, symBinAddr: 0x20A720, symSize: 0x30 } + - { offset: 0x29D192, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1520, symBinAddr: 0x20A750, symSize: 0x10 } + - { offset: 0x29D1A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1530, symBinAddr: 0x20A760, symSize: 0x30 } + - { offset: 0x29D1BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x1560, symBinAddr: 0x20A790, symSize: 0x10 } + - { offset: 0x29D1CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x1570, symBinAddr: 0x20A7A0, symSize: 0x30 } + - { offset: 0x29D22B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSYAASY8rawValuexSg03RawJ0Qz_tcfCTW', symObjAddr: 0xE0, symBinAddr: 0x2098E0, symSize: 0x60 } + - { offset: 0x29D26B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOSYAASY8rawValue03RawJ0QzvgTW', symObjAddr: 0x140, symBinAddr: 0x209940, symSize: 0x30 } + - { offset: 0x29D2B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x170, symBinAddr: 0x209970, symSize: 0x30 } + - { offset: 0x29D317, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC10CodingKeysOs0G3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x1A0, symBinAddr: 0x2099A0, symSize: 0x60 } + - { offset: 0x29D383, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC6encode2toys7Encoder_p_tKF', symObjAddr: 0x2A0, symBinAddr: 0x209A60, symSize: 0x100 } + - { offset: 0x29D3B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x3A0, symBinAddr: 0x209B60, symSize: 0x160 } + - { offset: 0x29D3E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19GetCategoryResponseCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x520, symBinAddr: 0x209CE0, symSize: 0x20 } + - { offset: 0x29D41C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs0E3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x5F0, symBinAddr: 0x209D00, symSize: 0xE0 } + - { offset: 0x29D44C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLOs0E3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x6D0, symBinAddr: 0x209DE0, symSize: 0x20 } + - { offset: 0x29D48E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryCfD', symObjAddr: 0x750, symBinAddr: 0x209E40, symSize: 0x50 } + - { offset: 0x29D4C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC6encode2toys7Encoder_p_tKF', symObjAddr: 0x7C0, symBinAddr: 0x209EB0, symSize: 0x2F0 } + - { offset: 0x29D4F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC4fromACs7Decoder_p_tKcfc', symObjAddr: 0xAB0, symBinAddr: 0x20A1A0, symSize: 0x320 } + - { offset: 0x29D529, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xE50, symBinAddr: 0x20A4E0, symSize: 0x20 } + - { offset: 0x29D53D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8CategoryC10CodingKeys33_86302212D6BA63553B3641981C49A33BLLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x15A0, symBinAddr: 0x20A7D0, symSize: 0x24B } + - { offset: 0x29D9B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO8rawValueACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x20AA20, symSize: 0x130 } + - { offset: 0x29DA0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x460, symBinAddr: 0x20AE40, symSize: 0x90 } + - { offset: 0x29DAF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSHAASH9hashValueSivgTW', symObjAddr: 0x4F0, symBinAddr: 0x20AED0, symSize: 0x60 } + - { offset: 0x29DB87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x550, symBinAddr: 0x20AF30, symSize: 0x40 } + - { offset: 0x29DBD9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x590, symBinAddr: 0x20AF70, symSize: 0x60 } + - { offset: 0x29DD02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSHAASQWb', symObjAddr: 0x7D0, symBinAddr: 0x20B020, symSize: 0x10 } + - { offset: 0x29DD16, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOACSQAAWl', symObjAddr: 0x7E0, symBinAddr: 0x20B030, symSize: 0x30 } + - { offset: 0x29DD2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO10Foundation14LocalizedErrorAAs0G0PWb', symObjAddr: 0x810, symBinAddr: 0x20B060, symSize: 0x10 } + - { offset: 0x29DD3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOACs5ErrorAAWl', symObjAddr: 0x820, symBinAddr: 0x20B070, symSize: 0x30 } + - { offset: 0x29DD52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ValidationErrorOSHAASQWb', symObjAddr: 0x850, symBinAddr: 0x20B0A0, symSize: 0x10 } + - { offset: 0x29DD66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ValidationErrorOACSQAAWl', symObjAddr: 0x860, symBinAddr: 0x20B0B0, symSize: 0x30 } + - { offset: 0x29DD7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOwet', symObjAddr: 0x8B0, symBinAddr: 0x20B0E0, symSize: 0x80 } + - { offset: 0x29DD8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOwst', symObjAddr: 0x930, symBinAddr: 0x20B160, symSize: 0xD0 } + - { offset: 0x29DDA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOMa', symObjAddr: 0xA30, symBinAddr: 0x20B230, symSize: 0x10 } + - { offset: 0x29DDB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15ValidationErrorOMa', symObjAddr: 0xBA0, symBinAddr: 0x20B240, symSize: 0x10 } + - { offset: 0x29DDD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO8rawValueACSgSS_tcfC', symObjAddr: 0x0, symBinAddr: 0x20AA20, symSize: 0x130 } + - { offset: 0x29DE08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO16errorDescriptionSSvg', symObjAddr: 0x170, symBinAddr: 0x20AB50, symSize: 0x50 } + - { offset: 0x29DE2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO8rawValueSSvg', symObjAddr: 0x1C0, symBinAddr: 0x20ABA0, symSize: 0x2A0 } + - { offset: 0x29DFBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSYAASY8rawValuexSg03RawF0Qz_tcfCTW', symObjAddr: 0x5F0, symBinAddr: 0x20AFD0, symSize: 0x20 } + - { offset: 0x29DFCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorOSYAASY8rawValue03RawF0QzvgTW', symObjAddr: 0x610, symBinAddr: 0x20AFF0, symSize: 0x20 } + - { offset: 0x29DFF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB7UIErrorO10Foundation14LocalizedErrorAadEP16errorDescriptionSSSgvgTW', symObjAddr: 0x630, symBinAddr: 0x20B010, symSize: 0x10 } + - { offset: 0x29E450, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsCMa', symObjAddr: 0x20, symBinAddr: 0x20B260, symSize: 0x20 } + - { offset: 0x29E4F3, size: 0x8, addend: 0x0, symName: '_$s10Foundation4DateVACSLAAWl', symObjAddr: 0xCF0, symBinAddr: 0x20BE80, symSize: 0x33 } + - { offset: 0x29E6DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsC20isCurrentTimeBetween5start3endSbSS_SStFZTf4nnd_n', symObjAddr: 0x40, symBinAddr: 0x20B280, symSize: 0x5E0 } + - { offset: 0x29E9A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsC12coordinateAt8distance4from7towardsSo22CLLocationCoordinate2DVSgSdSg_A2JtFZTf4nnnd_n', symObjAddr: 0x620, symBinAddr: 0x20B860, symSize: 0x2D0 } + - { offset: 0x29EC05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsC13getDeviceUUIDSSyFZTf4d_n', symObjAddr: 0x8F0, symBinAddr: 0x20BB30, symSize: 0x150 } + - { offset: 0x29ECDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6MUtilsC16findNearestPoint4test6targetSo22CLLocationCoordinate2DVAH_SayAHGtFZTf4nnd_n', symObjAddr: 0xA80, symBinAddr: 0x20BC80, symSize: 0x1D0 } + - { offset: 0x29F246, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCfE', symObjAddr: 0x0, symBinAddr: 0x20BEC0, symSize: 0x30 } + - { offset: 0x29F25E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCfE', symObjAddr: 0x0, symBinAddr: 0x20BEC0, symSize: 0x30 } + - { offset: 0x29F2C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCMU', symObjAddr: 0xB0, symBinAddr: 0x20BF70, symSize: 0x10 } + - { offset: 0x29F2DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCMa', symObjAddr: 0xC0, symBinAddr: 0x20BF80, symSize: 0x30 } + - { offset: 0x29F2EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCMr', symObjAddr: 0xF0, symBinAddr: 0x20BFB0, symSize: 0x70 } + - { offset: 0x29F339, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO3UseCfD', symObjAddr: 0x30, symBinAddr: 0x20BEF0, symSize: 0x80 } + - { offset: 0x29F700, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17findStyleElements6withinSayAA3XMLO7ElementCGAI_tF', symObjAddr: 0x0, symBinAddr: 0x20C020, symSize: 0x2A0 } + - { offset: 0x29F97B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17findStyleElements6withinSayAA3XMLO7ElementCGAI_tF', symObjAddr: 0x0, symBinAddr: 0x20C020, symSize: 0x2A0 } + - { offset: 0x29FD55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV22parseStyleSheetElementyAA3DOMO0fG0VSSSgKFAF22PresentationAttributesVAA15AttributeParser_pKcACcfu_AkaL_pKcfu0_', symObjAddr: 0x2A0, symBinAddr: 0x20C2C0, symSize: 0x10 } + - { offset: 0x29FF3C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV15scanAtttributes33_29B34C3A129C6CB17D28971D563B2EC2LLSDyS2SGyKF', symObjAddr: 0x2B0, symBinAddr: 0x20C2D0, symSize: 0x440 } + - { offset: 0x2A020B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV22scanNextAttributeValueSSyKF', symObjAddr: 0x6F0, symBinAddr: 0x20C710, symSize: 0x190 } + - { offset: 0x2A02C4, size: 0x8, addend: 0x0, symName: '_$sSD8PenNavUISSRszSSRs_rlE5parseyqd__SS_qd__SSKXEtKlF', symObjAddr: 0x880, symBinAddr: 0x20C8A0, symSize: 0xE0 } + - { offset: 0x2A0375, size: 0x8, addend: 0x0, symName: '_$sSDyxq_G8PenNavUI15AttributeParserABSSRszSSRs_rlAbCP6parserAB0d5ValueE0_pvgTW', symObjAddr: 0x960, symBinAddr: 0x20C980, symSize: 0x20 } + - { offset: 0x2A03A7, size: 0x8, addend: 0x0, symName: '_$sSDyxq_G8PenNavUI15AttributeParserABSSRszSSRs_rlAbCP5parseyqd__SS_qd__SSKXEtKlFTW', symObjAddr: 0x990, symBinAddr: 0x20C9A0, symSize: 0x10 } + - { offset: 0x2A0537, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseEntriesySDyAA3DOMO10StyleSheetV8SelectorOSDyS2SGGSSSgKFZTf4nd_n', symObjAddr: 0x9D0, symBinAddr: 0x20C9B0, symSize: 0x710 } + - { offset: 0x2A0904, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGtSgWOe', symObjAddr: 0x1110, symBinAddr: 0x20D0C0, symSize: 0x30 } + - { offset: 0x2A0E67, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE12cancelButtonSo8UIButtonCSgvg', symObjAddr: 0x0, symBinAddr: 0x20D0F0, symSize: 0xF0 } + - { offset: 0x2A0EA1, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE15cancelFontStyleSSvs', symObjAddr: 0x130, symBinAddr: 0x20D200, symSize: 0x1F0 } + - { offset: 0x2A0F9B, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE9fontStyleSSvs', symObjAddr: 0x390, symBinAddr: 0x20D460, symSize: 0x1C0 } + - { offset: 0x2A109D, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE19textColorIdentifierSivgTo', symObjAddr: 0x550, symBinAddr: 0x20D620, symSize: 0x10 } + - { offset: 0x2A10B9, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE19textColorIdentifierSivsTo', symObjAddr: 0x560, symBinAddr: 0x20D630, symSize: 0x30 } + - { offset: 0x2A10F1, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE19textColorIdentifierSivs', symObjAddr: 0x590, symBinAddr: 0x20D660, symSize: 0x130 } + - { offset: 0x2A1175, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE11cancelColorSivgTo', symObjAddr: 0x6C0, symBinAddr: 0x20D790, symSize: 0x10 } + - { offset: 0x2A1191, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x710, symBinAddr: 0x20D7D0, symSize: 0x10 } + - { offset: 0x2A11AD, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x720, symBinAddr: 0x20D7E0, symSize: 0x30 } + - { offset: 0x2A11C9, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE25backgroundColorIdentifierSivs', symObjAddr: 0x750, symBinAddr: 0x20D810, symSize: 0x220 } + - { offset: 0x2A124D, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE16placeholderColorSivgTo', symObjAddr: 0x970, symBinAddr: 0x20DA30, symSize: 0x10 } + - { offset: 0x2A1269, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE16placeholderColorSivsTo', symObjAddr: 0x980, symBinAddr: 0x20DA40, symSize: 0x30 } + - { offset: 0x2A12C7, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE16placeholderColorSivs', symObjAddr: 0x9B0, symBinAddr: 0x20DA70, symSize: 0x3B0 } + - { offset: 0x2A1470, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE19tintColorIdentifierSivgTo', symObjAddr: 0xD60, symBinAddr: 0x20DE20, symSize: 0x10 } + - { offset: 0x2A14B6, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE26placeholderLocalizationKeySSvsTo', symObjAddr: 0xE80, symBinAddr: 0x20DF40, symSize: 0x90 } + - { offset: 0x2A1515, size: 0x8, addend: 0x0, symName: '_$sSo11UISearchBarC8PenNavUIE21cancelLocalizationKeySSvsTo', symObjAddr: 0xF10, symBinAddr: 0x20DFD0, symSize: 0xC0 } + - { offset: 0x2A1AD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC14sharedInstance33_A49337BBB7825CE36732F8C974911E0ALLACSgvpZ', symObjAddr: 0x2FF0, symBinAddr: 0x3A53C8, symSize: 0x0 } + - { offset: 0x2A22EA, size: 0x8, addend: 0x0, symName: '_$s7Penguin5VenueC8PenNavUIE8assetURL10Foundation0G0VSgvg', symObjAddr: 0x1FF0, symBinAddr: 0x2100E0, symSize: 0x150 } + - { offset: 0x2A2319, size: 0x8, addend: 0x0, symName: '_$s7Penguin5VenueC8PenNavUIE21getDownloadedModelUriSSSgyF', symObjAddr: 0x2140, symBinAddr: 0x210230, symSize: 0x170 } + - { offset: 0x2A2393, size: 0x8, addend: 0x0, symName: '_$s7Penguin5VenueC8PenNavUI16FileDownloadDataA2dEP8assetURL10Foundation0J0VSgvgTW', symObjAddr: 0x22B0, symBinAddr: 0x2103A0, symSize: 0x20 } + - { offset: 0x2A23CD, size: 0x8, addend: 0x0, symName: '_$s7Penguin5VenueC8PenNavUI16FileDownloadDataA2dEP10downloadIdSiSgvgTW', symObjAddr: 0x22D0, symBinAddr: 0x2103C0, symSize: 0x20 } + - { offset: 0x2A2408, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerCMa', symObjAddr: 0x22F0, symBinAddr: 0x2103E0, symSize: 0x20 } + - { offset: 0x2A2540, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_8PenNavUI13VenueCardDataV_Tg503$s8ef43UI13VenuesManagerC16venuesWithFloorsSayAA13hiJ18VGvgSbAF_AFtXEfU0_Tf1nnncn_n', symObjAddr: 0x2350, symBinAddr: 0x210400, symSize: 0x4A0 } + - { offset: 0x2A2AD1, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF8PenNavUI13VenueCardDataV_Tg503$s8fg43UI13VenuesManagerC16venuesWithFloorsSayAA13ijK18VGvgSbAF_AFtXEfU0_Tf1nncn_n', symObjAddr: 0x27F0, symBinAddr: 0x2108A0, symSize: 0x2C0 } + - { offset: 0x2A2E73, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF8PenNavUI13VenueCardDataV_Tg503$s8gh43UI13VenuesManagerC16venuesWithFloorsSayAA13jkL18VGvgSbAF_AFtXEfU0_Tf1nnnnc_n', symObjAddr: 0x2AB0, symBinAddr: 0x210B60, symSize: 0x270 } + - { offset: 0x2A2F88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC07loadAllD4Info10completionyyyc_tFySayAA9VenueDataCG_SSSgtcfU_yyScMYccfU_TA', symObjAddr: 0x2E10, symBinAddr: 0x210E30, symSize: 0x30 } + - { offset: 0x2A2F9C, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2E40, symBinAddr: 0x210E60, symSize: 0x20 } + - { offset: 0x2A2FB0, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2E60, symBinAddr: 0x210E80, symSize: 0x10 } + - { offset: 0x2A2FC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC21loadCampusInformationyyFyAA9VenueDataCSgcfU_yyScMYccfU_TA', symObjAddr: 0x2F20, symBinAddr: 0x210EC0, symSize: 0x20 } + - { offset: 0x2A302C, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFSay8PenNavUI13VenueCardDataVG_Tg503$s8de43UI13VenuesManagerC16venuesWithFloorsSayAA13ghI18VGvgSbAF_AFtXEfU0_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x20E0F0, symSize: 0x180 } + - { offset: 0x2A3592, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC16venuesWithFloorsSayAA13VenueCardDataVGvg', symObjAddr: 0x980, symBinAddr: 0x20EA70, symSize: 0x7C0 } + - { offset: 0x2A404A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC03getD010completionyyycSg_tFySayAA13VenueCardDataVGcfU_', symObjAddr: 0x180, symBinAddr: 0x20E270, symSize: 0x240 } + - { offset: 0x2A40C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC07loadAllD4Info10completionyyyc_tFySayAA9VenueDataCG_SSSgtcfU_', symObjAddr: 0x3C0, symBinAddr: 0x20E4B0, symSize: 0x260 } + - { offset: 0x2A4144, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC07loadAllD4Info10completionyyyc_tFySayAA9VenueDataCG_SSSgtcfU_yyScMYccfU_', symObjAddr: 0x620, symBinAddr: 0x20E710, symSize: 0xD0 } + - { offset: 0x2A4199, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC21loadCampusInformationyyFyAA9VenueDataCSgcfU_', symObjAddr: 0x6F0, symBinAddr: 0x20E7E0, symSize: 0x220 } + - { offset: 0x2A420F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC21loadCampusInformationyyFyAA9VenueDataCSgcfU_yyScMYccfU_', symObjAddr: 0x910, symBinAddr: 0x20EA00, symSize: 0x70 } + - { offset: 0x2A4297, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC12getVenueByIdy7Penguin0G0CSgSiSgF', symObjAddr: 0x1140, symBinAddr: 0x20F230, symSize: 0x100 } + - { offset: 0x2A4442, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC03getD5ByIdsySay7Penguin5VenueCGSgSaySiGF', symObjAddr: 0x1240, symBinAddr: 0x20F330, symSize: 0x1F0 } + - { offset: 0x2A4798, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC14getCampusVenue7Penguin0H0CSgyF', symObjAddr: 0x1430, symBinAddr: 0x20F520, symSize: 0x130 } + - { offset: 0x2A4913, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC16getVenueCardById05venueJ0AA0gH4DataVSgSi_tF', symObjAddr: 0x1560, symBinAddr: 0x20F650, symSize: 0xB0 } + - { offset: 0x2A4A14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC17getCacheVenueData7venueIdAA0hI0CSgSiSg_tF', symObjAddr: 0x1610, symBinAddr: 0x20F700, symSize: 0x160 } + - { offset: 0x2A4C4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC16getCoverImageUrl7venueIdSSSgSiSg_tF', symObjAddr: 0x1770, symBinAddr: 0x20F860, symSize: 0x230 } + - { offset: 0x2A4F06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC03getD18ListForDownloadingSay7Penguin5VenueCGyF', symObjAddr: 0x19A0, symBinAddr: 0x20FA90, symSize: 0x510 } + - { offset: 0x2A51C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerCfD', symObjAddr: 0x1EB0, symBinAddr: 0x20FFA0, symSize: 0x50 } + - { offset: 0x2A52B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerCACycfc', symObjAddr: 0x1F00, symBinAddr: 0x20FFF0, symSize: 0xF0 } + - { offset: 0x2A5779, size: 0x8, addend: 0x0, symName: '_$sSo16UICollectionViewC8PenNavUIE028dequeueReusableSupplementaryB06ofKind3forxSS_10Foundation9IndexPathVtSo0agB0CRbzlFAC18VenuesSectionLabelC_Tg5', symObjAddr: 0x0, symBinAddr: 0x210F50, symSize: 0x100 } + - { offset: 0x2A5821, size: 0x8, addend: 0x0, symName: '_$sSo16UICollectionViewC8PenNavUIE028dequeueReusableSupplementaryB06ofKind3forxSS_10Foundation9IndexPathVtSo0agB0CRbzlFAC18VenuesSectionLabelC_Tg5', symObjAddr: 0x0, symBinAddr: 0x210F50, symSize: 0x100 } + - { offset: 0x2A5AE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCfE', symObjAddr: 0x700, symBinAddr: 0x211650, symSize: 0x60 } + - { offset: 0x2A5B15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCfETo', symObjAddr: 0x790, symBinAddr: 0x2116E0, symSize: 0x60 } + - { offset: 0x2A5B44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCMa', symObjAddr: 0x7F0, symBinAddr: 0x211740, symSize: 0x20 } + - { offset: 0x2A5B98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_22numberOfItemsInSectionSiSo012UICollectionF0C_SitFTo', symObjAddr: 0x810, symBinAddr: 0x211760, symSize: 0x20 } + - { offset: 0x2A5C71, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_6layout13sizeForItemAtSo6CGSizeVSo012UICollectionF0C_So0oF6LayoutC10Foundation9IndexPathVtFTo', symObjAddr: 0x830, symBinAddr: 0x211780, symSize: 0xA0 } + - { offset: 0x2A5D11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_13cellForItemAtSo012UICollectionF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x8D0, symBinAddr: 0x211820, symSize: 0x1B0 } + - { offset: 0x2A5E34, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_13cellForItemAtSo012UICollectionF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xA80, symBinAddr: 0x2119D0, symSize: 0xB0 } + - { offset: 0x2A5E7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_6layout31referenceSizeForHeaderInSectionSo6CGSizeVSo012UICollectionF0C_So0qF6LayoutCSitFTo', symObjAddr: 0xB30, symBinAddr: 0x211A80, symSize: 0x70 } + - { offset: 0x2A5F13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_33viewForSupplementaryElementOfKind2atSo020UICollectionReusableF0CSo0pF0C_SS10Foundation9IndexPathVtFTo', symObjAddr: 0xBA0, symBinAddr: 0x211AF0, symSize: 0xB0 } + - { offset: 0x2A5F6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_15didSelectItemAtySo012UICollectionF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xC50, symBinAddr: 0x211BA0, symSize: 0xA0 } + - { offset: 0x2A5F9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0xCF0, symBinAddr: 0x211C40, symSize: 0x50 } + - { offset: 0x2A6015, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0xD40, symBinAddr: 0x211C90, symSize: 0x50 } + - { offset: 0x2A6042, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyF', symObjAddr: 0xD90, symBinAddr: 0x211CE0, symSize: 0xE0 } + - { offset: 0x2A60D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0xE70, symBinAddr: 0x211DC0, symSize: 0x30 } + - { offset: 0x2A6121, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0xEA0, symBinAddr: 0x211DF0, symSize: 0x30 } + - { offset: 0x2A6265, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC10setupPanelyyF', symObjAddr: 0xED0, symBinAddr: 0x211E20, symSize: 0x2F0 } + - { offset: 0x2A6531, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC10setupPanelyyFTo', symObjAddr: 0x11C0, symBinAddr: 0x212110, symSize: 0x30 } + - { offset: 0x2A655C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x11F0, symBinAddr: 0x212140, symSize: 0x10 } + - { offset: 0x2A658E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTf4ddn_n', symObjAddr: 0x1200, symBinAddr: 0x212150, symSize: 0x1D0 } + - { offset: 0x2A6754, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0_15didSelectItemAtySo012UICollectionF0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0x1410, symBinAddr: 0x212320, symSize: 0xE0 } + - { offset: 0x2A6942, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0AA019IntrinsicCollectionF0CSgvgTo', symObjAddr: 0x100, symBinAddr: 0x211050, symSize: 0x20 } + - { offset: 0x2A69A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC010collectionF0AA019IntrinsicCollectionF0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x211070, symSize: 0x30 } + - { offset: 0x2A69EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC9separatorAA09SeparatorF0CSgvgTo', symObjAddr: 0x150, symBinAddr: 0x2110A0, symSize: 0x20 } + - { offset: 0x2A6A47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC9separatorAA09SeparatorF0CSgvsTo', symObjAddr: 0x170, symBinAddr: 0x2110C0, symSize: 0x30 } + - { offset: 0x2A6AB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC11viewDidLoadyyF', symObjAddr: 0x1A0, symBinAddr: 0x2110F0, symSize: 0x1E0 } + - { offset: 0x2A6C05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x380, symBinAddr: 0x2112D0, symSize: 0x30 } + - { offset: 0x2A6C2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC10closePanelyyFTo', symObjAddr: 0x3B0, symBinAddr: 0x211300, symSize: 0x40 } + - { offset: 0x2A6CA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x3F0, symBinAddr: 0x211340, symSize: 0x160 } + - { offset: 0x2A6D41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x550, symBinAddr: 0x2114A0, symSize: 0x50 } + - { offset: 0x2A6D89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x5A0, symBinAddr: 0x2114F0, symSize: 0x130 } + - { offset: 0x2A6E15, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x6D0, symBinAddr: 0x211620, symSize: 0x30 } + - { offset: 0x2A6E29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27VenueSelectorViewControllerCfD', symObjAddr: 0x760, symBinAddr: 0x2116B0, symSize: 0x30 } + - { offset: 0x2A7450, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorCMr', symObjAddr: 0x10, symBinAddr: 0x212400, symSize: 0xA0 } + - { offset: 0x2A7690, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO17gradientEndpoints33_1CA5772D0B2BA5DF0D96EB96F03CEAC9LLAC5PointV5start_AI3endtSgvg', symObjAddr: 0xB0, symBinAddr: 0x2124A0, symSize: 0x180 } + - { offset: 0x2A78A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO6bounds33_1CA5772D0B2BA5DF0D96EB96F03CEAC9LLAC4RectVSgvg', symObjAddr: 0x230, symBinAddr: 0x212620, symSize: 0x190 } + - { offset: 0x2A7CB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorCMa', symObjAddr: 0x410, symBinAddr: 0x2127E0, symSize: 0x10 } + - { offset: 0x2A7D6D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV12convertColor33_1CA5772D0B2BA5DF0D96EB96F03CEAC9LL5usingAeA0H9Converter_p_tFAE4StopVAKXEfU_', symObjAddr: 0x420, symBinAddr: 0x2127F0, symSize: 0x100 } + - { offset: 0x2A8386, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO8GradientV12convertColor33_1CA5772D0B2BA5DF0D96EB96F03CEAC9LL5usingAeA0H9Converter_p_tFAE4StopVAKXEfU_TA', symObjAddr: 0x4250, symBinAddr: 0x2164F0, symSize: 0x20 } + - { offset: 0x2A839A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO_AC16StrokeAttributesVAC04FillH0VtWOc', symObjAddr: 0x4380, symBinAddr: 0x216510, symSize: 0x40 } + - { offset: 0x2A8704, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorCfD', symObjAddr: 0x3E0, symBinAddr: 0x2127B0, symSize: 0x30 } + - { offset: 0x2A8EAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA14CGTextProviderV_Tg5Tf4nnnen_n', symObjAddr: 0x520, symBinAddr: 0x2128F0, symSize: 0x2E50 } + - { offset: 0x2ABADC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0D0C_AA05ColorL0_ptFAA14CGTextProviderV_Tg5Tf4nen_n', symObjAddr: 0x3440, symBinAddr: 0x215740, symSize: 0xBC0 } + - { offset: 0x2ACBEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0D0C8ContentsO_AA05ColorL0_ptFAA14CGTextProviderV_Tg5Tf4nen_n', symObjAddr: 0x4000, symBinAddr: 0x216300, symSize: 0x1F0 } + - { offset: 0x2AD110, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE19createCircularImage4size15backgroundColor7paddingABSgSo6CGSizeV_So7UIColorCSdtF', symObjAddr: 0x0, symBinAddr: 0x216560, symSize: 0x2D0 } + - { offset: 0x2AD14B, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE19createCircularImage4size15backgroundColor7paddingABSgSo6CGSizeV_So7UIColorCSdtF', symObjAddr: 0x0, symBinAddr: 0x216560, symSize: 0x2D0 } + - { offset: 0x2AD28E, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE13circularImage10outputSize11borderWidth0I5ColorABSgSo6CGSizeV_12CoreGraphics7CGFloatVSo7UIColorCtF', symObjAddr: 0x2D0, symBinAddr: 0x216830, symSize: 0x1D0 } + - { offset: 0x2AD380, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized2toABSgSo6CGSizeV_tF', symObjAddr: 0x4A0, symBinAddr: 0x216A00, symSize: 0x1A0 } + - { offset: 0x2AD434, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized2toABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0xA50, symBinAddr: 0x216FB0, symSize: 0x90 } + - { offset: 0x2AD480, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE40adjustedForShareSheetPreviewIconProviderAByF', symObjAddr: 0x660, symBinAddr: 0x216BC0, symSize: 0x320 } + - { offset: 0x2AD5EB, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE40adjustedForShareSheetPreviewIconProviderAByFySo30UIGraphicsImageRendererContextCXEfU_', symObjAddr: 0x980, symBinAddr: 0x216EE0, symSize: 0xD0 } + - { offset: 0x2AD652, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7resized2toABSgSo6CGSizeV_tFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0xB00, symBinAddr: 0x217060, symSize: 0x20 } + - { offset: 0x2AD666, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xB40, symBinAddr: 0x217080, symSize: 0x20 } + - { offset: 0x2AD67A, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xB60, symBinAddr: 0x2170A0, symSize: 0x10 } + - { offset: 0x2AD6DB, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE7appIconABSgvgZTf4d_n', symObjAddr: 0xB70, symBinAddr: 0x2170B0, symSize: 0x340 } + - { offset: 0x2AD855, size: 0x8, addend: 0x0, symName: '_$sSo7UIImageC8PenNavUIE40adjustedForShareSheetPreviewIconProviderAByFySo30UIGraphicsImageRendererContextCXEfU_TA', symObjAddr: 0xF90, symBinAddr: 0x217430, symSize: 0x20 } + - { offset: 0x2ADDD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4TextCfE', symObjAddr: 0x0, symBinAddr: 0x2174B0, symSize: 0x20 } + - { offset: 0x2ADE3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4TextCMU', symObjAddr: 0x80, symBinAddr: 0x217530, symSize: 0x10 } + - { offset: 0x2ADE4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4TextCMr', symObjAddr: 0xB0, symBinAddr: 0x217560, symSize: 0x50 } + - { offset: 0x2ADE63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCfE', symObjAddr: 0x100, symBinAddr: 0x2175B0, symSize: 0x30 } + - { offset: 0x2ADEF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCMU', symObjAddr: 0x1C0, symBinAddr: 0x217670, symSize: 0x10 } + - { offset: 0x2ADF05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCMr', symObjAddr: 0x210, symBinAddr: 0x2176A0, symSize: 0x70 } + - { offset: 0x2ADF50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO4TextCfD', symObjAddr: 0x20, symBinAddr: 0x2174D0, symSize: 0x60 } + - { offset: 0x2ADFAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCfD', symObjAddr: 0x130, symBinAddr: 0x2175E0, symSize: 0x90 } + - { offset: 0x2AE010, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO6AnchorCAA16ContainerElementA2aFP13childElementsSayAC08GraphicsG0CGvgTW', symObjAddr: 0x2D0, symBinAddr: 0x217710, symSize: 0x20 } + - { offset: 0x2AE3BD, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE9delimeter33_EDFC4C304335B870668D77C553946433LL_WZ', symObjAddr: 0x0, symBinAddr: 0x217730, symSize: 0x50 } + - { offset: 0x2AE3E1, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE9delimeter33_EDFC4C304335B870668D77C553946433LLACvpZ', symObjAddr: 0x2248, symBinAddr: 0x3A58C8, symSize: 0x0 } + - { offset: 0x2AE3FB, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE8commands33_EDFC4C304335B870668D77C553946433LLACvpZ', symObjAddr: 0x2260, symBinAddr: 0x3A58E0, symSize: 0x0 } + - { offset: 0x2AE47E, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE9delimeter33_EDFC4C304335B870668D77C553946433LL_WZ', symObjAddr: 0x0, symBinAddr: 0x217730, symSize: 0x50 } + - { offset: 0x2AE498, size: 0x8, addend: 0x0, symName: '_$s10Foundation12CharacterSetV8PenNavUIE8commands33_EDFC4C304335B870668D77C553946433LL_WZ', symObjAddr: 0x50, symBinAddr: 0x217780, symSize: 0x60 } + - { offset: 0x2AE87E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV16parseMoveSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0xB0, symBinAddr: 0x2177E0, symSize: 0x260 } + - { offset: 0x2AE9E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV16parseLineSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0x310, symBinAddr: 0x217A40, symSize: 0x260 } + - { offset: 0x2AEB48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17parseCubicSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0x570, symBinAddr: 0x217CA0, symSize: 0x560 } + - { offset: 0x2AEEB2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV23parseCubicSmoothSegment3for4withAA3DOMO4PathC0H0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0xAD0, symBinAddr: 0x218200, symSize: 0x3D0 } + - { offset: 0x2AF120, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV21parseQuadraticSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0xEA0, symBinAddr: 0x2185D0, symSize: 0x3D0 } + - { offset: 0x2AF38E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV27parseQuadraticSmoothSegment3for4withAA3DOMO4PathC0H0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0x1270, symBinAddr: 0x2189A0, symSize: 0x260 } + - { offset: 0x2AF4F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV15parseArcSegment3for4withAA3DOMO4PathC0G0OAJ7CommandO_So9NSScannerCztKFTf4nnd_n', symObjAddr: 0x14D0, symBinAddr: 0x218C00, symSize: 0x5E0 } + - { offset: 0x2AFA32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV17parsePathSegmentsySayAA3DOMO0F0C7SegmentOGSSKFTf4nd_n', symObjAddr: 0x1AB0, symBinAddr: 0x2191E0, symSize: 0x710 } + - { offset: 0x2AFE3C, size: 0x8, addend: 0x0, symName: ___swift_project_value_buffer, symObjAddr: 0x21C0, symBinAddr: 0x2198F0, symSize: 0x20 } + - { offset: 0x2AFE50, size: 0x8, addend: 0x0, symName: ___swift_allocate_value_buffer, symObjAddr: 0x2210, symBinAddr: 0x219910, symSize: 0x33 } + - { offset: 0x2B0370, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC08progressF0So010UIProgressF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x219950, symSize: 0x20 } + - { offset: 0x2B0682, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCfE', symObjAddr: 0xEB0, symBinAddr: 0x21A800, symSize: 0x50 } + - { offset: 0x2B06AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCfETo', symObjAddr: 0xF30, symBinAddr: 0x21A880, symSize: 0x50 } + - { offset: 0x2B06DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCMa', symObjAddr: 0xF80, symBinAddr: 0x21A8D0, symSize: 0x20 } + - { offset: 0x2B0714, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0xFA0, symBinAddr: 0x21A8F0, symSize: 0x70 } + - { offset: 0x2B0783, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x1010, symBinAddr: 0x21A960, symSize: 0x30 } + - { offset: 0x2B07CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC10setupPanelyyF', symObjAddr: 0x1040, symBinAddr: 0x21A990, symSize: 0xC0 } + - { offset: 0x2B0867, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC10setupPanelyyFTo', symObjAddr: 0x1100, symBinAddr: 0x21AA50, symSize: 0x30 } + - { offset: 0x2B08B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x11B0, symBinAddr: 0x21AA80, symSize: 0xC0 } + - { offset: 0x2B08EC, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x12A0, symBinAddr: 0x21AB60, symSize: 0x20 } + - { offset: 0x2B0900, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x12C0, symBinAddr: 0x21AB80, symSize: 0x10 } + - { offset: 0x2B0914, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC8setImageyyFySo7UIImageCSgcfU_TA', symObjAddr: 0x1340, symBinAddr: 0x21AB90, symSize: 0x10 } + - { offset: 0x2B0ACD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC08progressF0So010UIProgressF0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x219950, symSize: 0x20 } + - { offset: 0x2B0B2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC08progressF0So010UIProgressF0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x219970, symSize: 0x30 } + - { offset: 0x2B0B7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x2199A0, symSize: 0x20 } + - { offset: 0x2B0BD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x2199C0, symSize: 0x30 } + - { offset: 0x2B0C21, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC05imageF0So07UIImageF0CSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x2199F0, symSize: 0x20 } + - { offset: 0x2B0C79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC05imageF0So07UIImageF0CSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x219A10, symSize: 0x30 } + - { offset: 0x2B0DF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC11viewDidLoadyyF', symObjAddr: 0xF0, symBinAddr: 0x219A40, symSize: 0x330 } + - { offset: 0x2B0F80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x420, symBinAddr: 0x219D70, symSize: 0x30 } + - { offset: 0x2B10AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC8setImageyyF', symObjAddr: 0x450, symBinAddr: 0x219DA0, symSize: 0x4D0 } + - { offset: 0x2B1359, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC8setImageyyFySo7UIImageCSgcfU_', symObjAddr: 0x920, symBinAddr: 0x21A270, symSize: 0x150 } + - { offset: 0x2B143C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC14updateProgressyyF', symObjAddr: 0xA70, symBinAddr: 0x21A3C0, symSize: 0x110 } + - { offset: 0x2B1545, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC14updateProgressyyFTo', symObjAddr: 0xB80, symBinAddr: 0x21A4D0, symSize: 0x30 } + - { offset: 0x2B157E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC7dismissyyF', symObjAddr: 0xBB0, symBinAddr: 0x21A500, symSize: 0x80 } + - { offset: 0x2B1630, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xC30, symBinAddr: 0x21A580, symSize: 0x110 } + - { offset: 0x2B1671, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0xD40, symBinAddr: 0x21A690, symSize: 0x50 } + - { offset: 0x2B1685, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xD90, symBinAddr: 0x21A6E0, symSize: 0xF0 } + - { offset: 0x2B16B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xE80, symBinAddr: 0x21A7D0, symSize: 0x30 } + - { offset: 0x2B16CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27WelcomeScreenViewControllerCfD', symObjAddr: 0xF00, symBinAddr: 0x21A850, symSize: 0x30 } + - { offset: 0x2B1B2B, size: 0x8, addend: 0x0, symName: '_$sSlsE5first7ElementQzSgvgSS17UnicodeScalarViewV_Tg5', symObjAddr: 0x0, symBinAddr: 0x21ABA0, symSize: 0x100 } + - { offset: 0x2B2BEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterCMa', symObjAddr: 0x790, symBinAddr: 0x21B330, symSize: 0x20 } + - { offset: 0x2B2C00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCfETo', symObjAddr: 0x890, symBinAddr: 0x21B430, symSize: 0xC0 } + - { offset: 0x2B2FF5, size: 0x8, addend: 0x0, symName: '_$sSo23UIViewAnimatingPositionVIegy_ABIeyBy_TR', symObjAddr: 0x1E90, symBinAddr: 0x21CA30, symSize: 0x40 } + - { offset: 0x2B3665, size: 0x8, addend: 0x0, symName: '_$sSo7UITouchCSo8NSObjectCSH10ObjectiveCWl', symObjAddr: 0xA8C0, symBinAddr: 0x225460, symSize: 0x50 } + - { offset: 0x2B3680, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerCfETo', symObjAddr: 0xB1D0, symBinAddr: 0x225D70, symSize: 0x30 } + - { offset: 0x2B36B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLCfETo', symObjAddr: 0xBB10, symBinAddr: 0x2266B0, symSize: 0x60 } + - { offset: 0x2B36E2, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV19validateScalarIndexySS0E0VAEF', symObjAddr: 0xBD60, symBinAddr: 0x226900, symSize: 0xB0 } + - { offset: 0x2B370F, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV22validateSubscalarIndexySS0E0VAEF', symObjAddr: 0xBE10, symBinAddr: 0x2269B0, symSize: 0x80 } + - { offset: 0x2B3747, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV15scalarAlignSlowySS5IndexVAEF', symObjAddr: 0xBE90, symBinAddr: 0x226A30, symSize: 0x120 } + - { offset: 0x2B3825, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCMa', symObjAddr: 0xC5B0, symBinAddr: 0x2270F0, symSize: 0x20 } + - { offset: 0x2B3839, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerCMa', symObjAddr: 0xC5D0, symBinAddr: 0x227110, symSize: 0x20 } + - { offset: 0x2B384D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLCMa', symObjAddr: 0xC5F0, symBinAddr: 0x227130, symSize: 0x20 } + - { offset: 0x2B3861, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC10UnfairLockCMa', symObjAddr: 0xC610, symBinAddr: 0x227150, symSize: 0x20 } + - { offset: 0x2B3875, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC4DataVMa', symObjAddr: 0xC6A0, symBinAddr: 0x227170, symSize: 0x10 } + - { offset: 0x2B3889, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctFyAA21NumericSpringAnimatorAELLC4DataVcfU_TA', symObjAddr: 0xC790, symBinAddr: 0x2271B0, symSize: 0x20 } + - { offset: 0x2B389D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctFyycfU0_TA', symObjAddr: 0xC7F0, symBinAddr: 0x227210, symSize: 0x20 } + - { offset: 0x2B38B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC10panningEnd33_06002278D796C453CD79A6217836F60ALL4with8velocityySo7CGPointV_AItFyycfU_TA', symObjAddr: 0xC810, symBinAddr: 0x227230, symSize: 0x10 } + - { offset: 0x2B38C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyyScMYccfU0_TA', symObjAddr: 0xC8E0, symBinAddr: 0x2272D0, symSize: 0x20 } + - { offset: 0x2B38F7, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xC900, symBinAddr: 0x2272F0, symSize: 0x20 } + - { offset: 0x2B390B, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xC920, symBinAddr: 0x227310, symSize: 0x10 } + - { offset: 0x2B391F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU1_TA', symObjAddr: 0xC9B0, symBinAddr: 0x227320, symSize: 0x10 } + - { offset: 0x2B3933, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU2_TA', symObjAddr: 0xC9D0, symBinAddr: 0x227340, symSize: 0x20 } + - { offset: 0x2B3947, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU3_TA', symObjAddr: 0xCA60, symBinAddr: 0x2273B0, symSize: 0x20 } + - { offset: 0x2B395B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFySo23UIViewAnimatingPositionVcfU4_TA', symObjAddr: 0xCAC0, symBinAddr: 0x227410, symSize: 0x20 } + - { offset: 0x2B3A7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC10scrollViewSo08UIScrollF0CSgvW', symObjAddr: 0x260, symBinAddr: 0x21AE00, symSize: 0x1B0 } + - { offset: 0x2B3BF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC5stateAA18FloatingPanelStateCvW', symObjAddr: 0x410, symBinAddr: 0x21AFB0, symSize: 0x280 } + - { offset: 0x2B3E1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvs', symObjAddr: 0x690, symBinAddr: 0x21B230, symSize: 0x100 } + - { offset: 0x2B3EB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCfD', symObjAddr: 0x7B0, symBinAddr: 0x21B350, symSize: 0x60 } + - { offset: 0x2B3EE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCfDTo', symObjAddr: 0x810, symBinAddr: 0x21B3B0, symSize: 0x80 } + - { offset: 0x2B3F1D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtF', symObjAddr: 0x950, symBinAddr: 0x21B4F0, symSize: 0xF50 } + - { offset: 0x2B46C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU1_', symObjAddr: 0x18A0, symBinAddr: 0x21C440, symSize: 0xF0 } + - { offset: 0x2B473E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU2_', symObjAddr: 0x1990, symBinAddr: 0x21C530, symSize: 0x80 } + - { offset: 0x2B4789, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFyycfU3_', symObjAddr: 0x1A10, symBinAddr: 0x21C5B0, symSize: 0x320 } + - { offset: 0x2B4982, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL4from2to8animated10completionyAA18FloatingPanelStateC_AKSbyycSgtFySo23UIViewAnimatingPositionVcfU4_', symObjAddr: 0x1D30, symBinAddr: 0x21C8D0, symSize: 0x160 } + - { offset: 0x2B4C79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC14activateLayout05forceF030contentInsetAdjustmentBehaviorySb_AA23FloatingPanelControllerC07ContentijK0OtF', symObjAddr: 0x1ED0, symBinAddr: 0x21CA70, symSize: 0x220 } + - { offset: 0x2B4E4F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC16getBackdropAlpha2at4with0D8Graphics7CGFloatVAI_AItF', symObjAddr: 0x20F0, symBinAddr: 0x21CC90, symSize: 0x300 } + - { offset: 0x2B516F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_33shouldRecognizeSimultaneouslyWithSbSo09UIGestureF0C_AGtF', symObjAddr: 0x23F0, symBinAddr: 0x21CF90, symSize: 0x360 } + - { offset: 0x2B5316, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_33shouldRecognizeSimultaneouslyWithSbSo09UIGestureF0C_AGtFTo', symObjAddr: 0x2750, symBinAddr: 0x21D2F0, symSize: 0x80 } + - { offset: 0x2B532A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_24shouldBeRequiredToFailBySbSo09UIGestureF0C_AGtF', symObjAddr: 0x27D0, symBinAddr: 0x21D370, symSize: 0x150 } + - { offset: 0x2B53BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_24shouldBeRequiredToFailBySbSo09UIGestureF0C_AGtFTo', symObjAddr: 0x2920, symBinAddr: 0x21D4C0, symSize: 0x80 } + - { offset: 0x2B5410, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_22shouldRequireFailureOfSbSo09UIGestureF0C_AGtF', symObjAddr: 0x29A0, symBinAddr: 0x21D540, symSize: 0x520 } + - { offset: 0x2B570F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC17gestureRecognizer_22shouldRequireFailureOfSbSo09UIGestureF0C_AGtFTo', symObjAddr: 0x2EC0, symBinAddr: 0x21DA60, symSize: 0x80 } + - { offset: 0x2B5758, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC14handleBackdrop10tapGestureySo05UITapH10RecognizerC_tFTo', symObjAddr: 0x2F40, symBinAddr: 0x21DAE0, symSize: 0x70 } + - { offset: 0x2B594B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC6handle10panGestureySo05UIPanG10RecognizerC_tF', symObjAddr: 0x2FB0, symBinAddr: 0x21DB50, symSize: 0x1910 } + - { offset: 0x2B71AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC6handle10panGestureySo05UIPanG10RecognizerC_tFTo', symObjAddr: 0x48C0, symBinAddr: 0x21F460, symSize: 0x50 } + - { offset: 0x2B71F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC26interruptAnimationIfNeeded33_06002278D796C453CD79A6217836F60ALLyyF', symObjAddr: 0x4910, symBinAddr: 0x21F4B0, symSize: 0x3F0 } + - { offset: 0x2B746C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC12panningBegan33_06002278D796C453CD79A6217836F60ALL2atySo7CGPointV_tF', symObjAddr: 0x4D00, symBinAddr: 0x21F8A0, symSize: 0x230 } + - { offset: 0x2B7670, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC13panningChange33_06002278D796C453CD79A6217836F60ALL4withySo7CGPointV_tF', symObjAddr: 0x4F30, symBinAddr: 0x21FAD0, symSize: 0x460 } + - { offset: 0x2B7BFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC30shouldScrollingContentInMoving33_06002278D796C453CD79A6217836F60ALL4from2toSb0D8Graphics7CGFloatV_AJtF', symObjAddr: 0x5390, symBinAddr: 0x21FF30, symSize: 0x2B0 } + - { offset: 0x2B7D62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC10panningEnd33_06002278D796C453CD79A6217836F60ALL4with8velocityySo7CGPointV_AItF', symObjAddr: 0x5640, symBinAddr: 0x2201E0, symSize: 0xA10 } + - { offset: 0x2B8528, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC10panningEnd33_06002278D796C453CD79A6217836F60ALL4with8velocityySo7CGPointV_AItFyycfU_', symObjAddr: 0x6050, symBinAddr: 0x220BF0, symSize: 0x50 } + - { offset: 0x2B8594, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC12shouldRemove33_06002278D796C453CD79A6217836F60ALL4withSbSo8CGVectorV_tF', symObjAddr: 0x60A0, symBinAddr: 0x220C40, symSize: 0x250 } + - { offset: 0x2B87AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC16startInteraction33_06002278D796C453CD79A6217836F60ALL4with2atySo7CGPointV_AItF', symObjAddr: 0x62F0, symBinAddr: 0x220E90, symSize: 0xBA0 } + - { offset: 0x2B93E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC14endInteraction33_06002278D796C453CD79A6217836F60ALL3foryAA18FloatingPanelStateC_tF', symObjAddr: 0x6E90, symBinAddr: 0x221A30, symSize: 0x300 } + - { offset: 0x2B9664, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC15startAttraction33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_So7CGPointVyyctF', symObjAddr: 0x7190, symBinAddr: 0x221D30, symSize: 0x340 } + - { offset: 0x2B9AE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctF', symObjAddr: 0x74D0, symBinAddr: 0x222070, symSize: 0x420 } + - { offset: 0x2B9D30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctFyAA21NumericSpringAnimatorAELLC4DataVcfU_', symObjAddr: 0x78F0, symBinAddr: 0x222490, symSize: 0x460 } + - { offset: 0x2BA0FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC4move33_06002278D796C453CD79A6217836F60ALL2to4with10completionyAA18FloatingPanelStateC_0D8Graphics7CGFloatVyyctFyycfU0_', symObjAddr: 0x7D50, symBinAddr: 0x2228F0, symSize: 0x250 } + - { offset: 0x2BA2BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC13endAttraction33_06002278D796C453CD79A6217836F60ALLyySbF', symObjAddr: 0x7FA0, symBinAddr: 0x222B40, symSize: 0x5E0 } + - { offset: 0x2BA7A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC11targetState4from4withAA013FloatingPanelF0C0D8Graphics7CGFloatV_AKtF', symObjAddr: 0x8580, symBinAddr: 0x223120, symSize: 0xF50 } + - { offset: 0x2BB776, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC24followScrollViewBouncingyyF', symObjAddr: 0x94D0, symBinAddr: 0x224070, symSize: 0x260 } + - { offset: 0x2BB89C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC14lockScrollView33_06002278D796C453CD79A6217836F60ALL6strictySb_tF', symObjAddr: 0x9730, symBinAddr: 0x2242D0, symSize: 0x4C0 } + - { offset: 0x2BBB84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC16unlockScrollView33_06002278D796C453CD79A6217836F60ALLyyF', symObjAddr: 0x9BF0, symBinAddr: 0x224790, symSize: 0x200 } + - { offset: 0x2BBCFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC27shouldLooselyLockScrollView33_06002278D796C453CD79A6217836F60ALLSbvg07isSmallH25ContentAndFitToBoundsModeL_Sbvg', symObjAddr: 0x9DF0, symBinAddr: 0x224990, symSize: 0x1E0 } + - { offset: 0x2BBF69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC23contentOffsetForPinning33_06002278D796C453CD79A6217836F60ALL2ofSo7CGPointVSo12UIScrollViewC_tF', symObjAddr: 0x9FD0, symBinAddr: 0x224B70, symSize: 0x1A0 } + - { offset: 0x2BC04F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC12isScrollable5stateSbAA18FloatingPanelStateC_tF', symObjAddr: 0xA170, symBinAddr: 0x224D10, symSize: 0x150 } + - { offset: 0x2BC151, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC32adjustScrollContentInsetIfNeededyyF', symObjAddr: 0xA2C0, symBinAddr: 0x224E60, symSize: 0x320 } + - { offset: 0x2BC2EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreCACycfcTo', symObjAddr: 0xA5E0, symBinAddr: 0x225180, symSize: 0x30 } + - { offset: 0x2BC349, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerCACycfc', symObjAddr: 0xA610, symBinAddr: 0x2251B0, symSize: 0xE0 } + - { offset: 0x2BC385, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerCACycfcTo', symObjAddr: 0xA6F0, symBinAddr: 0x225290, symSize: 0x20 } + - { offset: 0x2BC399, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC12touchesBegan_4withyShySo7UITouchCG_So7UIEventCtF', symObjAddr: 0xA710, symBinAddr: 0x2252B0, symSize: 0x1B0 } + - { offset: 0x2BC447, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC12touchesBegan_4withyShySo7UITouchCG_So7UIEventCtFTo', symObjAddr: 0xA910, symBinAddr: 0x2254B0, symSize: 0x90 } + - { offset: 0x2BC475, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvgTo', symObjAddr: 0xA9A0, symBinAddr: 0x225540, symSize: 0x40 } + - { offset: 0x2BC4A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvg', symObjAddr: 0xA9E0, symBinAddr: 0x225580, symSize: 0x40 } + - { offset: 0x2BC4C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvsTo', symObjAddr: 0xAA20, symBinAddr: 0x2255C0, symSize: 0x40 } + - { offset: 0x2BC4DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvM', symObjAddr: 0xAA60, symBinAddr: 0x225600, symSize: 0x50 } + - { offset: 0x2BC51B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC8delegateSo09UIGestureH8Delegate_pSgvM.resume.0', symObjAddr: 0xAAB0, symBinAddr: 0x225650, symSize: 0x40 } + - { offset: 0x2BC53D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14delegateOriginSo09UIGestureH8Delegate_pvg', symObjAddr: 0xAAF0, symBinAddr: 0x225690, symSize: 0x20 } + - { offset: 0x2BC570, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvg', symObjAddr: 0xAB10, symBinAddr: 0x2256B0, symSize: 0x40 } + - { offset: 0x2BC596, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvs', symObjAddr: 0xAB50, symBinAddr: 0x2256F0, symSize: 0x20 } + - { offset: 0x2BC5AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvM', symObjAddr: 0xAB70, symBinAddr: 0x225710, symSize: 0x80 } + - { offset: 0x2BC5F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvM.resume.0', symObjAddr: 0xABF0, symBinAddr: 0x225790, symSize: 0xB0 } + - { offset: 0x2BC63C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterC8responds2toSb10ObjectiveC8SelectorVSg_tF', symObjAddr: 0xACA0, symBinAddr: 0x225840, symSize: 0xE0 } + - { offset: 0x2BC6A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterC8responds2toSb10ObjectiveC8SelectorVSg_tFTo', symObjAddr: 0xAD80, symBinAddr: 0x225920, symSize: 0x30 } + - { offset: 0x2BC6BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterC16forwardingTarget3forypSg10ObjectiveC8SelectorVSg_tF', symObjAddr: 0xADB0, symBinAddr: 0x225950, symSize: 0x190 } + - { offset: 0x2BC74B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterC16forwardingTarget3forypSg10ObjectiveC8SelectorVSg_tFTo', symObjAddr: 0xAF40, symBinAddr: 0x225AE0, symSize: 0xB0 } + - { offset: 0x2BC779, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterCAEycfcTo', symObjAddr: 0xAFF0, symBinAddr: 0x225B90, symSize: 0x30 } + - { offset: 0x2BC7DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC14DelegateRouterCfETo', symObjAddr: 0xB030, symBinAddr: 0x225BD0, symSize: 0x20 } + - { offset: 0x2BC806, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC6target6actionACypSg_10ObjectiveC8SelectorVSgtcfC', symObjAddr: 0xB050, symBinAddr: 0x225BF0, symSize: 0xD0 } + - { offset: 0x2BC81A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC6target6actionACypSg_10ObjectiveC8SelectorVSgtcfc', symObjAddr: 0xB120, symBinAddr: 0x225CC0, symSize: 0x30 } + - { offset: 0x2BC89F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC6target6actionACypSg_10ObjectiveC8SelectorVSgtcfcTo', symObjAddr: 0xB150, symBinAddr: 0x225CF0, symSize: 0x50 } + - { offset: 0x2BC900, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC10UnfairLockCfD', symObjAddr: 0xB200, symBinAddr: 0x225DA0, symSize: 0x20 } + - { offset: 0x2BC976, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC11displayLinkSo09CADisplayM0Cvg', symObjAddr: 0xB220, symBinAddr: 0x225DC0, symSize: 0x90 } + - { offset: 0x2BC9D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC14startAnimationSbyF', symObjAddr: 0xB2B0, symBinAddr: 0x225E50, symSize: 0x300 } + - { offset: 0x2BCC89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC13stopAnimationyySbF', symObjAddr: 0xB5B0, symBinAddr: 0x226150, symSize: 0x270 } + - { offset: 0x2BCF29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC6updateyySo13CADisplayLinkCF', symObjAddr: 0xB820, symBinAddr: 0x2263C0, symSize: 0x240 } + - { offset: 0x2BD19C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLC6updateyySo13CADisplayLinkCFTo', symObjAddr: 0xBA60, symBinAddr: 0x226600, symSize: 0x50 } + - { offset: 0x2BD1C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLCADycfcTo', symObjAddr: 0xBAB0, symBinAddr: 0x226650, symSize: 0x30 } + - { offset: 0x2BD226, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21NumericSpringAnimator33_06002278D796C453CD79A6217836F60ALLCfD', symObjAddr: 0xBAE0, symBinAddr: 0x226680, symSize: 0x30 } + - { offset: 0x2BD251, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC27shouldScrollViewHandleTouch33_06002278D796C453CD79A6217836F60ALL_5point8velocitySbSo08UIScrollG0CSg_So7CGPointV0D8Graphics7CGFloatVtFTf4ndnn_n', symObjAddr: 0xBFB0, symBinAddr: 0x226B50, symSize: 0x4A0 } + - { offset: 0x2BD641, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelPanGestureRecognizerC13delegateProxySo09UIGestureH8Delegate_pSgvsTf4gn_n', symObjAddr: 0xC450, symBinAddr: 0x226FF0, symSize: 0x90 } + - { offset: 0x2BDB10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC12fetchRequestSo07NSFetchG0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x2274A0, symSize: 0x60 } + - { offset: 0x2BDB66, size: 0x8, addend: 0x0, symName: _keypath_get_selector_id, symObjAddr: 0x60, symBinAddr: 0x227500, symSize: 0x10 } + - { offset: 0x2BDB7A, size: 0x8, addend: 0x0, symName: _keypath_get_selector_coverImage, symObjAddr: 0xC0, symBinAddr: 0x227560, symSize: 0x10 } + - { offset: 0x2BDB8E, size: 0x8, addend: 0x0, symName: _keypath_get_selector_address, symObjAddr: 0x110, symBinAddr: 0x2275B0, symSize: 0x10 } + - { offset: 0x2BDBA2, size: 0x8, addend: 0x0, symName: _keypath_get_selector_buildingNumber, symObjAddr: 0x160, symBinAddr: 0x227600, symSize: 0x10 } + - { offset: 0x2BDBB6, size: 0x8, addend: 0x0, symName: _keypath_get_selector_phone, symObjAddr: 0x1B0, symBinAddr: 0x227650, symSize: 0x10 } + - { offset: 0x2BDBCA, size: 0x8, addend: 0x0, symName: _keypath_get_selector_email, symObjAddr: 0x200, symBinAddr: 0x2276A0, symSize: 0x10 } + - { offset: 0x2BDBDE, size: 0x8, addend: 0x0, symName: _keypath_get_selector_website, symObjAddr: 0x250, symBinAddr: 0x2276F0, symSize: 0x10 } + - { offset: 0x2BDBF2, size: 0x8, addend: 0x0, symName: _keypath_get_selector_floorCount, symObjAddr: 0x350, symBinAddr: 0x2277F0, symSize: 0x10 } + - { offset: 0x2BDC42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11CachedVenueC03setE4Data5venueyAA0eG0C_tF', symObjAddr: 0x3B0, symBinAddr: 0x227850, symSize: 0x340 } + - { offset: 0x2BE17C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC15show3dBuildingsyyF', symObjAddr: 0x0, symBinAddr: 0x227B90, symSize: 0x370 } + - { offset: 0x2BE1D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC15hide3dBuildingsyyF', symObjAddr: 0x370, symBinAddr: 0x227F00, symSize: 0xF0 } + - { offset: 0x2BE26D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC17showCategoryCount8category12currentFloory7Penguin11POICategoryV_AG0L0CSgtF', symObjAddr: 0x460, symBinAddr: 0x227FF0, symSize: 0x120 } + - { offset: 0x2BE357, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC015getLastSelectedD07Penguin0D0CSgyF', symObjAddr: 0x580, symBinAddr: 0x228110, symSize: 0xD0 } + - { offset: 0x2BE3AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC14downloadModelsyyF', symObjAddr: 0x650, symBinAddr: 0x2281E0, symSize: 0x140 } + - { offset: 0x2BEA54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC14add3dBuildings3forySay7Penguin0D0CG_tF', symObjAddr: 0x22A0, symBinAddr: 0x229E30, symSize: 0x1190 } + - { offset: 0x2BF574, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC17remove3dBuildings11identifiersySaySSG_tF', symObjAddr: 0x3B30, symBinAddr: 0x22B6C0, symSize: 0xD0 } + - { offset: 0x2BF7DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCMU', symObjAddr: 0x7C80, symBinAddr: 0x22F810, symSize: 0x10 } + - { offset: 0x2BF7F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCMa', symObjAddr: 0x7C90, symBinAddr: 0x22F820, symSize: 0x30 } + - { offset: 0x2BF804, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCMr', symObjAddr: 0x7CC0, symBinAddr: 0x22F850, symSize: 0xC0 } + - { offset: 0x2BF818, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8addModel3fory7Penguin0D0C_tF', symObjAddr: 0x7DC0, symBinAddr: 0x22F910, symSize: 0x1B0 } + - { offset: 0x2BF8D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC17downloadCompleted3foryAA16FileDownloadData_p_tF', symObjAddr: 0x7F70, symBinAddr: 0x22FAC0, symSize: 0xF0 } + - { offset: 0x2BF986, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCAA27FileDownloadProcessProtocolA2aDP17downloadCompleted3foryAA0gH4Data_p_tFTW', symObjAddr: 0x8060, symBinAddr: 0x22FBB0, symSize: 0x10 } + - { offset: 0x2BFA97, size: 0x8, addend: 0x0, symName: '_$s7Penguin8MapLevelOACSQAAWl', symObjAddr: 0x8610, symBinAddr: 0x2300E0, symSize: 0x40 } + - { offset: 0x2BFAAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x86E0, symBinAddr: 0x230140, symSize: 0x20 } + - { offset: 0x2BFABF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tFySo7UIImageCSgcfU_yALcfU_TA', symObjAddr: 0x8700, symBinAddr: 0x230160, symSize: 0x20 } + - { offset: 0x2BFAD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3fory7Penguin0D0CSg_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x8780, symBinAddr: 0x230190, symSize: 0x20 } + - { offset: 0x2BFAE7, size: 0x8, addend: 0x0, symName: '_$s7Penguin8MapLevelOSgWOf', symObjAddr: 0x8930, symBinAddr: 0x2302B0, symSize: 0x40 } + - { offset: 0x2C039E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC10drawCampusyyF', symObjAddr: 0x790, symBinAddr: 0x228320, symSize: 0x750 } + - { offset: 0x2C061A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC16drawCampusBorderyyF', symObjAddr: 0xEE0, symBinAddr: 0x228A70, symSize: 0x2E0 } + - { offset: 0x2C0786, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC18removeCampusBorderyyF', symObjAddr: 0x11C0, symBinAddr: 0x228D50, symSize: 0x1D0 } + - { offset: 0x2C08AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC13drawAllVenues6exceptySay7Penguin0D0CSgG_tF', symObjAddr: 0x1390, symBinAddr: 0x228F20, symSize: 0xF10 } + - { offset: 0x2C1165, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC15removeAllVenuesyyF', symObjAddr: 0x3430, symBinAddr: 0x22AFC0, symSize: 0x700 } + - { offset: 0x2C18B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC04drawD0_14includesSymboly7Penguin0D0CSg_SbtF', symObjAddr: 0x3C00, symBinAddr: 0x22B790, symSize: 0xA00 } + - { offset: 0x2C1C27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC06removeD0yy7Penguin0D0CSgF', symObjAddr: 0x4600, symBinAddr: 0x22C190, symSize: 0x820 } + - { offset: 0x2C22BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC9drawGates3fory7Penguin0D0CSg_tF', symObjAddr: 0x4E20, symBinAddr: 0x22C9B0, symSize: 0x1000 } + - { offset: 0x2C3074, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3fory7Penguin0D0CSg_tF', symObjAddr: 0x5E20, symBinAddr: 0x22D9B0, symSize: 0x4D0 } + - { offset: 0x2C32B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3fory7Penguin0D0CSg_tFySo7UIImageCSgcfU_', symObjAddr: 0x62F0, symBinAddr: 0x22DE80, symSize: 0x2A0 } + - { offset: 0x2C3384, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tF', symObjAddr: 0x6590, symBinAddr: 0x22E120, symSize: 0x540 } + - { offset: 0x2C3729, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tFySo7UIImageCSgcfU_', symObjAddr: 0x6AD0, symBinAddr: 0x22E660, symSize: 0xE40 } + - { offset: 0x2C3B2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8setImage3forySay7Penguin0D0CG_tFySo7UIImageCSgcfU_yALcfU_', symObjAddr: 0x7910, symBinAddr: 0x22F4A0, symSize: 0xF0 } + - { offset: 0x2C3D53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC6filter14filteredVenuesySayAA5PlaceCG_tF', symObjAddr: 0x7A00, symBinAddr: 0x22F590, symSize: 0x220 } + - { offset: 0x2C3FCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerCfD', symObjAddr: 0x7C20, symBinAddr: 0x22F7B0, symSize: 0x60 } + - { offset: 0x2C4003, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8getImage3forSo7UIImageCSg7Penguin13GateNodeModelC_tFTf4nd_n', symObjAddr: 0x80C0, symBinAddr: 0x22FBC0, symSize: 0x520 } + - { offset: 0x2C41EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19VenueDrawingManagerC8renderer8mapLevel0H4ModeAC17PenguinINRenderer10PIRendererCSg_0K003MapI0OSgAA0N5StateOtcfcTf4gnnn_n', symObjAddr: 0x8830, symBinAddr: 0x2301B0, symSize: 0x100 } + - { offset: 0x2C45C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvpACTk', symObjAddr: 0x0, symBinAddr: 0x230310, symSize: 0x70 } + - { offset: 0x2C47BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvpACTk', symObjAddr: 0x0, symBinAddr: 0x230310, symSize: 0x70 } + - { offset: 0x2C4819, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewCMa', symObjAddr: 0x2D0, symBinAddr: 0x2305E0, symSize: 0x20 } + - { offset: 0x2C4843, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewCfETo', symObjAddr: 0x900, symBinAddr: 0x230A90, symSize: 0x20 } + - { offset: 0x2C492E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvg', symObjAddr: 0x70, symBinAddr: 0x230380, symSize: 0x40 } + - { offset: 0x2C494B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvs', symObjAddr: 0xB0, symBinAddr: 0x2303C0, symSize: 0x90 } + - { offset: 0x2C498F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvM', symObjAddr: 0x140, symBinAddr: 0x230450, symSize: 0x60 } + - { offset: 0x2C49C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC8barColorSo7UIColorCvM.resume.0', symObjAddr: 0x1A0, symBinAddr: 0x2304B0, symSize: 0x40 } + - { offset: 0x2C4A7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5coderACSgSo7NSCoderC_tcfC', symObjAddr: 0x1E0, symBinAddr: 0x2304F0, symSize: 0x40 } + - { offset: 0x2C4AA3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x220, symBinAddr: 0x230530, symSize: 0xB0 } + - { offset: 0x2C4B1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2F0, symBinAddr: 0x230600, symSize: 0xC0 } + - { offset: 0x2C4B8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewCACycfcTo', symObjAddr: 0x3B0, symBinAddr: 0x2306C0, symSize: 0xD0 } + - { offset: 0x2C4C10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC14layoutSubviewsyyFTo', symObjAddr: 0x4F0, symBinAddr: 0x230790, symSize: 0x90 } + - { offset: 0x2C4CAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC7hitTest_4withSo6UIViewCSgSo7CGPointV_So7UIEventCSgtFTo', symObjAddr: 0x690, symBinAddr: 0x230820, symSize: 0x100 } + - { offset: 0x2C4CFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5frameACSo6CGRectV_tcfC', symObjAddr: 0x790, symBinAddr: 0x230920, symSize: 0x80 } + - { offset: 0x2C4D11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x810, symBinAddr: 0x2309A0, symSize: 0x30 } + - { offset: 0x2C4D7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x840, symBinAddr: 0x2309D0, symSize: 0x30 } + - { offset: 0x2C4DDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11GrabberViewCfD', symObjAddr: 0x870, symBinAddr: 0x230A00, symSize: 0x30 } + - { offset: 0x2C51A8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FloatingPanelPositionO19mainDimensionAnchorySo08NSLayoutH0CAA19LayoutGuideProvider_pFTf4en_n', symObjAddr: 0x110, symBinAddr: 0x230B10, symSize: 0xA0 } + - { offset: 0x2C51F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FloatingPanelPositionOSHAASQWb', symObjAddr: 0x1D0, symBinAddr: 0x230BB0, symSize: 0x10 } + - { offset: 0x2C5209, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FloatingPanelPositionOACSQAAWl', symObjAddr: 0x1E0, symBinAddr: 0x230BC0, symSize: 0x30 } + - { offset: 0x2C521D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21FloatingPanelPositionOMa', symObjAddr: 0x210, symBinAddr: 0x230BF0, symSize: 0xA } + - { offset: 0x2C5918, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterCMa', symObjAddr: 0x20, symBinAddr: 0x230C00, symSize: 0x20 } + - { offset: 0x2C5C06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC20getOriginDescription6originSSAA5PlaceCSg_tFZTf4nd_n', symObjAddr: 0x40, symBinAddr: 0x230C20, symSize: 0xA80 } + - { offset: 0x2C670A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC25getDestinationDescription6origin11destinationSSAA5PlaceCSg_AItFZTf4nnd_n', symObjAddr: 0xAC0, symBinAddr: 0x2316A0, symSize: 0x1220 } + - { offset: 0x2C746F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC19getFormattedMinutesSSyFZTf4d_n', symObjAddr: 0x1CE0, symBinAddr: 0x2328C0, symSize: 0x2B0 } + - { offset: 0x2C7743, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC20getFormattedDistance10directionsSSSayAA0D9DirectionVG_tFZTf4nd_n', symObjAddr: 0x1F90, symBinAddr: 0x232B70, symSize: 0x1B0 } + - { offset: 0x2C7938, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24RouteDirectionsFormatterC012getFormattedE010directionsSSSayAA0D9DirectionVG_tFZTf4nd_n', symObjAddr: 0x2140, symBinAddr: 0x232D20, symSize: 0x6C0 } + - { offset: 0x2C80C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataC03setD08favoriteyAA0D0C_tF', symObjAddr: 0x0, symBinAddr: 0x2333E0, symSize: 0x200 } + - { offset: 0x2C8149, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17FavoriteCacheDataC12fetchRequestSo07NSFetchH0CyACGyFZ', symObjAddr: 0x200, symBinAddr: 0x2335E0, symSize: 0x70 } + - { offset: 0x2C81B4, size: 0x8, addend: 0x0, symName: _keypath_get_selector_createDate, symObjAddr: 0x270, symBinAddr: 0x233650, symSize: 0x10 } + - { offset: 0x2C81C8, size: 0x8, addend: 0x0, symName: _keypath_get_selector_deviceId, symObjAddr: 0x2C0, symBinAddr: 0x2336A0, symSize: 0x10 } + - { offset: 0x2C81DC, size: 0x8, addend: 0x0, symName: _keypath_get_selector_distance, symObjAddr: 0x360, symBinAddr: 0x233730, symSize: 0x10 } + - { offset: 0x2C81F0, size: 0x8, addend: 0x0, symName: _keypath_get_selector_label, symObjAddr: 0x410, symBinAddr: 0x2337D0, symSize: 0x10 } + - { offset: 0x2C8204, size: 0x8, addend: 0x0, symName: _keypath_get_selector_poiId, symObjAddr: 0x460, symBinAddr: 0x233820, symSize: 0x10 } + - { offset: 0x2C8218, size: 0x8, addend: 0x0, symName: _keypath_get_selector_userName, symObjAddr: 0x4C0, symBinAddr: 0x233880, symSize: 0x10 } + - { offset: 0x2C822C, size: 0x8, addend: 0x0, symName: _keypath_get_selector_location, symObjAddr: 0x5C0, symBinAddr: 0x2338D0, symSize: 0x10 } + - { offset: 0x2C867A, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PILocationC8PenNavUIE12toParametersSDySSypGvg', symObjAddr: 0x0, symBinAddr: 0x233930, symSize: 0x1F0 } + - { offset: 0x2C8729, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PILocationC8PenNavUIE12toParametersSDySSypGvg', symObjAddr: 0x0, symBinAddr: 0x233930, symSize: 0x1F0 } + - { offset: 0x2C8C5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC11contentSizeSo6CGSizeVvgTo', symObjAddr: 0x0, symBinAddr: 0x233B20, symSize: 0x30 } + - { offset: 0x2C8DA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewCMa', symObjAddr: 0x240, symBinAddr: 0x233D60, symSize: 0x14 } + - { offset: 0x2C8DD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC11contentSizeSo6CGSizeVvgTo', symObjAddr: 0x0, symBinAddr: 0x233B20, symSize: 0x30 } + - { offset: 0x2C8E47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC11contentSizeSo6CGSizeVvsTo', symObjAddr: 0x30, symBinAddr: 0x233B50, symSize: 0x70 } + - { offset: 0x2C8EA6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC20intrinsicContentSizeSo6CGSizeVvgTo', symObjAddr: 0xA0, symBinAddr: 0x233BC0, symSize: 0x90 } + - { offset: 0x2C8F26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC5frame5styleACSo6CGRectV_So07UITableF5StyleVtcfcTo', symObjAddr: 0x130, symBinAddr: 0x233C50, symSize: 0x60 } + - { offset: 0x2C8FBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x190, symBinAddr: 0x233CB0, symSize: 0x80 } + - { offset: 0x2C8FF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18IntrinsicTableViewCfD', symObjAddr: 0x210, symBinAddr: 0x233D30, symSize: 0x30 } + - { offset: 0x2C95CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellCfETo', symObjAddr: 0xA40, symBinAddr: 0x2347C0, symSize: 0x60 } + - { offset: 0x2C95FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellCMa', symObjAddr: 0xAA0, symBinAddr: 0x234820, symSize: 0x20 } + - { offset: 0x2C960F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSgWOe', symObjAddr: 0xB30, symBinAddr: 0x234840, symSize: 0x30 } + - { offset: 0x2C9623, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9configure4with10isSelectedyAA0D8CardDataV_SbtFySo7UIImageCSgcfU_TA', symObjAddr: 0xBC0, symBinAddr: 0x2348D0, symSize: 0x20 } + - { offset: 0x2C9637, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSgWOy', symObjAddr: 0xC20, symBinAddr: 0x2348F0, symSize: 0x2F } + - { offset: 0x2C975C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9imageViewSo07UIImageG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x233D80, symSize: 0x20 } + - { offset: 0x2C97BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9imageViewSo07UIImageG0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x233DA0, symSize: 0x30 } + - { offset: 0x2C9809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x233DD0, symSize: 0x20 } + - { offset: 0x2C9861, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x233DF0, symSize: 0x30 } + - { offset: 0x2C98B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC12awakeFromNibyyFTo', symObjAddr: 0xA0, symBinAddr: 0x233E20, symSize: 0xD0 } + - { offset: 0x2C992F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9configure4with10isSelectedyAA0D8CardDataV_SbtF', symObjAddr: 0x170, symBinAddr: 0x233EF0, symSize: 0x430 } + - { offset: 0x2C9AC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC9configure4with10isSelectedyAA0D8CardDataV_SbtFySo7UIImageCSgcfU_', symObjAddr: 0x5A0, symBinAddr: 0x234320, symSize: 0x230 } + - { offset: 0x2C9BB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC15prepareForReuseyyF', symObjAddr: 0x7D0, symBinAddr: 0x234550, symSize: 0xB0 } + - { offset: 0x2C9C29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC15prepareForReuseyyFTo', symObjAddr: 0x880, symBinAddr: 0x234600, symSize: 0x30 } + - { offset: 0x2C9C60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x8B0, symBinAddr: 0x234630, symSize: 0x90 } + - { offset: 0x2C9CB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x940, symBinAddr: 0x2346C0, symSize: 0xA0 } + - { offset: 0x2C9CEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x9E0, symBinAddr: 0x234760, symSize: 0x30 } + - { offset: 0x2C9D00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9VenueCellCfD', symObjAddr: 0xA10, symBinAddr: 0x234790, symSize: 0x30 } + - { offset: 0x2CA0C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV13showsUsernameSbvpZ', symObjAddr: 0x4233, symBinAddr: 0x3BD318, symSize: 0x0 } + - { offset: 0x2CA0DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV15showsBackButtonSbvpZ', symObjAddr: 0x4234, symBinAddr: 0x3BD319, symSize: 0x0 } + - { offset: 0x2CA0F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV17showsDebugOptionsSbvpZ', symObjAddr: 0x4235, symBinAddr: 0x3BD31A, symSize: 0x0 } + - { offset: 0x2CA113, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV27updatesUserLocationSmoothlySbvpZ', symObjAddr: 0x4236, symBinAddr: 0x3BD31B, symSize: 0x0 } + - { offset: 0x2CA12D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV16isSimulationModeSbvpZ', symObjAddr: 0x4237, symBinAddr: 0x3BD31C, symSize: 0x0 } + - { offset: 0x2CA147, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8SettingsV8mapStateAA03MapF0OvpZ', symObjAddr: 0x4238, symBinAddr: 0x3BD31D, symSize: 0x0 } + - { offset: 0x2CA4D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x234920, symSize: 0xF0 } + - { offset: 0x2CA578, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorCMa', symObjAddr: 0x240, symBinAddr: 0x234B60, symSize: 0x14 } + - { offset: 0x2CA5B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x0, symBinAddr: 0x234920, symSize: 0xF0 } + - { offset: 0x2CA61C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xF0, symBinAddr: 0x234A10, symSize: 0xF0 } + - { offset: 0x2CA651, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1E0, symBinAddr: 0x234B00, symSize: 0x30 } + - { offset: 0x2CA66B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17VerticalSeparatorCfD', symObjAddr: 0x210, symBinAddr: 0x234B30, symSize: 0x30 } + - { offset: 0x2CACB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCfETo', symObjAddr: 0x1EE0, symBinAddr: 0x236A60, symSize: 0xC0 } + - { offset: 0x2CACE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCMa', symObjAddr: 0x1FA0, symBinAddr: 0x236B20, symSize: 0x20 } + - { offset: 0x2CAD07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC21dimensionToggleButtonSo8UIButtonCvgAFyXEfU_yycfU_TA', symObjAddr: 0x2160, symBinAddr: 0x236CE0, symSize: 0x20 } + - { offset: 0x2CAD1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC19floorSelectorButtonSo8UIButtonCvgAFyXEfU_yycfU_TA', symObjAddr: 0x2220, symBinAddr: 0x236D00, symSize: 0x20 } + - { offset: 0x2CAD2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC14recenterButtonSo8UIButtonCvgAFyXEfU_yycfU_TA', symObjAddr: 0x2240, symBinAddr: 0x236D20, symSize: 0x20 } + - { offset: 0x2CAD43, size: 0x8, addend: 0x0, symName: '_$sSo22UITapGestureRecognizerCMa', symObjAddr: 0x2280, symBinAddr: 0x236D60, symSize: 0x40 } + - { offset: 0x2CAD57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC17fitToCampusButtonSo8UIButtonCvgAFyXEfU_yycfU_TA', symObjAddr: 0x22C0, symBinAddr: 0x236DA0, symSize: 0x20 } + - { offset: 0x2CB18C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCACycfc', symObjAddr: 0xF80, symBinAddr: 0x235B00, symSize: 0x140 } + - { offset: 0x2CB1DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCACycfcTo', symObjAddr: 0x10C0, symBinAddr: 0x235C40, symSize: 0x20 } + - { offset: 0x2CB23F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x10E0, symBinAddr: 0x235C60, symSize: 0x140 } + - { offset: 0x2CB29F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1220, symBinAddr: 0x235DA0, symSize: 0x30 } + - { offset: 0x2CB2D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC9setupViewyyF', symObjAddr: 0x1250, symBinAddr: 0x235DD0, symSize: 0x600 } + - { offset: 0x2CB3D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC15getOptionButton33_1FAC0ECA688D308BCC62BF45E6F7EADALL9imageNameSo8UIButtonCSS_tF', symObjAddr: 0x1850, symBinAddr: 0x2363D0, symSize: 0x490 } + - { offset: 0x2CB4B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC8setFlooryy7Penguin0G0CSgF', symObjAddr: 0x1CE0, symBinAddr: 0x236860, symSize: 0x1A0 } + - { offset: 0x2CB59D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1E80, symBinAddr: 0x236A00, symSize: 0x30 } + - { offset: 0x2CB5FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsCfD', symObjAddr: 0x1EB0, symBinAddr: 0x236A30, symSize: 0x30 } + - { offset: 0x2CB62D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11MapControlsC13separatorViewSo6UIViewCvgTf4d_n', symObjAddr: 0x1FC0, symBinAddr: 0x236B40, symSize: 0x180 } + - { offset: 0x2CBA46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9stopLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x236E10, symSize: 0x20 } + - { offset: 0x2CBC9B, size: 0x8, addend: 0x0, symName: '_$sSlsE9dropFirsty11SubSequenceQzSiFSS_Tg5Tf4ng_n', symObjAddr: 0x1E90, symBinAddr: 0x238BA0, symSize: 0xB0 } + - { offset: 0x2CC2FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellCfETo', symObjAddr: 0x1CD0, symBinAddr: 0x238AE0, symSize: 0x60 } + - { offset: 0x2CC32B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellCMa', symObjAddr: 0x1D30, symBinAddr: 0x238B40, symSize: 0x20 } + - { offset: 0x2CC33F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14RouteDirectionVSgWOc', symObjAddr: 0x1D90, symBinAddr: 0x238B60, symSize: 0x40 } + - { offset: 0x2CC37F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9configure4withyAA05RouteD0VSg_tFSbAA5PlaceCXEfU_TA', symObjAddr: 0x1F90, symBinAddr: 0x238C70, symSize: 0xF } + - { offset: 0x2CC436, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9stopLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x236E10, symSize: 0x20 } + - { offset: 0x2CC494, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9stopLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x236E30, symSize: 0x30 } + - { offset: 0x2CC4E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC15stopLetterLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x236E60, symSize: 0x20 } + - { offset: 0x2CC536, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC15stopLetterLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x236E80, symSize: 0x30 } + - { offset: 0x2CC585, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x236EB0, symSize: 0x20 } + - { offset: 0x2CC5D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x236ED0, symSize: 0x30 } + - { offset: 0x2CC627, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC11lengthLabelSo7UILabelCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x236F00, symSize: 0x20 } + - { offset: 0x2CC67A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC11lengthLabelSo7UILabelCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x236F20, symSize: 0x30 } + - { offset: 0x2CC6C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC09iconImageF0So07UIImageF0CSgvgTo', symObjAddr: 0x140, symBinAddr: 0x236F50, symSize: 0x20 } + - { offset: 0x2CC721, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC09iconImageF0So07UIImageF0CSgvsTo', symObjAddr: 0x160, symBinAddr: 0x236F70, symSize: 0x30 } + - { offset: 0x2CC770, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC12awakeFromNibyyFTo', symObjAddr: 0x190, symBinAddr: 0x236FA0, symSize: 0x90 } + - { offset: 0x2CC853, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9configure4withyAA05RouteD0VSg_tF', symObjAddr: 0x220, symBinAddr: 0x237030, symSize: 0x630 } + - { offset: 0x2CCB43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC9configure4withyAA05RouteD0VSg_tFSbAA5PlaceCXEfU_', symObjAddr: 0x850, symBinAddr: 0x237660, symSize: 0x140 } + - { offset: 0x2CCB9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC23showArrivalConfirmation33_2BE4A475C9A281DA0308C98892968072LL3foryAA5PlaceCSg_tF', symObjAddr: 0x990, symBinAddr: 0x2377A0, symSize: 0x620 } + - { offset: 0x2CD0E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC23showArrivalConfirmation33_2BE4A475C9A281DA0308C98892968072LL3foryAA5PlaceCSg_tFySo7UIImageCSgcfU0_', symObjAddr: 0xFB0, symBinAddr: 0x237DC0, symSize: 0x80 } + - { offset: 0x2CD2A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC04showD4Info33_2BE4A475C9A281DA0308C98892968072LLyyAA05RouteD0VSgF', symObjAddr: 0x1030, symBinAddr: 0x237E40, symSize: 0xAE0 } + - { offset: 0x2CD733, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x1B10, symBinAddr: 0x238920, symSize: 0xA0 } + - { offset: 0x2CD768, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1BB0, symBinAddr: 0x2389C0, symSize: 0xC0 } + - { offset: 0x2CD79B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1C70, symBinAddr: 0x238A80, symSize: 0x30 } + - { offset: 0x2CD7AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27DirectionCollectionViewCellCfD', symObjAddr: 0x1CA0, symBinAddr: 0x238AB0, symSize: 0x30 } + - { offset: 0x2CDB64, size: 0x8, addend: 0x0, symName: '_$sSlsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lFSS17UnicodeScalarViewV_s0D0O0E0Vs5NeverOTg5076$s8PenNavUI9XMLParserV6padHex33_F79CF21C173C50BA5CDF33ADFD764F11LLySSSgSSFs7d2O6E8VAJXEfU_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x238C80, symSize: 0x430 } + - { offset: 0x2CDD07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV9parseFillyAA3DOMO0F0OSSKF', symObjAddr: 0x430, symBinAddr: 0x2390B0, symSize: 0x420 } + - { offset: 0x2CE061, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV16parseURLSelector33_F79CF21C173C50BA5CDF33ADFD764F11LL4data10Foundation3URLVSgSS_tKF', symObjAddr: 0x890, symBinAddr: 0x2394D0, symSize: 0x690 } + - { offset: 0x2CE449, size: 0x8, addend: 0x0, symName: '_$sSS17UnicodeScalarViewV8distance4from2toSiSS5IndexV_AGtF', symObjAddr: 0xF20, symBinAddr: 0x239B60, symSize: 0x2B0 } + - { offset: 0x2CE46E, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV28validateInclusiveScalarIndexySS0F0VAEF', symObjAddr: 0x11D0, symBinAddr: 0x239E10, symSize: 0xB0 } + - { offset: 0x2CE49B, size: 0x8, addend: 0x0, symName: '_$ss11_StringGutsV31validateInclusiveSubscalarIndexySS0F0VAEF', symObjAddr: 0x1280, symBinAddr: 0x239EC0, symSize: 0x80 } + - { offset: 0x2CE4C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseColorRGBf33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSS_tKFTf4nd_n', symObjAddr: 0x1300, symBinAddr: 0x239F40, symSize: 0x800 } + - { offset: 0x2CEB0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseColorRGBi33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSS_tKFTf4nd_n', symObjAddr: 0x1B00, symBinAddr: 0x23A740, symSize: 0x920 } + - { offset: 0x2CF202, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV13parseColorRGB33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSgSS_tKFTf4nd_n', symObjAddr: 0x2420, symBinAddr: 0x23B060, symSize: 0x3C0 } + - { offset: 0x2CF466, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV6padHex33_F79CF21C173C50BA5CDF33ADFD764F11LLySSSgSSFTf4nd_n', symObjAddr: 0x27E0, symBinAddr: 0x23B420, symSize: 0x130 } + - { offset: 0x2CF7B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV13parseColorHex33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSgSS_tKFTf4nd_n', symObjAddr: 0x2910, symBinAddr: 0x23B550, symSize: 0x8D0 } + - { offset: 0x2CFD57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parseColorP333_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSgSS_tKFTf4nd_n', symObjAddr: 0x31E0, symBinAddr: 0x23BE20, symSize: 0x9D0 } + - { offset: 0x2D0499, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseColorNone33_F79CF21C173C50BA5CDF33ADFD764F11LL4dataAA3DOMO0F0OSgSS_tFTf4nd_n', symObjAddr: 0x3BE0, symBinAddr: 0x23C7F0, symSize: 0x130 } + - { offset: 0x2D056A, size: 0x8, addend: 0x0, symName: '_$sSlsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lFSS17UnicodeScalarViewV_s0D0O0E0Vs5NeverOTg5076$s8PenNavUI9XMLParserV6padHex33_F79CF21C173C50BA5CDF33ADFD764F11LLySSSgSSFs7d2O6E8VAJXEfU_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x238C80, symSize: 0x430 } + - { offset: 0x2D0E4C, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE04hashB0Sivg8PenNavUI11RouteOptionV0gH3KeyO_Tg5', symObjAddr: 0x0, symBinAddr: 0x23C920, symSize: 0xF0 } + - { offset: 0x2D0EA3, size: 0x8, addend: 0x0, symName: '_$sSYsSHRzSH8RawValueSYRpzrlE04hashB0Sivg8PenNavUI11RouteOptionV0gH3KeyO_Tg5', symObjAddr: 0x0, symBinAddr: 0x23C920, symSize: 0xF0 } + - { offset: 0x2D0F79, size: 0x8, addend: 0x0, symName: '_$ss30_dictionaryDownCastConditionalySDyq0_q1_GSgSDyxq_GSHRzSHR0_r2_lFSS_ypSSSbTg5', symObjAddr: 0xF0, symBinAddr: 0x23CA10, symSize: 0x2C0 } + - { offset: 0x2D10B8, size: 0x8, addend: 0x0, symName: '_$ss30_dictionaryDownCastConditionalySDyq0_q1_GSgSDyxq_GSHRzSHR0_r2_lFSS_ypS2STg5', symObjAddr: 0x3B0, symBinAddr: 0x23CCD0, symSize: 0x2D0 } + - { offset: 0x2D11EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x680, symBinAddr: 0x23CFA0, symSize: 0x10 } + - { offset: 0x2D1207, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSHAASH9hashValueSivgTW', symObjAddr: 0x690, symBinAddr: 0x23CFB0, symSize: 0x10 } + - { offset: 0x2D1223, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x6A0, symBinAddr: 0x23CFC0, symSize: 0xD0 } + - { offset: 0x2D128A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x770, symBinAddr: 0x23D090, symSize: 0x10 } + - { offset: 0x2D17A8, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV5merge_8isUnique16uniquingKeysWithyqd__n_Sbq_q__q_tKXEtKSTRd__x_q_t7ElementRtd__lFSS_SbSaySS_SbtGTg5012$sSD20uniquegh33ValuesSDyxq_Gqd__n_tcSTRd__x_q_t7i31Rtd__lufcq_q__q_tKXEfU_SS_SbSayU8_SbtGTG5Tf1nncn_n', symObjAddr: 0x8D0, symBinAddr: 0x23D1F0, symSize: 0x3D0 } + - { offset: 0x2D1AB4, size: 0x8, addend: 0x0, symName: '_$sSS3key_yp5valuetWOh', symObjAddr: 0x1260, symBinAddr: 0x23DB10, symSize: 0x30 } + - { offset: 0x2D1B20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOMa', symObjAddr: 0x1A40, symBinAddr: 0x23E150, symSize: 0x10 } + - { offset: 0x2D1B34, size: 0x8, addend: 0x0, symName: ___swift_memcpy2_1, symObjAddr: 0x1A50, symBinAddr: 0x23E160, symSize: 0x10 } + - { offset: 0x2D1B48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionVwet', symObjAddr: 0x1A60, symBinAddr: 0x23E170, symSize: 0x90 } + - { offset: 0x2D1B5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionVwst', symObjAddr: 0x1AF0, symBinAddr: 0x23E200, symSize: 0xE0 } + - { offset: 0x2D1B70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionVMa', symObjAddr: 0x1BD0, symBinAddr: 0x23E2E0, symSize: 0x10 } + - { offset: 0x2D1B84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOs12CaseIterableAA8AllCasessAFP_SlWT', symObjAddr: 0x1BE0, symBinAddr: 0x23E2F0, symSize: 0x10 } + - { offset: 0x2D1B98, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI11RouteOptionV0dE3KeyOGSayxGSlsWl', symObjAddr: 0x1BF0, symBinAddr: 0x23E300, symSize: 0x40 } + - { offset: 0x2D1BAC, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI11RouteOptionV0dE3KeyOGMa', symObjAddr: 0x1C30, symBinAddr: 0x23E340, symSize: 0x30 } + - { offset: 0x2D1BC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSHAASQWb', symObjAddr: 0x1C60, symBinAddr: 0x23E370, symSize: 0x10 } + - { offset: 0x2D1BD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOAESQAAWl', symObjAddr: 0x1C70, symBinAddr: 0x23E380, symSize: 0x30 } + - { offset: 0x2D1C27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x780, symBinAddr: 0x23D0A0, symSize: 0x30 } + - { offset: 0x2D1C50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x7B0, symBinAddr: 0x23D0D0, symSize: 0xC0 } + - { offset: 0x2D1C8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyOs12CaseIterableAAsAFP8allCases03AllJ0QzvgZTW', symObjAddr: 0x870, symBinAddr: 0x23D190, symSize: 0x30 } + - { offset: 0x2D1CF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x8A0, symBinAddr: 0x23D1C0, symSize: 0x30 } + - { offset: 0x2D1D5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV12routeOptionsSayACGvgZTf4d_n', symObjAddr: 0xCA0, symBinAddr: 0x23D5C0, symSize: 0x2F0 } + - { offset: 0x2D1F3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV22routeOptionsDictionarySDySSSbGvgZTf4d_n', symObjAddr: 0xF90, symBinAddr: 0x23D8B0, symSize: 0x260 } + - { offset: 0x2D2168, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV04saveD7OptionsyySayACGFZTf4nd_n', symObjAddr: 0x1290, symBinAddr: 0x23DB40, symSize: 0x330 } + - { offset: 0x2D23A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV07enabledD7OptionsSayACGvgZTf4d_n', symObjAddr: 0x15C0, symBinAddr: 0x23DE70, symSize: 0x2E0 } + - { offset: 0x2D2613, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11RouteOptionV0dE3KeyO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x1CA0, symBinAddr: 0x23E3B0, symSize: 0x53 } + - { offset: 0x2D29D3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5color12defaultColor4icon0G4IconACSo7UIColorCSg_AISo7UIImageCSgAMtcfc', symObjAddr: 0x0, symBinAddr: 0x23E410, symSize: 0x2D0 } + - { offset: 0x2D2CD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewCfETo', symObjAddr: 0x1200, symBinAddr: 0x23F610, symSize: 0x40 } + - { offset: 0x2D2D03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewCMa', symObjAddr: 0x1240, symBinAddr: 0x23F650, symSize: 0x20 } + - { offset: 0x2D2E44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5color12defaultColor4icon0G4IconACSo7UIColorCSg_AISo7UIImageCSgAMtcfc', symObjAddr: 0x0, symBinAddr: 0x23E410, symSize: 0x2D0 } + - { offset: 0x2D2F33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC011adjustImageE5FrameyyF', symObjAddr: 0x2D0, symBinAddr: 0x23E6E0, symSize: 0x1A0 } + - { offset: 0x2D307F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x470, symBinAddr: 0x23E880, symSize: 0x150 } + - { offset: 0x2D30ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x5C0, symBinAddr: 0x23E9D0, symSize: 0x30 } + - { offset: 0x2D3115, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC14layoutSubviewsyyFTo', symObjAddr: 0x5F0, symBinAddr: 0x23EA00, symSize: 0x60 } + - { offset: 0x2D316F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC4drawyySo6CGRectVF', symObjAddr: 0x650, symBinAddr: 0x23EA60, symSize: 0x9C0 } + - { offset: 0x2D34AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC4drawyySo6CGRectVFTo', symObjAddr: 0x1010, symBinAddr: 0x23F420, symSize: 0x70 } + - { offset: 0x2D34C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC11adjustFrameyyF', symObjAddr: 0x1080, symBinAddr: 0x23F490, symSize: 0x110 } + - { offset: 0x2D352F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC18defaultCircleYAxis12CoreGraphics7CGFloatVyF', symObjAddr: 0x1190, symBinAddr: 0x23F5A0, symSize: 0x10 } + - { offset: 0x2D3573, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x11A0, symBinAddr: 0x23F5B0, symSize: 0x30 } + - { offset: 0x2D35D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewCfD', symObjAddr: 0x11D0, symBinAddr: 0x23F5E0, symSize: 0x30 } + - { offset: 0x2D3692, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC12savedParkingACSgvgZTf4d_n', symObjAddr: 0x1260, symBinAddr: 0x23F670, symSize: 0x3D0 } + - { offset: 0x2D37A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10SymbolViewC8locationACvgZTf4d_n', symObjAddr: 0x1630, symBinAddr: 0x23FA40, symSize: 0x350 } + - { offset: 0x2D3C3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16MainPanelSectionO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x23FD90, symSize: 0x13 } + - { offset: 0x2D3C87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16MainPanelSectionO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x23FD90, symSize: 0x13 } + - { offset: 0x2D40DE, size: 0x8, addend: 0x0, symName: '_$sSo13UILayoutGuideC8PenNavUI06LayoutB8ProviderA2cDP11widthAnchorSo17NSLayoutDimensionCvgTW', symObjAddr: 0xA0, symBinAddr: 0x23FE50, symSize: 0x20 } + - { offset: 0x2D410E, size: 0x8, addend: 0x0, symName: '_$sSo13UILayoutGuideC8PenNavUI06LayoutB8ProviderA2cDP12heightAnchorSo17NSLayoutDimensionCvgTW', symObjAddr: 0xC0, symBinAddr: 0x23FE70, symSize: 0x20 } + - { offset: 0x2D41F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF', symObjAddr: 0x310, symBinAddr: 0x2400C0, symSize: 0x180 } + - { offset: 0x2D43A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC17layoutConstraints33_B3F6FCFEFDF39B31B996C92E79088F06LL_3forSaySo18NSLayoutConstraintCGAA0F13GuideProvider_p_So0s5YAxisG0CtF', symObjAddr: 0x490, symBinAddr: 0x240240, symSize: 0x310 } + - { offset: 0x2D4539, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC17layoutConstraints33_B3F6FCFEFDF39B31B996C92E79088F06LL_3forSaySo18NSLayoutConstraintCGAA0F13GuideProvider_p_So0s5XAxisG0CtF', symObjAddr: 0x7A0, symBinAddr: 0x240550, symSize: 0x310 } + - { offset: 0x2D4759, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF', symObjAddr: 0xD20, symBinAddr: 0x240AD0, symSize: 0x2F0 } + - { offset: 0x2D4A09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCfETo', symObjAddr: 0x1360, symBinAddr: 0x241110, symSize: 0x20 } + - { offset: 0x2D4AEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC17layoutConstraints_3forSaySo18NSLayoutConstraintCGAA0dE10ControllerC_AA0dE8PositionOtF', symObjAddr: 0x1380, symBinAddr: 0x241130, symSize: 0x3D0 } + - { offset: 0x2D4E41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorCMa', symObjAddr: 0x1860, symBinAddr: 0x2415B0, symSize: 0x20 } + - { offset: 0x2D4E55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorCMa', symObjAddr: 0x18C0, symBinAddr: 0x241610, symSize: 0x20 } + - { offset: 0x2D4E69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCMa', symObjAddr: 0x1920, symBinAddr: 0x241650, symSize: 0x20 } + - { offset: 0x2D4E7D, size: 0x8, addend: 0x0, symName: '_$sSo18NSLayoutConstraintCMa', symObjAddr: 0x1980, symBinAddr: 0x2416A0, symSize: 0x40 } + - { offset: 0x2D4EAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC14referenceGuideAA0def9ReferenceI0OvgTo', symObjAddr: 0x220, symBinAddr: 0x23FFD0, symSize: 0x20 } + - { offset: 0x2D4EDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC14referenceGuideAA0def9ReferenceI0Ovg', symObjAddr: 0x240, symBinAddr: 0x23FFF0, symSize: 0x20 } + - { offset: 0x2D4F0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorC13referenceEdgeAA0de9ReferenceI0OvgTo', symObjAddr: 0x260, symBinAddr: 0x240010, symSize: 0x20 } + - { offset: 0x2D4F48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorCACycfC', symObjAddr: 0x280, symBinAddr: 0x240030, symSize: 0x20 } + - { offset: 0x2D4F62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorCACycfc', symObjAddr: 0x2A0, symBinAddr: 0x240050, symSize: 0x30 } + - { offset: 0x2D4FBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25FloatingPanelLayoutAnchorCACycfcTo', symObjAddr: 0x2D0, symBinAddr: 0x240080, symSize: 0x30 } + - { offset: 0x2D50EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0OvgTo', symObjAddr: 0xC80, symBinAddr: 0x240A30, symSize: 0x20 } + - { offset: 0x2D511D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovg', symObjAddr: 0xCA0, symBinAddr: 0x240A50, symSize: 0x20 } + - { offset: 0x2D513A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorCACycfc', symObjAddr: 0xCC0, symBinAddr: 0x240A70, symSize: 0x30 } + - { offset: 0x2D5193, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI34FloatingPanelIntrinsicLayoutAnchorCACycfcTo', symObjAddr: 0xCF0, symBinAddr: 0x240AA0, symSize: 0x30 } + - { offset: 0x2D5215, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0OvgTo', symObjAddr: 0x1250, symBinAddr: 0x241000, symSize: 0x20 } + - { offset: 0x2D5248, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC14referenceGuideAA0deg9ReferenceJ0Ovg', symObjAddr: 0x1270, symBinAddr: 0x241020, symSize: 0x20 } + - { offset: 0x2D5279, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC20contentBoundingGuideAA0deg7ContentjK0OvgTo', symObjAddr: 0x1290, symBinAddr: 0x241040, symSize: 0x20 } + - { offset: 0x2D52AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorC20contentBoundingGuideAA0deg7ContentjK0Ovg', symObjAddr: 0x12B0, symBinAddr: 0x241060, symSize: 0x20 } + - { offset: 0x2D52C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCACycfc', symObjAddr: 0x12D0, symBinAddr: 0x241080, symSize: 0x30 } + - { offset: 0x2D5322, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI33FloatingPanelAdaptiveLayoutAnchorCACycfcTo', symObjAddr: 0x1300, symBinAddr: 0x2410B0, symSize: 0x30 } + - { offset: 0x2D5731, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC15reportIssueViewAA06HapticJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x241710, symSize: 0x20 } + - { offset: 0x2D5899, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellCfETo', symObjAddr: 0x330, symBinAddr: 0x241A40, symSize: 0x20 } + - { offset: 0x2D58C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellCMa', symObjAddr: 0x350, symBinAddr: 0x241A60, symSize: 0x20 } + - { offset: 0x2D5950, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC15reportIssueViewAA06HapticJ0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x241710, symSize: 0x20 } + - { offset: 0x2D59B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC15reportIssueViewAA06HapticJ0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x241730, symSize: 0x20 } + - { offset: 0x2D5A4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC12awakeFromNibyyFTo', symObjAddr: 0x40, symBinAddr: 0x241750, symSize: 0xB0 } + - { offset: 0x2D5AEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC16setupReportIssue33_E2B55608484A2C4046C45CB8D998CE6DLLyyFyycfU_', symObjAddr: 0xF0, symBinAddr: 0x241800, symSize: 0xD0 } + - { offset: 0x2D5B53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0x1C0, symBinAddr: 0x2418D0, symSize: 0xB0 } + - { offset: 0x2D5BD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x270, symBinAddr: 0x241980, symSize: 0x90 } + - { offset: 0x2D5C08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22VenueBottomActionsCellCfD', symObjAddr: 0x300, symBinAddr: 0x241A10, symSize: 0x30 } + - { offset: 0x2D5F92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x2E0, symBinAddr: 0x241D60, symSize: 0x20 } + - { offset: 0x2D648D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellCfETo', symObjAddr: 0xD70, symBinAddr: 0x2427F0, symSize: 0x90 } + - { offset: 0x2D64BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellCMa', symObjAddr: 0xE00, symBinAddr: 0x242880, symSize: 0x20 } + - { offset: 0x2D665D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12seeAllButtonSo8UIButtonCSgvgTo', symObjAddr: 0x2E0, symBinAddr: 0x241D60, symSize: 0x20 } + - { offset: 0x2D66BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12seeAllButtonSo8UIButtonCSgvsTo', symObjAddr: 0x300, symBinAddr: 0x241D80, symSize: 0x20 } + - { offset: 0x2D6710, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionViewSo012UICollectionG0CSgvgTo', symObjAddr: 0x320, symBinAddr: 0x241DA0, symSize: 0x20 } + - { offset: 0x2D676A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionViewSo012UICollectionG0CSgvsTo', symObjAddr: 0x340, symBinAddr: 0x241DC0, symSize: 0x20 } + - { offset: 0x2D67BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC10scrollViewSo08UIScrollG0CSgvgTo', symObjAddr: 0x360, symBinAddr: 0x241DE0, symSize: 0x20 } + - { offset: 0x2D6817, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC10scrollViewSo08UIScrollG0CSgvsTo', symObjAddr: 0x380, symBinAddr: 0x241E00, symSize: 0x20 } + - { offset: 0x2D686A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC15collectionWidthSo18NSLayoutConstraintCSgvgTo', symObjAddr: 0x3A0, symBinAddr: 0x241E20, symSize: 0x20 } + - { offset: 0x2D68C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC15collectionWidthSo18NSLayoutConstraintCSgvsTo', symObjAddr: 0x3C0, symBinAddr: 0x241E40, symSize: 0x20 } + - { offset: 0x2D6999, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC19collectionViewWidth12CoreGraphics7CGFloatVvg', symObjAddr: 0x3E0, symBinAddr: 0x241E60, symSize: 0x160 } + - { offset: 0x2D6D2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12awakeFromNibyyFTo', symObjAddr: 0x540, symBinAddr: 0x241FC0, symSize: 0xA0 } + - { offset: 0x2D6DA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC06updateD010categoriesySay7Penguin11POICategoryVG_tF', symObjAddr: 0x5E0, symBinAddr: 0x242060, symSize: 0x130 } + - { offset: 0x2D6EB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC12seeAllActionyySo8UIButtonCFTo', symObjAddr: 0x710, symBinAddr: 0x242190, symSize: 0x60 } + - { offset: 0x2D6F02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionG0C_SitFTo', symObjAddr: 0x770, symBinAddr: 0x2421F0, symSize: 0x50 } + - { offset: 0x2D6FAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_13cellForItemAtSo012UICollectiongE0CSo0lG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x7C0, symBinAddr: 0x242240, symSize: 0x150 } + - { offset: 0x2D705E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_6layout13sizeForItemAtSo6CGSizeVSo012UICollectionG0C_So0nG6LayoutC10Foundation9IndexPathVtFTo', symObjAddr: 0x910, symBinAddr: 0x242390, symSize: 0x160 } + - { offset: 0x2D7123, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_15didSelectItemAtySo012UICollectionG0C_10Foundation9IndexPathVtFTo', symObjAddr: 0xA70, symBinAddr: 0x2424F0, symSize: 0xA0 } + - { offset: 0x2D714D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0xB10, symBinAddr: 0x242590, symSize: 0xF0 } + - { offset: 0x2D718E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0xC00, symBinAddr: 0x242680, symSize: 0x30 } + - { offset: 0x2D71A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xC30, symBinAddr: 0x2426B0, symSize: 0xE0 } + - { offset: 0x2D71D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xD10, symBinAddr: 0x242790, symSize: 0x30 } + - { offset: 0x2D71E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellCfD', symObjAddr: 0xD40, symBinAddr: 0x2427C0, symSize: 0x30 } + - { offset: 0x2D720C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_22numberOfItemsInSectionSiSo012UICollectionG0C_SitFTf4ddn_n', symObjAddr: 0xE20, symBinAddr: 0x2428A0, symSize: 0x70 } + - { offset: 0x2D73C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CategoriesCellC14collectionView_15didSelectItemAtySo012UICollectionG0C_10Foundation9IndexPathVtFTf4dnn_n', symObjAddr: 0xE90, symBinAddr: 0x242910, symSize: 0xE0 } + - { offset: 0x2D77A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2429F0, symSize: 0x20 } + - { offset: 0x2D7912, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewCfETo', symObjAddr: 0x2F0, symBinAddr: 0x242CE0, symSize: 0x20 } + - { offset: 0x2D7941, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewCMa', symObjAddr: 0x310, symBinAddr: 0x242D00, symSize: 0x20 } + - { offset: 0x2D79C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC07contentE0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2429F0, symSize: 0x20 } + - { offset: 0x2D7A25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC07contentE0So6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x242A10, symSize: 0x30 } + - { offset: 0x2D7A85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x50, symBinAddr: 0x242A40, symSize: 0x90 } + - { offset: 0x2D7B26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xE0, symBinAddr: 0x242AD0, symSize: 0x90 } + - { offset: 0x2D7B86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewC10commonInit33_E415634ACC503914C6E8F859F84EEA83LLyyF', symObjAddr: 0x170, symBinAddr: 0x242B60, symSize: 0x150 } + - { offset: 0x2D7C4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11WarningViewCfD', symObjAddr: 0x2C0, symBinAddr: 0x242CB0, symSize: 0x30 } + - { offset: 0x2D82D6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewCfETo', symObjAddr: 0xF30, symBinAddr: 0x243C50, symSize: 0x50 } + - { offset: 0x2D8305, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewCMa', symObjAddr: 0xF80, symBinAddr: 0x243CA0, symSize: 0x20 } + - { offset: 0x2D8319, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC16hideUnmuteButtonyyFyycfU_TA', symObjAddr: 0xFC0, symBinAddr: 0x243CE0, symSize: 0x20 } + - { offset: 0x2D832D, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xFE0, symBinAddr: 0x243D00, symSize: 0x20 } + - { offset: 0x2D8341, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1000, symBinAddr: 0x243D20, symSize: 0x10 } + - { offset: 0x2D8355, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC16hideUnmuteButtonyyFyycfU0_TA', symObjAddr: 0x1010, symBinAddr: 0x243D30, symSize: 0x20 } + - { offset: 0x2D8369, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC14hideMuteButtonyyFyycfU_TA', symObjAddr: 0x1030, symBinAddr: 0x243D50, symSize: 0x20 } + - { offset: 0x2D837D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC14hideMuteButtonyyFyycfU0_TA', symObjAddr: 0x1050, symBinAddr: 0x243D70, symSize: 0x20 } + - { offset: 0x2D8391, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC16muteButtonTappedyyFyycfU_TA', symObjAddr: 0x1070, symBinAddr: 0x243D90, symSize: 0x10 } + - { offset: 0x2D84A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC07contentF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x242D20, symSize: 0x20 } + - { offset: 0x2D8505, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC07contentF0So6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x242D40, symSize: 0x30 } + - { offset: 0x2D8554, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC05stackF0So07UIStackF0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0x242D70, symSize: 0x20 } + - { offset: 0x2D85AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC05stackF0So07UIStackF0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0x242D90, symSize: 0x30 } + - { offset: 0x2D85FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC10muteButtonSo8UIButtonCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x242DC0, symSize: 0x20 } + - { offset: 0x2D8653, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC10muteButtonSo8UIButtonCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x242DE0, symSize: 0x30 } + - { offset: 0x2D86A2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC12unmuteButtonSo8UIButtonCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x242E10, symSize: 0x20 } + - { offset: 0x2D86F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC12unmuteButtonSo8UIButtonCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x242E30, symSize: 0x30 } + - { offset: 0x2D8755, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x140, symBinAddr: 0x242E60, symSize: 0xB0 } + - { offset: 0x2D87D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1F0, symBinAddr: 0x242F10, symSize: 0xB0 } + - { offset: 0x2D8806, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2A0, symBinAddr: 0x242FC0, symSize: 0x30 } + - { offset: 0x2D88E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC10commonInit33_67EF21852787D1A38B8194476BDF5B6FLLyyF', symObjAddr: 0x2D0, symBinAddr: 0x242FF0, symSize: 0x500 } + - { offset: 0x2D8AE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC16muteButtonTappedyyFTo', symObjAddr: 0x800, symBinAddr: 0x243520, symSize: 0x30 } + - { offset: 0x2D8AF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewC17unmuteButonTappedyyFTo', symObjAddr: 0xB90, symBinAddr: 0x2438B0, symSize: 0x30 } + - { offset: 0x2D8B09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17SpeechControlViewCfD', symObjAddr: 0xF00, symBinAddr: 0x243C20, symSize: 0x30 } + - { offset: 0x2D8ECA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwcp', symObjAddr: 0x60, symBinAddr: 0x243E50, symSize: 0x60 } + - { offset: 0x2D8EDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwca', symObjAddr: 0xC0, symBinAddr: 0x243EB0, symSize: 0x80 } + - { offset: 0x2D8EF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwta', symObjAddr: 0x160, symBinAddr: 0x243F30, symSize: 0x60 } + - { offset: 0x2D8F06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwet', symObjAddr: 0x1C0, symBinAddr: 0x243F90, symSize: 0x40 } + - { offset: 0x2D8F1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVwst', symObjAddr: 0x200, symBinAddr: 0x243FD0, symSize: 0x50 } + - { offset: 0x2D8F2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVMa', symObjAddr: 0x250, symBinAddr: 0x244020, symSize: 0x10 } + - { offset: 0x2D9423, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin5FloorC_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5F17CGvgSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x9E0, symBinAddr: 0x2445A0, symSize: 0x100 } + - { offset: 0x2D9686, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin5FloorC_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5F17CGvgSbAG_AGtXEfU_Tf1nnncn_n', symObjAddr: 0xAE0, symBinAddr: 0x2446A0, symSize: 0x570 } + - { offset: 0x2D9BCE, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry7Penguin5FloorCG_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5J17CGvgSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x1050, symBinAddr: 0x244C10, symSize: 0x100 } + - { offset: 0x2D9D5F, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin5FloorC_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5G17CGvgSbAG_AGtXEfU_Tf1nncn_n', symObjAddr: 0x1150, symBinAddr: 0x244D10, symSize: 0x2B0 } + - { offset: 0x2DA101, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin5FloorC_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5H17CGvgSbAG_AGtXEfU_Tf1nnnnc_n', symObjAddr: 0x1400, symBinAddr: 0x244FC0, symSize: 0x310 } + - { offset: 0x2DA38D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs0G3KeyAAWl', symObjAddr: 0x2300, symBinAddr: 0x245E50, symSize: 0x30 } + - { offset: 0x2DA3A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseVMa', symObjAddr: 0x2460, symBinAddr: 0x245E80, symSize: 0x10 } + - { offset: 0x2DA3B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOMa', symObjAddr: 0x2610, symBinAddr: 0x245E90, symSize: 0x10 } + - { offset: 0x2DA3C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOSHAASQWb', symObjAddr: 0x2620, symBinAddr: 0x245EA0, symSize: 0x10 } + - { offset: 0x2DA3DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFSQAAWl', symObjAddr: 0x2630, symBinAddr: 0x245EB0, symSize: 0x30 } + - { offset: 0x2DA3F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2660, symBinAddr: 0x245EE0, symSize: 0x10 } + - { offset: 0x2DA405, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x2670, symBinAddr: 0x245EF0, symSize: 0x30 } + - { offset: 0x2DA419, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x26A0, symBinAddr: 0x245F20, symSize: 0x10 } + - { offset: 0x2DA42D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x26B0, symBinAddr: 0x245F30, symSize: 0x30 } + - { offset: 0x2DA441, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs0H3KeyAAWl', symObjAddr: 0x26E0, symBinAddr: 0x245F60, symSize: 0x30 } + - { offset: 0x2DA455, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVACSeAAWl', symObjAddr: 0x2740, symBinAddr: 0x245F90, symSize: 0x30 } + - { offset: 0x2DA469, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVACSEAAWl', symObjAddr: 0x27E0, symBinAddr: 0x246030, symSize: 0x30 } + - { offset: 0x2DA47D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOMa', symObjAddr: 0x2940, symBinAddr: 0x246060, symSize: 0x10 } + - { offset: 0x2DA491, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOSHAASQWb', symObjAddr: 0x2950, symBinAddr: 0x246070, symSize: 0x10 } + - { offset: 0x2DA4A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFSQAAWl', symObjAddr: 0x2960, symBinAddr: 0x246080, symSize: 0x30 } + - { offset: 0x2DA4B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x2990, symBinAddr: 0x2460B0, symSize: 0x10 } + - { offset: 0x2DA4CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x29A0, symBinAddr: 0x2460C0, symSize: 0x30 } + - { offset: 0x2DA4E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x29D0, symBinAddr: 0x2460F0, symSize: 0x10 } + - { offset: 0x2DA4F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x29E0, symBinAddr: 0x246100, symSize: 0x2D } + - { offset: 0x2DA523, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin5FloorCG_Tg5046$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5G17CGvgSbAG_AGtXEfU_Tf1cn_n', symObjAddr: 0x260, symBinAddr: 0x244030, symSize: 0x60 } + - { offset: 0x2DA5EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x4F0, symBinAddr: 0x244180, symSize: 0x20 } + - { offset: 0x2DA60A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x510, symBinAddr: 0x2441A0, symSize: 0x20 } + - { offset: 0x2DA63B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x880, symBinAddr: 0x244440, symSize: 0x20 } + - { offset: 0x2DA657, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x8A0, symBinAddr: 0x244460, symSize: 0x20 } + - { offset: 0x2DA79C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV6encode2toys7Encoder_p_tKF', symObjAddr: 0x2C0, symBinAddr: 0x244090, symSize: 0xF0 } + - { offset: 0x2DA7F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x530, symBinAddr: 0x2441C0, symSize: 0x20 } + - { offset: 0x2DA81A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x550, symBinAddr: 0x2441E0, symSize: 0x10 } + - { offset: 0x2DA82E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x560, symBinAddr: 0x2441F0, symSize: 0x1A0 } + - { offset: 0x2DA882, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0G3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x7B0, symBinAddr: 0x244390, symSize: 0x90 } + - { offset: 0x2DA8BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLOs0G3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x840, symBinAddr: 0x244420, symSize: 0x20 } + - { offset: 0x2DA8FB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x8C0, symBinAddr: 0x244480, symSize: 0x40 } + - { offset: 0x2DA924, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x900, symBinAddr: 0x2444C0, symSize: 0x10 } + - { offset: 0x2DAA2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV6floorsSay7Penguin5FloorCGvgTf4x_n', symObjAddr: 0x1710, symBinAddr: 0x2452D0, symSize: 0x260 } + - { offset: 0x2DACC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV13localizedNameSSvgTf4x_n', symObjAddr: 0x1970, symBinAddr: 0x245530, symSize: 0x490 } + - { offset: 0x2DB1F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GetVenueCardsResponseV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x1E00, symBinAddr: 0x2459C0, symSize: 0x120 } + - { offset: 0x2DB218, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV10CodingKeys33_EC92493820161303248694C228F8EF08LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x1F20, symBinAddr: 0x245AE0, symSize: 0x150 } + - { offset: 0x2DB2B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueCardDataV4fromACs7Decoder_p_tKcfCTf4nd_n', symObjAddr: 0x2070, symBinAddr: 0x245C30, symSize: 0x220 } + - { offset: 0x2DB688, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC15_sharedInstance33_6103213578448421EE2DA7F45067FF4BLLACSgvpZ', symObjAddr: 0x2C80, symBinAddr: 0x3A6340, symSize: 0x0 } + - { offset: 0x2DBADB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerCMa', symObjAddr: 0x18B0, symBinAddr: 0x2479A0, symSize: 0x20 } + - { offset: 0x2DBAFA, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciMSi_8PenNavUI5ColorVTg5', symObjAddr: 0x18D0, symBinAddr: 0x2479C0, symSize: 0x90 } + - { offset: 0x2DBB3B, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantVyq_SgxciMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x1970, symBinAddr: 0x247A60, symSize: 0x90 } + - { offset: 0x2DBBAE, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciMSi_8PenNavUI5ColorVTg5', symObjAddr: 0x1A30, symBinAddr: 0x247B20, symSize: 0x140 } + - { offset: 0x2DBC46, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciMSi_8PenNavUI5ColorVTg5.resume.0', symObjAddr: 0x1B70, symBinAddr: 0x247C60, symSize: 0xF0 } + - { offset: 0x2DBCD2, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x1C60, symBinAddr: 0x247D50, symSize: 0x250 } + - { offset: 0x2DBDA5, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV_8isUniqueq_Sgx_SbtciMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5.resume.0', symObjAddr: 0x1EB0, symBinAddr: 0x247FA0, symSize: 0x1F0 } + - { offset: 0x2DBE21, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvMSi_8PenNavUI5ColorVTg5', symObjAddr: 0x20A0, symBinAddr: 0x248190, symSize: 0x20 } + - { offset: 0x2DBE44, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvMSi_8PenNavUI5ColorVTg5.resume.0', symObjAddr: 0x20C0, symBinAddr: 0x2481B0, symSize: 0x10 } + - { offset: 0x2DBE71, size: 0x8, addend: 0x0, symName: '_$sSD8_VariantV8asNatives01_C10DictionaryVyxq_GvMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x20D0, symBinAddr: 0x2481C0, symSize: 0x20 } + - { offset: 0x2DBF70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVWOb', symObjAddr: 0x26A0, symBinAddr: 0x2486E0, symSize: 0x30 } + - { offset: 0x2DBF84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC13updateObjects2on5using8mapStatey7Penguin5FloorCSg_0M10INRenderer10PIRendererCSgAA03MapL0OtFySayAA0dE0VGSgcfU_TA', symObjAddr: 0x27C0, symBinAddr: 0x248770, symSize: 0x20 } + - { offset: 0x2DBF98, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC14scheduleUpdate5after2on5using8mapStateySd_7Penguin5FloorC0N10INRenderer10PIRendererCSgAA03MapM0OtFySo7NSTimerCYbcfU_TA', symObjAddr: 0x2B00, symBinAddr: 0x248A80, symSize: 0x20 } + - { offset: 0x2DBFAC, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2B20, symBinAddr: 0x248AA0, symSize: 0x20 } + - { offset: 0x2DBFC0, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2B40, symBinAddr: 0x248AC0, symSize: 0x10 } + - { offset: 0x2DBFD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ColorVSgWOy', symObjAddr: 0x2BA0, symBinAddr: 0x248B20, symSize: 0x30 } + - { offset: 0x2DBFE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ColorVSgWOe', symObjAddr: 0x2BD0, symBinAddr: 0x248B50, symSize: 0x30 } + - { offset: 0x2DC03F, size: 0x8, addend: 0x0, symName: '_$sSDyq_Sgxcis8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0x0, symBinAddr: 0x246130, symSize: 0xD0 } + - { offset: 0x2DC131, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxcisSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0xD0, symBinAddr: 0x246200, symSize: 0x180 } + - { offset: 0x2DC32D, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciMSi_8PenNavUI5ColorVTg5', symObjAddr: 0x1710, symBinAddr: 0x247800, symSize: 0x60 } + - { offset: 0x2DC35E, size: 0x8, addend: 0x0, symName: '_$sSDyq_SgxciMSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x1780, symBinAddr: 0x247870, symSize: 0x60 } + - { offset: 0x2DC5DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC11drawObjects2on5using8mapStatey7Penguin5FloorCSg_0M10INRenderer10PIRendererCSgAA03MapL0OtF', symObjAddr: 0x290, symBinAddr: 0x246380, symSize: 0x510 } + - { offset: 0x2DC7BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC14scheduleUpdate5after2on5using8mapStateySd_7Penguin5FloorC0N10INRenderer10PIRendererCSgAA03MapM0OtFySo7NSTimerCYbcfU_', symObjAddr: 0x7A0, symBinAddr: 0x246890, symSize: 0x1B0 } + - { offset: 0x2DC938, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC13updateObjects2on5using8mapStatey7Penguin5FloorCSg_0M10INRenderer10PIRendererCSgAA03MapL0OtF', symObjAddr: 0x950, symBinAddr: 0x246A40, symSize: 0x2A0 } + - { offset: 0x2DCB26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC13updateObjects2on5using8mapStatey7Penguin5FloorCSg_0M10INRenderer10PIRendererCSgAA03MapL0OtFySayAA0dE0VGSgcfU_', symObjAddr: 0xBF0, symBinAddr: 0x246CE0, symSize: 0x2B0 } + - { offset: 0x2DCDB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC20removeExpiredObjects5usingy17PenguinINRenderer10PIRendererCSg_tF', symObjAddr: 0xEA0, symBinAddr: 0x246F90, symSize: 0x870 } + - { offset: 0x2DD236, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC21stopRefreshingObjectsyyF', symObjAddr: 0x1800, symBinAddr: 0x2478F0, symSize: 0x60 } + - { offset: 0x2DD29B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerCfD', symObjAddr: 0x1860, symBinAddr: 0x247950, symSize: 0x50 } + - { offset: 0x2DD2F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC6sharedACvgZTf4d_n', symObjAddr: 0x20F0, symBinAddr: 0x2481E0, symSize: 0x90 } + - { offset: 0x2DD39B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC16getCachedObjects2onSayAA0dE0VG7Penguin5FloorCSg_tFTf4nd_n', symObjAddr: 0x2180, symBinAddr: 0x248270, symSize: 0x470 } + - { offset: 0x2DD8E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17LiveObjectManagerC12cacheObjects_2onySayAA0dE0VG_Say7Penguin5FloorCSgGtFTf4nnd_n', symObjAddr: 0x27E0, symBinAddr: 0x248790, symSize: 0x2F0 } + - { offset: 0x2DDF01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parsePatternyAA3DOMO0F0VAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x248BF0, symSize: 0x440 } + - { offset: 0x2DDF4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV12parsePatternyAA3DOMO0F0VAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x248BF0, symSize: 0x440 } + - { offset: 0x2DE02D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3DOMO7PatternV5UnitsOAGSYAAWl', symObjAddr: 0x4A0, symBinAddr: 0x249030, symSize: 0x2D } + - { offset: 0x2DE65C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelCMa', symObjAddr: 0x670, symBinAddr: 0x2496B0, symSize: 0x20 } + - { offset: 0x2DE670, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC20processFetchResponse33_C0C62F0363BB654C05AA258EF929E3E6LL7poiDatayAA7POIDataCSg_tFyyScMYccfU_TA', symObjAddr: 0x720, symBinAddr: 0x249720, symSize: 0x20 } + - { offset: 0x2DE684, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x740, symBinAddr: 0x249740, symSize: 0x20 } + - { offset: 0x2DE698, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x760, symBinAddr: 0x249760, symSize: 0x10 } + - { offset: 0x2DE6AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC05fetchD7Details33_C0C62F0363BB654C05AA258EF929E3E6LL3poi8location6sourcey7Penguin10PoiPolygonV_AI10PILocationCSgAA06SourceF0OtFyAA7POIDataCSgcACcfu0_yAScfu1_TA', symObjAddr: 0x880, symBinAddr: 0x249770, symSize: 0x10 } + - { offset: 0x2DE72F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC05fetchD7Details33_C0C62F0363BB654C05AA258EF929E3E6LL3poi8location6sourcey7Penguin10PoiPolygonV_AI10PILocationCSgAA06SourceF0OtF', symObjAddr: 0x20, symBinAddr: 0x249060, symSize: 0x310 } + - { offset: 0x2DE99C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC20processFetchResponse33_C0C62F0363BB654C05AA258EF929E3E6LL7poiDatayAA7POIDataCSg_tF', symObjAddr: 0x330, symBinAddr: 0x249370, symSize: 0x1F0 } + - { offset: 0x2DE9FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelC20processFetchResponse33_C0C62F0363BB654C05AA258EF929E3E6LL7poiDatayAA7POIDataCSg_tFyyScMYccfU_', symObjAddr: 0x520, symBinAddr: 0x249560, symSize: 0x120 } + - { offset: 0x2DEB62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20PlaceDetailViewModelCfD', symObjAddr: 0x640, symBinAddr: 0x249680, symSize: 0x30 } + - { offset: 0x2DEF47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterVMa', symObjAddr: 0x210, symBinAddr: 0x249780, symSize: 0x10 } + - { offset: 0x2DF0B9, size: 0x8, addend: 0x0, symName: ___swift_memcpy9_8, symObjAddr: 0x4F0, symBinAddr: 0x2499B0, symSize: 0x20 } + - { offset: 0x2DF0CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOwet', symObjAddr: 0x520, symBinAddr: 0x2499D0, symSize: 0x20 } + - { offset: 0x2DF0E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOwst', symObjAddr: 0x540, symBinAddr: 0x2499F0, symSize: 0x30 } + - { offset: 0x2DF0F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOwug', symObjAddr: 0x570, symBinAddr: 0x249A20, symSize: 0x20 } + - { offset: 0x2DF109, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOwui', symObjAddr: 0x5A0, symBinAddr: 0x249A40, symSize: 0x20 } + - { offset: 0x2DF11D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9PrecisionOMa', symObjAddr: 0x5C0, symBinAddr: 0x249A60, symSize: 0x10 } + - { offset: 0x2DF131, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVMa', symObjAddr: 0x710, symBinAddr: 0x249A70, symSize: 0x10 } + - { offset: 0x2DF1F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV6format_9precisionSSSfd_AC9PrecisionOSgtF', symObjAddr: 0x220, symBinAddr: 0x249790, symSize: 0x1F0 } + - { offset: 0x2DF54F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x410, symBinAddr: 0x249980, symSize: 0x10 } + - { offset: 0x2DF563, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19CoordinateFormatterV9DelimeterVSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x420, symBinAddr: 0x249990, symSize: 0x20 } + - { offset: 0x2DF928, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC14sharedInstance33_F9EEFDC5370A00C4ACDB141165CBB172LLACSgvpZ', symObjAddr: 0x59C0, symBinAddr: 0x3A65E8, symSize: 0x0 } + - { offset: 0x2DFE0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF', symObjAddr: 0x3B0, symBinAddr: 0x249E30, symSize: 0x340 } + - { offset: 0x2E026B, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFyAJcfU0_', symObjAddr: 0x35C0, symBinAddr: 0x24CFA0, symSize: 0x200 } + - { offset: 0x2E02D0, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFyAJcfU0_yyScMYccfU_', symObjAddr: 0x37C0, symBinAddr: 0x24D1A0, symSize: 0x50 } + - { offset: 0x2E0322, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheCMa', symObjAddr: 0x3980, symBinAddr: 0x24D360, symSize: 0x20 } + - { offset: 0x2E0372, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFTf4nnd_n', symObjAddr: 0x3A00, symBinAddr: 0x24D3E0, symSize: 0x7D0 } + - { offset: 0x2E08AA, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFyAJcfU0_TA', symObjAddr: 0x4250, symBinAddr: 0x24DBC0, symSize: 0x20 } + - { offset: 0x2E08BE, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE8getImage4from10completionySSSg_ySo0A0CSgcSgtFyAJcfU0_yyScMYccfU_TA', symObjAddr: 0x4320, symBinAddr: 0x24DC20, symSize: 0x20 } + - { offset: 0x2E08D2, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x4340, symBinAddr: 0x24DC40, symSize: 0x20 } + - { offset: 0x2E08E6, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x4360, symBinAddr: 0x24DC60, symSize: 0x10 } + - { offset: 0x2E099F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC08downloadD033_F9EEFDC5370A00C4ACDB141165CBB172LL3urly10Foundation3URLV_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x45B0, symBinAddr: 0x24DE00, symSize: 0x10 } + - { offset: 0x2E0A73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF03$s8ab34UI5PlaceC7getIcon10completionyySo7L15CSgc_tFyAHcfU0_ALIegg_Tf1ncn_n0mab41UI16SelectionManagerC16updateSymbolIconyytrL7CSgcfU_AA0xY0CSgXwz_XxAA0O0CTf1nnc_nTf4nngg_n', symObjAddr: 0x4640, symBinAddr: 0x24DE90, symSize: 0x460 } + - { offset: 0x2E0C30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC6getSVG7withURL10completiony10Foundation0I0V_ySo7UIImageCSgctF03$s8ab62UI20AmenityTableViewCellC7setData7amenityyAA9AmenitiesV_tFySo7L7CSgcfU_AA0opqR0CTf1ncn_nTf4nng_n', symObjAddr: 0x4AA0, symBinAddr: 0x24E2F0, symSize: 0x430 } + - { offset: 0x2E0E2B, size: 0x8, addend: 0x0, symName: '_$sSo11UIImageViewC8PenNavUIE18stopURLDownloading7withURLySS_tFTf4nd_n', symObjAddr: 0x4ED0, symBinAddr: 0x24E720, symSize: 0x180 } + - { offset: 0x2E0F3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9ToastTypeOACSHAAWl', symObjAddr: 0x5070, symBinAddr: 0x24E8A0, symSize: 0x30 } + - { offset: 0x2E0F51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20AmenityTableViewCellC7setData7amenityyAA9AmenitiesV_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x5160, symBinAddr: 0x24E950, symSize: 0x10 } + - { offset: 0x2E0F65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_TA', symObjAddr: 0x5230, symBinAddr: 0x24EA20, symSize: 0x50 } + - { offset: 0x2E0F79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_yyScMYccfU0_TA', symObjAddr: 0x5280, symBinAddr: 0x24EA70, symSize: 0x20 } + - { offset: 0x2E0FAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_yyScMYccfU_TA', symObjAddr: 0x5340, symBinAddr: 0x24EB30, symSize: 0x50 } + - { offset: 0x2E0FC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC08downloadD033_F9EEFDC5370A00C4ACDB141165CBB172LL_10completiony10Foundation3URLV_ySo7UIImageCSgctFyAG4DataVSg_So13NSURLResponseCSgs5Error_pSgtYbcfU_yyScMYccfU0_TA', symObjAddr: 0x5480, symBinAddr: 0x24EC70, symSize: 0x60 } + - { offset: 0x2E0FD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC11downloadSvg33_F9EEFDC5370A00C4ACDB141165CBB172LL7withURL10completiony10Foundation0O0V_ySo7UIImageCSgctFyAH4DataVSg_So13NSURLResponseCSgs5Error_pSgtYbcfU_yyScMYccfU_TA', symObjAddr: 0x57A0, symBinAddr: 0x24EF20, symSize: 0x20 } + - { offset: 0x2E103E, size: 0x8, addend: 0x0, symName: '_$sShyShyxGqd__nc7ElementQyd__RszSTRd__lufC8PenNavUI18FloatingPanelStateC_SD4KeysVyAfD0eF15LayoutAnchoring_p_GTt0g5', symObjAddr: 0x0, symBinAddr: 0x249A80, symSize: 0x230 } + - { offset: 0x2E118B, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay10Foundation3URLVG_Tg5', symObjAddr: 0x230, symBinAddr: 0x249CB0, symSize: 0xA0 } + - { offset: 0x2E12C4, size: 0x8, addend: 0x0, symName: '_$sSTsSQ7ElementRpzrlE8containsySbABFSay8PenNavUI13SearchSectionOG_Tg5', symObjAddr: 0x2D0, symBinAddr: 0x249D50, symSize: 0x30 } + - { offset: 0x2E13F9, size: 0x8, addend: 0x0, symName: '_$sSD11removeValue6forKeyq_Sgx_tF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x300, symBinAddr: 0x249D80, symSize: 0xB0 } + - { offset: 0x2E16D9, size: 0x8, addend: 0x0, symName: '_$sShyShyxGqd__nc7ElementQyd__RszSTRd__lufCSf_SaySfGTt0g5Tf4g_n', symObjAddr: 0x43C0, symBinAddr: 0x24DC70, symSize: 0x80 } + - { offset: 0x2E185C, size: 0x8, addend: 0x0, symName: '_$sShyShyxGqd__nc7ElementQyd__RszSTRd__lufC10Foundation3URLV_SayAFGTt0g5Tf4g_n', symObjAddr: 0x4440, symBinAddr: 0x24DCF0, symSize: 0x110 } + - { offset: 0x2E19E9, size: 0x8, addend: 0x0, symName: '_$sShyShyxGqd__nc7ElementQyd__RszSTRd__lufC8PenNavUI9ToastTypeO_SayAFGTt0g5Tf4g_n', symObjAddr: 0x45C0, symBinAddr: 0x24DE10, symSize: 0x80 } + - { offset: 0x2E1D91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC03getD0_10completiony10Foundation3URLV_ySo7UIImageCSgctF', symObjAddr: 0x6F0, symBinAddr: 0x24A170, symSize: 0x190 } + - { offset: 0x2E1E62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctF', symObjAddr: 0x880, symBinAddr: 0x24A300, symSize: 0x360 } + - { offset: 0x2E1EE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_', symObjAddr: 0xBE0, symBinAddr: 0x24A660, symSize: 0x4D0 } + - { offset: 0x2E1FD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadD5Async33_F9EEFDC5370A00C4ACDB141165CBB172LL8filePath3url10completionySS_10Foundation3URLVySo7UIImageCSgctFyyYbcfU_yyScMYccfU_', symObjAddr: 0x10B0, symBinAddr: 0x24AB30, symSize: 0x100 } + - { offset: 0x2E231E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC21handleInvalidResouces33_F9EEFDC5370A00C4ACDB141165CBB172LL3url8response5errory10Foundation3URLV_So13NSURLResponseCSgs5Error_pSgtF', symObjAddr: 0x1B10, symBinAddr: 0x24B590, symSize: 0x160 } + - { offset: 0x2E24B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC06cancelD8Download6forURLy10Foundation0I0V_tF', symObjAddr: 0x1C70, symBinAddr: 0x24B6F0, symSize: 0xD0 } + - { offset: 0x2E2591, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC22cancelDownloadSequenceyyF', symObjAddr: 0x1D40, symBinAddr: 0x24B7C0, symSize: 0x230 } + - { offset: 0x2E28AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC21downloadImagesToFiles4urlsySaySSG_tF', symObjAddr: 0x1F70, symBinAddr: 0x24B9F0, symSize: 0x630 } + - { offset: 0x2E30EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC08downloadD033_F9EEFDC5370A00C4ACDB141165CBB172LL3urly10Foundation3URLV_tFySo7UIImageCSgcfU_', symObjAddr: 0x25A0, symBinAddr: 0x24C020, symSize: 0xC0 } + - { offset: 0x2E32FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC14getPathForFile33_F9EEFDC5370A00C4ACDB141165CBB172LL3url10Foundation3URLVAI_tF', symObjAddr: 0x2660, symBinAddr: 0x24C0E0, symSize: 0x130 } + - { offset: 0x2E342C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC03getD13FromDocuments3urlSo7UIImageCSg10Foundation3URLV_tF', symObjAddr: 0x2790, symBinAddr: 0x24C210, symSize: 0x1C0 } + - { offset: 0x2E3513, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheCfd', symObjAddr: 0x2950, symBinAddr: 0x24C3D0, symSize: 0x40 } + - { offset: 0x2E3544, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheCfD', symObjAddr: 0x2990, symBinAddr: 0x24C410, symSize: 0x50 } + - { offset: 0x2E3694, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ImageCacheC04loadd4FromE033_F9EEFDC5370A00C4ACDB141165CBB172LLySo7UIImageCSg10Foundation3URLVFTf4nd_n', symObjAddr: 0x3810, symBinAddr: 0x24D1F0, symSize: 0x170 } + - { offset: 0x2E3CD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI0aB13UITableUpdateC12fetchRequestSo07NSFetchG0CyACGyFZ', symObjAddr: 0x0, symBinAddr: 0x24F120, symSize: 0x70 } + - { offset: 0x2E3D3E, size: 0x8, addend: 0x0, symName: _keypath_get_selector_lastUpdateTime, symObjAddr: 0x70, symBinAddr: 0x24F190, symSize: 0x10 } + - { offset: 0x2E3D52, size: 0x8, addend: 0x0, symName: _keypath_get_selector_tableName, symObjAddr: 0xC0, symBinAddr: 0x24F1E0, symSize: 0x10 } + - { offset: 0x2E458A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperCMa', symObjAddr: 0x1510, symBinAddr: 0x250740, symSize: 0x20 } + - { offset: 0x2E459E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC03setD4Mode4mode10completionyAA0dG0O_ySbcSgtFyycfU_TA', symObjAddr: 0x1880, symBinAddr: 0x250A00, symSize: 0x20 } + - { offset: 0x2E47C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC03setD4Mode4mode10completionyAA0dG0O_ySbcSgtF', symObjAddr: 0x0, symBinAddr: 0x24F230, symSize: 0x610 } + - { offset: 0x2E49FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC03setD4Mode4mode10completionyAA0dG0O_ySbcSgtFyycfU_', symObjAddr: 0x610, symBinAddr: 0x24F840, symSize: 0x100 } + - { offset: 0x2E4BAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC7drawMap3for10completiony7Penguin5FloorCSg_ySbcSgtF', symObjAddr: 0x710, symBinAddr: 0x24F940, symSize: 0x220 } + - { offset: 0x2E4C93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC13removeObjectsyyF', symObjAddr: 0x930, symBinAddr: 0x24FB60, symSize: 0x90 } + - { offset: 0x2E4DC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC19drawNavigationRoute7subpathy7Penguin7SubPathCSg_tF', symObjAddr: 0x9C0, symBinAddr: 0x24FBF0, symSize: 0x6C0 } + - { offset: 0x2E5139, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC29setLocationProviderCoordinate_28skipsIntermediateCoordinatesySo22CLLocationCoordinate2DVSg_SbtF', symObjAddr: 0x1080, symBinAddr: 0x2502B0, symSize: 0xD0 } + - { offset: 0x2E51CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC30setLocationIndicatorCoordinate_5usingySo22CLLocationCoordinate2DV_17PenguinINRenderer10PIRendererCSgtF', symObjAddr: 0x1150, symBinAddr: 0x250380, symSize: 0x110 } + - { offset: 0x2E5254, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC34setLocationIndicatorAccuracyRadiusyySdSgF', symObjAddr: 0x1360, symBinAddr: 0x250590, symSize: 0xF0 } + - { offset: 0x2E52FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC25setLocationIndicatorStyleyyAA0ghI0OF', symObjAddr: 0x1450, symBinAddr: 0x250680, symSize: 0x70 } + - { offset: 0x2E53B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperCfD', symObjAddr: 0x14C0, symBinAddr: 0x2506F0, symSize: 0x50 } + - { offset: 0x2E5447, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC13renderingView17mapEventsDelegateACSo6UIViewC_17PenguinINRenderer05PIMapg5EventJ0_pSgtcfcTf4ngn_n', symObjAddr: 0x1530, symBinAddr: 0x250760, symSize: 0xF0 } + - { offset: 0x2E54FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RenderingHelperC16updateMapBearing4mode7bearing13isLowAccuracyyAA0G11CameraStateO_SdSgSbtFTf4nndn_n', symObjAddr: 0x1620, symBinAddr: 0x250850, symSize: 0x120 } + - { offset: 0x2E5926, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7pdfData4size6insets10Foundation0F0VSo6CGSizeVSg_AC6InsetsVtKF', symObjAddr: 0x0, symBinAddr: 0x250A30, symSize: 0x260 } + - { offset: 0x2E5E80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8RendererPAAE7performyyAA0D7CommandOy5TypesQzGFAA06CGTextD0C_Tg5', symObjAddr: 0x260, symBinAddr: 0x250C90, symSize: 0xBD0 } + - { offset: 0x2E71EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8RendererPAAE7performyyAA0D7CommandOy5TypesQzGFAA10CGRendererV_Tg5', symObjAddr: 0xE30, symBinAddr: 0x251860, symSize: 0x540 } + - { offset: 0x2E7C0D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_03958A0088F2E35131ADBC7FF9D1DD6CLLVAFsAdAWl', symObjAddr: 0x1370, symBinAddr: 0x251DA0, symSize: 0x30 } + - { offset: 0x2E7CFA, size: 0x8, addend: 0x0, symName: '_$sSo12CGContextRefa8PenNavUIE4draw_2inyAC3SVGC_So6CGRectVSgtF', symObjAddr: 0x13A0, symBinAddr: 0x251DD0, symSize: 0x260 } + - { offset: 0x2E7ED9, size: 0x8, addend: 0x0, symName: '_$sSo12CGContextRefa8PenNavUIE4draw33_03958A0088F2E35131ADBC7FF9D1DD6CLL_2in5scaleySayAC15RendererCommandOyAC7CGTypesVGG_So6CGRectVSo6CGSizeVtF', symObjAddr: 0x1670, symBinAddr: 0x252030, symSize: 0x130 } + - { offset: 0x2E8070, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_03958A0088F2E35131ADBC7FF9D1DD6CLLVMa', symObjAddr: 0x1900, symBinAddr: 0x252160, symSize: 0x10 } + - { offset: 0x2E8084, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5Error33_03958A0088F2E35131ADBC7FF9D1DD6CLLV10Foundation09LocalizedE0AAsADPWb', symObjAddr: 0x1910, symBinAddr: 0x252170, symSize: 0x10 } + - { offset: 0x2E8D45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererV12makeExpanded4path9transform9precisionS2S_SSSitKFZ', symObjAddr: 0x0, symBinAddr: 0x252180, symSize: 0x7E0 } + - { offset: 0x2E9366, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererVMa', symObjAddr: 0xE70, symBinAddr: 0x252E70, symSize: 0x10 } + - { offset: 0x2E9627, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererV12makeExpanded4path9transform9precisionS2S_SSSitKFZ', symObjAddr: 0x0, symBinAddr: 0x252180, symSize: 0x7E0 } + - { offset: 0x2EA04C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererV7makeDOM7segment9formatterSSAA9LayerTreeO4PathC7SegmentO_AA19CoordinateFormatterVtFZTf4nnd_n', symObjAddr: 0x820, symBinAddr: 0x252960, symSize: 0x2E0 } + - { offset: 0x2EA553, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11SVGRendererV7makeDOM4path9precisionSSAA9LayerTreeO4PathC_SitFZTf4nnd_n', symObjAddr: 0xB00, symBinAddr: 0x252C40, symSize: 0x230 } + - { offset: 0x2EAC51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0CMa', symObjAddr: 0x250, symBinAddr: 0x2530D0, symSize: 0x20 } + - { offset: 0x2EAC65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOy', symObjAddr: 0x2A0, symBinAddr: 0x2530F0, symSize: 0x130 } + - { offset: 0x2EAC79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0OWOy', symObjAddr: 0x400, symBinAddr: 0x253220, symSize: 0x40 } + - { offset: 0x2EAC8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0OWOy', symObjAddr: 0x440, symBinAddr: 0x253260, symSize: 0x50 } + - { offset: 0x2EACA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwxx', symObjAddr: 0x4F0, symBinAddr: 0x2532B0, symSize: 0x80 } + - { offset: 0x2EACB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOe', symObjAddr: 0x570, symBinAddr: 0x253330, symSize: 0x130 } + - { offset: 0x2EACC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0OWOe', symObjAddr: 0x6D0, symBinAddr: 0x253460, symSize: 0x40 } + - { offset: 0x2EACDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwcp', symObjAddr: 0x7C0, symBinAddr: 0x2534A0, symSize: 0x1C0 } + - { offset: 0x2EACF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwca', symObjAddr: 0x980, symBinAddr: 0x253660, symSize: 0x230 } + - { offset: 0x2EAD05, size: 0x8, addend: 0x0, symName: ___swift_memcpy153_8, symObjAddr: 0xBB0, symBinAddr: 0x253890, symSize: 0x10 } + - { offset: 0x2EAD19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwta', symObjAddr: 0xBC0, symBinAddr: 0x2538A0, symSize: 0x100 } + - { offset: 0x2EAD2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwet', symObjAddr: 0xCC0, symBinAddr: 0x2539A0, symSize: 0x50 } + - { offset: 0x2EAD41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwst', symObjAddr: 0xD10, symBinAddr: 0x2539F0, symSize: 0xB0 } + - { offset: 0x2EAD55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwup', symObjAddr: 0xDD0, symBinAddr: 0x253AA0, symSize: 0x10 } + - { offset: 0x2EAD69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOwui', symObjAddr: 0xDE0, symBinAddr: 0x253AB0, symSize: 0x40 } + - { offset: 0x2EAD7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOMa', symObjAddr: 0xE20, symBinAddr: 0x253AF0, symSize: 0x10 } + - { offset: 0x2EAF91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwxx', symObjAddr: 0x2460, symBinAddr: 0x255080, symSize: 0x10 } + - { offset: 0x2EAFA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwcp', symObjAddr: 0x2470, symBinAddr: 0x255090, symSize: 0x50 } + - { offset: 0x2EAFB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwca', symObjAddr: 0x24C0, symBinAddr: 0x2550E0, symSize: 0x60 } + - { offset: 0x2EAFCD, size: 0x8, addend: 0x0, symName: ___swift_memcpy45_8, symObjAddr: 0x2520, symBinAddr: 0x255140, symSize: 0x20 } + - { offset: 0x2EAFE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwta', symObjAddr: 0x2540, symBinAddr: 0x255160, symSize: 0x50 } + - { offset: 0x2EAFF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwet', symObjAddr: 0x2590, symBinAddr: 0x2551B0, symSize: 0x40 } + - { offset: 0x2EB009, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVwst', symObjAddr: 0x25D0, symBinAddr: 0x2551F0, symSize: 0x50 } + - { offset: 0x2EB01D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVMa', symObjAddr: 0x2620, symBinAddr: 0x255240, symSize: 0x10 } + - { offset: 0x2EB031, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwcp', symObjAddr: 0x2630, symBinAddr: 0x255250, symSize: 0xA0 } + - { offset: 0x2EB045, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwca', symObjAddr: 0x26D0, symBinAddr: 0x2552F0, symSize: 0xD0 } + - { offset: 0x2EB059, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwta', symObjAddr: 0x27D0, symBinAddr: 0x2553C0, symSize: 0x80 } + - { offset: 0x2EB06D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwet', symObjAddr: 0x2850, symBinAddr: 0x255440, symSize: 0x40 } + - { offset: 0x2EB081, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVwst', symObjAddr: 0x2890, symBinAddr: 0x255480, symSize: 0x50 } + - { offset: 0x2EB095, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVMa', symObjAddr: 0x28E0, symBinAddr: 0x2554D0, symSize: 0x10 } + - { offset: 0x2EB0A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwcp', symObjAddr: 0x28F0, symBinAddr: 0x2554E0, symSize: 0xB0 } + - { offset: 0x2EB0BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwca', symObjAddr: 0x29A0, symBinAddr: 0x255590, symSize: 0xE0 } + - { offset: 0x2EB0D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwta', symObjAddr: 0x2AB0, symBinAddr: 0x255670, symSize: 0x90 } + - { offset: 0x2EB0E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwet', symObjAddr: 0x2B40, symBinAddr: 0x255700, symSize: 0x50 } + - { offset: 0x2EB0F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVwst', symObjAddr: 0x2B90, symBinAddr: 0x255750, symSize: 0x60 } + - { offset: 0x2EB10D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVMa', symObjAddr: 0x2BF0, symBinAddr: 0x2557B0, symSize: 0x10 } + - { offset: 0x2EB121, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0Owet', symObjAddr: 0x2CB0, symBinAddr: 0x255840, symSize: 0x50 } + - { offset: 0x2EB135, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0Owst', symObjAddr: 0x2D00, symBinAddr: 0x255890, symSize: 0x60 } + - { offset: 0x2EB149, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0OMa', symObjAddr: 0x2D90, symBinAddr: 0x255910, symSize: 0x10 } + - { offset: 0x2EB15D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0Owet', symObjAddr: 0x3000, symBinAddr: 0x255B80, symSize: 0x50 } + - { offset: 0x2EB171, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0Owst', symObjAddr: 0x3050, symBinAddr: 0x255BD0, symSize: 0x60 } + - { offset: 0x2EB185, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0OMa', symObjAddr: 0x30C0, symBinAddr: 0x255C30, symSize: 0x10 } + - { offset: 0x2EB22A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x0, symBinAddr: 0x252E80, symSize: 0x60 } + - { offset: 0x2EB259, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C14simpleContentsAE0G0OSgvg', symObjAddr: 0x60, symBinAddr: 0x252EE0, symSize: 0x130 } + - { offset: 0x2EB308, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0Cfd', symObjAddr: 0x190, symBinAddr: 0x253010, symSize: 0xA0 } + - { offset: 0x2EB32B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0CfD', symObjAddr: 0x230, symBinAddr: 0x2530B0, symSize: 0x20 } + - { offset: 0x2EB35B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0CSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xE30, symBinAddr: 0x253B00, symSize: 0x10 } + - { offset: 0x2EB398, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0OSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xE40, symBinAddr: 0x253B10, symSize: 0x60 } + - { offset: 0x2EB3D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xEA0, symBinAddr: 0x253B70, symSize: 0x60 } + - { offset: 0x2EB410, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0OSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xF00, symBinAddr: 0x253BD0, symSize: 0x60 } + - { offset: 0x2EB46A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0xF60, symBinAddr: 0x253C30, symSize: 0x100 } + - { offset: 0x2EB540, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1060, symBinAddr: 0x253D30, symSize: 0x50 } + - { offset: 0x2EB60E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV0F0O2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x10B0, symBinAddr: 0x253D80, symSize: 0x370 } + - { offset: 0x2EB767, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16StrokeAttributesV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x1420, symBinAddr: 0x2540F0, symSize: 0x1E0 } + - { offset: 0x2EB8B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x1600, symBinAddr: 0x2542D0, symSize: 0x160 } + - { offset: 0x2EB925, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV0F0O2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x1760, symBinAddr: 0x254430, symSize: 0x3D0 } + - { offset: 0x2EBA63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14FillAttributesV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x1B30, symBinAddr: 0x254800, symSize: 0xE0 } + - { offset: 0x2EBB42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x1C10, symBinAddr: 0x2548E0, symSize: 0x1F0 } + - { offset: 0x2EBCCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsO2eeoiySbAG_AGtFZTf4nnd_n', symObjAddr: 0x1E00, symBinAddr: 0x254AD0, symSize: 0x5B0 } + - { offset: 0x2EC165, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC15campusNameLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x255C90, symSize: 0x20 } + - { offset: 0x2EC912, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC019handleFavoriteUIFordE0yyF', symObjAddr: 0x670, symBinAddr: 0x256300, symSize: 0x5D0 } + - { offset: 0x2ECBB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC019handleFavoriteUIFordE0yyFyycfU_', symObjAddr: 0x3250, symBinAddr: 0x258EE0, symSize: 0x60 } + - { offset: 0x2ECE50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCfE', symObjAddr: 0x2B90, symBinAddr: 0x258820, symSize: 0x150 } + - { offset: 0x2ECE7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCfETo', symObjAddr: 0x2D10, symBinAddr: 0x2589A0, symSize: 0x150 } + - { offset: 0x2ECEAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCMa', symObjAddr: 0x2E60, symBinAddr: 0x258AF0, symSize: 0x20 } + - { offset: 0x2ECEFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC14layoutForPanelAA08FloatingK6Layout_pyFTo', symObjAddr: 0x2E80, symBinAddr: 0x258B10, symSize: 0xA0 } + - { offset: 0x2ECFA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC16behaviorForPanelAA08FloatingK8Behavior_pyFTo', symObjAddr: 0x2F20, symBinAddr: 0x258BB0, symSize: 0x30 } + - { offset: 0x2ED00E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x2F50, symBinAddr: 0x258BE0, symSize: 0x90 } + - { offset: 0x2ED08A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingjH0CF', symObjAddr: 0x2FE0, symBinAddr: 0x258C70, symSize: 0x220 } + - { offset: 0x2ED28E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingjH0CFTo', symObjAddr: 0x3200, symBinAddr: 0x258E90, symSize: 0x50 } + - { offset: 0x2ED2AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC14handleFavorite33_BBE7875B2892A8418F35ED4165555988LL02isJ0ySb_tF', symObjAddr: 0x32B0, symBinAddr: 0x258F40, symSize: 0x1E0 } + - { offset: 0x2ED478, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtF', symObjAddr: 0x3490, symBinAddr: 0x259120, symSize: 0x290 } + - { offset: 0x2ED66D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0lQ0OSgtFTW', symObjAddr: 0x37A0, symBinAddr: 0x2593B0, symSize: 0x10 } + - { offset: 0x2ED689, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC019handleFavoriteUIFordE0yyFyycfU_TA', symObjAddr: 0x37F0, symBinAddr: 0x259400, symSize: 0x20 } + - { offset: 0x2ED69D, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x38A0, symBinAddr: 0x259420, symSize: 0x20 } + - { offset: 0x2ED6B1, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x38C0, symBinAddr: 0x259440, symSize: 0x10 } + - { offset: 0x2ED6C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC17showRouteOverviewyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x3960, symBinAddr: 0x259480, symSize: 0x20 } + - { offset: 0x2ED6FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFyycfU_TA', symObjAddr: 0x3B20, symBinAddr: 0x2595A0, symSize: 0x10 } + - { offset: 0x2ED713, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFyycfU0_TA', symObjAddr: 0x3B30, symBinAddr: 0x2595B0, symSize: 0x10 } + - { offset: 0x2EDC85, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC15campusNameLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x255C90, symSize: 0x20 } + - { offset: 0x2EDCE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC15campusNameLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x255CB0, symSize: 0x20 } + - { offset: 0x2EDD38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC14venueNameLabelSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x255CD0, symSize: 0x20 } + - { offset: 0x2EDD8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC14venueNameLabelSo7UILabelCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x255CF0, symSize: 0x20 } + - { offset: 0x2EDDE0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC10floorLabelSo7UILabelCSgvgTo', symObjAddr: 0x80, symBinAddr: 0x255D10, symSize: 0x20 } + - { offset: 0x2EDE35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC10floorLabelSo7UILabelCSgvsTo', symObjAddr: 0xA0, symBinAddr: 0x255D30, symSize: 0x20 } + - { offset: 0x2EDE88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC010directionsG0AA06HapticG0CSgvgTo', symObjAddr: 0xC0, symBinAddr: 0x255D50, symSize: 0x20 } + - { offset: 0x2EDEE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC010directionsG0AA06HapticG0CSgvsTo', symObjAddr: 0xE0, symBinAddr: 0x255D70, symSize: 0x20 } + - { offset: 0x2EDF35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC011reportIssueG0AA06HapticG0CSgvgTo', symObjAddr: 0x100, symBinAddr: 0x255D90, symSize: 0x20 } + - { offset: 0x2EDF8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC011reportIssueG0AA06HapticG0CSgvsTo', symObjAddr: 0x120, symBinAddr: 0x255DB0, symSize: 0x20 } + - { offset: 0x2EDFDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC016reportIssueStackG0So07UIStackG0CSgvgTo', symObjAddr: 0x140, symBinAddr: 0x255DD0, symSize: 0x20 } + - { offset: 0x2EE035, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC016reportIssueStackG0So07UIStackG0CSgvsTo', symObjAddr: 0x160, symBinAddr: 0x255DF0, symSize: 0x30 } + - { offset: 0x2EE084, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC013addToFavoriteG0AA06HapticG0CSgvgTo', symObjAddr: 0x190, symBinAddr: 0x255E20, symSize: 0x20 } + - { offset: 0x2EE0D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC013addToFavoriteG0AA06HapticG0CSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x255E40, symSize: 0x20 } + - { offset: 0x2EE12C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC13favoriteLabelSo7UILabelCSgvgTo', symObjAddr: 0x1D0, symBinAddr: 0x255E60, symSize: 0x20 } + - { offset: 0x2EE181, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC13favoriteLabelSo7UILabelCSgvsTo', symObjAddr: 0x1F0, symBinAddr: 0x255E80, symSize: 0x20 } + - { offset: 0x2EE1D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC13favoriteImageSo07UIImageG0CSgvgTo', symObjAddr: 0x210, symBinAddr: 0x255EA0, symSize: 0x20 } + - { offset: 0x2EE22E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC13favoriteImageSo07UIImageG0CSgvsTo', symObjAddr: 0x230, symBinAddr: 0x255EC0, symSize: 0x20 } + - { offset: 0x2EE281, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC9nameLabelAA09IntrinsicJ0CSgvgTo', symObjAddr: 0x250, symBinAddr: 0x255EE0, symSize: 0x20 } + - { offset: 0x2EE2DB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC9nameLabelAA09IntrinsicJ0CSgvsTo', symObjAddr: 0x270, symBinAddr: 0x255F00, symSize: 0x20 } + - { offset: 0x2EE32E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x290, symBinAddr: 0x255F20, symSize: 0x20 } + - { offset: 0x2EE386, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x2B0, symBinAddr: 0x255F40, symSize: 0x30 } + - { offset: 0x2EE462, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0x2E0, symBinAddr: 0x255F70, symSize: 0x240 } + - { offset: 0x2EE5AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFyycfU_', symObjAddr: 0x520, symBinAddr: 0x2561B0, symSize: 0x50 } + - { offset: 0x2EE5D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFyycfU0_', symObjAddr: 0x570, symBinAddr: 0x256200, symSize: 0x100 } + - { offset: 0x2EE693, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0xC40, symBinAddr: 0x2568D0, symSize: 0x30 } + - { offset: 0x2EE7DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC03setC033_BBE7875B2892A8418F35ED4165555988LLyyF', symObjAddr: 0xC70, symBinAddr: 0x256900, symSize: 0x160 } + - { offset: 0x2EEA0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC03setdeC0yyF', symObjAddr: 0xDD0, symBinAddr: 0x256A60, symSize: 0x610 } + - { offset: 0x2EEE76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC31applyLanguageBasedTextAlignmentyyF', symObjAddr: 0x13E0, symBinAddr: 0x257070, symSize: 0x1F0 } + - { offset: 0x2EF195, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x15D0, symBinAddr: 0x257260, symSize: 0x80 } + - { offset: 0x2EF253, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5shareyySo8UIButtonCFySSSgcfU_', symObjAddr: 0x1650, symBinAddr: 0x2572E0, symSize: 0x4D0 } + - { offset: 0x2EF430, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5shareyySo8UIButtonCFTo', symObjAddr: 0x1B20, symBinAddr: 0x2577B0, symSize: 0x50 } + - { offset: 0x2EF4E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC17showRouteOverviewyyF', symObjAddr: 0x1B70, symBinAddr: 0x257800, symSize: 0x4F0 } + - { offset: 0x2EF9DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC26presentRouteOverviewScreen33_BBE7875B2892A8418F35ED4165555988LL6sourceyAA5PlaceCSg_tF', symObjAddr: 0x2060, symBinAddr: 0x257CF0, symSize: 0x430 } + - { offset: 0x2EFDF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC18removeFromFavoriteyyF', symObjAddr: 0x2490, symBinAddr: 0x258120, symSize: 0xB0 } + - { offset: 0x2EFEC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x2540, symBinAddr: 0x2581D0, symSize: 0x300 } + - { offset: 0x2F00B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x2840, symBinAddr: 0x2584D0, symSize: 0x50 } + - { offset: 0x2F00FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x2890, symBinAddr: 0x258520, symSize: 0x2D0 } + - { offset: 0x2F02DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2B60, symBinAddr: 0x2587F0, symSize: 0x30 } + - { offset: 0x2F02F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerCfD', symObjAddr: 0x2CE0, symBinAddr: 0x258970, symSize: 0x30 } + - { offset: 0x2F046A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI35SharedLocationDetailsViewControllerC5shareyySo8UIButtonCFTf4dn_n', symObjAddr: 0x3990, symBinAddr: 0x2594A0, symSize: 0x100 } + - { offset: 0x2F08D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC18parkingDetailsViewAA0dgH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2595C0, symSize: 0x20 } + - { offset: 0x2F0A1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellCfETo', symObjAddr: 0x360, symBinAddr: 0x259920, symSize: 0x40 } + - { offset: 0x2F0A4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellCMa', symObjAddr: 0x3A0, symBinAddr: 0x259960, symSize: 0x20 } + - { offset: 0x2F0A5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC12awakeFromNibyyFyycfU_TA', symObjAddr: 0x3E0, symBinAddr: 0x2599A0, symSize: 0x10 } + - { offset: 0x2F0B00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC18parkingDetailsViewAA0dgH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2595C0, symSize: 0x20 } + - { offset: 0x2F0B5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC18parkingDetailsViewAA0dgH0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x2595E0, symSize: 0x30 } + - { offset: 0x2F0BD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC12awakeFromNibyyF', symObjAddr: 0x50, symBinAddr: 0x259610, symSize: 0xE0 } + - { offset: 0x2F0C4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC12awakeFromNibyyFyycfU_', symObjAddr: 0x130, symBinAddr: 0x2596F0, symSize: 0x80 } + - { offset: 0x2F0CAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC12awakeFromNibyyFTo', symObjAddr: 0x1B0, symBinAddr: 0x259770, symSize: 0x30 } + - { offset: 0x2F0D07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x1E0, symBinAddr: 0x2597A0, symSize: 0xC0 } + - { offset: 0x2F0D83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2A0, symBinAddr: 0x259860, symSize: 0x90 } + - { offset: 0x2F0DBA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ParkingCellCfD', symObjAddr: 0x330, symBinAddr: 0x2598F0, symSize: 0x30 } + - { offset: 0x2F114D, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUIE21getDownloadedModelUriSSSgyF', symObjAddr: 0x0, symBinAddr: 0x2599B0, symSize: 0x210 } + - { offset: 0x2F1171, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC14sharedInstance33_7986A3E1D5A26839C9FF19770735FC58LLACSgvpZ', symObjAddr: 0xFD8, symBinAddr: 0x3A6B88, symSize: 0x0 } + - { offset: 0x2F129E, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUIE21getDownloadedModelUriSSSgyF', symObjAddr: 0x0, symBinAddr: 0x2599B0, symSize: 0x210 } + - { offset: 0x2F1467, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUIE8assetURL10Foundation0H0VSgvg', symObjAddr: 0xDE0, symBinAddr: 0x25A770, symSize: 0xD0 } + - { offset: 0x2F1486, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUI16FileDownloadDataA2dEP8assetURL10Foundation0K0VSgvgTW', symObjAddr: 0xEB0, symBinAddr: 0x25A840, symSize: 0x10 } + - { offset: 0x2F14C0, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonV8PenNavUI16FileDownloadDataA2dEP10downloadIdSiSgvgTW', symObjAddr: 0xEC0, symBinAddr: 0x25A850, symSize: 0x10 } + - { offset: 0x2F14FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerCMa', symObjAddr: 0xED0, symBinAddr: 0x25A860, symSize: 0x20 } + - { offset: 0x2F16B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC03getD10ByFloorIdsySay7Penguin10PoiPolygonVGSaySiSgGF', symObjAddr: 0x210, symBinAddr: 0x259BC0, symSize: 0x210 } + - { offset: 0x2F19C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC03getD12ByCategoryId05floorI008categoryI0Say7Penguin10PoiPolygonVGSi_SitF', symObjAddr: 0x420, symBinAddr: 0x259DD0, symSize: 0x1F0 } + - { offset: 0x2F1BF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC10getPoiByIdy7Penguin0G7PolygonVSgSiSgF', symObjAddr: 0x610, symBinAddr: 0x259FC0, symSize: 0x240 } + - { offset: 0x2F1E8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC014getCategorizedD02in8categorySay7Penguin10PoiPolygonVGAG5VenueCSg_AG11POICategoryVSgtFSbAIXEfU_', symObjAddr: 0x850, symBinAddr: 0x25A200, symSize: 0x120 } + - { offset: 0x2F1ED1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoisManagerC24getPoiListForDownloadingSay7Penguin0G7PolygonVGyF', symObjAddr: 0x970, symBinAddr: 0x25A320, symSize: 0x450 } + - { offset: 0x2F2A63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC14loadCategoriesyyF', symObjAddr: 0x520, symBinAddr: 0x25ADA0, symSize: 0xC0 } + - { offset: 0x2F2B73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCfE', symObjAddr: 0x610, symBinAddr: 0x25AE90, symSize: 0x180 } + - { offset: 0x2F2BA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCfETo', symObjAddr: 0x920, symBinAddr: 0x25B1A0, symSize: 0x170 } + - { offset: 0x2F2D9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCMa', symObjAddr: 0x13C0, symBinAddr: 0x25BC40, symSize: 0x20 } + - { offset: 0x2F2DBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC16numberOfSections2inSiSo07UITableE0C_tFTo', symObjAddr: 0x13E0, symBinAddr: 0x25BC60, symSize: 0x10 } + - { offset: 0x2F2E00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTo', symObjAddr: 0x13F0, symBinAddr: 0x25BC70, symSize: 0x60 } + - { offset: 0x2F30EC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtF', symObjAddr: 0x1450, symBinAddr: 0x25BCD0, symSize: 0x9E0 } + - { offset: 0x2F36CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyAA8FavoriteCcfU1_', symObjAddr: 0x20D0, symBinAddr: 0x25C950, symSize: 0x80 } + - { offset: 0x2F3729, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFSb7Penguin11POICategoryV_AOtXEfU3_', symObjAddr: 0x21D0, symBinAddr: 0x25C9D0, symSize: 0xB0 } + - { offset: 0x2F377C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU4_', symObjAddr: 0x2280, symBinAddr: 0x25CA80, symSize: 0xB0 } + - { offset: 0x2F37F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU7_', symObjAddr: 0x23C0, symBinAddr: 0x25CBC0, symSize: 0x80 } + - { offset: 0x2F384E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU9_', symObjAddr: 0x29A0, symBinAddr: 0x25D150, symSize: 0x1D0 } + - { offset: 0x2F3A67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC19showMyLocationSheet33_D0641B0FFCA1271976891547CEED6A97LLyyF', symObjAddr: 0x1E30, symBinAddr: 0x25C6B0, symSize: 0x2A0 } + - { offset: 0x2F3C69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC17didTapShareButton33_D0641B0FFCA1271976891547CEED6A97LLyyF', symObjAddr: 0x2490, symBinAddr: 0x25CC40, symSize: 0x510 } + - { offset: 0x2F4012, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2B70, symBinAddr: 0x25D320, symSize: 0xB0 } + - { offset: 0x2F404C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableE0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x2C20, symBinAddr: 0x25D3D0, symSize: 0x70 } + - { offset: 0x2F4089, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC06scrollE9DidScrollyySo08UIScrollE0CF', symObjAddr: 0x2C90, symBinAddr: 0x25D440, symSize: 0x50 } + - { offset: 0x2F4102, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC06scrollE9DidScrollyySo08UIScrollE0CFTo', symObjAddr: 0x2CE0, symBinAddr: 0x25D490, symSize: 0x50 } + - { offset: 0x2F4186, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC17shareUserLocation33_D0641B0FFCA1271976891547CEED6A97LLyyF', symObjAddr: 0x2D30, symBinAddr: 0x25D4E0, symSize: 0xE0 } + - { offset: 0x2F423F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC17shareUserLocation33_D0641B0FFCA1271976891547CEED6A97LLyyFySSSgcfU_', symObjAddr: 0x2E10, symBinAddr: 0x25D5C0, symSize: 0x4E0 } + - { offset: 0x2F4468, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC14layoutForPanelAA08FloatingI6Layout_pyFTo', symObjAddr: 0x32F0, symBinAddr: 0x25DAA0, symSize: 0xA0 } + - { offset: 0x2F4514, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC16behaviorForPanelAA08FloatingI8Behavior_pyFTo', symObjAddr: 0x3390, symBinAddr: 0x25DB40, symSize: 0x30 } + - { offset: 0x2F4589, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC10setupPanelyyF', symObjAddr: 0x33C0, symBinAddr: 0x25DB70, symSize: 0xC0 } + - { offset: 0x2F4628, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC10setupPanelyyFTo', symObjAddr: 0x3480, symBinAddr: 0x25DC30, symSize: 0x30 } + - { offset: 0x2F4666, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x34B0, symBinAddr: 0x25DC60, symSize: 0x210 } + - { offset: 0x2F4872, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CFTo', symObjAddr: 0x36C0, symBinAddr: 0x25DE70, symSize: 0x50 } + - { offset: 0x2F48AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC28searchBarTextDidBeginEditingyyAA06SearchH0CF', symObjAddr: 0x3710, symBinAddr: 0x25DEC0, symSize: 0x460 } + - { offset: 0x2F4C67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC28searchBarTextDidBeginEditingyyAA06SearchH0CFyycACcfu_yycfu0_', symObjAddr: 0x3B70, symBinAddr: 0x25E320, symSize: 0x40 } + - { offset: 0x2F4CB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCAA17SearchBarDelegateA2aDP06searchH19TextDidBeginEditingyyAA0gH0CFTW', symObjAddr: 0x3BB0, symBinAddr: 0x25E360, symSize: 0x10 } + - { offset: 0x2F4CD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtF', symObjAddr: 0x3BC0, symBinAddr: 0x25E370, symSize: 0x290 } + - { offset: 0x2F4EB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0x3ED0, symBinAddr: 0x25E600, symSize: 0x10 } + - { offset: 0x2F4F30, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin11POICategoryV_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lo39C_10Foundation9IndexPathVtFSb7Penguin11F11V_AOtXEfU3_Tf1cn_n', symObjAddr: 0x3F20, symBinAddr: 0x25E610, symSize: 0x100 } + - { offset: 0x2F5155, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin11POICategoryV_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lo39C_10Foundation9IndexPathVtFSb7Penguin11F11V_AOtXEfU3_Tf1nnncn_n', symObjAddr: 0x4020, symBinAddr: 0x25E710, symSize: 0x990 } + - { offset: 0x2F5626, size: 0x8, addend: 0x0, symName: '_$sSMsSKRzrlE14_insertionSort6within9sortedEnd2byySny5IndexSlQzG_AFSb7ElementSTQz_AItKXEtKFSry7Penguin11POICategoryVG_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0ls15C_10Foundation9g19PathVtFSb7Penguin11J11V_AOtXEfU3_Tf1nncn_n', symObjAddr: 0x49B0, symBinAddr: 0x25F0A0, symSize: 0x2A0 } + - { offset: 0x2F57B6, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin11POICategoryV_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lp39C_10Foundation9IndexPathVtFSb7Penguin11G11V_AOtXEfU3_Tf1nncn_n', symObjAddr: 0x4C50, symBinAddr: 0x25F340, symSize: 0x2E0 } + - { offset: 0x2F5B4D, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin11POICategoryV_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lq39C_10Foundation9IndexPathVtFSb7Penguin11H11V_AOtXEfU3_Tf1nnnnc_n', symObjAddr: 0x4F30, symBinAddr: 0x25F620, symSize: 0x650 } + - { offset: 0x2F5C8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC28searchBarTextDidBeginEditingyyAA06SearchH0CFyycACcfu_yycfu0_TA', symObjAddr: 0x55B0, symBinAddr: 0x25FCA0, symSize: 0x10 } + - { offset: 0x2F5CA3, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x5600, symBinAddr: 0x25FCD0, symSize: 0x20 } + - { offset: 0x2F5CB7, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x5620, symBinAddr: 0x25FCF0, symSize: 0x10 } + - { offset: 0x2F5CCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU8_TA', symObjAddr: 0x5660, symBinAddr: 0x25FD20, symSize: 0x20 } + - { offset: 0x2F5CDF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU9_TA', symObjAddr: 0x5680, symBinAddr: 0x25FD40, symSize: 0x10 } + - { offset: 0x2F5CF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFy7Penguin10PoiPolygonVcfU6_TA', symObjAddr: 0x5690, symBinAddr: 0x25FD50, symSize: 0x30 } + - { offset: 0x2F5D07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU7_TA', symObjAddr: 0x56E0, symBinAddr: 0x25FD80, symSize: 0x10 } + - { offset: 0x2F5D1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU4_TA', symObjAddr: 0x56F0, symBinAddr: 0x25FD90, symSize: 0x10 } + - { offset: 0x2F5D2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFy7Penguin11POICategoryVcfU5_TA', symObjAddr: 0x5700, symBinAddr: 0x25FDA0, symSize: 0x30 } + - { offset: 0x2F5D43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU2_TA', symObjAddr: 0x5730, symBinAddr: 0x25FDD0, symSize: 0x20 } + - { offset: 0x2F5D57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU0_TA', symObjAddr: 0x5750, symBinAddr: 0x25FDF0, symSize: 0x20 } + - { offset: 0x2F5D6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyAA8FavoriteCcfU1_TA', symObjAddr: 0x5770, symBinAddr: 0x25FE10, symSize: 0x10 } + - { offset: 0x2F5D7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lE0C_10Foundation9IndexPathVtFyycfU_TA', symObjAddr: 0x5780, symBinAddr: 0x25FE20, symSize: 0x20 } + - { offset: 0x2F5D93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC17didTapShareButton33_D0641B0FFCA1271976891547CEED6A97LLyyFyycACcfu_yycfu0_TA', symObjAddr: 0x57C0, symBinAddr: 0x25FE40, symSize: 0x20 } + - { offset: 0x2F5DC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC16numberOfSections2inSiSo07UITableE0C_tFTf4dd_n', symObjAddr: 0x5AA0, symBinAddr: 0x260090, symSize: 0xA0 } + - { offset: 0x2F5EBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0_21numberOfRowsInSectionSiSo07UITableE0C_SitFTf4dnn_n', symObjAddr: 0x5B40, symBinAddr: 0x260130, symSize: 0x1F0 } + - { offset: 0x2F60F8, size: 0x8, addend: 0x0, symName: '_$sSo15UITableViewCellCMa', symObjAddr: 0x5D30, symBinAddr: 0x260320, symSize: 0x40 } + - { offset: 0x2F6126, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin11POICategoryVG_Tg5078$s8PenNavUI18MainViewControllerC05tableE0_12cellForRowAtSo07UITableE4CellCSo0lp39C_10Foundation9IndexPathVtFSb7Penguin11G11V_AOtXEfU3_Tf1cn_n', symObjAddr: 0x0, symBinAddr: 0x25A880, symSize: 0x80 } + - { offset: 0x2F6628, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC9searchBarAA06SearchH0CSgvgTo', symObjAddr: 0x80, symBinAddr: 0x25A900, symSize: 0x20 } + - { offset: 0x2F6680, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC9searchBarAA06SearchH0CSgvsTo', symObjAddr: 0xA0, symBinAddr: 0x25A920, symSize: 0x30 } + - { offset: 0x2F6876, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0So07UITableE0CSgvgTo', symObjAddr: 0xD0, symBinAddr: 0x25A950, symSize: 0x20 } + - { offset: 0x2F68CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC05tableE0So07UITableE0CSgvsTo', symObjAddr: 0xF0, symBinAddr: 0x25A970, symSize: 0x30 } + - { offset: 0x2F691D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC09separatorE0So6UIViewCSgvgTo', symObjAddr: 0x120, symBinAddr: 0x25A9A0, symSize: 0x20 } + - { offset: 0x2F6975, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC09separatorE0So6UIViewCSgvsTo', symObjAddr: 0x140, symBinAddr: 0x25A9C0, symSize: 0x30 } + - { offset: 0x2F69C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC14tryAgainButtonSo8UIButtonCSgvgTo', symObjAddr: 0x170, symBinAddr: 0x25A9F0, symSize: 0x20 } + - { offset: 0x2F6A1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC14tryAgainButtonSo8UIButtonCSgvsTo', symObjAddr: 0x190, symBinAddr: 0x25AA10, symSize: 0x30 } + - { offset: 0x2F6B72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC11viewDidLoadyyF', symObjAddr: 0x1C0, symBinAddr: 0x25AA40, symSize: 0x360 } + - { offset: 0x2F6DFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x5E0, symBinAddr: 0x25AE60, symSize: 0x30 } + - { offset: 0x2F6E13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCfD', symObjAddr: 0x790, symBinAddr: 0x25B010, symSize: 0xC0 } + - { offset: 0x2F6E53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerCfDTo', symObjAddr: 0x850, symBinAddr: 0x25B0D0, symSize: 0xD0 } + - { offset: 0x2F6E8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC24updateParkingElapsedTimeyyF', symObjAddr: 0xA90, symBinAddr: 0x25B310, symSize: 0x180 } + - { offset: 0x2F70AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC24updateParkingElapsedTimeyyFTo', symObjAddr: 0xC10, symBinAddr: 0x25B490, symSize: 0x30 } + - { offset: 0x2F719F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC23feedbackSheetDidDismissyyF', symObjAddr: 0xC40, symBinAddr: 0x25B4C0, symSize: 0x120 } + - { offset: 0x2F736A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC15retryConnectionyyFTo', symObjAddr: 0xD60, symBinAddr: 0x25B5E0, symSize: 0x90 } + - { offset: 0x2F745C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0xDF0, symBinAddr: 0x25B670, symSize: 0x2B0 } + - { offset: 0x2F764A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x10A0, symBinAddr: 0x25B920, symSize: 0x50 } + - { offset: 0x2F765E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x10F0, symBinAddr: 0x25B970, symSize: 0x2A0 } + - { offset: 0x2F783E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1390, symBinAddr: 0x25BC10, symSize: 0x30 } + - { offset: 0x2F7F78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC24showsUserLocationSection33_D0641B0FFCA1271976891547CEED6A97LLSbvgTf4d_n', symObjAddr: 0x5870, symBinAddr: 0x25FE60, symSize: 0x1A0 } + - { offset: 0x2F80B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18MainViewControllerC19showsParkingSection33_D0641B0FFCA1271976891547CEED6A97LLSbvgTf4d_n', symObjAddr: 0x5A10, symBinAddr: 0x260000, symSize: 0x90 } + - { offset: 0x2F8A4B, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE12scheduleDaysSayAA0E3DayVGvg', symObjAddr: 0x0, symBinAddr: 0x260380, symSize: 0x2E0 } + - { offset: 0x2F8ED2, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE10isTodayOffSbvg', symObjAddr: 0x2E0, symBinAddr: 0x260660, symSize: 0x250 } + - { offset: 0x2F921D, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE6isOpenSbvg', symObjAddr: 0x530, symBinAddr: 0x2608B0, symSize: 0x500 } + - { offset: 0x2F9605, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE17todayOpeningHoursSSSgvg', symObjAddr: 0xA30, symBinAddr: 0x260DB0, symSize: 0x1E0 } + - { offset: 0x2F97C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC7addressSSvg', symObjAddr: 0xDD0, symBinAddr: 0x260F90, symSize: 0x1E0 } + - { offset: 0x2F9A50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataCMa', symObjAddr: 0x1280, symBinAddr: 0x2613D0, symSize: 0x20 } + - { offset: 0x2F9A64, size: 0x8, addend: 0x0, symName: '_$sSa8PenNavUI7Penguin8ScheduleCRszlE9isOpenNowSbvg', symObjAddr: 0x12A0, symBinAddr: 0x2613F0, symSize: 0x3C0 } + - { offset: 0x2FA0CA, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonVSgWOc', symObjAddr: 0x3A90, symBinAddr: 0x262030, symSize: 0x40 } + - { offset: 0x2FA12D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7POIDataC11FloorObjectVSgWOy', symObjAddr: 0x40B0, symBinAddr: 0x262620, symSize: 0x30 } + - { offset: 0x2FA37B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC9amenitiesSayAA9AmenitiesVGSgvM', symObjAddr: 0xFB0, symBinAddr: 0x261170, symSize: 0x30 } + - { offset: 0x2FA38F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC6imagesSaySSGSgvM', symObjAddr: 0xFE0, symBinAddr: 0x2611A0, symSize: 0x30 } + - { offset: 0x2FA3A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC8scheduleSay7Penguin8ScheduleCGSgvM', symObjAddr: 0x1020, symBinAddr: 0x2611D0, symSize: 0x30 } + - { offset: 0x2FA3B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC012setupOfflineF0yyF', symObjAddr: 0x10B0, symBinAddr: 0x261200, symSize: 0x120 } + - { offset: 0x2FA429, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataCfd', symObjAddr: 0x11D0, symBinAddr: 0x261320, symSize: 0x90 } + - { offset: 0x2FA44C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataCfD', symObjAddr: 0x1260, symBinAddr: 0x2613B0, symSize: 0x20 } + - { offset: 0x2FA56C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC3poiAC7Penguin0D7PolygonVSg_tcfCTf4nd_n', symObjAddr: 0x3210, symBinAddr: 0x2617B0, symSize: 0x880 } + - { offset: 0x2FA996, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11PoiViewDataC05placeF0AcA7POIDataC_tcfCTf4nd_n', symObjAddr: 0x3B00, symBinAddr: 0x262070, symSize: 0x5B0 } + - { offset: 0x2FAEAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC12messageTitleSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x262650, symSize: 0x20 } + - { offset: 0x2FB099, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellCfETo', symObjAddr: 0x3E0, symBinAddr: 0x262A30, symSize: 0x30 } + - { offset: 0x2FB0C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellCMa', symObjAddr: 0x410, symBinAddr: 0x262A60, symSize: 0x14 } + - { offset: 0x2FB16A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC12messageTitleSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x262650, symSize: 0x20 } + - { offset: 0x2FB1CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC12messageTitleSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x262670, symSize: 0x20 } + - { offset: 0x2FB21D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC18messageDescriptionSo7UILabelCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x262690, symSize: 0x20 } + - { offset: 0x2FB272, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC18messageDescriptionSo7UILabelCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x2626B0, symSize: 0x20 } + - { offset: 0x2FB2C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC12awakeFromNibyyFTo', symObjAddr: 0x80, symBinAddr: 0x2626D0, symSize: 0x60 } + - { offset: 0x2FB337, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0xE0, symBinAddr: 0x262730, symSize: 0x50 } + - { offset: 0x2FB38A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC03setdE07messageyAA0dE0C_tF', symObjAddr: 0x130, symBinAddr: 0x262780, symSize: 0x110 } + - { offset: 0x2FB420, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x240, symBinAddr: 0x262890, symSize: 0xD0 } + - { offset: 0x2FB49E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x310, symBinAddr: 0x262960, symSize: 0xA0 } + - { offset: 0x2FB4D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17MessageDetailCellCfD', symObjAddr: 0x3B0, symBinAddr: 0x262A00, symSize: 0x30 } + - { offset: 0x2FB860, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10parseImageyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x262A80, symSize: 0x310 } + - { offset: 0x2FB8D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV10parseImageyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x262A80, symSize: 0x310 } + - { offset: 0x2FBE2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ScrollViewCMa', symObjAddr: 0xC0, symBinAddr: 0x262E50, symSize: 0x20 } + - { offset: 0x2FBE89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20InteractiveTableViewCMa', symObjAddr: 0x2A0, symBinAddr: 0x263030, symSize: 0x14 } + - { offset: 0x2FBEC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10ScrollViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x20, symBinAddr: 0x262DB0, symSize: 0x60 } + - { offset: 0x2FBF51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20InteractiveTableViewC5frame5styleACSo6CGRectV_So07UITableF5StyleVtcfcTo', symObjAddr: 0x160, symBinAddr: 0x262EF0, symSize: 0x60 } + - { offset: 0x2FC650, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC23displayFirstInstructionyyF', symObjAddr: 0x0, symBinAddr: 0x263050, symSize: 0x6B0 } + - { offset: 0x2FC9E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC22handleVoiceInstruction4text4type8distance06isLastI0ySSSg_AISdSgSbtF', symObjAddr: 0x6B0, symBinAddr: 0x263700, symSize: 0x4B0 } + - { offset: 0x2FD028, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC31shouldDisplayGoAheadInstructionSbyF', symObjAddr: 0xB60, symBinAddr: 0x263BB0, symSize: 0x380 } + - { offset: 0x2FD29F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC25displayGoAheadInstructionyyF', symObjAddr: 0xEE0, symBinAddr: 0x263F30, symSize: 0xC60 } + - { offset: 0x2FD9A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC30displayUpcomingTurnInstructionyyF', symObjAddr: 0x1B40, symBinAddr: 0x264B90, symSize: 0x1140 } + - { offset: 0x2FE586, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC29displayLastGoAheadInstructionyyF', symObjAddr: 0x2C80, symBinAddr: 0x265CD0, symSize: 0xFB0 } + - { offset: 0x2FEFFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC26displayElevatorInstruction12upcomingTurny7Penguin11SubpathEdgeC_tF', symObjAddr: 0x3C30, symBinAddr: 0x266C80, symSize: 0x4E0 } + - { offset: 0x2FF409, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC27displayEscalatorInstruction12upcomingTurny7Penguin11SubpathEdgeC_tF', symObjAddr: 0x4110, symBinAddr: 0x267160, symSize: 0x390 } + - { offset: 0x2FF70C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24NavigationViewControllerC9speakText4textySS_tFTf4nd_n', symObjAddr: 0x4570, symBinAddr: 0x2675C0, symSize: 0x80 } + - { offset: 0x2FF79C, size: 0x8, addend: 0x0, symName: '_$s7Penguin13FloorSettingsVSgWOh', symObjAddr: 0x4820, symBinAddr: 0x2677D0, symSize: 0x30 } + - { offset: 0x2FFFAF, size: 0x8, addend: 0x0, symName: '_$sSo19NSRegularExpressionC7pattern7optionsABSS_So0aB7OptionsVtKcfcTO', symObjAddr: 0x44A0, symBinAddr: 0x2674F0, symSize: 0xD0 } + - { offset: 0x300393, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4zeroAEvpZ', symObjAddr: 0x8D70, symBinAddr: 0x3A7078, symSize: 0x0 } + - { offset: 0x3009EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7fileURL7optionsACSg10Foundation0F0V_AC7OptionsVtcfC', symObjAddr: 0x0, symBinAddr: 0x267800, symSize: 0x110 } + - { offset: 0x300B74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC5named2in7optionsACSgSS_So8NSBundleCAC7OptionsVtcfC', symObjAddr: 0x130, symBinAddr: 0x267920, symSize: 0x250 } + - { offset: 0x300D44, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC4data7optionsACSg10Foundation4DataV_AC7OptionsVtcfC', symObjAddr: 0x380, symBinAddr: 0x267B70, symSize: 0xE0 } + - { offset: 0x300E70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGCfETo', symObjAddr: 0x7A0, symBinAddr: 0x267DA0, symSize: 0x20 } + - { offset: 0x300E9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4zero_WZ', symObjAddr: 0x8F0, symBinAddr: 0x267E80, symSize: 0x20 } + - { offset: 0x3016A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs9OptionSetAASYWb', symObjAddr: 0x8860, symBinAddr: 0x26FDA0, symSize: 0x10 } + - { offset: 0x3016B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVAESYAAWl', symObjAddr: 0x8870, symBinAddr: 0x26FDB0, symSize: 0x30 } + - { offset: 0x3016CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs9OptionSetAAs0G7AlgebraPWb', symObjAddr: 0x88A0, symBinAddr: 0x26FDE0, symSize: 0x10 } + - { offset: 0x3016DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVAEs10SetAlgebraAAWl', symObjAddr: 0x88B0, symBinAddr: 0x26FDF0, symSize: 0x30 } + - { offset: 0x3016F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs10SetAlgebraAASQWb', symObjAddr: 0x88E0, symBinAddr: 0x26FE20, symSize: 0x10 } + - { offset: 0x301707, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVAESQAAWl', symObjAddr: 0x88F0, symBinAddr: 0x26FE30, symSize: 0x30 } + - { offset: 0x30171B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs10SetAlgebraAAs25ExpressibleByArrayLiteralPWb', symObjAddr: 0x8920, symBinAddr: 0x26FE60, symSize: 0x10 } + - { offset: 0x30172F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVAEs25ExpressibleByArrayLiteralAAWl', symObjAddr: 0x8930, symBinAddr: 0x26FE70, symSize: 0x30 } + - { offset: 0x301743, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGCMa', symObjAddr: 0x8960, symBinAddr: 0x26FEA0, symSize: 0x20 } + - { offset: 0x301757, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVMa', symObjAddr: 0x8A00, symBinAddr: 0x26FEE0, symSize: 0x10 } + - { offset: 0x30176B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsVMa', symObjAddr: 0x8AB0, symBinAddr: 0x26FEF0, symSize: 0x10 } + - { offset: 0x301809, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsVs25ExpressibleByArrayLiteralAAsAFP05arrayI0x0hI7ElementQzd_tcfCTW', symObjAddr: 0x6E0, symBinAddr: 0x267CE0, symSize: 0x10 } + - { offset: 0x301A7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsV8rawValueAESi_tcfC', symObjAddr: 0x110, symBinAddr: 0x267910, symSize: 0x10 } + - { offset: 0x301AD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4zeroAEvgZ', symObjAddr: 0x460, symBinAddr: 0x267C50, symSize: 0x50 } + - { offset: 0x301B00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC4sizeSo6CGSizeVvg', symObjAddr: 0x4B0, symBinAddr: 0x267CA0, symSize: 0x20 } + - { offset: 0x301B23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsV8rawValueSivg', symObjAddr: 0x4D0, symBinAddr: 0x267CC0, symSize: 0x10 } + - { offset: 0x301B37, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC7OptionsV22hideUnsupportedFiltersAEvgZ', symObjAddr: 0x4E0, symBinAddr: 0x267CD0, symSize: 0x10 } + - { offset: 0x301B8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGCACycfC', symObjAddr: 0x6F0, symBinAddr: 0x267CF0, symSize: 0x20 } + - { offset: 0x301B9F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGCACycfc', symObjAddr: 0x710, symBinAddr: 0x267D10, symSize: 0x30 } + - { offset: 0x301BF8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGCACycfcTo', symObjAddr: 0x740, symBinAddr: 0x267D40, symSize: 0x30 } + - { offset: 0x301C57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGCfD', symObjAddr: 0x770, symBinAddr: 0x267D70, symSize: 0x30 } + - { offset: 0x301C7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvg', symObjAddr: 0x7C0, symBinAddr: 0x267DC0, symSize: 0x10 } + - { offset: 0x301C8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV3top12CoreGraphics7CGFloatVvs', symObjAddr: 0x7D0, symBinAddr: 0x267DD0, symSize: 0x10 } + - { offset: 0x301CC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvg', symObjAddr: 0x800, symBinAddr: 0x267DE0, symSize: 0x10 } + - { offset: 0x301CD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvs', symObjAddr: 0x810, symBinAddr: 0x267DF0, symSize: 0x10 } + - { offset: 0x301D06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV4left12CoreGraphics7CGFloatVvM', symObjAddr: 0x820, symBinAddr: 0x267E00, symSize: 0x20 } + - { offset: 0x301D2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvg', symObjAddr: 0x850, symBinAddr: 0x267E20, symSize: 0x10 } + - { offset: 0x301D3E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV6bottom12CoreGraphics7CGFloatVvs', symObjAddr: 0x860, symBinAddr: 0x267E30, symSize: 0x10 } + - { offset: 0x301D70, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvg', symObjAddr: 0x8A0, symBinAddr: 0x267E40, symSize: 0x10 } + - { offset: 0x301D84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvs', symObjAddr: 0x8B0, symBinAddr: 0x267E50, symSize: 0x10 } + - { offset: 0x301DB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV5right12CoreGraphics7CGFloatVvM', symObjAddr: 0x8C0, symBinAddr: 0x267E60, symSize: 0x20 } + - { offset: 0x301DE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV2eeoiySbAE_AEtFZ', symObjAddr: 0x910, symBinAddr: 0x267EA0, symSize: 0x10 } + - { offset: 0x3026D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA10CGProviderV_Tg5Tf4nnnen_nAA09LuminanceuN0V_Tg5', symObjAddr: 0x930, symBinAddr: 0x267EB0, symSize: 0x2900 } + - { offset: 0x304B9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA10CGProviderV_Tg5Tf4nnnen_nAA07DefaultuN0V_Tg5', symObjAddr: 0x3230, symBinAddr: 0x26A7B0, symSize: 0x2780 } + - { offset: 0x307690, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0D0C_AA05ColorL0_ptFAA10CGProviderV_Tg5Tf4nen_nAA09LuminanceoL0V_Tg5', symObjAddr: 0x59B0, symBinAddr: 0x26CF30, symSize: 0x1190 } + - { offset: 0x308CBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0D0C_AA05ColorL0_ptFAA10CGProviderV_Tg5Tf4nen_nAA07DefaultoL0V_Tg5', symObjAddr: 0x6B40, symBinAddr: 0x26E0C0, symSize: 0x1110 } + - { offset: 0x30A1CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC6InsetsV2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x7C50, symBinAddr: 0x26F1D0, symSize: 0x50 } + - { offset: 0x30A256, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3SVGC3dom7optionsAcA3DOMOABC_AC7OptionsVtcfcTf4gnn_n', symObjAddr: 0x86E0, symBinAddr: 0x26FC20, symSize: 0x180 } + - { offset: 0x30A749, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18originalDismissImp33_73EE1AFD99A8C7D37AD8BE1B977755A6LLs13OpaquePointerVSgvp', symObjAddr: 0x6E70, symBinAddr: 0x3A7100, symSize: 0x0 } + - { offset: 0x30B5F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvpACTk', symObjAddr: 0x870, symBinAddr: 0x270640, symSize: 0x40 } + - { offset: 0x30B785, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvpACTK', symObjAddr: 0x4F80, symBinAddr: 0x274C30, symSize: 0x70 } + - { offset: 0x30B7E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvpACTk', symObjAddr: 0x4FF0, symBinAddr: 0x274CA0, symSize: 0x70 } + - { offset: 0x30B855, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerCfETo', symObjAddr: 0x51F0, symBinAddr: 0x274EA0, symSize: 0x70 } + - { offset: 0x30B8B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16dismissSwizzling33_73EE1AFD99A8C7D37AD8BE1B977755A6LL_WZ', symObjAddr: 0x5260, symBinAddr: 0x274F10, symSize: 0x70 } + - { offset: 0x30B916, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE18__swizzled_dismiss33_73EE1AFD99A8C7D37AD8BE1B977755A6LL8animated10completionySb_yycSgtF', symObjAddr: 0x52D0, symBinAddr: 0x274F80, symSize: 0x2F0 } + - { offset: 0x30B9C9, size: 0x8, addend: 0x0, symName: '_$sSo16UIViewControllerC8PenNavUIE18__swizzled_dismiss33_73EE1AFD99A8C7D37AD8BE1B977755A6LL8animated10completionySb_yycSgtFTo', symObjAddr: 0x55C0, symBinAddr: 0x275270, symSize: 0x90 } + - { offset: 0x30BB0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerCMa', symObjAddr: 0x5EE0, symBinAddr: 0x275B20, symSize: 0x20 } + - { offset: 0x30BB36, size: 0x8, addend: 0x0, symName: _keypath_get_selector_safeAreaInsets, symObjAddr: 0x6080, symBinAddr: 0x275CC0, symSize: 0x10 } + - { offset: 0x30BB4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtFySo6UIViewC_10Foundation24NSKeyValueObservedChangeVySo12UIEdgeInsetsVGtYbcfU_TA', symObjAddr: 0x60F0, symBinAddr: 0x275D30, symSize: 0x10 } + - { offset: 0x30BB5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtFyycfU_TA', symObjAddr: 0x6140, symBinAddr: 0x275D80, symSize: 0x20 } + - { offset: 0x30BB72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorOSHAASQWb', symObjAddr: 0x61D0, symBinAddr: 0x275DD0, symSize: 0x10 } + - { offset: 0x30BB86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorOAESQAAWl', symObjAddr: 0x61E0, symBinAddr: 0x275DE0, symSize: 0x30 } + - { offset: 0x30BB9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11ContentModeOSHAASQWb', symObjAddr: 0x6210, symBinAddr: 0x275E10, symSize: 0x10 } + - { offset: 0x30BBAE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11ContentModeOAESQAAWl', symObjAddr: 0x6220, symBinAddr: 0x275E20, symSize: 0x30 } + - { offset: 0x30BBC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30ContentInsetAdjustmentBehaviorOMa', symObjAddr: 0x6B00, symBinAddr: 0x276500, symSize: 0x10 } + - { offset: 0x30BBD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11ContentModeOMa', symObjAddr: 0x6B10, symBinAddr: 0x276510, symSize: 0x10 } + - { offset: 0x30BBF5, size: 0x8, addend: 0x0, symName: '_$sIeyB_Ieg_TRTA', symObjAddr: 0x6B60, symBinAddr: 0x276540, symSize: 0x10 } + - { offset: 0x30BC1E, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x6B70, symBinAddr: 0x276550, symSize: 0x20 } + - { offset: 0x30BC32, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x6B90, symBinAddr: 0x276570, symSize: 0x10 } + - { offset: 0x30BC46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyFyycfU0_TA', symObjAddr: 0x6BA0, symBinAddr: 0x276580, symSize: 0x10 } + - { offset: 0x30BC5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyFyycfU_TA', symObjAddr: 0x6BB0, symBinAddr: 0x276590, symSize: 0x10 } + - { offset: 0x30BFFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvgTo', symObjAddr: 0x140, symBinAddr: 0x26FF10, symSize: 0x40 } + - { offset: 0x30C034, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvg', symObjAddr: 0x180, symBinAddr: 0x26FF50, symSize: 0x40 } + - { offset: 0x30C053, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvsTo', symObjAddr: 0x1C0, symBinAddr: 0x26FF90, symSize: 0x40 } + - { offset: 0x30C0E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvs', symObjAddr: 0x200, symBinAddr: 0x26FFD0, symSize: 0x150 } + - { offset: 0x30C1FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvM', symObjAddr: 0x350, symBinAddr: 0x270120, symSize: 0x80 } + - { offset: 0x30C238, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAA0deF8Delegate_pSgvM.resume.0', symObjAddr: 0x3D0, symBinAddr: 0x2701A0, symSize: 0x170 } + - { offset: 0x30C3C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvgTo', symObjAddr: 0x600, symBinAddr: 0x2703D0, symSize: 0x30 } + - { offset: 0x30C3F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvgTo', symObjAddr: 0x600, symBinAddr: 0x2703D0, symSize: 0x30 } + - { offset: 0x30C445, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18trackingScrollViewSo08UIScrollI0CSgvg', symObjAddr: 0x630, symBinAddr: 0x270400, symSize: 0x30 } + - { offset: 0x30C4E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvgTo', symObjAddr: 0x780, symBinAddr: 0x270550, symSize: 0x40 } + - { offset: 0x30C527, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvgTo', symObjAddr: 0x780, symBinAddr: 0x270550, symSize: 0x40 } + - { offset: 0x30C578, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvg', symObjAddr: 0x7C0, symBinAddr: 0x270590, symSize: 0x30 } + - { offset: 0x30C604, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvsTo', symObjAddr: 0x7F0, symBinAddr: 0x2705C0, symSize: 0x50 } + - { offset: 0x30C626, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvs', symObjAddr: 0x840, symBinAddr: 0x270610, symSize: 0x30 } + - { offset: 0x30C63A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvM', symObjAddr: 0x8B0, symBinAddr: 0x270680, symSize: 0x50 } + - { offset: 0x30C6D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvM.resume.0', symObjAddr: 0x900, symBinAddr: 0x2706D0, symSize: 0x70 } + - { offset: 0x30C742, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvgTo', symObjAddr: 0x970, symBinAddr: 0x270740, symSize: 0x40 } + - { offset: 0x30C788, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvgTo', symObjAddr: 0x970, symBinAddr: 0x270740, symSize: 0x40 } + - { offset: 0x30C7B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvg', symObjAddr: 0x9B0, symBinAddr: 0x270780, symSize: 0x30 } + - { offset: 0x30C81E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvsTo', symObjAddr: 0x9E0, symBinAddr: 0x2707B0, symSize: 0x40 } + - { offset: 0x30C875, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvs', symObjAddr: 0xA20, symBinAddr: 0x2707F0, symSize: 0x300 } + - { offset: 0x30CA86, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvM', symObjAddr: 0xD20, symBinAddr: 0x270AF0, symSize: 0x50 } + - { offset: 0x30CB06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8behaviorAA0dE8Behavior_pvM.resume.0', symObjAddr: 0xD70, symBinAddr: 0x270B40, symSize: 0x40 } + - { offset: 0x30CB3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0VvgTo', symObjAddr: 0xDB0, symBinAddr: 0x270B80, symSize: 0xB0 } + - { offset: 0x30CB6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0VvgTo', symObjAddr: 0xDB0, symBinAddr: 0x270B80, symSize: 0xB0 } + - { offset: 0x30CB9A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21adjustedContentInsetsSo06UIEdgeI0Vvg', symObjAddr: 0xE60, symBinAddr: 0x270C30, symSize: 0x70 } + - { offset: 0x30CBFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvgTo', symObjAddr: 0xED0, symBinAddr: 0x270CA0, symSize: 0x40 } + - { offset: 0x30CC32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovg', symObjAddr: 0xF10, symBinAddr: 0x270CE0, symSize: 0x30 } + - { offset: 0x30CC74, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvsTo', symObjAddr: 0xF40, symBinAddr: 0x270D10, symSize: 0x40 } + - { offset: 0x30CCAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0Ovs', symObjAddr: 0xF80, symBinAddr: 0x270D50, symSize: 0x40 } + - { offset: 0x30CCD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC30contentInsetAdjustmentBehaviorAC07ContenthiJ0OvM', symObjAddr: 0xFC0, symBinAddr: 0x270D90, symSize: 0x40 } + - { offset: 0x30CD60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvsTo', symObjAddr: 0x1090, symBinAddr: 0x270E50, symSize: 0x30 } + - { offset: 0x30CDEB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvs', symObjAddr: 0x10C0, symBinAddr: 0x270E80, symSize: 0x30 } + - { offset: 0x30CE94, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM', symObjAddr: 0x10F0, symBinAddr: 0x270EB0, symSize: 0x40 } + - { offset: 0x30CF13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC27isRemovalInteractionEnabledSbvM.resume.0', symObjAddr: 0x1130, symBinAddr: 0x270EF0, symSize: 0x40 } + - { offset: 0x30D008, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvg', symObjAddr: 0x1190, symBinAddr: 0x270F50, symSize: 0x30 } + - { offset: 0x30D068, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvsTo', symObjAddr: 0x11C0, symBinAddr: 0x270F80, symSize: 0x60 } + - { offset: 0x30D0A3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvs', symObjAddr: 0x1220, symBinAddr: 0x270FE0, symSize: 0x20 } + - { offset: 0x30D0CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvM', symObjAddr: 0x1240, symBinAddr: 0x271000, symSize: 0x40 } + - { offset: 0x30D128, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC011contentViewF0So06UIViewF0CSgvM.resume.0', symObjAddr: 0x1280, symBinAddr: 0x271040, symSize: 0x60 } + - { offset: 0x30D186, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11nearbyStateAA0deH0Cvg', symObjAddr: 0x12E0, symBinAddr: 0x2710A0, symSize: 0x90 } + - { offset: 0x30D254, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvgTo', symObjAddr: 0x1370, symBinAddr: 0x271130, symSize: 0x40 } + - { offset: 0x30D288, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovg', symObjAddr: 0x13B0, symBinAddr: 0x271170, symSize: 0x30 } + - { offset: 0x30D2CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvsTo', symObjAddr: 0x13E0, symBinAddr: 0x2711A0, symSize: 0x60 } + - { offset: 0x30D300, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0Ovs', symObjAddr: 0x1440, symBinAddr: 0x271200, symSize: 0x40 } + - { offset: 0x30D371, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvW', symObjAddr: 0x1480, symBinAddr: 0x271240, symSize: 0x110 } + - { offset: 0x30D483, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvM', symObjAddr: 0x1590, symBinAddr: 0x271350, symSize: 0x40 } + - { offset: 0x30D4A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC11contentModeAC07ContentH0OvM.resume.0', symObjAddr: 0x15D0, symBinAddr: 0x271390, symSize: 0x30 } + - { offset: 0x30D505, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5coderACSgSo7NSCoderC_tcfC', symObjAddr: 0x1600, symBinAddr: 0x2713C0, symSize: 0x40 } + - { offset: 0x30D526, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1640, symBinAddr: 0x271400, symSize: 0x130 } + - { offset: 0x30D573, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1770, symBinAddr: 0x271530, symSize: 0x30 } + - { offset: 0x30D587, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x17A0, symBinAddr: 0x271560, symSize: 0x130 } + - { offset: 0x30D5D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x18D0, symBinAddr: 0x271690, symSize: 0x50 } + - { offset: 0x30D5E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAcA0deF8Delegate_pSg_tcfC', symObjAddr: 0x1920, symBinAddr: 0x2716E0, symSize: 0x30 } + - { offset: 0x30D5FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAcA0deF8Delegate_pSg_tcfc', symObjAddr: 0x1950, symBinAddr: 0x271710, symSize: 0x150 } + - { offset: 0x30D649, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8delegateAcA0deF8Delegate_pSg_tcfcTo', symObjAddr: 0x1AA0, symBinAddr: 0x271860, symSize: 0x30 } + - { offset: 0x30D6C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5setUp33_73EE1AFD99A8C7D37AD8BE1B977755A6LLyyF', symObjAddr: 0x1AD0, symBinAddr: 0x271890, symSize: 0x1A0 } + - { offset: 0x30D857, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8loadViewyyF', symObjAddr: 0x1C70, symBinAddr: 0x271A30, symSize: 0x200 } + - { offset: 0x30DA2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC8loadViewyyFTo', symObjAddr: 0x1E70, symBinAddr: 0x271C30, symSize: 0x30 } + - { offset: 0x30DA43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21viewDidLayoutSubviewsyyF', symObjAddr: 0x1EA0, symBinAddr: 0x271C60, symSize: 0x90 } + - { offset: 0x30DAE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC21viewDidLayoutSubviewsyyFTo', symObjAddr: 0x1F30, symBinAddr: 0x271CF0, symSize: 0x30 } + - { offset: 0x30DB1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC13viewDidAppearyySbFTo', symObjAddr: 0x1FD0, symBinAddr: 0x271D20, symSize: 0x90 } + - { offset: 0x30DB7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18viewWillTransition2to4withySo6CGSizeV_So06UIViewfI11Coordinator_ptF', symObjAddr: 0x2060, symBinAddr: 0x271DB0, symSize: 0x2E0 } + - { offset: 0x30DCCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18viewWillTransition2to4withySo6CGSizeV_So06UIViewfI11Coordinator_ptFTo', symObjAddr: 0x2340, symBinAddr: 0x272090, symSize: 0x60 } + - { offset: 0x30DCE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC14willTransition2to4withySo17UITraitCollectionC_So06UIViewfH11Coordinator_ptF', symObjAddr: 0x23A0, symBinAddr: 0x2720F0, symSize: 0x180 } + - { offset: 0x30DE13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC14willTransition2to4withySo17UITraitCollectionC_So06UIViewfH11Coordinator_ptFTo', symObjAddr: 0x2520, symBinAddr: 0x272270, symSize: 0x70 } + - { offset: 0x30DE8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC17viewWillDisappearyySbFTo', symObjAddr: 0x25E0, symBinAddr: 0x2722E0, symSize: 0x80 } + - { offset: 0x30DF23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6update33_73EE1AFD99A8C7D37AD8BE1B977755A6LL14safeAreaInsetsySo06UIEdgeS0V_tF', symObjAddr: 0x2660, symBinAddr: 0x272360, symSize: 0x430 } + - { offset: 0x30E336, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyF', symObjAddr: 0x2A90, symBinAddr: 0x272790, symSize: 0x2E0 } + - { offset: 0x30E4C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyFyycfU_', symObjAddr: 0x2D70, symBinAddr: 0x272A70, symSize: 0xB0 } + - { offset: 0x30E53D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6removeyyFyycfU0_', symObjAddr: 0x2E20, symBinAddr: 0x272B20, symSize: 0xF0 } + - { offset: 0x30E5E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtF', symObjAddr: 0x2F10, symBinAddr: 0x272C10, symSize: 0x1E0 } + - { offset: 0x30E7EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtFySo6UIViewC_10Foundation24NSKeyValueObservedChangeVySo12UIEdgeInsetsVGtYbcfU_', symObjAddr: 0x30F0, symBinAddr: 0x272DF0, symSize: 0x340 } + - { offset: 0x30E8D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4show8animated10completionySb_yycSgtFTo', symObjAddr: 0x3430, symBinAddr: 0x273130, symSize: 0x90 } + - { offset: 0x30E8E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4hide8animated10completionySb_yycSgtF', symObjAddr: 0x34C0, symBinAddr: 0x2731C0, symSize: 0xC0 } + - { offset: 0x30E9E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4hide8animated10completionySb_yycSgtFTo', symObjAddr: 0x3580, symBinAddr: 0x273280, symSize: 0x130 } + - { offset: 0x30EB0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtF', symObjAddr: 0x36B0, symBinAddr: 0x2733B0, symSize: 0x850 } + - { offset: 0x30ED51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtFyycfU_', symObjAddr: 0x3F00, symBinAddr: 0x273C00, symSize: 0x70 } + - { offset: 0x30EDB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC03addE08toParent2at8animated10completionySo06UIViewF0C_SiSbyycSgtFTo', symObjAddr: 0x3F70, symBinAddr: 0x273C70, symSize: 0xC0 } + - { offset: 0x30EDCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtF', symObjAddr: 0x4030, symBinAddr: 0x273D30, symSize: 0x1D0 } + - { offset: 0x30EF41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtFyycfU_', symObjAddr: 0x4200, symBinAddr: 0x273F00, symSize: 0x130 } + - { offset: 0x30EFD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC06removeE10FromParent8animated10completionySb_yycSgtFTo', symObjAddr: 0x4330, symBinAddr: 0x274030, symSize: 0x90 } + - { offset: 0x30EFE8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4move2to8animated10completionyAA0dE5StateC_SbyycSgtF', symObjAddr: 0x43C0, symBinAddr: 0x2740C0, symSize: 0x90 } + - { offset: 0x30F0A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC4move2to8animated10completionyAA0dE5StateC_SbyycSgtFTo', symObjAddr: 0x4450, symBinAddr: 0x274150, symSize: 0x110 } + - { offset: 0x30F191, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC3set011contentViewF0ySo06UIViewF0CSg_tF', symObjAddr: 0x4560, symBinAddr: 0x274260, symSize: 0x1A0 } + - { offset: 0x30F30C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5track10scrollViewySo08UIScrollI0C_tF', symObjAddr: 0x4700, symBinAddr: 0x274400, symSize: 0x1E0 } + - { offset: 0x30F4B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC5track10scrollViewySo08UIScrollI0C_tFTo', symObjAddr: 0x48E0, symBinAddr: 0x2745E0, symSize: 0x50 } + - { offset: 0x30F4CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC24followScrollViewBouncingyyF', symObjAddr: 0x4930, symBinAddr: 0x274630, symSize: 0x40 } + - { offset: 0x30F524, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC7untrack10scrollViewySo08UIScrollI0C_tF', symObjAddr: 0x4970, symBinAddr: 0x274670, symSize: 0x110 } + - { offset: 0x30F5F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC7untrack10scrollViewySo08UIScrollI0C_tFTo', symObjAddr: 0x4A80, symBinAddr: 0x274780, symSize: 0x50 } + - { offset: 0x30F61B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC26accessibilityPerformEscapeSbyFTo', symObjAddr: 0x4B20, symBinAddr: 0x2747D0, symSize: 0x50 } + - { offset: 0x30F663, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC26accessibilityPerformEscapeSbyFTo', symObjAddr: 0x4B20, symBinAddr: 0x2747D0, symSize: 0x50 } + - { offset: 0x30F6B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16invalidateLayoutyyF', symObjAddr: 0x4B70, symBinAddr: 0x274820, symSize: 0x130 } + - { offset: 0x30F7BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC16invalidateLayoutyyFTo', symObjAddr: 0x4CA0, symBinAddr: 0x274950, symSize: 0x30 } + - { offset: 0x30F7D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocation3forSo7CGPointVAA0dE5StateC_tF', symObjAddr: 0x4CD0, symBinAddr: 0x274980, symSize: 0x70 } + - { offset: 0x30F84E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocation3forSo7CGPointVAA0dE5StateC_tFTo', symObjAddr: 0x4D40, symBinAddr: 0x2749F0, symSize: 0xA0 } + - { offset: 0x30F888, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocation3forSo7CGPointVAA0dE5StateC_tFTo', symObjAddr: 0x4D40, symBinAddr: 0x2749F0, symSize: 0xA0 } + - { offset: 0x30F8B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvgTo', symObjAddr: 0x4DE0, symBinAddr: 0x274A90, symSize: 0x70 } + - { offset: 0x30F8E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvgTo', symObjAddr: 0x4DE0, symBinAddr: 0x274A90, symSize: 0x70 } + - { offset: 0x30F91A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvg', symObjAddr: 0x4E50, symBinAddr: 0x274B00, symSize: 0x60 } + - { offset: 0x30F993, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvsTo', symObjAddr: 0x4EB0, symBinAddr: 0x274B60, symSize: 0x70 } + - { offset: 0x30F9FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvs', symObjAddr: 0x4F20, symBinAddr: 0x274BD0, symSize: 0x60 } + - { offset: 0x30FA5A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM', symObjAddr: 0x5060, symBinAddr: 0x274D10, symSize: 0x80 } + - { offset: 0x30FACA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM.resume.0', symObjAddr: 0x50E0, symBinAddr: 0x274D90, symSize: 0x80 } + - { offset: 0x30FAEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM.resume.0', symObjAddr: 0x50E0, symBinAddr: 0x274D90, symSize: 0x80 } + - { offset: 0x30FB03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC15surfaceLocationSo7CGPointVvM.resume.0', symObjAddr: 0x50E0, symBinAddr: 0x274D90, symSize: 0x80 } + - { offset: 0x30FB99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC13addTopPadding7paddingy12CoreGraphics7CGFloatV_tF', symObjAddr: 0x5160, symBinAddr: 0x274E10, symSize: 0x60 } + - { offset: 0x30FC01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerCfD', symObjAddr: 0x51C0, symBinAddr: 0x274E70, symSize: 0x30 } + - { offset: 0x30FC2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC6layoutAA0dE6Layout_pvsTf4en_n', symObjAddr: 0x5650, symBinAddr: 0x275300, symSize: 0x320 } + - { offset: 0x30FF93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI4CoreC_6layout8behaviorAcA23FloatingPanelControllerC_AA0gH6Layout_pAA0gH8Behavior_ptcfcTf4nnen_nAA0gh7DefaultK0C_Tg5', symObjAddr: 0x5970, symBinAddr: 0x275620, symSize: 0x500 } + - { offset: 0x31018D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloatingPanelControllerC18shouldUpdateLayout33_73EE1AFD99A8C7D37AD8BE1B977755A6LL4from2toSbSo17UITraitCollectionC_AItFTf4nnd_n', symObjAddr: 0x5F00, symBinAddr: 0x275B40, symSize: 0x180 } + - { offset: 0x3106EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC13insertCampign10geofenceIdySiSg_tF', symObjAddr: 0x0, symBinAddr: 0x2766D0, symSize: 0x1A0 } + - { offset: 0x31087D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryCMa', symObjAddr: 0x890, symBinAddr: 0x276F40, symSize: 0x20 } + - { offset: 0x310891, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC13insertCampign10geofenceIdySiSg_tFyyYbXEfU_TA', symObjAddr: 0x960, symBinAddr: 0x276F90, symSize: 0x20 } + - { offset: 0x3108A5, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x9C0, symBinAddr: 0x276FD0, symSize: 0x20 } + - { offset: 0x3108B9, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x9E0, symBinAddr: 0x276FF0, symSize: 0xE } + - { offset: 0x310A24, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC13insertCampign10geofenceIdySiSg_tF', symObjAddr: 0x0, symBinAddr: 0x2766D0, symSize: 0x1A0 } + - { offset: 0x310AC8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC13insertCampign10geofenceIdySiSg_tFyyYbXEfU_', symObjAddr: 0x1A0, symBinAddr: 0x276870, symSize: 0x200 } + - { offset: 0x310B82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC06removeD033_4371A12B79815A679BB985BCBBAFD484LL2idySi_tF', symObjAddr: 0x3A0, symBinAddr: 0x276A70, symSize: 0x270 } + - { offset: 0x310E54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18CampaignRepositoryC15getNotification2idAA0D8TrackingCSgSi_tF', symObjAddr: 0x610, symBinAddr: 0x276CE0, symSize: 0x260 } + - { offset: 0x31147F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC14placeImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x277000, symSize: 0x20 } + - { offset: 0x3118E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellCfETo', symObjAddr: 0x13C0, symBinAddr: 0x2783C0, symSize: 0x90 } + - { offset: 0x311913, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellCMa', symObjAddr: 0x1450, symBinAddr: 0x278450, symSize: 0x20 } + - { offset: 0x311927, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC8setImage3foryAA5PlaceCSg_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x1500, symBinAddr: 0x2784C0, symSize: 0x20 } + - { offset: 0x311AB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC14placeImageViewSo07UIImageH0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x277000, symSize: 0x20 } + - { offset: 0x311B0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC14placeImageViewSo07UIImageH0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x277020, symSize: 0x30 } + - { offset: 0x311B5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x277050, symSize: 0x20 } + - { offset: 0x311BB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x277070, symSize: 0x30 } + - { offset: 0x311C04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17distanceStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x2770A0, symSize: 0x20 } + - { offset: 0x311C5C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17distanceStackViewSo07UIStackH0CSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x2770C0, symSize: 0x30 } + - { offset: 0x311CAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13distanceLabelSo7UILabelCSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x2770F0, symSize: 0x20 } + - { offset: 0x311CFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13distanceLabelSo7UILabelCSgvsTo', symObjAddr: 0x110, symBinAddr: 0x277110, symSize: 0x30 } + - { offset: 0x311D4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13categoryLabelSo7UILabelCSgvgTo', symObjAddr: 0x140, symBinAddr: 0x277140, symSize: 0x20 } + - { offset: 0x311DA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC13categoryLabelSo7UILabelCSgvsTo', symObjAddr: 0x160, symBinAddr: 0x277160, symSize: 0x30 } + - { offset: 0x311DEF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC12addressLabelSo7UILabelCSgvgTo', symObjAddr: 0x190, symBinAddr: 0x277190, symSize: 0x20 } + - { offset: 0x311E42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC12addressLabelSo7UILabelCSgvsTo', symObjAddr: 0x1B0, symBinAddr: 0x2771B0, symSize: 0x30 } + - { offset: 0x311E91, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17subtitleStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0x1E0, symBinAddr: 0x2771E0, symSize: 0x20 } + - { offset: 0x311EE4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC17subtitleStackViewSo07UIStackH0CSgvsTo', symObjAddr: 0x200, symBinAddr: 0x277200, symSize: 0x30 } + - { offset: 0x311F33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC12awakeFromNibyyFTo', symObjAddr: 0x230, symBinAddr: 0x277230, symSize: 0x30 } + - { offset: 0x311FFF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC9configure3for12showsDetailsyAA5PlaceCSg_SbtF', symObjAddr: 0x260, symBinAddr: 0x277260, symSize: 0x920 } + - { offset: 0x312431, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC8setImage3foryAA5PlaceCSg_tF', symObjAddr: 0xB80, symBinAddr: 0x277B80, symSize: 0x330 } + - { offset: 0x3125B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC8setImage3foryAA5PlaceCSg_tFySo7UIImageCSgcfU_', symObjAddr: 0xEB0, symBinAddr: 0x277EB0, symSize: 0x160 } + - { offset: 0x31266D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC15prepareForReuseyyF', symObjAddr: 0x1010, symBinAddr: 0x278010, symSize: 0x110 } + - { offset: 0x3126F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC15prepareForReuseyyFTo', symObjAddr: 0x1120, symBinAddr: 0x278120, symSize: 0x30 } + - { offset: 0x312705, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x1150, symBinAddr: 0x278150, symSize: 0xF0 } + - { offset: 0x312746, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x1240, symBinAddr: 0x278240, symSize: 0x30 } + - { offset: 0x31277E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1270, symBinAddr: 0x278270, symSize: 0xF0 } + - { offset: 0x3127B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x1360, symBinAddr: 0x278360, symSize: 0x30 } + - { offset: 0x3127C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI7PoiCellCfD', symObjAddr: 0x1390, symBinAddr: 0x278390, symSize: 0x30 } + - { offset: 0x313415, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22FloatingPanelPresenterPAAE7present_5level5state8animated10completionyAA0dE11Presentable_pSg_SiAA0dE5StateCSgSbyycSgtFAA18HomeViewControllerC_Tg5', symObjAddr: 0xC0, symBinAddr: 0x2784E0, symSize: 0x400 } + - { offset: 0x313A97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tF', symObjAddr: 0x1A90, symBinAddr: 0x279EB0, symSize: 0x790 } + - { offset: 0x314218, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycAA03MapeF0Ccfu5_yycfu6_', symObjAddr: 0x6410, symBinAddr: 0x27E830, symSize: 0x80 } + - { offset: 0x3142B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycfU0_', symObjAddr: 0x6490, symBinAddr: 0x27E8B0, symSize: 0xB0 } + - { offset: 0x3148E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showPoiDetails3poi06sourceE0y7Penguin0H7PolygonV_AA06SourceE0OtF', symObjAddr: 0x2F70, symBinAddr: 0x27B390, symSize: 0x6A0 } + - { offset: 0x315113, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC16showVenueDetails5venuey7Penguin0H0C_tF', symObjAddr: 0x3610, symBinAddr: 0x27BA30, symSize: 0x690 } + - { offset: 0x31592B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showCampusDetails6campusy7Penguin5VenueCSg_tF', symObjAddr: 0x3CA0, symBinAddr: 0x27C0C0, symSize: 0x680 } + - { offset: 0x316038, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showCampusDetails6campusy7Penguin5VenueCSg_tFyycfU_', symObjAddr: 0x9220, symBinAddr: 0x281590, symSize: 0xF0 } + - { offset: 0x316155, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tF', symObjAddr: 0x4320, symBinAddr: 0x27C740, symSize: 0x500 } + - { offset: 0x316672, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tFyycfU_', symObjAddr: 0xA140, symBinAddr: 0x2824B0, symSize: 0x190 } + - { offset: 0x316808, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tFyycfU0_', symObjAddr: 0xA2D0, symBinAddr: 0x282640, symSize: 0x130 } + - { offset: 0x316A26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC19showCategoryResults8category7filtersy7Penguin11POICategoryV_AA0H7FiltersVSgtF', symObjAddr: 0x4930, symBinAddr: 0x27CD50, symSize: 0x320 } + - { offset: 0x316D77, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showSharedUserLocation8locationyAA5PlaceCSg_tF', symObjAddr: 0x4C50, symBinAddr: 0x27D070, symSize: 0x4F0 } + - { offset: 0x31748C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCfETo', symObjAddr: 0x58C0, symBinAddr: 0x27DCE0, symSize: 0x110 } + - { offset: 0x3174BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCMa', symObjAddr: 0x59D0, symBinAddr: 0x27DDF0, symSize: 0x20 } + - { offset: 0x3174CF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA22FloatingPanelPresenterA2aDP08floatingH7DidMoveyyAA0ghF0CFTW', symObjAddr: 0x5AA0, symBinAddr: 0x27DEC0, symSize: 0x10 } + - { offset: 0x317529, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC20floatingPanelDidMoveyyAA08FloatinghF0CF', symObjAddr: 0x5AB0, symBinAddr: 0x27DED0, symSize: 0x180 } + - { offset: 0x317705, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13showDirectoryyyF', symObjAddr: 0x5C30, symBinAddr: 0x27E050, symSize: 0x410 } + - { offset: 0x317B90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showCategories10categoriesySay7Penguin11POICategoryVG_tF', symObjAddr: 0x6040, symBinAddr: 0x27E460, symSize: 0x3D0 } + - { offset: 0x317FDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showCategories10categoriesySay7Penguin11POICategoryVG_tFyAHcfU0_', symObjAddr: 0x76E0, symBinAddr: 0x27FA50, symSize: 0x40 } + - { offset: 0x318180, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15showSearchPanel4overyAA08FloatingI11Presentable_pSg_tF', symObjAddr: 0x6540, symBinAddr: 0x27E960, symSize: 0x4A0 } + - { offset: 0x318725, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC16showAllFavoritesyyF', symObjAddr: 0x69E0, symBinAddr: 0x27EE00, symSize: 0x3F0 } + - { offset: 0x318C2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12showFavorite8favoriteyAA0H0C_tF', symObjAddr: 0x6DD0, symBinAddr: 0x27F1F0, symSize: 0x220 } + - { offset: 0x318D5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC20handleFiltersDisplay11displayType11selectedIdsyAA03TagiK0O_SaySiGtF', symObjAddr: 0x6FF0, symBinAddr: 0x27F410, symSize: 0x130 } + - { offset: 0x318F38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showAllFilters33_A0A4D0656B505EF3DF25D7EB9947CEF6LL06searchI0yAA12SearchFilterCSg_tF', symObjAddr: 0x7120, symBinAddr: 0x27F540, symSize: 0x3C0 } + - { offset: 0x319387, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showAllFilters33_A0A4D0656B505EF3DF25D7EB9947CEF6LL06searchI0yAA12SearchFilterCSg_tFyAIcfU_', symObjAddr: 0xADB0, symBinAddr: 0x283120, symSize: 0x110 } + - { offset: 0x3194C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtF', symObjAddr: 0x7720, symBinAddr: 0x27FA90, symSize: 0x5B0 } + - { offset: 0x319AC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFySaySSGcAA03MapeF0Ccfu_yAKcfu0_', symObjAddr: 0x7CD0, symBinAddr: 0x280040, symSize: 0x120 } + - { offset: 0x319B4D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyycfU0_', symObjAddr: 0x7DF0, symBinAddr: 0x280160, symSize: 0x1F0 } + - { offset: 0x319C7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyAA0H7FiltersVSgcAA0hieF0Ccfu1_yAMcfu2_', symObjAddr: 0x7FE0, symBinAddr: 0x280350, symSize: 0xE0 } + - { offset: 0x319DC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showVenueSelector33_A0A4D0656B505EF3DF25D7EB9947CEF6LL07currentH2IdySiSg_tF', symObjAddr: 0x80C0, symBinAddr: 0x280430, symSize: 0x3B0 } + - { offset: 0x31A2B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25displayFloorSelectorPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL7venueId11closeActionySiSg_yAHcSgtF', symObjAddr: 0x8470, symBinAddr: 0x2807E0, symSize: 0x460 } + - { offset: 0x31A7AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25displayFloorSelectorPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL7venueId11closeActionySiSg_yAHcSgtFy7Penguin0H0CcfU_', symObjAddr: 0x88D0, symBinAddr: 0x280C40, symSize: 0xE0 } + - { offset: 0x31A88D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showNavigationFeedback11destination5titleyAA5PlaceCSg_SSSgtF', symObjAddr: 0x89B0, symBinAddr: 0x280D20, symSize: 0x430 } + - { offset: 0x31AD5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showNavigationFeedback11destination5titleyAA5PlaceCSg_SSSgtFyycfU_', symObjAddr: 0x9310, symBinAddr: 0x281680, symSize: 0x1D0 } + - { offset: 0x31AEE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25chooseSourceForNavigation10completionyyAA5PlaceCSgc_tF', symObjAddr: 0x8DE0, symBinAddr: 0x281150, symSize: 0x440 } + - { offset: 0x31B390, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25chooseSourceForNavigation10completionyyAA5PlaceCSgc_tFyAHcfU_', symObjAddr: 0xC4C0, symBinAddr: 0x284830, symSize: 0xB10 } + - { offset: 0x31BB25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21showUserLocationPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LLyyF', symObjAddr: 0x94E0, symBinAddr: 0x281850, symSize: 0x520 } + - { offset: 0x31C0E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21showUserLocationPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LLyyFyycfU0_', symObjAddr: 0x9A80, symBinAddr: 0x281DF0, symSize: 0xE0 } + - { offset: 0x31C1E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC35showFavoriteDetailForSharedLocation11sharedPlaceyAA0N0C_tF', symObjAddr: 0x9DB0, symBinAddr: 0x282120, symSize: 0x390 } + - { offset: 0x31C6D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15didCancelSearchyyF', symObjAddr: 0xA400, symBinAddr: 0x282770, symSize: 0x530 } + - { offset: 0x31CD95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC019showFilterSelectionF033_A0A4D0656B505EF3DF25D7EB9947CEF6LL4type4data11selectedIdsyAA14TagDisplayTypeO_SayAA0W10DataSource_pGSaySiGtF', symObjAddr: 0xA930, symBinAddr: 0x282CA0, symSize: 0x400 } + - { offset: 0x31D24A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC019showFilterSelectionF033_A0A4D0656B505EF3DF25D7EB9947CEF6LL4type4data11selectedIdsyAA14TagDisplayTypeO_SayAA0W10DataSource_pGSaySiGtFyAJSg_AMtcfU_', symObjAddr: 0xAD30, symBinAddr: 0x2830A0, symSize: 0x80 } + - { offset: 0x31D2BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC19showFavoriteDetails3foryAA0H0C_tF', symObjAddr: 0xAEC0, symBinAddr: 0x283230, symSize: 0x360 } + - { offset: 0x31D6F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17locationDidChangeyyF', symObjAddr: 0xB220, symBinAddr: 0x283590, symSize: 0xC0 } + - { offset: 0x31D80E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23locationStatusDidChange6statusyAA08LocationH0O_tF', symObjAddr: 0xB2E0, symBinAddr: 0x283650, symSize: 0x520 } + - { offset: 0x31DCD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25userLocationStatusChangedyyF', symObjAddr: 0xB800, symBinAddr: 0x283B70, symSize: 0x240 } + - { offset: 0x31E17C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0hM0OSgtF', symObjAddr: 0xBA40, symBinAddr: 0x283DB0, symSize: 0x240 } + - { offset: 0x31E6C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15favoritesLoadedyyF', symObjAddr: 0xBC80, symBinAddr: 0x283FF0, symSize: 0x2D0 } + - { offset: 0x31EB30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC29sharedLocationAddedToFavorite8favoriteyAA0K0C_tF', symObjAddr: 0xBF50, symBinAddr: 0x2842C0, symSize: 0x230 } + - { offset: 0x31EE09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC33sharedLocationRemovedFromFavorite8favoriteyAA0K0C_tF', symObjAddr: 0xC180, symBinAddr: 0x2844F0, symSize: 0x180 } + - { offset: 0x31F01F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21sharedLocationUpdated8favoriteyAA8FavoriteC_tF', symObjAddr: 0xC300, symBinAddr: 0x284670, symSize: 0x1C0 } + - { offset: 0x31F3E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7addGate33_A0A4D0656B505EF3DF25D7EB9947CEF6LL2in10completionyAA5PlaceCSg_yAJctF', symObjAddr: 0xCFD0, symBinAddr: 0x285340, symSize: 0x3F0 } + - { offset: 0x31F84A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7addGate33_A0A4D0656B505EF3DF25D7EB9947CEF6LL2in10completionyAA5PlaceCSg_yAJctFyAJcfU_', symObjAddr: 0xD3C0, symBinAddr: 0x285730, symSize: 0x100 } + - { offset: 0x31F8BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showMessageDetail7messageyAA0hI0C_tF', symObjAddr: 0xD4C0, symBinAddr: 0x285830, symSize: 0x430 } + - { offset: 0x31FD5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showMessageDetail7messageyAA0hI0C_tFyycfU_', symObjAddr: 0xDBB0, symBinAddr: 0x285F20, symSize: 0x60 } + - { offset: 0x31FE0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showRouteOverview33_A0A4D0656B505EF3DF25D7EB9947CEF6LL5placeyAA5PlaceCSg_tF', symObjAddr: 0xD8F0, symBinAddr: 0x285C60, symSize: 0x2C0 } + - { offset: 0x3200E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA36LocationBasedMessagesManagerDelegateA2aDP19loadMessageForFloor7messageyAA0M6DetailC_tFTW', symObjAddr: 0xDC10, symBinAddr: 0x285F80, symSize: 0x10 } + - { offset: 0x320124, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0jO0OSgtFTW', symObjAddr: 0xDC20, symBinAddr: 0x285F90, symSize: 0x10 } + - { offset: 0x320140, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0xDC30, symBinAddr: 0x285FA0, symSize: 0x10 } + - { offset: 0x3201EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21showUserLocationPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LLyyFyycfU_TA', symObjAddr: 0xF3C0, symBinAddr: 0x286090, symSize: 0x20 } + - { offset: 0x3201FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC21showUserLocationPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LLyyFyycfU0_TA', symObjAddr: 0xF3E0, symBinAddr: 0x2860B0, symSize: 0x10 } + - { offset: 0x3203DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tFyycfU_TA', symObjAddr: 0xF670, symBinAddr: 0x286320, symSize: 0x10 } + - { offset: 0x3203EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC26presentParkingDetailsSheet7parkingyAA5PlaceCSg_tFyycfU0_TA', symObjAddr: 0xF680, symBinAddr: 0x286330, symSize: 0x10 } + - { offset: 0x320402, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25chooseSourceForNavigation10completionyyAA5PlaceCSgc_tFyAHcfU_TA', symObjAddr: 0xF690, symBinAddr: 0x286340, symSize: 0x20 } + - { offset: 0x320416, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7addGate33_A0A4D0656B505EF3DF25D7EB9947CEF6LL2in10completionyAA5PlaceCSg_yAJctFyAJcfU_TA', symObjAddr: 0xF6E0, symBinAddr: 0x286390, symSize: 0x20 } + - { offset: 0x32042A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showNavigationFeedback11destination5titleyAA5PlaceCSg_SSSgtFyycfU_TA', symObjAddr: 0xF700, symBinAddr: 0x2863B0, symSize: 0x10 } + - { offset: 0x32043E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showMessageDetail7messageyAA0hI0C_tFyAA5PlaceCSgcACcfu_yAJcfu0_TA', symObjAddr: 0xF760, symBinAddr: 0x2863C0, symSize: 0x20 } + - { offset: 0x320478, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showMessageDetail7messageyAA0hI0C_tFyycfU_TA', symObjAddr: 0xF780, symBinAddr: 0x2863E0, symSize: 0x10 } + - { offset: 0x32048C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyycAA04MaineF0Ccfu_yycfu0_TA', symObjAddr: 0xF790, symBinAddr: 0x2863F0, symSize: 0x30 } + - { offset: 0x32050E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFy7Penguin10PoiPolygonV_AA06SourceE0OtcACcfu1_yAG_AItcfu2_TA', symObjAddr: 0xF7C0, symBinAddr: 0x286420, symSize: 0x20 } + - { offset: 0x320551, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFy7Penguin5VenueCcACcfu3_yAGcfu4_TA', symObjAddr: 0xF7E0, symBinAddr: 0x286440, symSize: 0x20 } + - { offset: 0x32058B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFy7Penguin5VenueCSgcACcfu5_yAHcfu6_TA', symObjAddr: 0xF800, symBinAddr: 0x286460, symSize: 0x20 } + - { offset: 0x3205C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyAA5PlaceCSgcACcfu7_yAGcfu8_TA', symObjAddr: 0xF820, symBinAddr: 0x286480, symSize: 0x20 } + - { offset: 0x3205FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFySiSgcACcfu9_yAEcfu10_TA', symObjAddr: 0xF840, symBinAddr: 0x2864A0, symSize: 0x20 } + - { offset: 0x320613, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFy7Penguin11POICategoryV_AA15CategoryFiltersVSgtcACcfu11_yAG_AJtcfu12_TA', symObjAddr: 0xF860, symBinAddr: 0x2864C0, symSize: 0x30 } + - { offset: 0x320658, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyAA5PlaceCSgcACcfu13_yAGcfu14_TA', symObjAddr: 0xF890, symBinAddr: 0x2864F0, symSize: 0x20 } + - { offset: 0x320692, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyycyKXEfu17_yycAA0aB9UIManagerCcfu18_yycfu19_TA', symObjAddr: 0xF8B0, symBinAddr: 0x286510, symSize: 0x20 } + - { offset: 0x3206C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFyycAA16PIEventsDelegate_pcfu15_yycfu16_TA', symObjAddr: 0xF9D0, symBinAddr: 0x286570, symSize: 0x40 } + - { offset: 0x3206F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22showSharedUserLocation8locationyAA5PlaceCSg_tFyAGcACcfu5_yAGcfu6_TA', symObjAddr: 0xFA40, symBinAddr: 0x2865B0, symSize: 0x20 } + - { offset: 0x320732, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFySaySSGcAA03MapeF0Ccfu_yAKcfu0_TA', symObjAddr: 0xFA60, symBinAddr: 0x2865D0, symSize: 0x10 } + - { offset: 0x320746, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyycfU0_TA', symObjAddr: 0xFA70, symBinAddr: 0x2865E0, symSize: 0x10 } + - { offset: 0x32075A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyycfU1_TA', symObjAddr: 0xFA80, symBinAddr: 0x2865F0, symSize: 0x20 } + - { offset: 0x32076E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC23addCategoryResultsPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL8category8animatedy7Penguin11POICategoryV_SbtFyAA0H7FiltersVSgcAA0hieF0Ccfu1_yAMcfu2_TA', symObjAddr: 0xFAA0, symBinAddr: 0x286610, symSize: 0x20 } + - { offset: 0x3207A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC19floorSelectorTapped33_A0A4D0656B505EF3DF25D7EB9947CEF6LL14currentVenueIdySiSg_tFyAGcACcfu_yAGcfu0_TA', symObjAddr: 0xFAC0, symBinAddr: 0x286630, symSize: 0x20 } + - { offset: 0x3207E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC25displayFloorSelectorPanel33_A0A4D0656B505EF3DF25D7EB9947CEF6LL7venueId11closeActionySiSg_yAHcSgtFy7Penguin0H0CcfU_TA', symObjAddr: 0xFAE0, symBinAddr: 0x286650, symSize: 0x10 } + - { offset: 0x3207F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC17showCampusDetails6campusy7Penguin5VenueCSg_tFyycfU_TA', symObjAddr: 0xFB40, symBinAddr: 0x286690, symSize: 0x10 } + - { offset: 0x320836, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC16showVenueDetails5venuey7Penguin0H0C_tFySiSgcACcfu2_yAIcfu3_TA', symObjAddr: 0xFB50, symBinAddr: 0x2866A0, symSize: 0x30 } + - { offset: 0x32089B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showPoiDetails3poi06sourceE0y7Penguin0H7PolygonV_AA06SourceE0OtFyAA5PlaceCSg_SSSgtcACcfu0_yAN_AOtcfu1_TA', symObjAddr: 0xFBB0, symBinAddr: 0x2866D0, symSize: 0x20 } + - { offset: 0x3208DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showPoiDetails3poi06sourceE0y7Penguin0H7PolygonV_AA06SourceE0OtFyycAA16SelectionManagerCcfu2_yycfu3_TA', symObjAddr: 0xFBD0, symBinAddr: 0x2866F0, symSize: 0x10 } + - { offset: 0x3208F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showPoiDetails3poi06sourceE0y7Penguin0H7PolygonV_AA06SourceE0OtFyyAA5PlaceCSgccACcfu4_yyANccfu5_TA', symObjAddr: 0xFBE0, symBinAddr: 0x286700, symSize: 0x20 } + - { offset: 0x32092F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC07loadAllD4Info10completionyyyc_tFySayAA9VenueDataCG_SSSgtcfU_TA', symObjAddr: 0xFC40, symBinAddr: 0x286760, symSize: 0x20 } + - { offset: 0x320943, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC21loadCampusInformationyyFyAA9VenueDataCSgcfU_TA', symObjAddr: 0xFC90, symBinAddr: 0x286780, symSize: 0x10 } + - { offset: 0x3209E6, size: 0x8, addend: 0x0, symName: '_$sSo7UISceneCSo8NSObjectCSH10ObjectiveCWl', symObjAddr: 0x101D0, symBinAddr: 0x286CC0, symSize: 0x50 } + - { offset: 0x3209FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyFyyScMYccfU_TA', symObjAddr: 0x10250, symBinAddr: 0x286D10, symSize: 0x20 } + - { offset: 0x320A0E, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x10270, symBinAddr: 0x286D30, symSize: 0x20 } + - { offset: 0x320A22, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x10290, symBinAddr: 0x286D50, symSize: 0x10 } + - { offset: 0x320A36, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC13loadAmenitiesyyFySayAA0G0VGcfU_TA', symObjAddr: 0x10320, symBinAddr: 0x286D60, symSize: 0x10 } + - { offset: 0x320A4A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyFyycfU0_TA', symObjAddr: 0x10360, symBinAddr: 0x286D90, symSize: 0x10 } + - { offset: 0x320A5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenuesManagerC03getD010completionyyycSg_tFySayAA13VenueCardDataVGcfU_TA', symObjAddr: 0x103B0, symBinAddr: 0x286DE0, symSize: 0x20 } + - { offset: 0x320A72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycACcfu_yycfu0_TA', symObjAddr: 0x103D0, symBinAddr: 0x286E00, symSize: 0x20 } + - { offset: 0x320AA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFySay7Penguin11POICategoryVGcACcfu1_yAJcfu2_TA', symObjAddr: 0x103F0, symBinAddr: 0x286E20, symSize: 0x20 } + - { offset: 0x320ADE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFy7Penguin11POICategoryVcAA03MapeF0Ccfu3_yAIcfu4_TA', symObjAddr: 0x10410, symBinAddr: 0x286E40, symSize: 0x20 } + - { offset: 0x320B19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycAA03MapeF0Ccfu5_yycfu6_TA', symObjAddr: 0x10430, symBinAddr: 0x286E60, symSize: 0x10 } + - { offset: 0x320B2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycAA03MapeF0Ccfu7_yycfu8_TA', symObjAddr: 0x10440, symBinAddr: 0x286E70, symSize: 0x20 } + - { offset: 0x320B5F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFy7Penguin10PoiPolygonVcfU_TA', symObjAddr: 0x10460, symBinAddr: 0x286E90, symSize: 0x10 } + - { offset: 0x320B73, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycfU0_TA', symObjAddr: 0x10470, symBinAddr: 0x286EA0, symSize: 0x10 } + - { offset: 0x320B87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycfU1_TA', symObjAddr: 0x10480, symBinAddr: 0x286EB0, symSize: 0x20 } + - { offset: 0x320B9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycfU2_TA', symObjAddr: 0x104A0, symBinAddr: 0x286ED0, symSize: 0x10 } + - { offset: 0x320BAF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyycACcfu9_yycfu10_TA', symObjAddr: 0x104B0, symBinAddr: 0x286EE0, symSize: 0x20 } + - { offset: 0x320BE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC12addMainPanel10completionyyycSg_tFyAA8FavoriteCcACcfu11_yAHcfu12_TA', symObjAddr: 0x104D0, symBinAddr: 0x286F00, symSize: 0x20 } + - { offset: 0x320C1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC16showAllFavoritesyyFyAA8FavoriteCcACcfu_yAFcfu0_TA', symObjAddr: 0x10520, symBinAddr: 0x286F20, symSize: 0x20 } + - { offset: 0x320C55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15showSearchPanel4overyAA08FloatingI11Presentable_pSg_tFyAA14TagDisplayTypeO_SaySiGtcACcfu_yAI_AJtcfu0_TA', symObjAddr: 0x10540, symBinAddr: 0x286F40, symSize: 0x20 } + - { offset: 0x320C99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15showSearchPanel4overyAA08FloatingI11Presentable_pSg_tFyAA0H6FilterCSgcACcfu1_yAJcfu2_TA', symObjAddr: 0x10560, symBinAddr: 0x286F60, symSize: 0x20 } + - { offset: 0x320CD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showAllFilters33_A0A4D0656B505EF3DF25D7EB9947CEF6LL06searchI0yAA12SearchFilterCSg_tFyAIcfU_TA', symObjAddr: 0x10580, symBinAddr: 0x286F80, symSize: 0x10 } + - { offset: 0x320CE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC019showFilterSelectionF033_A0A4D0656B505EF3DF25D7EB9947CEF6LL4type4data11selectedIdsyAA14TagDisplayTypeO_SayAA0W10DataSource_pGSaySiGtFyAJSg_AMtcfU_TA', symObjAddr: 0x10590, symBinAddr: 0x286F90, symSize: 0x10 } + - { offset: 0x320CFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14showCategories10categoriesySay7Penguin11POICategoryVG_tFyAHcfU0_TA', symObjAddr: 0x105A0, symBinAddr: 0x286FA0, symSize: 0x10 } + - { offset: 0x320D0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13showDirectoryyyFyycfU_TA', symObjAddr: 0x105B0, symBinAddr: 0x286FB0, symSize: 0x20 } + - { offset: 0x320DEC, size: 0x8, addend: 0x0, symName: '_$sSh9formUnionyyqd__n7ElementQyd__RszSTRd__lF8PenNavUI9ToastTypeO_ShyAFGTg5', symObjAddr: 0x1350, symBinAddr: 0x279770, symSize: 0xC0 } + - { offset: 0x32186B, size: 0x8, addend: 0x0, symName: '_$sSh9formUnionyyqd__n7ElementQyd__RszSTRd__lF8PenNavUI18FloatingPanelStateC_SayAFGTg5Tf4gn_n', symObjAddr: 0xF2A0, symBinAddr: 0x285FB0, symSize: 0xC0 } + - { offset: 0x321B9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC09presentedE11ControllersSayAA24FloatingPanelPresentable_pGvM', symObjAddr: 0x1410, symBinAddr: 0x279830, symSize: 0x60 } + - { offset: 0x321BD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC09presentedE11ControllersSayAA24FloatingPanelPresentable_pGvM.resume.0', symObjAddr: 0x1470, symBinAddr: 0x279890, symSize: 0x80 } + - { offset: 0x321EC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyF', symObjAddr: 0x14F0, symBinAddr: 0x279910, symSize: 0x5A0 } + - { offset: 0x3221D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyFyycfU0_', symObjAddr: 0x2220, symBinAddr: 0x27A640, symSize: 0x70 } + - { offset: 0x32246C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x2290, symBinAddr: 0x27A6B0, symSize: 0x30 } + - { offset: 0x32250D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0x22C0, symBinAddr: 0x27A6E0, symSize: 0xB0 } + - { offset: 0x32263A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13viewDidAppearyySbF', symObjAddr: 0x2370, symBinAddr: 0x27A790, symSize: 0x120 } + - { offset: 0x32270D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13viewDidAppearyySbFyycfU_', symObjAddr: 0x2490, symBinAddr: 0x27A8B0, symSize: 0x1B0 } + - { offset: 0x3228F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC13viewDidAppearyySbFTo', symObjAddr: 0x2640, symBinAddr: 0x27AA60, symSize: 0x30 } + - { offset: 0x32291A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyF', symObjAddr: 0x2670, symBinAddr: 0x27AA90, symSize: 0x900 } + - { offset: 0x322D30, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC6addMapyyFySiSgcACcfu9_yAEcfu10_', symObjAddr: 0x4820, symBinAddr: 0x27CC40, symSize: 0x110 } + - { offset: 0x3236C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC9removeMapyyF', symObjAddr: 0x5140, symBinAddr: 0x27D560, symSize: 0xD0 } + - { offset: 0x32387D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC012deinitializeaB0yyF', symObjAddr: 0x5210, symBinAddr: 0x27D630, symSize: 0x2F0 } + - { offset: 0x323B1C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x5500, symBinAddr: 0x27D920, symSize: 0x190 } + - { offset: 0x323B5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x5690, symBinAddr: 0x27DAB0, symSize: 0x50 } + - { offset: 0x323BA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x56E0, symBinAddr: 0x27DB00, symSize: 0x180 } + - { offset: 0x323BD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x5860, symBinAddr: 0x27DC80, symSize: 0x30 } + - { offset: 0x323BEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCfD', symObjAddr: 0x5890, symBinAddr: 0x27DCB0, symSize: 0x30 } + - { offset: 0x323C0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvgTW', symObjAddr: 0x59F0, symBinAddr: 0x27DE10, symSize: 0x40 } + - { offset: 0x323C42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvMTW', symObjAddr: 0x5A30, symBinAddr: 0x27DE50, symSize: 0x50 } + - { offset: 0x323C6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerCAA22FloatingPanelPresenterA2aDP09presentedE11ControllersSayAA0gH11Presentable_pGvMTW.resume.0', symObjAddr: 0x5A80, symBinAddr: 0x27DEA0, symSize: 0x20 } + - { offset: 0x324A47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC22deinitializeSingletonsyyFTf4d_n', symObjAddr: 0xF3F0, symBinAddr: 0x2860C0, symSize: 0x260 } + - { offset: 0x324C69, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18HomeViewControllerC15addSessionLabelyyFTf4d_n', symObjAddr: 0xFCA0, symBinAddr: 0x286790, symSize: 0x530 } + - { offset: 0x325405, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesCMa', symObjAddr: 0x220, symBinAddr: 0x2874A0, symSize: 0x20 } + - { offset: 0x325419, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOAFs0E3KeyAAWl', symObjAddr: 0x750, symBinAddr: 0x287960, symSize: 0x30 } + - { offset: 0x32542D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOACSeAAWl', symObjAddr: 0x7B0, symBinAddr: 0x287990, symSize: 0x30 } + - { offset: 0x325441, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13AppFontWeightOACSEAAWl', symObjAddr: 0x7E0, symBinAddr: 0x2879C0, symSize: 0x30 } + - { offset: 0x325455, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOMa', symObjAddr: 0x9B0, symBinAddr: 0x2879F0, symSize: 0x10 } + - { offset: 0x325469, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOSHAASQWb', symObjAddr: 0x9C0, symBinAddr: 0x287A00, symSize: 0x10 } + - { offset: 0x32547D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOAFSQAAWl', symObjAddr: 0x9D0, symBinAddr: 0x287A10, symSize: 0x30 } + - { offset: 0x325491, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0xA00, symBinAddr: 0x287A40, symSize: 0x10 } + - { offset: 0x3254A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0xA10, symBinAddr: 0x287A50, symSize: 0x30 } + - { offset: 0x3254B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0xA40, symBinAddr: 0x287A80, symSize: 0x10 } + - { offset: 0x3254CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0xA50, symBinAddr: 0x287A90, symSize: 0x30 } + - { offset: 0x325506, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x1B0, symBinAddr: 0x287430, symSize: 0x20 } + - { offset: 0x325522, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x1D0, symBinAddr: 0x287450, symSize: 0x20 } + - { offset: 0x325577, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs0E3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0xB0, symBinAddr: 0x287350, symSize: 0xC0 } + - { offset: 0x3255A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLOs0E3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x170, symBinAddr: 0x287410, symSize: 0x20 } + - { offset: 0x3255F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesCfD', symObjAddr: 0x1F0, symBinAddr: 0x287470, symSize: 0x30 } + - { offset: 0x325632, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC6encode2toys7Encoder_p_tKF', symObjAddr: 0x240, symBinAddr: 0x2874C0, symSize: 0x1E0 } + - { offset: 0x325663, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC4fromACs7Decoder_p_tKcfc', symObjAddr: 0x420, symBinAddr: 0x2876A0, symSize: 0x250 } + - { offset: 0x3256A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x670, symBinAddr: 0x2878F0, symSize: 0x50 } + - { offset: 0x3256CA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x6C0, symBinAddr: 0x287940, symSize: 0x20 } + - { offset: 0x3256DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6StylesC10CodingKeys33_AE868ADFC15926325743FFD64205068ELLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0xA80, symBinAddr: 0x287AC0, symSize: 0x1CC } + - { offset: 0x325B25, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV07makeUseD8Contents4from4withAC0D0C0I0OAA3DOMO0H0C_AE5StateVtKF', symObjAddr: 0x0, symBinAddr: 0x287C90, symSize: 0x330 } + - { offset: 0x325B53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV07makeUseD8Contents4from4withAC0D0C0I0OAA3DOMO0H0C_AE5StateVtKF', symObjAddr: 0x0, symBinAddr: 0x287C90, symSize: 0x330 } + - { offset: 0x325CC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO7BuilderV16makeTextContents4from4withAC0D0C0I0OAA3DOMO0H0C_AE5StateVtFZTf4nnd_n', symObjAddr: 0x330, symBinAddr: 0x287FC0, symSize: 0x2B0 } + - { offset: 0x325D5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO14TextAttributesVWOc', symObjAddr: 0x5E0, symBinAddr: 0x288270, symSize: 0x30 } + - { offset: 0x325D6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO0D0C8ContentsOWOi1_', symObjAddr: 0x610, symBinAddr: 0x2882A0, symSize: 0x30 } + - { offset: 0x325D83, size: 0x8, addend: 0x0, symName: '_$s10Foundation3URLVACs23CustomStringConvertibleAAWl', symObjAddr: 0x670, symBinAddr: 0x2882D0, symSize: 0x40 } + - { offset: 0x3261E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22NavigationEventTrackerVMa', symObjAddr: 0x0, symBinAddr: 0x288310, symSize: 0x10 } + - { offset: 0x326201, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22NavigationEventTrackerVMa', symObjAddr: 0x0, symBinAddr: 0x288310, symSize: 0x10 } + - { offset: 0x32643C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVWOc', symObjAddr: 0x22A0, symBinAddr: 0x28A4F0, symSize: 0x30 } + - { offset: 0x326450, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwxx', symObjAddr: 0x3160, symBinAddr: 0x28B360, symSize: 0x60 } + - { offset: 0x326464, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwcp', symObjAddr: 0x31C0, symBinAddr: 0x28B3C0, symSize: 0x2B0 } + - { offset: 0x326478, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwca', symObjAddr: 0x3470, symBinAddr: 0x28B670, symSize: 0x310 } + - { offset: 0x32648C, size: 0x8, addend: 0x0, symName: ___swift_memcpy401_8, symObjAddr: 0x3780, symBinAddr: 0x28B980, symSize: 0x10 } + - { offset: 0x3264A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwta', symObjAddr: 0x3790, symBinAddr: 0x28B990, symSize: 0x2C0 } + - { offset: 0x3264B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwet', symObjAddr: 0x3A50, symBinAddr: 0x28BC50, symSize: 0x50 } + - { offset: 0x3264C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVwst', symObjAddr: 0x3AA0, symBinAddr: 0x28BCA0, symSize: 0xF0 } + - { offset: 0x3264DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVMa', symObjAddr: 0x3B90, symBinAddr: 0x28BD90, symSize: 0x10 } + - { offset: 0x3264F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOAFs0G3KeyAAWl', symObjAddr: 0x3C10, symBinAddr: 0x28BDA0, symSize: 0x30 } + - { offset: 0x326504, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOwet', symObjAddr: 0x3C90, symBinAddr: 0x28BDD0, symSize: 0x80 } + - { offset: 0x326518, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOwst', symObjAddr: 0x3D10, symBinAddr: 0x28BE50, symSize: 0xD0 } + - { offset: 0x32652C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOMa', symObjAddr: 0x3E10, symBinAddr: 0x28BF20, symSize: 0x10 } + - { offset: 0x326540, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOSHAASQWb', symObjAddr: 0x3E20, symBinAddr: 0x28BF30, symSize: 0x10 } + - { offset: 0x326554, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOAFSQAAWl', symObjAddr: 0x3E30, symBinAddr: 0x28BF40, symSize: 0x30 } + - { offset: 0x326568, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x3E60, symBinAddr: 0x28BF70, symSize: 0x10 } + - { offset: 0x32657C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x3E70, symBinAddr: 0x28BF80, symSize: 0x30 } + - { offset: 0x326590, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x3EA0, symBinAddr: 0x28BFB0, symSize: 0x10 } + - { offset: 0x3265A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x3EB0, symBinAddr: 0x28BFC0, symSize: 0x30 } + - { offset: 0x3265F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0xA50, symBinAddr: 0x288CA0, symSize: 0x20 } + - { offset: 0x326611, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0xA70, symBinAddr: 0x288CC0, symSize: 0x20 } + - { offset: 0x3266E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLO11stringValueSSvg', symObjAddr: 0x10, symBinAddr: 0x288320, symSize: 0x2F0 } + - { offset: 0x32678C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x300, symBinAddr: 0x288610, symSize: 0x650 } + - { offset: 0x3267CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0xA00, symBinAddr: 0x288C60, symSize: 0x10 } + - { offset: 0x3267E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0xA10, symBinAddr: 0x288C70, symSize: 0x20 } + - { offset: 0x326812, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLOs0G3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0xA40, symBinAddr: 0x288C90, symSize: 0x10 } + - { offset: 0x326826, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xA90, symBinAddr: 0x288CE0, symSize: 0x10 } + - { offset: 0x32689B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV6source11destination9eventTypeAcA5PlaceC_AHSgAA0deJ0OtcfCTf4nnnd_n', symObjAddr: 0xAA0, symBinAddr: 0x288CF0, symSize: 0xF60 } + - { offset: 0x326AC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV9eventType6rating8feedbackAcA0deH0O_SiSSSgtcfCTf4nnnd_n', symObjAddr: 0x1A00, symBinAddr: 0x289C50, symSize: 0x8A0 } + - { offset: 0x326B7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV12userLocation011destinationH00I4Type0I6EdgeId05eventJ013isDestinationAC7Penguin10PILocationC_AJ0O0CSgAA05PlaceJ0OSgSiSgAA0deJ0OSbtcfCTf4nnnnnnd_n', symObjAddr: 0x22F0, symBinAddr: 0x28A520, symSize: 0xE40 } + - { offset: 0x326C6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19NavigationEventDataV10CodingKeys33_B703942C856D11C63FA4C11D9B678B80LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x3EE0, symBinAddr: 0x28BFF0, symSize: 0x830 } + - { offset: 0x3273C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22LocationMessageTrackerCMa', symObjAddr: 0x20, symBinAddr: 0x28C960, symSize: 0x20 } + - { offset: 0x327591, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVWOc', symObjAddr: 0xE20, symBinAddr: 0x28D690, symSize: 0x30 } + - { offset: 0x3275A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwxx', symObjAddr: 0xEA0, symBinAddr: 0x28D6C0, symSize: 0x40 } + - { offset: 0x3275B9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwcp', symObjAddr: 0xEE0, symBinAddr: 0x28D700, symSize: 0x140 } + - { offset: 0x3275CD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwca', symObjAddr: 0x1020, symBinAddr: 0x28D840, symSize: 0x170 } + - { offset: 0x3275E1, size: 0x8, addend: 0x0, symName: ___swift_memcpy201_8, symObjAddr: 0x1190, symBinAddr: 0x28D9B0, symSize: 0x10 } + - { offset: 0x3275F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwta', symObjAddr: 0x11A0, symBinAddr: 0x28D9C0, symSize: 0x150 } + - { offset: 0x327609, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwet', symObjAddr: 0x12F0, symBinAddr: 0x28DB10, symSize: 0x50 } + - { offset: 0x32761D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVwst', symObjAddr: 0x1340, symBinAddr: 0x28DB60, symSize: 0x90 } + - { offset: 0x327631, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVMa', symObjAddr: 0x13D0, symBinAddr: 0x28DBF0, symSize: 0x10 } + - { offset: 0x327645, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOAFs0H3KeyAAWl', symObjAddr: 0x1450, symBinAddr: 0x28DC00, symSize: 0x30 } + - { offset: 0x327659, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOMa', symObjAddr: 0x1650, symBinAddr: 0x28DC30, symSize: 0x10 } + - { offset: 0x32766D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOSHAASQWb', symObjAddr: 0x1660, symBinAddr: 0x28DC40, symSize: 0x10 } + - { offset: 0x327681, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOAFSQAAWl', symObjAddr: 0x1670, symBinAddr: 0x28DC50, symSize: 0x30 } + - { offset: 0x327695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs0H3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x16A0, symBinAddr: 0x28DC80, symSize: 0x10 } + - { offset: 0x3276A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x16B0, symBinAddr: 0x28DC90, symSize: 0x30 } + - { offset: 0x3276BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs0H3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x16E0, symBinAddr: 0x28DCC0, symSize: 0x10 } + - { offset: 0x3276D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x16F0, symBinAddr: 0x28DCD0, symSize: 0x30 } + - { offset: 0x327724, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0x5C0, symBinAddr: 0x28CE30, symSize: 0x20 } + - { offset: 0x327740, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0x5E0, symBinAddr: 0x28CE50, symSize: 0x20 } + - { offset: 0x327772, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLO11stringValueSSvg', symObjAddr: 0x40, symBinAddr: 0x28C980, symSize: 0x130 } + - { offset: 0x327793, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV6encode2toys7Encoder_p_tKF', symObjAddr: 0x170, symBinAddr: 0x28CAB0, symSize: 0x350 } + - { offset: 0x3277D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs0H3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0x570, symBinAddr: 0x28CE00, symSize: 0x10 } + - { offset: 0x3277F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLOs0H3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0x580, symBinAddr: 0x28CE10, symSize: 0x20 } + - { offset: 0x327819, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x600, symBinAddr: 0x28CE70, symSize: 0x10 } + - { offset: 0x327865, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV4from4adIdAC7Penguin10PILocationC_SiSgtcfCTf4nnd_n', symObjAddr: 0x610, symBinAddr: 0x28CE80, symSize: 0x810 } + - { offset: 0x327937, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27LocationMessageTrackingDataV10CodingKeys33_06374F598DD389ADB9F7792B7E7F913CLLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x1720, symBinAddr: 0x28DD00, symSize: 0x3BD } + - { offset: 0x328B1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCfE', symObjAddr: 0x27D0, symBinAddr: 0x290790, symSize: 0x100 } + - { offset: 0x328B4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCfETo', symObjAddr: 0x2900, symBinAddr: 0x2908C0, symSize: 0x100 } + - { offset: 0x328B7A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCMU', symObjAddr: 0x2A00, symBinAddr: 0x2909C0, symSize: 0x10 } + - { offset: 0x328B8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCMa', symObjAddr: 0x2A10, symBinAddr: 0x2909D0, symSize: 0x30 } + - { offset: 0x328BA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCMr', symObjAddr: 0x2A40, symBinAddr: 0x290A00, symSize: 0xF0 } + - { offset: 0x328BB6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC16numberOfSections2inSiSo07UITableF0C_tFTo', symObjAddr: 0x2B30, symBinAddr: 0x290AF0, symSize: 0x10 } + - { offset: 0x328BE1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTo', symObjAddr: 0x2B40, symBinAddr: 0x290B00, symSize: 0x60 } + - { offset: 0x328F27, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtF', symObjAddr: 0x2BA0, symBinAddr: 0x290B60, symSize: 0xAE0 } + - { offset: 0x32964B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyycfU_', symObjAddr: 0x3680, symBinAddr: 0x291640, symSize: 0x60 } + - { offset: 0x3296C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU0_', symObjAddr: 0x36E0, symBinAddr: 0x2916A0, symSize: 0x170 } + - { offset: 0x329792, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x3850, symBinAddr: 0x291810, symSize: 0xB0 } + - { offset: 0x3297E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_14heightForRowAt12CoreGraphics7CGFloatVSo07UITableF0C_10Foundation9IndexPathVtFTo', symObjAddr: 0x3900, symBinAddr: 0x2918C0, symSize: 0xA0 } + - { offset: 0x329874, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CF', symObjAddr: 0x39A0, symBinAddr: 0x291960, symSize: 0x280 } + - { offset: 0x3298E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_', symObjAddr: 0x3C20, symBinAddr: 0x291BE0, symSize: 0x1D0 } + - { offset: 0x3299BC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFTo', symObjAddr: 0x3DF0, symBinAddr: 0x291DB0, symSize: 0x50 } + - { offset: 0x3299E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC22didTapDirectionsActionyyF', symObjAddr: 0x3E40, symBinAddr: 0x291E00, symSize: 0x4F0 } + - { offset: 0x329DEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC17showRouteOverview6sourceyAA5PlaceCSg_tF', symObjAddr: 0x4330, symBinAddr: 0x2922F0, symSize: 0x350 } + - { offset: 0x32A087, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC22didTapDirectionsActionyyFTo', symObjAddr: 0x4680, symBinAddr: 0x292640, symSize: 0x30 } + - { offset: 0x32A0C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC17didTapPhoneActionyyF', symObjAddr: 0x46B0, symBinAddr: 0x292670, symSize: 0x200 } + - { offset: 0x32A190, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC17didTapPhoneActionyyFTo', symObjAddr: 0x48B0, symBinAddr: 0x292870, symSize: 0x30 } + - { offset: 0x32A1AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC19didTapWebsiteActionyyF', symObjAddr: 0x48E0, symBinAddr: 0x2928A0, symSize: 0x390 } + - { offset: 0x32A2D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC19didTapWebsiteActionyyFTo', symObjAddr: 0x4C70, symBinAddr: 0x292C30, symSize: 0x30 } + - { offset: 0x32A30E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC16didTapMailActionyyF', symObjAddr: 0x4CA0, symBinAddr: 0x292C60, symSize: 0x1B0 } + - { offset: 0x32A40D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC16didTapMailActionyyFTo', symObjAddr: 0x4E50, symBinAddr: 0x292E10, symSize: 0x30 } + - { offset: 0x32A449, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20didExpandDescriptionyyFTo', symObjAddr: 0x4E80, symBinAddr: 0x292E40, symSize: 0x30 } + - { offset: 0x32A4E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20didTapExpandScheduleyyFTo', symObjAddr: 0x4EC0, symBinAddr: 0x292E70, symSize: 0x30 } + - { offset: 0x32A505, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC22didTapCollapseScheduleyyFTo', symObjAddr: 0x5080, symBinAddr: 0x293020, symSize: 0x30 } + - { offset: 0x32A54E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20didTapAddToFavorites10isFavoriteySb_tFTo', symObjAddr: 0x50B0, symBinAddr: 0x293050, symSize: 0x30 } + - { offset: 0x32A597, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC017didTapTodayStatusF0yyF', symObjAddr: 0x50E0, symBinAddr: 0x293080, symSize: 0x140 } + - { offset: 0x32A650, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC017didTapTodayStatusF0yyFTo', symObjAddr: 0x5220, symBinAddr: 0x2931C0, symSize: 0x30 } + - { offset: 0x32A699, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC011mailComposeG0_13didFinishWith5errorySo06MFMailifG0C_So0nI6ResultVs5Error_pSgtFTo', symObjAddr: 0x5250, symBinAddr: 0x2931F0, symSize: 0x20 } + - { offset: 0x32A6DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC25adaptivePresentationStyle3forSo07UIModaliJ0VSo014UIPresentationG0C_tFTo', symObjAddr: 0x5270, symBinAddr: 0x293210, symSize: 0x10 } + - { offset: 0x32A739, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC14layoutForPanelAA08FloatingJ6Layout_pyFTo', symObjAddr: 0x5280, symBinAddr: 0x293220, symSize: 0xA0 } + - { offset: 0x32A7E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC16behaviorForPanelAA08FloatingJ8Behavior_pyFTo', symObjAddr: 0x5320, symBinAddr: 0x2932C0, symSize: 0x30 } + - { offset: 0x32A860, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC10setupPanelyyF', symObjAddr: 0x5350, symBinAddr: 0x2932F0, symSize: 0x110 } + - { offset: 0x32A913, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC10setupPanelyyFTo', symObjAddr: 0x5460, symBinAddr: 0x293400, symSize: 0x30 } + - { offset: 0x32A951, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CF', symObjAddr: 0x5490, symBinAddr: 0x293430, symSize: 0x240 } + - { offset: 0x32AB81, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC20floatingPanelDidMoveyyAA08FloatingiG0CFTo', symObjAddr: 0x56D0, symBinAddr: 0x293670, symSize: 0x50 } + - { offset: 0x32AB9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC15placeDataLoaded0hI0yAA0dfI0C_tF', symObjAddr: 0x5720, symBinAddr: 0x2936C0, symSize: 0x130 } + - { offset: 0x32AC6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtF', symObjAddr: 0x5850, symBinAddr: 0x2937F0, symSize: 0x360 } + - { offset: 0x32AF10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC25userLocationStatusChangedyyF', symObjAddr: 0x5C30, symBinAddr: 0x293B50, symSize: 0x130 } + - { offset: 0x32AFE5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0kP0OSgtFTW', symObjAddr: 0x5D60, symBinAddr: 0x293C80, symSize: 0x10 } + - { offset: 0x32B001, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x5D70, symBinAddr: 0x293C90, symSize: 0x10 } + - { offset: 0x32B01D, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x5F70, symBinAddr: 0x293CC0, symSize: 0x20 } + - { offset: 0x32B031, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x5F90, symBinAddr: 0x293CE0, symSize: 0x10 } + - { offset: 0x32B045, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC22didTapDirectionsActionyyFyAA5PlaceCSgcACcfu2_yAGcfu3_TA', symObjAddr: 0x6020, symBinAddr: 0x293D20, symSize: 0x20 } + - { offset: 0x32B07F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC06scrollF9DidScrollyySo08UIScrollF0CFyyScMYccfU_TA', symObjAddr: 0x60E0, symBinAddr: 0x293D70, symSize: 0x20 } + - { offset: 0x32B093, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFySaySSGcfU0_TA', symObjAddr: 0x61D0, symBinAddr: 0x293D90, symSize: 0x10 } + - { offset: 0x32B0A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_12cellForRowAtSo07UITableF4CellCSo0mF0C_10Foundation9IndexPathVtFyycfU_TA', symObjAddr: 0x61E0, symBinAddr: 0x293DA0, symSize: 0x10 } + - { offset: 0x32B1BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0_21numberOfRowsInSectionSiSo07UITableF0C_SitFTf4dnn_n', symObjAddr: 0x61F0, symBinAddr: 0x293DB0, symSize: 0x2A0 } + - { offset: 0x32B3EB, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonVSgWOd', symObjAddr: 0x6540, symBinAddr: 0x294050, symSize: 0x40 } + - { offset: 0x32B3FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9menuItemsSayAA8MenuItemVGvgyycfU_TA', symObjAddr: 0x65B0, symBinAddr: 0x294090, symSize: 0x10 } + - { offset: 0x32B44B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC15placeTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x4C0, symBinAddr: 0x28E580, symSize: 0x20 } + - { offset: 0x32B4A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC15placeTitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x4E0, symBinAddr: 0x28E5A0, symSize: 0x30 } + - { offset: 0x32B4F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC18categoryTitleLabelSo7UILabelCSgvgTo', symObjAddr: 0x510, symBinAddr: 0x28E5D0, symSize: 0x20 } + - { offset: 0x32B54B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC18categoryTitleLabelSo7UILabelCSgvsTo', symObjAddr: 0x530, symBinAddr: 0x28E5F0, symSize: 0x30 } + - { offset: 0x32B59A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9separatorSo6UIViewCSgvgTo', symObjAddr: 0x560, symBinAddr: 0x28E620, symSize: 0x20 } + - { offset: 0x32B5F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9separatorSo6UIViewCSgvsTo', symObjAddr: 0x580, symBinAddr: 0x28E640, symSize: 0x30 } + - { offset: 0x32B641, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0So07UITableF0CSgvgTo', symObjAddr: 0x5B0, symBinAddr: 0x28E670, symSize: 0x20 } + - { offset: 0x32B699, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC05tableF0So07UITableF0CSgvsTo', symObjAddr: 0x5D0, symBinAddr: 0x28E690, symSize: 0x30 } + - { offset: 0x32B6E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x600, symBinAddr: 0x28E6C0, symSize: 0x20 } + - { offset: 0x32B740, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x620, symBinAddr: 0x28E6E0, symSize: 0x30 } + - { offset: 0x32B7B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9placeDataAA0dfI0Cvg', symObjAddr: 0x650, symBinAddr: 0x28E710, symSize: 0xB0 } + - { offset: 0x32B99D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9menuItemsSayAA8MenuItemVGvg', symObjAddr: 0x700, symBinAddr: 0x28E7C0, symSize: 0x420 } + - { offset: 0x32BCBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9menuItemsSayAA8MenuItemVGvgyycfU_', symObjAddr: 0xB20, symBinAddr: 0x28EBE0, symSize: 0xD0 } + - { offset: 0x32BDC1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC9viewModel33_64DA4970C83DEE4A6AFA2A73E139E454LLAA011PlaceDetailfI0Cvg', symObjAddr: 0xCF0, symBinAddr: 0x28ECB0, symSize: 0xD0 } + - { offset: 0x32BF57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC11viewDidLoadyyF', symObjAddr: 0xDC0, symBinAddr: 0x28ED80, symSize: 0x2B0 } + - { offset: 0x32C130, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x1070, symBinAddr: 0x28F030, symSize: 0x30 } + - { offset: 0x32C184, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC14viewWillAppearyySbFTo', symObjAddr: 0x10A0, symBinAddr: 0x28F060, symSize: 0x90 } + - { offset: 0x32C1E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC13registerCellsyyF', symObjAddr: 0x1130, symBinAddr: 0x28F0F0, symSize: 0x1F0 } + - { offset: 0x32C369, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC14setupPlaceInfoyyF', symObjAddr: 0x1320, symBinAddr: 0x28F2E0, symSize: 0x2F0 } + - { offset: 0x32C58D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC19sendFavoriteRequest02isI0ySb_tF', symObjAddr: 0x1610, symBinAddr: 0x28F5D0, symSize: 0x4B0 } + - { offset: 0x32C7EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC7dismissyyFTo', symObjAddr: 0x1AC0, symBinAddr: 0x28FA80, symSize: 0x80 } + - { offset: 0x32C827, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5shareyyF', symObjAddr: 0x1B40, symBinAddr: 0x28FB00, symSize: 0x180 } + - { offset: 0x32C8F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5shareyyFySSSgcfU_', symObjAddr: 0x1CC0, symBinAddr: 0x28FC80, symSize: 0x5F0 } + - { offset: 0x32CB6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5shareyyFTo', symObjAddr: 0x22B0, symBinAddr: 0x290270, symSize: 0x30 } + - { offset: 0x32CB99, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC17handleOfflineDatayyF', symObjAddr: 0x22E0, symBinAddr: 0x2902A0, symSize: 0x130 } + - { offset: 0x32CCD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x2410, symBinAddr: 0x2903D0, symSize: 0x1B0 } + - { offset: 0x32CD11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x25C0, symBinAddr: 0x290580, symSize: 0x50 } + - { offset: 0x32CD59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x2610, symBinAddr: 0x2905D0, symSize: 0x190 } + - { offset: 0x32CD8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x27A0, symBinAddr: 0x290760, symSize: 0x30 } + - { offset: 0x32CDA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24PoiDetailsViewControllerCfD', symObjAddr: 0x28D0, symBinAddr: 0x290890, symSize: 0x30 } + - { offset: 0x32D821, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFShySSG_Tg577$s8PenNavUI9XMLParserV7ScannerV10scanString11matchingAnySSShySSG_tKFSbSSXEfU_0eF2UI0H0V0J0VTf1cn_n', symObjAddr: 0x0, symBinAddr: 0x2940C0, symSize: 0x150 } + - { offset: 0x32D85A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseMatrix33_892AF320A73F92CC7AB19393F72C04FDLLyAA3DOMO9TransformOSgAC7ScannerVzKFTf4nd_n', symObjAddr: 0x150, symBinAddr: 0x294210, symSize: 0x480 } + - { offset: 0x32DB07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV11parseRotate33_892AF320A73F92CC7AB19393F72C04FDLLyAA3DOMO9TransformOSgAC7ScannerVzKFTf4nd_n', symObjAddr: 0x5D0, symBinAddr: 0x294690, symSize: 0x2F0 } + - { offset: 0x32DF01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV14parseTransformySayAA3DOMO0F0OGSSKFTf4nd_n', symObjAddr: 0x8C0, symBinAddr: 0x294980, symSize: 0x1770 } + - { offset: 0x32EF92, size: 0x8, addend: 0x0, symName: '_$sSTsE5first5where7ElementQzSgSbADKXE_tKFShySSG_Tg577$s8PenNavUI9XMLParserV7ScannerV10scanString11matchingAnySSShySSG_tKFSbSSXEfU_0eF2UI0H0V0J0VTf1cn_n', symObjAddr: 0x0, symBinAddr: 0x2940C0, symSize: 0x150 } + - { offset: 0x32F6E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOwet', symObjAddr: 0x20, symBinAddr: 0x2960F0, symSize: 0x80 } + - { offset: 0x32F6F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOwst', symObjAddr: 0xA0, symBinAddr: 0x296170, symSize: 0xD0 } + - { offset: 0x32F70C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOMa', symObjAddr: 0x1A0, symBinAddr: 0x296240, symSize: 0x10 } + - { offset: 0x32F720, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOs12CaseIterableAA8AllCasessADP_SlWT', symObjAddr: 0x1B0, symBinAddr: 0x296250, symSize: 0x10 } + - { offset: 0x32F734, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI14DetailsSectionOGSayxGSlsWl', symObjAddr: 0x1C0, symBinAddr: 0x296260, symSize: 0x40 } + - { offset: 0x32F748, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI14DetailsSectionOGMa', symObjAddr: 0x200, symBinAddr: 0x2962A0, symSize: 0x30 } + - { offset: 0x32F7F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOSHAASQWb', symObjAddr: 0x340, symBinAddr: 0x296320, symSize: 0x10 } + - { offset: 0x32F80D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOACSQAAWl', symObjAddr: 0x350, symBinAddr: 0x296330, symSize: 0x30 } + - { offset: 0x32F85E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x2E0, symBinAddr: 0x2962D0, symSize: 0x20 } + - { offset: 0x32F89B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionOs12CaseIterableAAsADP8allCases03AllI0QzvgZTW', symObjAddr: 0x310, symBinAddr: 0x2962F0, symSize: 0x30 } + - { offset: 0x32F8EE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14DetailsSectionO8rawValueACSgSi_tcfCTf4nd_n', symObjAddr: 0x380, symBinAddr: 0x296360, symSize: 0x20 } + - { offset: 0x32FC93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC16instructionImageSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x296380, symSize: 0x20 } + - { offset: 0x33009C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellCfETo', symObjAddr: 0x1320, symBinAddr: 0x2976A0, symSize: 0x50 } + - { offset: 0x3300CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellCMa', symObjAddr: 0x1370, symBinAddr: 0x2976F0, symSize: 0x20 } + - { offset: 0x3300DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC18setInstructionIcon3foryAA05RouteD0V_tFySo7UIImageCSgcfU_TA', symObjAddr: 0x14B0, symBinAddr: 0x2977D0, symSize: 0x40 } + - { offset: 0x330304, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC16instructionImageSo11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x296380, symSize: 0x20 } + - { offset: 0x330362, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC16instructionImageSo11UIImageViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x2963A0, symSize: 0x30 } + - { offset: 0x3303B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5titleSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x2963D0, symSize: 0x20 } + - { offset: 0x330409, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5titleSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x2963F0, symSize: 0x30 } + - { offset: 0x330458, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC8subtitleSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x296420, symSize: 0x20 } + - { offset: 0x3304AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC8subtitleSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x296440, symSize: 0x30 } + - { offset: 0x33052A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC12awakeFromNibyyF', symObjAddr: 0xF0, symBinAddr: 0x296470, symSize: 0x1C0 } + - { offset: 0x330603, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC12awakeFromNibyyFTo', symObjAddr: 0x2B0, symBinAddr: 0x296630, symSize: 0x30 } + - { offset: 0x33075F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC9configure3foryAA05RouteD0V_tF', symObjAddr: 0x2E0, symBinAddr: 0x296660, symSize: 0x9A0 } + - { offset: 0x330AB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC18setInstructionIcon3foryAA05RouteD0V_tFySo7UIImageCSgcfU_', symObjAddr: 0xC80, symBinAddr: 0x297000, symSize: 0x330 } + - { offset: 0x330C5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC15prepareForReuseyyF', symObjAddr: 0xFB0, symBinAddr: 0x297330, symSize: 0x190 } + - { offset: 0x330D35, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC15prepareForReuseyyFTo', symObjAddr: 0x1140, symBinAddr: 0x2974C0, symSize: 0x30 } + - { offset: 0x330D76, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x1170, symBinAddr: 0x2974F0, symSize: 0xC0 } + - { offset: 0x330DB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1230, symBinAddr: 0x2975B0, symSize: 0x90 } + - { offset: 0x330DEA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x12C0, symBinAddr: 0x297640, symSize: 0x30 } + - { offset: 0x330DFE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13DirectionCellCfD', symObjAddr: 0x12F0, symBinAddr: 0x297670, symSize: 0x30 } + - { offset: 0x331192, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC06detailF0So11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x297810, symSize: 0x20 } + - { offset: 0x331363, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellCfETo', symObjAddr: 0x2D0, symBinAddr: 0x297AE0, symSize: 0x30 } + - { offset: 0x331392, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellCMa', symObjAddr: 0x300, symBinAddr: 0x297B10, symSize: 0x14 } + - { offset: 0x331464, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC06detailF0So11UIImageViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x297810, symSize: 0x20 } + - { offset: 0x3314C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC06detailF0So11UIImageViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x297830, symSize: 0x20 } + - { offset: 0x331517, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC21imageHeightConstraintSo08NSLayoutJ0CSgvgTo', symObjAddr: 0x40, symBinAddr: 0x297850, symSize: 0x20 } + - { offset: 0x331571, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC21imageHeightConstraintSo08NSLayoutJ0CSgvsTo', symObjAddr: 0x60, symBinAddr: 0x297870, symSize: 0x20 } + - { offset: 0x3315C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC12awakeFromNibyyFTo', symObjAddr: 0x80, symBinAddr: 0x297890, symSize: 0x60 } + - { offset: 0x331636, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0xE0, symBinAddr: 0x2978F0, symSize: 0x50 } + - { offset: 0x3316AC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC5style15reuseIdentifierACSo011UITableViewG5StyleV_SSSgtcfcTo', symObjAddr: 0x130, symBinAddr: 0x297940, symSize: 0xD0 } + - { offset: 0x33172A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x200, symBinAddr: 0x297A10, symSize: 0xA0 } + - { offset: 0x331761, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI22MessageDetailImageCellCfD', symObjAddr: 0x2A0, symBinAddr: 0x297AB0, symSize: 0x30 } + - { offset: 0x331B03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwxx', symObjAddr: 0x60, symBinAddr: 0x297B30, symSize: 0x20 } + - { offset: 0x331B17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwcp', symObjAddr: 0xB0, symBinAddr: 0x297B50, symSize: 0x60 } + - { offset: 0x331B2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwca', symObjAddr: 0x110, symBinAddr: 0x297BB0, symSize: 0x70 } + - { offset: 0x331B3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwta', symObjAddr: 0x1A0, symBinAddr: 0x297C20, symSize: 0x40 } + - { offset: 0x331B53, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwet', symObjAddr: 0x1E0, symBinAddr: 0x297C60, symSize: 0x50 } + - { offset: 0x331B67, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOwst', symObjAddr: 0x230, symBinAddr: 0x297CB0, symSize: 0x50 } + - { offset: 0x331B7B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOMa', symObjAddr: 0x2B0, symBinAddr: 0x297D00, symSize: 0x10 } + - { offset: 0x331D60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSHAASQWb', symObjAddr: 0x5F0, symBinAddr: 0x298040, symSize: 0x10 } + - { offset: 0x331E8A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC3arc33_3D1849BFB3F9132BAB159E8D460AA85ALL2to5large5radiiyAC5PointV_SbAC4SizeVtF', symObjAddr: 0x630, symBinAddr: 0x298050, symSize: 0x1B0 } + - { offset: 0x33216B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8makeLine7betweenAESayAC5PointVG_tFZTf4nd_n', symObjAddr: 0xA80, symBinAddr: 0x2984A0, symSize: 0x190 } + - { offset: 0x3324EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC8makeRect6within5radiiAeC0H0V_AC4SizeVtFZTf4nnd_n', symObjAddr: 0xC50, symBinAddr: 0x298630, symSize: 0x810 } + - { offset: 0x332E4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC11makeEllipse6withinAeC4RectV_tFZTf4nd_n', symObjAddr: 0x1460, symBinAddr: 0x298E40, symSize: 0x220 } + - { offset: 0x333127, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO4PathC11makePolygon7betweenAESayAC5PointVG_tFZTf4nd_n', symObjAddr: 0x1680, symBinAddr: 0x299060, symSize: 0xFE } + - { offset: 0x3333C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x550, symBinAddr: 0x297FA0, symSize: 0x60 } + - { offset: 0x333612, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO4hash4intoys6HasherVz_tF', symObjAddr: 0x2C0, symBinAddr: 0x297D10, symSize: 0x210 } + - { offset: 0x333BDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSHAASH9hashValueSivgTW', symObjAddr: 0x4D0, symBinAddr: 0x297F20, symSize: 0x60 } + - { offset: 0x333C59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x530, symBinAddr: 0x297F80, symSize: 0x20 } + - { offset: 0x333C80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x5B0, symBinAddr: 0x298000, symSize: 0x40 } + - { offset: 0x333D41, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO5ShapeO2eeoiySbAE_AEtFZTf4nnd_n', symObjAddr: 0x7E0, symBinAddr: 0x298200, symSize: 0x2A0 } + - { offset: 0x3343EA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvgTo', symObjAddr: 0x0, symBinAddr: 0x299160, symSize: 0x40 } + - { offset: 0x33455C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvpACTk', symObjAddr: 0x130, symBinAddr: 0x299290, symSize: 0x60 } + - { offset: 0x3345B0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewCMa', symObjAddr: 0x400, symBinAddr: 0x299550, symSize: 0x20 } + - { offset: 0x3345C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewCfETo', symObjAddr: 0x480, symBinAddr: 0x2995D0, symSize: 0x20 } + - { offset: 0x33465C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvgTo', symObjAddr: 0x0, symBinAddr: 0x299160, symSize: 0x40 } + - { offset: 0x33468F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvg', symObjAddr: 0x40, symBinAddr: 0x2991A0, symSize: 0x40 } + - { offset: 0x3346D7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvsTo', symObjAddr: 0x80, symBinAddr: 0x2991E0, symSize: 0x60 } + - { offset: 0x334712, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0Cvs', symObjAddr: 0xE0, symBinAddr: 0x299240, symSize: 0x50 } + - { offset: 0x334739, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC29dismissalTapGestureRecognizerSo05UITaphI0CvM', symObjAddr: 0x190, symBinAddr: 0x2992F0, symSize: 0x40 } + - { offset: 0x334786, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewCACycfcTo', symObjAddr: 0x1E0, symBinAddr: 0x299330, symSize: 0xC0 } + - { offset: 0x334839, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x2A0, symBinAddr: 0x2993F0, symSize: 0x50 } + - { offset: 0x334889, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC5frameACSo6CGRectV_tcfC', symObjAddr: 0x2F0, symBinAddr: 0x299440, symSize: 0x80 } + - { offset: 0x33489D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0x370, symBinAddr: 0x2994C0, symSize: 0x30 } + - { offset: 0x33490B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x3A0, symBinAddr: 0x2994F0, symSize: 0x30 } + - { offset: 0x33496A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12BackdropViewCfD', symObjAddr: 0x3D0, symBinAddr: 0x299520, symSize: 0x30 } + - { offset: 0x334D18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6campus33_2D041EA7C21D1E6F1ABCD9FDC43C0821LL7Penguin5VenueCSgvp', symObjAddr: 0x3210, symBinAddr: 0x3A76E0, symSize: 0x0 } + - { offset: 0x334D26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI6campus33_2D041EA7C21D1E6F1ABCD9FDC43C0821LL_WZ', symObjAddr: 0x0, symBinAddr: 0x299610, symSize: 0x90 } + - { offset: 0x3352E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCMU', symObjAddr: 0x2350, symBinAddr: 0x29B940, symSize: 0x10 } + - { offset: 0x3352F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCMa', symObjAddr: 0x2360, symBinAddr: 0x29B950, symSize: 0x30 } + - { offset: 0x33530D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCMr', symObjAddr: 0x2390, symBinAddr: 0x29B980, symSize: 0xA0 } + - { offset: 0x335321, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonVSgMa', symObjAddr: 0x2730, symBinAddr: 0x29BD20, symSize: 0x50 } + - { offset: 0x335335, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOMa', symObjAddr: 0x2920, symBinAddr: 0x29BD70, symSize: 0x10 } + - { offset: 0x335354, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSHAASQWb', symObjAddr: 0x2CB0, symBinAddr: 0x29C100, symSize: 0x10 } + - { offset: 0x335368, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOACSQAAWl', symObjAddr: 0x2CC0, symBinAddr: 0x29C110, symSize: 0x30 } + - { offset: 0x33537C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOAEs0E3KeyAAWl', symObjAddr: 0x2D60, symBinAddr: 0x29C140, symSize: 0x30 } + - { offset: 0x335390, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOACSeAAWl', symObjAddr: 0x2DC0, symBinAddr: 0x29C170, symSize: 0x30 } + - { offset: 0x3353A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOACSYAAWl', symObjAddr: 0x2E30, symBinAddr: 0x29C1A0, symSize: 0x30 } + - { offset: 0x3353B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOACSEAAWl', symObjAddr: 0x2E60, symBinAddr: 0x29C1D0, symSize: 0x30 } + - { offset: 0x3353CC, size: 0x8, addend: 0x0, symName: '_$s7Penguin10PoiPolygonVSgWOh', symObjAddr: 0x2F10, symBinAddr: 0x29C240, symSize: 0x30 } + - { offset: 0x3353E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOMa', symObjAddr: 0x30C0, symBinAddr: 0x29C270, symSize: 0x10 } + - { offset: 0x3353F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASQWb', symObjAddr: 0x30D0, symBinAddr: 0x29C280, symSize: 0x10 } + - { offset: 0x335408, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOAESQAAWl', symObjAddr: 0x30E0, symBinAddr: 0x29C290, symSize: 0x30 } + - { offset: 0x33541C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs0E3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x3110, symBinAddr: 0x29C2C0, symSize: 0x10 } + - { offset: 0x335430, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOAEs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x3120, symBinAddr: 0x29C2D0, symSize: 0x30 } + - { offset: 0x335444, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs0E3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x3150, symBinAddr: 0x29C300, symSize: 0x10 } + - { offset: 0x335458, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOAEs23CustomStringConvertibleAAWl', symObjAddr: 0x3160, symBinAddr: 0x29C310, symSize: 0x30 } + - { offset: 0x335494, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x1E0, symBinAddr: 0x2997F0, symSize: 0x10 } + - { offset: 0x3354CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASH9hashValueSivgTW', symObjAddr: 0x1F0, symBinAddr: 0x299800, symSize: 0x20 } + - { offset: 0x335514, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x210, symBinAddr: 0x299820, symSize: 0x10 } + - { offset: 0x335530, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x220, symBinAddr: 0x299830, symSize: 0x10 } + - { offset: 0x335564, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs28CustomDebugStringConvertibleAAsAFP16debugDescriptionSSvgTW', symObjAddr: 0x430, symBinAddr: 0x299A20, symSize: 0x20 } + - { offset: 0x335580, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs23CustomStringConvertibleAAsAFP11descriptionSSvgTW', symObjAddr: 0x450, symBinAddr: 0x299A40, symSize: 0x20 } + - { offset: 0x3356E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSQAASQ2eeoiySbx_xtFZTW', symObjAddr: 0x29A0, symBinAddr: 0x29BDF0, symSize: 0x90 } + - { offset: 0x3357BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSHAASH9hashValueSivgTW', symObjAddr: 0x2A30, symBinAddr: 0x29BE80, symSize: 0x80 } + - { offset: 0x33585A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSHAASH4hash4intoys6HasherVz_tFTW', symObjAddr: 0x2AB0, symBinAddr: 0x29BF00, symSize: 0x50 } + - { offset: 0x3358C1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSHAASH13_rawHashValue4seedS2i_tFTW', symObjAddr: 0x2B00, symBinAddr: 0x29BF50, symSize: 0x70 } + - { offset: 0x33593A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x2C20, symBinAddr: 0x29C070, symSize: 0x50 } + - { offset: 0x33595D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x2C70, symBinAddr: 0x29C0C0, symSize: 0x40 } + - { offset: 0x335A6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10identifierSSvg', symObjAddr: 0x90, symBinAddr: 0x2996A0, symSize: 0x150 } + - { offset: 0x335B0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSYAASY8rawValuexSg03RawH0Qz_tcfCTW', symObjAddr: 0x230, symBinAddr: 0x299840, symSize: 0x30 } + - { offset: 0x335B4C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOSYAASY8rawValue03RawH0QzvgTW', symObjAddr: 0x260, symBinAddr: 0x299870, symSize: 0xD0 } + - { offset: 0x335B7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs0E3KeyAAsAFP11stringValueSSvgTW', symObjAddr: 0x330, symBinAddr: 0x299940, symSize: 0xC0 } + - { offset: 0x335BD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysOs0E3KeyAAsAFP11stringValuexSgSS_tcfCTW', symObjAddr: 0x3F0, symBinAddr: 0x299A00, symSize: 0x20 } + - { offset: 0x335D0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC9cacheDataAcA0d5CacheF0C_tcfc', symObjAddr: 0x470, symBinAddr: 0x299A60, symSize: 0x450 } + - { offset: 0x335F18, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC5placeAcA5PlaceCSg_tcfc', symObjAddr: 0x8C0, symBinAddr: 0x299EB0, symSize: 0x340 } + - { offset: 0x336086, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC4fromACs7Decoder_p_tKcfc', symObjAddr: 0xC00, symBinAddr: 0x29A1F0, symSize: 0x400 } + - { offset: 0x33614A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC13favoriteAliasSSvg', symObjAddr: 0x1000, symBinAddr: 0x29A5F0, symSize: 0x140 } + - { offset: 0x336197, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC12favoriteNameSSvg', symObjAddr: 0x1140, symBinAddr: 0x29A730, symSize: 0x140 } + - { offset: 0x3362E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC27favoriteDistanceInformationSSvg', symObjAddr: 0x1280, symBinAddr: 0x29A870, symSize: 0x6B0 } + - { offset: 0x336875, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC16favoriteCategory7Penguin11POICategoryVSgvg', symObjAddr: 0x1930, symBinAddr: 0x29AF20, symSize: 0x1B0 } + - { offset: 0x3369A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC7iconUrlSSSgvg', symObjAddr: 0x1AE0, symBinAddr: 0x29B0D0, symSize: 0x140 } + - { offset: 0x336A55, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC15favoriteAddressSSvg', symObjAddr: 0x1C20, symBinAddr: 0x29B210, symSize: 0x6D0 } + - { offset: 0x336F6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCfD', symObjAddr: 0x22F0, symBinAddr: 0x29B8E0, symSize: 0x60 } + - { offset: 0x336FA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC6encode2toys7Encoder_p_tKF', symObjAddr: 0x2430, symBinAddr: 0x29BA20, symSize: 0x300 } + - { offset: 0x336FE2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0x2930, symBinAddr: 0x29BD80, symSize: 0x50 } + - { offset: 0x33700C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteCSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0x2980, symBinAddr: 0x29BDD0, symSize: 0x20 } + - { offset: 0x337044, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSYAASY8rawValuexSg03RawG0Qz_tcfCTW', symObjAddr: 0x2B70, symBinAddr: 0x29BFC0, symSize: 0x70 } + - { offset: 0x337091, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12FavoriteTypeOSYAASY8rawValue03RawG0QzvgTW', symObjAddr: 0x2BE0, symBinAddr: 0x29C030, symSize: 0x40 } + - { offset: 0x3370BA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8FavoriteC10CodingKeysO8rawValueAESgSS_tcfCTf4nd_n', symObjAddr: 0x3190, symBinAddr: 0x29C340, symSize: 0x53 } + - { offset: 0x337495, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV10scanStringySbSSKF', symObjAddr: 0x0, symBinAddr: 0x29C3A0, symSize: 0x150 } + - { offset: 0x33778E, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE8scanBoolSbyKF', symObjAddr: 0x510, symBinAddr: 0x29C870, symSize: 0x460 } + - { offset: 0x33789F, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE5ErrorOAEsAdCWl', symObjAddr: 0xB70, symBinAddr: 0x29CDA0, symSize: 0x30 } + - { offset: 0x3378B3, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE5ErrorOMa', symObjAddr: 0xCE0, symBinAddr: 0x29CDD0, symSize: 0x10 } + - { offset: 0x3378C7, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE5ErrorOSHACSQWb', symObjAddr: 0xCF0, symBinAddr: 0x29CDE0, symSize: 0x10 } + - { offset: 0x3378DB, size: 0x8, addend: 0x0, symName: '_$sSo9NSScannerC8PenNavUIE5ErrorOAESQACWl', symObjAddr: 0xD00, symBinAddr: 0x29CDF0, symSize: 0x2D } + - { offset: 0x337945, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV10scanStringySbSSKF', symObjAddr: 0x0, symBinAddr: 0x29C3A0, symSize: 0x150 } + - { offset: 0x337AA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV14scanPercentageSfyKF', symObjAddr: 0x190, symBinAddr: 0x29C4F0, symSize: 0x1C0 } + - { offset: 0x337B8F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV13scanCharacter11matchingAnySJ10Foundation0G3SetV_tKF', symObjAddr: 0x350, symBinAddr: 0x29C6B0, symSize: 0x1C0 } + - { offset: 0x337CA8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV7ScannerV10scanString11matchingAnySS10Foundation12CharacterSetV_tKF', symObjAddr: 0x970, symBinAddr: 0x29CCD0, symSize: 0xD0 } + - { offset: 0x3383AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellCfETo', symObjAddr: 0xC40, symBinAddr: 0x29DA60, symSize: 0x50 } + - { offset: 0x3383DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellCMa', symObjAddr: 0xC90, symBinAddr: 0x29DAB0, symSize: 0x20 } + - { offset: 0x3383F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC8setImage3foryAA0D0C_tFySo7UIImageCSgcfU_TA', symObjAddr: 0xDB0, symBinAddr: 0x29DB20, symSize: 0x20 } + - { offset: 0x338404, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvWyycfU0_TA', symObjAddr: 0xDD0, symBinAddr: 0x29DB40, symSize: 0x30 } + - { offset: 0x338418, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xE00, symBinAddr: 0x29DB70, symSize: 0x20 } + - { offset: 0x33842C, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xE20, symBinAddr: 0x29DB90, symSize: 0x10 } + - { offset: 0x338440, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvWyycfU_TA', symObjAddr: 0xE30, symBinAddr: 0x29DBA0, symSize: 0x30 } + - { offset: 0x338593, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC09containerF0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x29CE20, symSize: 0x20 } + - { offset: 0x3385F1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC09containerF0So6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x29CE40, symSize: 0x30 } + - { offset: 0x338640, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC05imageF0So07UIImageF0CSgvgTo', symObjAddr: 0x50, symBinAddr: 0x29CE70, symSize: 0x20 } + - { offset: 0x33869A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC05imageF0So07UIImageF0CSgvsTo', symObjAddr: 0x70, symBinAddr: 0x29CE90, symSize: 0x20 } + - { offset: 0x3386ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x90, symBinAddr: 0x29CEB0, symSize: 0x20 } + - { offset: 0x338747, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0xB0, symBinAddr: 0x29CED0, symSize: 0x20 } + - { offset: 0x33879A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC12awakeFromNibyyFTo', symObjAddr: 0xD0, symBinAddr: 0x29CEF0, symSize: 0x30 } + - { offset: 0x3387F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvgTo', symObjAddr: 0x100, symBinAddr: 0x29CF20, symSize: 0x30 } + - { offset: 0x33884D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvsTo', symObjAddr: 0x130, symBinAddr: 0x29CF50, symSize: 0x60 } + - { offset: 0x338888, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC13isHighlightedSbvW', symObjAddr: 0x190, symBinAddr: 0x29CFB0, symSize: 0x150 } + - { offset: 0x3388D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC7setData3foryAA0D0C_tF', symObjAddr: 0x390, symBinAddr: 0x29D1B0, symSize: 0xB0 } + - { offset: 0x338960, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC8setImage3foryAA0D0C_tF', symObjAddr: 0x440, symBinAddr: 0x29D260, symSize: 0x2F0 } + - { offset: 0x338A61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC8setImage3foryAA0D0C_tFySo7UIImageCSgcfU_', symObjAddr: 0x730, symBinAddr: 0x29D550, symSize: 0x1C0 } + - { offset: 0x338B32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC15prepareForReuseyyF', symObjAddr: 0x8F0, symBinAddr: 0x29D710, symSize: 0x170 } + - { offset: 0x338BCD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC15prepareForReuseyyFTo', symObjAddr: 0xA60, symBinAddr: 0x29D880, symSize: 0x30 } + - { offset: 0x338C04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0xA90, symBinAddr: 0x29D8B0, symSize: 0xA0 } + - { offset: 0x338C5D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0xB30, symBinAddr: 0x29D950, symSize: 0xB0 } + - { offset: 0x338C90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0xBE0, symBinAddr: 0x29DA00, symSize: 0x30 } + - { offset: 0x338CA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI26FavoriteCollectionViewCellCfD', symObjAddr: 0xC10, symBinAddr: 0x29DA30, symSize: 0x30 } + - { offset: 0x33904C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewC5frame5colorACSo6CGRectV_So7UIColorCtcfc', symObjAddr: 0x0, symBinAddr: 0x29DBF0, symSize: 0x470 } + - { offset: 0x339219, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewCMa', symObjAddr: 0x550, symBinAddr: 0x29E140, symSize: 0x20 } + - { offset: 0x339302, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewC5frame5colorACSo6CGRectV_So7UIColorCtcfc', symObjAddr: 0x0, symBinAddr: 0x29DBF0, symSize: 0x470 } + - { offset: 0x3394FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x470, symBinAddr: 0x29E060, symSize: 0x80 } + - { offset: 0x339558, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x4F0, symBinAddr: 0x29E0E0, symSize: 0x30 } + - { offset: 0x3395B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI28LocationIndicatorBearingViewCfD', symObjAddr: 0x520, symBinAddr: 0x29E110, symSize: 0x30 } + - { offset: 0x339956, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5frame11circleColor05arrowJ0ACSo6CGRectV_So7UIColorCAJtcfc', symObjAddr: 0x0, symBinAddr: 0x29E160, symSize: 0x160 } + - { offset: 0x339B96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewCfETo', symObjAddr: 0x8E0, symBinAddr: 0x29EA40, symSize: 0x40 } + - { offset: 0x339BC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewCMa', symObjAddr: 0x920, symBinAddr: 0x29EA80, symSize: 0x14 } + - { offset: 0x339BDA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5frame11circleColor05arrowJ0ACSo6CGRectV_So7UIColorCAJtcfc', symObjAddr: 0x0, symBinAddr: 0x29E160, symSize: 0x160 } + - { offset: 0x339C92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x160, symBinAddr: 0x29E2C0, symSize: 0x100 } + - { offset: 0x339CF2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x260, symBinAddr: 0x29E3C0, symSize: 0x30 } + - { offset: 0x339D23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC015setupArrowImageG033_1FCC85171C0AF7556E3C336142678B89LL10arrowColorySo7UIColorC_tF', symObjAddr: 0x290, symBinAddr: 0x29E3F0, symSize: 0x110 } + - { offset: 0x339DD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC14layoutSubviewsyyF', symObjAddr: 0x3A0, symBinAddr: 0x29E500, symSize: 0x160 } + - { offset: 0x339E93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC14layoutSubviewsyyFTo', symObjAddr: 0x500, symBinAddr: 0x29E660, symSize: 0x30 } + - { offset: 0x339EB4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC4drawyySo6CGRectVF', symObjAddr: 0x530, symBinAddr: 0x29E690, symSize: 0x2E0 } + - { offset: 0x339F52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC4drawyySo6CGRectVFTo', symObjAddr: 0x810, symBinAddr: 0x29E970, symSize: 0x70 } + - { offset: 0x339F8E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x880, symBinAddr: 0x29E9E0, symSize: 0x30 } + - { offset: 0x339FED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI31NavigationLocationIndicatorViewCfD', symObjAddr: 0x8B0, symBinAddr: 0x29EA10, symSize: 0x30 } + - { offset: 0x33A3C6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCAA20NotificationObserverA2aDP25userLocationStatusChangedyyFTW', symObjAddr: 0x170, symBinAddr: 0x29EAA0, symSize: 0x6 } + - { offset: 0x33A768, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19FloorDrawingManagerV04drawD0_5using012setsCameraToD010completiony7Penguin0D0CSg_0M10INRenderer10PIRendererCSgSbySbcSgtFZySbcfU_', symObjAddr: 0x0, symBinAddr: 0x29EAB0, symSize: 0x110 } + - { offset: 0x33A883, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19FloorDrawingManagerV04drawD0_5using012setsCameraToD010completiony7Penguin0D0CSg_0M10INRenderer10PIRendererCSgSbySbcSgtFZySbcfU_', symObjAddr: 0x0, symBinAddr: 0x29EAB0, symSize: 0x110 } + - { offset: 0x33A930, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19FloorDrawingManagerV04drawD0_5using012setsCameraToD010completiony7Penguin0D0CSg_0M10INRenderer10PIRendererCSgSbySbcSgtFZTf4nnnnd_n', symObjAddr: 0x110, symBinAddr: 0x29EBC0, symSize: 0x3C0 } + - { offset: 0x33AD6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC4size14indicatorColor06strokeI0AC12CoreGraphics7CGFloatV_So7UIColorCAKtcfc', symObjAddr: 0x0, symBinAddr: 0x29EFC0, symSize: 0x130 } + - { offset: 0x33AEAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewCfETo', symObjAddr: 0x590, symBinAddr: 0x29F550, symSize: 0x40 } + - { offset: 0x33AEDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewCMa', symObjAddr: 0x5D0, symBinAddr: 0x29F590, symSize: 0x14 } + - { offset: 0x33AF45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC4size14indicatorColor06strokeI0AC12CoreGraphics7CGFloatV_So7UIColorCAKtcfc', symObjAddr: 0x0, symBinAddr: 0x29EFC0, symSize: 0x130 } + - { offset: 0x33AFD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x130, symBinAddr: 0x29F0F0, symSize: 0x130 } + - { offset: 0x33B007, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x260, symBinAddr: 0x29F220, symSize: 0x30 } + - { offset: 0x33B078, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC4drawyySo6CGRectVF', symObjAddr: 0x290, symBinAddr: 0x29F250, symSize: 0x230 } + - { offset: 0x33B169, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC4drawyySo6CGRectVFTo', symObjAddr: 0x4C0, symBinAddr: 0x29F480, symSize: 0x70 } + - { offset: 0x33B1A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x530, symBinAddr: 0x29F4F0, symSize: 0x30 } + - { offset: 0x33B1FF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21LocationIndicatorViewCfD', symObjAddr: 0x560, symBinAddr: 0x29F520, symSize: 0x30 } + - { offset: 0x33B5E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC04pathE00D006NWPathE0CSgvpZ', symObjAddr: 0x84E8, symBinAddr: 0x3BD378, symSize: 0x0 } + - { offset: 0x33B600, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC13interfaceType0D011NWInterfaceV09InterfaceG0OvpZ', symObjAddr: 0x84F0, symBinAddr: 0x3BD380, symSize: 0x0 } + - { offset: 0x33B61A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC17monitoringStartedSbvpZ', symObjAddr: 0x8508, symBinAddr: 0x3BD398, symSize: 0x0 } + - { offset: 0x33B713, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC13interfaceType_WZ', symObjAddr: 0x240, symBinAddr: 0x29F7F0, symSize: 0x50 } + - { offset: 0x33B73E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorCMa', symObjAddr: 0x7D0, symBinAddr: 0x29FD50, symSize: 0x20 } + - { offset: 0x33B752, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC5startyyFZy0D06NWPathVcfU_TA', symObjAddr: 0x830, symBinAddr: 0x29FDB0, symSize: 0x10 } + - { offset: 0x33B777, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC25networkInterfaceDidChange33_91F7F947D07FC5BC8196B21D1F1C565BLL2toy0D011NWInterfaceV0G4TypeO_tFZyyScMYccfU_TA', symObjAddr: 0x1020, symBinAddr: 0x2A04B0, symSize: 0x30 } + - { offset: 0x33B78B, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1050, symBinAddr: 0x2A04E0, symSize: 0x20 } + - { offset: 0x33B79F, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1070, symBinAddr: 0x2A0500, symSize: 0x10 } + - { offset: 0x33B7B3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZy0D06NWPathVcfU_TA', symObjAddr: 0x1130, symBinAddr: 0x2A0540, symSize: 0x20 } + - { offset: 0x33B7C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZy0D06NWPathVcfU_yyScMYccfU_TA', symObjAddr: 0x11C0, symBinAddr: 0x2A05D0, symSize: 0x30 } + - { offset: 0x33B909, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC5startyyFZ', symObjAddr: 0x0, symBinAddr: 0x29F5B0, symSize: 0x240 } + - { offset: 0x33B9AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC5startyyFZy0D06NWPathVcfU_', symObjAddr: 0x5B0, symBinAddr: 0x29FB60, symSize: 0x100 } + - { offset: 0x33BA09, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZy0D06NWPathVcfU_', symObjAddr: 0x290, symBinAddr: 0x29F840, symSize: 0x270 } + - { offset: 0x33BA78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZy0D06NWPathVcfU_yyScMYccfU_', symObjAddr: 0x500, symBinAddr: 0x29FAB0, symSize: 0xB0 } + - { offset: 0x33BAD0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC25networkInterfaceDidChange33_91F7F947D07FC5BC8196B21D1F1C565BLL2toy0D011NWInterfaceV0G4TypeO_tFZyyScMYccfU_', symObjAddr: 0x6B0, symBinAddr: 0x29FC60, symSize: 0xF0 } + - { offset: 0x33BB0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC23checkInternetConnection10completionyySbc_tFZTf4nd_n', symObjAddr: 0x920, symBinAddr: 0x29FE00, symSize: 0x210 } + - { offset: 0x33BBCB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC6cancelyyFZTf4d_n', symObjAddr: 0xB30, symBinAddr: 0x2A0010, symSize: 0x130 } + - { offset: 0x33BBED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14NetworkMonitorC25networkInterfaceDidChange33_91F7F947D07FC5BC8196B21D1F1C565BLL2toy0D011NWInterfaceV0G4TypeO_tFZTf4nd_n', symObjAddr: 0xC60, symBinAddr: 0x2A0140, symSize: 0x320 } + - { offset: 0x33C014, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ScheduleDayVMa', symObjAddr: 0x140, symBinAddr: 0x2A0620, symSize: 0x10 } + - { offset: 0x33C3EB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ScheduleDayV10timeRangesSSvg', symObjAddr: 0x150, symBinAddr: 0x2A0630, symSize: 0x4C0 } + - { offset: 0x33C88A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ScheduleDayV05shortE4NameSSvgTf4x_n', symObjAddr: 0x7E0, symBinAddr: 0x2A0C50, symSize: 0x100 } + - { offset: 0x33C94F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11ScheduleDayV04longE4NameSSSgvgTf4x_n', symObjAddr: 0x8E0, symBinAddr: 0x2A0D50, symSize: 0x170 } + - { offset: 0x33CD90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5labelSo7UILabelCvpfiAFyXEfU_', symObjAddr: 0x0, symBinAddr: 0x2A0EC0, symSize: 0x1F0 } + - { offset: 0x33CED4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelCfETo', symObjAddr: 0x4D0, symBinAddr: 0x2A1390, symSize: 0x20 } + - { offset: 0x33CF03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelCMa', symObjAddr: 0x4F0, symBinAddr: 0x2A13B0, symSize: 0x14 } + - { offset: 0x33CFD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5labelSo7UILabelCvpfiAFyXEfU_', symObjAddr: 0x0, symBinAddr: 0x2A0EC0, symSize: 0x1F0 } + - { offset: 0x33D0D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5frameACSo6CGRectV_tcfc', symObjAddr: 0x1F0, symBinAddr: 0x2A10B0, symSize: 0x210 } + - { offset: 0x33D107, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x400, symBinAddr: 0x2A12C0, symSize: 0x30 } + - { offset: 0x33D152, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x430, symBinAddr: 0x2A12F0, symSize: 0x70 } + - { offset: 0x33D1A0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI18VenuesSectionLabelCfD', symObjAddr: 0x4A0, symBinAddr: 0x2A1360, symSize: 0x30 } + - { offset: 0x33D553, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15updateFontStyleyyAC0fG0OF', symObjAddr: 0x0, symBinAddr: 0x2A13D0, symSize: 0x150 } + - { offset: 0x33D665, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15updateFontStyle3for5styleySaySSG_AC0fG0OtF', symObjAddr: 0x150, symBinAddr: 0x2A1520, symSize: 0x1E0 } + - { offset: 0x33D7E2, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE33updateFontStyleForWordsContaining_5styleySS_AC0fG0OtF', symObjAddr: 0x330, symBinAddr: 0x2A1700, symSize: 0x1F0 } + - { offset: 0x33D92A, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE9fontStyleSSvsTo', symObjAddr: 0x520, symBinAddr: 0x2A18F0, symSize: 0x50 } + - { offset: 0x33D946, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE9fontStyleSSvs', symObjAddr: 0x570, symBinAddr: 0x2A1940, symSize: 0x1A0 } + - { offset: 0x33DA48, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15colorIdentifierSivgTo', symObjAddr: 0x710, symBinAddr: 0x2A1AE0, symSize: 0x10 } + - { offset: 0x33DA64, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15colorIdentifierSivsTo', symObjAddr: 0x720, symBinAddr: 0x2A1AF0, symSize: 0x30 } + - { offset: 0x33DA80, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x770, symBinAddr: 0x2A1B20, symSize: 0x10 } + - { offset: 0x33DA9C, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x780, symBinAddr: 0x2A1B30, symSize: 0x30 } + - { offset: 0x33DAE2, size: 0x8, addend: 0x0, symName: '_$sSo7UILabelC8PenNavUIE15localizationKeySSvsTo', symObjAddr: 0x900, symBinAddr: 0x2A1C70, symSize: 0x90 } + - { offset: 0x33E063, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2A1D20, symSize: 0x20 } + - { offset: 0x33E35E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellCfETo', symObjAddr: 0x910, symBinAddr: 0x2A2620, symSize: 0x50 } + - { offset: 0x33E38D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellCMa', symObjAddr: 0x960, symBinAddr: 0x2A2670, symSize: 0x20 } + - { offset: 0x33E3A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC25adaptivePresentationStyle3forSo07UIModalhI0VSo24UIPresentationControllerC_tFTo', symObjAddr: 0x980, symBinAddr: 0x2A2690, symSize: 0x10 } + - { offset: 0x33E3BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC05shareD0yyFyycfU_TA', symObjAddr: 0x9F0, symBinAddr: 0x2A26C0, symSize: 0x10 } + - { offset: 0x33E4E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC11shareButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2A1D20, symSize: 0x20 } + - { offset: 0x33E53F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC11shareButtonSo8UIButtonCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x2A1D40, symSize: 0x30 } + - { offset: 0x33E58E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC17reportIssueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x2A1D70, symSize: 0x20 } + - { offset: 0x33E5E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC17reportIssueButtonSo8UIButtonCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x2A1D90, symSize: 0x30 } + - { offset: 0x33E62C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC12awakeFromNibyyF', symObjAddr: 0xA0, symBinAddr: 0x2A1DC0, symSize: 0xD0 } + - { offset: 0x33E67A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC12awakeFromNibyyFTo', symObjAddr: 0x170, symBinAddr: 0x2A1E90, symSize: 0x30 } + - { offset: 0x33E695, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC13reportAnIssueyySo8UIButtonCFTo', symObjAddr: 0x1A0, symBinAddr: 0x2A1EC0, symSize: 0x10 } + - { offset: 0x33E73D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC05shareD0yyF', symObjAddr: 0x1B0, symBinAddr: 0x2A1ED0, symSize: 0x4E0 } + - { offset: 0x33E98B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC05shareD0yyFyycfU_', symObjAddr: 0x690, symBinAddr: 0x2A23B0, symSize: 0x80 } + - { offset: 0x33E9F7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC05shareD0yyFTo', symObjAddr: 0x720, symBinAddr: 0x2A2430, symSize: 0x30 } + - { offset: 0x33EA3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x750, symBinAddr: 0x2A2460, symSize: 0xC0 } + - { offset: 0x33EAA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x810, symBinAddr: 0x2A2520, symSize: 0xA0 } + - { offset: 0x33EAD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x8B0, symBinAddr: 0x2A25C0, symSize: 0x30 } + - { offset: 0x33EAE9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellCfD', symObjAddr: 0x8E0, symBinAddr: 0x2A25F0, symSize: 0x30 } + - { offset: 0x33EB0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20DirectionsFooterCellC13reportAnIssueyySo8UIButtonCFTf4dd_n', symObjAddr: 0xA40, symBinAddr: 0x2A26D0, symSize: 0xD0 } + - { offset: 0x33EEAD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4fromSSAA9LayerTreeO5ShapeO_tF', symObjAddr: 0x0, symBinAddr: 0x2A27A0, symSize: 0x1F0 } + - { offset: 0x33EF7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4fromSSAA9LayerTreeO5ShapeO_tF', symObjAddr: 0x0, symBinAddr: 0x2A27A0, symSize: 0x1F0 } + - { offset: 0x33F229, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderRect33_7CD13BB8671B7C502D9AF163B5323DF8LL4fromSSAA9LayerTreeO0G0V_tF', symObjAddr: 0x1F0, symBinAddr: 0x2A2990, symSize: 0x2A0 } + - { offset: 0x33F5ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC14renderRectPath5frame5radiiSSAA9LayerTreeO0G0V_AH4SizeVtF', symObjAddr: 0x490, symBinAddr: 0x2A2C30, symSize: 0x150 } + - { offset: 0x33F897, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC17renderPolygonPath7betweenSSSayAA9LayerTreeO5PointVG_tF', symObjAddr: 0x5E0, symBinAddr: 0x2A2D80, symSize: 0x480 } + - { offset: 0x33FE4E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4from9formatterSSAA9LayerTreeO0G0C_AA19CoordinateFormatterVtFZ0F5PointL_AESSAH0N0V_tF', symObjAddr: 0xA60, symBinAddr: 0x2A3200, symSize: 0x180 } + - { offset: 0x3400A1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4from9formatterSSAA9LayerTreeO0G0C_AA19CoordinateFormatterVtFZTf4nnd_n', symObjAddr: 0xBE0, symBinAddr: 0x2A3380, symSize: 0x440 } + - { offset: 0x340A6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwCP', symObjAddr: 0x0, symBinAddr: 0x2A37C0, symSize: 0xF0 } + - { offset: 0x340A83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwxx', symObjAddr: 0xF0, symBinAddr: 0x2A38B0, symSize: 0x50 } + - { offset: 0x340A97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwcp', symObjAddr: 0x140, symBinAddr: 0x2A3900, symSize: 0xC0 } + - { offset: 0x340AAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwca', symObjAddr: 0x200, symBinAddr: 0x2A39C0, symSize: 0xD0 } + - { offset: 0x340ABF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwtk', symObjAddr: 0x2D0, symBinAddr: 0x2A3A90, symSize: 0x90 } + - { offset: 0x340AD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwta', symObjAddr: 0x360, symBinAddr: 0x2A3B20, symSize: 0xB0 } + - { offset: 0x340AE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwet', symObjAddr: 0x410, symBinAddr: 0x2A3BD0, symSize: 0x20 } + - { offset: 0x340AFB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVwst', symObjAddr: 0x490, symBinAddr: 0x2A3C50, symSize: 0x20 } + - { offset: 0x340B0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVMa', symObjAddr: 0x510, symBinAddr: 0x2A3CD0, symSize: 0x30 } + - { offset: 0x340B23, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVMr', symObjAddr: 0x540, symBinAddr: 0x2A3D00, symSize: 0xA0 } + - { offset: 0x340D32, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOAFs0F3KeyAAWl', symObjAddr: 0xEF0, symBinAddr: 0x2A45B0, symSize: 0x30 } + - { offset: 0x340D46, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10LiveObjectVGSayxGSesSeRzlWl', symObjAddr: 0x1680, symBinAddr: 0x2A4B90, symSize: 0x60 } + - { offset: 0x340D5A, size: 0x8, addend: 0x0, symName: '_$sSay8PenNavUI10LiveObjectVGMa', symObjAddr: 0x16E0, symBinAddr: 0x2A4BF0, symSize: 0x50 } + - { offset: 0x340D6E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOMa', symObjAddr: 0x1930, symBinAddr: 0x2A4C40, symSize: 0x10 } + - { offset: 0x340D82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOSHAASQWb', symObjAddr: 0x1940, symBinAddr: 0x2A4C50, symSize: 0x10 } + - { offset: 0x340D96, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOAFSQAAWl', symObjAddr: 0x1950, symBinAddr: 0x2A4C60, symSize: 0x30 } + - { offset: 0x340DAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAs28CustomDebugStringConvertiblePWb', symObjAddr: 0x1980, symBinAddr: 0x2A4C90, symSize: 0x10 } + - { offset: 0x340DBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOAFs28CustomDebugStringConvertibleAAWl', symObjAddr: 0x1990, symBinAddr: 0x2A4CA0, symSize: 0x30 } + - { offset: 0x340DD2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAs23CustomStringConvertiblePWb', symObjAddr: 0x19C0, symBinAddr: 0x2A4CD0, symSize: 0x10 } + - { offset: 0x340DE6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOAFs23CustomStringConvertibleAAWl', symObjAddr: 0x19D0, symBinAddr: 0x2A4CE0, symSize: 0x30 } + - { offset: 0x340E2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs28CustomDebugStringConvertibleAAsAGP16debugDescriptionSSvgTW', symObjAddr: 0xE50, symBinAddr: 0x2A4550, symSize: 0x20 } + - { offset: 0x340E47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs23CustomStringConvertibleAAsAGP11descriptionSSvgTW', symObjAddr: 0xE70, symBinAddr: 0x2A4570, symSize: 0x20 } + - { offset: 0x340EFD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV8getImage10completionyySo7UIImageCc_tFyAGSgcfU_', symObjAddr: 0x5E0, symBinAddr: 0x2A3DA0, symSize: 0x50 } + - { offset: 0x340F45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLO11stringValueSSvg', symObjAddr: 0x630, symBinAddr: 0x2A3DF0, symSize: 0xE0 } + - { offset: 0x340F66, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV6encode2toys7Encoder_p_tKF', symObjAddr: 0x710, symBinAddr: 0x2A3ED0, symSize: 0x280 } + - { offset: 0x340F9D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV4fromACs7Decoder_p_tKcfC', symObjAddr: 0x990, symBinAddr: 0x2A4150, symSize: 0x3C0 } + - { offset: 0x340FD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAsAGP11stringValueSSvgTW', symObjAddr: 0xE00, symBinAddr: 0x2A4510, symSize: 0x10 } + - { offset: 0x340FEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAsAGP11stringValuexSgSS_tcfCTW', symObjAddr: 0xE10, symBinAddr: 0x2A4520, symSize: 0x20 } + - { offset: 0x341015, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLOs0F3KeyAAsAGP8intValuexSgSi_tcfCTW', symObjAddr: 0xE40, symBinAddr: 0x2A4540, symSize: 0x10 } + - { offset: 0x34102F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVSeAASe4fromxs7Decoder_p_tKcfCTW', symObjAddr: 0xE90, symBinAddr: 0x2A4590, symSize: 0x10 } + - { offset: 0x341043, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectVSEAASE6encode2toys7Encoder_p_tKFTW', symObjAddr: 0xEA0, symBinAddr: 0x2A45A0, symSize: 0x10 } + - { offset: 0x341102, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV6decode4fromSayACGSg10Foundation4DataVSg_tFZTf4nd_n', symObjAddr: 0xF80, symBinAddr: 0x2A45E0, symSize: 0x5B0 } + - { offset: 0x341213, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10LiveObjectV10CodingKeys33_02CFF32F44BF2859D382FA2A7903B007LLO11stringValueAFSgSS_tcfCTf4nd_n', symObjAddr: 0x1A00, symBinAddr: 0x2A4D10, symSize: 0x29B } + - { offset: 0x341705, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC6colorsAA14ColorsResponseVSgvpZ', symObjAddr: 0x9BA0, symBinAddr: 0x3BD3A0, symSize: 0x0 } + - { offset: 0x341760, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC20panelBackgroundColorSo7UIColorCvpZ', symObjAddr: 0x9BB8, symBinAddr: 0x3BD3B8, symSize: 0x0 } + - { offset: 0x34177A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC29secondaryPanelBackgroundColorSo7UIColorCvpZ', symObjAddr: 0x9BC0, symBinAddr: 0x3BD3C0, symSize: 0x0 } + - { offset: 0x341794, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC10labelColorSo7UIColorCvpZ', symObjAddr: 0x9BC8, symBinAddr: 0x3BD3C8, symSize: 0x0 } + - { offset: 0x3417AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC19secondaryLabelColorSo7UIColorCvpZ', symObjAddr: 0x9BD0, symBinAddr: 0x3BD3D0, symSize: 0x0 } + - { offset: 0x3417C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC27borderColorOnGrayBackgroundSo7UIColorCvpZ', symObjAddr: 0x9BD8, symBinAddr: 0x3BD3D8, symSize: 0x0 } + - { offset: 0x3417E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC28borderColorOnWhiteBackgroundSo7UIColorCvpZ', symObjAddr: 0x9BE0, symBinAddr: 0x3BD3E0, symSize: 0x0 } + - { offset: 0x3417FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC11buttonColorSo7UIColorCvpZ', symObjAddr: 0x9BE8, symBinAddr: 0x3BD3E8, symSize: 0x0 } + - { offset: 0x341816, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC22locationIndicatorColorSo7UIColorCvpZ', symObjAddr: 0x9BF0, symBinAddr: 0x3BD3F0, symSize: 0x0 } + - { offset: 0x341830, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC19accuracyCircleColorSo7UIColorCvpZ', symObjAddr: 0x9BF8, symBinAddr: 0x3BD3F8, symSize: 0x0 } + - { offset: 0x34184A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC14routeLineColorSo7UIColorCvpZ', symObjAddr: 0x9C00, symBinAddr: 0x3BD400, symSize: 0x0 } + - { offset: 0x341864, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC20routeLineCasingColorSo7UIColorCvpZ', symObjAddr: 0x9C08, symBinAddr: 0x3BD408, symSize: 0x0 } + - { offset: 0x34187E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC18openingStatusColorSo7UIColorCvpZ', symObjAddr: 0x9C10, symBinAddr: 0x3BD410, symSize: 0x0 } + - { offset: 0x341898, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC18closureStatusColorSo7UIColorCvpZ', symObjAddr: 0x9C18, symBinAddr: 0x3BD418, symSize: 0x0 } + - { offset: 0x3418B2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC23panelGrabberHandleColorSo7UIColorCvpZ', symObjAddr: 0x9C20, symBinAddr: 0x3BD420, symSize: 0x0 } + - { offset: 0x3418CC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC16closeButtonColorSo7UIColorCvpZ', symObjAddr: 0x9C28, symBinAddr: 0x3BD428, symSize: 0x0 } + - { offset: 0x3418E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC16placeholderColorSo7UIColorCvpZ', symObjAddr: 0x9C30, symBinAddr: 0x3BD430, symSize: 0x0 } + - { offset: 0x341900, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC14selectionColorSo7UIColorCvpZ', symObjAddr: 0x9C38, symBinAddr: 0x3BD438, symSize: 0x0 } + - { offset: 0x34190E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC14selectionColor_WZ', symObjAddr: 0x310, symBinAddr: 0x2A52C0, symSize: 0x40 } + - { offset: 0x341B07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeCMa', symObjAddr: 0x370, symBinAddr: 0x2A5300, symSize: 0x20 } + - { offset: 0x341C52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC020floorExtrudedPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0x3D0, symBinAddr: 0x2A5320, symSize: 0x180 } + - { offset: 0x341D87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC012venuePolygonD0AA14ColorsResponseV0fD0VvgZTf4d_n', symObjAddr: 0x550, symBinAddr: 0x2A54A0, symSize: 0x170 } + - { offset: 0x341EBC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC012venue3dModelD0AA14ColorsResponseV07PolygonD0VvgZTf4d_n', symObjAddr: 0x6E0, symBinAddr: 0x2A5630, symSize: 0x180 } + - { offset: 0x341FF1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC020venueExtrudedPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0x860, symBinAddr: 0x2A57B0, symSize: 0x180 } + - { offset: 0x342126, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC016indoorPoiPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0x9E0, symBinAddr: 0x2A5930, symSize: 0x170 } + - { offset: 0x34225B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC017outdoorPoiPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0xB50, symBinAddr: 0x2A5AA0, symSize: 0x170 } + - { offset: 0x3423DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC010getPolygonD03forSS9fillColor_Sd0H7OpacitySS06borderI0Sd0kJ0t7Penguin03PoiF0V_tFZTf4nd_n', symObjAddr: 0xCC0, symBinAddr: 0x2A5C10, symSize: 0x310 } + - { offset: 0x3425E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC010poi3dModelD0AA14ColorsResponseV07PolygonD0VvgZTf4d_n', symObjAddr: 0xFD0, symBinAddr: 0x2A5F20, symSize: 0x170 } + - { offset: 0x342719, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC018poiExtrudedPolygonD0AA14ColorsResponseV0gD0VvgZTf4d_n', symObjAddr: 0x1140, symBinAddr: 0x2A6090, symSize: 0x180 } + - { offset: 0x34284E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ThemeC13campusPolygonAA14ColorsResponseV0fD0VvgZTf4d_n', symObjAddr: 0x12F0, symBinAddr: 0x2A6210, symSize: 0x170 } + - { offset: 0x342D0E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC14sharedInstance33_1714430FC00978376F0CBFC2182C8579LLACSgvpZ', symObjAddr: 0x3780, symBinAddr: 0x3A7D28, symSize: 0x0 } + - { offset: 0x342FC9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC22startMonitoringRegions20forceLocationUpdatesySb_tF', symObjAddr: 0x70, symBinAddr: 0x2A65D0, symSize: 0x340 } + - { offset: 0x343242, size: 0x8, addend: 0x0, symName: '_$sSbs5Error_pSgIeghyg_SbSo7NSErrorCSgIeyBhyy_TR', symObjAddr: 0x3B0, symBinAddr: 0x2A6910, symSize: 0x60 } + - { offset: 0x343291, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCMa', symObjAddr: 0x5E0, symBinAddr: 0x2A6AD0, symSize: 0x20 } + - { offset: 0x3432E6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC9sendError5errorySSSg_tF', symObjAddr: 0xA50, symBinAddr: 0x2A6F40, symSize: 0x1F0 } + - { offset: 0x34334E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC9sendError5errorySSSg_tFyyScMYccfU_', symObjAddr: 0x2BA0, symBinAddr: 0x2A9020, symSize: 0xC0 } + - { offset: 0x3433AA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC20startGeofenceProcess33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0xC40, symBinAddr: 0x2A7130, symSize: 0x3C0 } + - { offset: 0x34348B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC20startGeofenceProcess33_1714430FC00978376F0CBFC2182C8579LLyyFySSSg_7Penguin9ErrorCodeOSgtcfU_', symObjAddr: 0x1BE0, symBinAddr: 0x2A8060, symSize: 0x80 } + - { offset: 0x34352B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC21stopMonitoringRegions33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0x11F0, symBinAddr: 0x2A76E0, symSize: 0x2E0 } + - { offset: 0x343683, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVWOc', symObjAddr: 0x1890, symBinAddr: 0x2A7D80, symSize: 0x30 } + - { offset: 0x343697, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI25PIGeofenceManagerDelegate_pSgWOd', symObjAddr: 0x1930, symBinAddr: 0x2A7DB0, symSize: 0x40 } + - { offset: 0x3436AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCfETo', symObjAddr: 0x1AF0, symBinAddr: 0x2A7F70, symSize: 0x80 } + - { offset: 0x3436DA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_22didChangeAuthorizationySo010CLLocationE0C_So21CLAuthorizationStatusVtF', symObjAddr: 0x1B70, symBinAddr: 0x2A7FF0, symSize: 0x10 } + - { offset: 0x3436FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_22didChangeAuthorizationySo010CLLocationE0C_So21CLAuthorizationStatusVtFTo', symObjAddr: 0x1B80, symBinAddr: 0x2A8000, symSize: 0x60 } + - { offset: 0x34373A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC11handleError5errory7Penguin0G4CodeO_tF', symObjAddr: 0x1C60, symBinAddr: 0x2A80E0, symSize: 0x70 } + - { offset: 0x3437F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC21loadCampusInformation33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0x1CD0, symBinAddr: 0x2A8150, symSize: 0x4A0 } + - { offset: 0x34387C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC21loadCampusInformation33_1714430FC00978376F0CBFC2182C8579LLyyFySay7Penguin0G0CGSgcfU_', symObjAddr: 0x2170, symBinAddr: 0x2A85F0, symSize: 0x240 } + - { offset: 0x34391A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC18loadRemoteSettings33_1714430FC00978376F0CBFC2182C8579LLyyFy7Penguin9ErrorCodeOSgcfU_', symObjAddr: 0x23B0, symBinAddr: 0x2A8830, symSize: 0x160 } + - { offset: 0x3439A4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC12loadGeofence33_1714430FC00978376F0CBFC2182C8579LLyyFySay7Penguin0G6RegionVG_So7NSErrorCSgtcfU_', symObjAddr: 0x2510, symBinAddr: 0x2A8990, symSize: 0xF0 } + - { offset: 0x343A45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC24registerRegionMonitoring33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0x2600, symBinAddr: 0x2A8A80, symSize: 0x380 } + - { offset: 0x343BB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC24registerRegionMonitoring33_1714430FC00978376F0CBFC2182C8579LLyyFyyScMYccfU_', symObjAddr: 0x2980, symBinAddr: 0x2A8E00, symSize: 0x220 } + - { offset: 0x343C68, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_14didEnterRegionySo010CLLocationE0C_So8CLRegionCtF', symObjAddr: 0x2C60, symBinAddr: 0x2A90E0, symSize: 0x10 } + - { offset: 0x343C8B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_14didEnterRegionySo010CLLocationE0C_So8CLRegionCtFTo', symObjAddr: 0x2C70, symBinAddr: 0x2A90F0, symSize: 0x60 } + - { offset: 0x343CBE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC14stopGeofencingyyFyyScMYccfU_TA', symObjAddr: 0x2D00, symBinAddr: 0x2A9180, symSize: 0x10 } + - { offset: 0x343CD2, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x2D10, symBinAddr: 0x2A9190, symSize: 0x20 } + - { offset: 0x343CE6, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x2D30, symBinAddr: 0x2A91B0, symSize: 0x10 } + - { offset: 0x343CFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC12loadGeofence33_1714430FC00978376F0CBFC2182C8579LLyyFySay7Penguin0G6RegionVG_So7NSErrorCSgtcfU_TA', symObjAddr: 0x2DE0, symBinAddr: 0x2A91E0, symSize: 0x10 } + - { offset: 0x343D19, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_22didChangeAuthorizationySo010CLLocationE0C_So21CLAuthorizationStatusVtFTf4dnn_n', symObjAddr: 0x2DF0, symBinAddr: 0x2A91F0, symSize: 0xB0 } + - { offset: 0x343E05, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC08locationE0_14didEnterRegionySo010CLLocationE0C_So8CLRegionCtFTf4dnd_n', symObjAddr: 0x2EA0, symBinAddr: 0x2A92A0, symSize: 0x1E0 } + - { offset: 0x343EF3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorO10Foundation09LocalizedE0AAs0E0PWb', symObjAddr: 0x3080, symBinAddr: 0x2A9480, symSize: 0x10 } + - { offset: 0x343F07, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOACs0E0AAWl', symObjAddr: 0x3090, symBinAddr: 0x2A9490, symSize: 0x30 } + - { offset: 0x343F1B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwxx', symObjAddr: 0x30D0, symBinAddr: 0x2A94D0, symSize: 0x20 } + - { offset: 0x343F2F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwca', symObjAddr: 0x3130, symBinAddr: 0x2A9530, symSize: 0x80 } + - { offset: 0x343F43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwta', symObjAddr: 0x31C0, symBinAddr: 0x2A95B0, symSize: 0x50 } + - { offset: 0x343F57, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwet', symObjAddr: 0x3210, symBinAddr: 0x2A9600, symSize: 0x50 } + - { offset: 0x343F6B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwst', symObjAddr: 0x3260, symBinAddr: 0x2A9650, symSize: 0x50 } + - { offset: 0x343F7F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwug', symObjAddr: 0x32B0, symBinAddr: 0x2A96A0, symSize: 0x20 } + - { offset: 0x343F93, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOwui', symObjAddr: 0x32E0, symBinAddr: 0x2A96C0, symSize: 0x30 } + - { offset: 0x343FA7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorOMa', symObjAddr: 0x3310, symBinAddr: 0x2A96F0, symSize: 0x10 } + - { offset: 0x343FBB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI21GeofenceConfigurationVSgWOe', symObjAddr: 0x3440, symBinAddr: 0x2A9770, symSize: 0x50 } + - { offset: 0x343FCF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC24registerRegionMonitoring33_1714430FC00978376F0CBFC2182C8579LLyyFyyScMYccfU_TA', symObjAddr: 0x3490, symBinAddr: 0x2A97C0, symSize: 0x10 } + - { offset: 0x343FE3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC20startGeofenceProcess33_1714430FC00978376F0CBFC2182C8579LLyyFySSSg_7Penguin9ErrorCodeOSgtcfU_TA', symObjAddr: 0x35A0, symBinAddr: 0x2A97D0, symSize: 0x20 } + - { offset: 0x343FF7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC21loadCampusInformation33_1714430FC00978376F0CBFC2182C8579LLyyFySay7Penguin0G0CGSgcfU_TA', symObjAddr: 0x35C0, symBinAddr: 0x2A97F0, symSize: 0x10 } + - { offset: 0x34400B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC18loadRemoteSettings33_1714430FC00978376F0CBFC2182C8579LLyyFy7Penguin9ErrorCodeOSgcfU_TA', symObjAddr: 0x3600, symBinAddr: 0x2A9800, symSize: 0x20 } + - { offset: 0x34401F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC9sendError5errorySSSg_tFyyScMYccfU_TA', symObjAddr: 0x3650, symBinAddr: 0x2A9850, symSize: 0x20 } + - { offset: 0x344252, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC6sharedACvgZ', symObjAddr: 0x0, symBinAddr: 0x2A6560, symSize: 0x70 } + - { offset: 0x344413, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorO16errorDescriptionSSSgvg', symObjAddr: 0x410, symBinAddr: 0x2A6970, symSize: 0x130 } + - { offset: 0x3444B4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13GeofenceErrorO10Foundation09LocalizedE0AadEP16errorDescriptionSSSgvgTW', symObjAddr: 0x580, symBinAddr: 0x2A6AA0, symSize: 0x10 } + - { offset: 0x344500, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCACycfC', symObjAddr: 0x5C0, symBinAddr: 0x2A6AB0, symSize: 0x20 } + - { offset: 0x344590, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC018initializeLocationE0yyF', symObjAddr: 0x600, symBinAddr: 0x2A6AF0, symSize: 0x110 } + - { offset: 0x344712, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC28setGeofenceSDKConfigurationsyyAA0G13ConfigurationVF', symObjAddr: 0x710, symBinAddr: 0x2A6C00, symSize: 0x110 } + - { offset: 0x34478A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC19setGeofenceDelegate8delegateyAA0deH0_p_tF', symObjAddr: 0x820, symBinAddr: 0x2A6D10, symSize: 0x60 } + - { offset: 0x344867, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC15startGeofencing8delegateyAA0dE8Delegate_p_tF', symObjAddr: 0x880, symBinAddr: 0x2A6D70, symSize: 0x1D0 } + - { offset: 0x344AF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC14stopGeofencingyyF', symObjAddr: 0x1000, symBinAddr: 0x2A74F0, symSize: 0x1F0 } + - { offset: 0x344B87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC14stopGeofencingyyFyyScMYccfU_', symObjAddr: 0x14D0, symBinAddr: 0x2A79C0, symSize: 0xB0 } + - { offset: 0x344C13, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC16updateGeofencingyyF', symObjAddr: 0x1580, symBinAddr: 0x2A7A70, symSize: 0x110 } + - { offset: 0x344CF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerC30enableBackgroundLocationUpdate33_1714430FC00978376F0CBFC2182C8579LLyyF', symObjAddr: 0x1690, symBinAddr: 0x2A7B80, symSize: 0x200 } + - { offset: 0x344D84, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCACycfc', symObjAddr: 0x1970, symBinAddr: 0x2A7DF0, symSize: 0xB0 } + - { offset: 0x344DB7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCACycfcTo', symObjAddr: 0x1A20, symBinAddr: 0x2A7EA0, symSize: 0xA0 } + - { offset: 0x344DEC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17PIGeofenceManagerCfD', symObjAddr: 0x1AC0, symBinAddr: 0x2A7F40, symSize: 0x30 } + - { offset: 0x34527E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC9imageViewSo07UIImageG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2A9900, symSize: 0x20 } + - { offset: 0x345734, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCfE', symObjAddr: 0x17D0, symBinAddr: 0x2AB0D0, symSize: 0xB0 } + - { offset: 0x345761, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCfETo', symObjAddr: 0x18B0, symBinAddr: 0x2AB1B0, symSize: 0xB0 } + - { offset: 0x345790, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCMa', symObjAddr: 0x1960, symBinAddr: 0x2AB260, symSize: 0x20 } + - { offset: 0x3457B5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC14layoutForPanelAA08FloatingH6Layout_pyF', symObjAddr: 0x1980, symBinAddr: 0x2AB280, symSize: 0xE0 } + - { offset: 0x34583C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC14layoutForPanelAA08FloatingH6Layout_pyFTo', symObjAddr: 0x1A60, symBinAddr: 0x2AB360, symSize: 0x30 } + - { offset: 0x345869, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC16behaviorForPanelAA08FloatingH8Behavior_pyFTo', symObjAddr: 0x1A90, symBinAddr: 0x2AB390, symSize: 0x30 } + - { offset: 0x3458DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC10setupPanelyyF', symObjAddr: 0x1AC0, symBinAddr: 0x2AB3C0, symSize: 0x250 } + - { offset: 0x345B03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC10setupPanelyyFTo', symObjAddr: 0x1D10, symBinAddr: 0x2AB610, symSize: 0x30 } + - { offset: 0x345B2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCAA20NotificationObserverA2aDP23onToastVisibilityChange7visible9toastTypeySb_AA0iN0OSgtFTW', symObjAddr: 0x1D40, symBinAddr: 0x2AB640, symSize: 0x10 } + - { offset: 0x345B60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC23onToastVisibilityChange7visible9toastTypeySb_AA0gL0OSgtFTf4ddn_n', symObjAddr: 0x1D50, symBinAddr: 0x2AB650, symSize: 0x1D0 } + - { offset: 0x345D26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC14startCountdownyyFySo7NSTimerCYbcfU_TA', symObjAddr: 0x1FA0, symBinAddr: 0x2AB840, symSize: 0x10 } + - { offset: 0x345D3A, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1FB0, symBinAddr: 0x2AB850, symSize: 0x20 } + - { offset: 0x345D4E, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1FD0, symBinAddr: 0x2AB870, symSize: 0x10 } + - { offset: 0x345D62, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC12setupButtonsyyFyycfU0_TA', symObjAddr: 0x2040, symBinAddr: 0x2AB8C0, symSize: 0x20 } + - { offset: 0x34611C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC9imageViewSo07UIImageG0CSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2A9900, symSize: 0x20 } + - { offset: 0x34617A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC9imageViewSo07UIImageG0CSgvsTo', symObjAddr: 0x20, symBinAddr: 0x2A9920, symSize: 0x30 } + - { offset: 0x3461C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC10titleLabelSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x2A9950, symSize: 0x20 } + - { offset: 0x346221, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC10titleLabelSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x2A9970, symSize: 0x30 } + - { offset: 0x346270, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC13subtitleLabelSo7UILabelCSgvgTo', symObjAddr: 0xA0, symBinAddr: 0x2A99A0, symSize: 0x20 } + - { offset: 0x3462C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC13subtitleLabelSo7UILabelCSgvsTo', symObjAddr: 0xC0, symBinAddr: 0x2A99C0, symSize: 0x30 } + - { offset: 0x346312, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC16buttonsStackViewSo07UIStackH0CSgvgTo', symObjAddr: 0xF0, symBinAddr: 0x2A99F0, symSize: 0x20 } + - { offset: 0x34636A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC16buttonsStackViewSo07UIStackH0CSgvsTo', symObjAddr: 0x110, symBinAddr: 0x2A9A10, symSize: 0x30 } + - { offset: 0x3463F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC11viewDidLoadyyF', symObjAddr: 0x140, symBinAddr: 0x2A9A40, symSize: 0x1E0 } + - { offset: 0x346540, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC11viewDidLoadyyFTo', symObjAddr: 0x320, symBinAddr: 0x2A9C20, symSize: 0x30 } + - { offset: 0x346554, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC12setupButtonsyyF', symObjAddr: 0x350, symBinAddr: 0x2A9C50, symSize: 0xD70 } + - { offset: 0x346B7D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC12setupButtonsyyFyycfU0_', symObjAddr: 0x10C0, symBinAddr: 0x2AA9C0, symSize: 0xD0 } + - { offset: 0x346D80, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC11setSubtitle4text5style5colorySSSg_AA9FontStyleOSgSo7UIColorCSgtF', symObjAddr: 0x1190, symBinAddr: 0x2AAA90, symSize: 0x190 } + - { offset: 0x346E95, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC14startCountdownyyF', symObjAddr: 0x1320, symBinAddr: 0x2AAC20, symSize: 0xE0 } + - { offset: 0x346EDD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC14startCountdownyyFySo7NSTimerCYbcfU_', symObjAddr: 0x1400, symBinAddr: 0x2AAD00, symSize: 0xE0 } + - { offset: 0x346FFA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x14E0, symBinAddr: 0x2AADE0, symSize: 0x140 } + - { offset: 0x34703B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x1620, symBinAddr: 0x2AAF20, symSize: 0x50 } + - { offset: 0x34704F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x1670, symBinAddr: 0x2AAF70, symSize: 0x130 } + - { offset: 0x347082, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x17A0, symBinAddr: 0x2AB0A0, symSize: 0x30 } + - { offset: 0x347096, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI10AlertSheetCfD', symObjAddr: 0x1880, symBinAddr: 0x2AB180, symSize: 0x30 } + - { offset: 0x347DBD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6render7fileURL4size7options3api9precisionSS10Foundation0H0V_Si5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ', symObjAddr: 0x7440, symBinAddr: 0x2B2D20, symSize: 0x30 } + - { offset: 0x347F52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC21logUnsupportedFiltersyySayAA3DOMO6FilterC6EffectOGFAA14CGTextProviderV_Tg5', symObjAddr: 0x74E0, symBinAddr: 0x2B2DC0, symSize: 0x2B0 } + - { offset: 0x3482F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC21logUnsupportedFiltersyySayAA3DOMO6FilterC6EffectOGFAA10CGProviderV_Tg5', symObjAddr: 0x7790, symBinAddr: 0x2B3070, symSize: 0x2B0 } + - { offset: 0x34915F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC18logUnsupportedMaskyyFAA14CGTextProviderV_Tg5', symObjAddr: 0x91C0, symBinAddr: 0x2B4AA0, symSize: 0xE0 } + - { offset: 0x3491F9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC18logUnsupportedMaskyyFAA10CGProviderV_Tg5', symObjAddr: 0x92A0, symBinAddr: 0x2B4B80, symSize: 0xE0 } + - { offset: 0x349293, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC22logUnsupportedGradientyyFAA14CGTextProviderV_Tg5', symObjAddr: 0x9380, symBinAddr: 0x2B4C60, symSize: 0xE0 } + - { offset: 0x34932D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC22logUnsupportedGradientyyFAA10CGProviderV_Tg5', symObjAddr: 0x9460, symBinAddr: 0x2B4D40, symSize: 0xE0 } + - { offset: 0x3493DD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6render5named2in4size7options3api9precisionS2S_So8NSBundleCSi5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZ', symObjAddr: 0x9540, symBinAddr: 0x2B4E20, symSize: 0x1A0 } + - { offset: 0x3496F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6render4data7options3api9precisionSS10Foundation4DataV_AA3SVGC7OptionsVAC3APIOSitKFZ', symObjAddr: 0x96E0, symBinAddr: 0x2B4FC0, symSize: 0x4C0 } + - { offset: 0x349C65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC10renderPath4fromS2S_tKFZ', symObjAddr: 0x9BA0, symBinAddr: 0x2B5480, symSize: 0x240 } + - { offset: 0x349E9D, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF10Foundation3URLV_So20NSURLSessionDataTaskCTg5', symObjAddr: 0x9E80, symBinAddr: 0x2B56C0, symSize: 0x80 } + - { offset: 0x349F2C, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSS_SSTg5', symObjAddr: 0x9F00, symBinAddr: 0x2B5740, symSize: 0x50 } + - { offset: 0x349FD1, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTg5', symObjAddr: 0x9F50, symBinAddr: 0x2B5790, symSize: 0x90 } + - { offset: 0x34A06B, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSi_8PenNavUI5ColorVTg5', symObjAddr: 0x9FE0, symBinAddr: 0x2B5820, symSize: 0x60 } + - { offset: 0x34A0FA, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSS_ypTg5', symObjAddr: 0xA040, symBinAddr: 0x2B5880, symSize: 0x60 } + - { offset: 0x34A180, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF8PenNavUI13AppFontWeightO_SSTg5', symObjAddr: 0xA0A0, symBinAddr: 0x2B58E0, symSize: 0x50 } + - { offset: 0x34A21A, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSS_SayySo7UIImageCSgcGTg5', symObjAddr: 0xA0F0, symBinAddr: 0x2B5930, symSize: 0x50 } + - { offset: 0x34A2B8, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntFSi_8PenNavUI17DownloadOperationCTg5', symObjAddr: 0xA140, symBinAddr: 0x2B5980, symSize: 0x40 } + - { offset: 0x34A356, size: 0x8, addend: 0x0, symName: '_$ss17_NativeDictionaryV7_insert2at3key5valueys10_HashTableV6BucketV_xnq_ntF8PenNavUI9LayerTreeO8GradientV_SSTg5', symObjAddr: 0xA180, symBinAddr: 0x2B59C0, symSize: 0x50 } + - { offset: 0x34AAAA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC6render7fileURL4size7options3api9precisionSS10Foundation0H0V_Si5width_Si6heighttSgAA3SVGC7OptionsVAC3APIOSitKFZTf4nnnnnd_n', symObjAddr: 0x121B0, symBinAddr: 0x2BD9F0, symSize: 0x7C0 } + - { offset: 0x34AF65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC5Error33_6F9262CB821AA9E5A3E1381913BD0F9CLLVAFsAdAWl', symObjAddr: 0x12970, symBinAddr: 0x2BE1B0, symSize: 0x30 } + - { offset: 0x34AF79, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC5Error33_6F9262CB821AA9E5A3E1381913BD0F9CLLVMa', symObjAddr: 0x12B70, symBinAddr: 0x2BE1E0, symSize: 0x10 } + - { offset: 0x34AF8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14CGTextRendererC5Error33_6F9262CB821AA9E5A3E1381913BD0F9CLLV10Foundation09LocalizedF0AAsADPWb', symObjAddr: 0x12B80, symBinAddr: 0x2BE1F0, symSize: 0x10 } + - { offset: 0x34AFA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA11CGTextTypesVGSgWOe', symObjAddr: 0x12BB0, symBinAddr: 0x2BE200, symSize: 0x30 } + - { offset: 0x34AFB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15RendererCommandOyAA11CGTextTypesVGWOe', symObjAddr: 0x12BE0, symBinAddr: 0x2BE230, symSize: 0xC0 } + - { offset: 0x34B2F9, size: 0x8, addend: 0x0, symName: '_$sSlsE3mapySayqd__Gqd__7ElementQzqd_0_YKXEqd_0_YKs5ErrorRd_0_r0_lFSay8PenNavUI9LayerTreeO8GradientV4StopVG_ALs5NeverOTg5', symObjAddr: 0x72B0, symBinAddr: 0x2B2B90, symSize: 0x190 } + - { offset: 0x34B496, size: 0x8, addend: 0x0, symName: '_$sSTsE10allSatisfyyS2b7ElementQzKXEKFSay8PenNavUI9LayerTreeO8GradientV4StopVG_Tg503$s8de3UI9gh2O8i19V8isOpaqueSbvgSbAE4J52Vcfu_33_67bbb279b13e8c472f24efacf0d06563AHSbTf3npk_nTf1cn_n', symObjAddr: 0x7470, symBinAddr: 0x2B2D50, symSize: 0x70 } + - { offset: 0x34B94A, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC10Foundation3URLV_So20NSURLSessionDataTaskCTt0g5Tf4g_n', symObjAddr: 0x10BD0, symBinAddr: 0x2BC410, symSize: 0x170 } + - { offset: 0x34BA7B, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_SSTt0g5Tf4g_n', symObjAddr: 0x10D40, symBinAddr: 0x2BC580, symSize: 0x110 } + - { offset: 0x34BBBC, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSi_Say8PenNavUI10LiveObjectVG7objects_10Foundation4DateV10lastUpdatetTt0g5Tf4g_n', symObjAddr: 0x10E50, symBinAddr: 0x2BC690, symSize: 0x160 } + - { offset: 0x34BCFD, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSi_8PenNavUI5ColorVTt0g5Tf4g_n', symObjAddr: 0x10FB0, symBinAddr: 0x2BC7F0, symSize: 0x160 } + - { offset: 0x34BE3A, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI18FloatingPanelStateC_AC0fG15LayoutAnchoring_pTt0g5Tf4g_n', symObjAddr: 0x11110, symBinAddr: 0x2BC950, symSize: 0xE0 } + - { offset: 0x34BF81, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI18FloatingPanelStateC_SaySo18NSLayoutConstraintCGTt0g5Tf4g_n', symObjAddr: 0x111F0, symBinAddr: 0x2BCA30, symSize: 0xE0 } + - { offset: 0x34C0C8, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_SbTt0g5Tf4g_n', symObjAddr: 0x112D0, symBinAddr: 0x2BCB10, symSize: 0xF0 } + - { offset: 0x34C209, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_ypTt0g5Tf4g_n', symObjAddr: 0x113C0, symBinAddr: 0x2BCC00, symSize: 0x100 } + - { offset: 0x34C332, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI9FontStyleO_So6UIFontCTt0g5Tf4g_n', symObjAddr: 0x114E0, symBinAddr: 0x2BCD20, symSize: 0xE0 } + - { offset: 0x34C473, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI13AppFontWeightO_SSTt0g5Tf4g_n', symObjAddr: 0x115C0, symBinAddr: 0x2BCE00, symSize: 0xF0 } + - { offset: 0x34C5BA, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI8MenuItemV0fG9AttributeO_SbTt0g5Tf4g_n', symObjAddr: 0x116B0, symBinAddr: 0x2BCEF0, symSize: 0xC0 } + - { offset: 0x34C701, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSo21NSAttributedStringKeya_So6UIFontCTt0g5Tf4g_n', symObjAddr: 0x11770, symBinAddr: 0x2BCFB0, symSize: 0xE0 } + - { offset: 0x34C848, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_SSSgTt0g5Tf4g_n', symObjAddr: 0x11850, symBinAddr: 0x2BD090, symSize: 0x110 } + - { offset: 0x34C989, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI9LayerTreeO8GradientV_SSTt0g5Tf4g_n', symObjAddr: 0x11960, symBinAddr: 0x2BD1A0, symSize: 0x130 } + - { offset: 0x34CAC6, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI3DOMO10StyleSheetV8SelectorO_SDyS2SGTt0g5Tf4g_n', symObjAddr: 0x11A90, symBinAddr: 0x2BD2D0, symSize: 0x120 } + - { offset: 0x34CC0D, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfC8PenNavUI3DOMO10StyleSheetV8SelectorO_AE22PresentationAttributesVTt0g5Tf4g_n', symObjAddr: 0x11BB0, symBinAddr: 0x2BD3F0, symSize: 0x180 } + - { offset: 0x34CD4A, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSo11CFStringRefa_So06CTFontD0aTt0g5Tf4g_n', symObjAddr: 0x11D30, symBinAddr: 0x2BD570, symSize: 0xE0 } + - { offset: 0x34CE91, size: 0x8, addend: 0x0, symName: '_$sSD17dictionaryLiteralSDyxq_Gx_q_td_tcfCSS_SdTt0g5Tf4g_n', symObjAddr: 0x11E10, symBinAddr: 0x2BD650, symSize: 0xF0 } + - { offset: 0x34D123, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC7optionsAEy_xGAA0G7OptionsV_tcfcAA11CGTextTypesV_Tg5', symObjAddr: 0x0, symBinAddr: 0x2AB8E0, symSize: 0x70 } + - { offset: 0x34D166, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC7optionsAEy_xGAA0G7OptionsV_tcfcAA7CGTypesV_Tg5', symObjAddr: 0x70, symBinAddr: 0x2AB950, symSize: 0x90 } + - { offset: 0x34D2D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC011filterStateF03forAA08RendererF0OyxGSgAJ_tFAA11CGTextTypesV_Tg5', symObjAddr: 0x100, symBinAddr: 0x2AB9E0, symSize: 0x32C0 } + - { offset: 0x34E6FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC011filterStateF03forAA08RendererF0OyxGSgAJ_tFAA7CGTypesV_Tg5', symObjAddr: 0x33C0, symBinAddr: 0x2AECA0, symSize: 0x2C70 } + - { offset: 0x34FA01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackV3topxvsAA9LayerTreeO16CommandOptimizerC5StateVy_AA11CGTextTypesV_G_Tg5', symObjAddr: 0x6030, symBinAddr: 0x2B1910, symSize: 0x280 } + - { offset: 0x34FC1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackV3topxvsAA9LayerTreeO16CommandOptimizerC5StateVy_AA7CGTypesV_G_Tg5', symObjAddr: 0x62B0, symBinAddr: 0x2B1B90, symSize: 0x240 } + - { offset: 0x34FE33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5StackV3popSbyFAA9LayerTreeO16CommandOptimizerC5StateVy_AA11CGTextTypesV_G_Tg5', symObjAddr: 0x64F0, symBinAddr: 0x2B1DD0, symSize: 0x1A0 } + - { offset: 0x34FF8C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC16optimizeCommandsySayAA08RendererF0OyxGGAJFAA11CGTextTypesV_Tg5', symObjAddr: 0x6690, symBinAddr: 0x2B1F70, symSize: 0x5A0 } + - { offset: 0x3503E2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandOptimizerC16optimizeCommandsySayAA08RendererF0OyxGGAJFAA7CGTypesV_Tg5', symObjAddr: 0x6C30, symBinAddr: 0x2B2510, symSize: 0x680 } + - { offset: 0x350B7C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands7forMaskSayAA08RendererF0Oy5TypesQzGGAC0D0CSg_tFAA14CGTextProviderV_Tg5', symObjAddr: 0x7A40, symBinAddr: 0x2B3320, symSize: 0x610 } + - { offset: 0x3516FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands7forMaskSayAA08RendererF0Oy5TypesQzGGAC0D0CSg_tFAA10CGProviderV_Tg5', symObjAddr: 0x8050, symBinAddr: 0x2B3930, symSize: 0xB70 } + - { offset: 0x3527B6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands9forRadial2in7opacity14colorConverterSayAA08RendererF0Oy5TypesQzGGAC0K8GradientV_AC4RectVSfAA05ColorO0_ptFAA14CGTextProviderV_Tg5', symObjAddr: 0x8BC0, symBinAddr: 0x2B44A0, symSize: 0x600 } + - { offset: 0x3535D8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA14CGTextProviderV_Tg5Tf4nnnen_nAA09LuminanceuN0V_Tg5', symObjAddr: 0xA1D0, symBinAddr: 0x2B5A10, symSize: 0x2E30 } + - { offset: 0x3561A7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands3for6stroke4fill14colorConverterSayAA08RendererF0Oy5TypesQzGGAC5ShapeO_AC16StrokeAttributesVAC04FillS0VAA05ColorN0_ptFAA14CGTextProviderV_Tg5Tf4nnnen_nAA07DefaultuN0V_Tg5', symObjAddr: 0xD000, symBinAddr: 0x2B8840, symSize: 0x2E30 } + - { offset: 0x358E0C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands7forClip5usingSayAA08RendererF0Oy5TypesQzGGSayAC5ShapeOG_AA3DOMO8FillRuleOSgtFAA14CGTextProviderV_Tg5Tf4nnd_n', symObjAddr: 0x12000, symBinAddr: 0x2BD840, symSize: 0x1B0 } + - { offset: 0x3591AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9LayerTreeO16CommandGeneratorC14renderCommands7forClip5usingSayAA08RendererF0Oy5TypesQzGGSayAC5ShapeOG_AA3DOMO8FillRuleOSgtFAA10CGProviderV_Tg5Tf4nnd_n', symObjAddr: 0x13040, symBinAddr: 0x2BE2F0, symSize: 0x230 } + - { offset: 0x35983A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC05sharedE6ButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2BE520, symSize: 0x20 } + - { offset: 0x359BFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellCfETo', symObjAddr: 0x830, symBinAddr: 0x2BED50, symSize: 0x80 } + - { offset: 0x359C2B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellCMa', symObjAddr: 0x8B0, symBinAddr: 0x2BEDD0, symSize: 0x20 } + - { offset: 0x359C3F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC06showMyE0yycSgvWyycfU_TA', symObjAddr: 0x910, symBinAddr: 0x2BEE10, symSize: 0x10 } + - { offset: 0x359DBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC05sharedE6ButtonSo8UIButtonCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2BE520, symSize: 0x20 } + - { offset: 0x359E1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC05sharedE6ButtonSo8UIButtonCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x2BE540, symSize: 0x20 } + - { offset: 0x359E72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC19markAsParkingButtonSo8UIButtonCSgvgTo', symObjAddr: 0x40, symBinAddr: 0x2BE560, symSize: 0x20 } + - { offset: 0x359EC7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC19markAsParkingButtonSo8UIButtonCSgvsTo', symObjAddr: 0x60, symBinAddr: 0x2BE580, symSize: 0x20 } + - { offset: 0x359F1A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC17reportIssueButtonSo8UIButtonCSgvgTo', symObjAddr: 0x80, symBinAddr: 0x2BE5A0, symSize: 0x20 } + - { offset: 0x359F6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC17reportIssueButtonSo8UIButtonCSgvsTo', symObjAddr: 0xA0, symBinAddr: 0x2BE5C0, symSize: 0x20 } + - { offset: 0x359FC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE4ViewAA06HapticH0CSgvgTo', symObjAddr: 0xC0, symBinAddr: 0x2BE5E0, symSize: 0x20 } + - { offset: 0x35A01C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE4ViewAA06HapticH0CSgvsTo', symObjAddr: 0xE0, symBinAddr: 0x2BE600, symSize: 0x20 } + - { offset: 0x35A06F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE5LabelSo7UILabelCSgvgTo', symObjAddr: 0x100, symBinAddr: 0x2BE620, symSize: 0x20 } + - { offset: 0x35A0C9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE5LabelSo7UILabelCSgvsTo', symObjAddr: 0x120, symBinAddr: 0x2BE640, symSize: 0x20 } + - { offset: 0x35A11C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE10FloorLabelSo7UILabelCSgvgTo', symObjAddr: 0x140, symBinAddr: 0x2BE660, symSize: 0x20 } + - { offset: 0x35A171, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC04userE10FloorLabelSo7UILabelCSgvsTo', symObjAddr: 0x160, symBinAddr: 0x2BE680, symSize: 0x20 } + - { offset: 0x35A1D0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC06showMyE0yycSgvWyycfU_', symObjAddr: 0x180, symBinAddr: 0x2BE6A0, symSize: 0x80 } + - { offset: 0x35A25A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC06showMyE0yycSgvs', symObjAddr: 0x200, symBinAddr: 0x2BE720, symSize: 0xC0 } + - { offset: 0x35A310, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC12awakeFromNibyyFTo', symObjAddr: 0x2C0, symBinAddr: 0x2BE7E0, symSize: 0x60 } + - { offset: 0x35A382, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC11setSelected_8animatedySb_SbtFTo', symObjAddr: 0x320, symBinAddr: 0x2BE840, symSize: 0x50 } + - { offset: 0x35A3D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC7setData04userE06campusy7Penguin10PILocationCSg_AG5VenueCSgtF', symObjAddr: 0x370, symBinAddr: 0x2BE890, symSize: 0x260 } + - { offset: 0x35A4BD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfc', symObjAddr: 0x5D0, symBinAddr: 0x2BEAF0, symSize: 0xF0 } + - { offset: 0x35A4FE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC5style15reuseIdentifierACSo011UITableViewF5StyleV_SSSgtcfcTo', symObjAddr: 0x6C0, symBinAddr: 0x2BEBE0, symSize: 0x30 } + - { offset: 0x35A536, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x6F0, symBinAddr: 0x2BEC10, symSize: 0xE0 } + - { offset: 0x35A569, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x7D0, symBinAddr: 0x2BECF0, symSize: 0x30 } + - { offset: 0x35A57D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI16UserLocationCellCfD', symObjAddr: 0x800, symBinAddr: 0x2BED20, symSize: 0x30 } + - { offset: 0x35A933, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x0, symBinAddr: 0x2BEE20, symSize: 0x60 } + - { offset: 0x35AB82, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCfETo', symObjAddr: 0x2A0, symBinAddr: 0x2BF0C0, symSize: 0x40 } + - { offset: 0x35ABB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCMa', symObjAddr: 0x2E0, symBinAddr: 0x2BF100, symSize: 0x20 } + - { offset: 0x35ABC5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC05setupE0yyFTo', symObjAddr: 0x310, symBinAddr: 0x2BF130, symSize: 0x10 } + - { offset: 0x35ABF0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP09layoutForE0AA0dE6Layout_pSgyFTW', symObjAddr: 0x460, symBinAddr: 0x2BF280, symSize: 0x20 } + - { offset: 0x35AC31, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP011behaviorForE0AA0dE8Behavior_pSgyFTW', symObjAddr: 0x480, symBinAddr: 0x2BF2A0, symSize: 0x20 } + - { offset: 0x35AC72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP05setupE0yyFTW', symObjAddr: 0x4A0, symBinAddr: 0x2BF2C0, symSize: 0x20 } + - { offset: 0x35ACB5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC08floatingE7DidMoveyyAA0deG0CF', symObjAddr: 0x4C0, symBinAddr: 0x2BF2E0, symSize: 0x160 } + - { offset: 0x35AE11, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC08floatingE7DidMoveyyAA0deG0CFTo', symObjAddr: 0x620, symBinAddr: 0x2BF440, symSize: 0x50 } + - { offset: 0x35AE2D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC08floatingE10WillRemoveyyAA0deG0CF', symObjAddr: 0x670, symBinAddr: 0x2BF490, symSize: 0xC0 } + - { offset: 0x35AEC6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC08floatingE10WillRemoveyyAA0deG0CFTo', symObjAddr: 0x730, symBinAddr: 0x2BF550, symSize: 0x50 } + - { offset: 0x35AF02, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC11viewDidLoadyyFTo', symObjAddr: 0x0, symBinAddr: 0x2BEE20, symSize: 0x60 } + - { offset: 0x35B015, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfc', symObjAddr: 0x60, symBinAddr: 0x2BEE80, symSize: 0xD0 } + - { offset: 0x35B056, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC7nibName6bundleACSSSg_So8NSBundleCSgtcfcTo', symObjAddr: 0x130, symBinAddr: 0x2BEF50, symSize: 0x50 } + - { offset: 0x35B09E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x180, symBinAddr: 0x2BEFA0, symSize: 0xC0 } + - { offset: 0x35B0D1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x240, symBinAddr: 0x2BF060, symSize: 0x30 } + - { offset: 0x35B0E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCfD', symObjAddr: 0x270, symBinAddr: 0x2BF090, symSize: 0x30 } + - { offset: 0x35B11C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP5panelAA0deG0CSgvgTW', symObjAddr: 0x320, symBinAddr: 0x2BF140, symSize: 0x30 } + - { offset: 0x35B174, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP5panelAA0deG0CSgvsTW', symObjAddr: 0x350, symBinAddr: 0x2BF170, symSize: 0x20 } + - { offset: 0x35B1C3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelLevelSiSgvgTW', symObjAddr: 0x370, symBinAddr: 0x2BF190, symSize: 0x20 } + - { offset: 0x35B21B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelLevelSiSgvsTW', symObjAddr: 0x390, symBinAddr: 0x2BF1B0, symSize: 0x20 } + - { offset: 0x35B26C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelStateAA0deJ0CSgvgTW', symObjAddr: 0x3B0, symBinAddr: 0x2BF1D0, symSize: 0x30 } + - { offset: 0x35B2C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP10panelStateAA0deJ0CSgvsTW', symObjAddr: 0x3E0, symBinAddr: 0x2BF200, symSize: 0x20 } + - { offset: 0x35B313, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP9presenterAA0dE9Presenter_pSgvgTW', symObjAddr: 0x400, symBinAddr: 0x2BF220, symSize: 0x30 } + - { offset: 0x35B36B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FloatingPanelViewControllerCAA0dE11PresentableA2aDP9presenterAA0dE9Presenter_pSgvsTW', symObjAddr: 0x430, symBinAddr: 0x2BF250, symSize: 0x30 } + - { offset: 0x35BAB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryCMa', symObjAddr: 0x1070, symBinAddr: 0x2C05D0, symSize: 0x20 } + - { offset: 0x35BAC4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC06updateD09venueDatayAA0dH0C_tFyyYbXEfU_TA', symObjAddr: 0x1130, symBinAddr: 0x2C0610, symSize: 0x20 } + - { offset: 0x35BAD8, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0x1170, symBinAddr: 0x2C0630, symSize: 0x20 } + - { offset: 0x35BAEC, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0x1190, symBinAddr: 0x2C0650, symSize: 0x10 } + - { offset: 0x35BB00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12getAllVenuesSayAA0D4DataCGyFyyYbXEfU_TA', symObjAddr: 0x11D0, symBinAddr: 0x2C0690, symSize: 0x20 } + - { offset: 0x35BB14, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12insertVenues6venuesySayAA0D4DataCG_tFyyYbXEfU_TA', symObjAddr: 0x1250, symBinAddr: 0x2C0710, symSize: 0x20 } + - { offset: 0x35BB28, size: 0x8, addend: 0x0, symName: '_$s7Penguin12UpdateStatusOACSYAAWl', symObjAddr: 0x1290, symBinAddr: 0x2C0750, symSize: 0x40 } + - { offset: 0x35BCFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12insertVenues6venuesySayAA0D4DataCG_tF', symObjAddr: 0x40, symBinAddr: 0x2BF5C0, symSize: 0x1B0 } + - { offset: 0x35BD89, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12insertVenues6venuesySayAA0D4DataCG_tFyyYbXEfU_', symObjAddr: 0x1F0, symBinAddr: 0x2BF770, symSize: 0x4C0 } + - { offset: 0x35C142, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12getAllVenuesSayAA0D4DataCGyF', symObjAddr: 0x6B0, symBinAddr: 0x2BFC30, symSize: 0x190 } + - { offset: 0x35C1F5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC12getAllVenuesSayAA0D4DataCGyFyyYbXEfU_', symObjAddr: 0x840, symBinAddr: 0x2BFDC0, symSize: 0x220 } + - { offset: 0x35C4AD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC06updateD09venueDatayAA0dH0C_tF', symObjAddr: 0xA60, symBinAddr: 0x2BFFE0, symSize: 0x1B0 } + - { offset: 0x35C53A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC06updateD09venueDatayAA0dH0C_tFyyYbXEfU_', symObjAddr: 0xC10, symBinAddr: 0x2C0190, symSize: 0xD0 } + - { offset: 0x35C586, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC09insertNewD033_D6148AF0073D78926608A03AA9FA7FD1LL9venueDatayAA0dP0C_tF', symObjAddr: 0xCE0, symBinAddr: 0x2C0260, symSize: 0x100 } + - { offset: 0x35C610, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI15VenueRepositoryC06removeD033_D6148AF0073D78926608A03AA9FA7FD1LL5venueyAA0D4DataC_tF', symObjAddr: 0xDE0, symBinAddr: 0x2C0360, symSize: 0x270 } + - { offset: 0x35CE90, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelCMa', symObjAddr: 0xC50, symBinAddr: 0x2C1410, symSize: 0x20 } + - { offset: 0x35CEA4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC012handleCampusE8Response33_6E592137D65A8EF25B4559D528B849A4LL9venueDatayAA0dT0CSg_tFyyScMYccfU_TA', symObjAddr: 0xCF0, symBinAddr: 0x2C1470, symSize: 0x20 } + - { offset: 0x35CEB8, size: 0x8, addend: 0x0, symName: _block_copy_helper, symObjAddr: 0xD10, symBinAddr: 0x2C1490, symSize: 0x20 } + - { offset: 0x35CECC, size: 0x8, addend: 0x0, symName: _block_destroy_helper, symObjAddr: 0xD30, symBinAddr: 0x2C14B0, symSize: 0x10 } + - { offset: 0x35CEE0, size: 0x8, addend: 0x0, symName: '_$sSS_SStWOh', symObjAddr: 0xE00, symBinAddr: 0x2C14C0, symSize: 0x30 } + - { offset: 0x35CEF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC15fetchCampusData33_6E592137D65A8EF25B4559D528B849A4LL8campusIdySi_tFyAA0dJ0CSgcACcfu_yAIcfu0_TA', symObjAddr: 0xE30, symBinAddr: 0x2C14F0, symSize: 0x10 } + - { offset: 0x35CF2E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tFySayAA5PlaceCGcfU_TA', symObjAddr: 0xE40, symBinAddr: 0x2C1500, symSize: 0x10 } + - { offset: 0x35CF42, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tFySayAA5PlaceCGcfU_yyScMYccfU_TA', symObjAddr: 0xED0, symBinAddr: 0x2C1570, symSize: 0x20 } + - { offset: 0x35CF56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC06handledE8Response33_6E592137D65A8EF25B4559D528B849A4LL9venueDatayAA0dS0CSg_tFyyScMYccfU_TA', symObjAddr: 0xF20, symBinAddr: 0x2C1590, symSize: 0x20 } + - { offset: 0x35CF6A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD4Data33_6E592137D65A8EF25B4559D528B849A4LL7venueIdySi_tFyAA0dI0CSgcACcfu_yAIcfu0_TA', symObjAddr: 0xF40, symBinAddr: 0x2C15B0, symSize: 0x10 } + - { offset: 0x35CFC2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD4Data33_6E592137D65A8EF25B4559D528B849A4LL7venueIdySi_tF', symObjAddr: 0x30, symBinAddr: 0x2C07F0, symSize: 0x100 } + - { offset: 0x35D23A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tF', symObjAddr: 0x290, symBinAddr: 0x2C0A50, symSize: 0x210 } + - { offset: 0x35D369, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tFySayAA5PlaceCGcfU_', symObjAddr: 0x4A0, symBinAddr: 0x2C0C60, symSize: 0x220 } + - { offset: 0x35D3CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC05fetchD5Gates33_6E592137D65A8EF25B4559D528B849A4LL5venuey7Penguin0D0C_tFySayAA5PlaceCGcfU_yyScMYccfU_', symObjAddr: 0x6C0, symBinAddr: 0x2C0E80, symSize: 0x90 } + - { offset: 0x35D448, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelC15fetchCampusData33_6E592137D65A8EF25B4559D528B849A4LL8campusIdySi_tF', symObjAddr: 0x750, symBinAddr: 0x2C0F10, symSize: 0x100 } + - { offset: 0x35D5E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI20VenueDetailViewModelCfD', symObjAddr: 0xC10, symBinAddr: 0x2C13D0, symSize: 0x40 } + - { offset: 0x35D9AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC8positionAA0eF8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x2C1620, symSize: 0x10 } + - { offset: 0x35DB6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutCMa', symObjAddr: 0x210, symBinAddr: 0x2C1830, symSize: 0x20 } + - { offset: 0x35DB88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC8positionAA0eF8PositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x2C1620, symSize: 0x10 } + - { offset: 0x35DBB9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC12initialStateAA0efI0CvgTo', symObjAddr: 0x10, symBinAddr: 0x2C1630, symSize: 0x10 } + - { offset: 0x35DC01, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC7anchorsSDyAA0eF5StateCAA0efG9Anchoring_pGvgTo', symObjAddr: 0x20, symBinAddr: 0x2C1640, symSize: 0x70 } + - { offset: 0x35DD0F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC7anchorsSDyAA0eF5StateCAA0efG9Anchoring_pGvg', symObjAddr: 0x90, symBinAddr: 0x2C16B0, symSize: 0x140 } + - { offset: 0x35DE4B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA0eF5StateC_tFTo', symObjAddr: 0x1D0, symBinAddr: 0x2C17F0, symSize: 0x10 } + - { offset: 0x35DE92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27AdaptiveFloatingPanelLayoutCfD', symObjAddr: 0x1E0, symBinAddr: 0x2C1800, symSize: 0x30 } + - { offset: 0x35E260, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI5ColorVMa', symObjAddr: 0x200, symBinAddr: 0x2C1850, symSize: 0xA } + - { offset: 0x35E5F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC22getAddressWithBuildingSSyF', symObjAddr: 0x0, symBinAddr: 0x2C1860, symSize: 0xF0 } + - { offset: 0x35E6E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC22getAddressWithBuildingSSyF', symObjAddr: 0x0, symBinAddr: 0x2C1860, symSize: 0xF0 } + - { offset: 0x35E8C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataCMa', symObjAddr: 0x1190, symBinAddr: 0x2C29E0, symSize: 0x20 } + - { offset: 0x35E8E4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC6imagesSaySSGSgvM', symObjAddr: 0xF0, symBinAddr: 0x2C1950, symSize: 0x30 } + - { offset: 0x35E8F8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC8scheduleSay7Penguin8ScheduleCGSgvM', symObjAddr: 0x130, symBinAddr: 0x2C1980, symSize: 0x30 } + - { offset: 0x35EA3D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC05venueF0AcA0dF0C_tcfc', symObjAddr: 0x160, symBinAddr: 0x2C19B0, symSize: 0x400 } + - { offset: 0x35EB45, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC5venueAC7Penguin0D0CSg_tcfc', symObjAddr: 0x560, symBinAddr: 0x2C1DB0, symSize: 0x5C0 } + - { offset: 0x35ED04, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC12campusDetailAC7Penguin0D0CSg_tcfc', symObjAddr: 0xB20, symBinAddr: 0x2C2370, symSize: 0x500 } + - { offset: 0x35EEC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataC29setupOfflineCampusInformationyyF', symObjAddr: 0x1020, symBinAddr: 0x2C2870, symSize: 0xD0 } + - { offset: 0x35EF20, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataCfd', symObjAddr: 0x10F0, symBinAddr: 0x2C2940, symSize: 0x80 } + - { offset: 0x35EF43, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13VenueViewDataCfD', symObjAddr: 0x1170, symBinAddr: 0x2C29C0, symSize: 0x20 } + - { offset: 0x35F2ED, size: 0x8, addend: 0x0, symName: '_$sSo11UIStackViewC8PenNavUIE13arabicSpacing12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x0, symBinAddr: 0x2C2A00, symSize: 0x10 } + - { offset: 0x35F305, size: 0x8, addend: 0x0, symName: '_$sSo11UIStackViewC8PenNavUIE13arabicSpacing12CoreGraphics7CGFloatVvgTo', symObjAddr: 0x0, symBinAddr: 0x2C2A00, symSize: 0x10 } + - { offset: 0x35F321, size: 0x8, addend: 0x0, symName: '_$sSo11UIStackViewC8PenNavUIE13arabicSpacing12CoreGraphics7CGFloatVvsTo', symObjAddr: 0x10, symBinAddr: 0x2C2A10, symSize: 0x30 } + - { offset: 0x35F353, size: 0x8, addend: 0x0, symName: '_$sSo11UIStackViewC8PenNavUIE13arabicSpacing12CoreGraphics7CGFloatVvs', symObjAddr: 0x40, symBinAddr: 0x2C2A40, symSize: 0x86 } + - { offset: 0x35F7E7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x2C2AD0, symSize: 0x10 } + - { offset: 0x35F9E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutCMa', symObjAddr: 0x440, symBinAddr: 0x2C2EE0, symSize: 0x20 } + - { offset: 0x35FA2A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvgTo', symObjAddr: 0x0, symBinAddr: 0x2C2AD0, symSize: 0x10 } + - { offset: 0x35FA61, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC8positionAA21FloatingPanelPositionOvsTo', symObjAddr: 0x10, symBinAddr: 0x2C2AE0, symSize: 0x10 } + - { offset: 0x35FA92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvgTo', symObjAddr: 0x20, symBinAddr: 0x2C2AF0, symSize: 0x10 } + - { offset: 0x35FAC3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC12initialStateAA013FloatingPanelI0CvsTo', symObjAddr: 0x30, symBinAddr: 0x2C2B00, symSize: 0x30 } + - { offset: 0x35FB0B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC7anchorsSDyAA18FloatingPanelStateCAA0ijG9Anchoring_pGvgTo', symObjAddr: 0x60, symBinAddr: 0x2C2B30, symSize: 0x70 } + - { offset: 0x35FC51, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC7anchorsSDyAA18FloatingPanelStateCAA0ijG9Anchoring_pGvg', symObjAddr: 0xD0, symBinAddr: 0x2C2BA0, symSize: 0x2A0 } + - { offset: 0x35FE46, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC13backdropAlpha3for12CoreGraphics7CGFloatVAA18FloatingPanelStateC_tFTo', symObjAddr: 0x370, symBinAddr: 0x2C2E40, symSize: 0xA0 } + - { offset: 0x35FEF9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI27FractionalInsetDrivenLayoutC09topAnchorE012CoreGraphics7CGFloatVvgZTf4d_n', symObjAddr: 0x4A0, symBinAddr: 0x2C2F00, symSize: 0x160 } + - { offset: 0x3606E9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwxx', symObjAddr: 0x30, symBinAddr: 0x2C3060, symSize: 0x30 } + - { offset: 0x3606FD, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwcp', symObjAddr: 0x60, symBinAddr: 0x2C3090, symSize: 0x50 } + - { offset: 0x360711, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwca', symObjAddr: 0xB0, symBinAddr: 0x2C30E0, symSize: 0x80 } + - { offset: 0x360725, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwta', symObjAddr: 0x150, symBinAddr: 0x2C3160, symSize: 0x50 } + - { offset: 0x360739, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwet', symObjAddr: 0x1A0, symBinAddr: 0x2C31B0, symSize: 0x40 } + - { offset: 0x36074D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVwst', symObjAddr: 0x1E0, symBinAddr: 0x2C31F0, symSize: 0x50 } + - { offset: 0x360761, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegVMa', symObjAddr: 0x230, symBinAddr: 0x2C3240, symSize: 0x10 } + - { offset: 0x360DA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegV13getDirections12subPathIndexSayAA14RouteDirectionVGSi_tF', symObjAddr: 0x240, symBinAddr: 0x2C3250, symSize: 0x280 } + - { offset: 0x36118F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegV13getDirections12subPathIndexSayAA14RouteDirectionVGSi_tFy7Penguin11SubpathEdgeCXEfU_Tf4nxnnn_n', symObjAddr: 0x1250, symBinAddr: 0x2C4260, symSize: 0x1920 } + - { offset: 0x362D6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegV10directionsSayAA14RouteDirectionVGvg', symObjAddr: 0x4C0, symBinAddr: 0x2C34D0, symSize: 0xD90 } + - { offset: 0x363CF6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI3LegV8durationSdvgTf4x_n', symObjAddr: 0x2B70, symBinAddr: 0x2C5B80, symSize: 0x2C0 } + - { offset: 0x36432A, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE9fontStyleSSvgTo', symObjAddr: 0x0, symBinAddr: 0x2C5E40, symSize: 0x20 } + - { offset: 0x364346, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE9fontStyleSSvsTo', symObjAddr: 0x20, symBinAddr: 0x2C5E60, symSize: 0x50 } + - { offset: 0x36436D, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE9fontStyleSSvs', symObjAddr: 0x70, symBinAddr: 0x2C5EB0, symSize: 0x1A0 } + - { offset: 0x36446F, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE19textColorIdentifierSivgTo', symObjAddr: 0x210, symBinAddr: 0x2C6050, symSize: 0x10 } + - { offset: 0x36448B, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE19textColorIdentifierSivsTo', symObjAddr: 0x220, symBinAddr: 0x2C6060, symSize: 0x30 } + - { offset: 0x3644A7, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE25backgroundColorIdentifierSivgTo', symObjAddr: 0x270, symBinAddr: 0x2C6090, symSize: 0x10 } + - { offset: 0x3644C3, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE25backgroundColorIdentifierSivsTo', symObjAddr: 0x280, symBinAddr: 0x2C60A0, symSize: 0x30 } + - { offset: 0x3644DF, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE19tintColorIdentifierSivgTo', symObjAddr: 0x2D0, symBinAddr: 0x2C60D0, symSize: 0x10 } + - { offset: 0x3644FB, size: 0x8, addend: 0x0, symName: '_$sSo10UITextViewC8PenNavUIE19tintColorIdentifierSivsTo', symObjAddr: 0x2E0, symBinAddr: 0x2C60E0, symSize: 0x30 } + - { offset: 0x364993, size: 0x8, addend: 0x0, symName: '_$ss14_ArrayProtocolPsE6filterySay7ElementQzGSbAEKXEKFSay7Penguin10PoiPolygonVG_Tg5', symObjAddr: 0x0, symBinAddr: 0x2C6220, symSize: 0x220 } + - { offset: 0x3649B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC14sharedInstance33_DB5F0CED90D641A8D90FE1F51FA03EE5LLACSgvpZ', symObjAddr: 0x1FA8, symBinAddr: 0x3A85F0, symSize: 0x0 } + - { offset: 0x364C6D, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryV8PenNavUI13TagDataSourceA2dEP5tagIdSivgTW', symObjAddr: 0x780, symBinAddr: 0x2C68C0, symSize: 0x20 } + - { offset: 0x364CC7, size: 0x8, addend: 0x0, symName: '_$s7Penguin11POICategoryV8PenNavUI13TagDataSourceA2dEP7tagNameSSvgTW', symObjAddr: 0x7A0, symBinAddr: 0x2C68E0, symSize: 0x20 } + - { offset: 0x364D03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerCMa', symObjAddr: 0x7C0, symBinAddr: 0x2C6900, symSize: 0x20 } + - { offset: 0x364D17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11POICategoryVGFSbAE10PoiPolygonVXEfU_TA', symObjAddr: 0x7E0, symBinAddr: 0x2C6920, symSize: 0x60 } + - { offset: 0x364DB0, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKF7Penguin11POICategoryV_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11F17VGFSbAG_AGtXEfU0_Tf1cn_n', symObjAddr: 0x840, symBinAddr: 0x2C6980, symSize: 0x100 } + - { offset: 0x364FCA, size: 0x8, addend: 0x0, symName: '_$sSr15_stableSortImpl2byySbx_xtKXE_tKFySryxGz_SiztKXEfU_7Penguin11POICategoryV_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11F17VGFSbAG_AGtXEfU0_Tf1nnncn_n', symObjAddr: 0x940, symBinAddr: 0x2C6A80, symSize: 0x990 } + - { offset: 0x3654E8, size: 0x8, addend: 0x0, symName: '_$sSr13_mergeTopRuns_6buffer2bySbSaySnySiGGz_SpyxGSbx_xtKXEtKF7Penguin11POICategoryV_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11G17VGFSbAG_AGtXEfU0_Tf1nncn_n', symObjAddr: 0x1570, symBinAddr: 0x2C7410, symSize: 0x2E0 } + - { offset: 0x36587F, size: 0x8, addend: 0x0, symName: '_$ss6_merge3low3mid4high6buffer2bySbSpyxG_A3GSbx_xtKXEtKlF7Penguin11POICategoryV_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11H17VGFSbAG_AGtXEfU0_Tf1nnnnc_n', symObjAddr: 0x1850, symBinAddr: 0x2C76F0, symSize: 0x660 } + - { offset: 0x365A19, size: 0x8, addend: 0x0, symName: '_$ss14_ArrayProtocolPsE6filterySay7ElementQzGSbAEKXEKFSay7Penguin10PoiPolygonVG_Tg5', symObjAddr: 0x0, symBinAddr: 0x2C6220, symSize: 0x220 } + - { offset: 0x365BB0, size: 0x8, addend: 0x0, symName: '_$sSMsSkRzrlE4sort2byySb7ElementSTQz_ADtKXE_tKFs15ContiguousArrayVy7Penguin11POICategoryVG_Tg5053$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11G17VGFSbAG_AGtXEfU0_Tf1cn_n', symObjAddr: 0x220, symBinAddr: 0x2C6440, symSize: 0x80 } + - { offset: 0x365E63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC03setD0yySay7Penguin11POICategoryVGF', symObjAddr: 0x2A0, symBinAddr: 0x2C64C0, symSize: 0x2A0 } + - { offset: 0x3661ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC17getCategoryWithIdy7Penguin11POICategoryVSgSiSgF', symObjAddr: 0x5F0, symBinAddr: 0x2C6760, symSize: 0x130 } + - { offset: 0x36634F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI17CategoriesManagerC13loadAmenitiesyyFySayAA0G0VGcfU_', symObjAddr: 0x720, symBinAddr: 0x2C6890, symSize: 0x30 } + - { offset: 0x366AA2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellCfETo', symObjAddr: 0x8F0, symBinAddr: 0x2C8740, symSize: 0x40 } + - { offset: 0x366AD1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellCMa', symObjAddr: 0x930, symBinAddr: 0x2C8780, symSize: 0x20 } + - { offset: 0x366AE5, size: 0x8, addend: 0x0, symName: '_$sypSgWOc', symObjAddr: 0x950, symBinAddr: 0x2C87A0, symSize: 0x40 } + - { offset: 0x366AF9, size: 0x8, addend: 0x0, symName: '_$sypSgWOd', symObjAddr: 0xA00, symBinAddr: 0x2C87E0, symSize: 0x40 } + - { offset: 0x366C29, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC16descriptionLabelSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2C7E50, symSize: 0x20 } + - { offset: 0x366C87, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC16descriptionLabelSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x2C7E70, symSize: 0x30 } + - { offset: 0x366CD6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC12awakeFromNibyyFTo', symObjAddr: 0x50, symBinAddr: 0x2C7EA0, symSize: 0x60 } + - { offset: 0x366D9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC10updateInfo3for21isDescriptionExpandedyAA11PoiViewDataCSg_SbtF', symObjAddr: 0xB0, symBinAddr: 0x2C7F00, symSize: 0x220 } + - { offset: 0x366EF5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC10updateInfo3for21isDescriptionExpandedyAA13VenueViewDataCSg_SbtF', symObjAddr: 0x2D0, symBinAddr: 0x2C8120, symSize: 0x220 } + - { offset: 0x367074, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC17expandDescriptionyyF', symObjAddr: 0x4F0, symBinAddr: 0x2C8340, symSize: 0x1D0 } + - { offset: 0x367187, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC17expandDescriptionyyFTo', symObjAddr: 0x6C0, symBinAddr: 0x2C8510, symSize: 0x30 } + - { offset: 0x36719B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfc', symObjAddr: 0x6F0, symBinAddr: 0x2C8540, symSize: 0xC0 } + - { offset: 0x3671DC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC5style15reuseIdentifierACSo011UITableViewE5StyleV_SSSgtcfcTo', symObjAddr: 0x7B0, symBinAddr: 0x2C8600, symSize: 0x30 } + - { offset: 0x3671F0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x7E0, symBinAddr: 0x2C8630, symSize: 0xB0 } + - { offset: 0x367223, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x890, symBinAddr: 0x2C86E0, symSize: 0x30 } + - { offset: 0x367237, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellCfD', symObjAddr: 0x8C0, symBinAddr: 0x2C8710, symSize: 0x30 } + - { offset: 0x3672EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9AboutCellC7trimmedySo18NSAttributedStringCSSFTf4nd_n', symObjAddr: 0xA40, symBinAddr: 0x2C8820, symSize: 0x440 } + - { offset: 0x3678F2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorC06allowseF03forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x2C8C60, symSize: 0x10 } + - { offset: 0x36796C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorCMa', symObjAddr: 0x30, symBinAddr: 0x2C8C70, symSize: 0x14 } + - { offset: 0x3679CB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI24TopRubberBandingBehaviorC06allowseF03forSbSo10UIRectEdgeV_tFTo', symObjAddr: 0x0, symBinAddr: 0x2C8C60, symSize: 0x10 } + - { offset: 0x367DB3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV6colors33_616753A7FF7E0F369F73FFA5ED6E61FBLL_WZ', symObjAddr: 0x0, symBinAddr: 0x2C8C90, symSize: 0x60 } + - { offset: 0x367DD7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV6colors33_616753A7FF7E0F369F73FFA5ED6E61FBLLSDySiAA0D0VGvpZ', symObjAddr: 0x1C8, symBinAddr: 0x3A87E8, symSize: 0x0 } + - { offset: 0x367E17, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV6colors33_616753A7FF7E0F369F73FFA5ED6E61FBLL_WZ', symObjAddr: 0x0, symBinAddr: 0x2C8C90, symSize: 0x60 } + - { offset: 0x36807F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV06updatedE003newdE0ySayAA14ColorsResponseV0E4ItemVG_tFZTf4nd_n', symObjAddr: 0xA0, symBinAddr: 0x2C8CF0, symSize: 0x121 } + - { offset: 0x3680C0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV06updatedE003newdE0ySayAA14ColorsResponseV0E4ItemVG_tFZTf4nd_n', symObjAddr: 0xA0, symBinAddr: 0x2C8CF0, symSize: 0x121 } + - { offset: 0x3680D4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV06updatedE003newdE0ySayAA14ColorsResponseV0E4ItemVG_tFZTf4nd_n', symObjAddr: 0xA0, symBinAddr: 0x2C8CF0, symSize: 0x121 } + - { offset: 0x3680E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV06updatedE003newdE0ySayAA14ColorsResponseV0E4ItemVG_tFZTf4nd_n', symObjAddr: 0xA0, symBinAddr: 0x2C8CF0, symSize: 0x121 } + - { offset: 0x3680FC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI12ColorPaletteV06updatedE003newdE0ySayAA14ColorsResponseV0E4ItemVG_tFZTf4nd_n', symObjAddr: 0xA0, symBinAddr: 0x2C8CF0, symSize: 0x121 } + - { offset: 0x36861C, size: 0x8, addend: 0x0, symName: '_$sSo6UIFontCMa', symObjAddr: 0x1310, symBinAddr: 0x2CA0C0, symSize: 0x40 } + - { offset: 0x368630, size: 0x8, addend: 0x0, symName: '_$sSnySS5IndexVGMa', symObjAddr: 0x13B0, symBinAddr: 0x2CA100, symSize: 0x36 } + - { offset: 0x36871E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TimeFormatterV20getFormattedDuration7seconds23includesMeasurementUnitSSSd_SbtFZTf4nnd_n', symObjAddr: 0x0, symBinAddr: 0x2C8E20, symSize: 0x2C0 } + - { offset: 0x368A47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TimeFormatterV019getFormattedArrivalD05afterSSSgSd_tFZTf4nd_n', symObjAddr: 0x2C0, symBinAddr: 0x2C90E0, symSize: 0x3E0 } + - { offset: 0x368C65, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13TimeFormatterV019getFormattedArrivalD05afterSo18NSAttributedStringCSgSd_tFZTf4nd_n', symObjAddr: 0x710, symBinAddr: 0x2C94C0, symSize: 0xC00 } + - { offset: 0x369511, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC8tagTitleSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2CA140, symSize: 0x20 } + - { offset: 0x3696E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellCfETo', symObjAddr: 0x540, symBinAddr: 0x2CA680, symSize: 0x20 } + - { offset: 0x369717, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellCMa', symObjAddr: 0x560, symBinAddr: 0x2CA6A0, symSize: 0x20 } + - { offset: 0x3697C8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC8tagTitleSo7UILabelCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2CA140, symSize: 0x20 } + - { offset: 0x369828, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC8tagTitleSo7UILabelCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x2CA160, symSize: 0x20 } + - { offset: 0x36987B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC12awakeFromNibyyFTo', symObjAddr: 0x40, symBinAddr: 0x2CA180, symSize: 0x30 } + - { offset: 0x369918, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC15handleSelection33_8D5042F874946FF25E371E94CE6EE3E9LL10isSelectedySb_tF', symObjAddr: 0x70, symBinAddr: 0x2CA1B0, symSize: 0x3A0 } + - { offset: 0x369ABF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x410, symBinAddr: 0x2CA550, symSize: 0x70 } + - { offset: 0x369B3B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x480, symBinAddr: 0x2CA5C0, symSize: 0x90 } + - { offset: 0x369B72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI11TagViewCellCfD', symObjAddr: 0x510, symBinAddr: 0x2CA650, symSize: 0x30 } + - { offset: 0x369F1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVwxx', symObjAddr: 0x30, symBinAddr: 0x2CA6C0, symSize: 0x50 } + - { offset: 0x369F33, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVwcp', symObjAddr: 0x80, symBinAddr: 0x2CA710, symSize: 0x90 } + - { offset: 0x369F47, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVwca', symObjAddr: 0x110, symBinAddr: 0x2CA7A0, symSize: 0xE0 } + - { offset: 0x369F5B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVwta', symObjAddr: 0x220, symBinAddr: 0x2CA880, symSize: 0xB0 } + - { offset: 0x369F6F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemVMa', symObjAddr: 0x360, symBinAddr: 0x2CA930, symSize: 0x10 } + - { offset: 0x369F83, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV14ImagePlacementOMa', symObjAddr: 0x5C0, symBinAddr: 0x2CA940, symSize: 0x10 } + - { offset: 0x369F97, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV0dE9AttributeOMa', symObjAddr: 0x750, symBinAddr: 0x2CA950, symSize: 0x10 } + - { offset: 0x369FAB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV0dE9AttributeOSHAASQWb', symObjAddr: 0x760, symBinAddr: 0x2CA960, symSize: 0x10 } + - { offset: 0x369FBF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV0dE9AttributeOAESQAAWl', symObjAddr: 0x770, symBinAddr: 0x2CA970, symSize: 0x30 } + - { offset: 0x369FD3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV14ImagePlacementOSHAASQWb', symObjAddr: 0x7A0, symBinAddr: 0x2CA9A0, symSize: 0x10 } + - { offset: 0x369FE7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI8MenuItemV14ImagePlacementOAESQAAWl', symObjAddr: 0x7B0, symBinAddr: 0x2CA9B0, symSize: 0x30 } + - { offset: 0x36BC03, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperCMa', symObjAddr: 0x7FE0, symBinAddr: 0x2D2950, symSize: 0x20 } + - { offset: 0x36BC26, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP18onReachDestinationyyFTW', symObjAddr: 0x8080, symBinAddr: 0x2D29F0, symSize: 0x10 } + - { offset: 0x36BE54, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC18onReachDestinationyyFTf4d_n', symObjAddr: 0xD0B0, symBinAddr: 0x2D7A20, symSize: 0x130 } + - { offset: 0x36BFFC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC24addNavigationSearchPanel4stop5index11closeActionyAA5PlaceCSg_SiyycSgtFyAJcfU_TA', symObjAddr: 0xD270, symBinAddr: 0x2D7BA0, symSize: 0x20 } + - { offset: 0x36C010, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20addGateSelectorPanel5venue5indexyAA5PlaceCSg_SitFyAIcfU_TA', symObjAddr: 0xD2D0, symBinAddr: 0x2D7BE0, symSize: 0x20 } + - { offset: 0x36C024, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12OptionsPanelyyFyycfU_TA', symObjAddr: 0xD2F0, symBinAddr: 0x2D7C00, symSize: 0x10 } + - { offset: 0x36C038, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycAA24NavigationViewControllerCcfu1_yycfu2_TA', symObjAddr: 0xD350, symBinAddr: 0x2D7C40, symSize: 0x20 } + - { offset: 0x36C06A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycAA24NavigationViewControllerCcfu3_yycfu4_TA', symObjAddr: 0xD370, symBinAddr: 0x2D7C60, symSize: 0x20 } + - { offset: 0x36C09C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu5_yycfu6_TA', symObjAddr: 0xD390, symBinAddr: 0x2D7C80, symSize: 0x10 } + - { offset: 0x36C0CE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyAA08FloatingI10ControllerCcACcfu7_yAHcfu8_TA', symObjAddr: 0xD3A0, symBinAddr: 0x2D7C90, symSize: 0x10 } + - { offset: 0x36C108, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu9_yycfu10_TA', symObjAddr: 0xD3B0, symBinAddr: 0x2D7CA0, symSize: 0x10 } + - { offset: 0x36C13A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyAA5PlaceCSg_SitcACcfu11_yAI_Sitcfu12_TA', symObjAddr: 0xD3C0, symBinAddr: 0x2D7CB0, symSize: 0x10 } + - { offset: 0x36C17C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycACcfu13_yycfu14_TA', symObjAddr: 0xD3D0, symBinAddr: 0x2D7CC0, symSize: 0x10 } + - { offset: 0x36C1AE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tFyycAA24NavigationViewControllerCcfu15_yycfu16_TA', symObjAddr: 0xD3E0, symBinAddr: 0x2D7CD0, symSize: 0x20 } + - { offset: 0x36C1E0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySbcfU1_TA', symObjAddr: 0xD4C0, symBinAddr: 0x2D7D40, symSize: 0x20 } + - { offset: 0x36C1F4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySo7UIImageCSgcfU0_TA', symObjAddr: 0xD580, symBinAddr: 0x2D7DB0, symSize: 0x20 } + - { offset: 0x36C208, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySo7UIImageCSgcfU_TA', symObjAddr: 0xD5E0, symBinAddr: 0x2D7E10, symSize: 0x20 } + - { offset: 0x36C21C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20setupSubpathsStepperyyFyycfU_TA', symObjAddr: 0xD640, symBinAddr: 0x2D7E30, symSize: 0x20 } + - { offset: 0x36C230, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20setupSubpathsStepperyyFyycfU0_TA', symObjAddr: 0xD660, symBinAddr: 0x2D7E50, symSize: 0x20 } + - { offset: 0x36C244, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC013getNavigationD0yyFy7Penguin0D0VSg_AE0D5ErrorOSgtcACcfu_yAH_AKtcfu0_TA', symObjAddr: 0xD740, symBinAddr: 0x2D7E70, symSize: 0x10 } + - { offset: 0x36CC1F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC013getNavigationD0yyF', symObjAddr: 0x0, symBinAddr: 0x2CA9E0, symSize: 0x6E0 } + - { offset: 0x36D236, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP02onD9PathReady5routeyAD0D0VSg_tFTW', symObjAddr: 0x8000, symBinAddr: 0x2D2970, symSize: 0x10 } + - { offset: 0x36D252, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP010onFailLoadD09errorCodeyAD05ErrorO0O_tFTW', symObjAddr: 0x8010, symBinAddr: 0x2D2980, symSize: 0x10 } + - { offset: 0x36D26E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP17onStartNavigationyyFTW', symObjAddr: 0x8020, symBinAddr: 0x2D2990, symSize: 0x10 } + - { offset: 0x36D28A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP16onStopNavigationyyFTW', symObjAddr: 0x8030, symBinAddr: 0x2D29A0, symSize: 0x10 } + - { offset: 0x36D2A6, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP18onInstructionReady15instructionListySayAD09DirectionL0CG_tFTW', symObjAddr: 0x8040, symBinAddr: 0x2D29B0, symSize: 0x10 } + - { offset: 0x36D2C2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP11onErrorPath02isL0ySb_tFTW', symObjAddr: 0x8050, symBinAddr: 0x2D29C0, symSize: 0x10 } + - { offset: 0x36D2DE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP12onErrorFloor6statusySb_tFTW', symObjAddr: 0x8060, symBinAddr: 0x2D29D0, symSize: 0x10 } + - { offset: 0x36D2FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP12onErrorVenue6statusySb_tFTW', symObjAddr: 0x8070, symBinAddr: 0x2D29E0, symSize: 0x10 } + - { offset: 0x36D316, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP19onReachedEndSubPath4typeyAD8NodeTypeO_tFTW', symObjAddr: 0x8090, symBinAddr: 0x2D2A00, symSize: 0x10 } + - { offset: 0x36D332, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP16onErrorPathReady10errorEdgesySayAD0L4EdgeCGSg_tFTW', symObjAddr: 0x80A0, symBinAddr: 0x2D2A10, symSize: 0x10 } + - { offset: 0x36D34E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC7Penguin27PIDirectionsServiceDelegateAadEP15onSubPathChange03subM0yAD010NavigationlM0C_tFTW', symObjAddr: 0x80B0, symBinAddr: 0x2D2A20, symSize: 0x10 } + - { offset: 0x36D4B8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC06handleD8Response5route5errory7Penguin0D0VSg_AG0D5ErrorOSgtF', symObjAddr: 0x6E0, symBinAddr: 0x2CB0C0, symSize: 0x780 } + - { offset: 0x36DA9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03setD0_5errory7Penguin0D0VSg_AF0D5ErrorOSgtF', symObjAddr: 0xE60, symBinAddr: 0x2CB840, symSize: 0x3A0 } + - { offset: 0x36DDC0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20setupSubpathsStepperyyF', symObjAddr: 0x1200, symBinAddr: 0x2CBBE0, symSize: 0x4F0 } + - { offset: 0x36DF56, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC15drawNextSubpathyyF', symObjAddr: 0x1740, symBinAddr: 0x2CC0D0, symSize: 0x670 } + - { offset: 0x36E589, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC19drawPreviousSubpathyyF', symObjAddr: 0x1DB0, symBinAddr: 0x2CC740, symSize: 0x550 } + - { offset: 0x36EA63, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC25showUserLocationIndicator2at8selectedySo22CLLocationCoordinate2DVSg_SbtF', symObjAddr: 0x2320, symBinAddr: 0x2CCC90, symSize: 0x130 } + - { offset: 0x36EC2C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC13drawFirstNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath16startPointMarker11coordinatesy7Penguin7SubPathCSg_So7UIImageCSgSaySo22CLLocationCoordinate2DVGtF', symObjAddr: 0x2450, symBinAddr: 0x2CCDC0, symSize: 0x810 } + - { offset: 0x36F44B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgF', symObjAddr: 0x2C60, symBinAddr: 0x2CD5D0, symSize: 0x26B0 } + - { offset: 0x37122E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySo7UIImageCSgcfU_', symObjAddr: 0x5310, symBinAddr: 0x2CFC80, symSize: 0x90 } + - { offset: 0x37126B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySo7UIImageCSgcfU0_', symObjAddr: 0x53A0, symBinAddr: 0x2CFD10, symSize: 0x2B0 } + - { offset: 0x3714E5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC11drawSubpathyy7Penguin7SubPathCSgFySbcfU1_', symObjAddr: 0x5650, symBinAddr: 0x2CFFC0, symSize: 0xC0 } + - { offset: 0x37163A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC32updateUserLocationIndicatorColoryyF', symObjAddr: 0x5710, symBinAddr: 0x2D0080, symSize: 0x580 } + - { offset: 0x3719BE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12PlannerPanel10completionyyycSg_tF', symObjAddr: 0x5C90, symBinAddr: 0x2D0600, symSize: 0x5C0 } + - { offset: 0x372273, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12DetailsPanelyyF', symObjAddr: 0x6250, symBinAddr: 0x2D0BC0, symSize: 0x320 } + - { offset: 0x372601, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12OptionsPanelyyF', symObjAddr: 0x6570, symBinAddr: 0x2D0EE0, symSize: 0x370 } + - { offset: 0x372994, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03addD12OptionsPanelyyFyycfU_', symObjAddr: 0x68E0, symBinAddr: 0x2D1250, symSize: 0xE0 } + - { offset: 0x3729E1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC24addNavigationSearchPanel4stop5index11closeActionyAA5PlaceCSg_SiyycSgtFyAJcfU_', symObjAddr: 0x69C0, symBinAddr: 0x2D1330, symSize: 0x70 } + - { offset: 0x372A7E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20addGateSelectorPanel5venue5indexyAA5PlaceCSg_SitF', symObjAddr: 0x6A30, symBinAddr: 0x2D13A0, symSize: 0x3C0 } + - { offset: 0x372E52, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20addGateSelectorPanel5venue5indexyAA5PlaceCSg_SitFyAIcfU_', symObjAddr: 0x6DF0, symBinAddr: 0x2D1760, symSize: 0x230 } + - { offset: 0x372FD5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC20floatingPanelDidMoveyyAA08FloatingH10ControllerCF', symObjAddr: 0x7020, symBinAddr: 0x2D1990, symSize: 0x240 } + - { offset: 0x373141, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC10didTapStop_2atyAA5PlaceCSg_SitF', symObjAddr: 0x7260, symBinAddr: 0x2D1BD0, symSize: 0x140 } + - { offset: 0x37333A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC21didSelectSearchResult_9replacing2atyAA5PlaceCSg_AISitF', symObjAddr: 0x73A0, symBinAddr: 0x2D1D10, symSize: 0xC00 } + - { offset: 0x373AD4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperCfD', symObjAddr: 0x7FA0, symBinAddr: 0x2D2910, symSize: 0x40 } + - { offset: 0x373B28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC03getD11Coordinates4fromSaySo22CLLocationCoordinate2DVG7Penguin7SubPathCSg_tFTf4nd_n', symObjAddr: 0x80C0, symBinAddr: 0x2D2A30, symSize: 0xEA0 } + - { offset: 0x374BA5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC8getImage3for2onSo7UIImageCSg7Penguin11SubPathNodeCSg_AJ0mN0CSgtFTf4nnd_n', symObjAddr: 0x8F60, symBinAddr: 0x2D38D0, symSize: 0x1900 } + - { offset: 0x37516B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC15detectFirstNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath10completiony7Penguin7SubPathCSg_ySo7UIImageCSgctF03$s8ab4UI19def25C11drawSubpathyy7Penguin7st8CSgFySo7U7CSgcfU_ACSgXwz_XxAKSaySo22CLLocationCoordinate2DVGz_XxTf1ncn_nTf4nnggg_n', symObjAddr: 0xA860, symBinAddr: 0x2D51D0, symSize: 0x7E0 } + - { offset: 0x37568E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC12drawLastNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath14endPointMarker0Q5Title11coordinatesy7Penguin7SubPathCSg_So7UIImageCSgSSSaySo22CLLocationCoordinate2DVGtFTf4nndnn_n', symObjAddr: 0xB040, symBinAddr: 0x2D59B0, symSize: 0xE10 } + - { offset: 0x3760B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC14detectLastNode33_28CE46F76CA801FE7FDA463BD2098358LL7subpath11coordinates10completiony7Penguin7SubPathCSg_SaySo22CLLocationCoordinate2DVGySo7UIImageCSgctF03$s8ab4UI19def25C11drawSubpathyy7Penguin7tu8CSgFySo7X8CSgcfU0_ACSgXwz_XxAlOz_XxTf1nncn_nTf4nnnggg_n', symObjAddr: 0xBE50, symBinAddr: 0x2D67C0, symSize: 0xDB0 } + - { offset: 0x376CB8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19RouteOverviewHelperC24addNavigationSearchPanel4stop5index11closeActionyAA5PlaceCSg_SiyycSgtFTf4nndn_n', symObjAddr: 0xCC00, symBinAddr: 0x2D7570, symSize: 0x4B0 } + - { offset: 0x3774C7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV8parseUseyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x2D7EC0, symSize: 0x200 } + - { offset: 0x37752B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI9XMLParserV8parseUseyAA3DOMO0F0CAA15AttributeParser_pKFTf4nd_n', symObjAddr: 0x0, symBinAddr: 0x2D7EC0, symSize: 0x200 } + - { offset: 0x3779AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC07contentG0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2D80C0, symSize: 0x20 } + - { offset: 0x377B6C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewCfETo', symObjAddr: 0x820, symBinAddr: 0x2D88E0, symSize: 0x40 } + - { offset: 0x377B9B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewCMa', symObjAddr: 0x860, symBinAddr: 0x2D8920, symSize: 0x20 } + - { offset: 0x377CAC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC07contentG0So6UIViewCSgvgTo', symObjAddr: 0x0, symBinAddr: 0x2D80C0, symSize: 0x20 } + - { offset: 0x377D0A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC07contentG0So6UIViewCSgvsTo', symObjAddr: 0x20, symBinAddr: 0x2D80E0, symSize: 0x30 } + - { offset: 0x377D59, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC18selectedVenueTitleSo7UILabelCSgvgTo', symObjAddr: 0x50, symBinAddr: 0x2D8110, symSize: 0x20 } + - { offset: 0x377DB1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC18selectedVenueTitleSo7UILabelCSgvsTo', symObjAddr: 0x70, symBinAddr: 0x2D8130, symSize: 0x30 } + - { offset: 0x377E92, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC5frameACSo6CGRectV_tcfc', symObjAddr: 0xA0, symBinAddr: 0x2D8160, symSize: 0x390 } + - { offset: 0x377F8D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC5frameACSo6CGRectV_tcfcTo', symObjAddr: 0x430, symBinAddr: 0x2D84F0, symSize: 0x30 } + - { offset: 0x377FA1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC5coderACSgSo7NSCoderC_tcfc', symObjAddr: 0x460, symBinAddr: 0x2D8520, symSize: 0x360 } + - { offset: 0x3780B1, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewC5coderACSgSo7NSCoderC_tcfcTo', symObjAddr: 0x7C0, symBinAddr: 0x2D8880, symSize: 0x30 } + - { offset: 0x3780C5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI23FloorSelectorHeaderViewCfD', symObjAddr: 0x7F0, symBinAddr: 0x2D88B0, symSize: 0x30 } + - { offset: 0x378495, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14resourceBundle33_8254639E4C1A24707C71223CBC54B699LLSo8NSBundleCvp', symObjAddr: 0xD50, symBinAddr: 0x3A8A40, symSize: 0x0 } + - { offset: 0x3784AF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV5arrowACvpZ', symObjAddr: 0x89D8, symBinAddr: 0x3BD440, symSize: 0x0 } + - { offset: 0x3784D5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7bicycleACvpZ', symObjAddr: 0x89F0, symBinAddr: 0x3BD458, symSize: 0x0 } + - { offset: 0x3784EF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10campusGateACvpZ', symObjAddr: 0x8A08, symBinAddr: 0x3BD470, symSize: 0x0 } + - { offset: 0x378509, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV3carACvpZ', symObjAddr: 0x8A20, symBinAddr: 0x3BD488, symSize: 0x0 } + - { offset: 0x378523, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV5clockACvpZ', symObjAddr: 0x8A38, symBinAddr: 0x3BD4A0, symSize: 0x0 } + - { offset: 0x37853D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7compassACvpZ', symObjAddr: 0x8A50, symBinAddr: 0x3BD4B8, symSize: 0x0 } + - { offset: 0x378557, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4gateACvpZ', symObjAddr: 0x8A68, symBinAddr: 0x3BD4D0, symSize: 0x0 } + - { offset: 0x378571, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12groupedStopsACvpZ', symObjAddr: 0x8A80, symBinAddr: 0x3BD4E8, symSize: 0x0 } + - { offset: 0x37858B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV16mapDownEscalatorACvpZ', symObjAddr: 0x8A98, symBinAddr: 0x3BD500, symSize: 0x0 } + - { offset: 0x3785A5, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV11mapElevatorACvpZ', symObjAddr: 0x8AB0, symBinAddr: 0x3BD518, symSize: 0x0 } + - { offset: 0x3785BF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12mapEscalatorACvpZ', symObjAddr: 0x8AC8, symBinAddr: 0x3BD530, symSize: 0x0 } + - { offset: 0x3785D9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7mapGateACvpZ', symObjAddr: 0x8AE0, symBinAddr: 0x3BD548, symSize: 0x0 } + - { offset: 0x3785F3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7mapRampACvpZ', symObjAddr: 0x8AF8, symBinAddr: 0x3BD560, symSize: 0x0 } + - { offset: 0x37860D, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9mapStairsACvpZ', symObjAddr: 0x8B10, symBinAddr: 0x3BD578, symSize: 0x0 } + - { offset: 0x378627, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV14mapUpEscalatorACvpZ', symObjAddr: 0x8B28, symBinAddr: 0x3BD590, symSize: 0x0 } + - { offset: 0x378641, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV8sharePDFACvpZ', symObjAddr: 0x8B40, symBinAddr: 0x3BD5A8, symSize: 0x0 } + - { offset: 0x37865B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9shareTextACvpZ', symObjAddr: 0x8B58, symBinAddr: 0x3BD5C0, symSize: 0x0 } + - { offset: 0x378675, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7transitACvpZ', symObjAddr: 0x8B70, symBinAddr: 0x3BD5D8, symSize: 0x0 } + - { offset: 0x37868F, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4walkACvpZ', symObjAddr: 0x8B88, symBinAddr: 0x3BD5F0, symSize: 0x0 } + - { offset: 0x3786A9, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4waveACvpZ', symObjAddr: 0x8BA0, symBinAddr: 0x3BD608, symSize: 0x0 } + - { offset: 0x3786C4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12buildingFillACvpZ', symObjAddr: 0x8BB8, symBinAddr: 0x3BD620, symSize: 0x0 } + - { offset: 0x3786DF, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV14currentAlignedACvpZ', symObjAddr: 0x8BD0, symBinAddr: 0x3BD638, symSize: 0x0 } + - { offset: 0x3786FA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10currentlocACvpZ', symObjAddr: 0x8BE8, symBinAddr: 0x3BD650, symSize: 0x0 } + - { offset: 0x378715, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV16currentlocFilledACvpZ', symObjAddr: 0x8C00, symBinAddr: 0x3BD668, symSize: 0x0 } + - { offset: 0x378730, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV15exclamationMarkACvpZ', symObjAddr: 0x8C18, symBinAddr: 0x3BD680, symSize: 0x0 } + - { offset: 0x37874B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV19feedbackDestinationACvpZ', symObjAddr: 0x8C30, symBinAddr: 0x3BD698, symSize: 0x0 } + - { offset: 0x378766, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV11fitToCampusACvpZ', symObjAddr: 0x8C48, symBinAddr: 0x3BD6B0, symSize: 0x0 } + - { offset: 0x378781, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV17fitToCampusFilledACvpZ', symObjAddr: 0x8C60, symBinAddr: 0x3BD6C8, symSize: 0x0 } + - { offset: 0x37879C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10myLocationACvpZ', symObjAddr: 0x8C78, symBinAddr: 0x3BD6E0, symSize: 0x0 } + - { offset: 0x3787B7, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV13pinCircleFillACvpZ', symObjAddr: 0x8C90, symBinAddr: 0x3BD6F8, symSize: 0x0 } + - { offset: 0x3787D2, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV20selectedUserLocationACvpZ', symObjAddr: 0x8CA8, symBinAddr: 0x3BD710, symSize: 0x0 } + - { offset: 0x3787ED, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV6updownACvpZ', symObjAddr: 0x8CC0, symBinAddr: 0x3BD728, symSize: 0x0 } + - { offset: 0x378808, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9usingGateACvpZ', symObjAddr: 0x8CD8, symBinAddr: 0x3BD740, symSize: 0x0 } + - { offset: 0x378816, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI19ResourceBundleClass33_8254639E4C1A24707C71223CBC54B699LLCMa', symObjAddr: 0x20, symBinAddr: 0x2D8940, symSize: 0x20 } + - { offset: 0x37882A, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI14resourceBundle33_8254639E4C1A24707C71223CBC54B699LL_WZ', symObjAddr: 0x40, symBinAddr: 0x2D8960, symSize: 0x50 } + - { offset: 0x37886B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV5arrow_WZ', symObjAddr: 0x90, symBinAddr: 0x2D89B0, symSize: 0x60 } + - { offset: 0x378893, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7bicycle_WZ', symObjAddr: 0xF0, symBinAddr: 0x2D8A10, symSize: 0x60 } + - { offset: 0x3788BB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10campusGate_WZ', symObjAddr: 0x150, symBinAddr: 0x2D8A70, symSize: 0x60 } + - { offset: 0x3788E3, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV3car_WZ', symObjAddr: 0x1B0, symBinAddr: 0x2D8AD0, symSize: 0x60 } + - { offset: 0x37890B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV5clock_WZ', symObjAddr: 0x210, symBinAddr: 0x2D8B30, symSize: 0x60 } + - { offset: 0x378933, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7compass_WZ', symObjAddr: 0x270, symBinAddr: 0x2D8B90, symSize: 0x60 } + - { offset: 0x37895B, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4gate_WZ', symObjAddr: 0x2D0, symBinAddr: 0x2D8BF0, symSize: 0x60 } + - { offset: 0x378983, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12groupedStops_WZ', symObjAddr: 0x330, symBinAddr: 0x2D8C50, symSize: 0x60 } + - { offset: 0x3789AB, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV16mapDownEscalator_WZ', symObjAddr: 0x390, symBinAddr: 0x2D8CB0, symSize: 0x70 } + - { offset: 0x3789E8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV11mapElevator_WZ', symObjAddr: 0x400, symBinAddr: 0x2D8D20, symSize: 0x60 } + - { offset: 0x378A10, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12mapEscalator_WZ', symObjAddr: 0x460, symBinAddr: 0x2D8D80, symSize: 0x60 } + - { offset: 0x378A38, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7mapGate_WZ', symObjAddr: 0x4C0, symBinAddr: 0x2D8DE0, symSize: 0x60 } + - { offset: 0x378A60, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7mapRamp_WZ', symObjAddr: 0x520, symBinAddr: 0x2D8E40, symSize: 0x60 } + - { offset: 0x378A88, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9mapStairs_WZ', symObjAddr: 0x580, symBinAddr: 0x2D8EA0, symSize: 0x60 } + - { offset: 0x378AB0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV14mapUpEscalator_WZ', symObjAddr: 0x5E0, symBinAddr: 0x2D8F00, symSize: 0x60 } + - { offset: 0x378AD8, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV8sharePDF_WZ', symObjAddr: 0x640, symBinAddr: 0x2D8F60, symSize: 0x60 } + - { offset: 0x378B00, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9shareText_WZ', symObjAddr: 0x6A0, symBinAddr: 0x2D8FC0, symSize: 0x60 } + - { offset: 0x378B28, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV7transit_WZ', symObjAddr: 0x700, symBinAddr: 0x2D9020, symSize: 0x60 } + - { offset: 0x378B50, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4walk_WZ', symObjAddr: 0x760, symBinAddr: 0x2D9080, symSize: 0x60 } + - { offset: 0x378B78, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV4wave_WZ', symObjAddr: 0x7C0, symBinAddr: 0x2D90E0, symSize: 0x60 } + - { offset: 0x378BA0, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV12buildingFill_WZ', symObjAddr: 0x820, symBinAddr: 0x2D9140, symSize: 0x60 } + - { offset: 0x378BCA, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV14currentAligned_WZ', symObjAddr: 0x880, symBinAddr: 0x2D91A0, symSize: 0x60 } + - { offset: 0x378BF4, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10currentloc_WZ', symObjAddr: 0x8E0, symBinAddr: 0x2D9200, symSize: 0x60 } + - { offset: 0x378C1E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV16currentlocFilled_WZ', symObjAddr: 0x940, symBinAddr: 0x2D9260, symSize: 0x70 } + - { offset: 0x378C5E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV15exclamationMark_WZ', symObjAddr: 0x9B0, symBinAddr: 0x2D92D0, symSize: 0x70 } + - { offset: 0x378C9E, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV19feedbackDestination_WZ', symObjAddr: 0xA20, symBinAddr: 0x2D9340, symSize: 0x70 } + - { offset: 0x378CDE, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV11fitToCampus_WZ', symObjAddr: 0xA90, symBinAddr: 0x2D93B0, symSize: 0x60 } + - { offset: 0x378D08, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV17fitToCampusFilled_WZ', symObjAddr: 0xAF0, symBinAddr: 0x2D9410, symSize: 0x70 } + - { offset: 0x378D48, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV10myLocation_WZ', symObjAddr: 0xB60, symBinAddr: 0x2D9480, symSize: 0x60 } + - { offset: 0x378D72, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV13pinCircleFill_WZ', symObjAddr: 0xBC0, symBinAddr: 0x2D94E0, symSize: 0x60 } + - { offset: 0x378D9C, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV20selectedUserLocation_WZ', symObjAddr: 0xC20, symBinAddr: 0x2D9540, symSize: 0x70 } + - { offset: 0x378DDC, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV6updown_WZ', symObjAddr: 0xC90, symBinAddr: 0x2D95B0, symSize: 0x60 } + - { offset: 0x378E06, size: 0x8, addend: 0x0, symName: '_$s8PenNavUI13ImageResourceV9usingGate_WZ', symObjAddr: 0xCF0, symBinAddr: 0x2D9610, symSize: 0x5A } +... diff --git a/ios/Podfile b/ios/Podfile index 4c8bed13..a74c7fb2 100644 --- a/ios/Podfile +++ b/ios/Podfile @@ -1,5 +1,5 @@ # Uncomment this line to define a global platform for your project -platform :ios, '14.0' +platform :ios, '15.0' # CocoaPods analytics sends network stats synchronously affecting flutter build latency. ENV['COCOAPODS_DISABLE_STATS'] = 'true' @@ -54,6 +54,7 @@ post_install do |installer| 'PERMISSION_EVENTS_FULL_ACCESS=1', ## dart: PermissionGroup.reminders 'PERMISSION_REMINDERS=1', + 'PERMISSION_PHOTOS=1', ## dart: PermissionGroup.notification 'PERMISSION_NOTIFICATIONS=1', ] diff --git a/ios/Podfile.lock b/ios/Podfile.lock deleted file mode 100644 index 02c8b5da..00000000 --- a/ios/Podfile.lock +++ /dev/null @@ -1,543 +0,0 @@ -PODS: - - amazon_payfort (1.1.4): - - Flutter - - PayFortSDK - - audio_session (0.0.1): - - Flutter - - barcode_scan2 (0.0.1): - - Flutter - - SwiftProtobuf (~> 1.33) - - connectivity_plus (0.0.1): - - Flutter - - CryptoSwift (1.8.4) - - device_calendar (0.0.1): - - Flutter - - device_calendar_plus_ios (0.0.1): - - Flutter - - device_info_plus (0.0.1): - - Flutter - - DKImagePickerController/Core (4.3.9): - - DKImagePickerController/ImageDataManager - - DKImagePickerController/Resource - - DKImagePickerController/ImageDataManager (4.3.9) - - DKImagePickerController/PhotoGallery (4.3.9): - - DKImagePickerController/Core - - DKPhotoGallery - - DKImagePickerController/Resource (4.3.9) - - DKPhotoGallery (0.0.19): - - DKPhotoGallery/Core (= 0.0.19) - - DKPhotoGallery/Model (= 0.0.19) - - DKPhotoGallery/Preview (= 0.0.19) - - DKPhotoGallery/Resource (= 0.0.19) - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Core (0.0.19): - - DKPhotoGallery/Model - - DKPhotoGallery/Preview - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Model (0.0.19): - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Preview (0.0.19): - - DKPhotoGallery/Model - - DKPhotoGallery/Resource - - SDWebImage - - SwiftyGif - - DKPhotoGallery/Resource (0.0.19): - - SDWebImage - - SwiftyGif - - file_picker (0.0.1): - - DKImagePickerController/PhotoGallery - - Flutter - - Firebase/Analytics (11.15.0): - - Firebase/Core - - Firebase/Core (11.15.0): - - Firebase/CoreOnly - - FirebaseAnalytics (~> 11.15.0) - - Firebase/CoreOnly (11.15.0): - - FirebaseCore (~> 11.15.0) - - Firebase/Messaging (11.15.0): - - Firebase/CoreOnly - - FirebaseMessaging (~> 11.15.0) - - firebase_analytics (11.6.0): - - Firebase/Analytics (= 11.15.0) - - firebase_core - - Flutter - - firebase_core (3.15.2): - - Firebase/CoreOnly (= 11.15.0) - - Flutter - - firebase_messaging (15.2.10): - - Firebase/Messaging (= 11.15.0) - - firebase_core - - Flutter - - FirebaseAnalytics (11.15.0): - - FirebaseAnalytics/Default (= 11.15.0) - - FirebaseCore (~> 11.15.0) - - FirebaseInstallations (~> 11.0) - - GoogleUtilities/AppDelegateSwizzler (~> 8.1) - - GoogleUtilities/MethodSwizzler (~> 8.1) - - GoogleUtilities/Network (~> 8.1) - - "GoogleUtilities/NSData+zlib (~> 8.1)" - - nanopb (~> 3.30910.0) - - FirebaseAnalytics/Default (11.15.0): - - FirebaseCore (~> 11.15.0) - - FirebaseInstallations (~> 11.0) - - GoogleAppMeasurement/Default (= 11.15.0) - - GoogleUtilities/AppDelegateSwizzler (~> 8.1) - - GoogleUtilities/MethodSwizzler (~> 8.1) - - GoogleUtilities/Network (~> 8.1) - - "GoogleUtilities/NSData+zlib (~> 8.1)" - - nanopb (~> 3.30910.0) - - FirebaseCore (11.15.0): - - FirebaseCoreInternal (~> 11.15.0) - - GoogleUtilities/Environment (~> 8.1) - - GoogleUtilities/Logger (~> 8.1) - - FirebaseCoreInternal (11.15.0): - - "GoogleUtilities/NSData+zlib (~> 8.1)" - - FirebaseInstallations (11.15.0): - - FirebaseCore (~> 11.15.0) - - GoogleUtilities/Environment (~> 8.1) - - GoogleUtilities/UserDefaults (~> 8.1) - - PromisesObjC (~> 2.4) - - FirebaseMessaging (11.15.0): - - FirebaseCore (~> 11.15.0) - - FirebaseInstallations (~> 11.0) - - GoogleDataTransport (~> 10.0) - - GoogleUtilities/AppDelegateSwizzler (~> 8.1) - - GoogleUtilities/Environment (~> 8.1) - - GoogleUtilities/Reachability (~> 8.1) - - GoogleUtilities/UserDefaults (~> 8.1) - - nanopb (~> 3.30910.0) - - FLAnimatedImage (1.0.17) - - Flutter (1.0.0) - - flutter_callkit_incoming (0.0.1): - - CryptoSwift - - Flutter - - flutter_inappwebview_ios (0.0.1): - - Flutter - - flutter_inappwebview_ios/Core (= 0.0.1) - - OrderedSet (~> 6.0.3) - - flutter_inappwebview_ios/Core (0.0.1): - - Flutter - - OrderedSet (~> 6.0.3) - - flutter_ios_voip_kit_karmm (0.8.0): - - Flutter - - flutter_local_notifications (0.0.1): - - Flutter - - flutter_nfc_kit (3.6.0): - - Flutter - - flutter_zoom_videosdk (0.0.1): - - Flutter - - ZoomVideoSDK/CptShare (= 2.1.10) - - ZoomVideoSDK/zm_annoter_dynamic (= 2.1.10) - - ZoomVideoSDK/zoomcml (= 2.1.10) - - ZoomVideoSDK/ZoomVideoSDK (= 2.1.10) - - fluttertoast (0.0.2): - - Flutter - - geolocator_apple (1.2.0): - - Flutter - - FlutterMacOS - - Google-Maps-iOS-Utils (5.0.0): - - GoogleMaps (~> 8.0) - - google_maps_flutter_ios (0.0.1): - - Flutter - - Google-Maps-iOS-Utils (< 7.0, >= 5.0) - - GoogleMaps (< 11.0, >= 8.4) - - GoogleAdsOnDeviceConversion (2.1.0): - - GoogleUtilities/Logger (~> 8.1) - - GoogleUtilities/Network (~> 8.1) - - nanopb (~> 3.30910.0) - - GoogleAppMeasurement/Core (11.15.0): - - GoogleUtilities/AppDelegateSwizzler (~> 8.1) - - GoogleUtilities/MethodSwizzler (~> 8.1) - - GoogleUtilities/Network (~> 8.1) - - "GoogleUtilities/NSData+zlib (~> 8.1)" - - nanopb (~> 3.30910.0) - - GoogleAppMeasurement/Default (11.15.0): - - GoogleAdsOnDeviceConversion (= 2.1.0) - - GoogleAppMeasurement/Core (= 11.15.0) - - GoogleAppMeasurement/IdentitySupport (= 11.15.0) - - GoogleUtilities/AppDelegateSwizzler (~> 8.1) - - GoogleUtilities/MethodSwizzler (~> 8.1) - - GoogleUtilities/Network (~> 8.1) - - "GoogleUtilities/NSData+zlib (~> 8.1)" - - nanopb (~> 3.30910.0) - - GoogleAppMeasurement/IdentitySupport (11.15.0): - - GoogleAppMeasurement/Core (= 11.15.0) - - GoogleUtilities/AppDelegateSwizzler (~> 8.1) - - GoogleUtilities/MethodSwizzler (~> 8.1) - - GoogleUtilities/Network (~> 8.1) - - "GoogleUtilities/NSData+zlib (~> 8.1)" - - nanopb (~> 3.30910.0) - - GoogleDataTransport (10.1.0): - - nanopb (~> 3.30910.0) - - PromisesObjC (~> 2.4) - - GoogleMaps (8.4.0): - - GoogleMaps/Maps (= 8.4.0) - - GoogleMaps/Base (8.4.0) - - GoogleMaps/Maps (8.4.0): - - GoogleMaps/Base - - GoogleUtilities/AppDelegateSwizzler (8.1.0): - - GoogleUtilities/Environment - - GoogleUtilities/Logger - - GoogleUtilities/Network - - GoogleUtilities/Privacy - - GoogleUtilities/Environment (8.1.0): - - GoogleUtilities/Privacy - - GoogleUtilities/Logger (8.1.0): - - GoogleUtilities/Environment - - GoogleUtilities/Privacy - - GoogleUtilities/MethodSwizzler (8.1.0): - - GoogleUtilities/Logger - - GoogleUtilities/Privacy - - GoogleUtilities/Network (8.1.0): - - GoogleUtilities/Logger - - "GoogleUtilities/NSData+zlib" - - GoogleUtilities/Privacy - - GoogleUtilities/Reachability - - "GoogleUtilities/NSData+zlib (8.1.0)": - - GoogleUtilities/Privacy - - GoogleUtilities/Privacy (8.1.0) - - GoogleUtilities/Reachability (8.1.0): - - GoogleUtilities/Logger - - GoogleUtilities/Privacy - - GoogleUtilities/UserDefaults (8.1.0): - - GoogleUtilities/Logger - - GoogleUtilities/Privacy - - health (13.1.4): - - Flutter - - image_picker_ios (0.0.1): - - Flutter - - just_audio (0.0.1): - - Flutter - - FlutterMacOS - - local_auth_darwin (0.0.1): - - Flutter - - FlutterMacOS - - location (0.0.1): - - Flutter - - manage_calendar_events (0.0.1): - - Flutter - - map_launcher (0.0.1): - - Flutter - - MapboxCommon (23.11.0) - - MapboxCoreMaps (10.19.1): - - MapboxCommon (~> 23.11) - - MapboxCoreNavigation (2.19.0): - - MapboxDirections (~> 2.14) - - MapboxNavigationNative (< 207.0.0, >= 206.0.1) - - MapboxDirections (2.14.3): - - Polyline (~> 5.0) - - Turf (~> 2.8.0) - - MapboxMaps (10.19.0): - - MapboxCommon (= 23.11.0) - - MapboxCoreMaps (= 10.19.1) - - MapboxMobileEvents (= 2.0.0) - - Turf (= 2.8.0) - - MapboxMobileEvents (2.0.0) - - MapboxNavigation (2.19.0): - - MapboxCoreNavigation (= 2.19.0) - - MapboxMaps (~> 10.18) - - MapboxSpeech (~> 2.0) - - Solar-dev (~> 3.0) - - MapboxNavigationNative (206.2.2): - - MapboxCommon (~> 23.10) - - MapboxSpeech (2.1.1) - - nanopb (3.30910.0): - - nanopb/decode (= 3.30910.0) - - nanopb/encode (= 3.30910.0) - - nanopb/decode (3.30910.0) - - nanopb/encode (3.30910.0) - - network_info_plus (0.0.1): - - Flutter - - open_filex (0.0.2): - - Flutter - - OrderedSet (6.0.3) - - package_info_plus (0.4.5): - - Flutter - - path_provider_foundation (0.0.1): - - Flutter - - FlutterMacOS - - PayFortSDK (3.2.1) - - permission_handler_apple (9.3.0): - - Flutter - - Polyline (5.1.0) - - PromisesObjC (2.4.0) - - SDWebImage (5.21.5): - - SDWebImage/Core (= 5.21.5) - - SDWebImage/Core (5.21.5) - - share_plus (0.0.1): - - Flutter - - shared_preferences_foundation (0.0.1): - - Flutter - - FlutterMacOS - - Solar-dev (3.0.1) - - sqflite_darwin (0.0.4): - - Flutter - - FlutterMacOS - - SwiftProtobuf (1.33.3) - - SwiftyGif (5.4.5) - - Turf (2.8.0) - - url_launcher_ios (0.0.1): - - Flutter - - video_player_avfoundation (0.0.1): - - Flutter - - FlutterMacOS - - wakelock_plus (0.0.1): - - Flutter - - webview_flutter_wkwebview (0.0.1): - - Flutter - - FlutterMacOS - - ZoomVideoSDK/CptShare (2.1.10) - - ZoomVideoSDK/zm_annoter_dynamic (2.1.10) - - ZoomVideoSDK/zoomcml (2.1.10) - - ZoomVideoSDK/ZoomVideoSDK (2.1.10) - -DEPENDENCIES: - - amazon_payfort (from `.symlinks/plugins/amazon_payfort/ios`) - - audio_session (from `.symlinks/plugins/audio_session/ios`) - - barcode_scan2 (from `.symlinks/plugins/barcode_scan2/ios`) - - connectivity_plus (from `.symlinks/plugins/connectivity_plus/ios`) - - device_calendar (from `.symlinks/plugins/device_calendar/ios`) - - device_calendar_plus_ios (from `.symlinks/plugins/device_calendar_plus_ios/ios`) - - device_info_plus (from `.symlinks/plugins/device_info_plus/ios`) - - file_picker (from `.symlinks/plugins/file_picker/ios`) - - firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`) - - firebase_core (from `.symlinks/plugins/firebase_core/ios`) - - firebase_messaging (from `.symlinks/plugins/firebase_messaging/ios`) - - FLAnimatedImage - - Flutter (from `Flutter`) - - flutter_callkit_incoming (from `.symlinks/plugins/flutter_callkit_incoming/ios`) - - flutter_inappwebview_ios (from `.symlinks/plugins/flutter_inappwebview_ios/ios`) - - flutter_ios_voip_kit_karmm (from `.symlinks/plugins/flutter_ios_voip_kit_karmm/ios`) - - flutter_local_notifications (from `.symlinks/plugins/flutter_local_notifications/ios`) - - flutter_nfc_kit (from `.symlinks/plugins/flutter_nfc_kit/ios`) - - flutter_zoom_videosdk (from `.symlinks/plugins/flutter_zoom_videosdk/ios`) - - fluttertoast (from `.symlinks/plugins/fluttertoast/ios`) - - geolocator_apple (from `.symlinks/plugins/geolocator_apple/darwin`) - - google_maps_flutter_ios (from `.symlinks/plugins/google_maps_flutter_ios/ios`) - - health (from `.symlinks/plugins/health/ios`) - - image_picker_ios (from `.symlinks/plugins/image_picker_ios/ios`) - - just_audio (from `.symlinks/plugins/just_audio/darwin`) - - local_auth_darwin (from `.symlinks/plugins/local_auth_darwin/darwin`) - - location (from `.symlinks/plugins/location/ios`) - - manage_calendar_events (from `.symlinks/plugins/manage_calendar_events/ios`) - - map_launcher (from `.symlinks/plugins/map_launcher/ios`) - - MapboxMaps (= 10.19.0) - - MapboxNavigation (= 2.19.0) - - network_info_plus (from `.symlinks/plugins/network_info_plus/ios`) - - open_filex (from `.symlinks/plugins/open_filex/ios`) - - package_info_plus (from `.symlinks/plugins/package_info_plus/ios`) - - path_provider_foundation (from `.symlinks/plugins/path_provider_foundation/darwin`) - - permission_handler_apple (from `.symlinks/plugins/permission_handler_apple/ios`) - - share_plus (from `.symlinks/plugins/share_plus/ios`) - - shared_preferences_foundation (from `.symlinks/plugins/shared_preferences_foundation/darwin`) - - sqflite_darwin (from `.symlinks/plugins/sqflite_darwin/darwin`) - - url_launcher_ios (from `.symlinks/plugins/url_launcher_ios/ios`) - - video_player_avfoundation (from `.symlinks/plugins/video_player_avfoundation/darwin`) - - wakelock_plus (from `.symlinks/plugins/wakelock_plus/ios`) - - webview_flutter_wkwebview (from `.symlinks/plugins/webview_flutter_wkwebview/darwin`) - -SPEC REPOS: - trunk: - - CryptoSwift - - DKImagePickerController - - DKPhotoGallery - - Firebase - - FirebaseAnalytics - - FirebaseCore - - FirebaseCoreInternal - - FirebaseInstallations - - FirebaseMessaging - - FLAnimatedImage - - Google-Maps-iOS-Utils - - GoogleAdsOnDeviceConversion - - GoogleAppMeasurement - - GoogleDataTransport - - GoogleMaps - - GoogleUtilities - - MapboxCommon - - MapboxCoreMaps - - MapboxCoreNavigation - - MapboxDirections - - MapboxMaps - - MapboxMobileEvents - - MapboxNavigation - - MapboxNavigationNative - - MapboxSpeech - - nanopb - - OrderedSet - - PayFortSDK - - Polyline - - PromisesObjC - - SDWebImage - - Solar-dev - - SwiftProtobuf - - SwiftyGif - - Turf - - ZoomVideoSDK - -EXTERNAL SOURCES: - amazon_payfort: - :path: ".symlinks/plugins/amazon_payfort/ios" - audio_session: - :path: ".symlinks/plugins/audio_session/ios" - barcode_scan2: - :path: ".symlinks/plugins/barcode_scan2/ios" - connectivity_plus: - :path: ".symlinks/plugins/connectivity_plus/ios" - device_calendar: - :path: ".symlinks/plugins/device_calendar/ios" - device_calendar_plus_ios: - :path: ".symlinks/plugins/device_calendar_plus_ios/ios" - device_info_plus: - :path: ".symlinks/plugins/device_info_plus/ios" - file_picker: - :path: ".symlinks/plugins/file_picker/ios" - firebase_analytics: - :path: ".symlinks/plugins/firebase_analytics/ios" - firebase_core: - :path: ".symlinks/plugins/firebase_core/ios" - firebase_messaging: - :path: ".symlinks/plugins/firebase_messaging/ios" - Flutter: - :path: Flutter - flutter_callkit_incoming: - :path: ".symlinks/plugins/flutter_callkit_incoming/ios" - flutter_inappwebview_ios: - :path: ".symlinks/plugins/flutter_inappwebview_ios/ios" - flutter_ios_voip_kit_karmm: - :path: ".symlinks/plugins/flutter_ios_voip_kit_karmm/ios" - flutter_local_notifications: - :path: ".symlinks/plugins/flutter_local_notifications/ios" - flutter_nfc_kit: - :path: ".symlinks/plugins/flutter_nfc_kit/ios" - flutter_zoom_videosdk: - :path: ".symlinks/plugins/flutter_zoom_videosdk/ios" - fluttertoast: - :path: ".symlinks/plugins/fluttertoast/ios" - geolocator_apple: - :path: ".symlinks/plugins/geolocator_apple/darwin" - google_maps_flutter_ios: - :path: ".symlinks/plugins/google_maps_flutter_ios/ios" - health: - :path: ".symlinks/plugins/health/ios" - image_picker_ios: - :path: ".symlinks/plugins/image_picker_ios/ios" - just_audio: - :path: ".symlinks/plugins/just_audio/darwin" - local_auth_darwin: - :path: ".symlinks/plugins/local_auth_darwin/darwin" - location: - :path: ".symlinks/plugins/location/ios" - manage_calendar_events: - :path: ".symlinks/plugins/manage_calendar_events/ios" - map_launcher: - :path: ".symlinks/plugins/map_launcher/ios" - network_info_plus: - :path: ".symlinks/plugins/network_info_plus/ios" - open_filex: - :path: ".symlinks/plugins/open_filex/ios" - package_info_plus: - :path: ".symlinks/plugins/package_info_plus/ios" - path_provider_foundation: - :path: ".symlinks/plugins/path_provider_foundation/darwin" - permission_handler_apple: - :path: ".symlinks/plugins/permission_handler_apple/ios" - share_plus: - :path: ".symlinks/plugins/share_plus/ios" - shared_preferences_foundation: - :path: ".symlinks/plugins/shared_preferences_foundation/darwin" - sqflite_darwin: - :path: ".symlinks/plugins/sqflite_darwin/darwin" - url_launcher_ios: - :path: ".symlinks/plugins/url_launcher_ios/ios" - video_player_avfoundation: - :path: ".symlinks/plugins/video_player_avfoundation/darwin" - wakelock_plus: - :path: ".symlinks/plugins/wakelock_plus/ios" - webview_flutter_wkwebview: - :path: ".symlinks/plugins/webview_flutter_wkwebview/darwin" - -SPEC CHECKSUMS: - amazon_payfort: 4ad7a3413acc1c4c4022117a80d18fee23c572d3 - audio_session: 9bb7f6c970f21241b19f5a3658097ae459681ba0 - barcode_scan2: 4e4b850b112f4e29017833e4715f36161f987966 - connectivity_plus: cb623214f4e1f6ef8fe7403d580fdad517d2f7dd - CryptoSwift: e64e11850ede528a02a0f3e768cec8e9d92ecb90 - device_calendar: b55b2c5406cfba45c95a59f9059156daee1f74ed - device_calendar_plus_ios: 2c04ad7643c6e697438216e33693b84e8ca45ded - device_info_plus: 21fcca2080fbcd348be798aa36c3e5ed849eefbe - DKImagePickerController: 946cec48c7873164274ecc4624d19e3da4c1ef3c - DKPhotoGallery: b3834fecb755ee09a593d7c9e389d8b5d6deed60 - file_picker: a0560bc09d61de87f12d246fc47d2119e6ef37be - Firebase: d99ac19b909cd2c548339c2241ecd0d1599ab02e - firebase_analytics: 0e25ca1d4001ccedd40b4e5b74c0ec34e18f6425 - firebase_core: 995454a784ff288be5689b796deb9e9fa3601818 - firebase_messaging: f4a41dd102ac18b840eba3f39d67e77922d3f707 - FirebaseAnalytics: 6433dfd311ba78084fc93bdfc145e8cb75740eae - FirebaseCore: efb3893e5b94f32b86e331e3bd6dadf18b66568e - FirebaseCoreInternal: 9afa45b1159304c963da48addb78275ef701c6b4 - FirebaseInstallations: 317270fec08a5d418fdbc8429282238cab3ac843 - FirebaseMessaging: 3b26e2cee503815e01c3701236b020aa9b576f09 - FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b - Flutter: cabc95a1d2626b1b06e7179b784ebcf0c0cde467 - flutter_callkit_incoming: cb8138af67cda6dd981f7101a5d709003af21502 - flutter_inappwebview_ios: b89ba3482b96fb25e00c967aae065701b66e9b99 - flutter_ios_voip_kit_karmm: 371663476722afb631d5a13a39dee74c56c1abd0 - flutter_local_notifications: a5a732f069baa862e728d839dd2ebb904737effb - flutter_nfc_kit: e1b71583eafd2c9650bc86844a7f2d185fb414f6 - flutter_zoom_videosdk: 0f59e71685a03ddb0783ecc43bf3155b8599a7f5 - fluttertoast: 2c67e14dce98bbdb200df9e1acf610d7a6264ea1 - geolocator_apple: ab36aa0e8b7d7a2d7639b3b4e48308394e8cef5e - Google-Maps-iOS-Utils: 66d6de12be1ce6d3742a54661e7a79cb317a9321 - google_maps_flutter_ios: 3213e1e5f5588b6134935cb8fc59acb4e6d88377 - GoogleAdsOnDeviceConversion: 2be6297a4f048459e0ae17fad9bfd2844e10cf64 - GoogleAppMeasurement: 700dce7541804bec33db590a5c496b663fbe2539 - GoogleDataTransport: aae35b7ea0c09004c3797d53c8c41f66f219d6a7 - GoogleMaps: 8939898920281c649150e0af74aa291c60f2e77d - GoogleUtilities: 00c88b9a86066ef77f0da2fab05f65d7768ed8e1 - health: 32d2fbc7f26f9a2388d1a514ce168adbfa5bda65 - image_picker_ios: e0ece4aa2a75771a7de3fa735d26d90817041326 - just_audio: 4e391f57b79cad2b0674030a00453ca5ce817eed - local_auth_darwin: c3ee6cce0a8d56be34c8ccb66ba31f7f180aaebb - location: 155caecf9da4f280ab5fe4a55f94ceccfab838f8 - manage_calendar_events: fe1541069431af035ced925ebd9def8b4b271254 - map_launcher: 8051ad5783913cafce93f2414c6858f2904fd8df - MapboxCommon: 119f3759f7dc9457f0695848108ab323eb643cb4 - MapboxCoreMaps: ca17f67baced23f8c952166ac6314c35bad3f66c - MapboxCoreNavigation: 3be9990fae3ed732a101001746d0e3b4234ec023 - MapboxDirections: d9ad8452e8927d95ed21e35f733834dbca7e0eb1 - MapboxMaps: b7f29ec7c33f7dc6d2947c1148edce6db81db9a7 - MapboxMobileEvents: d044b9edbe0ec7df60f6c2c9634fe9a7f449266b - MapboxNavigation: da9cf3d773ed5b0fa0fb388fccdaa117ee681f31 - MapboxNavigationNative: 629e359f3d2590acd1ebbacaaf99e1a80ee57e42 - MapboxSpeech: cd25ef99c3a3d2e0da72620ff558276ea5991a77 - nanopb: fad817b59e0457d11a5dfbde799381cd727c1275 - network_info_plus: cf61925ab5205dce05a4f0895989afdb6aade5fc - open_filex: 432f3cd11432da3e39f47fcc0df2b1603854eff1 - OrderedSet: e539b66b644ff081c73a262d24ad552a69be3a94 - package_info_plus: af8e2ca6888548050f16fa2f1938db7b5a5df499 - path_provider_foundation: bb55f6dbba17d0dccd6737fe6f7f34fbd0376880 - PayFortSDK: 233eabe9a45601fdbeac67fa6e5aae46ed8faf82 - permission_handler_apple: 4ed2196e43d0651e8ff7ca3483a069d469701f2d - Polyline: 2a1f29f87f8d9b7de868940f4f76deb8c678a5b1 - PromisesObjC: f5707f49cb48b9636751c5b2e7d227e43fba9f47 - SDWebImage: e9c98383c7572d713c1a0d7dd2783b10599b9838 - share_plus: 50da8cb520a8f0f65671c6c6a99b3617ed10a58a - shared_preferences_foundation: 7036424c3d8ec98dfe75ff1667cb0cd531ec82bb - Solar-dev: 4612dc9878b9fed2667d23b327f1d4e54e16e8d0 - sqflite_darwin: 20b2a3a3b70e43edae938624ce550a3cbf66a3d0 - SwiftProtobuf: e1b437c8e31a4c5577b643249a0bb62ed4f02153 - SwiftyGif: 706c60cf65fa2bc5ee0313beece843c8eb8194d4 - Turf: aa2ede4298009639d10db36aba1a7ebaad072a5e - url_launcher_ios: 7a95fa5b60cc718a708b8f2966718e93db0cef1b - video_player_avfoundation: dd410b52df6d2466a42d28550e33e4146928280a - wakelock_plus: e29112ab3ef0b318e58cfa5c32326458be66b556 - webview_flutter_wkwebview: 8ebf4fded22593026f7dbff1fbff31ea98573c8d - ZoomVideoSDK: 94e939820e57a075c5e712559f927017da0de06a - -PODFILE CHECKSUM: 8235407385ddd5904afc2563d65406117a51993e - -COCOAPODS: 1.16.2 diff --git a/ios/Runner.xcodeproj/project.pbxproj b/ios/Runner.xcodeproj/project.pbxproj index e031a976..fdc3bdfa 100644 --- a/ios/Runner.xcodeproj/project.pbxproj +++ b/ios/Runner.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 1498D2341E8E89220040F4C2 /* GeneratedPluginRegistrant.m in Sources */ = {isa = PBXBuildFile; fileRef = 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */; }; + 1587365701FF0D2AAAFED0D8 /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A83C76CFF9D3F92EDE3B22B4 /* Pods_Runner.framework */; }; 331C808B294A63AB00263BE5 /* RunnerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331C807B294A618700263BE5 /* RunnerTests.swift */; }; 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */ = {isa = PBXBuildFile; fileRef = 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */; }; 478CFA942E638C8E0064F3D7 /* GoogleService-Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 478CFA932E638C8E0064F3D7 /* GoogleService-Info.plist */; }; @@ -18,18 +19,16 @@ 61243B562EC5FA3700D46FA0 /* PenguinNavigator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61243B432EC5FA3700D46FA0 /* PenguinNavigator.swift */; }; 61243B572EC5FA3700D46FA0 /* PenguinViewFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61243B462EC5FA3700D46FA0 /* PenguinViewFactory.swift */; }; 74858FAF1ED2DC5600515810 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74858FAE1ED2DC5600515810 /* AppDelegate.swift */; }; - 765A5A8C2F35CD8B0003FF7D /* Penguin.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 765A5A802F35CD730003FF7D /* Penguin.xcframework */; }; - 765A5A8D2F35CD8B0003FF7D /* Penguin.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 765A5A802F35CD730003FF7D /* Penguin.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 765A5A8E2F35CD8B0003FF7D /* PenguinINRenderer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 765A5A812F35CD730003FF7D /* PenguinINRenderer.xcframework */; }; - 765A5A8F2F35CD8B0003FF7D /* PenguinINRenderer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 765A5A812F35CD730003FF7D /* PenguinINRenderer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; - 765A5A902F35CD8B0003FF7D /* PenNavUI.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 765A5A822F35CD730003FF7D /* PenNavUI.xcframework */; }; - 765A5A912F35CD8B0003FF7D /* PenNavUI.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 765A5A822F35CD730003FF7D /* PenNavUI.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 76AA18AE2F3B2A4D00DC8DFC /* ring_30Sec.caf in Resources */ = {isa = PBXBuildFile; fileRef = 76AA18AC2F3B2A4D00DC8DFC /* ring_30Sec.caf */; }; - 76AA18AF2F3B2A4D00DC8DFC /* ring_30Sec.mp3 in Resources */ = {isa = PBXBuildFile; fileRef = 76AA18AD2F3B2A4D00DC8DFC /* ring_30Sec.mp3 */; }; + 76B1D2512F91BF8000DBBD1B /* Penguin.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76B1D24E2F91BF8000DBBD1B /* Penguin.xcframework */; }; + 76B1D2522F91BF8000DBBD1B /* Penguin.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 76B1D24E2F91BF8000DBBD1B /* Penguin.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 76B1D2532F91BF8000DBBD1B /* PenguinINRenderer.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76B1D24F2F91BF8000DBBD1B /* PenguinINRenderer.xcframework */; }; + 76B1D2542F91BF8000DBBD1B /* PenguinINRenderer.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 76B1D24F2F91BF8000DBBD1B /* PenguinINRenderer.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; + 76B1D2552F91BF8000DBBD1B /* PenNavUI.xcframework in Frameworks */ = {isa = PBXBuildFile; fileRef = 76B1D2502F91BF8000DBBD1B /* PenNavUI.xcframework */; }; + 76B1D2562F91BF8000DBBD1B /* PenNavUI.xcframework in Embed Frameworks */ = {isa = PBXBuildFile; fileRef = 76B1D2502F91BF8000DBBD1B /* PenNavUI.xcframework */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; }; 97C146FC1CF9000F007C117D /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FA1CF9000F007C117D /* Main.storyboard */; }; 97C146FE1CF9000F007C117D /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FD1CF9000F007C117D /* Assets.xcassets */; }; 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 97C146FF1CF9000F007C117D /* LaunchScreen.storyboard */; }; - DE1EF78253E64BE86845D2CC /* Pods_Runner.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D562310E31D1DDEFA02A6C12 /* Pods_Runner.framework */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -49,9 +48,9 @@ dstPath = ""; dstSubfolderSpec = 10; files = ( - 765A5A8F2F35CD8B0003FF7D /* PenguinINRenderer.xcframework in Embed Frameworks */, - 765A5A8D2F35CD8B0003FF7D /* Penguin.xcframework in Embed Frameworks */, - 765A5A912F35CD8B0003FF7D /* PenNavUI.xcframework in Embed Frameworks */, + 76B1D2542F91BF8000DBBD1B /* PenguinINRenderer.xcframework in Embed Frameworks */, + 76B1D2522F91BF8000DBBD1B /* Penguin.xcframework in Embed Frameworks */, + 76B1D2562F91BF8000DBBD1B /* PenNavUI.xcframework in Embed Frameworks */, ); name = "Embed Frameworks"; runOnlyForDeploymentPostprocessing = 0; @@ -59,11 +58,13 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 05E1B2A0E6844572ADA81174 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; 1498D2321E8E86230040F4C2 /* GeneratedPluginRegistrant.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = GeneratedPluginRegistrant.h; sourceTree = ""; }; 1498D2331E8E89220040F4C2 /* GeneratedPluginRegistrant.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GeneratedPluginRegistrant.m; sourceTree = ""; }; 331C807B294A618700263BE5 /* RunnerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RunnerTests.swift; sourceTree = ""; }; 331C8081294A63A400263BE5 /* RunnerTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = RunnerTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; 3B3967151E833CAA004F5970 /* AppFrameworkInfo.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = AppFrameworkInfo.plist; path = Flutter/AppFrameworkInfo.plist; sourceTree = ""; }; + 3EAE1F31D8D0AA94CA6C11EB /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; 478CFA932E638C8E0064F3D7 /* GoogleService-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "GoogleService-Info.plist"; sourceTree = ""; }; 478CFA952E6E20A60064F3D7 /* Runner.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Runner.entitlements; sourceTree = ""; }; 61243B3D2EC5FA3700D46FA0 /* HMGPenguinInPlatformBridge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HMGPenguinInPlatformBridge.swift; sourceTree = ""; }; @@ -74,15 +75,13 @@ 61243B462EC5FA3700D46FA0 /* PenguinViewFactory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PenguinViewFactory.swift; sourceTree = ""; }; 74858FAD1ED2DC5600515810 /* Runner-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Runner-Bridging-Header.h"; sourceTree = ""; }; 74858FAE1ED2DC5600515810 /* AppDelegate.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; - 7595037DD52211B91157B0F3 /* Pods-Runner.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.release.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.release.xcconfig"; sourceTree = ""; }; - 765A5A802F35CD730003FF7D /* Penguin.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = Penguin.xcframework; sourceTree = ""; }; - 765A5A812F35CD730003FF7D /* PenguinINRenderer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = PenguinINRenderer.xcframework; sourceTree = ""; }; - 765A5A822F35CD730003FF7D /* PenNavUI.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; path = PenNavUI.xcframework; sourceTree = ""; }; 769C9BF82E6F106D009F68A9 /* RunnerDebug.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = RunnerDebug.entitlements; sourceTree = ""; }; 76AA18AC2F3B2A4D00DC8DFC /* ring_30Sec.caf */ = {isa = PBXFileReference; lastKnownFileType = file; path = ring_30Sec.caf; sourceTree = ""; }; - 76AA18AD2F3B2A4D00DC8DFC /* ring_30Sec.mp3 */ = {isa = PBXFileReference; lastKnownFileType = audio.mp3; path = ring_30Sec.mp3; sourceTree = ""; }; + 76B1D24E2F91BF8000DBBD1B /* Penguin.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = Penguin.xcframework; path = Frameworks/Penguin.xcframework; sourceTree = ""; }; + 76B1D24F2F91BF8000DBBD1B /* PenguinINRenderer.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PenguinINRenderer.xcframework; path = Frameworks/PenguinINRenderer.xcframework; sourceTree = ""; }; + 76B1D2502F91BF8000DBBD1B /* PenNavUI.xcframework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcframework; name = PenNavUI.xcframework; path = Frameworks/PenNavUI.xcframework; sourceTree = ""; }; 7AFA3C8E1D35360C0083082E /* Release.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; name = Release.xcconfig; path = Flutter/Release.xcconfig; sourceTree = ""; }; - 8E12CEEB8E334EE22D5259D7 /* Pods-Runner.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.debug.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.debug.xcconfig"; sourceTree = ""; }; + 7BEF44ABFEF585D64D3F266C /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; 9740EEB21CF90195004384FC /* Debug.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Debug.xcconfig; path = Flutter/Debug.xcconfig; sourceTree = ""; }; 9740EEB31CF90195004384FC /* Generated.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; name = Generated.xcconfig; path = Flutter/Generated.xcconfig; sourceTree = ""; }; 97C146EE1CF9000F007C117D /* Runner.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Runner.app; sourceTree = BUILT_PRODUCTS_DIR; }; @@ -90,8 +89,7 @@ 97C146FD1CF9000F007C117D /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 97C147001CF9000F007C117D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 97C147021CF9000F007C117D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; - D562310E31D1DDEFA02A6C12 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - D6BB17A036DF7FCE75271203 /* Pods-Runner.profile.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Runner.profile.xcconfig"; path = "Target Support Files/Pods-Runner/Pods-Runner.profile.xcconfig"; sourceTree = ""; }; + A83C76CFF9D3F92EDE3B22B4 /* Pods_Runner.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Runner.framework; sourceTree = BUILT_PRODUCTS_DIR; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -99,9 +97,9 @@ isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 765A5A8C2F35CD8B0003FF7D /* Penguin.xcframework in Frameworks */, - 765A5A902F35CD8B0003FF7D /* PenNavUI.xcframework in Frameworks */, - 765A5A8E2F35CD8B0003FF7D /* PenguinINRenderer.xcframework in Frameworks */, + 76B1D2512F91BF8000DBBD1B /* Penguin.xcframework in Frameworks */, + 76B1D2552F91BF8000DBBD1B /* PenNavUI.xcframework in Frameworks */, + 76B1D2532F91BF8000DBBD1B /* PenguinINRenderer.xcframework in Frameworks */, DE1EF78253E64BE86845D2CC /* Pods_Runner.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; @@ -140,10 +138,10 @@ 766D8CB22EC60BE600D05E07 /* Frameworks */ = { isa = PBXGroup; children = ( - 765A5A802F35CD730003FF7D /* Penguin.xcframework */, - 765A5A812F35CD730003FF7D /* PenguinINRenderer.xcframework */, - 765A5A822F35CD730003FF7D /* PenNavUI.xcframework */, - D562310E31D1DDEFA02A6C12 /* Pods_Runner.framework */, + 76B1D24E2F91BF8000DBBD1B /* Penguin.xcframework */, + 76B1D24F2F91BF8000DBBD1B /* PenguinINRenderer.xcframework */, + 76B1D2502F91BF8000DBBD1B /* PenNavUI.xcframework */, + A83C76CFF9D3F92EDE3B22B4 /* Pods_Runner.framework */, ); name = Frameworks; sourceTree = ""; @@ -151,9 +149,9 @@ 79DD2093A1D9674C94359FC8 /* Pods */ = { isa = PBXGroup; children = ( - 8E12CEEB8E334EE22D5259D7 /* Pods-Runner.debug.xcconfig */, - 7595037DD52211B91157B0F3 /* Pods-Runner.release.xcconfig */, - D6BB17A036DF7FCE75271203 /* Pods-Runner.profile.xcconfig */, + 3EAE1F31D8D0AA94CA6C11EB /* Pods-Runner.debug.xcconfig */, + 05E1B2A0E6844572ADA81174 /* Pods-Runner.release.xcconfig */, + 7BEF44ABFEF585D64D3F266C /* Pods-Runner.profile.xcconfig */, ); path = Pods; sourceTree = ""; @@ -194,7 +192,6 @@ isa = PBXGroup; children = ( 76AA18AC2F3B2A4D00DC8DFC /* ring_30Sec.caf */, - 76AA18AD2F3B2A4D00DC8DFC /* ring_30Sec.mp3 */, 61243B412EC5FA3700D46FA0 /* Helper */, 61243B472EC5FA3700D46FA0 /* Penguin */, 769C9BF82E6F106D009F68A9 /* RunnerDebug.entitlements */, @@ -236,15 +233,15 @@ isa = PBXNativeTarget; buildConfigurationList = 97C147051CF9000F007C117D /* Build configuration list for PBXNativeTarget "Runner" */; buildPhases = ( - BFED6CCFE59BB148875A533B /* [CP] Check Pods Manifest.lock */, + EA10FC42B68E41E75A052FAA /* [CP] Check Pods Manifest.lock */, 9740EEB61CF901F6004384FC /* Run Script */, 97C146EA1CF9000F007C117D /* Sources */, 97C146EB1CF9000F007C117D /* Frameworks */, 97C146EC1CF9000F007C117D /* Resources */, - 8372B02399CDF54531650AD4 /* [CP] Embed Pods Frameworks */, - 81DE7C26F41956799E954FCE /* [CP] Copy Pods Resources */, 765A5A922F35CD8B0003FF7D /* Embed Frameworks */, 3B06AD1E1E4923F5004D2608 /* Thin Binary */, + 5D78F615DF2D966539B34DE2 /* [CP] Embed Pods Frameworks */, + 4AA9AE39AD56A64A1F16E548 /* [CP] Copy Pods Resources */, ); buildRules = ( ); @@ -307,7 +304,6 @@ buildActionMask = 2147483647; files = ( 76AA18AE2F3B2A4D00DC8DFC /* ring_30Sec.caf in Resources */, - 76AA18AF2F3B2A4D00DC8DFC /* ring_30Sec.mp3 in Resources */, 97C147011CF9000F007C117D /* LaunchScreen.storyboard in Resources */, 3B3967161E833CAA004F5970 /* AppFrameworkInfo.plist in Resources */, 478CFA942E638C8E0064F3D7 /* GoogleService-Info.plist in Resources */, @@ -335,7 +331,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" embed_and_thin"; }; - 81DE7C26F41956799E954FCE /* [CP] Copy Pods Resources */ = { + 4AA9AE39AD56A64A1F16E548 /* [CP] Copy Pods Resources */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -352,7 +348,7 @@ shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-Runner/Pods-Runner-resources.sh\"\n"; showEnvVarsInLog = 0; }; - 8372B02399CDF54531650AD4 /* [CP] Embed Pods Frameworks */ = { + 5D78F615DF2D966539B34DE2 /* [CP] Embed Pods Frameworks */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -384,7 +380,7 @@ shellPath = /bin/sh; shellScript = "/bin/sh \"$FLUTTER_ROOT/packages/flutter_tools/bin/xcode_backend.sh\" build"; }; - BFED6CCFE59BB148875A533B /* [CP] Check Pods Manifest.lock */ = { + EA10FC42B68E41E75A052FAA /* [CP] Check Pods Manifest.lock */ = { isa = PBXShellScriptBuildPhase; buildActionMask = 2147483647; files = ( @@ -523,16 +519,17 @@ CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 3; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_TEAM = 3A359E86ZF; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "Dr. Alhabib"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 0.0.1; + MARKETING_VERSION = 0.0.5; PRODUCT_BUNDLE_IDENTIFIER = com.cloudsolutions.HMGPatientApp; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -709,16 +706,17 @@ CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 3; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_TEAM = 3A359E86ZF; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "Dr. Alhabib"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 0.0.1; + MARKETING_VERSION = 0.0.5; PRODUCT_BUNDLE_IDENTIFIER = com.cloudsolutions.HMGPatientApp; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; @@ -738,16 +736,17 @@ CODE_SIGN_ENTITLEMENTS = Runner/Runner.entitlements; CODE_SIGN_IDENTITY = "Apple Development"; CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 3; + CURRENT_PROJECT_VERSION = 2; DEVELOPMENT_TEAM = 3A359E86ZF; ENABLE_BITCODE = NO; INFOPLIST_FILE = Runner/Info.plist; + INFOPLIST_KEY_CFBundleDisplayName = "Dr. Alhabib"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", ); - MARKETING_VERSION = 0.0.1; + MARKETING_VERSION = 0.0.5; PRODUCT_BUNDLE_IDENTIFIER = com.cloudsolutions.HMGPatientApp; PRODUCT_NAME = "$(TARGET_NAME)"; PROVISIONING_PROFILE_SPECIFIER = ""; diff --git a/ios/Runner/AppDelegate.swift b/ios/Runner/AppDelegate.swift index 308891a7..dc11bbed 100644 --- a/ios/Runner/AppDelegate.swift +++ b/ios/Runner/AppDelegate.swift @@ -16,11 +16,9 @@ import GoogleMaps return super.application(application, didFinishLaunchingWithOptions: launchOptions) } func initializePlatformChannels(){ -// if let mainViewController = window?.rootViewController as? FlutterViewController{ // platform initialization suppose to be in foreground -// -//// HMGPenguinInPlatformBridge.initialize(flutterViewController: mainViewController) -// -// } + if let mainViewController = window?.rootViewController as? FlutterViewController{ // platform initialization suppose to be in foreground + HMGPenguinInPlatformBridge.initialize(flutterViewController: mainViewController) + } } override func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken:Data){ // Messaging.messaging().apnsToken = deviceToken diff --git a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json index 1eb27a20..65b74d7e 100644 --- a/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/ios/Runner/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,128 +1 @@ -{ - "images" : [ - { - "filename" : "Icon-App-20x20@2x.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "20x20" - }, - { - "filename" : "Icon-App-20x20@3x.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "20x20" - }, - { - "filename" : "Icon-App-29x29@1x.png", - "idiom" : "iphone", - "scale" : "1x", - "size" : "29x29" - }, - { - "filename" : "Icon-App-29x29@2x.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "29x29" - }, - { - "filename" : "Icon-App-29x29@3x.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "29x29" - }, - { - "filename" : "Icon-App-40x40@2x.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "40x40" - }, - { - "filename" : "Icon-App-40x40@3x.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "40x40" - }, - { - "filename" : "Icon-App-60x60@2x.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "60x60" - }, - { - "filename" : "Icon-App-60x60@3x.png", - "idiom" : "iphone", - "scale" : "3x", - "size" : "60x60" - }, - { - "filename" : "Icon-App-20x20@1x.png", - "idiom" : "ipad", - "scale" : "1x", - "size" : "20x20" - }, - { - "filename" : "Icon-App-20x20@2x.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "20x20" - }, - { - "filename" : "Icon-App-29x29@1x.png", - "idiom" : "ipad", - "scale" : "1x", - "size" : "29x29" - }, - { - "filename" : "Icon-App-29x29@2x.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "29x29" - }, - { - "filename" : "Icon-App-40x40@1x.png", - "idiom" : "ipad", - "scale" : "1x", - "size" : "40x40" - }, - { - "filename" : "Icon-App-40x40@2x.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "40x40" - }, - { - "filename" : "Icon-App-76x76@1x.png", - "idiom" : "ipad", - "scale" : "1x", - "size" : "76x76" - }, - { - "filename" : "Icon-App-76x76@2x.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "76x76" - }, - { - "filename" : "Icon-App-83.5x83.5@2x.png", - "idiom" : "ipad", - "scale" : "2x", - "size" : "83.5x83.5" - }, - { - "filename" : "icon.jpg", - "idiom" : "ios-marketing", - "scale" : "1x", - "size" : "1024x1024" - }, - { - "filename" : "Icon-App-76x76@2x.png", - "idiom" : "iphone", - "scale" : "2x", - "size" : "76x76" - } - ], - "info" : { - "author" : "xcode", - "version" : 1 - } -} +{"images":[{"size":"60x60","expected-size":"180","filename":"180.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"40x40","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"60x60","expected-size":"120","filename":"120.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"57x57","expected-size":"57","filename":"57.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"1x"},{"size":"29x29","expected-size":"87","filename":"87.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"57x57","expected-size":"114","filename":"114.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"2x"},{"size":"20x20","expected-size":"60","filename":"60.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"iphone","scale":"3x"},{"size":"1024x1024","filename":"1024.png","expected-size":"1024","idiom":"ios-marketing","folder":"Assets.xcassets/AppIcon.appiconset/","scale":"1x"},{"size":"40x40","expected-size":"80","filename":"80.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"72x72","expected-size":"72","filename":"72.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"76x76","expected-size":"152","filename":"152.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"50x50","expected-size":"100","filename":"100.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"29x29","expected-size":"58","filename":"58.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"76x76","expected-size":"76","filename":"76.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"29x29","expected-size":"29","filename":"29.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"50x50","expected-size":"50","filename":"50.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"72x72","expected-size":"144","filename":"144.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"40x40","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"83.5x83.5","expected-size":"167","filename":"167.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"},{"size":"20x20","expected-size":"20","filename":"20.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"1x"},{"size":"20x20","expected-size":"40","filename":"40.png","folder":"Assets.xcassets/AppIcon.appiconset/","idiom":"ipad","scale":"2x"}]} \ No newline at end of file diff --git a/ios/Runner/Info.plist b/ios/Runner/Info.plist index 9c805ac5..5b3b2681 100644 --- a/ios/Runner/Info.plist +++ b/ios/Runner/Info.plist @@ -13,7 +13,7 @@ CFBundleInfoDictionaryVersion 6.0 CFBundleName - Dr. Alhabib Beta + Dr. Alhabib CFBundlePackageType APPL CFBundleShortVersionString @@ -89,6 +89,8 @@ This app requires motion detection access to function properly. NSPhotoLibraryUsageDescription This app requires photo library access to select image as document & upload it. + NSPhotoLibraryAddUsageDescription + This app requires photo library access to upload profile picture and documents. NSRemindersUsageDescription This app requires calendar access to set reminders for Virtual & Normal Appointments. NSSpeechRecognitionUsageDescription @@ -101,7 +103,6 @@ audio fetch - location remote-notification voip diff --git a/ios/Runner/ring_30Sec.mp3 b/ios/Runner/ring_30Sec.mp3 new file mode 100644 index 00000000..b5bb4b88 Binary files /dev/null and b/ios/Runner/ring_30Sec.mp3 differ diff --git a/lib/core/api/api_client.dart b/lib/core/api/api_client.dart index 116e0733..3bfbf6cb 100644 --- a/lib/core/api/api_client.dart +++ b/lib/core/api/api_client.dart @@ -1,21 +1,27 @@ import 'dart:async'; import 'dart:convert'; import 'dart:developer'; +import 'dart:io'; +import 'package:clarity_flutter/clarity_flutter.dart'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/api/http_client_manager.dart'; import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/home/app_update_page.dart'; import 'package:hmg_patient_app_new/routes/app_routes.dart'; import 'package:hmg_patient_app_new/services/analytics/analytics_service.dart'; +import 'package:hmg_patient_app_new/services/app_lifecycle_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:http/http.dart' as http; -import '../exceptions/api_failure.dart'; - abstract class ApiClient { static final NavigationService _navigationService = getIt.get(); @@ -86,10 +92,13 @@ abstract class ApiClient { class ApiClientImp implements ApiClient { final _analytics = getIt(); final AppState _appState; + final HttpClientManager _httpClient; ApiClientImp({ required AppState appState, - }) : _appState = appState; + HttpClientManager? httpClient, + }) : _appState = appState, + _httpClient = httpClient ?? HttpClientManager(lifecycleService: getIt()); @override post( @@ -172,7 +181,9 @@ class ApiClientImp implements ApiClient { // body['VersionID'] = ApiConsts.appVersionID.toString(); if (!isExternal) { body['VersionID'] = ApiConsts.appVersionID.toString(); - body['Channel'] = ApiConsts.appChannelId.toString(); + if (!isRCService) { + body['Channel'] = ApiConsts.appChannelId.toString(); + } body['IPAdress'] = ApiConsts.appIpAddress; body['generalid'] = ApiConsts.appGeneralId; @@ -184,15 +195,15 @@ class ApiClientImp implements ApiClient { body[_appState.isAuthenticated ? 'TokenID' : 'LogInTokenID'] = _appState.appAuthToken; } - if (url.contains("HMGAI_Lab_Analyze_Orders_API")) { - url = "https://uat.hmgwebservices.com/Services/Patients.svc/REST/HMGAI_Lab_Analyze_Orders_API"; - body['TokenID'] = "@dm!n"; - } - - if (url.contains("HMGAI_Lab_Analyzer_API")) { - url = "https://uat.hmgwebservices.com/Services/Patients.svc/REST/HMGAI_Lab_Analyzer_API"; - body['TokenID'] = "@dm!n"; - } + // if (url.contains("HMGAI_Lab_Analyze_Orders_API")) { + // url = "https://uat.hmgwebservices.com/Services/Patients.svc/REST/HMGAI_Lab_Analyze_Orders_API"; + // body['TokenID'] = "@dm!n"; + // } + // + // if (url.contains("HMGAI_Lab_Analyzer_API")) { + // url = "https://uat.hmgwebservices.com/Services/Patients.svc/REST/HMGAI_Lab_Analyzer_API"; + // body['TokenID'] = "@dm!n"; + // } if (url == 'https://uat.hmgwebservices.com/Services/NHIC.svc/REST/GetPatientInfo') { url = "https://hmgwebservices.com/Services/NHIC.svc/REST/GetPatientInfo"; @@ -200,7 +211,8 @@ class ApiClientImp implements ApiClient { } // body['TokenID'] = "@dm!n"; - // body['PatientID'] = 809289; + // body['PatientID'] = 2122445; + // body['PatientID'] = 53320; // body['PatientTypeID'] = 1; // body['PatientOutSA'] = 0; // body['SessionID'] = "45786230487560q"; @@ -223,9 +235,9 @@ class ApiClientImp implements ApiClient { if (!networkStatus) { onFailure( - 'Please Check The Internet Connection 1', + LocaleKeys.networkPleaseCheckInternet.tr(), -1, - failureType: ConnectivityFailure("Please Check The Internet Connection 1"), + failureType: ConnectivityFailure(LocaleKeys.networkPleaseCheckInternet.tr()), ); _analytics.errorTracking.log("internet_connectivity", error: "no internet available"); return; @@ -233,15 +245,111 @@ class ApiClientImp implements ApiClient { // Handle body encoding based on isBodyPlainText flag final dynamic requestBody = isBodyPlainText ? body : json.encode(body); - debugPrint("uri: ${Uri.parse(url.trim())}"); - var requestBodyJSON = json.encode(body); - debugPrint("body: $requestBodyJSON", wrapWidth: 2048); - final response = await http.post(Uri.parse(url.trim()), body: requestBody, headers: headers); + + if (kDebugMode) { + debugPrint("uri: ${Uri.parse(url.trim())}"); + var requestBodyJSON = json.encode(body); + debugPrint("body: $requestBodyJSON", wrapWidth: 2048); + // log("body: $requestBodyJSON"); + } + + http.Response response; + try { + response = await _httpClient.post( + uri: Uri.parse(url.trim()), + body: requestBody, + headers: headers, + ); + // log("response: ${response.body.toString()}"); + } on SocketException catch (e) { + final message = e.message.contains('Connection reset by peer') ? LocaleKeys.networkConnectionReset.tr() : LocaleKeys.networkErrorMessage.tr(); + onFailure(message, -1, failureType: ConnectivityFailure(message)); + _analytics.errorTracking.log(endPoint, error: "SocketException: $e"); + + // Enhanced Clarity logging for network errors + Clarity.setCustomTag('api_err_type', 'socket_exception'); + Clarity.setCustomTag('api_err_url', _getEndofUrl(url.trim())); + Clarity.setCustomTag('api_err_endpoint', _getEndpointName(endPoint)); + Clarity.setCustomTag('api_err_method', 'POST'); + + if (_appState.isAuthenticated) { + Clarity.setCustomTag('api_err_user_id', _appState.getAuthenticatedUser()!.patientId.toString()); + } + + Clarity.sendCustomEvent('api_socket_exception'); + + return; + } on http.ClientException catch (e) { + final message = e.message.contains('Connection reset by peer') ? LocaleKeys.networkConnectionReset.tr() : LocaleKeys.networkErrorMessage.tr(); + onFailure(message, -1, failureType: ConnectivityFailure(message)); + _analytics.errorTracking.log(endPoint, error: "ClientException: $e"); + + // Enhanced Clarity logging + Clarity.setCustomTag('api_err_type', 'client_exception'); + Clarity.setCustomTag('api_err_url', _getEndofUrl(url.trim())); + Clarity.setCustomTag('api_err_endpoint', _getEndpointName(endPoint)); + Clarity.setCustomTag('api_err_method', 'POST'); + + if (_appState.isAuthenticated) { + Clarity.setCustomTag('api_err_user_id', _appState.getAuthenticatedUser()!.patientId.toString()); + } + + Clarity.sendCustomEvent('api_client_exception'); + + return; + } on TimeoutException catch (_) { + final message = LocaleKeys.networkTimeout.tr(); + onFailure(message, -1, failureType: ConnectivityFailure(message)); + _analytics.errorTracking.log(endPoint, error: "TimeoutException"); + + // Enhanced Clarity logging for timeouts + Clarity.setCustomTag('api_err_type', 'timeout'); + Clarity.setCustomTag('api_err_url', _getEndofUrl(url.trim())); + Clarity.setCustomTag('api_err_endpoint', _getEndpointName(endPoint)); + Clarity.setCustomTag('api_err_method', 'POST'); + + if (_appState.isAuthenticated) { + Clarity.setCustomTag('api_err_user_id', _appState.getAuthenticatedUser()!.patientId.toString()); + } + + Clarity.sendCustomEvent('api_timeout'); + + return; + } catch (e) { + final message = LocaleKeys.networkUnknownError.tr(); + onFailure(message, -1, failureType: ConnectivityFailure(message)); + _analytics.errorTracking.log(endPoint, error: "UnknownException: $e"); + + // Enhanced Clarity logging for unknown errors + Clarity.setCustomTag('api_err_type', 'unknown_exception'); + Clarity.setCustomTag('api_err_url', _getEndofUrl(url.trim())); + Clarity.setCustomTag('api_err_endpoint', _getEndpointName(endPoint)); + Clarity.setCustomTag('api_err_method', 'POST'); + + // Truncate exception message for Clarity + final exceptionMsg = e.toString(); + final truncatedMsg = exceptionMsg.length > 252 ? '...${exceptionMsg.substring(exceptionMsg.length - 252)}' : exceptionMsg; + Clarity.setCustomTag('api_err_exception', truncatedMsg); + + if (_appState.isAuthenticated) { + Clarity.setCustomTag('api_err_user_id', _appState.getAuthenticatedUser()!.patientId.toString()); + } + + Clarity.sendCustomEvent('api_unknown_exception'); + + return; + } + final int statusCode = response.statusCode; // log("response.body: ${response.body}"); if (statusCode < 200 || statusCode >= 400) { - onFailure('Error While Fetching data', statusCode, failureType: StatusCodeFailure("Error While Fetching data")); - logApiEndpointError(endPoint, 'Error While Fetching data', statusCode); + onFailure(LocaleKeys.networkErrorWhileFetching.tr(), statusCode, failureType: StatusCodeFailure(LocaleKeys.networkErrorWhileFetching.tr())); + logApiEndpointError(endPoint, LocaleKeys.networkErrorWhileFetching.tr(), statusCode); + + Clarity.setCustomTag('api_err_url', _getEndofUrl(url.trim())); + // Clarity.setCustomTag('api_err_request', _sanitizeRequestBody(requestBody)); + Clarity.setCustomTag('api_err_status', statusCode.toString()); + Clarity.sendCustomEvent('api_status_code_failure'); } else { var parsed = json.decode(utf8.decode(response.bodyBytes)); if (isAllowAny) { @@ -276,7 +384,8 @@ class ApiClientImp implements ApiClient { onFailure( parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'], statusCode, - failureType: UnAuthenticatedUserFailure(parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'] ?? "User is not Authenticated", url: url), + failureType: + UnAuthenticatedUserFailure(parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'] ?? "User is not Authenticated", url: url), ); // logApiEndpointError(endPoint, "session logged out", statusCode); } @@ -321,16 +430,16 @@ class ApiClientImp implements ApiClient { if (parsed['message'] == null && parsed['ErrorEndUserMessage'] == null) { if (parsed['ErrorSearchMsg'] == null) { onFailure( - "Server Error found with no available message", + LocaleKeys.networkServerErrorNoMessage.tr(), statusCode, - failureType: ServerFailure("Error While Fetching data"), + failureType: ServerFailure(LocaleKeys.networkErrorWhileFetching.tr()), ); - logApiEndpointError(endPoint, "Server Error found with no available message", statusCode); + logApiEndpointError(endPoint, LocaleKeys.networkServerErrorNoMessage.tr(), statusCode); } else { onFailure( parsed['ErrorSearchMsg'], statusCode, - failureType: ServerFailure("Error While Fetching data"), + failureType: ServerFailure(LocaleKeys.networkErrorWhileFetching.tr()), ); logApiEndpointError(endPoint, parsed['ErrorSearchMsg'], statusCode); } @@ -342,6 +451,11 @@ class ApiClientImp implements ApiClient { ); logApiEndpointError(endPoint, parsed['message'] ?? parsed['message'], statusCode); } + + Clarity.setCustomTag('api_err_url', _getEndofUrl(url.trim())); + // Clarity.setCustomTag('api_err_request', _sanitizeRequestBody(requestBody)); + Clarity.setCustomTag('api_err_status', statusCode.toString()); + Clarity.sendCustomEvent('api_message_status_failure'); } } else { if (parsed['SameClinicApptList'] != null) { @@ -352,14 +466,15 @@ class ApiClientImp implements ApiClient { onFailure( parsed['message'] ?? parsed['message'], statusCode, - failureType: ServerFailure("Error While Fetching data"), + failureType: ServerFailure(LocaleKeys.networkErrorWhileFetching.tr()), ); logApiEndpointError(endPoint, parsed['message'] ?? parsed['message'], statusCode); } else { onFailure( parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'], statusCode, - failureType: ServerFailure("Error While Fetching data"), + // failureType: ServerFailure("Error While Fetching data"), + failureType: ServerFailure(parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage']), ); logApiEndpointError(endPoint, parsed['ErrorEndUserMessage'] ?? parsed['ErrorMessage'], statusCode); } @@ -412,22 +527,112 @@ class ApiClientImp implements ApiClient { // print("Body : ${json.encode(body)}"); if (await Utils.checkConnection(bypassConnectionCheck: true)) { - final response = await http.get( - Uri.parse(url.trim()), - headers: apiHeaders ?? {'Content-Type': 'application/json', 'Accept': 'application/json'}, - ); + http.Response response; + try { + response = await _httpClient.get( + uri: Uri.parse(url.trim()), + headers: apiHeaders ?? {'Content-Type': 'application/json', 'Accept': 'application/json'}, + ); + } on SocketException catch (e) { + final message = e.message.contains('Connection reset by peer') ? LocaleKeys.networkConnectionReset.tr() : LocaleKeys.networkErrorMessage.tr(); + onFailure(message, -1); + _analytics.errorTracking.log(endPoint, error: "SocketException: $e"); + + // Clarity logging for GET requests + Clarity.setCustomTag('api_err_type', 'socket_exception'); + Clarity.setCustomTag('api_err_url', _getEndofUrl(url.trim())); + Clarity.setCustomTag('api_err_endpoint', _getEndpointName(endPoint)); + Clarity.setCustomTag('api_err_method', 'GET'); + + if (_appState.isAuthenticated) { + Clarity.setCustomTag('api_err_user_id', _appState.getAuthenticatedUser()!.patientId.toString()); + } + + Clarity.sendCustomEvent('api_get_socket_exception'); + + return; + } on http.ClientException catch (e) { + final message = e.message.contains('Connection reset by peer') ? LocaleKeys.networkConnectionReset.tr() : LocaleKeys.networkErrorMessage.tr(); + onFailure(message, -1); + _analytics.errorTracking.log(endPoint, error: "ClientException: $e"); + + Clarity.setCustomTag('api_err_type', 'client_exception'); + Clarity.setCustomTag('api_err_url', _getEndofUrl(url.trim())); + Clarity.setCustomTag('api_err_endpoint', _getEndpointName(endPoint)); + Clarity.setCustomTag('api_err_method', 'GET'); + + if (_appState.isAuthenticated) { + Clarity.setCustomTag('api_err_user_id', _appState.getAuthenticatedUser()!.patientId.toString()); + } + + Clarity.sendCustomEvent('api_get_client_exception'); + + return; + } on TimeoutException catch (_) { + final message = LocaleKeys.networkTimeout.tr(); + onFailure(message, -1); + _analytics.errorTracking.log(endPoint, error: "TimeoutException"); + + Clarity.setCustomTag('api_err_type', 'timeout'); + Clarity.setCustomTag('api_err_url', _getEndofUrl(url.trim())); + Clarity.setCustomTag('api_err_endpoint', _getEndpointName(endPoint)); + Clarity.setCustomTag('api_err_method', 'GET'); + + if (_appState.isAuthenticated) { + Clarity.setCustomTag('api_err_user_id', _appState.getAuthenticatedUser()!.patientId.toString()); + } + + Clarity.sendCustomEvent('api_get_timeout'); + + return; + } catch (e) { + final message = LocaleKeys.networkUnknownError.tr(); + onFailure(message, -1); + _analytics.errorTracking.log(endPoint, error: "UnknownException: $e"); + + Clarity.setCustomTag('api_err_type', 'unknown_exception'); + Clarity.setCustomTag('api_err_url', _getEndofUrl(url.trim())); + Clarity.setCustomTag('api_err_endpoint', _getEndpointName(endPoint)); + Clarity.setCustomTag('api_err_method', 'GET'); + + final exceptionMsg = e.toString(); + final truncatedMsg = exceptionMsg.length > 252 ? '...${exceptionMsg.substring(exceptionMsg.length - 252)}' : exceptionMsg; + Clarity.setCustomTag('api_err_exception', truncatedMsg); + + if (_appState.isAuthenticated) { + Clarity.setCustomTag('api_err_user_id', _appState.getAuthenticatedUser()!.patientId.toString()); + } + + Clarity.sendCustomEvent('api_get_unknown_exception'); + + return; + } + final int statusCode = response.statusCode; // print("statusCode :$statusCode"); if (statusCode < 200 || statusCode >= 400) { - onFailure('Error While Fetching data', statusCode); - logApiEndpointError(endPoint, 'Error While Fetching data', statusCode); + onFailure(LocaleKeys.networkErrorWhileFetching.tr(), statusCode); + logApiEndpointError(endPoint, LocaleKeys.networkErrorWhileFetching.tr(), statusCode); + + // Clarity logging for GET status code errors + Clarity.setCustomTag('api_err_type', 'status_code_error'); + Clarity.setCustomTag('api_err_url', _getEndofUrl(url.trim())); + Clarity.setCustomTag('api_err_endpoint', _getEndpointName(endPoint)); + Clarity.setCustomTag('api_err_method', 'GET'); + Clarity.setCustomTag('api_err_status', statusCode.toString()); + + if (_appState.isAuthenticated) { + Clarity.setCustomTag('api_err_user_id', _appState.getAuthenticatedUser()!.patientId.toString()); + } + + Clarity.sendCustomEvent('api_get_status_error'); } else { var parsed = json.decode(utf8.decode(response.bodyBytes)); onSuccess(parsed, statusCode); } } else { - onFailure('Please Check The Internet Connection', -1); + onFailure(LocaleKeys.networkPleaseCheckInternet.tr(), -1); _analytics.errorTracking.log("internet_connectivity", error: "no internet available"); } } @@ -595,4 +800,51 @@ class ApiClientImp implements ApiClient { logApiEndpointError(String endPoint, error, code) { _analytics.errorTracking.log(endPoint, error: error); } + + String _getEndofUrl(String url) { + const int clarityLimit = 255; + if (url.length <= clarityLimit) return url; + + // Extracts the final 252 characters and prepends '...' + return '...${url.substring(url.length - (clarityLimit - 3))}'; + } + + String _getEndpointName(String endpoint) { + // Extract the last part of the endpoint path for cleaner tracking + const int clarityLimit = 100; + final cleanEndpoint = endpoint.split('/').last; + + if (cleanEndpoint.length <= clarityLimit) return cleanEndpoint; + return '...${cleanEndpoint.substring(cleanEndpoint.length - (clarityLimit - 3))}'; + } + + String _sanitizeRequestBody(String body) { + if (body.isEmpty) return ''; + + try { + // Handle standard JSON bodies + final Map data = json.decode(body); + + // Case-insensitive key matching and removal + data.removeWhere((key, value) => key.toLowerCase() == 'sessionid' || key.toLowerCase() == 'tokenid'); + + return json.encode(data); + } catch (_) { + // Fallback: Handle Form URL Encoded strings or raw key-value pairs (SessionID=XYZ&TokenID=abc) + String modifiedBody = body; + final sensitiveKeys = ['SessionID', 'TokenID']; + + for (var key in sensitiveKeys) { + // Matches "key=value" surrounded by standard query delimiters + final regExp = RegExp(r'' + key + r'=[^&]*&?', caseSensitive: false); + modifiedBody = modifiedBody.replaceAll(regExp, ''); + } + + // Clean up any trailing trailing ampersands + if (modifiedBody.endsWith('&')) { + modifiedBody = modifiedBody.substring(0, modifiedBody.length - 1); + } + return modifiedBody; + } + } } diff --git a/lib/core/api/http_client_manager.dart b/lib/core/api/http_client_manager.dart new file mode 100644 index 00000000..d264283d --- /dev/null +++ b/lib/core/api/http_client_manager.dart @@ -0,0 +1,224 @@ +import 'dart:async'; +import 'dart:io'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/services/app_lifecycle_service.dart'; +import 'package:http/http.dart' as http; + +/// HTTP Client Manager with automatic retry logic for transient network errors +/// Handles background/foreground transitions gracefully +class HttpClientManager { + final http.Client _client; + final AppLifecycleService _lifecycleService; + + static const Duration _defaultTimeout = Duration(seconds: 30); + static const int _maxRetries = 2; + + HttpClientManager({ + required AppLifecycleService lifecycleService, + http.Client? client, + }) : _lifecycleService = lifecycleService, + _client = client ?? http.Client(); + + /// Execute POST request with retry logic + Future post({ + required Uri uri, + Map? headers, + Object? body, + Duration? timeout, + int maxRetries = _maxRetries, + }) async { + return _executeWithRetry( + () => _client + .post(uri, headers: headers, body: body) + .timeout(timeout ?? _defaultTimeout), + endpoint: uri.pathSegments.isNotEmpty ? uri.pathSegments.last : uri.toString(), + maxRetries: maxRetries, + ); + } + + /// Execute GET request with retry logic + Future get({ + required Uri uri, + Map? headers, + Duration? timeout, + int maxRetries = _maxRetries, + }) async { + return _executeWithRetry( + () => _client + .get(uri, headers: headers) + .timeout(timeout ?? _defaultTimeout), + endpoint: uri.pathSegments.isNotEmpty ? uri.pathSegments.last : uri.toString(), + maxRetries: maxRetries, + ); + } + + /// Core retry logic for HTTP requests + Future _executeWithRetry( + Future Function() request, { + required String endpoint, + int maxRetries = _maxRetries, + }) async { + int attempt = 0; + + while (attempt <= maxRetries) { + try { + // Wait for app to be in foreground before attempting request + await _waitForAppForeground(); + + // Check if app just came from background + if (_lifecycleService.lastResumedTime != null && attempt == 0) { + final timeSinceResume = DateTime.now().difference(_lifecycleService.lastResumedTime!); + if (timeSinceResume.inSeconds < 5) { + debugPrint('🔄 App recently resumed (${timeSinceResume.inSeconds}s ago), adding small delay before request...'); + await Future.delayed(const Duration(milliseconds: 500)); + } + } + + return await request(); + + } on SocketException catch (e) { + if (attempt >= maxRetries) { + // If app is in background, wait for it to come back before throwing + if (_lifecycleService.isAppInBackground) { + debugPrint('⏸️ App in background, waiting to resume before final error for $endpoint'); + await _waitForAppForeground(); + } + rethrow; + } + await _handleRetry( + attempt: attempt++, + errorType: 'SocketException', + endpoint: endpoint, + errorDetails: e.message, + ); + } on http.ClientException catch (e) { + if (attempt >= maxRetries) { + // If app is in background, wait for it to come back before throwing + if (_lifecycleService.isAppInBackground) { + debugPrint('⏸️ App in background, waiting to resume before final error for $endpoint'); + await _waitForAppForeground(); + } + rethrow; + } + await _handleRetry( + attempt: attempt++, + errorType: 'ClientException', + endpoint: endpoint, + errorDetails: e.message, + ); + } on TimeoutException catch (e) { + // For timeout, only retry once + if (attempt >= 1) { + // If app is in background, wait for it to come back before throwing + if (_lifecycleService.isAppInBackground) { + debugPrint('⏸️ App in background, waiting to resume before final error for $endpoint'); + await _waitForAppForeground(); + } + rethrow; + } + await _handleRetry( + attempt: attempt++, + errorType: 'TimeoutException', + endpoint: endpoint, + errorDetails: e.message ?? 'Request timed out', + ); + } + } + + throw Exception('Max retries exceeded for $endpoint'); + } + + /// Wait for app to be in foreground before proceeding + Future _waitForAppForeground() async { + if (!_lifecycleService.isAppInBackground) { + return; // App is already in foreground + } + + debugPrint('⏸️ App is in background, pausing request until app resumes...'); + + // Wait for app to resume with a timeout + final completer = Completer(); + late StreamSubscription subscription; + + // Set up a listener for app state changes + subscription = _lifecycleService.appStateStream.listen((state) { + if (state == AppLifecycleState.resumed) { + if (!completer.isCompleted) { + debugPrint('✅ App resumed, continuing with request'); + completer.complete(); + } + } + }); + + // Also check current state in case it changed + if (_lifecycleService.currentState == AppLifecycleState.resumed) { + if (!completer.isCompleted) { + completer.complete(); + } + } + + try { + // Wait for app to resume with 60 second timeout + await completer.future.timeout( + const Duration(seconds: 60), + onTimeout: () { + debugPrint('⚠️ Timeout waiting for app to resume'); + }, + ); + } finally { + await subscription.cancel(); + } + + // Add small delay after resume to let things stabilize + await Future.delayed(const Duration(milliseconds: 300)); + } + + /// Handle retry delay with exponential backoff and validation + Future _handleRetry({ + required int attempt, + required String errorType, + required String endpoint, + required String errorDetails, + }) async { + // If app went to background during the error, wait for it to come back + if (_lifecycleService.isAppInBackground) { + debugPrint('⏸️ Error occurred while app in background, waiting for app to resume...'); + await _waitForAppForeground(); + } + + // Check network connectivity before retrying + final hasConnection = await Utils.checkConnection(bypassConnectionCheck: true); + if (!hasConnection) { + debugPrint('⚠️ No network connection available, waiting before retry...'); + // Wait a bit and check again instead of immediately throwing + await Future.delayed(const Duration(seconds: 2)); + final recheckConnection = await Utils.checkConnection(bypassConnectionCheck: true); + if (!recheckConnection) { + throw SocketException('No network connection available for retry'); + } + } + + // Exponential backoff: 300ms, 900ms, 2700ms + final delay = Duration(milliseconds: 300 * (1 << attempt)); + + debugPrint( + '🔄 Retry attempt ${attempt + 1}/$_maxRetries for $endpoint\n' + ' Error: $errorType - $errorDetails\n' + ' Waiting: ${delay.inMilliseconds}ms\n' + ' App State: ${_lifecycleService.currentState}' + ); + + await Future.delayed(delay); + } + + /// Close the HTTP client + void dispose() { + _client.close(); + } +} + + + + + diff --git a/lib/core/api_consts.dart b/lib/core/api_consts.dart index a529c740..8f2deaa3 100644 --- a/lib/core/api_consts.dart +++ b/lib/core/api_consts.dart @@ -1,21 +1,30 @@ import 'package:amazon_payfort/amazon_payfort.dart'; +import 'package:flutter_amazonpaymentservices/environment_type.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; class ApiConsts { static const maxSmallScreen = 660; - static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.prod; + static AppEnvironmentTypeEnum appEnvironmentType = AppEnvironmentTypeEnum.uat; // static String baseUrl = 'https://uat.hmgwebservices.com/'; // HIS API URL UAT static String baseUrl = 'https://hmgwebservices.com/'; // HIS API URL PROD static String rcBaseUrl = 'https://rc.hmg.com/'; // dRC API URL PROD - static String hmgPharmacyApiBaseUrl = 'https://hmgpharmacyapi.hmg.com/'; // dRC API URL PROD - static String symptomsCheckerApi = '${hmgPharmacyApiBaseUrl}symptomsapi/api/SymptomChecker'; // dRC API URL PROD + static String hmgPharmacyApiBaseUrl = 'https://hmgpharmacyapi.hmg.com/'; // symptoms API URL PROD + static String symptomsCheckerApiUAT = '${hmgPharmacyApiBaseUrl}symptomsapi_live/api/SymptomChecker'; // dRC API URL PROD + static String symptomsCheckerApiLive = '${hmgPharmacyApiBaseUrl}symptomsapi_live/api/SymptomChecker'; // dRC API URL PROD + static String symptomsCheckerApi = '${hmgPharmacyApiBaseUrl}symptomsapi_live/api/SymptomChecker'; // dRC API URL PROD + static String symptomsCheckerScheduleAppointment = '$symptomsCheckerApi/ScheduleAppointment'; + + // Symptoms Checker Credentials + static String symptomsCheckerUsername = 'mobile_user'; + static String symptomsCheckerPassword = '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92'; static var payFortEnvironment = FortEnvironment.production; static var applePayMerchantId = "merchant.com.hmgwebservices"; + static var payFortEnvironmentType = EnvironmentType.production; static String SERVICE_URL = 'https://hmgwebservices.com/PayFortWebLive/pages/SendPayFortRequest.aspx'; //Payfort Payment Gateway URL LIVE // static String SERVICE_URL = 'https://hmgwebservices.com/PayFortWeb/pages/SendPayFortRequest.aspx'; // Payfort Payment Gateway URL UAT @@ -26,7 +35,9 @@ class ApiConsts { static String QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail"; - static String CHAT_URL = "https://chat.hmg.com/Index.aspx?RequestedId="; + // static String QLINE_URL = "https://qline.hmg.com/api/PatientCall/PatientInQueue_Detail"; + + static String CHAT_URL = "https://chat.hmg.com/geneysChat/Index.aspx?RequestedId="; // static String GET_TAMARA_INSTALLMENTS_URL = "https://epharmacy.hmg.com/tamara/Home/getinstallments"; @@ -38,18 +49,23 @@ class ApiConsts { case AppEnvironmentTypeEnum.prod: baseUrl = "https://hmgwebservices.com/"; payFortEnvironment = FortEnvironment.production; + payFortEnvironmentType = EnvironmentType.production; applePayMerchantId = "merchant.com.hmgwebservices"; SERVICE_URL = "https://hmgwebservices.com/PayFortWebLive/pages/SendPayFortRequest.aspx"; TAMARA_URL = "https://mdlaboratories.com/tamaralive/Home/Checkout"; GET_TAMARA_INSTALLMENTS_URL = "https://mdlaboratories.com/tamaralive/Home/GetInstallments"; GET_TAMARA_PAYMENT_STATUS = 'https://mdlaboratories.com/tamaralive/api/OnlineTamara/order_status?orderid='; rcBaseUrl = 'https://rc.hmg.com/'; - QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail"; - CHAT_URL = "https://chat.hmg.com/Index.aspx?RequestedId="; + QLINE_URL = "https://qline.hmg.com/api/PatientCall/PatientInQueue_Detail"; + CHAT_URL = "https://chat.hmg.com/geneysChat/Index.aspx?RequestedId="; + symptomsCheckerApi = symptomsCheckerApiLive; + symptomsCheckerUsername = 'mobile_user'; + symptomsCheckerPassword = '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92'; break; case AppEnvironmentTypeEnum.dev: baseUrl = "https://uat.hmgwebservices.com/"; payFortEnvironment = FortEnvironment.test; + payFortEnvironmentType = EnvironmentType.sandbox; applePayMerchantId = "merchant.com.hmgwebservices.uat"; SERVICE_URL = 'https://uat.hmgwebservices.com/HMGPayment/pages/SendPayFortRequest.aspx'; TAMARA_URL = "https://epharmacy.hmg.com/tamara/Home/Checkout"; @@ -58,10 +74,15 @@ class ApiConsts { rcBaseUrl = 'https://rc.hmg.com/uat/'; QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail"; CHAT_URL = "https://chat.hmg.com/geneysChat/Index.aspx?RequestedId="; + symptomsCheckerApi = symptomsCheckerApiUAT; + symptomsCheckerUsername = 'guest_user'; + symptomsCheckerPassword = '123456'; + break; case AppEnvironmentTypeEnum.uat: baseUrl = "https://uat.hmgwebservices.com/"; payFortEnvironment = FortEnvironment.test; + payFortEnvironmentType = EnvironmentType.sandbox; applePayMerchantId = "merchant.com.hmgwebservices.uat"; SERVICE_URL = 'https://uat.hmgwebservices.com/HMGPayment/pages/SendPayFortRequest.aspx'; TAMARA_URL = "https://epharmacy.hmg.com/tamara/Home/Checkout"; @@ -70,22 +91,32 @@ class ApiConsts { rcBaseUrl = 'https://rc.hmg.com/uat/'; QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail"; CHAT_URL = "https://chat.hmg.com/geneysChat/Index.aspx?RequestedId="; + symptomsCheckerApi = symptomsCheckerApiUAT; + symptomsCheckerUsername = 'guest_user'; + symptomsCheckerPassword = '123456'; + break; case AppEnvironmentTypeEnum.preProd: baseUrl = "https://webservices.hmg.com/"; payFortEnvironment = FortEnvironment.production; + payFortEnvironmentType = EnvironmentType.production; applePayMerchantId = "merchant.com.hmgwebservices"; SERVICE_URL = "https://hmgwebservices.com/PayFortWebLive/pages/SendPayFortRequest.aspx"; TAMARA_URL = "https://epharmacy.hmg.com/tamara/Home/Checkout"; GET_TAMARA_INSTALLMENTS_URL = "https://epharmacy.hmg.com/tamara/Home/getinstallments"; GET_TAMARA_PAYMENT_STATUS = 'https://epharmacy.hmg.com/tamara/api/OnlineTamara/order_status?orderid='; rcBaseUrl = 'https://rc.hmg.com/'; - QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail"; + QLINE_URL = "https://qline.hmg.com/api/PatientCall/PatientInQueue_Detail"; CHAT_URL = "https://chat.hmg.com/geneysChat/Index.aspx?RequestedId="; + symptomsCheckerApi = symptomsCheckerApiUAT; + symptomsCheckerUsername = 'guest_user'; + symptomsCheckerPassword = '123456'; + break; case AppEnvironmentTypeEnum.qa: baseUrl = "https://uat.hmgwebservices.com/"; payFortEnvironment = FortEnvironment.test; + payFortEnvironmentType = EnvironmentType.sandbox; applePayMerchantId = "merchant.com.hmgwebservices.uat"; SERVICE_URL = 'https://uat.hmgwebservices.com/HMGPayment/pages/SendPayFortRequest.aspx'; TAMARA_URL = "https://epharmacy.hmg.com/tamara/Home/Checkout"; @@ -94,10 +125,15 @@ class ApiConsts { rcBaseUrl = 'https://rc.hmg.com/uat/'; QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail"; CHAT_URL = "https://chat.hmg.com/geneysChat/Index.aspx?RequestedId="; + symptomsCheckerApi = symptomsCheckerApiUAT; + symptomsCheckerUsername = 'guest_user'; + symptomsCheckerPassword = '123456'; + break; case AppEnvironmentTypeEnum.staging: baseUrl = "https://uat.hmgwebservices.com/"; payFortEnvironment = FortEnvironment.test; + payFortEnvironmentType = EnvironmentType.sandbox; applePayMerchantId = "merchant.com.hmgwebservices.uat"; SERVICE_URL = 'https://uat.hmgwebservices.com/HMGPayment/pages/SendPayFortRequest.aspx'; TAMARA_URL = "https://epharmacy.hmg.com/tamara/Home/Checkout"; @@ -106,6 +142,10 @@ class ApiConsts { rcBaseUrl = 'https://rc.hmg.com/uat/'; QLINE_URL = "https://ms.hmg.com/nscapi/api/PatientCall/PatientInQueue_Detail"; CHAT_URL = "https://chat.hmg.com/geneysChat/Index.aspx?RequestedId="; + symptomsCheckerApi = symptomsCheckerApiUAT; + symptomsCheckerUsername = 'guest_user'; + symptomsCheckerPassword = '123456'; + break; } } @@ -179,6 +219,9 @@ class ApiConsts { static final String diagnosis = '$symptomsCheckerApi/GetDiagnosis'; static final String explain = '$symptomsCheckerApi/ExplainDiagnosisResult'; static final String getClinicFromCondition = '$symptomsCheckerApi/GetClinicsByCondition?condition='; + static final String getRationale = '$symptomsCheckerApi/GetRationale'; + static final String getTriage = '$symptomsCheckerApi/GetTriage'; + static final String getExplanations = '$symptomsCheckerApi/GetExplanations'; //E-REFERRAL SERVICES static final getAllRelationshipTypes = "Services/Patients.svc/REST/GetAllRelationshipTypes"; @@ -204,6 +247,9 @@ class ApiConsts { static String updateDiabeticResult = 'Services/Patients.svc/REST/Patient_UpdateDiabtecResult'; static String deactivateDiabeticStatus = 'Services/Patients.svc/REST/Patient_DeactivateDiabeticStatus'; static String sendAverageBloodSugarReport = 'Services/Notifications.svc/REST/SendAverageBloodSugarReport'; + static String averageBloodSugarReportDownload = 'Services/Notifications.svc/REST/SendAverageBloodSugarReportDownload'; + static String averageWeightReportDownload = 'Services/Notifications.svc/REST/SendAverageBodyWeightReportDownload'; + static String averageBloodPressureReportDownload = 'Services/Notifications.svc/REST/SendAverageBloodPressureReportDownload'; // Blood Pressure static String getBloodPressureResultAverage = 'Services/Patients.svc/REST/Patient_GetBloodPressureResultAverage'; @@ -229,11 +275,34 @@ class ApiConsts { static String getPatientBloodGroup = "services/PatientVarification.svc/REST/BloodDonation_GetBloodGroupDetails"; static String getPatientBloodAgreement = "Services/PatientVarification.svc/REST/CheckUserAgreementForBloodDonation"; - static String getAiOverViewLabOrders = "Services/Patients.svc/REST/HMGAI_Lab_Analyze_Orders_API"; - static String getAiOverViewLabOrder = "Services/Patients.svc/REST/HMGAI_Lab_Analyzer_API"; + static String getPatientBloodTypeNew = "Services/Patients.svc/REST/HIS_GetPatientBloodType_New"; + + // static String getAiOverViewLabOrders = "Services/Patients.svc/REST/HMGAI_Lab_Analyze_Orders_API"; + // static String getAiOverViewLabOrder = "Services/Patients.svc/REST/HMGAI_Lab_Analyzer_API"; + + //Refund Request + static String getRefundableInvoices = "Services/Outps.svc/REST/getRefundableInvoices"; + static String getRefundableInvoicesDetails = "Services/Outps.svc/REST/getRefundableInvoicesDetails"; + static String getRefundableAdvances = "Services/Outps.svc/REST/getRefundableAdvances"; + static String getRefundStatus = "Services/COCWS.svc/REST/GetRefundStatus"; + static String getRefundInvoices = "Services/COCWS.svc/REST/GetRefundInvoices"; + static String submitRefund = "Services/COCWS.svc/REST/SubmitRefund"; + static String isRefundableInvoice = "Services/Outps.svc/REST/isRefundableInvoice"; + + static String getAiAnalysisURL = "https://api.labpredict.com"; + static String getAiRadiologyAnalysis = "$getAiAnalysisURL/radiology"; + static String getAiOverViewLabOrdersNew = "$getAiAnalysisURL/analyze_lab_orders"; + static String getAiOverViewLabOrderNew = "$getAiAnalysisURL/analyze"; + static String getAiPrescriptionAnalysis = "$getAiAnalysisURL/prescription_analysis"; + + static String googleCloudStorageARTranslationFileURL = "https://storage.googleapis.com/hmg-patientapp-translations/ar-SA.json"; + static String googleCloudStorageENTranslationFileURL = "https://storage.googleapis.com/hmg-patientapp-translations/en-US.json"; + + static String googleCloudStorageENTranslationFileBaseURL = "https://storage.googleapis.com/hmg-patientapp-translations"; // ************ static values for Api **************** - static final double appVersionID = 20.2; + static final double appVersionID = 21.7; + // static final double appVersionID = 50.7; static final int appChannelId = 3; static final String appIpAddress = "10.20.10.20"; @@ -448,6 +517,7 @@ var IS_LAST_APPOITMENT_RATED = 'Services/Doctors.svc/REST/IsLastAppoitmentRated_ var GET_APPOINTMENT_DETAILS_BY_NO = 'Services/MobileNotifications.svc/REST/GetAppointmentDetailsByApptNo'; var NEW_RATE_APPOINTMENT_URL = "Services/Doctors.svc/REST/AppointmentsRating_InsertAppointmentRate"; var NEW_RATE_DOCTOR_URL = "Services/Doctors.svc/REST/DoctorsRating_InsertDoctorRate"; +var GET_DOCTORS_RATING_CHECK = "Services/Doctors.svc/REST/GetDoctorsRatingCheck"; //var GET_QR_PARKING = 'Services/SWP.svc/REST/GetQRParkingByID'; @@ -462,11 +532,21 @@ var GET_ACTIVE_APPOINTMENTS_LIST_URL = "Services/Doctors.svc/Rest/Dr_GetAppointm var GET_DOCTORS_LIST_URL = "Services/Doctors.svc/REST/SearchDoctorsByTime"; //URL to dental doctors list -var GET_DENTAL_DOCTORS_LIST_URL = "Services/Doctors.svc/REST/Dental_DoctorChiefComplaintMapping"; +// var GET_DENTAL_DOCTORS_LIST_URL = "Services/Doctors.svc/REST/Dental_DoctorChiefComplaintMapping"; +var GET_DENTAL_DOCTORS_LIST_URL = "Services/Doctors.svc/REST/Dental_DoctorChiefComplaintMapping_Nearest"; //URL to get doctor free slots var GET_DOCTOR_FREE_SLOTS = "Services/Doctors.svc/REST/GetDoctorFreeSlots"; +//URL to check if doctor is favorite +var IS_FAVOURITE_DOCTOR = "Services/Patients.svc/REST/Patient_IsFavouriteDoctor"; + +//URL to get favorite doctors list +var GET_FAVOURITE_DOCTOR = "Services/Patients.svc/REST/Patient_GetFavouriteDoctor"; + +//URL to insert favorite doctor +var INSERT_FAVOURITE_DOCTOR = "Services/Patients.svc/REST/Patient_InsertFavouriteDoctor"; + //URL to insert appointment var INSERT_SPECIFIC_APPOINTMENT = "Services/Doctors.svc/REST/InsertSpecificAppointment"; @@ -542,6 +622,8 @@ var GET_ER_APPOINTMENT_TIME = 'Services/ER_VirtualCall.svc/REST/GetRestTime'; var ADD_NEW_CALL_FOR_PATIENT_ER = 'Services/DoctorApplication.svc/REST/NewCallForPatientER'; +var ADD_LIVECARE_INSURANCE_UPDATE_REQUEST = 'Services/ER_VirtualCall.svc/REST/ER_InsertRequests'; + var GET_LIVECARE_HISTORY = 'Services/ER_VirtualCall.svc/REST/GetPatientErVirtualHistory'; var CANCEL_LIVECARE_REQUEST = 'Services/ER_VirtualCall.svc/REST/DeleteErRequest'; var SEND_LIVECARE_INVOICE_EMAIL = 'Services/Notifications.svc/REST/SendInvoiceForLiveCare'; @@ -620,6 +702,11 @@ var GET_PATIENT_SICK_LEAVE_STATUS = 'Services/Patients.svc/REST/GetPatientSickLe var GET_SERVICES_PRICE_LIST = 'Services/OUTPs.svc/REST/GetServicesPriceList'; +// Offers and Discounts +//TODO: Need to Be Changes Once Apis Provided By Vendor ---- Aamir +var GET_OFFERS_AND_DISCOUNTS = 'Services/Patients.svc/REST/GetOffersAndDiscounts'; +var GET_OFFERS_AND_DISCOUNTS_HISTORY = 'Services/Patients.svc/REST/GetOffersAndDiscountsHistory'; + var SendSickLeaveEmail = 'Services/Notifications.svc/REST/SendSickLeaveEmail'; var GET_PATIENT_AdVANCE_BALANCE_AMOUNT = 'Services/Patients.svc/REST/GetPatientAdvanceBalanceAmount'; @@ -805,8 +892,9 @@ var FILTERED_PRODUCTS = 'products?categoryids='; var GET_DOCTOR_LIST_CALCULATION = "Services/Doctors.svc/REST/GetCallculationDoctors"; -var GET_ALL_APPOINTMENTS_FOR_DENTAL_CLINIC = "Services/Patients.svc/REST/GetDentalAppointments"; - +// var GET_ALL_APPOINTMENTS_FOR_DENTAL_CLINIC = "Services/Patients.svc/REST/GetDentalAppointments"; +var GET_ALL_APPOINTMENTS_FOR_DENTAL_CLINIC = 'Services/Patients.svc/REST/GetAllInvoices'; +var GET_ALL_PHARMACY_INVOICES = 'Services/Patients.svc/REST/GetAllPharmacyInvoices'; var GET_DENTAL_APPOINTMENT_INVOICE = "Services/Patients.svc/REST/HIS_eInvoiceForDentalByAppointmentNo"; var SEND_DENTAL_APPOINTMENT_INVOICE_EMAIL = "Services/Notifications.svc/REST/SendInvoiceForDental"; @@ -900,7 +988,10 @@ var IS_DOCTOR_AVAILABLE_BY_CALENDAR_SCHEDULE = 'Services/OUTPs.svc/REST/HIS_IsDo //PAYFORT var getPayFortProjectDetails = "Services/PayFort_Serv.svc/REST/GetPayFortProjectDetails"; -var addPayFortApplePayResponse = "Services/PayFort_Serv.svc/REST/AddResponse"; + +var ADD_PAYFORT_REQUEST = "Services/PayFort_Serv.svc/REST/AddRequest"; +var ADD_PAYFORT_RESPONSE = "Services/PayFort_Serv.svc/REST/AddResponse"; + // var payFortEnvironment = FortEnvironment.production; // var applePayMerchantId = "merchant.com.hmgwebservices"; // var payFortEnvironment = FortEnvironment.test; @@ -920,37 +1011,27 @@ const DASHBOARD = 'Services/Patients.svc/REST/PatientDashboard'; const SEND_PATIENT_IMMEDIATE_UPDATE_INSURANCE_REQUEST = 'Services/OUTPs.svc/REST/PatientCompanyUpdate'; -class ApiKeyConstants { - static final String googleMapsApiKey = 'AIzaSyB6TERnxIr0yJ3qG4ULBZbu0sAD4tGqtng'; -} +const PROFILE_SETTING = 'Services/Patients.svc/REST/GetPateintInfoForUpdate'; -//flutter: URL : https://hmgwebservices.com/Services/H2ORemainder.svc/REST/H2O_InsertUserActivity -// flutter: {"IdentificationNo":"2530976584","MobileNumber":"504278212","QuantityIntake":200,"VersionID":20.0,"Channel":3,"LanguageID":2,"IPAdress":"10.20.10.20","generalid":"Cs2020@2016$2958","PatientOutSA":0,"SessionID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOjIsIm9iaiI6eyJUaW1lIjoiMjAyNS0xMi0yOFQwODozNjo0My45MTY0MzRaIiwiUGF0aWVudElEIjoiNDUxNTY5NyIsIlBhdGllbnRNZXJnZWRJRHMiOiI0NTE1Njk3IiwiUGF0aWVudE91dFNBIjpmYWxzZX0sImV4cCI6MTc2Njk2NjQwMH0.l1rCcs2OAU5u2J-iZMiO7NX6shGzLJV0hlYtVh2JeqY","isDentalAllowedBackend":false,"DeviceTypeID":1,"PatientID":4515697,"TokenID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOjIsIm9iaiI6eyJUaW1lIjoiMjAyNS0xMi0yOFQwODozNjo0My45MTY0MzRaIiwiUGF0aWVudElEIjoiNDUxNTY5NyIsIlBhdGllbnRNZXJnZWRJRHMiOiI0NTE1Njk3IiwiUGF0aWVudE91dFNBIjpmYWxzZX0sImV4cCI6MTc2Njk2NjQwMH0.l1rCcs2OAU5u2J-iZMiO7NX6shGzLJV0hlYtVh2JeqY","PatientTypeID":1,"PatientType":1,"Latitude":37.785834,"Longitude":-122.406417} -// flutter: response.body: -// flutter: {"Date":null,"LanguageID":0,"ServiceName":0,"Time":null,"AndroidLink":null,"AuthenticationTokenID":null,"Data":null,"Dataw":false,"DietType":0,"DietTypeID":0,"ErrorCode":null,"ErrorEndUserMessage":null,"ErrorEndUserMessageN":null,"ErrorMessage":null,"ErrorStatusCode":0,"ErrorType":0,"FoodCategory":0,"IOSLink":null,"IsAuthenticated":true,"MealOrderStatus":0,"MealType":0,"MessageStatus":1,"NumberOfResultRecords":0,"PatientBlodType":null,"SuccessMsg":null,"SuccessMsgN":null,"VidaUpdatedResponse":null,"IsHMGPatient":false,"LogInTokenID":null,"PhysicalActivityData":null,"RowExists":0,"UserDetailData":null,"UserDetailData_New":null,"UserProgressForMonthData":null,"UserProgressForTodayData":[{"QuantityConsumed":200.00,"PercentageConsumed":9.41,"PercentageLeft":90.59,"QuantityLimit":2125.00}],"UserProgressForWeekData":null,"UserProgressHistoryData":[{"Quantity":200.000,"CreatedDate":"\/Date(1766911222217+0300)\/"}],"VerificationCode":null,"isSMSSent":false} +const SAVE_SETTING = 'Services/Patients.svc/REST/UpdatePateintInfo'; -// URL : https://hmgwebservices.com/Services/H2ORemainder.svc/REST/H2o_UndoUserActivity -// flutter: {"Progress":1,"MobileNumber":"504278212","IdentificationNo":"2530976584","VersionID":20.0,"Channel":3,"LanguageID":2,"IPAdress":"10.20.10.20","generalid":"Cs2020@2016$2958","PatientOutSA":0,"SessionID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOjIsIm9iaiI6eyJUaW1lIjoiMjAyNS0xMi0yOFQwODozNjo0My45MTY0MzRaIiwiUGF0aWVudElEIjoiNDUxNTY5NyIsIlBhdGllbnRNZXJnZWRJRHMiOiI0NTE1Njk3IiwiUGF0aWVudE91dFNBIjpmYWxzZX0sImV4cCI6MTc2Njk2NjQwMH0.l1rCcs2OAU5u2J-iZMiO7NX6shGzLJV0hlYtVh2JeqY","isDentalAllowedBackend":false,"DeviceTypeID":1,"PatientID":4515697,"TokenID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOjIsIm9iaiI6eyJUaW1lIjoiMjAyNS0xMi0yOFQwODozNjo0My45MTY0MzRaIiwiUGF0aWVudElEIjoiNDUxNTY5NyIsIlBhdGllbnRNZXJnZWRJRHMiOiI0NTE1Njk3IiwiUGF0aWVudE91dFNBIjpmYWxzZX0sImV4cCI6MTc2Njk2NjQwMH0.l1rCcs2OAU5u2J-iZMiO7NX6shGzLJV0hlYtVh2JeqY","PatientTypeID":1,"PatientType":1,"Latitude":37.785834,"Longitude":-122.406417} -// flutter: response.body: -// flutter: {"Date":null,"LanguageID":0,"ServiceName":0,"Time":null,"AndroidLink":null,"AuthenticationTokenID":null,"Data":null,"Dataw":false,"DietType":0,"DietTypeID":0,"ErrorCode":null,"ErrorEndUserMessage":null,"ErrorEndUserMessageN":null,"ErrorMessage":null,"ErrorStatusCode":0,"ErrorType":0,"FoodCategory":0,"IOSLink":null,"IsAuthenticated":false,"MealOrderStatus":0,"MealType":0,"MessageStatus":1,"NumberOfResultRecords":0,"PatientBlodType":null,"SuccessMsg":null,"SuccessMsgN":null,"VidaUpdatedResponse":null,"IsHMGPatient":false,"LogInTokenID":null,"PhysicalActivityData":null,"RowExists":0,"UserDetailData":null,"UserDetailData_New":null,"UserProgressForMonthData":null,"UserProgressForTodayData":[{"QuantityConsumed":0.00,"PercentageConsumed":0.00,"PercentageLeft":100.00,"QuantityLimit":2125.00}],"UserProgressForWeekData":null,"UserProgressHistoryData":[],"VerificationCode":null,"isSMSSent":false} +const GET_PROFILE_IMAGE = 'Services/Patients.svc/REST/Patient_GetProfileImageData'; -// Progress":2 means weekly data +const UPLOAD_PROFILE_IMAGE = 'Services/Patients.svc/REST/Patient_InsertProfileImageData'; -// flutter: URL : https://hmgwebservices.com/Services/H2ORemainder.svc/REST/H2O_GetUserProgress -// flutter: {"Progress":2,"MobileNumber":"504278212","IdentificationNo":"2530976584","VersionID":20.0,"Channel":3,"LanguageID":2,"IPAdress":"10.20.10.20","generalid":"Cs2020@2016$2958","PatientOutSA":0,"SessionID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOjIsIm9iaiI6eyJUaW1lIjoiMjAyNS0xMi0yOFQwODozNjo0My45MTY0MzRaIiwiUGF0aWVudElEIjoiNDUxNTY5NyIsIlBhdGllbnRNZXJnZWRJRHMiOiI0NTE1Njk3IiwiUGF0aWVudE91dFNBIjpmYWxzZX0sImV4cCI6MTc2Njk2NjQwMH0.l1rCcs2OAU5u2J-iZMiO7NX6shGzLJV0hlYtVh2JeqY","isDentalAllowedBackend":false,"DeviceTypeID":1,"PatientID":4515697,"TokenID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOjIsIm9iaiI6eyJUaW1lIjoiMjAyNS0xMi0yOFQwODozNjo0My45MTY0MzRaIiwiUGF0aWVudElEIjoiNDUxNTY5NyIsIlBhdGllbnRNZXJnZWRJRHMiOiI0NTE1Njk3IiwiUGF0aWVudE91dFNBIjpmYWxzZX0sImV4cCI6MTc2Njk2NjQwMH0.l1rCcs2OAU5u2J-iZMiO7NX6shGzLJV0hlYtVh2JeqY","PatientTypeID":1,"PatientType":1,"Latitude":37.785834,"Longitude":-122.406417} -// flutter: response.body: -// [log] {"Date":null,"LanguageID":0,"ServiceName":0,"Time":null,"AndroidLink":null,"AuthenticationTokenID":null,"Data":null,"Dataw":false,"DietType":0,"DietTypeID":0,"ErrorCode":null,"ErrorEndUserMessage":null,"ErrorEndUserMessageN":null,"ErrorMessage":null,"ErrorStatusCode":0,"ErrorType":0,"FoodCategory":0,"IOSLink":null,"IsAuthenticated":false,"MealOrderStatus":0,"MealType":0,"MessageStatus":1,"NumberOfResultRecords":0,"PatientBlodType":null,"SuccessMsg":null,"SuccessMsgN":null,"VidaUpdatedResponse":null,"IsHMGPatient":false,"LogInTokenID":null,"PhysicalActivityData":null,"RowExists":0,"UserDetailData":null,"UserDetailData_New":null,"UserProgressForMonthData":null,"UserProgressForTodayData":null,"UserProgressForWeekData":[{"DayNumber":1,"DayDate":null,"DayName":"Sunday","PercentageConsumed":0},{"DayNumber":7,"DayDate":null,"DayName":"Saturday","PercentageConsumed":0},{"DayNumber":6,"DayDate":null,"DayName":"Friday","PercentageConsumed":0},{"DayNumber":5,"DayDate":null,"DayName":"Thursday","PercentageConsumed":0},{"DayNumber":4,"DayDate":null,"DayName":"Wednesday","PercentageConsumed":0},{"DayNumber":3,"DayDate":null,"DayName":"Tuesday","PercentageConsumed":0},{"DayNumber":2,"DayDate":null,"DayName":"Monday","PercentageConsumed":0}],"UserProgressHistoryData":[],"VerificationCode":null,"isSMSSent":false} +const DOWNLOAD_INVOICE_PDF = 'Services/Notifications.svc/REST/DownloadInvoiceReport'; -// Progress":1 means daily data +const DOWNLOAD_PHARMACY_INVOICE_PDF = 'Services/Notifications.svc/REST/DownloadInvoiceReport'; -//URL : https://hmgwebservices.com/Services/H2ORemainder.svc/REST/H2O_GetUserProgress -// flutter: {"Progress":1,"MobileNumber":"504278212","IdentificationNo":"2530976584","VersionID":20.0,"Channel":3,"LanguageID":2,"IPAdress":"10.20.10.20","generalid":"Cs2020@2016$2958","PatientOutSA":0,"SessionID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOjIsIm9iaiI6eyJUaW1lIjoiMjAyNS0xMi0yOFQwODozNjo0My45MTY0MzRaIiwiUGF0aWVudElEIjoiNDUxNTY5NyIsIlBhdGllbnRNZXJnZWRJRHMiOiI0NTE1Njk3IiwiUGF0aWVudE91dFNBIjpmYWxzZX0sImV4cCI6MTc2Njk2NjQwMH0.l1rCcs2OAU5u2J-iZMiO7NX6shGzLJV0hlYtVh2JeqY","isDentalAllowedBackend":false,"DeviceTypeID":1,"PatientID":4515697,"TokenID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOjIsIm9iaiI6eyJUaW1lIjoiMjAyNS0xMi0yOFQwODozNjo0My45MTY0MzRaIiwiUGF0aWVudElEIjoiNDUxNTY5NyIsIlBhdGllbnRNZXJnZWRJRHMiOiI0NTE1Njk3IiwiUGF0aWVudE91dFNBIjpmYWxzZX0sImV4cCI6MTc2Njk2NjQwMH0.l1rCcs2OAU5u2J-iZMiO7NX6shGzLJV0hlYtVh2JeqY","PatientTypeID":1,"PatientType":1,"Latitude":37.785834,"Longitude":-122.406417} -// flutter: response.body: -// flutter: {"Date":null,"LanguageID":0,"ServiceName":0,"Time":null,"AndroidLink":null,"AuthenticationTokenID":null,"Data":null,"Dataw":false,"DietType":0,"DietTypeID":0,"ErrorCode":null,"ErrorEndUserMessage":null,"ErrorEndUserMessageN":null,"ErrorMessage":null,"ErrorStatusCode":0,"ErrorType":0,"FoodCategory":0,"IOSLink":null,"IsAuthenticated":false,"MealOrderStatus":0,"MealType":0,"MessageStatus":1,"NumberOfResultRecords":0,"PatientBlodType":null,"SuccessMsg":null,"SuccessMsgN":null,"VidaUpdatedResponse":null,"IsHMGPatient":false,"LogInTokenID":null,"PhysicalActivityData":null,"RowExists":0,"UserDetailData":null,"UserDetailData_New":null,"UserProgressForMonthData":null,"UserProgressForTodayData":[{"QuantityConsumed":0.00,"PercentageConsumed":0.00,"PercentageLeft":100.00,"QuantityLimit":2125.00}],"UserProgressForWeekData":null,"UserProgressHistoryData":[],"VerificationCode":null,"isSMSSent":false} +const GET_APPOINTMENT_PARKING_QR = 'Services/outps.svc/rest/pms_getParkingTicketByAppointmentNo'; -// Progress":1 means monthly data +class ApiKeyConstants { + static final String googleMapsApiKey = 'AIzaSyB6TERnxIr0yJ3qG4ULBZbu0sAD4tGqtng'; +} -// flutter: URL : https://hmgwebservices.com/Services/H2ORemainder.svc/REST/H2O_GetUserProgress -// flutter: {"Progress":3,"MobileNumber":"504278212","IdentificationNo":"2530976584","VersionID":20.0,"Channel":3,"LanguageID":2,"IPAdress":"10.20.10.20","generalid":"Cs2020@2016$2958","PatientOutSA":0,"SessionID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOjIsIm9iaiI6eyJUaW1lIjoiMjAyNS0xMi0yOFQwODozNjo0My45MTY0MzRaIiwiUGF0aWVudElEIjoiNDUxNTY5NyIsIlBhdGllbnRNZXJnZWRJRHMiOiI0NTE1Njk3IiwiUGF0aWVudE91dFNBIjpmYWxzZX0sImV4cCI6MTc2Njk2NjQwMH0.l1rCcs2OAU5u2J-iZMiO7NX6shGzLJV0hlYtVh2JeqY","isDentalAllowedBackend":false,"DeviceTypeID":1,"PatientID":4515697,"TokenID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOjIsIm9iaiI6eyJUaW1lIjoiMjAyNS0xMi0yOFQwODozNjo0My45MTY0MzRaIiwiUGF0aWVudElEIjoiNDUxNTY5NyIsIlBhdGllbnRNZXJnZWRJRHMiOiI0NTE1Njk3IiwiUGF0aWVudE91dFNBIjpmYWxzZX0sImV4cCI6MTc2Njk2NjQwMH0.l1rCcs2OAU5u2J-iZMiO7NX6shGzLJV0hlYtVh2JeqY","PatientTypeID":1,"PatientType":1,"Latitude":37.785834,"Longitude":-122.406417} -// flutter: response.body: -// [log] {"Date":null,"LanguageID":0,"ServiceName":0,"Time":null,"AndroidLink":null,"AuthenticationTokenID":null,"Data":null,"Dataw":false,"DietType":0,"DietTypeID":0,"ErrorCode":null,"ErrorEndUserMessage":null,"ErrorEndUserMessageN":null,"ErrorMessage":null,"ErrorStatusCode":0,"ErrorType":0,"FoodCategory":0,"IOSLink":null,"IsAuthenticated":false,"MealOrderStatus":0,"MealType":0,"MessageStatus":1,"NumberOfResultRecords":0,"PatientBlodType":null,"SuccessMsg":null,"SuccessMsgN":null,"VidaUpdatedResponse":null,"IsHMGPatient":false,"LogInTokenID":null,"PhysicalActivityData":null,"RowExists":0,"UserDetailData":null,"UserDetailData_New":null,"UserProgressForMonthData":[{"MonthNumber":1,"MonthName":"January","PercentageConsumed":0},{"MonthNumber":2,"MonthName":"February","PercentageConsumed":0},{"MonthNumber":3,"MonthName":"March","PercentageConsumed":0},{"MonthNumber":4,"MonthName":"April","PercentageConsumed":0},{"MonthNumber":5,"MonthName":"May","PercentageConsumed":0},{"MonthNumber":6,"MonthName":"June","PercentageConsumed":0},{"MonthNumber":7,"MonthName":"July","PercentageConsumed":0},{"MonthNumber":8,"MonthName":"August","PercentageConsumed":0},{"MonthNumber":9,"MonthName":"September","PercentageConsumed":0},{"MonthNumber":10,"MonthName":"October","PercentageConsumed":0},{"MonthNumber":11,"MonthName":"November","PercentageConsumed":0},{"MonthNumber":12,"MonthName":"December","PercentageConsumed":0}],"UserProgressForTodayData":null,"UserProgressForWeekData":null,"UserProgressHistoryData":[],"VerificationCode":null,"isSMSSent":false} +class AppUrls { + static final hmgTermsUrlEn = 'https://hmg.com/en/Pages/Terms.aspx'; + static final hmgPrivacyUrlEn = 'https://hmg.com/en/Pages/Privacy.aspx'; + static final hmgTermsUrlAr = 'https://hmg.com/ar/Pages/Terms.aspx'; + static final hmgPrivacyUrlAr = 'https://hmg.com/ar/Pages/Privacy.aspx'; +} diff --git a/lib/core/app_assets.dart b/lib/core/app_assets.dart index 742db5c6..b4611890 100644 --- a/lib/core/app_assets.dart +++ b/lib/core/app_assets.dart @@ -17,6 +17,17 @@ class AppAssets { static const String email = '$svgBasePath/email.svg'; static const String globe = '$svgBasePath/globe.svg'; static const String globeOther = '$svgBasePath/globe_other.svg'; + static const String document = '$svgBasePath/document.svg'; + static const String report = '$svgBasePath/report.svg'; + static const String sucess = '$svgBasePath/sucess.svg'; + static const String livechatMessage = '$svgBasePath/live_chat_message_icon.svg'; + static const String fb = '$svgBasePath/fb.svg'; + static const String linkedin = '$svgBasePath/linkedin.svg'; + static const String youtube = '$svgBasePath/youtube.svg'; + static const String x = '$svgBasePath/twitter.svg'; + static const String x2 = '$svgBasePath/twitter2.svg'; + + // static const String globeOther = '$svgBasePath/globe_other.svg'; static const String cancel = '$svgBasePath/cancel.svg'; static const String bell = '$svgBasePath/bell.svg'; static const String login1 = '$svgBasePath/login1.svg'; @@ -117,6 +128,8 @@ class AppAssets { static const String search_by_region_icon = '$svgBasePath/search_by_region_icon.svg'; static const String location_red = '$svgBasePath/location_red.svg'; static const String location_unavailable = '$svgBasePath/location_unavailable.svg'; + static const String location_unavailable_filled = '$svgBasePath/location_unavailable_filled.svg'; + static const String location_unavailable_filled_background = '$svgBasePath/location_unavailable_filled_background.svg'; static const String livecare_clinic_icon = '$svgBasePath/livecare_clinic_icon.svg'; static const String immediate_service_icon = '$svgBasePath/immediate_service_icon.svg'; static const String no_visit_icon = '$svgBasePath/no_visit_icon.svg'; @@ -172,7 +185,7 @@ class AppAssets { static const String warning = '$svgBasePath/warning.svg'; static const String share_location = '$svgBasePath/share_location.svg'; static const String to_arrow = '$svgBasePath/to_arrow.svg'; - static const String dual_arrow = '$svgBasePath/to_arrow.svg'; + static const String dual_arrow = '$svgBasePath/dual_arrow.svg'; static const String forward_arrow_medium = '$svgBasePath/forward_arrow_medium.svg'; static const String eReferral = '$svgBasePath/e-referral.svg'; static const String comprehensiveCheckup = '$svgBasePath/comprehensive_checkup.svg'; @@ -180,6 +193,9 @@ class AppAssets { static const String ic_rrt_vehicle = '$svgBasePath/ic_rrt_vehicle.svg'; static const String doctor_profile_rating_icon = '$svgBasePath/doctor_profile_rating_icon.svg'; static const String doctor_profile_reviews_icon = '$svgBasePath/doctor_profile_reviews_icon.svg'; + static const String doctor_profile_schedule_icon = '$svgBasePath/doctor_profile_schedule_icon.svg'; + static const String bookmark_icon = '$svgBasePath/bookmark_icon.svg'; + static const String bookmark_filled_icon = '$svgBasePath/bookmark_filled_icon.svg'; static const String waiting_appointment_icon = '$svgBasePath/waitingAppo.svg'; static const String call_for_vitals = '$svgBasePath/call_for_vitals.svg'; static const String call_for_doctor = '$svgBasePath/call_for_doctor.svg'; @@ -216,6 +232,14 @@ class AppAssets { static const String ibw = '$svgBasePath/ibw.svg'; static const String general_health = '$svgBasePath/general_health.svg'; static const String women_health = '$svgBasePath/women_health.svg'; + static const String add_new_family_icon = '$svgBasePath/add_new_family_icon.svg'; + static const String h_calc = '$svgBasePath/h_calc.svg'; + static const String h_calc_selected = '$svgBasePath/h_calc_selected.svg'; + static const String weatherBottom = '$svgBasePath/weather_bottom.svg'; + static const String weatherBottomFill = '$svgBasePath/weather_bottom_fill.svg'; + static const String shoppingCart = '$svgBasePath/shoppingcart.svg'; + static const String share = '$svgBasePath/share.svg'; + static const String nextSwiper = '$svgBasePath/arrow-right-02.svg'; static const String height = '$svgBasePath/height.svg'; static const String weight = '$svgBasePath/weight.svg'; @@ -232,20 +256,21 @@ class AppAssets { static const String forward_top_nav_icon = '$svgBasePath/forward_top_nav_icon.svg'; static const String back_top_nav_icon = '$svgBasePath/back_top_nav_icon.svg'; static const String bluetooth = '$svgBasePath/bluetooth.svg'; + static const String calendar_filled_icon = '$svgBasePath/calendar_filled_icon.svg'; + static const String appointment_parking_icon = '$svgBasePath/appointment_parking_icon.svg'; //smartwatch static const String watchActivity = '$svgBasePath/watch_activity.svg'; static const String watchActivityTrailing = '$svgBasePath/watch_activity_trailing.svg'; - static const String watchSteps= '$svgBasePath/watch_steps.svg'; - static const String watchStepsTrailing= '$svgBasePath/watch_steps_trailing.svg'; - static const String watchSleep= '$svgBasePath/watch_sleep.svg'; - static const String watchSleepTrailing= '$svgBasePath/watch_sleep_trailing.svg'; - static const String watchBmi= '$svgBasePath/watch_bmi.svg'; - static const String watchBmiTrailing= '$svgBasePath/watch_bmi_trailing.svg'; - static const String watchWeight= '$svgBasePath/watch_weight.svg'; - static const String watchWeightTrailing= '$svgBasePath/watch_weight_trailing.svg'; - static const String watchHeight= '$svgBasePath/watch_height.svg'; - + static const String watchSteps = '$svgBasePath/watch_steps.svg'; + static const String watchStepsTrailing = '$svgBasePath/watch_steps_trailing.svg'; + static const String watchSleep = '$svgBasePath/watch_sleep.svg'; + static const String watchSleepTrailing = '$svgBasePath/watch_sleep_trailing.svg'; + static const String watchBmi = '$svgBasePath/watch_bmi.svg'; + static const String watchBmiTrailing = '$svgBasePath/watch_bmi_trailing.svg'; + static const String watchWeight = '$svgBasePath/watch_weight.svg'; + static const String watchWeightTrailing = '$svgBasePath/watch_weight_trailing.svg'; + static const String watchHeight = '$svgBasePath/watch_height.svg'; //bottom navigation// static const String homeBottom = '$svgBasePath/home_bottom.svg'; @@ -348,6 +373,33 @@ class AppAssets { static const String changeLanguageHomePageIcon = '$svgBasePath/change_language_home_page.svg'; static const String aiOverView = '$svgBasePath/ai_overview.svg'; static const String darkModeIcon = '$svgBasePath/dark_mode_icon.svg'; + static const String biometricLockIcon = '$svgBasePath/biometric_lock_icon.svg'; + static const String imageIcon = '$svgBasePath/image_icon.svg'; + static const String appointmentRatingIcon = '$svgBasePath/appointment_rating_icon.svg'; + static const String invoiceListIcon = '$svgBasePath/invoice_list_icon.svg'; + static const String open_camera = '$svgBasePath/open_camera.svg'; + static const String gallery = '$svgBasePath/gallery.svg'; + static const String files = '$svgBasePath/files.svg'; + static const String online_checkin_icon = '$svgBasePath/online_checkin_icon.svg'; + static const String hmg_pharmacy_logo = '$svgBasePath/hmg_pharmacy_logo.svg'; + static const String redeem_icon = '$svgBasePath/redeem_icon.svg'; + static const String expired_icon = '$svgBasePath/expired_icon.svg'; + + //Health Calculators + static const String bodyfatcalc = '$svgBasePath/bfc.svg'; + static const String duedatecalc = '$svgBasePath/ddc.svg'; + static const String idealbodyweightcacl = '$svgBasePath/ibwc.svg'; + static const String ovluationperiod = '$svgBasePath/op.svg'; + static const String bmicalc = '$svgBasePath/bmi1.svg'; + static const String bmrcalc = '$svgBasePath/bmr1.svg'; + + static const String refundIcon = '$svgBasePath/refund_icon.svg'; + static const String bankIcon = '$svgBasePath/bank_icon.svg'; + static const String bankIconOnly = '$svgBasePath/bank_icon_only.svg'; + static const String habibLogoOnly = '$svgBasePath/habib logo_only.svg'; + static const String descriptionIcon = '$svgBasePath/description_icon.svg'; + static const String selectImageIcon = '$svgBasePath/select_image_icon.svg'; + static const String patientQRCodeIcon = '$svgBasePath/patient_qr_code_icon.svg'; // PNGS // static const String hmgLogo = '$pngBasePath/hmg_logo.png'; @@ -355,6 +407,15 @@ class AppAssets { static const String homeHealthCareService = '$pngBasePath/home_health_care.png'; static const String pharmacyService = '$pngBasePath/pharmacy_service.png'; + static const String bloodDonationService = '$pngBasePath/blood_donation_image.png'; + static const String waterConsumptionService = '$pngBasePath/water_consumption_image.png'; + static const String emergencyService = '$pngBasePath/emergency_services_image.png'; + static const String cmcService = '$pngBasePath/cmc_services_image.png'; + static const String eReferralService = '$pngBasePath/ereferral_services_image.png'; + static const String carParkingService = '$pngBasePath/Carparking_services_image.png'; + static const String smartWatchService = '$pngBasePath/smartwatch_services_image.png'; + static const String healthTrackersService = '$pngBasePath/healthtrackers_services_image.png'; + static const String livechatService = '$pngBasePath/livechat_services_image.png'; static const String maleImg = '$pngBasePath/male_img.png'; static const String femaleImg = '$pngBasePath/female_img.png'; @@ -368,15 +429,23 @@ class AppAssets { static const String lockIcon = '$pngBasePath/lock-icon.png'; static const String dummyUser = '$pngBasePath/dummy_user.png'; static const String comprehensiveCheckupEn = '$pngBasePath/cc_en.png'; - static const String comprehensiveCheckupAr = '$pngBasePath/cc_er.png'; + static const String comprehensiveCheckupAr = '$pngBasePath/cc_ar.png'; static const String maleIcon = '$pngBasePath/male_icon.png'; static const String femaleIcon = '$pngBasePath/female_icon.png'; + static const String lakumLogo = '$pngBasePath/lakum_logo.png'; + static const String lakumLogoWhite = '$pngBasePath/lakum_logo_white.png'; static const String fullBodyFrontMale = '$pngBasePath/full_body_front_male.png'; static const String fullBodyBackMale = '$pngBasePath/full_body_back_male.png'; static const String fullBodyFrontFemale = '$pngBasePath/full_body_front_female.png'; static const String fullBodyBackFemale = '$pngBasePath/full_body_back_female.png'; static const String bmiFullBody = '$pngBasePath/bmi_image_1.png'; + static const String bmiFullBodyFemale = '$pngBasePath/female_bmi.png'; + static const String defaultMEP = '$pngBasePath/default_MEP.png'; + + static const String ambulance_section = '$pngBasePath/ambulance_section.png'; + static const String rrt_section = '$pngBasePath/rrt_section.png'; + static const String er_checkin = '$pngBasePath/er_checkin.png'; } class AppAnimations { @@ -397,4 +466,6 @@ class AppAnimations { static const String ambulance = '$lottieBasePath/ambulance.json'; static const String ambulanceAlert = '$lottieBasePath/ambulance_alert.json'; static const String rrtAmbulance = '$lottieBasePath/rrt_ambulance.json'; + + static const String hourGlass = '$lottieBasePath/HourGlass.json'; } diff --git a/lib/core/app_state.dart b/lib/core/app_state.dart index b95b883f..a27b727e 100644 --- a/lib/core/app_state.dart +++ b/lib/core/app_state.dart @@ -10,16 +10,23 @@ import 'package:hmg_patient_app_new/features/authentication/models/resp_models/a import 'package:hmg_patient_app_new/features/authentication/models/resp_models/check_user_staus_nhic_response_model.dart'; import 'package:hmg_patient_app_new/features/authentication/models/resp_models/select_device_by_imei.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/services/cache_service.dart'; import '../features/authentication/models/request_models/registration_payload_model.dart'; class AppState { NavigationService navigationService; + CacheService cacheService; - AppState({required this.navigationService}){ + static const String _profileImageKey = 'profile_image_data'; + + AppState({required this.navigationService, required this.cacheService}){ checkIfGMSAvailableOrNot(); + _loadProfileImageFromCache(); } + bool isEnabledOffersAndDiscountsCarousel = false; + double userLat = 0.0; set setUserLat(v) => userLat = v; @@ -39,6 +46,19 @@ class AppState { AuthenticatedUser? _authenticatedRootUser; AuthenticatedUser? _authenticatedChildUser; + bool isPaytabsEnabled = false; + bool isPayfortHostedPageEnabled = true; + + void setIsPaytabsEnabled(bool value) { + isPaytabsEnabled = value; + // isPaytabsEnabled = true; + } + + void setIsPayfortHostedPageEnabled(bool value) { + isPayfortHostedPageEnabled = value; + // isPayfortHostedPageEnabled = false; + } + int? _superUserID; bool isChildLoggedIn = false; bool isGMSAvailable = true; @@ -84,6 +104,40 @@ class AppState { set setUserBloodGroup(String value) => _userBloodGroup = value; + String? _profileImageData; + + String? get getProfileImageData => _profileImageData; + + set setProfileImageData(String? value) { + // Clear old data first + if (_profileImageData != null && _profileImageData != value) { + print('🔄 Replacing profile image: old data length=${_profileImageData!.length}, new data length=${value?.length ?? 0}'); + } + + // Set new value directly WITHOUT caching + _profileImageData = value; + + if (value != null && value.isNotEmpty) { + print('✅ Profile image set (length: ${value.length}) - NO CACHE'); + } else { + print('🗑️ Profile image cleared - NO CACHE'); + } + } + + /// Load profile image from cache on app initialization - DISABLED + void _loadProfileImageFromCache() { + // DO NOT LOAD FROM CACHE - always fetch fresh from API + _profileImageData = null; + print('📂 Profile image cache disabled - will fetch from API'); + } + + /// Clear profile image data (e.g., on logout or user switch) + void clearProfileImageCache() { + print('🧹 Clearing profile image data (was: ${_profileImageData != null ? "${_profileImageData!.length} chars" : "null"})'); + _profileImageData = null; + print('✅ Profile image data cleared - NO CACHE'); + } + SelectDeviceByImeiRespModelElement? _selectDeviceByImeiRespModelElement; void setSelectDeviceByImeiRespModelElement(SelectDeviceByImeiRespModelElement? value) { @@ -169,10 +223,98 @@ class AppState { ///this will be called if there is any problem in getting the user location void resetLocation() { userLong = 0.0; - userLong = 0.0; + userLat = 0.0; } setRatedVisible(bool value) { isRatedVisible = value; } + + Map _userSwitchPayloads = {}; + int _childSwitchCounter = 0; + + Map get getUserSwitchPayloads => _userSwitchPayloads; + + void addUserSwitchPayload(dynamic payload, {bool isSuperUser = false}) { + var patientID = payload is Map ? payload['patientid'] : null; + + if (patientID == null) { + if (isSuperUser) { + _userSwitchPayloads['superUser'] = payload; + _childSwitchCounter = 0; + } else { + _childSwitchCounter++; + if (_childSwitchCounter == 1) { + _userSwitchPayloads['child'] = payload; + } else { + _userSwitchPayloads['child$_childSwitchCounter'] = payload; + } + } + return; + } + + String? existingKey; + for (var entry in _userSwitchPayloads.entries) { + if (entry.value is Map && entry.value['PatientID'] == patientID) { + existingKey = entry.key; + break; + } + } + + if (isSuperUser) { + if (existingKey != null && existingKey != 'superUser') { + _userSwitchPayloads.remove(existingKey); + } + _userSwitchPayloads['superUser'] = payload; + _childSwitchCounter = 0; + } else { + if (existingKey != null) { + _userSwitchPayloads[existingKey] = payload; + } else { + _childSwitchCounter++; + if (_childSwitchCounter == 1) { + _userSwitchPayloads['child'] = payload; + } else { + _userSwitchPayloads['child$_childSwitchCounter'] = payload; + } + } + } + } + + + dynamic getUserSwitchPayload({required String userType}) { + return _userSwitchPayloads[userType]; + } + + dynamic getUserSwitchPayloadByIndex({bool isSuperUser = false, int? childIndex}) { + if (isSuperUser) { + return _userSwitchPayloads['superUser']; + } else if (childIndex != null) { + if (childIndex == 1) { + return _userSwitchPayloads['child']; + } else { + return _userSwitchPayloads['child$childIndex']; + } + } + return null; + } + + void clearUserSwitchPayloads() { + _userSwitchPayloads.clear(); + _childSwitchCounter = 0; + } + + void clearChildUsersKeepSuperUser() { + // Keep the super user payload + final superUserPayload = _userSwitchPayloads['superUser']; + + // Clear all payloads + _userSwitchPayloads.clear(); + _childSwitchCounter = 0; + + // Restore super user if it existed + if (superUserPayload != null) { + _userSwitchPayloads['superUser'] = superUserPayload; + } + } } diff --git a/lib/core/cache_consts.dart b/lib/core/cache_consts.dart index c1e06aa3..758676b2 100644 --- a/lib/core/cache_consts.dart +++ b/lib/core/cache_consts.dart @@ -76,7 +76,10 @@ class CacheConst { static const String hasEnabledQuickLogin = 'has-enabled-quick-login'; static const String quickLoginEnabled = 'quick-login-enabled'; static const String isMonthlyReportEnabled = 'is-monthly-report-enabled'; + static const String isShowSymptomCheckerBottomSheet = 'is-show-symptom-checker-bottom-sheet'; static const String zoomRoomID = 'zoom-room-id'; + static const String callTypeID = 'call-type-id'; static String isAppOpenedFromCall = "is_app_opened_from_call"; + static const String organSelectorTutorialShown = 'organ_selector_tutorial_shown'; } diff --git a/lib/core/dependencies.dart b/lib/core/dependencies.dart index 4266aa3b..ecfe1324 100644 --- a/lib/core/dependencies.dart +++ b/lib/core/dependencies.dart @@ -4,6 +4,7 @@ import 'package:get_it/get_it.dart'; import 'package:hmg_patient_app_new/core/api/api_client.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/location_util.dart'; +import 'package:hmg_patient_app_new/features/active_prescriptions/active_prescriptions_view_model.dart'; import 'package:hmg_patient_app_new/features/ask_doctor/ask_doctor_repo.dart'; import 'package:hmg_patient_app_new/features/ask_doctor/ask_doctor_view_model.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_repo.dart'; @@ -12,8 +13,6 @@ import 'package:hmg_patient_app_new/features/blood_donation/blood_donation_repo. import 'package:hmg_patient_app_new/features/blood_donation/blood_donation_view_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_repo.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; -import 'package:hmg_patient_app_new/features/active_prescriptions/active_prescriptions_view_model.dart'; -import 'package:hmg_patient_app_new/features/active_prescriptions/models/active_prescriptions_response_model.dart'; import 'package:hmg_patient_app_new/features/common/common_repo.dart'; import 'package:hmg_patient_app_new/features/contact_us/contact_us_repo.dart'; import 'package:hmg_patient_app_new/features/contact_us/contact_us_view_model.dart'; @@ -23,6 +22,7 @@ import 'package:hmg_patient_app_new/features/emergency_services/emergency_servic import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_repo.dart'; import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; import 'package:hmg_patient_app_new/features/health_trackers/health_trackers_repo.dart'; +import 'package:hmg_patient_app_new/features/health_trackers/health_trackers_view_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_repo.dart'; import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart'; import 'package:hmg_patient_app_new/features/immediate_livecare/immediate_livecare_repo.dart'; @@ -46,14 +46,21 @@ import 'package:hmg_patient_app_new/features/my_invoices/my_invoices_repo.dart'; import 'package:hmg_patient_app_new/features/my_invoices/my_invoices_view_model.dart'; import 'package:hmg_patient_app_new/features/notifications/notifications_repo.dart'; import 'package:hmg_patient_app_new/features/notifications/notifications_view_model.dart'; +import 'package:hmg_patient_app_new/features/offers_and_discounts/offers_and_discounts_repo.dart'; +import 'package:hmg_patient_app_new/features/offers_and_discounts/offers_and_discounts_view_model.dart'; import 'package:hmg_patient_app_new/features/payfort/payfort_repo.dart'; import 'package:hmg_patient_app_new/features/payfort/payfort_view_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/paytabs_view_model.dart'; import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_repo.dart'; import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_view_model.dart'; +import 'package:hmg_patient_app_new/features/profile_picture/profile_picture_view_model.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_repo.dart'; import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; import 'package:hmg_patient_app_new/features/qr_parking/qr_parking_repo.dart'; import 'package:hmg_patient_app_new/features/radiology/radiology_repo.dart'; import 'package:hmg_patient_app_new/features/radiology/radiology_view_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/refund_request_repo.dart'; +import 'package:hmg_patient_app_new/features/refund_request/refund_request_view_model.dart'; import 'package:hmg_patient_app_new/features/services_price_list/services_price_list_repo.dart'; import 'package:hmg_patient_app_new/features/services_price_list/services_price_list_view_model.dart'; import 'package:hmg_patient_app_new/features/smartwatch_health_data/health_provider.dart'; @@ -63,9 +70,12 @@ import 'package:hmg_patient_app_new/features/todo_section/todo_section_repo.dart import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart'; import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_repo.dart'; import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_view_model.dart'; -import 'package:hmg_patient_app_new/features/health_trackers/health_trackers_view_model.dart'; +import 'package:hmg_patient_app_new/features/weather/weather_repo.dart'; +import 'package:hmg_patient_app_new/features/weather/weather_view_model.dart'; import 'package:hmg_patient_app_new/services/analytics/analytics_service.dart'; +import 'package:hmg_patient_app_new/services/app_lifecycle_service.dart'; import 'package:hmg_patient_app_new/services/cache_service.dart'; +import 'package:hmg_patient_app_new/services/clarity_service.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; import 'package:hmg_patient_app_new/services/firebase_service.dart'; @@ -73,18 +83,19 @@ import 'package:hmg_patient_app_new/services/localauth_service.dart'; import 'package:hmg_patient_app_new/services/logger_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/services/notification_service.dart'; +import 'package:hmg_patient_app_new/services/permission_service.dart'; +import 'package:hmg_patient_app_new/core/services/turnstile_service.dart'; +import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_calendar_model.dart'; import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart'; import 'package:local_auth/local_auth.dart'; import 'package:logger/web.dart'; import 'package:shared_preferences/shared_preferences.dart'; -import '../features/monthly_reports/monthly_reports_repo.dart'; -import '../features/qr_parking/qr_parking_view_model.dart'; -import '../presentation/health_calculators_and_converts/health_calculator_view_model.dart'; - import '../features/active_prescriptions/active_prescriptions_repo.dart'; import '../features/monthly_reports/terms_conditions_repo.dart'; import '../features/monthly_reports/terms_conditions_view_model.dart'; +import '../features/qr_parking/qr_parking_view_model.dart'; +import '../presentation/health_calculators_and_converts/health_calculator_view_model.dart'; GetIt getIt = GetIt.instance; @@ -112,7 +123,12 @@ class AppDependencies { getIt.registerLazySingleton(() => LocalAuthentication()); getIt.registerLazySingleton(() => GAnalytics()); - getIt.registerLazySingleton(() => AppState(navigationService: getIt())); + + // Register CacheService before AppState so it can be injected + final sharedPreferences = await SharedPreferences.getInstance(); + getIt.registerLazySingleton(() => CacheServiceImp(sharedPreferences: sharedPreferences, loggerService: getIt())); + + getIt.registerLazySingleton(() => AppState(navigationService: getIt(), cacheService: getIt())); getIt.registerLazySingleton(() => LocationUtils( isShowConfirmDialog: false, navigationService: getIt(), @@ -125,20 +141,23 @@ class AppDependencies { navigationService: getIt(), )); - final sharedPreferences = await SharedPreferences.getInstance(); - getIt.registerLazySingleton(() => CacheServiceImp(sharedPreferences: sharedPreferences, loggerService: getIt())); - final flutterLocalNotificationsPlugin = FlutterLocalNotificationsPlugin(); getIt.registerLazySingleton(() => NotificationServiceImp( flutterLocalNotificationsPlugin: flutterLocalNotificationsPlugin, loggerService: getIt(), )); + // App Lifecycle Service - must be registered before ApiClient + getIt.registerLazySingleton(() => AppLifecycleService()); + getIt.registerLazySingleton(() => ApiClientImp(appState: getIt())); getIt.registerLazySingleton( () => LocalAuthService(loggerService: getIt(), localAuth: getIt()), ); + getIt.registerLazySingleton(() => PermissionService()); + getIt.registerLazySingleton(() => TurnstileService(getIt())); + // Repositories getIt.registerLazySingleton(() => CommonRepoImp(loggerService: getIt())); getIt.registerLazySingleton(() => AuthenticationRepoImp(loggerService: getIt(), apiClient: getIt())); @@ -160,18 +179,21 @@ class AppDependencies { getIt.registerLazySingleton(() => SymptomsCheckerRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => BloodDonationRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => WaterMonitorRepoImp(loggerService: getIt(), apiClient: getIt())); + getIt.registerLazySingleton(() => WeatherRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => MyInvoicesRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => HealthTrackersRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => MonthlyReportRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => ActivePrescriptionsRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => TermsConditionsRepoImp(loggerService: getIt(), apiClient: getIt())); - getIt.registerFactory(() => TermsConditionsViewModel(termsConditionsRepo: getIt(), errorHandlerService: getIt(), - ),); + getIt.registerFactory(() => TermsConditionsViewModel(termsConditionsRepo: getIt(), errorHandlerService: getIt())); getIt.registerLazySingleton(() => MonthlyReportsRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => QrParkingRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => NotificationsRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => AskDoctorRepoImp(loggerService: getIt(), apiClient: getIt())); getIt.registerLazySingleton(() => ServicesPriceListRepoImp(loggerService: getIt(), apiClient: getIt())); + getIt.registerLazySingleton(() => ProfileSettingsRepoImp(loggerService: getIt(), apiClient: getIt())); + getIt.registerLazySingleton(() => RefundRequestRepoImp(apiClient: getIt(), loggerService: getIt())); + getIt.registerLazySingleton(() => OffersAndDiscountsRepoImp(loggerService: getIt(), apiClient: getIt())); // ViewModels // Global/shared VMs → LazySingleton @@ -182,20 +204,23 @@ class AppDependencies { () => RadiologyViewModel(radiologyRepo: getIt(), errorHandlerService: getIt(), navigationService: getIt()), ); - getIt.registerLazySingleton(() => PrescriptionsViewModel(prescriptionsRepo: getIt(), errorHandlerService: getIt(), navServices: getIt())); + getIt.registerLazySingleton( + () => PrescriptionsViewModel(prescriptionsRepo: getIt(), errorHandlerService: getIt(), navServices: getIt())); getIt.registerLazySingleton(() => InsuranceViewModel(insuranceRepo: getIt(), errorHandlerService: getIt())); - getIt.registerLazySingleton(() => MyAppointmentsViewModel(myAppointmentsRepo: getIt(), errorHandlerService: getIt(), appState: getIt())); + getIt.registerLazySingleton( + () => MyAppointmentsViewModel(myAppointmentsRepo: getIt(), errorHandlerService: getIt(), appState: getIt())); - getIt.registerLazySingleton(() => AppointmentRatingViewModel(myAppointmentsRepo: getIt(), errorHandlerService: getIt(), appState: getIt())); + getIt.registerLazySingleton( + () => AppointmentRatingViewModel(myAppointmentsRepo: getIt(), errorHandlerService: getIt(), appState: getIt())); getIt.registerLazySingleton( () => PayfortViewModel(payfortRepo: getIt(), errorHandlerService: getIt()), ); getIt.registerLazySingleton( - () => HabibWalletViewModel(habibWalletRepo: getIt(), errorHandlerService: getIt()), + () => HabibWalletViewModel(habibWalletRepo: getIt(), errorHandlerService: getIt(), refundRequestRepo: getIt()), ); getIt.registerLazySingleton( @@ -207,7 +232,12 @@ class AppDependencies { getIt.registerLazySingleton( () => BookAppointmentsViewModel( - bookAppointmentsRepo: getIt(), errorHandlerService: getIt(), navigationService: getIt(), myAppointmentsViewModel: getIt(), locationUtils: getIt(), dialogService: getIt()), + bookAppointmentsRepo: getIt(), + errorHandlerService: getIt(), + navigationService: getIt(), + myAppointmentsViewModel: getIt(), + locationUtils: getIt(), + dialogService: getIt()), ); getIt.registerLazySingleton( @@ -221,10 +251,26 @@ class AppDependencies { getIt.registerLazySingleton( () => AuthenticationViewModel( - authenticationRepo: getIt(), cacheService: getIt(), navigationService: getIt(), dialogService: getIt(), appState: getIt(), errorHandlerService: getIt(), localAuthService: getIt()), + authenticationRepo: getIt(), + cacheService: getIt(), + navigationService: getIt(), + dialogService: getIt(), + appState: getIt(), + errorHandlerService: getIt(), + localAuthService: getIt(), + turnstileService: getIt()), ); - getIt.registerLazySingleton(() => ProfileSettingsViewModel(cacheService: getIt())); + getIt.registerLazySingleton(() => ProfileSettingsViewModel( + cacheService: getIt(), + profileSettingsRepo: getIt(), + errorHandlerService: getIt(), + )); + + getIt.registerLazySingleton(() => ProfilePictureViewModel( + appState: getIt(), + profileSettingsViewModel: getIt(), + )); getIt.registerLazySingleton(() => DateRangeSelectorRangeViewModel()); @@ -290,8 +336,12 @@ class AppDependencies { getIt.registerLazySingleton(() => WaterMonitorViewModel(waterMonitorRepo: getIt(), errorHandlerService: getIt())); + getIt.registerLazySingleton( + () => WeatherMonitorViewModel(weatherRepo: getIt(), errorHandlerService: getIt(), locationUtils: getIt())); + //commenting this because its already define there was on run time error because of this. - getIt.registerLazySingleton(() => MyInvoicesViewModel(myInvoicesRepo: getIt(), errorHandlerService: getIt(), navServices: getIt())); + getIt.registerLazySingleton( + () => MyInvoicesViewModel(myInvoicesRepo: getIt(), errorHandlerService: getIt(), navServices: getIt())); getIt.registerLazySingleton(() => MonthlyReportViewModel(errorHandlerService: getIt(), monthlyReportRepo: getIt())); @@ -299,21 +349,30 @@ class AppDependencies { getIt.registerLazySingleton(() => HealthTrackersViewModel(healthTrackersRepo: getIt(), errorHandlerService: getIt())); getIt.registerLazySingleton( - () => ActivePrescriptionsViewModel( - errorHandlerService: getIt(), - activePrescriptionsRepo: getIt() - ), - ); - getIt.registerFactory( - () => QrParkingViewModel( - qrParkingRepo: getIt(), - errorHandlerService: getIt(), - cacheService: getIt(), - ), - ); + () => ActivePrescriptionsViewModel(errorHandlerService: getIt(), activePrescriptionsRepo: getIt())); + getIt.registerFactory(() => QrParkingViewModel( + qrParkingRepo: getIt(), errorHandlerService: getIt(), cacheService: getIt())); getIt.registerLazySingleton(() => AskDoctorViewModel(askDoctorRepo: getIt(), errorHandlerService: getIt())); - getIt.registerLazySingleton(() => ServicesPriceListViewModel(servicesPriceListRepo: getIt(), errorHandlerService: getIt())); + getIt.registerLazySingleton( + () => ServicesPriceListViewModel(servicesPriceListRepo: getIt(), errorHandlerService: getIt())); + + getIt.registerLazySingleton( + () => OffersAndDiscountsViewModel(offersAndDiscountsRepo: getIt(), errorHandlerService: getIt())); + + getIt.registerLazySingleton( + () => DateRangCalenderModel(appState: getIt(), navigationService: getIt(), dialogService: getIt())); + getIt.registerLazySingleton(() => RefundRequestViewModel( + appState: getIt(), + refundRequestRepo: getIt(), + errorHandlerService: getIt(), + )); + + getIt.registerLazySingleton(() => PayTabsViewModel(appState: getIt())); + + getIt.registerLazySingleton( + () => ClarityService(appState: getIt.get()), + ); } } diff --git a/lib/core/enums.dart b/lib/core/enums.dart index 8bb8330c..4ac919e7 100644 --- a/lib/core/enums.dart +++ b/lib/core/enums.dart @@ -5,8 +5,11 @@ // unverified, // } +import 'package:easy_localization/easy_localization.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; enum AuthMethodTypesEnum { sms, whatsApp, fingerPrint, faceID, moreOptions } @@ -20,6 +23,17 @@ enum SelectionTypeEnum { dropdown, calendar, search, time } enum GenderTypeEnum { male, female } +extension GenderTypeEnumExtension on GenderTypeEnum { + String get displayName { + switch (this) { + case GenderTypeEnum.male: + return LocaleKeys.malE.tr(); + case GenderTypeEnum.female: + return LocaleKeys.femaleGender.tr(); + } + } +} + enum MaritalStatusTypeEnum { single, married, divorced, widowed } enum ChipTypeEnum { success, error, alert, info, warning, lightBg, primaryRed } @@ -58,17 +72,17 @@ extension HealthCalculatorExtenshion on HealthCalculatorsTypeEnum { bool isArabic = appState.getLanguageID() == 1 ? true : false; switch (this) { case HealthCalculatorsTypeEnum.bmi: - return isArabic ? "حاسبة مؤشر كتلة الجسم" : "BMI Calculator"; + return isArabic ? "مؤشر كتلة الجسم" : "BMI Calculator"; case HealthCalculatorsTypeEnum.calories: - return isArabic ? "حاسبة السعرات الحرارية" : "Calories Calculator"; + return isArabic ? "السعرات الحرارية" : "Calories Calculator"; case HealthCalculatorsTypeEnum.bmr: - return isArabic ? "حاسبة معدل الأيض الأساسي" : "BMR Calculator"; + return isArabic ? "معدل الايض" : "BMR Calculator"; case HealthCalculatorsTypeEnum.idealBodyWeight: - return isArabic ? "الوزن المثالي للجسم" : "Ideal Body Weight Calculator"; + return isArabic ? "الوزن المثالي" : "Ideal Body Weight Calculator"; case HealthCalculatorsTypeEnum.bodyFat: - return isArabic ? "حاسبة الدهون في الجسم" : "Body Fat Calculator"; + return isArabic ? "دهون الجسم" : "Body Fat Calculator"; case HealthCalculatorsTypeEnum.crabsProteinFat: - return isArabic ? "حاسبة البروتين والدهون في سرطان البحر" : "Crabs Protein & Fat Calculator"; + return isArabic ? "حاسبة المغذيات" : "Crabs Protein & Fat Calculator"; case HealthCalculatorsTypeEnum.ovulation: return isArabic ? "فترة الإباضة" : "Ovulation Period"; case HealthCalculatorsTypeEnum.deliveryDueDate: @@ -80,6 +94,22 @@ extension HealthCalculatorExtenshion on HealthCalculatorsTypeEnum { case HealthCalculatorsTypeEnum.triglycerides: return isArabic ? "الدهون الثلاثية في الدم" : "Triglycerides Fat Blood"; } + } + + String get title { + AppState appState = getIt.get(); + bool isArabic = appState.getLanguageID() == 1 ? true : false; + switch (this) { + case HealthCalculatorsTypeEnum.crabsProteinFat: + return isArabic ? "نتيجة المغذيات" : "Nutrient Results"; + case HealthCalculatorsTypeEnum.calories: + return isArabic ? "سعراتك الحرارية" : "Calories"; + + case HealthCalculatorsTypeEnum.calories: + return isArabic ? "مؤشر كتلة الجسم" : "BMI"; + default: + return "Your ${this.name.toCamelCase}"; + } } static LoginTypeEnum? fromValue(int value) { diff --git a/lib/core/location_util.dart b/lib/core/location_util.dart index cf26d24e..0e360abe 100644 --- a/lib/core/location_util.dart +++ b/lib/core/location_util.dart @@ -89,12 +89,32 @@ class LocationUtils { } } - LocationPermission permissionGranted = await Geolocator.checkPermission(); + LocationPermission permissionGranted = await Geolocator.checkPermission(); if (permissionGranted == LocationPermission.denied) { permissionGranted = await Geolocator.requestPermission(); if (permissionGranted != LocationPermission.whileInUse && permissionGranted != LocationPermission.always) { appState.resetLocation(); - onFailure?.call(); + if (onFailure == null && isShowConfirmDialog) { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: navigationService.navigatorKey.currentContext!), + navigationService.navigatorKey.currentContext!, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.grantLocationPermission.tr(), + isShowActionButtons: true, + onCancelTap: () { + navigationService.pop(); + }, + onConfirmTap: () async { + navigationService.pop(); + openAppSettings(); + }), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } else { + onFailure?.call(); + } return; } } else if (permissionGranted == LocationPermission.deniedForever) { @@ -104,7 +124,7 @@ class LocationUtils { title: LocaleKeys.notice.tr(context: navigationService.navigatorKey.currentContext!), navigationService.navigatorKey.currentContext!, child: Utils.getWarningWidget( - loadingText: "Please grant location permission from app settings to see better results", + loadingText: LocaleKeys.grantLocationPermission.tr(), isShowActionButtons: true, onCancelTap: () { navigationService.pop(); @@ -237,6 +257,30 @@ class LocationUtils { appState.userLong = locationData.longitude; } + Future isLocationPermissionEnabled() async { + if (Platform.isIOS || (await isGMSDevice ?? true)) { + return await _isGMSLocationPermissionEnabled(); + } else { + return await _isHMSLocationPermissionEnabled(); + } + } + + Future _isGMSLocationPermissionEnabled() async { + bool serviceEnabled = await Geolocator.isLocationServiceEnabled(); + if (!serviceEnabled) return false; + + LocationPermission permission = await Geolocator.checkPermission(); + return permission == LocationPermission.whileInUse || permission == LocationPermission.always; + } + + Future _isHMSLocationPermissionEnabled() async { + bool serviceEnabled = await Geolocator.isLocationServiceEnabled(); + if (!serviceEnabled) return false; + + LocationPermission permission = await Geolocator.checkPermission(); + return permission == LocationPermission.whileInUse || permission == LocationPermission.always; + } + void getHMSLocation({VoidCallback? onFailure, Function(LatLng p1)? onSuccess, VoidCallback? onLocationDeniedForever}) async { try { var location = Location(); @@ -265,7 +309,7 @@ class LocationUtils { title: LocaleKeys.notice.tr(context: navigationService.navigatorKey.currentContext!), navigationService.navigatorKey.currentContext!, child: Utils.getWarningWidget( - loadingText: "Please grant location permission from app settings to see better results", + loadingText: LocaleKeys.grantLocationPermission.tr(), isShowActionButtons: true, onCancelTap: () { navigationService.pop(); @@ -318,4 +362,26 @@ class LocationUtils { onFailure?.call(); } } + + + + void onFailureDilouge(){ + return showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: navigationService.navigatorKey.currentContext!), + navigationService.navigatorKey.currentContext!, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.grantLocationPermission.tr(), + isShowActionButtons: true, + onCancelTap: () { + navigationService.pop(); + }, + onConfirmTap: () async { + navigationService.pop(); + openAppSettings(); + }), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } } diff --git a/lib/core/paytabs_config.dart b/lib/core/paytabs_config.dart new file mode 100644 index 00000000..4d90ee8f --- /dev/null +++ b/lib/core/paytabs_config.dart @@ -0,0 +1,12 @@ +/// Default configuration values for PayTabs Payment SDK +class PaymentSdkDefaultConfig { + static const String profileID = "119730"; + static const String serverKey = "SWJ9LD22MT-JLJZLBKTLK-WGWTLWGTWR"; + static const String clientKey = "C7K2DQ-PDDN6B-69B2K7-P9GB9T"; + static const String defaultCurrency = "SAR"; + static const double defaultAmount = 10.0; + static const String defaultMerchantCountryCode = "SA"; + static const String defaultMerchantName = "Sulaiman Al Habib Medical Group"; + static const String defaultMerchantAppleBundleID = "merchant.com.hmgwebservices"; + static const String defaultMerchantAppleBundleIDUAT = "merchant.com.hmgwebservices.uat"; +} diff --git a/lib/core/services/turnstile_service.dart b/lib/core/services/turnstile_service.dart new file mode 100644 index 00000000..b30113e0 --- /dev/null +++ b/lib/core/services/turnstile_service.dart @@ -0,0 +1,60 @@ +import 'dart:async'; +import 'package:cloudflare_turnstile/cloudflare_turnstile.dart'; +import 'package:flutter/foundation.dart'; +import 'package:hmg_patient_app_new/services/logger_service.dart'; + +/// Service to handle Cloudflare Turnstile captcha verification +class TurnstileService { + final LoggerService _loggerService; + + // Replace with your Cloudflare Turnstile site key + static const String _siteKey = '0x4AAAAAAAkmbvEy63pcxBBt'; + + TurnstileService(this._loggerService); + + /// Get Turnstile token using invisible mode + /// Returns the token on success, null on failure + Future getTurnstileToken() async { + // Initialize an instance of invisible Cloudflare Turnstile with your site key + final turnstile = CloudflareTurnstile.invisible( + siteKey: _siteKey, + onTimeout: () {}, + options: TurnstileOptions( + retryInterval: const Duration(milliseconds: 2000), + ), + ); + + try { + // Get the Turnstile token + final token = await turnstile.getToken(); + _loggerService.logInfo('Turnstile token retrieved successfully'); + return token; // Return the token upon success + } on TurnstileException catch (e) { + // Handle Turnstile failure + _loggerService.logError('Turnstile challenge failed: ${e.message}'); + if (kDebugMode) { + print('Challenge failed: ${e.message}'); + } + } catch (e) { + // Handle any other exceptions + _loggerService.logError('Unexpected error during Turnstile challenge: $e'); + if (kDebugMode) { + print('Unexpected error: $e'); + } + } finally { + // Ensure the Turnstile instance is properly disposed of + turnstile.dispose(); + } + + // Return null if the token couldn't be generated + return null; + } + + /// Get the site key for Turnstile widget + String getSiteKey() => _siteKey; + + /// Validate if Turnstile is properly configured + bool isConfigured() { + return _siteKey.isNotEmpty && _siteKey != '0x4AAAAAAAkmbvEy63pcxBBt'; + } +} diff --git a/lib/core/utils/calender_utils_new.dart b/lib/core/utils/calender_utils_new.dart index 9edfdced..f733f82e 100644 --- a/lib/core/utils/calender_utils_new.dart +++ b/lib/core/utils/calender_utils_new.dart @@ -1,23 +1,79 @@ import 'dart:async'; import 'package:device_calendar_plus/device_calendar_plus.dart'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:get_it/get_it.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:jiffy/jiffy.dart' show Jiffy; import 'package:manage_calendar_events/manage_calendar_events.dart' hide Calendar; +import 'package:permission_handler/permission_handler.dart'; class CalenderUtilsNew { final DeviceCalendar calender = DeviceCalendar.instance; List writableCalender = []; - CalenderUtilsNew._instance() { - getCalenders(); - } + /// Completer to ensure getCalenders() only runs once at a time + Completer? _calendarInitCompleter; + + CalenderUtilsNew._instance(); static final CalenderUtilsNew instance = CalenderUtilsNew._instance(); - Future getCalenders() async { + /// Ensures calendars are loaded exactly once. Safe to call multiple times — + /// subsequent calls await the same future. + Future ensureCalendarsLoaded() async { + if (writableCalender.isNotEmpty) return; + if (_calendarInitCompleter != null) { + // Already in progress — just wait for it + return _calendarInitCompleter!.future; + } + _calendarInitCompleter = Completer(); + try { + await _loadCalendars(); + _calendarInitCompleter!.complete(); + } catch (e) { + _calendarInitCompleter!.completeError(e); + _calendarInitCompleter = null; // Allow retry on failure + rethrow; + } + } + + Future _loadCalendars() async { CalendarPermissionStatus result = await DeviceCalendar.instance.hasPermissions(); - if (result != CalendarPermissionStatus.granted) await DeviceCalendar.instance.requestPermissions(); + if (result != CalendarPermissionStatus.granted) { + await DeviceCalendar.instance.requestPermissions(); + result = await DeviceCalendar.instance.hasPermissions(); + if (result != CalendarPermissionStatus.granted) { + print("the permission is not granted"); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: GetIt + .instance() + .navigatorKey + .currentContext!), + GetIt + .instance() + .navigatorKey + .currentContext!, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.calendarPermissionAlert.tr(), + isShowActionButtons: true, + onCancelTap: () { + GetIt.instance().pop(); + }, + onConfirmTap: () async { + GetIt.instance().pop(); + openAppSettings(); + }), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + } var calenders = await calender.listCalendars(); calenders.forEach((calender) { if (!calender.readOnly) { @@ -26,21 +82,13 @@ class CalenderUtilsNew { }); } - FutureOr createOrUpdateEvent( - {required String title, - required String description, - required String location, - DateTime? scheduleDateTime, - String? eventId, - int? reminderMinutes}) async { - if (writableCalender.isEmpty) { - await getCalenders(); - } + FutureOr createOrUpdateEvent({required String title, required String description, required String location, DateTime? scheduleDateTime, String? eventId, int? reminderMinutes}) async { + await ensureCalendarsLoaded(); var writableCalendars = writableCalender.first; String eventResult = ""; - CalendarPermissionStatus result = await DeviceCalendar.instance.hasPermissions(); - if (result != CalendarPermissionStatus.granted) await DeviceCalendar.instance.requestPermissions(); - print(result); + // CalendarPermissionStatus result = await DeviceCalendar.instance.hasPermissions(); + // if (result != CalendarPermissionStatus.granted) await DeviceCalendar.instance.requestPermissions(); + // print(result); // String eventId = await getEventIdIfEventExist(title!.split("#").last); // if (eventId.isEmpty) { @@ -67,65 +115,98 @@ class CalenderUtilsNew { // return eventId.isNotEmpty; } - FutureOr createMultipleEvents( - {required int reminderMinutes, - int? frequencyNumber, - required int days, - required String orderDate, - required String itemDescriptionN, - required String route, - Function(String)? onFailure, - String? prescriptionNumber}) async { - DateTime currentDay = DateTime.now(); - DateTime actualDate = DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day, 8, 0); + FutureOr createMultipleEvents({ + required int reminderMinutes, + int? frequencyNumber, + num scaleOffset = 24, + required int days, + required String orderDate, + required String itemDescriptionN, + required String route, + Function(String)? onFailure, + String? prescriptionNumber, + DateTime? scheduleDateTime, + }) async { + DateTime startTimeOfDay = scheduleDateTime ?? DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day, 8, 0); print("the frequency is $frequencyNumber"); + print("the scaleOffset is $scaleOffset"); + frequencyNumber ??= 2; //Some time frequency number is null so by default will be 2 - int interval = calculateIntervalAsPerFrequency(frequencyNumber); - // int remainingDays = days - (Jiffy.parseFromDateTime(DateTime.now()).diff(Jiffy.parseFromDateTime(DateUtil.convertStringToDate(orderDate)), unit: Unit.day) as int); - Duration difference = (actualDate.difference(DateUtil.convertStringToDate(orderDate))); - int remainingDays = 5; - // if (remainingDays.isNegative) { - // onFailure?.call("Prescription date has been already passed you can not add a reminder for this prescription."); - // return false; - // } + + // Calculate interval between doses in hours + int intervalBetweenDoses = calculateIntervalAsPerFrequency(frequencyNumber, scaleOffset); + + // Calculate interval between cycles (days between each set of doses) + // scaleOffset represents hours in one cycle (e.g., 24 for daily, 168 for weekly) + int daysPerCycle = (scaleOffset / 24).ceil(); // 168 / 24 = 7 days + + + print("Interval between doses: $intervalBetweenDoses hours"); + print("Days per cycle: $daysPerCycle"); + + // Calculate remaining days based on prescription days and order date + DateTime orderDateTime = DateUtil.convertStringToDate(orderDate); + int daysSinceOrder = DateTime.now().difference(orderDateTime).inDays; + int remainingDays = days - daysSinceOrder; + + // Validate that prescription is still active + if (remainingDays <= 0) { + onFailure?.call(LocaleKeys.prescriptionDatePassedError.tr()); + return false; + } bool statusOfOperation = false; - for (int i = 0; i < remainingDays; i++) { - //event for number of days. + // Calculate number of cycles (e.g., for weekly medication over 90 days = ~13 weeks) + int numberOfCycles = (remainingDays / daysPerCycle).ceil(); // 90 / 7 = 13 cycles + + print("Number of cycles: $numberOfCycles"); + print("Remaining days: $remainingDays"); + + // Iterate through each cycle (daily, weekly, etc.) + + for (int i = 0; i < numberOfCycles; i++) { // Loops 13 times (weekly) + DateTime cycleStartDate = startTimeOfDay.add(Duration(days: i * daysPerCycle)); // Adds 7 days each time + // Check if this cycle is still within the prescription period + if (cycleStartDate.difference(orderDateTime).inDays > days) { + break; // Stop if we've exceeded the prescription duration + } + + DateTime actualDate = cycleStartDate; + + // Create events for each dose in this cycle (frequency per cycle) for (int j = 0; j < frequencyNumber; j++) { statusOfOperation = await createOrUpdateEvent( - title: "$itemDescriptionN} Medication about to due for prescription , #$prescriptionNumber", + title: "$itemDescriptionN Medication about to due for prescription, #$prescriptionNumber", description: "$itemDescriptionN $frequencyNumber $route ", scheduleDateTime: actualDate, location: '', - //event id with varitions reminderMinutes: reminderMinutes); if (!statusOfOperation) return false; - actualDate = actualDate.add(Duration(hours: interval)); - // if (actualDate.difference(currentDay).inDays == 1) break; + // Add interval between doses (in hours) + actualDate = actualDate.add(Duration(hours: intervalBetweenDoses)); } - // actualDate = actualDate.add(Duration(days: 1)); } return statusOfOperation; } - int calculateIntervalAsPerFrequency(int frequencyNumber) { - return 24 ~/ frequencyNumber; + int calculateIntervalAsPerFrequency(int frequencyNumber, num scaleOffset) { + return scaleOffset ~/ frequencyNumber; } FutureOr> getEvents() async { - var availableCalender = writableCalender.first; + var availableCalender = writableCalender.first; DateTime startEventsDate = Jiffy.parseFromDateTime(DateTime.now()).subtract(days: 30).dateTime; DateTime endEventsDate = Jiffy.parseFromDateTime(DateTime.now()).add(days: 120).dateTime; return await calender.listEvents(startEventsDate, endEventsDate, calendarIds: [availableCalender.id]); } FutureOr checkIfEventExist(String admissionId) async { + // await ensureCalendarsLoaded(); if (writableCalender.isEmpty) { - await getCalenders(); + await ensureCalendarsLoaded(); } List events = await getEvents(); if (events.isEmpty) return false; @@ -139,7 +220,7 @@ class CalenderUtilsNew { FutureOr getEventIdIfEventExist(String admissionId) async { if (writableCalender.isEmpty) { - await getCalenders(); + await ensureCalendarsLoaded(); } List events = await getEvents(); if (events.isEmpty) return ""; @@ -152,7 +233,7 @@ class CalenderUtilsNew { FutureOr checkAndRemove({required String id}) async { if (writableCalender.isEmpty) { - await getCalenders(); + await ensureCalendarsLoaded(); } List events = await getEvents(); if (events.isEmpty) return false; @@ -169,7 +250,7 @@ class CalenderUtilsNew { FutureOr checkAndRemoveMultipleItems({required String id}) async { if (writableCalender.isEmpty) { - await getCalenders(); + await ensureCalendarsLoaded(); } List events = await getEvents(); if (events.isEmpty) return false; diff --git a/lib/core/utils/date_util.dart b/lib/core/utils/date_util.dart index 6c4e7bec..97c8dad0 100644 --- a/lib/core/utils/date_util.dart +++ b/lib/core/utils/date_util.dart @@ -9,7 +9,7 @@ class DateUtil { /// convert String To Date function /// [date] String we want to convert static DateTime convertStringToDate(String? date) { - if (date == null) return DateTime.now(); + if (date == null || date == "null") return DateTime.now(); if (date.isEmpty) return DateTime.now(); const start = "/Date("; @@ -18,7 +18,8 @@ class DateUtil { final endIndex = date.indexOf(end, startIndex + start.length); return DateTime.fromMillisecondsSinceEpoch(int.parse( date.substring(startIndex + start.length, endIndex), - )); + // ), isUtc: true).add(Duration(hours: 3)); + ), isUtc: true).toLocal(); } static DateTime convertStringToDateSaudiTimezone(String date, int projectId) { @@ -599,6 +600,17 @@ class DateUtil { return '${hours} hr ${minutes} min'; } + + /// Parses an ISO 8601 date string that may have more than 6 fractional-second digits. + /// e.g. '2026-04-12T12:07:35.4226413' → truncates to 6 digits before parsing. + static DateTime? parseISODate(String? date) { + if (date == null || date.isEmpty) return null; + final truncated = date.replaceFirstMapped( + RegExp(r'(\.\d{6})\d+'), + (m) => m.group(1)!, + ); + return DateTime.tryParse(truncated); + } } extension OnlyDate on DateTime { diff --git a/lib/core/utils/image_compression_helper.dart b/lib/core/utils/image_compression_helper.dart new file mode 100644 index 00000000..71567621 --- /dev/null +++ b/lib/core/utils/image_compression_helper.dart @@ -0,0 +1,103 @@ +import 'dart:io'; +import 'package:flutter_image_compress/flutter_image_compress.dart'; +import 'package:path_provider/path_provider.dart'; +import 'package:path/path.dart' as path; + +class ImageCompressionHelper { + /// Compress and resize image to max 200x200 and ensure file size < 1MB + /// Returns the compressed image file + static Future compressAndResizeImage(File imageFile) async { + try { + // Check if file exists + if (!await imageFile.exists()) { + print('Image file does not exist'); + return null; + } + + print('Original file size: ${await imageFile.length() / 1024} KB'); + + // Get temporary directory + final tempDir = await getTemporaryDirectory(); + final targetPath = path.join( + tempDir.path, + 'compressed_${DateTime.now().millisecondsSinceEpoch}.jpg', + ); + + // Start with quality 85 + int quality = 85; + const int maxFileSizeBytes = 1048576; // 1MB + + // Compress the image + var result = await FlutterImageCompress.compressWithFile( + imageFile.absolute.path, + quality: quality, + format: CompressFormat.jpeg, + ); + + if (result == null || result.isEmpty) { + print('Compression returned null or empty'); + return null; + } + + // Write to file + File resultFile = File(targetPath); + await resultFile.writeAsBytes(result); + + int fileSize = await resultFile.length(); + print('First compression: ${fileSize / 1024} KB, quality: $quality'); + + // If file size is still > 1MB, reduce quality progressively + int attempts = 0; + while (fileSize > maxFileSizeBytes && quality > 10 && attempts < 10) { + quality -= 10; + attempts++; + + result = await FlutterImageCompress.compressWithFile( + imageFile.absolute.path, + quality: quality, + format: CompressFormat.jpeg, + ); + + if (result == null || result.isEmpty) { + print('Compression returned null on attempt $attempts'); + break; + } + + await resultFile.writeAsBytes(result); + fileSize = await resultFile.length(); + print('Compression attempt $attempts: ${fileSize / 1024} KB, quality: $quality'); + } + + // Final validation + if (await resultFile.exists()) { + final finalSize = await resultFile.length(); + print('Final compressed image size: ${finalSize / 1024} KB'); + + if (finalSize > maxFileSizeBytes) { + print('Warning: Final file size (${finalSize / 1024} KB) exceeds 1MB limit'); + } + + return resultFile; + } + + return null; + } catch (e, stackTrace) { + print('Error compressing image: $e'); + print('Stack trace: $stackTrace'); + return null; + } + } + + /// Get file size in KB + static Future getFileSizeInKB(File file) async { + int bytes = await file.length(); + return bytes / 1024; + } + + /// Get file size in MB + static Future getFileSizeInMB(File file) async { + int bytes = await file.length(); + return bytes / (1024 * 1024); + } +} + diff --git a/lib/core/utils/loading_utils.dart b/lib/core/utils/loading_utils.dart index bd24d30c..48d4f2dd 100644 --- a/lib/core/utils/loading_utils.dart +++ b/lib/core/utils/loading_utils.dart @@ -15,37 +15,37 @@ class LoadingUtils { static bool get isLoading => _isLoadingVisible; - static showFullScreenLoader({bool barrierDismissible = true, isSuccessDialog = false, String loadingText = "Loading, Please wait..."}) { - if (!_isLoadingVisible) { - _isLoadingVisible = true; - final context = _navigationService.navigatorKey.currentContext; - log("got the context in showFullScreenLoading"); - if (context == null) return; - - showDialog( - barrierDismissible: barrierDismissible, - context: context, - barrierColor: AppColors.blackColor.withOpacity(0.5), - useRootNavigator: false, - useSafeArea: false, - builder: (BuildContext context) { - return Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.h, - hasShadow: false, - ), - child: Material( - child: Center( - child: isSuccessDialog ? Utils.getSuccessWidget(loadingText: loadingText) : Utils.getLoadingWidget(loadingText: loadingText), - ).paddingSymmetrical(24.w, 0), - ), - ); - }).then((value) { - _isLoadingVisible = false; - }); - } - } + // static showFullScreenLoader({bool barrierDismissible = true, isSuccessDialog = false, String loadingText = "Loading, Please wait..."}) { + // if (!_isLoadingVisible) { + // _isLoadingVisible = true; + // final context = _navigationService.navigatorKey.currentContext; + // log("got the context in showFullScreenLoading"); + // if (context == null) return; + // + // showDialog( + // barrierDismissible: barrierDismissible, + // context: context, + // barrierColor: AppColors.blackColor.withOpacity(0.5), + // useRootNavigator: false, + // useSafeArea: false, + // builder: (BuildContext context) { + // return Container( + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // color: AppColors.whiteColor, + // borderRadius: 20.h, + // hasShadow: false, + // ), + // child: Material( + // child: Center( + // child: isSuccessDialog ? Utils.getSuccessWidget(loadingText: loadingText) : Utils.getLoadingWidget(loadingText: loadingText), + // ).paddingSymmetrical(24.w, 0), + // ), + // ); + // }).then((value) { + // _isLoadingVisible = false; + // }); + // } + // } static hideFullScreenLoader() { if (!_isLoadingVisible) return; diff --git a/lib/core/utils/penguin_method_channel.dart b/lib/core/utils/penguin_method_channel.dart index c3da7242..939b98a9 100644 --- a/lib/core/utils/penguin_method_channel.dart +++ b/lib/core/utils/penguin_method_channel.dart @@ -22,7 +22,6 @@ class PenguinMethodChannel { "baseURL": "https://eagleiq.hmg.com", "dataURL": "https://eagleiq.hmg.com", "positionURL": "https://eagleiq.hmg.com", - "dataServiceName": "api", "positionServiceName": "pe", "clientID": "HMG", diff --git a/lib/core/utils/push_notification_handler.dart b/lib/core/utils/push_notification_handler.dart index d438d449..89f6969a 100644 --- a/lib/core/utils/push_notification_handler.dart +++ b/lib/core/utils/push_notification_handler.dart @@ -15,15 +15,29 @@ import 'package:flutter_callkit_incoming/entities/notification_params.dart'; import 'package:flutter_callkit_incoming/flutter_callkit_incoming.dart'; import 'package:flutter_ios_voip_kit_karmm/call_state_type.dart'; import 'package:flutter_ios_voip_kit_karmm/flutter_ios_voip_kit.dart'; +import 'package:hmg_patient_app_new/core/api/api_client.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/cache_consts.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/features/notifications/models/resp_models/notification_response_model.dart'; +import 'package:hmg_patient_app_new/presentation/notifications/notification_details_page.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:uuid/uuid.dart'; +// Global tracking variables for call state +bool _isCallInProgress = false; +String? _currentCallId; +Timer? _callTimeoutTimer; +String? _currentSessionId; // Store session ID for API call + // |--> Push Notification Background @pragma('vm:entry-point') Future backgroundMessageHandler(dynamic message) async { - print("Firebase backgroundMessageHandler!!!"); + log("Firebase backgroundMessageHandler!!!"); await Firebase.initializeApp(); fir.RemoteMessage message_; @@ -37,32 +51,48 @@ Future backgroundMessageHandler(dynamic message) async { callPage(String sessionID, String token) async {} _incomingCall(Map data) async { - print('the value of the _incomingCall remote message is $data'); + log('the value of the _incomingCall remote message is $data'); - // LandingPage.incomingCallData = IncomingCallData.fromJson(data); - // var dataItem = await AppSharedPreferences().getObject('call_data'); - // if(dataItem != null ) return; // to stop repeated attempt to invoke the call - // if (LandingPage.isOpenCallPage == false) { - // LandingPage.isOpenCallPage = true; + // Check if there's already a call in progress to prevent duplicates + // if (_isCallInProgress && _currentCallId != null) { + // log('⚠️ Call already in progress (ID: $_currentCallId), ignoring duplicate notification'); + // return; + // } String roomID = data['session_id'] ?? ''; + String callTypeID = data['AppointmentNo'] ?? ''; + + log('🔍 Extracted from notification data:'); + log(' - roomID (session_id): "$roomID"'); + log(' - callTypeID (AppointmentNo): "$callTypeID"'); + + // Generate unique call ID + var _currentUuid = Uuid().v4(); + _currentCallId = _currentUuid; + _isCallInProgress = true; + _currentSessionId = roomID; // Store session ID for decline API call - // GetIt.instance().saveString(key: CacheConst.zoomRoomID, value: roomID); - // GetIt.instance().saveBool(key: CacheConst.isAppOpenedFromCall, value: true); + log('📞 Starting new call with ID: $_currentCallId, Session: $_currentSessionId'); - Utils.saveStringFromPrefs(CacheConst.zoomRoomID, roomID); - Utils.saveBoolFromPrefs(CacheConst.isAppOpenedFromCall, true); + await Utils.saveStringFromPrefs(CacheConst.zoomRoomID, roomID); + await Utils.saveStringFromPrefs(CacheConst.callTypeID, callTypeID); + await Utils.saveBoolFromPrefs(CacheConst.isAppOpenedFromCall, true); + + log('💾 Saved to cache:'); + log(' - CacheConst.zoomRoomID: "$roomID"'); + log(' - CacheConst.callTypeID: "$callTypeID"'); + log(' - CacheConst.isAppOpenedFromCall: true'); WidgetsFlutterBinding.ensureInitialized(); - var _currentUuid = Uuid().v4(); + int callKitType = callTypeID == '2' ? 0 : 1; + CallKitParams callKitParams = CallKitParams( id: _currentUuid, nameCaller: "Dr Al Habib", appName: 'Dr Al Habib', avatar: 'https://play-lh.googleusercontent.com/FBNNpxb7m6eM6wtW7MV1Ffp6OXOGLI38q47zcvP29OCYA1yhYH5mZzl5itZi0TgOyZpG', - // handle: LandingPage.incomingCallData.name, - type: 1, + type: callKitType, textAccept: 'Accept', textDecline: 'Decline', missedCallNotification: NotificationParams( @@ -78,7 +108,11 @@ _incomingCall(Map data) async { callbackText: 'Hang Up', ), duration: 30000, - extra: {'userId': '1a2b3c4d'}, + extra: { + 'userId': '1a2b3c4d', + 'callTypeID': callTypeID, + 'roomID': roomID, + }, headers: {'apiKey': 'Abc@123!', 'platform': 'flutter'}, android: const AndroidParams( isImportant: true, @@ -87,10 +121,10 @@ _incomingCall(Map data) async { isShowLogo: false, logoUrl: "https://play-lh.googleusercontent.com/FBNNpxb7m6eM6wtW7MV1Ffp6OXOGLI38q47zcvP29OCYA1yhYH5mZzl5itZi0TgOyZpG", ringtonePath: 'system_ringtone_default', - backgroundColor: '#ED1C2B', + backgroundColor: '#2E3039', backgroundUrl: 'https://saudipedia.com/en/saudipediaen/uploads/images/2024/08/02/97358.jpg', actionColor: '#4CAF50', - textColor: '#000000', + textColor: '#FFFFFF', incomingCallNotificationChannelName: "Incoming Call", missedCallNotificationChannelName: "Missed Call", isShowCallID: false), @@ -111,12 +145,77 @@ _incomingCall(Map data) async { ringtonePath: 'system_ringtone_default', ), ); + FlutterCallkitIncoming.unsilenceEvents(); await FlutterCallkitIncoming.showCallkitIncoming(callKitParams); + // Start 60-second timeout timer to auto-dismiss call + _callTimeoutTimer?.cancel(); // Cancel any existing timer + _callTimeoutTimer = Timer(Duration(seconds: 40), () async { + log('⏱️ Call timeout (60 seconds) - auto dismissing call notification'); + await _endCallAndCleanup(_currentUuid); + }); + await Future.delayed(Duration(milliseconds: 500)); } +// Helper method to end call and cleanup +Future _endCallAndCleanup(String callId, {bool isDeclined = false}) async { + try { + // If call was declined, update session status via API + if (isDeclined && _currentSessionId != null && _currentSessionId!.isNotEmpty) { + await _updateSessionStatus(_currentSessionId!, 3, 'Patient'); + } + + // End the specific call + await FlutterCallkitIncoming.endCall(callId); + + // Clear all calls to ensure clean state + await FlutterCallkitIncoming.endAllCalls(); + + // Reset tracking flags + _isCallInProgress = false; + _currentCallId = null; + _currentSessionId = null; + + // Cancel timer + _callTimeoutTimer?.cancel(); + _callTimeoutTimer = null; + + // Clear cache + await Utils.saveBoolFromPrefs(CacheConst.isAppOpenedFromCall, false); + await Utils.saveStringFromPrefs(CacheConst.zoomRoomID, ''); + await Utils.saveStringFromPrefs(CacheConst.callTypeID, ''); + } catch (e) { + // Force reset flags even if there's an error + _isCallInProgress = false; + _currentCallId = null; + _currentSessionId = null; + _callTimeoutTimer?.cancel(); + _callTimeoutTimer = null; + } +} + +// Helper method to update session status via API +Future _updateSessionStatus(String sessionId, int sessionStatus, String sessionEndedBy) async { + try { + final apiClient = getIt.get(); + + Map requestBody = {"Open_SessionID": sessionId, "SessionStatus": sessionStatus, "SessionEndedBy": sessionEndedBy}; + + await apiClient.post( + CHANGE_PATIENT_ER_SESSION, + body: requestBody, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) {}, + onFailure: (error, statusCode, {messageStatus, failureType}) { + log('❌ Failed to update session status: $error'); + }, + ); + } catch (e) { + log('❌ Exception updating session status: $e'); + } +} + Future openCallPage(BuildContext context) async { try { // if (incomingCallData!.background == "0") { @@ -145,7 +244,7 @@ Future openCallPage(BuildContext context) async { // ); // } } catch (err) { - print(err); + log(err.toString()); // await PlatformExceptionAlertDialog( // exception: Exception(err), // ).show(context); @@ -244,7 +343,7 @@ class PushNotificationHandler { // int seconds = 30, // }) async { // timeOutTimer = Timer(Duration(seconds: seconds), () async { - // print('🎈 example: timeOut'); + // log('🎈 example: timeOut'); // final incomingCallerName = await voIPKit.getIncomingCallerName(); // voIPKit.unansweredIncomingCall( // skipLocalNotification: false, @@ -257,21 +356,23 @@ class PushNotificationHandler { init(BuildContext context) async { this.context = context; + await requestPermissions(); + if (Platform.isIOS) { voIPKit.getVoIPToken().then((value) { - print("🎈 APNS VOIP KIT TOKEN: $value"); + log("🎈 APNS VOIP KIT TOKEN: $value"); Utils.saveStringFromPrefs(CacheConst.voipToken, value ?? ""); // AppSharedPreferences().setString(APNS_TOKEN, value!); }); voIPKit.onDidUpdatePushToken = (String token) { - print('🎈 example: onDidUpdatePushToken: $token'); + log('🎈 example: onDidUpdatePushToken: $token'); }; voIPKit.onDidReceiveIncomingPush = ( Map payload, ) async { - print('🎈 example: onDidReceiveIncomingPush $payload'); + log('🎈 example: onDidReceiveIncomingPush $payload'); // _timeOut(); }; @@ -280,18 +381,30 @@ class PushNotificationHandler { String callerId, ) async { try { - print('🎈 example: onDidRejectIncomingCall $uuid - $callerId'); + log('🎈 example: onDidRejectIncomingCall $uuid - $callerId'); timeOutTimer.cancel(); - } catch (err) {} + // Cleanup on reject with API call + if (_currentCallId != null) { + await _endCallAndCleanup(_currentCallId!, isDeclined: true); + } + } catch (err) { + log(err.toString()); + } }; voIPKit.onDidAcceptIncomingCall = ( String uuid, String callerId, ) async { - print('🎈 example: onDidAcceptIncomingCall $uuid - $callerId'); + log('🎈 example: onDidAcceptIncomingCall $uuid - $callerId'); await voIPKit.acceptIncomingCall(callerState: CallStateType.calling); await voIPKit.callConnected(); + + // Cleanup on accept - cancel timer and reset flags + _callTimeoutTimer?.cancel(); + _callTimeoutTimer = null; + _isCallInProgress = false; + _currentCallId = null; await Future.delayed(Duration(seconds: 2)).then((val) async { await voIPKit.endCall(); }); @@ -313,12 +426,12 @@ class PushNotificationHandler { if (Platform.isAndroid) { try { final fcmToken = await FirebaseMessaging.instance.getToken().catchError((err) { - print(err); + log(err); }); if (fcmToken != null) onToken(fcmToken); // } } catch (ex) { - print("Notification Exception: $ex"); + log("Notification Exception: $ex"); } FirebaseMessaging.onBackgroundMessage(backgroundMessageHandler); } @@ -334,8 +447,10 @@ class PushNotificationHandler { badge: true, sound: true, ); - if (permission.authorizationStatus == AuthorizationStatus.denied) return; - } else {} + // if (permission.authorizationStatus == AuthorizationStatus.denied) return; + } else { + final permission = await FirebaseMessaging.instance.requestPermission(); + } try { FirebaseMessaging.instance.getInitialMessage().then((RemoteMessage? message) async { @@ -350,7 +465,7 @@ class PushNotificationHandler { } catch (ex) {} FirebaseMessaging.onMessage.listen((RemoteMessage message) async { - print("Firebase onMessage!!!"); + log("Firebase onMessage!!!"); // showCallkitIncoming(); if (Platform.isIOS) { await Future.delayed(Duration(milliseconds: 3000)).then((value) { @@ -362,7 +477,7 @@ class PushNotificationHandler { }); FirebaseMessaging.onMessageOpenedApp.listen((RemoteMessage message) async { - print("Firebase onMessageOpenedApp!!!"); + log("Firebase onMessageOpenedApp!!!"); if (Platform.isIOS) { await Future.delayed(Duration(milliseconds: 3000)).then((value) { newMessage(message); @@ -374,21 +489,21 @@ class PushNotificationHandler { if (Platform.isIOS) { FirebaseMessaging.instance.getAPNSToken().then((String? token) { - print("Push Notification getAPNSToken: ${token!}"); + log("Push Notification getAPNSToken: ${token!}"); }).catchError((err) { - print("Push Notification getAPNSToken ERR: ${err.toString()}"); + log("Push Notification getAPNSToken ERR: ${err.toString()}"); }); } FirebaseMessaging.instance.getToken().then((String? token) { - print("Push Notification getToken: ${token!}"); + log("Push Notification getToken: ${token!}"); onToken(token!); }).catchError((err) { - print(err); + log(err.toString()); }); FirebaseMessaging.instance.onTokenRefresh.listen((fcm_token) { - print("Push Notification onTokenRefresh: $fcm_token"); + log("Push Notification onTokenRefresh: $fcm_token"); onToken(fcm_token); }); @@ -396,23 +511,43 @@ class PushNotificationHandler { final deviceInfo = DeviceInfoPlugin(); final androidInfo = await deviceInfo.androidInfo; - int sdkInt = androidInfo.version.sdkInt ?? 0; - if (sdkInt >= 33) { - await FlutterCallkitIncoming.requestFullIntentPermission(); - } + // int sdkInt = androidInfo.version.sdkInt ?? 0; + // if (sdkInt >= 33) { + // await FlutterCallkitIncoming.requestFullIntentPermission(); + // } } } newMessage(RemoteMessage remoteMessage) async { - print("Remote Message: ${remoteMessage.data}"); + log("Remote Message: ${remoteMessage.data}"); if (remoteMessage.data.isEmpty) { return; } - debugPrint('the value of the remote message is ${remoteMessage.data}'); + log('the value of the remote message is ${remoteMessage.data}'); if (remoteMessage.data['is_call'] == 'true' || remoteMessage.data['is_call'] == true) { _incomingCall(remoteMessage.data); // showCallkitIncoming(); } else { + NotificationResponseModel notification = NotificationResponseModel(); + + notification.createdOn = DateUtil.convertDateToString(DateTime.now()); + notification.isSentOn = DateUtil.convertDateToString(DateTime.now()); + notification.messageTypeData = remoteMessage.data['picture']; + notification.messageType = notification.messageTypeData != null && notification.messageTypeData!.isNotEmpty ? "image" : ""; + notification.message = remoteMessage.data['message']; + notification.notificationType = remoteMessage.data["NotificationType"].toString(); + if (remoteMessage.data["NotificationType"] == "2") { + notification.videoURL = remoteMessage.data["VideoUrl"]; + } + + Navigator.of(getIt.get().navigatorKey.currentContext!).push( + CustomPageRoute( + page: NotificationDetailsPage( + notification: notification, + ), + ), + ); + // GetNotificationsResponseModel notification = new GetNotificationsResponseModel(); // // notification.createdOn = DateUtil.convertDateToString(DateTime.now()); @@ -430,7 +565,7 @@ class PushNotificationHandler { } onToken(String token) async { - print("Push Notification Token: $token"); + log("Push Notification Token: $token"); await Utils.saveStringFromPrefs(CacheConst.pushToken, token); } @@ -452,11 +587,11 @@ class PushNotificationHandler { // Permission.audio, // Permission.microphone, ].request(); - print("=-=-=-=-=-=-=-=-=-=-"); - print(statuses[Permission.notification]); + log("=-=-=-=-=-=-=-=-=-=-"); + log(statuses[Permission.notification].toString()); } } catch (_) { - debugPrint(_.toString()); + log(_.toString()); } } } diff --git a/lib/core/utils/request_utils.dart b/lib/core/utils/request_utils.dart index bb947398..4d4ae4b5 100644 --- a/lib/core/utils/request_utils.dart +++ b/lib/core/utils/request_utils.dart @@ -1,7 +1,6 @@ import 'dart:developer'; import 'package:easy_localization/easy_localization.dart'; -import 'package:hijri_gregorian_calendar/hijri_gregorian_calendar.dart'; import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; @@ -12,6 +11,7 @@ import 'package:hmg_patient_app_new/features/authentication/models/request_model import 'package:hmg_patient_app_new/features/authentication/models/request_models/send_activation_request_model.dart'; import 'package:hmg_patient_app_new/features/common/models/commong_authanticated_req_model.dart'; import 'package:hmg_patient_app_new/features/common/models/family_file_request.dart'; +import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_calendar_model.dart'; class RequestUtils { static dynamic getPatientAuthenticationRequest({ diff --git a/lib/core/utils/size_utils.dart b/lib/core/utils/size_utils.dart index d04ad70d..7f4013ed 100644 --- a/lib/core/utils/size_utils.dart +++ b/lib/core/utils/size_utils.dart @@ -1,4 +1,3 @@ -import 'dart:developer'; import 'dart:math' as math; import 'package:flutter/material.dart'; // These are the Viewport values of your Figma Design. @@ -26,8 +25,14 @@ extension ResponsiveExtension on num { /// Check if device is likely a foldable bool get _isFoldable { double aspectRatio = _screenWidth / _screenHeight; - // Foldable devices typically have aspect ratios close to 1:1 when unfolded - return (aspectRatio > 0.9 && aspectRatio < 1.1) && (_screenWidth > 700 || _screenHeight > 700); + double shorterSide = _screenWidth < _screenHeight ? _screenWidth : _screenHeight; + + // Foldable devices (unfolded) typically have: + // - Shorter side > 600 logical pixels (to exclude regular phones) + // - Aspect ratio between 0.80 and 0.92 (almost square, like Galaxy Z Fold) + // Galaxy Z Fold 5: 1812x2176 physical, ~690x796 logical = 0.866 aspect ratio + // Regular phones: typically 375-430 width, aspect ratio 0.45-0.55 + return (shorterSide > 600) && (aspectRatio > 0.80 && aspectRatio < 0.92); } /// Scale text size - enhanced for foldable devices @@ -38,8 +43,13 @@ extension ResponsiveExtension on num { // Enhanced clamping for different device types double clamp; if (SizeUtils.deviceType == DeviceType.tablet || _isFoldable) { - // More conservative scaling for tablets and foldables - clamp = (aspectRatio > 1.5 || aspectRatio < 0.67) ? 1.6 : 1.4; + if (SizeUtils.deviceType != DeviceType.tablet && _isFoldable) { + // clamp = (aspectRatio > 1.5 || aspectRatio < 0.67) ? 1.4 : 1.4; + clamp = 1.1; + } else { + // More conservative scaling for tablets and foldables + clamp = (aspectRatio > 1.5 || aspectRatio < 0.67) ? 1.6 : 1.4; + } } else { // Original logic for phones clamp = (aspectRatio > 1.3 || aspectRatio < 0.77) ? 1.6 : 1.2; @@ -53,7 +63,7 @@ extension ResponsiveExtension on num { double get w { double baseScale = (this * _screenWidth) / figmaDesignWidth; - if (_isFoldable|| isTablet ) { + if (_isFoldable || isTablet) { // For foldables, use more conservative width scaling double scale = _screenWidth / figmaDesignWidthTF; scale = scale.clamp(0.8, 1.4); @@ -67,7 +77,7 @@ extension ResponsiveExtension on num { double get h { double baseScale = (this * _screenHeight) / figmaDesignHeight; - if (_isFoldable || isTablet ) { + if (_isFoldable || isTablet) { // For foldables, use height-based scaling but with constraints double scale = (_screenHeight / figmaDesignHeightTF).clamp(0.8, 1.4); return this * scale; @@ -225,10 +235,16 @@ class SizeUtils { deviceType = DeviceType.mobile; } - log("longerSide: $longerSide"); - log("shorterSide: $shorterSide"); - log("isTablet: $isTablet"); - log("isFoldable: $isFoldable"); + debugPrint("============ Device Detection ============"); + debugPrint("longerSide: $longerSide"); + debugPrint("shorterSide: $shorterSide"); + debugPrint("width: $width"); + debugPrint("height: $height"); + debugPrint("deviceType: $deviceType"); + debugPrint("isTablet: $isTablet"); + debugPrint("isFoldable: $isFoldable"); + debugPrint("aspectRatio: ${width / height}"); + debugPrint("=========================================="); } } @@ -241,6 +257,12 @@ bool get isDesktop => SizeUtils.deviceType == DeviceType.desktop; bool get isFoldable { double aspectRatio = SizeUtils.width / SizeUtils.height; - // Foldable devices typically have aspect ratios close to 1:1 when unfolded - return (aspectRatio > 0.9 && aspectRatio < 1.1) && (SizeUtils.width > 700 || SizeUtils.height > 700); + double shorterSide = SizeUtils.width < SizeUtils.height ? SizeUtils.width : SizeUtils.height; + + // Foldable devices (unfolded) typically have: + // - Shorter side > 600 logical pixels (to exclude regular phones) + // - Aspect ratio between 0.80 and 0.92 (almost square, like Galaxy Z Fold) + // Galaxy Z Fold 5: 1812x2176 physical, ~690x796 logical = 0.866 aspect ratio + // Regular phones: typically 375-430 width, aspect ratio 0.45-0.55 + return (shorterSide > 600) && (aspectRatio > 0.80 && aspectRatio < 0.92); } diff --git a/lib/core/utils/utils.dart b/lib/core/utils/utils.dart index ac8c152a..320bd1cf 100644 --- a/lib/core/utils/utils.dart +++ b/lib/core/utils/utils.dart @@ -4,12 +4,14 @@ import 'dart:io'; import 'dart:math' as dartMath; import 'dart:typed_data'; +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:connectivity_plus/connectivity_plus.dart'; import 'package:crypto/crypto.dart' as crypto; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_svg/flutter_svg.dart'; import 'package:fluttertoast/fluttertoast.dart'; +import 'package:get_it/get_it.dart'; import 'package:google_api_availability/google_api_availability.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; @@ -26,6 +28,8 @@ import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/dialogs/confirm_dialog.dart'; import 'package:hmg_patient_app_new/widgets/loading_dialog.dart'; +import 'package:hmg_patient_app_new/widgets/accessibility/preserve_image_colors.dart'; +import 'package:hmg_patient_app_new/widgets/accessibility/preserve_svg_colors.dart'; import 'package:lottie/lottie.dart'; import 'package:path_provider/path_provider.dart'; import 'package:shared_preferences/shared_preferences.dart'; @@ -61,7 +65,8 @@ class Utils { "ProjectOutSA": false, "UsingInDoctorApp": false, "IsHMC": false - },{ + }, + { "Desciption": "Jeddah Fayhaa Hospital", "DesciptionN": "مستشفى جدة الفيحاء", "ID": 3, // Campus ID @@ -98,7 +103,11 @@ class Utils { static bool isArabicText(String inputText) { bool isArabicText = false; - final arabic = RegExp(r'^[\u0621-\u064A]+'); + // Updated regex to include: + // - Arabic letters: \u0621-\u064A + // - Arabic numerals: \u0660-\u0669 (٠-٩) + // - Persian numerals: \u06F0-\u06F9 (۰-۹) + final arabic = RegExp(r'[\u0621-\u064A\u0660-\u0669\u06F0-\u06F9]'); if (arabic.hasMatch(inputText)) { isArabicText = true; } else { @@ -115,10 +124,8 @@ class Utils { // ), // )); return !isAddHours - ? DateFormat('hh:mm a', appState.isArabic() ? "ar_SA" : "en_US") - .format(DateTime.tryParse(startTime.contains("T") ? startTime : convertStringToDateTime(startTime))!.toLocal()) - : DateFormat('hh:mm a', appState.isArabic() ? "ar_SA" : "en_US") - .format(DateTime.tryParse(startTime.contains("T") ? startTime : convertStringToDateTime(startTime))!.add( + ? DateFormat('hh:mm a', appState.isArabic() ? "ar_SA" : "en_US").format(DateTime.tryParse(startTime.contains("T") ? startTime : convertStringToDateTime(startTime))!.toLocal()) + : DateFormat('hh:mm a', appState.isArabic() ? "ar_SA" : "en_US").format(DateTime.tryParse(startTime.contains("T") ? startTime : convertStringToDateTime(startTime))!.add( Duration( hours: isAddHours ? 3 : 0, ), @@ -152,9 +159,11 @@ class Utils { static String getDayMonthYearDateFormatted(DateTime? dateTime) { if (dateTime == null) return ""; - return appState.isArabic() - ? "${dateTime.day.toString()} ${getMonthArabic(dateTime.month)}, ${dateTime.year.toString()}" - : "${dateTime.day.toString()} ${getMonth(dateTime.month)}, ${dateTime.year.toString()}"; + return + // appState.isArabic() + // ? "${dateTime.day.toString()} ${getMonthArabic(dateTime.month)}, ${dateTime.year.toString()}" + // : + "${dateTime.day.toString()} ${getMonth(dateTime.month)}, ${dateTime.year.toString()}"; } /// get month by @@ -349,12 +358,9 @@ class Utils { crossAxisAlignment: CrossAxisAlignment.center, children: [ SizedBox(height: isSmallWidget ? 0.h : 48.h), - Lottie.asset(AppAnimations.noData, - repeat: false, reverse: false, frameRate: FrameRate(60), width: width.w, height: height.h, fit: BoxFit.fill), + Lottie.asset(AppAnimations.noData, repeat: false, reverse: false, frameRate: FrameRate(60), width: width.w, height: height.h, fit: BoxFit.fill), SizedBox(height: 16.h), - (noDataText ?? LocaleKeys.noDataAvailable.tr()) - .toText14(weight: FontWeight.w500, color: AppColors.greyTextColor, isCenter: true) - .paddingSymmetrical(64.w, 0.h), + (noDataText ?? LocaleKeys.noDataAvailable.tr()).toText14(isBold: true, color: AppColors.greyTextColor, isCenter: true).paddingSymmetrical(64.w, 0.h), SizedBox(height: 16.h), callToActionButton ], @@ -366,10 +372,9 @@ class Utils { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Lottie.asset(AppAnimations.loadingAnimation, - repeat: true, reverse: false, frameRate: FrameRate(60), width: 80.h, height: 80.h, fit: BoxFit.fill), + Lottie.asset(AppAnimations.loadingAnimation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 80.h, height: 80.h, fit: BoxFit.fill), SizedBox(height: 8.h), - (loadingText ?? LocaleKeys.loadingText.tr()).toText16(color: AppColors.blackColor, isCenter: true), + (loadingText ?? LocaleKeys.loadingText.tr()).toText16(color: AppColors.blackColor, isCenter: true, isBold: true), SizedBox(height: 8.h), ], ).center; @@ -382,7 +387,7 @@ class Utils { children: [ Lottie.asset(AppAnimations.checkmark, repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), SizedBox(height: 8.h), - (loadingText ?? LocaleKeys.loadingText.tr()).toText16(color: AppColors.blackColor), + (loadingText ?? LocaleKeys.loadingText.tr()).toText16(color: AppColors.blackColor, isBold: true).paddingSymmetrical(24.h, 0.h), SizedBox(height: 8.h), ], ).center; @@ -393,15 +398,93 @@ class Utils { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Lottie.asset(AppAnimations.errorAnimation, - repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), + Lottie.asset(AppAnimations.errorAnimation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), SizedBox(height: 8.h), - (loadingText ?? LocaleKeys.loadingText.tr()).toText16(color: AppColors.blackColor), + (loadingText ?? LocaleKeys.loadingText.tr()).toText16(color: AppColors.blackColor).paddingSymmetrical(24.h, 0.h), SizedBox(height: 8.h), ], ).center; } + static Widget getOnlineCheckInWidget({ + String? loadingText, + bool isShowActionButtons = false, + bool showOkButton = false, + Widget? bodyWidget, + Function? onConfirmTap, + Function? onCancelTap, + String? cancelText, + String? confirmText, + }) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.online_checkin_icon, width: 80.h, height: 80.h, applyThemeColor: false), + SizedBox(height: 16.h), + (loadingText ?? LocaleKeys.loadingText.tr()).toText16(color: AppColors.blackColor, letterSpacing: 0, weight: FontWeight.w600), + SizedBox(height: 16.h), + bodyWidget ?? SizedBox.shrink(), + SizedBox(height: 16.h), + isShowActionButtons + ? Row( + children: [ + Expanded( + child: CustomButton( + text: cancelText ?? LocaleKeys.cancel.tr(), + onPressed: () { + if (onCancelTap != null) { + onCancelTap(); + } + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + // icon: AppAssets.cancel, + // iconColor: AppColors.whiteColor, + ), + ), + SizedBox(width: 8.h), + Expanded( + child: CustomButton( + text: confirmText ?? LocaleKeys.confirm.tr(), + onPressed: () async { + if (onConfirmTap != null) { + onConfirmTap(); + } + }, + backgroundColor: AppColors.bgGreenColor, + borderColor: AppColors.bgGreenColor, + textColor: Colors.white, + // icon: AppAssets.confirm, + ), + ), + ], + ) + : showOkButton + ? Row( + children: [ + Expanded( + child: CustomButton( + text: LocaleKeys.ok.tr(), + onPressed: () async { + if (onConfirmTap != null) { + onConfirmTap(); + } + }, + backgroundColor: AppColors.bgGreenColor, + borderColor: AppColors.bgGreenColor, + textColor: Colors.white, + // icon: AppAssets.confirm, + ), + ), + ], + ) + : SizedBox.shrink(), + ], + ).center; + } + static Widget getWarningWidget({ String? loadingText, bool isShowActionButtons = false, @@ -416,8 +499,7 @@ class Utils { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Lottie.asset(AppAnimations.warningAnimation, - repeat: false, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), + Lottie.asset(AppAnimations.warningAnimation, repeat: false, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), SizedBox(height: 8.h), (loadingText ?? LocaleKeys.loadingText.tr()).toText15(color: AppColors.blackColor, letterSpacing: 0), SizedBox(height: 16.h), @@ -458,26 +540,26 @@ class Utils { ), ], ) - : showOkButton? - Row( - children: [ - Expanded( - child: CustomButton( - text: LocaleKeys.ok.tr(), - onPressed: () async { - if (onConfirmTap != null) { - onConfirmTap(); - } - }, - backgroundColor: AppColors.bgGreenColor, - borderColor: AppColors.bgGreenColor, - textColor: Colors.white, - // icon: AppAssets.confirm, - ), - ), - ], - ) - :SizedBox.shrink(), + : showOkButton + ? Row( + children: [ + Expanded( + child: CustomButton( + text: LocaleKeys.ok.tr(), + onPressed: () async { + if (onConfirmTap != null) { + onConfirmTap(); + } + }, + backgroundColor: AppColors.bgGreenColor, + borderColor: AppColors.bgGreenColor, + textColor: Colors.white, + // icon: AppAssets.confirm, + ), + ), + ], + ) + : SizedBox.shrink(), ], ).center; } @@ -537,10 +619,8 @@ class Utils { } // Replace HTML line breaks with newlines - var withLineBreaks = htmlString - .replaceAll(RegExp(r'', multiLine: true), '\n') - .replaceAll(RegExp(r'<\/p>', multiLine: true), '\n') - .replaceAll(RegExp(r'', multiLine: true), '\n'); + var withLineBreaks = + htmlString.replaceAll(RegExp(r'', multiLine: true), '\n').replaceAll(RegExp(r'<\/p>', multiLine: true), '\n').replaceAll(RegExp(r'', multiLine: true), '\n'); // Remove all other HTML tags var withoutTags = withLineBreaks.replaceAll(RegExp(r'<[^>]*>'), ''); @@ -618,20 +698,7 @@ class Utils { final year = parts[0]; // Map month number to short month name (Hijri months) - const hijriMonthNames = [ - 'Muharram', - 'Safar', - 'Rabi I', - 'Rabi II', - 'Jumada I', - 'Jumada II', - 'Rajab', - 'Sha\'ban', - 'Ramadan', - 'Shawwal', - 'Dhu al-Qi\'dah', - 'Dhu al-Hijjah' - ]; + const hijriMonthNames = ['Muharram', 'Safar', 'Rabi I', 'Rabi II', 'Jumada I', 'Jumada II', 'Rajab', 'Sha\'ban', 'Ramadan', 'Shawwal', 'Dhu al-Qi\'dah', 'Dhu al-Hijjah']; final monthIndex = int.tryParse(parts[1]) ?? 1; final month = hijriMonthNames[monthIndex - 1]; @@ -685,14 +752,26 @@ class Utils { double height = 24, BoxFit fit = BoxFit.cover, bool applyThemeColor = true, + String? errorAsset, }) { final Color? resolvedColor = iconColor ?? (applyThemeColor && AppColors.isDarkMode ? AppColors.textColor : null); - return SvgPicture.asset( - icon, - colorFilter: resolvedColor != null ? ColorFilter.mode(isDisabled ? resolvedColor.withOpacity(0.5) : resolvedColor, BlendMode.srcIn) : null, - width: width, - height: height, - fit: fit, + return PreserveSvgColors( + child: SvgPicture.asset( + icon, + colorFilter: resolvedColor != null ? ColorFilter.mode(isDisabled ? resolvedColor.withValues(alpha: 0.5) : resolvedColor, BlendMode.srcIn) : null, + width: width, + height: height, + fit: fit, + errorBuilder: errorAsset != null + ? (context, error, stackTrace) => SvgPicture.asset( + errorAsset, + colorFilter: resolvedColor != null ? ColorFilter.mode(isDisabled ? resolvedColor.withValues(alpha: 0.5) : resolvedColor, BlendMode.srcIn) : null, + width: width, + height: height, + fit: fit, + ) + : null, + ), ); } @@ -706,14 +785,16 @@ class Utils { }) { final iconH = height ?? 24.h; final iconW = width ?? 24.w; - return SvgPicture.network( - url, - colorFilter: ColorFilter.mode( - isDisabled ? iconColor.withOpacity(0.5) : iconColor, - BlendMode.srcIn, + return PreserveSvgColors( + child: SvgPicture.network( + url, + colorFilter: ColorFilter.mode( + isDisabled ? iconColor.withValues(alpha: 0.5) : iconColor, + BlendMode.srcIn, + ), + width: iconW, + height: iconH, ), - width: iconW, - height: iconH, ); } @@ -729,17 +810,46 @@ class Utils { }) { final iconH = height ?? 24.h; final iconW = width ?? 24.w; - return Container( - decoration: BoxDecoration( - border: border != null ? Border.all(color: AppColors.whiteColor, width: border) : null, - borderRadius: border != null ? BorderRadius.circular(borderRadius ?? 12.r) : null, + return PreserveImageColors( + child: Container( + decoration: BoxDecoration( + border: border != null ? Border.all(color: AppColors.whiteColor, width: border) : null, + borderRadius: border != null ? BorderRadius.circular(borderRadius ?? 12.r) : null, + ), + child: Image.asset(icon, width: iconW, height: iconH, fit: fit), ), - child: Image.asset(icon, width: iconW, height: iconH, fit: fit), ); - // return Image.asset(icon, width: width, height: height, fit: fit, ); } - /// Widget to build an SVG from network + static Widget buildImgWithAssetsWithBorderRadius({ + required String icon, + Color? iconColor, + bool isDisabled = false, + double? width, + double? height, + BoxFit fit = BoxFit.cover, + double? border, + double? borderRadius, + }) { + final iconH = height ?? 24.h; + final iconW = width ?? 24.w; + return PreserveImageColors( + child: Container( + width: iconW, + height: iconH, + decoration: BoxDecoration( + border: border != null ? Border.all(color: AppColors.whiteColor, width: border) : null, + borderRadius: BorderRadius.circular(borderRadius ?? 12.r), + image: DecorationImage( + image: AssetImage( + icon, + ), + fit: fit)), + ), + ); + } + + /// Widget to build an image from network - automatically preserves colors in visual modes static Widget buildImgWithNetwork({ required String url, required Color iconColor, @@ -751,51 +861,65 @@ class Utils { }) { final iconH = height ?? 24.h; final iconW = width ?? 24.w; - return Image.network( - url, - width: iconW, - height: iconH, - fit: fit, - errorBuilder: errorBuilder ?? - (_, __, ___) { - //todo_section change the error builder icon that it is returning - return Utils.buildSvgWithAssets(width: iconW, height: iconH, icon: AppAssets.no_visit_icon); - }, + return PreserveImageColors( + child: Image.network( + url, + width: iconW, + height: iconH, + fit: fit, + errorBuilder: errorBuilder ?? + (_, __, ___) { + //todo_section change the error builder icon that it is returning + return Utils.buildSvgWithAssets(width: iconW, height: iconH, icon: AppAssets.no_visit_icon); + }, + ), ); } - static Widget getPaymentMethods() { + static Widget getPaymentMethods({num spacing = 3, num width = 35, num height = 35}) { return Row( + spacing: spacing.w, mainAxisSize: MainAxisSize.max, - mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Image.asset(AppAssets.mada, width: 25.h, height: 25.h), - Image.asset( - AppAssets.tamaraEng, - width: 25.h, - height: 25.h, - fit: BoxFit.contain, - errorBuilder: (context, error, stackTrace) { - debugPrint('Failed to load Tamara PNG in payment methods: $error'); - return Utils.buildSvgWithAssets(icon: AppAssets.tamara, width: 25.h, height: 25.h, fit: BoxFit.contain); - }, + PreserveImageColors( + child: Image.asset(AppAssets.mada, width: width.h, height: height.h), + ), + PreserveImageColors( + child: Image.asset( + AppAssets.tamaraEng, + width: width.h, + height: height.h, + fit: BoxFit.contain, + errorBuilder: (context, error, stackTrace) { + debugPrint('Failed to load Tamara PNG in payment methods: $error'); + return Utils.buildSvgWithAssets(icon: AppAssets.tamara, width: 35.h, height: 35.h, fit: BoxFit.contain); + }, + ), ), - Image.asset(AppAssets.visa, width: 25.h, height: 25.h), - Image.asset(AppAssets.mastercard, width: 25.h, height: 25.h), - Image.asset(AppAssets.applePay, width: 25.h, height: 25.h), + PreserveImageColors( + child: Image.asset(AppAssets.visa, width: width.h, height: height.h), + ), + PreserveImageColors( + child: Image.asset(AppAssets.mastercard, width: width.h, height: height.h), + ), + Platform.isIOS + ? PreserveImageColors( + child: Image.asset(AppAssets.applePay, width: width.h, height: height.h), + ) + : SizedBox.shrink(), ], ); } - static Widget getPaymentAmountWithSymbol(Widget paymentAmountWidget, Color iconColor, double iconSize, - {bool isSaudiCurrency = true, bool isExpanded = true}) { + static Widget getPaymentAmountWithSymbol(Widget paymentAmountWidget, Color iconColor, double iconSize, {bool isSaudiCurrency = true, bool isExpanded = true}) { return Row( mainAxisAlignment: isExpanded ? MainAxisAlignment.spaceBetween : MainAxisAlignment.start, children: [ appState.isArabic() ? Container() : Utils.buildSvgWithAssets( - icon: isSaudiCurrency ? AppAssets.saudi_riyal_icon : AppAssets.uae_dirham_symbol, + // icon: isSaudiCurrency ? AppAssets.saudi_riyal_icon : AppAssets.uae_dirham_symbol, + icon: (getIt.get().getAuthenticatedUser()!.outSa == 0) ? AppAssets.saudi_riyal_icon : AppAssets.uae_dirham_symbol, iconColor: iconColor, width: iconSize.h, height: iconSize.h, @@ -807,7 +931,8 @@ class Utils { !appState.isArabic() ? Container() : Utils.buildSvgWithAssets( - icon: isSaudiCurrency ? AppAssets.saudi_riyal_icon : AppAssets.uae_dirham_symbol, + // icon: isSaudiCurrency ? AppAssets.saudi_riyal_icon : AppAssets.uae_dirham_symbol, + icon: (getIt.get().getAuthenticatedUser()!.outSa == 0) ? AppAssets.saudi_riyal_icon : AppAssets.uae_dirham_symbol, iconColor: iconColor, width: iconSize.h, height: iconSize.h, @@ -837,18 +962,13 @@ class Utils { WidgetSpan( alignment: PlaceholderAlignment.baseline, baseline: TextBaseline.alphabetic, - child: Utils.buildSvgWithAssets(icon: AppAssets.saudi_riyal_icon, width: iconSize.h, height: iconSize.h, iconColor: resolvedIconColor), + child: Utils.buildSvgWithAssets(icon: (getIt.get().getAuthenticatedUser()!.outSa == 1) ? AppAssets.uae_dirham_symbol : AppAssets.saudi_riyal_icon, width: iconSize.h, height: iconSize.h, iconColor: resolvedIconColor), ), TextSpan( // text: NumberFormat.currency(locale: 'en_US', symbol: " ", decimalDigits: 0).format(habibWalletAmount), - text: " ${habibWalletAmount.toStringAsFixed(2)}", - style: TextStyle( - color: resolvedTextColor, - fontSize: fontSize ?? 32.f, - letterSpacing: letterSpacing ?? -4, - fontFamily: "Poppins", - fontWeight: fontWeight ?? FontWeight.w600, - height: 1), + // text: " ${(NumberFormat.decimalPattern().format(habibWalletAmount)).toStringAsFixed(2)}", + text: " ${(NumberFormat.decimalPattern().format(habibWalletAmount))}", + style: TextStyle(color: resolvedTextColor, fontSize: fontSize ?? 32.f, letterSpacing: letterSpacing ?? -4, fontFamily: "Poppins", fontWeight: fontWeight ?? FontWeight.w600, height: 1), ), ], ), @@ -912,15 +1032,9 @@ class Utils { static PatientDoctorAppointmentList? convertToPatientDoctorAppointmentList(HospitalsModel? hospital) { if (hospital == null) return null; return PatientDoctorAppointmentList( - filterName: hospital.name, - distanceInKMs: hospital.distanceInKilometers?.toString(), - projectTopName: hospital.name, - projectBottomName: hospital.name, - model: hospital, - isHMC: hospital.isHMC); + filterName: hospital.name, distanceInKMs: hospital.distanceInKilometers?.toString(), projectTopName: hospital.name, projectBottomName: hospital.name, model: hospital, isHMC: hospital.isHMC); } - static HospitalsModel? convertToHospitalsModel(PatientDoctorAppointmentList? item) { if (item == null) return null; return HospitalsModel( @@ -1032,4 +1146,30 @@ class Utils { } return result; } + + /// Normalize Arabic text for search by handling Hamza variations and removing diacritics + /// This makes searching more flexible for Arabic text + static String normalizeArabicText(String text) { + if (text.isEmpty) return text; + + String normalized = text; + + // Normalize Hamza variations to a single character 'ا' + normalized = normalized.replaceAll('أ', 'ا'); // Hamza on Alif + normalized = normalized.replaceAll('إ', 'ا'); // Hamza below Alif + normalized = normalized.replaceAll('آ', 'ا'); // Madda on Alif + normalized = normalized.replaceAll('ء', 'ا'); // Hamza alone + normalized = normalized.replaceAll('ؤ', 'و'); // Hamza on Waw + normalized = normalized.replaceAll('ئ', 'ي'); // Hamza on Ya + + // Normalize Alif Maqsura to Ya + normalized = normalized.replaceAll('ى', 'ي'); + + // Remove Arabic diacritics (Tashkeel) + normalized = normalized.replaceAll(RegExp(r'[\u064B-\u065F]'), ''); // Fatha, Damma, Kasra, etc. + normalized = normalized.replaceAll(RegExp(r'[\u0670]'), ''); // Superscript Alif + normalized = normalized.replaceAll(RegExp(r'[\u0640]'), ''); // Tatweel + + return normalized; + } } diff --git a/lib/core/utils/validation_utils.dart b/lib/core/utils/validation_utils.dart index a8bc03d3..ca644e0c 100644 --- a/lib/core/utils/validation_utils.dart +++ b/lib/core/utils/validation_utils.dart @@ -4,6 +4,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:hmg_patient_app_new/core/common_models/nationality_country_model.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; @@ -32,6 +33,13 @@ class ValidationUtils { isCorrectID = false; } + if (nationalId!.length == 10) { + if (Utils.isSAUDIIDValid(nationalId!) == false) { + _dialogService.showExceptionBottomSheet(message: LocaleKeys.enterValidNationalId.tr(), onOkPressed: onOkPress); + isCorrectID = false; + } + } + if (nationalId != null && nationalId.isNotEmpty && selectedCountry != null) { if (selectedCountry == CountryEnum.saudiArabia) { if (!validateIqama(nationalId)) { @@ -69,10 +77,7 @@ class ValidationUtils { // Check if "Others" country is selected and phone number starts with restricted codes if (selectedCountry == CountryEnum.others) { if (phoneNumber.startsWith('00966') || phoneNumber.startsWith('00971')) { - _dialogService.showExceptionBottomSheet( - message: LocaleKeys.cannotEnterSaudiOrUAENumber.tr(), - onOkPressed: onOkPress - ); + _dialogService.showExceptionBottomSheet(message: LocaleKeys.cannotEnterSaudiOrUAENumber.tr(), onOkPressed: onOkPress); return false; } } @@ -113,7 +118,8 @@ class ValidationUtils { return regex.hasMatch(id); } - static bool validateUaeRegistration({String? name, GenderTypeEnum? gender, NationalityCountries? country, MaritalStatusTypeEnum? maritalStatus, required Function() onOkPress}) { + static bool validateUaeRegistration( + {String? name, GenderTypeEnum? gender, NationalityCountries? country, MaritalStatusTypeEnum? maritalStatus, required Function() onOkPress}) { if (name == null || name.isEmpty) { _dialogService.showExceptionBottomSheet(message: LocaleKeys.pleaseEnterAValidName.tr(), onOkPressed: onOkPress); return false; @@ -152,7 +158,8 @@ class ValidationUtils { return true; } - static bool isValidatedIdAndPhoneWithCountryValidation({String? nationalId, String? phoneNumber, required Function() onOkPress, CountryEnum? selectedCountry}) { + static bool isValidatedIdAndPhoneWithCountryValidation( + {String? nationalId, String? phoneNumber, required Function() onOkPress, CountryEnum? selectedCountry}) { bool isCorrectID = true; if (nationalId == null || nationalId.isEmpty) { _dialogService.showExceptionBottomSheet(message: LocaleKeys.pleaseEnterAnationalID.tr(), onOkPressed: onOkPress); @@ -183,8 +190,40 @@ class ValidationUtils { } static bool isNullOrEmpty(String? value) { - return value == null || value - .trim() - .isEmpty; + return value == null || value.trim().isEmpty; + } + + static bool validateIban(String iban) { + final normalized = iban.replaceAll(RegExp(r'\s+'), '').toUpperCase(); + + // General IBAN structure: country code + check digits + BBAN + if (!RegExp(r'^[A-Z]{2}\d{2}[A-Z0-9]{11,30}$').hasMatch(normalized)) { + return false; + } + + // IBAN total length must be between 15 and 34 characters + if (normalized.length < 15 || normalized.length > 34) { + return false; + } + + // Move first 4 chars to the end + final rearranged = normalized.substring(4) + normalized.substring(0, 4); + + // Convert letters to numbers: A=10, B=11, ..., Z=35 + final numeric = rearranged.split('').map((char) { + final code = char.codeUnitAt(0); + if (code >= 65 && code <= 90) { + return (code - 55).toString(); + } + return char; + }).join(); + + // MOD-97 check without parsing huge integer at once + int remainder = 0; + for (final ch in numeric.split('')) { + remainder = (remainder * 10 + int.parse(ch)) % 97; + } + + return remainder == 1; } -} \ No newline at end of file +} diff --git a/lib/extensions/string_extensions.dart b/lib/extensions/string_extensions.dart index 0026c801..06d590cf 100644 --- a/lib/extensions/string_extensions.dart +++ b/lib/extensions/string_extensions.dart @@ -18,13 +18,20 @@ extension CapExtension on String { String get needTranslation => this; String get capitalizeFirstofEach => trim().isNotEmpty ? trim().toLowerCase().split(" ").map((str) => str.inCaps).join(" ") : ""; - } extension EmailValidator on String { Widget get toWidget => Text(this); - Widget toText8({Color? color, FontWeight? fontWeight, bool isBold = false, int? maxlines, FontStyle? fontStyle, TextOverflow? textOverflow}) => Text( + Widget toText8( + {bool isEnglishOnly = false, + Color? color, + FontWeight? fontWeight, + bool isBold = false, + int? maxlines, + FontStyle? fontStyle, + TextOverflow? textOverflow}) => + Text( this, maxLines: maxlines, overflow: textOverflow, @@ -34,6 +41,7 @@ extension EmailValidator on String { fontWeight: fontWeight ?? (isBold ? FontWeight.bold : FontWeight.normal), color: color ?? AppColors.blackColor, letterSpacing: 0, + fontFamily: getIt.get().getLanguageCode() == "ar" ? 'CairoArabic' : 'Poppins', ), ); @@ -60,7 +68,7 @@ extension EmailValidator on String { color: color ?? AppColors.blackColor, letterSpacing: letterSpacing, decoration: isUnderLine ? TextDecoration.underline : null, - fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins', + fontFamily: getIt.get().getLanguageCode() == "ar" ? 'CairoArabic' : 'Poppins', decorationColor: color ?? AppColors.blackColor), ); @@ -73,13 +81,15 @@ extension EmailValidator on String { int? maxlines, FontStyle? fontStyle, TextOverflow? textOverflow, - double letterSpacing = 0}) => + double letterSpacing = 0, + bool isEnglishOnly = false}) => Text( this, textAlign: isCenter ? TextAlign.center : null, maxLines: maxlines, overflow: textOverflow, style: TextStyle( + fontFamily: getIt.get().getLanguageCode() == "ar" ? 'CairoArabic' : 'Poppins', fontSize: 9.f, fontStyle: fontStyle ?? FontStyle.normal, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), @@ -89,7 +99,17 @@ extension EmailValidator on String { decorationColor: color ?? AppColors.blackColor), ); - Widget toText11({Color? color, FontWeight? weight, bool isUnderLine = false, bool isCenter = false, bool isBold = false, int maxLine = 0, double letterSpacing = 0}) => Text( + Widget toText11({ + Color? color, + FontWeight? weight, + bool isUnderLine = false, + bool isCenter = false, + bool isBold = false, + int maxLine = 0, + double letterSpacing = 0, + bool isEnglishOnly = false, + }) => + Text( this, textAlign: isCenter ? TextAlign.center : null, maxLines: (maxLine > 0) ? maxLine : null, @@ -100,11 +120,14 @@ extension EmailValidator on String { color: color ?? AppColors.blackColor, letterSpacing: letterSpacing, decoration: isUnderLine ? TextDecoration.underline : null, + fontFamily: getIt.get().getLanguageCode() == "ar" ? 'CairoArabic' : 'Poppins', ), ); Widget toText12( - {bool isEnglishOnly = false, Color? color, + {bool isEnglishOnly = false, + Color? color, + Color? decorationColor, bool isUnderLine = false, TextAlign textAlignment = TextAlign.start, bool isBold = false, @@ -112,20 +135,22 @@ extension EmailValidator on String { bool isCenter = false, double? height, double? letterSpacing, + TextOverflow? textOverflow, int maxLine = 0}) => Text( this, textAlign: isCenter ? TextAlign.center : textAlignment, maxLines: (maxLine > 0) ? maxLine : null, style: TextStyle( + overflow: textOverflow, fontSize: 12.f, fontWeight: fontWeight ?? (isBold ? FontWeight.bold : FontWeight.normal), color: color ?? AppColors.blackColor, letterSpacing: letterSpacing ?? 0, height: height, - decorationColor: isUnderLine ? AppColors.blackColor : null, + decorationColor: decorationColor ?? AppColors.blackColor, decoration: isUnderLine ? TextDecoration.underline : null, - fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins', + fontFamily: getIt.get().getLanguageCode() == "ar" ? 'CairoArabic' : 'Poppins', ), ); @@ -171,7 +196,15 @@ extension EmailValidator on String { ), ); - Widget toText13({Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, int maxLine = 0, FontWeight? weight, double? letterSpacing = 0}) => Text( + Widget toText13( + {Color? color, + bool isUnderLine = false, + bool isBold = false, + bool isCenter = false, + int maxLine = 0, + FontWeight? weight, + double? letterSpacing = 0}) => + Text( this, textAlign: isCenter ? TextAlign.center : null, maxLines: (maxLine > 0) ? maxLine : null, @@ -208,11 +241,24 @@ extension EmailValidator on String { height: height, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), decoration: isUnderLine ? TextDecoration.underline : null, - fontFamily: fontFamily ?? (isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins'), + fontFamily: fontFamily ?? + (isEnglishOnly + ? "Poppins" + : getIt.get().getLanguageCode() == "ar" + ? 'CairoArabic' + : 'Poppins'), decorationColor: color ?? AppColors.blackColor), ); - Widget toText15({Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, FontWeight? weight, int? maxlines, double? letterSpacing = -1}) => Text( + Widget toText15( + {Color? color, + bool isUnderLine = false, + bool isBold = false, + bool isCenter = false, + FontWeight? weight, + int? maxlines, + double? letterSpacing = -1}) => + Text( this, textAlign: isCenter ? TextAlign.center : null, maxLines: maxlines, @@ -224,7 +270,9 @@ extension EmailValidator on String { decoration: isUnderLine ? TextDecoration.underline : null), ); - Widget toText16({bool isEnglishOnly = false, Color? color, + Widget toText16( + {bool isEnglishOnly = false, + Color? color, bool isUnderLine = false, bool isBold = false, bool isCenter = false, @@ -249,81 +297,194 @@ extension EmailValidator on String { overflow: textOverflow, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), decoration: isUnderLine ? TextDecoration.underline : null, - fontFamily: fontFamily ?? (isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins'), + fontFamily: fontFamily ?? + (isEnglishOnly + ? "Poppins" + : getIt.get().getLanguageCode() == "ar" + ? 'CairoArabic' + : 'Poppins'), decorationColor: decorationColor ?? AppColors.errorColor), ); Widget toText17({bool isEnglishOnly = false, Color? color, bool isBold = false, bool isCenter = false}) => Text( this, textAlign: isCenter ? TextAlign.center : null, - style: TextStyle(color: color ?? AppColors.blackColor, fontSize: 17.f, letterSpacing: -1, fontWeight: isBold ? FontWeight.bold : FontWeight.normal, fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins'), + style: TextStyle( + color: color ?? AppColors.blackColor, + fontSize: 17.f, + letterSpacing: -1, + fontWeight: isBold ? FontWeight.bold : FontWeight.normal, + fontFamily: getIt.get().getLanguageCode() == "ar" ? 'CairoArabic' : 'Poppins'), ); - Widget toText18({Color? color, FontWeight? weight, bool isBold = false, bool isCenter = false, int? maxlines, TextOverflow? textOverflow}) => Text( + Widget toText18({ + Color? color, + FontWeight? weight, + bool isBold = false, + bool isCenter = false, + int? maxlines, + TextOverflow? textOverflow, + bool isEnglishOnly = false, + }) => + Text( maxLines: maxlines, textAlign: isCenter ? TextAlign.center : null, this, overflow: textOverflow, - style: TextStyle(fontSize: 18.f, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), color: color ?? AppColors.blackColor, letterSpacing: -0.4), + style: TextStyle( + fontSize: 18.f, + fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), + color: color ?? AppColors.blackColor, + letterSpacing: -0.4, + fontFamily: (isEnglishOnly + ? "Poppins" + : getIt.get().getLanguageCode() == "ar" + ? 'CairoArabic' + : 'Poppins'), + ), ); Widget toText19({Color? color, bool isBold = false}) => Text( this, - style: TextStyle(fontSize: 19.f, fontWeight: isBold ? FontWeight.bold : FontWeight.normal, color: color ?? AppColors.blackColor, letterSpacing: -0.4), + style: TextStyle( + fontSize: 19.f, fontWeight: isBold ? FontWeight.bold : FontWeight.normal, color: color ?? AppColors.blackColor, letterSpacing: -0.4), ); Widget toText20({ Color? color, FontWeight? weight, bool isBold = false, + bool isEnglishOnly = false, }) => Text( this, - style: TextStyle(fontSize: 20.f, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), color: color ?? AppColors.blackColor, letterSpacing: -0.4), + style: TextStyle( + fontFamily: (isEnglishOnly + ? "Poppins" + : getIt.get().getLanguageCode() == "ar" + ? 'CairoArabic' + : 'Poppins'), + fontSize: 20.f, + fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal), + color: color ?? AppColors.blackColor, + letterSpacing: -0.4), ); Widget toText21({Color? color, bool isBold = false, FontWeight? weight, int? maxlines}) => Text( this, maxLines: maxlines, - style: TextStyle(color: color ?? AppColors.blackColor, fontSize: 21.f, letterSpacing: -1, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal)), + style: TextStyle( + color: color ?? AppColors.blackColor, + fontSize: 21.f, + letterSpacing: -1, + fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal)), ); Widget toText22({Color? color, bool isBold = false, bool isCenter = false}) => Text( this, textAlign: isCenter ? TextAlign.center : null, - style: TextStyle(height: 1, color: color ?? AppColors.blackColor, fontSize: 22.f, letterSpacing: -1, fontWeight: isBold ? FontWeight.bold : FontWeight.normal), + style: TextStyle( + height: 1, + color: color ?? AppColors.blackColor, + fontSize: 22.f, + letterSpacing: -1, + fontWeight: isBold ? FontWeight.bold : FontWeight.normal), ); - Widget toText24({Color? color, bool isBold = false, bool isCenter = false, FontWeight? fontWeight, double? letterSpacing}) => Text( + Widget toText24({ + Color? color, + bool isBold = false, + bool isCenter = false, + FontWeight? fontWeight, + double? letterSpacing, + bool isEnglishOnly = false, + }) => + Text( this, textAlign: isCenter ? TextAlign.center : null, style: TextStyle( - height: 23 / 24, color: color ?? AppColors.blackColor, fontSize: 24.f, letterSpacing: letterSpacing ?? -1, fontWeight: isBold ? FontWeight.bold : fontWeight ?? FontWeight.normal), + fontFamily: (isEnglishOnly + ? "Poppins" + : getIt.get().getLanguageCode() == "ar" + ? 'CairoArabic' + : 'Poppins'), + height: 23 / 24, + color: color ?? AppColors.blackColor, + fontSize: 24.f, + letterSpacing: letterSpacing ?? -1, + fontWeight: isBold ? FontWeight.bold : fontWeight ?? FontWeight.normal), ); - Widget toText26({Color? color, bool isBold = false, double? height, bool isCenter = false, FontWeight? weight, double? letterSpacing}) => Text( + Widget toText26({ + Color? color, + bool isBold = false, + double? height, + bool isCenter = false, + FontWeight? weight, + double? letterSpacing, + bool isEnglishOnly = false, + }) => + Text( this, textAlign: isCenter ? TextAlign.center : null, style: TextStyle( - height: height ?? 23 / 26, color: color ?? AppColors.blackColor, fontSize: 26.f, letterSpacing: letterSpacing ?? -1, fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal)), + fontFamily: (isEnglishOnly + ? "Poppins" + : getIt.get().getLanguageCode() == "ar" + ? 'CairoArabic' + : 'Poppins'), + height: height ?? 23 / 26, + color: color ?? AppColors.blackColor, + fontSize: 26.f, + letterSpacing: letterSpacing ?? -1, + fontWeight: weight ?? (isBold ? FontWeight.bold : FontWeight.normal)), ); - Widget toText28({bool isEnglishOnly = false, Color? color, bool isBold = false, double? height, bool isCenter = false, double? letterSpacing}) => Text( + Widget toText28({bool isEnglishOnly = false, Color? color, bool isBold = false, double? height, bool isCenter = false, double? letterSpacing}) => + Text( this, textAlign: isCenter ? TextAlign.center : null, - style: TextStyle(height: height ?? 23 / 28, color: color ?? AppColors.blackColor, fontSize: 28.f, letterSpacing: letterSpacing ?? -1, fontWeight: isBold ? FontWeight.bold : FontWeight.normal, fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins'), + style: TextStyle( + height: height ?? 23 / 28, + color: color ?? AppColors.blackColor, + fontSize: 28.f, + letterSpacing: letterSpacing ?? -1, + fontWeight: isBold ? FontWeight.bold : FontWeight.normal, + fontFamily: getIt.get().getLanguageCode() == "ar" ? 'CairoArabic' : 'Poppins'), ); Widget toText32({bool isEnglishOnly = false, FontWeight? weight, Color? color, bool isBold = false, bool isCenter = false}) => Text( this, textAlign: isCenter ? TextAlign.center : null, style: TextStyle( - height: 32 / 32, color: color ?? AppColors.blackColor, fontSize: 32.f, letterSpacing: -1, fontFamily: isEnglishOnly ? "Poppins" : getIt.get().getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins', fontWeight: isBold ? FontWeight.bold : weight ?? FontWeight.normal), + height: getIt.get().getLanguageCode() == "ar" ? 1.2 : 32 / 32, + color: color ?? AppColors.blackColor, + fontSize: 32.f, + letterSpacing: -1, + fontFamily: getIt.get().getLanguageCode() == "ar" ? 'CairoArabic' : 'Poppins', + fontWeight: isBold ? FontWeight.bold : weight ?? FontWeight.normal, + ), ); - Widget toText44({Color? color, bool isBold = false}) => Text( + Widget toText44({ + Color? color, + bool isBold = false, + bool isEnglishOnly = false, + }) => + Text( this, - style: TextStyle(height: 32 / 32, color: color ?? AppColors.blackColor, fontSize: 44.f, letterSpacing: -1, fontWeight: isBold ? FontWeight.bold : FontWeight.normal), + style: TextStyle( + height: 32 / 32, + color: color ?? AppColors.blackColor, + fontSize: 44.f, + letterSpacing: -1, + fontWeight: isBold ? FontWeight.bold : FontWeight.normal, + fontFamily: (isEnglishOnly + ? "Poppins" + : getIt.get().getLanguageCode() == "ar" + ? 'CairoArabic' + : 'Poppins'), + ), ); Widget toSectionHeading({String upperHeading = "", String lowerHeading = ""}) { @@ -359,7 +520,9 @@ extension EmailValidator on String { } bool isValidEmail() { - return RegExp(r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$').hasMatch(this); + return RegExp( + r'^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$') + .hasMatch(this); } String toFormattedDate() { @@ -429,7 +592,7 @@ extension DynamicTextStyleExtension on BuildContext { String? fontFamily, bool isLanguageSwitcher = false}) { AppState appState = getIt.get(); - final family = appState.getLanguageCode() == "ar" ? 'GESSTwo' : 'Poppins'; + final family = appState.getLanguageCode() == "ar" ? 'CairoArabic' : 'Poppins'; return TextStyle( fontFamily: fontFamily ?? family, fontSize: fontSize, @@ -460,7 +623,7 @@ class FontUtils { /// Get the appropriate font family for a specific language static String getFontFamilyForLanguage(bool isArabic) { - return isArabic ? 'GESSTwo' : 'Poppins'; + return isArabic ? 'CairoArabic' : 'Poppins'; } } diff --git a/lib/extensions/widget_extensions.dart b/lib/extensions/widget_extensions.dart index 64672f5f..3c0079f2 100644 --- a/lib/extensions/widget_extensions.dart +++ b/lib/extensions/widget_extensions.dart @@ -1,7 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/extensions/int_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:shimmer/shimmer.dart'; import 'package:sizer/sizer.dart'; @@ -152,6 +154,8 @@ extension SmoothContainerExtension on ShapeBorder { BorderSide? side, BorderRadius? customBorder, bool hasShadow = false, + bool hasDenseShadow = false, + List? isCustomShadow, }) { final bgColor = backgroundColor ?? color; return ShapeDecoration( @@ -161,17 +165,17 @@ extension SmoothContainerExtension on ShapeBorder { smoothness: 1, side: side ?? BorderSide.none, ), - shadows: - // hasShadow - // ? [ - // BoxShadow( - // color: const Color(0xff000000).withOpacity(.05), - // blurRadius: 32, - // offset: const Offset(0, 0), - // ) - // ] - // : - [], + shadows: hasShadow + ? [ + BoxShadow( + // color: hasDenseShadow ? const Color(0xff000000).withOpacity(.06) : const Color(0xff000000).withOpacity(.1), + color: getIt.get().isDarkMode ? Color(0xff3a3a3a).withOpacity(1.0) : Color(0xffE1E1E1).withOpacity(1.0), + blurRadius: 0, + spreadRadius: 0, + offset: const Offset(1, 0), + ) + ] + : isCustomShadow ?? [], ); } } diff --git a/lib/features/ask_doctor/ask_doctor_repo.dart b/lib/features/ask_doctor/ask_doctor_repo.dart index 4e4a4006..bd6af5b8 100644 --- a/lib/features/ask_doctor/ask_doctor_repo.dart +++ b/lib/features/ask_doctor/ask_doctor_repo.dart @@ -47,7 +47,7 @@ class AskDoctorRepoImp implements AskDoctorRepo { try { final list = response['PatientDoctorAppointmentResultList']; - final clinicsList = list.map((item) => AskDoctorAppointmentHistoryList.fromJson(item as Map)).toList().cast(); + final clinicsList = list != null ? list.map((item) => AskDoctorAppointmentHistoryList.fromJson(item as Map)).toList().cast() : []; apiResponse = GenericApiModel>( messageStatus: messageStatus, diff --git a/lib/features/ask_doctor/models/ask_doctor_appointments_list.dart b/lib/features/ask_doctor/models/ask_doctor_appointments_list.dart index 7f40d71c..6b337662 100644 --- a/lib/features/ask_doctor/models/ask_doctor_appointments_list.dart +++ b/lib/features/ask_doctor/models/ask_doctor_appointments_list.dart @@ -143,7 +143,7 @@ class AskDoctorAppointmentHistoryList { noOfPatientsRate = json['NoOfPatientsRate']; projectName = json['ProjectName']; qR = json['QR']; - speciality = json['Speciality'].cast(); + // speciality = json['Speciality'].cast(); } Map toJson() { diff --git a/lib/features/authentication/authentication_repo.dart b/lib/features/authentication/authentication_repo.dart index f3b14c67..291e4a9b 100644 --- a/lib/features/authentication/authentication_repo.dart +++ b/lib/features/authentication/authentication_repo.dart @@ -6,6 +6,7 @@ import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; import 'package:hmg_patient_app_new/features/authentication/models/resp_models/select_device_by_imei.dart'; import 'package:hmg_patient_app_new/services/logger_service.dart'; @@ -45,6 +46,8 @@ abstract class AuthenticationRepo { Future>> insertPatientDeviceData({required dynamic patientDeviceDataRequest}); Future>> getPatientDeviceData({required dynamic patientDeviceDataRequest}); + + Future>> getPatientBloodType(); } class AuthenticationRepoImp implements AuthenticationRepo { @@ -144,6 +147,9 @@ class AuthenticationRepoImp implements AuthenticationRepo { bool isRegister = false, bool isFormFamilyFile = false, }) async { + + + int isOutKsa = (sendActivationCodeReq.zipCode == '966' || sendActivationCodeReq.zipCode == '+966') ? 0 : 1; sendActivationCodeReq.patientOutSA = isOutKsa; sendActivationCodeReq.isDentalAllowedBackend = false; @@ -200,8 +206,6 @@ class AuthenticationRepoImp implements AuthenticationRepo { } } - - @override Future>> checkActivationCodeRepo( {required dynamic newRequest, // could be CheckActivationCodeReq or CheckActivationCodeRegisterReq @@ -214,56 +218,6 @@ class AuthenticationRepoImp implements AuthenticationRepo { int? patientID, int? loginType}) async { AppState appState = getIt.get(); - // if (isRegister) { - // newRequest["activationCode"] = activationCode ?? "0000"; - // newRequest["isSilentLogin"] = activationCode != null ? false : true; - // } else { - // newRequest.activationCode = activationCode ?? "0000"; - // newRequest.isSilentLogin = activationCode != null ? false : true; - // newRequest.projectOutSA = newRequest.zipCode == '966' ? false : true; - // newRequest.isDentalAllowedBackend = false; - // newRequest.forRegisteration = newRequest.isRegister ?? false; - // newRequest.isRegister = false; - // } - // Map familyRequest = {}; - // if (isFormFamilyFile) { - // AppState appState = getIt.get(); - // familyRequest = {}; - // familyRequest['PatientShareRequestID'] = patientShareRequestID; - // familyRequest['ResponseID'] = responseID; - // familyRequest['Status'] = 3; - // familyRequest["PatientID"] = appState.getAuthenticatedUser()!.patientId ?? 0; - // familyRequest["LogInTokenID"] = appState.getFamilyFileTokenID; - // familyRequest["activationCode"] = activationCode ?? "0000"; - // familyRequest["PatientMobileNumber"] = newRequest.patientMobileNumber; - // familyRequest["PatientIdentificationID"] = newRequest.patientIdentificationID; - // } - // Map switchRequest = {}; - // if (isSwitchUser) { - // switchRequest = newRequest.toJson(); - // - // switchRequest['PatientID'] = responseID; - // switchRequest['IsSilentLogin'] = true; - // switchRequest['LogInTokenID'] = null; - // switchRequest['SearchType'] = 2; - // if (loginType != 0) { - // switchRequest['SuperUser'] = patientID; - // switchRequest['DeviceToken'] = null; - // } else { - // switchRequest["LoginType"] = 2; - // } - // - // if (appState.getSuperUserID == responseID) { - // // switchRequest['LoginType'] = 3; - // switchRequest['PatientIdentificationID'] = ""; - // // switchRequest['ProjectOutSA'] = newRequest.zipCode == '966' ? false : true; - // switchRequest.remove('NationalID'); - // switchRequest.remove('isDentalAllowedBackend'); - // switchRequest.remove('ProjectOutSA'); - // switchRequest.remove('ForRegisteration'); - // appState.setSuperUserID = null; - // } - // } if (isRegister) { newRequest["activationCode"] = activationCode ?? "0000"; @@ -276,11 +230,10 @@ class AuthenticationRepoImp implements AuthenticationRepo { newRequest.forRegisteration = newRequest.isRegister ?? false; newRequest.isRegister = false; //silent login case removed token and login token - if(newRequest.logInTokenID.isEmpty && newRequest.isSilentLogin == true && (newRequest.loginType==1 || newRequest.loginType==4)) { + if (newRequest.logInTokenID.isEmpty && newRequest.isSilentLogin == true && (newRequest.loginType == 1 || newRequest.loginType == 4)) { newRequest.logInTokenID = null; newRequest.deviceToken = null; } - } Map familyRequest = {}; @@ -315,12 +268,13 @@ class AuthenticationRepoImp implements AuthenticationRepo { } if (appState.getSuperUserID == responseID) { + switchRequest['LoginType'] = loginType; switchRequest['PatientIdentificationID'] = ""; + switchRequest['DeviceToken'] = newRequest.deviceToken; switchRequest.removeWhere((key, value) => ['NationalID', 'isDentalAllowedBackend', 'ProjectOutSA', 'ForRegisteration'].contains(key)); } } - // Determine which API to use based on zipCode final zipCode = _getZipCodeFromRequest(newRequest); final isOthersCountry = zipCode == '0'; final endpoint = isFormFamilyFile @@ -335,15 +289,44 @@ class AuthenticationRepoImp implements AuthenticationRepo { GenericApiModel? apiResponse; Failure? failure; + // Determine the payload to send + var requestBody = isFormFamilyFile + ? familyRequest + : isRegister + ? newRequest + : isSwitchUser + ? switchRequest + : newRequest.toJson(); + + if (isSwitchUser) { + Map allUsersPayload; + var switchingPatientID; + var superUserPatientID; + bool isSwitchingToSuperUser = false; + + allUsersPayload = appState.getUserSwitchPayloads; + switchingPatientID = switchRequest["PatientID"]; + superUserPatientID = allUsersPayload['superUser']['PatientID']; + isSwitchingToSuperUser = (appState.getSuperUserID == responseID) || (allUsersPayload.containsKey('superUser') && superUserPatientID == switchingPatientID); + + if (isSwitchingToSuperUser) { + var superUserPayload = appState.getUserSwitchPayloadByIndex(isSuperUser: true); + if (superUserPayload != null) { + requestBody['DeviceToken'] = newRequest.deviceToken; + requestBody['ProjectOutSA'] = 0; + requestBody['PatientIdentificationID'] = ""; + requestBody.removeWhere((key, value) => ['NationalID', 'isDentalAllowedBackend', 'ForRegisteration'].contains(key)); + appState.setIsChildLoggedIn = false; + appState.clearChildUsersKeepSuperUser(); + } + } else { + appState.setIsChildLoggedIn = true; + } + } + await apiClient.post( endpoint, - body: isFormFamilyFile - ? familyRequest - : isRegister - ? newRequest - : isSwitchUser - ? switchRequest - : newRequest.toJson(), + body: requestBody, onFailure: (error, statusCode, {messageStatus, failureType}) { failure = failureType; }, @@ -610,7 +593,7 @@ class AuthenticationRepoImp implements AuthenticationRepo { } @override - Future>> getServicePrivilege() { + Future> getServicePrivilege() { Map mapDevice = {}; try { GenericApiModel? apiResponse; @@ -688,4 +671,38 @@ class AuthenticationRepoImp implements AuthenticationRepo { } } } + + @override + Future>> getPatientBloodType() async { + // Map requestBody = {"PatientType": 1, "PatientTypeID": 1, "TokenID": "@dm!n", "PatientID": 5957754}; + Map requestBody = {}; + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + ApiConsts.getPatientBloodTypeNew, + body: requestBody, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: response, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } } diff --git a/lib/features/authentication/authentication_view_model.dart b/lib/features/authentication/authentication_view_model.dart index ce54c69f..fdc16943 100644 --- a/lib/features/authentication/authentication_view_model.dart +++ b/lib/features/authentication/authentication_view_model.dart @@ -3,10 +3,10 @@ import 'dart:developer'; import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart' show rootBundle; import 'package:get_it/get_it.dart'; -import 'package:hijri_gregorian_calendar/hijri_gregorian_calendar.dart'; import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/cache_consts.dart'; @@ -16,7 +16,6 @@ import 'package:hmg_patient_app_new/core/common_models/privilege/ProjectDetailLi import 'package:hmg_patient_app_new/core/common_models/privilege/VidaPlusProjectListModel.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; -import 'package:hmg_patient_app_new/core/utils/loading_utils.dart'; import 'package:hmg_patient_app_new/core/utils/request_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/core/utils/validation_utils.dart'; @@ -28,23 +27,30 @@ import 'package:hmg_patient_app_new/features/authentication/models/resp_models/a import 'package:hmg_patient_app_new/features/authentication/models/resp_models/check_activation_code_resp_model.dart'; import 'package:hmg_patient_app_new/features/authentication/models/resp_models/check_user_staus_nhic_response_model.dart'; import 'package:hmg_patient_app_new/features/authentication/models/resp_models/select_device_by_imei.dart'; +import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; +import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart'; import 'package:hmg_patient_app_new/features/medical_file/medical_file_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/authentication/login.dart'; import 'package:hmg_patient_app_new/presentation/authentication/saved_login_screen.dart'; import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; +import 'package:hmg_patient_app_new/presentation/my_family/my_family.dart'; import 'package:hmg_patient_app_new/routes/app_routes.dart'; import 'package:hmg_patient_app_new/services/cache_service.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; import 'package:hmg_patient_app_new/services/localauth_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/core/services/turnstile_service.dart'; +import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_calendar_model.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:sms_otp_auto_verify/sms_otp_auto_verify.dart'; import '../insurance/insurance_view_model.dart'; +import '../profile_settings/profile_settings_repo.dart'; import 'models/request_models/get_user_mobile_device_data.dart'; import 'models/request_models/insert_patient_mobile_deviceinfo.dart'; import 'models/request_models/patient_insert_device_imei_request.dart'; @@ -56,6 +62,7 @@ class AuthenticationViewModel extends ChangeNotifier { final DialogService _dialogService; final NavigationService _navigationService; final LocalAuthService _localAuthService; + final TurnstileService _turnstileService; AuthenticationViewModel({ required AppState appState, @@ -65,12 +72,14 @@ class AuthenticationViewModel extends ChangeNotifier { required NavigationService navigationService, required CacheService cacheService, required LocalAuthService localAuthService, + required TurnstileService turnstileService, }) : _navigationService = navigationService, _dialogService = dialogService, _errorHandlerService = errorHandlerService, _appState = appState, _authenticationRepo = authenticationRepo, - _localAuthService = localAuthService {} + _localAuthService = localAuthService, + _turnstileService = turnstileService {} final TextEditingController nationalIdController = TextEditingController(), phoneNumberController = TextEditingController(), dobController = TextEditingController(), @@ -92,6 +101,80 @@ class AuthenticationViewModel extends ChangeNotifier { final ValueNotifier otpScreenNotifier = ValueNotifier(false); int patientShareRequestID = 0; + //================== Validation Error States ================== + + // Login screen errors + String? _nationalIdError; + + String? get nationalIdError => _nationalIdError; + + // Phone number errors (used in multiple screens) + String? _phoneNumberError; + + String? get phoneNumberError => _phoneNumberError; + + // Registration screen errors + String? _nameError; + + String? get nameError => _nameError; + + String? _emailError; + + String? get emailError => _emailError; + + String? _dobError; + + String? get dobError => _dobError; + + // Check if registration form has any errors (for container border) + bool get hasRegistrationFormError => _nationalIdError != null || _dobError != null; + + // Check if ID and phone have errors (for family file container) + bool get hasIdAndPhoneError => _nationalIdError != null || _phoneNumberError != null; + + // Additional field errors for UAE registration step 2 + String? _genderError; + String? _maritalStatusError; + String? _countryError; + + // Getters for step 2 field errors (nameError and emailError already exist above) + String? get genderError => _genderError; + + String? get maritalStatusError => _maritalStatusError; + + String? get countryError => _countryError; + + // Check if registration step 2 form has any errors (for container border) + bool get hasRegistrationStep2FormError => _nameError != null || _genderError != null || _maritalStatusError != null || _countryError != null; + + // Clear all step 2 field errors + void clearAllStep2FieldErrors() { + _nameError = null; + _genderError = null; + _maritalStatusError = null; + _countryError = null; + _emailError = null; + notifyListeners(); + } + + // Clear gender error + void clearGenderError() { + _genderError = null; + notifyListeners(); + } + + // Clear marital status error + void clearMaritalStatusError() { + _maritalStatusError = null; + notifyListeners(); + } + + // Clear country error + void clearCountryError() { + _countryError = null; + notifyListeners(); + } + //================== String errorMsg = ''; @@ -99,7 +182,10 @@ class AuthenticationViewModel extends ChangeNotifier { var healthId; int getDeviceLastLogin = 1; + bool isInitialLoginNavigated = false; + Future onLoginPressed() async { + setIsInitialLoginNavigated(false); try { LoaderBottomSheet.showLoader(); //TODO: We will remove this delay @@ -109,7 +195,7 @@ class AuthenticationViewModel extends ChangeNotifier { if (data != null) { await _handleExistingImeiData(data); } else { - await _handleNewImeiRegistration(); + await handleNewImeiRegistration(); } } catch (e) { log("Error in onLoginPressed: $e"); @@ -130,8 +216,364 @@ class AuthenticationViewModel extends ChangeNotifier { pickedCountryByUAEUser = null; _appState.setUserRegistrationPayload = RegistrationDataModelPayload(); _appState.setNHICUserData = CheckUserStatusResponseNHIC(); + getIt.get().setSelectedHeight(0); + getIt.get().setSelectedWeight(0); + + // Clear all validation errors + clearAllErrors(); } + //==================== Validation Methods ==================== + + /// Clear all validation errors + void clearAllErrors() { + _nationalIdError = null; + _phoneNumberError = null; + _nameError = null; + _emailError = null; + _dobError = null; + notifyListeners(); + } + + /// Clear national ID error + void clearNationalIdError() { + _nationalIdError = null; + notifyListeners(); + } + + /// Clear phone number error + void clearPhoneNumberError() { + _phoneNumberError = null; + notifyListeners(); + } + + /// Clear name error + void clearNameError() { + _nameError = null; + notifyListeners(); + } + + /// Clear email error + void clearEmailError() { + _emailError = null; + notifyListeners(); + } + + /// Clear DOB error + void clearDobError() { + _dobError = null; + notifyListeners(); + } + + /// Validate National ID for login/registration + /// Returns true if valid, false otherwise + /// Only shows red border error, no dialog popups + bool validateNationalId() { + // Clear previous error + _nationalIdError = null; + + // Check if field is empty + if (nationalIdController.text.isEmpty) { + _nationalIdError = LocaleKeys.pleaseEnterAnationalID.tr(); + notifyListeners(); + return false; + } + + // Check if it's 10 digits and valid Saudi ID + String cleanedId = nationalIdController.text.replaceAll(RegExp(r'[^0-9]'), ''); + if (cleanedId.length == 10) { + if (!Utils.isSAUDIIDValid(cleanedId)) { + _nationalIdError = LocaleKeys.enterValidNationalId.tr(); + notifyListeners(); + return false; + } + } + + // Validate based on selected country + if (selectedCountrySignup == CountryEnum.saudiArabia) { + if (cleanedId.length == 10) { + if (!ValidationUtils.validateIqama(nationalIdController.text)) { + _nationalIdError = LocaleKeys.pleaseEnterAValidIqamaID.tr(); + notifyListeners(); + return false; + } + } else { + return true; + } + } else if (selectedCountrySignup == CountryEnum.unitedArabEmirates) { + if (!ValidationUtils.validateUaeNationalId(nationalIdController.text)) { + _nationalIdError = LocaleKeys.pleaseEnterAValidNationalID.tr(); + notifyListeners(); + return false; + } + } + + // Clear error on success + _nationalIdError = null; + notifyListeners(); + return true; + } + + /// Validate phone number + /// Returns true if valid, false otherwise + /// Only shows red border error, no dialog popups + bool validatePhoneNumber() { + // Clear previous error + _phoneNumberError = null; + + // Check if phone is empty + if (phoneNumberController.text.isEmpty) { + _phoneNumberError = LocaleKeys.enterValidPhoneNumber.tr(); + notifyListeners(); + return false; + } + + // Check if "Others" country is selected and phone number starts with restricted codes + if (selectedCountrySignup == CountryEnum.others) { + if (phoneNumberController.text.startsWith('00966') || phoneNumberController.text.startsWith('00971')) { + _phoneNumberError = LocaleKeys.cannotEnterSaudiOrUAENumber.tr(); + notifyListeners(); + return false; + } + } + + // Clear error on success + _phoneNumberError = null; + notifyListeners(); + return true; + } + + /// Validate National ID and Phone Number together + /// Returns true if both are valid, false otherwise + /// Only shows red border errors, no dialog popups + /// Uses PROGRESSIVE VALIDATION - shows errors step by step + bool validateIdAndPhone() { + // Clear all previous errors first + _nationalIdError = null; + _phoneNumberError = null; + + // Step 1: Validate National ID empty first (highest priority) + if (nationalIdController.text.isEmpty) { + _nationalIdError = LocaleKeys.pleaseEnterAnationalID.tr(); + notifyListeners(); + return false; // Stop here, don't check phone yet + } + + // Step 2: Validate National ID format + String cleanedId = nationalIdController.text.replaceAll(RegExp(r'[^0-9]'), ''); + + if (cleanedId.length == 10) { + if (!Utils.isSAUDIIDValid(cleanedId)) { + _nationalIdError = LocaleKeys.enterValidNationalId.tr(); + notifyListeners(); + return false; // Stop here + } + } + + // Step 3: Validate National ID based on country + if (selectedCountrySignup == CountryEnum.saudiArabia) { + if (!ValidationUtils.validateIqama(nationalIdController.text)) { + _nationalIdError = LocaleKeys.pleaseEnterAValidIqamaID.tr(); + notifyListeners(); + return false; // Stop here + } + } else if (selectedCountrySignup == CountryEnum.unitedArabEmirates) { + if (!ValidationUtils.validateUaeNationalId(nationalIdController.text)) { + _nationalIdError = LocaleKeys.pleaseEnterAValidNationalID.tr(); + notifyListeners(); + return false; // Stop here + } + } + + // Step 4: ONLY validate phone if National ID is fully valid + if (phoneNumberController.text.isEmpty) { + _phoneNumberError = LocaleKeys.enterValidPhoneNumber.tr(); + notifyListeners(); + return false; // Stop here + } + + // Step 5: Validate phone number format based on country + if (selectedCountrySignup == CountryEnum.others) { + if (phoneNumberController.text.startsWith('00966') || phoneNumberController.text.startsWith('00971')) { + _phoneNumberError = LocaleKeys.cannotEnterSaudiOrUAENumber.tr(); + notifyListeners(); + return false; + } + } + + // All validations passed + notifyListeners(); + return true; + } + + /// Validate registration form (National ID, DOB, Terms) + /// Returns true if all valid, false otherwise + /// Only shows red border errors, no dialog popups + /// Uses PROGRESSIVE VALIDATION - shows errors step by step + bool validateRegistrationForm() { + // Clear all previous errors first + _nationalIdError = null; + _dobError = null; + + // Step 1: Validate National ID first (highest priority) + if (nationalIdController.text.isEmpty) { + _nationalIdError = LocaleKeys.pleaseEnterAnationalID.tr(); + notifyListeners(); + return false; // Stop here, don't check other fields + } + + // Step 2: Validate National ID format + String cleanedId = nationalIdController.text.replaceAll(RegExp(r'[^0-9]'), ''); + + if (cleanedId.length == 10) { + if (!Utils.isSAUDIIDValid(cleanedId)) { + _nationalIdError = LocaleKeys.enterValidNationalId.tr(); + notifyListeners(); + return false; // Stop here + } + } + + // Step 3: Validate based on selected country + if (selectedCountrySignup == CountryEnum.saudiArabia) { + if (!ValidationUtils.validateIqama(nationalIdController.text)) { + _nationalIdError = LocaleKeys.pleaseEnterAValidIqamaID.tr(); + notifyListeners(); + return false; // Stop here + } + } else if (selectedCountrySignup == CountryEnum.unitedArabEmirates) { + if (!ValidationUtils.validateUaeNationalId(nationalIdController.text)) { + _nationalIdError = LocaleKeys.pleaseEnterAValidNationalID.tr(); + notifyListeners(); + return false; // Stop here + } + } + + // Step 4: Only validate DOB if National ID is valid + if (dobController.text.isEmpty || dob == null || dob!.isEmpty) { + _dobError = LocaleKeys.pleaseEnterAValidDateOfBirth.tr(); + notifyListeners(); + return false; // Stop here + } + + // Step 5: Only validate Terms if both National ID and DOB are valid + // Show dialog popup for Terms (old behavior) + if (!isTermsAccepted) { + _dialogService.showExceptionBottomSheet( + message: LocaleKeys.pleaseAcceptTermsConditions.tr(), + onOkPressed: () { + _navigationService.pop(); + }, + ); + notifyListeners(); + return false; // Stop here + } + + // All validations passed + notifyListeners(); + return true; + } + + //==================== End Validation Methods ==================== + + /// Validate registration step 2 form (UAE users: name, gender, marital status, country) + /// Returns true if all valid, false otherwise + /// Shows only the FIRST error encountered - progressive validation + bool validateRegistrationStep2Form() { + final isArabic = _appState.isArabic(); + + // Clear all previous errors first + _nameError = null; + _genderError = null; + _maritalStatusError = null; + _countryError = null; + + // Step 1: Validate name (only for UAE users) + // if (isUserFromUAE()) { + // if (nameController.text.trim().isEmpty) { + // _nameError = isArabic ? "الرجاء إدخال الاسم الكامل" : "Please enter full name"; + // notifyListeners(); + // return false; // Stop here + // } + // } + + if (isUserFromUAE()) { + // Remove extra spaces between words + final fullName = nameController.text.trim().replaceAll(RegExp(r'\s+'), ' '); + + // Split into words + final nameParts = fullName.split(' '); + + // Require at least 2 words + if (nameParts.length < 2) { + _nameError = isArabic ? "الرجاء إدخال الاسم الكامل" : "Please enter full name"; + + notifyListeners(); + return false; + } + } + + // Step 2: Validate gender (only for UAE users) + if (isUserFromUAE()) { + if (genderType == null) { + _genderError = isArabic ? "الرجاء اختيار الجنس" : "Please select gender"; + notifyListeners(); + return false; // Stop here + } + } + + // Step 3: Validate marital status (only for UAE users) + if (isUserFromUAE()) { + if (maritalStatus == null) { + _maritalStatusError = isArabic ? "الرجاء اختيار الحالة الاجتماعية" : "Please select marital status"; + notifyListeners(); + return false; // Stop here + } + } + + // Step 4: Validate country (only for UAE users) + if (isUserFromUAE()) { + if (pickedCountryByUAEUser == null) { + _countryError = isArabic ? "الرجاء اختيار البلد" : "Please select country"; + notifyListeners(); + return false; // Stop here + } + } + + // All validations passed + notifyListeners(); + return true; + } + + /// Validate email in the bottom sheet + /// Returns true if valid, false otherwise + bool validateEmail() { + final isArabic = _appState.isArabic(); + + // Clear previous error + _emailError = null; + + // Step 1: Check if email is empty + if (emailController.text.trim().isEmpty) { + _emailError = isArabic ? "الرجاء إدخال البريد الإلكتروني" : "Please enter email"; + notifyListeners(); + return false; + } + + // Step 2: Validate email format + final bool emailIsValid = RegExp(r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,}$").hasMatch(emailController.text.trim()); + if (!emailIsValid) { + _emailError = isArabic ? "الرجاء إدخال تنسيق بريد إلكتروني صالح" : "Please enter a valid email format"; + notifyListeners(); + return false; + } + + // Email is valid + notifyListeners(); + return true; + } + + //==================== End Validation Methods ==================== + void onCountryChange(CountryEnum country) { selectedCountrySignup = country; notifyListeners(); @@ -143,16 +585,116 @@ class AuthenticationViewModel extends ChangeNotifier { } void onDobChange(String? date) { - if (calenderType == CalenderEnum.hijri) { - var hijriDate = HijriGregConverter.gregorianToHijri(DateTime.parse(date!)); - DateTime hijriDateTimeForController = DateTime(hijriDate.year, hijriDate.month, hijriDate.day); - dob = Utils.formatDateForApi(date); - dobController.text = Utils.formatHijriDateToDisplay(hijriDateTimeForController.toIso8601String()); // Or directly hijriDate.toString() if that's what your formatter expects - } else { - dobController.text = Utils.formatDateToDisplay(date!); - dob = Utils.formatDateForApi(date); + if (date == null || date.isEmpty) { + debugPrint('onDobChange: date is null or empty'); + return; } - notifyListeners(); + + try { + if (calenderType == CalenderEnum.hijri) { + // Use DateRangCalenderModel for accurate Umm al-Qura conversion + final calendarModel = DateRangCalenderModel( + appState: _appState, + navigationService: _errorHandlerService, + dialogService: _dialogService, + ); + + // Parse the Gregorian date with validation + DateTime gregorianDate; + try { + gregorianDate = DateTime.parse(date); + } catch (parseError) { + debugPrint('onDobChange: Failed to parse date "$date" - $parseError'); + // Try to handle common date format issues + gregorianDate = _tryParseDateFlexibly(date); + } + + // Convert to Hijri + final hijriDate = calendarModel.gregorianToHijri(gregorianDate); + + // Validate Hijri date components + if (hijriDate.year <= 0 || hijriDate.month <= 0 || hijriDate.day <= 0) { + debugPrint('onDobChange: Invalid Hijri date components - Year: ${hijriDate.year}, Month: ${hijriDate.month}, Day: ${hijriDate.day}'); + return; + } + + // Create DateTime from Hijri components for display + final hijriDateTimeForController = DateTime(hijriDate.year, hijriDate.month, hijriDate.day); + + // Format for API (use original Gregorian date) + dob = Utils.formatDateForApi(date); + + // Format for display (use Hijri) + dobController.text = Utils.formatHijriDateToDisplay(hijriDateTimeForController.toIso8601String()); + } else { + // Gregorian calendar mode + // Validate the date can be parsed + try { + DateTime.parse(date); + } catch (parseError) { + debugPrint('onDobChange: Failed to parse date "$date" - $parseError'); + // Try flexible parsing to validate + _tryParseDateFlexibly(date); + } + + // Format for display + dobController.text = Utils.formatDateToDisplay(date); + + // Format for API + dob = Utils.formatDateForApi(date); + } + + clearDobError(); + notifyListeners(); + } catch (e, stackTrace) { + debugPrint('onDobChange: Unexpected error processing date "$date" - $e'); + debugPrint('Stack trace: $stackTrace'); + + // Set error state if needed + // You can add error handling UI feedback here + } + } + + /// Helper method to handle flexible date parsing for common formats + DateTime _tryParseDateFlexibly(String dateString) { + // Remove extra whitespace + dateString = dateString.trim(); + + // Try standard ISO format first + try { + return DateTime.parse(dateString); + } catch (_) {} + + // Try common formats with regex + final patterns = [ + RegExp(r'^(\d{4})-(\d{1,2})-(\d{1,2})$'), // yyyy-M-d or yyyy-MM-dd + RegExp(r'^(\d{1,2})/(\d{1,2})/(\d{4})$'), // d/M/yyyy or dd/MM/yyyy + RegExp(r'^(\d{4})/(\d{1,2})/(\d{1,2})$'), // yyyy/M/d or yyyy/MM/dd + ]; + + for (var pattern in patterns) { + final match = pattern.firstMatch(dateString); + if (match != null) { + try { + if (pattern.pattern.startsWith(r'^\d{4}')) { + // Year first formats + final year = int.parse(match.group(1)!); + final month = int.parse(match.group(2)!); + final day = int.parse(match.group(3)!); + return DateTime(year, month, day); + } else { + // Day first formats + final day = int.parse(match.group(1)!); + final month = int.parse(match.group(2)!); + final year = int.parse(match.group(3)!); + return DateTime(year, month, day); + } + } catch (_) {} + } + } + + // If all else fails, throw descriptive error + throw FormatException('Unable to parse date: "$dateString". Expected format: yyyy-MM-dd'); } Future loadCountriesData() async { @@ -162,13 +704,21 @@ class AuthenticationViewModel extends ChangeNotifier { } void onMaritalStatusChange(String? status) { - maritalStatus = MaritalStatusTypeExtension.fromType(status)!; - notifyListeners(); + final newMaritalStatus = MaritalStatusTypeExtension.fromType(status); + if (newMaritalStatus != null) { + maritalStatus = newMaritalStatus; + clearMaritalStatusError(); + notifyListeners(); + } } void onGenderChange(String? status) { - genderType = GenderTypeExtension.fromType(status)!; - notifyListeners(); + final newGender = GenderTypeExtension.fromType(status); + if (newGender != null) { + genderType = newGender; + clearGenderError(); + notifyListeners(); + } } void clearEmailInput() { @@ -176,7 +726,8 @@ class AuthenticationViewModel extends ChangeNotifier { } void onUAEUserCountrySelection(String? value) { - pickedCountryByUAEUser = countriesList!.firstWhere((element) => element.name == value); + pickedCountryByUAEUser = countriesList!.firstWhere((element) => element.name == value || element.nameN == value); + clearCountryError(); notifyListeners(); } @@ -195,6 +746,11 @@ class AuthenticationViewModel extends ChangeNotifier { } } + setIsInitialLoginNavigated(bool isInitialLoginNavigated) { + this.isInitialLoginNavigated = isInitialLoginNavigated; + notifyListeners(); + } + void onTermAccepted() { isTermsAccepted = !isTermsAccepted; notifyListeners(); @@ -212,7 +768,7 @@ class AuthenticationViewModel extends ChangeNotifier { _appState.deviceToken = await Utils.getStringFromPrefs(CacheConst.pushToken); } - Future selectDeviceImei({required Function(dynamic data) onSuccess, Function(String)? onError}) async { + Future selectDeviceImei({bool isNavigate = true, required Function(dynamic data) onSuccess, Function(String)? onError}) async { // LoadingUtils.showFullScreenLoading(); // String firebaseToken = _appState.deviceToken; String firebaseToken = await Utils.getStringFromPrefs(CacheConst.pushToken); @@ -227,11 +783,13 @@ class AuthenticationViewModel extends ChangeNotifier { // LoadingUtils.hideFullScreenLoader(); // await _errorHandlerService.handleError(failure: failure); LoaderBottomSheet.hideLoader(); - _navigationService.pushPage(page: LoginScreen()); + if (isNavigate) { + _navigationService.pushPage(page: LoginScreen()); + } }, (apiResponse) { // LoadingUtils.hideFullScreenLoader(); - log("apiResponse: ${apiResponse.data.toString()}"); + log("apiResponse: ${apiResponse.data?.toJson().toString()}"); log("messageStatus: ${apiResponse.messageStatus.toString()}"); if (apiResponse.messageStatus == 1) { onSuccess(apiResponse.data); @@ -259,33 +817,42 @@ class AuthenticationViewModel extends ChangeNotifier { } } - Future _handleNewImeiRegistration() async { - await selectDeviceImei(onSuccess: (dynamic respData) async { - try { - if (respData != null) { - dynamic data = await SelectDeviceByImeiRespModelElement.fromJson(respData.toJson()); - _appState.setSelectDeviceByImeiRespModelElement(data); - LoaderBottomSheet.hideLoader(); + Future handleNewImeiRegistration({bool isNavigate = true}) async { + print("handleNewImeiRegistration called"); + await selectDeviceImei( + isNavigate: isNavigate, + onSuccess: (dynamic respData) async { + try { + if (respData != null) { + dynamic data = await SelectDeviceByImeiRespModelElement.fromJson(respData.toJson()); + _appState.setSelectDeviceByImeiRespModelElement(data); + LoaderBottomSheet.hideLoader(); - // TODO: Navigate to SavedLogin when available - // SelectDeviceByImeiRespModelElement savedData = - // SelectDeviceByImeiRespModelElement.fromJson(respData); - _navigationService.pushPage(page: SavedLogin()); - // _navigationService.pushPage(page: LoginScreen()); - } else { - print("print login........"); + // TODO: Navigate to SavedLogin when available + // SelectDeviceByImeiRespModelElement savedData = + // SelectDeviceByImeiRespModelElement.fromJson(respData); + if (!isInitialLoginNavigated) { + _navigationService.pushPage(page: SavedLogin()); + } + // _navigationService.pushPage(page: LoginScreen()); + } else { + if (isNavigate) { + LoaderBottomSheet.hideLoader(); + _navigationService.pushPage(page: LoginScreen()); + } + } + } catch (e) { + if (isNavigate) { + log("Error processing IMEI registration response: $e"); + LoaderBottomSheet.hideLoader(); + _navigationService.pushPage(page: LoginScreen()); + } + } + }, + onError: (String error) { LoaderBottomSheet.hideLoader(); - _navigationService.pushPage(page: LoginScreen()); - } - } catch (e) { - log("Error processing IMEI registration response: $e"); - LoaderBottomSheet.hideLoader(); - _navigationService.pushPage(page: LoginScreen()); - } - }, onError: (String error) { - LoaderBottomSheet.hideLoader(); - _dialogService.showErrorBottomSheet(message: error, onOkPressed: () {}); - }); + _dialogService.showErrorBottomSheet(message: error, onOkPressed: () {}); + }); } Future checkUserAuthentication({required OTPTypeEnum otpTypeEnum, Function(dynamic)? onSuccess, Function(String)? onError}) async { @@ -310,6 +877,9 @@ class AuthenticationViewModel extends ChangeNotifier { nationId: nationalIdController.text, isForRegister: false, patientOutSA: false, + // patientOutSA: selectedCountrySignup == CountryEnum.others + // ? false + // : (_appState.getSelectDeviceByImeiRespModelElement != null && _appState.getSelectDeviceByImeiRespModelElement!.outSa == true ? true : false), otpTypeEnum: otpTypeEnum, patientId: 0, zipCode: selectedCountrySignup == CountryEnum.others @@ -343,7 +913,10 @@ class AuthenticationViewModel extends ChangeNotifier { } else if (apiResponse.messageStatus == 1) { if (apiResponse.data['isSMSSent']) { _appState.setAppAuthToken = apiResponse.data['LogInTokenID']; - await sendActivationCode(otpTypeEnum: otpTypeEnum, phoneNumber: phoneNumberController.text, nationalIdOrFileNumber: nationalIdController.text, isForRegister: false); + print("============================"); + var zipcode = getZipCode(); + print("======== Zip Code =========== $zipcode ========"); + await sendActivationCode(otpTypeEnum: otpTypeEnum, phoneNumber: phoneNumberController.text, nationalIdOrFileNumber: nationalIdController.text, isForRegister: false, zipCode: zipcode); } else { if (apiResponse.data['IsAuthenticated']) { await checkActivationCode( @@ -365,6 +938,14 @@ class AuthenticationViewModel extends ChangeNotifier { ); } + String getZipCode() { + return selectedCountrySignup == CountryEnum.others + ? "0" + : (_appState.getSelectDeviceByImeiRespModelElement != null && _appState.getSelectDeviceByImeiRespModelElement!.outSa == true + ? CountryEnum.unitedArabEmirates.countryCode.toString() + : selectedCountrySignup.countryCode.toString()); + } + Future sendActivationCode( {required OTPTypeEnum otpTypeEnum, required String nationalIdOrFileNumber, @@ -375,13 +956,14 @@ class AuthenticationViewModel extends ChangeNotifier { bool isExcludedUser = false, bool isFormFamilyFile = false, bool isNeedLoading = false, - int? responseID}) async { + int? responseID, + String? zipCode}) async { var request = RequestUtils.getCommonRequestSendActivationCode( otpTypeEnum: otpTypeEnum, mobileNumber: phoneNumber, selectedLoginType: otpTypeEnum.toInt(), - zipCode: selectedCountrySignup.countryCode, - nationalId:nationalIdOrFileNumber, + zipCode: zipCode ?? selectedCountrySignup.countryCode, + nationalId: nationalIdOrFileNumber, isFileNo: isForRegister ? isPatientHasFile(request: payload) : false, patientId: isFormFamilyFile ? _appState.getAuthenticatedUser()!.patientId : 0, isForRegister: isForRegister, @@ -397,6 +979,17 @@ class AuthenticationViewModel extends ChangeNotifier { // TODO: GET APP SMS SIGNATURE HERE request.sMSSignature = await getSignature(); + + if(!kDebugMode) { + // Get Turnstile token if configured + final turnstileToken = await _turnstileService.getTurnstileToken(); + if (turnstileToken != null) { + request.turnstileToken = turnstileToken; + } else { + request.turnstileToken = ""; + } + } + if (isNeedLoading) { LoaderBottomSheet.showLoader(); } @@ -408,7 +1001,10 @@ class AuthenticationViewModel extends ChangeNotifier { sendActivationCodeReq: request, isRegister: checkIsUserComingForRegister(request: payload), languageID: 'er', isFormFamilyFile: isFormFamilyFile); resultEither.fold( - (failure) async => await _errorHandlerService.handleError(failure: failure), + (failure) async { + LoaderBottomSheet.hideLoader(); + await _errorHandlerService.handleError(failure: failure); + }, (apiResponse) async { if (isFormFamilyFile) { if (apiResponse.data['PatientShareRequestID'] != null && apiResponse.data['PatientShareRequestID'] == 0 && apiResponse.messageStatus == 1) { @@ -437,6 +1033,7 @@ class AuthenticationViewModel extends ChangeNotifier { navigateToOTPScreen( otpTypeEnum: otpTypeEnum, phoneNumber: phoneNumber, + zipCode: zipCode ?? "", isComingFromRegister: checkIsUserComingForRegister(request: payload), payload: payload, isFormFamilyFile: isFormFamilyFile, @@ -551,16 +1148,16 @@ class AuthenticationViewModel extends ChangeNotifier { }); } else { final resultEither = await _authenticationRepo.checkActivationCodeRepo( - newRequest: CheckActivationCodeRegisterReq.fromJson(request), - activationCode: activationCode, - isRegister: false, - isFormFamilyFile: isFormFamilyFile, - patientShareRequestID: patientShareRequestID, - responseID: responseID, - isSwitchUser: isSwitchUser, - patientID: patientID, - loginType: _appState.getSuperUserID != null ? 0 : 2, - ); + newRequest: CheckActivationCodeRegisterReq.fromJson(request), + activationCode: activationCode, + isRegister: false, + isFormFamilyFile: isFormFamilyFile, + patientShareRequestID: patientShareRequestID, + responseID: responseID, + isSwitchUser: isSwitchUser, + patientID: patientID, + // loginType: _appState.getSuperUserID != null ? 0 : 2, + loginType: loginTypeEnum.toInt); resultEither.fold( (failure) async => await _errorHandlerService.handleError( @@ -598,7 +1195,9 @@ class AuthenticationViewModel extends ChangeNotifier { await medicalVm.getFamilyFiles(status: 0); if (isFormFamilyFile) { await medicalVm.getAllPendingRecordsByResponseId(); - _navigationService.pushAndReplace(AppRoutes.medicalFilePage); + _navigationService.replaceAllRoutesAndNavigateToLandingWithMedicalAuth().whenComplete(() { + _navigationService.pushPageRoute(AppRoutes.familyFilesPage); + }); } else { _navigationService.replaceAllRoutesAndNavigateToLanding(); } @@ -607,23 +1206,54 @@ class AuthenticationViewModel extends ChangeNotifier { } else { if (activation.list != null && activation.list!.isNotEmpty) { if (isSwitchUser) { + // Clear profile image cache when switching users + _appState.clearProfileImageCache(); + log("🔄 Switching user - cleared profile image cache"); + if (_appState.getIsChildLoggedIn) { _appState.setSuperUserID = null; - _appState.setIsChildLoggedIn = false; - activation.list!.first.isParentUser = true; - } else { - _appState.setSuperUserID = _appState.getAuthenticatedUser()?.patientId; - _appState.setIsChildLoggedIn = true; + // _appState.setIsChildLoggedIn = false; activation.list!.first.isParentUser = false; + var allUsersPayload = _appState.getUserSwitchPayloads; + if ((allUsersPayload.containsKey('superUser') && allUsersPayload['superUser'] != null)) { + _appState.addUserSwitchPayload(activation.list!.first.toJson(), isSuperUser: false); + } else { + _appState.addUserSwitchPayload(activation.list!.first.toJson(), isSuperUser: true); + } + } else { + var allUsersPayload = _appState.getUserSwitchPayloads; + _appState.setSuperUserID = allUsersPayload['superUser']?['PatientID']; + activation.list!.first.isParentUser = true; + _appState.addUserSwitchPayload(activation.list!.first.toJson(), isSuperUser: true); } + + // Fetch profile image after switching user + // await _fetchProfileImage(activation.list!.first.patientId); + _fetchProfileImage(activation.list!.first.patientId); } else { activation.list!.first.isParentUser = true; + _appState.addUserSwitchPayload(activation.list!.first.toJson(), isSuperUser: true); + + // Fetch profile image after login + // await _fetchProfileImage(activation.list!.first.patientId); + _fetchProfileImage(activation.list!.first.patientId); } - activation.list!.first.bloodGroup = activation.patientBlodType; + activation.list!.first.bloodGroup = activation.patientBloodType; activation.list!.first.zipCode = selectedCountrySignup == CountryEnum.others ? '0' : selectedCountrySignup.countryCode; _appState.setAuthenticatedUser(activation.list!.first); _appState.setPrivilegeModelList(activation.list!.first.listPrivilege!); _appState.setUserBloodGroup = activation.patientBlodType ?? "N/A"; + _appState.setIsPaytabsEnabled(Utils.havePrivilege(120)); + _appState.setIsPayfortHostedPageEnabled(Utils.havePrivilege(121)); + + // Refresh privileges after user switching to ensure correct privileges are loaded + if (isSwitchUser) { + print("🔄 Switching user - refreshing privileges"); + await getServicePrivilege(); + } + + // Fetch patient blood type from new API + // await getPatientBloodTypeNew(); } // _appState.setUserBloodGroup = (activation.patientBlodType ?? ""); _appState.setAppAuthToken = activation.authenticationTokenId; @@ -645,7 +1275,9 @@ class AuthenticationViewModel extends ChangeNotifier { } await clearDefaultInputValues(); myAppointmentsVM.setIsAppointmentDataToBeLoaded(true); + getIt.get().setIsWalletAmountToBeLoaded(true); getIt.get().setIsInsuranceDataToBeLoaded(true); + getIt.get().setHasVitalSignDataLoaded(false); if (isUserAgreedBefore) { LoaderBottomSheet.hideLoader(); navigateToHomeScreen(); @@ -714,6 +1346,8 @@ class AuthenticationViewModel extends ChangeNotifier { } Future navigateToHomeScreen() async { + setIsInitialLoginNavigated(true); + getPatientBloodTypeNew(); Navigator.pushAndRemoveUntil( _navigationService.navigatorKey.currentContext!, CustomPageRoute( @@ -730,10 +1364,12 @@ class AuthenticationViewModel extends ChangeNotifier { bool isFormFamilyFile = false, bool isExcludedUser = false, int? responseID, - int? patientShareRequestID}) async { + int? patientShareRequestID, + required String zipCode}) async { _navigationService.pushToOtpScreen( phoneNumber: phoneNumber, isFormFamilyFile: isFormFamilyFile, + zipCode: zipCode, checkActivationCode: (int activationCode) async { await checkActivationCode( activationCode: activationCode.toString(), @@ -746,18 +1382,18 @@ class AuthenticationViewModel extends ChangeNotifier { }, ); }, - onResendOTPPressed: (String phoneNumber) async { + onResendOTPPressed: (String phoneNumber, String zipCode) async { await sendActivationCode( - otpTypeEnum: otpTypeEnum, - phoneNumber: phoneNumberController.text, - nationalIdOrFileNumber: nationalIdController.text, - isForRegister: isComingFromRegister, - isComingFromResendOTP: true, - payload: payload, - isFormFamilyFile: isFormFamilyFile, - isExcludedUser: isExcludedUser, - responseID: responseID, - ); + otpTypeEnum: otpTypeEnum, + phoneNumber: phoneNumberController.text, + nationalIdOrFileNumber: nationalIdController.text, + isForRegister: isComingFromRegister, + isComingFromResendOTP: true, + payload: payload, + isFormFamilyFile: isFormFamilyFile, + isExcludedUser: isExcludedUser, + responseID: responseID, + zipCode: zipCode); }, ); } @@ -798,15 +1434,14 @@ class AuthenticationViewModel extends ChangeNotifier { checkLastLoginStatus(Function() onSuccess) async { Future.delayed(Duration(seconds: 1), () async { if (cacheService.getBool(key: CacheConst.quickLoginEnabled) == null) { - if (_appState.getSelectDeviceByImeiRespModelElement != null && - (_appState.getSelectDeviceByImeiRespModelElement!.logInType == 1 || _appState.getSelectDeviceByImeiRespModelElement!.logInType == 4)) { + final deviceElement = _appState.getSelectDeviceByImeiRespModelElement; + if (deviceElement != null && (deviceElement.logInType == 1 || deviceElement.logInType == 4)) { phoneNumberController.text = (_appState.getAuthenticatedUser()!.mobileNumber!.startsWith("0") ? _appState.getAuthenticatedUser()!.mobileNumber!.replaceFirst("0", "") : _appState.getAuthenticatedUser()!.mobileNumber)!; nationalIdController.text = _appState.getAuthenticatedUser()!.patientIdentificationNo!; onSuccess(); - } else if ((loginTypeEnum == LoginTypeEnum.sms || loginTypeEnum == LoginTypeEnum.whatsapp && _appState.getSelectDeviceByImeiRespModelElement == null) && - _appState.getAuthenticatedUser() != null) { + } else if ((loginTypeEnum == LoginTypeEnum.sms || loginTypeEnum == LoginTypeEnum.whatsapp && deviceElement == null) && _appState.getAuthenticatedUser() != null) { phoneNumberController.text = (_appState.getAuthenticatedUser()!.mobileNumber!.startsWith("0") ? _appState.getAuthenticatedUser()!.mobileNumber!.replaceFirst("0", "") : _appState.getAuthenticatedUser()!.mobileNumber)!; @@ -843,7 +1478,17 @@ class AuthenticationViewModel extends ChangeNotifier { } final resultEither = await _authenticationRepo.checkPatientForRegistration(commonAuthanticatedRequest: nRequest); - resultEither.fold((failure) async => await _errorHandlerService.handleError(failure: failure), (apiResponse) async { + resultEither.fold( + (failure) async => await _errorHandlerService.handleError( + failure: failure, + onUnHandledFailure: (failur) { + LoaderBottomSheet.hideLoader(); + _dialogService.showExceptionBottomSheet( + message: failur.message, + onOkPressed: () { + _navigationService.pop(); + }); + }), (apiResponse) async { checkUserStatusForRegistration(response: apiResponse.data, request: request); }); } @@ -853,25 +1498,28 @@ class AuthenticationViewModel extends ChangeNotifier { // LoadingUtils.showFullScreenLoader(loadingText: "Setting up your medical file.\nMay take a moment."); var request = RequestUtils.getUserSignupCompletionRequest(fullName: nameController.text, emailAddress: emailController.text, gender: genderType, maritalStatus: maritalStatus); + final resultEither = await _authenticationRepo.registerUser(registrationPayloadDataModelRequest: request); resultEither.fold((failure) async => await _errorHandlerService.handleError(failure: failure), (apiResponse) async { if (apiResponse.data is String) { //TODO: This Section Need to Be Testing. - LoadingUtils.hideFullScreenLoader(); + LoaderBottomSheet.hideLoader(); _dialogService.showExceptionBottomSheet(message: apiResponse.data, onOkPressed: () {}, onCancelPressed: () {}); //TODO: Here We Need to Show a Dialog Of Something in the case of Fail With OK and Cancel and the Display Variable WIll be result. } else { - LoadingUtils.hideFullScreenLoader(); + LoaderBottomSheet.hideLoader(); if (apiResponse.data["MessageStatus"] == 1) { - LoadingUtils.showFullScreenLoader(isSuccessDialog: true, loadingText: "Your medical file has been created successfully. \nPlease proceed to login."); + LoaderBottomSheet.showLoader(loadingText: "Your medical file has been created successfully. \nPlease proceed to login."); //TODO: Here We Need to Show a Dialog Of Something in the case of Success. await clearDefaultInputValues(); // This will Clear All Default Values Of User. Future.delayed(Duration(seconds: 1), () { - LoadingUtils.hideFullScreenLoader(); + LoaderBottomSheet.hideLoader(); // _navigationService.pushAndReplace(AppRoutes.loginScreen); _navigationService.pushAndRemoveUntil(CustomPageRoute(page: LandingNavigation()), (r) => false); _navigationService.push(CustomPageRoute(page: LoginScreen())); }); + } else { + print("========="); } } }); @@ -962,24 +1610,33 @@ class AuthenticationViewModel extends ChangeNotifier { } Future insertPatientIMEIData(int loginType) async { + final authenticatedUser = _appState.getAuthenticatedUser(); + if (authenticatedUser == null) { + log("insertPatientIMEIData: authenticatedUser is null, skipping."); + return; + } + if (authenticatedUser.patientId == null) { + log("insertPatientIMEIData: patientId is null, skipping."); + return; + } final resultEither = await _authenticationRepo.insertPatientIMEIData( patientIMEIDataRequest: PatientInsertDeviceImei( imei: _appState.deviceToken, deviceTypeId: _appState.getDeviceTypeID(), - patientId: _appState.getAuthenticatedUser()!.patientId!, - patientIdentificationNo: _appState.getAuthenticatedUser()!.patientIdentificationNo!, - identificationNo: _appState.getAuthenticatedUser()!.patientIdentificationNo!, - firstName: _appState.getAuthenticatedUser()!.firstName!, - lastName: _appState.getAuthenticatedUser()!.lastName!, - patientTypeId: _appState.getAuthenticatedUser()!.patientType, - mobileNo: _appState.getAuthenticatedUser()!.mobileNumber!, + patientId: authenticatedUser.patientId!, + patientIdentificationNo: authenticatedUser.patientIdentificationNo ?? '', + identificationNo: authenticatedUser.patientIdentificationNo ?? '', + firstName: authenticatedUser.firstName ?? '', + lastName: authenticatedUser.lastName ?? '', + patientTypeId: authenticatedUser.patientType, + mobileNo: authenticatedUser.mobileNumber ?? '', logInTypeId: loginType, - patientOutSa: _appState.getAuthenticatedUser()!.outSa!, - outSa: _appState.getAuthenticatedUser()!.outSa == 1 ? true : false, + patientOutSa: authenticatedUser.outSa ?? 0, + outSa: authenticatedUser.outSa == 1 ? true : false, biometricEnabled: loginType == 1 || loginType == 2 ? false : true, - firstNameN: _appState.getAuthenticatedUser()!.firstNameN, - lastNameN: _appState.getAuthenticatedUser()!.lastNameN, - zipCode: _appState.getAuthenticatedUser()!.zipCode //selectedCountrySignup == CountryEnum.others ? '0': selectedCountrySignup.countryCode, + firstNameN: authenticatedUser.firstNameN, + lastNameN: authenticatedUser.lastNameN, + zipCode: authenticatedUser.zipCode //selectedCountrySignup == CountryEnum.others ? '0': selectedCountrySignup.countryCode, ) .toJson()); resultEither.fold((failure) async => await _errorHandlerService.handleError(failure: failure), (apiResponse) async { @@ -993,24 +1650,31 @@ class AuthenticationViewModel extends ChangeNotifier { } Future insertPatientDeviceData(int loginType) async { + final authenticatedUser = _appState.getAuthenticatedUser(); + if (authenticatedUser == null || authenticatedUser.patientId == null) { + log("insertPatientDeviceData: authenticatedUser or patientId is null, skipping."); + return; + } final resultEither = await _authenticationRepo.insertPatientDeviceData( patientDeviceDataRequest: InsertPatientMobileDeviceInfo( deviceToken: _appState.deviceToken, deviceTypeId: _appState.getDeviceTypeID(), - patientId: _appState.getAuthenticatedUser()!.patientId!, - patientTypeId: _appState.getAuthenticatedUser()!.patientType, - patientOutSa: _appState.getAuthenticatedUser()!.outSa!, + patientId: authenticatedUser.patientId!, + patientTypeId: authenticatedUser.patientType, + patientOutSa: authenticatedUser.outSa ?? 0, loginType: loginType, languageId: _appState.getLanguageID(), latitude: _appState.userLat, longitude: _appState.userLong, voipToken: "", deviceType: _appState.deviceTypeID, - patientMobileNumber: _appState.getAuthenticatedUser()!.mobileNumber, - nationalId: _appState.getAuthenticatedUser()!.patientIdentificationNo, - gender: _appState.getAuthenticatedUser()!.gender) + patientMobileNumber: authenticatedUser.mobileNumber, + nationalId: authenticatedUser.patientIdentificationNo, + gender: authenticatedUser.gender) .toJson()); - resultEither.fold((failure) async => await _errorHandlerService.handleError(failure: failure), (apiResponse) async { + resultEither.fold((failure) async { + // await _errorHandlerService.handleError(failure: failure); + }, (apiResponse) async { if (apiResponse.messageStatus == 2) {} if (apiResponse.messageStatus == 1) { log("Insert Device Data Success"); @@ -1028,14 +1692,26 @@ class AuthenticationViewModel extends ChangeNotifier { patientId: _appState.getSelectDeviceByImeiRespModelElement!.patientId!, patientType: _appState.getSelectDeviceByImeiRespModelElement!.patientType, patientOutSa: _appState.getSelectDeviceByImeiRespModelElement!.outSa == true ? 1 : 0, + projectOutSa: _appState.getSelectDeviceByImeiRespModelElement!.outSa, loginType: loginType, languageId: _appState.getLanguageID(), latitude: _appState.userLat, longitude: _appState.userLong, mobileNo: _appState.getSelectDeviceByImeiRespModelElement!.mobile!, patientMobileNumber: int.parse(_appState.getSelectDeviceByImeiRespModelElement!.mobile!), - nationalId: _appState.getSelectDeviceByImeiRespModelElement!.identificationNo) + nationalId: _appState.getSelectDeviceByImeiRespModelElement!.identificationNo, + zipCode: _appState.getSelectDeviceByImeiRespModelElement!.isOther == true + ? "0" + : _appState.getSelectDeviceByImeiRespModelElement!.outSa == true + ? CountryEnum.unitedArabEmirates.countryCode + : CountryEnum.saudiArabia.countryCode, + isRegister: false, + logInTokenId: "", + searchType: 2, + patientIdentificationId: "0", + otpSendType: loginType) .toJson()); + resultEither.fold((failure) async => await _errorHandlerService.handleError(failure: failure), (apiResponse) async { if (apiResponse.messageStatus == 1) { dynamic deviceInfo = apiResponse.data['List_MobileLoginInfo']; @@ -1053,7 +1729,7 @@ class AuthenticationViewModel extends ChangeNotifier { _dialogService.showPhoneNumberPickerSheet( // label: "Where would you like to receive OTP?", label: LocaleKeys.receiveOtpToast.tr(), - message: "Please select from the below options to receive OTP.", + message: _appState.isArabic() ? "يرجى الاختيار من الخيارات أدناه لاستلام رمز التحقق." : "Please select from the below options to receive OTP.", onSMSPress: () { checkUserAuthentication(otpTypeEnum: OTPTypeEnum.sms); }, @@ -1112,6 +1788,8 @@ class AuthenticationViewModel extends ChangeNotifier { projectDetailListModel.add(ProjectDetailListModel.fromJson(v)); }); _appState.setProjectsDetailList(projectDetailListModel); + _appState.setIsPaytabsEnabled(Utils.havePrivilege(120)); + _appState.setIsPayfortHostedPageEnabled(Utils.havePrivilege(121)); } }, ); @@ -1133,6 +1811,7 @@ class AuthenticationViewModel extends ChangeNotifier { _appState.setIsAuthenticated = false; _appState.setAppAuthToken = ""; _appState.setUserBloodGroup = ""; + _appState.clearProfileImageCache(); // Clear profile image cache _appState.setSuperUserID = null; _appState.setIsChildLoggedIn = false; _appState.setFamilyFileTokenID = ""; @@ -1144,10 +1823,87 @@ class AuthenticationViewModel extends ChangeNotifier { _appState.setVidaPlusProjectList([]); _appState.setHMCProjectList([]); _appState.setProjectsDetailList([]); + _appState.clearUserSwitchPayloads(); await clearDefaultInputValues(); _navigationService.pushAndReplace(AppRoutes.landingScreen); } catch (e) { _navigationService.pushAndReplace(AppRoutes.landingScreen); } } + + Future getPatientBloodTypeNew() async { + try { + final result = await _authenticationRepo.getPatientBloodType(); + + result.fold( + (failure) async { + // Log error but don't show to user, keep existing blood type + log("Failed to fetch blood type: ${failure.message}"); + }, + (apiResponse) { + if (apiResponse.messageStatus == 1 && apiResponse.data != null) { + // Extract blood type from response + String? bloodType = apiResponse.data['GetPatientBloodType'][0]["BloodType"]; + if (bloodType != null && bloodType.isNotEmpty) { + _appState.setUserBloodGroup = bloodType; + log("Blood type updated from new API: $bloodType"); + } + } + }, + ); + } catch (e) { + log("Error calling getPatientBloodType: $e"); + } + } + + /// Fetch profile image after login and store in AppState + Future _fetchProfileImage(int? patientID) async { + if (patientID == null) return; + + try { + log("Fetching profile image for patient ID: $patientID"); + + // IMPORTANT: Clear old cache BEFORE fetching new image + // This ensures old data is removed immediately + _appState.clearProfileImageCache(); + log("🧹 Cleared profile image cache before fetch"); + + final profileSettingsRepo = GetIt.instance(); + final result = await profileSettingsRepo.getProfileImage(patientID: patientID); + + result.fold( + (failure) { + // Silently fail - profile image is optional + log("Failed to fetch profile image: ${failure.message}"); + // Ensure cache is cleared even on failure + _appState.setProfileImageData = null; + }, + (apiResponse) { + if (apiResponse.data != null && apiResponse.data['Patient_GetProfileImageDataList'] != null) { + var imageList = apiResponse.data['Patient_GetProfileImageDataList']; + if (imageList is List && imageList.isNotEmpty) { + String? imageData = imageList[0]['ImageData']; + if (imageData != null && imageData.isNotEmpty) { + // Set new profile image data - this will update cache and notify all listeners + _appState.setProfileImageData = imageData; + log("✅ Profile image loaded and cached successfully for patient: $patientID"); + } else { + log("⚠️ Profile image data is empty for patient: $patientID"); + _appState.setProfileImageData = null; + } + } else { + log("⚠️ Profile image list is empty for patient: $patientID"); + _appState.setProfileImageData = null; + } + } else { + log("⚠️ No profile image data in response for patient: $patientID"); + _appState.setProfileImageData = null; + } + }, + ); + } catch (e) { + log("❌ Error fetching profile image: $e"); + _appState.setProfileImageData = null; + } + } } diff --git a/lib/features/authentication/models/request_models/send_activation_request_model.dart b/lib/features/authentication/models/request_models/send_activation_request_model.dart index 2908f7ec..6e2ddb93 100644 --- a/lib/features/authentication/models/request_models/send_activation_request_model.dart +++ b/lib/features/authentication/models/request_models/send_activation_request_model.dart @@ -30,6 +30,7 @@ class SendActivationRequest { int? status; int? familyRegionID; bool? isPatientExcluded; + String? turnstileToken; SendActivationRequest( {this.patientMobileNumber, @@ -62,7 +63,8 @@ class SendActivationRequest { this.responseID, this.status, this.familyRegionID, - this.isPatientExcluded}); + this.isPatientExcluded, + this.turnstileToken}); SendActivationRequest.fromJson(Map json) { patientMobileNumber = json['PatientMobileNumber']; @@ -96,6 +98,7 @@ class SendActivationRequest { status = json['Status']; familyRegionID = json['FamilyRegionID']; isPatientExcluded = json['IsPatientExcluded']; + turnstileToken = json['TurnstileToken']; } Map toJson() { @@ -135,6 +138,9 @@ class SendActivationRequest { data['Status'] = status; data['FamilyRegionID'] = familyRegionID; data['IsPatientExcluded'] = isPatientExcluded; + if (turnstileToken != null) { + data['TurnstileToken'] = turnstileToken; + } return data; } } diff --git a/lib/features/authentication/widgets/otp_verification_screen.dart b/lib/features/authentication/widgets/otp_verification_screen.dart index 7ddccda8..1b5c80d1 100644 --- a/lib/features/authentication/widgets/otp_verification_screen.dart +++ b/lib/features/authentication/widgets/otp_verification_screen.dart @@ -1,5 +1,7 @@ import 'dart:async'; +import 'dart:io'; +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; @@ -20,6 +22,8 @@ import 'package:hmg_patient_app_new/widgets/appbar/app_bar_widget.dart'; import 'package:provider/provider.dart'; import 'package:sms_otp_auto_verify/sms_otp_auto_verify.dart'; +import 'dart:ui' as ui; + typedef OnDone = void Function(String text); class ProvidedPinBoxTextAnimation { @@ -136,6 +140,7 @@ class OTPWidgetState extends State with SingleTickerProviderStateMixi @override void initState() { + Clarity.setCurrentScreenName('OTP Verification Screen'); super.initState(); authVm = context.read(); focusNode = widget.focusNode ?? FocusNode(); @@ -424,12 +429,12 @@ class OTPWidgetState extends State with SingleTickerProviderStateMixi class OTPVerificationScreen extends StatefulWidget { final String phoneNumber; + final String zipCode; final Function(int code) checkActivationCode; - final Function(String phoneNumber) onResendOTPPressed; + final Function(String phoneNumber, String zipCode) onResendOTPPressed; final bool isFormFamilyFile; - const OTPVerificationScreen( - {super.key, required this.phoneNumber, required this.checkActivationCode, required this.onResendOTPPressed, required this.isFormFamilyFile}); + const OTPVerificationScreen({super.key, required this.phoneNumber, required this.zipCode, required this.checkActivationCode, required this.onResendOTPPressed, required this.isFormFamilyFile}); @override State createState() => _OTPVerificationScreenState(); @@ -446,10 +451,13 @@ class _OTPVerificationScreenState extends State { @override void initState() { + Clarity.setCurrentScreenName('OTP Verification Screen'); super.initState(); _otpController = TextEditingController(); _startResendTimer(); - checkSignature(); + if (Platform.isAndroid) { + checkSignature(); + } } @override @@ -516,7 +524,7 @@ class _OTPVerificationScreenState extends State { }); _otpController.clear(); _startResendTimer(); - widget.onResendOTPPressed(widget.phoneNumber); + widget.onResendOTPPressed(widget.phoneNumber, widget.zipCode); } } @@ -553,34 +561,33 @@ class _OTPVerificationScreenState extends State { children: [ LocaleKeys.weHaveSendOTP.tr(context: context).toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4), _getMaskedPhoneNumber().toText15(color: AppColors.inputLabelTextColor, isBold: true), - LocaleKeys.via.tr(context: context).toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4), - (widget.isFormFamilyFile ? LoginTypeEnum.sms.displayName : authVM.loginTypeEnum.displayName) - .toText15(color: AppColors.inputLabelTextColor, isBold: true, letterSpacing: -0.4), - appState.getUserRegistrationPayload.isRegister != null && appState.getUserRegistrationPayload.isRegister == true - ? LocaleKeys.forRegistrationVerification.tr(context: context).toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4) - : LocaleKeys.forLoginVerification.tr(context: context).toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4), + // LocaleKeys.via.tr(context: context).toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4), + // (widget.isFormFamilyFile ? LoginTypeEnum.sms.displayName : authVM.loginTypeEnum.displayName) + // .toText15(color: AppColors.inputLabelTextColor, isBold: true, letterSpacing: -0.4), + // appState.getUserRegistrationPayload.isRegister != null && appState.getUserRegistrationPayload.isRegister == true + // ? LocaleKeys.forRegistrationVerification.tr(context: context).toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4) + // : LocaleKeys.forLoginVerification.tr(context: context).toText15(color: AppColors.inputLabelTextColor, letterSpacing: -0.4), ], ), SizedBox(height: 16.h), Center( - child: OTPWidget( - maxLength: _otpLength, - controller: _otpController, - pinBoxWidth: 70.h, - pinBoxHeight: 100.h, - pinBoxRadius: 16, - pinBoxBorderWidth: 0, - pinBoxOuterPadding: EdgeInsets.symmetric(horizontal: 4.h), - defaultBorderColor: Colors.transparent, - textBorderColor: Colors.transparent, - pinBoxColor: AppColors.whiteColor, - autoFocus: true, - onTextChanged: _onOtpChanged, - pinTextStyle: TextStyle( - fontSize: 40.f, - fontWeight: FontWeight.bold, - color: AppColors.whiteColor, + child: Directionality( + textDirection: ui.TextDirection.ltr, + child: OTPWidget( + maxLength: _otpLength, + controller: _otpController, + pinBoxWidth: 70.h, + pinBoxHeight: 100.h, + pinBoxRadius: 16, + pinBoxBorderWidth: 0, + pinBoxOuterPadding: EdgeInsets.symmetric(horizontal: 4.h), + defaultBorderColor: Colors.transparent, + textBorderColor: Colors.transparent, + pinBoxColor: AppColors.whiteColor, + autoFocus: true, + onTextChanged: _onOtpChanged, + pinTextStyle: TextStyle(fontSize: 40.f, fontWeight: FontWeight.bold, color: AppColors.whiteColor, fontFamily: "Poppins"), ), ), ), @@ -601,7 +608,7 @@ class _OTPVerificationScreenState extends State { children: [ LocaleKeys.resendIn.tr(context: context).toText16(color: AppColors.inputLabelTextColor), SizedBox(width: 2.h), - ' ($minutes:$seconds). '.toText16(color: AppColors.inputLabelTextColor) + ' ($minutes:$seconds). '.toText16(color: AppColors.inputLabelTextColor, isEnglishOnly: true) ], ); }, diff --git a/lib/features/blood_donation/blood_donation_view_model.dart b/lib/features/blood_donation/blood_donation_view_model.dart index 8ad5bdec..2b978f0a 100644 --- a/lib/features/blood_donation/blood_donation_view_model.dart +++ b/lib/features/blood_donation/blood_donation_view_model.dart @@ -1,11 +1,14 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/doctor_response_mapper.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; import 'package:hmg_patient_app_new/features/blood_donation/blood_donation_repo.dart'; import 'package:hmg_patient_app_new/features/blood_donation/models/blood_group_hospitals_model.dart'; @@ -20,6 +23,7 @@ import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; class BloodDonationViewModel extends ChangeNotifier { @@ -69,8 +73,11 @@ class BloodDonationViewModel extends ChangeNotifier { } void onGenderChange(String? status) { - selectedGender = GenderTypeExtension.fromType(status)!; - notifyListeners(); + final newGender = GenderTypeExtension.fromType(status); + if (newGender != null) { + selectedGender = newGender; + notifyListeners(); + } } setSelectedBloodGroup(BloodGroupListModel bloodGroup) { @@ -227,30 +234,31 @@ class BloodDonationViewModel extends ChangeNotifier { } Future validateSelections() async { + AppState appState = getIt(); if (selectedCity == null) { await dialogService.showErrorBottomSheet( - message: "Please choose city", + message: appState.isArabic() ? "اختر المدينة" :"Please choose city", ); return false; } if (selectedGender == null) { await dialogService.showErrorBottomSheet( - message: "Please choose Gender", + message: appState.isArabic() ? "اختير الجنس" :"Please choose Gender", ); return false; } if (selectedBloodType == null) { await dialogService.showErrorBottomSheet( - message: "Please choose Blood Group", + message: appState.isArabic() ? "اختير فصيلة الدم" :"Please choose Blood Group", ); return false; } if (!isTermsAccepted) { await dialogService.showErrorBottomSheet( - message: "Please accept Terms and Conditions to continue", + message:appState.isArabic() ? "يرجى الموافقة على الشروط والأحكام للمتابعة" : "Please accept Terms and Conditions to continue", ); return false; } @@ -263,7 +271,13 @@ class BloodDonationViewModel extends ChangeNotifier { await bloodDonationRepo.updateBloodGroup(request: payload); await addUserAgreementForBloodDonation(); LoaderBottomSheet.hideLoader(); - dialogService.showSuccessBottomSheetWithoutH(message: "Blood Group Updated Successfully", onOkPressed: () {}); + showCommonBottomSheetWithoutHeight(GetIt.instance().navigatorKey.currentContext!, + child: Utils.getSuccessWidget(loadingText: "Blood Group Updated Successfully").paddingSymmetrical(0.h, 24.h), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: false, + isAutoDismiss: true); + // dialogService.showSuccessBottomSheetWithoutH(message: "Blood Group Updated Successfully", onOkPressed: () {}); } Future addUserAgreementForBloodDonation() async { diff --git a/lib/features/blood_donation/widgets/hospital_selection.dart b/lib/features/blood_donation/widgets/hospital_selection.dart index f49b42d6..c7313228 100644 --- a/lib/features/blood_donation/widgets/hospital_selection.dart +++ b/lib/features/blood_donation/widgets/hospital_selection.dart @@ -26,7 +26,7 @@ class HospitalBottomSheetBodySelection extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - if(!isHideTitle) LocaleKeys.selectHospital.tr(context: context).toText16(weight: FontWeight.w500, color: AppColors.greyTextColor), + if(!isHideTitle) LocaleKeys.selectHospital.tr(context: context).toText16(isBold: true, color: AppColors.greyTextColor), SizedBox(height: 16.h), SizedBox( height: MediaQuery.sizeOf(context).height * .4, @@ -75,7 +75,8 @@ class HospitalBottomSheetBodySelection extends StatelessWidget { children: [ Utils.buildSvgWithAssets(icon: AppAssets.hmg).paddingOnly(right: 10), Expanded( - child: Text(hospital.projectName ?? "", style: TextStyle(fontWeight: FontWeight.w600, fontSize: 16.f, color: AppColors.blackColor)), + child: (hospital.projectName ?? "").toString().toText16(isBold: true, color: AppColors.blackColor), + // Text(hospital.projectName ?? "", style: TextStyle(isBold: true, fontSize: 16.f, color: AppColors.blackColor)), ) ], ); diff --git a/lib/features/book_appointments/book_appointments_repo.dart b/lib/features/book_appointments/book_appointments_repo.dart index fc541d2e..e5200f67 100644 --- a/lib/features/book_appointments/book_appointments_repo.dart +++ b/lib/features/book_appointments/book_appointments_repo.dart @@ -86,7 +86,7 @@ abstract class BookAppointmentsRepo { {required int projectID, required int clinicID, required int patientID, Function(dynamic)? onSuccess, Function(String)? onError}); Future>>> getDentalChiefComplaintDoctorsList(int projectID, int chiefComplaintID, - {Function(dynamic)? onSuccess, Function(String)? onError}); + {bool isGetNearestAppointments, Function(dynamic)? onSuccess, Function(String)? onError}); Future>>> getLaserClinics(int laserCategoryID, int projectID, int languageID, {Function(dynamic)? onSuccess, Function(String)? onError}); @@ -107,6 +107,14 @@ abstract class BookAppointmentsRepo { Function(String)? onError}); Future>> getAppointmentNearestGate({required int projectID, required int clinicID}); + + Future>> isFavouriteDoctor( + {required int patientID, required int projectID, required int clinicID, required int doctorID, Function(dynamic)? onSuccess, Function(String)? onError}); + + Future>> insertFavouriteDoctor( + {required int patientID, required int projectID, required int clinicID, required int doctorID, required bool isActive, Function(dynamic)? onSuccess, Function(String)? onError}); + + Future>> getDoctorSchedule({required int doctorID, required int projectID, required int clinicID, int doctorWorkingHoursDays = 90, Function(dynamic)? onSuccess, Function(String)? onError}); } class BookAppointmentsRepoImp implements BookAppointmentsRepo { @@ -871,12 +879,13 @@ class BookAppointmentsRepoImp implements BookAppointmentsRepo { @override Future>>> getDentalChiefComplaintDoctorsList(int projectID, int chiefComplaintID, - {Function(dynamic)? onSuccess, Function(String)? onError}) async { + {bool isGetNearestAppointments = false, Function(dynamic)? onSuccess, Function(String)? onError}) async { Map mapDevice = { "ProjectID": projectID, "ChiefComplaintID": chiefComplaintID, "isDentalAllowedBackend": true, "IsPublicRequest": true, + "IsGetNearAppointment": isGetNearestAppointments }; try { @@ -996,6 +1005,8 @@ class BookAppointmentsRepoImp implements BookAppointmentsRepo { Future>> getPatientShareWalkInAppointment({required int projectID, required int clinicID, required int doctorID}) async { Map mapRequest = {"ProjectID": projectID, "ClinicID": clinicID, "DoctorID": doctorID}; + late PatientAppointmentShareResponseModel patientShareObj; + try { GenericApiModel? apiResponse; Failure? failure; @@ -1008,14 +1019,18 @@ class BookAppointmentsRepoImp implements BookAppointmentsRepo { onSuccess: (response, statusCode, {messageStatus, errorMessage}) { try { final list = response['OnlineCheckInAppointmentsWalkInModel']; - if (list == null || list.isEmpty) { - throw Exception("patient share list is empty"); - } - - final patientShareObj = PatientAppointmentShareResponseModel.fromJson(list); + patientShareObj = (list == null || list.isEmpty) ? PatientAppointmentShareResponseModel() : PatientAppointmentShareResponseModel.fromJson(list); patientShareObj.isCash = response["IsCash"]; patientShareObj.isEligible = response["IsEligible"]; patientShareObj.isInsured = response["IsInsured"]; + // if (list == null || list.isEmpty) { + // throw Exception("patient share list is empty"); + // } + + // final patientShareObj = PatientAppointmentShareResponseModel.fromJson(list); + // patientShareObj.isCash = response["IsCash"]; + // patientShareObj.isEligible = response["IsEligible"]; + // patientShareObj.isInsured = response["IsInsured"]; apiResponse = GenericApiModel( messageStatus: messageStatus, @@ -1133,4 +1148,131 @@ class BookAppointmentsRepoImp implements BookAppointmentsRepo { return Left(UnknownFailure(e.toString())); } } + + @override + Future>> isFavouriteDoctor( + {required int patientID, required int projectID, required int clinicID, required int doctorID, Function(dynamic)? onSuccess, Function(String)? onError}) async { + Map mapRequest = {"PatientID": patientID, "ProjectID": projectID, "ClinicID": clinicID, "DoctorID": doctorID}; + + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + IS_FAVOURITE_DOCTOR, + body: mapRequest, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + if (onError != null) { + onError(error); + } + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: response["IsFavouriteDoctor"], + ); + if (onSuccess != null) { + onSuccess(response); + } + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> insertFavouriteDoctor( + {required int patientID, required int projectID, required int clinicID, required int doctorID, required bool isActive, Function(dynamic)? onSuccess, Function(String)? onError}) async { + Map mapRequest = {"PatientID": patientID, "ProjectID": projectID, "ClinicID": clinicID, "DoctorID": doctorID, "IsActive": isActive}; + + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + INSERT_FAVOURITE_DOCTOR, + body: mapRequest, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + if (onError != null) { + onError(error); + } + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: response, + ); + if (onSuccess != null) { + onSuccess(response); + } + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> getDoctorSchedule({required int doctorID, required int projectID, required int clinicID, int doctorWorkingHoursDays = 90, Function(dynamic)? onSuccess, Function(String)? onError}) async { + Map mapRequest = { + "DoctorID": doctorID, + "ProjectID": projectID, + "ClinicID": clinicID, + "DoctorWorkingHoursDays": doctorWorkingHoursDays, + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + DOCTOR_SCHEDULE_URL, + body: mapRequest, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + if (onError != null) { + onError(error); + } + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: response, + ); + if (onSuccess != null) { + onSuccess(response); + } + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } } diff --git a/lib/features/book_appointments/book_appointments_view_model.dart b/lib/features/book_appointments/book_appointments_view_model.dart index 4dd103b8..e4f028d9 100644 --- a/lib/features/book_appointments/book_appointments_view_model.dart +++ b/lib/features/book_appointments/book_appointments_view_model.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/location_util.dart'; @@ -11,6 +12,7 @@ import 'package:hmg_patient_app_new/core/utils/loading_utils.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_repo.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/LaserCategoryType.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/free_slot.dart'; @@ -49,6 +51,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { bool isDoctorSearchByNameStarted = false; bool isAppointmentNearestGateLoading = false; + bool isLiveCareSelectedFromHomePage = false; bool isLiveCareSchedule = false; bool isGetDocForHealthCal = false; bool showSortFilterButtons = false; @@ -97,6 +100,8 @@ class BookAppointmentsViewModel extends ChangeNotifier { bool isDoctorRatingDetailsLoading = false; List doctorDetailsList = []; + bool isFavouriteDoctor = false; + List slotsList = []; List docFreeSlots = []; List dayEvents = []; @@ -136,6 +141,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { bool applyFilters = false; bool isWaitingAppointmentAvailable = false; + bool isPatientRescheduleAppointment = false; bool isWaitingAppointmentSelected = false; int waitingAppointmentProjectID = 0; @@ -147,6 +153,72 @@ class BookAppointmentsViewModel extends ChangeNotifier { AppointmentNearestGateResponseModel? appointmentNearestGateResponseModel; ///variables for laser clinic + bool isLaserHospitalsLoading = false; + List laserHospitalsList = []; + int laserHospitalHmgCount = 0; + int laserHospitalHmcCount = 0; + + Future getLaserHospitals({Function(dynamic)? onSuccess, Function(String)? onError}) async { + isLaserHospitalsLoading = true; + laserHospitalsList.clear(); + laserHospitalHmgCount = 0; + laserHospitalHmcCount = 0; + notifyListeners(); + + final result = await bookAppointmentsRepo.getDoctorsList(253, 0, false, 0, ''); + + result.fold( + (failure) async { + isLaserHospitalsLoading = false; + notifyListeners(); + onError?.call(failure.message); + }, + (apiResponse) async { + if (apiResponse.messageStatus == 1) { + var doctorList = apiResponse.data!; + var regionList = await DoctorMapper.getMappedDoctor( + doctorList, + isArabic: _appState.isArabic(), + lat: _appState.userLat, + long: _appState.userLong, + ); + + var isLocationEnabled = (_appState.userLat != 0) && (_appState.userLong != 0); + regionList = await DoctorMapper.sortList(isLocationEnabled, regionList); + + // Flatten all hospitals across all regions into a single list + laserHospitalsList.clear(); + Set addedHospitals = {}; + regionList.registeredDoctorMap?.forEach((region, regionData) { + for (var hospital in regionData?.hmgDoctorList ?? []) { + if (!addedHospitals.contains(hospital.filterName)) { + addedHospitals.add(hospital.filterName ?? ''); + laserHospitalsList.add(hospital); + } + } + for (var hospital in regionData?.hmcDoctorList ?? []) { + if (!addedHospitals.contains(hospital.filterName)) { + addedHospitals.add(hospital.filterName ?? ''); + laserHospitalsList.add(hospital); + } + } + }); + + laserHospitalHmgCount = laserHospitalsList.where((h) => h.isHMC != true).length; + laserHospitalHmcCount = laserHospitalsList.where((h) => h.isHMC == true).length; + + isLaserHospitalsLoading = false; + notifyListeners(); + onSuccess?.call(apiResponse); + } else { + isLaserHospitalsLoading = false; + notifyListeners(); + onError?.call(apiResponse.errorMessage ?? 'Unknown error'); + } + }, + ); + } + List femaleLaserCategory = [ LaserCategoryType(1, 'bodyString'), LaserCategoryType(2, 'face'), @@ -154,7 +226,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { LaserCategoryType(11, 'retouch'), ]; List maleLaserCategory = [ - LaserCategoryType(1, 'body'), + LaserCategoryType(1, 'bodyString'), LaserCategoryType(2, 'face'), LaserCategoryType(11, 'retouch'), ]; @@ -259,12 +331,56 @@ class BookAppointmentsViewModel extends ChangeNotifier { notifyListeners(); } + void filterDoctors(String query) { + if (query.isEmpty) { + filteredDoctorList = List.from(doctorsList); + _groupDoctorsList(); + setIsNearestAppointmentSelected(isNearestAppointmentSelected); + notifyListeners(); + return; + } + + filteredDoctorList = doctorsList.where((doctor) { + final name = (doctor.name ?? '').toLowerCase(); + final clinicName = (doctor.clinicName ?? '').toLowerCase(); + final projectName = (doctor.projectName ?? '').toLowerCase(); + final q = query.toLowerCase(); + return name.contains(q) || clinicName.contains(q) || projectName.contains(q); + }).toList(); + + // Re-group filtered list + final clinicMap = >{}; + final hospitalMap = >{}; + + for (var doctor in filteredDoctorList) { + final clinicKey = (doctor.clinicName ?? 'Unknown').trim(); + clinicMap.putIfAbsent(clinicKey, () => []).add(doctor); + + final hospitalKey = (doctor.projectName ?? 'Unknown').trim(); + hospitalMap.putIfAbsent(hospitalKey, () => []).add(doctor); + } + + doctorsListByClinic = clinicMap.values.toList(); + doctorsListByHospital = hospitalMap.values.toList(); + doctorsListGrouped = isSortByClinic ? doctorsListByClinic : doctorsListByHospital; + + notifyListeners(); + } + void filterClinics(String? query) { if (query!.isEmpty) { _filteredClinicsList = List.from(clinicsList); showSortFilterButtons = false; } else { - _filteredClinicsList = clinicsList.where((clinic) => clinic.clinicDescription?.toLowerCase().contains(query!.toLowerCase()) ?? false).toList(); + // Normalize the search query for better Arabic text matching + String normalizedQuery = Utils.normalizeArabicText(query.toLowerCase()); + + _filteredClinicsList = clinicsList.where((clinic) { + String clinicName = clinic.clinicDescription?.toLowerCase() ?? ''; + String normalizedClinicName = Utils.normalizeArabicText(clinicName); + return normalizedClinicName.contains(normalizedQuery); + }).toList(); + showSortFilterButtons = query.length >= 3; } notifyListeners(); @@ -286,14 +402,23 @@ class BookAppointmentsViewModel extends ChangeNotifier { isContinueDentalPlan = false; isChiefComplaintsListLoading = true; isWaitingAppointmentSelected = false; + isPatientRescheduleAppointment = false; bodyTypes = [maleLaserCategory, femaleLaserCategory]; // getLocation(); notifyListeners(); } + refreshDoctorsList() { + setIsDoctorsListLoading(true); + if(selectedClinic.clinicID == 17) { + getDentalChiefComplaintDoctorsList(projectID: currentlySelectedHospitalFromRegionFlow != null ? int.parse(currentlySelectedHospitalFromRegionFlow!) : 0); + } else { + getDoctorsList(isNearest: isNearestAppointmentSelected); + } + } + setIsNearestAppointmentSelected(bool isNearestAppointmentSelected) { this.isNearestAppointmentSelected = isNearestAppointmentSelected; - if (isNearestAppointmentSelected) { for (var group in doctorsListGrouped) { group.sort((a, b) { @@ -304,20 +429,25 @@ class BookAppointmentsViewModel extends ChangeNotifier { }); } } else { - for (var group in doctorsListGrouped) { - group.sort((a, b) { - var aSlot = a.decimalDoctorRate; - var bSlot = b.decimalDoctorRate; - if (aSlot == null || bSlot == null) return 0; - return bSlot.compareTo(aSlot); - }); - } + // for (var group in doctorsListGrouped) { + // group.sort((a, b) { + // var aSlot = a.decimalDoctorRate; + // var bSlot = b.decimalDoctorRate; + // if (aSlot == null || bSlot == null) return 0; + // return bSlot.compareTo(aSlot); + // }); + // } // doctorsList.sort((a, b) => b.decimalDoctorRate!.compareTo(a.decimalDoctorRate!)); } notifyListeners(); } + setIsLiveCareSelectedFromHomePage(bool isLiveCareSelectedFromHomePage) { + this.isLiveCareSelectedFromHomePage = isLiveCareSelectedFromHomePage; + notifyListeners(); + } + setIsWaitingAppointmentSelected(bool isWaitingAppointmentSelected) { this.isWaitingAppointmentSelected = isWaitingAppointmentSelected; notifyListeners(); @@ -419,13 +549,34 @@ class BookAppointmentsViewModel extends ChangeNotifier { notifyListeners(); } + setIsPatientRescheduleAppointment(bool isPatientRescheduleAppointment) { + this.isPatientRescheduleAppointment = isPatientRescheduleAppointment; + notifyListeners(); + } + void onTabChanged(int index) { calculationID = null; isGetDocForHealthCal = false; selectedTabIndex = index; + checkLiveCareSymptomCheckerStatus(); notifyListeners(); } + bool checkLiveCareSymptomCheckerStatus() { + bool isAllowed = false; + + if (selectedTabIndex == 1) { + if (_appState.isAuthenticated) { + isAllowed = true; + } else { + isAllowed = false; + } + } else { + isAllowed = true; + } + return isAllowed; + } + /// this function will decide which clinic api to be called /// either api for region flow or the select clinic api Future getClinics() async { @@ -511,8 +662,11 @@ class BookAppointmentsViewModel extends ChangeNotifier { } //TODO: Make the API dynamic with parameters for ProjectID, isNearest, languageID, doctorId, doctorName - Future getDoctorsList({int projectID = 0, bool isNearest = true, int doctorId = 0, String doctorName = "", Function(dynamic)? onSuccess, Function(String)? onError}) async { + Future getDoctorsList({int projectID = 0, bool isNearest = false, int doctorId = 0, String doctorName = "", Function(dynamic)? onSuccess, Function(String)? onError}) async { doctorsList.clear(); + filteredDoctorList.clear(); + doctorsListGrouped.clear(); + notifyListeners(); projectID = currentlySelectedHospitalFromRegionFlow != null ? int.parse(currentlySelectedHospitalFromRegionFlow!) : projectID; final result = await bookAppointmentsRepo.getDoctorsList(selectedClinic.clinicID ?? 0, projectID, doctorName.isNotEmpty ? false : isNearest, doctorId, doctorName, isContinueDentalPlan: isContinueDentalPlan); @@ -531,11 +685,12 @@ class BookAppointmentsViewModel extends ChangeNotifier { doctorsList = apiResponse.data!; filteredDoctorList = doctorsList; isDoctorsListLoading = false; - doctorsList.sort((a, b) => b.decimalDoctorRate!.compareTo(a.decimalDoctorRate!)); + // doctorsList.sort((a, b) => b.decimalDoctorRate!.compareTo(a.decimalDoctorRate!)); initializeFilteredList(); clearSearchFilters(); getFiltersFromDoctorList(); _groupDoctorsList(); + setIsNearestAppointmentSelected(isNearest); notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); @@ -588,7 +743,9 @@ class BookAppointmentsViewModel extends ChangeNotifier { result.fold( (failure) async { - onError?.call(selectedClinic.clinicID == 23 ? failure.message : LocaleKeys.noDoctorFound.tr()); + if (onError != null) { + onError.call(selectedClinic.clinicID == 23 ? failure.message : LocaleKeys.noDoctorFound.tr()); + } }, (apiResponse) async { if (apiResponse.messageStatus == 2) { @@ -625,6 +782,17 @@ class BookAppointmentsViewModel extends ChangeNotifier { } else if (apiResponse.messageStatus == 1) { doctorsProfileResponseModel = apiResponse.data!; notifyListeners(); + + // Check if doctor is favorite after getting profile + if(_appState.isAuthenticated) { + checkIsFavouriteDoctor( + patientID: _appState.getAuthenticatedUser()!.patientId!, + projectID: doctorsProfileResponseModel.projectID ?? 0, + clinicID: doctorsProfileResponseModel.clinicID ?? 0, + doctorID: doctorsProfileResponseModel.doctorID ?? 0, + ); + } + if (onSuccess != null) { onSuccess(apiResponse); } @@ -676,7 +844,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { Future getDoctorFreeSlots({bool isBookingForLiveCare = false, Function(dynamic)? onSuccess, Function(String)? onError}) async { docFreeSlots.clear(); DateTime date; - final DateFormat formatter = DateFormat('HH:mm'); + final DateFormat formatter = DateFormat('HH:mm', "en-US"); final DateFormat dateFormatter = DateFormat('yyyy-MM-dd'); Map _eventsParsed; @@ -708,6 +876,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { initialSlotDuration = apiResponse.data["InitialSlotDuration"]; freeSlotsResponse = apiResponse.data['FreeTimeSlots']; isWaitingAppointmentAvailable = apiResponse.data["IsAllowToBookWaitingAppointment"]; + // isWaitingAppointmentAvailable = true; freeSlotsResponse.forEach((element) { @@ -818,64 +987,115 @@ class BookAppointmentsViewModel extends ChangeNotifier { print(failure); onError!(failure.message); }, - (apiResponse) { + (apiResponse) async { if (apiResponse.messageStatus == 2) { // onError!(apiResponse); - LoadingUtils.hideFullScreenLoader(); - showCommonBottomSheetWithoutHeight( - title: LocaleKeys.notice.tr(context: navigationService.navigatorKey.currentContext!), - navigationService.navigatorKey.currentContext!, - child: Utils.getWarningWidget( - loadingText: apiResponse.data["ErrorEndUserMessage"], - isShowActionButtons: true, - onCancelTap: () { - navigationService.pop(); - }, - onConfirmTap: () async { - navigationService.pop(); - PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel = PatientAppointmentHistoryResponseModel( - appointmentNo: apiResponse.data["SameClinicApptList"][0]['AppointmentNo'], - clinicID: apiResponse.data["SameClinicApptList"][0]['ClinicID'], - projectID: apiResponse.data["SameClinicApptList"][0]['ProjectID'], - endDate: apiResponse.data["SameClinicApptList"][0]['EndTime'], - startTime: apiResponse.data["SameClinicApptList"][0]['StartTime'], - doctorID: apiResponse.data["SameClinicApptList"][0]['DoctorID'], - isLiveCareAppointment: apiResponse.data["SameClinicApptList"][0]['IsLiveCareAppointment'], - originalClinicID: 0, - originalProjectID: 0, - appointmentDate: apiResponse.data["SameClinicApptList"][0]['AppointmentDate'], - ); - - LoaderBottomSheet.showLoader( - loadingText: LocaleKeys.reschedulingAppo.tr(context: navigationService.navigatorKey.currentContext!), - ); - await cancelAppointment(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel).then((val) async { + if (isPatientRescheduleAppointment) { + PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel = PatientAppointmentHistoryResponseModel( + appointmentNo: apiResponse.data["SameClinicApptList"][0]['AppointmentNo'], + clinicID: apiResponse.data["SameClinicApptList"][0]['ClinicID'], + projectID: apiResponse.data["SameClinicApptList"][0]['ProjectID'], + endDate: apiResponse.data["SameClinicApptList"][0]['EndTime'], + startTime: apiResponse.data["SameClinicApptList"][0]['StartTime'], + doctorID: apiResponse.data["SameClinicApptList"][0]['DoctorID'], + isLiveCareAppointment: apiResponse.data["SameClinicApptList"][0]['IsLiveCareAppointment'], + originalClinicID: 0, + originalProjectID: 0, + appointmentDate: apiResponse.data["SameClinicApptList"][0]['AppointmentDate'], + ); + + await cancelAppointment(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel).then((val) async { + // LoaderBottomSheet.hideLoader(); + Future.delayed(Duration(milliseconds: 50)).then((value) async {}); + // LoaderBottomSheet.showLoader(loadingText: LocaleKeys.bookingYourAppointment.tr()); + await insertSpecificAppointment( + onError: (err) {}, + onSuccess: (apiResp) async { LoaderBottomSheet.hideLoader(); - Future.delayed(Duration(milliseconds: 50)).then((value) async {}); - LoadingUtils.showFullScreenLoader(barrierDismissible: true, isSuccessDialog: false, loadingText: LocaleKeys.bookingYourAppointment.tr()); - await insertSpecificAppointment( - onError: (err) {}, - onSuccess: (apiResp) async { - LoadingUtils.hideFullScreenLoader(); - await Future.delayed(Duration(milliseconds: 50)).then((value) async { - LoadingUtils.showFullScreenLoader(barrierDismissible: true, isSuccessDialog: true, loadingText: LocaleKeys.appointmentSuccess.tr()); - await Future.delayed(Duration(milliseconds: 4000)).then((value) { - LoadingUtils.hideFullScreenLoader(); - Navigator.pushAndRemoveUntil( - navigationService.navigatorKey.currentContext!, - CustomPageRoute( - page: LandingNavigation(), - ), - (r) => false); + await Future.delayed(Duration(milliseconds: 50)).then((value) async { + showCommonBottomSheetWithoutHeight( + GetIt.instance().navigatorKey.currentContext!, + child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentSuccess.tr()).paddingSymmetrical(0.h, 24.h), + callBackFunc: () { + setIsPatientRescheduleAppointment(false); + Navigator.pushAndRemoveUntil( + navigationService.navigatorKey.currentContext!, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }, + isFullScreen: false, + isCloseButtonVisible: false, + isAutoDismiss: true + ); + }); + }); + }); + } else { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: navigationService.navigatorKey.currentContext!), + navigationService.navigatorKey.currentContext!, + child: Utils.getWarningWidget( + loadingText: apiResponse.data["ErrorEndUserMessage"], + isShowActionButtons: true, + onCancelTap: () { + navigationService.pop(); + }, + onConfirmTap: () async { + navigationService.pop(); + PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel = PatientAppointmentHistoryResponseModel( + appointmentNo: apiResponse.data["SameClinicApptList"][0]['AppointmentNo'], + clinicID: apiResponse.data["SameClinicApptList"][0]['ClinicID'], + projectID: apiResponse.data["SameClinicApptList"][0]['ProjectID'], + endDate: apiResponse.data["SameClinicApptList"][0]['EndTime'], + startTime: apiResponse.data["SameClinicApptList"][0]['StartTime'], + doctorID: apiResponse.data["SameClinicApptList"][0]['DoctorID'], + isLiveCareAppointment: apiResponse.data["SameClinicApptList"][0]['IsLiveCareAppointment'], + originalClinicID: 0, + originalProjectID: 0, + appointmentDate: apiResponse.data["SameClinicApptList"][0]['AppointmentDate'], + ); + + LoaderBottomSheet.showLoader( + // loadingText: LocaleKeys.reschedulingAppo.tr(context: navigationService.navigatorKey.currentContext!), + loadingText: LocaleKeys.loadingText.tr(context: navigationService.navigatorKey.currentContext!), + ); + await cancelAppointment(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel).then((val) async { + LoaderBottomSheet.hideLoader(); + Future.delayed(Duration(milliseconds: 50)).then((value) async {}); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.bookingYourAppointment.tr()); + await insertSpecificAppointment( + onError: (err) {}, + onSuccess: (apiResp) async { + LoaderBottomSheet.hideLoader(); + await Future.delayed(Duration(milliseconds: 50)).then((value) async { + showCommonBottomSheetWithoutHeight( + GetIt.instance().navigatorKey.currentContext!, + child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentSuccess.tr()).paddingSymmetrical(0.h, 24.h), + callBackFunc: () { + setIsPatientRescheduleAppointment(false); + Navigator.pushAndRemoveUntil( + navigationService.navigatorKey.currentContext!, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }, + isFullScreen: false, + isCloseButtonVisible: false, + isAutoDismiss: true + ); }); }); - }); - }); - }), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); + }); + }), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } } else if (apiResponse.messageStatus == 1) { if (apiResponse.data == null || apiResponse.data!.isEmpty) { onError!("No free slots available".tr()); @@ -897,7 +1117,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { docID: selectedDoctor.doctorID!, clinicID: selectedDoctor.clinicID!, projectID: selectedDoctor.projectID!, - serviceID: selectedLiveCareClinic.serviceID!, + serviceID: selectedLiveCareClinic.serviceID ?? 0, selectedDate: selectedAppointmentDate, selectedTime: selectedAppointmentTime, initialSlotDuration: initialSlotDuration, @@ -907,12 +1127,14 @@ class BookAppointmentsViewModel extends ChangeNotifier { result.fold( (failure) async { - print(failure); + if(onError != null) { + onError(failure.message); + } }, (apiResponse) { if (apiResponse.messageStatus == 2) { // onError!(apiResponse); - LoadingUtils.hideFullScreenLoader(); + LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( title: LocaleKeys.notice.tr(context: navigationService.navigatorKey.currentContext!), navigationService.navigatorKey.currentContext!, @@ -948,22 +1170,28 @@ class BookAppointmentsViewModel extends ChangeNotifier { await cancelAppointment(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel).then((val) async { navigationService.pop(); Future.delayed(Duration(milliseconds: 50)).then((value) async {}); - LoadingUtils.showFullScreenLoader(barrierDismissible: true, isSuccessDialog: false, loadingText: LocaleKeys.bookingYourAppointment.tr()); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.bookingYourAppointment.tr()); await insertSpecificAppointment( onError: (err) {}, onSuccess: (apiResp) async { - LoadingUtils.hideFullScreenLoader(); + LoaderBottomSheet.hideLoader(); await Future.delayed(Duration(milliseconds: 50)).then((value) async { - LoadingUtils.showFullScreenLoader(barrierDismissible: true, isSuccessDialog: true, loadingText: LocaleKeys.appointmentSuccess.tr()); - await Future.delayed(Duration(milliseconds: 4000)).then((value) { - LoadingUtils.hideFullScreenLoader(); - Navigator.pushAndRemoveUntil( - navigationService.navigatorKey.currentContext!, - CustomPageRoute( - page: LandingNavigation(), - ), - (r) => false); - }); + showCommonBottomSheetWithoutHeight( + GetIt.instance().navigatorKey.currentContext!, + child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentSuccess.tr()).paddingSymmetrical(0.h, 24.h), + callBackFunc: () { + setIsPatientRescheduleAppointment(false); + Navigator.pushAndRemoveUntil( + navigationService.navigatorKey.currentContext!, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }, + isFullScreen: false, + isCloseButtonVisible: false, + isAutoDismiss: true + ); }); }); }); @@ -1257,11 +1485,16 @@ class BookAppointmentsViewModel extends ChangeNotifier { Future getDentalChiefComplaintDoctorsList({int projectID = 0, Function(dynamic)? onSuccess, Function(String)? onError}) async { doctorsList.clear(); + notifyListeners(); + projectID = currentlySelectedHospitalFromRegionFlow != null ? int.parse(currentlySelectedHospitalFromRegionFlow!) : projectID; - final result = await bookAppointmentsRepo.getDentalChiefComplaintDoctorsList(projectID, selectedChiefComplaintID); + final result = await bookAppointmentsRepo.getDentalChiefComplaintDoctorsList(projectID, selectedChiefComplaintID, isGetNearestAppointments: isNearestAppointmentSelected); result.fold( (failure) async { + if(onError != null) { + onError(failure.message); + } onError!(LocaleKeys.noDoctorFound.tr()); }, (apiResponse) { @@ -1275,6 +1508,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { // clearSearchFilters(); // getFiltersFromDoctorList(); _groupDoctorsList(); + setIsNearestAppointmentSelected(isNearestAppointmentSelected); notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); @@ -1457,7 +1691,7 @@ class BookAppointmentsViewModel extends ChangeNotifier { }, (apiResponse) { if (apiResponse.messageStatus == 2) { - LoadingUtils.hideFullScreenLoader(); + LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( title: LocaleKeys.notice.tr(context: navigationService.navigatorKey.currentContext!), navigationService.navigatorKey.currentContext!, @@ -1507,4 +1741,123 @@ class BookAppointmentsViewModel extends ChangeNotifier { }, ); } + + void toggleFavouriteDoctor() { + isFavouriteDoctor = !isFavouriteDoctor; + notifyListeners(); + } + + void setIsFavouriteDoctor(bool value) { + isFavouriteDoctor = value; + notifyListeners(); + } + + Future checkIsFavouriteDoctor({required int patientID, required int projectID, required int clinicID, required int doctorID, Function(dynamic)? onSuccess, Function(String)? onError}) async { + final result = await bookAppointmentsRepo.isFavouriteDoctor( + patientID: patientID, + projectID: projectID, + clinicID: clinicID, + doctorID: doctorID, + onSuccess: onSuccess, + onError: onError, + ); + + result.fold( + (failure) async { + if (onError != null) { + onError(failure.message); + } + }, + (apiResponse) { + if (apiResponse.messageStatus == 2) { + if (onError != null) { + onError(apiResponse.errorMessage ?? "Failed to check favorite doctor"); + } + } else if (apiResponse.messageStatus == 1) { + // Check the response for IsFavouriteDoctor flag + bool isFavorite = apiResponse.data; + setIsFavouriteDoctor(isFavorite); + if (onSuccess != null) { + onSuccess(apiResponse.data); + } + } + }, + ); + } + + Future insertFavouriteDoctor({required int patientID, required int projectID, required int clinicID, required int doctorID, required bool isActive, Function(dynamic)? onSuccess, Function(String)? onError}) async { + final result = await bookAppointmentsRepo.insertFavouriteDoctor( + patientID: patientID, + projectID: projectID, + clinicID: clinicID, + doctorID: doctorID, + isActive: isActive, + onSuccess: onSuccess, + onError: onError, + ); + + result.fold( + (failure) async { + if (onError != null) { + onError(failure.message); + } + }, + (apiResponse) { + if (apiResponse.messageStatus == 2) { + if (onError != null) { + onError(apiResponse.errorMessage ?? "Failed to update favorite doctor"); + } + } else if (apiResponse.messageStatus == 1) { + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse.data); + } + } + }, + ); + } + + bool isDoctorScheduleLoading = false; + List doctorFreeSlotDates = []; + dynamic doctorScheduleResponse; + + Future getDoctorSchedule({required int doctorID, required int projectID, required int clinicID, int doctorWorkingHoursDays = 90, Function(dynamic)? onSuccess, Function(String)? onError}) async { + isDoctorScheduleLoading = true; + notifyListeners(); + + final result = await bookAppointmentsRepo.getDoctorSchedule( + doctorID: doctorID, + projectID: projectID, + clinicID: clinicID, + doctorWorkingHoursDays: doctorWorkingHoursDays, + ); + + result.fold( + (failure) async { + isDoctorScheduleLoading = false; + notifyListeners(); + if (onError != null) { + onError(failure.message); + } + }, + (apiResponse) { + isDoctorScheduleLoading = false; + if (apiResponse.messageStatus == 2) { + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? "Failed to fetch doctor schedule"); + } + } else if (apiResponse.messageStatus == 1) { + doctorScheduleResponse = apiResponse.data; + if (doctorScheduleResponse != null && doctorScheduleResponse['FreeTimeSlots'] != null) { + doctorFreeSlotDates = List.from(doctorScheduleResponse['FreeTimeSlots']); + } + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse.data); + } + } + }, + ); + } } diff --git a/lib/features/book_appointments/models/laser_body_parts_data.dart b/lib/features/book_appointments/models/laser_body_parts_data.dart index 2f8b32dc..969aa1d0 100644 --- a/lib/features/book_appointments/models/laser_body_parts_data.dart +++ b/lib/features/book_appointments/models/laser_body_parts_data.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; class LaserBodyParts { static final LaserBodyParts _instance = LaserBodyParts._internal(); @@ -9,11 +9,11 @@ class LaserBodyParts { factory LaserBodyParts() => _instance; static Widget image(String assetUri) { - return new SvgPicture.asset(assetUri, fit: BoxFit.cover, width: 88, height: 88); + return Utils.buildSvgWithAssets(icon: assetUri, fit: BoxFit.cover, width: 88, height: 88, applyThemeColor: false); } static Widget imagePng(String assetUri) { - return Image.asset(assetUri, fit: BoxFit.cover, width: 88, height: 88); + return Utils.buildImgWithAssets(icon: assetUri, fit: BoxFit.cover, width: 88, height: 88); } Map maleBodyMap = { diff --git a/lib/features/book_appointments/models/resp_models/doctor_schedule_response_model.dart b/lib/features/book_appointments/models/resp_models/doctor_schedule_response_model.dart new file mode 100644 index 00000000..2553b0ae --- /dev/null +++ b/lib/features/book_appointments/models/resp_models/doctor_schedule_response_model.dart @@ -0,0 +1,26 @@ +class DoctorScheduleResponseModel { + String? date; + String? dayName; + String? workingHours; + + DoctorScheduleResponseModel({ + this.date, + this.dayName, + this.workingHours, + }); + + DoctorScheduleResponseModel.fromJson(Map json) { + date = json['Date']; + dayName = json['DayName']; + workingHours = json['WorkingHours']; + } + + Map toJson() { + final Map data = {}; + data['Date'] = date; + data['DayName'] = dayName; + data['WorkingHours'] = workingHours; + return data; + } +} + diff --git a/lib/features/book_appointments/models/resp_models/doctors_list_response_model.dart b/lib/features/book_appointments/models/resp_models/doctors_list_response_model.dart index 75ed1229..a9aa273e 100644 --- a/lib/features/book_appointments/models/resp_models/doctors_list_response_model.dart +++ b/lib/features/book_appointments/models/resp_models/doctors_list_response_model.dart @@ -193,7 +193,7 @@ class DoctorsListResponseModel { serviceID = json['ServiceID']; setupID = json['SetupID']; speciality = json['Speciality'] != null ? json['Speciality'].cast() : []; - // specialityN = json['SpecialityN'].cast(); + specialityN = json['SpecialityN'] != null ? json['SpecialityN'].cast() : []; transactionType = json['TransactionType']; virtualEmploymentType = json['VirtualEmploymentType']; workingHours = json['WorkingHours']; diff --git a/lib/features/book_appointments/models/resp_models/get_favorite_doctors_list.dart b/lib/features/book_appointments/models/resp_models/get_favorite_doctors_list.dart new file mode 100644 index 00000000..b3048e67 --- /dev/null +++ b/lib/features/book_appointments/models/resp_models/get_favorite_doctors_list.dart @@ -0,0 +1,81 @@ +import 'dart:convert'; + +class GetFavoriteDoctorsListModel { + int? id; + int? projectId; + int? clinicId; + int? doctorId; + int? patientId; + bool? patientOutSa; + bool? isActive; + String? createdOn; + dynamic modifiedOn; + String? doctorImageUrl; + String? doctorName; + String? doctorTitle; + String? nationalityFlagUrl; + String? nationalityId; + String? nationalityName; + List? speciality; + + GetFavoriteDoctorsListModel({ + this.id, + this.projectId, + this.clinicId, + this.doctorId, + this.patientId, + this.patientOutSa, + this.isActive, + this.createdOn, + this.modifiedOn, + this.doctorImageUrl, + this.doctorName, + this.doctorTitle, + this.nationalityFlagUrl, + this.nationalityId, + this.nationalityName, + this.speciality, + }); + + factory GetFavoriteDoctorsListModel.fromRawJson(String str) => GetFavoriteDoctorsListModel.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory GetFavoriteDoctorsListModel.fromJson(Map json) => GetFavoriteDoctorsListModel( + id: json["ID"], + projectId: json["ProjectID"], + clinicId: json["ClinicID"], + doctorId: json["DoctorID"], + patientId: json["PatientID"], + patientOutSa: json["PatientOutSA"], + isActive: json["IsActive"], + createdOn: json["CreatedOn"], + modifiedOn: json["ModifiedOn"], + doctorImageUrl: json["DoctorImageURL"], + doctorName: json["DoctorName"], + doctorTitle: json["DoctorTitle"], + nationalityFlagUrl: json["NationalityFlagURL"], + nationalityId: json["NationalityID"], + nationalityName: json["NationalityName"], + speciality: json["Speciality"] == null ? [] : List.from(json["Speciality"]!.map((x) => x)), + ); + + Map toJson() => { + "ID": id, + "ProjectID": projectId, + "ClinicID": clinicId, + "DoctorID": doctorId, + "PatientID": patientId, + "PatientOutSA": patientOutSa, + "IsActive": isActive, + "CreatedOn": createdOn, + "ModifiedOn": modifiedOn, + "DoctorImageURL": doctorImageUrl, + "DoctorName": doctorName, + "DoctorTitle": doctorTitle, + "NationalityFlagURL": nationalityFlagUrl, + "NationalityID": nationalityId, + "NationalityName": nationalityName, + "Speciality": speciality == null ? [] : List.from(speciality!.map((x) => x)), + }; +} diff --git a/lib/features/book_appointments/models/resp_models/laser_body_parts.dart b/lib/features/book_appointments/models/resp_models/laser_body_parts.dart index d7d3fbd1..dcb8a70e 100644 --- a/lib/features/book_appointments/models/resp_models/laser_body_parts.dart +++ b/lib/features/book_appointments/models/resp_models/laser_body_parts.dart @@ -61,4 +61,14 @@ class LaserBodyPart { data['CategoryNameN'] = this.categoryNameN; return data; } + + @override + bool operator ==(Object other) => + identical(this, other) || + other is LaserBodyPart && + runtimeType == other.runtimeType && + id == other.id; + + @override + int get hashCode => id.hashCode; } diff --git a/lib/features/contact_us/contact_us_view_model.dart b/lib/features/contact_us/contact_us_view_model.dart index d627c55e..40cab14c 100644 --- a/lib/features/contact_us/contact_us_view_model.dart +++ b/lib/features/contact_us/contact_us_view_model.dart @@ -12,6 +12,21 @@ import 'package:hmg_patient_app_new/features/contact_us/models/resp_models/get_p import 'package:hmg_patient_app_new/features/contact_us/models/resp_models/get_status_coc_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:permission_handler/permission_handler.dart'; + +/// Class to store feedback attachment data +class FeedbackAttachment { + final String base64String; + final File file; + final String fileName; + + FeedbackAttachment({ + required this.base64String, + required this.file, + required this.fileName, + }); +} class ContactUsViewModel extends ChangeNotifier { ContactUsRepo contactUsRepo; @@ -22,6 +37,7 @@ class ContactUsViewModel extends ChangeNotifier { bool isHMGHospitalsListSelected = true; bool isLiveChatProjectsListLoading = false; bool isSendFeedbackTabSelected = true; + bool hasLocationEnabled = false; List hmgHospitalsLocationsList = []; List hmgPharmacyLocationsList = []; @@ -32,7 +48,7 @@ class ContactUsViewModel extends ChangeNotifier { String? chatRequestID; - List feedbackAttachmentList = []; + List feedbackAttachmentList = []; List cocItemsList = []; bool isCOCItemsListLoading = false; @@ -50,13 +66,70 @@ class ContactUsViewModel extends ChangeNotifier { FeedbackType selectedFeedbackType = FeedbackType(id: 5, nameEN: "Not classified", nameAR: 'غير محدد'); + // ==================== FEEDBACK ERROR TRACKING ==================== + // Individual field errors + String? _subjectError; + String? _messageError; + + // Getters for field errors + String? get subjectError => _subjectError; + + String? get messageError => _messageError; + + // Clear subject error + void clearSubjectError() { + _subjectError = null; + notifyListeners(); + } + + // Clear message error + void clearMessageError() { + _messageError = null; + notifyListeners(); + } + + // Clear all feedback errors + void clearAllFeedbackErrors() { + _subjectError = null; + _messageError = null; + notifyListeners(); + } + + // Validate feedback form - shows only first error + bool validateFeedbackForm(String subject, String message) { + final isArabic = appState.isArabic(); + + // Clear previous errors + _subjectError = null; + _messageError = null; + + // Check if subject is empty + if (subject.trim().isEmpty) { + _subjectError = isArabic ? "الرجاء إدخال الموضوع" : "Please enter subject"; + notifyListeners(); + return false; + } + + // Check if message is empty + if (message.trim().isEmpty) { + _messageError = isArabic ? "الرجاء إدخال الرسالة" : "Please enter message"; + notifyListeners(); + return false; + } + + // All validations passed + notifyListeners(); + return true; + } + ContactUsViewModel({required this.contactUsRepo, required this.errorHandlerService, required this.appState}); - initContactUsViewModel() { + initContactUsViewModel() async { isHMGLocationsListLoading = true; isHMGHospitalsListSelected = true; isLiveChatProjectsListLoading = true; isCOCItemsListLoading = true; + hasLocationEnabled = false; hmgHospitalsLocationsList.clear(); hmgPharmacyLocationsList.clear(); liveChatProjectsList.clear(); @@ -65,6 +138,18 @@ class ContactUsViewModel extends ChangeNotifier { selectedFeedbackType = FeedbackType(id: 5, nameEN: "Not classified", nameAR: 'غير محدد'); setPatientFeedbackSelectedAppointment(null); getHMGLocations(); + + if (await Permission.location.isGranted) { + setHasLocationEnabled(true); + } else { + setHasLocationEnabled(false); + } + + notifyListeners(); + } + + setHasLocationEnabled(bool hasLocationEnabled) { + this.hasLocationEnabled = hasLocationEnabled; notifyListeners(); } @@ -80,7 +165,12 @@ class ContactUsViewModel extends ChangeNotifier { setIsSendFeedbackTabSelected(bool isSelected) { isSendFeedbackTabSelected = isSelected; - if (!isSelected) { + if (isSelected) { + // Clear errors when switching to send tab + clearAllFeedbackErrors(); + } else { + // Clear errors when switching away from send tab + clearAllFeedbackErrors(); getStatusForCOC(identificationNo: appState.getAuthenticatedUser()!.patientIdentificationNo!, mobileNo: "966${Utils.getPhoneNumberWithoutZero(appState.getAuthenticatedUser()!.mobileNumber!)}"); } notifyListeners(); @@ -91,13 +181,20 @@ class ContactUsViewModel extends ChangeNotifier { notifyListeners(); } - addFeedbackAttachment(String attachmentPath) { - feedbackAttachmentList.add(attachmentPath); + addFeedbackAttachment(String base64String, File file) { + // Extract filename from file path + final fileName = file.path.split('/').last; + + feedbackAttachmentList.add(FeedbackAttachment( + base64String: base64String, + file: file, + fileName: fileName, + )); notifyListeners(); } - removeFeedbackAttachment(String attachmentPath) { - feedbackAttachmentList.remove(attachmentPath); + removeFeedbackAttachment(FeedbackAttachment attachment) { + feedbackAttachmentList.remove(attachment); notifyListeners(); } @@ -128,6 +225,8 @@ class ContactUsViewModel extends ChangeNotifier { hmgPharmacyLocationsList.add(location); } } + + sortHMGLocations(hasLocationEnabled); isHMGLocationsListLoading = false; notifyListeners(); if (onSuccess != null) { @@ -138,6 +237,17 @@ class ContactUsViewModel extends ChangeNotifier { ); } + sortHMGLocations(bool isByLocation) { + if (isByLocation) { + hmgHospitalsLocationsList.sort((a, b) => a.distanceInKilometers.compareTo(b.distanceInKilometers)); + hmgPharmacyLocationsList.sort((a, b) => a.distanceInKilometers.compareTo(b.distanceInKilometers)); + } else { + hmgHospitalsLocationsList.sort((a, b) => a.locationName!.compareTo(b.locationName!)); + hmgPharmacyLocationsList.sort((a, b) => a.locationName!.compareTo(b.locationName!)); + } + notifyListeners(); + } + Future getLiveChatProjectsList({Function(dynamic)? onSuccess, Function(String)? onError}) async { isLiveChatProjectsListLoading = true; liveChatProjectsList.clear(); @@ -192,7 +302,7 @@ class ContactUsViewModel extends ChangeNotifier { Future insertCOCItem({required String subject, required String message, Function(dynamic)? onSuccess, Function(String)? onError}) async { RequestInsertCOCItem requestInsertCOCItem = RequestInsertCOCItem(); - requestInsertCOCItem.attachment = feedbackAttachmentList.isNotEmpty ? feedbackAttachmentList.first : ""; + requestInsertCOCItem.attachment = feedbackAttachmentList.isNotEmpty ? feedbackAttachmentList.first.base64String : ""; requestInsertCOCItem.title = subject; requestInsertCOCItem.details = message; requestInsertCOCItem.cOCTypeName = selectedFeedbackType.id.toString(); @@ -201,9 +311,9 @@ class ContactUsViewModel extends ChangeNotifier { requestInsertCOCItem.isUserLoggedIn = true; requestInsertCOCItem.projectID = 0; requestInsertCOCItem.patientName = "${appState.getAuthenticatedUser()!.firstName!} ${appState.getAuthenticatedUser()!.lastName!}"; - requestInsertCOCItem.fileName = ""; + requestInsertCOCItem.fileName = feedbackAttachmentList.isNotEmpty ? feedbackAttachmentList.first.fileName : ""; requestInsertCOCItem.appVersion = ApiConsts.appVersionID; - requestInsertCOCItem.uILanguage = appState.isArabic() ? "ar" : "en"; //TODO Change it to be dynamic + requestInsertCOCItem.uILanguage = appState.isArabic() ? "ar" : "en"; requestInsertCOCItem.browserInfo = Platform.localHostname; requestInsertCOCItem.deviceInfo = Platform.localHostname; requestInsertCOCItem.resolution = "400x847"; @@ -219,7 +329,15 @@ class ContactUsViewModel extends ChangeNotifier { final result = await contactUsRepo.insertCOCItem(requestInsertCOCItem: requestInsertCOCItem, patientSelectedAppointment: patientFeedbackSelectedAppointment); result.fold( - (failure) async => await errorHandlerService.handleError(failure: failure), + (failure) async { + LoaderBottomSheet.hideLoader(); + await errorHandlerService.handleError(failure: failure); + }, + // (failure) async { + // if(onError != null) { + // onError(failure.toString()); + // } + // }, (apiResponse) { if (apiResponse.messageStatus == 2) { // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); @@ -256,7 +374,7 @@ class ContactUsViewModel extends ChangeNotifier { } } else if (apiResponse.messageStatus == 1) { cocItemsList = apiResponse.data!; - cocItemsList.sort((a, b) => a.date!.compareTo(b.date!)); + cocItemsList.sort((a, b) => b.date!.compareTo(a.date!)); isCOCItemsListLoading = false; notifyListeners(); if (onSuccess != null) { diff --git a/lib/features/doctor_filter/doctor_filter_view_model.dart b/lib/features/doctor_filter/doctor_filter_view_model.dart index 889ab5a2..5bdd21b1 100644 --- a/lib/features/doctor_filter/doctor_filter_view_model.dart +++ b/lib/features/doctor_filter/doctor_filter_view_model.dart @@ -22,6 +22,61 @@ class DoctorFilterViewModel extends ChangeNotifier{ String? selectedClinicForFilters; bool applyFilters = false; + // ==================== FILTER ERROR TRACKING ==================== + // Individual field errors + String? _hospitalError; + String? _clinicError; + + // Getters for field errors + String? get hospitalError => _hospitalError; + String? get clinicError => _clinicError; + + // Clear hospital error + void clearHospitalError() { + _hospitalError = null; + notifyListeners(); + } + + // Clear clinic error + void clearClinicError() { + _clinicError = null; + notifyListeners(); + } + + // Clear all filter errors + void clearAllFilterErrors() { + _hospitalError = null; + _clinicError = null; + notifyListeners(); + } + + // Validate filters - shows only first error + bool validateFilters() { + final isArabic = appState.isArabic(); + + // Clear previous errors + _hospitalError = null; + _clinicError = null; + + // Check if at least one hospital is selected + if (selectedHospitalForFilters == null) { + _hospitalError = isArabic ? "الرجاء اختيار المستشفى" : "Please select a hospital"; + notifyListeners(); + return false; + } + + // Check if at least one clinic is selected + if (selectedClinicForFilters == null || selectedClinicForFilters!.isEmpty) { + _clinicError = isArabic ? "الرجاء اختيار العيادة" : "Please select a clinic"; + notifyListeners(); + return false; + } + + // All validations passed + notifyListeners(); + return true; + } + void clearSearchFilters() { searchedRegionList.clear(); searchedHospitalList.clear(); @@ -36,6 +91,7 @@ class DoctorFilterViewModel extends ChangeNotifier{ selectedHospitalForFilters = null; selectedRegionForFilters = []; applyFilters = false; + clearAllFilterErrors(); notifyListeners(); } @@ -76,6 +132,7 @@ class DoctorFilterViewModel extends ChangeNotifier{ void setSelectedHospital(PatientDoctorAppointmentList? hospital) { selectedHospitalForFilters = hospital; + clearHospitalError(); notifyListeners(); } @@ -91,6 +148,7 @@ class DoctorFilterViewModel extends ChangeNotifier{ void setSelectedClinicForFilter(String? clinic) { selectedClinicForFilters = clinic; + clearClinicError(); notifyListeners(); } diff --git a/lib/features/emergency_services/emergency_services_repo.dart b/lib/features/emergency_services/emergency_services_repo.dart index f8eb896f..582c4a58 100644 --- a/lib/features/emergency_services/emergency_services_repo.dart +++ b/lib/features/emergency_services/emergency_services_repo.dart @@ -183,7 +183,7 @@ class EmergencyServicesRepoImp implements EmergencyServicesRepo { @override Future>>> getProjectList() async { - Map request = {'IsOnlineCheckIn': false, 'IsAdvancePayment': false, 'IsForER': true}; + Map request = {"IsEROnlineCheckIn":true,'IsOnlineCheckIn': false, 'IsAdvancePayment': false, 'IsForER': true}; try { GenericApiModel>? apiResponse; diff --git a/lib/features/emergency_services/emergency_services_view_model.dart b/lib/features/emergency_services/emergency_services_view_model.dart index ec211793..133aa795 100644 --- a/lib/features/emergency_services/emergency_services_view_model.dart +++ b/lib/features/emergency_services/emergency_services_view_model.dart @@ -54,6 +54,7 @@ import 'package:hmg_patient_app_new/widgets/map/map_utility_screen.dart'; import 'package:hmg_patient_app_new/widgets/order_tracking/order_tracking_state.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:huawei_map/huawei_map.dart' as HMSCameraServices; +import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; import '../location/GeocodeResponse.dart'; @@ -116,6 +117,13 @@ class EmergencyServicesViewModel extends ChangeNotifier { bool historyLoading = false; OrderDislpay currentlyDisplayedOrder = OrderDislpay.ALL; + bool isAdvanceERBalanceNeedToBeLoaded = true; + + setIsAdvanceERBalanceNeedToBeLoaded(bool value) { + isAdvanceERBalanceNeedToBeLoaded = value; + notifyListeners(); + } + setSelectedRRTProcedure(RRTProceduresResponseModel procedure) { selectedRRTProcedure = procedure; notifyListeners(); @@ -274,7 +282,6 @@ class EmergencyServicesViewModel extends ChangeNotifier { void navigateTOAmbulancePage() { placeValueInController(); - getProjects(); flushData(); selectedFacility = FacilitySelection.ALL; @@ -282,6 +289,7 @@ class EmergencyServicesViewModel extends ChangeNotifier { locationUtils!.getLocation( isShowConfirmDialog: true, onSuccess: (position) { + getProjects(); updateBottomSheetState(BottomSheetType.FIXED); navServices.push( CustomPageRoute(page: CallAmbulancePage(), direction: AxisDirection.down), @@ -310,22 +318,28 @@ class EmergencyServicesViewModel extends ChangeNotifier { } void updateBottomSheetState(BottomSheetType sheetType) { - if (sheetType == BottomSheetType.EXPANDED && selectedHospital == null) { - dialogService.showErrorBottomSheet(message: LocaleKeys.selectHospital.tr()); - return; - } + // if (sheetType == BottomSheetType.EXPANDED && selectedHospital == null) { + // dialogService.showErrorBottomSheet(message: LocaleKeys.selectHospital.tr()); + // return; + // } bottomSheetType = sheetType; - if (sheetType == BottomSheetType.EXPANDED) { - clearAppointmentData(); - } + // if (sheetType == BottomSheetType.FIXED) { + // clearAppointmentData(); + // } notifyListeners(); } + void showError(String message) { + dialogService.showErrorBottomSheet(message: message); + } + void setIsGMSAvailable(bool value) { notifyListeners(); } Future checkPatientERAdvanceBalance({Function(dynamic)? onSuccess, Function(String)? onError}) async { + if (!isAdvanceERBalanceNeedToBeLoaded) return; + final result = await emergencyServicesRepo.checkPatientERAdvanceBalance(); result.fold( @@ -333,6 +347,7 @@ class EmergencyServicesViewModel extends ChangeNotifier { (failure) { patientHasAdvanceERBalance = false; isERBookAppointment = true; + isAdvanceERBalanceNeedToBeLoaded = false; if (onSuccess != null) { onSuccess(failure.message); } @@ -342,9 +357,11 @@ class EmergencyServicesViewModel extends ChangeNotifier { // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); patientHasAdvanceERBalance = false; isERBookAppointment = true; + isAdvanceERBalanceNeedToBeLoaded = false; } else if (apiResponse.messageStatus == 1) { patientHasAdvanceERBalance = apiResponse.data; isERBookAppointment = !patientHasAdvanceERBalance; + isAdvanceERBalanceNeedToBeLoaded = false; notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); @@ -530,6 +547,7 @@ class EmergencyServicesViewModel extends ChangeNotifier { void setTransportationOption(PatientERTransportationMethod item) { selectedTransportOption = item; + notifyListeners(); } void updateCallingPlace(AmbulanceCallingPlace? value) { @@ -712,7 +730,7 @@ class EmergencyServicesViewModel extends ChangeNotifier { appointments = response.data; if (appointments?.isEmpty == true) { haveAnAppointment = false; - dialogService.showErrorBottomSheet(message: "Unable to Fetch Appointment"); + dialogService.showErrorBottomSheet(message: LocaleKeys.NoBookedAppointments.tr()); } notifyListeners(); }); @@ -731,6 +749,10 @@ class EmergencyServicesViewModel extends ChangeNotifier { } FutureOr submitAmbulanceRequest(GeocodeResult? result, PlaceDetails? place, PlacePrediction? placePrediction) async { + if (false == haveAnAppointment && null == selectedHospital) { + dialogService.showErrorBottomSheet(message: LocaleKeys.selectHospital.tr()); + return; + } PatientER_RC request = createRequest(result, place, placePrediction); navServices.push(CustomPageRoute(page: RequestingServicesPage())); @@ -801,19 +823,19 @@ class EmergencyServicesViewModel extends ChangeNotifier { request.patientERTransportationMethod = selectedTransportOption; transportationDetails.pickupUrgency = 1; switch (callingPlace) { - case AmbulanceCallingPlace.FROM_HOSPITAL: - transportationDetails.dropoffLatitude = selectedHospital!.latitude; - transportationDetails.dropoffLongitude = selectedHospital!.longitude; - transportationDetails.dropoffLocationName = selectedHospital!.name; + case AmbulanceCallingPlace.TO_HOSPITAL: + transportationDetails.dropoffLatitude = selectedHospital?.latitude; + transportationDetails.dropoffLongitude = selectedHospital?.longitude; + transportationDetails.dropoffLocationName = selectedHospital?.name; transportationDetails.pickupLatitude = ((result?.geometry.location.lat) ?? place?.lat)?.toStringAsFixed(6); transportationDetails.pickupLongitude = ((result?.geometry.location.lng) ?? place?.lng)?.toStringAsFixed(6); transportationDetails.pickupLocationName = result?.formattedAddress ?? placePrediction?.description; transportationDetails.direction = 1; break; - case AmbulanceCallingPlace.TO_HOSPITAL: - transportationDetails.pickupLatitude = selectedHospital!.latitude; - transportationDetails.pickupLongitude = selectedHospital!.longitude; - transportationDetails.pickupLocationName = selectedHospital!.name; + case AmbulanceCallingPlace.FROM_HOSPITAL: + transportationDetails.pickupLatitude = selectedHospital?.latitude; + transportationDetails.pickupLongitude = selectedHospital?.longitude; + transportationDetails.pickupLocationName = selectedHospital?.name; transportationDetails.dropoffLatitude = ((result?.geometry.location.lat) ?? place?.lat)?.toStringAsFixed(6); transportationDetails.dropoffLongitude = ((result?.geometry.location.lng) ?? place?.lng)?.toStringAsFixed(6); transportationDetails.dropoffLocationName = result?.formattedAddress ?? placePrediction?.description; @@ -985,19 +1007,47 @@ class EmergencyServicesViewModel extends ChangeNotifier { this.currentlyDisplayedOrder = currentlyDisplayedOrder; switch (currentlyDisplayedOrder) { case OrderDislpay.ALL: - orderDisplayList = allOrders; + orderDisplayList = List.from(allOrders); break; case OrderDislpay.RRT: - orderDisplayList = ordersRRT?.completedOrders ?? []; + orderDisplayList = List.from(ordersRRT?.completedOrders ?? []); break; case OrderDislpay.AMBULANCE: - orderDisplayList = ambulanceOrders ?? []; + orderDisplayList = List.from(ambulanceOrders ?? []); break; } + + orderDisplayList = _sortOrdersByDate(orderDisplayList); notifyListeners(); } - void openRRT() { + List _sortOrdersByDate(List list) { + list.sort((a, b) { + final int? dateA = _parseCreatedDate(a)?.millisecondsSinceEpoch; + final int? dateB = _parseCreatedDate(b)?.millisecondsSinceEpoch; + print("the dateA is $dateA and dateB is $dateB"); + if (dateA == null && dateB == null) return 0; + if (dateA == null) return 1; + if (dateB == null) return -1; + return dateB.compareTo(dateA); + }); + return list; + } + + DateTime? _parseCreatedDate(dynamic order) { + final String? raw = _getCreatedDate(order); + + + return DateTime.tryParse(raw??""); + } + + String? _getCreatedDate(dynamic order) { + if (order is AmbulanceRequestOrdersModel) return order.created; + if (order is GetCMCAllOrdersResponseModel) return order.created; + return null; + } + + void openRRT(BuildContext context) { if (appState.isAuthenticated) { if (agreedToTermsAndCondition == false) { dialogService.showErrorBottomSheet( @@ -1031,6 +1081,7 @@ class EmergencyServicesViewModel extends ChangeNotifier { return; } placeValueInController(); + context.read().placeValueInController(); locationUtils!.getLocation( isShowConfirmDialog: true, onSuccess: (position) async { diff --git a/lib/features/habib_wallet/habib_wallet_repo.dart b/lib/features/habib_wallet/habib_wallet_repo.dart index 659510de..57d5af20 100644 --- a/lib/features/habib_wallet/habib_wallet_repo.dart +++ b/lib/features/habib_wallet/habib_wallet_repo.dart @@ -3,6 +3,7 @@ import 'package:hmg_patient_app_new/core/api/api_client.dart'; import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; +import 'package:hmg_patient_app_new/features/habib_wallet/models/patient_advance_balance_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/hospital_model.dart'; import 'package:hmg_patient_app_new/services/logger_service.dart'; @@ -17,6 +18,10 @@ abstract class HabibWalletRepo { Future>> addAdvanceNumberRequest({required String advanceNumber, required String paymentReference}); Future>> getPatientInfoByPatientID({required String patientID}); + + Future>> getLakumAccountInformation({required String identificationNumber}); + + Future>> getLakumAccountInquiryInformation({required String lakumAccountNumber}); } class HabibWalletRepoImp implements HabibWalletRepo { @@ -40,18 +45,22 @@ class HabibWalletRepoImp implements HabibWalletRepo { }, onSuccess: (response, statusCode, {messageStatus, errorMessage}) { try { - // final list = response['ListPLO']; + final list = response['List_PatientAdvanceBalanceAmount']; // if (list == null || list.isEmpty) { // throw Exception("lab list is empty"); // } - // final labOrders = list.map((item) => PatientLabOrdersResponseModel.fromJson(item as Map)).toList().cast(); + final List balanceAmountList = list.map((item) => PatientAdvanceBalanceResponseModel.fromJson(item as Map)).toList().cast(); + + for (var element in balanceAmountList) { + element.totalAmount = response['TotalAdvanceBalanceAmount']; + } apiResponse = GenericApiModel( messageStatus: messageStatus, statusCode: statusCode, errorMessage: null, - data: response["TotalAdvanceBalanceAmount"], + data: balanceAmountList, ); } catch (e) { failure = DataParsingFailure(e.toString()); @@ -226,4 +235,75 @@ class HabibWalletRepoImp implements HabibWalletRepo { return Left(UnknownFailure(e.toString())); } } + + @override + Future> getLakumAccountInformation({required String identificationNumber}) async { + Map requestBody = {"IdentificationNo": identificationNumber}; + + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + GET_LACUM_ACCOUNT_INFORMATION, + body: requestBody, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: response, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future> getLakumAccountInquiryInformation({required String lakumAccountNumber}) async { + Map requestBody = { + "AccountNumber": lakumAccountNumber, + "IsDetailsRequired": true, + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + GET_LACUM_GROUP_INFORMATION, + body: requestBody, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: response, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } } diff --git a/lib/features/habib_wallet/habib_wallet_view_model.dart b/lib/features/habib_wallet/habib_wallet_view_model.dart index 2f338957..cc87bb7b 100644 --- a/lib/features/habib_wallet/habib_wallet_view_model.dart +++ b/lib/features/habib_wallet/habib_wallet_view_model.dart @@ -1,18 +1,45 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/validation_utils.dart'; import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_repo.dart'; +import 'package:hmg_patient_app_new/features/habib_wallet/models/lakum_inquiry_information_response_model.dart'; +import 'package:hmg_patient_app_new/features/habib_wallet/models/patient_advance_balance_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/hospital_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/req_models/submit_refund_request_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/resp_models/refund_request_list_response_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/resp_models/refundable_invoices_response_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/refund_request_repo.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; class HabibWalletViewModel extends ChangeNotifier { + HabibWalletRepo habibWalletRepo; + RefundRequestRepo refundRequestRepo; + ErrorHandlerService errorHandlerService; + + HabibWalletViewModel({ + required this.habibWalletRepo, + required this.errorHandlerService, + required this.refundRequestRepo, + }); + bool isWalletAmountLoading = false; num habibWalletAmount = 0; num walletRechargeAmount = 0; String notesText = ""; + bool isWalletAmountToBeLoaded = true; bool isBottomSheetContentLoading = false; + // ── Refundable Advances ─────────────────────────────────────────────────── + bool isAdvancesLoading = false; + double totalAdvancesBalance = 0.0; + List refundableAdvancesList = []; + bool isSubmittingWithdrawal = false; + bool isSearchedFileNumberDataShown = false; int currentIndex = 0; @@ -21,21 +48,290 @@ class HabibWalletViewModel extends ChangeNotifier { HospitalsModel? selectedHospital; - HabibWalletRepo habibWalletRepo; - ErrorHandlerService errorHandlerService; - String fileNumber = ''; String depositorName = ''; String mobileNumber = ''; num selectedRechargeType = 1; - HabibWalletViewModel({required this.habibWalletRepo, required this.errorHandlerService}); + List habibWalletBalanceList = []; + + // ==================== RECHARGE VALIDATION ERROR TRACKING ==================== + // Individual field errors + String? _amountError; + String? _hospitalError; + + // Getters for field errors + String? get amountError => _amountError; + + String? get hospitalError => _hospitalError; + + String yahalaAccountNumber = ''; + bool isLakumAccountInfoLoading = false; + LakumInquiryInformationResponseModel? lakumAccountInfo; + + // Get all flattened transactions sorted by date descending + List getAllLakumTransactions() { + if (lakumAccountInfo?.gainedPointsAmountPerYear == null) { + return []; + } + + List allTransactions = []; + + // Flatten the nested structure + for (var yearData in lakumAccountInfo!.gainedPointsAmountPerYear!) { + if (yearData.pointsAmountPerMonth != null) { + for (var monthData in yearData.pointsAmountPerMonth!) { + if (monthData.pointsAmountPerday != null) { + for (var dayData in monthData.pointsAmountPerday!) { + if (dayData.pointsDetails != null) { + allTransactions.addAll(dayData.pointsDetails!); + } + } + } + } + } + } + + // Sort by transaction date DESCENDING (latest/most recent transactions first, older transactions last) + allTransactions.sort((a, b) { + // Null dates go to the end + if (a.transactionDate == null && b.transactionDate == null) return 0; + if (a.transactionDate == null) return 1; // a goes after b + if (b.transactionDate == null) return -1; // a goes before b + + try { + DateTime dateA = DateUtil.convertStringToDate(a.transactionDate!); + DateTime dateB = DateUtil.convertStringToDate(b.transactionDate!); + + // Compare dateB to dateA (not dateA to dateB) for DESCENDING order + // This puts newer dates (larger values) at the top of the list + return dateB.compareTo(dateA); + } catch (e) { + // If date parsing fails, maintain current order + return 0; + } + }); + + return allTransactions; + } + + // Clear amount error + void clearAmountError() { + _amountError = null; + notifyListeners(); + } + + // Clear hospital error + void clearHospitalError() { + _hospitalError = null; + notifyListeners(); + } + + // Clear all recharge errors + void clearAllRechargeErrors() { + _amountError = null; + _hospitalError = null; + notifyListeners(); + } + + // ==================== WITHDRAW VALIDATION ERROR TRACKING ==================== + String? _ibanError; + String? _withdrawDescriptionError; + + String? get ibanError => _ibanError; + + String? get withdrawDescriptionError => _withdrawDescriptionError; + + void clearIbanError() { + _ibanError = null; + notifyListeners(); + } + + void clearWithdrawDescriptionError() { + _withdrawDescriptionError = null; + notifyListeners(); + } + + bool validateWithdrawForm({required String iban, required String description}) { + bool isValid = true; + _ibanError = null; + _withdrawDescriptionError = null; + + if (iban.trim().isEmpty) { + _ibanError = LocaleKeys.ibanIsRequired.tr(); + isValid = false; + } else { + if (!ValidationUtils.validateIban(iban.trim())) { + _ibanError = LocaleKeys.invalidIbanFormat.tr(); + isValid = false; + } + } + + if (description.trim().isEmpty) { + _withdrawDescriptionError = LocaleKeys.descriptionIsRequired.tr(); + isValid = false; + } + + notifyListeners(); + return isValid; + } + + // Validate recharge form - shows only first error + bool validateRechargeForm(String amount) { + // Clear previous errors + _amountError = null; + _hospitalError = null; + + // Check if amount is empty + if (amount.trim().isEmpty) { + _amountError = "Please enter amount"; + notifyListeners(); + return false; + } + + // Remove commas and validate amount + String cleanAmount = amount.replaceAll(',', ''); + final parsedAmount = num.tryParse(cleanAmount); + + if (parsedAmount == null || parsedAmount <= 0) { + _amountError = "Please enter a valid amount"; + notifyListeners(); + return false; + } + + // Check if hospital is selected + if (selectedHospital == null) { + _hospitalError = "Please select a hospital"; + notifyListeners(); + return false; + } + + // All validations passed + notifyListeners(); + return true; + } + + Future fetchAdvancesForHospital() async { + isAdvancesLoading = true; + totalAdvancesBalance = 0.0; + refundableAdvancesList = []; + notifyListeners(); + + final result = await refundRequestRepo.getRefundableAdvances(); + result.fold( + (failure) { + isAdvancesLoading = false; + notifyListeners(); + errorHandlerService.handleError(failure: failure); + }, + (apiResponse) { + isAdvancesLoading = false; + if (apiResponse.data != null) { + refundableAdvancesList = apiResponse.data!.refundableAdvancesItems; + totalAdvancesBalance = refundableAdvancesList.fold(0.0, (sum, item) => sum + (item.balanceAmount ?? 0.0)); + } + notifyListeners(); + }, + ); + } + + /// Converts a WCF /Date(ms+timezone)/ string to "YYYY-MM-DD" format expected by the API. + String _formatAdvanceDate(String? rawDate) { + if (rawDate == null || rawDate.isEmpty) return ''; + try { + final date = DateUtil.convertStringToDate(rawDate); + return DateFormat('yyyy-MM-dd').format(date); + } catch (_) { + return rawDate; + } + } + + Future submitWalletWithdrawalRequest({ + required String iban, + required String remarks, + required String patientName, + required String patientId, + required String patientMobileNumber, + required String patientNationalId, + required int projectId, + required String projectName, + Function(SubmitRefundResponseModel)? onSuccess, + Function(String)? onError, + }) async { + isSubmittingWithdrawal = true; + notifyListeners(); + + final advances = refundableAdvancesList + .map((a) => SubmitRefundAdvanceItem( + advanceNo: (a.advanceNo ?? 0).toString(), + paidAmount: a.paidAmount ?? 0.0, + balanceAmount: a.balanceAmount ?? 0.0, + advanceDate: a.advanceDate ?? "", + // advanceDate: _formatAdvanceDate(a.advanceDate), + )) + .toList(); + + final request = SubmitRefundRequestModel( + projectId: projectId, + isRefundFastTrack: true, + // in case of wallet refund, skip ITG approval + refundType: '2', + // wallet withdrawal + refundProject: projectName, + refundProjectId: projectId, + refundPatientId: patientId, + patientMobileNumber: patientMobileNumber, + refundPatientName: patientName, + refundNationalId: patientNationalId, + refundInvoiceNo: '', + refundAppointmentNo: '', + refundDoctorId: 0, + refundDoctorName: '', + refundClinicId: 0, + refundClinicName: '', + refundDestination: '2', + // only bank transfer + refundIban: iban, + refundRemarks: remarks, + refundTotalAmount: totalAdvancesBalance, + refundProceduresList: const [], + refundAdvancesList: advances, + ); + + final result = await refundRequestRepo.submitRefund(request: request); + result.fold( + (failure) { + isSubmittingWithdrawal = false; + notifyListeners(); + if (onError != null) { + onError(failure.message); + } else { + errorHandlerService.handleError(failure: failure); + } + }, + (apiResponse) { + isSubmittingWithdrawal = false; + notifyListeners(); + if (apiResponse.data != null) { + if (onSuccess != null) onSuccess(apiResponse.data!); + } else { + if (onError != null) { + onError(apiResponse.errorMessage ?? LocaleKeys.failed.tr()); + } + } + }, + ); + } initHabibWalletProvider() { - isWalletAmountLoading = true; + if (isWalletAmountToBeLoaded) { + isWalletAmountLoading = true; + habibWalletAmount = 0; + isLakumAccountInfoLoading = true; + yahalaAccountNumber = ""; + } isBottomSheetContentLoading = false; - habibWalletAmount = 0; walletRechargeAmount = 0; selectedRechargeType = 1; advancePaymentHospitals.clear(); @@ -53,9 +349,24 @@ class HabibWalletViewModel extends ChangeNotifier { setSelectedHospital(HospitalsModel hospital) { selectedHospital = hospital; + clearHospitalError(); notifyListeners(); } + /// Resets all state related to the wallet withdrawal form. + /// Pass [silent] = true when calling from dispose() to avoid notifyListeners + /// while the widget tree is locked. + void resetWithdrawForm({bool silent = false}) { + selectedHospital = null; + totalAdvancesBalance = 0.0; + refundableAdvancesList = []; + isAdvancesLoading = false; + isSubmittingWithdrawal = false; + _ibanError = null; + _withdrawDescriptionError = null; + if (!silent) notifyListeners(); + } + setWalletRechargeAmount(num amount) { walletRechargeAmount = amount; notifyListeners(); @@ -78,6 +389,16 @@ class HabibWalletViewModel extends ChangeNotifier { notifyListeners(); } + setYahalaAccountNumber(String accountNumber) { + yahalaAccountNumber = accountNumber; + notifyListeners(); + } + + setIsWalletAmountToBeLoaded(bool value) { + isWalletAmountToBeLoaded = value; + notifyListeners(); + } + String getSelectedRechargeTypeValue() { switch (selectedRechargeType) { case 1: @@ -92,6 +413,10 @@ class HabibWalletViewModel extends ChangeNotifier { } Future getPatientBalanceAmount({Function(dynamic)? onSuccess, Function(String)? onError}) async { + if (!isWalletAmountToBeLoaded) { + return; + } + habibWalletBalanceList.clear(); isWalletAmountLoading = true; notifyListeners(); @@ -103,8 +428,15 @@ class HabibWalletViewModel extends ChangeNotifier { if (apiResponse.messageStatus == 2) { // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); } else if (apiResponse.messageStatus == 1) { - habibWalletAmount = apiResponse.data!; + habibWalletBalanceList = apiResponse.data; + habibWalletAmount = habibWalletBalanceList.first.totalAmount ?? 0.0; + + habibWalletBalanceList.sort((a, b) => b.patientAdvanceBalanceAmount!.compareTo(a.patientAdvanceBalanceAmount!)); + + habibWalletBalanceList.removeWhere((element) => element.patientAdvanceBalanceAmount == 0); + isWalletAmountLoading = false; + isWalletAmountToBeLoaded = false; notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); @@ -145,7 +477,12 @@ class HabibWalletViewModel extends ChangeNotifier { paymentMethodName: paymentMethodName, paidAmount: paidAmount, paymentReference: paymentReference, patientID: patientID, projectID: projectID, depositorName: depositorName); result.fold( - (failure) async => await errorHandlerService.handleError(failure: failure), + // (failure) async => await errorHandlerService.handleError(failure: failure), + (failure) async { + if (onError != null) { + onError(failure.message); + } + }, (apiResponse) { if (apiResponse.messageStatus == 2) { // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); @@ -201,4 +538,55 @@ class HabibWalletViewModel extends ChangeNotifier { }, ); } + + Future getLakumAccountInformation({Function(dynamic)? onSuccess, Function(String)? onError}) async { + if (!isWalletAmountToBeLoaded) { + return; + } + + isLakumAccountInfoLoading = true; + lakumAccountInfo = LakumInquiryInformationResponseModel(); + notifyListeners(); + + final result = await habibWalletRepo.getLakumAccountInformation(identificationNumber: getIt.get().getAuthenticatedUser()!.patientIdentificationNo ?? ""); + + result.fold( + // (failure) async => await errorHandlerService.handleError(failure: failure), + (failure) async { + yahalaAccountNumber = "0"; + isLakumAccountInfoLoading = false; + notifyListeners(); // 675534 + }, + (apiResponse) async { + if (apiResponse.messageStatus == 2) { + yahalaAccountNumber = "0"; + isLakumAccountInfoLoading = false; + notifyListeners(); + } else if (apiResponse.messageStatus == 1) { + if (apiResponse.data["YahalaAccountNo"] == 0 || apiResponse.data["YahalaAccountNo"] == "0") { + yahalaAccountNumber = "0"; + } else { + yahalaAccountNumber = apiResponse.data["YahalaAccountNo"].toString(); + + final lakumAccountResult = await habibWalletRepo.getLakumAccountInquiryInformation(lakumAccountNumber: yahalaAccountNumber); + lakumAccountResult.fold( + (failure) async => await errorHandlerService.handleError(failure: failure), + (lakumApiResponse) async { + if (lakumApiResponse.messageStatus == 2) { + lakumAccountInfo = LakumInquiryInformationResponseModel(); + } else if (lakumApiResponse.messageStatus == 1) { + lakumAccountInfo = LakumInquiryInformationResponseModel.fromJson(lakumApiResponse.data["LakumInquiryInformationObjVersion"]); + } + }, + ); + } + isLakumAccountInfoLoading = false; + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + } } diff --git a/lib/features/habib_wallet/models/lakum_inquiry_information_response_model.dart b/lib/features/habib_wallet/models/lakum_inquiry_information_response_model.dart new file mode 100644 index 00000000..1e49ef61 --- /dev/null +++ b/lib/features/habib_wallet/models/lakum_inquiry_information_response_model.dart @@ -0,0 +1,318 @@ +class LakumInquiryInformationResponseModel { + int? accountNumber; + String? accountStatus; + String? barCode; + num? consumedPoints; + dynamic consumedPointsAmount; + dynamic consumedPointsAmountPerYear; + + // List? consumedPointsDetails; + String? createdDate; + num? expiredPoints; + String? expiryDate; + num? gainedPoints; + num? gainedPointsAmount; + List? gainedPointsAmountPerYear; + + // List? gainedPointsDetails; + String? lakumMessageStatus; + String? memberName; + String? memberUniversalId; + String? mobileNumber; + num? pointsBalance; + num? pointsBalanceAmount; + num? pointsWillBeExpired; + String? prefLang; + num? statusCode; + num? transferPoints; + dynamic transferPointsAmountPerYear; + + // List? transferPointsDetails; + num? waitingPoints; + num? loyalityAmount; + num? loyalityPoints; + num? purchaseRate; + + LakumInquiryInformationResponseModel( + {this.accountNumber, + this.accountStatus, + this.barCode, + this.consumedPoints, + this.consumedPointsAmount, + this.consumedPointsAmountPerYear, + // this.consumedPointsDetails, + this.createdDate, + this.expiredPoints, + this.expiryDate, + this.gainedPoints, + this.gainedPointsAmount, + this.gainedPointsAmountPerYear, + // this.gainedPointsDetails, + this.lakumMessageStatus, + this.memberName, + this.memberUniversalId, + this.mobileNumber, + this.pointsBalance, + this.pointsBalanceAmount, + this.pointsWillBeExpired, + this.prefLang, + this.statusCode, + this.transferPoints, + this.transferPointsAmountPerYear, + // this.transferPointsDetails, + this.waitingPoints, + this.loyalityAmount, + this.loyalityPoints, + this.purchaseRate}); + + LakumInquiryInformationResponseModel.fromJson(Map json) { + accountNumber = json['AccountNumber']; + accountStatus = json['AccountStatus']; + barCode = json['BarCode']; + consumedPoints = json['ConsumedPoints']; + consumedPointsAmount = json['ConsumedPointsAmount']; + consumedPointsAmountPerYear = json['ConsumedPointsAmountPerYear']; + // if (json['ConsumedPointsDetails'] != null) { + // consumedPointsDetails = []; + // json['ConsumedPointsDetails'].forEach((v) { + // consumedPointsDetails!.add(new Null.fromJson(v)); + // }); + // } + createdDate = json['CreatedDate']; + expiredPoints = json['ExpiredPoints']; + expiryDate = json['ExpiryDate']; + gainedPoints = json['GainedPoints']; + gainedPointsAmount = json['GainedPointsAmount']; + if (json['GainedPointsAmountPerYear'] != null) { + gainedPointsAmountPerYear = []; + json['GainedPointsAmountPerYear'].forEach((v) { + gainedPointsAmountPerYear!.add(new GainedPointsAmountPerYear.fromJson(v)); + }); + } + // if (json['GainedPointsDetails'] != null) { + // gainedPointsDetails = []; + // json['GainedPointsDetails'].forEach((v) { + // gainedPointsDetails!.add(new Null.fromJson(v)); + // }); + // } + lakumMessageStatus = json['LakumMessageStatus']; + memberName = json['MemberName']; + memberUniversalId = json['MemberUniversalId']; + mobileNumber = json['MobileNumber']; + pointsBalance = json['PointsBalance'] ?? 0; + pointsBalanceAmount = json['PointsBalanceAmount']; + pointsWillBeExpired = json['PointsWillBeExpired']; + prefLang = json['PrefLang']; + statusCode = json['StatusCode']; + transferPoints = json['TransferPoints']; + transferPointsAmountPerYear = json['TransferPointsAmountPerYear']; + // if (json['TransferPointsDetails'] != null) { + // transferPointsDetails = []; + // json['TransferPointsDetails'].forEach((v) { + // transferPointsDetails!.add(new Null.fromJson(v)); + // }); + // } + waitingPoints = json['WaitingPoints']; + loyalityAmount = json['loyalityAmount']; + loyalityPoints = json['loyalityPoints']; + purchaseRate = json['purchaseRate']; + } + + Map toJson() { + final Map data = new Map(); + data['AccountNumber'] = this.accountNumber; + data['AccountStatus'] = this.accountStatus; + data['BarCode'] = this.barCode; + data['ConsumedPoints'] = this.consumedPoints; + data['ConsumedPointsAmount'] = this.consumedPointsAmount; + data['ConsumedPointsAmountPerYear'] = this.consumedPointsAmountPerYear; + // if (this.consumedPointsDetails != null) { + // data['ConsumedPointsDetails'] = this.consumedPointsDetails!.map((v) => v.toJson()).toList(); + // } + data['CreatedDate'] = this.createdDate; + data['ExpiredPoints'] = this.expiredPoints; + data['ExpiryDate'] = this.expiryDate; + data['GainedPoints'] = this.gainedPoints; + data['GainedPointsAmount'] = this.gainedPointsAmount; + if (this.gainedPointsAmountPerYear != null) { + data['GainedPointsAmountPerYear'] = this.gainedPointsAmountPerYear!.map((v) => v.toJson()).toList(); + } + // if (this.gainedPointsDetails != null) { + // data['GainedPointsDetails'] = this.gainedPointsDetails!.map((v) => v.toJson()).toList(); + // } + data['LakumMessageStatus'] = this.lakumMessageStatus; + data['MemberName'] = this.memberName; + data['MemberUniversalId'] = this.memberUniversalId; + data['MobileNumber'] = this.mobileNumber; + data['PointsBalance'] = this.pointsBalance; + data['PointsBalanceAmount'] = this.pointsBalanceAmount; + data['PointsWillBeExpired'] = this.pointsWillBeExpired; + data['PrefLang'] = this.prefLang; + data['StatusCode'] = this.statusCode; + data['TransferPoints'] = this.transferPoints; + data['TransferPointsAmountPerYear'] = this.transferPointsAmountPerYear; + // if (this.transferPointsDetails != null) { + // data['TransferPointsDetails'] = this.transferPointsDetails!.map((v) => v.toJson()).toList(); + // } + data['WaitingPoints'] = this.waitingPoints; + data['loyalityAmount'] = this.loyalityAmount; + data['loyalityPoints'] = this.loyalityPoints; + data['purchaseRate'] = this.purchaseRate; + return data; + } +} + +class GainedPointsAmountPerYear { + num? amountPerYear; + List? pointsAmountPerMonth; + num? pointsPerYear; + int? year; + + GainedPointsAmountPerYear({this.amountPerYear, this.pointsAmountPerMonth, this.pointsPerYear, this.year}); + + GainedPointsAmountPerYear.fromJson(Map json) { + amountPerYear = json['AmountPerYear']; + if (json['PointsAmountPerMonth'] != null) { + pointsAmountPerMonth = []; + json['PointsAmountPerMonth'].forEach((v) { + pointsAmountPerMonth!.add(new PointsAmountPerMonth.fromJson(v)); + }); + } + pointsPerYear = json['PointsPerYear']; + year = json['Year']; + } + + Map toJson() { + final Map data = new Map(); + data['AmountPerYear'] = this.amountPerYear; + if (this.pointsAmountPerMonth != null) { + data['PointsAmountPerMonth'] = this.pointsAmountPerMonth!.map((v) => v.toJson()).toList(); + } + data['PointsPerYear'] = this.pointsPerYear; + data['Year'] = this.year; + return data; + } +} + +class PointsAmountPerMonth { + num? amountPerMonth; + String? month; + num? monthNumber; + List? pointsAmountPerday; + num? pointsPerMonth; + + PointsAmountPerMonth({this.amountPerMonth, this.month, this.monthNumber, this.pointsAmountPerday, this.pointsPerMonth}); + + PointsAmountPerMonth.fromJson(Map json) { + amountPerMonth = json['AmountPerMonth']; + month = json['Month']; + monthNumber = json['MonthNumber']; + if (json['PointsAmountPerday'] != null) { + pointsAmountPerday = []; + json['PointsAmountPerday'].forEach((v) { + pointsAmountPerday!.add(new PointsAmountPerday.fromJson(v)); + }); + } + pointsPerMonth = json['PointsPerMonth']; + } + + Map toJson() { + final Map data = new Map(); + data['AmountPerMonth'] = this.amountPerMonth; + data['Month'] = this.month; + data['MonthNumber'] = this.monthNumber; + if (this.pointsAmountPerday != null) { + data['PointsAmountPerday'] = this.pointsAmountPerday!.map((v) => v.toJson()).toList(); + } + data['PointsPerMonth'] = this.pointsPerMonth; + return data; + } +} + +class PointsAmountPerday { + num? amountPerDay; + String? day; + List? pointsDetails; + num? pointsPerDay; + String? transationDate; + + PointsAmountPerday({this.amountPerDay, this.day, this.pointsDetails, this.pointsPerDay, this.transationDate}); + + PointsAmountPerday.fromJson(Map json) { + amountPerDay = json['AmountPerDay']; + day = json['Day']; + if (json['PointsDetails'] != null) { + pointsDetails = []; + json['PointsDetails'].forEach((v) { + pointsDetails!.add(new PointsDetails.fromJson(v)); + }); + } + pointsPerDay = json['PointsPerDay']; + transationDate = json['TransationDate']; + } + + Map toJson() { + final Map data = new Map(); + data['AmountPerDay'] = this.amountPerDay; + data['Day'] = this.day; + if (this.pointsDetails != null) { + data['PointsDetails'] = this.pointsDetails!.map((v) => v.toJson()).toList(); + } + data['PointsPerDay'] = this.pointsPerDay; + data['TransationDate'] = this.transationDate; + return data; + } +} + +class PointsDetails { + int? accNumber; + String? accountStatus; + num? amount; + int? lineItemNo; + String? operationType; + num? points; + num? purchasePoints; + int? subTransactionType; + String? subTransactionTypeDescription; + String? transactionDate; + + PointsDetails( + {this.accNumber, + this.accountStatus, + this.amount, + this.lineItemNo, + this.operationType, + this.points, + this.purchasePoints, + this.subTransactionType, + this.subTransactionTypeDescription, + this.transactionDate}); + + PointsDetails.fromJson(Map json) { + accNumber = json['AccNumber']; + accountStatus = json['AccountStatus']; + amount = json['Amount']; + lineItemNo = json['LineItemNo']; + operationType = json['OperationType']; + points = json['Points']; + purchasePoints = json['PurchasePoints']; + subTransactionType = json['SubTransactionType']; + subTransactionTypeDescription = json['SubTransactionTypeDescription']; + transactionDate = json['TransactionDate']; + } + + Map toJson() { + final Map data = new Map(); + data['AccNumber'] = this.accNumber; + data['AccountStatus'] = this.accountStatus; + data['Amount'] = this.amount; + data['LineItemNo'] = this.lineItemNo; + data['OperationType'] = this.operationType; + data['Points'] = this.points; + data['PurchasePoints'] = this.purchasePoints; + data['SubTransactionType'] = this.subTransactionType; + data['SubTransactionTypeDescription'] = this.subTransactionTypeDescription; + data['TransactionDate'] = this.transactionDate; + return data; + } +} diff --git a/lib/features/habib_wallet/models/patient_advance_balance_response_model.dart b/lib/features/habib_wallet/models/patient_advance_balance_response_model.dart new file mode 100644 index 00000000..55594555 --- /dev/null +++ b/lib/features/habib_wallet/models/patient_advance_balance_response_model.dart @@ -0,0 +1,27 @@ +class PatientAdvanceBalanceResponseModel { + num? distanceInKilometers; + num? patientAdvanceBalanceAmount; + String? projectDescription; + int? projectID; + num? totalAmount; + + PatientAdvanceBalanceResponseModel({this.distanceInKilometers, this.patientAdvanceBalanceAmount, this.projectDescription, this.projectID, this.totalAmount}); + + PatientAdvanceBalanceResponseModel.fromJson(Map json) { + distanceInKilometers = json['DistanceInKilometers']; + patientAdvanceBalanceAmount = json['PatientAdvanceBalanceAmount']; + projectDescription = json['ProjectDescription']; + projectID = json['ProjectID']; + totalAmount = json['TotalAmount']; + } + + Map toJson() { + final Map data = Map(); + data['DistanceInKilometers'] = distanceInKilometers; + data['PatientAdvanceBalanceAmount'] = patientAdvanceBalanceAmount; + data['ProjectDescription'] = projectDescription; + data['ProjectID'] = projectID; + data['TotalAmount'] = totalAmount; + return data; + } +} diff --git a/lib/features/health_trackers/health_trackers_repo.dart b/lib/features/health_trackers/health_trackers_repo.dart index 2a64fc46..52bc40f6 100644 --- a/lib/features/health_trackers/health_trackers_repo.dart +++ b/lib/features/health_trackers/health_trackers_repo.dart @@ -15,6 +15,9 @@ abstract class HealthTrackersRepo { /// Get blood sugar results (week, month, year). Future>> getDiabeticResults(); + Future>> downloadBloodSugarReport(); + Future>> downloadWeightReport(); + Future>> downloadBloodPressureReport(); /// Add new blood sugar result. Future>> addDiabeticResult({ @@ -211,6 +214,114 @@ class HealthTrackersRepoImp implements HealthTrackersRepo { } } + @override + Future>> downloadBloodSugarReport() async { + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.averageBloodSugarReportDownload, + body: {}, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + dynamic pdf = response['ReportPDFContent']; + + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: pdf, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + + @override + Future>> downloadWeightReport() async { + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.averageWeightReportDownload, + body: {}, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + dynamic pdf = response['ReportPDFContent']; + + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: pdf, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + @override + Future>> downloadBloodPressureReport() async { + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.averageBloodPressureReportDownload, + body: {}, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + dynamic pdf = response['ReportPDFContent']; + + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: pdf, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + @override Future>> addDiabeticResult({ required String bloodSugarDateChart, diff --git a/lib/features/health_trackers/health_trackers_view_model.dart b/lib/features/health_trackers/health_trackers_view_model.dart index ab54f595..52ae3ad6 100644 --- a/lib/features/health_trackers/health_trackers_view_model.dart +++ b/lib/features/health_trackers/health_trackers_view_model.dart @@ -1,6 +1,10 @@ import 'dart:developer'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/features/health_trackers/health_trackers_repo.dart'; import 'package:hmg_patient_app_new/features/health_trackers/models/blood_pressure/blood_pressure_result.dart'; import 'package:hmg_patient_app_new/features/health_trackers/models/blood_pressure/month_blood_pressure_result_average.dart'; @@ -14,7 +18,9 @@ import 'package:hmg_patient_app_new/features/health_trackers/models/weight/month import 'package:hmg_patient_app_new/features/health_trackers/models/weight/week_weight_measurement_result_average.dart'; import 'package:hmg_patient_app_new/features/health_trackers/models/weight/weight_measurement_result.dart'; import 'package:hmg_patient_app_new/features/health_trackers/models/weight/year_weight_measurement_result_average.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; class HealthTrackersViewModel extends ChangeNotifier { HealthTrackersRepo healthTrackersRepo; @@ -28,13 +34,121 @@ class HealthTrackersViewModel extends ChangeNotifier { String? get errorMessage => _errorMessage; - List get durationFilters => ["Week", "Month", "Year"]; + // ==================== FORM ERROR TRACKING ==================== + // Individual field errors + String? _bloodSugarError; + String? _bloodSugarMeasureTimeError; + String? _dateError; + String? _timeError; + String? _weightError; + String? _systolicError; + String? _diastolicError; + String? _measuredArmError; + + // Getters for field errors + String? get bloodSugarError => _bloodSugarError; + String? get bloodSugarMeasureTimeError => _bloodSugarMeasureTimeError; + String? get dateError => _dateError; + String? get timeError => _timeError; + String? get weightError => _weightError; + String? get systolicError => _systolicError; + String? get diastolicError => _diastolicError; + String? get measuredArmError => _measuredArmError; + + // Check if blood sugar form has any errors (for container border) + bool get hasBloodSugarFormError => + _bloodSugarError != null || + _bloodSugarMeasureTimeError != null || + _dateError != null || + _timeError != null; + + // Check if weight form has any errors (for container border) + bool get hasWeightFormError => + _weightError != null || + _dateError != null || + _timeError != null; + + // Check if blood pressure form has any errors (for container border) + bool get hasBloodPressureFormError => + _systolicError != null || + _diastolicError != null || + _measuredArmError != null || + _dateError != null || + _timeError != null; + + // Clear all field errors + void clearAllFieldErrors() { + _bloodSugarError = null; + _bloodSugarMeasureTimeError = null; + _dateError = null; + _timeError = null; + _weightError = null; + _systolicError = null; + _diastolicError = null; + _measuredArmError = null; + notifyListeners(); + } + + // Clear individual field errors + void clearBloodSugarError() { + _bloodSugarError = null; + notifyListeners(); + } + + void clearBloodSugarMeasureTimeError() { + _bloodSugarMeasureTimeError = null; + notifyListeners(); + } + + void clearDateError() { + _dateError = null; + notifyListeners(); + } + + void clearTimeError() { + _timeError = null; + notifyListeners(); + } + + void clearWeightError() { + _weightError = null; + notifyListeners(); + } + + void clearSystolicError() { + _systolicError = null; + notifyListeners(); + } + + void clearDiastolicError() { + _diastolicError = null; + notifyListeners(); + } + + void clearMeasuredArmError() { + _measuredArmError = null; + notifyListeners(); + } + + final List durationFiltersEn = ["Week", "Month", "Year"]; + final List durationFiltersAr = ["أسبوع", "شهر", "سنة"]; + + List get durationFilters => getIt.get().isArabic() ? durationFiltersAr : durationFiltersEn; String _selectedDuration = "Week"; bool _isGraphView = true; String get selectedDurationFilter => _selectedDuration; + // Get the localized display value for the selected duration + String get selectedDurationFilterDisplay { + final index = durationFiltersEn.indexOf(_selectedDuration); + if (index >= 0) { + return getIt.get().isArabic() ? durationFiltersAr[index] : durationFiltersEn[index]; + } + return _selectedDuration; + } + bool get isGraphView => _isGraphView; final List bloodSugarUnit = ['mg/dlt', 'mol/L']; @@ -72,6 +186,10 @@ class HealthTrackersViewModel extends ChangeNotifier { "آخر", ]; + List getBloodSugarTimeList(){ + return getIt.get().isArabic()?bloodSugarMeasureTimeArList:bloodSugarMeasureTimeEnList; + } + // Setters with notification void setBloodSugarMeasureTime(String duration) async { _selectedBloodSugarMeasureTime = duration; @@ -80,7 +198,15 @@ class HealthTrackersViewModel extends ChangeNotifier { // Setters with notification void setFilterDuration(String duration) async { - _selectedDuration = duration; + // Map Arabic values to English keys + if (getIt.get().isArabic()) { + final index = durationFiltersAr.indexOf(duration); + if (index >= 0 && index < durationFiltersEn.length) { + _selectedDuration = durationFiltersEn[index]; + } + } else { + _selectedDuration = duration; + } notifyListeners(); } @@ -97,26 +223,73 @@ class HealthTrackersViewModel extends ChangeNotifier { // ==================== WEIGHT FORM FIELDS ==================== final List weightUnits = ['kg', 'lb']; + final List weightUnitsEn = ['kg', 'lb']; + final List weightUnitsAr = ['كجم', 'رطل']; + String _selectedWeightUnit = 'kg'; String get selectedWeightUnit => _selectedWeightUnit; + List getWeightUnitsList() { + return getIt.get().isArabic() ? weightUnitsAr : weightUnitsEn; + } + void setWeightUnit(String unit) { - _selectedWeightUnit = unit; + // Map Arabic values to English keys + if (getIt.get().isArabic()) { + final index = weightUnitsAr.indexOf(unit); + if (index >= 0 && index < weightUnitsEn.length) { + _selectedWeightUnit = weightUnitsEn[index]; + } + } else { + _selectedWeightUnit = unit; + } notifyListeners(); } + // Get the localized display value for the selected weight unit + String get selectedWeightUnitDisplay { + final index = weightUnitsEn.indexOf(_selectedWeightUnit); + if (index >= 0) { + return getIt.get().isArabic() ? weightUnitsAr[index] : weightUnitsEn[index]; + } + return _selectedWeightUnit; + } + // ==================== BLOOD PRESSURE FORM FIELDS ==================== - final List measuredArmList = ['Left Arm', 'Right Arm']; + final List measuredArmListEn = ['Left Arm', 'Right Arm']; + final List measuredArmListAr = ['الذراع الأيسر', 'الذراع الأيمن']; + String _selectedMeasuredArm = ''; String get selectedMeasuredArm => _selectedMeasuredArm; + List getMeasuredArmList() { + return getIt.get().isArabic() ? measuredArmListAr : measuredArmListEn; + } + void setMeasuredArm(String arm) { - _selectedMeasuredArm = arm; + // Map Arabic values to English keys + if (getIt.get().isArabic()) { + final index = measuredArmListAr.indexOf(arm); + if (index >= 0 && index < measuredArmListEn.length) { + _selectedMeasuredArm = measuredArmListEn[index]; + } + } else { + _selectedMeasuredArm = arm; + } notifyListeners(); } + // Get the localized display value for the selected measured arm + String get selectedMeasuredArmDisplay { + final index = measuredArmListEn.indexOf(_selectedMeasuredArm); + if (index >= 0) { + return getIt.get().isArabic() ? measuredArmListAr[index] : measuredArmListEn[index]; + } + return _selectedMeasuredArm; + } + // Text Controllers TextEditingController weightController = TextEditingController(); TextEditingController bloodSugarController = TextEditingController(); @@ -425,6 +598,91 @@ class HealthTrackersViewModel extends ChangeNotifier { } } + + Future downloadBloodSugerReport({ + Function(String)? onSuccess, + }) async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.generatingReport.tr()); + try { + final result = await healthTrackersRepo.downloadBloodSugarReport(); + LoaderBottomSheet.hideLoader(); + bool success = false; + + result.fold( + (failure) { + errorHandlerService.handleError(failure: failure); + }, + (apiModel) { + success = true; + if (onSuccess != null) onSuccess(apiModel.data??""); + }, + ); + + notifyListeners(); + + return success; + } catch (e) { + log('Error in sendWeightReportByEmail: $e'); + return false; + } + } + + Future downloadBloodPressureReport({ + Function(String)? onSuccess, + }) async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.generatingReport.tr()); + try { + final result = await healthTrackersRepo.downloadBloodPressureReport(); + LoaderBottomSheet.hideLoader(); + bool success = false; + + result.fold( + (failure) { + errorHandlerService.handleError(failure: failure); + }, + (apiModel) { + success = true; + if (onSuccess != null) onSuccess(apiModel.data??""); + }, + ); + + notifyListeners(); + + return success; + } catch (e) { + log('Error in sendWeightReportByEmail: $e'); + return false; + } + } + Future downloadWeightReport({ + Function(String)? onSuccess, + }) async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.generatingReport.tr()); + try { + final result = await healthTrackersRepo.downloadWeightReport(); + LoaderBottomSheet.hideLoader(); + bool success = false; + + result.fold( + (failure) { + errorHandlerService.handleError(failure: failure); + }, + (apiModel) { + success = true; + if (onSuccess != null) onSuccess(apiModel.data??""); + }, + ); + + notifyListeners(); + + return success; + } catch (e) { + log('Error in sendWeightReportByEmail: $e'); + return false; + } + } + + // ==================== BLOOD PRESSURE TRACKING METHODS ==================== /// Fetch blood pressure averages and results @@ -855,35 +1113,92 @@ class HealthTrackersViewModel extends ChangeNotifier { } } - // Validation method + // Validation method - returns true if valid, false if errors exist + // Shows only the first error encountered + bool validateBloodSugarEntry(String dateTime) { + final isArabic = getIt.get().isArabic(); + + // Clear all previous errors + _bloodSugarError = null; + _bloodSugarMeasureTimeError = null; + _dateError = null; + _timeError = null; + + // Validate blood sugar value - stop at first error + if (bloodSugarController.text.trim().isEmpty) { + _bloodSugarError = isArabic ? "الرجاء إدخال مستوى سكر الدم" : "Please enter blood sugar value"; + notifyListeners(); + return false; + } + + final bloodSugarValue = double.tryParse(bloodSugarController.text.trim()); + if (bloodSugarValue == null) { + _bloodSugarError = isArabic ? "الرجاء إدخال رقم صحيح" : "Please enter a valid number"; + notifyListeners(); + return false; + } + + if (bloodSugarValue <= 0) { + _bloodSugarError = isArabic ? "يجب أن يكون مستوى سكر الدم أكبر من 0" : "Blood sugar value must be greater than 0"; + notifyListeners(); + return false; + } + + if (bloodSugarValue > 1000) { + _bloodSugarError = isArabic ? "مستوى سكر الدم يبدو مرتفع جداً. يرجى التحقق وإدخالها مرة أخرى" : "Blood sugar value seems too high. Please check and enter again"; + notifyListeners(); + return false; + } + + // Validate date time + if (dateTime.trim().isEmpty) { + _dateError = isArabic ? "الرجاء اختيار التاريخ والوقت" : "Please select date and time"; + notifyListeners(); + return false; + } + + // Validate measure time + if (_selectedBloodSugarMeasureTime.isEmpty) { + _bloodSugarMeasureTimeError = isArabic ? "الرجاء اختيار وقت القياس" : "Please select when the measurement was taken"; + notifyListeners(); + return false; + } + + notifyListeners(); + return true; + } + + // Old validation method kept for reference String? _validateBloodSugarEntry(String dateTime) { + final isArabic = getIt.get().isArabic(); + // Validate blood sugar value if (bloodSugarController.text.trim().isEmpty) { - return "Please enter blood sugar value"; + return isArabic ? "الرجاء إدخال مستوى سكر الدم" : "Please enter blood sugar value"; } final bloodSugarValue = double.tryParse(bloodSugarController.text.trim()); if (bloodSugarValue == null) { - return "Please enter a valid number"; + return isArabic ? "الرجاء إدخال رقم صحيح" : "Please enter a valid number"; } if (bloodSugarValue <= 0) { - return "Blood sugar value must be greater than 0"; + return isArabic ? "يجب أن يكون مستوى سكر الدم أكبر من 0" : "Blood sugar value must be greater than 0"; } // Validate reasonable range (typical ranges) if (bloodSugarValue > 1000) { - return "Blood sugar value seems too high. Please check and enter again"; + return isArabic ? "مستوى سكر الدم يبدو مرتفع جداً. يرجى التحقق وإدخالها مرة أخرى" : "Blood sugar value seems too high. Please check and enter again"; } // Validate date time if (dateTime.trim().isEmpty) { - return "Please select date and time"; + return isArabic ? "الرجاء اختيار التاريخ والوقت" : "Please select date and time"; } // Validate measure time if (_selectedBloodSugarMeasureTime.isEmpty) { - return "Please select when the measurement was taken"; + return isArabic ? "الرجاء اختيار وقت القياس" : "Please select when the measurement was taken"; } return null; // No errors @@ -896,6 +1211,8 @@ class HealthTrackersViewModel extends ChangeNotifier { Function()? onSuccess, Function(String error)? onFailure, }) async { + final isArabic = getIt.get().isArabic(); + // Validate final validationError = _validateBloodSugarEntry(dateTime); if (validationError != null) { @@ -930,13 +1247,13 @@ class HealthTrackersViewModel extends ChangeNotifier { notifyListeners(); if (onSuccess != null) onSuccess(); } else { - _errorMessage = "Failed to save blood sugar entry. Please try again"; + _errorMessage = isArabic ? "فشل حفظ قراءة سكر الدم. يرجى المحاولة مرة أخرى" : "Failed to save blood sugar entry. Please try again"; notifyListeners(); if (onFailure != null) onFailure(_errorMessage!); } } catch (e) { log('Error in saveBloodSugarEntry: $e'); - _errorMessage = "An error occurred. Please try again"; + _errorMessage = isArabic ? "حدث خطأ. يرجى المحاولة مرة أخرى" : "An error occurred. Please try again"; isLoading = false; notifyListeners(); if (onFailure != null) onFailure(_errorMessage!); @@ -945,23 +1262,62 @@ class HealthTrackersViewModel extends ChangeNotifier { // ==================== WEIGHT ENTRY METHODS ==================== - // Validate weight entry before saving + // Validate weight entry before saving - returns true if valid, false if errors exist + // Shows only the first error encountered + bool validateWeightEntry(String dateTime) { + final isArabic = getIt.get().isArabic(); + + // Clear all previous errors + _weightError = null; + _dateError = null; + _timeError = null; + + // Validate weight value - stop at first error + final weightValue = weightController.text.trim(); + if (weightValue.isEmpty) { + _weightError = isArabic ? "الرجاء إدخال قيمة الوزن" : "Please enter weight value"; + notifyListeners(); + return false; + } + + // Check if it's a valid number + final parsedValue = double.tryParse(weightValue); + if (parsedValue == null || parsedValue <= 0) { + _weightError = isArabic ? "الرجاء إدخال قيمة وزن صحيحة" : "Please enter a valid weight value"; + notifyListeners(); + return false; + } + + // Validate date time + if (dateTime.trim().isEmpty) { + _dateError = isArabic ? "الرجاء تحديد التاريخ والوقت" : "Please select date and time"; + notifyListeners(); + return false; + } + + notifyListeners(); + return true; + } + + // Old validation method kept for reference String? _validateWeightEntry(String dateTime) { + final isArabic = getIt.get().isArabic(); + // Validate weight value final weightValue = weightController.text.trim(); if (weightValue.isEmpty) { - return "Please enter weight value"; + return isArabic ? "الرجاء إدخال قيمة الوزن" : "Please enter weight value"; } // Check if it's a valid number final parsedValue = double.tryParse(weightValue); if (parsedValue == null || parsedValue <= 0) { - return "Please enter a valid weight value"; + return isArabic ? "الرجاء إدخال قيمة وزن صحيحة" : "Please enter a valid weight value"; } // Validate date time if (dateTime.trim().isEmpty) { - return "Please select date and time"; + return isArabic ? "الرجاء تحديد التاريخ والوقت" : "Please select date and time"; } return null; // No errors @@ -973,6 +1329,8 @@ class HealthTrackersViewModel extends ChangeNotifier { Function()? onSuccess, Function(String error)? onFailure, }) async { + final isArabic = getIt.get().isArabic(); + // Validate final validationError = _validateWeightEntry(dateTime); if (validationError != null) { @@ -1005,13 +1363,13 @@ class HealthTrackersViewModel extends ChangeNotifier { notifyListeners(); if (onSuccess != null) onSuccess(); } else { - _errorMessage = "Failed to save weight entry. Please try again"; + _errorMessage = isArabic ? "فشل حفظ قراءة الوزن. يرجى المحاولة مرة أخرى" : "Failed to save weight entry. Please try again"; notifyListeners(); if (onFailure != null) onFailure(_errorMessage!); } } catch (e) { log('Error in saveWeightEntry: $e'); - _errorMessage = "An error occurred. Please try again"; + _errorMessage = isArabic ? "حدث خطأ. يرجى المحاولة مرة أخرى" : "An error occurred. Please try again"; isLoading = false; notifyListeners(); if (onFailure != null) onFailure(_errorMessage!); @@ -1020,36 +1378,98 @@ class HealthTrackersViewModel extends ChangeNotifier { // ==================== BLOOD PRESSURE ENTRY METHODS ==================== - // Validate blood pressure entry before saving + // Validate blood pressure entry before saving - returns true if valid, false if errors exist + // Shows only the first error encountered + bool validateBloodPressureEntry(String dateTime) { + final isArabic = getIt.get().isArabic(); + + // Clear all previous errors + _systolicError = null; + _diastolicError = null; + _measuredArmError = null; + _dateError = null; + _timeError = null; + + // Validate systolic value - stop at first error + final systolicValue = systolicController.text.trim(); + if (systolicValue.isEmpty) { + _systolicError = isArabic ? "الرجاء إدخال القيمة الانقباضية" : "Please enter systolic value"; + notifyListeners(); + return false; + } + + final parsedSystolic = int.tryParse(systolicValue); + if (parsedSystolic == null || parsedSystolic <= 0) { + _systolicError = isArabic ? "الرجاء إدخال قيمة صحيحة للضغط الانقباضي" : "Please enter a valid systolic value"; + notifyListeners(); + return false; + } + + // Validate diastolic value + final diastolicValue = diastolicController.text.trim(); + if (diastolicValue.isEmpty) { + _diastolicError = isArabic ? "الرجاء إدخال قيمة الضغط الانبساطي" : "Please enter diastolic value"; + notifyListeners(); + return false; + } + + final parsedDiastolic = int.tryParse(diastolicValue); + if (parsedDiastolic == null || parsedDiastolic <= 0) { + _diastolicError = isArabic ? "الرجاء إدخال قيمة صحيحة للضغط الانبساطي" : "Please enter a valid diastolic value"; + notifyListeners(); + return false; + } + + // Validate arm selection + if (_selectedMeasuredArm.isEmpty) { + _measuredArmError = isArabic ? "الرجاء اختيار الذراع المقاسة" : "Please select measured arm"; + notifyListeners(); + return false; + } + + // Validate date time + if (dateTime.trim().isEmpty) { + _dateError = isArabic ? "الرجاء تحديد التاريخ والوقت" : "Please select date and time"; + notifyListeners(); + return false; + } + + notifyListeners(); + return true; + } + + // Old validation method kept for reference String? _validateBloodPressureEntry(String dateTime) { + final isArabic = getIt.get().isArabic(); + // Validate systolic value final systolicValue = systolicController.text.trim(); if (systolicValue.isEmpty) { - return "Please enter systolic value"; + return isArabic ? "الرجاء إدخال القيمة الانقباضية" : "Please enter systolic value"; } final parsedSystolic = int.tryParse(systolicValue); if (parsedSystolic == null || parsedSystolic <= 0) { - return "Please enter a valid systolic value"; + return isArabic ? "الرجاء إدخال قيمة صحيحة للضغط الانقباضي" : "Please enter a valid systolic value"; } // Validate diastolic value final diastolicValue = diastolicController.text.trim(); if (diastolicValue.isEmpty) { - return "Please enter diastolic value"; + return isArabic ? "الرجاء إدخال قيمة الضغط الانبساطي" : "Please enter diastolic value"; } final parsedDiastolic = int.tryParse(diastolicValue); if (parsedDiastolic == null || parsedDiastolic <= 0) { - return "Please enter a valid diastolic value"; + return isArabic ? "الرجاء إدخال قيمة صحيحة للضغط الانبساطي" : "Please enter a valid diastolic value"; } // Validate arm selection if (_selectedMeasuredArm.isEmpty) { - return "Please select measured arm"; + return isArabic ? "الرجاء اختيار الذراع المقاسة" : "Please select measured arm"; } // Validate date time if (dateTime.trim().isEmpty) { - return "Please select date and time"; + return isArabic ? "الرجاء تحديد التاريخ والوقت" : "Please select date and time"; } return null; // No errors @@ -1061,6 +1481,8 @@ class HealthTrackersViewModel extends ChangeNotifier { Function()? onSuccess, Function(String error)? onFailure, }) async { + final isArabic = getIt.get().isArabic(); + // Validate final validationError = _validateBloodPressureEntry(dateTime); if (validationError != null) { @@ -1076,7 +1498,7 @@ class HealthTrackersViewModel extends ChangeNotifier { try { // Get measured arm index (0 = Left Arm, 1 = Right Arm) - final measuredArmIndex = measuredArmList.indexOf(_selectedMeasuredArm); + final measuredArmIndex = measuredArmListEn.indexOf(_selectedMeasuredArm); // Call API final success = await addOrUpdateBloodPressureResult( @@ -1097,13 +1519,13 @@ class HealthTrackersViewModel extends ChangeNotifier { notifyListeners(); if (onSuccess != null) onSuccess(); } else { - _errorMessage = "Failed to save blood pressure entry. Please try again"; + _errorMessage = isArabic ? "فشل حفظ قراءة ضغط الدم. يرجى المحاولة مرة أخرى" : "Failed to save blood pressure entry. Please try again"; notifyListeners(); if (onFailure != null) onFailure(_errorMessage!); } } catch (e) { log('Error in saveBloodPressureEntry: $e'); - _errorMessage = "An error occurred. Please try again"; + _errorMessage = isArabic ? "حدث خطأ. يرجى المحاولة مرة أخرى" : "An error occurred. Please try again"; isLoading = false; notifyListeners(); if (onFailure != null) onFailure(_errorMessage!); @@ -1118,4 +1540,30 @@ class HealthTrackersViewModel extends ChangeNotifier { diastolicController.dispose(); super.dispose(); } + + Future downloadReport(HealthTrackerTypeEnum trackerType, {required Function(dynamic report) onSuccess}) async { + switch (trackerType) { + case HealthTrackerTypeEnum.bloodSugar: + await downloadBloodSugerReport( + onSuccess : (value){ + onSuccess(value); + } + ); + break; + case HealthTrackerTypeEnum.bloodPressure: + await downloadBloodPressureReport( + onSuccess : (value){ + onSuccess(value); + } + ); + break; + case HealthTrackerTypeEnum.weightTracker: + await downloadWeightReport( + onSuccess : (value){ + onSuccess(value); + } + ); + break; + } + } } diff --git a/lib/features/hmg_services/hmg_services_repo.dart b/lib/features/hmg_services/hmg_services_repo.dart index 89285339..8f439d2c 100644 --- a/lib/features/hmg_services/hmg_services_repo.dart +++ b/lib/features/hmg_services/hmg_services_repo.dart @@ -919,8 +919,6 @@ class HmgServicesRepoImp implements HmgServicesRepo { @override Future>>> getPatientVitalSign() async { Map requestBody = { - - }; try { @@ -946,11 +944,11 @@ class HmgServicesRepoImp implements HmgServicesRepo { final vitalSign = VitalSignResModel.fromJson(vitalSignJson); // Debug logging for blood pressure - print('=== Repository Blood Pressure Check ==='); - print('bloodPressureHigher: ${vitalSign.bloodPressureHigher}'); - print('bloodPressureLower: ${vitalSign.bloodPressureLower}'); - print('weightKg: ${vitalSign.weightKg}'); - print('heightCm: ${vitalSign.heightCm}'); + // print('=== Repository Blood Pressure Check ==='); + // print('bloodPressureHigher: ${vitalSign.bloodPressureHigher}'); + // print('bloodPressureLower: ${vitalSign.bloodPressureLower}'); + // print('weightKg: ${vitalSign.weightKg}'); + // print('heightCm: ${vitalSign.heightCm}'); // Check if the record has at least one valid vital sign measurement final hasValidWeight = _isValidValue(vitalSign.weightKg); @@ -961,9 +959,9 @@ class HmgServicesRepoImp implements HmgServicesRepo { final hasValidRespiration = _isValidValue(vitalSign.respirationBeatPerMinute); final hasValidBloodPressure = _isValidValue(vitalSign.bloodPressureHigher) || _isValidValue(vitalSign.bloodPressureLower); - print('hasValidBloodPressure: $hasValidBloodPressure'); - print('Will add to list: ${hasValidWeight || hasValidHeight || hasValidBMI || hasValidTemperature || hasValidHeartRate || hasValidRespiration || hasValidBloodPressure}'); - print('====================================='); + // print('hasValidBloodPressure: $hasValidBloodPressure'); + // print('Will add to list: ${hasValidWeight || hasValidHeight || hasValidBMI || hasValidTemperature || hasValidHeartRate || hasValidRespiration || hasValidBloodPressure}'); + // print('====================================='); // Add if ANY vital sign has valid data if (hasValidWeight || hasValidHeight || hasValidBMI || hasValidTemperature || diff --git a/lib/features/hmg_services/hmg_services_view_model.dart b/lib/features/hmg_services/hmg_services_view_model.dart index 5bf450ba..da1ae80d 100644 --- a/lib/features/hmg_services/hmg_services_view_model.dart +++ b/lib/features/hmg_services/hmg_services_view_model.dart @@ -1,4 +1,5 @@ import 'dart:convert'; +import 'dart:io'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; @@ -21,6 +22,7 @@ import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/ import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:sms_otp_auto_verify/sms_otp_auto_verify.dart'; import 'models/req_models/check_activation_e_referral_req_model.dart'; import 'models/resq_models/get_covid_payment_info_resp.dart'; @@ -85,6 +87,11 @@ class HmgServicesViewModel extends ChangeNotifier { List covidTestProcedureList = []; Covid19GetPaymentInfo? covidPaymentInfo; + void setHasVitalSignDataLoaded(bool hasVitalSignDataLoaded) { + this.hasVitalSignDataLoaded = hasVitalSignDataLoaded; + notifyListeners(); + } + Future getOrdersList() async {} // HHC multiple services selection @@ -128,7 +135,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -161,7 +168,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -200,7 +207,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -235,7 +242,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -328,7 +335,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -372,7 +379,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -405,7 +412,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -444,7 +451,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -491,7 +498,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -570,7 +577,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -602,7 +609,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -627,6 +634,9 @@ class HmgServicesViewModel extends ChangeNotifier { Function(GenericApiModel)? onSuccess, Function(String)? onError, }) async { + // Get and set the SMS signature for auto-fill + requestModel.sMSSignature = await getSignature(); + notifyListeners(); final result = await hmgServicesRepo.sendEReferralActivationCode(requestModel); @@ -636,7 +646,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -655,6 +665,14 @@ class HmgServicesViewModel extends ChangeNotifier { ); } + Future getSignature() async { + if (Platform.isAndroid) { + return await SmsVerification.getAppSignature(); + } else { + return null; + } + } + Future checkEReferralActivationCode({ required CheckActivationCodeForEReferralRequestModel requestModel, Function(GenericApiModel)? onSuccess, @@ -669,7 +687,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -700,9 +718,8 @@ class HmgServicesViewModel extends ChangeNotifier { result.fold( (failure) async { notifyListeners(); - await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -735,7 +752,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -764,6 +781,7 @@ class HmgServicesViewModel extends ChangeNotifier { navigationService.pushToOtpScreen( phoneNumber: phoneNumber, isFormFamilyFile: false, + zipCode: "", checkActivationCode: (int activationCode) async { checkEReferralActivationCode( requestModel: CheckActivationCodeForEReferralRequestModel( @@ -778,7 +796,7 @@ class HmgServicesViewModel extends ChangeNotifier { }, ); }, - onResendOTPPressed: (String phoneNumber) async { + onResendOTPPressed: (String phoneNumber, String zipCode) async { // await sendActivationCode( // otpTypeEnum: otpTypeEnum, // phoneNumber: phoneNumberController.text, @@ -819,7 +837,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -854,7 +872,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -890,7 +908,7 @@ class HmgServicesViewModel extends ChangeNotifier { notifyListeners(); await errorHandlerService.handleError(failure: failure); if (onError != null) { - onError(failure.toString()); + onError(failure.message); } }, (apiResponse) { @@ -898,8 +916,10 @@ class HmgServicesViewModel extends ChangeNotifier { if (apiResponse.messageStatus == 1) { vitalSignList = apiResponse.data ?? []; hasVitalSignDataLoaded = true; - getIt.get().setSelectedHeight(vitalSignList.first.heightCm); - getIt.get().setSelectedWeight(vitalSignList.first.weightKg); + if (vitalSignList.isNotEmpty) { + getIt.get().setSelectedHeight(vitalSignList.first.heightCm); + getIt.get().setSelectedWeight(vitalSignList.first.weightKg); + } notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); diff --git a/lib/features/hmg_services/models/req_models/send_activation_code_ereferral_req_model.dart b/lib/features/hmg_services/models/req_models/send_activation_code_ereferral_req_model.dart index 0380de8e..288498d2 100644 --- a/lib/features/hmg_services/models/req_models/send_activation_code_ereferral_req_model.dart +++ b/lib/features/hmg_services/models/req_models/send_activation_code_ereferral_req_model.dart @@ -10,6 +10,7 @@ class SendActivationCodeForEReferralRequestModel { dynamic sessionID; bool? isDentalAllowedBackend; int? deviceTypeID; + String? sMSSignature; SendActivationCodeForEReferralRequestModel( {this.patientMobileNumber, @@ -22,7 +23,8 @@ class SendActivationCodeForEReferralRequestModel { this.patientOutSA, this.sessionID, this.isDentalAllowedBackend, - this.deviceTypeID}); + this.deviceTypeID, + this.sMSSignature}); SendActivationCodeForEReferralRequestModel.fromJson(Map json) { patientMobileNumber = json['PatientMobileNumber']; @@ -36,6 +38,7 @@ class SendActivationCodeForEReferralRequestModel { sessionID = json['SessionID']; isDentalAllowedBackend = json['isDentalAllowedBackend']; deviceTypeID = json['DeviceTypeID']; + sMSSignature = json['SMSSignature']; } Map toJson() { @@ -51,6 +54,7 @@ class SendActivationCodeForEReferralRequestModel { data['SessionID'] = this.sessionID; data['isDentalAllowedBackend'] = this.isDentalAllowedBackend; data['DeviceTypeID'] = this.deviceTypeID; + data['SMSSignature'] = this.sMSSignature; return data; } } diff --git a/lib/features/hmg_services/models/ui_models/vital_sign_ui_model.dart b/lib/features/hmg_services/models/ui_models/vital_sign_ui_model.dart index 328ffc93..6fb24066 100644 --- a/lib/features/hmg_services/models/ui_models/vital_sign_ui_model.dart +++ b/lib/features/hmg_services/models/ui_models/vital_sign_ui_model.dart @@ -1,6 +1,19 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; +/// Enum for vital sign status to avoid string-based comparisons +enum VitalSignStatus { + normal, + high, + low, + obese, + overweight, + underweight, + skinny, +} + /// UI-only helper model for Vital Sign cards. /// /// Keeps presentation logic (chip colors, icon colors, simple status rules) @@ -20,13 +33,13 @@ class VitalSignUiModel { /// Returns a color scheme for a card based on its [status] and [label]. /// - /// Rules (mirrors existing behavior in Medical File page): + /// Rules: /// - Height is always blue. - /// - High => red scheme. - /// - Low => yellow scheme. + /// - High, Obese => red scheme. + /// - Overweight => orange scheme. + /// - Low, Underweight, Skinny => yellow scheme. /// - Otherwise => green scheme (Normal). - static VitalSignUiModel scheme({required String? status, required String label}) { - final s = (status ?? '').toLowerCase(); + static VitalSignUiModel scheme({required VitalSignStatus? status, required String label}) { final l = label.toLowerCase(); // Height should always be blue. @@ -39,7 +52,8 @@ class VitalSignUiModel { ); } - if (s.contains('high')) { + // High, Obese => red scheme (health concerns) + if (status == VitalSignStatus.high || status == VitalSignStatus.obese) { return VitalSignUiModel( iconBg: AppColors.chipSecondaryLightRedColor, iconFg: AppColors.primaryRedColor, @@ -48,13 +62,26 @@ class VitalSignUiModel { ); } - if (s.contains('low')) { - final Color yellowBg = AppColors.warningColor.withValues(alpha: 0.12); + // Overweight => orange scheme (warning) + if (status == VitalSignStatus.overweight) { + return VitalSignUiModel( + iconBg: AppColors.warningColorYellow.withValues(alpha: 0.12), + iconFg: AppColors.warningColorYellow, + chipBg: AppColors.warningColorYellow.withValues(alpha: 0.12), + chipFg: AppColors.warningColorYellow, + ); + } + + // Low, Underweight, Skinny => yellow scheme (warning) + if (status == VitalSignStatus.low || + status == VitalSignStatus.underweight || + status == VitalSignStatus.skinny) { + final Color yellowBg = AppColors.highAndLow.withValues(alpha: 0.12); return VitalSignUiModel( iconBg: yellowBg, - iconFg: AppColors.warningColor, + iconFg: AppColors.highAndLow, chipBg: yellowBg, - chipFg: AppColors.warningColor, + chipFg: AppColors.highAndLow, ); } @@ -68,19 +95,39 @@ class VitalSignUiModel { ); } + /// Convert VitalSignStatus enum to localized string + static String statusToString(VitalSignStatus status) { + switch (status) { + case VitalSignStatus.normal: + return LocaleKeys.vitalSignNormal.tr(); + case VitalSignStatus.high: + return LocaleKeys.vitalSignHigh.tr(); + case VitalSignStatus.low: + return LocaleKeys.vitalSignLow.tr(); + case VitalSignStatus.obese: + return LocaleKeys.vitalSignObese.tr(); + case VitalSignStatus.overweight: + return LocaleKeys.vitalSignOverweight.tr(); + case VitalSignStatus.underweight: + return LocaleKeys.vitalSignUnderweight.tr(); + case VitalSignStatus.skinny: + return LocaleKeys.vitalSignSkinny.tr(); + } + } + /// Simple, user-friendly classification: /// - Low: systolic < 90 OR diastolic < 60 /// - High: systolic >= 140 OR diastolic >= 90 /// - Normal: otherwise /// Returns null if values are missing/unparseable. - static String? bloodPressureStatus({dynamic systolic, dynamic diastolic}) { + static VitalSignStatus? bloodPressureStatus({dynamic systolic, dynamic diastolic}) { final int? s = toIntOrNull(systolic); final int? d = toIntOrNull(diastolic); if (s == null || d == null) return null; - if (s < 90 || d < 60) return 'Low'; - if (s >= 140 || d >= 90) return 'High'; - return 'Normal'; + if (s < 90 || d < 60) return VitalSignStatus.low; + if (s >= 140 || d >= 90) return VitalSignStatus.high; + return VitalSignStatus.normal; } static int? toIntOrNull(dynamic v) { @@ -90,13 +137,66 @@ class VitalSignUiModel { return int.tryParse(v.toString()); } - static String bmiStatus(dynamic bmi) { - if (bmi == null) return 'N/A'; - final double bmiValue = double.tryParse(bmi.toString()) ?? 0; - if (bmiValue < 18.5) return 'Underweight'; - if (bmiValue < 25) return 'Normal'; - if (bmiValue < 30) return 'Overweight'; - return 'High'; + static VitalSignStatus? bmiStatus(dynamic bmi) { + // Return null if BMI is not available or is 0 + final double bmiResult = double.tryParse(bmi.toString()) ?? 0; + + if (bmiResult == 0 || bmi == null) { + return null; + } + + // BMI >= 30 (Obese) => Red + if (bmiResult >= 30) { + return VitalSignStatus.obese; + } + // BMI >= 25 (Overweight) => Orange + else if (bmiResult >= 25) { + return VitalSignStatus.overweight; + } + // BMI >= 18.5 (Normal) => Green + else if (bmiResult >= 18.5) { + return VitalSignStatus.normal; + } + // BMI >= 16 (Underweight) => Yellow + else if (bmiResult >= 16) { + return VitalSignStatus.underweight; + } + // BMI < 16 (Skinny/Severely underweight) => Yellow + else { + return VitalSignStatus.skinny; + } + } + + /// Weight status based on BMI with detailed classification + /// Returns: Obese, Overweight, Normal, Underweight, Skinny + static VitalSignStatus? weightStatus(dynamic bmi) { + // Return null if BMI is not available or is 0 + final double bmiResult = double.tryParse(bmi.toString()) ?? 0; + + if (bmiResult == 0 || bmi == null) { + return null; + } + + // BMI >= 30 (Obese) => Red + if (bmiResult >= 30) { + return VitalSignStatus.obese; + } + // BMI >= 25 (Overweight) => Orange + else if (bmiResult >= 25) { + return VitalSignStatus.overweight; + } + // BMI >= 18.5 (Normal) => Green + else if (bmiResult >= 18.5) { + return VitalSignStatus.normal; + } + // BMI >= 16 (Underweight) => Yellow + else if (bmiResult >= 16) { + return VitalSignStatus.underweight; + } + // BMI < 16 (Skinny/Severely underweight) => Yellow + else { + return VitalSignStatus.skinny; + } } } diff --git a/lib/features/immediate_livecare/immediate_livecare_repo.dart b/lib/features/immediate_livecare/immediate_livecare_repo.dart index cbce4ea2..6726a09b 100644 --- a/lib/features/immediate_livecare/immediate_livecare_repo.dart +++ b/lib/features/immediate_livecare/immediate_livecare_repo.dart @@ -5,6 +5,7 @@ import 'package:hmg_patient_app_new/core/api/api_client.dart'; import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; +import 'package:hmg_patient_app_new/features/immediate_livecare/models/resp_models/get_livecare_clinic_schedule_response_model.dart'; import 'package:hmg_patient_app_new/features/immediate_livecare/models/resp_models/get_livecare_immediate_clinics_response_model.dart'; import 'package:hmg_patient_app_new/features/immediate_livecare/models/resp_models/get_livecare_immediate_fees_response_model.dart'; import 'package:hmg_patient_app_new/features/immediate_livecare/models/resp_models/get_patient_livecare_history_response_model.dart'; @@ -13,6 +14,9 @@ import 'package:hmg_patient_app_new/services/logger_service.dart'; abstract class ImmediateLiveCareRepo { Future>>> getLiveCareImmediateClinicsList(int age, int genderID, {Function(dynamic)? onSuccess, Function(String)? onError}); + Future>>> getLiveCareImmediateClinicSchedule(int age, int genderID, int serviceID, + {Function(dynamic)? onSuccess, Function(String)? onError}); + Future>> getLiveCareImmediateAppointmentFees(int age, int genderID, int serviceID, {Function(dynamic)? onSuccess, Function(String)? onError}); @@ -21,6 +25,9 @@ abstract class ImmediateLiveCareRepo { {Function(dynamic)? onSuccess, Function(String)? onError}); Future>>> getPatientLiveCareHistory({Function(dynamic)? onSuccess, Function(String)? onError}); + + Future>> addInsuranceUpdateRequestForLiveCare(String name, String mobileNumber, String fileNumber, + {Function(dynamic)? onSuccess, Function(String)? onError}); } class ImmediateLiveCareRepoImp implements ImmediateLiveCareRepo { @@ -203,4 +210,87 @@ class ImmediateLiveCareRepoImp implements ImmediateLiveCareRepo { return Left(UnknownFailure(e.toString())); } } + + @override + Future>>> getLiveCareImmediateClinicSchedule(int age, int genderID, int serviceID, + {Function(dynamic p1)? onSuccess, Function(String p1)? onError}) async { + Map mapDevice = { + "Age": age, + "Gender": genderID, + "ServiceID": serviceID, + }; + + try { + GenericApiModel>? apiResponse; + Failure? failure; + await apiClient.post( + GET_LIVECARE_CLINIC_TIMING, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + // onError!(error); + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final respObject = response['PatientER_GetClinicsServiceTimingsList']; + final liveCareScheduleObj = respObject.map((item) => LiveCareClinicScheduleResponse.fromJson(item as Map)).toList().cast(); + + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: liveCareScheduleObj, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future> addInsuranceUpdateRequestForLiveCare(String name, String mobileNumber, String fileNumber, + {Function(dynamic p1)? onSuccess, Function(String p1)? onError}) async { + Map mapDevice = { + "PatientName": name, + "MobileNumber": mobileNumber, + "FileNumber": fileNumber, + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + ADD_LIVECARE_INSURANCE_UPDATE_REQUEST, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + // onError!(error); + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: response, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } } diff --git a/lib/features/immediate_livecare/immediate_livecare_view_model.dart b/lib/features/immediate_livecare/immediate_livecare_view_model.dart index 46f5a652..84a79c02 100644 --- a/lib/features/immediate_livecare/immediate_livecare_view_model.dart +++ b/lib/features/immediate_livecare/immediate_livecare_view_model.dart @@ -11,6 +11,7 @@ import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/features/immediate_livecare/immediate_livecare_repo.dart'; +import 'package:hmg_patient_app_new/features/immediate_livecare/models/resp_models/get_livecare_clinic_schedule_response_model.dart'; import 'package:hmg_patient_app_new/features/immediate_livecare/models/resp_models/get_livecare_immediate_clinics_response_model.dart'; import 'package:hmg_patient_app_new/features/immediate_livecare/models/resp_models/get_livecare_immediate_fees_response_model.dart'; import 'package:hmg_patient_app_new/features/immediate_livecare/models/resp_models/get_patient_livecare_history_response_model.dart'; @@ -38,6 +39,7 @@ class ImmediateLiveCareViewModel extends ChangeNotifier { MyAppointmentsViewModel myAppointmentsViewModel; List immediateLiveCareClinicsList = []; + List mainLiveCareClinicList = []; bool isImmediateLiveCareClinicsLoading = false; int liveCareSelectedCallType = 0; // 1- Video, 2- Audio, 3- Phone late GetLiveCareClinicListResponseModel immediateLiveCareSelectedClinic; @@ -46,11 +48,13 @@ class ImmediateLiveCareViewModel extends ChangeNotifier { List patientLiveCareHistoryList = []; bool patientHasPendingLiveCareRequest = false; + List liveCareClinicScheduleList = []; + late AppState _appState; Duration countdownDuration = Duration(minutes: 1, seconds: 0); - late ValueNotifier durationNotifier; - late Timer timer; + ValueNotifier durationNotifier = ValueNotifier(Duration(minutes: 1, seconds: 0)); + Timer? timer; bool isShowNotEligibleDialog = false; String notEligibleErrorMsg = ""; @@ -58,6 +62,7 @@ class ImmediateLiveCareViewModel extends ChangeNotifier { initImmediateLiveCare() { _appState = getIt(); immediateLiveCareClinicsList = []; + mainLiveCareClinicList = []; isImmediateLiveCareClinicsLoading = true; liveCareSelectedCallType = 0; // 1- Video, 2- Audio, 3- Phone immediateLiveCareSelectedClinic = GetLiveCareClinicListResponseModel(); @@ -87,9 +92,11 @@ class ImmediateLiveCareViewModel extends ChangeNotifier { if (apiResponse.messageStatus == 2) { // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); } else if (apiResponse.messageStatus == 1) { - immediateLiveCareClinicsList = apiResponse.data!; + mainLiveCareClinicList = apiResponse.data!; - immediateLiveCareClinicsList.sort((a, b) => b.isOnline!.compareTo(a.isOnline!)); + mainLiveCareClinicList.sort((a, b) => b.isOnline!.compareTo(a.isOnline!)); + immediateLiveCareClinicsList.clear(); + immediateLiveCareClinicsList.addAll(mainLiveCareClinicList); isImmediateLiveCareClinicsLoading = false; notifyListeners(); @@ -100,10 +107,22 @@ class ImmediateLiveCareViewModel extends ChangeNotifier { }, ); } + void filterClinic(String query){ + if(query.isEmpty){ + immediateLiveCareClinicsList.clear(); + immediateLiveCareClinicsList.addAll(mainLiveCareClinicList); + }else{ + + // bool isArabic = getIt.get().isArabic(); + immediateLiveCareClinicsList = mainLiveCareClinicList.where((clinic) => clinic.serviceName!.toLowerCase().contains(query.toLowerCase()) || clinic.serviceNameN!.toLowerCase().contains(query.toLowerCase() + )).toList(); + } + notifyListeners(); + } Future getLiveCareImmediateAppointmentFees({Function(dynamic)? onSuccess, Function(String)? onError}) async { - final result = - await immediateLiveCareRepo.getLiveCareImmediateAppointmentFees(_appState.getAuthenticatedUser()!.age!, _appState.getAuthenticatedUser()!.gender!, immediateLiveCareSelectedClinic.serviceID!); + final result = await immediateLiveCareRepo.getLiveCareImmediateAppointmentFees( + _appState.getAuthenticatedUser()!.age ?? 22, _appState.getAuthenticatedUser()!.gender ?? 1, immediateLiveCareSelectedClinic.serviceID ?? 1); result.fold( (failure) async { @@ -226,35 +245,66 @@ class ImmediateLiveCareViewModel extends ChangeNotifier { ); } + Future addInsuranceUpdateRequestForLiveCare({Function(dynamic)? onSuccess, Function(String)? onError}) async { + final result = await immediateLiveCareRepo.addInsuranceUpdateRequestForLiveCare("${_appState.getAuthenticatedUser()?.firstName ?? ''} ${_appState.getAuthenticatedUser()?.lastName ?? ''}", + _appState.getAuthenticatedUser()!.mobileNumber ?? "", _appState.getAuthenticatedUser()!.patientId.toString() ?? ""); + + result.fold( + (failure) async { + onError!(failure.message); + }, + (apiResponse) { + if (apiResponse.messageStatus == 2) { + onError!(apiResponse.errorMessage ?? "Unknown error occurred"); + // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); + } else if (apiResponse.messageStatus == 1) { + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + } + Future getPatientLiveCareHistory({Function(dynamic)? onSuccess, Function(String)? onError}) async { patientLiveCareHistoryList = []; patientHasPendingLiveCareRequest = false; + timer?.cancel(); notifyListeners(); final result = await immediateLiveCareRepo.getPatientLiveCareHistory(); result.fold( (failure) async { - onError!(failure.message); + if (onError != null) { + onError(failure.message); + } }, (apiResponse) { if (apiResponse.messageStatus == 2) { - onError!(apiResponse.errorMessage ?? "Unknown error occurred"); + if (onError != null) { + onError(apiResponse.errorMessage ?? "Unknown error occurred"); + } // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); } else if (apiResponse.messageStatus == 1) { patientLiveCareHistoryList = apiResponse.data!; if (patientLiveCareHistoryList.isNotEmpty) { if (patientLiveCareHistoryList[0].callStatus! < 4) { - countdownDuration = Duration(seconds: 0); patientHasPendingLiveCareRequest = true; countdownDuration = Duration(minutes: patientLiveCareHistoryList.first.watingtimeInteger!, seconds: 0); - durationNotifier = ValueNotifier(countdownDuration); - startTimer(); + durationNotifier.value = countdownDuration; + // Start timer if not already running + if (timer == null || !timer!.isActive) { + startTimer(); + } } else { patientHasPendingLiveCareRequest = false; + stopTimer(); // Stop timer if call status >= 4 } } else { patientHasPendingLiveCareRequest = false; + stopTimer(); // Stop timer if no history } notifyListeners(); if (onSuccess != null) { @@ -265,19 +315,63 @@ class ImmediateLiveCareViewModel extends ChangeNotifier { ); } - void startTimer() { - timer = Timer.periodic(const Duration(seconds: 1), (_) => addTime()); + Future getLiveCareImmediateClinicSchedule({int? serviceID, Function(dynamic)? onSuccess, Function(String)? onError}) async { + liveCareClinicScheduleList.clear(); notifyListeners(); + + final result = + await immediateLiveCareRepo.getLiveCareImmediateClinicSchedule(_appState.getAuthenticatedUser()!.age!, _appState.getAuthenticatedUser()!.gender!, serviceID!); + + result.fold( + (failure) async => await errorHandlerService.handleError(failure: failure), + (apiResponse) { + if (apiResponse.messageStatus == 2) { + // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); + } else if (apiResponse.messageStatus == 1) { + liveCareClinicScheduleList = apiResponse.data!; + + // immediateLiveCareClinicsList.sort((a, b) => b.isOnline!.compareTo(a.isOnline!)); + + // isImmediateLiveCareClinicsLoading = false; + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + } + + void startTimer() { + // Only start timer if it's not already active + if (timer == null || !timer!.isActive) { + timer = Timer.periodic(const Duration(seconds: 1), (_) { + addTime(); + }); + } } void addTime() { - final seconds = durationNotifier.value.inSeconds - 1; - if (seconds < 0) { + final currentSeconds = durationNotifier.value.inSeconds; + + if (currentSeconds <= 0) { + // Timer has reached zero, stop it timer?.cancel(); - // Handle end of timer here - // showEndMessage(); + durationNotifier.value = Duration.zero; } else { - durationNotifier.value = Duration(seconds: seconds); + // Decrease by 1 second and continue + durationNotifier.value = Duration(seconds: currentSeconds - 1); } } + + void stopTimer() { + timer?.cancel(); + } + + @override + void dispose() { + timer?.cancel(); + durationNotifier.dispose(); + super.dispose(); + } } diff --git a/lib/features/immediate_livecare/models/resp_models/get_livecare_clinic_schedule_response_model.dart b/lib/features/immediate_livecare/models/resp_models/get_livecare_clinic_schedule_response_model.dart new file mode 100644 index 00000000..787167de --- /dev/null +++ b/lib/features/immediate_livecare/models/resp_models/get_livecare_clinic_schedule_response_model.dart @@ -0,0 +1,71 @@ +class LiveCareClinicScheduleResponse { + int? iD; + int? serviceID; + int? dayOfWeek; + String? dayOfWeekStr; + bool? isActive; + String? createdOn; + String? createdBy; + bool? projectOutSA; + String? dayOfWeekStrN; + List? shiftTimings; + + LiveCareClinicScheduleResponse({this.iD, this.serviceID, this.dayOfWeek, this.dayOfWeekStr, this.isActive, this.createdOn, this.createdBy, this.projectOutSA, this.dayOfWeekStrN, this.shiftTimings}); + + LiveCareClinicScheduleResponse.fromJson(Map json) { + iD = json['ID']; + serviceID = json['ServiceID']; + dayOfWeek = json['DayOfWeek']; + dayOfWeekStr = json['DayOfWeekStr']; + isActive = json['IsActive']; + createdOn = json['CreatedOn']; + createdBy = json['CreatedBy']; + projectOutSA = json['ProjectOutSA']; + dayOfWeekStrN = json['DayOfWeekStrN']; + if (json['ShiftTimings'] != null) { + shiftTimings = []; + json['ShiftTimings'].forEach((v) { + shiftTimings!.add(new ShiftTimings.fromJson(v)); + }); + } + } + + Map toJson() { + final Map data = new Map(); + data['ID'] = this.iD; + data['ServiceID'] = this.serviceID; + data['DayOfWeek'] = this.dayOfWeek; + data['DayOfWeekStr'] = this.dayOfWeekStr; + data['IsActive'] = this.isActive; + data['CreatedOn'] = this.createdOn; + data['CreatedBy'] = this.createdBy; + data['ProjectOutSA'] = this.projectOutSA; + data['DayOfWeekStrN'] = this.dayOfWeekStrN; + if (this.shiftTimings != null) { + data['ShiftTimings'] = this.shiftTimings!.map((v) => v.toJson()).toList(); + } + return data; + } +} + +class ShiftTimings { + String? endTime; + int? shiftID; + String? startTime; + + ShiftTimings({this.endTime, this.shiftID, this.startTime}); + + ShiftTimings.fromJson(Map json) { + endTime = json['EndTime']; + shiftID = json['ShiftID']; + startTime = json['StartTime']; + } + + Map toJson() { + final Map data = new Map(); + data['EndTime'] = this.endTime; + data['ShiftID'] = this.shiftID; + data['StartTime'] = this.startTime; + return data; + } +} diff --git a/lib/features/insurance/insurance_view_model.dart b/lib/features/insurance/insurance_view_model.dart index 515743c6..2422920a 100644 --- a/lib/features/insurance/insurance_view_model.dart +++ b/lib/features/insurance/insurance_view_model.dart @@ -13,6 +13,7 @@ class InsuranceViewModel extends ChangeNotifier { bool isInsuranceHistoryLoading = false; bool isInsuranceDetailsLoading = false; bool isInsuranceUpdateDetailsLoading = false; + bool isInsuranceExpiryBannerShown = false; bool isInsuranceDataToBeLoaded = true; bool isInsuranceApprovalsLoading = false; @@ -32,14 +33,10 @@ class InsuranceViewModel extends ChangeNotifier { InsuranceViewModel({required this.insuranceRepo, required this.errorHandlerService}); initInsuranceProvider() { - debugPrint("InsuranceViewModel: initInsuranceProvider called, isInsuranceDataToBeLoaded=$isInsuranceDataToBeLoaded"); if (isInsuranceDataToBeLoaded) { patientInsuranceList.clear(); isInsuranceLoading = true; - debugPrint("InsuranceViewModel: Calling getPatientInsuranceDetails API"); getPatientInsuranceDetails(); - } else { - debugPrint("InsuranceViewModel: Skipping API call, isInsuranceDataToBeLoaded is false"); } patientInsuranceCardHistoryList.clear(); isInsuranceHistoryLoading = true; @@ -49,6 +46,11 @@ class InsuranceViewModel extends ChangeNotifier { notifyListeners(); } + setIsInsuranceExpiryBannerShown(bool isInsuranceExpiryBannerShown) { + this.isInsuranceExpiryBannerShown = isInsuranceExpiryBannerShown; + notifyListeners(); + } + setIsInsuranceHistoryLoading(bool val) { isInsuranceHistoryLoading = val; notifyListeners(); @@ -76,30 +78,26 @@ class InsuranceViewModel extends ChangeNotifier { Future getPatientInsuranceDetails({Function(dynamic)? onSuccess, Function(String)? onError}) async { if (!isInsuranceDataToBeLoaded) { - debugPrint("InsuranceViewModel: getPatientInsuranceDetails - skipping, flag is false"); return; } - debugPrint("InsuranceViewModel: getPatientInsuranceDetails - making API call"); final result = await insuranceRepo.getPatientInsuranceDetails(); result.fold( // (failure) async => await errorHandlerService.handleError(failure: failure), (failure) async { - debugPrint("InsuranceViewModel: API call failed - ${failure.toString()}"); isInsuranceLoading = false; - isInsuranceDataToBeLoaded = false; + isInsuranceDataToBeLoaded = true; isInsuranceExpired = false; isInsuranceActive = false; + isInsuranceExpiryBannerShown = false; notifyListeners(); }, (apiResponse) { if (apiResponse.messageStatus == 2) { - debugPrint("InsuranceViewModel: API returned error status"); isInsuranceDataToBeLoaded = false; // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); } else if (apiResponse.messageStatus == 1) { - debugPrint("InsuranceViewModel: API success - received ${apiResponse.data?.length ?? 0} insurance records"); patientInsuranceList = apiResponse.data!; isInsuranceLoading = false; isInsuranceDataToBeLoaded = false; @@ -108,9 +106,10 @@ class InsuranceViewModel extends ChangeNotifier { isInsuranceExpired = DateTime.now().isAfter( DateUtil.convertStringToDate(patientInsuranceList.first.cardValidTo), ); - debugPrint("InsuranceViewModel: Insurance card expired: $isInsuranceExpired"); } + isInsuranceExpiryBannerShown = isInsuranceExpired; + isInsuranceActive = patientInsuranceList.first.isActive ?? false; // isInsuranceActive = true; @@ -148,6 +147,9 @@ class InsuranceViewModel extends ChangeNotifier { } Future getPatientInsuranceDetailsForUpdate(String patientID, String identificationNo, {Function(dynamic)? onSuccess, Function(String)? onError}) async { + patientInsuranceUpdateResponseModel = null; + notifyListeners(); + final result = await insuranceRepo.getPatientInsuranceDetailsForUpdate(patientId: patientID, identificationNo: identificationNo); result.fold( @@ -179,6 +181,7 @@ class InsuranceViewModel extends ChangeNotifier { notifyListeners(); }, (apiResponse) { + patientInsuranceApprovalsList =[]; if (apiResponse.messageStatus == 2) { // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); } else if (apiResponse.messageStatus == 1) { @@ -214,7 +217,7 @@ class InsuranceViewModel extends ChangeNotifier { (failure) async { notifyListeners(); if (onError != null) { - onError(failure.toString()); + onError(failure.message.toString()); } }, (apiResponse) { diff --git a/lib/features/lab/lab_repo.dart b/lib/features/lab/lab_repo.dart index 10839b12..94679047 100644 --- a/lib/features/lab/lab_repo.dart +++ b/lib/features/lab/lab_repo.dart @@ -26,9 +26,10 @@ abstract class LabRepo { Future>> getLabResultsByAppointmentNo({required num appointmentNo, required num projectID, required num clinicID}); - Future>> getPatientAiOverViewLabOrders(var payload); + Future>> getPatientAiOverViewLabOrders({required int langId, required dynamic payload}); - Future>> getPatientAiOverViewLabOrder(var payload); + Future>> getPatientAiOverViewLabOrder(var payloa); + Map> groupLabResultsByPackageName(List labResults); } class LabRepoImp implements LabRepo { @@ -37,6 +38,55 @@ class LabRepoImp implements LabRepo { LabRepoImp({required this.loggerService, required this.apiClient}); + /// Groups a list of LabResult objects by their PackageName + /// Returns a Map where the key is the PackageName and the value is a List of LabResult objects + /// Both the keys and the lists are sorted alphabetically + /// + /// Example usage: + /// ```dart + /// List labResults = [/* your lab results */]; + /// Map> groupedResults = labRepo.groupLabResultsByPackageName(labResults); + /// + /// // Access results by package name + /// groupedResults.forEach((packageName, results) { + /// print('Package: $packageName has ${results.length} results'); + /// }); + /// ``` + Map> groupLabResultsByPackageName(List labResults) { + Map> groupedResults = {}; + + // Group results by package name + for (var labResult in labResults) { + String packageName = labResult.PackageName ?? 'Unknown Package'; + + if (groupedResults.containsKey(packageName)) { + // Package name exists, add to existing list + groupedResults[packageName]!.add(labResult); + } else { + // Package name doesn't exist, create new key with new list + groupedResults[packageName] = [labResult]; + } + } + + // Sort each list alphabetically by description + groupedResults.forEach((key, list) { + list.sort((a, b) { + String descA = (a.description ?? '').toLowerCase(); + String descB = (b.description ?? '').toLowerCase(); + return descA.compareTo(descB); + }); + }); + + // Sort the map keys alphabetically and return a new sorted map + var sortedKeys = groupedResults.keys.toList()..sort((a, b) => a.toLowerCase().compareTo(b.toLowerCase())); + Map> sortedGroupedResults = {}; + for (var key in sortedKeys) { + sortedGroupedResults[key] = groupedResults[key]!; + } + + return sortedGroupedResults; + } + @override Future>>> getPatientLabOrders() async { Map mapDevice = {}; @@ -319,16 +369,24 @@ class LabRepoImp implements LabRepo { GenericApiModel? apiResponse; Failure? failure; await apiClient.post( - ApiConsts.getAiOverViewLabOrder, + ApiConsts.getAiOverViewLabOrderNew, body: labOrder, + isAllowAny: true, + isExternal: true, + apiHeaders: { + 'Accept-Language': 'en-US,en;q=0.7', + 'Content-Type': 'application/json', + 'X-API-KEY': '9d9d2ac4c1fc302299dbb0fbb1b7fea1', + 'accept': 'application/json', + }, onFailure: (error, statusCode, {messageStatus, failureType}) { failure = failureType; }, onSuccess: (response, statusCode, {messageStatus, errorMessage}) { try { var res; - if (response["analysis_result"] != null) { - res = response["analysis_result"]; + if (response != null) { + res = response; } apiResponse = GenericApiModel( messageStatus: messageStatus, @@ -350,21 +408,29 @@ class LabRepoImp implements LabRepo { } @override - Future>> getPatientAiOverViewLabOrders(var labOrder) async { + Future>> getPatientAiOverViewLabOrders({required int langId, required dynamic payload}) async { try { GenericApiModel? apiResponse; Failure? failure; await apiClient.post( - ApiConsts.getAiOverViewLabOrders, - body: {"lab_results": labOrder}, + ApiConsts.getAiOverViewLabOrdersNew, + isAllowAny: true, + isExternal: true, + apiHeaders: { + 'Accept-Language': 'en-US,en;q=0.7', + 'Content-Type': 'application/json', + 'X-API-KEY': '9d9d2ac4c1fc302299dbb0fbb1b7fea1', + 'accept': 'application/json', + }, + body: {"lab_results": payload, "language_id": langId}, onFailure: (error, statusCode, {messageStatus, failureType}) { failure = failureType; }, onSuccess: (response, statusCode, {messageStatus, errorMessage}) { try { var res; - if (response["lab_analysis_result"] != null) { - res = response["lab_analysis_result"]; + if (response != null) { + res = response; } apiResponse = GenericApiModel( messageStatus: messageStatus, diff --git a/lib/features/lab/lab_view_model.dart b/lib/features/lab/lab_view_model.dart index 07cbbde3..1c25ef9d 100644 --- a/lib/features/lab/lab_view_model.dart +++ b/lib/features/lab/lab_view_model.dart @@ -4,6 +4,7 @@ import 'dart:core'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/common_models/data_points.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; @@ -56,7 +57,11 @@ class LabViewModel extends ChangeNotifier { PatientLabOrdersResponseModel? currentlySelectedPatientOrder; - List mainLabResultsByHospitals = []; + // Flat list for UI compatibility + List mainLabResultsByHospitalsList = []; + + // Grouped map by package name for efficient lookups + Map> mainLabResultsByPackageName = {}; List mainLabResults = []; List mainGraphPoints = []; @@ -71,6 +76,9 @@ class LabViewModel extends ChangeNotifier { List uniqueTestsList = []; List indexedCharacterForUniqueTest = []; + List filteredUniqueTestsList = []; + List filteredIndexedCharacterForUniqueTest = []; + double maxY = 0.0; double minY = double.infinity; double maxX = double.infinity; @@ -84,6 +92,9 @@ class LabViewModel extends ChangeNotifier { LabOrderResponseByAi? labOrderResponseByAi; LabOrdersResponseByAi? labOrdersResponseByAi; + bool isLabAIAnalysisNeedsToBeShown = true; + bool isLabResultsHistoryShowMore = false; + LabViewModel({required this.labRepo, required this.errorHandlerService, required this.navigationService}); initLabProvider() { @@ -93,6 +104,8 @@ class LabViewModel extends ChangeNotifier { labOrderTests.clear(); isLabOrdersLoading = true; isLabResultsLoading = true; + isLabAIAnalysisNeedsToBeShown = true; + isLabResultsHistoryShowMore = false; patientLabOrdersByClinic.clear(); patientLabOrdersByHospital.clear(); patientLabOrdersViewList.clear(); @@ -106,6 +119,21 @@ class LabViewModel extends ChangeNotifier { notifyListeners(); } + closeAILabResultAnalysis() { + labOrderResponseByAi = null; + notifyListeners(); + } + + setIsLabAIAnalysisNeedsToBeShown(bool isLabAIAnalysisNeedsToBeShown) { + this.isLabAIAnalysisNeedsToBeShown = isLabAIAnalysisNeedsToBeShown; + notifyListeners(); + } + + setIsLabResultsHistoryShowMore() { + isLabResultsHistoryShowMore = !isLabResultsHistoryShowMore; + notifyListeners(); + } + void setIsSortByClinic(bool value) { isSortByClinic = value; patientLabOrdersViewList = isSortByClinic ? patientLabOrdersByClinic : patientLabOrdersByHospital; @@ -144,21 +172,26 @@ class LabViewModel extends ChangeNotifier { isLabOrdersLoading = false; isLabResultsLoading = false; - // --- Build groups by clinic and by hospital (projectName) --- - final clinicMap = >{}; - final hospitalMap = >{}; - for (var order in patientLabOrders) { - final clinicKey = (order.clinicDescription ?? 'Unknown').trim(); - clinicMap.putIfAbsent(clinicKey, () => []).add(order); - - final hospitalKey = (order.projectName ?? order.projectID ?? 'Unknown').toString().trim(); - hospitalMap.putIfAbsent(hospitalKey, () => []).add(order); + order.testDetails!.sort((a, b) => a.description!.compareTo(b.description!)); } - patientLabOrdersByClinic = clinicMap.values.toList(); - patientLabOrdersByHospital = hospitalMap.values.toList(); - patientLabOrdersViewList = isSortByClinic ? patientLabOrdersByClinic : patientLabOrdersByHospital; + // --- Build groups by clinic and by hospital (projectName) --- + // final clinicMap = >{}; + // final hospitalMap = >{}; + // + // for (var order in patientLabOrders) { + // final clinicKey = (order.clinicDescription ?? 'Unknown').trim(); + // clinicMap.putIfAbsent(clinicKey, () => []).add(order); + // + // final hospitalKey = (order.projectName ?? order.projectID ?? 'Unknown').toString().trim(); + // hospitalMap.putIfAbsent(hospitalKey, () => []).add(order); + // } + + // patientLabOrdersByClinic = clinicMap.values.toList(); + // patientLabOrdersByHospital = hospitalMap.values.toList(); + // patientLabOrdersViewList = isSortByClinic ? patientLabOrdersByClinic : patientLabOrdersByHospital; + // patientLabOrdersViewList = patientLabOrdersByClinic; filterSuggestions(); getUniqueTestDescription(); @@ -208,7 +241,8 @@ class LabViewModel extends ChangeNotifier { final clinicMap = >{}; final hospitalMap = >{}; if (query.isEmpty) { - // filteredLabOrders = List.from(patientLabOrders); // reset + filteredLabOrders = List.from(patientLabOrders); // reset + filteredUniqueTestsList = List.from(uniqueTestsList); for (var order in patientLabOrders) { final clinicKey = (order.clinicDescription ?? 'Unknown').trim(); clinicMap.putIfAbsent(clinicKey, () => []).add(order); @@ -224,7 +258,10 @@ class LabViewModel extends ChangeNotifier { final descriptions = order.testDetails?.map((d) => d.description?.toLowerCase()).toList() ?? []; return descriptions.any((desc) => desc != null && desc.contains(query.toLowerCase())); }).toList(); - // patientLabOrders = filteredLabOrders; + filteredUniqueTestsList = uniqueTestsList.where((test) { + final desc = test.description?.toLowerCase() ?? ''; + return desc.contains(query.toLowerCase()); + }).toList(); for (var order in filteredLabOrders) { final clinicKey = (order.clinicDescription ?? 'Unknown').trim(); clinicMap.putIfAbsent(clinicKey, () => []).add(order); @@ -236,6 +273,14 @@ class LabViewModel extends ChangeNotifier { patientLabOrdersByHospital = hospitalMap.values.toList(); patientLabOrdersViewList = isSortByClinic ? patientLabOrdersByClinic : patientLabOrdersByHospital; } + // Rebuild filtered indexed characters + filteredIndexedCharacterForUniqueTest = []; + for (var test in filteredUniqueTestsList) { + String label = test.description ?? ""; + if (label.isEmpty) continue; + if (filteredIndexedCharacterForUniqueTest.contains(label[0].toLowerCase())) continue; + filteredIndexedCharacterForUniqueTest.add(label[0].toLowerCase()); + } notifyListeners(); } @@ -270,6 +315,10 @@ class LabViewModel extends ChangeNotifier { for (var element in uniqueTests) { labOrderTests.add(element.description ?? ""); } + + // Initialize filtered lists with full data + filteredUniqueTestsList = List.from(uniqueTestsList); + filteredIndexedCharacterForUniqueTest = List.from(indexedCharacterForUniqueTest); } Future getLabResultsByAppointmentNo( @@ -338,7 +387,8 @@ class LabViewModel extends ChangeNotifier { Future getPatientLabResultByHospital(PatientLabOrdersResponseModel laborder) async { isLabResultByHospitalLoading = true; notifyListeners(); - mainLabResultsByHospitals.clear(); + mainLabResultsByHospitalsList.clear(); + mainLabResultsByPackageName.clear(); final result = await labRepo.getPatientLabResultsByHospitals(laborder, Utils.isVidaPlusProject(int.parse(laborder.projectID ?? "0"))); @@ -352,7 +402,9 @@ class LabViewModel extends ChangeNotifier { isLabResultByHospitalLoading = false; if (apiResponse.messageStatus == 2) { } else if (apiResponse.messageStatus == 1) { - mainLabResultsByHospitals = apiResponse.data ?? []; + mainLabResultsByHospitalsList = apiResponse.data ?? []; + // Group the results by package name for efficient lookups + mainLabResultsByPackageName = labRepo.groupLabResultsByPackageName(mainLabResultsByHospitalsList); notifyListeners(); } }, @@ -377,19 +429,23 @@ class LabViewModel extends ChangeNotifier { LoaderBottomSheet.hideLoader(); if (apiResponse.messageStatus == 2) { } else if (apiResponse.messageStatus == 1) { - var recentThree = sort(apiResponse.data!); - mainLabResults = recentThree; + var sortedResult = sort(apiResponse.data!); + var recentThree = sortedResult.take(3).toList(); + mainLabResults = sortedResult; double highRefrenceValue = double.negativeInfinity; String? flagForHighReferenceRange; double lowRefenceValue = double.infinity; String? flagForLowReferenceRange; - recentThree.reversed.forEach((element) { + sortedResult.toList().reversed.forEach((element) { try { + shouldShowGraph = isNumeric(element.resultValue!); + // if(isNumeric(element.resultValue!)){ var dateTime = DateUtil.convertStringToDate(element.verifiedOnDateTime!); var resultValue = double.parse(element.resultValue!); - var transformedValue = transformValueInRange(double.parse(element.resultValue!), element.calculatedResultFlag ?? ""); + // var transformedValue = transformValueInRange(double.parse(element.resultValue!), element.calculatedResultFlag ?? ""); + var transformedValue = resultValue; if (resultValue > maxY) { maxY = resultValue; maxX = maxY; @@ -397,13 +453,21 @@ class LabViewModel extends ChangeNotifier { if (resultValue < minY) { minY = resultValue; } - if (highRefrenceValue < double.parse(element.referenceHigh ?? "0.0")) { - highRefrenceValue = double.parse(element.referenceHigh ?? "0.0"); - flagForHighReferenceRange = element.calculatedResultFlag; + // if (highRefrenceValue < double.parse(element.referenceHigh ?? "0.0")) { + highRefrenceValue = double.parse(element.referenceHigh ?? "0.0"); + flagForHighReferenceRange = element.calculatedResultFlag; + // } + // if (lowRefenceValue > double.parse(element.referenceLow ?? "0.0")) { + lowRefenceValue = double.parse(element.referenceLow ?? "0.0"); + flagForLowReferenceRange = element.calculatedResultFlag; + // } + + if (double.parse(element.referenceHigh ?? "0.0") == 0) { + highRefrenceValue = double.negativeInfinity; } - if (lowRefenceValue > double.parse(element.referenceLow ?? "0.0")) { - lowRefenceValue = double.parse(element.referenceLow ?? "0.0"); - flagForLowReferenceRange = element.calculatedResultFlag; + + if (double.parse(element.referenceLow ?? "0.0") == 0) { + lowRefenceValue = double.negativeInfinity; } filteredGraphValues.add(DataPoint( @@ -421,23 +485,34 @@ class LabViewModel extends ChangeNotifier { highRefrenceValue = maxY; lowRefenceValue = minY; } - - if (minY > lowRefenceValue) { - minY = lowRefenceValue - 25; + // + if (lowRefenceValue != double.negativeInfinity && minY > lowRefenceValue) { + minY = lowRefenceValue - getInterval(); + } else if (highRefrenceValue != double.negativeInfinity && minY > highRefrenceValue) { + minY = highRefrenceValue - getInterval(); } this.flagForHighReferenceRange = flagForHighReferenceRange; this.flagForLowReferenceRange = flagForLowReferenceRange; highTransformedReferenceValue = double.parse(transformValueInRange(highRefrenceValue, flagForHighReferenceRange ?? "").toStringAsFixed(1)); lowTransformedReferenceValue = double.parse(transformValueInRange(lowRefenceValue, flagForLowReferenceRange ?? "").toStringAsFixed(1)); - this.highRefrenceValue = double.parse(highRefrenceValue.toStringAsFixed(1)); - this.lowRefenceValue = double.parse(lowRefenceValue.toStringAsFixed(1)); + this.highRefrenceValue = double.parse(highRefrenceValue.toStringAsFixed(2)); + this.lowRefenceValue = double.parse(lowRefenceValue.toStringAsFixed(2)); + if (highRefrenceValue != double.negativeInfinity && maxY < highRefrenceValue) { + maxY = highRefrenceValue + getInterval(); - if (maxY < highRefrenceValue) { - maxY = highRefrenceValue; + maxX = maxY; + } else if (lowRefenceValue != double.negativeInfinity && maxY < lowRefenceValue) { + maxY = lowRefenceValue + getInterval() / 2; + + maxX = maxY; } - maxY += 25; - minY -= 25; + + // if (maxY < highRefrenceValue) { + // minY = highRefrenceValue - getInterval(); + // } + // maxY += 25; + // minY -= 25; LabResult recentResult = recentThree.first; recentResult.uOM = unitOfMeasure; checkIfGraphShouldBeDisplayed(recentResult); @@ -455,6 +530,22 @@ class LabViewModel extends ChangeNotifier { ); } + bool isNumeric(String s) { + return num.tryParse(s) != null; + } + + num getInterval() { + // return .1; + var maxX = maxY; + if (maxX < 1) return .2; + if (maxX >= 1.0 && maxX < 5.0) return .3; + if (maxX >= 5.0 && maxX < 10.0) return 1.5; + if (maxX >= 10.0 && maxX < 50.0) return 2.5; + if (maxX >= 50.0 && maxX < 100.0) return 5; + if (maxX >= 100.0 && maxX < 200.0) return 10; + return 15; + } + void checkIfGraphShouldBeDisplayed(LabResult recentResult) { shouldShowGraph = recentResult.checkIfGraphShouldBeDisplayed(); isGraphVisible = shouldShowGraph; @@ -530,7 +621,7 @@ class LabViewModel extends ChangeNotifier { rangeStart = 40.0; rangeEnd = 59.0; break; - // throw ArgumentError('Invalid flag: $flag'); + // throw ArgumentError('Invalid flag: $flag'); } // Clamp input value to 0-100 and map it to the range bounds @@ -576,7 +667,8 @@ class LabViewModel extends ChangeNotifier { try { var dateTime = DateUtil.convertStringToDate(element.verifiedOnDateTime!); var resultValue = double.parse(element.resultValue!); - var transformedValue = transformValueInRange(double.parse(element.resultValue!), element.calculatedResultFlag ?? ""); + // var transformedValue = transformValueInRange(double.parse(element.resultValue!), element.calculatedResultFlag ?? ""); + var transformedValue = double.parse(element.resultValue!); if (resultValue > maxY) { maxY = resultValue; } @@ -757,16 +849,42 @@ class LabViewModel extends ChangeNotifier { notifyListeners(); } - Future getAiOverviewLabOrders({required PatientLabOrdersResponseModel labOrder, required String loadingText}) async { - // LoadingUtils.showFullScreenLoader(loadingText: "Loading and analysing your data,\nPlease be patient and let the AI do the magic. \nPlease be patient, This might take some time."); - LoadingUtils.showFullScreenLoader(loadingText: loadingText); + // /// Finds a matching LabResult from the grouped map by package name + // /// Searches through all packages to find a result matching the test code or description + // LabResult? _findMatchingLabResult(TestDetails testDetail) { + // // Search through all packages in the grouped map + // for (var packageResults in mainLabResultsByPackageName.values) { + // try { + // var matchingResult = packageResults.firstWhere( + // (labResult) => labResult.testCode == testDetail.testCode || labResult.description == testDetail.description, + // ); + // return matchingResult; + // } catch (e) { + // // Continue searching in other packages + // continue; + // } + // } + // // Return null if no match found + // return LabResult(); + // } + + Future getAiOverviewLabOrders({required int langId, required PatientLabOrdersResponseModel labOrder, required String loadingText}) async { + isLabAIAnalysisNeedsToBeShown = true; + notifyListeners(); + + LoaderBottomSheet.showLoader( + loadingText: loadingText, + showCloseButton: true, + onCloseTap: () { + setIsLabAIAnalysisNeedsToBeShown(false); + }); List> results = []; Map orderData = {"order_date": labOrder.orderDate ?? "", "clinic": labOrder.clinicDescription ?? "", "doctor": labOrder.doctorName ?? "", "results": []}; List> testResults = []; if (labOrder.testDetails != null && labOrder.testDetails!.isNotEmpty) { for (var testDetail in labOrder.testDetails!) { LabResult? matchingResult = - mainLabResultsByHospitals.firstWhere((labResult) => labResult.testCode == testDetail.testCode || labResult.description == testDetail.description, orElse: () => LabResult()); + mainLabResultsByHospitalsList.firstWhere((labResult) => labResult.testCode == testDetail.testCode || labResult.description == testDetail.description, orElse: () => LabResult()); testResults.add({ "test_name": testDetail.description ?? "", "result_value": matchingResult.resultValue ?? "", @@ -778,29 +896,42 @@ class LabViewModel extends ChangeNotifier { } orderData["results"] = testResults; results.add(orderData); - final result = await labRepo.getPatientAiOverViewLabOrders(results); + + final result = await labRepo.getPatientAiOverViewLabOrders(payload: results, langId: langId); result.fold( (failure) async { - LoadingUtils.hideFullScreenLoader(); - await errorHandlerService.handleError(failure: failure); + LoaderBottomSheet.hideLoader(); + if (isLabAIAnalysisNeedsToBeShown) { + await errorHandlerService.handleError(failure: failure); + } }, (apiResponse) { - LoadingUtils.hideFullScreenLoader(); + LoaderBottomSheet.hideLoader(); if (apiResponse.messageStatus == 2) { } else if (apiResponse.messageStatus == 1) { - labOrdersResponseByAi = apiResponse.data; - navigationService.push( - MaterialPageRoute(builder: (_) => LabAiAnalysisDetailedPage()), - ); + if (isLabAIAnalysisNeedsToBeShown) { + labOrdersResponseByAi = apiResponse.data; + navigationService.push( + CustomPageRoute( + direction: AxisDirection.down, + page: LabAiAnalysisDetailedPage(), + ), + ); + } } }, ); - LoadingUtils.hideFullScreenLoader(); + // LoadingUtils.hideFullScreenLoader(); } - Future getAiOverviewSingleLabResult({required String langId, required LabResult recentLabResult, required String loadingText}) async { - LoaderBottomSheet.showLoader(loadingText: loadingText); + Future getAiOverviewSingleLabResult({required int langId, required LabResult recentLabResult, required String loadingText}) async { + LoaderBottomSheet.showLoader( + loadingText: loadingText, + showCloseButton: true, + onCloseTap: () { + setIsLabAIAnalysisNeedsToBeShown(false); + }); List> results = []; results.add({ "Description": recentLabResult.description ?? '', @@ -810,19 +941,24 @@ class LabViewModel extends ChangeNotifier { "ReferanceRange": recentLabResult.referanceRange ?? '', }); - var payload = {"patient_id": currentlySelectedPatientOrder!.patientID, "language_id": langId, "lab_results": results}; + // var payload = {"patient_id": currentlySelectedPatientOrder!.patientID, "language_id": langId, "lab_results": results}; + var payload = {"patient_id": getIt.get().getAuthenticatedUser()!.patientId, "language_id": langId, "lab_results": results}; final result = await labRepo.getPatientAiOverViewLabOrder(payload); result.fold( (failure) async { LoaderBottomSheet.hideLoader(); - await errorHandlerService.handleError(failure: failure); + if (isLabAIAnalysisNeedsToBeShown) { + await errorHandlerService.handleError(failure: failure); + } }, (apiResponse) { LoaderBottomSheet.hideLoader(); if (apiResponse.messageStatus == 2) { } else if (apiResponse.messageStatus == 1) { - labOrderResponseByAi = apiResponse.data; - notifyListeners(); + if (isLabAIAnalysisNeedsToBeShown) { + labOrderResponseByAi = apiResponse.data; + notifyListeners(); + } } }, ); diff --git a/lib/features/lab/models/resp_models/lab_result.dart b/lib/features/lab/models/resp_models/lab_result.dart index 2808dce9..78be004a 100644 --- a/lib/features/lab/models/resp_models/lab_result.dart +++ b/lib/features/lab/models/resp_models/lab_result.dart @@ -28,6 +28,7 @@ class LabResult { String? packageShortDescription; int? testId; String? testShortDescription; + String? PackageName; LabResult( {this.description, @@ -56,6 +57,7 @@ class LabResult { this.referenceLow, this.testId, this.testShortDescription, + this.PackageName }); LabResult.fromJson(Map json) { @@ -88,6 +90,7 @@ class LabResult { resultTypeID = json['ResultTypeID']; testId = json['TestID']; testShortDescription = json['TestShortDescription']; + PackageName = json['PackageName']; } Map toJson() { @@ -118,6 +121,7 @@ class LabResult { data['ReferenceLow'] = this.referenceLow; data['TestID'] = this.testId; data['TestShortDescription'] = this.testShortDescription; + data['PackageName'] = this.PackageName; return data; } diff --git a/lib/features/location/location_view_model.dart b/lib/features/location/location_view_model.dart index 5b0eef6d..460eb0f1 100644 --- a/lib/features/location/location_view_model.dart +++ b/lib/features/location/location_view_model.dart @@ -18,7 +18,6 @@ class LocationViewModel extends ChangeNotifier { final ErrorHandlerService errorHandlerService; LocationViewModel({required this.locationRepo, required this.errorHandlerService}) { - placeValueInController(); } List predictions = []; @@ -31,7 +30,9 @@ class LocationViewModel extends ChangeNotifier { Completer? gmsController; Completer? hmsController; - + get isGMSAvailable { + return getIt.get().isGMSAvailable; + } HMSCameraServices.CameraPosition getHMSLocation() { return HMSCameraServices.CameraPosition(target: HMSCameraServices.LatLng(getIt().userLat, getIt().userLong), zoom: 18); } @@ -43,7 +44,7 @@ class LocationViewModel extends ChangeNotifier { } void placeValueInController() async { - if (await getIt().isGMSAvailable) { + if (isGMSAvailable) { gmsController = Completer(); } else { hmsController = Completer(); diff --git a/lib/features/medical_file/medical_file_view_model.dart b/lib/features/medical_file/medical_file_view_model.dart index b93bb62d..6fb8c8a2 100644 --- a/lib/features/medical_file/medical_file_view_model.dart +++ b/lib/features/medical_file/medical_file_view_model.dart @@ -29,7 +29,11 @@ class MedicalFileViewModel extends ChangeNotifier { bool isPatientSickLeavePDFLoading = false; bool isPatientMedicalReportsListLoading = false; bool isPatientAllergiesListLoading = false; + bool _isFamilyFilesLoading = false; + bool get isFamilyFilesLoading => _isFamilyFilesLoading; + + set setIsFamilyFilesLoading(bool value) => _isFamilyFilesLoading = value; MedicalFileRepo medicalFileRepo; ErrorHandlerService errorHandlerService; @@ -41,7 +45,8 @@ class MedicalFileViewModel extends ChangeNotifier { List patientSickLeavesViewList = []; bool isSickLeavesSortByClinic = true; - // bool isSickLeavesDataNeedsReloading = true; + + bool isSickLeavesDataNeedsReloading = true; List patientAllergiesList = []; @@ -164,15 +169,15 @@ class MedicalFileViewModel extends ChangeNotifier { } setIsPatientSickLeaveListLoading(bool val) { - // if (val && isSickLeavesDataNeedsReloading) { + if (val && isSickLeavesDataNeedsReloading) { patientSickLeaveList.clear(); patientSickLeavesByClinic.clear(); - patientSickLeavesByHospital.clear(); - patientSickLeavesViewList.clear(); - patientSickLeavePDFBase64 = ""; - isSickLeavesSortByClinic = true; - isPatientSickLeaveListLoading = val; - // } + patientSickLeavesByHospital.clear(); + patientSickLeavesViewList.clear(); + patientSickLeavePDFBase64 = ""; + isSickLeavesSortByClinic = true; + isPatientSickLeaveListLoading = val; + } notifyListeners(); } @@ -215,27 +220,40 @@ class MedicalFileViewModel extends ChangeNotifier { final result = await medicalFileRepo.getPatientVaccinesList(); result.fold( - // (failure) async => await errorHandlerService.handleError( - // failure: failure, - // onOkPressed: () { - // onError!(failure.message); - // }, - // ), (failure) async { - // onError!(failure.message); + print("❌ Vaccine API Failure: ${failure.message}"); isPatientVaccineListLoading = false; notifyListeners(); + if (onError != null) { + onError(failure.message); + } }, (apiResponse) { + print("📦 Vaccine API Response - Status: ${apiResponse.messageStatus}, Data: ${apiResponse.data}"); + if (apiResponse.messageStatus == 2) { - // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); + print("⚠️ Vaccine API Error: ${apiResponse.errorMessage}"); + isPatientVaccineListLoading = false; + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? "Unknown error"); + } } else if (apiResponse.messageStatus == 1) { - patientVaccineList = apiResponse.data!; + if (apiResponse.data != null) { + patientVaccineList = apiResponse.data!; + print("✅ Vaccine data loaded: ${patientVaccineList.length} items"); + } else { + print("⚠️ Vaccine API returned success but data is null"); + } isPatientVaccineListLoading = false; notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); } + } else { + print("⚠️ Unexpected messageStatus: ${apiResponse.messageStatus}"); + isPatientVaccineListLoading = false; + notifyListeners(); } }, ); @@ -268,9 +286,9 @@ class MedicalFileViewModel extends ChangeNotifier { } Future getPatientSickLeaveList({Function(dynamic)? onSuccess, Function(String)? onError}) async { - // if (!isSickLeavesDataNeedsReloading) { - // return; - // } + if (!isSickLeavesDataNeedsReloading) { + return; + } patientSickLeaveList.clear(); notifyListeners(); @@ -286,6 +304,7 @@ class MedicalFileViewModel extends ChangeNotifier { // ), (failure) async { isPatientSickLeaveListLoading = false; + isSickLeavesDataNeedsReloading = true; notifyListeners(); }, (apiResponse) { @@ -316,7 +335,7 @@ class MedicalFileViewModel extends ChangeNotifier { } } patientSickLeavesViewList = patientSickLeavesByClinic; - // isSickLeavesDataNeedsReloading = false; + isSickLeavesDataNeedsReloading = false; notifyListeners(); if (onSuccess != null) { @@ -416,21 +435,42 @@ class MedicalFileViewModel extends ChangeNotifier { } Future getFamilyFiles({int? status, Function(dynamic)? onSuccess, Function(String)? onError}) async { + + setIsFamilyFilesLoading = true; + + final shouldShowLoader = patientFamilyFiles.isEmpty; + if (shouldShowLoader) { + LoaderBottomSheet.showLoader(); + } + final result = await medicalFileRepo.getPatientFamilyFiles(status, _appState.getSuperUserID != null ? _appState.getSuperUserID! : _appState.getAuthenticatedUser()!.patientId!); result.fold( - (failure) async => await errorHandlerService.handleError( - failure: failure, - onOkPressed: () { - onError!(failure.message); - }, - ), + (failure) async { + + setIsFamilyFilesLoading = false; + + await errorHandlerService.handleError( + failure: failure, + onOkPressed: () { + if (shouldShowLoader) { + LoaderBottomSheet.hideLoader(); + } + onError!(failure.message); + }, + ); + }, (apiResponse) { if (apiResponse.messageStatus == 2) { + + setIsFamilyFilesLoading = false; + // _dialogService.showErrorBottomSheet(message: apiResponse.errorMessage!, onOkPressed: () {}); + if (shouldShowLoader) { + LoaderBottomSheet.hideLoader(); + } } else if (apiResponse.messageStatus == 1) { if (apiResponse.data != null) { - // Add current user as the first active family file final currentUser = _appState.getAuthenticatedUser()!; final currentUserFamilyFile = FamilyFileResponseModelLists( patientId: currentUser.patientId, @@ -443,6 +483,7 @@ class MedicalFileViewModel extends ChangeNotifier { patientIdenficationNumber: currentUser.patientIdentificationNo, emaiLAddress: currentUser.emailAddress, genderDescription: currentUser.genderDescription, + patientImageData: _appState.getProfileImageData, // Set main user's profile image ); // Clear and start fresh with current user @@ -486,6 +527,7 @@ class MedicalFileViewModel extends ChangeNotifier { genderDescription: element.genderDescription, genderImage: element.genderImage, emaiLAddress: element.emaiLAddress, + patientImageData: element.patientImageData, // Include profile image data ); if (isPending) { @@ -508,6 +550,12 @@ class MedicalFileViewModel extends ChangeNotifier { pendingFamilyFiles = newPendingFamilyFiles; } + // Clear loading state on success + setIsFamilyFilesLoading = false; + + if (shouldShowLoader) { + LoaderBottomSheet.hideLoader(); + } notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); @@ -645,13 +693,10 @@ class MedicalFileViewModel extends ChangeNotifier { } Future handleFamilyFileRequestOTPVerification() async { - LoaderBottomSheet.showLoader(); if (!_appState.getIsChildLoggedIn) { await getFamilyFiles(status: 0); await getAllPendingRecordsByResponseId(); } - - LoaderBottomSheet.hideLoader(); } Future removeFileFromFamilyMembers({int? id}) async { @@ -761,4 +806,46 @@ class MedicalFileViewModel extends ChangeNotifier { }, ); } + + /// Update family member's profile image in cached family files + void updateFamilyMemberProfileImage(int patientID, String imageData) { + try { + bool updated = false; + + // Update in patientFamilyFiles list + for (var i = 0; i < patientFamilyFiles.length; i++) { + if (patientFamilyFiles[i].patientId == patientID || + patientFamilyFiles[i].responseId == patientID) { + patientFamilyFiles[i].patientImageData = imageData; + updated = true; + print("✅ Updated profile image for family member in patientFamilyFiles (index: $i, patientID: $patientID)"); + break; + } + } + + // Update in pendingFamilyFiles list if exists + for (var i = 0; i < pendingFamilyFiles.length; i++) { + if (pendingFamilyFiles[i].patientId == patientID || + pendingFamilyFiles[i].responseId == patientID) { + pendingFamilyFiles[i].patientImageData = imageData; + print("✅ Updated profile image for pending family member (index: $i, patientID: $patientID)"); + break; + } + } + + if (updated) { + // Create new list instances to trigger Selector rebuild + patientFamilyFiles = List.from(patientFamilyFiles); + pendingFamilyFiles = List.from(pendingFamilyFiles); + + // Notify listeners to update UI + notifyListeners(); + print("🔄 Created new list instances and notified listeners"); + } else { + print("⚠️ Family member not found in cache for patientID: $patientID"); + } + } catch (e) { + print("❌ Error updating family member profile image in cache: $e"); + } + } } diff --git a/lib/features/medical_file/models/family_file_response_model.dart b/lib/features/medical_file/models/family_file_response_model.dart index f4aa557d..59aa2bd2 100644 --- a/lib/features/medical_file/models/family_file_response_model.dart +++ b/lib/features/medical_file/models/family_file_response_model.dart @@ -25,6 +25,7 @@ class FamilyFileResponseModelLists { String? statusDescription; bool? isSuperUser = false; bool? isRequestFromMySide; + String? patientImageData; FamilyFileResponseModelLists( {this.id, @@ -50,7 +51,8 @@ class FamilyFileResponseModelLists { this.patientName, this.statusDescription, this.isSuperUser, - this.isRequestFromMySide}); + this.isRequestFromMySide, + this.patientImageData}); factory FamilyFileResponseModelLists.fromRawJson(String str) => FamilyFileResponseModelLists.fromJson(json.decode(str)); @@ -81,6 +83,7 @@ class FamilyFileResponseModelLists { statusDescription: json["StatusDescription"], isSuperUser: json["isSuperUser"] ?? false, isRequestFromMySide: json["isRequestFromMySide"] ?? false, + patientImageData: json["PatientImageData"], ); Map toJson() => { @@ -108,5 +111,6 @@ class FamilyFileResponseModelLists { "StatusDescription": statusDescription, "isSuperUser": isSuperUser, "isRequestFromMySide": isRequestFromMySide, + "PatientImageData": patientImageData, }; } diff --git a/lib/features/medical_file/models/patient_vaccine_response_model.dart b/lib/features/medical_file/models/patient_vaccine_response_model.dart index ff27b063..255a7198 100644 --- a/lib/features/medical_file/models/patient_vaccine_response_model.dart +++ b/lib/features/medical_file/models/patient_vaccine_response_model.dart @@ -1,160 +1,169 @@ +import 'dart:convert'; + class PatientVaccineResponseModel { - String? setupID; - int? projectID; - int? patientID; + String? setupId; + int? projectId; + int? patientId; int? invoiceNo; - String? procedureID; + String? procedureId; String? vaccineName; - Null? vaccineNameN; + dynamic vaccineNameN; String? invoiceDate; - int? doctorID; - int? clinicID; + int? doctorId; + int? clinicId; String? firstName; String? middleName; String? lastName; - Null? firstNameN; - Null? middleNameN; - Null? lastNameN; + dynamic firstNameN; + dynamic middleNameN; + dynamic lastNameN; String? dateofBirth; int? actualDoctorRate; String? age; String? clinicName; - Null? decimalDoctorRate; - Null? doctorImageURL; + double? decimalDoctorRate; + dynamic doctorImageUrl; String? doctorName; int? doctorRate; - int? doctorStarsRate; + double? doctorStarsRate; String? doctorTitle; int? gender; - Null? genderDescription; - Null? invoiceNoVP; + dynamic genderDescription; + dynamic invoiceNoVp; bool? isActiveDoctorProfile; bool? isDoctorAllowVedioCall; bool? isExecludeDoctor; int? noOfPatientsRate; String? patientName; String? projectName; - String? qR; + String? qr; + List? speciality; String? vaccinationDate; - PatientVaccineResponseModel( - {this.setupID, - this.projectID, - this.patientID, - this.invoiceNo, - this.procedureID, - this.vaccineName, - this.vaccineNameN, - this.invoiceDate, - this.doctorID, - this.clinicID, - this.firstName, - this.middleName, - this.lastName, - this.firstNameN, - this.middleNameN, - this.lastNameN, - this.dateofBirth, - this.actualDoctorRate, - this.age, - this.clinicName, - this.decimalDoctorRate, - this.doctorImageURL, - this.doctorName, - this.doctorRate, - this.doctorStarsRate, - this.doctorTitle, - this.gender, - this.genderDescription, - this.invoiceNoVP, - this.isActiveDoctorProfile, - this.isDoctorAllowVedioCall, - this.isExecludeDoctor, - this.noOfPatientsRate, - this.patientName, - this.projectName, - this.qR, - this.vaccinationDate}); + PatientVaccineResponseModel({ + this.setupId, + this.projectId, + this.patientId, + this.invoiceNo, + this.procedureId, + this.vaccineName, + this.vaccineNameN, + this.invoiceDate, + this.doctorId, + this.clinicId, + this.firstName, + this.middleName, + this.lastName, + this.firstNameN, + this.middleNameN, + this.lastNameN, + this.dateofBirth, + this.actualDoctorRate, + this.age, + this.clinicName, + this.decimalDoctorRate, + this.doctorImageUrl, + this.doctorName, + this.doctorRate, + this.doctorStarsRate, + this.doctorTitle, + this.gender, + this.genderDescription, + this.invoiceNoVp, + this.isActiveDoctorProfile, + this.isDoctorAllowVedioCall, + this.isExecludeDoctor, + this.noOfPatientsRate, + this.patientName, + this.projectName, + this.qr, + this.speciality, + this.vaccinationDate, + }); + + factory PatientVaccineResponseModel.fromRawJson(String str) => PatientVaccineResponseModel.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); - PatientVaccineResponseModel.fromJson(Map json) { - setupID = json['SetupID']; - projectID = json['ProjectID']; - patientID = json['PatientID']; - invoiceNo = json['InvoiceNo']; - procedureID = json['ProcedureID']; - vaccineName = json['VaccineName']; - vaccineNameN = json['VaccineNameN']; - invoiceDate = json['InvoiceDate']; - doctorID = json['DoctorID']; - clinicID = json['ClinicID']; - firstName = json['FirstName']; - middleName = json['MiddleName']; - lastName = json['LastName']; - firstNameN = json['FirstNameN']; - middleNameN = json['MiddleNameN']; - lastNameN = json['LastNameN']; - dateofBirth = json['DateofBirth']; - actualDoctorRate = json['ActualDoctorRate']; - age = json['Age']; - clinicName = json['ClinicName']; - decimalDoctorRate = json['DecimalDoctorRate']; - doctorImageURL = json['DoctorImageURL']; - doctorName = json['DoctorName']; - doctorRate = json['DoctorRate']; - doctorStarsRate = json['DoctorStarsRate']; - doctorTitle = json['DoctorTitle']; - gender = json['Gender']; - genderDescription = json['GenderDescription']; - invoiceNoVP = json['InvoiceNo_VP']; - isActiveDoctorProfile = json['IsActiveDoctorProfile']; - isDoctorAllowVedioCall = json['IsDoctorAllowVedioCall']; - isExecludeDoctor = json['IsExecludeDoctor']; - noOfPatientsRate = json['NoOfPatientsRate']; - patientName = json['PatientName']; - projectName = json['ProjectName']; - qR = json['QR']; - vaccinationDate = json['VaccinationDate']; - } + factory PatientVaccineResponseModel.fromJson(Map json) => PatientVaccineResponseModel( + setupId: json["SetupID"], + projectId: json["ProjectID"], + patientId: json["PatientID"], + invoiceNo: json["InvoiceNo"], + procedureId: json["ProcedureID"], + vaccineName: json["VaccineName"], + vaccineNameN: json["VaccineNameN"], + invoiceDate: json["InvoiceDate"], + doctorId: json["DoctorID"], + clinicId: json["ClinicID"], + firstName: json["FirstName"], + middleName: json["MiddleName"], + lastName: json["LastName"], + firstNameN: json["FirstNameN"], + middleNameN: json["MiddleNameN"], + lastNameN: json["LastNameN"], + dateofBirth: json["DateofBirth"], + actualDoctorRate: json["ActualDoctorRate"], + age: json["Age"], + clinicName: json["ClinicName"], + decimalDoctorRate: json["DecimalDoctorRate"]?.toDouble(), + doctorImageUrl: json["DoctorImageURL"], + doctorName: json["DoctorName"], + doctorRate: json["DoctorRate"], + doctorStarsRate: json["DoctorStarsRate"]?.toDouble(), + doctorTitle: json["DoctorTitle"], + gender: json["Gender"], + genderDescription: json["GenderDescription"], + invoiceNoVp: json["InvoiceNo_VP"], + isActiveDoctorProfile: json["IsActiveDoctorProfile"], + isDoctorAllowVedioCall: json["IsDoctorAllowVedioCall"], + isExecludeDoctor: json["IsExecludeDoctor"], + noOfPatientsRate: json["NoOfPatientsRate"], + patientName: json["PatientName"], + projectName: json["ProjectName"], + qr: json["QR"], + speciality: json["Speciality"] == null ? [] : List.from(json["Speciality"]!.map((x) => x)), + vaccinationDate: json["VaccinationDate"], + ); - Map toJson() { - final Map data = new Map(); - data['SetupID'] = this.setupID; - data['ProjectID'] = this.projectID; - data['PatientID'] = this.patientID; - data['InvoiceNo'] = this.invoiceNo; - data['ProcedureID'] = this.procedureID; - data['VaccineName'] = this.vaccineName; - data['VaccineNameN'] = this.vaccineNameN; - data['InvoiceDate'] = this.invoiceDate; - data['DoctorID'] = this.doctorID; - data['ClinicID'] = this.clinicID; - data['FirstName'] = this.firstName; - data['MiddleName'] = this.middleName; - data['LastName'] = this.lastName; - data['FirstNameN'] = this.firstNameN; - data['MiddleNameN'] = this.middleNameN; - data['LastNameN'] = this.lastNameN; - data['DateofBirth'] = this.dateofBirth; - data['ActualDoctorRate'] = this.actualDoctorRate; - data['Age'] = this.age; - data['ClinicName'] = this.clinicName; - data['DecimalDoctorRate'] = this.decimalDoctorRate; - data['DoctorImageURL'] = this.doctorImageURL; - data['DoctorName'] = this.doctorName; - data['DoctorRate'] = this.doctorRate; - data['DoctorStarsRate'] = this.doctorStarsRate; - data['DoctorTitle'] = this.doctorTitle; - data['Gender'] = this.gender; - data['GenderDescription'] = this.genderDescription; - data['InvoiceNo_VP'] = this.invoiceNoVP; - data['IsActiveDoctorProfile'] = this.isActiveDoctorProfile; - data['IsDoctorAllowVedioCall'] = this.isDoctorAllowVedioCall; - data['IsExecludeDoctor'] = this.isExecludeDoctor; - data['NoOfPatientsRate'] = this.noOfPatientsRate; - data['PatientName'] = this.patientName; - data['ProjectName'] = this.projectName; - data['QR'] = this.qR; - data['VaccinationDate'] = this.vaccinationDate; - return data; - } + Map toJson() => { + "SetupID": setupId, + "ProjectID": projectId, + "PatientID": patientId, + "InvoiceNo": invoiceNo, + "ProcedureID": procedureId, + "VaccineName": vaccineName, + "VaccineNameN": vaccineNameN, + "InvoiceDate": invoiceDate, + "DoctorID": doctorId, + "ClinicID": clinicId, + "FirstName": firstName, + "MiddleName": middleName, + "LastName": lastName, + "FirstNameN": firstNameN, + "MiddleNameN": middleNameN, + "LastNameN": lastNameN, + "DateofBirth": dateofBirth, + "ActualDoctorRate": actualDoctorRate, + "Age": age, + "ClinicName": clinicName, + "DecimalDoctorRate": decimalDoctorRate, + "DoctorImageURL": doctorImageUrl, + "DoctorName": doctorName, + "DoctorRate": doctorRate, + "DoctorStarsRate": doctorStarsRate, + "DoctorTitle": doctorTitle, + "Gender": gender, + "GenderDescription": genderDescription, + "InvoiceNo_VP": invoiceNoVp, + "IsActiveDoctorProfile": isActiveDoctorProfile, + "IsDoctorAllowVedioCall": isDoctorAllowVedioCall, + "IsExecludeDoctor": isExecludeDoctor, + "NoOfPatientsRate": noOfPatientsRate, + "PatientName": patientName, + "ProjectName": projectName, + "QR": qr, + "Speciality": speciality == null ? [] : List.from(speciality!.map((x) => x)), + "VaccinationDate": vaccinationDate, + }; } diff --git a/lib/features/my_appointments/appointment_rating_view_model.dart b/lib/features/my_appointments/appointment_rating_view_model.dart index 6dd41ff5..cef25419 100644 --- a/lib/features/my_appointments/appointment_rating_view_model.dart +++ b/lib/features/my_appointments/appointment_rating_view_model.dart @@ -25,6 +25,7 @@ class AppointmentRatingViewModel extends ChangeNotifier { bool isRateClinic = false; Future getLastRatingAppointment({Function(dynamic)? onSuccess, Function(String)? onError}) async { + appointmentRatedList.clear(); final result = await myAppointmentsRepo.getLastRatingAppointment(); result.fold( diff --git a/lib/features/my_appointments/appointment_via_region_viewmodel.dart b/lib/features/my_appointments/appointment_via_region_viewmodel.dart index c5dcaf62..1144be82 100644 --- a/lib/features/my_appointments/appointment_via_region_viewmodel.dart +++ b/lib/features/my_appointments/appointment_via_region_viewmodel.dart @@ -43,9 +43,20 @@ class AppointmentViaRegionViewmodel extends ChangeNotifier { int hmgCount = 0; int hmcCount = 0; RegionBottomSheetType regionBottomSheetType = RegionBottomSheetType.FOR_REGION; + bool sortByLocation = false; AppointmentViaRegionViewmodel({required this.navigationService,required this.appState}); + void initSortByLocation() { + sortByLocation = (appState.userLat != 0.0) && (appState.userLong != 0.0); + notifyListeners(); + } + + void setSortByLocation(bool value) { + sortByLocation = value; + notifyListeners(); + } + void setSelectedRegionId(String? regionId) { selectedRegionId = regionId; notifyListeners(); @@ -76,6 +87,8 @@ class AppointmentViaRegionViewmodel extends ChangeNotifier { hmcCount = registeredDoctorMap.hmcSize; hmgCount = registeredDoctorMap.hmgSize; + hospitalList!.sort((a, b) => num.parse(a.distanceInKMs!).compareTo(num.parse(b.distanceInKMs!))); + getDisplayList(); } @@ -122,6 +135,7 @@ class AppointmentViaRegionViewmodel extends ChangeNotifier { setFacility(null); setBottomSheetType(RegionBottomSheetType.FOR_REGION); setBottomSheetState(AppointmentViaRegionState.REGION_SELECTION); + sortByLocation = false; } void setHospitalModel(PatientDoctorAppointmentList? hospital) { diff --git a/lib/features/my_appointments/models/reminder_type.dart b/lib/features/my_appointments/models/reminder_type.dart new file mode 100644 index 00000000..f13f20a0 --- /dev/null +++ b/lib/features/my_appointments/models/reminder_type.dart @@ -0,0 +1,50 @@ +/// Enum to define different types of reminders +enum ReminderType { + /// Reminder for appointment schedule + appointment, + + /// Reminder for payment due + payment, + + /// Reminder for check-in + checkIn, +} + +extension ReminderTypeExtension on ReminderType { + /// Get display name for the reminder type + String get displayName { + switch (this) { + case ReminderType.appointment: + return 'Appointment Reminder'; + case ReminderType.payment: + return 'Payment Reminder'; + case ReminderType.checkIn: + return 'Check-In Reminder'; + } + } + + /// Get description for the reminder type + String get description { + switch (this) { + case ReminderType.appointment: + return 'Appointment scheduled reminder'; + case ReminderType.payment: + return 'Payment due reminder'; + case ReminderType.checkIn: + return 'Check-in reminder'; + } + } + + /// Get event ID prefix for calendar events + String get eventIdPrefix { + switch (this) { + case ReminderType.appointment: + return 'APPT'; + case ReminderType.payment: + return 'PAY'; + case ReminderType.checkIn: + return 'CHKIN'; + } + } +} + diff --git a/lib/features/my_appointments/models/resp_models/appointment_parking_QR_response_model.dart b/lib/features/my_appointments/models/resp_models/appointment_parking_QR_response_model.dart new file mode 100644 index 00000000..67be0815 --- /dev/null +++ b/lib/features/my_appointments/models/resp_models/appointment_parking_QR_response_model.dart @@ -0,0 +1,85 @@ +class AppointmentParkingQRResponseModel { + String? admissionDate; + int? admissionNo; + String? appointmentDate; + int? appointmentNo; + int? createdBy; + String? createdOn; + String? gUID; + String? invoiceDate; + int? invoiceNo; + bool? isActive; + bool? isOutInPatient; + int? isPatient; + bool? isUsed; + int? patientID; + int? projectID; + dynamic ticketBase64; + int? ticketID; + String? ticketURL; + + AppointmentParkingQRResponseModel( + {this.admissionDate, + this.admissionNo, + this.appointmentDate, + this.appointmentNo, + this.createdBy, + this.createdOn, + this.gUID, + this.invoiceDate, + this.invoiceNo, + this.isActive, + this.isOutInPatient, + this.isPatient, + this.isUsed, + this.patientID, + this.projectID, + this.ticketBase64, + this.ticketID, + this.ticketURL}); + + AppointmentParkingQRResponseModel.fromJson(Map json) { + admissionDate = json['AdmissionDate']; + admissionNo = json['AdmissionNo']; + appointmentDate = json['AppointmentDate']; + appointmentNo = json['AppointmentNo']; + createdBy = json['CreatedBy']; + createdOn = json['CreatedOn']; + gUID = json['GUID']; + invoiceDate = json['InvoiceDate']; + invoiceNo = json['InvoiceNo']; + isActive = json['IsActive']; + isOutInPatient = json['IsOutInPatient']; + isPatient = json['IsPatient']; + isUsed = json['IsUsed']; + patientID = json['PatientID']; + projectID = json['ProjectID']; + // ticketBase64 = json['TicketBase64'].cast(); + ticketBase64 = json['TicketBase64String']; + ticketID = json['TicketID']; + ticketURL = json['TicketURL']; + } + + Map toJson() { + final Map data = new Map(); + data['AdmissionDate'] = this.admissionDate; + data['AdmissionNo'] = this.admissionNo; + data['AppointmentDate'] = this.appointmentDate; + data['AppointmentNo'] = this.appointmentNo; + data['CreatedBy'] = this.createdBy; + data['CreatedOn'] = this.createdOn; + data['GUID'] = this.gUID; + data['InvoiceDate'] = this.invoiceDate; + data['InvoiceNo'] = this.invoiceNo; + data['IsActive'] = this.isActive; + data['IsOutInPatient'] = this.isOutInPatient; + data['IsPatient'] = this.isPatient; + data['IsUsed'] = this.isUsed; + data['PatientID'] = this.patientID; + data['ProjectID'] = this.projectID; + data['TicketBase64'] = this.ticketBase64; + data['TicketID'] = this.ticketID; + data['TicketURL'] = this.ticketURL; + return data; + } +} diff --git a/lib/features/my_appointments/models/resp_models/appointment_rated_response_model.dart b/lib/features/my_appointments/models/resp_models/appointment_rated_response_model.dart new file mode 100644 index 00000000..2096a1e1 --- /dev/null +++ b/lib/features/my_appointments/models/resp_models/appointment_rated_response_model.dart @@ -0,0 +1,30 @@ +class AppointmentRatedResponseModel { + int? appointmentNo; + int? clinicID; + int? doctorID; + bool? isAllowedToRate; + bool? isAppointmentRated; + int? projectID; + + AppointmentRatedResponseModel({this.appointmentNo, this.clinicID, this.doctorID, this.isAllowedToRate, this.isAppointmentRated, this.projectID}); + + AppointmentRatedResponseModel.fromJson(Map json) { + appointmentNo = json['AppointmentNo']; + clinicID = json['ClinicID']; + doctorID = json['DoctorID']; + isAllowedToRate = json['IsAllowedToRate']; + isAppointmentRated = json['IsAppointmentRated']; + projectID = json['ProjectID']; + } + + Map toJson() { + final Map data = new Map(); + data['AppointmentNo'] = this.appointmentNo; + data['ClinicID'] = this.clinicID; + data['DoctorID'] = this.doctorID; + data['IsAllowedToRate'] = this.isAllowedToRate; + data['IsAppointmentRated'] = this.isAppointmentRated; + data['ProjectID'] = this.projectID; + return data; + } +} diff --git a/lib/features/my_appointments/models/resp_models/hospital_model.dart b/lib/features/my_appointments/models/resp_models/hospital_model.dart index a807b99a..031b3fd4 100644 --- a/lib/features/my_appointments/models/resp_models/hospital_model.dart +++ b/lib/features/my_appointments/models/resp_models/hospital_model.dart @@ -75,9 +75,7 @@ class HospitalsModel { } String? getName(bool isArabic) { - if (isArabic) { - return "$nameN"; - } + return name; } diff --git a/lib/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart b/lib/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart index e1ae67d6..d9a71d9f 100644 --- a/lib/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart +++ b/lib/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart @@ -51,6 +51,7 @@ class PatientAppointmentHistoryResponseModel { bool? isExecludeDoctor; dynamic isFollowup; bool? isLiveCareAppointment; + bool? isLiveCareClinic; bool? isInOutPatient; bool? isMedicalReportRequested; bool? isOnlineCheckedIN; @@ -73,6 +74,9 @@ class PatientAppointmentHistoryResponseModel { num? patientShare; num? patientShareWithTax; num? patientTaxAmount; + String? doctorNationalityFlagURL; + bool? isClinicReBookingAllowed; + bool? isParkingAvailable; PatientAppointmentHistoryResponseModel({ this.setupID, @@ -127,6 +131,7 @@ class PatientAppointmentHistoryResponseModel { this.isExecludeDoctor, this.isFollowup, this.isLiveCareAppointment, + this.isLiveCareClinic, this.isMedicalReportRequested, this.isOnlineCheckedIN, this.latitude, @@ -148,6 +153,9 @@ class PatientAppointmentHistoryResponseModel { this.patientShare, this.patientShareWithTax, this.patientTaxAmount, + this.doctorNationalityFlagURL, + this.isClinicReBookingAllowed, + this.isParkingAvailable, }); PatientAppointmentHistoryResponseModel.fromJson(Map json) { @@ -203,6 +211,7 @@ class PatientAppointmentHistoryResponseModel { isExecludeDoctor = json['IsExecludeDoctor']; isFollowup = json['IsFollowup']; isLiveCareAppointment = json['IsLiveCareAppointment']; + isLiveCareClinic = json['IsLiveCareClinic']; isInOutPatient = json['IsInOutPatient']; isMedicalReportRequested = json['IsMedicalReportRequested']; isOnlineCheckedIN = json['IsOnlineCheckedIN']; @@ -235,6 +244,9 @@ class PatientAppointmentHistoryResponseModel { patientShare = json['PatientShare']; patientShareWithTax = json['PatientShareWithTax']; patientTaxAmount = json['PatientTaxAmount']; + doctorNationalityFlagURL = json['DoctorNationalityFlagURL']; + isClinicReBookingAllowed = json['IsClinicReBookingAllowed']; + isParkingAvailable = json['IsParkingAvailable']; } Map toJson() { @@ -307,6 +319,8 @@ class PatientAppointmentHistoryResponseModel { data['RemaniningHoursTocanPay'] = this.remaniningHoursTocanPay; data['SMSButtonVisable'] = this.sMSButtonVisable; data['ServiceID'] = this.serviceID; + data['IsClinicReBookingAllowed'] = this.isClinicReBookingAllowed; + data['IsParkingAvailable'] = this.isParkingAvailable; return data; } } diff --git a/lib/features/my_appointments/models/resp_models/patient_queue_details_response_model.dart b/lib/features/my_appointments/models/resp_models/patient_queue_details_response_model.dart index c36b9ec5..828bcf0f 100644 --- a/lib/features/my_appointments/models/resp_models/patient_queue_details_response_model.dart +++ b/lib/features/my_appointments/models/resp_models/patient_queue_details_response_model.dart @@ -1,4 +1,48 @@ class PatientQueueDetails { + Data? patientQueueData; + + PatientQueueDetails({this.patientQueueData}); + + PatientQueueDetails.fromJson(Map json) { + patientQueueData = json['data'] != null ? new Data.fromJson(json['data']) : null; + } + + Map toJson() { + final Map data = new Map(); + if (this.patientQueueData != null) { + data['data'] = this.patientQueueData!.toJson(); + } + return data; + } +} + +class Data { + List? patientInQueueList; + int? isClinicConfigured; + + Data({this.patientInQueueList, this.isClinicConfigured}); + + Data.fromJson(Map json) { + if (json['patientInQueueList'] != null) { + patientInQueueList = []; + json['patientInQueueList'].forEach((v) { + patientInQueueList!.add(new PatientInQueueList.fromJson(v)); + }); + } + isClinicConfigured = json['isClinicConfigured']; + } + + Map toJson() { + final Map data = new Map(); + if (this.patientInQueueList != null) { + data['patientInQueueList'] = this.patientInQueueList!.map((v) => v.toJson()).toList(); + } + data['isClinicConfigured'] = this.isClinicConfigured; + return data; + } +} + +class PatientInQueueList { int? patientID; String? patientName; String? queueNo; @@ -7,16 +51,14 @@ class PatientQueueDetails { String? calledOn; bool? servingNow; - PatientQueueDetails( - {this.patientID, + PatientInQueueList({this.patientID, this.patientName, this.queueNo, this.callType, this.roomNo, - this.calledOn, - this.servingNow}); + this.calledOn, this.servingNow}); - PatientQueueDetails.fromJson(Map json) { + PatientInQueueList.fromJson(Map json) { patientID = json['patientID']; patientName = json['patientName']; queueNo = json['queueNo']; @@ -38,3 +80,47 @@ class PatientQueueDetails { return data; } } + +// class PatientQueueDetails { +// int? patientID; +// String? patientName; +// String? queueNo; +// int? callType; +// String? roomNo; +// String? calledOn; +// bool? servingNow; +// int? isClinicConfigured; +// +// PatientQueueDetails( +// {this.patientID, +// this.patientName, +// this.queueNo, +// this.callType, +// this.roomNo, +// this.calledOn, +// this.servingNow, this.isClinicConfigured}); +// +// PatientQueueDetails.fromJson(Map json) { +// patientID = json['patientID']; +// patientName = json['patientName']; +// queueNo = json['queueNo']; +// callType = json['callType']; +// roomNo = json['roomNo']; +// calledOn = json['calledOn']; +// servingNow = json['servingNow']; +// isClinicConfigured = json['isClinicConfigured']; +// } +// +// Map toJson() { +// final Map data = Map(); +// data['patientID'] = this.patientID; +// data['patientName'] = this.patientName; +// data['queueNo'] = this.queueNo; +// data['callType'] = this.callType; +// data['roomNo'] = this.roomNo; +// data['calledOn'] = this.calledOn; +// data['servingNow'] = this.servingNow; +// data['isClinicConfigured'] = this.isClinicConfigured; +// return data; +// } +// } diff --git a/lib/features/my_appointments/my_appointments_repo.dart b/lib/features/my_appointments/my_appointments_repo.dart index 567714c6..d7a926d3 100644 --- a/lib/features/my_appointments/my_appointments_repo.dart +++ b/lib/features/my_appointments/my_appointments_repo.dart @@ -8,12 +8,16 @@ import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/get_favorite_doctors_list.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/appointment_parking_QR_response_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/appointment_rated_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/rate_appointment_resp_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/ask_doctor_request_type_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/get_tamara_installments_details_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_share_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_queue_details_response_model.dart'; +import 'package:hmg_patient_app_new/features/my_invoices/models/get_invoices_list_response_model.dart'; import 'package:hmg_patient_app_new/services/logger_service.dart'; import 'models/req_model/appointment_rate_req_model.dart'; @@ -49,7 +53,9 @@ abstract class MyAppointmentsRepo { Future>>> getPatientAppointmentsForTimeLine(); - Future>>> getPatientDoctorsList(); + Future>>> getPatientDoctorsList({bool isTop8 = false}); + + Future>>> getFavouriteDoctorsList(); Future>> insertLiveCareVIDARequest({required clientRequestID, required PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel}); @@ -73,11 +79,22 @@ abstract class MyAppointmentsRepo { Future>> sendDoctorRate( int rate, int appointmentNo, int projectID, int doctorID, int clinicID, String note, String appoDate, String docName, String projectName, String clinicName); - Future>>> getPatientAppointmentQueueDetails({required int appointmentNo, required int patientID}); + Future>> getPatientAppointmentQueueDetails({required int appointmentNo, required int patientID, required int clinicID}); Future>> convertPatientToCash({required int projectID}); Future>> sendPatientUpdateRequest(); + + Future>> getDoctorsRatingCheck({ + required int doctorID, + required int projectID, + required int clinicID, + required int appointmentNo, + }); + + Future>>> getAppointmentInvoice(num appointmentNum); + + Future>> getParkingQR(num appointmentNum, int projectID); } class MyAppointmentsRepoImp implements MyAppointmentsRepo { @@ -140,6 +157,8 @@ class MyAppointmentsRepoImp implements MyAppointmentsRepo { {required int projectID, required int clinicID, required String appointmentNo, required bool isLiveCareAppointment}) async { Map mapRequest = {"ProjectID": projectID, "ClinicID": clinicID, "AppointmentNo": appointmentNo, "IsActiveAppointment": true, "IsForLiveCare": isLiveCareAppointment}; + late PatientAppointmentShareResponseModel patientShareObj; + try { GenericApiModel? apiResponse; Failure? failure; @@ -152,14 +171,19 @@ class MyAppointmentsRepoImp implements MyAppointmentsRepo { onSuccess: (response, statusCode, {messageStatus, errorMessage}) { try { final list = response['OnlineCheckInAppointments']; - if (list == null || list.isEmpty) { - throw Exception("patient share list is empty"); - } + patientShareObj = (list == null || list.isEmpty) ? PatientAppointmentShareResponseModel() : PatientAppointmentShareResponseModel.fromJson(list[0]); + patientShareObj.isCash = isLiveCareAppointment ? list[0]["IsCash"] : response["IsCash"]; + patientShareObj.isEligible = isLiveCareAppointment ? list[0]["IsEligible"] : response["IsEligible"]; + patientShareObj.isInsured = isLiveCareAppointment ? list[0]["IsInsured"] : response["IsInsured"]; - final patientShareObj = PatientAppointmentShareResponseModel.fromJson(list[0]); - patientShareObj.isCash = response["IsCash"]; - patientShareObj.isEligible = response["IsEligible"]; - patientShareObj.isInsured = response["IsInsured"]; + // if (list == null || list.isEmpty) { + // throw Exception("patient share list is empty"); + // } + + // final patientShareObj = PatientAppointmentShareResponseModel.fromJson(list[0]); + // patientShareObj.isCash = response["IsCash"]; + // patientShareObj.isEligible = response["IsEligible"]; + // patientShareObj.isInsured = response["IsInsured"]; apiResponse = GenericApiModel( messageStatus: messageStatus, @@ -490,11 +514,12 @@ class MyAppointmentsRepoImp implements MyAppointmentsRepo { } @override - Future>>> getPatientDoctorsList() async { + Future>>> getPatientDoctorsList({bool isTop8 = false}) async { Map mapDevice = { "Top": 0, "beforeDays": 0, "exludType": 4, + "IsTop8": isTop8, }; try { @@ -510,7 +535,10 @@ class MyAppointmentsRepoImp implements MyAppointmentsRepo { try { final list = response['PatientDoctorAppointmentResultList']; - final appointmentsList = list.map((item) => PatientAppointmentHistoryResponseModel.fromJson(item as Map)).toList().cast(); + List appointmentsList = + list.map((item) => PatientAppointmentHistoryResponseModel.fromJson(item as Map)).toList().cast(); + + // appointmentsList.removeWhere((element) => element.isActiveDoctorProfile == false); apiResponse = GenericApiModel>( messageStatus: messageStatus, @@ -531,6 +559,56 @@ class MyAppointmentsRepoImp implements MyAppointmentsRepo { } } + @override + Future>>> getFavouriteDoctorsList() async { + Map mapDevice = {}; + + try { + GenericApiModel>? apiResponse; + Failure? failure; + await apiClient.post( + GET_FAVOURITE_DOCTOR, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final list = response['Patient_GetFavouriteDoctorList']; + + if (list == null || list.isEmpty) { + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: [], + ); + return; + } + + final appointmentsList = (list as List).map((item) => GetFavoriteDoctorsListModel.fromJson(item as Map)).toList().cast(); + + appointmentsList.removeWhere((element) => element.isActive == false); + + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: appointmentsList, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + @override Future> insertLiveCareVIDARequest({required clientRequestID, required PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel}) async { Map requestBody = { @@ -769,19 +847,23 @@ class MyAppointmentsRepoImp implements MyAppointmentsRepo { } @override - Future>>> getPatientAppointmentQueueDetails({required int appointmentNo, required int patientID}) async { - Map mapDevice = {"appointmentNo": appointmentNo, "patientID": patientID, "apiKey": "EE17D21C7943485D9780223CCE55DCE5"}; + Future>> getPatientAppointmentQueueDetails({required int appointmentNo, required int patientID, required int clinicID}) async { + Map mapDevice = {"appointmentNo": appointmentNo, "patientID": patientID, "clinicID": clinicID, "apiKey": "EE17D21C7943485D9780223CCE55DCE5"}; try { - GenericApiModel>? apiResponse; + GenericApiModel? apiResponse; Failure? failure; await apiClient.post(ApiConsts.QLINE_URL, onFailure: (error, statusCode, {messageStatus, failureType}) { failure = failureType; }, onSuccess: (response, statusCode, {messageStatus, errorMessage}) { try { - final list = response['data']; - final queueList = list.map((item) => PatientQueueDetails.fromJson(item as Map)).toList().cast(); + // final list = response['data']; + final queueData = response; + // final queueList = list.map((item) => PatientQueueDetails.fromJson(item as Map)).toList().cast(); + final queueList = PatientQueueDetails.fromJson(queueData); - apiResponse = GenericApiModel>( + // queueList.patientQueueData!.isClinicConfigured = 1; + + apiResponse = GenericApiModel( messageStatus: messageStatus, statusCode: statusCode, errorMessage: null, @@ -1021,4 +1103,124 @@ class MyAppointmentsRepoImp implements MyAppointmentsRepo { return Left(UnknownFailure(e.toString())); } } + + @override + Future>> getDoctorsRatingCheck({ + required int doctorID, + required int projectID, + required int clinicID, + required int appointmentNo, + }) async { + Map mapDevice = { + "DoctorID": doctorID, + "ProjectID": projectID, + "ClinicID": clinicID, + "AppointmentNo": appointmentNo, + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + GET_DOCTORS_RATING_CHECK, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + AppointmentRatedResponseModel appointmentRatedResponseModel = AppointmentRatedResponseModel.fromJson(response['DoctorsRatingResponseModel'][0]); + + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: appointmentRatedResponseModel, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>>> getAppointmentInvoice(num appointmentNum) async { + Map mapDevice = {"AppointmentNo": appointmentNum}; + + try { + GenericApiModel>? apiResponse; + Failure? failure; + await apiClient.post( + GET_ALL_APPOINTMENTS_FOR_DENTAL_CLINIC, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final list = response['List_AllInvoices']; + + final invoicesList = list.map((item) => GetInvoicesListResponseModel.fromJson(item as Map)).toList().cast(); + + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: invoicesList, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> getParkingQR(num appointmentNum, int projectID) async { + Map mapDevice = {"AppointmentNo": appointmentNum, "ProjectID": projectID}; + + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + GET_APPOINTMENT_PARKING_QR, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + AppointmentParkingQRResponseModel appointmentParkingQRResponseModel = AppointmentParkingQRResponseModel.fromJson(response['ParkingTicketsForAppointment'][0]); + + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: appointmentParkingQRResponseModel, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } } diff --git a/lib/features/my_appointments/my_appointments_view_model.dart b/lib/features/my_appointments/my_appointments_view_model.dart index d2296a66..52d8b240 100644 --- a/lib/features/my_appointments/my_appointments_view_model.dart +++ b/lib/features/my_appointments/my_appointments_view_model.dart @@ -1,11 +1,20 @@ +import 'dart:convert'; +import 'dart:typed_data'; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/calender_utils_new.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/get_favorite_doctors_list.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/appointemnet_filters.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/reminder_type.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/appointment_parking_QR_response_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/appointment_rated_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/ask_doctor_request_type_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/get_tamara_installments_details_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; @@ -13,13 +22,17 @@ import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/ import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_queue_details_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_repo.dart'; import 'package:hmg_patient_app_new/features/my_appointments/utils/appointment_type.dart'; +import 'package:hmg_patient_app_new/features/my_invoices/models/get_invoices_list_response_model.dart'; +import 'package:hmg_patient_app_new/features/my_invoices/my_invoices_repo.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/insurance/insurance_home_page.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:open_filex/open_filex.dart'; class MyAppointmentsViewModel extends ChangeNotifier { int selectedTabIndex = 0; @@ -37,8 +50,11 @@ class MyAppointmentsViewModel extends ChangeNotifier { bool isAppointmentPatientShareLoading = false; bool isTimeLineAppointmentsLoading = false; bool isPatientMyDoctorsLoading = false; + bool isPatientFavouriteDoctorsLoading = false; + bool isFavouriteDoctorsDataFetched = false; bool isAppointmentDataToBeLoaded = true; + bool isMyDoctorsDataToBeLoaded = true; bool isEyeMeasurementsAppointmentsLoading = false; @@ -51,8 +67,8 @@ class MyAppointmentsViewModel extends ChangeNotifier { bool isAppointmentQueueDetailsLoading = false; bool isPatientHasQueueAppointment = false; int currentQueueStatus = 0; - List patientQueueDetailsList = []; - late PatientQueueDetails currentPatientQueueDetails; + List patientQueueDetailsList = []; + late PatientInQueueList currentPatientQueueDetails; List patientAppointmentsHistoryList = []; List filteredAppointmentList = []; @@ -64,6 +80,8 @@ class MyAppointmentsViewModel extends ChangeNotifier { List patientMyDoctorsList = []; + List patientFavouriteDoctorsList = []; + List patientEyeMeasurementsAppointmentsHistoryList = []; // Grouping by Clinic and Hospital @@ -82,6 +100,15 @@ class MyAppointmentsViewModel extends ChangeNotifier { bool isShowNotEligibleDialog = false; String notEligibleErrorMsg = ""; + bool isAppointmentAlreadyRated = false; + + AppointmentRatedResponseModel? appointmentRatedResponseModel; + bool isAppointmentRatedResponseLoading = false; + + AppointmentParkingQRResponseModel? appointmentParkingQRResponseModel; + + Uint8List? parkingQRImageBytes; + MyAppointmentsViewModel({required this.myAppointmentsRepo, required this.errorHandlerService, required this.appState}); void onTabChange(int index) { @@ -89,6 +116,10 @@ class MyAppointmentsViewModel extends ChangeNotifier { selectedTabIndex = index; start = null; end = null; + // if (index == 0) { + // filteredAppointmentList.clear(); + // filteredAppointmentList.addAll(patientAppointmentsHistoryList); + // } notifyListeners(); } @@ -180,9 +211,15 @@ class MyAppointmentsViewModel extends ChangeNotifier { notifyListeners(); } + setIsMyDoctorsDataToBeLoaded(bool val) { + isMyDoctorsDataToBeLoaded = val; + notifyListeners(); + } + setIsAppointmentDataToBeLoaded(bool val) { if (val) { isMyAppointmentsLoading = true; + isMyDoctorsDataToBeLoaded = true; } isAppointmentDataToBeLoaded = val; notifyListeners(); @@ -240,7 +277,6 @@ class MyAppointmentsViewModel extends ChangeNotifier { } if (!isAppointmentDataToBeLoaded) return; - debugPrint('getPatientAppointments CALLED!!!'); patientAppointmentsByClinic.clear(); patientAppointmentsByHospital.clear(); @@ -299,18 +335,17 @@ class MyAppointmentsViewModel extends ChangeNotifier { // Build grouped list immediately so the UI has data for the default (By Clinic) view. _groupAppointmentsByClinicAndHospital(); + // if (patientArrivedAppointmentsHistoryList.isNotEmpty) { + isPatientHasQueueAppointment = false; + notifyListeners(); if (patientArrivedAppointmentsHistoryList.isNotEmpty) { - isPatientHasQueueAppointment = false; - notifyListeners(); if (Utils.isDateToday(DateUtil.convertStringToDate(patientArrivedAppointmentsHistoryList.first.appointmentDate))) { // getPatientAppointmentQueueDetails(appointmentNo: patientArrivedAppointmentsHistoryList.first.appointmentNo, patientID: patientArrivedAppointmentsHistoryList.first.patientID); getPatientAppointmentQueueDetails(); } } + // } - debugPrint('Upcoming Appointments: ${patientUpcomingAppointmentsHistoryList.length}'); - debugPrint('Arrived Appointments: ${patientArrivedAppointmentsHistoryList.length}'); - debugPrint('All Appointments: ${patientAppointmentsHistoryList.length}'); getFiltersForSelectedAppointmentList(filteredAppointmentList); notifyListeners(); } @@ -556,7 +591,12 @@ class MyAppointmentsViewModel extends ChangeNotifier { final result = await myAppointmentsRepo.confirmAppointment(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel); result.fold( - (failure) async => await errorHandlerService.handleError(failure: failure), + // (failure) async => await errorHandlerService.handleError(failure: failure), + (failure) async { + if(onError != null) { + onError(failure.message); + } + }, (apiResponse) { if (apiResponse.messageStatus == 2) { onError!(apiResponse.errorMessage!); @@ -593,7 +633,12 @@ class MyAppointmentsViewModel extends ChangeNotifier { patientType: patientType); result.fold( - (failure) async => await errorHandlerService.handleError(failure: failure), + // (failure) async => await errorHandlerService.handleError(failure: failure), + (failure) async { + if (onError != null) { + onError(failure.message); + } + }, (apiResponse) { if (apiResponse.messageStatus == 2) { // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); @@ -631,12 +676,13 @@ class MyAppointmentsViewModel extends ChangeNotifier { ); } - Future getPatientMyDoctors({Function(dynamic)? onSuccess, Function(String)? onError}) async { - // if (!isAppointmentDataToBeLoaded) return; + Future getPatientMyDoctors({bool isTop8 = false, Function(dynamic)? onSuccess, Function(String)? onError}) async { + if (!isMyDoctorsDataToBeLoaded) return; isPatientMyDoctorsLoading = true; + patientMyDoctorsList.clear(); notifyListeners(); - final result = await myAppointmentsRepo.getPatientDoctorsList(); + final result = await myAppointmentsRepo.getPatientDoctorsList(isTop8: isTop8); result.fold( // (failure) async => await errorHandlerService.handleError(failure: failure), @@ -649,6 +695,7 @@ class MyAppointmentsViewModel extends ChangeNotifier { } else if (apiResponse.messageStatus == 1) { patientMyDoctorsList = apiResponse.data!; isPatientMyDoctorsLoading = false; + isMyDoctorsDataToBeLoaded = false; notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); @@ -658,6 +705,73 @@ class MyAppointmentsViewModel extends ChangeNotifier { ); } + Future getPatientFavouriteDoctors({bool forceRefresh = false, Function(dynamic)? onSuccess, Function(String)? onError}) async { + // If data is already fetched and not forcing refresh, skip API call + // if (isFavouriteDoctorsDataFetched && !forceRefresh) { + // return; + // } + + isPatientFavouriteDoctorsLoading = true; + patientFavouriteDoctorsList.clear(); + notifyListeners(); + + final result = await myAppointmentsRepo.getFavouriteDoctorsList(); + + result.fold( + (failure) async { + isPatientFavouriteDoctorsLoading = false; + notifyListeners(); + }, + (apiResponse) { + if (apiResponse.messageStatus == 2) { + isPatientFavouriteDoctorsLoading = false; + notifyListeners(); + } else if (apiResponse.messageStatus == 1) { + patientFavouriteDoctorsList = apiResponse.data!; + isFavouriteDoctorsDataFetched = true; + isPatientFavouriteDoctorsLoading = false; + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + } + + Future getParkingQR(num appointmentNum, int projectID, {Function(dynamic)? onSuccess, Function(String)? onError}) async { + final result = await myAppointmentsRepo.getParkingQR(appointmentNum, projectID); + + result.fold( + (failure) async { + if (onError != null) { + onError(failure.message); + } + }, + (apiResponse) { + appointmentParkingQRResponseModel = apiResponse.data!; + parkingQRImageBytes = base64Decode( + appointmentParkingQRResponseModel!.ticketBase64.contains(',') ? appointmentParkingQRResponseModel!.ticketBase64.split(',').last : appointmentParkingQRResponseModel!.ticketBase64); + // parkingQRImageBytes = appointmentParkingQRResponseModel!.ticketBase64; + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse); + } + }, + ); + } + + // Method to force refresh favorite doctors list + void refreshFavouriteDoctors() { + isFavouriteDoctorsDataFetched = false; + getPatientFavouriteDoctors(forceRefresh: true); + } + + // Method to reset favorite doctors cache + void resetFavouriteDoctorsCache() { + isFavouriteDoctorsDataFetched = false; + } + Future insertLiveCareVIDARequest( {required clientRequestID, required PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel, Function(dynamic)? onSuccess, Function(String)? onError}) async { final result = await myAppointmentsRepo.insertLiveCareVIDARequest(clientRequestID: clientRequestID, patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel); @@ -868,9 +982,13 @@ class MyAppointmentsViewModel extends ChangeNotifier { //TODO: Discuss With Haroon, Is the User Has no data it return No Element Bad State; isPatientHasQueueAppointment = false; isAppointmentQueueDetailsLoading = true; + patientQueueDetailsList.clear(); notifyListeners(); + final result = await myAppointmentsRepo.getPatientAppointmentQueueDetails( - appointmentNo: patientArrivedAppointmentsHistoryList.first.appointmentNo, patientID: patientArrivedAppointmentsHistoryList.first.patientID); + clinicID: patientArrivedAppointmentsHistoryList.first.clinicID, + appointmentNo: patientArrivedAppointmentsHistoryList.first.appointmentNo, + patientID: patientArrivedAppointmentsHistoryList.first.patientID); isAppointmentQueueDetailsLoading = false; @@ -885,23 +1003,55 @@ class MyAppointmentsViewModel extends ChangeNotifier { if (apiResponse.messageStatus == 2) { onError!(apiResponse.errorMessage!); } else if (apiResponse.messageStatus == 1) { - if (apiResponse.data != null && apiResponse.data!.isNotEmpty) { - isPatientHasQueueAppointment = true; - patientQueueDetailsList = apiResponse.data!; - for (var element in patientQueueDetailsList) { - if (element.patientID == patientArrivedAppointmentsHistoryList.first.patientID) { - currentPatientQueueDetails = element; - currentQueueStatus = element.callType!; - // currentQueueStatus = 2; - break; + if (apiResponse.data != null) { + patientQueueDetailsList.clear(); + patientQueueDetailsList = apiResponse.data!.patientQueueData!.patientInQueueList!; + + if (apiResponse.data!.patientQueueData!.isClinicConfigured == 1) { + currentPatientQueueDetails = PatientInQueueList(); + isPatientHasQueueAppointment = true; + for (var element in patientQueueDetailsList) { + if (element.patientID == patientArrivedAppointmentsHistoryList.first.patientID) { + currentPatientQueueDetails = element; + currentQueueStatus = element.callType!; + // currentQueueStatus = 2; + break; + } } + // patientQueueDetailsList.first.callType = 1; + // if (patientQueueDetailsList.length > 1) { + patientQueueDetailsList.removeWhere((element) => element.patientID == patientArrivedAppointmentsHistoryList.first.patientID); + // } + } else { + patientQueueDetailsList.clear(); + isPatientHasQueueAppointment = false; } - // patientQueueDetailsList.first.callType = 1; - - patientQueueDetailsList.removeWhere((element) => element.patientID == patientArrivedAppointmentsHistoryList.first.patientID); } else { + patientQueueDetailsList.clear(); isPatientHasQueueAppointment = false; } + + // if (apiResponse.data != null && apiResponse.data!.isNotEmpty) { + // patientQueueDetailsList = apiResponse.data!; + // + // // if (patientQueueDetailsList.first.isClinicConfigured == 1) { + // isPatientHasQueueAppointment = true; + // for (var element in patientQueueDetailsList) { + // if (element.patientID == patientArrivedAppointmentsHistoryList.first.patientID) { + // currentPatientQueueDetails = element; + // currentQueueStatus = element.callType!; + // // currentQueueStatus = 2; + // break; + // } + // } + // // patientQueueDetailsList.first.callType = 1; + // patientQueueDetailsList.removeWhere((element) => element.patientID == patientArrivedAppointmentsHistoryList.first.patientID); + // // } else { + // // isPatientHasQueueAppointment = false; + // // } + // } else { + // isPatientHasQueueAppointment = false; + // } notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse.data); @@ -940,4 +1090,555 @@ class MyAppointmentsViewModel extends ChangeNotifier { }, ); } + + Future getDoctorsRatingCheck({ + required int doctorID, + required int projectID, + required int clinicID, + required int appointmentNo, + Function(dynamic)? onSuccess, + Function(String)? onError, + }) async { + isAppointmentRatedResponseLoading = true; + notifyListeners(); + + final result = await myAppointmentsRepo.getDoctorsRatingCheck( + doctorID: doctorID, + projectID: projectID, + clinicID: clinicID, + appointmentNo: appointmentNo, + ); + + result.fold( + (failure) async { + // await errorHandlerService.handleError(failure: failure); + if (onError != null) onError(failure.message); + isAppointmentRatedResponseLoading = false; + notifyListeners(); + }, + (apiResponse) { + if (apiResponse.messageStatus == 2) { + if (onError != null) onError(apiResponse.errorMessage ?? "Unknown error"); + isAppointmentRatedResponseLoading = false; + notifyListeners(); + } else if (apiResponse.messageStatus == 1) { + appointmentRatedResponseModel = apiResponse.data!; + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse.data); + } + isAppointmentRatedResponseLoading = false; + } + }, + ); + } + + Future submitDoctorRating( + {required PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel, + required int docRate, + required String docNote, + Function(dynamic)? onSuccess, + Function(String)? onError}) async { + final result = await myAppointmentsRepo.sendDoctorRate( + docRate, + patientAppointmentHistoryResponseModel.appointmentNo!, + patientAppointmentHistoryResponseModel.projectID!, + patientAppointmentHistoryResponseModel.doctorID!, + patientAppointmentHistoryResponseModel.clinicID!, + docNote, + patientAppointmentHistoryResponseModel.appointmentDate!, + patientAppointmentHistoryResponseModel.doctorNameObj!, + patientAppointmentHistoryResponseModel.projectName!, + patientAppointmentHistoryResponseModel.clinicName!); + + result.fold( + (failure) async => await errorHandlerService.handleError(failure: failure), + (apiResponse) { + if (apiResponse.messageStatus == 2) { + onError?.call(apiResponse.errorMessage ?? 'Unknown error'); + } else if (apiResponse.messageStatus == 1) { + notifyListeners(); + if (onSuccess != null) { + // onSuccess(apiResponse.data); + } + } + }, + ); + } + + /// Creates a reminder for the appointment + /// Shows a bottom sheet to select reminder time and creates calendar event + /// [reminderType] specifies the type of reminder (appointment, payment, or check-in) + /// For payment and check-in reminders, shows only 1, 2, 3 hours before appointment + /// Automatically removes previous reminders when creating a new one + Future createReminder({ + required BuildContext context, + required PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel, + ReminderType reminderType = ReminderType.appointment, + Function(bool)? onSuccess, + Function(String)? onError, + }) async { + try { + CalenderUtilsNew calender = CalenderUtilsNew.instance; + DateTime endDate = DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate); + + // Generate title and description based on reminder type + String title; + String description; + String eventIdPrefix = reminderType.eventIdPrefix; + + switch (reminderType) { + case ReminderType.appointment: + title = "Appointment with ${patientAppointmentHistoryResponseModel.doctorNameObj}"; + description = "${patientAppointmentHistoryResponseModel.doctorNameObj} will be having an appointment on ${patientAppointmentHistoryResponseModel.appointmentDate}"; + break; + case ReminderType.payment: + title = "Payment Due for Appointment #${patientAppointmentHistoryResponseModel.appointmentNo}"; + description = "Payment reminder for appointment with ${patientAppointmentHistoryResponseModel.doctorNameObj} at ${patientAppointmentHistoryResponseModel.projectName}"; + break; + case ReminderType.checkIn: + title = "Check-In Reminder for Appointment #${patientAppointmentHistoryResponseModel.appointmentNo}"; + description = "Don't forget to check in for your appointment with ${patientAppointmentHistoryResponseModel.doctorNameObj}"; + break; + } + + // For payment and check-in, remove existing reminders first + if (reminderType == ReminderType.payment || reminderType == ReminderType.checkIn) { + // Remove all existing reminder types + await _removeAllRemindersForAppointment(patientAppointmentHistoryResponseModel); + } + + // For payment and check-in reminders, use custom hour-based options + if (reminderType == ReminderType.payment || reminderType == ReminderType.checkIn) { + _showHourBasedReminderSheet( + context: context, + patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel, + reminderType: reminderType, + title: title, + description: description, + eventIdPrefix: eventIdPrefix, + endDate: endDate, + onSuccess: onSuccess, + onError: onError, + ); + } else { + // For appointment reminders, use the standard reminder sheet with all options + BottomSheetUtils().showReminderBottomSheet( + context, + endDate, + patientAppointmentHistoryResponseModel.doctorNameObj ?? "", + "${patientAppointmentHistoryResponseModel.appointmentNo}", + "", + "", + title: title, + description: description, + onSuccess: () { + setAppointmentReminder(true, patientAppointmentHistoryResponseModel); + if (onSuccess != null) { + onSuccess(true); + } + }, + isMultiAllowed: true, + onMultiDateSuccess: (int selectedIndex) async { + String eventTitle; + String eventDescription; + + switch (reminderType) { + case ReminderType.appointment: + eventTitle = + "Appointment Reminder with ${patientAppointmentHistoryResponseModel.doctorNameObj} on ${DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate)}, Appointment #${patientAppointmentHistoryResponseModel.appointmentNo}"; + eventDescription = "Appointment Reminder with ${patientAppointmentHistoryResponseModel.doctorNameObj} in ${patientAppointmentHistoryResponseModel.projectName}"; + break; + case ReminderType.payment: + eventTitle = "Payment Due Reminder for Appointment #${patientAppointmentHistoryResponseModel.appointmentNo} with ${patientAppointmentHistoryResponseModel.doctorNameObj}"; + eventDescription = "Payment reminder for ${patientAppointmentHistoryResponseModel.doctorNameObj} at ${patientAppointmentHistoryResponseModel.projectName}"; + break; + case ReminderType.checkIn: + eventTitle = "Check-In Reminder for Appointment #${patientAppointmentHistoryResponseModel.appointmentNo} with ${patientAppointmentHistoryResponseModel.doctorNameObj}"; + eventDescription = "Check-in reminder for appointment with ${patientAppointmentHistoryResponseModel.doctorNameObj} at ${patientAppointmentHistoryResponseModel.projectName}"; + break; + } + + bool isEventAddedOrRemoved = await calender.createOrUpdateEvent( + title: eventTitle, + description: eventDescription, + scheduleDateTime: DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), + eventId: "${eventIdPrefix}_${patientAppointmentHistoryResponseModel.appointmentNo}", + location: patientAppointmentHistoryResponseModel.projectName ?? '', + reminderMinutes: selectedIndex, + ); + + setAppointmentReminder(isEventAddedOrRemoved, patientAppointmentHistoryResponseModel); + + if (onSuccess != null) { + onSuccess(isEventAddedOrRemoved); + } + }, + ); + } + } catch (e) { + if (onError != null) { + onError(e.toString()); + } + } + } + + /// Removes all reminder types for an appointment (internal helper) + Future _removeAllRemindersForAppointment(PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel) async { + CalenderUtilsNew calender = CalenderUtilsNew.instance; + + // Remove all possible reminder types + for (var type in ReminderType.values) { + try { + await calender.checkAndRemove( + id: "${type.eventIdPrefix}_${patientAppointmentHistoryResponseModel.appointmentNo}", + ); + } catch (e) { + // Ignore errors if reminder doesn't exist + } + } + } + + /// Shows hour-based reminder selection for payment and check-in reminders + void _showHourBasedReminderSheet({ + required BuildContext context, + required PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel, + required ReminderType reminderType, + required String title, + required String description, + required String eventIdPrefix, + required DateTime endDate, + Function(bool)? onSuccess, + Function(String)? onError, + }) { + showCommonBottomSheetWithoutHeight( + context, + title: "Select Reminder Time", + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Center( + child: Text( + "When would you like to be reminded?", + style: TextStyle( + fontSize: 14.f, + color: AppColors.greyTextColor, + ), + textAlign: TextAlign.center, + ), + ), + SizedBox(height: 24.h), + _buildHourOption( + context: context, + hours: 1, + icon: Icons.alarm, + patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel, + reminderType: reminderType, + title: title, + description: description, + eventIdPrefix: eventIdPrefix, + endDate: endDate, + onSuccess: onSuccess, + onError: onError, + ), + SizedBox(height: 12.h), + _buildHourOption( + context: context, + hours: 2, + icon: Icons.alarm, + patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel, + reminderType: reminderType, + title: title, + description: description, + eventIdPrefix: eventIdPrefix, + endDate: endDate, + onSuccess: onSuccess, + onError: onError, + ), + SizedBox(height: 12.h), + _buildHourOption( + context: context, + hours: 3, + icon: Icons.alarm, + patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel, + reminderType: reminderType, + title: title, + description: description, + eventIdPrefix: eventIdPrefix, + endDate: endDate, + onSuccess: onSuccess, + onError: onError, + ), + ], + ), + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + + /// Builds an hour option button for payment/check-in reminders + Widget _buildHourOption({ + required BuildContext context, + required int hours, + required IconData icon, + required PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel, + required ReminderType reminderType, + required String title, + required String description, + required String eventIdPrefix, + required DateTime endDate, + Function(bool)? onSuccess, + Function(String)? onError, + }) { + return GestureDetector( + onTap: () async { + Navigator.of(context).pop(); // Close the selection sheet + + // Create reminder with selected hours (converted to minutes) + await _createReminderWithHours( + hours: hours, + patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel, + reminderType: reminderType, + title: title, + description: description, + eventIdPrefix: eventIdPrefix, + endDate: endDate, + onSuccess: onSuccess, + onError: onError, + ); + }, + child: Container( + padding: EdgeInsets.all(16.h), + decoration: BoxDecoration( + color: AppColors.whiteColor, + border: Border.all(color: AppColors.borderOnlyColor), + borderRadius: BorderRadius.circular(12.r), + ), + child: Row( + children: [ + Container( + padding: EdgeInsets.all(12.h), + decoration: BoxDecoration( + color: AppColors.primaryRedColor.withAlpha(26), + borderRadius: BorderRadius.circular(8.r), + ), + child: Icon( + icon, + color: AppColors.primaryRedColor, + size: 24.h, + ), + ), + SizedBox(width: 12.w), + Expanded( + child: Text( + "$hours ${hours == 1 ? 'Hour' : 'Hours'} Before Appointment", + style: TextStyle( + fontSize: 16.f, + fontWeight: FontWeight.w600, + color: AppColors.textColor, + ), + ), + ), + Icon( + Icons.arrow_forward_ios, + size: 16.h, + color: AppColors.greyTextColor, + ), + ], + ), + ), + ); + } + + /// Creates reminder with specific hours before appointment + Future _createReminderWithHours({ + required int hours, + required PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel, + required ReminderType reminderType, + required String title, + required String description, + required String eventIdPrefix, + required DateTime endDate, + Function(bool)? onSuccess, + Function(String)? onError, + }) async { + try { + CalenderUtilsNew calender = CalenderUtilsNew.instance; + + // Convert hours to minutes + int reminderMinutes = hours * 60; + + String eventTitle; + String eventDescription; + + switch (reminderType) { + case ReminderType.appointment: + eventTitle = + "Appointment Reminder with ${patientAppointmentHistoryResponseModel.doctorNameObj} on ${DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate)}, Appointment #${patientAppointmentHistoryResponseModel.appointmentNo}"; + eventDescription = "Appointment Reminder with ${patientAppointmentHistoryResponseModel.doctorNameObj} in ${patientAppointmentHistoryResponseModel.projectName}"; + break; + case ReminderType.payment: + eventTitle = "Payment Due - $hours ${hours == 1 ? 'hour' : 'hours'} before Appointment #${patientAppointmentHistoryResponseModel.appointmentNo}"; + eventDescription = "Payment reminder for ${patientAppointmentHistoryResponseModel.doctorNameObj} at ${patientAppointmentHistoryResponseModel.projectName}"; + break; + case ReminderType.checkIn: + eventTitle = "Check-In Now - $hours ${hours == 1 ? 'hour' : 'hours'} before Appointment #${patientAppointmentHistoryResponseModel.appointmentNo}"; + eventDescription = "Check-in reminder for appointment with ${patientAppointmentHistoryResponseModel.doctorNameObj} at ${patientAppointmentHistoryResponseModel.projectName}"; + break; + } + + bool isEventAddedOrRemoved = await calender.createOrUpdateEvent( + title: eventTitle, + description: eventDescription, + scheduleDateTime: DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), + eventId: "${eventIdPrefix}_${patientAppointmentHistoryResponseModel.appointmentNo}", + location: patientAppointmentHistoryResponseModel.projectName ?? '', + reminderMinutes: reminderMinutes, + ); + + setAppointmentReminder(isEventAddedOrRemoved, patientAppointmentHistoryResponseModel); + + if (onSuccess != null) { + onSuccess(isEventAddedOrRemoved); + } + } catch (e) { + if (onError != null) { + onError(e.toString()); + } + } + } + + /// Deletes the reminder for the appointment + /// Removes the calendar event associated with the appointment + /// [reminderType] specifies the type of reminder to delete (appointment, payment, or check-in) + Future deleteReminder({ + required PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel, + ReminderType reminderType = ReminderType.appointment, + Function(bool)? onSuccess, + Function(String)? onError, + }) async { + try { + CalenderUtilsNew calender = CalenderUtilsNew.instance; + String eventIdPrefix = reminderType.eventIdPrefix; + + bool isEventRemoved = await calender.checkAndRemove( + id: "${eventIdPrefix}_${patientAppointmentHistoryResponseModel.appointmentNo}", + ); + + // Update the reminder status (inverted because we're removing) + setAppointmentReminder(!isEventRemoved, patientAppointmentHistoryResponseModel); + + if (onSuccess != null) { + onSuccess(isEventRemoved); + } + } catch (e) { + if (onError != null) { + onError(e.toString()); + } + } + } + + /// Toggle reminder for an appointment + /// Creates or deletes reminder based on the current state + /// [reminderType] specifies the type of reminder (appointment, payment, or check-in) + Future toggleReminder({ + required BuildContext context, + required bool shouldCreateReminder, + required PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel, + required ReminderType reminderType, + Function(bool)? onSuccess, + Function(String)? onError, + }) async { + if (shouldCreateReminder) { + await createReminder( + context: context, + patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel, + reminderType: reminderType, + onSuccess: onSuccess, + onError: onError, + ); + } else { + await deleteReminder( + patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel, + reminderType: reminderType, + onSuccess: onSuccess, + onError: onError, + ); + } + } + + Future getAppointmentInvoice({required num appointmentNum, Function(dynamic)? onSuccess, Function(String)? onError}) async { + String? downloadInvoicePDFBase64 = ""; + final result = await myAppointmentsRepo.getAppointmentInvoice(appointmentNum); + + result.fold( + (failure) async { + if (onError != null) { + onError(failure.message ?? "Unknown error"); + } + }, + (apiResponse) async { + if (apiResponse.messageStatus == 2) { + if (onError != null) { + onError(apiResponse.errorMessage ?? "Unknown error"); + } + // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); + } else if (apiResponse.messageStatus == 1) { + if (apiResponse.data!.isNotEmpty) { + GetInvoicesListResponseModel getInvoicesListResponseModel = apiResponse.data!.first; + final result = await getIt + .get() + .downloadInvoice(setupId: getInvoicesListResponseModel.setupId!, invoiceNo: getInvoicesListResponseModel.invoiceNo!, projectID: getInvoicesListResponseModel.projectId!); + + result.fold( + (failure) async { + if (onError != null) { + onError(failure.message); + } + }, + (apiResponse) async { + if (apiResponse.messageStatus == 2) { + // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); + } else if (apiResponse.messageStatus == 1) { + if (apiResponse.data != null && apiResponse.data!.isNotEmpty) { + downloadInvoicePDFBase64 = apiResponse.data!; + String path = await Utils.createFileFromString(downloadInvoicePDFBase64!, "pdf"); + try { + OpenFilex.open(path); + } catch (ex) { + showCommonBottomSheetWithoutHeight( + GetIt.instance().navigatorKey.currentContext!, + child: Utils.getErrorWidget(loadingText: "Cannot open file"), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + } else { + downloadInvoicePDFBase64 = ""; + } + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + } else { + showCommonBottomSheetWithoutHeight( + GetIt.instance().navigatorKey.currentContext!, + child: Utils.getErrorWidget(loadingText: "Cannot open invoice"), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + } + }, + ); + } } diff --git a/lib/features/my_appointments/utils/appointment_type.dart b/lib/features/my_appointments/utils/appointment_type.dart index ae3c7516..13811737 100644 --- a/lib/features/my_appointments/utils/appointment_type.dart +++ b/lib/features/my_appointments/utils/appointment_type.dart @@ -37,7 +37,7 @@ class AppointmentType { case 42: return LocaleKeys.confirmed.tr(); case 43: - return LocaleKeys.arrived.tr(); + return LocaleKeys.appointmentArrived.tr(); default: return LocaleKeys.booked.tr(); } diff --git a/lib/features/my_invoices/models/get_invoices_list_response_model.dart b/lib/features/my_invoices/models/get_invoices_list_response_model.dart index fe59c045..a3c9858c 100644 --- a/lib/features/my_invoices/models/get_invoices_list_response_model.dart +++ b/lib/features/my_invoices/models/get_invoices_list_response_model.dart @@ -1,88 +1,97 @@ +import 'dart:convert'; + class GetInvoicesListResponseModel { String? setupId; - int? projectID; - int? patientID; + int? projectId; + int? patientId; int? appointmentNo; String? appointmentDate; - String? appointmentDateN; - int? clinicID; - int? doctorID; + dynamic appointmentDateN; + int? clinicId; + int? doctorId; int? invoiceNo; int? status; String? arrivedOn; String? doctorName; String? doctorNameN; String? clinicName; - num? decimalDoctorRate; - String? doctorImageURL; - num? doctorRate; - num? patientNumber; + double? decimalDoctorRate; + String? doctorImageUrl; + int? doctorRate; + bool? isAllowRefund; + int? patientNumber; String? projectName; - GetInvoicesListResponseModel( - {this.setupId, - this.projectID, - this.patientID, - this.appointmentNo, - this.appointmentDate, - this.appointmentDateN, - this.clinicID, - this.doctorID, - this.invoiceNo, - this.status, - this.arrivedOn, - this.doctorName, - this.doctorNameN, - this.clinicName, - this.decimalDoctorRate, - this.doctorImageURL, - this.doctorRate, - this.patientNumber, - this.projectName}); + GetInvoicesListResponseModel({ + this.setupId, + this.projectId, + this.patientId, + this.appointmentNo, + this.appointmentDate, + this.appointmentDateN, + this.clinicId, + this.doctorId, + this.invoiceNo, + this.status, + this.arrivedOn, + this.doctorName, + this.doctorNameN, + this.clinicName, + this.decimalDoctorRate, + this.doctorImageUrl, + this.doctorRate, + this.isAllowRefund, + this.patientNumber, + this.projectName, + }); + + factory GetInvoicesListResponseModel.fromRawJson(String str) => GetInvoicesListResponseModel.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); - GetInvoicesListResponseModel.fromJson(Map json) { - setupId = json['SetupId']; - projectID = json['ProjectID']; - patientID = json['PatientID']; - appointmentNo = json['AppointmentNo']; - appointmentDate = json['AppointmentDate']; - appointmentDateN = json['AppointmentDateN']; - clinicID = json['ClinicID']; - doctorID = json['DoctorID']; - invoiceNo = json['InvoiceNo']; - status = json['Status']; - arrivedOn = json['ArrivedOn']; - doctorName = json['DoctorName']; - doctorNameN = json['DoctorNameN']; - clinicName = json['ClinicName']; - decimalDoctorRate = json['DecimalDoctorRate']; - doctorImageURL = json['DoctorImageURL']; - doctorRate = json['DoctorRate']; - patientNumber = json['PatientNumber']; - projectName = json['ProjectName']; - } + factory GetInvoicesListResponseModel.fromJson(Map json) => GetInvoicesListResponseModel( + setupId: json["SetupId"], + projectId: json["ProjectID"], + patientId: json["PatientID"], + appointmentNo: json["AppointmentNo"], + appointmentDate: json["AppointmentDate"], + appointmentDateN: json["AppointmentDateN"], + clinicId: json["ClinicID"], + doctorId: json["DoctorID"], + invoiceNo: json["InvoiceNo"], + status: json["Status"], + arrivedOn: json["ArrivedOn"], + doctorName: json["DoctorName"], + doctorNameN: json["DoctorNameN"], + clinicName: json["ClinicName"], + decimalDoctorRate: json["DecimalDoctorRate"]?.toDouble(), + doctorImageUrl: json["DoctorImageURL"], + doctorRate: json["DoctorRate"], + isAllowRefund: json["IsAllowRefund"], + patientNumber: json["PatientNumber"], + projectName: json["ProjectName"], + ); - Map toJson() { - final Map data = {}; - data['SetupId'] = this.setupId; - data['ProjectID'] = this.projectID; - data['PatientID'] = this.patientID; - data['AppointmentNo'] = this.appointmentNo; - data['AppointmentDate'] = this.appointmentDate; - data['AppointmentDateN'] = this.appointmentDateN; - data['ClinicID'] = this.clinicID; - data['DoctorID'] = this.doctorID; - data['InvoiceNo'] = this.invoiceNo; - data['Status'] = this.status; - data['ArrivedOn'] = this.arrivedOn; - data['DoctorName'] = this.doctorName; - data['DoctorNameN'] = this.doctorNameN; - data['ClinicName'] = this.clinicName; - data['DecimalDoctorRate'] = this.decimalDoctorRate; - data['DoctorImageURL'] = this.doctorImageURL; - data['DoctorRate'] = this.doctorRate; - data['PatientNumber'] = this.patientNumber; - data['ProjectName'] = this.projectName; - return data; - } + Map toJson() => { + "SetupId": setupId, + "ProjectID": projectId, + "PatientID": patientId, + "AppointmentNo": appointmentNo, + "AppointmentDate": appointmentDate, + "AppointmentDateN": appointmentDateN, + "ClinicID": clinicId, + "DoctorID": doctorId, + "InvoiceNo": invoiceNo, + "Status": status, + "ArrivedOn": arrivedOn, + "DoctorName": doctorName, + "DoctorNameN": doctorNameN, + "ClinicName": clinicName, + "DecimalDoctorRate": decimalDoctorRate, + "DoctorImageURL": doctorImageUrl, + "DoctorRate": doctorRate, + "IsAllowRefund": isAllowRefund, + "PatientNumber": patientNumber, + "ProjectName": projectName, + }; } diff --git a/lib/features/my_invoices/models/get_pharmacy_invoices_response_model.dart b/lib/features/my_invoices/models/get_pharmacy_invoices_response_model.dart new file mode 100644 index 00000000..cfa19900 --- /dev/null +++ b/lib/features/my_invoices/models/get_pharmacy_invoices_response_model.dart @@ -0,0 +1,99 @@ +class GetPharmacyInvoicesResponseModel { + String? setupId; + int? projectID; + int? pharmacyProjectID; + int? patientID; + int? appointmentNo; + String? appointmentDate; + dynamic appointmentDateN; + int? clinicID; + int? doctorID; + int? invoiceNo; + int? status; + String? arrivedOn; + String? doctorName; + String? doctorNameN; + String? displayInvoiceNo; + String? clinicName; + num? decimalDoctorRate; + String? doctorImageURL; + num? doctorRate; + num? patientNumber; + String? projectName; + dynamic locationID; + + GetPharmacyInvoicesResponseModel( + {this.setupId, + this.projectID, + this.pharmacyProjectID, + this.patientID, + this.appointmentNo, + this.appointmentDate, + this.appointmentDateN, + this.clinicID, + this.doctorID, + this.invoiceNo, + this.status, + this.arrivedOn, + this.doctorName, + this.doctorNameN, + this.displayInvoiceNo, + this.clinicName, + this.decimalDoctorRate, + this.doctorImageURL, + this.doctorRate, + this.patientNumber, + this.projectName, this.locationID}); + + GetPharmacyInvoicesResponseModel.fromJson(Map json) { + setupId = json['SetupId']; + projectID = json['ProjectID']; + pharmacyProjectID = json['PharmacyProjectID']; + patientID = json['PatientID']; + appointmentNo = json['AppointmentNo']; + appointmentDate = json['AppointmentDate']; + appointmentDateN = json['AppointmentDateN']; + clinicID = json['ClinicID']; + doctorID = json['DoctorID']; + invoiceNo = json['InvoiceNo']; + status = json['Status']; + arrivedOn = json['ArrivedOn']; + doctorName = json['DoctorName']; + doctorNameN = json['DoctorNameN']; + displayInvoiceNo = json['DisplayInvoiceNo']; + clinicName = json['ClinicName']; + decimalDoctorRate = json['DecimalDoctorRate']; + doctorImageURL = json['DoctorImageURL']; + doctorRate = json['DoctorRate']; + patientNumber = json['PatientNumber']; + projectName = json['ProjectName']; + locationID = json['LocationId']; + } + + Map toJson() { + final Map data = new Map(); + data['SetupId'] = this.setupId; + data['ProjectID'] = this.projectID; + data['PharmacyProjectID'] = this.pharmacyProjectID; + data['PatientID'] = this.patientID; + data['AppointmentNo'] = this.appointmentNo; + data['AppointmentDate'] = this.appointmentDate; + data['AppointmentDateN'] = this.appointmentDateN; + data['ClinicID'] = this.clinicID; + data['DoctorID'] = this.doctorID; + data['InvoiceNo'] = this.invoiceNo; + data['Status'] = this.status; + data['ArrivedOn'] = this.arrivedOn; + data['DoctorName'] = this.doctorName; + data['DoctorNameN'] = this.doctorNameN; + data['DisplayInvoiceNo'] = this.displayInvoiceNo; + data['ClinicName'] = this.clinicName; + data['DecimalDoctorRate'] = this.decimalDoctorRate; + data['DoctorImageURL'] = this.doctorImageURL; + data['DoctorRate'] = this.doctorRate; + data['PatientNumber'] = this.patientNumber; + data['ProjectName'] = this.projectName; + data['LocationId'] = this.locationID; + return data; + } +} diff --git a/lib/features/my_invoices/my_invoices_repo.dart b/lib/features/my_invoices/my_invoices_repo.dart index 68eee6e5..23f5d06a 100644 --- a/lib/features/my_invoices/my_invoices_repo.dart +++ b/lib/features/my_invoices/my_invoices_repo.dart @@ -5,14 +5,21 @@ import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; import 'package:hmg_patient_app_new/features/my_invoices/models/get_invoice_details_response_model.dart'; import 'package:hmg_patient_app_new/features/my_invoices/models/get_invoices_list_response_model.dart'; +import 'package:hmg_patient_app_new/features/my_invoices/models/get_pharmacy_invoices_response_model.dart'; import 'package:hmg_patient_app_new/services/logger_service.dart'; abstract class MyInvoicesRepo { Future>>> getAllInvoicesList(); + Future>>> getAllPharmacyInvoices(); + Future>> getInvoiceDetails({required num appointmentNo, required num invoiceNo, required int projectID}); Future>> sendInvoiceEmail({required num appointmentNo, required int projectID}); + + Future>> downloadInvoice({required String setupId, required int invoiceNo, required int projectID}); + + Future>> downloadPharmacyInvoice({required String setupId, required int invoiceNo, required int projectID, required dynamic locationID}); } class MyInvoicesRepoImp implements MyInvoicesRepo { @@ -36,7 +43,7 @@ class MyInvoicesRepoImp implements MyInvoicesRepo { }, onSuccess: (response, statusCode, {messageStatus, errorMessage}) { try { - final list = response['List_DentalAppointments']; + final list = response['List_AllInvoices']; final invoicesList = list.map((item) => GetInvoicesListResponseModel.fromJson(item as Map)).toList().cast(); @@ -59,6 +66,47 @@ class MyInvoicesRepoImp implements MyInvoicesRepo { } } + @override + Future>>> getAllPharmacyInvoices() async { + Map mapDevice = {}; + + try { + GenericApiModel>? apiResponse; + Failure? failure; + await apiClient.post( + GET_ALL_PHARMACY_INVOICES, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final list = response['List_AllPharmacyInvoices'] ?? response['PharmacyInvoicesList'] ?? []; + + final invoicesList = list + .map((item) => GetPharmacyInvoicesResponseModel.fromJson(item as Map)) + .toList() + .cast(); + + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: invoicesList, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + @override Future>> getInvoiceDetails({required num appointmentNo, required num invoiceNo, required int projectID}) async { Map mapDevice = { @@ -138,4 +186,81 @@ class MyInvoicesRepoImp implements MyInvoicesRepo { return Left(UnknownFailure(e.toString())); } } + + @override + Future> downloadInvoice({required String setupId, required int invoiceNo, required int projectID}) async { + Map mapDevice = { + "SetupID": setupId, + "ProjectID": projectID, + "InvoiceNo": invoiceNo, + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + DOWNLOAD_INVOICE_PDF, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: response["InvoiceReportPDFContent"], + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future> downloadPharmacyInvoice({required String setupId, required int invoiceNo, required int projectID, required dynamic locationID}) async { + Map mapDevice = { + "SetupID": setupId, + "ProjectID": projectID, + "InvoiceNo": invoiceNo, + "LocationID": locationID, + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + DOWNLOAD_PHARMACY_INVOICE_PDF, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: response["InvoiceReportPDFContent"], + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } } diff --git a/lib/features/my_invoices/my_invoices_view_model.dart b/lib/features/my_invoices/my_invoices_view_model.dart index 20d7869f..49d37927 100644 --- a/lib/features/my_invoices/my_invoices_view_model.dart +++ b/lib/features/my_invoices/my_invoices_view_model.dart @@ -1,26 +1,52 @@ import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/features/my_invoices/models/get_invoice_details_response_model.dart'; import 'package:hmg_patient_app_new/features/my_invoices/models/get_invoices_list_response_model.dart'; +import 'package:hmg_patient_app_new/features/my_invoices/models/get_pharmacy_invoices_response_model.dart'; import 'package:hmg_patient_app_new/features/my_invoices/my_invoices_repo.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; +enum InvoiceFilterType { all, hospital, clinic, doctor } + class MyInvoicesViewModel extends ChangeNotifier { bool isInvoicesListLoading = false; bool isInvoiceDetailsLoading = false; + bool isPharmacyInvoicesLoading = false; MyInvoicesRepo myInvoicesRepo; ErrorHandlerService errorHandlerService; NavigationService navServices; List allInvoicesList = []; + List _originalInvoicesList = []; + List allPharmacyInvoicesList = []; + List _originalPharmacyInvoicesList = []; + InvoiceFilterType currentFilter = InvoiceFilterType.all; late GetInvoiceDetailsResponseModel invoiceDetailsResponseModel; + // Filter bottom sheet properties + List filterDisplayList = []; + List _filterOriginalList = []; + TextEditingController filterSearchController = TextEditingController(); + String? selectedFilterItem; + + String? downloadInvoicePDFBase64 = ""; + String? downloadPharmacyInvoicePDFBase64 = ""; + + int selectedTabIndex = 0; + MyInvoicesViewModel({required this.myInvoicesRepo, required this.errorHandlerService, required this.navServices}); setInvoicesListLoading() { isInvoicesListLoading = true; + isPharmacyInvoicesLoading = true; allInvoicesList.clear(); + allPharmacyInvoicesList.clear(); + _originalInvoicesList.clear(); + currentFilter = InvoiceFilterType.all; + onTabChanged(0); notifyListeners(); } @@ -29,6 +55,11 @@ class MyInvoicesViewModel extends ChangeNotifier { notifyListeners(); } + void onTabChanged(int index) { + selectedTabIndex = index; + notifyListeners(); + } + Future getAllInvoicesList({Function(dynamic)? onSuccess, Function(String)? onError}) async { final result = await myInvoicesRepo.getAllInvoicesList(); @@ -38,12 +69,49 @@ class MyInvoicesViewModel extends ChangeNotifier { notifyListeners(); }, (apiResponse) { + _originalInvoicesList =[]; + allInvoicesList =[]; if (apiResponse.messageStatus == 2) { // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); } else if (apiResponse.messageStatus == 1) { - allInvoicesList = apiResponse.data!; + _originalInvoicesList = apiResponse.data!; + _originalInvoicesList.sort((a, b) => b.appointmentDate!.compareTo(a.appointmentDate!)); + allInvoicesList = List.from(_originalInvoicesList); isInvoicesListLoading = false; - allInvoicesList.sort((a, b) => b.appointmentDate!.compareTo(a.appointmentDate!)); + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + } + + Future getAllPharmacyInvoices({Function(dynamic)? onSuccess, Function(String)? onError}) async { + isPharmacyInvoicesLoading = true; + allPharmacyInvoicesList.clear(); + notifyListeners(); + + final result = await myInvoicesRepo.getAllPharmacyInvoices(); + + result.fold( + (failure) async { + isPharmacyInvoicesLoading = false; + notifyListeners(); + if (onError != null) { + onError(failure.message); + } + }, + (apiResponse) { + _originalPharmacyInvoicesList = []; + allPharmacyInvoicesList = []; + if (apiResponse.messageStatus == 2) { + // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); + } else if (apiResponse.messageStatus == 1) { + _originalPharmacyInvoicesList = apiResponse.data ?? []; + _originalPharmacyInvoicesList.sort((a, b) => (b.appointmentDate ?? '').compareTo(a.appointmentDate ?? '')); + allPharmacyInvoicesList = List.from(_originalPharmacyInvoicesList); + isPharmacyInvoicesLoading = false; notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); @@ -55,11 +123,13 @@ class MyInvoicesViewModel extends ChangeNotifier { Future getInvoiceDetails({required num appointmentNo, required num invoiceNo, required int projectID, Function(dynamic)? onSuccess, Function(String)? onError}) async { final result = await myInvoicesRepo.getInvoiceDetails(appointmentNo: appointmentNo, invoiceNo: invoiceNo, projectID: projectID); - result.fold( (failure) async { isInvoiceDetailsLoading = false; notifyListeners(); + if (onError != null) { + onError(failure.message); + } }, (apiResponse) { if (apiResponse.messageStatus == 2) { @@ -77,6 +147,32 @@ class MyInvoicesViewModel extends ChangeNotifier { ); } + Future downloadInvoicePDF({required String setupId, required int invoiceNo, required int projectID, Function(dynamic)? onSuccess, Function(String)? onError}) async { + final result = await myInvoicesRepo.downloadInvoice(setupId: setupId, invoiceNo: invoiceNo, projectID: projectID); + + result.fold( + (failure) async { + if (onError != null) { + onError(failure.message); + } + }, + (apiResponse) { + if (apiResponse.messageStatus == 2) { + // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); + } else if (apiResponse.messageStatus == 1) { + if (apiResponse.data != null && apiResponse.data!.isNotEmpty) { + downloadInvoicePDFBase64 = apiResponse.data!; + } else { + downloadInvoicePDFBase64 = ""; + } + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + } + Future sendInvoiceEmail({required num appointmentNo, required int projectID, Function(dynamic)? onSuccess, Function(String)? onError}) async { final result = await myInvoicesRepo.sendInvoiceEmail(appointmentNo: appointmentNo, projectID: projectID); @@ -96,4 +192,154 @@ class MyInvoicesViewModel extends ChangeNotifier { }, ); } + + Future downloadPharmacyInvoicePDF({required String setupId, required int invoiceNo, required int projectID, required dynamic locationID, Function(dynamic)? onSuccess, Function(String)? onError}) async { + final result = await myInvoicesRepo.downloadPharmacyInvoice(setupId: setupId, invoiceNo: invoiceNo, projectID: projectID, locationID: locationID); + + result.fold( + (failure) async { + if (onError != null) { + onError(failure.message); + } + }, + (apiResponse) { + if (apiResponse.messageStatus == 2) { + // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); + } else if (apiResponse.messageStatus == 1) { + if (apiResponse.data != null && apiResponse.data!.isNotEmpty) { + downloadPharmacyInvoicePDFBase64 = apiResponse.data!; + } else { + downloadPharmacyInvoicePDFBase64 = ""; + } + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + } + + void filterInvoices(InvoiceFilterType filterType) { + currentFilter = filterType; + + switch (filterType) { + case InvoiceFilterType.all: + allInvoicesList = List.from(_originalInvoicesList); + break; + case InvoiceFilterType.hospital: + allInvoicesList = _originalInvoicesList.where((invoice) { + return invoice.projectName != null && invoice.projectName!.isNotEmpty; + }).toList(); + // Group by hospital (projectName) and sort + allInvoicesList.sort((a, b) { + int projectComparison = (a.projectName ?? '').compareTo(b.projectName ?? ''); + if (projectComparison != 0) return projectComparison; + return b.appointmentDate!.compareTo(a.appointmentDate!); + }); + break; + case InvoiceFilterType.clinic: + allInvoicesList = _originalInvoicesList.where((invoice) { + return invoice.clinicName != null && invoice.clinicName!.isNotEmpty; + }).toList(); + // Group by clinic (clinicName) and sort + allInvoicesList.sort((a, b) { + int clinicComparison = (a.clinicName ?? '').compareTo(b.clinicName ?? ''); + if (clinicComparison != 0) return clinicComparison; + return b.appointmentDate!.compareTo(a.appointmentDate!); + }); + break; + case InvoiceFilterType.doctor: + allInvoicesList = _originalInvoicesList.where((invoice) { + return invoice.doctorName != null && invoice.doctorName!.isNotEmpty; + }).toList(); + // Group by doctor (doctorName) and sort + allInvoicesList.sort((a, b) { + int doctorComparison = (a.doctorName ?? '').compareTo(b.doctorName ?? ''); + if (doctorComparison != 0) return doctorComparison; + return b.appointmentDate!.compareTo(a.appointmentDate!); + }); + break; + } + + notifyListeners(); + } + + void filterInvoicesByHospital(String hospitalName) { + currentFilter = InvoiceFilterType.hospital; + allInvoicesList = _originalInvoicesList + .where((invoice) => invoice.projectName == hospitalName) + .toList(); + allInvoicesList.sort((a, b) => b.appointmentDate!.compareTo(a.appointmentDate!)); + notifyListeners(); + } + + void filterInvoicesByClinic(String clinicName) { + currentFilter = InvoiceFilterType.clinic; + allInvoicesList = _originalInvoicesList + .where((invoice) => invoice.clinicName == clinicName) + .toList(); + allInvoicesList.sort((a, b) => b.appointmentDate!.compareTo(a.appointmentDate!)); + notifyListeners(); + } + + void filterInvoicesByDoctor(String doctorName) { + currentFilter = InvoiceFilterType.doctor; + allInvoicesList = _originalInvoicesList + .where((invoice) => invoice.doctorName == doctorName) + .toList(); + allInvoicesList.sort((a, b) => b.appointmentDate!.compareTo(a.appointmentDate!)); + notifyListeners(); + } + + List getOriginalInvoicesList() { + return _originalInvoicesList; + } + + // Filter bottom sheet methods + void prepareFilterList(InvoiceFilterType filterType) { + Set uniqueItems = {}; + + for (var invoice in _originalInvoicesList) { + String? itemName; + if (filterType == InvoiceFilterType.hospital) { + itemName = invoice.projectName; + } else if (filterType == InvoiceFilterType.clinic) { + itemName = invoice.clinicName; + } else if (filterType == InvoiceFilterType.doctor) { + itemName = getIt().isArabic() ? invoice.doctorNameN : invoice.doctorName; + } + + if (itemName != null && itemName.isNotEmpty) { + uniqueItems.add(itemName); + } + } + + _filterOriginalList = uniqueItems.toList()..sort(); + filterDisplayList = List.from(_filterOriginalList); + filterSearchController.clear(); + selectedFilterItem = null; + notifyListeners(); + } + + void searchFilterItems(String query) { + if (query.isEmpty) { + filterDisplayList = List.from(_filterOriginalList); + } else { + filterDisplayList = _filterOriginalList + .where((item) => item.toLowerCase().contains(query.toLowerCase())) + .toList(); + } + notifyListeners(); + } + + void clearFilterSearch() { + filterSearchController.clear(); + filterDisplayList = List.from(_filterOriginalList); + notifyListeners(); + } + + void selectFilterItem(String item) { + selectedFilterItem = item; + notifyListeners(); + } } diff --git a/lib/features/notifications/notifications_repo.dart b/lib/features/notifications/notifications_repo.dart index 853a9792..a4588042 100644 --- a/lib/features/notifications/notifications_repo.dart +++ b/lib/features/notifications/notifications_repo.dart @@ -12,6 +12,10 @@ abstract class NotificationsRepo { required int pagingSize, required int currentPage, }); + + Future>>> markAsRead({ + required int notificationID, + }); } class NotificationsRepoImp implements NotificationsRepo { @@ -75,4 +79,38 @@ class NotificationsRepoImp implements NotificationsRepo { return Left(UnknownFailure(e.toString())); } } + + @override + Future>>> markAsRead({required int notificationID}) async { + Map mapDevice = {"NotificationPoolID": notificationID}; + + try { + GenericApiModel>? apiResponse; + Failure? failure; + await apiClient.post( + PUSH_NOTIFICATION_SET_MESSAGES_FROM_POOL_AS_READ, + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: [], + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } } diff --git a/lib/features/notifications/notifications_view_model.dart b/lib/features/notifications/notifications_view_model.dart index e15e267c..85049ec9 100644 --- a/lib/features/notifications/notifications_view_model.dart +++ b/lib/features/notifications/notifications_view_model.dart @@ -7,13 +7,15 @@ class NotificationsViewModel extends ChangeNotifier { bool isNotificationsLoading = false; bool hasMoreNotifications = true; + int unreadNotificationsCount = 0; + NotificationsRepo notificationsRepo; ErrorHandlerService errorHandlerService; List notificationsList = []; int currentPage = 0; - int pagingSize = 14; + int pagingSize = 50; int notificationStatusID = 2; // Default to status 2 (e.g., unread) NotificationsViewModel({ @@ -46,6 +48,7 @@ class NotificationsViewModel extends ChangeNotifier { Function(String)? onError, }) async { isNotificationsLoading = true; + unreadNotificationsCount = 0; notifyListeners(); final result = await notificationsRepo.getAllNotifications( @@ -78,6 +81,11 @@ class NotificationsViewModel extends ChangeNotifier { } notificationsList.addAll(newNotifications); + for (var notification in notificationsList) { + if (notification.isRead == false) { + unreadNotificationsCount++; + } + } currentPage++; notifyListeners(); @@ -89,6 +97,21 @@ class NotificationsViewModel extends ChangeNotifier { ); } + Future markAsRead({ + int notificationID = 0, + Function(dynamic)? onSuccess, + Function(String)? onError, + }) async { + final result = await notificationsRepo.markAsRead(notificationID: notificationID); + + result.fold( + (failure) async {}, + (apiResponse) { + refreshNotifications(); + }, + ); + } + Future refreshNotifications({ Function(dynamic)? onSuccess, Function(String)? onError, diff --git a/lib/features/offers_and_discounts/models/offers_and_discounts_response_model.dart b/lib/features/offers_and_discounts/models/offers_and_discounts_response_model.dart new file mode 100644 index 00000000..4a1a250f --- /dev/null +++ b/lib/features/offers_and_discounts/models/offers_and_discounts_response_model.dart @@ -0,0 +1,52 @@ +class OffersAndDiscountsResponseModel { + int? id; + String? title; + String? description; + String? imageUrl; + String? facilityType; // HMC, HMG, or Both + String? startDate; + String? endDate; + String? discount; + bool? isActive; + + OffersAndDiscountsResponseModel({ + this.id, + this.title, + this.description, + this.imageUrl, + this.facilityType, + this.startDate, + this.endDate, + this.discount, + this.isActive, + }); + + factory OffersAndDiscountsResponseModel.fromJson(Map json) { + return OffersAndDiscountsResponseModel( + id: json['ID'] as int?, + title: json['Title'] as String?, + description: json['Description'] as String?, + imageUrl: json['ImageURL'] as String?, + facilityType: json['FacilityType'] as String?, + startDate: json['StartDate'] as String?, + endDate: json['EndDate'] as String?, + discount: json['Discount'] as String?, + isActive: json['IsActive'] as bool?, + ); + } + + Map toJson() { + return { + 'ID': id, + 'Title': title, + 'Description': description, + 'ImageURL': imageUrl, + 'FacilityType': facilityType, + 'StartDate': startDate, + 'EndDate': endDate, + 'Discount': discount, + 'IsActive': isActive, + }; + } +} + diff --git a/lib/features/offers_and_discounts/offers_and_discounts_repo.dart b/lib/features/offers_and_discounts/offers_and_discounts_repo.dart new file mode 100644 index 00000000..53f26a6f --- /dev/null +++ b/lib/features/offers_and_discounts/offers_and_discounts_repo.dart @@ -0,0 +1,102 @@ +import 'package:dartz/dartz.dart'; +import 'package:hmg_patient_app_new/core/api/api_client.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; +import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; +import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; +import 'package:hmg_patient_app_new/features/offers_and_discounts/models/offers_and_discounts_response_model.dart'; +import 'package:hmg_patient_app_new/services/logger_service.dart'; + +abstract class OffersAndDiscountsRepo { + Future>>> getOffersAndDiscounts(); + Future>>> getOffersAndDiscountsHistory(); +} + +class OffersAndDiscountsRepoImp implements OffersAndDiscountsRepo { + final ApiClient apiClient; + final LoggerService loggerService; + + OffersAndDiscountsRepoImp({required this.loggerService, required this.apiClient}); + + @override + Future>>> getOffersAndDiscounts() async { + Map mapDevice = {}; + + try { + GenericApiModel>? apiResponse; + Failure? failure; + await apiClient.post( + GET_OFFERS_AND_DISCOUNTS, // TODO: Replace with actual API endpoint + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final list = response['List_OffersAndDiscounts']; + if (list == null || list.isEmpty) { + throw Exception("offers and discounts list is empty"); + } + + final offers = list.map((item) => OffersAndDiscountsResponseModel.fromJson(item as Map)).toList().cast(); + + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: offers, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>>> getOffersAndDiscountsHistory() async { + Map mapDevice = {}; + + try { + GenericApiModel>? apiResponse; + Failure? failure; + await apiClient.post( + GET_OFFERS_AND_DISCOUNTS_HISTORY, // TODO: Replace with actual API endpoint + body: mapDevice, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final list = response['List_OffersAndDiscountsHistory']; + if (list == null || list.isEmpty) { + throw Exception("offers and discounts history list is empty"); + } + + final historyOffers = list.map((item) => OffersAndDiscountsResponseModel.fromJson(item as Map)).toList().cast(); + + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: historyOffers, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } +} + diff --git a/lib/features/offers_and_discounts/offers_and_discounts_view_model.dart b/lib/features/offers_and_discounts/offers_and_discounts_view_model.dart new file mode 100644 index 00000000..88e15ce6 --- /dev/null +++ b/lib/features/offers_and_discounts/offers_and_discounts_view_model.dart @@ -0,0 +1,449 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/features/offers_and_discounts/models/offers_and_discounts_response_model.dart'; +import 'package:hmg_patient_app_new/features/offers_and_discounts/offers_and_discounts_repo.dart'; +import 'package:hmg_patient_app_new/services/error_handler_service.dart'; + +class OffersAndDiscountsViewModel extends ChangeNotifier { + bool isOffersLoading = false; + bool isHistoryLoading = false; + List selectedFacilities = ['All Offers']; // Default to 'All Offers' + String searchQuery = ''; + + OffersAndDiscountsRepo offersAndDiscountsRepo; + ErrorHandlerService errorHandlerService; + + List offersList = []; + List historyList = []; + + OffersAndDiscountsViewModel({ + required this.offersAndDiscountsRepo, + required this.errorHandlerService, + }) { + _initializeDummyData(); + } + + // Initialize with dummy data for testing + void _initializeDummyData() { + offersList = [ + OffersAndDiscountsResponseModel( + id: 1, + title: 'Summer Health Checkup Package', + description: 'Complete health screening with blood tests, X-ray, and consultation. Get 30% off on all diagnostic services.', + imageUrl: 'https://images.unsplash.com/photo-1576091160399-112ba8d25d1d?w=800', + facilityType: 'Female', + startDate: '2026-05-01', + endDate: '2026-08-31', + discount: '30% OFF', + isActive: true, + ), + OffersAndDiscountsResponseModel( + id: 2, + title: 'Maternity Care Special', + description: 'Comprehensive prenatal care package including ultrasound, consultations, and postnatal support.', + imageUrl: 'https://images.unsplash.com/photo-1584820927498-cfe5211fd8bf?w=800', + facilityType: 'OB-Gyne', + startDate: '2026-05-01', + endDate: '2026-12-31', + discount: '25% OFF', + isActive: true, + ), + OffersAndDiscountsResponseModel( + id: 3, + title: 'Skin Treatment Package', + description: 'Advanced dermatology services including acne treatment, anti-aging procedures, and skin rejuvenation.', + imageUrl: 'https://images.unsplash.com/photo-1570172619644-dfd03ed5d881?w=800', + facilityType: 'Dermatology', + startDate: '2026-05-15', + endDate: '2026-07-15', + discount: '40% OFF', + isActive: true, + ), + OffersAndDiscountsResponseModel( + id: 4, + title: 'CT & MRI Scanning Discount', + description: 'State-of-the-art imaging services with latest technology. Book your scan today!', + imageUrl: 'https://images.unsplash.com/photo-1516549655169-df83a0774514?w=800', + facilityType: 'Radiology', + startDate: '2026-05-01', + endDate: '2026-06-30', + discount: '20% OFF', + isActive: true, + ), + OffersAndDiscountsResponseModel( + id: 5, + title: 'Women\'s Health Screening', + description: 'Comprehensive health package designed specifically for women including mammography, bone density scan, and hormone tests.', + imageUrl: 'https://images.unsplash.com/photo-1559757175-5700dde675bc?w=800', + facilityType: 'Female', + startDate: '2026-05-10', + endDate: '2026-09-30', + discount: '35% OFF', + isActive: true, + ), + OffersAndDiscountsResponseModel( + id: 6, + title: 'Gynecology Consultation Special', + description: 'Free follow-up consultation with every initial gynecology visit. Expert care for all women\'s health needs.', + imageUrl: 'https://images.unsplash.com/photo-1631217868264-e5b90bb7e133?w=800', + facilityType: 'OB-Gyne', + startDate: '2026-05-01', + endDate: '2026-07-31', + discount: 'FREE Follow-up', + isActive: true, + ), + OffersAndDiscountsResponseModel( + id: 7, + title: 'Laser Hair Removal Package', + description: 'Professional laser hair removal treatment with latest technology. Multiple sessions available.', + imageUrl: 'https://images.unsplash.com/photo-1612349317150-e413f6a5b16d?w=800', + facilityType: 'Dermatology', + startDate: '2026-05-20', + endDate: '2026-10-20', + discount: '50% OFF', + isActive: true, + ), + OffersAndDiscountsResponseModel( + id: 8, + title: 'X-Ray & Ultrasound Combo', + description: 'Get both X-ray and ultrasound services at a discounted price. Quick results guaranteed.', + imageUrl: 'https://images.unsplash.com/photo-1530497610245-94d3c16cda28?w=800', + facilityType: 'Radiology', + startDate: '2026-05-01', + endDate: '2026-08-15', + discount: '15% OFF', + isActive: true, + ), + OffersAndDiscountsResponseModel( + id: 9, + title: 'Complete Wellness Package', + description: 'Full body checkup including all major tests, consultations, and health assessment report.', + imageUrl: 'https://images.unsplash.com/photo-1505751172876-fa1923c5c528?w=800', + facilityType: 'Both', + startDate: '2026-05-01', + endDate: '2026-12-31', + discount: '45% OFF', + isActive: true, + ), + OffersAndDiscountsResponseModel( + id: 10, + title: 'Botox & Filler Treatment', + description: 'Anti-aging treatments with certified dermatologists. Natural-looking results guaranteed.', + imageUrl: 'https://images.unsplash.com/photo-1515377905703-c4788e51af15?w=800', + facilityType: 'Dermatology', + startDate: '2026-05-15', + endDate: '2026-06-15', + discount: '30% OFF', + isActive: true, + ), + ]; + + // Past offers for history + historyList = [ + OffersAndDiscountsResponseModel( + id: 101, + title: 'Winter Health Campaign', + description: 'Flu shots and winter wellness packages that were offered during the winter season.', + imageUrl: 'https://images.unsplash.com/photo-1584308666744-24d5c474f2ae?w=800', + facilityType: 'Both', + startDate: '2025-12-01', + endDate: '2026-02-28', + discount: '25% OFF', + isActive: false, + ), + OffersAndDiscountsResponseModel( + id: 102, + title: 'Valentine\'s Day Couple Checkup', + description: 'Special couple health screening packages offered for Valentine\'s Day.', + imageUrl: 'https://images.unsplash.com/photo-1516549655169-df83a0774514?w=800', + facilityType: 'Both', + startDate: '2026-02-01', + endDate: '2026-02-14', + discount: '40% OFF', + isActive: false, + ), + OffersAndDiscountsResponseModel( + id: 103, + title: 'Spring Skin Renewal', + description: 'Spring special dermatology treatments for skin rejuvenation.', + imageUrl: 'https://images.unsplash.com/photo-1556228720-195a672e8a03?w=800', + facilityType: 'Dermatology', + startDate: '2026-03-01', + endDate: '2026-04-30', + discount: '30% OFF', + isActive: false, + ), + OffersAndDiscountsResponseModel( + id: 104, + title: 'Summer Wellness Package - Active', + description: 'Active offer for comprehensive summer health checkup with multiple tests.', + imageUrl: 'https://images.unsplash.com/photo-1576091160399-112ba8d25d1d?w=800', + facilityType: 'Female', + startDate: '2026-05-01', + endDate: '2026-08-31', + discount: '35% OFF', + isActive: true, + ), + OffersAndDiscountsResponseModel( + id: 105, + title: 'Kids Health Screening - Active', + description: 'Currently active pediatric health screening package for children.', + imageUrl: 'https://images.unsplash.com/photo-1559839734-2b71ea197ec2?w=800', + facilityType: 'Both', + startDate: '2026-05-05', + endDate: '2026-09-30', + discount: '20% OFF', + isActive: true, + ), + OffersAndDiscountsResponseModel( + id: 106, + title: 'Laser Treatment Offer - Expired', + description: 'Laser hair removal package that has expired.', + imageUrl: 'https://images.unsplash.com/photo-1612349317150-e413f6a5b16d?w=800', + facilityType: 'Dermatology', + startDate: '2026-01-01', + endDate: '2026-03-31', + discount: '50% OFF', + isActive: false, + ), + OffersAndDiscountsResponseModel( + id: 107, + title: 'Cardiology Consultation Package', + description: 'Heart health checkup with ECG and consultation.', + imageUrl: 'https://images.unsplash.com/photo-1628348068343-c6a848d2b6dd?w=800', + facilityType: 'Both', + startDate: '2025-11-01', + endDate: '2026-01-31', + discount: '25% OFF', + isActive: false, + ), + OffersAndDiscountsResponseModel( + id: 108, + title: 'Dental Care Special - Active', + description: 'Comprehensive dental checkup and cleaning package.', + imageUrl: 'https://images.unsplash.com/photo-1606811971618-4486d14f3f99?w=800', + facilityType: 'Both', + startDate: '2026-04-01', + endDate: '2026-12-31', + discount: '30% OFF', + isActive: true, + ), + OffersAndDiscountsResponseModel( + id: 109, + title: 'Eye Care Package - Expired', + description: 'Complete eye examination with vision testing.', + imageUrl: 'https://images.unsplash.com/photo-1516534775068-ba3e7458af70?w=800', + facilityType: 'Both', + startDate: '2025-10-01', + endDate: '2025-12-31', + discount: '20% OFF', + isActive: false, + ), + OffersAndDiscountsResponseModel( + id: 110, + title: 'Maternity Care Premium', + description: 'Premium prenatal and postnatal care package.', + imageUrl: 'https://images.unsplash.com/photo-1584820927498-cfe5211fd8bf?w=800', + facilityType: 'OB-Gyne', + startDate: '2026-01-15', + endDate: '2026-06-30', + discount: '40% OFF', + isActive: true, + ), + OffersAndDiscountsResponseModel( + id: 111, + title: 'Blood Test Special - Expired', + description: 'Comprehensive blood work panel at discounted rates.', + imageUrl: 'https://images.unsplash.com/photo-1579154204601-01588f351e67?w=800', + facilityType: 'Both', + startDate: '2025-09-01', + endDate: '2025-11-30', + discount: '15% OFF', + isActive: false, + ), + OffersAndDiscountsResponseModel( + id: 112, + title: 'Vaccination Drive', + description: 'Special vaccination package for adults and children.', + imageUrl: 'https://images.unsplash.com/photo-1587854692152-cbe660dbde88?w=800', + facilityType: 'Both', + startDate: '2026-03-01', + endDate: '2026-05-05', + discount: '10% OFF', + isActive: false, + ), + OffersAndDiscountsResponseModel( + id: 113, + title: 'Radiology Imaging Package - Active', + description: 'CT, MRI, and X-ray services at reduced prices.', + imageUrl: 'https://images.unsplash.com/photo-1516549655169-df83a0774514?w=800', + facilityType: 'Radiology', + startDate: '2026-05-01', + endDate: '2026-10-31', + discount: '25% OFF', + isActive: false, // Changed to false - will show as "Availed" + ), + OffersAndDiscountsResponseModel( + id: 114, + title: 'Physiotherapy Sessions', + description: 'Package of 10 physiotherapy sessions.', + imageUrl: 'https://images.unsplash.com/photo-1576091160550-2173dba999ef?w=800', + facilityType: 'Both', + startDate: '2025-12-01', + endDate: '2026-04-01', + discount: '35% OFF', + isActive: false, + ), + OffersAndDiscountsResponseModel( + id: 115, + title: 'Nutrition Consultation Bundle - Active', + description: 'Series of nutrition and diet consultation sessions.', + imageUrl: 'https://images.unsplash.com/photo-1490645935967-10de6ba17061?w=800', + facilityType: 'Both', + startDate: '2026-05-01', + endDate: '2026-11-30', + discount: '20% OFF', + isActive: true, + ), + ]; + } + + // For loading state compatibility with existing code + bool get isRegionListLoading => isOffersLoading; + + initOffersAndDiscounts() { + // Don't clear the list - keep dummy data until API returns + // Don't show loading state since we have dummy data + // offersList.clear(); + // isOffersLoading = true; + notifyListeners(); + getOffersAndDiscounts(); + } + + setIsOffersLoading(bool val) { + isOffersLoading = val; + notifyListeners(); + } + + setIsHistoryLoading(bool val) { + isHistoryLoading = val; + notifyListeners(); + } + + setSelectedFacility(List facilities) { + selectedFacilities = facilities; + notifyListeners(); + } + + setSearchQuery(String query) { + searchQuery = query; + notifyListeners(); + } + + Future getOffersAndDiscounts({Function(dynamic)? onSuccess, Function(String)? onError}) async { + final result = await offersAndDiscountsRepo.getOffersAndDiscounts(); + + result.fold( + (failure) async { + isOffersLoading = false; + notifyListeners(); + // Keep dummy data if API fails - don't clear the list + // await errorHandlerService.handleError(failure: failure); + if (onError != null) { + onError(failure.toString()); + } + }, + (response) { + isOffersLoading = false; + if (response.data != null && response.data!.isNotEmpty) { + offersList = response.data!; + } + // If API returns empty or null, keep the dummy data + notifyListeners(); + if (onSuccess != null) { + onSuccess(response); + } + }, + ); + } + + Future getOffersAndDiscountsHistory({Function(dynamic)? onSuccess, Function(String)? onError}) async { + isHistoryLoading = true; + notifyListeners(); + + final result = await offersAndDiscountsRepo.getOffersAndDiscountsHistory(); + + result.fold( + (failure) async { + isHistoryLoading = false; + notifyListeners(); + // Keep dummy data if API fails - don't clear the list + // await errorHandlerService.handleError(failure: failure); + if (onError != null) { + onError(failure.toString()); + } + }, + (response) { + isHistoryLoading = false; + if (response.data != null && response.data!.isNotEmpty) { + historyList = response.data!; + } + // If API returns empty or null, keep the dummy data + notifyListeners(); + if (onSuccess != null) { + onSuccess(response); + } + }, + ); + } + + List get filteredOffers { + List filtered = offersList; + + // Filter by facility types (multi-select support) + if (!selectedFacilities.contains('All Offers')) { + filtered = filtered.where((offer) { + // Check if offer's facility type matches any of the selected types + return selectedFacilities.any((selectedType) => + offer.facilityType == selectedType || offer.facilityType == 'Both' + ); + }).toList(); + } + + // Filter by search query + if (searchQuery.isNotEmpty) { + filtered = filtered.where((offer) { + final titleMatch = offer.title?.toLowerCase().contains(searchQuery.toLowerCase()) ?? false; + final descriptionMatch = offer.description?.toLowerCase().contains(searchQuery.toLowerCase()) ?? false; + return titleMatch || descriptionMatch; + }).toList(); + } + + return filtered; + } + + List get filteredHistory { + List filtered = historyList; + + // Filter by facility types (multi-select support) + if (!selectedFacilities.contains('All Offers')) { + filtered = filtered.where((offer) { + // Check if offer's facility type matches any of the selected types + return selectedFacilities.any((selectedType) => + offer.facilityType == selectedType || offer.facilityType == 'Both' + ); + }).toList(); + } + + // Filter by search query + if (searchQuery.isNotEmpty) { + filtered = filtered.where((offer) { + final titleMatch = offer.title?.toLowerCase().contains(searchQuery.toLowerCase()) ?? false; + final descriptionMatch = offer.description?.toLowerCase().contains(searchQuery.toLowerCase()) ?? false; + return titleMatch || descriptionMatch; + }).toList(); + } + + return filtered; + } +} + diff --git a/lib/features/payfort/models/payfort_request_insert_model.dart b/lib/features/payfort/models/payfort_request_insert_model.dart new file mode 100644 index 00000000..56f354f5 --- /dev/null +++ b/lib/features/payfort/models/payfort_request_insert_model.dart @@ -0,0 +1,128 @@ +class PayfortRequestInsertModel { + String? accessCode; + String? commandType; + num? amount; + String? customerEmail; + String? orderDescription; + String? serviceID; + String? returnURL; + String? paymentOption; + String? clientRequestID; + String? projectID; + String? fileNumber; + String? customerName; + String? currency; + String? liveServiceID; + String? longitude; + String? latitude; + String? merchantReference; + String? merchantIdentifier; + String? deviceToken; + String? sHARequestPhase; + String? sHAResponsePhase; + String? signature; + String? language; + String? integrationId; + String? iPAdress; + String? isSchedule; + String? appointmentDate; + String? appointmentNo; + String? doctorID; + + PayfortRequestInsertModel( + {this.accessCode, + this.commandType, + this.amount, + this.customerEmail, + this.orderDescription, + this.serviceID, + this.returnURL, + this.paymentOption, + this.clientRequestID, + this.projectID, + this.fileNumber, + this.customerName, + this.currency, + this.liveServiceID, + this.longitude, + this.latitude, + this.merchantReference, + this.merchantIdentifier, + this.deviceToken, + this.sHARequestPhase, + this.sHAResponsePhase, + this.signature, + this.language, + this.integrationId, + this.iPAdress, + this.isSchedule, + this.appointmentDate, + this.appointmentNo, + this.doctorID}); + + PayfortRequestInsertModel.fromJson(Map json) { + accessCode = json['Access_code']; + commandType = json['CommandType']; + amount = json['Amount']; + customerEmail = json['CustomerEmail']; + orderDescription = json['OrderDescription']; + serviceID = json['Service_ID']; + returnURL = json['ReturnURL']; + paymentOption = json['PaymentOption']; + clientRequestID = json['ClientRequestID']; + projectID = json['ProjectID']; + fileNumber = json['FileNumber']; + customerName = json['CustomerName']; + currency = json['Currency']; + liveServiceID = json['Live_ServiceID']; + longitude = json['Longitude']; + latitude = json['Latitude']; + merchantReference = json['Merchant_Reference']; + merchantIdentifier = json['Merchant_Identifier']; + deviceToken = json['DeviceToken']; + sHARequestPhase = json['SHA_RequestPhase']; + sHAResponsePhase = json['SHA_ResponsePhase']; + signature = json['Signature']; + language = json['Language']; + integrationId = json['Integration_Id']; + iPAdress = json['IPAdress']; + isSchedule = json['IsSchedule']; + appointmentDate = json['AppointmentDate']; + appointmentNo = json['AppointmentNo']; + doctorID = json['DoctorID']; + } + + Map toJson() { + final Map data = new Map(); + data['Access_code'] = this.accessCode; + data['CommandType'] = this.commandType; + data['Amount'] = this.amount; + data['CustomerEmail'] = this.customerEmail; + data['OrderDescription'] = this.orderDescription; + data['Service_ID'] = this.serviceID; + data['ReturnURL'] = this.returnURL; + data['PaymentOption'] = this.paymentOption; + data['ClientRequestID'] = this.clientRequestID; + data['ProjectID'] = this.projectID; + data['FileNumber'] = this.fileNumber; + data['CustomerName'] = this.customerName; + data['Currency'] = this.currency; + data['Live_ServiceID'] = this.liveServiceID; + data['Longitude'] = this.longitude; + data['Latitude'] = this.latitude; + data['Merchant_Reference'] = this.merchantReference; + data['Merchant_Identifier'] = this.merchantIdentifier; + data['DeviceToken'] = this.deviceToken; + data['SHA_RequestPhase'] = this.sHARequestPhase; + data['SHA_ResponsePhase'] = this.sHAResponsePhase; + data['Signature'] = this.signature; + data['Language'] = this.language; + data['Integration_Id'] = this.integrationId; + data['IPAdress'] = this.iPAdress; + data['IsSchedule'] = this.isSchedule; + data['AppointmentDate'] = this.appointmentDate; + data['AppointmentNo'] = this.appointmentNo; + data['DoctorID'] = this.doctorID; + return data; + } +} diff --git a/lib/features/payfort/models/payfort_response_insert_model.dart b/lib/features/payfort/models/payfort_response_insert_model.dart new file mode 100644 index 00000000..452ca2a5 --- /dev/null +++ b/lib/features/payfort/models/payfort_response_insert_model.dart @@ -0,0 +1,77 @@ +class PayfortResponseInsertModel { + String? fortId; + String? commandType; + num? amount; + String? sadadOLP; + String? paymentOption; + String? customerIP; + String? eCI; + String? responseMessage; + String? cardNumber; + String? cardBin; + int? installmentsNumber; + String? status; + String? merchantRef; + bool? isRefund; + bool? remmeberMe; + String? reconciliationReference; + + PayfortResponseInsertModel({ + this.fortId, + this.commandType, + this.amount, + this.sadadOLP, + this.paymentOption, + this.customerIP, + this.eCI, + this.responseMessage, + this.cardNumber, + this.cardBin, + this.installmentsNumber, + this.status, + this.merchantRef, + this.isRefund, + this.remmeberMe, + this.reconciliationReference, + }); + + PayfortResponseInsertModel.fromJson(Map json) { + fortId = json['Fort_id']; + commandType = json['CommandType']; + amount = json['Amount']; + sadadOLP = json['Sadad_OLP']; + paymentOption = json['Payment_Option']; + customerIP = json['Customer_IP']; + eCI = json['ECI']; + responseMessage = json['Response_Message']; + cardNumber = json['Card_Number']; + cardBin = json['Card_Bin']; + installmentsNumber = json['Installments_Number']; + status = json['Status']; + merchantRef = json['Merchant_Ref']; + isRefund = json['IsRefund']; + remmeberMe = json['RemmeberMe']; + reconciliationReference = json['Reconciliation_Reference']; + } + + Map toJson() { + final Map data = Map(); + data['Fort_id'] = this.fortId; + data['CommandType'] = this.commandType; + data['Amount'] = this.amount; + data['Sadad_OLP'] = this.sadadOLP; + data['Payment_Option'] = this.paymentOption; + data['Customer_IP'] = this.customerIP; + data['ECI'] = this.eCI; + data['Response_Message'] = this.responseMessage; + data['Card_Number'] = this.cardNumber; + data['Card_Bin'] = this.cardBin; + data['Installments_Number'] = this.installmentsNumber; + data['Status'] = this.status; + data['Merchant_Ref'] = this.merchantRef; + data['IsRefund'] = this.isRefund; + data['RemmeberMe'] = this.remmeberMe; + data['Reconciliation_Reference'] = this.reconciliationReference; + return data; + } +} diff --git a/lib/features/payfort/payfort_repo.dart b/lib/features/payfort/payfort_repo.dart index c00b01c2..3cd27a9d 100644 --- a/lib/features/payfort/payfort_repo.dart +++ b/lib/features/payfort/payfort_repo.dart @@ -8,6 +8,8 @@ import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/ import 'package:hmg_patient_app_new/features/payfort/models/apple_pay_request_insert_model.dart'; import 'package:hmg_patient_app_new/features/payfort/models/payfort_check_payment_status_response_model.dart'; import 'package:hmg_patient_app_new/features/payfort/models/payfort_project_details_resp_model.dart'; +import 'package:hmg_patient_app_new/features/payfort/models/payfort_request_insert_model.dart'; +import 'package:hmg_patient_app_new/features/payfort/models/payfort_response_insert_model.dart'; import 'package:hmg_patient_app_new/features/payfort/models/sdk_token_response_model.dart'; import 'package:hmg_patient_app_new/services/logger_service.dart'; @@ -28,6 +30,10 @@ abstract class PayfortRepo { {required String responseMessage, required String status, required String clientRequestID, required String tamaraOrderID}); Future>> getTamaraInstallmentsDetails(); + + Future>> payfortRequestInsert({required PayfortRequestInsertModel payfortRequestInsertModel}); + + Future>> payfortResponseInsert({required PayfortResponseInsertModel payfortResponseInsertModel}); } class PayfortRepoImp implements PayfortRepo { @@ -291,4 +297,57 @@ class PayfortRepoImp implements PayfortRepo { } } + @override + Future> payfortRequestInsert({required PayfortRequestInsertModel payfortRequestInsertModel}) async { + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post(ADD_PAYFORT_REQUEST, body: payfortRequestInsertModel.toJson(), onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: response, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, isAllowAny: true, isPaymentServices: true); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future> payfortResponseInsert({required PayfortResponseInsertModel payfortResponseInsertModel}) async { + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post(ADD_PAYFORT_RESPONSE, body: payfortResponseInsertModel.toJson(), onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: response, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, isAllowAny: true, isPaymentServices: true); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } } diff --git a/lib/features/payfort/payfort_view_model.dart b/lib/features/payfort/payfort_view_model.dart index dda8f51a..f567264f 100644 --- a/lib/features/payfort/payfort_view_model.dart +++ b/lib/features/payfort/payfort_view_model.dart @@ -1,17 +1,29 @@ +import 'dart:convert'; import 'dart:developer'; +import 'dart:io'; import 'package:amazon_payfort/amazon_payfort.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_amazonpaymentservices/flutter_amazonpaymentservices.dart'; import 'package:hmg_patient_app_new/core/api_consts.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/cache_consts.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/get_tamara_installments_details_response_model.dart'; -import 'package:hmg_patient_app_new/features/payfort/models/apple_pay_request_insert_model.dart'; import 'package:hmg_patient_app_new/features/payfort/models/payfort_check_payment_status_response_model.dart'; import 'package:hmg_patient_app_new/features/payfort/models/payfort_project_details_resp_model.dart'; +import 'package:hmg_patient_app_new/features/payfort/models/payfort_request_insert_model.dart'; +import 'package:hmg_patient_app_new/features/payfort/models/payfort_response_insert_model.dart'; import 'package:hmg_patient_app_new/features/payfort/models/sdk_token_response_model.dart'; import 'package:hmg_patient_app_new/features/payfort/payfort_repo.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:network_info_plus/network_info_plus.dart'; +import 'package:crypto/crypto.dart'; + +import 'models/apple_pay_request_insert_model.dart'; class PayfortViewModel extends ChangeNotifier { PayfortRepo payfortRepo; @@ -27,6 +39,8 @@ class PayfortViewModel extends ChangeNotifier { GetTamaraInstallmentsDetailsResponseModel? getTamaraInstallmentsDetailsResponseModel; bool isTamaraDetailsLoading = false; + SdkTokenResponse? sdkTokenResponse; + PayfortViewModel({required this.payfortRepo, required this.errorHandlerService}); setIsApplePayConfigurationLoading(bool value) { @@ -83,6 +97,44 @@ class PayfortViewModel extends ChangeNotifier { ); } + Future payfortRequestInsert({required PayfortRequestInsertModel payfortRequestInsertModel, Function(dynamic)? onSuccess, Function(String)? onError}) async { + final result = await payfortRepo.payfortRequestInsert(payfortRequestInsertModel: payfortRequestInsertModel); + + result.fold( + (failure) async => await errorHandlerService.handleError(failure: failure), + (apiResponse) { + if (apiResponse.messageStatus == 2) { + // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); + } else if (apiResponse.messageStatus == 1) { + // payfortProjectDetailsRespModel = apiResponse.data!; + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + } + + Future payfortResponseInsert({required PayfortResponseInsertModel payfortResponseInsertModel, Function(dynamic)? onSuccess, Function(String)? onError}) async { + final result = await payfortRepo.payfortResponseInsert(payfortResponseInsertModel: payfortResponseInsertModel); + + result.fold( + (failure) async => await errorHandlerService.handleError(failure: failure), + (apiResponse) { + if (apiResponse.messageStatus == 2) { + // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); + } else if (apiResponse.messageStatus == 1) { + // payfortProjectDetailsRespModel = apiResponse.data!; + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + } + Future checkPaymentStatus({required String transactionID, Function(dynamic)? onSuccess, Function(String)? onError}) async { final result = await payfortRepo.checkPaymentStatus(transactionID: transactionID); @@ -142,6 +194,100 @@ class PayfortViewModel extends ChangeNotifier { ); } + String buildManualPayfortSignature({ + required String accessCode, + required String deviceId, + required String merchantIdentifier, + required String amount, + required String currency, + required String merchantReference, + required String shaRequestPhrase, // Your secret Sandbox phrase + }) { + // 1. Map all properties in strict ALPHABETICAL order by native key names + // Notice that "amount" and "currency" must come first alphabetically + final parameters = { + "access_code": accessCode, + "device_id": deviceId, + "language": "en", + "merchant_identifier": merchantIdentifier, + "service_command": "SDK_TOKEN", + }; + + // 2. Concatenate into a single continuous string wrapped in your SHA Phrase + StringBuffer buffer = StringBuffer(); + buffer.write(shaRequestPhrase); + + parameters.forEach((key, value) { + buffer.write('$key=$value'); + }); + buffer.write(shaRequestPhrase); + + // 3. Convert string to SHA-256 hex signature + var bytes = utf8.encode(buffer.toString()); + return sha256.convert(bytes).toString(); + } + + Future generateSdkResponseForNormalPayment({ + String? accessCode, + String? merchantIdentifier, + String? shaType, + String? shaRequestPhrase, + String? merchantReference, + String? amount, + }) async { + SdkTokenResponse? sdkTokenResponse; + try { + // String? deviceId = await _payfort.getDeviceId(); + String? deviceId = await FlutterAmazonpaymentservices.getUDID; + // String? deviceId = "79B8F1C1-F8BD-40A1-9FDD-C07B8AC44D17"; + + /// Step 2: Generate the Signature + SdkTokenRequest tokenRequest = SdkTokenRequest( + accessCode: accessCode!, + deviceId: deviceId ?? '', + merchantIdentifier: merchantIdentifier!, + ); + + // String? signature = await _payfort.generateSignature( + // shaType: shaType!, + // concatenatedString: tokenRequest.toConcatenatedString(shaRequestPhrase!), + // ); + + String? signature = buildManualPayfortSignature( + accessCode: accessCode, + deviceId: deviceId!, + merchantIdentifier: merchantIdentifier, + amount: "10000", + currency: "SAR", + merchantReference: merchantReference!, + shaRequestPhrase: shaRequestPhrase!, + ); + + tokenRequest = tokenRequest.copyWith(signature: signature); + + this.sdkTokenResponse = SdkTokenResponse(); + + /// Step 3: Generate the SDK Token + final result = await payfortRepo.generateSdkSignatureFromAPI(tokenRequest: tokenRequest); + result.fold( + (failure) async => await errorHandlerService.handleError(failure: failure), + (apiResponse) { + if (apiResponse.messageStatus == 2) { + // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); + } else if (apiResponse.messageStatus == 1) { + // payfortProjectDetailsRespModel = apiResponse.data!; + sdkTokenResponse = apiResponse.data; + this.sdkTokenResponse = sdkTokenResponse; + notifyListeners(); + } + }, + ); + } catch (e) { + log("Error here: ${e.toString()}"); + } + return sdkTokenResponse; + } + Future _generateSdkResponse({ String? applePayAccessCode, String? merchantIdentifier, @@ -187,6 +333,138 @@ class PayfortViewModel extends ChangeNotifier { return sdkTokenResponse; } + Future initiatePaymentWithCard( // var request, { + String paymentOption, + String liveServiceID, + String isScheduleLiveCare, + String appointmentDate, + String appointmentNo, + String doctorID, { + SucceededCallback? onSucceeded, + FailedCallback? onFailed, + String countryIsoCode = "SA", + String transactionID = "", + String amount = "0", + String fileNumber = "0", + String orderDescription = "", + }) async { + dynamic paymentResult; + + try { + await generateSdkResponseForNormalPayment( + accessCode: payfortProjectDetailsRespModel!.accessCode, + merchantIdentifier: payfortProjectDetailsRespModel!.merchantIdentifier, + shaRequestPhrase: payfortProjectDetailsRespModel!.shaRequest, + shaType: "SHA-256", + merchantReference: transactionID, + amount: amount); + + // Force a 100ms microtask buffer to isolate the UI rendering channel + await Future.delayed(const Duration(milliseconds: 350)); + + var request = { + "command": "PURCHASE", + "merchant_reference": transactionID, // Completely alphanumeric testing reference + "amount": Platform.isAndroid ? (num.parse(amount) * 100).toInt() : (num.parse(amount) * 100).toInt().toString(), + // "amount": "100000", + "currency": getIt.get().getAuthenticatedUser()!.outSa! == 0 ? "SAR" : "AED", + "language": getIt.get().isArabic() ? "ar" : "en", + "customer_email": "CustID_$fileNumber@HMG.com", + "sdk_token": sdkTokenResponse!.sdkToken, + "customer_name": "${getIt.get().getAuthenticatedUser()!.firstName} ${getIt.get().getAuthenticatedUser()!.lastName}", + }; + + PayfortRequestInsertModel payfortRequestInsertModel = PayfortRequestInsertModel(); + + payfortRequestInsertModel.accessCode = payfortProjectDetailsRespModel!.accessCode; + payfortRequestInsertModel.commandType = "PURCHASE"; + payfortRequestInsertModel.amount = num.parse(amount); + payfortRequestInsertModel.customerEmail = getIt.get().getAuthenticatedUser()!.emailAddress; + payfortRequestInsertModel.orderDescription = orderDescription; + payfortRequestInsertModel.serviceID = payfortProjectDetailsRespModel!.servID.toString(); + payfortRequestInsertModel.paymentOption = paymentOption; + payfortRequestInsertModel.clientRequestID = transactionID; + payfortRequestInsertModel.projectID = payfortProjectDetailsRespModel!.projectID.toString(); + payfortRequestInsertModel.fileNumber = getIt.get().getAuthenticatedUser()!.patientId.toString(); + payfortRequestInsertModel.customerName = "${getIt.get().getAuthenticatedUser()!.firstName} ${getIt.get().getAuthenticatedUser()!.lastName}"; + payfortRequestInsertModel.currency = getIt.get().getAuthenticatedUser()!.outSa! == 0 ? "SAR" : "AED"; + payfortRequestInsertModel.liveServiceID = liveServiceID; + payfortRequestInsertModel.latitude = getIt.get().userLat.toString(); + payfortRequestInsertModel.longitude = getIt.get().userLong.toString(); + payfortRequestInsertModel.merchantReference = transactionID; + payfortRequestInsertModel.merchantIdentifier = payfortProjectDetailsRespModel!.merchantIdentifier; + payfortRequestInsertModel.deviceToken = await Utils.getStringFromPrefs(CacheConst.pushToken); + payfortRequestInsertModel.sHARequestPhase = payfortProjectDetailsRespModel!.shaRequest; + payfortRequestInsertModel.sHAResponsePhase = payfortProjectDetailsRespModel!.shaResponse; + payfortRequestInsertModel.signature = sdkTokenResponse!.signature; + payfortRequestInsertModel.language = getIt.get().isArabic() ? "ar" : "en"; + payfortRequestInsertModel.integrationId = "1"; + payfortRequestInsertModel.isSchedule = isScheduleLiveCare; + payfortRequestInsertModel.appointmentDate = appointmentDate; + payfortRequestInsertModel.appointmentNo = appointmentNo; + payfortRequestInsertModel.doctorID = doctorID; + + await payfortRequestInsert(payfortRequestInsertModel: payfortRequestInsertModel); + + LoaderBottomSheet.hideLoader(); + + paymentResult = await FlutterAmazonpaymentservices.normalPay(request, ApiConsts.payFortEnvironmentType, isShowResponsePage: false); + final paymentMap = Map.from(paymentResult); + String responseCode = paymentMap['response_code'] ?? ""; + print("Payment Success Data: ${paymentMap.toString()}"); + + PayfortResponseInsertModel payfortResponseInsertModel = PayfortResponseInsertModel(); + + payfortResponseInsertModel.fortId = paymentMap['fort_id'] ?? ""; + payfortResponseInsertModel.commandType = paymentMap['command'] ?? ""; + payfortResponseInsertModel.amount = num.tryParse(paymentMap['amount'] ?? "0") ?? 0; + payfortResponseInsertModel.sadadOLP = ""; + payfortResponseInsertModel.paymentOption = paymentMap['payment_option'] ?? ""; + payfortResponseInsertModel.customerIP = paymentMap['customer_ip'] ?? ""; + payfortResponseInsertModel.eCI = paymentMap['eci'] ?? ""; + payfortResponseInsertModel.responseMessage = paymentMap['response_message'] ?? ""; + payfortResponseInsertModel.cardNumber = paymentMap['card_number'] ?? ""; + payfortResponseInsertModel.cardBin = paymentMap['card_bin'] ?? ""; + payfortResponseInsertModel.installmentsNumber = int.tryParse(paymentMap['installments_number'] ?? "0") ?? 0; + payfortResponseInsertModel.status = paymentMap['status'] ?? ""; + payfortResponseInsertModel.merchantRef = paymentMap['merchant_reference'] ?? ""; + payfortResponseInsertModel.isRefund = false; + payfortResponseInsertModel.remmeberMe = true; + payfortResponseInsertModel.reconciliationReference = ""; + + await payfortResponseInsert(payfortResponseInsertModel: payfortResponseInsertModel); + + if (responseCode.startsWith("14") || responseCode == "20064") { + if (onSucceeded != null) { + onSucceeded(PayFortResult.fromMap(paymentMap)); + } + } else if (responseCode == "13000") { + // Push user to 3D Secure Web View + } else { + // Treat as a payment rejection/technical failure + if (onFailed != null) { + onFailed(PayFortFailureResult.fromMap(paymentMap)); + } + } + } on PlatformException catch (e) { + // If the error is the MethodChannel duplicate reply bug, handle it safely + if (e.message != null && e.message!.contains("Reply already submitted")) { + print("Swallowed native channel race-condition crash safely."); + return; + } + + // Process real payment rejection errors here + print("Actual Payment Failure: ${e.details.toString()}"); + if (onFailed != null) { + final paymentMap = (e.details as Map).cast(); + paymentMap["message"] = e.details["response_message"] ?? "Payment failed with unknown error."; + onFailed(PayFortFailureResult.fromMap(paymentMap)); + } + } catch (error) { + print("Generic Error: $error"); + } + } + Future paymentWithApplePay({ SucceededCallback? onSucceeded, FailedCallback? onFailed, @@ -257,7 +535,6 @@ class PayfortViewModel extends ChangeNotifier { onError!(failure.message); }, (apiResponse) { - log(apiResponse.data); if (onSuccess != null) { onSuccess(apiResponse); } diff --git a/lib/features/paytabs/models/paytabs_transaction_response_model.dart b/lib/features/paytabs/models/paytabs_transaction_response_model.dart new file mode 100644 index 00000000..85760132 --- /dev/null +++ b/lib/features/paytabs/models/paytabs_transaction_response_model.dart @@ -0,0 +1,133 @@ +class PaytabsTransactionResponseModel { + dynamic tranTotal; + String? transactionReference; + String? cartCurrency; + String? cartDescription; + String? cartID; + String? tranCurrency; + String? payResponseReturn; + bool? isPending; + bool? isOnHold; + String? token; + String? transactionType; + bool? isAuthorized; + String? trace; + dynamic cartAmount; + dynamic merchantId; + dynamic profileId; + bool? isProcessed; + dynamic serviceId; + PaymentInfo? paymentInfo; + bool? isSuccess; + + PaytabsTransactionResponseModel( + {this.tranTotal, + this.transactionReference, + this.cartCurrency, + this.cartDescription, + this.cartID, + this.tranCurrency, + this.payResponseReturn, + this.isPending, + this.isOnHold, + this.token, + this.transactionType, + this.isAuthorized, + this.trace, + this.cartAmount, + this.merchantId, + this.profileId, + this.isProcessed, + this.serviceId, + this.paymentInfo, + this.isSuccess}); + + PaytabsTransactionResponseModel.fromJson(Map json) { + tranTotal = json['tran_total']; + transactionReference = json['transactionReference']; + cartCurrency = json['cartCurrency']; + cartDescription = json['cartDescription']; + cartID = json['cartID']; + tranCurrency = json['tran_currency']; + payResponseReturn = json['payResponseReturn']; + isPending = json['isPending']; + isOnHold = json['isOnHold']; + token = json['token']; + transactionType = json['transactionType']; + isAuthorized = json['isAuthorized']; + trace = json['trace']; + cartAmount = json['cartAmount']; + merchantId = json['merchantId']; + profileId = json['profileId']; + isProcessed = json['isProcessed']; + serviceId = json['serviceId']; + paymentInfo = json['paymentInfo'] != null + ? PaymentInfo.fromJson(Map.from(json['paymentInfo'] as Map)) + : null; + isSuccess = json['isSuccess']; + } + + Map toJson() { + final Map data = new Map(); + data['tran_total'] = this.tranTotal; + data['transactionReference'] = this.transactionReference; + data['cartCurrency'] = this.cartCurrency; + data['cartDescription'] = this.cartDescription; + data['cartID'] = this.cartID; + data['tran_currency'] = this.tranCurrency; + data['payResponseReturn'] = this.payResponseReturn; + data['isPending'] = this.isPending; + data['isOnHold'] = this.isOnHold; + data['token'] = this.token; + data['transactionType'] = this.transactionType; + data['isAuthorized'] = this.isAuthorized; + data['trace'] = this.trace; + data['cartAmount'] = this.cartAmount; + data['merchantId'] = this.merchantId; + data['profileId'] = this.profileId; + data['isProcessed'] = this.isProcessed; + data['serviceId'] = this.serviceId; + if (this.paymentInfo != null) { + data['paymentInfo'] = this.paymentInfo!.toJson(); + } + data['isSuccess'] = this.isSuccess; + return data; + } +} + +class PaymentInfo { + String? cardScheme; + String? cardType; + dynamic expiryMonth; + dynamic expiryYear; + String? paymentDescription; + String? paymentMethod; + + PaymentInfo( + {this.cardScheme, + this.cardType, + this.expiryMonth, + this.expiryYear, + this.paymentDescription, + this.paymentMethod}); + + PaymentInfo.fromJson(Map json) { + cardScheme = json['cardScheme']; + cardType = json['cardType']; + expiryMonth = json['expiryMonth']; + expiryYear = json['expiryYear']; + paymentDescription = json['paymentDescription']; + paymentMethod = json['payment_method']; + } + + Map toJson() { + final Map data = new Map(); + data['cardScheme'] = this.cardScheme; + data['cardType'] = this.cardType; + data['expiryMonth'] = this.expiryMonth; + data['expiryYear'] = this.expiryYear; + data['paymentDescription'] = this.paymentDescription; + data['payment_method'] = this.paymentMethod; + return data; + } +} diff --git a/lib/features/paytabs/paytabs_service.dart b/lib/features/paytabs/paytabs_service.dart new file mode 100644 index 00000000..6877389f --- /dev/null +++ b/lib/features/paytabs/paytabs_service.dart @@ -0,0 +1,23 @@ +import 'package:dartz/dartz.dart'; +import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; + +abstract class PaytabsService { + Future> getAskDoctorAppointmentsList(); + + Future> getDoctorResponse(); +} + +class PaytabsServiceImp implements PaytabsService { + @override + Future> getAskDoctorAppointmentsList() { + // TODO: implement getAskDoctorAppointmentsList + throw UnimplementedError(); + } + + @override + Future> getDoctorResponse() { + // TODO: implement getDoctorResponse + throw UnimplementedError(); + } + +} diff --git a/lib/features/paytabs/paytabs_view_model.dart b/lib/features/paytabs/paytabs_view_model.dart new file mode 100644 index 00000000..35a924af --- /dev/null +++ b/lib/features/paytabs/paytabs_view_model.dart @@ -0,0 +1,263 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_paytabs_bridge/BaseBillingShippingInfo.dart'; +import 'package:flutter_paytabs_bridge/IOSThemeConfiguration.dart'; +import 'package:flutter_paytabs_bridge/PaymentSDKNetworks.dart'; +import 'package:flutter_paytabs_bridge/PaymentSdkApms.dart'; +import 'package:flutter_paytabs_bridge/PaymentSdkConfigurationDetails.dart'; +import 'package:flutter_paytabs_bridge/PaymentSdkLocale.dart'; +import 'package:flutter_paytabs_bridge/PaymentSdkTokenFormat.dart'; +import 'package:flutter_paytabs_bridge/PaymentSdkTokeniseType.dart'; +import 'package:flutter_paytabs_bridge/PaymentSdkTransactionType.dart'; +import 'package:flutter_paytabs_bridge/flutter_paytabs_bridge.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/enums.dart'; +import 'package:hmg_patient_app_new/core/paytabs_config.dart'; +import 'package:hmg_patient_app_new/features/paytabs/models/paytabs_transaction_response_model.dart'; + +class PayTabsViewModel extends ChangeNotifier { + late PaymentSdkConfigurationDetails paymentConfiguration; + final AppState appState; + late PaytabsTransactionResponseModel paytabsTransactionResponseModel; + + PayTabsViewModel({ + required this.appState, + }); + + setPaymentConfiguration(String paymentDescription, num amount, {bool isAddCard = false}) { + String cartID = DateTime.now().millisecondsSinceEpoch.toString(); + paymentConfiguration = PaymentSdkConfigurationDetails( + profileId: PaymentSdkDefaultConfig.profileID, + serverKey: PaymentSdkDefaultConfig.serverKey, + clientKey: PaymentSdkDefaultConfig.clientKey, + transactionType: PaymentSdkTransactionType.SALE, + cartId: cartID.substring((cartID.length - 5), cartID.length), + cartDescription: paymentDescription, + merchantName: PaymentSdkDefaultConfig.defaultMerchantName, + locale: appState.isArabic() ? PaymentSdkLocale.AR : PaymentSdkLocale.EN, + merchantApplePayIndentifier: ApiConsts.appEnvironmentType == AppEnvironmentTypeEnum.uat + ? PaymentSdkDefaultConfig.defaultMerchantAppleBundleIDUAT + : PaymentSdkDefaultConfig.defaultMerchantAppleBundleID, + // merchantApplePayIndentifier: PaymentSdkDefaultConfig.defaultMerchantAppleBundleIDUAT, + screentTitle: paymentDescription, + amount: amount.toDouble(), + showBillingInfo: false, + forceShippingInfo: false, + currencyCode: PaymentSdkDefaultConfig.defaultCurrency, + merchantCountryCode: PaymentSdkDefaultConfig.defaultMerchantCountryCode, + billingDetails: BillingDetails( + "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}" ?? "HMG Patient", + "CustID_${appState.getAuthenticatedUser()!.patientId.toString()}@HMG.com", + appState.getAuthenticatedUser()!.mobileNumber ?? "0000000000", + "Riyadh", + "SA", + "Riyadh", + "Riyadh", + "12626"), + shippingDetails: ShippingDetails( + "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}" ?? "HMG Patient", + "CustID_${appState.getAuthenticatedUser()!.patientId.toString()}@HMG.com", + appState.getAuthenticatedUser()!.mobileNumber ?? "0000000000", + "Riyadh", + "SA", + "Riyadh", + "Riyadh", + "12626"), + alternativePaymentMethods: [], + linkBillingNameWithCardHolderName: true, + simplifyApplePayValidation: true, + ); + + paymentConfiguration.iOSThemeConfigurations = IOSThemeConfigurations( + // logoImage: "assets/images/png/hmg_logo.png", + backgroundColor: "ffffff", + backgroundColorDark: "ffffff", + secondaryColor: "191919", + secondaryColorDark: "191919", + primaryColor: "ffffff", + primaryColorDark: "ffffff", + // primaryFont: "Poppins", + titleFontColor: "2E3039", + titleFontColorDark: "2E3039", + // titleFont: "Poppins", + primaryFontColor: "2E3039", + primaryFontColorDark: "2E3039", + inputFieldBackgroundColor: "ffffff", + inputFieldBackgroundColorDark: "ffffff", + placeholderColor: "2E3039", + placeholderColorDark: "2E3039", + buttonColor: "ED1C2B", + buttonColorDark: "ED1C2B", + inputsCornerRadius: 12 + // buttonFont: "Poppins", + ); + paymentConfiguration.tokeniseType = PaymentSdkTokeniseType.USER_OPTIONAL_DEFAULT_ON; + paymentConfiguration.tokenFormat = PaymentSdkTokenFormat.Hex32Format; + + notifyListeners(); + } + + setAlternatePaymentConfiguration(String paymentDescription, num amount, {bool isAddCard = false}) { + String cartID = DateTime.now().millisecondsSinceEpoch.toString(); + paymentConfiguration = PaymentSdkConfigurationDetails( + profileId: PaymentSdkDefaultConfig.profileID, + serverKey: PaymentSdkDefaultConfig.serverKey, + clientKey: PaymentSdkDefaultConfig.clientKey, + transactionType: PaymentSdkTransactionType.SALE, + cartId: cartID.substring((cartID.length - 5), cartID.length), + cartDescription: paymentDescription, + merchantName: PaymentSdkDefaultConfig.defaultMerchantName, + locale: appState.isArabic() ? PaymentSdkLocale.AR : PaymentSdkLocale.EN, + screentTitle: paymentDescription, + amount: amount.toDouble(), + showBillingInfo: false, + forceShippingInfo: false, + currencyCode: PaymentSdkDefaultConfig.defaultCurrency, + merchantCountryCode: PaymentSdkDefaultConfig.defaultMerchantCountryCode, + billingDetails: BillingDetails("${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}" ?? "HMG Patient", + "CustID_${appState.getAuthenticatedUser()!.patientId.toString()}@HMG.com", appState.getAuthenticatedUser()!.mobileNumber ?? "0000000000", "Riyadh", "SA", "Riyadh", "Riyadh", "12626"), + shippingDetails: ShippingDetails("${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}" ?? "HMG Patient", + "CustID_${appState.getAuthenticatedUser()!.patientId.toString()}@HMG.com", appState.getAuthenticatedUser()!.mobileNumber ?? "0000000000", "Riyadh", "SA", "Riyadh", "Riyadh", "12626"), + alternativePaymentMethods: [PaymentSdkAPms.TAMARA], + linkBillingNameWithCardHolderName: false, + simplifyApplePayValidation: true, + ); + + paymentConfiguration.iOSThemeConfigurations = IOSThemeConfigurations( + // logoImage: "assets/images/png/hmg_logo.png", + backgroundColor: "ffffff", + backgroundColorDark: "ffffff", + secondaryColor: "191919", + secondaryColorDark: "191919", + primaryColor: "ffffff", + primaryColorDark: "ffffff", + // primaryFont: "Poppins", + titleFontColor: "2E3039", + titleFontColorDark: "2E3039", + // titleFont: "Poppins", + primaryFontColor: "2E3039", + primaryFontColorDark: "2E3039", + inputFieldBackgroundColor: "ffffff", + inputFieldBackgroundColorDark: "ffffff", + placeholderColor: "2E3039", + placeholderColorDark: "2E3039", + buttonColor: "ED1C2B", + buttonColorDark: "ED1C2B", + inputsCornerRadius: 12 + // buttonFont: "Poppins", + ); + paymentConfiguration.tokeniseType = PaymentSdkTokeniseType.USER_OPTIONAL_DEFAULT_ON; + paymentConfiguration.tokenFormat = PaymentSdkTokenFormat.Hex32Format; + + notifyListeners(); + } + + startApplePayPayment({Function(PaytabsTransactionResponseModel)? onSuccess, Function(String)? onError}) async { + bool _callbackFired = false; // prevent duplicate callback invocations + + await FlutterPaytabsBridge.startApplePayPayment(paymentConfiguration, (event) { + if (_callbackFired) return; // ignore any subsequent callback calls + + final transactionDetails = event["data"] as Map?; + if (event["status"] == "success") { + _callbackFired = true; + // Cast Map to Map + final data = Map.from(event["data"] as Map); + paytabsTransactionResponseModel = PaytabsTransactionResponseModel.fromJson(data); + if (paytabsTransactionResponseModel.isSuccess!) { + onSuccess!(paytabsTransactionResponseModel); + } else { + // Transaction was processed but failed + final reason = + transactionDetails?["payResponseReturn"] ?? transactionDetails?["responseMessage"] ?? transactionDetails?["message"] ?? "Unknown error"; + final responseCode = transactionDetails?["responseCode"] ?? ""; + final errorMessage = + responseCode.toString().isNotEmpty ? "Transaction failed (Code: $responseCode): $reason" : "Transaction failed: $reason"; + onError!(errorMessage); + } + } else if (event["status"] == "error") { + _callbackFired = true; + final errorMessage = event["message"] ?? "An error occurred"; + debugPrint("Error occurred in transaction: $errorMessage"); + debugPrint("Full error event: $event"); + onError!(errorMessage); + } else if (event["status"] == "event") { + // Intermediate SDK events – do NOT mark _callbackFired, just log + final eventMessage = event["message"] ?? "Event occurred"; + debugPrint("Event occurred: $eventMessage"); + } + }); + } + + startCardPayment({Function(PaytabsTransactionResponseModel)? onSuccess, Function(String)? onError}) { + bool _callbackFired = false; // prevent duplicate callback invocations + + FlutterPaytabsBridge.startCardPayment(paymentConfiguration, (event) { + if (_callbackFired) return; // ignore any subsequent callback calls + + final transactionDetails = event["data"] as Map?; + if (event["status"] == "success") { + _callbackFired = true; + // Cast Map to Map + final data = Map.from(event["data"] as Map); + paytabsTransactionResponseModel = PaytabsTransactionResponseModel.fromJson(data); + if (paytabsTransactionResponseModel.isSuccess!) { + onSuccess!(paytabsTransactionResponseModel); + } else { + // Transaction was processed but failed + final reason = + transactionDetails?["payResponseReturn"] ?? transactionDetails?["responseMessage"] ?? transactionDetails?["message"] ?? "Unknown error"; + final responseCode = transactionDetails?["responseCode"] ?? ""; + final errorMessage = + responseCode.toString().isNotEmpty ? "Transaction failed (Code: $responseCode): $reason" : "Transaction failed: $reason"; + onError!(errorMessage); + } + } else if (event["status"] == "error") { + _callbackFired = true; + final errorMessage = event["message"] ?? "An error occurred"; + debugPrint("Error occurred in transaction: $errorMessage"); + debugPrint("Full error event: $event"); + onError!(errorMessage); + } else if (event["status"] == "event") { + // Intermediate SDK events – do NOT mark _callbackFired, just log + final eventMessage = event["message"] ?? "Event occurred"; + debugPrint("Event occurred: $eventMessage"); + } + }); + } + + startAlternatePayment({Function(PaytabsTransactionResponseModel)? onSuccess, Function(String)? onError}) { + bool _callbackFired = false; // prevent duplicate callback invocations + + FlutterPaytabsBridge.startAlternativePaymentMethod(paymentConfiguration, (event) { + if (_callbackFired) return; // ignore any subsequent callback calls + + final transactionDetails = event["data"] as Map?; + if (event["status"] == "success") { + _callbackFired = true; + // Cast Map to Map + final data = Map.from(event["data"] as Map); + paytabsTransactionResponseModel = PaytabsTransactionResponseModel.fromJson(data); + if (paytabsTransactionResponseModel.isSuccess!) { + onSuccess!(paytabsTransactionResponseModel); + } else { + // Transaction was processed but failed + final reason = transactionDetails?["payResponseReturn"] ?? transactionDetails?["responseMessage"] ?? transactionDetails?["message"] ?? "Unknown error"; + final responseCode = transactionDetails?["responseCode"] ?? ""; + final errorMessage = responseCode.toString().isNotEmpty ? "Transaction failed (Code: $responseCode): $reason" : "Transaction failed: $reason"; + onError!(errorMessage); + } + } else if (event["status"] == "error") { + _callbackFired = true; + final errorMessage = event["message"] ?? "An error occurred"; + debugPrint("Error occurred in transaction: $errorMessage"); + debugPrint("Full error event: $event"); + onError!(errorMessage); + } else if (event["status"] == "event") { + // Intermediate SDK events – do NOT mark _callbackFired, just log + final eventMessage = event["message"] ?? "Event occurred"; + debugPrint("Event occurred: $eventMessage"); + } + }); + } +} diff --git a/lib/features/prescriptions/models/resp_models/prescription_analysis_response_model.dart b/lib/features/prescriptions/models/resp_models/prescription_analysis_response_model.dart new file mode 100644 index 00000000..c0c63f40 --- /dev/null +++ b/lib/features/prescriptions/models/resp_models/prescription_analysis_response_model.dart @@ -0,0 +1,79 @@ +class PrescriptionAnalysisResponse { + String? prescriptionSummary; + List? medicinesAnalysis; + List? importantWarnings; + List? medicineInteractions; + String? followUpNeeded; + int? languageId; + + PrescriptionAnalysisResponse({ + this.prescriptionSummary, + this.medicinesAnalysis, + this.importantWarnings, + this.medicineInteractions, + this.followUpNeeded, + this.languageId, + }); + + PrescriptionAnalysisResponse.fromJson(Map json) { + prescriptionSummary = json['prescription_summary']; + if (json['medicines_analysis'] != null) { + medicinesAnalysis = []; + json['medicines_analysis'].forEach((v) { + medicinesAnalysis!.add(MedicineAnalysis.fromJson(v)); + }); + } + importantWarnings = json['important_warnings'] != null ? json['important_warnings'].cast() : []; + medicineInteractions = json['medicine_interactions'] != null ? json['medicine_interactions'].cast() : []; + followUpNeeded = json['follow_up_needed']; + languageId = json['language_id']; + } + + Map toJson() { + final Map data = {}; + data['prescription_summary'] = prescriptionSummary; + if (medicinesAnalysis != null) { + data['medicines_analysis'] = medicinesAnalysis!.map((v) => v.toJson()).toList(); + } + data['important_warnings'] = importantWarnings; + data['medicine_interactions'] = medicineInteractions; + data['follow_up_needed'] = followUpNeeded; + data['language_id'] = languageId; + return data; + } +} + +class MedicineAnalysis { + String? medicineName; + String? benefit; + List? commonSideEffects; + List? seriousWarnings; + String? storage; + + MedicineAnalysis({ + this.medicineName, + this.benefit, + this.commonSideEffects, + this.seriousWarnings, + this.storage, + }); + + MedicineAnalysis.fromJson(Map json) { + medicineName = json['medicine_name']; + benefit = json['benefit']; + commonSideEffects = json['common_side_effects'] != null ? json['common_side_effects'].cast() : []; + seriousWarnings = json['serious_warnings'] != null ? json['serious_warnings'].cast() : []; + storage = json['storage']; + } + + Map toJson() { + final Map data = {}; + data['medicine_name'] = medicineName; + data['benefit'] = benefit; + data['common_side_effects'] = commonSideEffects; + data['serious_warnings'] = seriousWarnings; + data['storage'] = storage; + return data; + } +} + diff --git a/lib/features/prescriptions/models/resp_models/prescription_detail_response_model.dart b/lib/features/prescriptions/models/resp_models/prescription_detail_response_model.dart index b35cfef7..ef1bc6f7 100644 --- a/lib/features/prescriptions/models/resp_models/prescription_detail_response_model.dart +++ b/lib/features/prescriptions/models/resp_models/prescription_detail_response_model.dart @@ -33,6 +33,7 @@ class PrescriptionDetailResponseModel { num? scaleOffset; String? startDate; bool? hasReminder; + bool? isHomeMedicineDeliverySupported; PrescriptionDetailResponseModel( {this.address, @@ -68,7 +69,7 @@ class PrescriptionDetailResponseModel { this.sKU, this.scaleOffset, this.startDate, - this.hasReminder = false}); + this.hasReminder = false, this.isHomeMedicineDeliverySupported}); PrescriptionDetailResponseModel.fromJson(Map json) { address = json['Address']; diff --git a/lib/features/prescriptions/prescriptions_repo.dart b/lib/features/prescriptions/prescriptions_repo.dart index 3bfcc7fe..2681b2da 100644 --- a/lib/features/prescriptions/prescriptions_repo.dart +++ b/lib/features/prescriptions/prescriptions_repo.dart @@ -5,6 +5,7 @@ import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; import 'package:dartz/dartz.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/features/prescriptions/models/resp_models/patient_prescriptions_response_model.dart'; +import 'package:hmg_patient_app_new/features/prescriptions/models/resp_models/prescription_analysis_response_model.dart'; import 'package:hmg_patient_app_new/features/prescriptions/models/resp_models/prescription_delivery_response_model.dart'; import 'package:hmg_patient_app_new/features/prescriptions/models/resp_models/prescription_detail_response_model.dart'; import 'package:hmg_patient_app_new/services/logger_service.dart'; @@ -23,6 +24,8 @@ abstract class PrescriptionsRepo { {required String latitude, required String longitude, required String appointmentNo, required String dischargeID, required String projectID}); Future>> getPrescriptionOrdersList(); + + Future>> getPrescriptionAiAnalysis({required dynamic payload, required int langId}); } class PrescriptionsRepoImp implements PrescriptionsRepo { @@ -99,7 +102,11 @@ class PrescriptionsRepoImp implements PrescriptionsRepo { // throw Exception("prescription list is empty"); } - final prescriptionOrders = list.map((item) => PrescriptionDetailResponseModel.fromJson(item as Map)).toList().cast(); + final List prescriptionOrders = + list.map((item) => PrescriptionDetailResponseModel.fromJson(item as Map)).toList().cast(); + if (prescriptionOrders.isNotEmpty) { + prescriptionOrders.first.isHomeMedicineDeliverySupported = response['IsHomeMedicineDeliverySupported'] ?? false; + } apiResponse = GenericApiModel>( messageStatus: messageStatus, @@ -240,6 +247,7 @@ class PrescriptionsRepoImp implements PrescriptionsRepo { "AppointmentNo": appointmentNo, "DischargeID": dischargeID, "ProjectID": projectID, + "Channel": 3, }; try { @@ -310,4 +318,47 @@ class PrescriptionsRepoImp implements PrescriptionsRepo { return Left(UnknownFailure(e.toString())); } } + + @override + Future>> getPrescriptionAiAnalysis({required dynamic payload, required int langId}) async { + try { + GenericApiModel? apiResponse; + Failure? failure; + await apiClient.post( + ApiConsts.getAiPrescriptionAnalysis, + isAllowAny: true, + isExternal: true, + apiHeaders: { + 'Accept-Language': 'en-US,en;q=0.7', + 'Content-Type': 'application/json', + 'X-API-KEY': '9d9d2ac4c1fc302299dbb0fbb1b7fea1', + 'accept': 'application/json', + }, + body: {"medicines": payload, "language_id": langId}, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final analysisResponse = PrescriptionAnalysisResponse.fromJson(response); + apiResponse = GenericApiModel( + messageStatus: 1, + statusCode: statusCode, + errorMessage: null, + data: analysisResponse, + ); + } catch (e) { + loggerService.logError('Error parsing prescription AI analysis: $e'); + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } } + diff --git a/lib/features/prescriptions/prescriptions_view_model.dart b/lib/features/prescriptions/prescriptions_view_model.dart index c0f9c7b5..cdd85b9f 100644 --- a/lib/features/prescriptions/prescriptions_view_model.dart +++ b/lib/features/prescriptions/prescriptions_view_model.dart @@ -9,6 +9,7 @@ import 'package:hmg_patient_app_new/features/location/location_view_model.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/calender_utils_new.dart'; import 'package:hmg_patient_app_new/features/prescriptions/models/resp_models/patient_prescriptions_response_model.dart'; +import 'package:hmg_patient_app_new/features/prescriptions/models/resp_models/prescription_analysis_response_model.dart'; import 'package:hmg_patient_app_new/features/prescriptions/models/resp_models/prescription_delivery_response_model.dart'; import 'package:hmg_patient_app_new/features/prescriptions/models/resp_models/prescription_detail_response_model.dart'; import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_repo.dart'; @@ -17,8 +18,12 @@ import 'package:hmg_patient_app_new/presentation/prescriptions/prescription_deli import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/map/map_utility_screen.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:hmg_patient_app_new/services/prescription_reminder_prefs_service.dart'; +import 'package:permission_handler/permission_handler.dart'; +import 'package:provider/provider.dart'; class PrescriptionsViewModel extends ChangeNotifier { bool isPrescriptionsOrdersLoading = false; @@ -51,10 +56,15 @@ class PrescriptionsViewModel extends ChangeNotifier { bool isPrescriptionsDataNeedsReloading = true; List prescriptionsOrderList = []; + DateTime? selectedReminderTime; + + PrescriptionAnalysisResponse? prescriptionAnalysisResponse; + bool isPrescriptionAIAnalysisNeedsToBeShown = false; + PrescriptionsViewModel({required this.prescriptionsRepo, required this.errorHandlerService, required this.navServices}); initPrescriptionsViewModel() { - // if (isPrescriptionsDataNeedsReloading) { + if (isPrescriptionsDataNeedsReloading) { patientPrescriptionOrders.clear(); patientPrescriptionOrdersByClinic.clear(); patientPrescriptionOrdersByHospital.clear(); @@ -62,15 +72,29 @@ class PrescriptionsViewModel extends ChangeNotifier { prescriptionsOrderList.clear(); isPrescriptionsOrdersLoading = true; getPatientPrescriptionOrders(); - // } + } isSortByClinic = true; isPrescriptionsDeliveryOrdersLoading = true; notifyListeners(); } - - checkIfReminderExistForPrescription(int index) async { - prescriptionDetailsList[index].hasReminder = await CalenderUtilsNew.instance.checkIfEventExist(prescriptionDetailsList[index].itemID?.toString() ?? ""); + Future checkIfReminderExistForPrescription(int index) async { + final item = prescriptionDetailsList[index]; + // Check device calendar + final calendarHasEvent = await CalenderUtilsNew.instance.checkIfEventExist(item.itemID?.toString() ?? ""); + prescriptionDetailsList[index].hasReminder = calendarHasEvent; + + // Sync the SharedPreferences status to match the calendar reality + if (item.appointmentNo != null && item.itemID != null && item.projectID != null) { + await PrescriptionReminderPrefsService.instance.setReminderStatus( + appointmentNo: item.appointmentNo!, + itemDescription: item.itemDescription ?? '', + itemID: item.itemID!, + projectID: item.projectID!, + hasReminder: calendarHasEvent, + ); + } + return calendarHasEvent; } setPrescriptionsDetailsLoading() { @@ -84,6 +108,18 @@ class PrescriptionsViewModel extends ChangeNotifier { if (index != -1) { prescriptionDetailsList[index].hasReminder = value; notifyListeners(); + + // Persist to SharedPreferences + final target = prescriptionDetailsList[index]; + if (target.appointmentNo != null && target.itemID != null && target.projectID != null) { + PrescriptionReminderPrefsService.instance.setReminderStatus( + appointmentNo: target.appointmentNo!, + itemDescription: target.itemDescription ?? '', + itemID: target.itemID!, + projectID: target.projectID!, + hasReminder: value, + ); + } } } @@ -102,9 +138,9 @@ class PrescriptionsViewModel extends ChangeNotifier { } Future getPatientPrescriptionOrders({Function(dynamic)? onSuccess, Function(String)? onError}) async { - // if (!isPrescriptionsDataNeedsReloading) { - // return; - // } + if (!isPrescriptionsDataNeedsReloading) { + return; + } final result = await prescriptionsRepo.getPatientPrescriptionOrders(patientId: "1231755"); @@ -157,14 +193,33 @@ class PrescriptionsViewModel extends ChangeNotifier { (failure) async { onError!(failure.message); }, - (apiResponse) { + (apiResponse) async { if (apiResponse.messageStatus == 2) { // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); } else if (apiResponse.messageStatus == 1) { prescriptionDetailsList = apiResponse.data!; - prescriptionDetailsList.forEach((element) async { - await checkIfReminderExistForPrescription(prescriptionDetailsList.indexOf(element)); - }); + + // Always load reminder status from SharedPreferences first + final savedReminders = await PrescriptionReminderPrefsService.instance.getAllReminders(); + for (int i = 0; i < prescriptionDetailsList.length; i++) { + final item = prescriptionDetailsList[i]; + if (item.appointmentNo != null && item.itemID != null && item.projectID != null) { + final key = '${item.appointmentNo}_${item.itemID}_${item.projectID}'; + try { + final saved = savedReminders.firstWhere((e) => e.uniqueKey == key); + prescriptionDetailsList[i].hasReminder = saved.hasReminder; + } catch (_) { + // No entry found — keep default false + } + } + } + + // If calendar permissions are granted, verify against actual calendar events + if (await Permission.calendarFullAccess.isGranted && await Permission.calendarWriteOnly.isGranted) { + prescriptionDetailsList.forEach((element) async { + await checkIfReminderExistForPrescription(prescriptionDetailsList.indexOf(element)); + }); + } isPrescriptionsDetailsLoading = false; notifyListeners(); if (onSuccess != null) { @@ -180,11 +235,16 @@ class PrescriptionsViewModel extends ChangeNotifier { result.fold( (failure) async { - onError!(failure.message); + if (onError != null) { + onError(failure.message); + } }, (apiResponse) { if (apiResponse.messageStatus == 2) { - onError!(apiResponse.errorMessage!); + if (onError != null) { + onError(apiResponse.errorMessage ?? "An error occurred while fetching the prescription instructions PDF."); + } + // onError!(apiResponse.errorMessage!); // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); } else if (apiResponse.messageStatus == 1) { prescriptionInstructionsPDFLink = apiResponse.data; @@ -219,7 +279,11 @@ class PrescriptionsViewModel extends ChangeNotifier { } showError(String errorMessage) { - getIt().showErrorBottomSheet(message: errorMessage); + getIt().pop(); + Future.delayed(Duration(milliseconds: 500), (){ + getIt().showErrorBottomSheet(message: errorMessage); + }); + } Future submitPrescriptionDeliveryRequest( @@ -249,7 +313,9 @@ class PrescriptionsViewModel extends ChangeNotifier { ); } - void initiatePrescriptionDelivery() async { + void initiatePrescriptionDelivery(BuildContext context) async { + context.read().placeValueInController(); + getIt.get().getLocation( isShowConfirmDialog: true, onSuccess: (position) async { @@ -262,7 +328,7 @@ class PrescriptionsViewModel extends ChangeNotifier { isGmsAvailable: getIt.get().isGMSAvailable, ), direction: AxisDirection.down), - ); + ) ?? false; print("Location Selected: $result"); if (result) { LocationViewModel locationViewModel = getIt.get(); @@ -286,8 +352,11 @@ class PrescriptionsViewModel extends ChangeNotifier { result.fold( (failure) async { isPrescriptionsDeliveryOrdersLoading = false; + prescriptionsOrderList.clear(); notifyListeners(); - onError!(failure.message); + if(onError != null) { + onError(failure.message); + } }, (apiResponse) { if (apiResponse.messageStatus == 2) { @@ -297,6 +366,23 @@ class PrescriptionsViewModel extends ChangeNotifier { } else if (apiResponse.messageStatus == 1) { isPrescriptionsDeliveryOrdersLoading = false; prescriptionsOrderList = apiResponse.data!; + + // Sort by created date (newest first) + prescriptionsOrderList.sort((a, b) { + try { + if (a.created == null && b.created == null) return 0; + if (a.created == null) return 1; + if (b.created == null) return -1; + + DateTime dateA = DateTime.parse(a.created!); + DateTime dateB = DateTime.parse(b.created!); + return dateB.compareTo(dateA); // Descending order (newest first) + } catch (e) { + print('Error parsing date for sorting: $e'); + return 0; + } + }); + notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); @@ -305,4 +391,65 @@ class PrescriptionsViewModel extends ChangeNotifier { }, ); } + + void serSelectedTime(DateTime dateTime) { + selectedReminderTime = dateTime; + notifyListeners(); + } + + void setIsPrescriptionAIAnalysisNeedsToBeShown(bool value) { + isPrescriptionAIAnalysisNeedsToBeShown = value; + } + + Future getPrescriptionAiAnalysis({ + required List prescriptions, + required int langId, + required String loadingText, + required Function(dynamic) onNavigate, + }) async { + LoaderBottomSheet.showLoader( + loadingText: loadingText, + showCloseButton: true, + onCloseTap: () { + setIsPrescriptionAIAnalysisNeedsToBeShown(false); + }, + ); + + // Prepare medicines payload + List> medicines = []; + for (var prescription in prescriptions) { + if (prescription.itemDescription != null && prescription.itemDescription!.isNotEmpty) { + medicines.add({ + "name": prescription.itemDescription ?? "", + "frequency": prescription.frequency ?? "", + "duration": "${prescription.days ?? 0} Days", + }); + } + } + + final result = await prescriptionsRepo.getPrescriptionAiAnalysis( + payload: medicines, + langId: langId, + ); + + result.fold( + (failure) async { + LoaderBottomSheet.hideLoader(); + if (isPrescriptionAIAnalysisNeedsToBeShown) { + await errorHandlerService.handleError(failure: failure); + } + }, + (apiResponse) { + LoaderBottomSheet.hideLoader(); + if (apiResponse.messageStatus == 2) { + // Error handling + } else if (apiResponse.messageStatus == 1) { + if (isPrescriptionAIAnalysisNeedsToBeShown) { + prescriptionAnalysisResponse = apiResponse.data; + onNavigate(apiResponse.data); + } + } + }, + ); + } } diff --git a/lib/features/profile_picture/profile_picture_view_model.dart b/lib/features/profile_picture/profile_picture_view_model.dart new file mode 100644 index 00000000..017ca5d8 --- /dev/null +++ b/lib/features/profile_picture/profile_picture_view_model.dart @@ -0,0 +1,343 @@ +import 'dart:convert'; +import 'dart:io'; +import 'dart:typed_data'; + +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; + +/// ViewModel for managing profile picture state and operations +/// Handles caching, loading, uploading, and user switching scenarios +class ProfilePictureViewModel extends ChangeNotifier { + final AppState _appState; + final ProfileSettingsViewModel _profileSettingsViewModel; + + ProfilePictureViewModel({ + required AppState appState, + required ProfileSettingsViewModel profileSettingsViewModel, + }) : _appState = appState, + _profileSettingsViewModel = profileSettingsViewModel; + + // State variables + File? _selectedImage; + int? _currentPatientId; + bool _isInitialLoadTriggered = false; + + /// Cache decoded image bytes to avoid decoding base64 on every rebuild + Uint8List? _cachedImageBytes; + String? _cachedImageDataHash; + + /// ValueNotifier for targeted profile image updates (prevents full screen rebuild) + final ValueNotifier _profileImageVersion = ValueNotifier(0); + + // Getters + File? get selectedImage => _selectedImage; + + Uint8List? get cachedImageBytes => _cachedImageBytes; + + bool get isInitialLoadTriggered => _isInitialLoadTriggered; + + int? get currentPatientId => _currentPatientId; + + ValueNotifier get profileImageVersion => _profileImageVersion; + + /// Initialize the provider with current user data + void initialize() { + _currentPatientId = _appState.getAuthenticatedUser()?.patientId; + _tryCacheExistingImage(); + print('🔧 ProfilePictureViewModel initialized for patient: $_currentPatientId'); + } + + /// Trigger initial profile image load after first frame + void triggerInitialLoad() { + if (_isInitialLoadTriggered) return; + _isInitialLoadTriggered = true; + + final patientID = _appState.getAuthenticatedUser()?.patientId; + if (patientID == null) { + print('⚠️ No authenticated user found'); + return; + } + + print('📥 Loading fresh profile image from API for patient: $patientID'); + loadProfileImage(forceRefresh: false); + } + + /// Pre-cache already-loaded image bytes so we don't flash default avatar + void _tryCacheExistingImage() { + final imageData = _appState.getProfileImageData; + if (imageData != null && imageData.isNotEmpty) { + try { + _cachedImageBytes = base64Decode(imageData); + _cachedImageDataHash = '${imageData.length}_${imageData.hashCode}'; + print('✅ Cached existing profile image'); + } catch (e) { + print('❌ Error caching existing image: $e'); + _cachedImageBytes = null; + _cachedImageDataHash = null; + } + } + } + + /// Check if authenticated user has changed (family member switch) + /// Returns true if user has changed + bool checkForUserSwitch() { + final currentPatientId = _appState.getAuthenticatedUser()?.patientId; + + if (currentPatientId != null && currentPatientId != _currentPatientId) { + print('🔄 User switched detected: $_currentPatientId -> $currentPatientId'); + _handleUserSwitch(currentPatientId); + return true; + } + return false; + } + + /// Handle user switch scenario - clear caches and load new user's image + void _handleUserSwitch(int newPatientId) { + final oldPatientId = _currentPatientId; + _currentPatientId = newPatientId; + + print('🧹 Clearing cache for old user: $oldPatientId'); + + // Clear AppState cache + _appState.clearProfileImageCache(); + + // Clear ViewModel cache + _profileSettingsViewModel.clearProfileImageCache(); + + // Clear local decoded bytes cache + _cachedImageBytes = null; + _cachedImageDataHash = null; + _selectedImage = null; + + notifyListeners(); + + // Load new user's profile image + print('📥 Loading profile image for new user: $newPatientId'); + _profileSettingsViewModel.getProfileImage( + patientID: newPatientId, + forceRefresh: true, + onSuccess: (data) { + print('✅ Profile image loaded successfully for user: $newPatientId'); + _tryCacheExistingImage(); + notifyListeners(); + }, + onError: (error) { + print('❌ Error loading profile image: $error'); + notifyListeners(); + }, + ); + } + + /// Load profile image from API + void loadProfileImage({bool forceRefresh = false}) { + // Check if profile image is already loaded in AppState (skip if forcing refresh) + if (!forceRefresh && _appState.getProfileImageData != null && _appState.getProfileImageData!.isNotEmpty) { + print('✅ Profile image already cached in AppState'); + return; + } + + final patientID = _appState.getAuthenticatedUser()?.patientId; + if (patientID == null) { + print('⚠️ Cannot load profile image - no authenticated user'); + return; + } + + print('📥 Loading profile image for patient: $patientID (forceRefresh: $forceRefresh)'); + _profileSettingsViewModel.getProfileImage( + patientID: patientID, + forceRefresh: forceRefresh, + onSuccess: (data) { + print('✅ Profile image loaded successfully'); + _tryCacheExistingImage(); + notifyListeners(); + }, + onError: (error) { + print('❌ Error loading profile image: $error'); + }, + ); + } + + /// Set selected image file (during upload process) + void setSelectedImage(File? file) { + _selectedImage = file; + notifyListeners(); + } + + /// Pick image from camera or gallery with compression + Future pickImage( + BuildContext context, { + required void Function( + BuildContext context, + bool showFiles, + Function(String, File) onImageSelected, { + required Future Function() checkCameraPermission, + required Future Function() checkGalleryPermission, + }) showImagePicker, + required Future Function(File) compressImage, + required Function(String) onSuccess, + required Function(String) onError, + required String imageSizeTooLargeMessage, + required String failedToProcessImageMessage, + required Future Function(BuildContext) checkCameraPermission, + required Future Function(BuildContext) checkGalleryPermission, + }) async { + // Show image picker options + showImagePicker( + context, + false, // Don't show files option, only camera and gallery + (base64String, file) async { + try { + print('=== Starting image processing ==='); + print('File path: ${file.path}'); + print('File exists: ${await file.exists()}'); + print('Original file size: ${await file.length() / 1024} KB'); + + // Compress and resize the image + print('Calling compressAndResizeImage...'); + final compressedFile = await compressImage(file); + + File finalFile; + String finalBase64; + + if (compressedFile == null) { + print('⚠️ Compression failed - using original file as fallback'); + + // Fallback: use original image if compression fails + final originalSize = await file.length(); + final maxSize = 1048576; // 1MB + + if (originalSize > maxSize) { + print('❌ Original file is too large: ${originalSize / 1024} KB'); + onError(imageSizeTooLargeMessage); + return; + } + + print('✅ Using original file (${originalSize / 1024} KB)'); + finalFile = file; + var bytes = await file.readAsBytes(); + finalBase64 = base64.encode(bytes); + } else { + // Check compressed file size + final fileSize = await compressedFile.length(); + final maxSize = 1048576; // 1MB + print('✅ Compression successful: ${fileSize / 1024} KB'); + + if (fileSize > maxSize) { + print('❌ Compressed file still too large'); + onError(imageSizeTooLargeMessage); + return; + } + + finalFile = compressedFile; + var bytes = await compressedFile.readAsBytes(); + finalBase64 = base64.encode(bytes); + } + + print('Converting to base64... Length: ${finalBase64.length}'); + + // Set selected image + setSelectedImage(finalFile); + + print('📤 Starting upload...'); + // Upload the image + uploadProfileImage(finalBase64, onSuccess: onSuccess, onError: onError); + + print('=== Image processing complete ==='); + } catch (e, stackTrace) { + print('❌ Error in pickImage: $e'); + print('Stack trace: $stackTrace'); + onError(failedToProcessImageMessage); + } + }, + checkCameraPermission: () => checkCameraPermission(context), + checkGalleryPermission: () => checkGalleryPermission(context), + ); + } + + /// Upload profile image + void uploadProfileImage( + String base64String, { + required Function(String) onSuccess, + required Function(String) onError, + }) { + final patientID = _appState.getAuthenticatedUser()?.patientId; + if (patientID == null) { + onError('No authenticated user found'); + return; + } + + print('📤 Uploading profile image for patient: $patientID'); + _profileSettingsViewModel.uploadProfileImage( + patientID: patientID, + imageData: base64String, + onSuccess: (data) async { + print('✅ Profile image uploaded successfully'); + + // Clear old cache first to ensure fresh data + _cachedImageBytes = null; + _cachedImageDataHash = null; + + // Add a small delay to ensure AppState is fully updated + await Future.delayed(const Duration(milliseconds: 50)); + + // Update cached bytes with the new data from AppState + _tryCacheExistingImage(); + _selectedImage = null; // Clear selected image after successful upload + + // Increment version to trigger targeted rebuild (no full screen refresh) + _profileImageVersion.value++; + print('🔄 Profile image version updated to ${_profileImageVersion.value} (targeted rebuild)'); + + onSuccess(data); + }, + onError: (error) { + print('❌ Error uploading profile image: $error'); + onError(error); + }, + ); + } + + /// Update cached image bytes if source data has changed + void updateCacheIfNeeded() { + final String? imageData = _appState.getProfileImageData; + final String? currentHash = (imageData != null && imageData.isNotEmpty) ? '${imageData.length}_${imageData.hashCode}' : null; + + // Re-decode only if the underlying data actually changed + if (currentHash != null && currentHash != _cachedImageDataHash) { + try { + _cachedImageBytes = base64Decode(imageData!); + _cachedImageDataHash = currentHash; + print('🔄 Updated cached image bytes'); + } catch (e) { + print('❌ Error decoding profile image: $e'); + _cachedImageBytes = null; + _cachedImageDataHash = null; + } + } else if (currentHash == null) { + _cachedImageBytes = null; + _cachedImageDataHash = null; + } + } + + /// Clear all cached data + void clearCache() { + _cachedImageBytes = null; + _cachedImageDataHash = null; + _selectedImage = null; + notifyListeners(); + print('🧹 Cleared all profile picture cache'); + } + + /// Check if we should show shimmer loading + bool shouldShowShimmer() { + return _profileSettingsViewModel.isProfileImageLoading && _cachedImageBytes == null && _selectedImage == null; + } + + @override + void dispose() { + _profileImageVersion.dispose(); + print('🗑️ ProfilePictureViewModel disposed'); + super.dispose(); + } +} diff --git a/lib/features/profile_settings/models/get_patient_info_response_model.dart b/lib/features/profile_settings/models/get_patient_info_response_model.dart new file mode 100644 index 00000000..ea89c9f9 --- /dev/null +++ b/lib/features/profile_settings/models/get_patient_info_response_model.dart @@ -0,0 +1,136 @@ +class GetPatientInfoForUpdate { + int? projectID; + int? patientType; + int? patientID; + String? emailAddress; + bool? isEmailAlertRequired; + bool? isSMSAlertRequired; + String? preferredLanguage; + String? emergencyContactName; + String? emergencyContactNo; + int? editedBy; + String? editedOn; + String? patientIdentificationNo; + int? patientIdentificationType; + String? firstName; + String? middleName; + String? lastName; + int? gender; + String? dateofBirth; + String? dateofBirthN; + String? firstNameN; + String? middleNameN; + String? lastNameN; + int? projectID1; + int? patientType1; + int? patientID1; + bool? isIVRStopped; + String? aGE; + String? genderString; + bool? isNeedUpdateIdintificationNo; + String? nationality; + String? type; + + GetPatientInfoForUpdate( + {this.projectID, + this.patientType, + this.patientID, + this.emailAddress, + this.isEmailAlertRequired, + this.isSMSAlertRequired, + this.preferredLanguage, + this.emergencyContactName, + this.emergencyContactNo, + this.editedBy, + this.editedOn, + this.patientIdentificationNo, + this.patientIdentificationType, + this.firstName, + this.middleName, + this.lastName, + this.gender, + this.dateofBirth, + this.dateofBirthN, + this.firstNameN, + this.middleNameN, + this.lastNameN, + this.projectID1, + this.patientType1, + this.patientID1, + this.isIVRStopped, + this.aGE, + this.genderString, + this.isNeedUpdateIdintificationNo, + this.nationality, + this.type}); + + GetPatientInfoForUpdate.fromJson(Map json) { + projectID = json['ProjectID']; + patientType = json['PatientType']; + patientID = json['PatientID']; + emailAddress = json['EmailAddress']; + isEmailAlertRequired = json['IsEmailAlertRequired']; + isSMSAlertRequired = json['IsSMSAlertRequired']; + preferredLanguage = json['PreferredLanguage']; + emergencyContactName = json['EmergencyContactName']; + emergencyContactNo = json['EmergencyContactNo']; + editedBy = json['EditedBy']; + editedOn = json['EditedOn']; + patientIdentificationNo = json['PatientIdentificationNo']; + patientIdentificationType = json['PatientIdentificationType']; + firstName = json['FirstName']; + middleName = json['MiddleName']; + lastName = json['LastName']; + gender = json['Gender']; + dateofBirth = json['DateofBirth']; + dateofBirthN = json['DateofBirthN']; + firstNameN = json['FirstNameN']; + middleNameN = json['MiddleNameN']; + lastNameN = json['LastNameN']; + projectID1 = json['ProjectID1']; + patientType1 = json['PatientType1']; + patientID1 = json['PatientID1']; + isIVRStopped = json['IsIVRStopped']; + aGE = json['AGE']; + genderString = json['GenderString']; + isNeedUpdateIdintificationNo = json['IsNeedUpdateIdintificationNo']; + nationality = json['Nationality']; + type = json['Type']; + } + + Map toJson() { + final Map data = new Map(); + data['ProjectID'] = this.projectID; + data['PatientType'] = this.patientType; + data['PatientID'] = this.patientID; + data['EmailAddress'] = this.emailAddress; + data['IsEmailAlertRequired'] = this.isEmailAlertRequired; + data['IsSMSAlertRequired'] = this.isSMSAlertRequired; + data['PreferredLanguage'] = this.preferredLanguage; + data['EmergencyContactName'] = this.emergencyContactName; + data['EmergencyContactNo'] = this.emergencyContactNo; + data['EditedBy'] = this.editedBy; + data['EditedOn'] = this.editedOn; + data['PatientIdentificationNo'] = this.patientIdentificationNo; + data['PatientIdentificationType'] = this.patientIdentificationType; + data['FirstName'] = this.firstName; + data['MiddleName'] = this.middleName; + data['LastName'] = this.lastName; + data['Gender'] = this.gender; + data['DateofBirth'] = this.dateofBirth; + data['DateofBirthN'] = this.dateofBirthN; + data['FirstNameN'] = this.firstNameN; + data['MiddleNameN'] = this.middleNameN; + data['LastNameN'] = this.lastNameN; + data['ProjectID1'] = this.projectID1; + data['PatientType1'] = this.patientType1; + data['PatientID1'] = this.patientID1; + data['IsIVRStopped'] = this.isIVRStopped; + data['AGE'] = this.aGE; + data['GenderString'] = this.genderString; + data['IsNeedUpdateIdintificationNo'] = this.isNeedUpdateIdintificationNo; + data['Nationality'] = this.nationality; + data['Type'] = this.type; + return data; + } +} diff --git a/lib/features/profile_settings/profile_settings_repo.dart b/lib/features/profile_settings/profile_settings_repo.dart new file mode 100644 index 00000000..113a52c0 --- /dev/null +++ b/lib/features/profile_settings/profile_settings_repo.dart @@ -0,0 +1,237 @@ +import 'package:dartz/dartz.dart'; +import 'package:hmg_patient_app_new/core/api/api_client.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; +import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; +import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/models/get_patient_info_response_model.dart'; +import 'package:hmg_patient_app_new/services/logger_service.dart'; + +abstract class ProfileSettingsRepo { + /// Updates general patient info (name, phone, etc.). + Future>> updatePatientInfo({ + required Map patientInfo, + }); + + /// Deactivates (deletes) the patient's account. + Future>> deactivateAccount(); + + Future>> getProfileSettings(); + + /// Get patient profile image + Future>> getProfileImage({ + required int patientID, + }); + + /// Upload patient profile image + Future>> uploadProfileImage({ + required int patientID, + required String imageData, + required bool isActive, + }); +} + +class ProfileSettingsRepoImp implements ProfileSettingsRepo { + final ApiClient apiClient; + final LoggerService loggerService; + + ProfileSettingsRepoImp({ + required this.loggerService, + required this.apiClient, + }); + + @override + Future>> updatePatientInfo({ + required Map patientInfo, + }) async { + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + SAVE_SETTING, + body: patientInfo, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: response, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> deactivateAccount() async { + final Map body = {}; + + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + // TODO: Replace with actual deactivate-account endpoint once available + 'Services/Patients.svc/REST/Patient_DeactivateAccount', + body: body, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: response, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future> getProfileSettings() async { + final Map body = {}; + + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + PROFILE_SETTING, + body: body, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final patientProfileInfo = GetPatientInfoForUpdate.fromJson(response['PateintInfoForUpdateList'][0]); + + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: patientProfileInfo, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> getProfileImage({ + required int patientID, + }) async { + final Map body = { + 'PatientID': patientID, + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + GET_PROFILE_IMAGE, + body: body, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: response, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> uploadProfileImage({ + required int patientID, + required String imageData, + required bool isActive, + }) async { + final Map body = { + 'PatientID': patientID, + 'PatientsProfileImageData': imageData, + 'IsActive': isActive, + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + UPLOAD_PROFILE_IMAGE, + body: body, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: response, + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } +} + diff --git a/lib/features/profile_settings/profile_settings_view_model.dart b/lib/features/profile_settings/profile_settings_view_model.dart index e001d1bd..c61665c3 100644 --- a/lib/features/profile_settings/profile_settings_view_model.dart +++ b/lib/features/profile_settings/profile_settings_view_model.dart @@ -1,18 +1,161 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/cupertino.dart'; import 'package:flutter/foundation.dart'; +import 'package:get_it/get_it.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/features/medical_file/medical_file_view_model.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/models/get_patient_info_response_model.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_repo.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/profile_settings/widgets/preferred_language_widget.dart'; import 'package:hmg_patient_app_new/services/cache_service.dart'; +import 'package:hmg_patient_app_new/services/error_handler_service.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:screen_brightness/screen_brightness.dart'; class ProfileSettingsViewModel extends ChangeNotifier { static const String _darkModeKey = 'is_dark_mode'; + static const String _fontSizeStepKey = 'accessibility_font_size_step'; + static const String _visualModeKey = 'accessibility_visual_mode'; final CacheService _cacheService; + final ProfileSettingsRepo profileSettingsRepo; + final ErrorHandlerService errorHandlerService; + // ── Dark-mode state ────────────────────────────────────────────────── bool _isDarkMode = false; - bool get isDarkMode => _isDarkMode; - ProfileSettingsViewModel({required CacheService cacheService}) - : _cacheService = cacheService; + // ── Accessibility settings ─────────────────────────────────────────── + int _fontSizeStep = 2; // 0: Small, 1: Small-Medium, 2: Medium (default), 3: Medium-Large, 4: Large + int get fontSizeStep => _fontSizeStep; + + String _visualMode = 'off'; // off, invert, dim, highContrast + String get visualMode => _visualMode; + + // ── Update email state ─────────────────────────────────────────────── + bool isUpdateEmailLoading = false; + bool isUpdateEmailSuccess = false; + String? updateEmailError; + + // ── Update patient info state ──────────────────────────────────────── + bool isUpdatePatientInfoLoading = false; + bool isUpdatePatientInfoSuccess = false; + String? updatePatientInfoError; + + // ── Deactivate account state ───────────────────────────────────────── + bool isDeactivateAccountLoading = false; + bool isDeactivateAccountSuccess = false; + String? deactivateAccountError; + + GetPatientInfoForUpdate? getPatientInfoForUpdate; + bool isPatientProfileLoading = false; + + // ── Profile image state ────────────────────────────────────────────── + bool isProfileImageLoading = false; + bool isUploadingProfileImage = false; + String? profileImageData; + String? profileImageError; + + // ==================== EMAIL UPDATE ERROR TRACKING ==================== + // Individual field error for email + String? _emailError; + + // Getter for email error + String? get emailError => _emailError; + + // Clear email error + void clearEmailError() { + _emailError = null; + notifyListeners(); + } + + // Validate email before updating + bool validateEmail(String email) { + final appState = GetIt.instance.get(); + final isArabic = appState.isArabic(); + + // Clear previous error + _emailError = null; + + // Check if email is empty + if (email.trim().isEmpty) { + _emailError = isArabic ? "الرجاء إدخال البريد الإلكتروني" : "Please enter email address"; + notifyListeners(); + return false; + } + + // Validate email format + final bool emailIsValid = RegExp(r"^[a-zA-Z0-9.a-zA-Z0-9.!#$%&'*+-/=?^_`{|}~]+@[a-zA-Z0-9\-]+\.[a-zA-Z]{2,}$").hasMatch(email.trim()); + if (!emailIsValid) { + _emailError = isArabic ? "الرجاء إدخال تنسيق بريد إلكتروني صالح" : "Please enter a valid email format"; + notifyListeners(); + return false; + } + + // Email is valid + notifyListeners(); + return true; + } + + // ==================== EMERGENCY CONTACT ERROR TRACKING ==================== + // Individual field error for emergency contact + String? _emergencyContactError; + + // Getter for emergency contact error + String? get emergencyContactError => _emergencyContactError; + + // Clear emergency contact error + void clearEmergencyContactError() { + _emergencyContactError = null; + notifyListeners(); + } + + // Validate emergency contact number before updating + bool validateEmergencyContact(String contactNumber) { + final appState = GetIt.instance.get(); + final isArabic = appState.isArabic(); + + // Clear previous error + _emergencyContactError = null; + + // Check if contact number is empty + if (contactNumber.trim().isEmpty) { + _emergencyContactError = isArabic ? "الرجاء إدخال رقم الاتصال في حالات الطوارئ" : "Please enter emergency contact number"; + notifyListeners(); + return false; + } + + // Remove any non-digit characters for validation + String cleanedNumber = contactNumber.replaceAll(RegExp(r'[^0-9]'), ''); + + // Check if it's a valid Saudi phone number (starts with 05 and has 10 digits) + if (cleanedNumber.length != 10) { + _emergencyContactError = isArabic ? "يجب أن يكون رقم الهاتف 10 أرقام" : "Phone number must be 10 digits"; + notifyListeners(); + return false; + } + + if (!cleanedNumber.startsWith('05')) { + _emergencyContactError = isArabic ? "يجب أن يبدأ رقم الهاتف بـ 05" : "Phone number must start with 05"; + notifyListeners(); + return false; + } + + // Contact number is valid + notifyListeners(); + return true; + } + + ProfileSettingsViewModel({ + required CacheService cacheService, + required this.profileSettingsRepo, + required this.errorHandlerService, + }) : _cacheService = cacheService; + + // ── Dark mode ──────────────────────────────────────────────────────── /// Call once at app startup (before the first frame) to restore the /// persisted dark-mode preference. @@ -30,7 +173,307 @@ class ProfileSettingsViewModel extends ChangeNotifier { notifyListeners(); } - void notify() { + // ── Accessibility settings ─────────────────────────────────────────── + + /// Load accessibility settings at app startup + void loadAccessibilitySettings() { + _fontSizeStep = _cacheService.getInt(key: _fontSizeStepKey) ?? 2; + _visualMode = _cacheService.getString(key: _visualModeKey) ?? 'off'; + + // Apply brightness based on saved visual mode + _applyBrightnessForMode(_visualMode); + + // No notifyListeners() here — we are called before build. + } + + /// Update font size step and save to cache + void setFontSizeStep(int step) { + _fontSizeStep = step; + _cacheService.saveInt(key: _fontSizeStepKey, value: step); + notifyListeners(); + } + + /// Update visual mode and save to cache + void setVisualMode(String mode) { + _visualMode = mode; + _cacheService.saveString(key: _visualModeKey, value: mode); + notifyListeners(); + } + + /// Apply screen brightness based on visual mode + void _applyBrightnessForMode(String mode) async { + try { + final screenBrightness = ScreenBrightness(); + + if (mode == 'dim') { + // Reduce brightness to 40% for dim mode + await screenBrightness.setScreenBrightness(0.4); + } else { + // For other modes, reset to system brightness + await screenBrightness.resetScreenBrightness(); + } + } catch (e) { + print('Error applying brightness for mode: $e'); + } + } + + /// Get font scale multiplier based on current font size step + double getFontScaleMultiplier() { + switch (_fontSizeStep) { + case 0: + return 0.85; // Small + case 1: + return 0.95; // Small-Medium + case 2: + return 1.0; // Medium (default) + case 3: + return 1.15; // Medium-Large + case 4: + return 1.3; // Large + default: + return 1.0; + } + } + + // ── Update patient info ────────────────────────────────────────────── + + Future updatePatientInfo({ + required Map patientInfo, + Function(dynamic)? onSuccess, + Function(String)? onError, + }) async { + isUpdatePatientInfoLoading = true; + isUpdatePatientInfoSuccess = false; + updatePatientInfoError = null; + notifyListeners(); + + final result = await profileSettingsRepo.updatePatientInfo(patientInfo: patientInfo); + + result.fold( + (failure) { + isUpdatePatientInfoLoading = false; + updatePatientInfoError = failure.message; + notifyListeners(); + if (onError != null) { + onError(failure.message); + } else { + errorHandlerService.handleError(failure: failure); + } + }, + (response) { + isUpdatePatientInfoLoading = false; + isUpdatePatientInfoSuccess = true; + notifyListeners(); + onSuccess?.call(response.data); + }, + ); + } + + Future getProfileSettings({ + Function(dynamic)? onSuccess, + Function(String)? onError, + }) async { + isPatientProfileLoading = true; + notifyListeners(); + + final result = await profileSettingsRepo.getProfileSettings(); + + result.fold( + (failure) { + isPatientProfileLoading = false; + notifyListeners(); + if (onError != null) { + onError(failure.message); + } else { + errorHandlerService.handleError(failure: failure); + } + }, + (response) { + getPatientInfoForUpdate = response.data; + isPatientProfileLoading = false; + notifyListeners(); + onSuccess?.call(response.data); + }, + ); + } + + // ── Deactivate account ─────────────────────────────────────────────── + + Future deactivateAccount({ + Function(dynamic)? onSuccess, + Function(String)? onError, + }) async { + isDeactivateAccountLoading = true; + isDeactivateAccountSuccess = false; + deactivateAccountError = null; notifyListeners(); + + final result = await profileSettingsRepo.deactivateAccount(); + + result.fold( + (failure) { + isDeactivateAccountLoading = false; + deactivateAccountError = failure.message; + notifyListeners(); + if (onError != null) { + onError(failure.message); + } else { + errorHandlerService.handleError(failure: failure); + } + }, + (response) { + isDeactivateAccountLoading = false; + isDeactivateAccountSuccess = true; + notifyListeners(); + onSuccess?.call(response.data); + }, + ); + } + + // ── Helpers ────────────────────────────────────────────────────────── + + openPreferredLanguageBottomSheet() { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.preferredLanguage.tr(), + GetIt.instance().navigatorKey.currentContext!, + child: PreferredLanguageWidget(), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + + // ── Profile image ──────────────────────────────────────────────────── + + Future getProfileImage({ + required int patientID, + Function(dynamic)? onSuccess, + Function(String)? onError, + bool forceRefresh = false, // Add flag to force refresh + }) async { + print('🌐 Fetching profile image from API for patient: $patientID (forceRefresh: $forceRefresh)'); + + // IMPORTANT: Always clear old data BEFORE fetching + // Do NOT use cached data - always fetch fresh from API + profileImageData = null; + + isProfileImageLoading = true; + profileImageError = null; + notifyListeners(); // Notify to show loading state + + final result = await profileSettingsRepo.getProfileImage(patientID: patientID); + + result.fold( + (failure) { + isProfileImageLoading = false; + profileImageError = failure.message; + print('❌ Failed to fetch profile image: ${failure.message}'); + + // Ensure data is cleared on failure + profileImageData = null; + + notifyListeners(); + if (onError != null) { + onError(failure.message); + } + }, + (response) { + isProfileImageLoading = false; + + // Extract image data from response + if (response.data != null && response.data['Patient_GetProfileImageDataList'] != null) { + var imageList = response.data['Patient_GetProfileImageDataList']; + if (imageList is List && imageList.isNotEmpty) { + profileImageData = imageList[0]['ImageData']; + + if (profileImageData != null && profileImageData!.isNotEmpty) { + // ONLY store in ViewModel - AppState will be updated separately by auth flow + print('✅ Profile image loaded from API (length: ${profileImageData!.length})'); + } else { + profileImageData = null; + print('⚠️ Profile image data is empty in API response'); + } + } else { + profileImageData = null; + print('⚠️ Profile image list is empty in API response'); + } + } else { + profileImageData = null; + print('⚠️ No profile image data in API response'); + } + + notifyListeners(); // Notify to update UI with new/null data + onSuccess?.call(response.data); + }, + ); + } + + /// Clear profile image data from ViewModel + void clearProfileImageCache() { + print('🧹 Clearing profile image from ViewModel'); + profileImageData = null; + notifyListeners(); + } + + /// Sync profile image data from AppState - DISABLED + /// Profile Settings screen uses only ViewModel data from API + void syncProfileImageFromAppState() { + // DO NOTHING - Profile Settings uses only direct API data + // No syncing from AppState to avoid stale cache issues + print('⚠️ syncProfileImageFromAppState called but disabled - use API data only'); + } + + Future uploadProfileImage({ + required int patientID, + required String imageData, + Function(dynamic)? onSuccess, + Function(String)? onError, + }) async { + isUploadingProfileImage = true; + profileImageError = null; + notifyListeners(); + + final result = await profileSettingsRepo.uploadProfileImage( + patientID: patientID, + imageData: imageData, + isActive: true, + ); + + result.fold( + (failure) { + isUploadingProfileImage = false; + profileImageError = failure.message; + notifyListeners(); + if (onError != null) { + onError(failure.message); + } else { + errorHandlerService.handleError(failure: failure); + } + }, + (response) { + isUploadingProfileImage = false; + profileImageData = imageData; + + // Store in AppState for global access FIRST + GetIt.instance().setProfileImageData = imageData; + + // Update the family files cache with the new profile image (after AppState update) + try { + final medicalFileViewModel = GetIt.instance.get(); + // Only update if family files are loaded + if (medicalFileViewModel.patientFamilyFiles.isNotEmpty || + medicalFileViewModel.pendingFamilyFiles.isNotEmpty) { + medicalFileViewModel.updateFamilyMemberProfileImage(patientID, imageData); + } else { + print("ℹ️ Family files not loaded yet, skipping cache update"); + } + } catch (e) { + print("⚠️ Could not update family files cache: $e"); + } + + notifyListeners(); + onSuccess?.call(response.data); + }, + ); } } diff --git a/lib/features/radiology/models/resp_models/radiology_ai_analysis_response_model.dart b/lib/features/radiology/models/resp_models/radiology_ai_analysis_response_model.dart new file mode 100644 index 00000000..3f523428 --- /dev/null +++ b/lib/features/radiology/models/resp_models/radiology_ai_analysis_response_model.dart @@ -0,0 +1,41 @@ +import 'dart:convert'; + +class RadiologyAiAnalysisResponse { + String? summary; + String? labResults; + String? aiPredictions; + String? riskFactors; + String? prevention; + int? languageId; + + RadiologyAiAnalysisResponse({ + this.summary, + this.labResults, + this.aiPredictions, + this.riskFactors, + this.prevention, + this.languageId, + }); + + factory RadiologyAiAnalysisResponse.fromRawJson(String str) => RadiologyAiAnalysisResponse.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory RadiologyAiAnalysisResponse.fromJson(Map json) => RadiologyAiAnalysisResponse( + summary: json["summary"], + labResults: json["lab_results"], + aiPredictions: json["ai_predictions"], + riskFactors: json["riskFactors"], + prevention: json["prevention"], + languageId: json["language_id"], + ); + + Map toJson() => { + "summary": summary, + "lab_results": labResults, + "ai_predictions": aiPredictions, + "riskFactors": riskFactors, + "prevention": prevention, + "language_id": languageId, + }; +} diff --git a/lib/features/radiology/radiology_repo.dart b/lib/features/radiology/radiology_repo.dart index 3ad4e54f..6e538d3f 100644 --- a/lib/features/radiology/radiology_repo.dart +++ b/lib/features/radiology/radiology_repo.dart @@ -6,6 +6,7 @@ import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/features/authentication/models/resp_models/authenticated_user_resp_model.dart'; import 'package:hmg_patient_app_new/features/radiology/models/resp_models/patient_radiology_response_model.dart'; +import 'package:hmg_patient_app_new/features/radiology/models/resp_models/radiology_ai_analysis_response_model.dart'; import 'package:hmg_patient_app_new/services/logger_service.dart'; abstract class RadiologyRepo { @@ -17,6 +18,8 @@ abstract class RadiologyRepo { {required PatientRadiologyResponseModel patientRadiologyResponseModel, required AuthenticatedUser authenticatedUser}); Future>>> getPatientRadiologyOrderByAppointment({required num appointmentNo, required num projectID}); + + Future>> getRadiologyAiAnalysis({required String reportData, required int langId,}); } class RadiologyRepoImp implements RadiologyRepo { @@ -39,7 +42,7 @@ class RadiologyRepoImp implements RadiologyRepo { failure = failureType; }, onSuccess: (response, statusCode, {messageStatus, errorMessage}) { - final radOrders; + List radOrders = []; try { if (response['FinalRadiologyList'] != null && response['FinalRadiologyList'].length != 0) { final list = response['FinalRadiologyList']; @@ -49,10 +52,18 @@ class RadiologyRepoImp implements RadiologyRepo { .cast(); } else { final list = response['FinalRadiologyListAPI']; - radOrders = list - .map((item) => PatientRadiologyResponseModel.fromJson(item as Map)) - .toList() - .cast(); + if(list != null && list.length != 0) { + radOrders = list + .map((item) => PatientRadiologyResponseModel.fromJson(item as Map)) + .toList() + .cast(); + } + } + + // Check if radOrders is empty and set failure + if (radOrders.isEmpty) { + failure = ServerFailure(errorMessage ?? "No radiology orders found"); + return; } apiResponse = GenericApiModel>( @@ -200,6 +211,13 @@ class RadiologyRepoImp implements RadiologyRepo { } } + // Check if radOrders is empty and set failure + if (radOrders.isEmpty) { + // failure = ServerFailure(errorMessage ?? "No radiology orders found for this appointment"); + // return; + radOrders= []; + } + apiResponse = GenericApiModel>( messageStatus: messageStatus, statusCode: statusCode, @@ -218,4 +236,50 @@ class RadiologyRepoImp implements RadiologyRepo { return Left(UnknownFailure(e.toString())); } } + + @override + Future>> getRadiologyAiAnalysis({required String reportData, required int langId}) async { + Map payload = { + "text": reportData, + "language_id": langId + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.getAiRadiologyAnalysis, + body: payload, + isExternal: true, + isAllowAny: true, + apiHeaders: { + 'Accept-Language': 'en-US,en;q=0.7', + 'Content-Type': 'application/json', + 'X-API-KEY': '9d9d2ac4c1fc302299dbb0fbb1b7fea1', + 'accept': 'application/json', + }, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + apiResponse = GenericApiModel( + messageStatus: 1, + statusCode: statusCode, + errorMessage: null, + data: RadiologyAiAnalysisResponse.fromJson(response), + ); + } catch (e) { + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } } diff --git a/lib/features/radiology/radiology_view_model.dart b/lib/features/radiology/radiology_view_model.dart index ee5c970f..30f9683a 100644 --- a/lib/features/radiology/radiology_view_model.dart +++ b/lib/features/radiology/radiology_view_model.dart @@ -1,12 +1,14 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/features/authentication/models/resp_models/authenticated_user_resp_model.dart'; +import 'package:hmg_patient_app_new/features/radiology/models/resp_models/radiology_ai_analysis_response_model.dart'; import 'package:hmg_patient_app_new/features/radiology/radiology_repo.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/radiology/radiology_ai_analysis_detailed_page.dart'; import 'package:hmg_patient_app_new/presentation/radiology/radiology_result_page.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'models/resp_models/patient_radiology_response_model.dart'; @@ -14,6 +16,7 @@ import 'models/resp_models/patient_radiology_response_model.dart'; class RadiologyViewModel extends ChangeNotifier { bool isRadiologyOrdersLoading = false; bool isRadiologyPDFReportLoading = false; + bool isRadiologyAIAnalysisNeedsToBeShown = true; RadiologyRepo radiologyRepo; ErrorHandlerService errorHandlerService; @@ -25,6 +28,8 @@ class RadiologyViewModel extends ChangeNotifier { String radiologyImageURL = ""; String patientRadiologyReportPDFBase64 = ""; + RadiologyAiAnalysisResponse? radiologyAiAnalysisResponse; + late List _radiologySuggestionsList = []; List get radiologySuggestions => _radiologySuggestionsList; @@ -56,10 +61,18 @@ class RadiologyViewModel extends ChangeNotifier { } Future getPatientRadiologyOrders({Function(dynamic)? onSuccess, Function(String)? onError}) async { + patientRadiologyOrders.clear(); + notifyListeners(); + final result = await radiologyRepo.getPatientRadiologyOrders(); result.fold( - (failure) async => await errorHandlerService.handleError(failure: failure), + // (failure) async => await errorHandlerService.handleError(failure: failure), + (failure) { + isRadiologyOrdersLoading = false; + filterSuggestions(); + notifyListeners(); + }, (apiResponse) { if (apiResponse.messageStatus == 2) { // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); @@ -68,17 +81,17 @@ class RadiologyViewModel extends ChangeNotifier { filteredRadiologyOrders = List.from(patientRadiologyOrders); tempRadiologyOrders = [...patientRadiologyOrders]; - final clinicMap = >{}; - final hospitalMap = >{}; - for (var order in patientRadiologyOrders) { - final clinicKey = (order.clinicDescription ?? 'Unknown').trim(); - clinicMap.putIfAbsent(clinicKey, () => []).add(order); - final hospitalKey = (order.projectName ?? order.projectID ?? 'Unknown').toString().trim(); - hospitalMap.putIfAbsent(hospitalKey, () => []).add(order); - } - patientRadiologyOrdersByClinic = clinicMap.values.toList(); - patientRadiologyOrdersByHospital = hospitalMap.values.toList(); - patientRadiologyOrdersViewList = isSortByClinic ? patientRadiologyOrdersByClinic : patientRadiologyOrdersByHospital; + // final clinicMap = >{}; + // final hospitalMap = >{}; + // for (var order in patientRadiologyOrders) { + // final clinicKey = (order.clinicDescription ?? 'Unknown').trim(); + // clinicMap.putIfAbsent(clinicKey, () => []).add(order); + // final hospitalKey = (order.projectName ?? order.projectID ?? 'Unknown').toString().trim(); + // hospitalMap.putIfAbsent(hospitalKey, () => []).add(order); + // } + // patientRadiologyOrdersByClinic = clinicMap.values.toList(); + // patientRadiologyOrdersByHospital = hospitalMap.values.toList(); + // patientRadiologyOrdersViewList = isSortByClinic ? patientRadiologyOrdersByClinic : patientRadiologyOrdersByHospital; isRadiologyOrdersLoading = false; filterSuggestions(); @@ -120,8 +133,7 @@ class RadiologyViewModel extends ChangeNotifier { ); } - Future getRadiologyImage( - {required PatientRadiologyResponseModel patientRadiologyResponseModel, Function(dynamic)? onSuccess, Function(String)? onError}) async { + Future getRadiologyImage({required PatientRadiologyResponseModel patientRadiologyResponseModel, Function(dynamic)? onSuccess, Function(String)? onError}) async { final result = await radiologyRepo.getRadiologyImage(patientRadiologyResponseModel: patientRadiologyResponseModel); result.fold( @@ -142,12 +154,8 @@ class RadiologyViewModel extends ChangeNotifier { } Future getRadiologyPDF( - {required PatientRadiologyResponseModel patientRadiologyResponseModel, - required AuthenticatedUser authenticatedUser, - Function(dynamic)? onSuccess, - Function(String)? onError}) async { - final result = - await radiologyRepo.getRadiologyReportPDF(patientRadiologyResponseModel: patientRadiologyResponseModel, authenticatedUser: authenticatedUser); + {required PatientRadiologyResponseModel patientRadiologyResponseModel, required AuthenticatedUser authenticatedUser, Function(dynamic)? onSuccess, Function(String)? onError}) async { + final result = await radiologyRepo.getRadiologyReportPDF(patientRadiologyResponseModel: patientRadiologyResponseModel, authenticatedUser: authenticatedUser); result.fold( (failure) async => await errorHandlerService.handleError( @@ -173,7 +181,7 @@ class RadiologyViewModel extends ChangeNotifier { } filterSuggestions() { - final List labels = patientRadiologyOrders.map((detail) => detail.description).whereType().toList(); + final List labels = patientRadiologyOrders.map((detail) => detail.procedureName.toString().trim()).whereType().toList(); _radiologySuggestionsList = labels.toSet().toList(); notifyListeners(); } @@ -193,7 +201,7 @@ class RadiologyViewModel extends ChangeNotifier { patientRadiologyOrdersByHospital = hospitalMap.values.toList(); patientRadiologyOrdersViewList = isSortByClinic ? patientRadiologyOrdersByClinic : patientRadiologyOrdersByHospital; } else { - filteredRadiologyOrders = filteredRadiologyOrders.where((desc) => (desc.description ?? "").toLowerCase().contains(query.toLowerCase())).toList(); + filteredRadiologyOrders = filteredRadiologyOrders.where((desc) => (desc.procedureName ?? "").toLowerCase().contains(query.toLowerCase())).toList(); final clinicMap = >{}; final hospitalMap = >{}; @@ -206,7 +214,53 @@ class RadiologyViewModel extends ChangeNotifier { patientRadiologyOrdersByClinic = clinicMap.values.toList(); patientRadiologyOrdersByHospital = hospitalMap.values.toList(); patientRadiologyOrdersViewList = isSortByClinic ? patientRadiologyOrdersByClinic : patientRadiologyOrdersByHospital; + + patientRadiologyOrders = filteredRadiologyOrders; } notifyListeners(); } + + void setIsRadiologyAIAnalysisNeedsToBeShown(bool value) { + isRadiologyAIAnalysisNeedsToBeShown = value; + } + + void closeRadiologyAIAnalysis() { + radiologyAiAnalysisResponse = null; + + } + + Future getRadiologyAiAnalysis({required String reportData, required String loadingText, required int langId}) async { + LoaderBottomSheet.showLoader( + loadingText: loadingText, + showCloseButton: true, + onCloseTap: () { + }, + ); + + final result = await radiologyRepo.getRadiologyAiAnalysis(reportData: reportData, langId: langId); + + result.fold( + (failure) async { + LoaderBottomSheet.hideLoader(); + if (isRadiologyAIAnalysisNeedsToBeShown) { + await errorHandlerService.handleError(failure: failure); + } + }, + (apiResponse) { + LoaderBottomSheet.hideLoader(); + if (apiResponse.messageStatus == 1) { + if (isRadiologyAIAnalysisNeedsToBeShown) { + radiologyAiAnalysisResponse = apiResponse.data; + notifyListeners(); + // Navigate to detailed page + navigationService.push( + CustomPageRoute(direction: AxisDirection.down, page: RadiologyAiAnalysisDetailedPage()), + ); + } + } + }, + ); + + LoaderBottomSheet.hideLoader(); + } } diff --git a/lib/features/refund_request/models/req_models/submit_refund_request_model.dart b/lib/features/refund_request/models/req_models/submit_refund_request_model.dart new file mode 100644 index 00000000..93eaadca --- /dev/null +++ b/lib/features/refund_request/models/req_models/submit_refund_request_model.dart @@ -0,0 +1,146 @@ +class SubmitRefundProcedureItem { + final int lineItemNo; + final String procedureId; + final String procedureName; + final double patientPaidAmount; + final String refundReason; + + const SubmitRefundProcedureItem({ + required this.lineItemNo, + required this.procedureId, + required this.procedureName, + required this.patientPaidAmount, + required this.refundReason, + }); + + Map toJson() => { + "LineItemNo": lineItemNo, + "ProcedureID": procedureId, + "ProcedureName": procedureName, + "PatientPaidAmount": patientPaidAmount, + "RefundReason": refundReason, + }; + + @override + String toString() { + return 'SubmitRefundProcedureItem{lineItemNo: $lineItemNo, procedureId: $procedureId, procedureName: $procedureName, patientPaidAmount: $patientPaidAmount, refundReason: $refundReason}'; + } +} + +/// Represents a single advance item in the wallet withdrawal refund payload. +class SubmitRefundAdvanceItem { + final String advanceNo; + final double paidAmount; + final double balanceAmount; + final String advanceDate; + + const SubmitRefundAdvanceItem({ + required this.advanceNo, + required this.paidAmount, + required this.balanceAmount, + required this.advanceDate, + }); + + Map toJson() => { + "AdvanceNo": advanceNo, + "PaidAmount": paidAmount, + "BalanceAmount": balanceAmount, + "AdvanceDate": advanceDate, + }; + + @override + String toString() { + return 'SubmitRefundAdvanceItem{advanceNo: $advanceNo, paidAmount: $paidAmount, balanceAmount: $balanceAmount, advanceDate: $advanceDate}'; + } +} + +class SubmitRefundRequestModel { + final int projectId; + final String refundType; + final String refundProject; + final int refundProjectId; + final String refundPatientId; + final String patientMobileNumber; + final String refundPatientName; + final String refundNationalId; + final String refundInvoiceNo; + final String refundAppointmentNo; + final int refundDoctorId; + final String refundDoctorName; + final int refundClinicId; + final String refundClinicName; + final String refundDestination; + final String refundIban; + final String refundRemarks; + final double refundTotalAmount; + final bool isRefundFastTrack; + final List refundProceduresList; + + /// Populated only for wallet withdrawal refunds (refundType == '2'). + final List refundAdvancesList; + + const SubmitRefundRequestModel({ + required this.projectId, + required this.refundType, + required this.refundProject, + required this.refundProjectId, + required this.refundPatientId, + required this.patientMobileNumber, + required this.refundPatientName, + required this.refundNationalId, + required this.refundInvoiceNo, + required this.refundAppointmentNo, + required this.refundDoctorId, + required this.refundDoctorName, + required this.refundClinicId, + required this.refundClinicName, + required this.refundDestination, + required this.refundIban, + required this.refundRemarks, + required this.refundTotalAmount, + required this.isRefundFastTrack, + required this.refundProceduresList, + this.refundAdvancesList = const [], + }); + + /// refundType '1' = invoice refund → sends Refund_ProceduresList + /// refundType '2' = wallet withdrawal → sends Refund_AdvancesList + Map toJson() { + final Map json = { + "ProjectID": projectId, + "Refund_RefundType": refundType, + "Refund_Project": refundProject, + "Refund_ProjectId": refundProjectId, + "Refund_PatientId": refundPatientId, + "PatientMobileNumber": patientMobileNumber, + "Refund_PatientName": refundPatientName, + "Refund_NationalId": refundNationalId, + "Refund_DoctorId": refundDoctorId, + "Refund_DoctorName": refundDoctorName, + "Refund_RefundDestination": refundDestination, + "Refund_IBAN": refundIban, + "Refund_Remarks": refundRemarks, + "Refund_TotalRefundAmount": refundTotalAmount, + "Refund_IsFastTrack": isRefundFastTrack, + }; + + if (refundType == '2') { + // Wallet withdrawal — include advances list, omit invoice-specific fields + json["Refund_AdvancesList"] = refundAdvancesList.map((a) => a.toJson()).toList(); + } else { + // Invoice refund — include invoice-specific fields and procedures list + json["Refund_InvoiceNo"] = refundInvoiceNo; + json["Refund_AppointmentNo"] = refundAppointmentNo; + json["Refund_ClinicId"] = refundClinicId; + json["Refund_ClinicName"] = refundClinicName; + json["Refund_ProceduresList"] = refundProceduresList.map((p) => p.toJson()).toList(); + } + + return json; + } + + @override + String toString() { + return 'SubmitRefundRequestModel{projectId: $projectId, refundType: $refundType, refundAdvancesList: $refundAdvancesList, refundProceduresList: $refundProceduresList}'; + } +} diff --git a/lib/features/refund_request/models/resp_models/is_refundable_invoice_response_model.dart b/lib/features/refund_request/models/resp_models/is_refundable_invoice_response_model.dart new file mode 100644 index 00000000..8e62b943 --- /dev/null +++ b/lib/features/refund_request/models/resp_models/is_refundable_invoice_response_model.dart @@ -0,0 +1,23 @@ +class IsRefundableInvoiceObject { + final String? errorCode; + final bool? isRefundable; + final String? message; + final int? statusCode; + + IsRefundableInvoiceObject({ + this.errorCode, + this.isRefundable, + this.message, + this.statusCode, + }); + + factory IsRefundableInvoiceObject.fromJson(Map json) { + return IsRefundableInvoiceObject( + errorCode: json['ErrorCode'] as String?, + isRefundable: json['IsRefundable'] as bool?, + message: json['Message'] as String?, + statusCode: json['StatusCode'] as int?, + ); + } +} + diff --git a/lib/features/refund_request/models/resp_models/refund_request_list_response_model.dart b/lib/features/refund_request/models/resp_models/refund_request_list_response_model.dart new file mode 100644 index 00000000..b17dd5aa --- /dev/null +++ b/lib/features/refund_request/models/resp_models/refund_request_list_response_model.dart @@ -0,0 +1,312 @@ +class SubmitRefundResponseModel { + final String? message; + final String? refundType; + final String? patientId; + final String? refNo; + + SubmitRefundResponseModel({ + this.message, + this.refundType, + this.patientId, + this.refNo, + }); + + factory SubmitRefundResponseModel.fromJson(Map json) { + return SubmitRefundResponseModel( + message: (json['Message'] ?? json['message']) as String?, + refundType: (json['Refund_RefundTypeDisplay'] ?? json['refundType'])?.toString(), + patientId: (json['Refund_PatientIdDisplay'] ?? json['patientId'])?.toString(), + refNo: (json['Refund_RefNo'] ?? json['ReferenceNumber'] ?? json['refNo'])?.toString(), + ); + } +} + +class RefundStatusModel { + final String? errorMessage; + final String? lastUpdated; + final bool? pendingVerification; + final String? referenceNumber; + final String? requestStatusName; + final String? status; + final bool? verified; + + RefundStatusModel({ + this.errorMessage, + this.lastUpdated, + this.pendingVerification, + this.referenceNumber, + this.requestStatusName, + this.status, + this.verified, + }); + + factory RefundStatusModel.fromJson(Map json) { + return RefundStatusModel( + errorMessage: json['ErrorMessage'] as String?, + lastUpdated: json['LastUpdated'] as String?, + pendingVerification: json['PendingVerification'] as bool?, + referenceNumber: json['ReferenceNumber'] as String?, + requestStatusName: json['RequestStatusName'] as String?, + status: json['Status'] as String?, + verified: json['Verified'] as bool?, + ); + } +} + +class WalletAdvanceItem { + final String? advanceDate; + final String? advanceNo; + final double? balanceAmount; + final double? paidAmount; + + WalletAdvanceItem({ + this.advanceDate, + this.advanceNo, + this.balanceAmount, + this.paidAmount, + }); + + factory WalletAdvanceItem.fromJson(Map json) { + return WalletAdvanceItem( + advanceDate: json['AdvanceDate'] as String?, + advanceNo: json['AdvanceNo'] as String?, + balanceAmount: (json['BalanceAmount'] as num?)?.toDouble(), + paidAmount: (json['PaidAmount'] as num?)?.toDouble(), + ); + } +} + +class WalletRequestPayload { + final List? advancesList; + final int? doctorId; + final String? doctorName; + final String? iban; + final String? nationalId; + final String? patientId; + final String? patientName; + final String? project; + final int? projectId; + final String? refundAmountTypeName; + final String? refundDestination; + final String? refundDestinationName; + final String? refundType; + final String? refundTypeName; + final String? remarks; + final double? totalRefundAmount; + + WalletRequestPayload({ + this.advancesList, + this.doctorId, + this.doctorName, + this.iban, + this.nationalId, + this.patientId, + this.patientName, + this.project, + this.projectId, + this.refundAmountTypeName, + this.refundDestination, + this.refundDestinationName, + this.refundType, + this.refundTypeName, + this.remarks, + this.totalRefundAmount, + }); + + factory WalletRequestPayload.fromJson(Map json) { + return WalletRequestPayload( + advancesList: (json['AdvancesList'] as List?)?.map((e) => WalletAdvanceItem.fromJson(e as Map)).toList(), + doctorId: (json['DoctorId'] as num?)?.toInt(), + doctorName: json['DoctorName'] as String?, + iban: json['IBAN'] as String?, + nationalId: json['NationalId'] as String?, + patientId: json['PatientId'] as String?, + patientName: json['PatientName'] as String?, + project: json['Project'] as String?, + projectId: (json['ProjectId'] as num?)?.toInt(), + refundAmountTypeName: json['RefundAmountTypeName'] as String?, + refundDestination: json['RefundDestination'] as String?, + refundDestinationName: json['RefundDestinationName'] as String?, + refundType: json['RefundType'] as String?, + refundTypeName: json['RefundTypeName'] as String?, + remarks: json['Remarks'] as String?, + totalRefundAmount: (json['TotalRefundAmount'] as num?)?.toDouble(), + ); + } +} + +class InvoiceRefundProcedure { + final bool? isLocked; + final int? lineItemNo; + final double? patientPaidAmount; + final String? procedureId; + final String? procedureName; + final String? refundReason; + + InvoiceRefundProcedure({ + this.isLocked, + this.lineItemNo, + this.patientPaidAmount, + this.procedureId, + this.procedureName, + this.refundReason, + }); + + factory InvoiceRefundProcedure.fromJson(Map json) { + return InvoiceRefundProcedure( + isLocked: json['IsLocked'] as bool?, + lineItemNo: (json['LineItemNo'] as num?)?.toInt(), + patientPaidAmount: (json['PatientPaidAmount'] as num?)?.toDouble(), + procedureId: json['ProcedureID'] as String?, + procedureName: json['ProcedureName'] as String?, + refundReason: json['RefundReason'] as String?, + ); + } +} + +class InvoiceRequestPayload { + final List? advancesList; + final String? appointmentNo; + final int? clinicId; + final String? clinicName; + final int? doctorId; + final String? doctorName; + final String? iban; + final String? invoiceDate; + final String? invoiceNo; + final bool? isFastTrack; + final String? nationalId; + final String? patientId; + final String? patientName; + final List? proceduresList; + final String? project; + final int? projectId; + final String? refundAmountType; + final String? refundAmountTypeName; + final String? refundDestination; + final String? refundDestinationName; + final double? refundTaxAmount; + final String? refundType; + final String? refundTypeName; + final String? remarks; + final double? totalRefundAmount; + + InvoiceRequestPayload({ + this.advancesList, + this.appointmentNo, + this.clinicId, + this.clinicName, + this.doctorId, + this.doctorName, + this.iban, + this.invoiceDate, + this.invoiceNo, + this.isFastTrack, + this.nationalId, + this.patientId, + this.patientName, + this.proceduresList, + this.project, + this.projectId, + this.refundAmountType, + this.refundAmountTypeName, + this.refundDestination, + this.refundDestinationName, + this.refundTaxAmount, + this.refundType, + this.refundTypeName, + this.remarks, + this.totalRefundAmount, + }); + + factory InvoiceRequestPayload.fromJson(Map json) { + return InvoiceRequestPayload( + advancesList: (json['AdvancesList'] as List?)?.map((e) => WalletAdvanceItem.fromJson(e as Map)).toList(), + appointmentNo: json['AppointmentNo']?.toString(), + clinicId: (json['ClinicId'] as num?)?.toInt(), + clinicName: json['ClinicName'] as String?, + doctorId: (json['DoctorId'] as num?)?.toInt(), + doctorName: json['DoctorName'] as String?, + iban: json['IBAN'] as String?, + invoiceDate: json['InvoiceDate'] as String?, + invoiceNo: json['InvoiceNo'] as String?, + isFastTrack: json['IsFastTrack'] as bool?, + nationalId: json['NationalId'] as String?, + patientId: json['PatientId'] as String?, + patientName: json['PatientName'] as String?, + proceduresList: (json['ProceduresList'] as List?)?.map((e) => InvoiceRefundProcedure.fromJson(e as Map)).toList(), + project: json['Project'] as String?, + projectId: (json['ProjectId'] as num?)?.toInt(), + refundAmountType: json['RefundAmountType'] as String?, + refundAmountTypeName: json['RefundAmountTypeName'] as String?, + refundDestination: json['RefundDestination'] as String?, + refundDestinationName: json['RefundDestinationName'] as String?, + refundTaxAmount: (json['RefundTaxAmount'] as num?)?.toDouble(), + refundType: json['RefundType'] as String?, + refundTypeName: json['RefundTypeName'] as String?, + remarks: json['Remarks'] as String?, + totalRefundAmount: (json['TotalRefundAmount'] as num?)?.toDouble(), + ); + } +} + +class RefundInvoiceModel { + final String? invoiceNumber; + final String? lastUpdated; + final String? patientId; + final bool? pendingVerification; + final String? referenceNumber; + final String? refundDestination; + final int? refundDestinationId; + final String? refundType; + final int? refundTypeId; + final String? requestStatusName; + final int? requestStatusId; + final String? verificationInitiatedAt; + final bool? verified; + final String? errorMessage; + final WalletRequestPayload? walletRequestPayload; + final InvoiceRequestPayload? invoiceRequestPayload; + + RefundInvoiceModel({ + this.invoiceNumber, + this.lastUpdated, + this.patientId, + this.pendingVerification, + this.referenceNumber, + this.refundDestination, + this.refundDestinationId, + this.refundType, + this.refundTypeId, + this.requestStatusName, + this.requestStatusId, + this.verificationInitiatedAt, + this.verified, + this.errorMessage, + this.walletRequestPayload, + this.invoiceRequestPayload, + }); + + factory RefundInvoiceModel.fromJson(Map json) { + return RefundInvoiceModel( + invoiceNumber: json['InvoiceNumber'] as String?, + lastUpdated: json['LastUpdated'] as String?, + patientId: json['PatientID'] as String?, + pendingVerification: json['PendingVerification'] as bool?, + referenceNumber: json['ReferenceNumber'] as String?, + refundDestination: json['RefundDestination'] as String?, + refundDestinationId: json['RefundDestinationId'] as int?, + refundType: json['RefundType'] as String?, + refundTypeId: json['RefundTypeId'] as int?, + requestStatusName: json['StatusName'] as String?, + requestStatusId: json['StatusId'] as int?, + verificationInitiatedAt: json['VerificationInitiatedAt'] as String?, + verified: json['Verified'] as bool?, + errorMessage: json['ErrorMessage'] as String?, + walletRequestPayload: + json['WalletRequestPayload'] != null ? WalletRequestPayload.fromJson(json['WalletRequestPayload'] as Map) : null, + invoiceRequestPayload: + json['InvoiceRequestPayload'] != null ? InvoiceRequestPayload.fromJson(json['InvoiceRequestPayload'] as Map) : null, + ); + } +} diff --git a/lib/features/refund_request/models/resp_models/refundable_invoices_response_model.dart b/lib/features/refund_request/models/resp_models/refundable_invoices_response_model.dart new file mode 100644 index 00000000..0178be6c --- /dev/null +++ b/lib/features/refund_request/models/resp_models/refundable_invoices_response_model.dart @@ -0,0 +1,202 @@ +import 'dart:convert'; + +class RefundableInvoicesResponseModel { + final String? errorCode; + final String? message; + final List? refundableInvoiceItems; + final int? statusCode; + + RefundableInvoicesResponseModel({ + this.errorCode, + this.message, + this.refundableInvoiceItems, + this.statusCode, + }); + + factory RefundableInvoicesResponseModel.fromJson(Map json) { + return RefundableInvoicesResponseModel( + errorCode: json['ErrorCode'] as String?, + message: json['Message'] as String?, + refundableInvoiceItems: json['RefundableInvoiceItems'] != null + ? (json['RefundableInvoiceItems'] as List).map((item) => RefundableInvoiceItem.fromJson(item as Map)).toList() + : null, + statusCode: json['StatusCode'] as int?, + ); + } +} + +class RefundableInvoiceItem { + final int? appointmentNo; + final int? clinicID; + final String? clinicName; + final int? doctorID; + final String? doctorName; + final String? invoiceDate; + final int? invoiceNo; + final String? nationalID; + final int? patientID; + final int? projectID; + + RefundableInvoiceItem({ + this.appointmentNo, + this.clinicID, + this.clinicName, + this.doctorID, + this.doctorName, + this.invoiceDate, + this.invoiceNo, + this.nationalID, + this.patientID, + this.projectID, + }); + + factory RefundableInvoiceItem.fromRawJson(String str) => RefundableInvoiceItem.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory RefundableInvoiceItem.fromJson(Map json) { + return RefundableInvoiceItem( + appointmentNo: json['AppointmentNo'] as int?, + clinicID: json['ClinicID'] as int?, + clinicName: json['ClinicName'] as String?, + doctorID: json['DoctorID'] as int?, + doctorName: json['DoctorName'] as String?, + invoiceDate: json['InvoiceDate'] as String?, + invoiceNo: json['InvoiceNo'] as int?, + nationalID: json['NationalID'] as String?, + patientID: json['PatientID'] as int?, + projectID: json['ProjectID'] as int?, + ); + } + + Map toJson() { + return { + 'AppointmentNo': appointmentNo, + 'ClinicID': clinicID, + 'ClinicName': clinicName, + 'DoctorID': doctorID, + 'DoctorName': doctorName, + 'InvoiceDate': invoiceDate, + 'InvoiceNo': invoiceNo, + 'NationalID': nationalID, + 'PatientID': patientID, + 'ProjectID': projectID, + }; + } +} + +class RefundableInvoiceDetailsItem { + final int? lineItemNo; + final double? patientPaidAmount; + final String? procedureId; + final String? procedureName; + + RefundableInvoiceDetailsItem({ + this.lineItemNo, + this.patientPaidAmount, + this.procedureId, + this.procedureName, + }); + + factory RefundableInvoiceDetailsItem.fromJson(Map json) { + return RefundableInvoiceDetailsItem( + lineItemNo: json['LineItemNo'] as int?, + patientPaidAmount: (json['PatientPaidAmount'] as num?)?.toDouble(), + procedureId: json['ProcedureID'] as String?, + procedureName: json['ProcedureName'] as String?, + ); + } +} + +class RefundableInvoicesDetailsObject { + final String? errorCode; + final int? invoiceNo; + final String? message; + final int? projectId; + final List refundableInvoiceDetailsItems; + final int? statusCode; + final bool? needITGApproval; + + RefundableInvoicesDetailsObject({ + this.errorCode, + this.invoiceNo, + this.message, + this.projectId, + this.refundableInvoiceDetailsItems = const [], + this.statusCode, + this.needITGApproval, + }); + + factory RefundableInvoicesDetailsObject.fromJson(Map json) { + return RefundableInvoicesDetailsObject( + errorCode: json['ErrorCode'] as String?, + invoiceNo: json['InvoiceNo'] as int?, + message: json['Message'] as String?, + projectId: json['ProjectID'] as int?, + refundableInvoiceDetailsItems: json['RefundableInvoiceDetailsItems'] != null + ? (json['RefundableInvoiceDetailsItems'] as List) + .map((item) => RefundableInvoiceDetailsItem.fromJson(item as Map)) + .toList() + : [], + statusCode: json['StatusCode'] as int?, + needITGApproval: json['NeedITGApproval'] as bool?, + ); + } +} + +class RefundableAdvancesItem { + final String? advanceDate; + final int? advanceNo; + final double? balanceAmount; + final double? paidAmount; + final int? patientId; + final String? patientName; + final int? projectId; + + RefundableAdvancesItem({ + this.advanceDate, + this.advanceNo, + this.balanceAmount, + this.paidAmount, + this.patientId, + this.patientName, + this.projectId, + }); + + factory RefundableAdvancesItem.fromJson(Map json) { + return RefundableAdvancesItem( + advanceDate: json['AdvanceDate'] as String?, + advanceNo: json['AdvanceNo'] as int?, + balanceAmount: (json['BalanceAmount'] as num?)?.toDouble(), + paidAmount: (json['PaidAmount'] as num?)?.toDouble(), + patientId: json['PatientID'] as int?, + patientName: json['PatientName'] as String?, + projectId: json['ProjectID'] as int?, + ); + } +} + +class RefundableAdvancesObject { + final String? errorCode; + final String? message; + final List refundableAdvancesItems; + final int? statusCode; + + RefundableAdvancesObject({ + this.errorCode, + this.message, + this.refundableAdvancesItems = const [], + this.statusCode, + }); + + factory RefundableAdvancesObject.fromJson(Map json) { + return RefundableAdvancesObject( + errorCode: json['ErrorCode'] as String?, + message: json['Message'] as String?, + refundableAdvancesItems: json['RefundableAdvancesItems'] != null + ? (json['RefundableAdvancesItems'] as List).map((item) => RefundableAdvancesItem.fromJson(item as Map)).toList() + : [], + statusCode: json['StatusCode'] as int?, + ); + } +} diff --git a/lib/features/refund_request/refund_request_repo.dart b/lib/features/refund_request/refund_request_repo.dart new file mode 100644 index 00000000..eaf7d9e0 --- /dev/null +++ b/lib/features/refund_request/refund_request_repo.dart @@ -0,0 +1,360 @@ +import 'package:dartz/dartz.dart'; +import 'package:hmg_patient_app_new/core/api/api_client.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; +import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; +import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/req_models/submit_refund_request_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/resp_models/is_refundable_invoice_response_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/resp_models/refund_request_list_response_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/resp_models/refundable_invoices_response_model.dart'; +import 'package:hmg_patient_app_new/services/logger_service.dart'; + +abstract class RefundRequestRepo { + Future>>> getRefundableInvoices({required int projectID}); + + Future>> getRefundableInvoicesDetails({ + required int invoiceNo, + required int projectId, + }); + + Future>> getRefundableAdvances(); + + Future>> getRefundStatus({required String referenceNumber}); + + Future>>> getRefundInvoices({ + required int refundType, + required String patientId, + String invoiceNumberQuery, + }); + + Future>> submitRefund({required SubmitRefundRequestModel request}); + + Future>> checkIsRefundableInvoice({ + required int invoiceNo, + required int projectId, + }); +} + +class RefundRequestRepoImp implements RefundRequestRepo { + final ApiClient apiClient; + final LoggerService loggerService; + + RefundRequestRepoImp({required this.apiClient, required this.loggerService}); + + @override + Future>>> getRefundableInvoices({required int projectID}) async { + Map body = {"ProjectID": projectID}; + + try { + GenericApiModel>? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.getRefundableInvoices, + body: body, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final refundableInvoicesObject = response['RefundableInvoicesObject']; + + if (refundableInvoicesObject != null) { + final invoiceItemsJson = refundableInvoicesObject['RefundableInvoiceItems']; + + final List invoicesList = invoiceItemsJson != null + ? (invoiceItemsJson as List).map((item) => RefundableInvoiceItem.fromJson(item as Map)).toList() + : []; + + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: invoicesList, + ); + } else { + failure = DataParsingFailure("RefundableInvoicesObject is null"); + } + } catch (e) { + loggerService.logError("getRefundableInvoices parsing error: $e"); + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + loggerService.logError("getRefundableInvoices exception: $e"); + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> getRefundableInvoicesDetails({ + required int invoiceNo, + required int projectId, + }) async { + final Map body = { + "InvoiceNo": invoiceNo, + "ProjectID": projectId, + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.getRefundableInvoicesDetails, + body: body, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final detailsJson = response['RefundableInvoicesDetailsObject']; + final RefundableInvoicesDetailsObject details = detailsJson != null + ? RefundableInvoicesDetailsObject.fromJson(detailsJson as Map) + : RefundableInvoicesDetailsObject(); + + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: details, + ); + } catch (e) { + loggerService.logError("getRefundableInvoicesDetails parsing error: $e"); + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + loggerService.logError("getRefundableInvoicesDetails exception: $e"); + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> getRefundableAdvances() async { + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.getRefundableAdvances, + body: {}, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final advancesJson = response['RefundableAdvancesObject']; + final RefundableAdvancesObject advances = + advancesJson != null ? RefundableAdvancesObject.fromJson(advancesJson as Map) : RefundableAdvancesObject(); + + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: advances, + ); + } catch (e) { + loggerService.logError("getRefundableAdvances parsing error: $e"); + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + loggerService.logError("getRefundableAdvances exception: $e"); + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> getRefundStatus({required String referenceNumber}) async { + final Map body = { + "Refund_ReferenceNumber": referenceNumber, + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.getRefundStatus, + body: body, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final dataJson = response['Refund_StatusItem']; + final RefundStatusModel model = dataJson != null ? RefundStatusModel.fromJson(dataJson as Map) : RefundStatusModel(); + + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: model, + ); + } catch (e) { + loggerService.logError("getRefundStatus parsing error: $e"); + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + loggerService.logError("getRefundStatus exception: $e"); + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>>> getRefundInvoices({ + required int refundType, + required String patientId, + String invoiceNumberQuery = "", + }) async { + final Map body = { + "Refund_RefundType": refundType, + "Refund_PatientId": patientId, + "Refund_InvoiceNumberQuery": invoiceNumberQuery, + }; + + try { + GenericApiModel>? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.getRefundInvoices, + body: body, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final listJson = response['Refund_InvoicesList']; + final List invoices = + listJson != null ? (listJson as List).map((item) => RefundInvoiceModel.fromJson(item as Map)).toList() : []; + + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: invoices, + ); + } catch (e) { + loggerService.logError("getRefundInvoices parsing error: $e"); + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + loggerService.logError("getRefundInvoices exception: $e"); + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> submitRefund({required SubmitRefundRequestModel request}) async { + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.submitRefund, + body: request.toJson(), + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final model = SubmitRefundResponseModel.fromJson(response as Map); + apiResponse = GenericApiModel( + messageStatus: 1, + statusCode: statusCode, + errorMessage: errorMessage, + data: model, + ); + } catch (e) { + loggerService.logError("submitRefund parsing error: $e"); + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + loggerService.logError("submitRefund exception: $e"); + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> checkIsRefundableInvoice({ + required int invoiceNo, + required int projectId, + }) async { + final Map body = { + "InvoiceNo": invoiceNo.toString(), + "ProjectID": projectId, + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.isRefundableInvoice, + body: body, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final dataJson = response['IsRefundableInvoiceObject']; + final IsRefundableInvoiceObject model = + dataJson != null ? IsRefundableInvoiceObject.fromJson(dataJson as Map) : IsRefundableInvoiceObject(); + + apiResponse = GenericApiModel( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: errorMessage, + data: model, + ); + } catch (e) { + loggerService.logError("checkIsRefundableInvoice parsing error: $e"); + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + loggerService.logError("checkIsRefundableInvoice exception: $e"); + return Left(UnknownFailure(e.toString())); + } + } +} diff --git a/lib/features/refund_request/refund_request_view_model.dart b/lib/features/refund_request/refund_request_view_model.dart new file mode 100644 index 00000000..828e3d0a --- /dev/null +++ b/lib/features/refund_request/refund_request_view_model.dart @@ -0,0 +1,573 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/utils/validation_utils.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/hospital_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/req_models/submit_refund_request_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/resp_models/is_refundable_invoice_response_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/resp_models/refund_request_list_response_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/resp_models/refundable_invoices_response_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/refund_request_repo.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/services/error_handler_service.dart'; + +enum RefundTabType { invoices, hmgWallet } + +extension RefundTabTypeExtension on RefundTabType { + String toDisplayString() { + switch (this) { + case RefundTabType.hmgWallet: + return LocaleKeys.hmgWallet.tr(); + case RefundTabType.invoices: + return LocaleKeys.bankTransfer.tr(); + } + } +} + +/// Lightweight model representing a refundable procedure line item. +class RefundableProcedure { + final int procedureId; + final String procedureName; + final String? procedureNameN; + final double patientPaidAmount; + bool isSelected; + String? refundReason; + + /// Raw values from the API — used when building the SubmitRefund payload + final int? apiLineItemNo; + final String? apiProcedureId; + + RefundableProcedure({ + required this.procedureId, + required this.procedureName, + this.procedureNameN, + required this.patientPaidAmount, + this.isSelected = false, + this.refundReason, + this.apiLineItemNo, + this.apiProcedureId, + }); +} + +/// Lightweight model for an invoice dropdown item. +class RefundInvoiceItem { + final int invoiceNo; + final int appointmentNo; + final int projectId; + final String displayLabel; + + const RefundInvoiceItem({ + required this.invoiceNo, + required this.appointmentNo, + required this.projectId, + required this.displayLabel, + }); +} + +class RefundRequestViewModel extends ChangeNotifier { + final AppState appState; + final RefundRequestRepo refundRequestRepo; + final ErrorHandlerService errorHandlerService; + + RefundRequestViewModel({ + required this.appState, + required this.refundRequestRepo, + required this.errorHandlerService, + }); + + // ── Tab ────────────────────────────────────────────────────────────────── + RefundTabType selectedTab = RefundTabType.invoices; + + void setTab(RefundTabType tab) { + selectedTab = tab; + notifyListeners(); + } + + // ── Step (0 = select invoice+hospital, 1 = select procedures) ──────────── + int currentStep = 0; + + void goToStep(int step) { + currentStep = step; + notifyListeners(); + } + + void nextStep() { + if (currentStep < 1) { + currentStep++; + notifyListeners(); + } + } + + void previousStep() { + if (currentStep > 0) { + currentStep--; + notifyListeners(); + } + } + + void resetState() { + currentStep = 0; + procedures.clear(); + needITGApproval = false; + selectedPaymentMethod = null; + selectedRefundReason = null; + isProceduresLoading = false; + isInvoiceDetailsLoading = false; + invoiceDetails = null; + _ibanError = null; + _descriptionError = null; + // Use Future.microtask to avoid calling notifyListeners while tree is locked (e.g. during dispose) + Future.microtask(() { + if (hasListeners) notifyListeners(); + }); + } + + // ── Hospital selection ──────────────────────────────────────────────────── + HospitalsModel? selectedHospital; + + void setSelectedHospital(HospitalsModel? hospital) { + selectedHospital = hospital; + // Reset invoice and procedures whenever hospital changes + selectedInvoice = null; + procedures.clear(); + refundableInvoicesList.clear(); + notifyListeners(); + + // Fetch refundable invoices for the selected hospital's project + if (hospital != null && hospital.iD != null) { + final projectID = hospital.iD is int ? hospital.iD as int : int.tryParse(hospital.iD.toString()); + if (projectID != null) { + getRefundableInvoices(projectID: projectID); + } + } + } + + + void clearHospital() { + selectedHospital = null; + selectedInvoice = null; + procedures.clear(); + notifyListeners(); + } + + // ── Invoice selection ───────────────────────────────────────────────────── + RefundInvoiceItem? selectedInvoice; + List refundableInvoicesList = []; + bool isRefundableInvoicesLoading = false; + + Future getRefundableInvoices({ + required int projectID, + Function(dynamic)? onSuccess, + Function(String)? onError, + }) async { + isRefundableInvoicesLoading = true; + refundableInvoicesList.clear(); + notifyListeners(); + + final result = await refundRequestRepo.getRefundableInvoices(projectID: projectID); + + result.fold( + (failure) { + isRefundableInvoicesLoading = false; + notifyListeners(); + if (onError != null) { + onError(failure.message); + } else { + errorHandlerService.handleError(failure: failure); + } + }, + (apiResponse) { + isRefundableInvoicesLoading = false; + if (apiResponse.messageStatus == 1 && apiResponse.data != null) { + refundableInvoicesList = apiResponse.data!; + notifyListeners(); + if (onSuccess != null) onSuccess(apiResponse); + } else { + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? "Failed to load invoices"); + } + } + }, + ); + } + + void setSelectedInvoice(RefundInvoiceItem invoice) { + selectedInvoice = invoice; + procedures.clear(); + notifyListeners(); + } + + void clearInvoice() { + selectedInvoice = null; + procedures.clear(); + notifyListeners(); + } + + // ── Procedures ──────────────────────────────────────────────────────────── + List procedures = []; + bool isProceduresLoading = false; + bool needITGApproval = false; + + void setProcedures(List list, {bool needsITGApproval = false}) { + procedures = list; + needITGApproval = needsITGApproval; + isProceduresLoading = false; + notifyListeners(); + } + + void toggleProcedureSelection(RefundableProcedure procedure) { + procedure.isSelected = !procedure.isSelected; + notifyListeners(); + } + + void setRefundReasonForProcedure(RefundableProcedure procedure, String reason) { + procedure.refundReason = reason; + notifyListeners(); + } + + bool get isAllSelected => procedures.isNotEmpty && procedures.every((p) => p.isSelected); + + void toggleSelectAll() { + final selectAll = !isAllSelected; + for (final p in procedures) { + p.isSelected = selectAll; + } + notifyListeners(); + } + + List get selectedProcedures => procedures.where((p) => p.isSelected).toList(); + + bool get allSelectedProceduresHaveReasons => + selectedProcedures.isNotEmpty && selectedProcedures.every((p) => p.refundReason != null && p.refundReason!.isNotEmpty); + + // ── Calculation ─────────────────────────────────────────────────────────── + double get totalRefundableAmount { + double total = 0.0; + for (final p in selectedProcedures) { + total += p.patientPaidAmount; + } + return total; + } + + // ── Bank Details & Description ──────────────────────────────────────────── + String bankDetails = ''; + String description = ''; + + // ── Bank Transfer Error Tracking ────────────────────────────────────────── + String? _ibanError; + String? _descriptionError; + + String? get ibanError => _ibanError; + + String? get descriptionError => _descriptionError; + + void clearIbanError() { + _ibanError = null; + notifyListeners(); + } + + void clearDescriptionError() { + _descriptionError = null; + notifyListeners(); + } + + bool validateBankTransferForm({required String iban, required String description}) { + bool isValid = true; + _ibanError = null; + _descriptionError = null; + + if (iban.trim().isEmpty) { + _ibanError = LocaleKeys.ibanIsRequired.tr(); + isValid = false; + } else { + if (!ValidationUtils.validateIban(iban.trim())) { + _ibanError = LocaleKeys.invalidIbanFormat.tr(); + isValid = false; + } + } + + if (description.trim().isEmpty) { + _descriptionError = LocaleKeys.descriptionIsRequired.tr(); + isValid = false; + } + + notifyListeners(); + return isValid; + } + + // ── Payment Method ──────────────────────────────────────────────────────── + RefundTabType? selectedPaymentMethod; + + void setPaymentMethod(RefundTabType method) { + selectedPaymentMethod = method; + notifyListeners(); + } + + // ── Refund Reason ───────────────────────────────────────────────────────── + String? selectedRefundReason; + + void setRefundReason(String? reason) { + selectedRefundReason = reason; + notifyListeners(); + } + + /// Used by text controllers in the UI layer to trigger a rebuild. + void triggerRebuild() => notifyListeners(); + + void setBankDetails(String value) { + bankDetails = value; + notifyListeners(); + } + + void setDescription(String value) { + description = value; + notifyListeners(); + } + + // ── Validation ──────────────────────────────────────────────────────────── + bool get isStep1Valid => selectedHospital != null && selectedInvoice != null; + + bool get isStep2Valid => selectedProcedures.isNotEmpty && selectedPaymentMethod != null; + + // ── Invoice Details ─────────────────────────────────────────────────────── + RefundableInvoicesDetailsObject? invoiceDetails; + bool isInvoiceDetailsLoading = false; + + Future getRefundableInvoicesDetails({ + required int invoiceNo, + required int projectId, + Function(RefundableInvoicesDetailsObject)? onSuccess, + Function(String)? onError, + }) async { + isInvoiceDetailsLoading = true; + isProceduresLoading = true; + invoiceDetails = null; + procedures.clear(); + notifyListeners(); + + final result = await refundRequestRepo.getRefundableInvoicesDetails(invoiceNo: invoiceNo, projectId: projectId); + + result.fold( + (failure) { + isInvoiceDetailsLoading = false; + isProceduresLoading = false; + notifyListeners(); + if (onError != null) { + onError(failure.message); + } else { + errorHandlerService.handleError(failure: failure); + } + }, + (apiResponse) { + isInvoiceDetailsLoading = false; + isProceduresLoading = false; + if (apiResponse.messageStatus == 1 && apiResponse.data != null) { + invoiceDetails = apiResponse.data; + notifyListeners(); + if (onSuccess != null) onSuccess(apiResponse.data!); + } else { + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? LocaleKeys.failed.tr()); + } + } + }, + ); + } + + // ── Refundable Advances ─────────────────────────────────────────────────── + RefundableAdvancesObject? refundableAdvances; + bool isRefundableAdvancesLoading = false; + + Future getRefundableAdvances({ + Function(RefundableAdvancesObject)? onSuccess, + Function(String)? onError, + }) async { + isRefundableAdvancesLoading = true; + refundableAdvances = null; + notifyListeners(); + + final result = await refundRequestRepo.getRefundableAdvances(); + + result.fold( + (failure) { + isRefundableAdvancesLoading = false; + notifyListeners(); + if (onError != null) { + onError(failure.message); + } else { + errorHandlerService.handleError(failure: failure); + } + }, + (apiResponse) { + isRefundableAdvancesLoading = false; + if (apiResponse.messageStatus == 1 && apiResponse.data != null) { + refundableAdvances = apiResponse.data; + notifyListeners(); + if (onSuccess != null) onSuccess(apiResponse.data!); + } else { + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? "Failed to load refundable advances"); + } + } + }, + ); + } + + // ── Refund Status ───────────────────────────────────────────────────────── + RefundStatusModel? refundStatus; + bool isRefundStatusLoading = false; + + Future getRefundStatus({ + required String referenceNumber, + Function(RefundStatusModel)? onSuccess, + Function(String)? onError, + }) async { + isRefundStatusLoading = true; + refundStatus = null; + notifyListeners(); + + final result = await refundRequestRepo.getRefundStatus(referenceNumber: referenceNumber); + + result.fold( + (failure) { + isRefundStatusLoading = false; + notifyListeners(); + if (onError != null) { + onError(failure.message); + } else { + errorHandlerService.handleError(failure: failure); + } + }, + (apiResponse) { + isRefundStatusLoading = false; + if (apiResponse.messageStatus == 1 && apiResponse.data != null) { + refundStatus = apiResponse.data; + notifyListeners(); + if (onSuccess != null) onSuccess(apiResponse.data!); + } else { + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? "Failed to load refund status"); + } + } + }, + ); + } + + // ── Refund Invoices ─────────────────────────────────────────────────────── + List refundInvoicesList = []; + bool isRefundInvoicesLoading = false; + + Future getRefundInvoices({ + required int refundType, + String invoiceNumberQuery = "", + Function(List)? onSuccess, + Function(String)? onError, + }) async { + isRefundInvoicesLoading = true; + refundInvoicesList.clear(); + notifyListeners(); + + final resolvedPatientId = appState.getAuthenticatedUser()?.patientId?.toString() ?? ""; + final result = await refundRequestRepo.getRefundInvoices( + refundType: refundType, + patientId: resolvedPatientId, + invoiceNumberQuery: invoiceNumberQuery, + ); + + result.fold( + (failure) { + isRefundInvoicesLoading = false; + notifyListeners(); + if (onError != null) { + onError(failure.message); + } else { + errorHandlerService.handleError(failure: failure); + } + }, + (apiResponse) { + isRefundInvoicesLoading = false; + if (apiResponse.messageStatus == 1 && apiResponse.data != null) { + refundInvoicesList = apiResponse.data!; + notifyListeners(); + if (onSuccess != null) onSuccess(apiResponse.data!); + } else { + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? "Failed to load refund invoices"); + } + } + }, + ); + } + + // ── Submit Refund ───────────────────────────────────────────────────────── + bool isSubmitting = false; + + Future submitInvoiceRefundRequest({ + required SubmitRefundRequestModel request, + Function(SubmitRefundResponseModel)? onSuccess, + Function(String)? onError, + }) async { + isSubmitting = true; + notifyListeners(); + + final result = await refundRequestRepo.submitRefund(request: request); + + result.fold( + (failure) { + isSubmitting = false; + notifyListeners(); + if (onError != null) { + onError(failure.message); + } else { + errorHandlerService.handleError(failure: failure); + } + }, + (apiResponse) { + isSubmitting = false; + notifyListeners(); + if (apiResponse.data != null) { + if (onSuccess != null) onSuccess(apiResponse.data!); + } else { + if (onError != null) { + onError(apiResponse.errorMessage ?? "Failed to submit refund"); + } + } + }, + ); + } + + // ── Check Is Refundable Invoice ─────────────────────────────────────────── + + Future checkIsRefundableInvoice({ + required int invoiceNo, + required int projectId, + Function(IsRefundableInvoiceObject)? onSuccess, + Function(String)? onError, + }) async { + final result = await refundRequestRepo.checkIsRefundableInvoice(invoiceNo: invoiceNo, projectId: projectId); + + result.fold( + (failure) { + if (onError != null) { + onError(failure.message); + } else { + errorHandlerService.handleError(failure: failure); + } + }, + (apiResponse) { + if (apiResponse.data != null) { + if (onSuccess != null) onSuccess(apiResponse.data!); + } else { + if (onError != null) { + onError(apiResponse.errorMessage ?? "Failed to check refundable status"); + } + } + }, + ); + } +} diff --git a/lib/features/smartwatch_health_data/HealthDataTransformation.dart b/lib/features/smartwatch_health_data/HealthDataTransformation.dart deleted file mode 100644 index ffda4f4f..00000000 --- a/lib/features/smartwatch_health_data/HealthDataTransformation.dart +++ /dev/null @@ -1,134 +0,0 @@ -import 'dart:math'; - -import 'package:hmg_patient_app_new/core/common_models/data_points.dart'; -import 'package:intl/intl.dart'; - -import 'model/Vitals.dart'; - -enum Durations { - daily("daily"), - weekly("weekly"), - monthly("monthly"), - halfYearly("halfYearly"), - yearly("yearly"); - - final String value; - const Durations(this.value); -} - -class HealthDataTransformation { - Map> transformVitalsToDataPoints(VitalsWRTType vitals, String filterType, String selectedSection,) { - final Map> dataPointMap = {}; - Map> data = vitals.getVitals(); - // Group data based on the filter type - Map> groupedData = {}; - // List > items = data.values.toList(); - List keys = data.keys.toList(); - var count = 0; - List item = data[selectedSection] ?? []; - // for(var item in items) { - List dataPoints = []; - - for (var vital in item) { - String key = ""; - if (vital.value == "" || vital.timestamp == "") continue; - var parseDate = DateTime.parse(vital.timestamp); - var currentDate = normalizeToStartOfDay(DateTime.now()); - if (filterType == Durations.daily.value) { - if(isBetweenInclusive(parseDate, currentDate, DateTime.now())) { - key = DateFormat('yyyy-MM-dd HH').format(DateTime.parse(vital.timestamp)); - groupedData.putIfAbsent(key, () => []).add(vital); - }// Group by hour - } else if (filterType == Durations.weekly.value) { - if(isBetweenInclusive(parseDate, currentDate.subtract(Duration(days: 7)), DateTime.now())) { - key = DateFormat('yyyy-MM-dd').format(DateTime.parse(vital.timestamp)); - groupedData.putIfAbsent(key, () => []).add(vital); - - } // Group by day - } else if (filterType == Durations.monthly.value) { - if(isBetweenInclusive(parseDate, currentDate.subtract(Duration(days: 30)), DateTime.now())) { - print("the value for the monthly filter is ${vital.value} with the timestamp ${vital.timestamp} and the current date is $currentDate and the parse date is $parseDate"); - key = DateFormat('yyyy-MM-dd').format(DateTime.parse(vital.timestamp)); - groupedData.putIfAbsent(key, () => []).add(vital); - - } // Group by day - } else if (filterType == Durations.halfYearly.value || filterType == Durations.yearly.value) { - if(isBetweenInclusive(parseDate, currentDate.subtract(Duration(days: filterType == Durations.halfYearly.value?180: 365)), DateTime.now())) { - key = DateFormat('yyyy-MM').format(DateTime.parse(vital.timestamp)); - groupedData.putIfAbsent(key, () => []).add(vital); - - } // Group by month - } else { - throw ArgumentError('Invalid filter type'); - } - } - print("the size of groupData is ${groupedData.values.length}"); - - // Process grouped data - groupedData.forEach((key, values) { - double sum = values.fold(0, (acc, v) => acc + num.parse(v.value)); - double mean = sum / values.length; - if(selectedSection == "bodyOxygen" || selectedSection == "bodyTemperature") { - mean = sum / values.length; - }else { - mean = sum; - } - - double finalValue = mean; - print("the final value is $finalValue for the key $key with the original values ${values.map((v) => v.value).toList()} and uom is ${values.first.unitOfMeasure}"); - dataPoints.add(DataPoint( - value: smartScale(finalValue), - label: key, - actualValue: finalValue.toStringAsFixed(2), - displayTime: key, - unitOfMeasurement:values.first.unitOfMeasure , - time: DateTime.parse(values.first.timestamp), - )); - }); - - dataPointMap[filterType] = dataPoints; - // } - return dataPointMap; - } - - double smartScale(double number) { - // if (number <= 0) return 0; - // final _random = Random(); - // double ratio = number / 100; - // - // double scalingFactor = ratio > 1 ? 100 / number : 100; - // - // double result = (number / 100) * scalingFactor; - // print("the ratio is ${ratio.toInt()+1}"); - // double max = (100+_random.nextInt(ratio.toInt()+10)).toDouble(); - // - // return result.clamp(0, max); - - if (number <= 0) return 0; - - final random = Random(); - - // Smooth compression scaling - double baseScaled = number <20 ? number:100 * (number / (number + 100)); - - // Random factor between 0.9 and 1.1 (±10%) - double randomFactor = number <20 ? random.nextDouble() * 1.5: 0.9 + random.nextDouble() * 0.2; - - double result = baseScaled * randomFactor; - - return result.clamp(0, 100); - } - - DateTime normalizeToStartOfDay(DateTime date) { - return DateTime(date.year, date.month, date.day); - } - bool isBetweenInclusive( - DateTime target, - DateTime start, - DateTime end, - ) { - return !normalizeToStartOfDay(target).isBefore(start) && !normalizeToStartOfDay(target).isAfter(end); - } - - -} \ No newline at end of file diff --git a/lib/features/smartwatch_health_data/health_data_transformations.dart b/lib/features/smartwatch_health_data/health_data_transformations.dart new file mode 100644 index 00000000..1aeff65b --- /dev/null +++ b/lib/features/smartwatch_health_data/health_data_transformations.dart @@ -0,0 +1,143 @@ +import 'dart:math'; + +import 'package:hmg_patient_app_new/core/common_models/data_points.dart'; +import 'package:intl/intl.dart'; + +import 'model/vitals_data_model.dart'; + +enum Durations { + daily("daily"), + weekly("weekly"), + monthly("monthly"), + halfYearly("halfYearly"), + yearly("yearly"); + + final String value; + + const Durations(this.value); +} + +class HealthDataTransformation { + Map> transformVitalsToDataPoints( + VitalsWRTType vitals, + String filterType, + String selectedSection, + ) { + final Map> dataPointMap = {}; + Map> data = vitals.getVitals(); + // Group data based on the filter type + Map> groupedData = {}; + // List > items = data.values.toList(); + List keys = data.keys.toList(); + var count = 0; + List item = data[selectedSection] ?? []; + // for(var item in items) { + List dataPoints = []; + + for (var vital in item) { + String key = ""; + if (vital.value == "" || vital.timestamp == "") continue; + + DateTime parseDate; + try { + parseDate = DateTime.parse(vital.timestamp); + } catch (e) { + print('Error parsing timestamp "${vital.timestamp}": $e'); + continue; // Skip this vital if timestamp is invalid + } + + var currentDate = normalizeToStartOfDay(DateTime.now()); + if (filterType == Durations.daily.value) { + if (isBetweenInclusive(parseDate, currentDate, DateTime.now())) { + key = DateFormat('yyyy-MM-dd HH').format(parseDate); + groupedData.putIfAbsent(key, () => []).add(vital); + } // Group by hour + } else if (filterType == Durations.weekly.value) { + if (isBetweenInclusive(parseDate, currentDate.subtract(Duration(days: 7)), DateTime.now())) { + key = DateFormat('yyyy-MM-dd').format(parseDate); + groupedData.putIfAbsent(key, () => []).add(vital); + } // Group by day + } else if (filterType == Durations.monthly.value) { + if (isBetweenInclusive(parseDate, currentDate.subtract(Duration(days: 30)), DateTime.now())) { + print("the value for the monthly filter is ${vital.value} with the timestamp ${vital.timestamp} and the current date is $currentDate and the parse date is $parseDate"); + key = DateFormat('yyyy-MM-dd').format(parseDate); + groupedData.putIfAbsent(key, () => []).add(vital); + } // Group by day + } else if (filterType == Durations.halfYearly.value || filterType == Durations.yearly.value) { + if (isBetweenInclusive(parseDate, currentDate.subtract(Duration(days: filterType == Durations.halfYearly.value ? 180 : 365)), DateTime.now())) { + key = DateFormat('yyyy-MM').format(parseDate); + groupedData.putIfAbsent(key, () => []).add(vital); + } // Group by month + } else { + throw ArgumentError('Invalid filter type'); + } + } + print("the size of groupData is ${groupedData.values.length}"); + + // Process grouped data + groupedData.forEach((key, values) { + double sum = values.fold(0, (acc, v) => acc + num.parse(v.value)); + double mean = sum / values.length; + if (selectedSection == "bodyOxygen" || selectedSection == "bodyTemperature") { + mean = sum / values.length; + } else { + mean = sum; + } + + double finalValue = mean; + print("the final value is $finalValue for the key $key with the original values ${values.map((v) => v.value).toList()} and uom is ${values.first.unitOfMeasure}"); + dataPoints.add(DataPoint( + value: smartScale(finalValue), + label: key, + actualValue: finalValue.toStringAsFixed(2), + displayTime: key, + unitOfMeasurement: values.first.unitOfMeasure, + time: DateTime.parse(values.first.timestamp), + )); + }); + + dataPointMap[filterType] = dataPoints; + // } + return dataPointMap; + } + + double smartScale(double number) { + // if (number <= 0) return 0; + // final _random = Random(); + // double ratio = number / 100; + // + // double scalingFactor = ratio > 1 ? 100 / number : 100; + // + // double result = (number / 100) * scalingFactor; + // print("the ratio is ${ratio.toInt()+1}"); + // double max = (100+_random.nextInt(ratio.toInt()+10)).toDouble(); + // + // return result.clamp(0, max); + + if (number <= 0) return 0; + + final random = Random(); + + // Smooth compression scaling + double baseScaled = number < 20 ? number : 100 * (number / (number + 100)); + + // Random factor between 0.9 and 1.1 (±10%) + double randomFactor = number < 20 ? random.nextDouble() * 1.5 : 0.9 + random.nextDouble() * 0.2; + + double result = baseScaled * randomFactor; + + return result.clamp(0, 100); + } + + DateTime normalizeToStartOfDay(DateTime date) { + return DateTime(date.year, date.month, date.day); + } + + bool isBetweenInclusive( + DateTime target, + DateTime start, + DateTime end, + ) { + return !normalizeToStartOfDay(target).isBefore(start) && !normalizeToStartOfDay(target).isAfter(end); + } +} diff --git a/lib/features/smartwatch_health_data/health_provider.dart b/lib/features/smartwatch_health_data/health_provider.dart index 963c0352..c296f717 100644 --- a/lib/features/smartwatch_health_data/health_provider.dart +++ b/lib/features/smartwatch_health_data/health_provider.dart @@ -1,18 +1,17 @@ import 'package:flutter/foundation.dart'; import 'package:health/health.dart'; +import 'package:hmg_patient_app_new/core/common_models/data_points.dart'; import 'package:hmg_patient_app_new/core/common_models/smart_watch.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; -import 'package:hmg_patient_app_new/core/utils/loading_utils.dart'; import 'package:hmg_patient_app_new/features/smartwatch_health_data/health_service.dart'; +import 'package:hmg_patient_app_new/presentation/smartwatches/activity_detail.dart'; +import 'package:hmg_patient_app_new/presentation/smartwatches/smart_watches_health_data_screen.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; -import '../../core/common_models/data_points.dart'; -import '../../core/dependencies.dart'; -import '../../presentation/smartwatches/activity_detail.dart' show ActivityDetails; -import '../../presentation/smartwatches/smart_watch_activity.dart' show SmartWatchActivity; -import '../../services/navigation_service.dart' show NavigationService; -import 'HealthDataTransformation.dart'; -import 'model/Vitals.dart'; +import 'health_data_transformations.dart'; +import 'model/vitals_data_model.dart'; class HealthProvider with ChangeNotifier { final HealthService _healthService = HealthService(); @@ -22,7 +21,8 @@ class HealthProvider with ChangeNotifier { String selectedTimeRange = '7D'; int selectedTabIndex = 0; - SmartWatchTypes? selectedWatchType ; + SmartWatchTypes? selectedWatchType; + String selectedWatchURL = 'assets/images/png/smartwatches/apple-watch-5.jpg'; HealthDataTransformation healthDataTransformation = HealthDataTransformation(); @@ -90,7 +90,7 @@ class HealthProvider with ChangeNotifier { healthData[type] = data; notifyListeners(); } catch (e) { - print('Error refreshing metric $type: $e'); + debugPrint('Error refreshing metric $type: $e'); } } @@ -129,14 +129,12 @@ class HealthProvider with ChangeNotifier { await getVitals(); // LoaderBottomSheet.hideLoader(); // await Future.delayed(Duration(seconds: 5)); - getIt.get().pushPage(page: SmartWatchActivity()); - print('Device initialized successfully'); + getIt.get().pushPage(page: SmartWatchesHealthDataScreen()); } notifyListeners(); } Future getVitals() async { - final result = await _healthService.getVitals(); vitals = result; LoaderBottomSheet.hideLoader(); @@ -186,15 +184,17 @@ class HealthProvider with ChangeNotifier { } selectedData = yearly = healthDataTransformation.transformVitalsToDataPoints(vitals!, Durations.yearly.value, selectedSection); break; - default: - {} - ; } notifyListeners(); } void navigateToDetails(String value, {required String sectionName, required String uom}) { - getIt.get().pushPage(page: ActivityDetails(selectedActivity: value, sectionName:sectionName, uom: uom,)); + getIt.get().pushPage( + page: ActivityDetails( + selectedActivity: value, + sectionName: sectionName, + uom: uom, + )); } void saveSelectedSection(String value) { @@ -243,7 +243,6 @@ class HealthProvider with ChangeNotifier { count++; } }); - print("total count is $count and total is $total"); averageValue = count > 0 ? total / count : null; notifyListeners(); } @@ -261,7 +260,7 @@ class HealthProvider with ChangeNotifier { String firstNonEmptyValue(List dataPoints) { try { - return dataPoints.firstWhere((dp) => dp.value != null && dp.value!.trim().isNotEmpty).value; + return dataPoints.firstWhere((dp) => dp.value.trim().isNotEmpty).value; } catch (e) { return "0"; // no non-empty value found } diff --git a/lib/features/smartwatch_health_data/health_service.dart b/lib/features/smartwatch_health_data/health_service.dart index a6c22cb9..2968db6a 100644 --- a/lib/features/smartwatch_health_data/health_service.dart +++ b/lib/features/smartwatch_health_data/health_service.dart @@ -5,7 +5,7 @@ import 'dart:io'; import 'package:health/health.dart'; import 'package:hmg_patient_app_new/core/common_models/smart_watch.dart'; -import 'package:hmg_patient_app_new/features/smartwatch_health_data/model/Vitals.dart'; +import 'package:hmg_patient_app_new/features/smartwatch_health_data/model/vitals_data_model.dart'; import 'package:hmg_patient_app_new/features/smartwatch_health_data/watch_connectors/create_watch_helper.dart'; import 'package:hmg_patient_app_new/features/smartwatch_health_data/watch_connectors/watch_helper.dart'; import 'package:permission_handler/permission_handler.dart'; @@ -172,12 +172,12 @@ class HealthService { } } - void addWatchHelper(SmartWatchTypes watchType){ - watchHelper = CreateWatchHelper.getWatchName(watchType) ; + void addWatchHelper(SmartWatchTypes watchType) { + watchHelper = CreateWatchHelper.getWatchName(watchType); } Future> initDevice() async { - if(watchHelper == null){ + if (watchHelper == null) { return Result.error('No watch helper found'); } return await watchHelper!.initDevice(); @@ -197,14 +197,14 @@ class HealthService { // await watchHelper!.getDistance(); // await watchHelper!.getBloodOxygen(); Result data = await watchHelper!.retrieveData(); - if(data.isError) { + if (data.isError) { print('Unable to get the data'); } - var response = jsonDecode(data.asValue?.value?.toString()?.trim().replaceAll("\n", "")??""); - VitalsWRTType vitals = VitalsWRTType.fromMap(response); - log("the data is ${vitals}"); + var response = jsonDecode(data.asValue?.value?.toString()?.trim().replaceAll("\n", "") ?? ""); + VitalsWRTType vitals = VitalsWRTType.fromMap(response); + // log("the data is ${vitals}"); return vitals; - }catch(e){ + } catch (e) { print('Error getting heart rate: $e'); } return null; diff --git a/lib/features/smartwatch_health_data/model/Vitals.dart b/lib/features/smartwatch_health_data/model/vitals_data_model.dart similarity index 63% rename from lib/features/smartwatch_health_data/model/Vitals.dart rename to lib/features/smartwatch_health_data/model/vitals_data_model.dart index 96386f2d..83cd4ea6 100644 --- a/lib/features/smartwatch_health_data/model/Vitals.dart +++ b/lib/features/smartwatch_health_data/model/vitals_data_model.dart @@ -1,5 +1,5 @@ class Vitals { - String value; + String value; final String timestamp; final String unitOfMeasure; @@ -9,18 +9,25 @@ class Vitals { this.unitOfMeasure = "", }); + Map toJson() { + return { + 'value': value, + 'timestamp': timestamp, + 'uom': unitOfMeasure, + }; + } + factory Vitals.fromMap(Map map) { + String timestamp = map['timestamp'] ?? map['timeStamp'] ?? ""; + if (timestamp.isEmpty) { + timestamp = DateTime.now().toIso8601String(); + } return Vitals( value: map['value'] ?? "", - timestamp: map['timeStamp'] ?? "", + timestamp: timestamp, unitOfMeasure: map['uom'] ?? "", ); } - - - toString(){ - return "{\"value\": \"$value\", \"timeStamp\": \"$timestamp\", \"uom\": \"$unitOfMeasure\"}"; - } } class VitalsWRTType { @@ -31,15 +38,21 @@ class VitalsWRTType { final List activity; final List bodyOxygen; final List bodyTemperature; - double maxHeartRate = double.negativeInfinity; - double maxSleep = double.negativeInfinity; - double maxStep= double.negativeInfinity; - double maxActivity = double.negativeInfinity; - double maxBloodOxygen = double.negativeInfinity; - double maxBodyTemperature = double.negativeInfinity; - + double maxHeartRate = double.negativeInfinity; + double maxSleep = double.negativeInfinity; + double maxStep = double.negativeInfinity; + double maxActivity = double.negativeInfinity; + double maxBloodOxygen = double.negativeInfinity; + double maxBodyTemperature = double.negativeInfinity; - VitalsWRTType({required this.distance, required this.bodyOxygen, required this.bodyTemperature, required this.heartRate, required this.sleep, required this.step, required this.activity}); + VitalsWRTType( + {required this.distance, + required this.bodyOxygen, + required this.bodyTemperature, + required this.heartRate, + required this.sleep, + required this.step, + required this.activity}); factory VitalsWRTType.fromMap(Map map) { List activity = []; @@ -82,16 +95,23 @@ class VitalsWRTType { map["distance"].forEach((element) { element["uom"] = "km"; var data = Vitals.fromMap(element); - data.value = (double.parse(data.value)/1000).toStringAsFixed(2); + data.value = (double.parse(data.value) / 1000).toStringAsFixed(2); distance.add(data); }); - return VitalsWRTType(bodyTemperature: bodyTemperature, bodyOxygen: bodyOxygen, heartRate: heartRate, sleep: sleeps, step: steps, activity: activity, distance: distance); + return VitalsWRTType( + bodyTemperature: bodyTemperature, + bodyOxygen: bodyOxygen, + heartRate: heartRate, + sleep: sleeps, + step: steps, + activity: activity, + distance: distance); } Map> getVitals() { return { - "heartRate": heartRate , + "heartRate": heartRate, "sleep": sleep, "steps": step, "activity": activity, diff --git a/lib/features/smartwatch_health_data/watch_connectors/health_connect_helper.dart b/lib/features/smartwatch_health_data/watch_connectors/health_connect_helper.dart index 0c00dd7d..20ede4aa 100644 --- a/lib/features/smartwatch_health_data/watch_connectors/health_connect_helper.dart +++ b/lib/features/smartwatch_health_data/watch_connectors/health_connect_helper.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:convert'; import 'dart:io'; import 'package:async/src/result/result.dart'; import 'package:flutter/material.dart'; @@ -6,7 +7,7 @@ import 'package:health/health.dart'; import 'package:hmg_patient_app_new/features/smartwatch_health_data/watch_connectors/watch_helper.dart' show WatchHelper; import 'package:permission_handler/permission_handler.dart'; -import '../model/Vitals.dart'; +import '../model/vitals_data_model.dart'; class HealthConnectHelper extends WatchHelper { final Health health = Health(); @@ -79,7 +80,10 @@ class HealthConnectHelper extends WatchHelper { @override Future retrieveData() async { + // String retData; + // retData = Result.value(getMappedData()) as String; return Result.value(getMappedData()); + // return retData; } @override @@ -150,9 +154,22 @@ class HealthConnectHelper extends WatchHelper { for (var point in data) { if (point.value is NumericHealthValue) { final numericValue = (point.value as NumericHealthValue).numericValue; + String timestamp = DateTime.now().toIso8601String(); + + try { + if (point.dateFrom != null) { + String tempTimestamp = point.dateFrom.toIso8601String(); + if (tempTimestamp.isNotEmpty) { + timestamp = tempTimestamp; + } + } + } catch (e) { + debugPrint('Error converting dateFrom to ISO8601 for $s: $e'); + } + Vitals vitals = Vitals( - value: (point.value as NumericHealthValue).numericValue.toStringAsFixed(2), - timestamp: point.dateFrom.toString() + value: numericValue.toStringAsFixed(2), + timestamp: timestamp ); mappedData[s]?.add(vitals); } @@ -164,17 +181,41 @@ class HealthConnectHelper extends WatchHelper { for (var point in data) { if (point.value is NumericHealthValue) { final numericValue = (point.value as NumericHealthValue).numericValue; + String timestamp = DateTime.now().toIso8601String(); + + try { + if (point.dateFrom != null) { + String tempTimestamp = point.dateFrom.toIso8601String(); + if (tempTimestamp.isNotEmpty) { + timestamp = tempTimestamp; + } + } + } catch (e) { + debugPrint('Error converting dateFrom to ISO8601 for $s: $e'); + } + point.value = NumericHealthValue( numericValue: numericValue * 100, ); - Vitals vitals = Vitals(value: (point.value as NumericHealthValue).numericValue.toStringAsFixed(2), timestamp: point.dateFrom.toString()); + Vitals vitals = Vitals( + value: (point.value as NumericHealthValue).numericValue.toStringAsFixed(2), + timestamp: timestamp + ); mappedData[s]?.add(vitals); } } } getMappedData() { - return " { \"heartRate\": ${mappedData["heartRate"] ?? []}, \"sleep\": ${mappedData["sleep"] ?? []}, \"steps\": ${mappedData["steps"] ?? []}, \"activity\": ${mappedData["activity"] ?? []}, \"bloodOxygen\": ${mappedData["bloodOxygen"] ?? []}, \"bodyTemperature\": ${mappedData["bodyTemperature"] ?? []}, \"distance\": ${mappedData["distance"] ?? []} }"; + return jsonEncode({ + "heartRate": (mappedData["heartRate"] ?? []).map((v) => v.toJson()).toList(), + "sleep": (mappedData["sleep"] ?? []).map((v) => v.toJson()).toList(), + "steps": (mappedData["steps"] ?? []).map((v) => v.toJson()).toList(), + "activity": (mappedData["activity"] ?? []).map((v) => v.toJson()).toList(), + "bloodOxygen": (mappedData["bloodOxygen"] ?? []).map((v) => v.toJson()).toList(), + "bodyTemperature": (mappedData["bodyTemperature"] ?? []).map((v) => v.toJson()).toList(), + "distance": (mappedData["distance"] ?? []).map((v) => v.toJson()).toList(), + }); } getHeartData(DateTime startDate, DateTime endDate, HealthDataType types) async { diff --git a/lib/features/symptoms_checker/data/organ_mapping_data.dart b/lib/features/symptoms_checker/data/organ_mapping_data.dart index b0c2ffea..d284aeb5 100644 --- a/lib/features/symptoms_checker/data/organ_mapping_data.dart +++ b/lib/features/symptoms_checker/data/organ_mapping_data.dart @@ -1,5 +1,3 @@ -import 'dart:developer'; - import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/organ_model.dart'; @@ -38,12 +36,65 @@ class OrganData { id: 'nose_mouth', name: 'oral_cavity', nameAr: 'تجويف_الفم', - description: 'Nose/Mouth', - descriptionAr: 'الأنف/الفم', + description: 'Mouth', + descriptionAr: 'الفم', + bodyView: BodyView.front, + position: OrganPosition(x: 0.50, y: 0.135), + ), + + // ========== EARS (NEW) ========== + OrganModel( + id: 'left_ear', + name: 'ears', + nameAr: 'الأذن', + description: 'Left Ear', + descriptionAr: 'الأذن اليسرى', + bodyView: BodyView.front, + position: OrganPosition(x: 0.4, y: 0.1), + ), + OrganModel( + id: 'right_ear', + name: 'ears', + nameAr: 'الأذن', + description: 'Right Ear', + descriptionAr: 'الأذن اليمنى', + bodyView: BodyView.front, + position: OrganPosition(x: 0.64, y: 0.1), + ), + + // ========== NOSE (NEW) ========== + OrganModel( + id: 'nose', + name: 'nose', + nameAr: 'الأنف', + description: 'Nose', + descriptionAr: 'الأنف', bodyView: BodyView.front, - position: OrganPosition(x: 0.50, y: 0.09), + position: OrganPosition(x: 0.50, y: 0.095), ), + // ========== HEAD – SPECIFIC (NEW) ========== + // OrganModel( + // id: 'front_head', + // name: 'head', + // nameAr: 'الرأس', + // description: 'Front Head', + // descriptionAr: 'مقدمة الرأس', + // bodyView: BodyView.front, + // position: OrganPosition(x: 0.50, y: 0.04), + // ), + + // // ========== BEHAVIOR / THOUGHTS (NEW) ========== + // OrganModel( + // id: 'behavior_thoughts', + // name: 'problem_concerning_behavior_or_thoughts', + // nameAr: 'مشكلة_سلوكية_أو_نفسية', + // description: 'Behavior / Thoughts', + // descriptionAr: 'سلوك / أفكار', + // bodyView: BodyView.front, + // position: OrganPosition(x: 0.50, y: 0.02), + // ), + // ========== NECK ========== OrganModel( id: 'throat', @@ -52,7 +103,27 @@ class OrganData { description: 'Throat', descriptionAr: 'الحلق', bodyView: BodyView.front, - position: OrganPosition(x: 0.50, y: 0.15), + position: OrganPosition(x: 0.50, y: 0.17), + ), + + // ========== HALF NECK (NEW) ========== + OrganModel( + id: 'left_halfneck', + name: 'halfneck', + nameAr: 'نصف_الرقبة', + description: 'Left Half Neck', + descriptionAr: 'نصف الرقبة الأيسر', + bodyView: BodyView.front, + position: OrganPosition(x: 0.42, y: 0.15), + ), + OrganModel( + id: 'right_halfneck', + name: 'halfneck', + nameAr: 'نصف_الرقبة', + description: 'Right Half Neck', + descriptionAr: 'نصف الرقبة الأيمن', + bodyView: BodyView.front, + position: OrganPosition(x: 0.58, y: 0.15), ), // ========== SHOULDERS ========== @@ -75,6 +146,26 @@ class OrganData { position: OrganPosition(x: 0.8, y: 0.22), ), + // ========== UPPER LIMB (NEW) ========== + OrganModel( + id: 'left_upper_limb', + name: 'upper_limb', + nameAr: 'الطرف_العلوي', + description: 'Left Upper Limb', + descriptionAr: 'الطرف العلوي الأيسر', + bodyView: BodyView.front, + position: OrganPosition(x: 0.20, y: 0.30), + ), + OrganModel( + id: 'right_upper_limb', + name: 'upper_limb', + nameAr: 'الطرف_العلوي', + description: 'Right Upper Limb', + descriptionAr: 'الطرف العلوي الأيمن', + bodyView: BodyView.front, + position: OrganPosition(x: 0.80, y: 0.30), + ), + // ========== CHEST ========== OrganModel( id: 'left_chest', @@ -153,6 +244,28 @@ class OrganData { position: OrganPosition(x: 0.51, y: 0.44), ), + // ========== ABDOMEN – GENERAL (NEW) ========== + // OrganModel( + // id: 'abdomin', + // name: 'abdomin', + // nameAr: 'البطن_العام', + // description: 'Abdomen', + // descriptionAr: 'البطن', + // bodyView: BodyView.front, + // position: OrganPosition(x: 0.51, y: 0.36), + // ), + + // ========== SKIN (NEW) ========== + // OrganModel( + // id: 'skin', + // name: 'skin', + // nameAr: 'الجلد', + // description: 'Skin', + // descriptionAr: 'الجلد', + // bodyView: BodyView.front, + // position: OrganPosition(x: 0.50, y: 0.50), + // ), + // ========== PELVIS ========== OrganModel( id: 'left_groin', @@ -174,7 +287,6 @@ class OrganData { ), // ========== LEFT ARM ========== - OrganModel( id: 'left_elbow', name: 'elbow', @@ -204,7 +316,6 @@ class OrganData { ), // ========== RIGHT ARM ========== - OrganModel( id: 'right_elbow', name: 'elbow', @@ -308,7 +419,69 @@ class OrganData { bodyView: BodyView.front, position: OrganPosition(x: 0.57, y: 0.91), ), + + + // ========== UPPER LEG (NEW) ========== + OrganModel( + id: 'left_upperleg', + name: 'upperleg', + nameAr: 'الجزء_العلوي_من_الساق', + description: 'Left Upper Leg', + descriptionAr: 'الجزء العلوي من الساق الأيسر', + bodyView: BodyView.front, + position: OrganPosition(x: 0.40, y: 0.63), + ), + OrganModel( + id: 'right_upperleg', + name: 'upperleg', + nameAr: 'الجزء_العلوي_من_الساق', + description: 'Right Upper Leg', + descriptionAr: 'الجزء العلوي من الساق الأيمن', + bodyView: BodyView.front, + position: OrganPosition(x: 0.60, y: 0.63), + ), + + // ========== LOWER LEG – lowerleg key (NEW) ========== + OrganModel( + id: 'left_lowerleg', + name: 'lowerleg', + nameAr: 'الجزء_السفلي_من_الساق', + description: 'Left Lower Leg', + descriptionAr: 'الجزء السفلي من الساق الأيسر', + bodyView: BodyView.front, + position: OrganPosition(x: 0.41, y: 0.78), + ), + OrganModel( + id: 'right_lowerleg', + name: 'lowerleg', + nameAr: 'الجزء_السفلي_من_الساق', + description: 'Right Lower Leg', + descriptionAr: 'الجزء السفلي من الساق الأيمن', + bodyView: BodyView.front, + position: OrganPosition(x: 0.57, y: 0.78), + ), + + // ========== LOWER LIMB (NEW) ========== + OrganModel( + id: 'left_lower_limb', + name: 'lower_limb', + nameAr: 'الطرف_السفلي', + description: 'Left Lower Limb', + descriptionAr: 'الطرف السفلي الأيسر', + bodyView: BodyView.front, + position: OrganPosition(x: 0.40, y: 0.67), + ), + OrganModel( + id: 'right_lower_limb', + name: 'lower_limb', + nameAr: 'الطرف_السفلي', + description: 'Right Lower Limb', + descriptionAr: 'الطرف السفلي الأيمن', + bodyView: BodyView.front, + position: OrganPosition(x: 0.60, y: 0.67), + ), ]; + static const List frontViewOrgansForFemale = [ // ========== HEAD & FACE ========== OrganModel( @@ -342,12 +515,65 @@ class OrganData { id: 'nose_mouth', name: 'oral_cavity', nameAr: 'تجويف_الفم', - description: 'Nose/Mouth', + description: 'Mouth', descriptionAr: 'الأنف/الفم', bodyView: BodyView.front, - position: OrganPosition(x: 0.54, y: 0.12), + position: OrganPosition(x: 0.54, y: 0.14), ), + // ========== EARS (NEW) ========== + OrganModel( + id: 'left_ear', + name: 'ears', + nameAr: 'الأذن', + description: 'Left Ear', + descriptionAr: 'الأذن اليسرى', + bodyView: BodyView.front, + position: OrganPosition(x: 0.43, y: 0.12), + ), + OrganModel( + id: 'right_ear', + name: 'ears', + nameAr: 'الأذن', + description: 'Right Ear', + descriptionAr: 'الأذن اليمنى', + bodyView: BodyView.front, + position: OrganPosition(x: 0.656, y: 0.12), + ), + + // ========== NOSE (NEW) ========== + OrganModel( + id: 'nose', + name: 'nose', + nameAr: 'الأنف', + description: 'Nose', + descriptionAr: 'الأنف', + bodyView: BodyView.front, + position: OrganPosition(x: 0.54, y: 0.115), + ), + + // ========== HEAD – SPECIFIC (NEW) ========== + OrganModel( + id: 'front_head', + name: 'head', + nameAr: 'الرأس', + description: 'Front Head', + descriptionAr: 'مقدمة الرأس', + bodyView: BodyView.front, + position: OrganPosition(x: 0.54, y: 0.05), + ), + + // // ========== BEHAVIOR / THOUGHTS (NEW) ========== + // OrganModel( + // id: 'behavior_thoughts', + // name: 'problem_concerning_behavior_or_thoughts', + // nameAr: 'مشكلة_سلوكية_أو_نفسية', + // description: 'Behavior / Thoughts', + // descriptionAr: 'سلوك / أفكار', + // bodyView: BodyView.front, + // position: OrganPosition(x: 0.54, y: 0.02), + // ), + // ========== NECK ========== OrganModel( id: 'throat', @@ -359,6 +585,26 @@ class OrganData { position: OrganPosition(x: 0.54, y: 0.17), ), + // ========== HALF NECK (NEW) ========== + OrganModel( + id: 'left_halfneck', + name: 'halfneck', + nameAr: 'نصف_الرقبة', + description: 'Left Half Neck', + descriptionAr: 'نصف الرقبة الأيسر', + bodyView: BodyView.front, + position: OrganPosition(x: 0.48, y: 0.175), + ), + OrganModel( + id: 'right_halfneck', + name: 'halfneck', + nameAr: 'نصف_الرقبة', + description: 'Right Half Neck', + descriptionAr: 'نصف الرقبة الأيمن', + bodyView: BodyView.front, + position: OrganPosition(x: 0.60, y: 0.175), + ), + // ========== SHOULDERS ========== OrganModel( id: 'left_shoulder', @@ -379,6 +625,26 @@ class OrganData { position: OrganPosition(x: 0.75, y: 0.22), ), + // ========== UPPER LIMB (NEW) ========== + OrganModel( + id: 'left_upper_limb', + name: 'upper_limb', + nameAr: 'الطرف_العلوي', + description: 'Left Upper Limb', + descriptionAr: 'الطرف العلوي الأيسر', + bodyView: BodyView.front, + position: OrganPosition(x: 0.26, y: 0.30), + ), + OrganModel( + id: 'right_upper_limb', + name: 'upper_limb', + nameAr: 'الطرف_العلوي', + description: 'Right Upper Limb', + descriptionAr: 'الطرف العلوي الأيمن', + bodyView: BodyView.front, + position: OrganPosition(x: 0.76, y: 0.30), + ), + // ========== CHEST ========== OrganModel( id: 'left_chest', @@ -408,6 +674,26 @@ class OrganData { position: OrganPosition(x: 0.65, y: 0.22), ), + // ========== BREASTS (NEW – female only) ========== + OrganModel( + id: 'left_breast', + name: 'breasts', + nameAr: 'الثدي', + description: 'Left Breast', + descriptionAr: 'الثدي الأيسر', + bodyView: BodyView.front, + position: OrganPosition(x: 0.4, y: 0.27), + ), + OrganModel( + id: 'right_breast', + name: 'breasts', + nameAr: 'الثدي', + description: 'Right Breast', + descriptionAr: 'الثدي الأيمن', + bodyView: BodyView.front, + position: OrganPosition(x: 0.62, y: 0.27), + ), + // ========== RIBS ========== OrganModel( id: 'left_ribs', @@ -457,6 +743,28 @@ class OrganData { position: OrganPosition(x: 0.51, y: 0.44), ), + // ========== ABDOMEN – GENERAL (NEW) ========== + // OrganModel( + // id: 'abdomin', + // name: 'abdomin', + // nameAr: 'البطن_العام', + // description: 'Abdomen', + // descriptionAr: 'البطن', + // bodyView: BodyView.front, + // position: OrganPosition(x: 0.54, y: 0.36), + // ), + + // ========== SKIN (NEW) ========== + // OrganModel( + // id: 'skin', + // name: 'skin', + // nameAr: 'الجلد', + // description: 'Skin', + // descriptionAr: 'الجلد', + // bodyView: BodyView.front, + // position: OrganPosition(x: 0.54, y: 0.50), + // ), + // ========== PELVIS ========== OrganModel( id: 'left_groin', @@ -478,7 +786,6 @@ class OrganData { ), // ========== LEFT ARM ========== - OrganModel( id: 'left_elbow', name: 'elbow', @@ -508,7 +815,6 @@ class OrganData { ), // ========== RIGHT ARM ========== - OrganModel( id: 'right_elbow', name: 'elbow', @@ -612,6 +918,68 @@ class OrganData { bodyView: BodyView.front, position: OrganPosition(x: 0.57, y: 0.91), ), + + + + // ========== UPPER LEG (NEW) ========== + OrganModel( + id: 'left_upperleg', + name: 'upperleg', + nameAr: 'الجزء_العلوي_من_الساق', + description: 'Left Upper Leg', + descriptionAr: 'الجزء العلوي من الساق الأيسر', + bodyView: BodyView.front, + position: OrganPosition(x: 0.40, y: 0.63), + ), + OrganModel( + id: 'right_upperleg', + name: 'upperleg', + nameAr: 'الجزء_العلوي_من_الساق', + description: 'Right Upper Leg', + descriptionAr: 'الجزء العلوي من الساق الأيمن', + bodyView: BodyView.front, + position: OrganPosition(x: 0.65, y: 0.63), + ), + + // ========== LOWER LEG – lowerleg key (NEW) ========== + OrganModel( + id: 'left_lowerleg', + name: 'lowerleg', + nameAr: 'الجزء_السفلي_من_الساق', + description: 'Left Lower Leg', + descriptionAr: 'الجزء السفلي من الساق الأيسر', + bodyView: BodyView.front, + position: OrganPosition(x: 0.41, y: 0.78), + ), + OrganModel( + id: 'right_lowerleg', + name: 'lowerleg', + nameAr: 'الجزء_السفلي_من_الساق', + description: 'Right Lower Leg', + descriptionAr: 'الجزء السفلي من الساق الأيمن', + bodyView: BodyView.front, + position: OrganPosition(x: 0.59, y: 0.78), + ), + + // ========== LOWER LIMB (NEW) ========== + OrganModel( + id: 'left_lower_limb', + name: 'lower_limb', + nameAr: 'الطرف_السفلي', + description: 'Left Lower Limb', + descriptionAr: 'الطرف السفلي الأيسر', + bodyView: BodyView.front, + position: OrganPosition(x: 0.40, y: 0.67), + ), + OrganModel( + id: 'right_lower_limb', + name: 'lower_limb', + nameAr: 'الطرف_السفلي', + description: 'Right Lower Limb', + descriptionAr: 'الطرف السفلي الأيمن', + bodyView: BodyView.front, + position: OrganPosition(x: 0.65, y: 0.67), + ), ]; // ==================== BACK VIEW ==================== @@ -743,6 +1111,16 @@ class OrganData { position: OrganPosition(x: 0.60, y: 0.43), ), + // ========== ANUS (NEW) ========== + OrganModel( + id: 'anus', + name: 'anus', + nameAr: 'فتحة_الشرج', + description: 'Anus', + descriptionAr: 'فتحة الشرج', + bodyView: BodyView.back, + position: OrganPosition(x: 0.525, y: 0.5), + ), // ========== GLUTES ========== OrganModel( id: 'sacrum', @@ -751,7 +1129,7 @@ class OrganData { description: 'Sacrum', descriptionAr: 'العجز', bodyView: BodyView.back, - position: OrganPosition(x: 0.50, y: 0.52), + position: OrganPosition(x: 0.50, y: 0.46), ), OrganModel( id: 'left_glute', @@ -810,6 +1188,7 @@ class OrganData { position: OrganPosition(x: 0.57, y: 0.79), ), ]; + static const List backViewOrgansForFemale = [ // ========== HEAD & NECK ========== OrganModel( @@ -880,6 +1259,17 @@ class OrganData { position: OrganPosition(x: 0.62, y: 0.28), ), + // // ========== SKIN – BACK (NEW) ========== + // OrganModel( + // id: 'skin_back', + // name: 'skin', + // nameAr: 'الجلد', + // description: 'Skin', + // descriptionAr: 'الجلد', + // bodyView: BodyView.back, + // position: OrganPosition(x: 0.50, y: 0.30), + // ), + // ========== MID BACK ========== OrganModel( id: 'mid_spine', @@ -946,7 +1336,7 @@ class OrganData { description: 'Sacrum', descriptionAr: 'العجز', bodyView: BodyView.back, - position: OrganPosition(x: 0.50, y: 0.5), + position: OrganPosition(x: 0.50, y: 0.47), ), OrganModel( id: 'left_glute', @@ -1011,7 +1401,6 @@ class OrganData { static List getOrgansForView(BodyView view, {String? genderKey}) { final bool isFemale = genderKey != null && (genderKey.toLowerCase() == 'female' || genderKey == 'أنثى' || genderKey == '2'); - if (view == BodyView.front) { return isFemale ? frontViewOrgansForFemale : frontViewOrgansForMale; } else { @@ -1040,4 +1429,4 @@ class OrganData { return null; } } -} +} \ No newline at end of file diff --git a/lib/features/symptoms_checker/models/req_models/schedule_appointment_request_model.dart b/lib/features/symptoms_checker/models/req_models/schedule_appointment_request_model.dart new file mode 100644 index 00000000..7d8f9a25 --- /dev/null +++ b/lib/features/symptoms_checker/models/req_models/schedule_appointment_request_model.dart @@ -0,0 +1,48 @@ +class ScheduleAppointmentRequestModel { + final String generalId; + final String fileNo; + final String appointmentNo; + final String doctorId; + final String appointmentDate; + final String mobileNumber; + final int projectId; + final int clinicId; + + ScheduleAppointmentRequestModel({ + required this.generalId, + required this.fileNo, + required this.appointmentNo, + required this.doctorId, + required this.appointmentDate, + required this.mobileNumber, + required this.projectId, + required this.clinicId, + }); + + Map toJson() { + return { + 'generalId': generalId, + 'fileNo': fileNo, + 'appointmentNo': appointmentNo, + 'doctorId': doctorId, + 'appointmentDate': appointmentDate, + 'mobileNumber': mobileNumber, + 'projectId': projectId, + 'clinicId': clinicId, + }; + } + + factory ScheduleAppointmentRequestModel.fromJson(Map json) { + return ScheduleAppointmentRequestModel( + generalId: json['generalId'] ?? '', + fileNo: json['fileNo'] ?? '', + appointmentNo: json['appointmentNo'] ?? '', + doctorId: json['doctorId'] ?? '', + appointmentDate: json['appointmentDate'] ?? '', + mobileNumber: json['mobileNumber'] ?? '', + projectId: json['projectId'] ?? 0, + clinicId: json['clinicId'] ?? 0, + ); + } +} + diff --git a/lib/features/symptoms_checker/models/resp_models/explanations_response_model.dart b/lib/features/symptoms_checker/models/resp_models/explanations_response_model.dart new file mode 100644 index 00000000..88273d33 --- /dev/null +++ b/lib/features/symptoms_checker/models/resp_models/explanations_response_model.dart @@ -0,0 +1,147 @@ +class ExplanationsResponseModel { + final ExplanationsDataDetails? dataDetails; + + ExplanationsResponseModel({this.dataDetails}); + + factory ExplanationsResponseModel.fromJson(Map json) { + return ExplanationsResponseModel( + dataDetails: json['dataDetails'] != null + ? ExplanationsDataDetails.fromJson(json['dataDetails']) + : null, + ); + } + + Map toJson() { + return { + 'dataDetails': dataDetails?.toJson(), + }; + } +} + +class ExplanationsDataDetails { + final List? supportingEvidence; + final List? conflictingEvidence; + final List? unconfirmedEvidence; + final String? message; + final List? errorList; + final int? id; + final String? language; + final String? generalId; + final String? createDate; + final String? lastEditDate; + final String? createdBy; + final String? lastEditBy; + final bool? active; + final int? sortOrder; + final int? userType; + final String? userId; + + ExplanationsDataDetails({ + this.supportingEvidence, + this.conflictingEvidence, + this.unconfirmedEvidence, + this.message, + this.errorList, + this.id, + this.language, + this.generalId, + this.createDate, + this.lastEditDate, + this.createdBy, + this.lastEditBy, + this.active, + this.sortOrder, + this.userType, + this.userId, + }); + + factory ExplanationsDataDetails.fromJson(Map json) { + return ExplanationsDataDetails( + supportingEvidence: json['supporting_evidence'] != null + ? (json['supporting_evidence'] as List) + .map((item) => ExplanationEvidence.fromJson(item)) + .toList() + : null, + conflictingEvidence: json['conflicting_evidence'] != null + ? (json['conflicting_evidence'] as List) + .map((item) => ExplanationEvidence.fromJson(item)) + .toList() + : null, + unconfirmedEvidence: json['unconfirmed_evidence'] != null + ? (json['unconfirmed_evidence'] as List) + .map((item) => ExplanationEvidence.fromJson(item)) + .toList() + : null, + message: json['Message'], + errorList: json['ErrorList'] != null + ? List.from(json['ErrorList']) + : null, + id: json['Id'], + language: json['language'], + generalId: json['generalId'], + createDate: json['CreateDate'], + lastEditDate: json['LastEditDate'], + createdBy: json['CreatedBy'], + lastEditBy: json['LastEditBy'], + active: json['Active'], + sortOrder: json['SortOrder'], + userType: json['userType'], + userId: json['userId'], + ); + } + + Map toJson() { + return { + 'supporting_evidence': supportingEvidence?.map((item) => item.toJson()).toList(), + 'conflicting_evidence': conflictingEvidence?.map((item) => item.toJson()).toList(), + 'unconfirmed_evidence': unconfirmedEvidence?.map((item) => item.toJson()).toList(), + 'Message': message, + 'ErrorList': errorList, + 'Id': id, + 'language': language, + 'generalId': generalId, + 'CreateDate': createDate, + 'LastEditDate': lastEditDate, + 'CreatedBy': createdBy, + 'LastEditBy': lastEditBy, + 'Active': active, + 'SortOrder': sortOrder, + 'userType': userType, + 'userId': userId, + }; + } +} + +class ExplanationEvidence { + final String? id; + final String? name; + final String? commonName; + + ExplanationEvidence({ + this.id, + this.name, + this.commonName, + }); + + factory ExplanationEvidence.fromJson(Map json) { + return ExplanationEvidence( + id: json['id'], + name: json['name'], + commonName: json['common_name'], + ); + } + + Map toJson() { + return { + 'id': id, + 'name': name, + 'common_name': commonName, + }; + } + + // Helper method to get display name + String getDisplayName() { + return commonName ?? name ?? ''; + } +} + diff --git a/lib/features/symptoms_checker/models/resp_models/rationale_response_model.dart b/lib/features/symptoms_checker/models/resp_models/rationale_response_model.dart new file mode 100644 index 00000000..33d31172 --- /dev/null +++ b/lib/features/symptoms_checker/models/resp_models/rationale_response_model.dart @@ -0,0 +1,176 @@ +class RationaleResponseModel { + final RationaleDataDetails? dataDetails; + + RationaleResponseModel({this.dataDetails}); + + factory RationaleResponseModel.fromJson(Map json) { + return RationaleResponseModel( + dataDetails: json['dataDetails'] != null + ? RationaleDataDetails.fromJson(json['dataDetails']) + : null, + ); + } + + Map toJson() { + return { + 'dataDetails': dataDetails?.toJson(), + }; + } +} + +class RationaleDataDetails { + final String? type; + final List? observationParams; + final List? conditionParams; + final String? message; + final List? errorList; + final int? id; + final String? language; + final String? generalId; + final String? createDate; + final String? lastEditDate; + final String? createdBy; + final String? lastEditBy; + final bool? active; + final int? sortOrder; + final int? userType; + final String? userId; + + RationaleDataDetails({ + this.type, + this.observationParams, + this.conditionParams, + this.message, + this.errorList, + this.id, + this.language, + this.generalId, + this.createDate, + this.lastEditDate, + this.createdBy, + this.lastEditBy, + this.active, + this.sortOrder, + this.userType, + this.userId, + }); + + factory RationaleDataDetails.fromJson(Map json) { + return RationaleDataDetails( + type: json['type'], + observationParams: json['observation_params'] != null + ? (json['observation_params'] as List) + .map((item) => RationaleObservationParam.fromJson(item)) + .toList() + : null, + conditionParams: json['condition_params'] != null + ? (json['condition_params'] as List) + .map((item) => RationaleConditionParam.fromJson(item)) + .toList() + : null, + message: json['Message'], + errorList: json['ErrorList'] != null + ? List.from(json['ErrorList']) + : null, + id: json['Id'], + language: json['language'], + generalId: json['generalId'], + createDate: json['CreateDate'], + lastEditDate: json['LastEditDate'], + createdBy: json['CreatedBy'], + lastEditBy: json['LastEditBy'], + active: json['Active'], + sortOrder: json['SortOrder'], + userType: json['userType'], + userId: json['userId'], + ); + } + + Map toJson() { + return { + 'type': type, + 'observation_params': observationParams?.map((item) => item.toJson()).toList(), + 'condition_params': conditionParams?.map((item) => item.toJson()).toList(), + 'Message': message, + 'ErrorList': errorList, + 'Id': id, + 'language': language, + 'generalId': generalId, + 'CreateDate': createDate, + 'LastEditDate': lastEditDate, + 'CreatedBy': createdBy, + 'LastEditBy': lastEditBy, + 'Active': active, + 'SortOrder': sortOrder, + 'userType': userType, + 'userId': userId, + }; + } +} + +class RationaleObservationParam { + final String? id; + final String? name; + final String? commonName; + + RationaleObservationParam({ + this.id, + this.name, + this.commonName, + }); + + factory RationaleObservationParam.fromJson(Map json) { + return RationaleObservationParam( + id: json['id'], + name: json['name'], + commonName: json['common_name'], + ); + } + + Map toJson() { + return { + 'id': id, + 'name': name, + 'common_name': commonName, + }; + } + + // Helper method to get display name + String getDisplayName() { + return commonName ?? name ?? ''; + } +} + +class RationaleConditionParam { + final String? id; + final String? name; + final String? commonName; + + RationaleConditionParam({ + this.id, + this.name, + this.commonName, + }); + + factory RationaleConditionParam.fromJson(Map json) { + return RationaleConditionParam( + id: json['id'], + name: json['name'], + commonName: json['common_name'], + ); + } + + Map toJson() { + return { + 'id': id, + 'name': name, + 'common_name': commonName, + }; + } + + // Helper method to get display name + String getDisplayName() { + return commonName ?? name ?? ''; + } +} + diff --git a/lib/features/symptoms_checker/models/resp_models/schedule_appointment_response_model.dart b/lib/features/symptoms_checker/models/resp_models/schedule_appointment_response_model.dart new file mode 100644 index 00000000..8511e18a --- /dev/null +++ b/lib/features/symptoms_checker/models/resp_models/schedule_appointment_response_model.dart @@ -0,0 +1,32 @@ +class ScheduleAppointmentResponseModel { + final bool? success; + final String? message; + final String? appointmentId; + final dynamic data; + + ScheduleAppointmentResponseModel({ + this.success, + this.message, + this.appointmentId, + this.data, + }); + + factory ScheduleAppointmentResponseModel.fromJson(Map json) { + return ScheduleAppointmentResponseModel( + success: json['success'], + message: json['message'], + appointmentId: json['appointmentId'], + data: json['data'], + ); + } + + Map toJson() { + return { + 'success': success, + 'message': message, + 'appointmentId': appointmentId, + 'data': data, + }; + } +} + diff --git a/lib/features/symptoms_checker/models/resp_models/triage_level_response_model.dart b/lib/features/symptoms_checker/models/resp_models/triage_level_response_model.dart new file mode 100644 index 00000000..7d8432bf --- /dev/null +++ b/lib/features/symptoms_checker/models/resp_models/triage_level_response_model.dart @@ -0,0 +1,151 @@ +class TriageLevelResponseModel { + final TriageLevelDataDetails? dataDetails; + + TriageLevelResponseModel({this.dataDetails}); + + factory TriageLevelResponseModel.fromJson(Map json) { + return TriageLevelResponseModel( + dataDetails: json['dataDetails'] != null + ? TriageLevelDataDetails.fromJson(json['dataDetails']) + : null, + ); + } + + Map toJson() { + return { + 'dataDetails': dataDetails?.toJson(), + }; + } +} + +class TriageLevelDataDetails { + final String? triageLevel; + final List? serious; + final String? rootCause; + final bool? teleconsultationApplicable; + final String? message; + final List? errorList; + final int? id; + final String? language; + final String? generalId; + final String? createDate; + final String? lastEditDate; + final String? createdBy; + final String? lastEditBy; + final bool? active; + final int? sortOrder; + final int? userType; + final String? userId; + + TriageLevelDataDetails({ + this.triageLevel, + this.serious, + this.rootCause, + this.teleconsultationApplicable, + this.message, + this.errorList, + this.id, + this.language, + this.generalId, + this.createDate, + this.lastEditDate, + this.createdBy, + this.lastEditBy, + this.active, + this.sortOrder, + this.userType, + this.userId, + }); + + factory TriageLevelDataDetails.fromJson(Map json) { + return TriageLevelDataDetails( + triageLevel: json['triage_level'], + serious: json['serious'] != null + ? (json['serious'] as List) + .map((item) => SeriousEvidence.fromJson(item)) + .toList() + : null, + rootCause: json['root_cause'], + teleconsultationApplicable: json['teleconsultation_applicable'], + message: json['Message'], + errorList: json['ErrorList'] != null + ? List.from(json['ErrorList']) + : null, + id: json['Id'], + language: json['language'], + generalId: json['generalId'], + createDate: json['CreateDate'], + lastEditDate: json['LastEditDate'], + createdBy: json['CreatedBy'], + lastEditBy: json['LastEditBy'], + active: json['Active'], + sortOrder: json['SortOrder'], + userType: json['userType'], + userId: json['userId'], + ); + } + + Map toJson() { + return { + 'triage_level': triageLevel, + 'serious': serious?.map((item) => item.toJson()).toList(), + 'root_cause': rootCause, + 'teleconsultation_applicable': teleconsultationApplicable, + 'Message': message, + 'ErrorList': errorList, + 'Id': id, + 'language': language, + 'generalId': generalId, + 'CreateDate': createDate, + 'LastEditDate': lastEditDate, + 'CreatedBy': createdBy, + 'LastEditBy': lastEditBy, + 'Active': active, + 'SortOrder': sortOrder, + 'userType': userType, + 'userId': userId, + }; + } +} + +class SeriousEvidence { + final String? id; + final String? name; + final String? commonName; + final String? seriousness; + final bool? isEmergency; + + SeriousEvidence({ + this.id, + this.name, + this.commonName, + this.seriousness, + this.isEmergency, + }); + + factory SeriousEvidence.fromJson(Map json) { + return SeriousEvidence( + id: json['id'], + name: json['name'], + commonName: json['common_name'], + seriousness: json['seriousness'], + isEmergency: json['is_emergency'], + ); + } + + Map toJson() { + return { + 'id': id, + 'name': name, + 'common_name': commonName, + 'seriousness': seriousness, + 'is_emergency': isEmergency, + }; + } + + // Helper method to get display name + String getDisplayName() { + return commonName ?? name ?? ''; + } +} + diff --git a/lib/features/symptoms_checker/models/resp_models/triage_response_model.dart b/lib/features/symptoms_checker/models/resp_models/triage_response_model.dart index da0f4b67..e8992014 100644 --- a/lib/features/symptoms_checker/models/resp_models/triage_response_model.dart +++ b/lib/features/symptoms_checker/models/resp_models/triage_response_model.dart @@ -91,18 +91,28 @@ class TriageDataDetails { class TriageQuestion { final int? type; final String? text; + final String? explication; + final List? instruction; final List? items; TriageQuestion({ this.type, this.text, + this.explication, + this.instruction, this.items, }); factory TriageQuestion.fromJson(Map json) { + // TESTING: Add dummy instructions to every question for testing UI + return TriageQuestion( type: json['type'], text: json['text'], + explication: json['explication'], + // Use dummy if null + instruction: json['instruction'] != null ? List.from(json['instruction']) : [], + // Use dummy if null items: json['items'] != null ? (json['items'] as List).map((item) => TriageQuestionItem.fromJson(item)).toList() : null, ); } @@ -111,9 +121,18 @@ class TriageQuestion { return { 'type': type, 'text': text, + 'explication': explication, + 'instruction': instruction, 'items': items?.map((item) => item.toJson()).toList(), }; } + + /// Check if instruction OR explication is available + bool get hasInstructions { + final hasInstruction = instruction != null && instruction!.isNotEmpty; + final hasExplication = explication != null && explication!.isNotEmpty; + return hasInstruction || hasExplication; + } } class TriageQuestionItem { diff --git a/lib/features/symptoms_checker/symptoms_checker_repo.dart b/lib/features/symptoms_checker/symptoms_checker_repo.dart index 33bcbd8f..77d3a2fa 100644 --- a/lib/features/symptoms_checker/symptoms_checker_repo.dart +++ b/lib/features/symptoms_checker/symptoms_checker_repo.dart @@ -1,14 +1,20 @@ import 'dart:convert'; +import 'dart:developer'; import 'package:dartz/dartz.dart'; import 'package:hmg_patient_app_new/core/api/api_client.dart'; import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/models/req_models/schedule_appointment_request_model.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/body_symptom_response_model.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/explanations_response_model.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/get_clinic_details_response_model.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/rationale_response_model.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/risk_and_suggestions_response_model.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/schedule_appointment_response_model.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/symptoms_user_details_response_model.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/triage_level_response_model.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/triage_response_model.dart'; import 'package:hmg_patient_app_new/services/logger_service.dart'; @@ -16,6 +22,7 @@ abstract class SymptomsCheckerRepo { Future>> getUserDetails({ required String userName, required String password, + String? fileNo, }); Future>> getBodySymptomsByName({ @@ -36,7 +43,7 @@ abstract class SymptomsCheckerRepo { Future>> getSuggestions({ required int age, required int gender, - required List evidenceIds, + required List> evidenceList, required String language, required String userSessionToken, required String sessionId, @@ -45,7 +52,7 @@ abstract class SymptomsCheckerRepo { Future>> getDiagnosisForTriage({ required int age, required int gender, - required List evidenceIds, + required List> initialEvidenceList, List>? triageEvidence, required String language, required String userSessionToken, @@ -54,6 +61,40 @@ abstract class SymptomsCheckerRepo { Future>>> getClinicDetails({ required String categoryName, + required String language, + required String userSessionToken, + }); + + Future>> saveAppointmentDetailsForSymptomsChecker({ + required ScheduleAppointmentRequestModel request, + required String userSessionToken, + }); + + Future>> getRationale({ + required int age, + required int gender, + required List> evidence, + required String language, + required String generalId, + required String userSessionToken, + }); + + Future>> getTriage({ + required int age, + required int gender, + required List> evidence, + required String language, + required String generalId, + required String userSessionToken, + }); + + Future>> getExplanations({ + required int age, + required int gender, + required List> evidence, + required String language, + required String target, + required String generalId, required String userSessionToken, }); } @@ -68,8 +109,17 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { Future>> getUserDetails({ required String userName, required String password, + String? fileNo, }) async { - Map body = {"userName": userName, "password": password}; + Map body = { + "userName": userName, + "password": password, + }; + + // Add fileNo only if provided (user is logged in) + if (fileNo != null && fileNo.isNotEmpty) { + body["fileNo"] = fileNo; + } try { GenericApiModel? apiResponse; @@ -182,12 +232,20 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { required String userSessionToken, required String sessionId, }) async { + // Build evidence list with "initial" source for symptoms + final List> evidenceList = evidenceIds.map((id) { + return { + "id": id, + "source": "initial", + }; + }).toList(); + final Map body = { "age": { "value": age, }, "gender": gender, - "evidence": evidenceIds.map((id) => {"id": id}).toList(), + "evidence": evidenceList, "language": language, "generalId": sessionId, }; @@ -246,21 +304,19 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { Future>> getDiagnosisForTriage({ required int age, required int gender, - required List evidenceIds, + required List> initialEvidenceList, List>? triageEvidence, // Additional triage-specific evidence required String language, required String userSessionToken, required String sessionId, }) async { - // Build evidence list: combine initial symptoms with triage evidence + // Build evidence list: combine initial evidence (with sources) with triage evidence List> evidenceList = []; - // Add initial evidence as simple IDs - for (var id in evidenceIds) { - evidenceList.add({"id": id}); - } + // Add initial evidence (already has sources: initial, red_flags, suggest) + evidenceList.addAll(initialEvidenceList); - // Add triage evidence with proper format (id, choice_id, source) + // Add triage evidence with proper format (id, choice_id, source=triage) if (triageEvidence != null && triageEvidence.isNotEmpty) { evidenceList.addAll(triageEvidence); } @@ -332,7 +388,7 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { Future>> getSuggestions({ required int age, required int gender, - required List evidenceIds, + required List> evidenceList, required String language, required String userSessionToken, required String sessionId, @@ -342,7 +398,7 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { "value": age, }, "gender": gender, - "evidence": evidenceIds.map((id) => {"id": id}).toList(), + "evidence": evidenceList, "language": language, "generalId": sessionId, }; @@ -400,20 +456,20 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { @override Future>>> getClinicDetails({ required String categoryName, + required String language, required String userSessionToken, }) async { Map headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer $userSessionToken', }; - Map body = {}; try { GenericApiModel>? apiResponse; Failure? failure; await apiClient.get( - "${ApiConsts.getClinicFromCondition}$categoryName", + "${ApiConsts.getClinicFromCondition}$categoryName&language=$language", apiHeaders: headers, isExternal: true, isAllowAny: true, @@ -421,10 +477,14 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { failure = failureType ?? ServerFailure(error); }, onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + log("response['dataDetails']: ${response['dataDetails']}"); final clinicDetails; try { final list = response['dataDetails']; - clinicDetails = list.map((item) => GetClinicDetailsResponseModel.fromJson(item as Map)).toList().cast(); + clinicDetails = list + .map((item) => GetClinicDetailsResponseModel.fromJson(item as Map)) + .toList() + .cast(); apiResponse = GenericApiModel>( messageStatus: messageStatus ?? 1, @@ -449,4 +509,267 @@ class SymptomsCheckerRepoImp implements SymptomsCheckerRepo { return Left(UnknownFailure(e.toString())); } } + + @override + Future>> saveAppointmentDetailsForSymptomsChecker({ + required ScheduleAppointmentRequestModel request, + required String userSessionToken, + }) async { + Map headers = { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer $userSessionToken', + }; + + final body = request.toJson(); + + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.symptomsCheckerScheduleAppointment, + apiHeaders: headers, + body: body, + isExternal: true, + isAllowAny: true, + onFailure: (error, statusCode, {messageStatus, failureType}) { + loggerService.logError("ScheduleAppointment API Failed: $error"); + failure = failureType ?? ServerFailure(error); + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + // Parse response if it's a string + final Map responseData = response is String ? jsonDecode(response) : response; + + ScheduleAppointmentResponseModel scheduleAppointmentResponse = ScheduleAppointmentResponseModel.fromJson(responseData); + + apiResponse = GenericApiModel( + messageStatus: messageStatus ?? 1, + statusCode: statusCode, + errorMessage: errorMessage, + data: scheduleAppointmentResponse, + ); + } catch (e, stackTrace) { + loggerService.logError("Error parsing ScheduleAppointment response: $e"); + loggerService.logError("StackTrace: $stackTrace"); + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e, stackTrace) { + loggerService.logError("Exception in scheduleAppointment: $e"); + loggerService.logError("StackTrace: $stackTrace"); + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> getRationale({ + required int age, + required int gender, + required List> evidence, + required String language, + required String generalId, + required String userSessionToken, + }) async { + final Map body = { + "age": { + "value": age, + }, + "gender": gender, + "evidence": evidence, + "language": language, + "generalId": generalId, + }; + + Map headers = { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer $userSessionToken', + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.getRationale, + apiHeaders: headers, + body: body, + isExternal: true, + isAllowAny: true, + onFailure: (error, statusCode, {messageStatus, failureType}) { + loggerService.logError("GetRationale API Failed: $error"); + failure = failureType ?? ServerFailure(error); + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final Map responseData = response is String ? jsonDecode(response) : response; + + RationaleResponseModel rationaleResponse = RationaleResponseModel.fromJson(responseData); + + apiResponse = GenericApiModel( + messageStatus: messageStatus ?? 1, + statusCode: statusCode, + errorMessage: errorMessage, + data: rationaleResponse, + ); + } catch (e, stackTrace) { + loggerService.logError("Error parsing GetRationale response: $e"); + loggerService.logError("StackTrace: $stackTrace"); + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e, stackTrace) { + loggerService.logError("Exception in getRationale: $e"); + loggerService.logError("StackTrace: $stackTrace"); + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> getTriage({ + required int age, + required int gender, + required List> evidence, + required String language, + required String generalId, + required String userSessionToken, + }) async { + final Map body = { + "age": { + "value": age, + }, + "gender": gender, + "evidence": evidence, + "language": language, + "generalId": generalId, + }; + + Map headers = { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer $userSessionToken', + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.getTriage, + apiHeaders: headers, + body: body, + isExternal: true, + isAllowAny: true, + onFailure: (error, statusCode, {messageStatus, failureType}) { + loggerService.logError("GetTriage API Failed: $error"); + failure = failureType ?? ServerFailure(error); + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final Map responseData = response is String ? jsonDecode(response) : response; + + TriageLevelResponseModel triageResponse = TriageLevelResponseModel.fromJson(responseData); + + apiResponse = GenericApiModel( + messageStatus: messageStatus ?? 1, + statusCode: statusCode, + errorMessage: errorMessage, + data: triageResponse, + ); + } catch (e, stackTrace) { + loggerService.logError("Error parsing GetTriage response: $e"); + loggerService.logError("StackTrace: $stackTrace"); + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e, stackTrace) { + loggerService.logError("Exception in getTriage: $e"); + loggerService.logError("StackTrace: $stackTrace"); + return Left(UnknownFailure(e.toString())); + } + } + + @override + Future>> getExplanations({ + required int age, + required int gender, + required List> evidence, + required String language, + required String target, + required String generalId, + required String userSessionToken, + }) async { + final Map body = { + "age": { + "value": age, + }, + "gender": gender, + "evidence": evidence, + "language": language, + "target": target, + "generalId": generalId, + }; + + Map headers = { + 'Content-Type': 'application/json', + 'Authorization': 'Bearer $userSessionToken', + }; + + try { + GenericApiModel? apiResponse; + Failure? failure; + + await apiClient.post( + ApiConsts.getExplanations, + apiHeaders: headers, + body: body, + isExternal: true, + isAllowAny: true, + onFailure: (error, statusCode, {messageStatus, failureType}) { + loggerService.logError("GetExplanations API Failed: $error"); + failure = failureType ?? ServerFailure(error); + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + final Map responseData = response is String ? jsonDecode(response) : response; + + ExplanationsResponseModel explanationsResponse = ExplanationsResponseModel.fromJson(responseData); + + apiResponse = GenericApiModel( + messageStatus: messageStatus ?? 1, + statusCode: statusCode, + errorMessage: errorMessage, + data: explanationsResponse, + ); + } catch (e, stackTrace) { + loggerService.logError("Error parsing GetExplanations response: $e"); + loggerService.logError("StackTrace: $stackTrace"); + failure = DataParsingFailure(e.toString()); + } + }, + ); + + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e, stackTrace) { + loggerService.logError("Exception in getExplanations: $e"); + loggerService.logError("StackTrace: $stackTrace"); + return Left(UnknownFailure(e.toString())); + } + } } diff --git a/lib/features/symptoms_checker/symptoms_checker_view_model.dart b/lib/features/symptoms_checker/symptoms_checker_view_model.dart index 215b6921..18f6367e 100644 --- a/lib/features/symptoms_checker/symptoms_checker_view_model.dart +++ b/lib/features/symptoms_checker/symptoms_checker_view_model.dart @@ -1,14 +1,20 @@ import 'dart:async'; +import 'dart:developer'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/data/organ_mapping_data.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/organ_model.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/models/req_models/schedule_appointment_request_model.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/body_symptom_response_model.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/explanations_response_model.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/get_clinic_details_response_model.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/rationale_response_model.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/risk_and_suggestions_response_model.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/schedule_appointment_response_model.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/symptoms_user_details_response_model.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/triage_level_response_model.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/triage_response_model.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_repo.dart'; import 'package:hmg_patient_app_new/services/error_handler_service.dart'; @@ -47,6 +53,12 @@ class SymptomsCheckerViewModel extends ChangeNotifier { final Set _selectedOrganIds = {}; bool _isBottomSheetExpanded = false; + // Zoom state + double _currentZoomScale = 1.0; + static const double _minZoomScale = 1.0; + static const double _maxZoomScale = 2.0; + static const double _zoomStep = 1.0; + // Tooltip state String? _tooltipOrganId; Timer? _tooltipTimer; @@ -56,6 +68,13 @@ class SymptomsCheckerViewModel extends ChangeNotifier { bool isRiskFactorsLoading = false; bool isSuggestionsLoading = false; bool isTriageDiagnosisLoading = false; + bool isScheduleAppointmentLoading = false; + bool isRationaleLoading = false; + bool isTriageLevelLoading = false; + bool isExplanationsLoading = false; + + // Flag to track if appointment is being booked via symptoms checker flow + bool isBookingFromSymptomsChecker = false; // API data storage - using API models directly SymptomsUserDetailsResponseModel? symptomsUserDetailsResponseModel; @@ -63,6 +82,9 @@ class SymptomsCheckerViewModel extends ChangeNotifier { RiskAndSuggestionsResponseModel? riskFactorsResponse; RiskAndSuggestionsResponseModel? suggestionsResponse; TriageDataDetails? triageDataDetails; + RationaleResponseModel? rationaleResponse; + TriageLevelResponseModel? triageLevelResponse; + ExplanationsResponseModel? explanationsResponse; // Triage state int? _selectedTriageChoiceIndex; // Deprecated - keeping for backward compatibility @@ -70,6 +92,14 @@ class SymptomsCheckerViewModel extends ChangeNotifier { final List> _triageEvidenceList = []; // Store triage evidence with proper format int _triageQuestionCount = 0; // Track number of triage questions answered + // For type=1 questions: single selection across all items + String? _selectedSingleItemId; // Store which item was selected + int? _selectedSingleChoiceIndex; // Store which choice was selected + + // Triage question history tracking + final List _triageQuestionHistory = []; // Stack of previous questions + final List>> _triageEvidenceHistory = []; // Stack of evidence states at each question + // Selected risk factors tracking final Set _selectedRiskFactorIds = {}; @@ -79,6 +109,10 @@ class SymptomsCheckerViewModel extends ChangeNotifier { // Selected symptoms tracking (organId -> Set of symptom IDs) final Map> _selectedSymptomsByOrgan = {}; + // Symptom search/filter state + String _symptomSearchQuery = ''; + List _filteredOrganSymptomsResults = []; + // User Info Flow State int _userInfoCurrentPage = 0; bool _isSinglePageEditMode = false; // Track if editing single page or full flow @@ -135,6 +169,8 @@ class SymptomsCheckerViewModel extends ChangeNotifier { String? get tooltipOrganId => _tooltipOrganId; + double get currentZoomScale => _currentZoomScale; + String get currentSessionAuthToken => symptomsUserDetailsResponseModel?.tokenDetails?.authToken ?? ""; String get currentSessionId => symptomsUserDetailsResponseModel?.sessionId ?? ""; @@ -155,6 +191,9 @@ class SymptomsCheckerViewModel extends ChangeNotifier { /// Get the number of triage questions answered int get triageQuestionCount => _triageQuestionCount; + /// Check if this is the first triage question (no history) + bool get isFirstTriageQuestion => _triageQuestionHistory.isEmpty; + List clinicDetailsList = []; /// Get choice index for a specific item @@ -162,12 +201,43 @@ class SymptomsCheckerViewModel extends ChangeNotifier { return _selectedTriageChoicesByItemId[itemId]; } + /// Check if current question type is single selection (type=1) + bool get isTriageQuestionSingleSelection => currentTriageQuestion?.type == 1; + + /// Check if current question type is multi-item selection (type=2) + bool get isTriageQuestionMultiItem => currentTriageQuestion?.type == 2; + + /// For type=1 questions: check if a specific item is selected (ignore choiceIndex) + bool isTriageSingleOptionSelected(String itemId, int choiceIndex) { + return _selectedSingleItemId == itemId; + } + + /// Get selected item ID for type=1 questions + String? get selectedSingleItemId => _selectedSingleItemId; + + /// Get selected choice index for type=1 questions + int? get selectedSingleChoiceIndex => _selectedSingleChoiceIndex; + + /// Set flag for booking from symptoms checker + void setBookingFromSymptomsChecker(bool value) { + isBookingFromSymptomsChecker = value; + + log("isBookingFromSymptomsChecker: $isBookingFromSymptomsChecker"); + notifyListeners(); + } + /// Check if all items in current question have been answered bool get areAllTriageItemsAnswered { if (currentTriageQuestion?.items == null || currentTriageQuestion!.items!.isEmpty) { return false; } + // Type 1: Single selection mode - check if any option is selected + if (isTriageQuestionSingleSelection) { + return _selectedSingleItemId != null && _selectedSingleChoiceIndex != null; + } + + // Type 2: Multi-item selection mode - check if all items have answers // Check if we have an answer for each item for (var item in currentTriageQuestion!.items!) { if (item.id != null && !_selectedTriageChoicesByItemId.containsKey(item.id)) { @@ -199,6 +269,28 @@ class SymptomsCheckerViewModel extends ChangeNotifier { return bodySymptomResponse!.dataDetails!.result ?? []; } + /// Get filtered organ symptoms results based on search query + List get filteredOrganSymptomsResults { + if (_symptomSearchQuery.isEmpty) { + return organSymptomsResults; + } + return _filteredOrganSymptomsResults; + } + + /// Get current search query + String get symptomSearchQuery => _symptomSearchQuery; + + /// Get all symptoms from all organs (for search suggestions) + List get allSymptoms { + List symptoms = []; + for (var organResult in organSymptomsResults) { + if (organResult.bodySymptoms != null) { + symptoms.addAll(organResult.bodySymptoms!); + } + } + return symptoms; + } + int get totalSelectedSymptomsCount { return _selectedSymptomsByOrgan.values.fold(0, (sum, symptomIds) => sum + symptomIds.length); } @@ -231,6 +323,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { void toggleView() { _currentView = _currentView == BodyView.front ? BodyView.back : BodyView.front; + _currentZoomScale = 1.0; // Reset zoom when switching views notifyListeners(); } @@ -261,6 +354,20 @@ class SymptomsCheckerViewModel extends ChangeNotifier { notifyListeners(); } + toggleZoomIn() { + if (_currentZoomScale < _maxZoomScale) { + _currentZoomScale = (_currentZoomScale + _zoomStep).clamp(_minZoomScale, _maxZoomScale); + notifyListeners(); + } + } + + toggleZoomOut() { + if (_currentZoomScale > _minZoomScale) { + _currentZoomScale = (_currentZoomScale - _zoomStep).clamp(_minZoomScale, _maxZoomScale); + notifyListeners(); + } + } + void _showTooltip(String organId) { _tooltipTimer?.cancel(); @@ -404,6 +511,51 @@ class SymptomsCheckerViewModel extends ChangeNotifier { notifyListeners(); } + /// Filter symptoms based on search query + void filterSymptoms(String query, {bool isArabic = false}) { + _symptomSearchQuery = query; + + if (query.isEmpty) { + _filteredOrganSymptomsResults.clear(); + notifyListeners(); + return; + } + + final lowercaseQuery = query.toLowerCase(); + _filteredOrganSymptomsResults = []; + + for (var organResult in organSymptomsResults) { + if (organResult.bodySymptoms == null || organResult.bodySymptoms!.isEmpty) { + continue; + } + + // Filter symptoms that match the query + final filteredSymptoms = organResult.bodySymptoms!.where((symptom) { + final displayName = symptom.getDisplayName(isArabic).toLowerCase(); + return displayName.contains(lowercaseQuery); + }).toList(); + + // Only add organ result if it has matching symptoms + if (filteredSymptoms.isNotEmpty) { + _filteredOrganSymptomsResults.add( + OrganSymptomResult( + name: organResult.name, + bodySymptoms: filteredSymptoms, + ), + ); + } + } + + notifyListeners(); + } + + /// Clear symptom search filter + void clearSymptomFilter() { + _symptomSearchQuery = ''; + _filteredOrganSymptomsResults.clear(); + notifyListeners(); + } + // Risk Factors Methods /// Toggle risk factor selection @@ -609,6 +761,44 @@ class SymptomsCheckerViewModel extends ChangeNotifier { return evidenceIds; } + /// Get all evidence with their sources based on selection step + /// Source values: + /// - "initial" for symptoms (used in GetRiskFactors) + /// - "red_flags" for risk factors (used in GetSuggestions) + /// - "suggest" for suggestions (used in GetDiagnosis) + List> getAllEvidenceWithSources({String defaultSource = "initial"}) { + List> evidenceList = []; + + // Add selected symptoms with source "initial" + final selectedSymptoms = getAllSelectedSymptoms(); + for (var symptom in selectedSymptoms.where((s) => s.id != null)) { + evidenceList.add({ + "id": symptom.id!, + "source": "initial", + }); + } + + // Add selected risk factors with source "red_flags" (excluding "not_applicable") + final selectedRiskFactors = getAllSelectedRiskFactors(); + for (var riskFactor in selectedRiskFactors.where((rf) => rf.id != null && rf.id != "not_applicable")) { + evidenceList.add({ + "id": riskFactor.id!, + "source": "red_flags", + }); + } + + // Add selected suggestions with source "suggest" (excluding "not_applicable") + final selectedSuggestions = getAllSelectedSuggestions(); + for (var suggestion in selectedSuggestions.where((s) => s.id != null && s.id != "not_applicable")) { + evidenceList.add({ + "id": suggestion.id!, + "source": "suggest", + }); + } + + return evidenceList; + } + /// Fetch risk factors based on selected symptoms Future fetchSuggestions({ Function()? onSuccess, @@ -632,21 +822,30 @@ class SymptomsCheckerViewModel extends ChangeNotifier { return; } - // Extract symptom IDs - List evidenceIds = selectedSymptoms.where((s) => s.id != null).map((s) => s.id!).toList(); + // Build evidence list with proper sources + List> evidenceList = []; - // Get all selected symptoms - final selectedRisks = getAllSelectedRiskFactors(); + // Add selected symptoms with source "initial" + for (var symptom in selectedSymptoms.where((s) => s.id != null)) { + evidenceList.add({ + "id": symptom.id!, + "source": "initial", + }); + } - if (selectedRisks.isNotEmpty) { - List evidenceRisksIds = selectedRisks.where((s) => s.id != null && s.id != "not_applicable").map((s) => s.id!).toList(); - evidenceIds.addAll(evidenceRisksIds); + // Get selected risk factors and add with source "red_flags" + final selectedRisks = getAllSelectedRiskFactors(); + for (var riskFactor in selectedRisks.where((rf) => rf.id != null && rf.id != "not_applicable")) { + evidenceList.add({ + "id": riskFactor.id!, + "source": "red_flags", + }); } await getSuggestions( age: _selectedAge!, gender: _getGenderAsInt(_selectedGender), - evidenceIds: evidenceIds, + evidenceList: evidenceList, language: appState.isArabic() ? 'ar' : 'en', onSuccess: (response) { if (onSuccess != null) { @@ -665,7 +864,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { Future getSuggestions({ required int age, required int gender, - required List evidenceIds, + required List> evidenceList, required String language, Function(RiskAndSuggestionsResponseModel)? onSuccess, Function(String)? onError, @@ -676,7 +875,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { final result = await symptomsCheckerRepo.getSuggestions( age: age, gender: gender, - evidenceIds: evidenceIds, + evidenceList: evidenceList, language: language, sessionId: currentSessionId, userSessionToken: currentSessionAuthToken, @@ -727,19 +926,27 @@ class SymptomsCheckerViewModel extends ChangeNotifier { Future getDiagnosisForTriage({ required int age, required int gender, - required List evidenceIds, - List>? triageEvidence, + required List> initialEvidenceList, // Evidence with sources (initial, red_flags, suggest) + List>? triageEvidence, // Triage-specific evidence (id, choice_id, source=triage) required String language, Function(TriageDataDetails)? onSuccess, Function(String)? onError, + bool isGoingBack = false, // Flag to indicate if we're going back in history }) async { + // Save current question and evidence to history BEFORE making new API call + // (but only if we're moving forward, not going back) + if (!isGoingBack && triageDataDetails != null) { + _triageQuestionHistory.add(triageDataDetails!); + _triageEvidenceHistory.add(List>.from(_triageEvidenceList)); + } + isTriageDiagnosisLoading = true; notifyListeners(); final result = await symptomsCheckerRepo.getDiagnosisForTriage( age: age, gender: gender, - evidenceIds: evidenceIds, + initialEvidenceList: initialEvidenceList, triageEvidence: triageEvidence, language: language, sessionId: currentSessionId, @@ -787,10 +994,10 @@ class SymptomsCheckerViewModel extends ChangeNotifier { return; } - // Get all evidence IDs - final evidenceIds = getAllEvidenceIds(); + // Get all evidence with sources + final evidenceList = getAllEvidenceWithSources(); - if (evidenceIds.isEmpty) { + if (evidenceList.isEmpty) { if (onError != null) { onError('No evidence selected'); } @@ -800,7 +1007,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { await getDiagnosisForTriage( age: _selectedAge!, gender: _getGenderAsInt(_selectedGender), - evidenceIds: evidenceIds, + initialEvidenceList: evidenceList, language: appState.isArabic() ? 'ar' : 'en', onSuccess: (response) { if (onSuccess != null) { @@ -823,7 +1030,22 @@ class SymptomsCheckerViewModel extends ChangeNotifier { /// Select a choice for a specific item (for multi-item questions) void selectTriageChoiceForItem(String itemId, int choiceIndex) { - _selectedTriageChoicesByItemId[itemId] = choiceIndex; + // Type 1: Single selection mode - only one ITEM can be selected (choice is always "Yes") + if (isTriageQuestionSingleSelection) { + // If same item clicked again, deselect it + if (_selectedSingleItemId == itemId) { + _selectedSingleItemId = null; + _selectedSingleChoiceIndex = null; + } else { + // Select new item, clear previous selection + _selectedSingleItemId = itemId; + // For type=1, we don't use choiceIndex from UI, we'll find "Yes" choice in the API call + _selectedSingleChoiceIndex = 0; // Placeholder, actual Yes choice will be found later + } + } else { + // Type 2: Multi-item selection mode - each item can have one selected option + _selectedTriageChoicesByItemId[itemId] = choiceIndex; + } notifyListeners(); } @@ -831,6 +1053,8 @@ class SymptomsCheckerViewModel extends ChangeNotifier { void resetTriageChoice() { _selectedTriageChoiceIndex = null; _selectedTriageChoicesByItemId.clear(); + _selectedSingleItemId = null; + _selectedSingleChoiceIndex = null; _triageQuestionCount++; // Increment question count notifyListeners(); } @@ -840,7 +1064,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { _triageEvidenceList.add({ "id": itemId, "choice_id": choiceId, - "source": "triage", + "source": "suggest", }); notifyListeners(); } @@ -856,6 +1080,39 @@ class SymptomsCheckerViewModel extends ChangeNotifier { notifyListeners(); } + /// Go back to previous triage question + /// Returns true if successfully went back, false if already at first question + bool goBackToPreviousTriageQuestion() { + if (_triageQuestionHistory.isEmpty) { + return false; // Already at first question + } + + // Pop the last question from history + final previousQuestion = _triageQuestionHistory.removeLast(); + final previousEvidence = _triageEvidenceHistory.removeLast(); + + // Restore the previous question + triageDataDetails = previousQuestion; + + // Restore the previous evidence state + _triageEvidenceList.clear(); + _triageEvidenceList.addAll(previousEvidence); + + // Decrement question count + if (_triageQuestionCount > 0) { + _triageQuestionCount--; + } + + // Clear current selections + _selectedTriageChoiceIndex = null; + _selectedTriageChoicesByItemId.clear(); + _selectedSingleItemId = null; + _selectedSingleChoiceIndex = null; + + notifyListeners(); + return true; + } + void reset() { _currentView = BodyView.front; _selectedOrganIds.clear(); @@ -865,15 +1122,23 @@ class SymptomsCheckerViewModel extends ChangeNotifier { _triageEvidenceList.clear(); _selectedTriageChoicesByItemId.clear(); _triageQuestionCount = 0; // Reset question count + _triageQuestionHistory.clear(); // Clear question history + _triageEvidenceHistory.clear(); // Clear evidence history + _currentZoomScale = 1.0; // Reset zoom scale + _symptomSearchQuery = ''; // Reset search query + _filteredOrganSymptomsResults.clear(); // Clear filtered results bodySymptomResponse = null; riskFactorsResponse = null; suggestionsResponse = null; triageDataDetails = null; isTriageDiagnosisLoading = false; _selectedTriageChoiceIndex = null; + _selectedSingleItemId = null; + _selectedSingleChoiceIndex = null; _isBottomSheetExpanded = false; _tooltipTimer?.cancel(); _tooltipOrganId = null; + isBookingFromSymptomsChecker = false; // Reset booking flag // Reset user info flow _userInfoCurrentPage = 0; _isSinglePageEditMode = false; @@ -887,6 +1152,50 @@ class SymptomsCheckerViewModel extends ChangeNotifier { notifyListeners(); } + /// Clear user selections (organs, symptoms, risk factors, questions) but keep results + /// This is useful when user reaches results page and we want to prevent going back to edit selections + void clearSelectionsKeepResults() { + _selectedOrganIds.clear(); + _selectedSymptomsByOrgan.clear(); + _selectedRiskFactorIds.clear(); + _selectedSuggestionsIds.clear(); + _triageEvidenceList.clear(); + _triageQuestionHistory.clear(); // Clear question history + _triageEvidenceHistory.clear(); // Clear evidence history + _selectedTriageChoicesByItemId.clear(); + _selectedSingleItemId = null; + _selectedSingleChoiceIndex = null; + _symptomSearchQuery = ''; + _filteredOrganSymptomsResults.clear(); + _isBottomSheetExpanded = false; + _tooltipTimer?.cancel(); + _tooltipOrganId = null; + // Keep: bodySymptomResponse, riskFactorsResponse, suggestionsResponse, triageDataDetails, user info, booking flag + notifyListeners(); + } + + /// Clear selections when reaching possible conditions screen + /// This clears organs, symptoms, risk factors, suggestions, and questions + void clearSelectionsForPossibleConditions() { + _selectedOrganIds.clear(); + _selectedSymptomsByOrgan.clear(); + _selectedRiskFactorIds.clear(); + _selectedSuggestionsIds.clear(); + _triageEvidenceList.clear(); + _triageQuestionHistory.clear(); + _triageEvidenceHistory.clear(); + _selectedTriageChoicesByItemId.clear(); + _selectedSingleItemId = null; + _selectedSingleChoiceIndex = null; + _triageQuestionCount = 0; + _symptomSearchQuery = ''; + _filteredOrganSymptomsResults.clear(); + _isBottomSheetExpanded = false; + _tooltipTimer?.cancel(); + _tooltipOrganId = null; + notifyListeners(); + } + // User Info Flow Methods /// Set current page in user info flow @@ -991,15 +1300,48 @@ class SymptomsCheckerViewModel extends ChangeNotifier { }; } + // User Consent Methods + + bool isTermsAccepted = false; + bool isPrivacyAccepted = false; + + /// Toggle terms acceptance + void toggleTermsAcceptance() { + isTermsAccepted = !isTermsAccepted; + notifyListeners(); + } + + /// Toggle privacy policy acceptance + void togglePrivacyAcceptance() { + isPrivacyAccepted = !isPrivacyAccepted; + notifyListeners(); + } + + void setTermsAcceptance(bool value) { + isTermsAccepted = value; + notifyListeners(); + } + + /// Toggle privacy policy acceptance + void setPrivacyAcceptance(bool value) { + isPrivacyAccepted = value; + notifyListeners(); + } + Future getSymptomsUserDetails({ required String userName, required String password, + String? fileNo, Function()? onSuccess, Function(String)? onError, }) async { isBodySymptomsLoading = true; notifyListeners(); - final result = await symptomsCheckerRepo.getUserDetails(userName: userName, password: password); + final result = await symptomsCheckerRepo.getUserDetails( + userName: userName, + password: password, + fileNo: fileNo, + ); result.fold( (failure) async { @@ -1079,6 +1421,7 @@ class SymptomsCheckerViewModel extends ChangeNotifier { final result = await symptomsCheckerRepo.getClinicDetails( categoryName: categoryName, + language: appState.isArabic() ? 'ar' : 'en', userSessionToken: currentSessionAuthToken, ); @@ -1106,6 +1449,231 @@ class SymptomsCheckerViewModel extends ChangeNotifier { ); } + /// Schedule appointment for symptoms checker + Future saveAppointmentDetailsForSymptomsChecker({ + required String fileNo, + required String appointmentNo, + required String doctorId, + required String appointmentDate, + required String mobileNumber, + required int projectId, + required int clinicId, + Function(ScheduleAppointmentResponseModel)? onSuccess, + Function(String)? onError, + }) async { + isScheduleAppointmentLoading = true; + notifyListeners(); + + // Import the request model at the top of the file + final request = ScheduleAppointmentRequestModel( + generalId: currentSessionId, + fileNo: fileNo, + appointmentNo: appointmentNo, + doctorId: doctorId, + appointmentDate: appointmentDate, + mobileNumber: mobileNumber, + projectId: projectId, + clinicId: clinicId, + ); + + final result = await symptomsCheckerRepo.saveAppointmentDetailsForSymptomsChecker( + request: request, + userSessionToken: currentSessionAuthToken, + ); + + result.fold( + (failure) async { + isScheduleAppointmentLoading = false; + isBookingFromSymptomsChecker = false; // Reset flag on error + notifyListeners(); + await errorHandlerService.handleError(failure: failure); + if (onError != null) { + onError(failure.toString()); + } + }, + (apiResponse) { + isScheduleAppointmentLoading = false; + if (apiResponse.messageStatus == 1 && apiResponse.data != null) { + isBookingFromSymptomsChecker = false; // Reset flag on success + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse.data!); + } + } else { + isBookingFromSymptomsChecker = false; // Reset flag on error + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? 'Failed to schedule appointment'); + } + } + }, + ); + } + + /// Get Rationale for symptoms + /// This API shows which symptoms and conditions are being considered + Future fetchRationale({ + required List> evidence, + Function(RationaleResponseModel)? onSuccess, + Function(String)? onError, + }) async { + // Validate user info + if (_selectedAge == null || _selectedGender == null) { + if (onError != null) { + onError('User information is incomplete'); + } + return; + } + + isRationaleLoading = true; + notifyListeners(); + + final result = await symptomsCheckerRepo.getRationale( + age: _selectedAge!, + gender: _getGenderAsInt(_selectedGender), + evidence: evidence, + language: appState.isArabic() ? 'ar' : 'en', + generalId: currentSessionId, + userSessionToken: currentSessionAuthToken, + ); + + result.fold( + (failure) async { + isRationaleLoading = false; + notifyListeners(); + await errorHandlerService.handleError(failure: failure); + if (onError != null) { + onError(failure.toString()); + } + }, + (apiResponse) { + isRationaleLoading = false; + if (apiResponse.messageStatus == 1 && apiResponse.data != null) { + rationaleResponse = apiResponse.data; + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse.data!); + } + } else { + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? 'Failed to fetch rationale'); + } + } + }, + ); + } + + /// Get Triage Level for symptoms + /// This API determines the urgency level and serious symptoms + Future fetchTriageLevel({ + required List> evidence, + Function(TriageLevelResponseModel)? onSuccess, + Function(String)? onError, + }) async { + // Validate user info + if (_selectedAge == null || _selectedGender == null) { + if (onError != null) { + onError('User information is incomplete'); + } + return; + } + + isTriageLevelLoading = true; + notifyListeners(); + + final result = await symptomsCheckerRepo.getTriage( + age: _selectedAge!, + gender: _getGenderAsInt(_selectedGender), + evidence: evidence, + language: appState.isArabic() ? 'ar' : 'en', + generalId: currentSessionId, + userSessionToken: currentSessionAuthToken, + ); + + result.fold( + (failure) async { + isTriageLevelLoading = false; + notifyListeners(); + await errorHandlerService.handleError(failure: failure); + if (onError != null) { + onError(failure.toString()); + } + }, + (apiResponse) { + isTriageLevelLoading = false; + if (apiResponse.messageStatus == 1 && apiResponse.data != null) { + triageLevelResponse = apiResponse.data; + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse.data!); + } + } else { + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? 'Failed to fetch triage level'); + } + } + }, + ); + } + + /// Get Explanations for a specific condition + /// This API explains why a condition was suggested based on evidence + Future fetchExplanations({ + required String targetConditionId, + required List> evidence, + Function(ExplanationsResponseModel)? onSuccess, + Function(String)? onError, + }) async { + // Validate user info + if (_selectedAge == null || _selectedGender == null) { + if (onError != null) { + onError('User information is incomplete'); + } + return; + } + + isExplanationsLoading = true; + notifyListeners(); + + final result = await symptomsCheckerRepo.getExplanations( + age: _selectedAge!, + gender: _getGenderAsInt(_selectedGender), + evidence: evidence, + language: appState.isArabic() ? 'ar' : 'en', + target: targetConditionId, + generalId: currentSessionId, + userSessionToken: currentSessionAuthToken, + ); + + result.fold( + (failure) async { + isExplanationsLoading = false; + notifyListeners(); + await errorHandlerService.handleError(failure: failure); + if (onError != null) { + onError(failure.toString()); + } + }, + (apiResponse) { + isExplanationsLoading = false; + if (apiResponse.messageStatus == 1 && apiResponse.data != null) { + explanationsResponse = apiResponse.data; + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse.data!); + } + } else { + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? 'Failed to fetch explanations'); + } + } + }, + ); + } + @override void dispose() { _tooltipTimer?.cancel(); diff --git a/lib/features/todo_section/models/resp_models/ancillary_order_list_response_model.dart b/lib/features/todo_section/models/resp_models/ancillary_order_list_response_model.dart index c014bee7..95f0baaa 100644 --- a/lib/features/todo_section/models/resp_models/ancillary_order_list_response_model.dart +++ b/lib/features/todo_section/models/resp_models/ancillary_order_list_response_model.dart @@ -78,6 +78,7 @@ class AncillaryOrderItem { int? orderNo; String? projectName; // Added from parent AncillaryOrderGroup int? projectID; // Added from parent AncillaryOrderGroup + String? setupID; // Added from parent AncillaryOrderGroup AncillaryOrderItem({ this.ancillaryProcedureListModels, @@ -94,9 +95,10 @@ class AncillaryOrderItem { this.orderNo, this.projectName, this.projectID, + this.setupID, }); - factory AncillaryOrderItem.fromJson(Map json, {String? projectName, int? projectID}) => AncillaryOrderItem( + factory AncillaryOrderItem.fromJson(Map json, {String? projectName, int? projectID, String? setupID}) => AncillaryOrderItem( ancillaryProcedureListModels: json['AncillaryProcedureListModels'], appointmentDate: DateUtil.convertStringToDate(json['AppointmentDate']), appointmentNo: json['AppointmentNo'] as int?, @@ -111,5 +113,6 @@ class AncillaryOrderItem { orderNo: json['OrderNo'] as int?, projectName: projectName, projectID: projectID, + setupID: setupID, ); } diff --git a/lib/features/todo_section/todo_section_repo.dart b/lib/features/todo_section/todo_section_repo.dart index 6d58d801..acaa8c4c 100644 --- a/lib/features/todo_section/todo_section_repo.dart +++ b/lib/features/todo_section/todo_section_repo.dart @@ -20,7 +20,7 @@ abstract class TodoSectionRepo { Future> createAdvancePayment({ required int projectID, - required double paymentAmount, + required num paymentAmount, required String paymentReference, required String paymentMethodName, required int patientTypeID, @@ -85,11 +85,13 @@ class TodoSectionRepoImp implements TodoSectionRepo { final ordersList = group['AncillaryOrderList'] as List; final projectName = group['ProjectName'] as String?; final projectID = group['ProjectID'] as int?; + final setupID = group['SetupID'] as String?; + // Parse each order item in the group for (var orderJson in ordersList) { if (orderJson is Map) { - ancillaryOrders.add(AncillaryOrderItem.fromJson(orderJson, projectName: projectName, projectID: projectID)); + ancillaryOrders.add(AncillaryOrderItem.fromJson(orderJson, projectName: projectName, projectID: projectID, setupID: setupID)); } } } @@ -205,7 +207,7 @@ class TodoSectionRepoImp implements TodoSectionRepo { @override Future> createAdvancePayment({ required int projectID, - required double paymentAmount, + required num paymentAmount, required String paymentReference, required String paymentMethodName, required int patientTypeID, diff --git a/lib/features/todo_section/todo_section_view_model.dart b/lib/features/todo_section/todo_section_view_model.dart index 0f6cc873..2f7cba35 100644 --- a/lib/features/todo_section/todo_section_view_model.dart +++ b/lib/features/todo_section/todo_section_view_model.dart @@ -51,8 +51,12 @@ class TodoSectionViewModel extends ChangeNotifier { // if (apiResponse.messageStatus == 2) { // dialogService.showErrorDialog(message: apiResponse.errorMessage!, onOkPressed: () {}); // } else if (apiResponse.messageStatus == 1) { - notificationsCount = - apiResponse['List_PatientDashboard'][0]['UnreadPatientNotificationCount'] > 99 ? '99+' : apiResponse['List_PatientDashboard'][0]['UnreadPatientNotificationCount'].toString(); + if (apiResponse['List_PatientDashboard'] != null && apiResponse['List_PatientDashboard'] is List && (apiResponse['List_PatientDashboard'] as List).isNotEmpty) { + notificationsCount = + apiResponse['List_PatientDashboard'][0]['UnreadPatientNotificationCount'] > 99 ? '99+' : apiResponse['List_PatientDashboard'][0]['UnreadPatientNotificationCount'].toString(); + } else { + notificationsCount = "0"; + } notifyListeners(); if (onSuccess != null) { onSuccess(apiResponse); @@ -70,6 +74,7 @@ class TodoSectionViewModel extends ChangeNotifier { patientAncillaryOrdersList.clear(); isAncillaryOrdersLoading = true; notifyListeners(); + final result = await todoSectionRepo.getOnlineAncillaryOrderList(); result.fold( @@ -153,7 +158,7 @@ class TodoSectionViewModel extends ChangeNotifier { Future createAdvancePayment({ required int projectID, - required double paymentAmount, + required num paymentAmount, required String paymentReference, required String paymentMethodName, required int patientTypeID, diff --git a/lib/features/translations/custom_asset_loader.dart b/lib/features/translations/custom_asset_loader.dart new file mode 100644 index 00000000..8cf9e7c9 --- /dev/null +++ b/lib/features/translations/custom_asset_loader.dart @@ -0,0 +1,27 @@ +import 'dart:convert'; +import 'dart:io'; +import 'dart:ui'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/services.dart'; +import 'package:path_provider/path_provider.dart'; + +class RemoteFileLoader extends AssetLoader { + @override + Future?> load(String path, Locale locale) async { + final directory = await getApplicationDocumentsDirectory(); + + // easy_localization uses toLanguageTag() which gives 'en-US' or 'ar-SA' + final fileName = "${locale.toLanguageTag()}.json"; + final file = File("${directory.path}/$fileName"); + + if (await file.exists()) { + final String jsonString = await file.readAsString(); + return jsonDecode(jsonString); + } else { + // If the download failed or hasn't happened yet, load from local assets + // path is the 'path' property from the EasyLocalization widget + final localData = await rootBundle.loadString('$path/$fileName'); + return jsonDecode(localData); + } + } +} diff --git a/lib/features/translations/translation_service.dart b/lib/features/translations/translation_service.dart new file mode 100644 index 00000000..b02a49cd --- /dev/null +++ b/lib/features/translations/translation_service.dart @@ -0,0 +1,36 @@ +import 'dart:io'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; +import 'package:http/http.dart' as http; +import 'package:path_provider/path_provider.dart'; + +class TranslationService { +// Replace with your actual hosting URL + static final String baseUrl = ApiConsts.googleCloudStorageENTranslationFileBaseURL; + + static Future downloadTranslations() async { + final directory = await getApplicationDocumentsDirectory(); + +// Ensure these match your locale codes exactly (en-US, ar-SA) + List files = ["en-US.json", "ar-SA.json"]; + + for (String fileName in files) { + try { + final String timestamp = DateTime.now().millisecondsSinceEpoch.toString(); + String url = "$baseUrl/$fileName?v=$timestamp"; + debugPrint(url); + // final response = await http.get(Uri.parse("$baseUrl/$fileName")); + final response = await http.get(Uri.parse(url)); + + if (response.statusCode == 200) { + final file = File("${directory.path}/$fileName"); + await file.writeAsBytes(response.bodyBytes); + } else { + print("Failed to download $fileName: Status ${response.statusCode}"); + } + } catch (e) { + print("Network error while downloading $fileName: $e"); + } + } + } +} diff --git a/lib/features/water_monitor/water_monitor_view_model.dart b/lib/features/water_monitor/water_monitor_view_model.dart index 1ef2ef65..5234a559 100644 --- a/lib/features/water_monitor/water_monitor_view_model.dart +++ b/lib/features/water_monitor/water_monitor_view_model.dart @@ -40,7 +40,20 @@ class WaterMonitorViewModel extends ChangeNotifier { // Units final List heightUnits = ['cm', 'm', 'ft', 'in']; + final List heightUnitsEn = ['cm', 'm', 'ft', 'in']; + final List heightUnitsAr = ['سم', 'م', 'قدم', 'بوصة']; + final List weightUnits = ['kg', 'lb']; + final List weightUnitsEn = ['kg', 'lb']; + final List weightUnitsAr = ['كجم', 'رطل']; + + List getHeightUnitsList() { + return getIt.get().isArabic() ? heightUnitsAr : heightUnitsEn; + } + + List getWeightUnitsList() { + return getIt.get().isArabic() ? weightUnitsAr : weightUnitsEn; + } // Selected values String _selectedHeightUnit = 'cm'; @@ -62,8 +75,26 @@ class WaterMonitorViewModel extends ChangeNotifier { String get selectedHeightUnit => _selectedHeightUnit; + // Get the localized display value for the selected height unit + String get selectedHeightUnitDisplay { + final index = heightUnitsEn.indexOf(_selectedHeightUnit); + if (index >= 0) { + return getIt.get().isArabic() ? heightUnitsAr[index] : heightUnitsEn[index]; + } + return _selectedHeightUnit; + } + String get selectedWeightUnit => _selectedWeightUnit; + // Get the localized display value for the selected weight unit + String get selectedWeightUnitDisplay { + final index = weightUnitsEn.indexOf(_selectedWeightUnit); + if (index >= 0) { + return getIt.get().isArabic() ? weightUnitsAr[index] : weightUnitsEn[index]; + } + return _selectedWeightUnit; + } + String get selectedActivityLevel => _selectedActivityLevel; String get selectedNumberOfReminders => _selectedNumberOfReminders; @@ -75,17 +106,75 @@ class WaterMonitorViewModel extends ChangeNotifier { bool get isGraphView => _isGraphView; // Activity level options - List get activityLevels => - ["Almost Inactive (no exercise)", "Lightly active", "Lightly active (1-3) days per week", "Super active (very hard exercise)"]; + final List activityLevelsEn = [ + "Almost Inactive (no exercise)", + "Lightly active", + "Lightly active (1-3) days per week", + "Super active (very hard exercise)" + ]; + + final List activityLevelsAr = [ + "غير نشط تقريباً (بدون تمرين)", + "نشط قليلاً", + "نشط قليلاً (1-3) أيام في الأسبوع", + "نشط جداً (تمرين شاق جداً)" + ]; + + List get activityLevels => getIt.get().isArabic() ? activityLevelsAr : activityLevelsEn; + + // Get the localized display value for the selected activity level + String get selectedActivityLevelDisplay { + final index = activityLevelsEn.indexOf(_selectedActivityLevel); + if (index >= 0) { + return getIt.get().isArabic() ? activityLevelsAr[index] : activityLevelsEn[index]; + } + return _selectedActivityLevel; + } // Reminder options - List get reminderOptions => ["1 Time", "2 Time", "3 Time", "4 Time", "5 Time", "6 Time"]; + final List reminderOptionsEn = ["1 Time", "2 Time", "3 Time", "4 Time", "5 Time", "6 Time"]; + final List reminderOptionsAr = ["مرة واحدة", "مرتين", "3 مرات", "4 مرات", "5 مرات", "6 مرات"]; + + List get reminderOptions => getIt.get().isArabic() ? reminderOptionsAr : reminderOptionsEn; + + // Get the localized display value for the selected number of reminders + String get selectedNumberOfRemindersDisplay { + final index = reminderOptionsEn.indexOf(_selectedNumberOfReminders); + if (index >= 0) { + return getIt.get().isArabic() ? reminderOptionsAr[index] : reminderOptionsEn[index]; + } + return _selectedNumberOfReminders; + } // Gender options - List get genderOptions => ["Male", "Female"]; + final List genderOptionsEn = ["Male", "Female"]; + final List genderOptionsAr = ["ذكر", "أنثى"]; + + List get genderOptions => getIt.get().isArabic() ? genderOptionsAr : genderOptionsEn; + + // Get the localized display value for the selected gender + String get selectedGenderDisplay { + final index = genderOptionsEn.indexOf(_selectedGender); + if (index >= 0) { + return getIt.get().isArabic() ? genderOptionsAr[index] : genderOptionsEn[index]; + } + return _selectedGender; + } + + // Duration Options + final List durationFiltersEn = ["Daily", "Weekly", "Monthly"]; + final List durationFiltersAr = ["يومي", "أسبوعي", "شهري"]; -//Duration Options - List get durationFilters => ["Daily", "Weekly", "Monthly"]; + List get durationFilters => getIt.get().isArabic() ? durationFiltersAr : durationFiltersEn; + + // Get the localized display value for the selected duration + String get selectedDurationFilterDisplay { + final index = durationFiltersEn.indexOf(_selectedDuration); + if (index >= 0) { + return getIt.get().isArabic() ? durationFiltersAr[index] : durationFiltersEn[index]; + } + return _selectedDuration; + } // Network/data final AppState _appState = GetIt.instance(); @@ -503,7 +592,15 @@ class WaterMonitorViewModel extends ChangeNotifier { // Setters with notification void setFilterDuration(String duration) async { - _selectedDuration = duration; + // Map Arabic values to English keys + if (getIt.get().isArabic()) { + final index = durationFiltersAr.indexOf(duration); + if (index >= 0 && index < durationFiltersEn.length) { + _selectedDuration = durationFiltersEn[index]; + } + } else { + _selectedDuration = duration; + } notifyListeners(); // Fetch new progress data when duration filter changes await fetchUserProgressForMonitoring(); @@ -517,27 +614,67 @@ class WaterMonitorViewModel extends ChangeNotifier { // Setters with notification void setGender(String gender) { - _selectedGender = gender; + // Map Arabic values to English keys + if (getIt.get().isArabic()) { + final index = genderOptionsAr.indexOf(gender); + if (index >= 0 && index < genderOptionsEn.length) { + _selectedGender = genderOptionsEn[index]; + } + } else { + _selectedGender = gender; + } notifyListeners(); } void setHeightUnit(String unit) { - _selectedHeightUnit = unit; + // Map Arabic values to English keys + if (getIt.get().isArabic()) { + final index = heightUnitsAr.indexOf(unit); + if (index >= 0 && index < heightUnitsEn.length) { + _selectedHeightUnit = heightUnitsEn[index]; + } + } else { + _selectedHeightUnit = unit; + } notifyListeners(); } void setWeightUnit(String unit) { - _selectedWeightUnit = unit; + // Map Arabic values to English keys + if (getIt.get().isArabic()) { + final index = weightUnitsAr.indexOf(unit); + if (index >= 0 && index < weightUnitsEn.length) { + _selectedWeightUnit = weightUnitsEn[index]; + } + } else { + _selectedWeightUnit = unit; + } notifyListeners(); } void setActivityLevel(String level) { - _selectedActivityLevel = level; + // Map Arabic values to English keys + if (getIt.get().isArabic()) { + final index = activityLevelsAr.indexOf(level); + if (index >= 0 && index < activityLevelsEn.length) { + _selectedActivityLevel = activityLevelsEn[index]; + } + } else { + _selectedActivityLevel = level; + } notifyListeners(); } void setNumberOfReminders(String number) { - _selectedNumberOfReminders = number; + // Map Arabic values to English keys + if (getIt.get().isArabic()) { + final index = reminderOptionsAr.indexOf(number); + if (index >= 0 && index < reminderOptionsEn.length) { + _selectedNumberOfReminders = reminderOptionsEn[index]; + } + } else { + _selectedNumberOfReminders = number; + } notifyListeners(); } diff --git a/lib/features/weather/models/waether_cities_model.dart b/lib/features/weather/models/waether_cities_model.dart new file mode 100644 index 00000000..be08cc99 --- /dev/null +++ b/lib/features/weather/models/waether_cities_model.dart @@ -0,0 +1,261 @@ +import 'dart:convert'; + +class GetCityInfoList { + CategoriesNames? categoriesNames; + String? category; + String? categoryValue; + int? cityId; + String? cityName; + String? cityNameN; + ColorName? colorName; + String? createdOn; + String? id; + int? iniceId; + bool? isOrderEmpty; + bool? isValuesReversed; + bool? language; + double? latitude; + double? longitude; + String? name; + int? orderNum; + double? temperature; + String? value; + + GetCityInfoList({ + this.categoriesNames, + this.category, + this.categoryValue, + this.cityId, + this.cityName, + this.cityNameN, + this.colorName, + this.createdOn, + this.id, + this.iniceId, + this.isOrderEmpty, + this.isValuesReversed, + this.language, + this.latitude, + this.longitude, + this.name, + this.orderNum, + this.temperature, + this.value, + }); + + factory GetCityInfoList.fromRawJson(String str) => GetCityInfoList.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory GetCityInfoList.fromJson(Map json) { + ColorName? parseColorName(dynamic value) { + if (value == null) return null; + try { + return colorNameValues.map[value.toString()]; + } catch (e) { + print("Unknown color name: $value"); + return null; + } + } + + CategoriesNames? parseCategoriesNames(dynamic value) { + if (value == null) return null; + try { + return CategoriesNames.fromJson(value as Map); + } catch (e) { + print("Error parsing CategoriesNames: $e"); + return null; + } + } + + return GetCityInfoList( + categoriesNames: parseCategoriesNames(json["CategoriesNames"]), + category: json["Category"], + categoryValue: json["CategoryValue"], + cityId: json["CityID"], + cityName: json["CityName"], + cityNameN: json["CityNameN"], + colorName: parseColorName(json["ColorName"]), + createdOn: json["CreatedOn"], + id: json["ID"], + iniceId: json["IniceID"], + isOrderEmpty: json["IsOrderEmpty"], + isValuesReversed: json["IsValuesReversed"], + language: json["Language"], + latitude: json["Latitude"]?.toDouble(), + longitude: json["Longitude"]?.toDouble(), + name: json["Name"], + orderNum: json["OrderNum"], + temperature: json["Temperature"]?.toDouble(), + value: json["Value"], + ); + } + + Map toJson() => { + "CategoriesNames": categoriesNames?.toJson(), + "Category": category, + "CategoryValue": categoryValue, + "CityID": cityId, + "CityName": cityName, + "CityNameN": cityNameN, + "ColorName": colorNameValues.reverse[colorName], + "CreatedOn": createdOn, + "ID": id, + "IniceID": iniceId, + "IsOrderEmpty": isOrderEmpty, + "IsValuesReversed": isValuesReversed, + "Language": language, + "Latitude": latitude, + "Longitude": longitude, + "Name": name, + "OrderNum": orderNum, + "Temperature": temperature, + "Value": value, + }; +} + +class CategoriesNames { + Category1? category1; + Category2? category2; + Category3? category3; + Category4? category4; + Category5? category5; + + CategoriesNames({ + this.category1, + this.category2, + this.category3, + this.category4, + this.category5, + }); + + factory CategoriesNames.fromRawJson(String str) => CategoriesNames.fromJson(json.decode(str)); + + String toRawJson() => json.encode(toJson()); + + factory CategoriesNames.fromJson(Map json) { + T? parseEnum(dynamic value, EnumValues enumValues, String enumName) { + if (value == null) return null; + try { + return enumValues.map[value.toString()]; + } catch (e) { + print("Unknown $enumName value: $value"); + return null; + } + } + + return CategoriesNames( + category1: parseEnum(json["Category1"], category1Values, "Category1"), + category2: parseEnum(json["Category2"], category2Values, "Category2"), + category3: parseEnum(json["Category3"], category3Values, "Category3"), + category4: parseEnum(json["Category4"], category4Values, "Category4"), + category5: parseEnum(json["Category5"], category5Values, "Category5"), + ); + } + + Map toJson() => { + "Category1": category1Values.reverse[category1], + "Category2": category2Values.reverse[category2], + "Category3": category3Values.reverse[category3], + "Category4": category4Values.reverse[category4], + "Category5": category5Values.reverse[category5], + }; +} + +enum Category1 { + AT_EXTREME_RISK, + CATEGORY1_EXTREME, + EXTREME, + POOR +} + +final category1Values = EnumValues({ + "At Extreme Risk": Category1.AT_EXTREME_RISK, + "Extreme\u000d\n": Category1.CATEGORY1_EXTREME, + "Extreme": Category1.EXTREME, + "Poor": Category1.POOR +}); + +enum Category2 { + AT_HIGH_RISK, + CATEGORY2_VERY_HIGH, + FAIR, + VERY_HIGH +} + +final category2Values = EnumValues({ + "At High Risk": Category2.AT_HIGH_RISK, + "Very High\u000d\n": Category2.CATEGORY2_VERY_HIGH, + "Fair": Category2.FAIR, + "Very High": Category2.VERY_HIGH +}); + +enum Category3 { + AT_RISK, + CATEGORY3_HIGH, + GOOD, + HIGH +} + +final category3Values = EnumValues({ + "At Risk": Category3.AT_RISK, + "High\u000d\n": Category3.CATEGORY3_HIGH, + "Good": Category3.GOOD, + "High": Category3.HIGH +}); + +enum Category4 { + CATEGORY4_MODERATE, + MODERATE, + NEUTRAL, + VERY_GOOD +} + +final category4Values = EnumValues({ + "Moderate\u000d\n": Category4.CATEGORY4_MODERATE, + "Moderate": Category4.MODERATE, + "Neutral": Category4.NEUTRAL, + "Very Good": Category4.VERY_GOOD +}); + +enum Category5 { + BENEFICIAL, + CATEGORY5_LOW, + EXCELLENT, + LOW +} + +final category5Values = EnumValues({ + "Beneficial": Category5.BENEFICIAL, + "Low\u000d\n": Category5.CATEGORY5_LOW, + "Excellent": Category5.EXCELLENT, + "Low": Category5.LOW +}); + +enum ColorName { + GREEN, + LIGHTGREEN, + ORANGE, + RED, + YELLOW +} + +final colorNameValues = EnumValues({ + "green": ColorName.GREEN, + "lightgreen": ColorName.LIGHTGREEN, + "orange": ColorName.ORANGE, + "red": ColorName.RED, + "yellow": ColorName.YELLOW +}); + +class EnumValues { + Map map; + late Map reverseMap; + + EnumValues(this.map); + + Map get reverse { + reverseMap = map.map((k, v) => MapEntry(v, k)); + return reverseMap; + } +} diff --git a/lib/features/weather/weather_repo.dart b/lib/features/weather/weather_repo.dart new file mode 100644 index 00000000..26bf0a32 --- /dev/null +++ b/lib/features/weather/weather_repo.dart @@ -0,0 +1,72 @@ +import 'package:dartz/dartz.dart'; +import 'package:hmg_patient_app_new/core/api/api_client.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; +import 'package:hmg_patient_app_new/core/common_models/generic_api_model.dart'; +import 'package:hmg_patient_app_new/core/exceptions/api_failure.dart'; +import 'package:hmg_patient_app_new/core/location_util.dart'; +import 'package:hmg_patient_app_new/features/weather/models/waether_cities_model.dart'; +import 'package:hmg_patient_app_new/services/logger_service.dart'; + +abstract class WeatherRepo { + Future>>> getCityInfo(); +} + +class WeatherRepoImp implements WeatherRepo { + final ApiClient apiClient; + final LoggerService loggerService; + + WeatherRepoImp({required this.loggerService, required this.apiClient}); + + @override + Future>>> getCityInfo() async { + Map request = {}; + + try { + GenericApiModel>? apiResponse; + Failure? failure; + await apiClient.post( + WEATHER_INDICATOR, + body: request, + onFailure: (error, statusCode, {messageStatus, failureType}) { + failure = failureType; + }, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + try { + loggerService.logInfo("Weather API Response: $response"); + final list = response['GetCityInfo_List']; + + if (list == null || list.isEmpty) { + loggerService.logInfo("Weather API returned empty or null list"); + // Return empty list if no city info + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: [], + ); + return; + } + + loggerService.logInfo("Parsing ${list.length} city info items"); + final cityInfoList = list.map((item) => GetCityInfoList.fromJson(item as Map)).toList().cast(); + + apiResponse = GenericApiModel>( + messageStatus: messageStatus, + statusCode: statusCode, + errorMessage: null, + data: cityInfoList, + ); + } catch (e) { + loggerService.logError("Error parsing weather data: $e"); + failure = DataParsingFailure(e.toString()); + } + }, + ); + if (failure != null) return Left(failure!); + if (apiResponse == null) return Left(ServerFailure("Unknown error")); + return Right(apiResponse!); + } catch (e) { + return Left(UnknownFailure(e.toString())); + } + } +} diff --git a/lib/features/weather/weather_view_model.dart b/lib/features/weather/weather_view_model.dart new file mode 100644 index 00000000..081ef192 --- /dev/null +++ b/lib/features/weather/weather_view_model.dart @@ -0,0 +1,144 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/location_util.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/features/weather/models/waether_cities_model.dart'; +import 'package:hmg_patient_app_new/features/weather/weather_repo.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/services/error_handler_service.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:permission_handler/permission_handler.dart' show openAppSettings; + +import '../../core/app_state.dart' show AppState; + +class WeatherMonitorViewModel extends ChangeNotifier { + WeatherRepo weatherRepo; + ErrorHandlerService errorHandlerService; + LocationUtils locationUtils; + bool isLocationAvailable = false; + + WeatherMonitorViewModel({required this.weatherRepo, required this.errorHandlerService, required this.locationUtils}); + + final List _cityInfoList = []; + bool isLoading = false; + bool isWeatherNeedToLoad = true; + + List get cityInfoList => _cityInfoList; + + Future fetchCityInfoList({Function(dynamic)? onSuccess, Function(String)? onError}) async { + if (!isWeatherNeedToLoad) { + return; + } + isLoading = true; + notifyListeners(); + _cityInfoList.clear(); + + // Check if location permission is already granted + final isLocationEnabled = await locationUtils.isLocationPermissionEnabled(); + + if (isLocationEnabled && getIt.get().userLat != 0.0 && getIt.get().userLong != 0.0) { + // Permission already granted, fetch data directly + isLocationAvailable = true; + final result = await weatherRepo.getCityInfo(); + result.fold( + (failure) async { + isLoading = false; + notifyListeners(); + await errorHandlerService.handleError(failure: failure); + if (onError != null) { + onError(failure.toString()); + } + }, + (apiResponse) { + isLoading = false; + if (apiResponse.messageStatus == 2) { + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? "Unknown error"); + } + } else if (apiResponse.messageStatus == 1) { + final cities = apiResponse.data ?? []; + _cityInfoList.addAll(cities); + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse); + } + isWeatherNeedToLoad = false; + } + }, + ); + } else { + // Permission not granted, request it + locationUtils.isShowConfirmDialog = true; + locationUtils.getLocation( + isShowConfirmDialog: true, + onFailure: (){ + isLoading = false; + notifyListeners(); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(), + getIt.get().navigatorKey.currentContext!, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.grantLocationPermission.tr(), + isShowActionButtons: true, + onCancelTap: () { + getIt.get().pop(); + }, + onConfirmTap: () async { + getIt.get().pop(); + openAppSettings(); + }), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + onSuccess: (position) async { + isLocationAvailable = true; + final result = await weatherRepo.getCityInfo(); + result.fold( + (failure) async { + isLoading = false; + notifyListeners(); + await errorHandlerService.handleError(failure: failure); + if (onError != null) { + onError(failure.toString()); + } + }, + (apiResponse) { + isLoading = false; + if (apiResponse.messageStatus == 2) { + notifyListeners(); + if (onError != null) { + onError(apiResponse.errorMessage ?? "Unknown error"); + } + } else if (apiResponse.messageStatus == 1) { + final cities = apiResponse.data ?? []; + _cityInfoList.addAll(cities); + notifyListeners(); + if (onSuccess != null) { + onSuccess(apiResponse); + } + } + }, + ); + }); + } + } + + Future checkIfTheLocationIsEnabledOrNot() async { + bool value = await locationUtils.isLocationPermissionEnabled(); + isLocationAvailable = value; + notifyListeners(); + return value; + + } + + void initiateFetchWeather() async { + if(await checkIfTheLocationIsEnabledOrNot()){ + fetchCityInfoList(); + } + } +} diff --git a/lib/generated/codegen_loader.g.dart b/lib/generated/codegen_loader.g.dart new file mode 100644 index 00000000..71fb165d --- /dev/null +++ b/lib/generated/codegen_loader.g.dart @@ -0,0 +1,1887 @@ +// DO NOT EDIT. This is code generated via package:easy_localization/generate.dart + +// ignore_for_file: constant_identifier_names + +abstract class LocaleKeys { + static const english = 'english'; + static const arabic = 'arabic'; + static const login = 'login'; + static const noDataAvailable = 'noDataAvailable'; + static const noRatingAvailable = 'noRatingAvailable'; + static const doctorDoesNotHaveRating = 'doctorDoesNotHaveRating'; + static const confirm = 'confirm'; + static const loadingText = 'loadingText'; + static const kilometerUnit = 'kilometerUnit'; + static const dashboardScreenToolbarTitle = 'dashboardScreenToolbarTitle'; + static const settings = 'settings'; + static const language = 'language'; + static const lanEnglish = 'lanEnglish'; + static const lanArabic = 'lanArabic'; + static const cancel = 'cancel'; + static const done = 'done'; + static const replay2 = 'replay2'; + static const home = 'home'; + static const services = 'services'; + static const mySchedule = 'mySchedule'; + static const logout = 'logout'; + static const respirationRate = 'respirationRate'; + static const bookAppo = 'bookAppo'; + static const searchBy = 'searchBy'; + static const clinic = 'clinic'; + static const byClinic = 'byClinic'; + static const hospital = 'hospital'; + static const byHospital = 'byHospital'; + static const name = 'name'; + static const doctor = 'doctor'; + static const clinicName = 'clinicName'; + static const hospitalName = 'hospitalName'; + static const noClinicFound = 'noClinicFound'; + static const doctorName = 'doctorName'; + static const nearestAppo = 'nearestAppo'; + static const searchByDocText = 'searchByDocText'; + static const enterDocName = 'enterDocName'; + static const search = 'search'; + static const noResultFound = 'noResultFound'; + static const noSearchResultFound = 'noSearchResultFound'; + static const pleaseEnterProductName = 'pleaseEnterProductName'; + static const bookNow = 'bookNow'; + static const docInfo = 'docInfo'; + static const appoInfo = 'appoInfo'; + static const availableAppo = 'availableAppo'; + static const gender = 'gender'; + static const nationality = 'nationality'; + static const neverWait = 'neverWait'; + static const reminderTitle = 'reminderTitle'; + static const appointmentCalendar = 'appointmentCalendar'; + static const appointmentSuccess = 'appointmentSuccess'; + static const docQualifications = 'docQualifications'; + static const pressAgain = 'pressAgain'; + static const laserMaxLimitReach = 'laserMaxLimitReach'; + static const confirmAppoHeading = 'confirmAppoHeading'; + static const patientInfo = 'patientInfo'; + static const doctorFilter = 'doctorFilter'; + static const bookSuccess = 'bookSuccess'; + static const patientShare = 'patientShare'; + static const patientShareWithTax = 'patientShareWithTax'; + static const confirmAppo = 'confirmAppo'; + static const confirmLiveCare = 'confirmLiveCare'; + static const waitingForDoctor = 'waitingForDoctor'; + static const appointment = 'appointment'; + static const confirmLater = 'confirmLater'; + static const todoList = 'todoList'; + static const appoActions = 'appoActions'; + static const date = 'date'; + static const time = 'time'; + static const pendingPayment = 'pendingPayment'; + static const payNow = 'payNow'; + static const viewQR = 'viewQR'; + static const instruction = 'instruction'; + static const livecare = 'livecare'; + static const livecareAppo = 'livecareAppo'; + static const agreeTo = 'agreeTo'; + static const termsConditoins = 'termsConditoins'; + static const cancelAppoMsg = 'cancelAppoMsg'; + static const changePayment = 'changePayment'; + static const upcomingNoAction = 'upcomingNoAction'; + static const upcomingConfirm = 'upcomingConfirm'; + static const bookSuccessConfirmMore2412 = 'bookSuccessConfirmMore2412'; + static const upcomingPaymentPending = 'upcomingPaymentPending'; + static const upcomingPaymentNow = 'upcomingPaymentNow'; + static const timeUntilAppointment = 'timeUntilAppointment'; + static const appointmentTimePassed = 'appointmentTimePassed'; + static const upcomingQR = 'upcomingQR'; + static const upcomingVirtual = 'upcomingVirtual'; + static const upcomingLivecare = 'upcomingLivecare'; + static const upcomingDetails = 'upcomingDetails'; + static const reschedule = 'reschedule'; + static const raise = 'raise'; + static const complaint = 'complaint'; + static const add = 'add'; + static const reminder = 'reminder'; + static const location = 'location'; + static const online = 'online'; + static const payment = 'payment'; + static const onlinePayment = 'onlinePayment'; + static const onlinePaymentSubtitle = 'onlinePaymentSubtitle'; + static const cancelNocaps = 'cancelNocaps'; + static const setReminder = 'setReminder'; + static const nationalIdNumber = 'nationalIdNumber'; + static const medicalFileNumber = 'medicalFileNumber'; + static const loginregister = 'loginregister'; + static const poweredBy = 'poweredBy'; + static const welcome = 'welcome'; + static const welcomeToDrSulaiman = 'welcomeToDrSulaiman'; + static const patientApp = 'patientApp'; + static const welcomeText = 'welcomeText'; + static const drSulaimanText = 'drSulaimanText'; + static const welcomeText2 = 'welcomeText2'; + static const yes = 'yes'; + static const no = 'no'; + static const logintyperadio = 'logintyperadio'; + static const registernow = 'registernow'; + static const nationalID = 'nationalID'; + static const nationalId = 'nationalId'; + static const fileNo = 'fileNo'; + static const fileno = 'fileno'; + static const forgotFileNo = 'forgotFileNo'; + static const forgotFileNoTitle = 'forgotFileNoTitle'; + static const enterNationalId = 'enterNationalId'; + static const profileInfo = 'profileInfo'; + static const submit = 'submit'; + static const forgotDesc = 'forgotDesc'; + static const dob = 'dob'; + static const hijriDate = 'hijriDate'; + static const gregorianDate = 'gregorianDate'; + static const verifyLoginWith = 'verifyLoginWith'; + static const registerUser = 'registerUser'; + static const verifyWithFingerprint = 'verifyWithFingerprint'; + static const verifyWithFaceid = 'verifyWithFaceid'; + static const verifyWithSms = 'verifyWithSms'; + static const verifyWithWhatsapp = 'verifyWithWhatsapp'; + static const verifyThrough = 'verifyThrough'; + static const lastLogin = 'lastLogin'; + static const lastLoginWith = 'lastLoginWith'; + static const verifyFingerprint = 'verifyFingerprint'; + static const searchMedicine = 'searchMedicine'; + static const pharmaciesList = 'pharmaciesList'; + static const searchMedicineHere = 'searchMedicineHere'; + static const description = 'description'; + static const howToUse = 'howToUse'; + static const price = 'price'; + static const youCanFindItIn = 'youCanFindItIn'; + static const pleaseEnterMedicineName = 'pleaseEnterMedicineName'; + static const verificationMessage = 'verificationMessage'; + static const validationMessage = 'validationMessage'; + static const notification = 'notification'; + static const appSettings = 'appSettings'; + static const rateApp = 'rateApp'; + static const before = 'before'; + static const minute = 'minute'; + static const hour = 'hour'; + static const reminderSuccess = 'reminderSuccess'; + static const reminderCancelSuccess = 'reminderCancelSuccess'; + static const patientShareToDo = 'patientShareToDo'; + static const patientTaxToDo = 'patientTaxToDo'; + static const patientShareTotalToDo = 'patientShareTotalToDo'; + static const paymentMethod = 'paymentMethod'; + static const noNeedToWaitInLine = 'noNeedToWaitInLine'; + static const useQRAppoAttend = 'useQRAppoAttend'; + static const passQRAppoAttend = 'passQRAppoAttend'; + static const sitWaitingQR = 'sitWaitingQR'; + static const attendRegisterCode = 'attendRegisterCode'; + static const scanQRHospital = 'scanQRHospital'; + static const scanNFC = 'scanNFC'; + static const sendEmail = 'sendEmail'; + static const success = 'success'; + static const emailSentSuccessfully = 'emailSentSuccessfully'; + static const emailSentError = 'emailSentError'; + static const close = 'close'; + static const closeIt = 'closeIt'; + static const booked = 'booked'; + static const confirmed = 'confirmed'; + static const arrived = 'arrived'; + static const payNowBookSuccess = 'payNowBookSuccess'; + static const payNowBookSuccesstext1 = 'payNowBookSuccesstext1'; + static const payNowBookSuccesstext2 = 'payNowBookSuccesstext2'; + static const payLater = 'payLater'; + static const askDocNotAllowed = 'askDocNotAllowed'; + static const moreVerify = 'moreVerify'; + static const welcomeBack = 'welcomeBack'; + static const accountInfo = 'accountInfo'; + static const anotherAcc = 'anotherAcc'; + static const next = 'next'; + static const firstName = 'firstName'; + static const middleName = 'middleName'; + static const lastName = 'lastName'; + static const preferredLanguage = 'preferredLanguage'; + static const locationsRegister = 'locationsRegister'; + static const ksa = 'ksa'; + static const dubai = 'dubai'; + static const enterEmail = 'enterEmail'; + static const family = 'family'; + static const familyTitle = 'familyTitle'; + static const familyTitle2 = 'familyTitle2'; + static const myFamily = 'myFamily'; + static const addNewMember = 'addNewMember'; + static const sentRequests = 'sentRequests'; + static const recievedRequests = 'recievedRequests'; + static const manageFiles = 'manageFiles'; + static const oxygenation = 'oxygenation'; + static const bodyMeasurements = 'bodyMeasurements'; + static const temperature = 'temperature'; + static const pulse = 'pulse'; + static const respiration = 'respiration'; + static const bloodPressure = 'bloodPressure'; + static const painScale = 'painScale'; + static const weight = 'weight'; + static const height = 'height'; + static const heart = 'heart'; + static const heightUnit = 'heightUnit'; + static const weightUnit = 'weightUnit'; + static const unit = 'unit'; + static const request = 'request'; + static const memberName = 'memberName'; + static const switchLogin = 'switchLogin'; + static const removeMember = 'removeMember'; + static const allowView = 'allowView'; + static const rejectView = 'rejectView'; + static const deleteView = 'deleteView'; + static const approvals = 'approvals'; + static const approvalNo = 'approvalNo'; + static const companyName = 'companyName'; + static const receiptOn = 'receiptOn'; + static const expiryDate = 'expiryDate'; + static const expiryPoints = 'expiryPoints'; + static const expiryOn = 'expiryOn'; + static const procedureName = 'procedureName'; + static const procedure = 'procedure'; + static const procedureStatus = 'procedureStatus'; + static const usageStatus = 'usageStatus'; + static const unusedCount = 'unusedCount'; + static const totalApproval = 'totalApproval'; + static const category = 'category'; + static const expirationDate = 'expirationDate'; + static const patientCard = 'patientCard'; + static const policyNumber = 'policyNumber'; + static const seeDetails = 'seeDetails'; + static const insuranceCards = 'insuranceCards'; + static const requestType = 'requestType'; + static const registerInfoFamily = 'registerInfoFamily'; + static const removeFamilyMember = 'removeFamilyMember'; + static const myMedicalFile = 'myMedicalFile'; + static const myMedicalFileSubTitle = 'myMedicalFileSubTitle'; + static const viewMore = 'viewMore'; + static const homeHealthCareService = 'homeHealthCareService'; + static const onlinePharmacy = 'onlinePharmacy'; + static const emergencyService = 'emergencyService'; + static const onlinePaymentService = 'onlinePaymentService'; + static const offersAndPackages = 'offersAndPackages'; + static const comprehensiveMedicalCheckup = 'comprehensiveMedicalCheckup'; + static const hmgService = 'hmgService'; + static const viewAllHabibMedicalService = 'viewAllHabibMedicalService'; + static const viewAll = 'viewAll'; + static const view = 'view'; + static const contactUs = 'contactUs'; + static const contactUsLocation = 'contactUsLocation'; + static const contactUsTime = 'contactUsTime'; + static const viewAllWaysReachUs = 'viewAllWaysReachUs'; + static const medicalProfile = 'medicalProfile'; + static const consultation = 'consultation'; + static const logs = 'logs'; + static const textToSpeech = 'textToSpeech'; + static const locationDialogMessage = 'locationDialogMessage'; + static const userViewRequester = 'userViewRequester'; + static const userView = 'userView'; + static const parking = 'parking'; + static const parking2 = 'parking2'; + static const alhabiServices = 'alhabiServices'; + static const parkingTitle = 'parkingTitle'; + static const parkingDescription = 'parkingDescription'; + static const appointments = 'appointments'; + static const all2 = 'all2'; + static const checkinOption = 'checkinOption'; + static const readBarcode = 'readBarcode'; + static const showMyPark = 'showMyPark'; + static const clearMyData = 'clearMyData'; + static const floor = 'floor'; + static const gate = 'gate'; + static const building = 'building'; + static const branch = 'branch'; + static const emergencyServices = 'emergencyServices'; + static const nearester = 'nearester'; + static const locationa = 'locationa'; + static const callNow = 'callNow'; + static const ambulancerequest = 'ambulancerequest'; + static const requestA = 'requestA'; + static const noBookedAppointments = 'noBookedAppointments'; + static const noConfirmedAppointments = 'noConfirmedAppointments'; + static const noArrivedAppointments = 'noArrivedAppointments'; + static const myAppointmentsList = 'myAppointmentsList'; + static const myAppointments = 'myAppointments'; + static const radiology = 'radiology'; + static const radiologySubtitle = 'radiologySubtitle'; + static const lab = 'lab'; + static const labSubtitle = 'labSubtitle'; + static const medicines = 'medicines'; + static const medicinesSubtitle = 'medicinesSubtitle'; + static const vitalSigns = 'vitalSigns'; + static const vitalSignsSubTitle = 'vitalSignsSubTitle'; + static const vitalSignNormal = 'vitalSignNormal'; + static const vitalSignLow = 'vitalSignLow'; + static const vitalSignHigh = 'vitalSignHigh'; + static const vitalSignObese = 'vitalSignObese'; + static const vitalSignOverweight = 'vitalSignOverweight'; + static const vitalSignUnderweight = 'vitalSignUnderweight'; + static const vitalSignSkinny = 'vitalSignSkinny'; + static const myMedical = 'myMedical'; + static const myMedicalSubtitle = 'myMedicalSubtitle'; + static const myDoctor = 'myDoctor'; + static const myDoctorSubtitle = 'myDoctorSubtitle'; + static const myDoctorSubtitle2 = 'myDoctorSubtitle2'; + static const eye = 'eye'; + static const eyeSubtitle = 'eyeSubtitle'; + static const insurance = 'insurance'; + static const insurance2 = 'insurance2'; + static const insuranceSubtitle = 'insuranceSubtitle'; + static const updateInsurance = 'updateInsurance'; + static const updateInsuranceSubtitle = 'updateInsuranceSubtitle'; + static const insuranceApproval = 'insuranceApproval'; + static const insuranceApprovalSubtitle = 'insuranceApprovalSubtitle'; + static const allergies = 'allergies'; + static const allergiesSubtitle = 'allergiesSubtitle'; + static const myVaccines = 'myVaccines'; + static const myVaccinesSubtitle = 'myVaccinesSubtitle'; + static const medical = 'medical'; + static const medicalSubtitle = 'medicalSubtitle'; + static const monthly = 'monthly'; + static const monthlySubtitle = 'monthlySubtitle'; + static const sick = 'sick'; + static const sick2 = 'sick2'; + static const sickSubtitle = 'sickSubtitle'; + static const myBalance = 'myBalance'; + static const myBalanceSubtitle = 'myBalanceSubtitle'; + static const patientCall = 'patientCall'; + static const patientCallSubtitle = 'patientCallSubtitle'; + static const smartWatches = 'smartWatches'; + static const smartWatchesSubtitle = 'smartWatchesSubtitle'; + static const myTrackers = 'myTrackers'; + static const myTrackersSubtitle = 'myTrackersSubtitle'; + static const askYour = 'askYour'; + static const askYourSubtitle = 'askYourSubtitle'; + static const internet = 'internet'; + static const internetSubtitle = 'internetSubtitle'; + static const chatbot = 'chatbot'; + static const chatbotSubtitle = 'chatbotSubtitle'; + static const timeLine = 'timeLine'; + static const labOrders = 'labOrders'; + static const billNo = 'billNo'; + static const prescriptions = 'prescriptions'; + static const history = 'history'; + static const orderNo = 'orderNo'; + static const orderDetails = 'orderDetails'; + static const deliveryDriverTrack = 'deliveryDriverTrack'; + static const deliveryLocation = 'deliveryLocation'; + static const driver = 'driver'; + static const vitalSign = 'vitalSign'; + static const monthlyReports = 'monthlyReports'; + static const km = 'km'; + static const km_ = 'km_'; + static const patientHealthSummaryReport = 'patientHealthSummaryReport'; + static const toViewTheTermsAndConditions = 'toViewTheTermsAndConditions'; + static const clickHere = 'clickHere'; + static const iAgreeToTheTermsAndConditions = 'iAgreeToTheTermsAndConditions'; + static const iAgreeToTheTermsAndConditionsSubtitle = 'iAgreeToTheTermsAndConditionsSubtitle'; + static const iAgreeAndAcceptTermsAndConditions = 'iAgreeAndAcceptTermsAndConditions'; + static const termsAndConditions = 'termsAndConditions'; + static const iAgreeHealthInfoCanBeUsed = 'iAgreeHealthInfoCanBeUsed'; + static const privacyPolicyText = 'privacyPolicyText'; + static const save = 'save'; + static const userAgreement = 'userAgreement'; + static const updateSuccessfully = 'updateSuccessfully'; + static const checkVaccineAvailability = 'checkVaccineAvailability'; + static const myVaccinesAvailability = 'myVaccinesAvailability'; + static const paymentService = 'paymentService'; + static const paymentOnline = 'paymentOnline'; + static const onlineCheckIn = 'onlineCheckIn'; + static const myBalances = 'myBalances'; + static const myWallet = 'myWallet'; + static const balanceAmount = 'balanceAmount'; + static const totalBalance = 'totalBalance'; + static const createAdvancedPayment = 'createAdvancedPayment'; + static const advancePayment = 'advancePayment'; + static const advancePaymentLabel = 'advancePaymentLabel'; + static const fileNumber = 'fileNumber'; + static const amount = 'amount'; + static const depositorEmail = 'depositorEmail'; + static const notes = 'notes'; + static const selectPatientName = 'selectPatientName'; + static const selectFamilyPatientName = 'selectFamilyPatientName'; + static const selectHospital = 'selectHospital'; + static const selectCity = 'selectCity'; + static const city = 'city'; + static const distance = 'distance'; + static const myAccount = 'myAccount'; + static const otherAccount = 'otherAccount'; + static const selectBeneficiary = 'selectBeneficiary'; + static const confirmThePayment = 'confirmThePayment'; + static const depositorName = 'depositorName'; + static const mobileNumber = 'mobileNumber'; + static const phoneNumber = 'phoneNumber'; + static const country = 'country'; + static const ok = 'ok'; + static const averageWaitingTime = 'averageWaitingTime'; + static const waitingTime = 'waitingTime'; + static const waterConsumedInWeek = 'waterConsumedInWeek'; + static const waterConsumedInMonth = 'waterConsumedInMonth'; + static const theVerificationCodeExpiresIn = 'theVerificationCodeExpiresIn'; + static const pleaseEnterTheVerificationCode = 'pleaseEnterTheVerificationCode'; + static const eyeMeasurements = 'eyeMeasurements'; + static const measurements = 'measurements'; + static const classes = 'classes'; + static const contactLens = 'contactLens'; + static const rightEye = 'rightEye'; + static const sphere = 'sphere'; + static const cylinder = 'cylinder'; + static const axis = 'axis'; + static const prism = 'prism'; + static const va = 'va'; + static const leftEye = 'leftEye'; + static const brand = 'brand'; + static const power = 'power'; + static const diameter = 'diameter'; + static const remarks = 'remarks'; + static const activeMedications = 'activeMedications'; + static const expDate = 'expDate'; + static const route = 'route'; + static const frequency = 'frequency'; + static const dailyQuantity = 'dailyQuantity'; + static const addReminder = 'addReminder'; + static const cancelReminder = 'cancelReminder'; + static const reminderDes = 'reminderDes'; + static const pleaseSelectAllQuestionToContinue = 'pleaseSelectAllQuestionToContinue'; + static const startDay = 'startDay'; + static const endDay = 'endDay'; + static const days = 'days'; + static const pleaseVerify = 'pleaseVerify'; + static const scheduleTime = 'scheduleTime'; + static const askDoctor = 'askDoctor'; + static const doctorResponses = 'doctorResponses'; + static const ne_w = 'ne_w'; + static const all = 'all'; + static const dailyWater = 'dailyWater'; + static const questionHere = 'questionHere'; + static const viewDoctorResponses = 'viewDoctorResponses'; + static const serviceInformationButton = 'serviceInformationButton'; + static const serviceInformationTitle = 'serviceInformationTitle'; + static const serviceInformation = 'serviceInformation'; + static const homeHealthCare = 'homeHealthCare'; + static const noAppointmentAvailable = 'noAppointmentAvailable'; + static const loginRegister = 'loginRegister'; + static const orderLog = 'orderLog'; + static const infoLab = 'infoLab'; + static const infoRadiology = 'infoRadiology'; + static const noReviewsAvailable = 'noReviewsAvailable'; + static const noLocationAvailable = 'noLocationAvailable'; + static const orders = 'orders'; + static const lakum = 'lakum'; + static const lakumMsg = 'lakumMsg'; + static const lakumPoint = 'lakumPoint'; + static const wishlist = 'wishlist'; + static const products = 'products'; + static const reviews = 'reviews'; + static const brands = 'brands'; + static const productDetails = 'productDetails'; + static const medicationRefill = 'medicationRefill'; + static const pillReminder = 'pillReminder'; + static const shippingAddresses = 'shippingAddresses'; + static const reachUs = 'reachUs'; + static const ourLocations = 'ourLocations'; + static const edit = 'edit'; + static const whatsApp = 'whatsApp'; + static const phone = 'phone'; + static const delete = 'delete'; + static const deleteAddress = 'deleteAddress'; + static const deletedAddres = 'deletedAddres'; + static const addAddress = 'addAddress'; + static const addNewAddress = 'addNewAddress'; + static const order = 'order'; + static const delivered = 'delivered'; + static const pending = 'pending'; + static const enterNameHere = 'enterNameHere'; + static const processing = 'processing'; + static const cancelled = 'cancelled'; + static const writeReview = 'writeReview'; + static const shareReview = 'shareReview'; + static const review = 'review'; + static const viewMedicalFile = 'viewMedicalFile'; + static const viewAllServices = 'viewAllServices'; + static const medicalFile = 'medicalFile'; + static const verified = 'verified'; + static const checkup = 'checkup'; + static const hhcHome = 'hhcHome'; + static const refferal = 'refferal'; + static const refferalTitle = 'refferalTitle'; + static const refferalSubTitle = 'refferalSubTitle'; + static const healthCare = 'healthCare'; + static const emergency = 'emergency'; + static const emergency2 = 'emergency2'; + static const erservices = 'erservices'; + static const services2 = 'services2'; + static const services3 = 'services3'; + static const cantSeeProfile = 'cantSeeProfile'; + static const loginRegisterNow = 'loginRegisterNow'; + static const hmgPharmacy = 'hmgPharmacy'; + static const ecommerceSolution = 'ecommerceSolution'; + static const comprehensive = 'comprehensive'; + static const onlineConsulting = 'onlineConsulting'; + static const pendingOrder = 'pendingOrder'; + static const deliveredOrder = 'deliveredOrder'; + static const processingOrder = 'processingOrder'; + static const cancelledOrder = 'cancelledOrder'; + static const compare = 'compare'; + static const medicationsRefill = 'medicationsRefill'; + static const recommended = 'recommended'; + static const myPrescription = 'myPrescription'; + static const quantity = 'quantity'; + static const reviewAppointment = 'reviewAppointment'; + static const backMyAccount = 'backMyAccount'; + static const reviewSuccessful = 'reviewSuccessful'; + static const reviewShared = 'reviewShared'; + static const reviewComment = 'reviewComment'; + static const shippedMethod = 'shippedMethod'; + static const orderDetail = 'orderDetail'; + static const orderSummary = 'orderSummary'; + static const subtotal = 'subtotal'; + static const shipping = 'shipping'; + static const shipBy = 'shipBy'; + static const lakumPoints = 'lakumPoints'; + static const useLakumPoints = 'useLakumPoints'; + static const use = 'use'; + static const proceedPay = 'proceedPay'; + static const vat = 'vat'; + static const inclusiveVat = 'inclusiveVat'; + static const items = 'items'; + static const checkOut = 'checkOut'; + static const sar = 'sar'; + static const aed = 'aed'; + static const payOnline = 'payOnline'; + static const cancelOrder = 'cancelOrder'; + static const confirmAddress = 'confirmAddress'; + static const confirmLocation = 'confirmLocation'; + static const conditionsHMG = 'conditionsHMG'; + static const conditions = 'conditions'; + static const confirmDeleteMsg = 'confirmDeleteMsg'; + static const confirmDelete = 'confirmDelete'; + static const confirmCancellation = 'confirmCancellation'; + static const orderNumber = 'orderNumber'; + static const orderDate = 'orderDate'; + static const itemsNo = 'itemsNo'; + static const noOrder = 'noOrder'; + static const noResult = 'noResult'; + static const nonRecommended = 'nonRecommended'; + static const termsService = 'termsService'; + static const beforeusing = 'beforeusing'; + static const accept = 'accept'; + static const dataSafeInfo = 'dataSafeInfo'; + static const dataSafe = 'dataSafe'; + static const informational = 'informational'; + static const notUseInEmerbency = 'notUseInEmerbency'; + static const notUseInEmerbencyDetails = 'notUseInEmerbencyDetails'; + static const notUseInEmerbencyDetailsCall = 'notUseInEmerbencyDetailsCall'; + static const checkDiagnosis = 'checkDiagnosis'; + static const remeberthat = 'remeberthat'; + static const loginToUseService = 'loginToUseService'; + static const offersAndPromotions = 'offersAndPromotions'; + static const offers = 'offers'; + static const myPrescriptions = 'myPrescriptions'; + static const searchAndScanMedication = 'searchAndScanMedication'; + static const shopByBrands = 'shopByBrands'; + static const recentlyViewed = 'recentlyViewed'; + static const bestSellers = 'bestSellers'; + static const deleteAllItems = 'deleteAllItems'; + static const total = 'total'; + static const totalWithColonRight = 'totalWithColonRight'; + static const selectAddress = 'selectAddress'; + static const shippingAddress = 'shippingAddress'; + static const changeAddress = 'changeAddress'; + static const selectPaymentOption = 'selectPaymentOption'; + static const selectTamaraPlan = 'selectTamaraPlan'; + static const changeMethod = 'changeMethod'; + static const reviewOrder = 'reviewOrder'; + static const active = 'active'; + static const inactive = 'inactive'; + static const balance = 'balance'; + static const gained = 'gained'; + static const consumed = 'consumed'; + static const transferred = 'transferred'; + static const riyal = 'riyal'; + static const membersince = 'membersince'; + static const identification = 'identification'; + static const lakumMobile = 'lakumMobile'; + static const waitinggained = 'waitinggained'; + static const expired = 'expired'; + static const willBeExpired = 'willBeExpired'; + static const activateLAKUMAccount = 'activateLAKUMAccount'; + static const checkBeneficiary = 'checkBeneficiary'; + static const beneficiaryName = 'beneficiaryName'; + static const accountActivation = 'accountActivation'; + static const lakumTransfer = 'lakumTransfer'; + static const acceptLbl = 'acceptLbl'; + static const declineLbl = 'declineLbl'; + static const selectGender = 'selectGender'; + static const iAmA = 'iAmA'; + static const selectAge = 'selectAge'; + static const select = 'select'; + static const iAm = 'iAm'; + static const yearsOld = 'yearsOld'; + static const dragPoint = 'dragPoint'; + static const refine = 'refine'; + static const subGroup = 'subGroup'; + static const max = 'max'; + static const compeleteOrderMsg = 'compeleteOrderMsg'; + static const addToCompareMsg = 'addToCompareMsg'; + static const itInListMsg = 'itInListMsg'; + static const compareListFull = 'compareListFull'; + static const addQuantity = 'addQuantity'; + static const addToCartMsg = 'addToCartMsg'; + static const addToWishlistMsg = 'addToWishlistMsg'; + static const notifyMeMsg = 'notifyMeMsg'; + static const removeFromWishlistMsg = 'removeFromWishlistMsg'; + static const min = 'min'; + static const reset = 'reset'; + static const apply = 'apply'; + static const viewCategorise = 'viewCategorise'; + static const viewSubCategorise = 'viewSubCategorise'; + static const categorise = 'categorise'; + static const wishList = 'wishList'; + static const cart = 'cart'; + static const alhabibapp = 'alhabibapp'; + static const searchProductHere = 'searchProductHere'; + static const hhcNotAuthMsg = 'hhcNotAuthMsg'; + static const email = 'email'; + static const book = 'book'; + static const appointmentLabel = 'appointmentLabel'; + static const bloodType = 'bloodType'; + static const maritalStatus = 'maritalStatus'; + static const general = 'general'; + static const profile = 'profile'; + static const notifications = 'notifications'; + static const notificationDetails = 'notificationDetails'; + static const notificationDetailsa = 'notificationDetailsa'; + static const infoMyDoctorPoints = 'infoMyDoctorPoints'; + static const infoMyDoctor = 'infoMyDoctor'; + static const infoPrescriptions = 'infoPrescriptions'; + static const infoMyPrescriptionPoints = 'infoMyPrescriptionPoints'; + static const infoInsuranceCards = 'infoInsuranceCards'; + static const infoInsuranceCardsPoints = 'infoInsuranceCardsPoints'; + static const infoAllergies = 'infoAllergies'; + static const infoSickLeaves = 'infoSickLeaves'; + static const infoSickLeavePoints = 'infoSickLeavePoints'; + static const infoApprovals = 'infoApprovals'; + static const infoApprovalPoints = 'infoApprovalPoints'; + static const infoMonthReport = 'infoMonthReport'; + static const languageSetting = 'languageSetting'; + static const alert = 'alert'; + static const emailAlert = 'emailAlert'; + static const smsAlert = 'smsAlert'; + static const contactInfo = 'contactInfo'; + static const emrgName = 'emrgName'; + static const emrgNo = 'emrgNo'; + static const modes = 'modes'; + static const vibration = 'vibration'; + static const blindModes = 'blindModes'; + static const invertTheme = 'invertTheme'; + static const offTheme = 'offTheme'; + static const dimTheme = 'dimTheme'; + static const bwTheme = 'bwTheme'; + static const permissions = 'permissions'; + static const cameraPermission = 'cameraPermission'; + static const locationPermission = 'locationPermission'; + static const needPrescription = 'needPrescription'; + static const outOfStockMsg = 'outOfStockMsg'; + static const noArabicLetters = 'noArabicLetters'; + static const noOffersAvailable = 'noOffersAvailable'; + static const accessibility = 'accessibility'; + static const orderStatus = 'orderStatus'; + static const findUs = 'findUs'; + static const liveChat = 'liveChat'; + static const service = 'service'; + static const hmgServiceLabel = 'hmgServiceLabel'; + static const healthWeatherIndicators = 'healthWeatherIndicators'; + static const healthTipsBasedOnCurrentWeather = 'healthTipsBasedOnCurrentWeather'; + static const moreDetails = 'moreDetails'; + static const resendOrder = 'resendOrder'; + static const ports = 'ports'; + static const way = 'way'; + static const dailyDoses = 'dailyDoses'; + static const period = 'period'; + static const duration = 'duration'; + static const cm = 'cm'; + static const ft = 'ft'; + static const kg = 'kg'; + static const lb = 'lb'; + static const birthDate = 'birthDate'; + static const dateOfBirth = 'dateOfBirth'; + static const mass = 'mass'; + static const tempC = 'tempC'; + static const bpm = 'bpm'; + static const respirationSigns = 'respirationSigns'; + static const sysDias = 'sysDias'; + static const body = 'body'; + static const bodyString = 'bodyString'; + static const face = 'face'; + static const retouch = 'retouch'; + static const bikini = 'bikini'; + static const totalMinutes = 'totalMinutes'; + static const feedback = 'feedback'; + static const likeToHear = 'likeToHear'; + static const emptySubject = 'emptySubject'; + static const emptyMessage = 'emptyMessage'; + static const selectAttachment = 'selectAttachment'; + static const complainAppo = 'complainAppo'; + static const complainAppoAlt = 'complainAppoAlt'; + static const messageType = 'messageType'; + static const feedbackType = 'feedbackType'; + static const compliment = 'compliment'; + static const suggestion = 'suggestion'; + static const yourFeedback = 'yourFeedback'; + static const selectPart = 'selectPart'; + static const number = 'number'; + static const notClassified = 'notClassified'; + static const selectClinic = 'selectClinic'; + static const selectProject = 'selectProject'; + static const searchItemError = 'searchItemError'; + static const youCanFind = 'youCanFind'; + static const itemInSearch = 'itemInSearch'; + static const bloodDonation = 'bloodDonation'; + static const bloodDonationInfo = 'bloodDonationInfo'; + static const bloodInstruction = 'bloodInstruction'; + static const aboutBloodDonation = 'aboutBloodDonation'; + static const bloodDonationDescription = 'bloodDonationDescription'; + static const bloodDonationBenefit1 = 'bloodDonationBenefit1'; + static const bloodDonationBenefit2 = 'bloodDonationBenefit2'; + static const bloodDonationBenefit3 = 'bloodDonationBenefit3'; + static const viewTerms = 'viewTerms'; + static const wantConnectHmgNetwork = 'wantConnectHmgNetwork'; + static const failedToAccessHmgServices = 'failedToAccessHmgServices'; + static const offerAndPackages = 'offerAndPackages'; + static const offerAndPackagesDetails = 'offerAndPackagesDetails'; + static const invoiceNo = 'invoiceNo'; + static const invoiceDate = 'invoiceDate'; + static const specialResult = 'specialResult'; + static const generalResult = 'generalResult'; + static const showMoreBtn = 'showMoreBtn'; + static const value = 'value'; + static const report = 'report'; + static const openRad = 'openRad'; + static const sendCopy = 'sendCopy'; + static const appoSurvey = 'appoSurvey'; + static const appoSurveySubtitle = 'appoSurveySubtitle'; + static const labResults = 'labResults'; + static const doctorRating = 'doctorRating'; + static const good = 'good'; + static const vGood = 'vGood'; + static const excellent = 'excellent'; + static const average = 'average'; + static const infoSigns = 'infoSigns'; + static const infoAdvancePayment = 'infoAdvancePayment'; + static const infoMyBalance = 'infoMyBalance'; + static const erContant = 'erContant'; + static const infoAmbulance = 'infoAmbulance'; + static const infoMyAppointments = 'infoMyAppointments'; + static const infoTodo = 'infoTodo'; + static const familyInfo = 'familyInfo'; + static const rrtdDetails = 'rrtdDetails'; + static const homeHealthCareText = 'homeHealthCareText'; + static const onlineCheckInAgreement = 'onlineCheckInAgreement'; + static const infoEreferral = 'infoEreferral'; + static const erConsultation = 'erConsultation'; + static const myInvoice = 'myInvoice'; + static const invoiceList = 'invoiceList'; + static const invoiceList2 = 'invoiceList2'; + static const allInvoices = 'allInvoices'; + static const hospitals = 'hospitals'; + static const clinics = 'clinics'; + static const doctors = 'doctors'; + static const selectDoctor = 'selectDoctor'; + static const thisItemIsNotAvailable = 'thisItemIsNotAvailable'; + static const beforeAfterImages = 'beforeAfterImages'; + static const clinicAcceptLivecare = 'clinicAcceptLivecare'; + static const livecareModalTop = 'livecareModalTop'; + static const livecarePoint2 = 'livecarePoint2'; + static const livecarePoint3 = 'livecarePoint3'; + static const livecarePoint4 = 'livecarePoint4'; + static const livecarePoint5 = 'livecarePoint5'; + static const bookImmediateLivecare = 'bookImmediateLivecare'; + static const bookVideoLivecare2 = 'bookVideoLivecare2'; + static const noThankyou = 'noThankyou'; + static const visitClinic = 'visitClinic'; + static const generateCovidCertificate = 'generateCovidCertificate'; + static const isReportOutsideKsa = 'isReportOutsideKsa'; + static const passportNumber = 'passportNumber'; + static const enterPassportNumber = 'enterPassportNumber'; + static const validPassportNumber = 'validPassportNumber'; + static const continuePlan = 'continuePlan'; + static const aboutApp = 'aboutApp'; + static const dontHaveAccount = 'dontHaveAccount'; + static const loginOrRegister = 'loginOrRegister'; + static const myFiles = 'myFiles'; + static const resultsPending = 'resultsPending'; + static const resultsAvailable = 'resultsAvailable'; + static const viewReport = 'viewReport'; + static const checkAvailability = 'checkAvailability'; + static const readInstructions = 'readInstructions'; + static const searchLabReport = 'searchLabReport'; + static const prescriptionDeliveryError = 'prescriptionDeliveryError'; + static const receiveOtpToast = 'receiveOtpToast'; + static const enterPhoneNumber = 'enterPhoneNumber'; + static const enterEmailDesc = 'enterEmailDesc'; + static const enterPhoneDesc = 'enterPhoneDesc'; + static const pleaseChooseOption = 'pleaseChooseOption'; + static const prepareToElevate = 'prepareToElevate'; + static const iAcceptTermsConditions = 'iAcceptTermsConditions'; + static const alreadyHaveAccount = 'alreadyHaveAccount'; + static const loginNow = 'loginNow'; + static const notice = 'notice'; + static const oR = 'oR'; + static const sendOTPWHATSAPP = 'sendOTPWHATSAPP'; + static const sendOTPSMS = 'sendOTPSMS'; + static const fullName = 'fullName'; + static const married = 'married'; + static const uae = 'uae'; + static const malE = 'malE'; + static const loginBy = 'loginBy'; + static const loginByOTP = 'loginByOTP'; + static const guest = 'guest'; + static const switchAccount = 'switchAccount'; + static const lastLoginBy = 'lastLoginBy'; + static const allSet = 'allSet'; + static const quickLogin = 'quickLogin'; + static const enableQuickLogin = 'enableQuickLogin'; + static const enableQuickLoginBtn = 'enableQuickLoginBtn'; + static const enableMsg = 'enableMsg'; + static const notNow = 'notNow'; + static const pendingActivation = 'pendingActivation'; + static const awaitingApproval = 'awaitingApproval'; + static const news = 'news'; + static const ready = 'ready'; + static const enterValidNationalId = 'enterValidNationalId'; + static const enterValidPhoneNumber = 'enterValidPhoneNumber'; + static const cannotEnterSaudiOrUAENumber = 'cannotEnterSaudiOrUAENumber'; + static const medicalCentersWithCount = 'medicalCentersWithCount'; + static const medicalCenters = 'medicalCenters'; + static const hospitalsWithCount = 'hospitalsWithCount'; + static const selectRegion = 'selectRegion'; + static const selectFacility = 'selectFacility'; + static const selectFacilitiesSubTitle = 'selectFacilitiesSubTitle'; + static const selectHospitalSubTitle = 'selectHospitalSubTitle'; + static const iAcceptThe = 'iAcceptThe'; + static const personalDetailsVerification = 'personalDetailsVerification'; + static const otpVerification = 'otpVerification'; + static const weHaveSendOTP = 'weHaveSendOTP'; + static const via = 'via'; + static const forRegistrationVerification = 'forRegistrationVerification'; + static const didntReceiveIt = 'didntReceiveIt'; + static const resendOTP = 'resendOTP'; + static const resendIn = 'resendIn'; + static const pleaseEnterAnationalID = 'pleaseEnterAnationalID'; + static const pleaseEnterAFileNumber = 'pleaseEnterAFileNumber'; + static const pleaseEnterAValidEmail = 'pleaseEnterAValidEmail'; + static const pleaseEnterFullName = 'pleaseEnterFullName'; + static const pleaseAcceptTermsConditions = 'pleaseAcceptTermsConditions'; + static const pleaseEnterAValidIqamaID = 'pleaseEnterAValidIqamaID'; + static const pleaseEnterAValidNationalID = 'pleaseEnterAValidNationalID'; + static const pleaseEnterAValidDateOfBirth = 'pleaseEnterAValidDateOfBirth'; + static const pleaseEnterAValidName = 'pleaseEnterAValidName'; + static const pleaseSelectAGender = 'pleaseSelectAGender'; + static const pleaseSelectAMaritalStatus = 'pleaseSelectAMaritalStatus'; + static const pleaseSelectACountry = 'pleaseSelectACountry'; + static const pleaseEnterEmail = 'pleaseEnterEmail'; + static const pleaseEnterAValidEmailFormat = 'pleaseEnterAValidEmailFormat'; + static const selectCountry = 'selectCountry'; + static const forLoginVerification = 'forLoginVerification'; + static const searchHospital = 'searchHospital'; + static const skip = 'skip'; + static const getStarted = 'getStarted'; + static const onboardingHeading1 = 'onboardingHeading1'; + static const onboardingBody1 = 'onboardingBody1'; + static const onboardingHeading2 = 'onboardingHeading2'; + static const onboardingBody2 = 'onboardingBody2'; + static const hmgHospitals = 'hmgHospitals'; + static const hmcMedicalClinic = 'hmcMedicalClinic'; + static const applyFilter = 'applyFilter'; + static const facilityAndLocation = 'facilityAndLocation'; + static const regionAndLocation = 'regionAndLocation'; + static const clearAllFilters = 'clearAllFilters'; + static const filters = 'filters'; + static const searchClinic = 'searchClinic'; + static const normal = 'normal'; + static const attention = 'attention'; + static const monitor = 'monitor'; + static const noSpecialResult = 'noSpecialResult'; + static const setTheDateRange = 'setTheDateRange'; + static const selectDate = 'selectDate'; + static const historyFlowchart = 'historyFlowchart'; + static const to = 'to'; + static const startDate = 'startDate'; + static const endDate = 'endDate'; + static const walkin = 'walkin'; + static const laserClinic = 'laserClinic'; + static const continueString = 'continueString'; + static const covid_info = 'covid_info'; + static const appointmentDetails = 'appointmentDetails'; + static const checkingDoctorAvailability = 'checkingDoctorAvailability'; + static const cancellingAppointmentPleaseWait = 'cancellingAppointmentPleaseWait'; + static const appointmentCancelledSuccessfully = 'appointmentCancelledSuccessfully'; + static const notConfirmed = 'notConfirmed'; + static const appointmentStatus = 'appointmentStatus'; + static const doctorWillCallYou = 'doctorWillCallYou'; + static const getDirections = 'getDirections'; + static const notifyMeBeforeAppointment = 'notifyMeBeforeAppointment'; + static const fetchingLabResults = 'fetchingLabResults'; + static const fetchingRadiologyResults = 'fetchingRadiologyResults'; + static const fetchingAppointmentPrescriptions = 'fetchingAppointmentPrescriptions'; + static const noPrescriptionsForAppointment = 'noPrescriptionsForAppointment'; + static const amountBeforeTax = 'amountBeforeTax'; + static const rebookAppointment = 'rebookAppointment'; + static const fetchingDoctorSchedulePleaseWait = 'fetchingDoctorSchedulePleaseWait'; + static const pickADate = 'pickADate'; + static const confirmingAppointmentPleaseWait = 'confirmingAppointmentPleaseWait'; + static const appointmentConfirmedSuccessfully = 'appointmentConfirmedSuccessfully'; + static const appointmentPayment = 'appointmentPayment'; + static const checkingPaymentStatusPleaseWait = 'checkingPaymentStatusPleaseWait'; + static const paymentFailedPleaseTryAgain = 'paymentFailedPleaseTryAgain'; + static const appointmentCheckIn = 'appointmentCheckIn'; + static const insuranceExpiredOrInactive = 'insuranceExpiredOrInactive'; + static const totalAmountToPay = 'totalAmountToPay'; + static const vat15 = 'vat15'; + static const liveCare = 'liveCare'; + static const recentVisits = 'recentVisits'; + static const favouriteDoctors = 'favouriteDoctors'; + static const searchByClinic = 'searchByClinic'; + static const tapToSelectClinic = 'tapToSelectClinic'; + static const searchByDoctor = 'searchByDoctor'; + static const tapToSelect = 'tapToSelect'; + static const searchByRegion = 'searchByRegion'; + static const centralRegion = 'centralRegion'; + static const immediateConsultation = 'immediateConsultation'; + static const scheduledConsultation = 'scheduledConsultation'; + static const pharmaLiveCare = 'pharmaLiveCare'; + static const notSureHelpMeChooseClinic = 'notSureHelpMeChooseClinic'; + static const mentionYourSymptomsAndFindDoctors = 'mentionYourSymptomsAndFindDoctors'; + static const immediateService = 'immediateService'; + static const noNeedToWaitGetMedicalConsultation = 'noNeedToWaitGetMedicalConsultation'; + static const noVisitRequired = 'noVisitRequired'; + static const doctorWillContact = 'doctorWillContact'; + static const specialisedDoctorWillContactYou = 'specialisedDoctorWillContactYou'; + static const freeMedicineDelivery = 'freeMedicineDelivery'; + static const offersFreeMedicineDelivery = 'offersFreeMedicineDelivery'; + static const dentalChiefComplaints = 'dentalChiefComplaints'; + static const viewAvailableAppointments = 'viewAvailableAppointments'; + static const doctorProfile = 'doctorProfile'; + static const waitingAppointment = 'waitingAppointment'; + static const hospitalInformation = 'hospitalInformation'; + static const fetchingAppointmentShare = 'fetchingAppointmentShare'; + static const bookingYourAppointment = 'bookingYourAppointment'; + static const selectLiveCareClinic = 'selectLiveCareClinic'; + static const checkingForExistingDentalPlan = 'checkingForExistingDentalPlan'; + static const dentalTreatmentPlan = 'dentalTreatmentPlan'; + static const youHaveExistingTreatmentPlan = 'youHaveExistingTreatmentPlan'; + static const mins = 'mins'; + static const totalTimeRequired = 'totalTimeRequired'; + static const wouldYouLikeToContinue = 'wouldYouLikeToContinue'; + static const chooseDoctor = 'chooseDoctor'; + static const viewNearestAppos = 'viewNearestAppos'; + static const noDoctorFound = 'noDoctorFound'; + static const yesPleasImInAHurry = 'yesPleasImInAHurry'; + static const fetchingFeesPleaseWait = 'fetchingFeesPleaseWait'; + static const noThanksPhysicalVisit = 'noThanksPhysicalVisit'; + static const offline = 'offline'; + static const videoCall = 'videoCall'; + static const liveVideoCallWithHMGDoctors = 'liveVideoCallWithHMGDoctors'; + static const liveAudioCallWithHMGDoctors = 'liveAudioCallWithHMGDoctors'; + static const audioCall = 'audioCall'; + static const phoneCall = 'phoneCall'; + static const livePhoneCallWithHMGDoctors = 'livePhoneCallWithHMGDoctors'; + static const reviewLiveCareRequest = 'reviewLiveCareRequest'; + static const selectedLiveCareType = 'selectedLiveCareType'; + static const selectLiveCareCallType = 'selectLiveCareCallType'; + static const confirmingLiveCareRequest = 'confirmingLiveCareRequest'; + static const unknownErrorOccurred = 'unknownErrorOccurred'; + static const liveCarePermissionsMessage = 'liveCarePermissionsMessage'; + static const liveCarePayment = 'liveCarePayment'; + static const mada = 'mada'; + static const visaOrMastercard = 'visaOrMastercard'; + static const tamara = 'tamara'; + static const fetchingApplePayDetails = 'fetchingApplePayDetails'; + static const liveCarePendingRequest = 'liveCarePendingRequest'; + static const callLiveCareSupport = 'callLiveCareSupport'; + static const whatIsWaitingAppointment = 'whatIsWaitingAppointment'; + static const waitingAppointmentsFeature = 'waitingAppointmentsFeature'; + static const appointmentWithDoctorConfirmed = 'appointmentWithDoctorConfirmed'; + static const paymentWithinTenMinutes = 'paymentWithinTenMinutes'; + static const liveLocation = 'liveLocation'; + static const verifyYourLocationAtHospital = 'verifyYourLocationAtHospital'; + static const error = 'error'; + static const ensureWithinHospitalLocation = 'ensureWithinHospitalLocation'; + static const nfcNearFieldCommunication = 'nfcNearFieldCommunication'; + static const scanPhoneViaNFC = 'scanPhoneViaNFC'; + static const qrCode = 'qrCode'; + static const scanQRCodeToCheckIn = 'scanQRCodeToCheckIn'; + static const processingCheckIn = 'processingCheckIn'; + static const bookingWaitingAppointment = 'bookingWaitingAppointment'; + static const enterValidIDorIqama = 'enterValidIDorIqama'; + static const selectAppointment = 'selectAppointment'; + static const rebookSameDoctor = 'rebookSameDoctor'; + static const queueing = 'queueing'; + static const inQueue = 'inQueue'; + static const yourTurn = 'yourTurn'; + static const halaFirstName = 'halaFirstName'; + static const thankYouForPatience = 'thankYouForPatience'; + static const servingNow = 'servingNow'; + static const callForVitalSigns = 'callForVitalSigns'; + static const callForDoctor = 'callForDoctor'; + static const thingsToAskDoctor = 'thingsToAskDoctor'; + static const improveOverallHealth = 'improveOverallHealth'; + static const routineScreenings = 'routineScreenings'; + static const whatIsThisMedicationFor = 'whatIsThisMedicationFor'; + static const sideEffectsToKnow = 'sideEffectsToKnow'; + static const whenFollowUp = 'whenFollowUp'; + static const goToHomepage = 'goToHomepage'; + static const appointmentsList = 'appointmentsList'; + static const allAppt = 'allAppt'; + static const upcoming = 'upcoming'; + static const completed = 'completed'; + static const noAppointmentsYet = 'noAppointmentsYet'; + static const viewProfile = 'viewProfile'; + static const choosePreferredHospitalForService = 'choosePreferredHospitalForService'; + static const noHospitalsFound = 'noHospitalsFound'; + static const cancelOrderConfirmation = 'cancelOrderConfirmation'; + static const orderCancelledSuccessfully = 'orderCancelledSuccessfully'; + static const requestID = 'requestID'; + static const noCMCOrdersYet = 'noCMCOrdersYet'; + static const cmcOrders = 'cmcOrders'; + static const summary = 'summary'; + static const selectedService = 'selectedService'; + static const requestSubmittedSuccessfully = 'requestSubmittedSuccessfully'; + static const hereIsYourRequestNumber = 'hereIsYourRequestNumber'; + static const pleaseSelectHospitalToContinue = 'pleaseSelectHospitalToContinue'; + static const confirmSubmitRequest = 'confirmSubmitRequest'; + static const pendingOrderWait = 'pendingOrderWait'; + static const noServicesAvailable = 'noServicesAvailable'; + static const selectAService = 'selectAService'; + static const comprehensiveCheckup = 'comprehensiveCheckup'; + static const viewNearestHMGLocations = 'viewNearestHMGLocations'; + static const provideFeedbackOnServices = 'provideFeedbackOnServices'; + static const liveChatWithHMG = 'liveChatWithHMG'; + static const send = 'send'; + static const status = 'status'; + static const sendingFeedback = 'sendingFeedback'; + static const selectFeedbackType = 'selectFeedbackType'; + static const loadingAppointmentsList = 'loadingAppointmentsList'; + static const noAppointmentsForFeedback = 'noAppointmentsForFeedback'; + static const selectedAppointment = 'selectedAppointment'; + static const subject = 'subject'; + static const enterSubjectHere = 'enterSubjectHere'; + static const message = 'message'; + static const enterMessageHere = 'enterMessageHere'; + static const filesSelected = 'filesSelected'; + static const otherDetails = 'otherDetails'; + static const medicalReport = 'medicalReport'; + static const medicalReportNumber = 'medicalReportNumber'; + static const patientIsInsured = 'patientIsInsured'; + static const insuranceDocument = 'insuranceDocument'; + static const selectBranch = 'selectBranch'; + static const patientInformation = 'patientInformation'; + static const patientLocation = 'patientLocation'; + static const identificationNumber = 'identificationNumber'; + static const enterIdentificationNumber = 'enterIdentificationNumber'; + static const patientName = 'patientName'; + static const referralRequesterInformation = 'referralRequesterInformation'; + static const enterReferralRequesterName = 'enterReferralRequesterName'; + static const requesterName = 'requesterName'; + static const relationship = 'relationship'; + static const selectRelation = 'selectRelation'; + static const otherName = 'otherName'; + static const otherNameHint = 'otherNameHint'; + static const requesterNameRequired = 'requesterNameRequired'; + static const selectRelationshipRequired = 'selectRelationshipRequired'; + static const otherRelationshipNameRequired = 'otherRelationshipNameRequired'; + static const identificationNumberRequired = 'identificationNumberRequired'; + static const patientNameRequired = 'patientNameRequired'; + static const enterPatientPhoneRequired = 'enterPatientPhoneRequired'; + static const selectPatientCityRequired = 'selectPatientCityRequired'; + static const medicalReportRequired = 'medicalReportRequired'; + static const selectBranchRequired = 'selectBranchRequired'; + static const insuranceDocumentRequired = 'insuranceDocumentRequired'; + static const searchResult = 'searchResult'; + static const referralNo = 'referralNo'; + static const eReferral = 'eReferral'; + static const referralCreatedSuccessfully = 'referralCreatedSuccessfully'; + static const hereIsYourReferralNumber = 'hereIsYourReferralNumber'; + static const searchEReferral = 'searchEReferral'; + static const enterRequiredInfoToSearch = 'enterRequiredInfoToSearch'; + static const selectPickupDirection = 'selectPickupDirection'; + static const selectDirection = 'selectDirection'; + static const toHospital = 'toHospital'; + static const fromHospital = 'fromHospital'; + static const selectWay = 'selectWay'; + static const oneWay = 'oneWay'; + static const twoWay = 'twoWay'; + static const selectPickupDetails = 'selectPickupDetails'; + static const pleaseSelectDetailsOfPickup = 'pleaseSelectDetailsOfPickup'; + static const selectDetails = 'selectDetails'; + static const work = 'work'; + static const pick = 'pick'; + static const insideTheHome = 'insideTheHome'; + static const haveAnyAppointment = 'haveAnyAppointment'; + static const amountPaidAtHospital = 'amountPaidAtHospital'; + static const submitRequest = 'submitRequest'; + static const enterPickupLocationManually = 'enterPickupLocationManually'; + static const enterPickupLocation = 'enterPickupLocation'; + static const trackingDetails = 'trackingDetails'; + static const cancelRequest = 'cancelRequest'; + static const shareLocationWhatsapp = 'shareLocationWhatsapp'; + static const pleaseWaitForCall = 'pleaseWaitForCall'; + static const toHospitalLower = 'toHospitalLower'; + static const contact = 'contact'; + static const failed = 'failed'; + static const confirmationCall = 'confirmationCall'; + static const pickupFromHome = 'pickupFromHome'; + static const onTheWayToHospital = 'onTheWayToHospital'; + static const arrivedAtHospital = 'arrivedAtHospital'; + static const orderCancel = 'orderCancel'; + static const emergencyCheckIn = 'emergencyCheckIn'; + static const erOnlineCheckInDescription = 'erOnlineCheckInDescription'; + static const erOnlineCheckInSuccess = 'erOnlineCheckInSuccess'; + static const erOnlineCheckInError = 'erOnlineCheckInError'; + static const fetchingHospitalsList = 'fetchingHospitalsList'; + static const fetchingPaymentInformation = 'fetchingPaymentInformation'; + static const erVisitDetails = 'erVisitDetails'; + static const erClinic = 'erClinic'; + static const vatWithAmount = 'vatWithAmount'; + static const erAppointmentBookedSuccess = 'erAppointmentBookedSuccess'; + static const underProcessing = 'underProcessing'; + static const canceledByPatient = 'canceledByPatient'; + static const rapidResponseTeam = 'rapidResponseTeam'; + static const allFacilities = 'allFacilities'; + static const selectLocation = 'selectLocation'; + static const pleaseSelectTheLocation = 'pleaseSelectTheLocation'; + static const viewLocationGoogleMaps = 'viewLocationGoogleMaps'; + static const callAmbulance = 'callAmbulance'; + static const requestAmbulanceInEmergency = 'requestAmbulanceInEmergency'; + static const confirmation = 'confirmation'; + static const areYouSureYouWantToCallAmbulance = 'areYouSureYouWantToCallAmbulance'; + static const getDetailsOfNearestBranch = 'getDetailsOfNearestBranch'; + static const areYouSureYouWantToCallRRT = 'areYouSureYouWantToCallRRT'; + static const priorERCheckInToSkipLine = 'priorERCheckInToSkipLine'; + static const areYouSureYouWantToMakeERCheckIn = 'areYouSureYouWantToMakeERCheckIn'; + static const checkingYourERAppointmentStatus = 'checkingYourERAppointmentStatus'; + static const transportOptions = 'transportOptions'; + static const selectHospitalForAdvancePayment = 'selectHospitalForAdvancePayment'; + static const recharge = 'recharge'; + static const withdraw = 'withdraw'; + static const activityLevel = 'activityLevel'; + static const selectActivityLevel = 'selectActivityLevel'; + static const almostInactive = 'almostInactive'; + static const lightlyActive = 'lightlyActive'; + static const lightlyActive13Days = 'lightlyActive13Days'; + static const superActive = 'superActive'; + static const caloriesPerDay = 'caloriesPerDay'; + static const dietType = 'dietType'; + static const selectDietType = 'selectDietType'; + static const bodyFrameSize = 'bodyFrameSize'; + static const selectBodyFrameSize = 'selectBodyFrameSize'; + static const bodyFrameSmall = 'bodyFrameSmall'; + static const bodyFrameMedium = 'bodyFrameMedium'; + static const bodyFrameLarge = 'bodyFrameLarge'; + static const averageCycleLength = 'averageCycleLength'; + static const averageLutealPhase = 'averageLutealPhase'; + static const convert = 'convert'; + static const calculate = 'calculate'; + static const healthCalculators = 'healthCalculators'; + static const healthConverters = 'healthConverters'; + static const generalHealth = 'generalHealth'; + static const relatedToBMICalories = 'relatedToBMICalories'; + static const selectCalculator = 'selectCalculator'; + static const womensHealth = 'womensHealth'; + static const relatedToPeriodsOvulation = 'relatedToPeriodsOvulation'; + static const bloodSugar = 'bloodSugar'; + static const trackYourGlucoseLevels = 'trackYourGlucoseLevels'; + static const bloodCholesterol = 'bloodCholesterol'; + static const monitorCholesterolLevels = 'monitorCholesterolLevels'; + static const triglyceridesFatBlood = 'triglyceridesFatBlood'; + static const understandTriglyceridesImpact = 'understandTriglyceridesImpact'; + static const bmiCalculator = 'bmiCalculator'; + static const caloriesCalculator = 'caloriesCalculator'; + static const bmrCalculator = 'bmrCalculator'; + static const idealBodyWeight = 'idealBodyWeight'; + static const bodyFatCalculator = 'bodyFatCalculator'; + static const carbsProteinFat = 'carbsProteinFat'; + static const ovulationPeriod = 'ovulationPeriod'; + static const deliveryDueDate = 'deliveryDueDate'; + static const bmiCalculatorDesc = 'bmiCalculatorDesc'; + static const caloriesCalculatorDesc = 'caloriesCalculatorDesc'; + static const bmrCalculatorDesc = 'bmrCalculatorDesc'; + static const idealBodyWeightDesc = 'idealBodyWeightDesc'; + static const bodyFatCalculatorDesc = 'bodyFatCalculatorDesc'; + static const carbsProteinFatDesc = 'carbsProteinFatDesc'; + static const ovulationPeriodDesc = 'ovulationPeriodDesc'; + static const deliveryDueDateDesc = 'deliveryDueDateDesc'; + static const low = 'low'; + static const preDiabetic = 'preDiabetic'; + static const high = 'high'; + static const elevated = 'elevated'; + static const recorded = 'recorded'; + static const noRecordsYet = 'noRecordsYet'; + static const lastRecord = 'lastRecord'; + static const addBloodSugar = 'addBloodSugar'; + static const addBloodPressure = 'addBloodPressure'; + static const addWeight = 'addWeight'; + static const bloodSugarDataSavedSuccessfully = 'bloodSugarDataSavedSuccessfully'; + static const bloodPressureDataSavedSuccessfully = 'bloodPressureDataSavedSuccessfully'; + static const weightDataSavedSuccessfully = 'weightDataSavedSuccessfully'; + static const pleaseWait = 'pleaseWait'; + static const selectUnit = 'selectUnit'; + static const selectMeasureTime = 'selectMeasureTime'; + static const selectArm = 'selectArm'; + static const enterBloodSugar = 'enterBloodSugar'; + static const enterSystolicValue = 'enterSystolicValue'; + static const enterDiastolicValue = 'enterDiastolicValue'; + static const enterWeight = 'enterWeight'; + static const selectDuration = 'selectDuration'; + static const systolic = 'systolic'; + static const diastolic = 'diastolic'; + static const sendReportByEmail = 'sendReportByEmail'; + static const enterYourEmailToReceiveReport = 'enterYourEmailToReceiveReport'; + static const addNewRecord = 'addNewRecord'; + static const healthTrackers = 'healthTrackers'; + static const monitorBloodPressureLevels = 'monitorBloodPressureLevels'; + static const trackWeightProgress = 'trackWeightProgress'; + static const bookAppointment = 'bookAppointment'; + static const completeCheckup = 'completeCheckup'; + static const indoorNavigation = 'indoorNavigation'; + static const eReferralServices = 'eReferralServices'; + static const dailyWaterMonitor = 'dailyWaterMonitor'; + static const fetchingYourWaterIntakeDetails = 'fetchingYourWaterIntakeDetails'; + static const healthCalculatorsServices = 'healthCalculatorsServices'; + static const healthConvertersServices = 'healthConvertersServices'; + static const smartWatchesServices = 'smartWatchesServices'; + static const exploreServices = 'exploreServices'; + static const medicalAndCareServices = 'medicalAndCareServices'; + static const hmgServices = 'hmgServices'; + static const personalServices = 'personalServices'; + static const habibWallet = 'habibWallet'; + static const habibWallet2 = 'habibWallet2'; + static const loginToViewWalletBalance = 'loginToViewWalletBalance'; + static const loginToViewMedicalFile = 'loginToViewMedicalFile'; + static const addMember = 'addMember'; + static const addFamilyMember = 'addFamilyMember'; + static const pleaseFillBelowFieldToAddNewFamilyMember = 'pleaseFillBelowFieldToAddNewFamilyMember'; + static const healthTools = 'healthTools'; + static const supportServices = 'supportServices'; + static const virtualTour = 'virtualTour'; + static const carParking = 'carParking'; + static const latestNews = 'latestNews'; + static const hmgContact = 'hmgContact'; + static const durationCannotExceed90 = 'durationCannotExceed90'; + static const unexpectedError = 'unexpectedError'; + static const gettingAmbulanceTransportOption = 'gettingAmbulanceTransportOption'; + static const fetchingAppointment = 'fetchingAppointment'; + static const doYouWantToCancelTheRequest = 'doYouWantToCancelTheRequest'; + static const cancellingRequest = 'cancellingRequest'; + static const fetchingTermsAndConditions = 'fetchingTermsAndConditions'; + static const selectLocationPrescriptionDelivery = 'selectLocationPrescriptionDelivery'; + static const noRadiologyOrders = 'noRadiologyOrders'; + static const ageIsRequired = 'ageIsRequired'; + static const invalidAge = 'invalidAge'; + static const ageMustBeBetween11And120 = 'ageMustBeBetween11And120'; + static const heightIsRequired = 'heightIsRequired'; + static const invalidHeight = 'invalidHeight'; + static const weightIsRequired = 'weightIsRequired'; + static const invalidWeight = 'invalidWeight'; + static const timeToDrinkWater = 'timeToDrinkWater'; + static const stayHydratedDrinkWater = 'stayHydratedDrinkWater'; + static const visitPharmacyOnline = 'visitPharmacyOnline'; + static const howAreYouFeelingToday = 'howAreYouFeelingToday'; + static const checkYourSymptomsWithScale = 'checkYourSymptomsWithScale'; + static const checkYourSymptoms = 'checkYourSymptoms'; + static const noUpcomingAppointmentPleaseBook = 'noUpcomingAppointmentPleaseBook'; + static const youHaveEROnlineCheckInRequest = 'youHaveEROnlineCheckInRequest'; + static const quickLinks = 'quickLinks'; + static const viewMedicalFileLandingPage = 'viewMedicalFileLandingPage'; + static const immediateLiveCareRequest = 'immediateLiveCareRequest'; + static const yourTurnIsAfterPatients = 'yourTurnIsAfterPatients'; + static const dontHaveHHCOrders = 'dontHaveHHCOrders'; + static const hhcOrders = 'hhcOrders'; + static const requestedServices = 'requestedServices'; + static const selectServices = 'selectServices'; + static const selectedServices = 'selectedServices'; + static const createNewRequest = 'createNewRequest'; + static const youHaveNoPendingRequests = 'youHaveNoPendingRequests'; + static const noInsuranceDataFound = 'noInsuranceDataFound'; + static const noInsuranceUpdateRequest = 'noInsuranceUpdateRequest'; + static const policyNumberInsurancePage = 'policyNumberInsurancePage'; + static const insuranceExpired = 'insuranceExpired'; + static const insuranceActive = 'insuranceActive'; + static const patientCardID = 'patientCardID'; + static const noInsuranceApprovals = 'noInsuranceApprovals'; + static const noInsuranceWithHMG = 'noInsuranceWithHMG'; + static const referenceRange = 'referenceRange'; + static const downloadReport = 'downloadReport'; + static const generatingReport = 'generatingReport'; + static const noLabResults = 'noLabResults'; + static const labResultDetails = 'labResultDetails'; + static const resultOf = 'resultOf'; + static const whatIsThisResult = 'whatIsThisResult'; + static const lastTested = 'lastTested'; + static const byVisit = 'byVisit'; + static const byTest = 'byTest'; + static const results = 'results'; + static const viewResults = 'viewResults'; + static const rebook = 'rebook'; + static const noOphthalmologyAppointments = 'noOphthalmologyAppointments'; + static const noVitalSignsRecordedYet = 'noVitalSignsRecordedYet'; + static const appointmentsAndVisits = 'appointmentsAndVisits'; + static const labAndRadiology = 'labAndRadiology'; + static const activeMedicationsAndPrescriptions = 'activeMedicationsAndPrescriptions'; + static const allPrescriptions = 'allPrescriptions'; + static const allMedications = 'allMedications'; + static const youDontHaveAnyPrescriptionsYet = 'youDontHaveAnyPrescriptionsYet'; + static const youDontHaveAnyCompletedVisitsYet = 'youDontHaveAnyCompletedVisitsYet'; + static const others = 'others'; + static const allergyInfo = 'allergyInfo'; + static const vaccineInfo = 'vaccineInfo'; + static const updateInsuranceInfo = 'updateInsuranceInfo'; + static const myInvoicesList = 'myInvoicesList'; + static const ancillaryOrdersList = 'ancillaryOrdersList'; + static const youDontHaveAnySickLeavesYet = 'youDontHaveAnySickLeavesYet'; + static const medicalReports = 'medicalReports'; + static const sickLeaveReport = 'sickLeaveReport'; + static const weightTracker = 'weightTracker'; + static const askYourDoctor = 'askYourDoctor'; + static const internetPairing = 'internetPairing'; + static const requested = 'requested'; + static const readyToDownload = 'readyToDownload'; + static const youDontHaveAnyMedicalReportsYet = 'youDontHaveAnyMedicalReportsYet'; + static const requestMedicalReport = 'requestMedicalReport'; + static const youDoNotHaveAnyAppointmentsToRequestMedicalReport = 'youDoNotHaveAnyAppointmentsToRequestMedicalReport'; + static const areYouSureYouWantToRequestMedicalReport = 'areYouSureYouWantToRequestMedicalReport'; + static const yourMedicalReportRequestSubmittedSuccessfully = 'yourMedicalReportRequestSubmittedSuccessfully'; + static const monthlyHealthSummaryReportDisclaimer = 'monthlyHealthSummaryReportDisclaimer'; + static const updatingMonthlyReportStatus = 'updatingMonthlyReportStatus'; + static const monthlyReportStatusUpdatedSuccessfully = 'monthlyReportStatusUpdatedSuccessfully'; + static const whoCanViewMyMedicalFile = 'whoCanViewMyMedicalFile'; + static const acceptedYourRequestToBeYourFamilyMember = 'acceptedYourRequestToBeYourFamilyMember'; + static const canViewYourFile = 'canViewYourFile'; + static const hasARequestPendingToBeYourFamilyMember = 'hasARequestPendingToBeYourFamilyMember'; + static const wantsToAddYouAsTheirFamilyMember = 'wantsToAddYouAsTheirFamilyMember'; + static const rejectedYourRequestToBeYourFamilyMember = 'rejectedYourRequestToBeYourFamilyMember'; + static const rejectedYourFamilyMemberRequest = 'rejectedYourFamilyMemberRequest'; + static const notAvailable = 'notAvailable'; + static const selectAProfile = 'selectAProfile'; + static const switchFamilyFile = 'switchFamilyFile'; + static const medicalFiles = 'medicalFiles'; + static const addANewFamilyMember = 'addANewFamilyMember'; + static const viewInvoiceDetails = 'viewInvoiceDetails'; + static const outPatient = 'outPatient'; + static const invoiceDetails = 'invoiceDetails'; + static const sendingEmailPleaseWait = 'sendingEmailPleaseWait'; + static const emailSentSuccessfullyMessage = 'emailSentSuccessfullyMessage'; + static const discount = 'discount'; + static const paid = 'paid'; + static const fetchingInvoiceDetails = 'fetchingInvoiceDetails'; + static const scanQRCode = 'scanQRCode'; + static const parkingSlotDetails = 'parkingSlotDetails'; + static const slotNumber = 'slotNumber'; + static const basement = 'basement'; + static const parkingDate = 'parkingDate'; + static const parkedSince = 'parkedSince'; + static const resetDirection = 'resetDirection'; + static const noPrescriptionOrdersYet = 'noPrescriptionOrdersYet'; + static const fetchingPrescriptionPDFPleaseWait = 'fetchingPrescriptionPDFPleaseWait'; + static const ratingValue = 'ratingValue'; + static const downloadPrescription = 'downloadPrescription'; + static const fetchingPrescriptionDetails = 'fetchingPrescriptionDetails'; + static const switchBackFamilyFile = 'switchBackFamilyFile'; + static const profileAndSettings = 'profileAndSettings'; + static const quickActions = 'quickActions'; + static const notificationsSettings = 'notificationsSettings'; + static const touchIDFaceIDServices = 'touchIDFaceIDServices'; + static const personalInformation = 'personalInformation'; + static const updateEmailAddress = 'updateEmailAddress'; + static const helpAndSupport = 'helpAndSupport'; + static const permissionsProfile = 'permissionsProfile'; + static const privacyPolicy = 'privacyPolicy'; + static const deactivateAccount = 'deactivateAccount'; + static const ageYearsOld = 'ageYearsOld'; + static const youDontHaveRadiologyOrders = 'youDontHaveRadiologyOrders'; + static const radiologyResult = 'radiologyResult'; + static const viewRadiologyImage = 'viewRadiologyImage'; + static const rateClinic = 'rateClinic'; + static const back = 'back'; + static const rateDoctor = 'rateDoctor'; + static const howWasYourLastVisitWithDoctor = 'howWasYourLastVisitWithDoctor'; + static const dateOfBirthSymptoms = 'dateOfBirthSymptoms'; + static const genderSymptoms = 'genderSymptoms'; + static const heightSymptoms = 'heightSymptoms'; + static const weightSymptoms = 'weightSymptoms'; + static const femaleGender = 'femaleGender'; + static const previous = 'previous'; + static const selectedOrgans = 'selectedOrgans'; + static const noOrgansSelected = 'noOrgansSelected'; + static const organSelector = 'organSelector'; + static const noPredictionsAvailable = 'noPredictionsAvailable'; + static const areYouSureYouWantToRestartOrganSelection = 'areYouSureYouWantToRestartOrganSelection'; + static const possibleConditions = 'possibleConditions'; + static const pleaseSelectAtLeastOneRiskBeforeProceeding = 'pleaseSelectAtLeastOneRiskBeforeProceeding'; + static const aboveYouSeeCommonRiskFactors = 'aboveYouSeeCommonRiskFactors'; + static const readMore = 'readMore'; + static const riskFactors = 'riskFactors'; + static const noRiskFactorsFound = 'noRiskFactorsFound'; + static const basedOnYourSelectedSymptomsNoRiskFactors = 'basedOnYourSelectedSymptomsNoRiskFactors'; + static const messageNotification = 'messageNotification'; + static const attachedImage = 'attachedImage'; + static const failedToLoadImage = 'failedToLoadImage'; + static const typeNotification = 'typeNotification'; + static const pleaseSelectAtLeastOneOptionBeforeProceeding = 'pleaseSelectAtLeastOneOptionBeforeProceeding'; + static const suggestions = 'suggestions'; + static const pleaseGoBackAndSelectOrgansFirst = 'pleaseGoBackAndSelectOrgansFirst'; + static const symptomsSelector = 'symptomsSelector'; + static const possibleSymptomsRelatedTo = 'possibleSymptomsRelatedTo'; + static const suggestionAIListDescription = 'suggestionAIListDescription'; + static const analyzing = 'analyzing'; + static const seekMedicalAdvice = 'seekMedicalAdvice'; + static const monitorDescription = 'monitorDescription'; + static const seekMedicalAdviceDescription = 'seekMedicalAdviceDescription'; + static const emergencyDescription = 'emergencyDescription'; + static const colorScience = 'colorScience'; + static const noNeedToVisitDoctor = 'noNeedToVisitDoctor'; + static const commonSymptom = 'commonSymptom'; + static const notApplicable = 'notApplicable'; + static const emergencyTriage = 'emergencyTriage'; + static const emergencyEvidenceDetected = 'emergencyEvidenceDetected'; + static const noQuestionItemsAvailable = 'noQuestionItemsAvailable'; + static const pleaseAnswerAllQuestionsBeforeProceeding = 'pleaseAnswerAllQuestionsBeforeProceeding'; + static const triage = 'triage'; + static const areYouSureYouWantToExitProgress = 'areYouSureYouWantToExitProgress'; + static const noQuestionAvailable = 'noQuestionAvailable'; + static const possibleSymptom = 'possibleSymptom'; + static const symptomsCheckerFindingScore = 'symptomsCheckerFindingScore'; + static const notSet = 'notSet'; + static const years = 'years'; + static const symptomsChecker = 'symptomsChecker'; + static const helloIsYourInformationUpToDate = 'helloIsYourInformationUpToDate'; + static const noEditAll = 'noEditAll'; + static const yesItIs = 'yesItIs'; + static const age = 'age'; + static const youDontHaveAnyAncillaryOrdersYet = 'youDontHaveAnyAncillaryOrdersYet'; + static const invoiceWithNumber = 'invoiceWithNumber'; + static const queued = 'queued'; + static const checkInReady = 'checkInReady'; + static const checkIn = 'checkIn'; + static const viewDetails = 'viewDetails'; + static const selectPaymentMethod = 'selectPaymentMethod'; + static const processingPaymentPleaseWait = 'processingPaymentPleaseWait'; + static const finalizingPaymentPleaseWait = 'finalizingPaymentPleaseWait'; + static const generatingInvoicePleaseWait = 'generatingInvoicePleaseWait'; + static const hereIsYourInvoiceNumber = 'hereIsYourInvoiceNumber'; + static const paymentCompletedSuccessfully = 'paymentCompletedSuccessfully'; + static const failedToInitializeApplePay = 'failedToInitializeApplePay'; + static const cash = 'cash'; + static const approved = 'approved'; + static const approvalRejectedPleaseVisitReceptionist = 'approvalRejectedPleaseVisitReceptionist'; + static const sentForApproval = 'sentForApproval'; + static const ancillaryOrderDetails = 'ancillaryOrderDetails'; + static const noProceduresAvailableForSelectedOrder = 'noProceduresAvailableForSelectedOrder'; + static const procedures = 'procedures'; + static const totalAmount = 'totalAmount'; + static const covered = 'covered'; + static const vatPercent = 'vatPercent'; + static const proceedToPayment = 'proceedToPayment'; + static const supportedSmartWatches = 'supportedSmartWatches'; + static const pleaseMakeSureSamsungWatchConnected = 'pleaseMakeSureSamsungWatchConnected'; + static const beforeSyncingDataFollowInstructions = 'beforeSyncingDataFollowInstructions'; + static const viewWatchInstructions = 'viewWatchInstructions'; + static const healthConnectAppNotInstalled = 'healthConnectAppNotInstalled'; + static const setTimerOfReminder = 'setTimerOfReminder'; + static const youHaveAppointmentWithDr = 'youHaveAppointmentWithDr'; + static const hours = 'hours'; + static const minutes = 'minutes'; + static const seconds = 'seconds'; + static const secs = 'secs'; + static const noAllergiesDataFound = 'noAllergiesDataFound'; + static const heartRateDescription = 'heartRateDescription'; + static const bloodOxygenDescription = 'bloodOxygenDescription'; + static const stepsDescription = 'stepsDescription'; + static const caloriesDescription = 'caloriesDescription'; + static const distanceDescription = 'distanceDescription'; + static const overview = 'overview'; + static const details = 'details'; + static const details2 = 'details2'; + static const healthy = 'healthy'; + static const warning = 'warning'; + static const vitalSignDetails = 'vitalSignDetails'; + static const resultOfNoDate = 'resultOfNoDate'; + static const referenceRangeBetween = 'referenceRangeBetween'; + static const referenceRangeMin = 'referenceRangeMin'; + static const referenceRangeMax = 'referenceRangeMax'; + static const noHistoryAvailable = 'noHistoryAvailable'; + static const bmiDescription = 'bmiDescription'; + static const heightDescription = 'heightDescription'; + static const weightDescription = 'weightDescription'; + static const bloodPressureDescription = 'bloodPressureDescription'; + static const temperatureDescription = 'temperatureDescription'; + static const heartRateDescriptionVital = 'heartRateDescriptionVital'; + static const respiratoryRateDescription = 'respiratoryRateDescription'; + static const bmiAdvice = 'bmiAdvice'; + static const heightAdvice = 'heightAdvice'; + static const weightAdvice = 'weightAdvice'; + static const bloodPressureAdvice = 'bloodPressureAdvice'; + static const temperatureAdvice = 'temperatureAdvice'; + static const heartRateAdvice = 'heartRateAdvice'; + static const respiratoryRateAdvice = 'respiratoryRateAdvice'; + static const whatShouldIDoNext = 'whatShouldIDoNext'; + static const customizeDrinkCup = 'customizeDrinkCup'; + static const tipsToStayHydrated = 'tipsToStayHydrated'; + static const drinkBeforeYouFeelThirsty = 'drinkBeforeYouFeelThirsty'; + static const keepRefillableBottleNextToYou = 'keepRefillableBottleNextToYou'; + static const trackYourDailyIntakeToStayMotivated = 'trackYourDailyIntakeToStayMotivated'; + static const chooseSparklingWaterInsteadOfSoda = 'chooseSparklingWaterInsteadOfSoda'; + static const switchCup = 'switchCup'; + static const plainWater = 'plainWater'; + static const yourGoal = 'yourGoal'; + static const remaining = 'remaining'; + static const hydrationStatus = 'hydrationStatus'; + static const areYouSureYouWantToCancelAllWaterReminders = 'areYouSureYouWantToCancelAllWaterReminders'; + static const remindersSet = 'remindersSet'; + static const dailyWaterRemindersScheduledAt = 'dailyWaterRemindersScheduledAt'; + static const waterConsumption = 'waterConsumption'; + static const selectNumberOfReminders = 'selectNumberOfReminders'; + static const h2oSettings = 'h2oSettings'; + static const settingsSavedSuccessfully = 'settingsSavedSuccessfully'; + static const yourName = 'yourName'; + static const ageYears = 'ageYears'; + static const numberOfRemindersInADay = 'numberOfRemindersInADay'; + static const medications = 'medications'; + static const someRemarksAboutPrescription = 'someRemarksAboutPrescription'; + static const notifyMeBeforeConsumptionTime = 'notifyMeBeforeConsumptionTime'; + static const noMedicationsToday = 'noMedicationsToday'; + static const reminders = 'reminders'; + static const reminderAddedToCalendar = 'reminderAddedToCalendar'; + static const errorWhileSettingCalendar = 'errorWhileSettingCalendar'; + static const instructions = 'instructions'; + static const requests = 'requests'; + static const thisWeek = 'thisWeek'; + static const lastMonth = 'lastMonth'; + static const lastSixMonths = 'lastSixMonths'; + static const selectTime = 'selectTime'; + static const pleaseWaitYouWillBeCalledForVitalSigns = 'pleaseWaitYouWillBeCalledForVitalSigns'; + static const pleaseVisitRoomForVitalSigns = 'pleaseVisitRoomForVitalSigns'; + static const pleaseVisitRoomToTheDoctor = 'pleaseVisitRoomToTheDoctor'; + static const erOnlineCheckInRequest = 'erOnlineCheckInRequest'; + static const indoor = 'indoor'; + static const thehospital = 'thehospital'; + static const health = 'health'; + static const calculators = 'calculators'; + static const converters = 'converters'; + static const guide = 'guide'; + static const liveCareServiceDesc = 'liveCareServiceDesc'; + static const bloodGroup = 'bloodGroup'; + static const medicalServices = 'medicalServices'; + static const insuranceAndPayments = 'insuranceAndPayments'; + static const trackerAndOthers = 'trackerAndOthers'; + static const bmi = 'bmi'; + static const yesPleaseINeedHelp = 'yesPleaseINeedHelp'; + static const aiOverView = 'aiOverView'; + static const generateAiAnalysis = 'generateAiAnalysis'; + static const aiAnalysis = 'aiAnalysis'; + static const prediction = 'prediction'; + static const prevention = 'prevention'; + static const disclaimer = 'disclaimer'; + static const thisAboveInfo = 'thisAboveInfo'; + static const aiDisclaimer = 'aiDisclaimer'; + static const consent = 'consent'; + static const bmiNormalDescription = 'bmiNormalDescription'; + static const bmiUnderweightDescription = 'bmiUnderweightDescription'; + static const bmiOverweightDescription = 'bmiOverweightDescription'; + static const caloriesMaintenanceDescription = 'caloriesMaintenanceDescription'; + static const caloriesModerateDeficitDescription = 'caloriesModerateDeficitDescription'; + static const caloriesAggressiveDeficitDescription = 'caloriesAggressiveDeficitDescription'; + static const bodyFatEssentialDescription = 'bodyFatEssentialDescription'; + static const bodyFatFitnessDescription = 'bodyFatFitnessDescription'; + static const bodyFatAverageDescription = 'bodyFatAverageDescription'; + static const bodyFatObeseDescription = 'bodyFatObeseDescription'; + static const bmrNormalDescription = 'bmrNormalDescription'; + static const bmrLowDescription = 'bmrLowDescription'; + static const bmrHighDescription = 'bmrHighDescription'; + static const ibwAtTargetDescription = 'ibwAtTargetDescription'; + static const ibwBelowTargetDescription = 'ibwBelowTargetDescription'; + static const ibwAboveTargetDescription = 'ibwAboveTargetDescription'; + static const ibwCloseToRangeDescription = 'ibwCloseToRangeDescription'; + static const ibwUnderweightDescription = 'ibwUnderweightDescription'; + static const ibwUnderweightGenericDescription = 'ibwUnderweightGenericDescription'; + static const ibwOverweightDescription = 'ibwOverweightDescription'; + static const ibwOverweightGenericDescription = 'ibwOverweightGenericDescription'; + static const dietVeryLowCarbsDescription = 'dietVeryLowCarbsDescription'; + static const dietLowCarbsDescription = 'dietLowCarbsDescription'; + static const dietModerateCarbsDescription = 'dietModerateCarbsDescription'; + static const dietUSDAGuidelinesDescription = 'dietUSDAGuidelinesDescription'; + static const dietZoneDietDescription = 'dietZoneDietDescription'; + static const contextDependent = 'contextDependent'; + static const calculatedValue = 'calculatedValue'; + static const calculationFormula = 'calculationFormula'; + static const confirmYourLocation = 'confirmYourLocation'; + static const confirmYourLocationDesc = 'confirmYourLocationDesc'; + static const insideHospital = 'insideHospital'; + static const outsideHospital = 'outsideHospital'; + static const servicePriceList = 'servicePriceList'; + static const servicePriceListDesc = 'servicePriceListDesc'; + static const servicePriceListRights = 'servicePriceListRights'; + static const serviceName = 'serviceName'; + static const noFreeSlot = 'noFreeSlot'; + static const noThanksIKnowTheClinic = 'noThanksIKnowTheClinic'; + static const unableToSendOTP = 'unableToSendOTP'; + static const loadingAIAnalysis = 'loadingAIAnalysis'; + static const symptoms = 'symptoms'; + static const insuranceInActive = 'insuranceInActive'; + static const insuranceInActiveContactSupport = 'insuranceInActiveContactSupport'; + static const updateAppNow = 'updateAppNow'; + static const Dr = 'Dr'; + static const reschedulingAppo = 'reschedulingAppo'; + static const invalidEligibility = 'invalidEligibility'; + static const invalidInsurance = 'invalidInsurance'; + static const continueCash = 'continueCash'; + static const applewatch = 'applewatch'; + static const applehealthapplicationshouldbeinstalledinyourphone = 'applehealthapplicationshouldbeinstalledinyourphone'; + static const unabletodetectapplicationinstalledpleasecomebackonceinstalled = 'unabletodetectapplicationinstalledpleasecomebackonceinstalled'; + static const applewatchshouldbeconnected = 'applewatchshouldbeconnected'; + static const samsungwatch = 'samsungwatch'; + static const samsunghealthapplicationshouldbeinstalledinyourphone = 'samsunghealthapplicationshouldbeinstalledinyourphone'; + static const samsungwatchshouldbeconnected = 'samsungwatchshouldbeconnected'; + static const huaweiwatch = 'huaweiwatch'; + static const huaweihealthapplicationshouldbeinstalledinyourphone = 'huaweihealthapplicationshouldbeinstalledinyourphone'; + static const huaweiwatchshouldbeconnected = 'huaweiwatchshouldbeconnected'; + static const whoopwatch = 'whoopwatch'; + static const whoophealthapplicationshouldbeinstalledinyourphone = 'whoophealthapplicationshouldbeinstalledinyourphone'; + static const whoopwatchshouldbeconnected = 'whoopwatchshouldbeconnected'; + static const updatetheinformation = 'updatetheinformation'; + static const timeFor = 'timeFor'; + static const hmgPolicies = 'hmgPolicies'; + static const darkMode = 'darkMode'; + static const featureComingSoonDescription = 'featureComingSoonDescription'; + static const generateAiAnalysisResult = 'generateAiAnalysisResult'; + static const ratings = 'ratings'; + static const hmgPharmacyText = 'hmgPharmacyText'; + static const insuranceRequestSubmittedSuccessfully = 'insuranceRequestSubmittedSuccessfully'; + static const updatingEmailAddress = 'updatingEmailAddress'; + static const verifyInsurance = 'verifyInsurance'; + static const tests = 'tests'; + static const calendarPermissionAlert = 'calendarPermissionAlert'; + static const sortByNearestLocation = 'sortByNearestLocation'; + static const giveLocationPermissionForNearestList = 'giveLocationPermissionForNearestList'; + static const sortByLocation = 'sortByLocation'; + static const timeForFirstReminder = 'timeForFirstReminder'; + static const reminderRemovalNote = 'reminderRemovalNote'; + static const prescriptionDatePassedError = 'prescriptionDatePassedError'; + static const communicationLanguage = 'communicationLanguage'; + static const cmcServiceHeader = 'cmcServiceHeader'; + static const cmcServiceDescription = 'cmcServiceDescription'; + static const eReferralServiceHeader = 'eReferralServiceHeader'; + static const eReferralServiceDescription = 'eReferralServiceDescription'; + static const bloodDonationServiceHeader = 'bloodDonationServiceHeader'; + static const bloodDonationServiceDescription = 'bloodDonationServiceDescription'; + static const healthTrackersServiceHeader = 'healthTrackersServiceHeader'; + static const healthTrackersServiceDescription = 'healthTrackersServiceDescription'; + static const waterConsumptionServiceHeader = 'waterConsumptionServiceHeader'; + static const waterConsumptionServiceDescription = 'waterConsumptionServiceDescription'; + static const smartWatchServiceHeader = 'smartWatchServiceHeader'; + static const smartWatchServiceDescription = 'smartWatchServiceDescription'; + static const liveChatServiceHeader = 'liveChatServiceHeader'; + static const liveChatServiceDescription = 'liveChatServiceDescription'; + static const emergencyServiceHeader = 'emergencyServiceHeader'; + static const emergencyServiceDescription = 'emergencyServiceDescription'; + static const homeHealthCareServiceHeader = 'homeHealthCareServiceHeader'; + static const homeHealthCareServiceDescription = 'homeHealthCareServiceDescription'; + static const profileOnlyText = 'profileOnlyText'; + static const information = 'information'; + static const noFavouriteDoctors = 'noFavouriteDoctors'; + static const addDoctors = 'addDoctors'; + static const favouriteList = 'favouriteList'; + static const later = 'later'; + static const cancelAppointmentConfirmMessage = 'cancelAppointmentConfirmMessage'; + static const acknowledged = 'acknowledged'; + static const searchLabResults = 'searchLabResults'; + static const callForAssistance = 'callForAssistance'; + static const oneWaySubtitle = 'oneWaySubtitle'; + static const twoWaySubtitle = 'twoWaySubtitle'; + static const toHospitalSubtitle = 'toHospitalSubtitle'; + static const fromHospitalSubtitle = 'fromHospitalSubtitle'; + static const clinicSchedule = 'clinicSchedule'; + static const doctorAddedToFavourite = 'doctorAddedToFavourite'; + static const doctorRemovedFromFavourite = 'doctorRemovedFromFavourite'; + static const addNewFavorite = 'addNewFavorite'; + static const favourites = 'favourites'; + static const pendingAncillaryOrders = 'pendingAncillaryOrders'; + static const liveCarePermissions = 'liveCarePermissions'; + static const containsImage = 'containsImage'; + static const servicesSelected = 'servicesSelected'; + static const selectMedicalFileFromFamily = 'selectMedicalFileFromFamily'; + static const anyFileFromHMG = 'anyFileFromHMG'; + static const noDistance = 'noDistance'; + static const enterAmount = 'enterAmount'; + static const selectHospitalContinue = 'selectHospitalContinue'; + static const year = 'year'; + static const notifyPrescription = 'notifyPrescription'; + static const doctorRatingAppointment = 'doctorRatingAppointment'; + static const ratingSubmitted = 'ratingSubmitted'; + static const rateTheDoctor = 'rateTheDoctor'; + static const downloadInvoice = 'downloadInvoice'; + static const approvalDetails = 'approvalDetails'; + static const obese = 'obese'; + static const overWeight = 'overWeight'; + static const underWeight = 'underWeight'; + static const nearestGate = 'nearestGate'; + static const RRTDDetails = 'RRTDDetails'; + static const normalMapType = 'normalMapType'; + static const satelliteMapType = 'satelliteMapType'; + static const terrainMapType = 'terrainMapType'; + static const hybridMapType = 'hybridMapType'; + static const openCamera = 'openCamera'; + static const openGallery = 'openGallery'; + static const openFiles = 'openFiles'; + static const generateAiAnalysisRadResult = 'generateAiAnalysisRadResult'; + static const grantLocationPermission = 'grantLocationPermission'; + static const NoBookedAppointments = 'NoBookedAppointments'; + static const aiDisclaimerRad = 'aiDisclaimerRad'; + static const imageSizeTooLarge = 'imageSizeTooLarge'; + static const profileImageUpdatedSuccessfully = 'profileImageUpdatedSuccessfully'; + static const failedToProcessImage = 'failedToProcessImage'; + static const cameraGalleryPermissionMessage = 'cameraGalleryPermissionMessage'; + static const cameraGalleryPermissionRequired = 'cameraGalleryPermissionRequired'; + static const cameraPermissionMessage = 'cameraPermissionMessage'; + static const cameraPermissionRequired = 'cameraPermissionRequired'; + static const galleryPermissionMessage = 'galleryPermissionMessage'; + static const galleryPermissionRequired = 'galleryPermissionRequired'; + static const failedToCheckPermissions = 'failedToCheckPermissions'; + static const takePhotoWithCamera = 'takePhotoWithCamera'; + static const selectFromPhotoLibrary = 'selectFromPhotoLibrary'; + static const selectDocumentFiles = 'selectDocumentFiles'; + static const profilePicture = 'profilePicture'; + static const sendingAskDrRequest = 'sendingAskDrRequest'; + static const askDrRequestSentSuccess = 'askDrRequestSentSuccess'; + static const onlineCheckIn24HoursOnly = 'onlineCheckIn24HoursOnly'; + static const searchFor = 'searchFor'; + static const m = 'm'; + static const inch = 'inch'; + static const updateEmailAddressTitle = 'updateEmailAddressTitle'; + static const enterNewNewContactNumber = 'enterNewNewContactNumber'; + static const nationalIdFileNumber = 'nationalIdFileNumber'; + static const finda = 'finda'; + static const errorFetchingData = 'errorFetchingData'; + static const negative = 'negative'; + static const calculateCaloriesBasedOnFactors = 'calculateCaloriesBasedOnFactors'; + static const conformationCall = 'conformationCall'; + static const radiologyLabResults = 'radiologyLabResults'; + static const disclaimerRadiology = 'disclaimerRadiology'; + static const enterIdentificationNumberWithNoStar = 'enterIdentificationNumberWithNoStar'; + static const enterReferralNumber = 'enterReferralNumber'; + static const referralNumber = 'referralNumber'; + static const phoneHint = 'phoneHint'; + static const selectSearchCriteria = 'selectSearchCriteria'; + static const selectCriteria = 'selectCriteria'; + static const locationServicesDisabled = 'locationServicesDisabled'; + static const selectDateTimeKey = 'selectDateTimeKey'; + static const medicalKey = 'medicalKey'; + static const doctors2 = 'doctors2'; + static const illurgyInfomation = 'illurgyInfomation'; + static const vaccineInfomation = 'vaccineInfomation'; + static const approvals1 = 'approvals1'; + static const convertBloodcholesterolInfo = 'convertBloodcholesterolInfo'; + static const carbsAlert = 'carbsAlert'; + static const bodyFatAlert = 'bodyFatAlert'; + static const ibwAlert = 'ibwAlert'; + static const glucoseAlert = 'glucoseAlert'; + static const selectBloodGroup = 'selectBloodGroup'; + static const routePrescription = 'routePrescription'; + static const noNearestER = 'noNearestER'; + static const loginToUseServiceLiveCare = 'loginToUseServiceLiveCare'; + static const mldl = 'mldl'; + static const mmol = 'mmol'; + static const triglycerideInfo = 'triglycerideInfo'; + static const selectSmartWatch = 'selectSmartWatch'; + static const selectBloodDonationCity = 'selectBloodDonationCity'; + static const selectBloodDonationGender = 'selectBloodDonationGender'; + static const selectBloodType = 'selectBloodType'; + static const networkErrorTitle = 'networkErrorTitle'; + static const networkErrorMessage = 'networkErrorMessage'; + static const networkConnectionReset = 'networkConnectionReset'; + static const networkTimeout = 'networkTimeout'; + static const networkUnknownError = 'networkUnknownError'; + static const networkErrorWhileFetching = 'networkErrorWhileFetching'; + static const networkPleaseCheckInternet = 'networkPleaseCheckInternet'; + static const networkServerErrorNoMessage = 'networkServerErrorNoMessage'; + static const startLiveChat = 'startLiveChat'; + static const followUsOn = 'followUsOn'; + static const followUsOnX = 'followUsOnX'; + static const likeUsOnFB = 'likeUsOnFB'; + static const watchUsOnYoutube = 'watchUsOnYoutube'; + static const connectOnLinkedin = 'connectOnLinkedin'; + static const riskFactorPageTitle = 'riskFactorPageTitle'; + static const doAnyOfTheseApply = 'doAnyOfTheseApply'; + static const bloodDonationService = 'bloodDonationService'; + static const bookAppointmentService = 'bookAppointmentService'; + static const pinchToZoom = 'pinchToZoom'; + static const gotIt = 'gotIt'; + static const zoomIntoDetails = 'zoomIntoDetails'; + static const pinchWithTwoFingersToZoom = 'pinchWithTwoFingersToZoom'; + static const dragToMoveAround = 'dragToMoveAround'; + static const startExploring = 'startExploring'; + static const symptomsCheckSuggestions = 'symptomsCheckSuggestions'; + static const appointmentArrived = 'appointmentArrived'; + static const calendarPermissionAlertForAppointment = 'calendarPermissionAlertForAppointment'; + static const rechargePageKey = 'rechargePageKey'; + static const selectFamilyFile = 'selectFamilyFile'; + static const ancillaryOrdersListNew = 'ancillaryOrdersListNew'; + static const medicalReportNew = 'medicalReportNew'; + static const livecarePendingReuqestNew = 'livecarePendingReuqestNew'; + static const medicinesAnalysis = 'medicinesAnalysis'; + static const importantWarnings = 'importantWarnings'; + static const medicineInteractions = 'medicineInteractions'; + static const followUpNeeded = 'followUpNeeded'; + static const benefit = 'benefit'; + static const commonSideEffects = 'commonSideEffects'; + static const seriousWarnings = 'seriousWarnings'; + static const storage = 'storage'; + static const aiDisclaimerPrescription = 'aiDisclaimerPrescription'; + static const generateAiAnalysisPrescription = 'generateAiAnalysisPrescription'; + static const loadingAIAnalysisPrescription = 'loadingAIAnalysisPrescription'; + static const thisAboveInfoPrescription = 'thisAboveInfoPrescription'; + static const liveCareNotificationPermissionsMessage = 'liveCareNotificationPermissionsMessage'; + static const weatherIndicators = 'weatherIndicators'; + static const submitRating = 'submitRating'; + static const maxOneFileAllowed = 'maxOneFileAllowed'; + static const fileSizeExceedsLimit = 'fileSizeExceedsLimit'; + static const completedPrescriptionOrder = 'completedPrescriptionOrder'; + static const submitEReferral = 'submitEReferral'; + static const requestRefund = 'requestRefund'; + static const uploadImage = 'uploadImage'; + static const selectImage = 'selectImage'; + static const selectOptions = 'selectOptions'; + static const iban = 'iban'; + static const addIbanDetails = 'addIbanDetails'; + static const enterDescription = 'enterDescription'; + static const ibanIsRequired = 'ibanIsRequired'; + static const descriptionIsRequired = 'descriptionIsRequired'; + static const invalidIbanFormat = 'invalidIbanFormat'; + static const refundHistory = 'refundHistory'; + static const noRefundHistoryFound = 'noRefundHistoryFound'; + static const selectProcedure = 'selectProcedure'; + static const noProceduresAvailableForRefund = 'noProceduresAvailableForRefund'; + static const selectAll = 'selectAll'; + static const selectRefundMethod = 'selectRefundMethod'; + static const hmgWallet = 'hmgWallet'; + static const bankTransfer = 'bankTransfer'; + static const selectRefundReason = 'selectRefundReason'; + static const refundReason = 'refundReason'; + static const refundReason1 = 'refundReason1'; + static const refundReason2 = 'refundReason2'; + static const refundReason3 = 'refundReason3'; + static const refundReason4 = 'refundReason4'; + static const refundReason5 = 'refundReason5'; + static const refundReason6 = 'refundReason6'; + static const refundReason7 = 'refundReason7'; + static const selectProcedures = 'selectProcedures'; + static const redeem = 'redeem'; + static const points = 'points'; + static const transactions = 'transactions'; + static const pharmacy = 'pharmacy'; + static const visitsOrders = 'visitsOrders'; + static const cannotOpenThisFile = 'cannotOpenThisFile'; + static const refundDetails = 'refundDetails'; + static const requestNo = 'requestNo'; + static const referenceNo = 'referenceNo'; + static const advanceNumber = 'advanceNumber'; + static const amountOnly = 'amountOnly'; + static const invoiceHistory = 'invoiceHistory'; +} diff --git a/lib/generated/locale_keys.g.dart b/lib/generated/locale_keys.g.dart index e06e977e..51a687a8 100644 --- a/lib/generated/locale_keys.g.dart +++ b/lib/generated/locale_keys.g.dart @@ -7,6 +7,8 @@ abstract class LocaleKeys { static const arabic = 'arabic'; static const login = 'login'; static const noDataAvailable = 'noDataAvailable'; + static const noRatingAvailable = 'noRatingAvailable'; + static const doctorDoesNotHaveRating = 'doctorDoesNotHaveRating'; static const confirm = 'confirm'; static const loadingText = 'loadingText'; static const kilometerUnit = 'kilometerUnit'; @@ -85,6 +87,8 @@ abstract class LocaleKeys { static const bookSuccessConfirmMore2412 = 'bookSuccessConfirmMore2412'; static const upcomingPaymentPending = 'upcomingPaymentPending'; static const upcomingPaymentNow = 'upcomingPaymentNow'; + static const timeUntilAppointment = 'timeUntilAppointment'; + static const appointmentTimePassed = 'appointmentTimePassed'; static const upcomingQR = 'upcomingQR'; static const upcomingVirtual = 'upcomingVirtual'; static const upcomingLivecare = 'upcomingLivecare'; @@ -196,6 +200,7 @@ abstract class LocaleKeys { static const enterEmail = 'enterEmail'; static const family = 'family'; static const familyTitle = 'familyTitle'; + static const familyTitle2 = 'familyTitle2'; static const myFamily = 'myFamily'; static const addNewMember = 'addNewMember'; static const sentRequests = 'sentRequests'; @@ -226,6 +231,17 @@ abstract class LocaleKeys { static const companyName = 'companyName'; static const receiptOn = 'receiptOn'; static const expiryDate = 'expiryDate'; + static const myCards = 'myCards'; + static const savedCards = 'savedCards'; + static const addNewCard = 'addNewCard'; + static const noSavedCards = 'noSavedCards'; + static const cardEndingWith = 'cardEndingWith'; + static const expiry = 'expiry'; + static const defaultCard = 'defaultCard'; + static const deleteCard = 'deleteCard'; + static const deleteCardConfirmation = 'deleteCardConfirmation'; + static const cardDeletedSuccessfully = 'cardDeletedSuccessfully'; + static const addCardComingSoon = 'addCardComingSoon'; static const expiryPoints = 'expiryPoints'; static const expiryOn = 'expiryOn'; static const procedureName = 'procedureName'; @@ -268,6 +284,7 @@ abstract class LocaleKeys { static const userViewRequester = 'userViewRequester'; static const userView = 'userView'; static const parking = 'parking'; + static const parking2 = 'parking2'; static const alhabiServices = 'alhabiServices'; static const parkingTitle = 'parkingTitle'; static const parkingDescription = 'parkingDescription'; @@ -300,13 +317,22 @@ abstract class LocaleKeys { static const medicinesSubtitle = 'medicinesSubtitle'; static const vitalSigns = 'vitalSigns'; static const vitalSignsSubTitle = 'vitalSignsSubTitle'; + static const vitalSignNormal = 'vitalSignNormal'; + static const vitalSignLow = 'vitalSignLow'; + static const vitalSignHigh = 'vitalSignHigh'; + static const vitalSignObese = 'vitalSignObese'; + static const vitalSignOverweight = 'vitalSignOverweight'; + static const vitalSignUnderweight = 'vitalSignUnderweight'; + static const vitalSignSkinny = 'vitalSignSkinny'; static const myMedical = 'myMedical'; static const myMedicalSubtitle = 'myMedicalSubtitle'; static const myDoctor = 'myDoctor'; static const myDoctorSubtitle = 'myDoctorSubtitle'; + static const myDoctorSubtitle2 = 'myDoctorSubtitle2'; static const eye = 'eye'; static const eyeSubtitle = 'eyeSubtitle'; static const insurance = 'insurance'; + static const insurance2 = 'insurance2'; static const insuranceSubtitle = 'insuranceSubtitle'; static const updateInsurance = 'updateInsurance'; static const updateInsuranceSubtitle = 'updateInsuranceSubtitle'; @@ -321,6 +347,7 @@ abstract class LocaleKeys { static const monthly = 'monthly'; static const monthlySubtitle = 'monthlySubtitle'; static const sick = 'sick'; + static const sick2 = 'sick2'; static const sickSubtitle = 'sickSubtitle'; static const myBalance = 'myBalance'; static const myBalanceSubtitle = 'myBalanceSubtitle'; @@ -355,6 +382,12 @@ abstract class LocaleKeys { static const clickHere = 'clickHere'; static const iAgreeToTheTermsAndConditions = 'iAgreeToTheTermsAndConditions'; static const iAgreeToTheTermsAndConditionsSubtitle = 'iAgreeToTheTermsAndConditionsSubtitle'; + static const iAgreeAndAcceptTermsAndConditions = 'iAgreeAndAcceptTermsAndConditions'; + static const termsAndConditions = 'termsAndConditions'; + static const iAgreeHealthInfoCanBeUsed = 'iAgreeHealthInfoCanBeUsed'; + static const privacyPolicyText = 'privacyPolicyText'; + static const outPatient = 'outPatient'; + static const thisInvoiceIsNotEligibleForRefund = 'thisInvoiceIsNotEligibleForRefund'; static const save = 'save'; static const userAgreement = 'userAgreement'; static const updateSuccessfully = 'updateSuccessfully'; @@ -436,7 +469,7 @@ abstract class LocaleKeys { static const serviceInformation = 'serviceInformation'; static const homeHealthCare = 'homeHealthCare'; static const noAppointmentAvailable = 'noAppointmentAvailable'; - static const homeHealthCareText = 'homeHealthCareText'; + static const noScheduleAvailable = 'noScheduleAvailable'; static const loginRegister = 'loginRegister'; static const orderLog = 'orderLog'; static const infoLab = 'infoLab'; @@ -485,8 +518,10 @@ abstract class LocaleKeys { static const refferalSubTitle = 'refferalSubTitle'; static const healthCare = 'healthCare'; static const emergency = 'emergency'; + static const emergency2 = 'emergency2'; static const erservices = 'erservices'; static const services2 = 'services2'; + static const services3 = 'services3'; static const cantSeeProfile = 'cantSeeProfile'; static const loginRegisterNow = 'loginRegisterNow'; static const hmgPharmacy = 'hmgPharmacy'; @@ -653,6 +688,15 @@ abstract class LocaleKeys { static const offTheme = 'offTheme'; static const dimTheme = 'dimTheme'; static const bwTheme = 'bwTheme'; + static const highContrastTheme = 'highContrastTheme'; + static const fontSize = 'fontSize'; + static const fontSizeSmall = 'fontSizeSmall'; + static const fontSizeMedium = 'fontSizeMedium'; + static const fontSizeLarge = 'fontSizeLarge'; + static const saveChanges = 'saveChanges'; + static const settingsSavedSuccessfully = 'settingsSavedSuccessfully'; + static const cardHeading = 'cardHeading'; + static const buttonText = 'buttonText'; static const permissions = 'permissions'; static const cameraPermission = 'cameraPermission'; static const locationPermission = 'locationPermission'; @@ -715,6 +759,11 @@ abstract class LocaleKeys { static const bloodDonation = 'bloodDonation'; static const bloodDonationInfo = 'bloodDonationInfo'; static const bloodInstruction = 'bloodInstruction'; + static const aboutBloodDonation = 'aboutBloodDonation'; + static const bloodDonationDescription = 'bloodDonationDescription'; + static const bloodDonationBenefit1 = 'bloodDonationBenefit1'; + static const bloodDonationBenefit2 = 'bloodDonationBenefit2'; + static const bloodDonationBenefit3 = 'bloodDonationBenefit3'; static const viewTerms = 'viewTerms'; static const wantConnectHmgNetwork = 'wantConnectHmgNetwork'; static const failedToAccessHmgServices = 'failedToAccessHmgServices'; @@ -746,11 +795,18 @@ abstract class LocaleKeys { static const infoTodo = 'infoTodo'; static const familyInfo = 'familyInfo'; static const rrtdDetails = 'rrtdDetails'; + static const homeHealthCareText = 'homeHealthCareText'; static const onlineCheckInAgreement = 'onlineCheckInAgreement'; static const infoEreferral = 'infoEreferral'; static const erConsultation = 'erConsultation'; static const myInvoice = 'myInvoice'; static const invoiceList = 'invoiceList'; + static const invoiceList2 = 'invoiceList2'; + static const allInvoices = 'allInvoices'; + static const hospitals = 'hospitals'; + static const clinics = 'clinics'; + static const doctors = 'doctors'; + static const selectDoctor = 'selectDoctor'; static const thisItemIsNotAvailable = 'thisItemIsNotAvailable'; static const beforeAfterImages = 'beforeAfterImages'; static const clinicAcceptLivecare = 'clinicAcceptLivecare'; @@ -803,7 +859,9 @@ abstract class LocaleKeys { static const switchAccount = 'switchAccount'; static const lastLoginBy = 'lastLoginBy'; static const allSet = 'allSet'; + static const quickLogin = 'quickLogin'; static const enableQuickLogin = 'enableQuickLogin'; + static const enableQuickLoginBtn = 'enableQuickLoginBtn'; static const enableMsg = 'enableMsg'; static const notNow = 'notNow'; static const pendingActivation = 'pendingActivation'; @@ -865,6 +923,7 @@ abstract class LocaleKeys { static const monitor = 'monitor'; static const noSpecialResult = 'noSpecialResult'; static const setTheDateRange = 'setTheDateRange'; + static const selectDate = 'selectDate'; static const historyFlowchart = 'historyFlowchart'; static const to = 'to'; static const startDate = 'startDate'; @@ -901,6 +960,7 @@ abstract class LocaleKeys { static const vat15 = 'vat15'; static const liveCare = 'liveCare'; static const recentVisits = 'recentVisits'; + static const favouriteDoctors = 'favouriteDoctors'; static const searchByClinic = 'searchByClinic'; static const tapToSelectClinic = 'tapToSelectClinic'; static const searchByDoctor = 'searchByDoctor'; @@ -1123,13 +1183,21 @@ abstract class LocaleKeys { static const transportOptions = 'transportOptions'; static const selectHospitalForAdvancePayment = 'selectHospitalForAdvancePayment'; static const recharge = 'recharge'; + static const withdraw = 'withdraw'; static const activityLevel = 'activityLevel'; static const selectActivityLevel = 'selectActivityLevel'; + static const almostInactive = 'almostInactive'; + static const lightlyActive = 'lightlyActive'; + static const lightlyActive13Days = 'lightlyActive13Days'; + static const superActive = 'superActive'; static const caloriesPerDay = 'caloriesPerDay'; static const dietType = 'dietType'; static const selectDietType = 'selectDietType'; static const bodyFrameSize = 'bodyFrameSize'; static const selectBodyFrameSize = 'selectBodyFrameSize'; + static const bodyFrameSmall = 'bodyFrameSmall'; + static const bodyFrameMedium = 'bodyFrameMedium'; + static const bodyFrameLarge = 'bodyFrameLarge'; static const averageCycleLength = 'averageCycleLength'; static const averageLutealPhase = 'averageLutealPhase'; static const convert = 'convert'; @@ -1155,6 +1223,14 @@ abstract class LocaleKeys { static const carbsProteinFat = 'carbsProteinFat'; static const ovulationPeriod = 'ovulationPeriod'; static const deliveryDueDate = 'deliveryDueDate'; + static const bmiCalculatorDesc = 'bmiCalculatorDesc'; + static const caloriesCalculatorDesc = 'caloriesCalculatorDesc'; + static const bmrCalculatorDesc = 'bmrCalculatorDesc'; + static const idealBodyWeightDesc = 'idealBodyWeightDesc'; + static const bodyFatCalculatorDesc = 'bodyFatCalculatorDesc'; + static const carbsProteinFatDesc = 'carbsProteinFatDesc'; + static const ovulationPeriodDesc = 'ovulationPeriodDesc'; + static const deliveryDueDateDesc = 'deliveryDueDateDesc'; static const low = 'low'; static const preDiabetic = 'preDiabetic'; static const high = 'high'; @@ -1199,6 +1275,7 @@ abstract class LocaleKeys { static const hmgServices = 'hmgServices'; static const personalServices = 'personalServices'; static const habibWallet = 'habibWallet'; + static const habibWallet2 = 'habibWallet2'; static const loginToViewWalletBalance = 'loginToViewWalletBalance'; static const loginToViewMedicalFile = 'loginToViewMedicalFile'; static const addMember = 'addMember'; @@ -1288,6 +1365,7 @@ abstract class LocaleKeys { static const askYourDoctor = 'askYourDoctor'; static const internetPairing = 'internetPairing'; static const requested = 'requested'; + static const readyToDownload = 'readyToDownload'; static const youDontHaveAnyMedicalReportsYet = 'youDontHaveAnyMedicalReportsYet'; static const requestMedicalReport = 'requestMedicalReport'; static const youDoNotHaveAnyAppointmentsToRequestMedicalReport = 'youDoNotHaveAnyAppointmentsToRequestMedicalReport'; @@ -1309,7 +1387,6 @@ abstract class LocaleKeys { static const medicalFiles = 'medicalFiles'; static const addANewFamilyMember = 'addANewFamilyMember'; static const viewInvoiceDetails = 'viewInvoiceDetails'; - static const outPatient = 'outPatient'; static const invoiceDetails = 'invoiceDetails'; static const sendingEmailPleaseWait = 'sendingEmailPleaseWait'; static const emailSentSuccessfullyMessage = 'emailSentSuccessfullyMessage'; @@ -1375,6 +1452,9 @@ abstract class LocaleKeys { static const symptomsSelector = 'symptomsSelector'; static const possibleSymptomsRelatedTo = 'possibleSymptomsRelatedTo'; static const suggestionAIListDescription = 'suggestionAIListDescription'; + static const whyAmIBeingAskedThis = 'whyAmIBeingAskedThis'; + static const weAreAskingThisQuestionToBetterUnderstand = 'weAreAskingThisQuestionToBetterUnderstand'; + static const analyzingYourSymptoms = 'analyzingYourSymptoms'; static const analyzing = 'analyzing'; static const seekMedicalAdvice = 'seekMedicalAdvice'; static const monitorDescription = 'monitorDescription'; @@ -1392,6 +1472,30 @@ abstract class LocaleKeys { static const areYouSureYouWantToExitProgress = 'areYouSureYouWantToExitProgress'; static const noQuestionAvailable = 'noQuestionAvailable'; static const possibleSymptom = 'possibleSymptom'; + static const triageLevelEmergencyAmbulance = 'triageLevelEmergencyAmbulance'; + static const triageLevelEmergency = 'triageLevelEmergency'; + static const triageLevelConsultation24 = 'triageLevelConsultation24'; + static const triageLevelConsultation = 'triageLevelConsultation'; + static const triageLevelSelfCare = 'triageLevelSelfCare'; + static const triageLevelEmergencyAmbulanceDesc = 'triageLevelEmergencyAmbulanceDesc'; + static const triageLevelEmergencyDesc = 'triageLevelEmergencyDesc'; + static const triageLevelConsultation24Desc = 'triageLevelConsultation24Desc'; + static const triageLevelConsultationDesc = 'triageLevelConsultationDesc'; + static const triageLevelSelfCareDesc = 'triageLevelSelfCareDesc'; + static const rootCauseEmergencyEvidencePresent = 'rootCauseEmergencyEvidencePresent'; + static const rootCauseSeriousEvidencePresent = 'rootCauseSeriousEvidencePresent'; + static const rootCauseEmergencyConditionLikely = 'rootCauseEmergencyConditionLikely'; + static const rootCauseEmergencyConditionPossible = 'rootCauseEmergencyConditionPossible'; + static const rootCauseConsultationConditionLikely = 'rootCauseConsultationConditionLikely'; + static const rootCauseSelfCareSufficient = 'rootCauseSelfCareSufficient'; + static const rootCauseDiagnosisUnknown = 'rootCauseDiagnosisUnknown'; + static const teleconsultationAvailable = 'teleconsultationAvailable'; + static const seriousSymptoms = 'seriousSymptoms'; + static const howTo = 'howTo'; + static const explainWhy = 'explainWhy'; + static const whyThisCondition = 'whyThisCondition'; + static const supportingEvidence = 'supportingEvidence'; + static const explanationDescription = 'explanationDescription'; static const symptomsCheckerFindingScore = 'symptomsCheckerFindingScore'; static const notSet = 'notSet'; static const years = 'years'; @@ -1432,6 +1536,8 @@ abstract class LocaleKeys { static const setTimerOfReminder = 'setTimerOfReminder'; static const youHaveAppointmentWithDr = 'youHaveAppointmentWithDr'; static const hours = 'hours'; + static const minutes = 'minutes'; + static const seconds = 'seconds'; static const secs = 'secs'; static const noAllergiesDataFound = 'noAllergiesDataFound'; static const heartRateDescription = 'heartRateDescription'; @@ -1441,6 +1547,7 @@ abstract class LocaleKeys { static const distanceDescription = 'distanceDescription'; static const overview = 'overview'; static const details = 'details'; + static const details2 = 'details2'; static const healthy = 'healthy'; static const warning = 'warning'; static const vitalSignDetails = 'vitalSignDetails'; @@ -1481,7 +1588,6 @@ abstract class LocaleKeys { static const waterConsumption = 'waterConsumption'; static const selectNumberOfReminders = 'selectNumberOfReminders'; static const h2oSettings = 'h2oSettings'; - static const settingsSavedSuccessfully = 'settingsSavedSuccessfully'; static const yourName = 'yourName'; static const ageYears = 'ageYears'; static const numberOfRemindersInADay = 'numberOfRemindersInADay'; @@ -1503,7 +1609,7 @@ abstract class LocaleKeys { static const pleaseVisitRoomToTheDoctor = 'pleaseVisitRoomToTheDoctor'; static const erOnlineCheckInRequest = 'erOnlineCheckInRequest'; static const indoor = 'indoor'; - static const navigation = 'navigation'; + static const thehospital = 'thehospital'; static const health = 'health'; static const calculators = 'calculators'; static const converters = 'converters'; @@ -1592,5 +1698,257 @@ abstract class LocaleKeys { static const hmgPolicies = 'hmgPolicies'; static const darkMode = 'darkMode'; static const featureComingSoonDescription = 'featureComingSoonDescription'; + static const generateAiAnalysisResult = 'generateAiAnalysisResult'; + static const ratings = 'ratings'; + static const hmgPharmacyText = 'hmgPharmacyText'; + static const insuranceRequestSubmittedSuccessfully = 'insuranceRequestSubmittedSuccessfully'; + static const updatingEmailAddress = 'updatingEmailAddress'; + static const verifyInsurance = 'verifyInsurance'; + static const tests = 'tests'; + static const calendarPermissionAlert = 'calendarPermissionAlert'; + static const sortByNearestLocation = 'sortByNearestLocation'; + static const giveLocationPermissionForNearestList = 'giveLocationPermissionForNearestList'; + static const sortByLocation = 'sortByLocation'; + static const timeForFirstReminder = 'timeForFirstReminder'; + static const reminderRemovalNote = 'reminderRemovalNote'; + static const prescriptionDatePassedError = 'prescriptionDatePassedError'; + static const communicationLanguage = 'communicationLanguage'; + static const cmcServiceHeader = 'cmcServiceHeader'; + static const cmcServiceDescription = 'cmcServiceDescription'; + static const eReferralServiceHeader = 'eReferralServiceHeader'; + static const eReferralServiceDescription = 'eReferralServiceDescription'; + static const bloodDonationServiceHeader = 'bloodDonationServiceHeader'; + static const bloodDonationServiceDescription = 'bloodDonationServiceDescription'; + static const healthTrackersServiceHeader = 'healthTrackersServiceHeader'; + static const healthTrackersServiceDescription = 'healthTrackersServiceDescription'; + static const waterConsumptionServiceHeader = 'waterConsumptionServiceHeader'; + static const waterConsumptionServiceDescription = 'waterConsumptionServiceDescription'; + static const smartWatchServiceHeader = 'smartWatchServiceHeader'; + static const smartWatchServiceDescription = 'smartWatchServiceDescription'; + static const liveChatServiceHeader = 'liveChatServiceHeader'; + static const liveChatServiceDescription = 'liveChatServiceDescription'; + static const emergencyServiceHeader = 'emergencyServiceHeader'; + static const emergencyServiceDescription = 'emergencyServiceDescription'; + static const homeHealthCareServiceHeader = 'homeHealthCareServiceHeader'; + static const homeHealthCareServiceDescription = 'homeHealthCareServiceDescription'; + static const profileOnlyText = 'profileOnlyText'; + static const information = 'information'; + static const noFavouriteDoctors = 'noFavouriteDoctors'; + static const addDoctors = 'addDoctors'; + static const favouriteList = 'favouriteList'; + static const later = 'later'; + static const cancelAppointmentConfirmMessage = 'cancelAppointmentConfirmMessage'; + static const acknowledged = 'acknowledged'; + static const searchLabResults = 'searchLabResults'; + static const callForAssistance = 'callForAssistance'; + static const oneWaySubtitle = 'oneWaySubtitle'; + static const twoWaySubtitle = 'twoWaySubtitle'; + static const toHospitalSubtitle = 'toHospitalSubtitle'; + static const fromHospitalSubtitle = 'fromHospitalSubtitle'; + static const clinicSchedule = 'clinicSchedule'; + static const doctorAddedToFavourite = 'doctorAddedToFavourite'; + static const doctorRemovedFromFavourite = 'doctorRemovedFromFavourite'; + static const addNewFavorite = 'addNewFavorite'; + static const favourites = 'favourites'; + static const pendingAncillaryOrders = 'pendingAncillaryOrders'; + static const liveCarePermissions = 'liveCarePermissions'; + static const containsImage = 'containsImage'; + static const servicesSelected = 'servicesSelected'; + static const selectMedicalFileFromFamily = 'selectMedicalFileFromFamily'; + static const anyFileFromHMG = 'anyFileFromHMG'; + static const noDistance = 'noDistance'; + static const enterAmount = 'enterAmount'; + static const selectHospitalContinue = 'selectHospitalContinue'; + static const year = 'year'; + static const notifyPrescription = 'notifyPrescription'; + static const doctorRatingAppointment = 'doctorRatingAppointment'; + static const ratingSubmitted = 'ratingSubmitted'; + static const rateTheDoctor = 'rateTheDoctor'; + static const downloadInvoice = 'downloadInvoice'; + static const approvalDetails = 'approvalDetails'; + static const obese = 'obese'; + static const overWeight = 'overWeight'; + static const underWeight = 'underWeight'; + static const nearestGate = 'nearestGate'; + static const RRTDDetails = 'RRTDDetails'; + static const normalMapType = 'normalMapType'; + static const satelliteMapType = 'satelliteMapType'; + static const terrainMapType = 'terrainMapType'; + static const hybridMapType = 'hybridMapType'; + static const openCamera = 'openCamera'; + static const openGallery = 'openGallery'; + static const openFiles = 'openFiles'; + static const generateAiAnalysisRadResult = 'generateAiAnalysisRadResult'; + static const grantLocationPermission = 'grantLocationPermission'; + static const NoBookedAppointments = 'NoBookedAppointments'; + static const aiDisclaimerRad = 'aiDisclaimerRad'; + static const imageSizeTooLarge = 'imageSizeTooLarge'; + static const profileImageUpdatedSuccessfully = 'profileImageUpdatedSuccessfully'; + static const failedToProcessImage = 'failedToProcessImage'; + static const cameraGalleryPermissionMessage = 'cameraGalleryPermissionMessage'; + static const cameraGalleryPermissionRequired = 'cameraGalleryPermissionRequired'; + static const cameraPermissionMessage = 'cameraPermissionMessage'; + static const cameraPermissionRequired = 'cameraPermissionRequired'; + static const galleryPermissionMessage = 'galleryPermissionMessage'; + static const galleryPermissionRequired = 'galleryPermissionRequired'; + static const failedToCheckPermissions = 'failedToCheckPermissions'; + static const takePhotoWithCamera = 'takePhotoWithCamera'; + static const selectFromPhotoLibrary = 'selectFromPhotoLibrary'; + static const selectDocumentFiles = 'selectDocumentFiles'; + static const profilePicture = 'profilePicture'; + static const sendingAskDrRequest = 'sendingAskDrRequest'; + static const askDrRequestSentSuccess = 'askDrRequestSentSuccess'; + static const onlineCheckIn24HoursOnly = 'onlineCheckIn24HoursOnly'; + static const searchFor = 'searchFor'; + static const m = 'm'; + static const inch = 'inch'; + static const updateEmailAddressTitle = 'updateEmailAddressTitle'; + static const enterNewNewContactNumber = 'enterNewNewContactNumber'; + static const nationalIdFileNumber = 'nationalIdFileNumber'; + static const finda = 'finda'; + static const errorFetchingData = 'errorFetchingData'; + static const negative = 'negative'; + static const calculateCaloriesBasedOnFactors = 'calculateCaloriesBasedOnFactors'; + static const conformationCall = 'conformationCall'; + static const radiologyLabResults = 'radiologyLabResults'; + static const disclaimerRadiology = 'disclaimerRadiology'; + static const enterIdentificationNumberWithNoStar = 'enterIdentificationNumberWithNoStar'; + static const enterReferralNumber = 'enterReferralNumber'; + static const referralNumber = 'referralNumber'; + static const phoneHint = 'phoneHint'; + static const selectSearchCriteria = 'selectSearchCriteria'; + static const selectCriteria = 'selectCriteria'; + static const locationServicesDisabled = 'locationServicesDisabled'; + static const selectDateTimeKey = 'selectDateTimeKey'; + static const medicalKey = 'medicalKey'; + static const doctors2 = 'doctors2'; + static const illurgyInfomation = 'illurgyInfomation'; + static const vaccineInfomation = 'vaccineInfomation'; + static const approvals1 = 'approvals1'; + static const convertBloodcholesterolInfo = 'convertBloodcholesterolInfo'; + static const carbsAlert = 'carbsAlert'; + static const bodyFatAlert = 'bodyFatAlert'; + static const ibwAlert = 'ibwAlert'; + static const glucoseAlert = 'glucoseAlert'; + static const selectBloodGroup = 'selectBloodGroup'; + static const routePrescription = 'routePrescription'; + static const noNearestER = 'noNearestER'; + static const loginToUseServiceLiveCare = 'loginToUseServiceLiveCare'; + static const mldl = 'mldl'; + static const mmol = 'mmol'; + static const triglycerideInfo = 'triglycerideInfo'; + static const selectSmartWatch = 'selectSmartWatch'; + static const selectBloodDonationCity = 'selectBloodDonationCity'; + static const selectBloodDonationGender = 'selectBloodDonationGender'; + static const selectBloodType = 'selectBloodType'; + static const networkErrorTitle = 'networkErrorTitle'; + static const networkErrorMessage = 'networkErrorMessage'; + static const networkConnectionReset = 'networkConnectionReset'; + static const networkTimeout = 'networkTimeout'; + static const networkUnknownError = 'networkUnknownError'; + static const networkErrorWhileFetching = 'networkErrorWhileFetching'; + static const networkPleaseCheckInternet = 'networkPleaseCheckInternet'; + static const networkServerErrorNoMessage = 'networkServerErrorNoMessage'; + static const startLiveChat = 'startLiveChat'; + static const followUsOn = 'followUsOn'; + static const followUsOnX = 'followUsOnX'; + static const likeUsOnFB = 'likeUsOnFB'; + static const watchUsOnYoutube = 'watchUsOnYoutube'; + static const connectOnLinkedin = 'connectOnLinkedin'; + static const riskFactorPageTitle = 'riskFactorPageTitle'; + static const doAnyOfTheseApply = 'doAnyOfTheseApply'; + static const bloodDonationService = 'bloodDonationService'; + static const bookAppointmentService = 'bookAppointmentService'; + static const pinchToZoom = 'pinchToZoom'; + static const gotIt = 'gotIt'; + static const zoomIntoDetails = 'zoomIntoDetails'; + static const pinchWithTwoFingersToZoom = 'pinchWithTwoFingersToZoom'; + static const dragToMoveAround = 'dragToMoveAround'; + static const startExploring = 'startExploring'; + static const symptomsCheckSuggestions = 'symptomsCheckSuggestions'; + static const appointmentArrived = 'appointmentArrived'; + static const calendarPermissionAlertForAppointment = 'calendarPermissionAlertForAppointment'; + static const rechargePageKey = 'rechargePageKey'; + static const selectFamilyFile = 'selectFamilyFile'; + static const ancillaryOrdersListNew = 'ancillaryOrdersListNew'; + static const medicalReportNew = 'medicalReportNew'; + static const livecarePendingReuqestNew = 'livecarePendingReuqestNew'; + static const medicinesAnalysis = 'medicinesAnalysis'; + static const importantWarnings = 'importantWarnings'; + static const medicineInteractions = 'medicineInteractions'; + static const followUpNeeded = 'followUpNeeded'; + static const benefit = 'benefit'; + static const commonSideEffects = 'commonSideEffects'; + static const seriousWarnings = 'seriousWarnings'; + static const storage = 'storage'; + static const aiDisclaimerPrescription = 'aiDisclaimerPrescription'; + static const generateAiAnalysisPrescription = 'generateAiAnalysisPrescription'; + static const loadingAIAnalysisPrescription = 'loadingAIAnalysisPrescription'; + static const thisAboveInfoPrescription = 'thisAboveInfoPrescription'; + static const liveCareNotificationPermissionsMessage = 'liveCareNotificationPermissionsMessage'; + static const weatherIndicators = 'weatherIndicators'; + static const submitRating = 'submitRating'; + static const maxOneFileAllowed = 'maxOneFileAllowed'; + static const fileSizeExceedsLimit = 'fileSizeExceedsLimit'; + static const completedPrescriptionOrder = 'completedPrescriptionOrder'; + static const submitEReferral = 'submitEReferral'; + static const requestRefund = 'requestRefund'; + static const uploadImage = 'uploadImage'; + static const selectImage = 'selectImage'; + static const selectOptions = 'selectOptions'; + static const iban = 'iban'; + static const addIbanDetails = 'addIbanDetails'; + static const enterDescription = 'enterDescription'; + static const ibanIsRequired = 'ibanIsRequired'; + static const descriptionIsRequired = 'descriptionIsRequired'; + static const invalidIbanFormat = 'invalidIbanFormat'; + static const refundHistory = 'refundHistory'; + static const noRefundHistoryFound = 'noRefundHistoryFound'; + static const selectProcedure = 'selectProcedure'; + static const noProceduresAvailableForRefund = 'noProceduresAvailableForRefund'; + static const selectAll = 'selectAll'; + static const selectRefundMethod = 'selectRefundMethod'; + static const hmgWallet = 'hmgWallet'; + static const bankTransfer = 'bankTransfer'; + static const selectRefundReason = 'selectRefundReason'; + static const refundReason = 'refundReason'; + static const refundReason1 = 'refundReason1'; + static const refundReason2 = 'refundReason2'; + static const refundReason3 = 'refundReason3'; + static const refundReason4 = 'refundReason4'; + static const refundReason5 = 'refundReason5'; + static const refundReason6 = 'refundReason6'; + static const refundReason7 = 'refundReason7'; + static const selectProcedures = 'selectProcedures'; + static const beforeUsingSymptomsChecker = 'beforeUsingSymptomsChecker'; + static const symptomsCheckerNotDiagnosis = 'symptomsCheckerNotDiagnosis'; + static const symptomsCheckerNotEmergency = 'symptomsCheckerNotEmergency'; + static const yourDataIsSafe = 'yourDataIsSafe'; + static const redeem = 'redeem'; + static const points = 'points'; + static const transactions = 'transactions'; + static const pharmacy = 'pharmacy'; + static const visitsOrders = 'visitsOrders'; + static const earned = 'earned'; + static const getParkingQR = 'getParkingQR'; + static const cannotOpenThisFile = 'cannotOpenThisFile'; + static const refundDetails = 'refundDetails'; + static const requestNo = 'requestNo'; + static const referenceNo = 'referenceNo'; + static const advanceNumber = 'advanceNumber'; + static const amountOnly = 'amountOnly'; + static const invoiceHistory = 'invoiceHistory'; + static const refund = 'refund'; + static const parkingQR = 'parkingQR'; + static const parkingQRDesc = 'parkingQRDesc'; + static const livecareUpdateInsuranceSent = 'livecareUpdateInsuranceSent'; + static const livecareUpdateInsurance = 'livecareUpdateInsurance'; + static const schedule = 'schedule'; + static const doctorSchedule = 'doctorSchedule'; + static const weeklyShift = 'weeklyShift'; + static const dayOff = 'dayOff'; + static const hide = 'hide'; + static const viewPatientQR = 'viewPatientQR'; + static const patientQR = 'patientQR'; } diff --git a/lib/main.dart b/lib/main.dart index d38c9aab..aa266871 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -10,15 +10,16 @@ import 'package:flutter/services.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/features/active_prescriptions/active_prescriptions_view_model.dart'; import 'package:hmg_patient_app_new/features/ask_doctor/ask_doctor_view_model.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; import 'package:hmg_patient_app_new/features/blood_donation/blood_donation_view_model.dart'; -import 'package:hmg_patient_app_new/features/active_prescriptions/active_prescriptions_view_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/contact_us/contact_us_view_model.dart'; import 'package:hmg_patient_app_new/features/doctor_filter/doctor_filter_view_model.dart'; import 'package:hmg_patient_app_new/features/emergency_services/emergency_services_view_model.dart'; import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; +import 'package:hmg_patient_app_new/features/health_trackers/health_trackers_view_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart'; import 'package:hmg_patient_app_new/features/immediate_livecare/immediate_livecare_view_model.dart'; import 'package:hmg_patient_app_new/features/insurance/insurance_view_model.dart'; @@ -32,22 +33,28 @@ import 'package:hmg_patient_app_new/features/my_appointments/appointment_via_reg import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/my_invoices/my_invoices_view_model.dart'; import 'package:hmg_patient_app_new/features/notifications/notifications_view_model.dart'; +import 'package:hmg_patient_app_new/features/offers_and_discounts/offers_and_discounts_view_model.dart'; import 'package:hmg_patient_app_new/features/payfort/payfort_view_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/paytabs_view_model.dart'; import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_view_model.dart'; +import 'package:hmg_patient_app_new/features/profile_picture/profile_picture_view_model.dart'; import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; import 'package:hmg_patient_app_new/features/qr_parking/qr_parking_view_model.dart'; import 'package:hmg_patient_app_new/features/radiology/radiology_view_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/refund_request_view_model.dart'; import 'package:hmg_patient_app_new/features/services_price_list/services_price_list_view_model.dart'; import 'package:hmg_patient_app_new/features/smartwatch_health_data/health_provider.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart'; import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_view_model.dart'; +import 'package:hmg_patient_app_new/features/weather/weather_view_model.dart'; import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts/health_calculator_view_model.dart'; -import 'package:hmg_patient_app_new/features/health_trackers/health_trackers_view_model.dart'; import 'package:hmg_patient_app_new/routes/app_routes.dart'; +import 'package:hmg_patient_app_new/services/app_lifecycle_service.dart'; import 'package:hmg_patient_app_new/services/logger_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/app_theme.dart'; +import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_calendar_model.dart'; import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart' show DateRangeSelectorRangeViewModel; import 'package:provider/provider.dart'; import 'package:provider/single_child_widget.dart'; @@ -56,6 +63,7 @@ import 'core/utils/size_utils.dart'; import 'features/monthly_reports/terms_conditions_view_model.dart'; import 'firebase_options.dart'; + @pragma('vm:entry-point') Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async { await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); @@ -64,7 +72,6 @@ Future _firebaseMessagingBackgroundHandler(RemoteMessage message) async { // flutter3_32 pub run easy_localization:generate -O ./lib/generated -f keys -o locale_keys.g.dart --source-dir ./assets/langs - class MyHttpOverrides extends HttpOverrides { @override HttpClient createHttpClient(SecurityContext? context) { @@ -82,11 +89,19 @@ Future callAppStateInitializations() async { appState.setDeviceTypeID = deviceTypeId; // Pass all uncaught "fatal" errors from the framework to Crashlytics - FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError; + if (!kDebugMode) { + FlutterError.onError = FirebaseCrashlytics.instance.recordFlutterFatalError; + } // Pass all uncaught asynchronous errors that aren't handled by the Flutter framework to Crashlytics PlatformDispatcher.instance.onError = (error, stack) { - if (!kDebugMode) FirebaseCrashlytics.instance.recordError(error, stack, fatal: true); + if (!kDebugMode) { + FirebaseCrashlytics.instance.recordError(error, stack, + fatal: false, + printDetails: true, + reason: + "${appState.isAuthenticated ? "Authenticated User ID: ${appState.getAuthenticatedUser()!.patientId} - ${appState.getAuthenticatedUser()!.mobileNumber}" : "Unauthenticated User"} - Uncaught asynchronous error"); + } return true; }; } @@ -95,8 +110,6 @@ Future callInitializations() async { WidgetsFlutterBinding.ensureInitialized(); await EasyLocalization.ensureInitialized(); - // await Firebase.initializeApp(options: DefaultFirebaseOptions.currentPlatform); - try { // Attempt to get the default app. If it exists, this avoids the error. await Firebase.app(); @@ -112,8 +125,14 @@ Future callInitializations() async { HttpOverrides.global = MyHttpOverrides(); await callAppStateInitializations(); + // Initialize App Lifecycle Service to monitor background/foreground transitions + getIt.get().initialize(); + // Restore persisted dark-mode preference before the first frame. getIt.get().loadDarkMode(); + + // Restore persisted accessibility settings before the first frame. + getIt.get().loadAccessibilitySettings(); } void main() async { @@ -125,6 +144,7 @@ void main() async { Locale('ar', 'SA'), ], path: 'assets/langs', + // assetLoader: RemoteFileLoader(), fallbackLocale: Locale('en', 'US'), child: MultiProvider(providers: [ ChangeNotifierProvider( @@ -145,6 +165,9 @@ void main() async { ChangeNotifierProvider( create: (_) => getIt.get(), ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), ChangeNotifierProvider( create: (_) => getIt.get(), ), @@ -234,6 +257,21 @@ void main() async { ), ChangeNotifierProvider( create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), + ), + ChangeNotifierProvider( + create: (_) => getIt.get(), ) ], child: MyApp()), ), // Wrap your app @@ -243,6 +281,55 @@ void main() async { class MyApp extends StatelessWidget { const MyApp({super.key}); + /// Apply visual mode filter to the entire app + Widget _applyVisualMode(String visualMode, Widget child) { + switch (visualMode) { + case 'invert': + // Invert colors app-wide (red becomes cyan for colorblind users) + return ColorFiltered( + colorFilter: const ColorFilter.matrix([ + -1, 0, 0, 0, 255, // Red channel inverted + 0, -1, 0, 0, 255, // Green channel inverted + 0, 0, -1, 0, 255, // Blue channel inverted + 0, 0, 0, 1, 0, // Alpha channel unchanged + ]), + child: child, + ); + + case 'dim': + // Apply dim effect with opacity overlay + return Stack( + children: [ + child, + Positioned.fill( + child: IgnorePointer( + child: Container( + color: Colors.black.withValues(alpha: 0.3), // 30% black overlay for dimming + ), + ), + ), + ], + ); + + case 'highContrast': + // Apply desaturation for high contrast (removes colors, leaves black and white) + return ColorFiltered( + colorFilter: const ColorFilter.matrix([ + 0.2126, 0.7152, 0.0722, 0, 0, // Red channel (grayscale) + 0.2126, 0.7152, 0.0722, 0, 0, // Green channel (grayscale) + 0.2126, 0.7152, 0.0722, 0, 0, // Blue channel (grayscale) + 0, 0, 0, 1, 0, // Alpha channel unchanged + ]), + child: child, + ); + + case 'off': + default: + // No filter applied + return child; + } + } + @override Widget build(BuildContext context) { return SafeArea( @@ -261,13 +348,16 @@ class MyApp extends StatelessWidget { // title: 'Dr. AlHabib', title: 'Dr. AlHabib Beta', builder: (context, mchild) { - return MediaQuery( + Widget child = MediaQuery( data: MediaQuery.of(context).copyWith( - textScaler: TextScaler.noScaling, + textScaler: TextScaler.linear(profileVm.getFontScaleMultiplier()), alwaysUse24HourFormat: true, ), child: mchild!, ); + + // Apply visual mode filters app-wide + return _applyVisualMode(profileVm.visualMode, child); }, showSemanticsDebugger: false, debugShowCheckedModeBanner: false, diff --git a/lib/presentation/active_medication/active_medication_page.dart b/lib/presentation/active_medication/active_medication_page.dart index ae46d402..a893d7c0 100644 --- a/lib/presentation/active_medication/active_medication_page.dart +++ b/lib/presentation/active_medication/active_medication_page.dart @@ -137,7 +137,7 @@ class _ActiveMedicationPageState extends State { style: TextStyle( color: AppColors.textColor, fontSize: 27.f, - fontWeight: FontWeight.w600)), + fontWeight: FontWeight.w600,)), SizedBox(height: 16.h), SizedBox( height: 65.h, @@ -163,7 +163,7 @@ class _ActiveMedicationPageState extends State { style: TextStyle( color: AppColors.textColor, fontSize: 16, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), ), WidgetSpan( @@ -174,7 +174,7 @@ class _ActiveMedicationPageState extends State { style: TextStyle( fontSize: 12, color: AppColors.textColor, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), ), ), @@ -184,7 +184,7 @@ class _ActiveMedicationPageState extends State { style: TextStyle( color: AppColors.textColor, fontSize: 16, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), ), ], @@ -194,7 +194,7 @@ class _ActiveMedicationPageState extends State { style: TextStyle( color: AppColors.primaryRedBorderColor, fontSize: 12.f, - fontWeight: FontWeight.w500)), + fontWeight: FontWeight.w600,)), SizedBox(height: 16.h), Expanded( child: SingleChildScrollView( @@ -630,7 +630,7 @@ class _ActiveMedicationPageState extends State { style: TextStyle( fontSize: 12.f, color: AppColors.greyTextColor, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), ), ], @@ -722,7 +722,7 @@ class _ActiveMedicationPageState extends State { ? AppColors.primaryRedBorderColor : AppColors.greyTextColor, fontSize: 11.f, - fontWeight: FontWeight.w500), + fontWeight: FontWeight.w600,), ), SizedBox(height: 5.h), Text("${date.day}", diff --git a/lib/presentation/appointments/appointment_details_page.dart b/lib/presentation/appointments/appointment_details_page.dart index cafb740e..4d181230 100644 --- a/lib/presentation/appointments/appointment_details_page.dart +++ b/lib/presentation/appointments/appointment_details_page.dart @@ -1,6 +1,8 @@ import 'dart:async'; import 'dart:io'; +import 'dart:ui' as ui; +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/api_consts.dart'; @@ -14,6 +16,7 @@ import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/ask_doctor/ask_doctor_view_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/doctors_list_response_model.dart'; import 'package:hmg_patient_app_new/features/contact_us/contact_us_view_model.dart'; @@ -30,10 +33,14 @@ import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/appointments/appointment_payment_page.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/appointment_doctor_card.dart'; +import 'package:hmg_patient_app_new/presentation/appointments/widgets/appointment_rating_widget.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/ask_doctor_request_type_select.dart'; +import 'package:hmg_patient_app_new/presentation/ask_doctor/doctor_response_page.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/widgets/appointment_calendar.dart'; +import 'package:hmg_patient_app_new/presentation/book_appointment/widgets/bell_switch.dart'; import 'package:hmg_patient_app_new/presentation/contact_us/feedback_page.dart'; import 'package:hmg_patient_app_new/presentation/prescriptions/prescription_detail_page.dart'; +import 'package:hmg_patient_app_new/services/clarity_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -41,6 +48,7 @@ import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:lottie/lottie.dart'; import 'package:map_launcher/map_launcher.dart'; import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; @@ -66,18 +74,180 @@ class _AppointmentDetailsPageState extends State { String mapURL = ""; + bool isAppointmentWithin4Hours = false; + + // Countdown timer variables + Timer? _countdownTimer; + Duration? _timeRemaining; + String _countdownText = ""; + Function(void Function())? _modalSetState; // Callback for modal state updates + + // GlobalKey for BellAnimatedSwitch to control it programmatically + final GlobalKey _bellSwitchKey = GlobalKey(); + @override void initState() { + Clarity.setCurrentScreenName('Appointment Details Page'); + super.initState(); + scheduleMicrotask(() async { - CalenderUtilsNew calendarUtils = await CalenderUtilsNew.instance; - var doesExist = await calendarUtils.checkIfEventExist("${widget.patientAppointmentHistoryResponseModel.appointmentNo}"); - myAppointmentsViewModel.setAppointmentReminder(doesExist, widget.patientAppointmentHistoryResponseModel); - setState((){ + if (AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel)) { + myAppointmentsViewModel.getDoctorsRatingCheck( + doctorID: widget.patientAppointmentHistoryResponseModel.doctorID, + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo); + } else { + Duration difference = DateUtil.convertStringToDate(widget.patientAppointmentHistoryResponseModel.appointmentDate).difference(DateTime.now()); + if (difference.inMinutes > 240) { + isAppointmentWithin4Hours = false; + } else { + isAppointmentWithin4Hours = true; + } - }); + // // Check if reminder exists in calendar and update the flag + } + }); + // Initialize countdown timer for payment after first frame to ensure context is available + WidgetsBinding.instance.addPostFrameCallback((_) async { + if (mounted) { + _startCountdownTimer(); + // await _checkAndUpdateReminderStatus(); + } }); - super.initState(); + } + + /// Checks if a reminder exists in the calendar for this appointment + /// and updates the hasReminder flag accordingly + Future _checkAndUpdateReminderStatus() async { + try { + CalenderUtilsNew calender = CalenderUtilsNew.instance; + + // Check if reminder exists for this appointment + bool reminderExists = await calender.checkIfEventExist( + widget.patientAppointmentHistoryResponseModel.appointmentNo.toString() ?? "", + ); + + // Update the flag if it's different from current state + if (mounted && widget.patientAppointmentHistoryResponseModel.hasReminder != reminderExists) { + setState(() { + widget.patientAppointmentHistoryResponseModel.hasReminder = reminderExists; + }); + + // Also update in view model to keep data consistent + myAppointmentsViewModel.setAppointmentReminder(reminderExists, widget.patientAppointmentHistoryResponseModel); + } + + debugPrint("Reminder status for appointment ${widget.patientAppointmentHistoryResponseModel.appointmentNo}: $reminderExists"); + setState(() {}); + } catch (e) { + debugPrint("Error checking reminder status: $e"); + // If there's an error, default to false + if (mounted) { + setState(() { + widget.patientAppointmentHistoryResponseModel.hasReminder = false; + }); + } + } + } + + void _startCountdownTimer() { + final appointmentDate = DateUtil.convertStringToDate(widget.patientAppointmentHistoryResponseModel.appointmentDate); + _updateTimeRemaining(); + + _countdownTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + if (mounted) { + _updateTimeRemaining(); + } else { + timer.cancel(); + } + }); + } + + void _updateTimeRemaining() { + final appointmentDate = DateUtil.convertStringToDate(widget.patientAppointmentHistoryResponseModel.appointmentDate); + final now = DateTime.now(); + final difference = appointmentDate.difference(now); + + if (difference.isNegative) { + if (mounted) { + setState(() { + _timeRemaining = Duration.zero; + _countdownText = LocaleKeys.appointmentTimePassed.tr(context: context); + }); + } + // Also update modal if callback is available + _modalSetState?.call(() { + _timeRemaining = Duration.zero; + _countdownText = LocaleKeys.appointmentTimePassed.tr(context: context); + }); + _countdownTimer?.cancel(); + } else { + if (mounted) { + setState(() { + _timeRemaining = difference; + _countdownText = _formatDuration(difference); + }); + } + // Also update modal if callback is available + _modalSetState?.call(() { + _timeRemaining = difference; + _countdownText = _formatDuration(difference); + }); + } + } + + String _formatDuration(Duration duration) { + final days = duration.inDays; + final hours = duration.inHours.remainder(24); + final minutes = duration.inMinutes.remainder(60); + final seconds = duration.inSeconds.remainder(60); + + // Format: DD : HH : MM : SS + return '${days.toString().padLeft(2, '0')} : ${hours.toString().padLeft(2, '0')} : ${minutes.toString().padLeft(2, '0')} : ${seconds.toString().padLeft(2, '0')}'; + } + + @override + void dispose() { + _countdownTimer?.cancel(); + super.dispose(); + } + + // Helper method to build each time unit (number + label) + Widget _buildTimeUnit(String value, String label) { + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + alignment: Alignment.center, + child: value.toText32( + isBold: true, + color: AppColors.blackColor, + isEnglishOnly: true, + ), + ), + SizedBox(height: 4.h), + Container( + alignment: Alignment.center, + child: label.toText12( + color: AppColors.greyTextColor, + ), + ), + ], + ); + } + + // Helper method to build time separator (:) + Widget _buildTimeSeparator() { + return Padding( + padding: EdgeInsets.only(bottom: 16.h, left: 6.w, right: 6.w), + child: ':'.toText32( + isBold: true, + color: AppColors.blackColor, + ), + ); } @override @@ -95,7 +265,10 @@ class _AppointmentDetailsPageState extends State { Expanded( child: CollapsingListView( title: LocaleKeys.appointmentDetails.tr(context: context), - report: AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) + report: AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) && + widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment == false && + widget.patientAppointmentHistoryResponseModel.isClinicReBookingAllowed! == true && + widget.patientAppointmentHistoryResponseModel.isActiveDoctor! == true ? () { contactUsViewModel.setSelectedFeedbackType(FeedbackType(id: 1, nameEN: "Complaint for appointment", nameAR: 'شكوى على موعد')); contactUsViewModel.setPatientFeedbackSelectedAppointment(widget.patientAppointmentHistoryResponseModel); @@ -113,8 +286,8 @@ class _AppointmentDetailsPageState extends State { children: [ AppointmentDoctorCard( // renderWidgetForERDisplay: ((widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false) || - renderWidgetForERDisplay: - ((widget.patientAppointmentHistoryResponseModel.isExecludeDoctor ?? false) || !Utils.isClinicAllowedForRebook(widget.patientAppointmentHistoryResponseModel.clinicID)), + renderWidgetForERDisplay: ((widget.patientAppointmentHistoryResponseModel.isExecludeDoctor ?? false) || + !Utils.isClinicAllowedForRebook(widget.patientAppointmentHistoryResponseModel.clinicID ?? 0)), patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, onAskDoctorTap: () async { LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingDoctorAvailability.tr(context: context)); @@ -145,45 +318,198 @@ class _AppointmentDetailsPageState extends State { }); }, onCancelTap: () async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.cancellingAppointmentPleaseWait.tr(context: context)); - await myAppointmentsViewModel.cancelAppointment( - patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, - onSuccess: (apiResponse) { - LoaderBottomSheet.hideLoader(); - myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); - myAppointmentsViewModel.getPatientAppointments(true, false); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentCancelledSuccessfully.tr(context: context)), - callBackFunc: () { - Navigator.of(context).pop(); - }, - title: "", - isCloseButtonVisible: true, - isDismissible: false, - isFullScreen: false, - ); - }, - onError: (err) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: err.toString()), - callBackFunc: () {}, - title: "", - isCloseButtonVisible: true, - isDismissible: false, - isFullScreen: false, - ); - }); - var isEventAddedOrRemoved = await CalenderUtilsNew.instance.checkAndRemove( id:"${widget.patientAppointmentHistoryResponseModel.appointmentNo}", ); - setState(() { - myAppointmentsViewModel.setAppointmentReminder(isEventAddedOrRemoved, widget.patientAppointmentHistoryResponseModel); - }); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.cancelAppointmentConfirmMessage.tr(context: context), + isShowActionButtons: true, + onCancelTap: () { + Navigator.of(context).pop(); + }, + onConfirmTap: () async { + Navigator.of(context).pop(); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.cancellingAppointmentPleaseWait.tr(context: context)); + myAppointmentsViewModel.onTabChange(0); + myAppointmentsViewModel.updateListWRTTab(0); + await myAppointmentsViewModel.cancelAppointment( + patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, + onSuccess: (apiResponse) async { + LoaderBottomSheet.hideLoader(); + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.getPatientAppointments(true, false); + showCommonBottomSheet( + context, + child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentCancelledSuccessfully.tr(context: context)), + callBackFunc: (str) { + Navigator.of(context).pop(); + }, + title: "", + isCloseButtonVisible: false, + isDismissible: false, + isFullScreen: false, + isAutoDismiss: true, + height: ResponsiveExtension.screenHeight * 0.3, + ); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight(context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () {}, + title: "", + isCloseButtonVisible: true, + isDismissible: false, + isFullScreen: false); + }); + }), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); }, onRescheduleTap: () async { openDoctorScheduleCalendar(); }, + timerWidget: (_timeRemaining == null || _timeRemaining == Duration.zero) + ? null + : Column( + children: [ + SizedBox(height: 16.w), + Divider(height: 1, color: AppColors.dividerColor), + SizedBox(height: 16.w), + Directionality( + textDirection: ui.TextDirection.ltr, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: _buildTimeUnit( + _timeRemaining!.inDays.toString().padLeft(2, '0'), + LocaleKeys.days.tr(context: context), + ), + ), + _buildTimeSeparator(), + Expanded( + child: _buildTimeUnit( + _timeRemaining!.inHours.remainder(24).toString().padLeft(2, '0'), + LocaleKeys.hours.tr(context: context), + ), + ), + _buildTimeSeparator(), + Expanded( + child: _buildTimeUnit( + _timeRemaining!.inMinutes.remainder(60).toString().padLeft(2, '0'), + LocaleKeys.minutes.tr(context: context), + ), + ), + _buildTimeSeparator(), + Expanded( + child: _buildTimeUnit( + _timeRemaining!.inSeconds.remainder(60).toString().padLeft(2, '0'), + LocaleKeys.seconds.tr(context: context), + ), + ), + ], + ), + ), + SizedBox(height: 16.h), + Row( + mainAxisSize: MainAxisSize.max, + children: [ + Utils.buildSvgWithAssets( + icon: AppAssets.prescription_reminder_icon, width: 40.w, height: 40.h, applyThemeColor: false), + SizedBox(width: 8.w), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 4.h, + children: [ + LocaleKeys.setReminder.tr(context: context).toText13(isBold: true), + LocaleKeys.notifyMeBeforeAppointment + .tr(context: context) + .toText11(color: AppColors.textColorLight, isBold: true), + ], + ), + const Spacer(), + BellAnimatedSwitch( + key: _bellSwitchKey, + width: 56.w, + height: 38.h, + initialValue: widget.patientAppointmentHistoryResponseModel.hasReminder ?? false, + activeColor: AppColors.successColor.withOpacity(0.2), + inactiveColor: AppColors.lightGrayBGColor, + activeCircleColor: AppColors.successColor, + inactiveCircleColor: AppColors.greyTextColor, + activeIconColor: AppColors.bgGreenColor, + inactiveIconColor: AppColors.greyTextColor, + activeIcon: + Utils.buildSvgWithAssets(icon: AppAssets.bell, iconColor: AppColors.whiteColor, width: 12.w, height: 12.h), + inactiveIcon: + Utils.buildSvgWithAssets(icon: AppAssets.bell, iconColor: AppColors.whiteColor, width: 12.w, height: 12.h), + onChanged: (newValue) async { + CalenderUtilsNew calender = CalenderUtilsNew.instance; + bool isEventAddedOrRemoved = false; + if (newValue == true) { + DateTime startDate = DateTime.now(); + DateTime endDate = + DateUtil.convertStringToDate(widget.patientAppointmentHistoryResponseModel.appointmentDate); + + // Show reminder bottom sheet and check if permission was granted + bool permissionGranted = await BottomSheetUtils().showReminderBottomSheet( + context, + endDate, + widget.patientAppointmentHistoryResponseModel.doctorNameObj ?? "", + "${widget.patientAppointmentHistoryResponseModel.appointmentNo}" ?? "", + "", + "", + title: "Appointment with ${widget.patientAppointmentHistoryResponseModel.doctorNameObj}", + description: + "${widget.patientAppointmentHistoryResponseModel.doctorNameObj} will be having an appointment on ${widget.patientAppointmentHistoryResponseModel.appointmentDate}", + onSuccess: () { + setState(() { + myAppointmentsViewModel.setAppointmentReminder( + newValue, widget.patientAppointmentHistoryResponseModel); + }); + }, + isMultiAllowed: true, + onMultiDateSuccess: (int selectedIndex) async { + isEventAddedOrRemoved = await calender.createOrUpdateEvent( + title: + "Appointment Reminder with ${widget.patientAppointmentHistoryResponseModel.doctorNameObj} on ${DateUtil.convertStringToDate(widget.patientAppointmentHistoryResponseModel.appointmentDate)}, Appointment #${widget.patientAppointmentHistoryResponseModel.appointmentNo}", + description: + "Appointment Reminder with ${widget.patientAppointmentHistoryResponseModel.doctorNameObj} in ${widget.patientAppointmentHistoryResponseModel.projectName}", + scheduleDateTime: + DateUtil.convertStringToDate(widget.patientAppointmentHistoryResponseModel.appointmentDate), + eventId: "${widget.patientAppointmentHistoryResponseModel.appointmentNo}", + location: '', + reminderMinutes: selectedIndex); + setState(() { + myAppointmentsViewModel.setAppointmentReminder( + isEventAddedOrRemoved, widget.patientAppointmentHistoryResponseModel); + }); + }, + isForAppointment: true); + + // If permission was not granted, revert the switch back to OFF + if (!permissionGranted) { + _bellSwitchKey.currentState?.setSwitchValue(false); + } + } else { + isEventAddedOrRemoved = await calender.checkAndRemove( + id: "${widget.patientAppointmentHistoryResponseModel.appointmentNo}", + ); + setState(() { + myAppointmentsViewModel.setAppointmentReminder( + !isEventAddedOrRemoved, widget.patientAppointmentHistoryResponseModel); + }); + } + }, + ) + ], + ).paddingSymmetrical(16.w, 0) + ], + ), ), SizedBox(height: 16.h), !AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) @@ -210,47 +536,15 @@ class _AppointmentDetailsPageState extends State { LocaleKeys.appointmentStatus.tr(context: context).toText16(isBold: true), SizedBox(height: 4.h), (!AppointmentType.isConfirmed(widget.patientAppointmentHistoryResponseModel) - ? LocaleKeys.notConfirmed.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500) - : LocaleKeys.confirmed.tr(context: context).toText12(color: AppColors.successColor, fontWeight: FontWeight.w500)), + ? LocaleKeys.notConfirmed + .tr(context: context) + .toText12(color: AppColors.primaryRedColor, isBold: true) + : LocaleKeys.confirmed + .tr(context: context) + .toText12(color: AppColors.successColor, isBold: true)), SizedBox(height: 16.h), ], ), - ((!AppointmentType.isConfirmed(widget.patientAppointmentHistoryResponseModel) && widget.patientAppointmentHistoryResponseModel.nextAction != 10) - ? CustomButton( - text: LocaleKeys.confirm.tr(), - onPressed: () async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.confirmingAppointmentPleaseWait.tr(context: context)); - await myAppointmentsViewModel.confirmAppointment( - patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, - onSuccess: (apiResponse) { - LoaderBottomSheet.hideLoader(); - myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); - myAppointmentsViewModel.initAppointmentsViewModel(); - myAppointmentsViewModel.getPatientAppointments(true, false); - showCommonBottomSheetWithoutHeight( - title: "", - context, - child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentConfirmedSuccessfully.tr(context: context)), - callBackFunc: () { - Navigator.of(context).pop(); - }, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }); - }, - backgroundColor: AppColors.successColor, - borderColor: AppColors.successColor, - textColor: Colors.white, - fontSize: 14.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - height: 40.h, - icon: AppAssets.confirm_appointment_icon, - iconColor: Colors.white, - iconSize: 16.h, - ) - : SizedBox.shrink()) ], ), //TODO Add countdown timer in case of LiveCare Appointment @@ -263,7 +557,9 @@ class _AppointmentDetailsPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.doctorWillCallYou.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.doctorWillCallYou + .tr(context: context) + .toText14(color: AppColors.greyTextColor, isBold: true), ], ), ), @@ -271,22 +567,28 @@ class _AppointmentDetailsPageState extends State { ) : Stack( children: [ - ClipRRect( - clipBehavior: Clip.hardEdge, - borderRadius: BorderRadius.circular(24.r), - // Todo: what is this???? Api Key??? 😲 - child: Image.network( - "https://maps.googleapis.com/maps/api/staticmap?center=${widget.patientAppointmentHistoryResponseModel.latitude},${widget.patientAppointmentHistoryResponseModel.longitude}&zoom=14&size=${(MediaQuery.of(context).size.width * 1.5).toInt()}x${(MediaQuery.of(context).size.height * 0.35).toInt()}&maptype=roadmap&markers=color:red%7C${widget.patientAppointmentHistoryResponseModel.latitude},${widget.patientAppointmentHistoryResponseModel.longitude}&key=${ApiKeyConstants.googleMapsApiKey}", - fit: BoxFit.contain, + SizedBox( + width: double.infinity, + child: ClipRRect( + clipBehavior: Clip.hardEdge, + borderRadius: BorderRadius.circular(24.r), + // Todo: what is this???? Api Key??? 😲 + child: Utils.buildImgWithNetwork( + url: "https://maps.googleapis.com/maps/api/staticmap?center=${widget.patientAppointmentHistoryResponseModel.latitude},${widget.patientAppointmentHistoryResponseModel.longitude}&zoom=14&size=${(MediaQuery.of(context).size.width * 1.5).toInt()}x${(MediaQuery.of(context).size.height * 0.35).toInt()}&maptype=roadmap&markers=color:red%7C${widget.patientAppointmentHistoryResponseModel.latitude},${widget.patientAppointmentHistoryResponseModel.longitude}&key=${ApiKeyConstants.googleMapsApiKey}", + iconColor: AppColors.transparent, + fit: BoxFit.cover, + width: double.infinity, + height: 180.h), ), ), Positioned( bottom: 0, child: SizedBox( - width: MediaQuery.of(context).size.width * 0.785, + width: MediaQuery.of(context).size.width - 85.w, child: CustomButton( onPressed: () async { - if (widget.patientAppointmentHistoryResponseModel.projectID == 130 || widget.patientAppointmentHistoryResponseModel.projectID == 120) { + if (widget.patientAppointmentHistoryResponseModel.projectID == 130 || + widget.patientAppointmentHistoryResponseModel.projectID == 120) { showDirectionsBottomSheet(); } else { await MapLauncher.showMarker( @@ -306,10 +608,12 @@ class _AppointmentDetailsPageState extends State { }, text: LocaleKeys.getDirections.tr(context: context), backgroundColor: AppColors.bookAppointment.withValues(alpha: 0.8), - borderColor: AppointmentType.getNextActionButtonColor(widget.patientAppointmentHistoryResponseModel.nextAction).withValues(alpha: 0.01), + borderColor: AppointmentType.getNextActionButtonColor( + widget.patientAppointmentHistoryResponseModel.nextAction) + .withValues(alpha: 0.01), textColor: Colors.white, fontSize: 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), height: 40.h, @@ -322,214 +626,155 @@ class _AppointmentDetailsPageState extends State { ], ), SizedBox(height: 8.h), - bookAppointmentsViewModel.appointmentNearestGateResponseModel != null ? Wrap( - direction: Axis.horizontal, - spacing: 8.w, - runSpacing: 8.h, - children: [ - AppCustomChipWidget( - labelText: bookAppointmentsVM.isAppointmentNearestGateLoading - ? "Floor: Ground Floor" - : "Floor: ${getIt.get().isArabic() ? bookAppointmentsViewModel.appointmentNearestGateResponseModel!.clinicLocationN : bookAppointmentsViewModel.appointmentNearestGateResponseModel!.clinicLocation}", - ).toShimmer2(isShow: bookAppointmentsVM.isAppointmentNearestGateLoading), - AppCustomChipWidget( - labelText: - "Nearest Gate: ${getIt.get().isArabic() ? bookAppointmentsVM.appointmentNearestGateResponseModel!.nearestGateNumberN : bookAppointmentsVM.appointmentNearestGateResponseModel!.nearestGateNumber}") - .toShimmer2(isShow: bookAppointmentsVM.isAppointmentNearestGateLoading), - ], - ) : SizedBox.shrink(), + bookAppointmentsViewModel.appointmentNearestGateResponseModel != null + ? Wrap( + direction: Axis.horizontal, + spacing: 8.w, + runSpacing: 8.h, + children: [ + AppCustomChipWidget( + labelText: bookAppointmentsVM.isAppointmentNearestGateLoading + ? "Floor: Ground Floor" + : "${LocaleKeys.floor.tr(context: context)}: ${getIt.get().isArabic() ? bookAppointmentsViewModel.appointmentNearestGateResponseModel!.clinicLocationN : bookAppointmentsViewModel.appointmentNearestGateResponseModel!.clinicLocation}", + ).toShimmer2(isShow: bookAppointmentsVM.isAppointmentNearestGateLoading), + AppCustomChipWidget( + labelText: + "${LocaleKeys.nearestGate.tr(context: context)}: ${getIt.get().isArabic() ? bookAppointmentsVM.appointmentNearestGateResponseModel!.nearestGateNumberN : bookAppointmentsVM.appointmentNearestGateResponseModel!.nearestGateNumber}") + .toShimmer2(isShow: bookAppointmentsVM.isAppointmentNearestGateLoading), + ], + ) + : SizedBox.shrink(), ], ), ), ); }), SizedBox(height: 16.h), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.r, - hasShadow: false, - ), - child: Row( - mainAxisSize: MainAxisSize.max, - children: [ - Utils.buildSvgWithAssets(icon: AppAssets.prescription_reminder_icon, width: 35.h, height: 35.h, applyThemeColor: false), - SizedBox(width: 8.h), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.setReminder.tr(context: context).toText13(isBold: true), - LocaleKeys.notifyMeBeforeAppointment.tr(context: context).toText11(color: AppColors.textColorLight, weight: FontWeight.w500), - ], - ), - const Spacer(), - Switch( - // activeThumbColor: AppColors.successColor, - activeTrackColor: AppColors.successColor.withValues(alpha: .15), - value: widget.patientAppointmentHistoryResponseModel.hasReminder!, - onChanged: (newValue) async { - CalenderUtilsNew calender = CalenderUtilsNew.instance; - bool isEventAddedOrRemoved = false; - if(newValue == true){ - DateTime startDate = DateTime.now(); - DateTime endDate = DateUtil.convertStringToDate(widget - .patientAppointmentHistoryResponseModel.appointmentDate); - BottomSheetUtils().showReminderBottomSheet( - context, - endDate, - widget.patientAppointmentHistoryResponseModel.doctorNameObj??"", - "${widget.patientAppointmentHistoryResponseModel.appointmentNo}"??"", - "", - "", - title: "Appointment with ${widget.patientAppointmentHistoryResponseModel.doctorNameObj}", - description: - "${widget.patientAppointmentHistoryResponseModel.doctorNameObj} will be having an appointment on ${widget.patientAppointmentHistoryResponseModel.appointmentDate}", - onSuccess: () { - setState(() { - myAppointmentsViewModel.setAppointmentReminder(newValue, widget.patientAppointmentHistoryResponseModel); - }); - }, - isMultiAllowed: true, - onMultiDateSuccess: (int selectedIndex) async { - - isEventAddedOrRemoved = await calender.createOrUpdateEvent( - title: - "Appointment Reminder with ${widget.patientAppointmentHistoryResponseModel.doctorNameObj} on ${DateUtil.convertStringToDate(widget.patientAppointmentHistoryResponseModel.appointmentDate)}, Appointment #${widget.patientAppointmentHistoryResponseModel.appointmentNo}", - description: - "Appointment Reminder with ${widget.patientAppointmentHistoryResponseModel.doctorNameObj} in ${widget.patientAppointmentHistoryResponseModel.projectName}", - scheduleDateTime: DateUtil.convertStringToDate(widget - .patientAppointmentHistoryResponseModel.appointmentDate), - eventId: "${widget.patientAppointmentHistoryResponseModel.appointmentNo}", - location: '', - reminderMinutes: selectedIndex - ); - setState(() { - myAppointmentsViewModel.setAppointmentReminder(isEventAddedOrRemoved, widget.patientAppointmentHistoryResponseModel); - }); - }, - ); - }else { - isEventAddedOrRemoved = await calender.checkAndRemove( id:"${widget.patientAppointmentHistoryResponseModel.appointmentNo}", ); - setState(() { - myAppointmentsViewModel.setAppointmentReminder(!isEventAddedOrRemoved, widget.patientAppointmentHistoryResponseModel); - }); - } - - - }, - ), - ], - ).paddingSymmetrical(16.h, 16.h), - ), SizedBox(height: 16.h), ], ) // : SizedBox.shrink() - : GridView( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 3, - crossAxisSpacing: 16.h, - mainAxisSpacing: 16.w, - mainAxisExtent: 115.h, - ), - physics: NeverScrollableScrollPhysics(), - padding: EdgeInsets.zero, - shrinkWrap: true, - children: [ - MedicalFileCard( - label: LocaleKeys.labResults.tr(context: context), - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.lab_result_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingLabResults.tr(context: context)); - await labViewModel.getLabResultsByAppointmentNo( - appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo, - projectID: widget.patientAppointmentHistoryResponseModel.projectID, - clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, - doctorID: widget.patientAppointmentHistoryResponseModel.doctorID, - doctorName: widget.patientAppointmentHistoryResponseModel.doctorNameObj!, - clinicName: widget.patientAppointmentHistoryResponseModel.clinicName!, - projectName: widget.patientAppointmentHistoryResponseModel.projectName!, - appointmentDate: widget.patientAppointmentHistoryResponseModel.appointmentDate!, - onSuccess: (val) { - LoaderBottomSheet.hideLoader(); - }, - onError: (err) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: err), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }, - ); - }), - MedicalFileCard( - label: "${LocaleKeys.radiology.tr(context: context)} ${LocaleKeys.radiologySubtitle.tr(context: context)}", - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.radiology_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingRadiologyResults.tr(context: context)); - await radiologyViewModel.getPatientRadiologyOrdersByAppointment( - appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo, - projectID: widget.patientAppointmentHistoryResponseModel.projectID, - onSuccess: (val) { - LoaderBottomSheet.hideLoader(); - }, - onError: (err) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: err), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }, - ); - }), - MedicalFileCard( - label: LocaleKeys.prescriptions.tr(context: context), - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.prescription_item_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingAppointmentPrescriptions.tr(context: context)); - await prescriptionsViewModel.getPrescriptionDetails( - getPrescriptionRequestModel(), - onSuccess: (val) { - LoaderBottomSheet.hideLoader(); - if (val.data.isNotEmpty) { - PatientPrescriptionsResponseModel patientPrescriptionsResponseModel = PatientPrescriptionsResponseModel( - doctorImageURL: widget.patientAppointmentHistoryResponseModel.doctorImageURL, - doctorName: widget.patientAppointmentHistoryResponseModel.doctorNameObj, - appointmentDate: widget.patientAppointmentHistoryResponseModel.appointmentDate, - clinicDescription: widget.patientAppointmentHistoryResponseModel.clinicName, - decimalDoctorRate: widget.patientAppointmentHistoryResponseModel.decimalDoctorRate, - name: widget.patientAppointmentHistoryResponseModel.projectName, - isHomeMedicineDeliverySupported: false, - projectID: widget.patientAppointmentHistoryResponseModel.projectID, - clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, - doctorID: widget.patientAppointmentHistoryResponseModel.doctorID, - setupID: widget.patientAppointmentHistoryResponseModel.setupID, + : Consumer(builder: (context, myAppointmentsVM, child) { + return GridView( + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + crossAxisSpacing: 16.h, + mainAxisSpacing: 16.w, + childAspectRatio: isFoldable ? 1.2 : (isTablet ? 1.4 : 0.98), + ), + physics: NeverScrollableScrollPhysics(), + padding: EdgeInsets.zero, + shrinkWrap: true, + children: [ + MedicalFileCard( + label: LocaleKeys.labResults.tr(context: context), + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.lab_result_icon, + isLargeText: true, + iconSize: 36.w, + ).onPress(() async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingLabResults.tr(context: context)); + await labViewModel.getLabResultsByAppointmentNo( + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + doctorID: widget.patientAppointmentHistoryResponseModel.doctorID, + doctorName: widget.patientAppointmentHistoryResponseModel.doctorNameObj!, + clinicName: widget.patientAppointmentHistoryResponseModel.clinicName!, + projectName: widget.patientAppointmentHistoryResponseModel.projectName!, + appointmentDate: widget.patientAppointmentHistoryResponseModel.appointmentDate!, + onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, ); - Navigator.of(context).push( - CustomPageRoute( - page: PrescriptionDetailPage( - isFromAppointments: true, prescriptionsResponseModel: patientPrescriptionsResponseModel), - ), + }, + ); + }), + MedicalFileCard( + label: "${LocaleKeys.radiology.tr(context: context)} ${LocaleKeys.radiologySubtitle.tr(context: context)}", + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.radiology_icon, + isLargeText: true, + iconSize: 36.w, + ).onPress(() async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingRadiologyResults.tr(context: context)); + await radiologyViewModel.getPatientRadiologyOrdersByAppointment( + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, ); - } else { + }, + ); + }), + MedicalFileCard( + label: LocaleKeys.prescriptions.tr(context: context), + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.prescription_item_icon, + isLargeText: true, + iconSize: 36.w, + ).onPress(() async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingAppointmentPrescriptions.tr(context: context)); + await prescriptionsViewModel.getPrescriptionDetails( + getPrescriptionRequestModel(), + onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + if (val.data.isNotEmpty) { + PatientPrescriptionsResponseModel patientPrescriptionsResponseModel = PatientPrescriptionsResponseModel( + doctorImageURL: widget.patientAppointmentHistoryResponseModel.doctorImageURL, + doctorName: widget.patientAppointmentHistoryResponseModel.doctorNameObj, + appointmentDate: widget.patientAppointmentHistoryResponseModel.appointmentDate, + clinicDescription: widget.patientAppointmentHistoryResponseModel.clinicName, + decimalDoctorRate: widget.patientAppointmentHistoryResponseModel.decimalDoctorRate, + name: widget.patientAppointmentHistoryResponseModel.projectName, + isHomeMedicineDeliverySupported: val.data.first.isHomeMedicineDeliverySupported ?? false, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + doctorID: widget.patientAppointmentHistoryResponseModel.doctorID, + setupID: widget.patientAppointmentHistoryResponseModel.setupID, + isInOutPatient: widget.patientAppointmentHistoryResponseModel.isInOutPatient, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo, + episodeID: widget.patientAppointmentHistoryResponseModel.episodeID, + dischargeNo: 0, + ); + Navigator.of(context).push( + CustomPageRoute( + page: PrescriptionDetailPage( + isFromAppointments: true, prescriptionsResponseModel: patientPrescriptionsResponseModel), + ), + ); + } else { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.noPrescriptionsForAppointment.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( context, child: Utils.getErrorWidget(loadingText: LocaleKeys.noPrescriptionsForAppointment.tr(context: context)), @@ -537,233 +782,172 @@ class _AppointmentDetailsPageState extends State { isFullScreen: false, isCloseButtonVisible: true, ); - } - }, - onError: (err) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: LocaleKeys.noPrescriptionsForAppointment.tr(context: context)), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }, - ); - // Navigator.of(context).push( - // CustomPageRoute( - // page: VaccineListPage(), - // ), - // ); - }), - ], - ), - // Column( - // crossAxisAlignment: CrossAxisAlignment.start, - // children: [ - // "Lab & Radiology".needTranslation.toText18(isBold: true), - // SizedBox(height: 16.h), - // Row( - // children: [ - // Expanded( - // child: LabRadCard( - // icon: AppAssets.lab_result_icon, - // labelText: LocaleKeys.labResults.tr(context: context), - // // labOrderTests: ["Complete blood count", "Creatinine", "Blood Sugar"], - // // labOrderTests: labViewModel.isLabOrdersLoading ? [] : labViewModel.labOrderTests, - // labOrderTests: [], - // // isLoading: labViewModel.isLabOrdersLoading, - // isLoading: false, - // ).onPress(() { - // Navigator.of(context).push( - // CustomPageRoute( - // page: LabOrdersPage(), - // ), - // ); - // }), - // ), - // SizedBox(width: 16.h), - // Expanded( - // child: LabRadCard( - // icon: AppAssets.radiology_icon, - // labelText: LocaleKeys.radiology.tr(context: context), - // // labOrderTests: ["Chest X-ray", "Abdominal Ultrasound", "Dental X-ray"], - // labOrderTests: [], - // isLoading: false, - // ).onPress(() { - // Navigator.of(context).push( - // CustomPageRoute( - // page: RadiologyOrdersPage(), - // ), - // ); - // }), - // ), - // ], - // ), - // SizedBox(height: 16.h), - // LocaleKeys.prescriptions.tr(context: context).toText18(isBold: true), - // SizedBox(height: 16.h), - // Consumer(builder: (context, prescriptionVM, child) { - // return prescriptionVM.isPrescriptionsDetailsLoading - // ? const MoviesShimmerWidget() - // : Container( - // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - // color: Colors.white, - // borderRadius: 20.r, - // ), - // padding: EdgeInsets.all(16.w), - // child: Column( - // children: [ - // // ListView.separated( - // // itemCount: prescriptionVM.prescriptionDetailsList.length, - // // shrinkWrap: true, - // // padding: EdgeInsets.only(right: 8.w), - // // physics: NeverScrollableScrollPhysics(), - // // itemBuilder: (context, index) { - // // return AnimationConfiguration.staggeredList( - // // position: index, - // // duration: const Duration(milliseconds: 500), - // // child: SlideAnimation( - // // verticalOffset: 100.0, - // // child: FadeInAnimation( - // // child: Row( - // // children: [ - // // Utils.buildSvgWithAssets( - // // icon: AppAssets.prescription_item_icon, - // // width: 40.h, - // // height: 40.h, - // // ), - // // SizedBox(width: 8.h), - // // Row( - // // mainAxisSize: MainAxisSize.max, - // // children: [ - // // Column( - // // children: [ - // // prescriptionVM.prescriptionDetailsList[index].itemDescription! - // // .toText12(isBold: true, maxLine: 1), - // // "Prescribed By: ${widget.patientAppointmentHistoryResponseModel.doctorTitle} ${widget.patientAppointmentHistoryResponseModel.doctorNameObj}" - // // .needTranslation - // // .toText10( - // // weight: FontWeight.w500, - // // color: AppColors.greyTextColor, - // // letterSpacing: -0.4), - // // ], - // // ), - // // SizedBox(width: 68.w), - // // Transform.flip( - // // flipX: appState.isArabic(), - // // child: Utils.buildSvgWithAssets( - // // icon: AppAssets.forward_arrow_icon, - // // iconColor: AppColors.blackColor, - // // width: 18.w, - // // height: 13.h, - // // fit: BoxFit.contain, - // // ), - // // ), - // // ], - // // ), - // // ], - // // ), - // // ), - // // ), - // // ); - // // }, - // // separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h), - // // ).onPress(() { - // // prescriptionVM.setPrescriptionsDetailsLoading(); - // // Navigator.of(context).push( - // // CustomPageRoute( - // // page: PrescriptionDetailPage(prescriptionsResponseModel: getPrescriptionRequestModel()), - // // ), - // // ); - // // }), - // SizedBox(height: 16.h), - // const Divider(color: AppColors.dividerColor), - // SizedBox(height: 16.h), - // // Wrap( - // // runSpacing: 6.w, - // // children: [ - // // // Expanded( - // // // child: CustomButton( - // // // text: widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported! ? LocaleKeys.resendOrder.tr(context: context) : LocaleKeys.prescriptionDeliveryError.tr(context: context), - // // // onPressed: () {}, - // // // backgroundColor: AppColors.secondaryLightRedColor, - // // // borderColor: AppColors.secondaryLightRedColor, - // // // textColor: AppColors.primaryRedColor, - // // // fontSize: 14, - // // // fontWeight: FontWeight.w500, - // // // borderRadius: 12.h, - // // // height: 40.h, - // // // icon: AppAssets.appointment_calendar_icon, - // // // iconColor: AppColors.primaryRedColor, - // // // iconSize: 16.h, - // // // ), - // // // ), - // // // SizedBox(width: 16.h), - // // Expanded( - // // child: CustomButton( - // // text: "Refill & Delivery".needTranslation, - // // onPressed: () { - // // Navigator.of(context) - // // .push( - // // CustomPageRoute( - // // page: PrescriptionsListPage(), - // // ), - // // ) - // // .then((val) { - // // prescriptionsViewModel.setPrescriptionsDetailsLoading(); - // // prescriptionsViewModel.getPrescriptionDetails(getPrescriptionRequestModel()); - // // }); - // // }, - // // backgroundColor: AppColors.secondaryLightRedColor, - // // borderColor: AppColors.secondaryLightRedColor, - // // textColor: AppColors.primaryRedColor, - // // fontSize: 14.f, - // // fontWeight: FontWeight.w500, - // // borderRadius: 12.r, - // // height: 40.h, - // // icon: AppAssets.requests, - // // iconColor: AppColors.primaryRedColor, - // // iconSize: 16.h, - // // ), - // // ), - // // - // // SizedBox(width: 16.w), - // // Expanded( - // // child: CustomButton( - // // text: "All Prescriptions".needTranslation, - // // onPressed: () { - // // Navigator.of(context) - // // .push( - // // CustomPageRoute( - // // page: PrescriptionsListPage(), - // // ), - // // ) - // // .then((val) { - // // prescriptionsViewModel.setPrescriptionsDetailsLoading(); - // // prescriptionsViewModel.getPrescriptionDetails(getPrescriptionRequestModel()); - // // }); - // // }, - // // backgroundColor: AppColors.secondaryLightRedColor, - // // borderColor: AppColors.secondaryLightRedColor, - // // textColor: AppColors.primaryRedColor, - // // fontSize: 14.f, - // // fontWeight: FontWeight.w500, - // // borderRadius: 12.r, - // // height: 40.h, - // // icon: AppAssets.requests, - // // iconColor: AppColors.primaryRedColor, - // // iconSize: 16.h, - // // ), - // // ), - // // ], - // // ), - // ], - // ), - // ); - // }), - // ], - // ), + }, + ); + // Navigator.of(context).push( + // CustomPageRoute( + // page: VaccineListPage(), + // ), + // ); + }), + MedicalFileCard( + label: LocaleKeys.doctorResponses.tr(context: context), + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.ask_doctor_medical_file_icon, + isLargeText: true, + iconSize: 36.w, + ).onPress(() { + getIt.get().initAskDoctorViewModel(); + getIt.get().getDoctorResponses(); + Navigator.of(context).push( + CustomPageRoute( + page: DoctorResponsePage(), + ), + ); + }), + MedicalFileCard( + label: LocaleKeys.viewInvoiceDetails.tr(context: context), + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.invoices_list_icon, + isLargeText: true, + iconSize: 36.w, + ).onPress(() { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingInvoiceDetails.tr(context: context)); + myAppointmentsViewModel.getAppointmentInvoice( + appointmentNum: widget.patientAppointmentHistoryResponseModel.appointmentNo, + onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + ); + }), + myAppointmentsVM.isAppointmentRatedResponseLoading + ? MedicalFileCard( + label: "Medical File", + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.appointmentRatingIcon, + isLargeText: true, + iconSize: 36.w, + isLocked: false, + ).toShimmer2() + : myAppointmentsVM.appointmentRatedResponseModel != null + ? MedicalFileCard( + label: !(myAppointmentsVM.appointmentRatedResponseModel!.isAllowedToRate ?? false) + ? LocaleKeys.ratingSubmitted.tr(context: context) + : LocaleKeys.doctorRatingAppointment.tr(context: context), + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.appointmentRatingIcon, + isLargeText: true, + iconSize: 36.w, + isLocked: !(myAppointmentsVM.appointmentRatedResponseModel!.isAllowedToRate ?? false), + ).onPress(() { + if (myAppointmentsVM.appointmentRatedResponseModel?.isAllowedToRate ?? false) { + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.doctorRating.tr(context: context), + isCloseButtonVisible: true, + child: StatefulBuilder( + builder: (context, setState) { + return AppointmentRatingWidget( + patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, + ); + }, + ), + callBackFunc: () { + myAppointmentsViewModel.getDoctorsRatingCheck( + doctorID: widget.patientAppointmentHistoryResponseModel.doctorID, + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo); + }, + isFullScreen: false, + ); + } + }) + : SizedBox.shrink(), + (widget.patientAppointmentHistoryResponseModel.isParkingAvailable ?? false) + ? MedicalFileCard( + label: LocaleKeys.getParkingQR.tr(context: context), + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.appointment_parking_icon, + isLargeText: true, + iconSize: 36.w, + ).onPress(() { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr(context: context)); + myAppointmentsViewModel.getParkingQR( + widget.patientAppointmentHistoryResponseModel.appointmentNo, + widget.patientAppointmentHistoryResponseModel.projectID, + onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.parkingQR.tr(context: context), + context, + child: Column( + children: [ + LocaleKeys.parkingQRDesc.tr(context: context).toText16(), + SizedBox(height: 16.h), + Image.memory( + myAppointmentsViewModel.parkingQRImageBytes!, + width: 156.w, + height: 156.h, + fit: BoxFit.cover, + gaplessPlayback: true, // Prevents blink during image rebuild + ), + SizedBox(height: 16.h), + CustomButton( + text: LocaleKeys.done.tr(context: context), + onPressed: () { + openDoctorScheduleCalendar(); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: Colors.white, + fontSize: 16.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 50.h, + icon: AppAssets.checkmark_icon, + iconColor: Colors.white, + iconSize: 18.h, + ).paddingSymmetrical(0.h, 0.h), + ], + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + ); + }) + : SizedBox.shrink(), + ], + ); + }), ], ).paddingAll(24.w), ), @@ -800,21 +984,16 @@ class _AppointmentDetailsPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Expanded( - child: LocaleKeys.upcomingPaymentNow - .tr(context: context) - .toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor)), + child: LocaleKeys.upcomingPaymentNow.tr(context: context).toText12(isBold: true, color: AppColors.greyTextColor)), "VAT 15%(${widget.patientAppointmentHistoryResponseModel.patientTaxAmount})" - .toText14(isBold: true, color: AppColors.greyTextColor, letterSpacing: -2), + .toText14(isBold: true, color: AppColors.greyTextColor, letterSpacing: -0.64), ], ), SizedBox(height: 18.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - SizedBox( - width: 150.h, - child: Utils.getPaymentMethods(), - ), + Utils.getPaymentMethods(), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ @@ -830,39 +1009,40 @@ class _AppointmentDetailsPageState extends State { ], ).paddingOnly(left: 16.h, top: 24.h, right: 16.h, bottom: 0.h), AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) - ? - (widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment! || - widget.patientAppointmentHistoryResponseModel.isExecludeDoctor! || - Utils.isClinicAllowedForRebook(widget.patientAppointmentHistoryResponseModel.clinicID)) - ? CustomButton( + ? (!(widget.patientAppointmentHistoryResponseModel.isActiveDoctor ?? true) || + widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment! || + widget.patientAppointmentHistoryResponseModel.isExecludeDoctor! || + widget.patientAppointmentHistoryResponseModel.isClinicReBookingAllowed == false || + !Utils.isClinicAllowedForRebook(widget.patientAppointmentHistoryResponseModel.clinicID)) + ? SizedBox.shrink() + : CustomButton( text: LocaleKeys.rebookAppointment.tr(context: context), onPressed: () { openDoctorScheduleCalendar(); }, - backgroundColor: AppColors.successColor, - borderColor: AppColors.successColor, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, textColor: Colors.white, fontSize: 16.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - padding: EdgeInsets.symmetric(horizontal: 10.w), - height: 50.h, - icon: AppAssets.add_icon, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 50.h, + icon: AppAssets.add_icon, iconColor: Colors.white, iconSize: 18.h, ).paddingSymmetrical(16.h, 24.h) - : SizedBox.shrink() : CustomButton( text: AppointmentType.getNextActionText(widget.patientAppointmentHistoryResponseModel.nextAction), onPressed: () { handleAppointmentNextAction(widget.patientAppointmentHistoryResponseModel.nextAction); }, backgroundColor: AppointmentType.getNextActionButtonColor(widget.patientAppointmentHistoryResponseModel.nextAction), - borderColor: - AppointmentType.getNextActionButtonColor(widget.patientAppointmentHistoryResponseModel.nextAction).withOpacity(0.01), + borderColor: AppointmentType.getNextActionButtonColor(widget.patientAppointmentHistoryResponseModel.nextAction) + .withValues(alpha: 0.01), textColor: widget.patientAppointmentHistoryResponseModel.nextAction == 15 ? AppColors.textColor : Colors.white, fontSize: 16.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), height: 56.h, @@ -892,21 +1072,24 @@ class _AppointmentDetailsPageState extends State { SizedBox(height: 4.h), LocaleKeys.confirmYourLocationDesc.tr(context: context).toText12( color: AppColors.greyTextColor, - fontWeight: FontWeight.w500, + isBold: true, ), SizedBox(height: 24.h), CustomButton( text: LocaleKeys.insideHospital.tr(context: context), onPressed: () { Navigator.pop(context); - initPenguinSDK(widget.patientAppointmentHistoryResponseModel.projectID == 130 ? 1 : (widget.patientAppointmentHistoryResponseModel.projectID == 120 ? 3 : -1), + initPenguinSDK( + widget.patientAppointmentHistoryResponseModel.projectID == 130 + ? 1 + : (widget.patientAppointmentHistoryResponseModel.projectID == 120 ? 3 : -1), clinicID: widget.patientAppointmentHistoryResponseModel.clinicID.toString()); }, backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.primaryRedColor, textColor: Colors.white, fontSize: 16.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 56.h, @@ -918,12 +1101,14 @@ class _AppointmentDetailsPageState extends State { Navigator.pop(context); await MapLauncher.showMarker( mapType: MapType.google, - coords: Coords(double.parse(widget.patientAppointmentHistoryResponseModel.latitude!), double.parse(widget.patientAppointmentHistoryResponseModel.longitude!)), + coords: Coords(double.parse(widget.patientAppointmentHistoryResponseModel.latitude!), + double.parse(widget.patientAppointmentHistoryResponseModel.longitude!)), title: widget.patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital", ).catchError((err) { MapLauncher.showMarker( mapType: Platform.isIOS ? MapType.apple : MapType.google, - coords: Coords(double.parse(widget.patientAppointmentHistoryResponseModel.latitude!), double.parse(widget.patientAppointmentHistoryResponseModel.longitude!)), + coords: Coords(double.parse(widget.patientAppointmentHistoryResponseModel.latitude!), + double.parse(widget.patientAppointmentHistoryResponseModel.longitude!)), title: widget.patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital", ); }); @@ -932,7 +1117,7 @@ class _AppointmentDetailsPageState extends State { borderColor: AppColors.chipSecondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 56.h, @@ -957,7 +1142,9 @@ class _AppointmentDetailsPageState extends State { Permission.bluetoothScan, Permission.activityRecognition, ].request().whenComplete(() { - PenguinMethodChannel().launch("penguin", getIt.get().isArabic() ? "ar" : "en", getIt.get().getAuthenticatedUser()?.patientId?.toString() ?? "", true, details: data); + PenguinMethodChannel().launch("penguin", getIt.get().isArabic() ? "ar" : "en", + getIt.get().getAuthenticatedUser()?.patientId?.toString() ?? "", true, + details: data); }); } } @@ -970,12 +1157,13 @@ class _AppointmentDetailsPageState extends State { doctorImageURL: widget.patientAppointmentHistoryResponseModel.doctorImageURL, doctorTitle: widget.patientAppointmentHistoryResponseModel.doctorTitle, name: widget.patientAppointmentHistoryResponseModel.doctorNameObj, - nationalityFlagURL: "https://hmgwebservices.com/Images/flag/SYR.png", + nationalityFlagURL: "", speciality: [], clinicName: widget.patientAppointmentHistoryResponseModel.clinicName, projectName: widget.patientAppointmentHistoryResponseModel.projectName, ); bookAppointmentsViewModel.setSelectedDoctor(doctor); + bookAppointmentsViewModel.setIsPatientRescheduleAppointment(true); LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingDoctorSchedulePleaseWait.tr(context: context)); await bookAppointmentsViewModel.getDoctorFreeSlots( isBookingForLiveCare: false, @@ -1014,7 +1202,8 @@ class _AppointmentDetailsPageState extends State { LoaderBottomSheet.hideLoader(); myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); myAppointmentsViewModel.getPatientAppointments(true, false); - showCommonBottomSheet(context, child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentConfirmedSuccessfully.tr(context: context)), callBackFunc: (str) { + showCommonBottomSheet(context, + child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentConfirmedSuccessfully.tr(context: context)), callBackFunc: (str) { myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); myAppointmentsViewModel.initAppointmentsViewModel(); myAppointmentsViewModel.getPatientAppointments(true, false); @@ -1022,14 +1211,108 @@ class _AppointmentDetailsPageState extends State { }, title: "", height: ResponsiveExtension.screenHeight * 0.3, + isAutoDismiss: true, isCloseButtonVisible: true, isDismissible: false, isFullScreen: false, isSuccessDialog: true); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); }); // LoaderBottomSheet.hideLoader(); case 15: - break; + // Ensure timer is running before showing modal + if (_countdownTimer == null || !_countdownTimer!.isActive) { + _startCountdownTimer(); + } + + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.notice.tr(), + child: StatefulBuilder( + builder: (context, setModalState) { + // Store the modal setState callback + _modalSetState = setModalState; + + return Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Lottie.asset(AppAnimations.warningAnimation, + repeat: false, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), + SizedBox( + height: 12, + ), + LocaleKeys.upcomingPaymentPending.tr(context: context).toText14(color: AppColors.textColor, isCenter: true), + SizedBox(height: 24.h), + // // Countdown Timer - DD : HH : MM : SS format with labels - Always LTR + // Directionality( + // textDirection: ui.TextDirection.ltr, + // child: Row( + // mainAxisAlignment: MainAxisAlignment.center, + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // // Days + // _buildTimeUnit( + // _timeRemaining != null ? _timeRemaining!.inDays.toString().padLeft(2, '0') : '00', + // LocaleKeys.days.tr(context: context), + // ), + // _buildTimeSeparator(), + // // Hours + // _buildTimeUnit( + // _timeRemaining != null ? _timeRemaining!.inHours.remainder(24).toString().padLeft(2, '0') : '00', + // LocaleKeys.hours.tr(context: context), + // ), + // _buildTimeSeparator(), + // // Minutes + // _buildTimeUnit( + // _timeRemaining != null ? _timeRemaining!.inMinutes.remainder(60).toString().padLeft(2, '0') : '00', + // LocaleKeys.minutes.tr(context: context), + // ), + // _buildTimeSeparator(), + // // Seconds + // _buildTimeUnit( + // _timeRemaining != null ? _timeRemaining!.inSeconds.remainder(60).toString().padLeft(2, '0') : '00', + // LocaleKeys.seconds.tr(context: context), + // ), + // ], + // ), + // ), + // SizedBox(height: 24.h), + // Green Acknowledge button with checkmark icon + CustomButton( + text: LocaleKeys.acknowledged.tr(context: context), + onPressed: () { + _modalSetState = null; // Clear callback when closing + Navigator.of(context).pop(); + }, + backgroundColor: AppColors.successColor, + borderColor: AppColors.successColor, + textColor: Colors.white, + fontSize: 16.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + height: 50.h, + icon: AppAssets.checkmark_icon, + iconColor: Colors.white, + ), + ], + ); + }, + ), + callBackFunc: () { + _modalSetState = null; // Clear callback when closing + }, + isFullScreen: false, + isCloseButtonVisible: true, + ); case 20: myAppointmentsViewModel.setIsPatientAppointmentShareLoading(true); Navigator.of(context).push( @@ -1040,14 +1323,19 @@ class _AppointmentDetailsPageState extends State { case 50: // return LocaleKeys.confirmLiveCare.tr(context: context); case 90: + Clarity.setCurrentScreenName('Appointment CheckIn Page'); showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.onlineCheckIn.tr(context: context), - child: AppointmentCheckinBottomSheet( - patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, - myAppointmentsViewModel: myAppointmentsViewModel, - ), - callBackFunc: () {}, - isFullScreen: false); + child: isAppointmentWithin4Hours + ? AppointmentCheckinBottomSheet( + patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, + myAppointmentsViewModel: myAppointmentsViewModel, + ) + : Utils.getOnlineCheckInWidget( + loadingText: LocaleKeys.onlineCheckIn24HoursOnly.tr(context: context), + ), callBackFunc: () { + Clarity.setCurrentScreenName('Appointment Details Page'); + }, isFullScreen: false); default: // return "No Action".needTranslation; } diff --git a/lib/presentation/appointments/appointment_payment_page.dart b/lib/presentation/appointments/appointment_payment_page.dart index d762f795..46130b12 100644 --- a/lib/presentation/appointments/appointment_payment_page.dart +++ b/lib/presentation/appointments/appointment_payment_page.dart @@ -2,6 +2,7 @@ import 'dart:async'; import 'dart:developer'; import 'dart:io'; +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -13,10 +14,13 @@ import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/payfort/models/apple_pay_request_insert_model.dart'; import 'package:hmg_patient_app_new/features/payfort/payfort_view_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/models/paytabs_transaction_response_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/paytabs_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; import 'package:hmg_patient_app_new/presentation/insurance/insurance_home_page.dart'; @@ -43,6 +47,7 @@ class _AppointmentPaymentPageState extends State { late MyAppointmentsViewModel myAppointmentsViewModel; late PayfortViewModel payfortViewModel; late AppState appState; + late PayTabsViewModel paytabsViewModel; MyInAppBrowser? browser; String selectedPaymentMethod = ""; @@ -56,6 +61,7 @@ class _AppointmentPaymentPageState extends State { @override void initState() { scheduleMicrotask(() { + Clarity.setCurrentScreenName('Appointment Payment Page'); payfortViewModel.initPayfortViewModel(); payfortViewModel.setIsApplePayConfigurationLoading(false); myAppointmentsViewModel.getPatientShareAppointment( @@ -63,11 +69,13 @@ class _AppointmentPaymentPageState extends State { widget.patientAppointmentHistoryResponseModel.clinicID, widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false, onSuccess: (val) { myAppointmentsViewModel.getTamaraInstallmentsDetails().then((val) { - if (myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax! >= myAppointmentsViewModel.getTamaraInstallmentsDetailsResponseModel!.minLimit!.amount! && - myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax! <= myAppointmentsViewModel.getTamaraInstallmentsDetailsResponseModel!.maxLimit!.amount!) { - setState(() { - isShowTamara = true; - }); + if (myAppointmentsViewModel.getTamaraInstallmentsDetailsResponseModel != null) { + if (myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax! >= myAppointmentsViewModel.getTamaraInstallmentsDetailsResponseModel!.minLimit!.amount! && + myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax! <= myAppointmentsViewModel.getTamaraInstallmentsDetailsResponseModel!.maxLimit!.amount!) { + setState(() { + isShowTamara = true; + }); + } } }); }, onError: (err) { @@ -83,6 +91,7 @@ class _AppointmentPaymentPageState extends State { appState = getIt.get(); myAppointmentsViewModel = Provider.of(context); payfortViewModel = Provider.of(context); + paytabsViewModel = Provider.of(context, listen: false); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: Consumer(builder: (context, myAppointmentsVM, child) { @@ -108,10 +117,9 @@ class _AppointmentPaymentPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset(AppAssets.mada, width: 72.h, height: 25.h) - .toShimmer2(isShow: myAppointmentsVM.isAppointmentPatientShareLoading), + Utils.buildImgWithAssets(icon: AppAssets.mada, width: 80.h, height: 30.h, fit: BoxFit.contain).toShimmer2(isShow: myAppointmentsVM.isAppointmentPatientShareLoading), SizedBox(height: 16.h), - "Mada".toText16(isBold: true).toShimmer2(isShow: myAppointmentsVM.isAppointmentPatientShareLoading), + LocaleKeys.mada.tr(context: context).toText16(isBold: true).toShimmer2(isShow: myAppointmentsVM.isAppointmentPatientShareLoading), ], ), SizedBox(width: 8.h), @@ -128,9 +136,188 @@ class _AppointmentPaymentPageState extends State { ), ], ).paddingSymmetrical(16.h, 16.h), - ).paddingSymmetrical(24.h, 0.h).onPress(() { + ).paddingSymmetrical(24.h, 0.h).onPress(() async { selectedPaymentMethod = "MADA"; - openPaymentURL("mada"); + if (appState.isPaytabsEnabled) { + paytabsViewModel.setPaymentConfiguration( + "Appointment Payment", + num.parse(myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax!.toString()), + ); + paytabsViewModel.startCardPayment(onSuccess: (PaytabsTransactionResponseModel transactionData) async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr(context: context)); + await myAppointmentsViewModel.createAdvancePayment( + paymentMethodName: selectedPaymentMethod, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + payedAmount: num.parse(myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax!.toString()), + paymentReference: transactionData.transactionReference!, + patientID: appState.getAuthenticatedUser()!.patientId.toString(), + patientType: appState.getAuthenticatedUser()!.patientType!, + onSuccess: (value) async { + print(value); + await myAppointmentsViewModel.addAdvanceNumberRequest( + advanceNumber: Utils.isVidaPlusProject(widget.patientAppointmentHistoryResponseModel.projectID) + ? value.data['OnlineCheckInAppointments'][0]['AdvanceNumber_VP'].toString() + : value.data['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), + paymentReference: transactionData.transactionReference!, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + onSuccess: (value) async { + if (widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment!) { + //TODO: Implement LiveCare Check-In API Call + await myAppointmentsViewModel.insertLiveCareVIDARequest( + clientRequestID: transID, + patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, + onSuccess: (apiResponse) { + Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + LoaderBottomSheet.hideLoader(); + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }); + }, + onError: (error) {}); + } else { + await myAppointmentsViewModel.generateAppointmentQR( + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + isFollowUp: myAppointmentsViewModel.patientAppointmentShareResponseModel!.isFollowup!, + onSuccess: (apiResponse) { + Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + LoaderBottomSheet.hideLoader(); + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }); + }); + } + }); + }); + }, onError: (err) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + if (appState.isPayfortHostedPageEnabled) { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPaymentInformation.tr(context: context)); + + transID = Utils.getAppointmentTransID( + widget.patientAppointmentHistoryResponseModel.projectID, + widget.patientAppointmentHistoryResponseModel.clinicID, + widget.patientAppointmentHistoryResponseModel.appointmentNo, + ); + await payfortViewModel.getPayfortConfigurations( + serviceId: ServiceTypeEnum.appointmentPayment.getIdFromServiceEnum(), projectId: widget.patientAppointmentHistoryResponseModel.projectID, integrationId: 1); + + payfortViewModel.initiatePaymentWithCard( + "mada", + "0", + widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment! ? "true" : "false", + widget.patientAppointmentHistoryResponseModel.appointmentDate!, + widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + widget.patientAppointmentHistoryResponseModel.doctorID.toString(), + transactionID: transID, + fileNumber: appState.getAuthenticatedUser()!.patientId.toString(), + orderDescription: "Appointment Payment", + amount: myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax!.toString(), + onSucceeded: (paymentResult) async { + print("Payment Success Data: ${paymentResult.toString()}"); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr(context: context)); + await myAppointmentsViewModel.createAdvancePayment( + paymentMethodName: selectedPaymentMethod, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + payedAmount: num.parse(myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax!.toString()), + paymentReference: paymentResult.fortId!, + patientID: appState.getAuthenticatedUser()!.patientId.toString(), + patientType: appState.getAuthenticatedUser()!.patientType!, + onSuccess: (value) async { + print(value); + await myAppointmentsViewModel.addAdvanceNumberRequest( + advanceNumber: Utils.isVidaPlusProject(widget.patientAppointmentHistoryResponseModel.projectID) + ? value.data['OnlineCheckInAppointments'][0]['AdvanceNumber_VP'].toString() + : value.data['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), + paymentReference: paymentResult.fortId!, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + onSuccess: (value) async { + if (widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment!) { + //TODO: Implement LiveCare Check-In API Call + await myAppointmentsViewModel.insertLiveCareVIDARequest( + clientRequestID: transID, + patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, + onSuccess: (apiResponse) { + Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + LoaderBottomSheet.hideLoader(); + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }); + }, + onError: (error) {}); + } else { + await myAppointmentsViewModel.generateAppointmentQR( + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + isFollowUp: myAppointmentsViewModel.patientAppointmentShareResponseModel!.isFollowup!, + onSuccess: (apiResponse) { + Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + LoaderBottomSheet.hideLoader(); + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }); + }); + } + }); + }); + }, + onFailed: (err) { + print("Payment Failed Data: ${err.toString()}"); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + ); + } else { + openPaymentURL("mada"); + } + } }), SizedBox(height: 16.h), Container( @@ -147,13 +334,13 @@ class _AppointmentPaymentPageState extends State { children: [ Row( children: [ - Image.asset(AppAssets.visa, width: 50.h, height: 50.h), + Utils.buildImgWithAssets(icon: AppAssets.visa, width: 50.h, height: 50.h), SizedBox(width: 8.h), - Image.asset(AppAssets.mastercard, width: 40.h, height: 40.h), + Utils.buildImgWithAssets(icon: AppAssets.mastercard, width: 40.h, height: 40.h, fit: BoxFit.contain), ], ).toShimmer2(isShow: myAppointmentsVM.isAppointmentPatientShareLoading), SizedBox(height: 16.h), - "Visa or Mastercard" + LocaleKeys.visaOrMastercard.tr(context: context) .toText16(isBold: true) .toShimmer2(isShow: myAppointmentsVM.isAppointmentPatientShareLoading), ], @@ -172,9 +359,198 @@ class _AppointmentPaymentPageState extends State { ), ], ).paddingSymmetrical(16.h, 16.h), - ).paddingSymmetrical(24.h, 0.h).onPress(() { + ).paddingSymmetrical(24.h, 0.h).onPress(() async { selectedPaymentMethod = "VISA"; - openPaymentURL("visa"); + if (appState.isPaytabsEnabled) { + paytabsViewModel.setPaymentConfiguration( + "Appointment Payment", + num.parse(myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax!.toString()), + ); + paytabsViewModel.startCardPayment(onSuccess: (PaytabsTransactionResponseModel transactionData) async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr(context: context)); + await myAppointmentsViewModel.createAdvancePayment( + paymentMethodName: selectedPaymentMethod, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + payedAmount: num.parse(myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax!.toString()), + paymentReference: transactionData.transactionReference!, + patientID: appState.getAuthenticatedUser()!.patientId.toString(), + patientType: appState.getAuthenticatedUser()!.patientType!, + onSuccess: (value) async { + print(value); + await myAppointmentsViewModel.addAdvanceNumberRequest( + advanceNumber: Utils.isVidaPlusProject(widget.patientAppointmentHistoryResponseModel.projectID) + ? value.data['OnlineCheckInAppointments'][0]['AdvanceNumber_VP'].toString() + : value.data['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), + paymentReference: transactionData.transactionReference!, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + onSuccess: (value) async { + if (widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment!) { + //TODO: Implement LiveCare Check-In API Call + await myAppointmentsViewModel.insertLiveCareVIDARequest( + clientRequestID: transID, + patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, + onSuccess: (apiResponse) { + Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + LoaderBottomSheet.hideLoader(); + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }); + }, + onError: (error) {}); + } else { + await myAppointmentsViewModel.generateAppointmentQR( + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + isFollowUp: myAppointmentsViewModel.patientAppointmentShareResponseModel!.isFollowup!, + onSuccess: (apiResponse) { + Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + LoaderBottomSheet.hideLoader(); + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }); + }); + } + }); + }); + }, onError: (err) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + if (appState.isPayfortHostedPageEnabled) { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPaymentInformation.tr(context: context)); + + transID = Utils.getAppointmentTransID( + widget.patientAppointmentHistoryResponseModel.projectID, + widget.patientAppointmentHistoryResponseModel.clinicID, + widget.patientAppointmentHistoryResponseModel.appointmentNo, + ); + await payfortViewModel.getPayfortConfigurations( + serviceId: ServiceTypeEnum.appointmentPayment.getIdFromServiceEnum(), projectId: widget.patientAppointmentHistoryResponseModel.projectID, integrationId: 1); + + payfortViewModel.initiatePaymentWithCard( + "visa", + "0", + widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment! ? "true" : "false", + widget.patientAppointmentHistoryResponseModel.appointmentDate!, + widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + widget.patientAppointmentHistoryResponseModel.doctorID.toString(), + transactionID: transID, + fileNumber: appState.getAuthenticatedUser()!.patientId.toString(), + amount: myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax!.toString(), + orderDescription: "Appointment Payment", + onSucceeded: (paymentResult) async { + print("Payment Success Data: ${paymentResult.toString()}"); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr(context: context)); + await myAppointmentsViewModel.createAdvancePayment( + paymentMethodName: selectedPaymentMethod, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + payedAmount: num.parse(myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax!.toString()), + paymentReference: paymentResult.fortId!, + patientID: appState.getAuthenticatedUser()!.patientId.toString(), + patientType: appState.getAuthenticatedUser()!.patientType!, + onSuccess: (value) async { + print(value); + await myAppointmentsViewModel.addAdvanceNumberRequest( + advanceNumber: Utils.isVidaPlusProject(widget.patientAppointmentHistoryResponseModel.projectID) + ? value.data['OnlineCheckInAppointments'][0]['AdvanceNumber_VP'].toString() + : value.data['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), + paymentReference: paymentResult.fortId!, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + onSuccess: (value) async { + if (widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment!) { + //TODO: Implement LiveCare Check-In API Call + await myAppointmentsViewModel.insertLiveCareVIDARequest( + clientRequestID: transID, + patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, + onSuccess: (apiResponse) { + Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + + getIt.get().setIsWalletAmountToBeLoaded(true); + getIt.get().initHabibWalletProvider(); + getIt.get().getPatientBalanceAmount(); + + LoaderBottomSheet.hideLoader(); + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }); + }, + onError: (error) {}); + } else { + await myAppointmentsViewModel.generateAppointmentQR( + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + isFollowUp: myAppointmentsViewModel.patientAppointmentShareResponseModel!.isFollowup!, + onSuccess: (apiResponse) { + Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + + getIt.get().setIsWalletAmountToBeLoaded(true); + getIt.get().initHabibWalletProvider(); + getIt.get().getPatientBalanceAmount(); + + LoaderBottomSheet.hideLoader(); + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }); + }); + } + }); + }); + }, + onFailed: (err) { + print("Payment Failed Data: ${err.toString()}"); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + ); + } else { + openPaymentURL("visa"); + } + } }), SizedBox(height: 16.h), isShowTamara @@ -190,10 +566,10 @@ class _AppointmentPaymentPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset(AppAssets.tamaraEng, width: 72.h, height: 25.h) + Utils.buildImgWithAssets(icon: AppAssets.tamaraEng, width: 72.h, height: 25.h) .toShimmer2(isShow: myAppointmentsVM.isAppointmentPatientShareLoading), SizedBox(height: 16.h), - "Tamara" + LocaleKeys.tamara.tr(context: context) .toText16(isBold: true) .toShimmer2(isShow: myAppointmentsVM.isAppointmentPatientShareLoading), ], @@ -214,7 +590,108 @@ class _AppointmentPaymentPageState extends State { ).paddingSymmetrical(16.h, 16.h), ).paddingSymmetrical(24.h, 0.h).onPress(() { selectedPaymentMethod = "TAMARA"; - openPaymentURL("tamara"); + if (appState.isPaytabsEnabled) { + paytabsViewModel.setAlternatePaymentConfiguration( + "Appointment Payment", num.parse(myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax!.toString())); + paytabsViewModel.startAlternatePayment(onSuccess: (PaytabsTransactionResponseModel transactionData) async { + tamaraOrderID = transactionData.cartID!; + transID = transactionData.transactionReference!; + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr(context: context)); + await payfortViewModel.updateTamaraRequestStatus(responseMessage: "success", status: "14", clientRequestID: transID, tamaraOrderID: tamaraOrderID); + await payfortViewModel.markAppointmentAsTamaraPaid( + projectID: widget.patientAppointmentHistoryResponseModel.projectID, appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo); + await myAppointmentsViewModel.createAdvancePayment( + paymentMethodName: selectedPaymentMethod, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + payedAmount: num.parse(myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax!.toString()), + paymentReference: transactionData.transactionReference!, + patientID: appState.getAuthenticatedUser()!.patientId.toString(), + patientType: appState.getAuthenticatedUser()!.patientType!, + onSuccess: (value) async { + print(value); + await myAppointmentsViewModel.addAdvanceNumberRequest( + advanceNumber: "Tamara-Advance-0000", + paymentReference: transactionData.transactionReference!, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + onSuccess: (value) async { + if (widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment!) { + //TODO: Implement LiveCare Check-In API Call + await myAppointmentsViewModel.insertLiveCareVIDARequest( + clientRequestID: transID, + patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, + onSuccess: (apiResponse) { + Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + LoaderBottomSheet.hideLoader(); + + getIt.get().setIsWalletAmountToBeLoaded(true); + getIt.get().initHabibWalletProvider(); + getIt.get().getPatientBalanceAmount(); + + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }); + }, + onError: (error) {}); + } else { + await myAppointmentsViewModel.generateAppointmentQR( + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + isFollowUp: myAppointmentsViewModel.patientAppointmentShareResponseModel!.isFollowup!, + onSuccess: (apiResponse) { + Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + + getIt.get().setIsWalletAmountToBeLoaded(true); + getIt.get().initHabibWalletProvider(); + getIt.get().getPatientBalanceAmount(); + + LoaderBottomSheet.hideLoader(); + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }); + }); + } + }); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, onError: (err) async { + await payfortViewModel.updateTamaraRequestStatus(responseMessage: "Failed", status: "00", clientRequestID: transID, tamaraOrderID: tamaraOrderID); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + openPaymentURL("tamara"); + } }) : SizedBox.shrink(), ], @@ -249,7 +726,7 @@ class _AppointmentPaymentPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ LocaleKeys.insuranceExpiredOrInactive.tr(context: context) - .toText14(color: AppColors.primaryRedColor, weight: FontWeight.w500) + .toText14(color: AppColors.primaryRedColor, isBold: true) .paddingSymmetrical(24.h, 0.h), CustomButton( text: LocaleKeys.updateInsurance.tr(context: context), @@ -258,13 +735,14 @@ class _AppointmentPaymentPageState extends State { CustomPageRoute( page: InsuranceHomePage(), ), - ); + ) + .then((val) {}); }, backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.secondaryLightRedBorderColor, textColor: AppColors.whiteColor, fontSize: 10.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 8, padding: EdgeInsets.fromLTRB(15, 0, 15, 0), height: 30.h, @@ -280,24 +758,24 @@ class _AppointmentPaymentPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ LocaleKeys.amountBeforeTax.tr(context: context).toText14(isBold: true), - Utils.getPaymentAmountWithSymbol( - myAppointmentsVM.patientAppointmentShareResponseModel!.patientShare!.toString().toText16(isBold: true), - AppColors.blackColor, - 13, - isSaudiCurrency: true), + ClarityUnmask( + child: Utils.getPaymentAmountWithSymbol( + (myAppointmentsVM.patientAppointmentShareResponseModel!.patientShare ?? 0).toString().toText16(isBold: true), AppColors.blackColor, 13, + isSaudiCurrency: true), + ), ], ).paddingSymmetrical(24.h, 0.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ "VAT 15%".toText14(isBold: true, color: AppColors.greyTextColor), - Utils.getPaymentAmountWithSymbol( - myAppointmentsVM.patientAppointmentShareResponseModel!.patientTaxAmount! - .toString() - .toText14(isBold: true, color: AppColors.greyTextColor), - AppColors.greyTextColor, - 13, - isSaudiCurrency: true), + ClarityUnmask( + child: Utils.getPaymentAmountWithSymbol( + (myAppointmentsVM.patientAppointmentShareResponseModel!.patientTaxAmount ?? 0).toString().toText14(isBold: true, color: AppColors.greyTextColor), + AppColors.greyTextColor, + 13, + isSaudiCurrency: true), + ), ], ).paddingSymmetrical(24.h, 0.h), SizedBox(height: 17.h), @@ -305,11 +783,11 @@ class _AppointmentPaymentPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ "".toText14(isBold: true), - Utils.getPaymentAmountWithSymbol( - myAppointmentsVM.patientAppointmentShareResponseModel!.patientShareWithTax!.toString().toText24(isBold: true), - AppColors.blackColor, - 17, - isSaudiCurrency: true), + ClarityUnmask( + child: Utils.getPaymentAmountWithSymbol( + (myAppointmentsVM.patientAppointmentShareResponseModel!.patientShareWithTax ?? 0).toString().toText24(isBold: true), AppColors.blackColor, 17, + isSaudiCurrency: true), + ), ], ).paddingSymmetrical(24.h, 0.h), Platform.isIOS @@ -407,6 +885,11 @@ class _AppointmentPaymentPageState extends State { myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); myAppointmentsViewModel.initAppointmentsViewModel(); myAppointmentsViewModel.getPatientAppointments(true, false); + + getIt.get().setIsWalletAmountToBeLoaded(true); + getIt.get().initHabibWalletProvider(); + getIt.get().getPatientBalanceAmount(); + LoaderBottomSheet.hideLoader(); Navigator.pushAndRemoveUntil( context, @@ -428,6 +911,11 @@ class _AppointmentPaymentPageState extends State { myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); myAppointmentsViewModel.initAppointmentsViewModel(); myAppointmentsViewModel.getPatientAppointments(true, false); + + getIt.get().setIsWalletAmountToBeLoaded(true); + getIt.get().initHabibWalletProvider(); + getIt.get().getPatientBalanceAmount(); + LoaderBottomSheet.hideLoader(); Navigator.pushAndRemoveUntil( context, @@ -495,6 +983,11 @@ class _AppointmentPaymentPageState extends State { myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); myAppointmentsViewModel.initAppointmentsViewModel(); myAppointmentsViewModel.getPatientAppointments(true, false); + + getIt.get().setIsWalletAmountToBeLoaded(true); + getIt.get().initHabibWalletProvider(); + getIt.get().getPatientBalanceAmount(); + LoaderBottomSheet.hideLoader(); Navigator.pushAndRemoveUntil( context, @@ -516,6 +1009,11 @@ class _AppointmentPaymentPageState extends State { myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); myAppointmentsViewModel.initAppointmentsViewModel(); myAppointmentsViewModel.getPatientAppointments(true, false); + + getIt.get().setIsWalletAmountToBeLoaded(true); + getIt.get().initHabibWalletProvider(); + getIt.get().getPatientBalanceAmount(); + LoaderBottomSheet.hideLoader(); Navigator.pushAndRemoveUntil( context, @@ -635,37 +1133,138 @@ class _AppointmentPaymentPageState extends State { //TODO: Need to pass dynamic params to the Apple Pay instead of static values await payfortViewModel.applePayRequestInsert(applePayInsertRequest: applePayInsertRequest).then((value) { - payfortViewModel.paymentWithApplePay( - customerName: "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}", - // customerEmail: projectViewModel.authenticatedUserObject.user.emailAddress, - customerEmail: "CustID_${appState.getAuthenticatedUser()!.patientId.toString()}@HMG.com", - orderDescription: "Appointment Payment", - orderAmount: double.parse(myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax!.toString()), - merchantReference: transID, - merchantIdentifier: payfortViewModel.payfortProjectDetailsRespModel!.merchantIdentifier, - applePayAccessCode: payfortViewModel.payfortProjectDetailsRespModel!.accessCode, - applePayShaRequestPhrase: payfortViewModel.payfortProjectDetailsRespModel!.shaRequest, - currency: appState.getAuthenticatedUser()!.outSa! == 0 ? "SAR" : "AED", - onFailed: (failureResult) async { - log("failureResult: ${failureResult.message.toString()}"); - LoaderBottomSheet.hideLoader(); + if (appState.isPaytabsEnabled) { + selectedPaymentMethod = "VISA"; + LoaderBottomSheet.hideLoader(); + paytabsViewModel.setPaymentConfiguration( + "Appointment Payment", + num.parse(myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax!.toString()), + ); + paytabsViewModel.startApplePayPayment(onSuccess: (PaytabsTransactionResponseModel transactionData) async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr(context: context)); + await myAppointmentsViewModel.createAdvancePayment( + paymentMethodName: selectedPaymentMethod, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + payedAmount: num.parse(myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax!.toString()), + paymentReference: transactionData.transactionReference!, + patientID: appState.getAuthenticatedUser()!.patientId.toString(), + patientType: appState.getAuthenticatedUser()!.patientType!, + onSuccess: (value) async { + print(value); + await myAppointmentsViewModel.addAdvanceNumberRequest( + advanceNumber: Utils.isVidaPlusProject(widget.patientAppointmentHistoryResponseModel.projectID) + ? value.data['OnlineCheckInAppointments'][0]['AdvanceNumber_VP'].toString() + : value.data['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), + paymentReference: transactionData.transactionReference!, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + onSuccess: (value) async { + if (widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment!) { + //TODO: Implement LiveCare Check-In API Call + await myAppointmentsViewModel.insertLiveCareVIDARequest( + clientRequestID: transID, + patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, + onSuccess: (apiResponse) { + Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + + getIt.get().setIsWalletAmountToBeLoaded(true); + getIt.get().initHabibWalletProvider(); + getIt.get().getPatientBalanceAmount(); + + LoaderBottomSheet.hideLoader(); + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }); + }, + onError: (error) {}); + } else { + await myAppointmentsViewModel.generateAppointmentQR( + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + appointmentNo: widget.patientAppointmentHistoryResponseModel.appointmentNo.toString(), + isFollowUp: myAppointmentsViewModel.patientAppointmentShareResponseModel!.isFollowup!, + onSuccess: (apiResponse) { + Future.delayed(Duration(milliseconds: 500), () { + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + + getIt.get().setIsWalletAmountToBeLoaded(true); + getIt.get().initHabibWalletProvider(); + getIt.get().getPatientBalanceAmount(); + + LoaderBottomSheet.hideLoader(); + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }); + }); + } + }); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, onError: (err) { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: failureResult.message.toString()), + child: Utils.getErrorWidget(loadingText: err.toString()), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, ); - }, - onSucceeded: (successResult) async { - LoaderBottomSheet.hideLoader(); - log("successResult: ${successResult.responseMessage.toString()}"); - selectedPaymentMethod = successResult.paymentOption ?? "VISA"; - checkPaymentStatus(); - }, - // projectId: appo.projectID, - // serviceTypeEnum: ServiceTypeEnum.appointmentPayment, - ); + }); + } else { + payfortViewModel.paymentWithApplePay( + customerName: "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}", + // customerEmail: projectViewModel.authenticatedUserObject.user.emailAddress, + customerEmail: "CustID_${appState.getAuthenticatedUser()!.patientId.toString()}@HMG.com", + orderDescription: "Appointment Payment", + orderAmount: double.parse(myAppointmentsViewModel.patientAppointmentShareResponseModel!.patientShareWithTax!.toString()), + merchantReference: transID, + merchantIdentifier: payfortViewModel.payfortProjectDetailsRespModel!.merchantIdentifier, + applePayAccessCode: payfortViewModel.payfortProjectDetailsRespModel!.accessCode, + applePayShaRequestPhrase: payfortViewModel.payfortProjectDetailsRespModel!.shaRequest, + currency: appState.getAuthenticatedUser()!.outSa! == 0 ? "SAR" : "AED", + onFailed: (failureResult) async { + log("failureResult: ${failureResult.message.toString()}"); + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: failureResult.message.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + onSucceeded: (successResult) async { + LoaderBottomSheet.hideLoader(); + log("successResult: ${successResult.responseMessage.toString()}"); + selectedPaymentMethod = successResult.paymentOption ?? "VISA"; + checkPaymentStatus(); + }, + // projectId: appo.projectID, + // serviceTypeEnum: ServiceTypeEnum.appointmentPayment, + ); + } }); } } diff --git a/lib/presentation/appointments/appointment_queue_page.dart b/lib/presentation/appointments/appointment_queue_page.dart index f205aeb9..f2bd1d18 100644 --- a/lib/presentation/appointments/appointment_queue_page.dart +++ b/lib/presentation/appointments/appointment_queue_page.dart @@ -15,6 +15,7 @@ import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:lottie/lottie.dart'; import 'package:provider/provider.dart'; class AppointmentQueuePage extends StatelessWidget { @@ -25,6 +26,8 @@ class AppointmentQueuePage extends StatelessWidget { @override Widget build(BuildContext context) { appState = getIt.get(); + final currentQueue = getIt.get().currentPatientQueueDetails; + final currentStatus = getIt.get().currentQueueStatus; return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: Consumer(builder: (context, myAppointmentsVM, child) { @@ -32,182 +35,177 @@ class AppointmentQueuePage extends StatelessWidget { children: [ Expanded( child: CollapsingListView( - title: LocaleKeys.queueing.tr(context: context), - child: SingleChildScrollView( - child: Padding( - padding: EdgeInsets.all(24.0), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.h, - hasShadow: false, - side: BorderSide( - color: myAppointmentsVM.isAppointmentQueueDetailsLoading - ? AppColors.whiteColor - : Utils.getCardBorderColor(myAppointmentsVM.currentQueueStatus), - width: 2.w), - ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + title: LocaleKeys.queueing.tr(context: context), + child: RefreshIndicator( + color: AppColors.primaryRedColor, + onRefresh: () async { + await myAppointmentsVM.getPatientAppointmentQueueDetails(); + }, + child: SingleChildScrollView( + physics: const AlwaysScrollableScrollPhysics(), + child: Padding( + padding: EdgeInsets.all(24.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.h, + hasShadow: false, + side: BorderSide( + color: myAppointmentsVM.isAppointmentQueueDetailsLoading ? AppColors.whiteColor : Utils.getCardBorderColor(myAppointmentsVM.currentQueueStatus), width: 2.w), + ), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - AppCustomChipWidget( - labelText: myAppointmentsVM.currentQueueStatus == 0 ? LocaleKeys.inQueue.tr(context: context) : LocaleKeys.yourTurn.tr(context: context), - backgroundColor: Utils.getCardBorderColor(myAppointmentsVM.currentQueueStatus).withValues(alpha: 0.20), - textColor: Utils.getCardBorderColor(myAppointmentsVM.currentQueueStatus), - ), - Utils.buildSvgWithAssets(icon: AppAssets.waiting_icon, width: 24.h, height: 24.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppCustomChipWidget( + labelText: myAppointmentsVM.currentQueueStatus == 0 ? LocaleKeys.inQueue.tr(context: context) : LocaleKeys.yourTurn.tr(context: context), + backgroundColor: Utils.getCardBorderColor(myAppointmentsVM.currentQueueStatus).withValues(alpha: 0.20), + textColor: Utils.getCardBorderColor(myAppointmentsVM.currentQueueStatus), + ).toShimmer2(isShow: (currentQueue.queueNo == null || currentQueue.queueNo!.isEmpty)), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.greyColor, + borderRadius: 10.h, + hasShadow: false, + ), + padding: EdgeInsets.all(6.h), + child: Lottie.asset(AppAnimations.hourGlass, repeat: true, reverse: false, frameRate: FrameRate(60), width: 40.h, height: 40.h, fit: BoxFit.fill)), + ], + ).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading), + SizedBox(height: 10.h), + "Hala ${appState!.getAuthenticatedUser()!.firstName}!!!".toText16(isBold: true).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading), + SizedBox(height: 8.h), + LocaleKeys.thankYouForPatience + .tr(context: context) + .toText12(isBold: true, color: AppColors.textColorLight) + .toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading), + SizedBox(height: 8.h), + (myAppointmentsVM.currentPatientQueueDetails.queueNo ?? "IM-123") + .toText32(isBold: true) + .toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading || (currentQueue.queueNo == null || currentQueue.queueNo!.isEmpty)), + SizedBox(height: 8.h), + CustomButton( + text: Utils.getCardButtonText(myAppointmentsVM.currentQueueStatus, myAppointmentsVM.currentPatientQueueDetails.roomNo ?? ""), + onPressed: () {}, + backgroundColor: Utils.getCardButtonColor(myAppointmentsVM.currentQueueStatus), + borderColor: Utils.getCardButtonColor(myAppointmentsVM.currentQueueStatus).withValues(alpha: 0.01), + textColor: Utils.getCardButtonTextColor(myAppointmentsVM.currentQueueStatus), + fontSize: 12.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 40.h, + iconColor: AppColors.whiteColor, + iconSize: 18.h, + ).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading || (currentQueue.queueNo == null || currentQueue.queueNo!.isEmpty)), ], - ).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading), - SizedBox(height: 10.h), - "Hala ${appState!.getAuthenticatedUser()!.firstName}!!!" - .toText16(isBold: true) - .toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading), - SizedBox(height: 8.h), - LocaleKeys.thankYouForPatience.tr(context: context) - .toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight) - .toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading), - SizedBox(height: 8.h), - myAppointmentsVM.currentPatientQueueDetails.queueNo! - .toText32(isBold: true) - .toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading), - SizedBox(height: 8.h), - CustomButton( - text: Utils.getCardButtonText( - myAppointmentsVM.currentQueueStatus, myAppointmentsVM.currentPatientQueueDetails.roomNo ?? ""), - onPressed: () {}, - backgroundColor: Utils.getCardButtonColor(myAppointmentsVM.currentQueueStatus), - borderColor: Utils.getCardButtonColor(myAppointmentsVM.currentQueueStatus).withValues(alpha: 0.01), - textColor: Utils.getCardButtonTextColor(myAppointmentsVM.currentQueueStatus), - fontSize: 12.f, - fontWeight: FontWeight.w600, - borderRadius: 12.r, - padding: EdgeInsets.symmetric(horizontal: 10.w), - height: 40.h, - iconColor: AppColors.whiteColor, - iconSize: 18.h, - ).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading), - ], - ), - ), - ), - SizedBox(height: 16.h), - myAppointmentsVM.patientQueueDetailsList.isNotEmpty - ? Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.h, - hasShadow: true, ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.servingNow.tr(context: context) - .toText16(isBold: true) - .toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading), - SizedBox(height: 18.h), - ListView.separated( - padding: EdgeInsets.zero, - shrinkWrap: true, - itemCount: myAppointmentsVM.patientQueueDetailsList.length, - physics: NeverScrollableScrollPhysics(), - itemBuilder: (BuildContext context, int index) { - return Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - myAppointmentsVM.patientQueueDetailsList[index].queueNo!.toText17(isBold: true), - Row( - crossAxisAlignment: CrossAxisAlignment.center, + ), + ), + SizedBox(height: 16.h), + myAppointmentsVM.patientQueueDetailsList.isNotEmpty + ? Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.h, + hasShadow: true, + ), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.servingNow.tr(context: context).toText16(isBold: true).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading), + SizedBox(height: 18.h), + ListView.separated( + padding: EdgeInsets.zero, + shrinkWrap: true, + itemCount: myAppointmentsVM.patientQueueDetailsList.length, + physics: NeverScrollableScrollPhysics(), + itemBuilder: (BuildContext context, int index) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Room: ${myAppointmentsVM.patientQueueDetailsList[index].roomNo}" - .toText12(fontWeight: FontWeight.w500), - SizedBox(width: 8.w), - AppCustomChipWidget( - deleteIcon: myAppointmentsVM.patientQueueDetailsList[index].callType == 1 - ? AppAssets.call_for_vitals - : AppAssets.call_for_doctor, - labelText: myAppointmentsVM.patientQueueDetailsList[index].callType == 1 - ? LocaleKeys.callForVitalSigns.tr(context: context) - : LocaleKeys.callForDoctor.tr(context: context), - iconColor: myAppointmentsVM.patientQueueDetailsList[index].callType == 1 - ? AppColors.primaryRedColor - : AppColors.successColor, - textColor: myAppointmentsVM.patientQueueDetailsList[index].callType == 1 - ? AppColors.primaryRedColor - : AppColors.successColor, - iconSize: 14.w, - backgroundColor: myAppointmentsVM.patientQueueDetailsList[index].callType == 1 - ? AppColors.primaryRedColor.withValues(alpha: 0.1) - : AppColors.successColor.withValues(alpha: 0.1), - labelPadding: EdgeInsetsDirectional.only(start: 8.h, end: -2.h), + myAppointmentsVM.patientQueueDetailsList[index].queueNo!.toText17(isBold: true), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + "Room: ${myAppointmentsVM.patientQueueDetailsList[index].roomNo}".toText12(isBold: true), + SizedBox(width: 8.w), + AppCustomChipWidget( + deleteIcon: myAppointmentsVM.patientQueueDetailsList[index].callType == 1 ? AppAssets.call_for_vitals : AppAssets.call_for_doctor, + labelText: myAppointmentsVM.patientQueueDetailsList[index].callType == 1 + ? LocaleKeys.callForVitalSigns.tr(context: context) + : LocaleKeys.callForDoctor.tr(context: context), + iconColor: myAppointmentsVM.patientQueueDetailsList[index].callType == 1 ? AppColors.primaryRedColor : AppColors.successColor, + textColor: myAppointmentsVM.patientQueueDetailsList[index].callType == 1 ? AppColors.primaryRedColor : AppColors.successColor, + iconSize: 14.w, + backgroundColor: myAppointmentsVM.patientQueueDetailsList[index].callType == 1 + ? AppColors.primaryRedColor.withValues(alpha: 0.1) + : AppColors.successColor.withValues(alpha: 0.1), + labelPadding: EdgeInsetsDirectional.only(start: 8.h, end: -2.h), + ), + ], ), ], - ), - ], - ); - }, - separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 8.h), - ).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading), - ], - ), - ), - ) - : SizedBox.shrink(), - SizedBox(height: 16.h), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.4, - hasShadow: true, - ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( + ); + }, + separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 8.h), + ).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading), + ], + ), + ), + ) + : SizedBox.shrink(), + SizedBox(height: 16.h), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.4, + hasShadow: true, + ), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.bulb_icon, width: 24.w, height: 24.h), - SizedBox(width: 8.w), - LocaleKeys.thingsToAskDoctor.tr(context: context).toText16(isBold: true), + Row( + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.bulb_icon, width: 24.w, height: 24.h), + SizedBox(width: 8.w), + LocaleKeys.thingsToAskDoctor.tr(context: context).toText16(isBold: true), + ], + ), + SizedBox(height: 8.h), + "• ${LocaleKeys.improveOverallHealth.tr(context: context)}".toText12(isBold: true, color: AppColors.textColorLight), + SizedBox(height: 4.h), + "• ${LocaleKeys.routineScreenings.tr(context: context)}".toText12(isBold: true, color: AppColors.textColorLight), + SizedBox(height: 4.h), + "• ${LocaleKeys.whatIsThisMedicationFor.tr(context: context)}".toText12(isBold: true, color: AppColors.textColorLight), + SizedBox(height: 4.h), + "• ${LocaleKeys.sideEffectsToKnow.tr(context: context)}".toText12(isBold: true, color: AppColors.textColorLight), + SizedBox(height: 4.h), + "• ${LocaleKeys.whenFollowUp.tr(context: context)}".toText12(isBold: true, color: AppColors.textColorLight), + SizedBox(height: 16.h), ], - ), - SizedBox(height: 8.h), - "• ${LocaleKeys.improveOverallHealth.tr(context: context)}" - .toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), - SizedBox(height: 4.h), - "• ${LocaleKeys.routineScreenings.tr(context: context)}" - .toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), - SizedBox(height: 4.h), - "• ${LocaleKeys.whatIsThisMedicationFor.tr(context: context)}" - .toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), - SizedBox(height: 4.h), - "• ${LocaleKeys.sideEffectsToKnow.tr(context: context)}" - .toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), - SizedBox(height: 4.h), - "• ${LocaleKeys.whenFollowUp.tr(context: context)}" - .toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), - - SizedBox(height: 16.h), - ], - ).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading), - ), + ).toShimmer2(isShow: myAppointmentsVM.isAppointmentQueueDetailsLoading), + ), + ), + ], ), - ], + ), ), ), ), - ), ), Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( @@ -229,7 +227,7 @@ class AppointmentQueuePage extends StatelessWidget { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), height: 50.h, diff --git a/lib/presentation/appointments/my_appointments_page.dart b/lib/presentation/appointments/my_appointments_page.dart index c9e70487..3512472d 100644 --- a/lib/presentation/appointments/my_appointments_page.dart +++ b/lib/presentation/appointments/my_appointments_page.dart @@ -43,8 +43,10 @@ class _MyAppointmentsPageState extends State { @override void initState() { scheduleMicrotask(() { - myAppointmentsViewModel.initAppointmentsViewModel(); - myAppointmentsViewModel.getPatientAppointments(true, false); + if (!myAppointmentsViewModel.isMyAppointmentsLoading) { + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + } }); super.initState(); } @@ -55,36 +57,40 @@ class _MyAppointmentsPageState extends State { bookAppointmentsViewModel = Provider.of(context, listen: false); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, - body: CollapsingListView( - title: LocaleKeys.appointmentsList.tr(context: context), - child: SingleChildScrollView( - child: Column( - children: [ - SizedBox(height: 16.h), - CustomTabBar( - activeTextColor: Color(0xffED1C2B), - activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), - tabs: [ - CustomTabBarModel(null, LocaleKeys.allAppt.tr(context: context)), - CustomTabBarModel(null, LocaleKeys.upcoming.tr(context: context)), - CustomTabBarModel(null, LocaleKeys.completed.tr(context: context)), - ], - onTabChange: (index) { - setState(() { - expandedIndex = null; - }); - myAppointmentsViewModel.onTabChange(index); - myAppointmentsViewModel.updateListWRTTab(index); - context.read().flush(); - }, - ).paddingSymmetrical(24.h, 0.h), - Consumer(builder: (context, myAppointmentsVM, child) { - return getSelectedTabData(myAppointmentsVM.selectedTabIndex, myAppointmentsVM); - }), - ], + body: Consumer(builder: (context, myAppointmentsVM, child) { + return CollapsingListView( + title: LocaleKeys.appointmentsList.tr(context: context), + child: SingleChildScrollView( + child: Column( + children: [ + SizedBox(height: 16.h), + CustomTabBar( + initialIndex: myAppointmentsVM.selectedTabIndex, + activeTextColor: Color(0xffED1C2B), + activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), + tabs: [ + CustomTabBarModel(null, LocaleKeys.allAppt.tr(context: context)), + CustomTabBarModel(null, LocaleKeys.upcoming.tr(context: context)), + CustomTabBarModel(null, LocaleKeys.completed.tr(context: context)), + ], + onTabChange: (index) { + setState(() { + expandedIndex = null; + }); + myAppointmentsViewModel.onTabChange(index); + myAppointmentsViewModel.updateListWRTTab(index); + context.read().flush(); + }, + ).paddingSymmetrical(24.h, 0.h), + // Consumer(builder: (context, myAppointmentsVM, child) { + // return + getSelectedTabData(myAppointmentsVM.selectedTabIndex, myAppointmentsVM), + // }), + ], ), - ), - ), + ), + ); + }), ); } @@ -109,7 +115,7 @@ class _MyAppointmentsPageState extends State { borderColor: myAppointmentsVM.isAppointmentsSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), textColor: myAppointmentsVM.isAppointmentsSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, @@ -124,7 +130,7 @@ class _MyAppointmentsPageState extends State { borderColor: myAppointmentsVM.isAppointmentsSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, textColor: myAppointmentsVM.isAppointmentsSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, fontSize: 12, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, @@ -144,7 +150,7 @@ class _MyAppointmentsPageState extends State { ? myAppointmentsVM.patientAppointmentsViewList.length : 1, itemBuilder: (context, index) { - final isExpanded = expandedIndex == index; + final isExpanded = myAppointmentsVM.selectedTabIndex == 1 ? true : expandedIndex == index; return myAppointmentsVM.isMyAppointmentsLoading ? Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true), @@ -187,7 +193,7 @@ class _MyAppointmentsPageState extends State { children: [ AppCustomChipWidget( labelText: - "${myAppointmentsVM.patientAppointmentsViewList[index].patientDoctorAppointmentList!.length} Appointments"), + "${myAppointmentsVM.patientAppointmentsViewList[index].patientDoctorAppointmentList!.length} ${LocaleKeys.appointments.tr(context: context)}", isEnglishOnly: true,), Icon(isExpanded ? Icons.expand_less : Icons.expand_more), ], ), @@ -262,7 +268,7 @@ class _MyAppointmentsPageState extends State { borderColor: Color(0xffFEE9EA), textColor: Color(0xffED1C2B), fontSize: 14.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12.r, padding: EdgeInsets.fromLTRB(10.w, 0, 10.w, 0), height: 40.h, diff --git a/lib/presentation/appointments/my_doctors_page.dart b/lib/presentation/appointments/my_doctors_page.dart index d1ea0e98..d05270e5 100644 --- a/lib/presentation/appointments/my_doctors_page.dart +++ b/lib/presentation/appointments/my_doctors_page.dart @@ -39,7 +39,7 @@ class _MyDoctorsPageState extends State { @override void initState() { scheduleMicrotask(() { - myAppointmentsViewModel.getPatientMyDoctors(); + myAppointmentsViewModel.getPatientMyDoctors(isTop8: false); }); super.initState(); } @@ -89,12 +89,10 @@ class _MyDoctorsPageState extends State { borderColor: isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), textColor: isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, - - ), SizedBox(width: 8.h), CustomButton( @@ -109,7 +107,7 @@ class _MyDoctorsPageState extends State { borderColor: isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, textColor: isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, fontSize: 12, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, @@ -141,8 +139,9 @@ class _MyDoctorsPageState extends State { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.network( - "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + Utils.buildImgWithNetwork( + url: "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + iconColor: AppColors.transparent, width: 63.h, height: 63.h, fit: BoxFit.cover, @@ -220,14 +219,16 @@ class _MyDoctorsPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - AppCustomChipWidget(labelText: "${group.length} ${'doctors'}"), - Icon(isExpanded ? Icons.expand_less : Icons.expand_more), + AppCustomChipWidget( + labelText: "${group.length} ${LocaleKeys.doctors.tr(context: context)}", + ), + Icon(isExpanded ? Icons.expand_less : Icons.expand_more), ], ), SizedBox(height: 8.h), Text( displayName, - style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), + style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600,), overflow: TextOverflow.ellipsis, ), ], @@ -261,15 +262,16 @@ class _MyDoctorsPageState extends State { Row( mainAxisSize: MainAxisSize.min, children: [ - Image.network( - (doctor?.doctorImageURL ?? doctor?.doctorImage ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png"), + Utils.buildImgWithNetwork( + url: (doctor?.doctorImageURL ?? doctor?.doctorImage ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png"), + iconColor: AppColors.transparent, width: 24.w, height: 24.h, fit: BoxFit.cover, ).circle(100), SizedBox(width: 8.h), Expanded( - child: (doctor?.doctorName ?? "").toString().toText14(weight: FontWeight.w500), + child: (doctor?.doctorName ?? "").toString().toText14(isBold: true), ), ], ), @@ -280,7 +282,7 @@ class _MyDoctorsPageState extends State { runSpacing: 4.h, children: [ AppCustomChipWidget( - labelText: isSortByClinic ? (doctor?.clinicName ?? "") : (doctor?.projectName ?? ""), + labelText: isSortByClinic ? (doctor?.projectName ?? "") : (doctor?.clinicName ?? ""), ), ], ), @@ -291,10 +293,10 @@ class _MyDoctorsPageState extends State { flex: 2, child: CustomButton( icon: AppAssets.view_report_icon, - iconColor: AppColors.primaryRedColor, + iconColor: doctor?.isActiveDoctorProfile == false ? AppColors.inputLabelTextColor.withValues(alpha: 1.0) : AppColors.primaryRedColor, iconSize: 16.h, text: LocaleKeys.viewProfile.tr(context: context), - onPressed: () async { + onPressed: doctor?.isActiveDoctorProfile == false ? () {} : () async { bookAppointmentsViewModel.setSelectedDoctor(DoctorsListResponseModel( clinicID: doctor?.clinicID ?? 0, projectID: doctor?.projectID ?? 0, @@ -311,7 +313,7 @@ class _MyDoctorsPageState extends State { LoaderBottomSheet.hideLoader(); Navigator.of(context).push( CustomPageRoute( - page: DoctorProfilePage(), + page: DoctorProfilePage(isDoctorAllowedToBook: !doctor?.isLiveCareClinic), ), ); }, onError: (err) { @@ -325,11 +327,11 @@ class _MyDoctorsPageState extends State { ); }); }, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, + backgroundColor: doctor?.isActiveDoctorProfile == false ? AppColors.inputLabelTextColor.withValues(alpha: 0.3) : AppColors.secondaryLightRedColor, + borderColor: doctor?.isActiveDoctorProfile == false ? AppColors.inputLabelTextColor.withValues(alpha: 0.01) : AppColors.secondaryLightRedColor, + textColor: doctor?.isActiveDoctorProfile == false ? AppColors.inputLabelTextColor.withValues(alpha: 1.0) : AppColors.primaryRedColor, fontSize: 14, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12, padding: const EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, @@ -353,8 +355,8 @@ class _MyDoctorsPageState extends State { ), ); }, - separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h), - ), + separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 0.h), + ), SizedBox(height: 60.h), ], ); diff --git a/lib/presentation/appointments/widgets/appointment_card.dart b/lib/presentation/appointments/widgets/appointment_card.dart index 89a18bf5..e98eda82 100644 --- a/lib/presentation/appointments/widgets/appointment_card.dart +++ b/lib/presentation/appointments/widgets/appointment_card.dart @@ -1,3 +1,7 @@ +import 'dart:async'; +import 'dart:ui' as ui; + +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -17,7 +21,7 @@ import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_vie import 'package:hmg_patient_app_new/features/my_appointments/utils/appointment_type.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/appointments/appointment_details_page.dart'; -import 'package:hmg_patient_app_new/presentation/appointments/widgets/ask_doctor_request_type_select.dart'; +import 'package:hmg_patient_app_new/presentation/appointments/appointment_payment_page.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/widgets/appointment_calendar.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/eye_measurement_details_page.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -26,9 +30,9 @@ import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; -import 'dart:ui' as ui; +import 'package:lottie/lottie.dart'; -class AppointmentCard extends StatelessWidget { +class AppointmentCard extends StatefulWidget { final PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel; final MyAppointmentsViewModel myAppointmentsViewModel; final bool isLoading; @@ -41,6 +45,8 @@ class AppointmentCard extends StatelessWidget { final BookAppointmentsViewModel bookAppointmentsViewModel; final bool isForRate; + // bool isAppointmentWithin4Hours = false; + const AppointmentCard( {super.key, required this.patientAppointmentHistoryResponseModel, @@ -55,6 +61,97 @@ class AppointmentCard extends StatelessWidget { this.contactUsViewModel, this.isForRate = false}); + @override + State createState() => _AppointmentCardState(); +} + +class _AppointmentCardState extends State { + Timer? _countdownTimer; + Duration? _timeRemaining; + Function(void Function())? _modalSetState; + + @override + void initState() { + super.initState(); + // Start countdown timer if appointment requires payment + if (widget.patientAppointmentHistoryResponseModel.nextAction == 15) { + _startCountdownTimer(); + } + } + + @override + void dispose() { + _countdownTimer?.cancel(); + super.dispose(); + } + + void _startCountdownTimer() { + final appointmentDate = DateUtil.convertStringToDate(widget.patientAppointmentHistoryResponseModel.appointmentDate!); + final expiryDate = appointmentDate.subtract(const Duration(hours: 4)); + + setState(() { + _timeRemaining = expiryDate.difference(DateTime.now()); + }); + + _countdownTimer?.cancel(); + _countdownTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + final newTimeRemaining = expiryDate.difference(DateTime.now()); + + if (newTimeRemaining.isNegative) { + timer.cancel(); + setState(() { + _timeRemaining = Duration.zero; + }); + _modalSetState?.call(() { + _timeRemaining = Duration.zero; + }); + } else { + setState(() { + _timeRemaining = newTimeRemaining; + }); + _modalSetState?.call(() { + _timeRemaining = newTimeRemaining; + }); + } + }); + } + + // Helper method to build each time unit (number + label) + Widget _buildTimeUnit(String value, String label) { + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + alignment: Alignment.center, + child: value.toText32( + isBold: true, + color: AppColors.blackColor, + isEnglishOnly: true, + ), + ), + SizedBox(height: 4.h), + Container( + alignment: Alignment.center, + child: label.toText12( + color: AppColors.greyTextColor, + ), + ), + ], + ); + } + + // Helper method to build time separator (:) + Widget _buildTimeSeparator() { + return Padding( + padding: EdgeInsets.only(bottom: 16.h, left: 6.w, right: 6.w), + child: ':'.toText32( + isBold: true, + color: AppColors.blackColor, + ), + ); + } + @override Widget build(BuildContext context) { final appState = getIt.get(); @@ -65,11 +162,11 @@ class AppointmentCard extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - isForRate ? SizedBox() : _buildHeader(context, appState), + widget.isForRate ? SizedBox() : _buildHeader(context, appState), SizedBox(height: 16.h), _buildDoctorRow(context), SizedBox(height: 16.h), - isForRate ? SizedBox() : _buildActionArea(context, appState), + widget.isForRate ? SizedBox() : _buildActionArea(context, appState), ], ), ), @@ -86,7 +183,7 @@ class AppointmentCard extends StatelessWidget { } Widget _buildChips(BuildContext context, AppState appState) { - final isLiveCare = !isLoading && patientAppointmentHistoryResponseModel.isLiveCareAppointment!; + final isLiveCare = !widget.isLoading && widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment!; return Wrap( alignment: WrapAlignment.start, @@ -95,25 +192,33 @@ class AppointmentCard extends StatelessWidget { runSpacing: 6.h, children: [ AppCustomChipWidget( - icon: isLoading ? AppAssets.walkin_appointment_icon : (isLiveCare ? AppAssets.small_livecare_icon : AppAssets.walkin_appointment_icon), - iconColor: isLoading ? AppColors.textColor : (isLiveCare ? Colors.white : AppColors.textColor), - labelText: isLoading ? LocaleKeys.walkin.tr(context: context) : (isLiveCare ? LocaleKeys.livecare.tr(context: context) : LocaleKeys.walkin.tr(context: context)), - backgroundColor: isLoading ? AppColors.greyColor : (isLiveCare ? AppColors.successColor : AppColors.greyColor), - textColor: isLoading ? AppColors.textColor : (isLiveCare ? Colors.white : AppColors.textColor), - ).toShimmer2(isShow: isLoading), + icon: + widget.isLoading ? AppAssets.walkin_appointment_icon : (isLiveCare ? AppAssets.small_livecare_icon : AppAssets.walkin_appointment_icon), + iconColor: widget.isLoading ? AppColors.textColor : (isLiveCare ? Colors.white : AppColors.textColor), + labelText: widget.isLoading + ? LocaleKeys.walkin.tr(context: context) + : (isLiveCare ? LocaleKeys.livecare.tr(context: context) : LocaleKeys.walkin.tr(context: context)), + backgroundColor: widget.isLoading ? AppColors.greyColor : (isLiveCare ? AppColors.successColor : AppColors.greyColor), + textColor: widget.isLoading ? AppColors.textColor : (isLiveCare ? Colors.white : AppColors.textColor), + ).toShimmer2(isShow: widget.isLoading), AppCustomChipWidget( - labelText: - isLoading ? 'OutPatient' : (appState.isArabic() ? patientAppointmentHistoryResponseModel.isInOutPatientDescriptionN! : patientAppointmentHistoryResponseModel.isInOutPatientDescription!), - backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.1), - textColor: AppColors.primaryRedColor, - ).toShimmer2(isShow: isLoading), + labelText: widget.isLoading + ? 'OutPatient' + : (appState.isArabic() + ? widget.patientAppointmentHistoryResponseModel.isInOutPatientDescriptionN! + : widget.patientAppointmentHistoryResponseModel.isInOutPatientDescription!), + backgroundColor: AppColors.warningColorYellow.withValues(alpha: 0.1), + textColor: AppColors.warningColorYellow, + ).toShimmer2(isShow: widget.isLoading), AppCustomChipWidget( - labelText: isLoading ? 'Booked' : AppointmentType.getAppointmentStatusType(patientAppointmentHistoryResponseModel.patientStatusType!), + labelText: widget.isLoading + ? 'Booked' + : AppointmentType.getAppointmentStatusType(widget.patientAppointmentHistoryResponseModel.patientStatusType!), backgroundColor: AppColors.successColor.withValues(alpha: 0.1), textColor: AppColors.successColor, - ).toShimmer2(isShow: isLoading), + ).toShimmer2(isShow: widget.isLoading), ], - ).toShimmer2(isShow: isLoading); + ).toShimmer2(isShow: widget.isLoading); } Widget _buildDoctorRow(BuildContext context) { @@ -123,12 +228,15 @@ class AppointmentCard extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - Image.network( - isLoading ? 'https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png' : patientAppointmentHistoryResponseModel.doctorImageURL!, + Utils.buildImgWithNetwork( + url: widget.isLoading + ? 'https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png' + : widget.patientAppointmentHistoryResponseModel.doctorImageURL!, + iconColor: AppColors.transparent, width: 63.h, height: 63.h, fit: BoxFit.cover, - ).circle(100.r).toShimmer2(isShow: isLoading), + ).circle(100.r).toShimmer2(isShow: widget.isLoading), Transform.translate( offset: Offset(0.0, -20.h), child: Container( @@ -145,14 +253,16 @@ class AppointmentCard extends StatelessWidget { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h, iconColor: AppColors.ratingColorYellow), + Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 14.h, height: 14.h, iconColor: AppColors.ratingColorYellow), SizedBox(height: 2.h), (isFoldable || isTablet) - ? "${patientAppointmentHistoryResponseModel.decimalDoctorRate}".toText9(isBold: true, color: AppColors.textColor) - : "${patientAppointmentHistoryResponseModel.decimalDoctorRate ?? "0.0"}".toText11(isBold: true, color: AppColors.textColor), + ? "${widget.patientAppointmentHistoryResponseModel.decimalDoctorRate}" + .toText9(isBold: true, color: AppColors.textColor, isEnglishOnly: true) + : "${widget.patientAppointmentHistoryResponseModel.decimalDoctorRate ?? "0.0"}" + .toText11(isBold: true, color: AppColors.textColor, isEnglishOnly: true), ], ), - ).circle(100).toShimmer2(isShow: isLoading), + ).circle(100).toShimmer2(isShow: widget.isLoading), ), ], ), @@ -161,39 +271,59 @@ class AppointmentCard extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - (isLoading ? 'John Doe' : "${patientAppointmentHistoryResponseModel.doctorTitle} ${patientAppointmentHistoryResponseModel.doctorNameObj!}") - .toText16(isBold: true, maxlines: 1) - .toShimmer2(isShow: isLoading), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (widget.isLoading ? 'Dr' : "${widget.patientAppointmentHistoryResponseModel.doctorTitle}").toText16(isBold: true, maxlines: 1), + Expanded( + child: (widget.isLoading ? 'John Doe' : " ${widget.patientAppointmentHistoryResponseModel.doctorNameObj!.truncate(30)}").toText16( + isBold: true, maxlines: 1, textOverflow: TextOverflow.ellipsis, isEnglishOnly: !Utils.isArabicText(widget.patientAppointmentHistoryResponseModel.doctorNameObj ?? "John Doe")), + ), + SizedBox(width: 12.w), + (widget.patientAppointmentHistoryResponseModel.doctorNationalityFlagURL != null && + widget.patientAppointmentHistoryResponseModel.doctorNationalityFlagURL!.isNotEmpty) + ? Utils.buildImgWithNetwork( + url: widget.patientAppointmentHistoryResponseModel.doctorNationalityFlagURL ?? "https://hmgwebservices.com/Images/flag/SAU.png", + iconColor: AppColors.transparent, + width: 20.h, + height: 15.h, + fit: BoxFit.cover, + ) + : SizedBox.shrink(), + ], + ).toShimmer2(isShow: widget.isLoading), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, - spacing: 3.h, - runSpacing: 4.h, + spacing: 6.h, + runSpacing: 6.h, children: [ AppCustomChipWidget( - labelText: isLoading + labelText: widget.isLoading ? 'Cardiology' - : (patientAppointmentHistoryResponseModel.clinicName!.length > 20 - ? '${patientAppointmentHistoryResponseModel.clinicName!.substring(0, 20)}...' - : patientAppointmentHistoryResponseModel.clinicName!), - ).toShimmer2(isShow: isLoading), + : (widget.patientAppointmentHistoryResponseModel.clinicName!.length > 20 + ? '${widget.patientAppointmentHistoryResponseModel.clinicName!.substring(0, 20)}...' + : widget.patientAppointmentHistoryResponseModel.clinicName!), + ).toShimmer2(isShow: widget.isLoading), AppCustomChipWidget( - labelText: isLoading + labelText: widget.isLoading ? 'Olaya' - : (patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital").length > 15 - ? '${(patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital").substring(0, 15)}...' - : patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital") - .toShimmer2(isShow: isLoading), - Directionality( - textDirection: ui.TextDirection.ltr, - child: AppCustomChipWidget( - labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), - icon: AppAssets.appointment_calendar_icon, - richText: isLoading - ? 'Cardiology'.toText10().toShimmer2(isShow: isLoading) - : "${DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)} ${DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)}" - .toText10(isEnglishOnly: true), - ).toShimmer2(isShow: isLoading), + : (widget.patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital").length > 15 + ? '${(widget.patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital").substring(0, 15)}...' + : widget.patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital") + .toShimmer2(isShow: widget.isLoading), + ClarityUnmask( + child: Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + icon: AppAssets.appointment_calendar_icon, + richText: widget.isLoading + ? 'Cardiology'.toText10().toShimmer2(isShow: widget.isLoading) + : "${DateUtil.formatDateToDate(DateUtil.convertStringToDate(widget.patientAppointmentHistoryResponseModel.appointmentDate), false)} ${DateUtil.formatDateToTimeLang(DateUtil.convertStringToDate(widget.patientAppointmentHistoryResponseModel.appointmentDate), false)}" + .toText10(isEnglishOnly: true, isBold: true), + ).toShimmer2(isShow: widget.isLoading), + ), ), // AppCustomChipWidget( @@ -226,30 +356,110 @@ class AppointmentCard extends StatelessWidget { } Widget _buildActionArea(BuildContext context, AppState appState) { - if ((((patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false) || - (patientAppointmentHistoryResponseModel.isExecludeDoctor ?? false) || - !Utils.isClinicAllowedForRebook(patientAppointmentHistoryResponseModel.clinicID ?? 0))) && - AppointmentType.isArrived(patientAppointmentHistoryResponseModel)) { + if ((((widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false) || + (widget.patientAppointmentHistoryResponseModel.isExecludeDoctor ?? false) || + !Utils.isClinicAllowedForRebook(widget.patientAppointmentHistoryResponseModel.clinicID ?? 0))) && + AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel)) { + // if (((patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false) && + // DateTime.now().difference(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate)).inDays <= 15)) { + // return Row( + // children: [ + // Expanded( + // flex: 6, + // child: CustomButton( + // text: LocaleKeys.askDoctor.tr(context: context), + // onPressed: () async { + // LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingDoctorAvailability.tr(context: context)); + // await myAppointmentsViewModel.isDoctorAvailable( + // projectID: patientAppointmentHistoryResponseModel.projectID, + // doctorId: patientAppointmentHistoryResponseModel.doctorID, + // clinicId: patientAppointmentHistoryResponseModel.clinicID, + // onSuccess: (value) async { + // if (value) { + // await myAppointmentsViewModel.getAskDoctorRequestTypes(onSuccess: (val) { + // LoaderBottomSheet.hideLoader(); + // showCommonBottomSheetWithoutHeight( + // context, + // title: LocaleKeys.askDoctor.tr(context: context), + // child: AskDoctorRequestTypeSelect( + // askDoctorRequestTypeList: myAppointmentsViewModel.askDoctorRequestTypeList, + // myAppointmentsViewModel: myAppointmentsViewModel, + // patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel, + // ), + // callBackFunc: () {}, + // isFullScreen: false, + // isCloseButtonVisible: true, + // ); + // }); + // } else { + // print("Doctor is not available"); + // } + // }); + // }, + // backgroundColor: AppColors.secondaryLightRedColor, + // borderColor: AppColors.secondaryLightRedColor, + // textColor: AppColors.primaryRedColor, + // fontSize: (isFoldable || isTablet) ? 12.f : 14.f, + // fontWeight: FontWeight.w600, + // borderRadius: 12.r, + // padding: EdgeInsets.symmetric(horizontal: 10.w), + // // height: isTablet || isFoldable ? 46.h : 40.h, + // height: 40.h, + // icon: AppAssets.ask_doctor_icon, + // iconColor: AppColors.primaryRedColor, + // iconSize: 16.h, + // ), + // ), + // SizedBox(width: 8.h), + // Expanded( + // flex: 1, + // child: Container( + // height: (isFoldable || isTablet) ? 50.h : 40.h, + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // color: AppColors.textColor, + // borderRadius: 10.h, + // side: BorderSide( + // color: AppColors.textColor, + // width: 1.2, + // ), + // ), + // child: Transform.flip( + // flipX: appState.isArabic(), + // child: Utils.buildSvgWithAssets( + // icon: AppAssets.forward_arrow_icon, + // iconColor: AppColors.whiteColor, + // width: 24.w, + // height: 24.h, + // fit: BoxFit.contain, + // ), + // ), + // ).toShimmer2(isShow: isLoading).onPress(() { + // _goToDetails(context); + // }), + // ), + // ], + // ); + // } else { return CustomButton( - text: isFromMedicalReport ? LocaleKeys.selectAppointment.tr(context: context) : LocaleKeys.viewDetails.tr(context: context), + text: widget.isFromMedicalReport ? LocaleKeys.selectAppointment.tr(context: context) : LocaleKeys.viewDetails.tr(context: context), onPressed: () { - if (isFromMedicalReport) { - if (isForFeedback) { - contactUsViewModel!.setPatientFeedbackSelectedAppointment(patientAppointmentHistoryResponseModel); + if (widget.isFromMedicalReport) { + if (widget.isForFeedback) { + widget.contactUsViewModel!.setPatientFeedbackSelectedAppointment(widget.patientAppointmentHistoryResponseModel); } else { - medicalFileViewModel!.setSelectedMedicalReportAppointment(patientAppointmentHistoryResponseModel); + widget.medicalFileViewModel!.setSelectedMedicalReportAppointment(widget.patientAppointmentHistoryResponseModel); } Navigator.pop(context, false); } else { Navigator.of(context) .push( CustomPageRoute( - page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel), + page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel), ), ) .then((_) { - myAppointmentsViewModel.initAppointmentsViewModel(); - myAppointmentsViewModel.getPatientAppointments(true, false); + widget.myAppointmentsViewModel.initAppointmentsViewModel(); + widget.myAppointmentsViewModel.getPatientAppointments(true, false); }); } }, @@ -257,27 +467,28 @@ class AppointmentCard extends StatelessWidget { borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: (isFoldable || isTablet) ? 12.f : 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), // height: isTablet || isFoldable ? 46.h : 40.h, height: 40.h, - icon: isFromMedicalReport ? AppAssets.checkmark_icon : null, + icon: widget.isFromMedicalReport ? AppAssets.checkmark_icon : null, iconColor: AppColors.primaryRedColor, iconSize: 16.h, ); + // } } else { - if (isFromMedicalReport) { - if (isForEyeMeasurements) { + if (widget.isFromMedicalReport) { + if (widget.isForEyeMeasurements) { return SizedBox.shrink(); } else { return CustomButton( text: LocaleKeys.selectAppointment.tr(context: context), onPressed: () { - if (isForFeedback) { - contactUsViewModel!.setPatientFeedbackSelectedAppointment(patientAppointmentHistoryResponseModel); + if (widget.isForFeedback) { + widget.contactUsViewModel!.setPatientFeedbackSelectedAppointment(widget.patientAppointmentHistoryResponseModel); } else { - medicalFileViewModel!.setSelectedMedicalReportAppointment(patientAppointmentHistoryResponseModel); + widget.medicalFileViewModel!.setSelectedMedicalReportAppointment(widget.patientAppointmentHistoryResponseModel); } Navigator.pop(context, false); }, @@ -285,7 +496,7 @@ class AppointmentCard extends StatelessWidget { borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: (isFoldable || isTablet) ? 12.f : 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), // height: isTablet || isFoldable ? 46.h : 40.h, @@ -296,112 +507,125 @@ class AppointmentCard extends StatelessWidget { ); } } - - return Row( - children: [ - Expanded( - flex: 6, - child: (AppointmentType.isArrived(patientAppointmentHistoryResponseModel) - ? _getArrivedButton(context) - : CustomButton( - text: AppointmentType.getNextActionText(patientAppointmentHistoryResponseModel.nextAction), - onPressed: () => _goToDetails(context), - backgroundColor: AppointmentType.getNextActionButtonColor(patientAppointmentHistoryResponseModel.nextAction).withValues(alpha: 0.15), - borderColor: AppointmentType.getNextActionButtonColor(patientAppointmentHistoryResponseModel.nextAction).withValues(alpha: 0.01), - textColor: AppointmentType.getNextActionTextColor(patientAppointmentHistoryResponseModel.nextAction), - fontSize: (isFoldable || isTablet) ? 12.f : 14.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - padding: EdgeInsets.symmetric(horizontal: 10.w), - height: 40.h, - icon: AppointmentType.getNextActionIcon(patientAppointmentHistoryResponseModel.nextAction), - iconColor: AppointmentType.getNextActionTextColor(patientAppointmentHistoryResponseModel.nextAction), - iconSize: 15.h, - )) - .toShimmer2(isShow: isLoading), - ), - SizedBox(width: 8.h), - Expanded( - flex: 1, - child: Container( - height: (isFoldable || isTablet) ? 50.h : 40.h, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.textColor, borderRadius: 10.h), - child: Transform.flip( - flipX: appState.isArabic(), - child: Utils.buildSvgWithAssets( - icon: AppAssets.forward_arrow_icon, - iconColor: AppColors.whiteColor, - width: 24.w, - height: 24.h, - fit: BoxFit.contain, - ), - ), - ).toShimmer2(isShow: isLoading).onPress(() { - _goToDetails(context); - }), - ), - ], - ); + return (widget.patientAppointmentHistoryResponseModel.isActiveDoctor ?? true) + ? (AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) && + widget.patientAppointmentHistoryResponseModel.isClinicReBookingAllowed == false) + ? // Show only View Details button without arrow when rebooking not allowed + _getArrivedButton(context) + : Row( + children: [ + Expanded( + flex: 6, + child: (AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) + ? _getArrivedButton(context) + : CustomButton( + text: AppointmentType.getNextActionText(widget.patientAppointmentHistoryResponseModel.nextAction), + onPressed: () => handleAppointmentNextAction(widget.patientAppointmentHistoryResponseModel.nextAction, context), + backgroundColor: AppointmentType.getNextActionButtonColor(widget.patientAppointmentHistoryResponseModel.nextAction) + .withValues(alpha: 0.15), + borderColor: AppointmentType.getNextActionButtonColor(widget.patientAppointmentHistoryResponseModel.nextAction) + .withValues(alpha: 0.01), + textColor: AppointmentType.getNextActionTextColor(widget.patientAppointmentHistoryResponseModel.nextAction), + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 40.h, + icon: AppointmentType.getNextActionIcon(widget.patientAppointmentHistoryResponseModel.nextAction), + iconColor: AppointmentType.getNextActionTextColor(widget.patientAppointmentHistoryResponseModel.nextAction), + iconSize: 15.h, + )) + .toShimmer2(isShow: widget.isLoading), + ), + SizedBox(width: 8.h), + Expanded( + flex: 1, + child: Container( + height: (isFoldable || isTablet) ? 50.h : 40.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.transparent, + borderRadius: 10.h, + side: BorderSide( + color: AppColors.textColor, + width: 1.2, + ), + ), + child: Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.forward_arrow_icon, + iconColor: AppColors.textColor, + width: 24.w, + height: 24.h, + fit: BoxFit.contain, + ), + ), + ).toShimmer2(isShow: widget.isLoading).onPress(() { + _goToDetails(context); + }), + ), + ], + ) + : CustomButton( + text: LocaleKeys.viewDetails.tr(context: context), + onPressed: () { + Navigator.of(context) + .push( + CustomPageRoute( + page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel), + ), + ) + .then((_) { + widget.myAppointmentsViewModel.initAppointmentsViewModel(); + widget.myAppointmentsViewModel.getPatientAppointments(true, false); + }); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + // height: isTablet || isFoldable ? 46.h : 40.h, + height: 40.h, + icon: widget.isFromMedicalReport ? AppAssets.checkmark_icon : null, + iconColor: AppColors.primaryRedColor, + iconSize: 16.h, + ); } } Widget _getArrivedButton(BuildContext context) { - final isRecent = DateTime.now().difference(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate)).inDays <= 15; - - if (isRecent) { + if (widget.patientAppointmentHistoryResponseModel.isClinicReBookingAllowed == false) { return CustomButton( - text: LocaleKeys.askDoctor.tr(context: context), - onPressed: () async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingDoctorAvailability.tr(context: context)); - await myAppointmentsViewModel.isDoctorAvailable( - projectID: patientAppointmentHistoryResponseModel.projectID, - doctorId: patientAppointmentHistoryResponseModel.doctorID, - clinicId: patientAppointmentHistoryResponseModel.clinicID, - onSuccess: (value) async { - if (value) { - await myAppointmentsViewModel.getAskDoctorRequestTypes(onSuccess: (val) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - title: LocaleKeys.askDoctor.tr(context: context), - child: AskDoctorRequestTypeSelect( - askDoctorRequestTypeList: myAppointmentsViewModel.askDoctorRequestTypeList, - myAppointmentsViewModel: myAppointmentsViewModel, - patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel, - ), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }); - } else { - print("Doctor is not available"); - } - }); - }, + text: LocaleKeys.viewDetails.tr(context: context), + onPressed: () => _goToDetails(context), backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: (isFoldable || isTablet) ? 12.f : 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), - // height: isTablet || isFoldable ? 46.h : 40.h, height: 40.h, - icon: AppAssets.ask_doctor_icon, - iconColor: AppColors.primaryRedColor, - iconSize: 16.h, ); } + // Show Rebook button return CustomButton( + borderSide: BorderSide( + color: AppColors.textColor, + width: 1.2, + ), text: LocaleKeys.rebookSameDoctor.tr(context: context), onPressed: () => openDoctorScheduleCalendar(context), - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, + backgroundColor: AppColors.transparent, + borderColor: AppColors.textColor, textColor: AppColors.blackColor, + borderWidth: 1.h, fontSize: (isFoldable || isTablet) ? 12.f : 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), height: 40.h, @@ -412,19 +636,24 @@ class AppointmentCard extends StatelessWidget { } void _goToDetails(BuildContext context) { - if (isFromMedicalReport) return; - if (isForEyeMeasurements) { + if (widget.isFromMedicalReport) return; + if (widget.isForEyeMeasurements) { Navigator.of(context).push( CustomPageRoute( - page: EyeMeasurementDetailsPage(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel), + page: EyeMeasurementDetailsPage(patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel), ), ); } else { - bookAppointmentsViewModel.getAppointmentNearestGate(projectID: patientAppointmentHistoryResponseModel.projectID, clinicID: patientAppointmentHistoryResponseModel.clinicID); + if (!AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) && + widget.patientAppointmentHistoryResponseModel.projectID != null && + widget.patientAppointmentHistoryResponseModel.clinicID != null) { + widget.bookAppointmentsViewModel.getAppointmentNearestGate( + projectID: widget.patientAppointmentHistoryResponseModel.projectID, clinicID: widget.patientAppointmentHistoryResponseModel.clinicID); + } Navigator.of(context) .push( CustomPageRoute( - page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel), + page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel), ), ) .then((_) { @@ -436,22 +665,22 @@ class AppointmentCard extends StatelessWidget { void openDoctorScheduleCalendar(BuildContext context) async { final doctor = DoctorsListResponseModel( - clinicID: patientAppointmentHistoryResponseModel.clinicID, - projectID: patientAppointmentHistoryResponseModel.projectID, - doctorID: patientAppointmentHistoryResponseModel.doctorID, - doctorImageURL: patientAppointmentHistoryResponseModel.doctorImageURL, - doctorTitle: patientAppointmentHistoryResponseModel.doctorTitle, - name: patientAppointmentHistoryResponseModel.doctorNameObj, - nationalityFlagURL: 'https://hmgwebservices.com/Images/flag/SYR.png', + clinicID: widget.patientAppointmentHistoryResponseModel.clinicID, + projectID: widget.patientAppointmentHistoryResponseModel.projectID, + doctorID: widget.patientAppointmentHistoryResponseModel.doctorID, + doctorImageURL: widget.patientAppointmentHistoryResponseModel.doctorImageURL, + doctorTitle: widget.patientAppointmentHistoryResponseModel.doctorTitle, + name: widget.patientAppointmentHistoryResponseModel.doctorNameObj, + nationalityFlagURL: '', speciality: [], - clinicName: patientAppointmentHistoryResponseModel.clinicName, - projectName: patientAppointmentHistoryResponseModel.projectName, + clinicName: widget.patientAppointmentHistoryResponseModel.clinicName, + projectName: widget.patientAppointmentHistoryResponseModel.projectName, ); - bookAppointmentsViewModel.setSelectedDoctor(doctor); + widget.bookAppointmentsViewModel.setSelectedDoctor(doctor); LoaderBottomSheet.showLoader(); - await bookAppointmentsViewModel.getDoctorFreeSlots( + await widget.bookAppointmentsViewModel.getDoctorFreeSlots( isBookingForLiveCare: false, onSuccess: (respData) async { LoaderBottomSheet.hideLoader(); @@ -476,4 +705,127 @@ class AppointmentCard extends StatelessWidget { }, ); } + + Future handleAppointmentNextAction(nextAction, BuildContext context) async { + switch (nextAction) { + case 0: + // No action needed + _goToDetails(context); + break; + case 10: + // Confirm appointment - go to details + _goToDetails(context); + break; + case 15: + // Pending payment - show waiting modal + // Ensure timer is running before showing modal + if (_countdownTimer == null || !_countdownTimer!.isActive) { + _startCountdownTimer(); + } + + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.notice.tr(), + child: StatefulBuilder( + builder: (context, setModalState) { + // Store the modal setState callback + _modalSetState = setModalState; + + return Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Lottie.asset(AppAnimations.warningAnimation, + repeat: false, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), + SizedBox( + height: 12, + ), + LocaleKeys.upcomingPaymentPending.tr(context: context).toText14( + color: AppColors.textColor, + isCenter: true, + ), + SizedBox(height: 24.h), + + // Countdown Timer - DD : HH : MM : SS format with labels + Directionality( + textDirection: ui.TextDirection.ltr, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Days + _buildTimeUnit( + _timeRemaining != null ? _timeRemaining!.inDays.toString().padLeft(2, '0') : '00', + LocaleKeys.days.tr(context: context), + ), + _buildTimeSeparator(), + // Hours + _buildTimeUnit( + _timeRemaining != null ? _timeRemaining!.inHours.remainder(24).toString().padLeft(2, '0') : '00', + LocaleKeys.hours.tr(context: context), + ), + _buildTimeSeparator(), + // Minutes + _buildTimeUnit( + _timeRemaining != null ? _timeRemaining!.inMinutes.remainder(60).toString().padLeft(2, '0') : '00', + LocaleKeys.minutes.tr(context: context), + ), + _buildTimeSeparator(), + // Seconds + _buildTimeUnit( + _timeRemaining != null ? _timeRemaining!.inSeconds.remainder(60).toString().padLeft(2, '0') : '00', + LocaleKeys.seconds.tr(context: context), + ), + ], + )), + SizedBox(height: 24.h), + // Green Acknowledge button with checkmark icon + CustomButton( + text: LocaleKeys.acknowledged.tr(context: context), + onPressed: () { + _modalSetState = null; // Clear callback when closing + Navigator.of(context).pop(); + }, + backgroundColor: AppColors.successColor, + borderColor: AppColors.successColor, + textColor: Colors.white, + fontSize: 16.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + height: 50.h, + icon: AppAssets.checkmark_icon, + iconColor: Colors.white, + ), + ], + ); + }, + ), + callBackFunc: () { + _modalSetState = null; // Clear callback when closing + }, + isFullScreen: false, + isCloseButtonVisible: true, + ); + break; + case 20: + // Pay now - navigate to payment page + widget.myAppointmentsViewModel.setIsPatientAppointmentShareLoading(true); + Navigator.of(context).push( + CustomPageRoute( + page: AppointmentPaymentPage(patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel), + ), + ); + break; + case 50: + // Confirm livecare - go to details + _goToDetails(context); + break; + case 90: + // Check-in - go to details + _goToDetails(context); + break; + default: + // Default - go to details + _goToDetails(context); + } + } } diff --git a/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart b/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart index 95fc09b8..dd6cf8eb 100644 --- a/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart +++ b/lib/presentation/appointments/widgets/appointment_checkin_bottom_sheet.dart @@ -10,6 +10,7 @@ import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; @@ -71,20 +72,20 @@ class AppointmentCheckinBottomSheet extends StatelessWidget { } }); }), - SizedBox(height: 16.h), - checkInOptionCard( - AppAssets.checkin_nfc_icon, - LocaleKeys.nfcNearFieldCommunication.tr(context: context), - LocaleKeys.scanPhoneViaNFC.tr(context: context), - ).onPress(() { - Future.delayed(const Duration(milliseconds: 500), () { - showNfcReader(context, onNcfScan: (String nfcId) { - Future.delayed(const Duration(milliseconds: 100), () { - sendCheckInRequest(nfcId, 1, context); - }); - }, onCancel: () {}); - }); - }), + // SizedBox(height: 16.h), + // checkInOptionCard(O + // AppAssets.checkin_nfc_icon, + // LocaleKeys.nfcNearFieldCommunication.tr(context: context), + // LocaleKeys.scanPhoneViaNFC.tr(context: context), + // ).onPress(() { + // Future.delayed(const Duration(milliseconds: 500), () { + // showNfcReader(context, onNcfScan: (String nfcId) { + // Future.delayed(const Duration(milliseconds: 100), () { + // sendCheckInRequest(nfcId, 1, context); + // }); + // }, onCancel: () {}); + // }); + // }), SizedBox(height: 16.h), checkInOptionCard( AppAssets.checkin_qr_icon, @@ -120,7 +121,7 @@ class AppointmentCheckinBottomSheet extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ title.toText16(isBold: true, color: AppColors.textColor), - subTitle.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + subTitle.toText12(isBold: true, color: AppColors.greyTextColor), ], ), ), @@ -153,9 +154,15 @@ class AppointmentCheckinBottomSheet extends StatelessWidget { myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); myAppointmentsViewModel.initAppointmentsViewModel(); myAppointmentsViewModel.getPatientAppointments(true, false); + + getIt.get().setIsWalletAmountToBeLoaded(true); + getIt.get().initHabibWalletProvider(); + getIt.get().getPatientBalanceAmount(); + LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.success.tr(context: context), child: Utils.getSuccessWidget(loadingText: LocaleKeys.success.tr()), callBackFunc: () async { // await myAppointmentsViewModel.getPatientAppointmentQueueDetails(); + Navigator.of(context).pop(); Navigator.pushAndRemoveUntil( context, @@ -168,7 +175,7 @@ class AppointmentCheckinBottomSheet extends StatelessWidget { // page: AppointmentQueuePage(), // ), // ); - }, isFullScreen: false); + }, isFullScreen: false, isAutoDismiss: true, isCloseButtonVisible: false); }, onError: (error) { LoaderBottomSheet.hideLoader(); diff --git a/lib/presentation/appointments/widgets/appointment_doctor_card.dart b/lib/presentation/appointments/widgets/appointment_doctor_card.dart index 298e8732..6e3f77d1 100644 --- a/lib/presentation/appointments/widgets/appointment_doctor_card.dart +++ b/lib/presentation/appointments/widgets/appointment_doctor_card.dart @@ -1,18 +1,27 @@ +import 'dart:ui' as ui; + +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/doctors_list_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/utils/appointment_type.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/book_appointment/doctor_profile_page.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; -import 'dart:ui' as ui; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; class AppointmentDoctorCard extends StatelessWidget { const AppointmentDoctorCard( @@ -20,7 +29,9 @@ class AppointmentDoctorCard extends StatelessWidget { required this.patientAppointmentHistoryResponseModel, required this.onRescheduleTap, required this.onCancelTap, - required this.onAskDoctorTap, this.renderWidgetForERDisplay = false}); + required this.onAskDoctorTap, + this.renderWidgetForERDisplay = false, + this.timerWidget}); final PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel; final VoidCallback onRescheduleTap; @@ -28,6 +39,8 @@ class AppointmentDoctorCard extends StatelessWidget { final VoidCallback onAskDoctorTap; final bool renderWidgetForERDisplay; + final Widget? timerWidget; + @override Widget build(BuildContext context) { return Container( @@ -46,8 +59,9 @@ class AppointmentDoctorCard extends StatelessWidget { children: [ Column( children: [ - Image.network( - patientAppointmentHistoryResponseModel.doctorImageURL!, + Utils.buildImgWithNetwork( + url: patientAppointmentHistoryResponseModel.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", + iconColor: AppColors.transparent, width: 63.h, height: 63.h, fit: BoxFit.cover, @@ -55,8 +69,8 @@ class AppointmentDoctorCard extends StatelessWidget { Transform.translate( offset: Offset(0.0, -20.h), child: Container( - width: 40.w, - height: 40.h, + width: 50.h, + height: 50.h, decoration: BoxDecoration( color: AppColors.whiteColor, shape: BoxShape.circle, // Makes the container circular @@ -68,9 +82,10 @@ class AppointmentDoctorCard extends StatelessWidget { child: Column( mainAxisAlignment: MainAxisAlignment.center, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h, iconColor: AppColors.ratingColorYellow), + Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.h, height: 15.h, iconColor: AppColors.ratingColorYellow), SizedBox(height: 2.h), - "${patientAppointmentHistoryResponseModel.decimalDoctorRate ?? 0.0}".toText11(isBold: true, color: AppColors.textColor), + "${patientAppointmentHistoryResponseModel.decimalDoctorRate ?? 0.0}" + .toText11(isBold: true, color: AppColors.textColor, isEnglishOnly: true), ], ), ).circle(100), @@ -79,10 +94,32 @@ class AppointmentDoctorCard extends StatelessWidget { ), SizedBox(width: 16.w), Expanded( + flex: 9, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - patientAppointmentHistoryResponseModel.doctorNameObj!.toText16(isBold: true), + Row( + children: [ + Expanded( + child: (patientAppointmentHistoryResponseModel.doctorNameObj ?? "").toText16( + isBold: true, + isEnglishOnly: !Utils.isArabicText(patientAppointmentHistoryResponseModel.doctorNameObj ?? ""), + textOverflow: TextOverflow.ellipsis, + maxlines: 2 + ), + ), + SizedBox(width: 12.w), + // (patientAppointmentHistoryResponseModel.doctorNationalityFlagURL != null && + // patientAppointmentHistoryResponseModel.doctorNationalityFlagURL!.isNotEmpty) + // ? Image.network( + // patientAppointmentHistoryResponseModel.doctorNationalityFlagURL ?? "https://hmgwebservices.com/Images/flag/SAU.png", + // width: 20.h, + // height: 15.h, + // fit: BoxFit.cover, + // ) + // : SizedBox.shrink(), + ], + ), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, @@ -90,24 +127,27 @@ class AppointmentDoctorCard extends StatelessWidget { runSpacing: 6.h, children: [ AppCustomChipWidget( - labelText: (patientAppointmentHistoryResponseModel.clinicName!.length > 20 - ? '${patientAppointmentHistoryResponseModel.clinicName!.substring(0, 20)}...' - : patientAppointmentHistoryResponseModel.clinicName!), + labelText: ((patientAppointmentHistoryResponseModel.clinicName ?? "").length > 20 + ? '${(patientAppointmentHistoryResponseModel.clinicName ?? "").substring(0, 20)}...' + : (patientAppointmentHistoryResponseModel.clinicName ?? "")), labelPadding: EdgeInsetsDirectional.only(start: 4.w, end: 4.w), ), AppCustomChipWidget( labelText: patientAppointmentHistoryResponseModel.projectName ?? "Habib Hospital", labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w), ), - Directionality( - textDirection: ui.TextDirection.ltr, - child: AppCustomChipWidget( - labelPadding: EdgeInsetsDirectional.only(start: -6.w, end: 6.w), - icon: AppAssets.doctor_calendar_icon, - richText: "${DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)} ${DateUtil.formatDateToTimeLang( - DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), - false, - )}".toText10(isEnglishOnly: true), + ClarityUnmask( + child: Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelPadding: EdgeInsetsDirectional.only(start: -6.w, end: 6.w), + icon: AppAssets.doctor_calendar_icon, + richText: "${DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false)} ${DateUtil.formatDateToTimeLang( + DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), + false, + )}" + .toText10(isBold: true), + ), ), ), AppCustomChipWidget( @@ -128,6 +168,48 @@ class AppointmentDoctorCard extends StatelessWidget { ], ), ), + (patientAppointmentHistoryResponseModel.isLiveCareAppointment! || + patientAppointmentHistoryResponseModel.isExecludeDoctor! || + patientAppointmentHistoryResponseModel.isClinicReBookingAllowed! == false || + patientAppointmentHistoryResponseModel.isActiveDoctor! == false || + !Utils.isClinicAllowedForRebook(patientAppointmentHistoryResponseModel.clinicID)) + ? SizedBox.shrink() + : Utils.buildSvgWithAssets(icon: AppAssets.doctor_profile_icon, width: 20.h, height: 20.h, fit: BoxFit.scaleDown) + .onPress(() async { + DoctorsListResponseModel selectedDoctor = DoctorsListResponseModel(); + selectedDoctor.doctorID = patientAppointmentHistoryResponseModel.doctorID; + selectedDoctor.doctorImageURL = patientAppointmentHistoryResponseModel.doctorImageURL; + selectedDoctor.name = patientAppointmentHistoryResponseModel.doctorNameObj; + selectedDoctor.doctorTitle = patientAppointmentHistoryResponseModel.doctorTitle; + selectedDoctor.nationalityFlagURL = ""; + selectedDoctor.speciality = patientAppointmentHistoryResponseModel.doctorSpeciality; + selectedDoctor.clinicName = patientAppointmentHistoryResponseModel.clinicName; + selectedDoctor.projectName = patientAppointmentHistoryResponseModel.projectName; + selectedDoctor.clinicID = patientAppointmentHistoryResponseModel.clinicID; + selectedDoctor.projectID = patientAppointmentHistoryResponseModel.projectID; + + getIt.get().setSelectedDoctor(selectedDoctor); + LoaderBottomSheet.showLoader(); + await getIt.get().getDoctorProfile(onSuccess: (dynamic respData) { + LoaderBottomSheet.hideLoader(); + Navigator.of(context).push( + CustomPageRoute( + page: DoctorProfilePage( + isDoctorAllowedToBook: !(patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false), + ), + ), + ); + }, onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }) ], ), SizedBox(height: 8.h), @@ -137,6 +219,7 @@ class AppointmentDoctorCard extends StatelessWidget { AppointmentType.isArrived(patientAppointmentHistoryResponseModel), ), ), + if (!AppointmentType.isArrived(patientAppointmentHistoryResponseModel) && timerWidget != null) timerWidget ?? SizedBox() ], ), ), @@ -155,7 +238,7 @@ class AppointmentDoctorCard extends StatelessWidget { borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12.r, padding: EdgeInsets.fromLTRB(10.w, 0, 10.w, 0), height: 40.h, @@ -163,25 +246,27 @@ class AppointmentDoctorCard extends StatelessWidget { icon: AppAssets.ask_doctor_icon, iconColor: AppColors.primaryRedColor, ) - : !patientAppointmentHistoryResponseModel.isLiveCareAppointment! - ? CustomButton( - text: LocaleKeys.rebookSameDoctor.tr(), - onPressed: () { - onRescheduleTap(); - }, - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, - textColor: AppColors.blackColor, - fontSize: 12.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - padding: EdgeInsets.fromLTRB(10.w, 0, 10.w, 0), - height: 40.h, - icon: AppAssets.rebook_appointment_icon, - iconColor: AppColors.blackColor, - iconSize: 14.h, - ) - : SizedBox.shrink(); + : + // !patientAppointmentHistoryResponseModel.isLiveCareAppointment! + // ? CustomButton( + // text: LocaleKeys.rebookSameDoctor.tr(), + // onPressed: () { + // onRescheduleTap(); + // }, + // backgroundColor: AppColors.greyColor, + // borderColor: AppColors.greyColor, + // textColor: AppColors.blackColor, + // fontSize: 12.f, + // isBold: true, + // borderRadius: 12.r, + // padding: EdgeInsets.fromLTRB(10.w, 0, 10.w, 0), + // height: 40.h, + // icon: AppAssets.rebook_appointment_icon, + // iconColor: AppColors.blackColor, + // iconSize: 14.h, + // ) + // : + SizedBox.shrink(); } else { return patientAppointmentHistoryResponseModel.isLiveCareAppointment! ? CustomButton( @@ -193,7 +278,7 @@ class AppointmentDoctorCard extends StatelessWidget { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12.r, height: 40.h, icon: AppAssets.cancel, @@ -212,9 +297,9 @@ class AppointmentDoctorCard extends StatelessWidget { borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12.r, - height: 40.h, + height: 46.h, icon: AppAssets.appointment_calendar_icon, iconColor: AppColors.primaryRedColor, iconSize: 16.h, @@ -231,9 +316,9 @@ class AppointmentDoctorCard extends StatelessWidget { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12.r, - height: 40.h, + height: 46.h, icon: AppAssets.cancel, iconColor: AppColors.whiteColor, iconSize: 16.h, diff --git a/lib/presentation/appointments/widgets/appointment_rating_widget.dart b/lib/presentation/appointments/widgets/appointment_rating_widget.dart new file mode 100644 index 00000000..9b13c6cd --- /dev/null +++ b/lib/presentation/appointments/widgets/appointment_rating_widget.dart @@ -0,0 +1,181 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/appointments/widgets/doctor_row_appointment_rating.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:provider/provider.dart'; + +class AppointmentRatingWidget extends StatefulWidget { + const AppointmentRatingWidget({super.key, required this.patientAppointmentHistoryResponseModel}); + + final PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel; + + @override + State createState() => _AppointmentRatingWidgetState(); +} + +class _AppointmentRatingWidgetState extends State { + late MyAppointmentsViewModel myAppointmentsViewModel; + late BookAppointmentsViewModel bookAppointmentsViewModel; + + int rating = 0; + String notes = ""; + + @override + Widget build(BuildContext context) { + myAppointmentsViewModel = Provider.of(context, listen: false); + bookAppointmentsViewModel = Provider.of(context, listen: false); + return SizedBox( + height: MediaQuery.of(context).size.height * 0.6, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Scrollable main content + Expanded( + child: Padding( + padding: const EdgeInsets.only(top: 0.0, left: 0, right: 0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Doctor row + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: false, + ), + child: BuildDoctorRowAppointmentRating( + patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel, + )), + + SizedBox(height: 16), + + // Rating box + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: false, + ), + width: double.infinity, + child: Padding( + padding: const EdgeInsets.all(12.0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.rateTheDoctor.tr(context: context).toText16(isBold: true), + SizedBox(height: 12), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + ...List.generate( + 5, + (index) => AnimatedSwitcher( + duration: Duration(milliseconds: 1000), + switchInCurve: Curves.elasticOut, + switchOutCurve: Curves.elasticIn, + transitionBuilder: (Widget child, Animation animation) { + return ScaleTransition(child: child, scale: animation); + }, + child: Container( + key: ValueKey(rating), + child: IconButton( + iconSize: 45.0, + onPressed: () { + setState(() { + rating = index + 1; + }); + }, + color: rating >= (index + 1) ? Color.fromRGBO(255, 186, 0, 1.0) : Colors.grey[400], + icon: Icon(rating >= (index + 1) ? Icons.star : Icons.star)), + ), + ), + ) + ], + ), + ], + ), + ), + ), + + SizedBox(height: 12), + + // Note text field + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: false, + ), + child: Padding( + padding: EdgeInsets.all(16.0), + child: TextField( + maxLines: 4, + decoration: InputDecoration.collapsed( + hintText: LocaleKeys.notes.tr(context: context), + hintStyle: TextStyle(fontSize: 16.f, fontWeight: FontWeight.w600, color: Color(0xff2B353E), letterSpacing: -0.64, height: 23 / 16)), + onChanged: (value) { + setState(() { + notes = value; + }); + }, + ))), + ], + ), + ), + ), + // Bottom action buttons pinned to bottom + SafeArea( + top: false, + child: Padding( + padding: const EdgeInsets.symmetric(vertical: 12.0), + child: Row( + children: [ + Expanded( + child: CustomButton( + text: LocaleKeys.later.tr(context: context), + backgroundColor: Color(0xffFEE9EA), + borderColor: Color(0xffFEE9EA), + textColor: Color(0xffED1C2B), + onPressed: () { + Navigator.pop(context); + }, + ), + ), + SizedBox(width: 10), + Expanded( + child: CustomButton( + text: LocaleKeys.submit.tr(context: context), + isDisabled: rating == 0, + onPressed: rating == 0 ? null : () async { + // Set up clinic rating and show clinic rating view + // appointmentRatingViewModel!.setTitle(LocaleKeys.rateDoctor.tr(context: context),); + // appointmentRatingViewModel!.setSubTitle(LocaleKeys.howWasYourLastVisitWithDoctor.tr(context: context),); + // appointmentRatingViewModel!.setClinicOrDoctor(true); + + LoaderBottomSheet.showLoader(); + await myAppointmentsViewModel.submitDoctorRating(docRate: rating, docNote: notes, patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel); + // await appointmentRatingViewModel!.submitClinicRating(clinicRate: rating, clinicNote: note); + LoaderBottomSheet.hideLoader(); + Navigator.pop(context); + setState(() {}); + }, + ), + ), + ], + ), + ), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/appointments/widgets/ask_doctor_request_type_select.dart b/lib/presentation/appointments/widgets/ask_doctor_request_type_select.dart index 3002c1c9..bf74863a 100644 --- a/lib/presentation/appointments/widgets/ask_doctor_request_type_select.dart +++ b/lib/presentation/appointments/widgets/ask_doctor_request_type_select.dart @@ -1,5 +1,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; @@ -10,6 +11,7 @@ import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/ import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; @@ -47,7 +49,7 @@ class AskDoctorRequestTypeSelect extends StatelessWidget { listTileTheme: ListTileThemeData(horizontalTitleGap: 4), ), child: RadioListTile( - title: (askDoctorRequestTypeList[index].description ?? '').toText14(weight: FontWeight.w500), + title: (askDoctorRequestTypeList[index].description ?? '').toText14(isBold: true), value: index, fillColor: WidgetStateProperty.resolveWith((states) { if (states.contains(WidgetState.selected)) { @@ -95,8 +97,8 @@ class AskDoctorRequestTypeSelect extends StatelessWidget { child: CustomButton( text: LocaleKeys.confirm.tr(), onPressed: () async { - Navigator.pop(context); - LoaderBottomSheet.showLoader(loadingText: "Sending Request..."); + Navigator.of(context).pop(); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.sendingAskDrRequest.tr(context: context)); await myAppointmentsViewModel.sendAskDocCallRequest( patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel, requestType: selectedParameterCodeValue.toString(), @@ -104,17 +106,10 @@ class AskDoctorRequestTypeSelect extends StatelessWidget { userMobileNumber: myAppointmentsViewModel.appState.getAuthenticatedUser()!.mobileNumber!, onSuccess: (val) { LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getSuccessWidget(loadingText: "Request has been sent successfully, you will be contacted soon."), - callBackFunc: () { - Navigator.of(context).pop(); - }, - title: "", - isCloseButtonVisible: true, - isDismissible: false, - isFullScreen: false, - ); + showCommonBottomSheetWithoutHeight(GetIt.instance().navigatorKey.currentContext!, + child: Padding(padding: EdgeInsets.symmetric(horizontal: 24.h), child: Utils.getSuccessWidget(loadingText: LocaleKeys.askDrRequestSentSuccess.tr())), callBackFunc: () { + Navigator.of(context).pop(); + }, title: "", isCloseButtonVisible: false, isDismissible: false, isFullScreen: false, isAutoDismiss: true); }, onError: (errMessage) { LoaderBottomSheet.hideLoader(); diff --git a/lib/presentation/appointments/widgets/doctor_row_appointment_rating.dart b/lib/presentation/appointments/widgets/doctor_row_appointment_rating.dart new file mode 100644 index 00000000..df15173c --- /dev/null +++ b/lib/presentation/appointments/widgets/doctor_row_appointment_rating.dart @@ -0,0 +1,71 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/appointment_details_resp_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; + +import 'dart:ui' as ui; + +import '../../../core/utils/utils.dart'; +import '../../../theme/colors.dart'; + +class BuildDoctorRowAppointmentRating extends StatelessWidget { + final PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel; + + BuildDoctorRowAppointmentRating({super.key, required this.patientAppointmentHistoryResponseModel}); + + @override + Widget build(BuildContext context) { + return Padding( + padding: EdgeInsets.all(16), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Utils.buildImgWithNetwork( + url: patientAppointmentHistoryResponseModel.doctorImageURL!, + iconColor: AppColors.transparent, + width: 63.h, + height: 63.h, + fit: BoxFit.cover, + ).circle(100), + SizedBox(width: 16.h), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + patientAppointmentHistoryResponseModel.doctorNameObj!.toString().toText16(isBold: true, maxlines: 1), + SizedBox(height: 8.h), + Wrap( + direction: Axis.horizontal, + spacing: 3.h, + runSpacing: 4.h, + children: [ + AppCustomChipWidget( + labelText: patientAppointmentHistoryResponseModel.projectName.toString(), + ), + AppCustomChipWidget( + labelText: patientAppointmentHistoryResponseModel.clinicName.toString(), + ), + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelPadding: EdgeInsetsDirectional.only(start: -8.w, end: 6.w), + icon: AppAssets.ic_date_filter, + labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false), + isEnglishOnly: true, + ), + ), + ], + ), + ], + ), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/appointments/widgets/faculity_selection/facility_selection_item.dart b/lib/presentation/appointments/widgets/faculity_selection/facility_selection_item.dart index 2f5589c8..a6e3e8d2 100644 --- a/lib/presentation/appointments/widgets/faculity_selection/facility_selection_item.dart +++ b/lib/presentation/appointments/widgets/faculity_selection/facility_selection_item.dart @@ -82,7 +82,7 @@ class FacilitySelectionItem extends StatelessWidget { subTitle, style: TextStyle( fontSize: 12.h, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: AppColors.greyTextColor, ), ), diff --git a/lib/presentation/appointments/widgets/faculity_selection/facility_type_selection_widget.dart b/lib/presentation/appointments/widgets/faculity_selection/facility_type_selection_widget.dart index b6366dbf..eb084ca7 100644 --- a/lib/presentation/appointments/widgets/faculity_selection/facility_type_selection_widget.dart +++ b/lib/presentation/appointments/widgets/faculity_selection/facility_type_selection_widget.dart @@ -39,7 +39,7 @@ class FacilityTypeSelectionWidget extends StatelessWidget { LocaleKeys.selectFacilitiesSubTitle.tr(), style: TextStyle( fontSize: 16, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: AppColors.greyTextColor, ), ), diff --git a/lib/presentation/appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart b/lib/presentation/appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart index f3301f0c..4264ba17 100644 --- a/lib/presentation/appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart +++ b/lib/presentation/appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart @@ -1,11 +1,13 @@ import 'package:easy_localization/easy_localization.dart' show StringTranslateExtension; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/debouncer.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart' show Utils; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; -import 'package:hmg_patient_app_new/features/my_appointments/appointment_via_region_viewmodel.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/facility_selection.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/doctor_list_api_response.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; @@ -14,7 +16,6 @@ import 'package:hmg_patient_app_new/theme/colors.dart' show AppColors; import 'package:hmg_patient_app_new/widgets/input_widget.dart'; import 'package:provider/provider.dart'; -import '../../../../features/my_appointments/models/resp_models/hospital_model.dart' show HospitalsModel; import '../../../emergency_services/call_ambulance/widgets/type_selection_widget.dart' show TypeSelectionWidget; // class HospitalBottomSheetBody extends StatelessWidget { @@ -35,7 +36,7 @@ import '../../../emergency_services/call_ambulance/widgets/type_selection_widget // LocaleKeys.selectHospital.tr(context: context), // style: TextStyle( // fontSize: 21, -// fontWeight: FontWeight.w600, +// isBold: true, // color: AppColors.blackColor, // ), // ), @@ -43,7 +44,7 @@ import '../../../emergency_services/call_ambulance/widgets/type_selection_widget // LocaleKeys.selectHospitalSubTitle.tr(context: context), // style: TextStyle( // fontSize: 16, -// fontWeight: FontWeight.w500, +// isBold: true, // color: AppColors.greyTextColor, // ), // ), @@ -125,66 +126,111 @@ class HospitalBottomSheetBody extends StatelessWidget { final Function(FacilitySelection) onFacilityClicked; final Function(PatientDoctorAppointmentList) onHospitalClicked; final Function(String) onHospitalSearch; + final bool sortByLocation; + final Function(bool)? onSortByLocationToggle; - HospitalBottomSheetBody({super.key, required this.hmcCount, required this.hmgCount, this.displayList, required this.selectedFacility, required this.onFacilityClicked, required this.onHospitalClicked, required this.onHospitalSearch, required this.searchText}); + HospitalBottomSheetBody({super.key, required this.hmcCount, required this.hmgCount, this.displayList, required this.selectedFacility, required this.onFacilityClicked, required this.onHospitalClicked, required this.onHospitalSearch, required this.searchText, this.sortByLocation = false, this.onSortByLocationToggle}); @override Widget build(BuildContext context) { - - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - TextInputWidget( - labelText: LocaleKeys.search.tr(context: context), - hintText: LocaleKeys.searchHospital.tr(context: context), - controller: searchText, - onChange: (value) { - debouncer.run((){ - onHospitalSearch(value??""); - }); - }, - isEnable: true, - prefix: null, - - autoFocus: false, - isBorderAllowed: false, - keyboardType: TextInputType.text, - isAllowLeadingIcon: true, - selectionType: SelectionTypeEnum.search, - padding: EdgeInsets.symmetric( - vertical: ResponsiveExtension(10).h, - horizontal: ResponsiveExtension(15).h, + return Consumer(builder: (context, myAppointmentsVM, child) { + if (myAppointmentsVM.isRegionListLoading) { + return Container( + height: MediaQuery.of(context).size.height * 0.3, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.vertical(top: Radius.circular(16)), ), - ), - SizedBox(height: 24.h), - TypeSelectionWidget( - selectedFacility:selectedFacility , - hmcCount: hmcCount.toString(), - hmgCount: hmgCount.toString(), - onitemClicked: (selectedValue){ - onFacilityClicked(selectedValue); - }, - ), - SizedBox(height: 21.h), - SizedBox( - height: MediaQuery.sizeOf(context).height * .4, - child: ListView.separated( - itemBuilder: (_, index) - { - var hospital = displayList?[index]; - return HospitalListItem( - hospitalData: hospital, - isLocationEnabled: true, - ).onPress(() { - onHospitalClicked(hospital!); - });}, - separatorBuilder: (_, __) => SizedBox( - height: 16.h, + child: Center( + child: Utils.getLoadingWidget(), + ), + ); + } else { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextInputWidget( + labelText: LocaleKeys.search.tr(context: context), + hintText: LocaleKeys.searchHospital.tr(context: context), + controller: searchText, + onChange: (value) { + debouncer.run(() { + onHospitalSearch(value ?? ""); + }); + }, + isEnable: true, + prefix: null, + autoFocus: false, + isBorderAllowed: false, + keyboardType: TextInputType.text, + isAllowLeadingIcon: true, + selectionType: SelectionTypeEnum.search, + padding: EdgeInsets.symmetric( + vertical: ResponsiveExtension(10).h, + horizontal: ResponsiveExtension(15).h, + ), + ), + SizedBox(height: 16.h), + if (onSortByLocationToggle != null) + Padding( + padding: EdgeInsets.symmetric(horizontal: 4.w), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.location, iconColor: AppColors.greyTextColor, width: 18.h, height: 18.h), + SizedBox(width: 8.w), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.sortByLocation.tr(context: context).toText14(isBold: true), + // SizedBox(height: 4.h), + LocaleKeys.sortByNearestLocation.tr(context: context).toText11(color: AppColors.textColorLight, isBold: true), + ], + ), + ], + ), + Switch( + value: sortByLocation, + onChanged: onSortByLocationToggle, + activeThumbColor: AppColors.successColor, + activeTrackColor: AppColors.successColor.withValues(alpha: 0.15), + ), + ], + ), ), - itemCount: displayList?.length ?? 0, - )) - ], - ); + if (onSortByLocationToggle != null) SizedBox(height: 8.h), + TypeSelectionWidget( + selectedFacility: selectedFacility, + hmcCount: hmcCount.toString(), + hmgCount: hmgCount.toString(), + onitemClicked: (selectedValue) { + onFacilityClicked(selectedValue); + }, + ), + SizedBox(height: 21.h), + SizedBox( + height: MediaQuery.sizeOf(context).height * .4, + child: ListView.separated( + itemBuilder: (_, index) { + var hospital = displayList?[index]; + return HospitalListItem( + hospitalData: hospital, + isLocationEnabled: sortByLocation, + ).onPress(() { + onHospitalClicked(hospital!); + }); + }, + separatorBuilder: (_, __) => SizedBox( + height: 16.h, + ), + itemCount: displayList?.length ?? 0, + )) + ], + ); + } + }); } } diff --git a/lib/presentation/appointments/widgets/hospital_bottom_sheet/hospital_list_items.dart b/lib/presentation/appointments/widgets/hospital_bottom_sheet/hospital_list_items.dart index b0a717b7..8b395e7b 100644 --- a/lib/presentation/appointments/widgets/hospital_bottom_sheet/hospital_list_items.dart +++ b/lib/presentation/appointments/widgets/hospital_bottom_sheet/hospital_list_items.dart @@ -1,3 +1,4 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -7,9 +8,12 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/doctor_list_api_response.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'dart:ui' as ui; + class HospitalListItem extends StatelessWidget { final PatientDoctorAppointmentList? hospitalData; final bool isLocationEnabled; @@ -76,12 +80,16 @@ class HospitalListItem extends StatelessWidget { children: [ Visibility( visible: (hospitalData?.distanceInKMs != "0"), - child: AppCustomChipWidget( - labelText: "${hospitalData?.distanceInKMs ?? ""} km", - deleteIcon: AppAssets.location_red, - deleteIconSize: Size(9, 12), - backgroundColor: AppColors.secondaryLightRedColor, - textColor: AppColors.errorColor, + child: Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelText: "${hospitalData?.distanceInKMs ?? ""} km", + deleteIcon: AppAssets.location_red, + deleteIconSize: Size(9, 12), + backgroundColor: AppColors.secondaryLightRedColor, + textColor: AppColors.errorColor, + isEnglishOnly: true, + ), ), ), Visibility( @@ -89,7 +97,7 @@ class HospitalListItem extends StatelessWidget { child: Row( children: [ AppCustomChipWidget( - labelText: "Distance not available", + labelText: LocaleKeys.noDistance.tr(), textColor: AppColors.blackColor, ), // SizedBox( @@ -97,14 +105,14 @@ class HospitalListItem extends StatelessWidget { // ) ], )), - Visibility( - visible: !isLocationEnabled, - child: AppCustomChipWidget( - labelText: "Location turned off", - deleteIcon: AppAssets.location_unavailable, - deleteIconSize: Size(9.w, 12.h), - textColor: AppColors.blackColor, - )), + // Visibility( + // visible: !isLocationEnabled, + // child: AppCustomChipWidget( + // labelText: "Location turned off", + // deleteIcon: AppAssets.location_unavailable, + // deleteIconSize: Size(9.w, 12.h), + // textColor: AppColors.blackColor, + // )), ], ); } diff --git a/lib/presentation/appointments/widgets/region_bottomsheet/region_list_item.dart b/lib/presentation/appointments/widgets/region_bottomsheet/region_list_item.dart index 99f31be6..7f88074c 100644 --- a/lib/presentation/appointments/widgets/region_bottomsheet/region_list_item.dart +++ b/lib/presentation/appointments/widgets/region_bottomsheet/region_list_item.dart @@ -68,7 +68,7 @@ class RegionListItem extends StatelessWidget { text: TextSpan( text: count, style: TextStyle(fontSize: 12.h, fontWeight: FontWeight.w700, color: AppColors.blackColor), - children: [TextSpan(text: title, style: TextStyle(fontSize: 12.h, fontWeight: FontWeight.w500, color: AppColors.blackColor))])), + children: [TextSpan(text: title, style: TextStyle(fontSize: 12.h, fontWeight: FontWeight.w600, color: AppColors.blackColor))])), ); } @@ -93,7 +93,7 @@ class RegionListItem extends StatelessWidget { subTitle, style: TextStyle( fontSize: 12.h, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: AppColors.greyTextColor, ), ), diff --git a/lib/presentation/appointments/widgets/region_bottomsheet/region_list_widget.dart b/lib/presentation/appointments/widgets/region_bottomsheet/region_list_widget.dart index 489ee8b7..b689162c 100644 --- a/lib/presentation/appointments/widgets/region_bottomsheet/region_list_widget.dart +++ b/lib/presentation/appointments/widgets/region_bottomsheet/region_list_widget.dart @@ -3,6 +3,9 @@ import 'dart:async'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/location_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart' show Utils; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -14,6 +17,7 @@ import 'package:hmg_patient_app_new/presentation/appointments/widgets/region_bot import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:lottie/lottie.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -33,6 +37,7 @@ class _RegionBottomSheetBodyState extends State { @override void initState() { scheduleMicrotask(() { + regionalViewModel.initSortByLocation(); if (regionalViewModel.regionBottomSheetType == RegionBottomSheetType.FOR_REGION || regionalViewModel.regionBottomSheetType == RegionBottomSheetType.REGION_FOR_DENTAL_AND_LASER ) { myAppointmentsViewModel.getRegionMappedProjectList(); } else if (regionalViewModel.regionBottomSheetType == RegionBottomSheetType.FOR_CLINIIC) { @@ -110,30 +115,136 @@ class _RegionBottomSheetBodyState extends State { } else { return SizedBox( height: MediaQuery.of(context).size.height * 0.5, - child: ListView.separated( - itemCount: myAppointmentsVM.hospitalList?.registeredDoctorMap?.length ?? 0, - separatorBuilder: (_, __) { - return SizedBox( - height: 16.h, - ); - }, - itemBuilder: (_, index) { - String key = myAppointmentsVM.hospitalList?.registeredDoctorMap?.keys.toList()[index] ?? ''; - return RegionListItem( - title: key, - subTitle: "", - hmcCount: "${myAppointmentsVM.hospitalList?.registeredDoctorMap?[key]?.hmcSize ?? 0}", - hmgCount: "${myAppointmentsVM.hospitalList?.registeredDoctorMap?[key]?.hmgSize ?? 0}", - ).onPress(() { - regionalViewModel.setSelectedRegionId(key); - regionalViewModel.setDisplayListAndRegionHospitalList(myAppointmentsVM.hospitalList?.registeredDoctorMap![key]); - regionalViewModel.setBottomSheetState(AppointmentViaRegionState.HOSPITAL_SELECTION); - }); - }, + child: Column( + children: [ + // Consumer( + // builder: (context, regionVM, _) { + // return Padding( + // padding: EdgeInsets.symmetric(horizontal: 4.w, vertical: 8.h), + // child: Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // Row( + // children: [ + // Utils.buildSvgWithAssets(icon: AppAssets.location, iconColor: AppColors.greyTextColor, width: 24.h, height: 24.h), + // SizedBox(width: 12.w), + // Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // LocaleKeys.sortByLocation.tr(context: context).toText14(isBold: true), + // // SizedBox(height: 4.h), + // LocaleKeys.sortByNearestLocation.tr(context: context).toText11(color: AppColors.textColorLight, isBold: true), + // ], + // ), + // ], + // ), + // Switch( + // value: regionVM.sortByLocation, + // onChanged: (value) => _handleSortByLocationToggle(value), + // activeThumbColor: AppColors.successColor, + // activeTrackColor: AppColors.successColor.withValues(alpha: 0.15), + // ), + // ], + // ), + // ); + // }, + // ), + Expanded( + child: ListView.separated( + itemCount: myAppointmentsVM.hospitalList?.registeredDoctorMap?.length ?? 0, + separatorBuilder: (_, __) { + return SizedBox( + height: 16.h, + ); + }, + itemBuilder: (_, index) { + String key = myAppointmentsVM.hospitalList?.registeredDoctorMap?.keys.toList()[index] ?? ''; + return RegionListItem( + title: key, + subTitle: "", + hmcCount: "${myAppointmentsVM.hospitalList?.registeredDoctorMap?[key]?.hmcSize ?? 0}", + hmgCount: "${myAppointmentsVM.hospitalList?.registeredDoctorMap?[key]?.hmgSize ?? 0}", + ).onPress(() { + regionalViewModel.setSelectedRegionId(key); + regionalViewModel.setDisplayListAndRegionHospitalList(myAppointmentsVM.hospitalList?.registeredDoctorMap![key]); + regionalViewModel.setBottomSheetState(AppointmentViaRegionState.HOSPITAL_SELECTION); + }); + }, + ), + ), + ], ), ); } }, ); } + + void _handleSortByLocationToggle(bool value) { + if (value) { + // User wants to sort by location — check permission & get location + final locationUtils = getIt.get(); + locationUtils.getLocation( + isShowConfirmDialog: true, + onSuccess: (latLng) { + regionalViewModel.setSortByLocation(true); + if (regionalViewModel.regionBottomSheetType == RegionBottomSheetType.FOR_REGION || regionalViewModel.regionBottomSheetType == RegionBottomSheetType.REGION_FOR_DENTAL_AND_LASER) { + myAppointmentsViewModel.getRegionMappedProjectList(); + } else if (regionalViewModel.regionBottomSheetType == RegionBottomSheetType.FOR_CLINIIC) { + myAppointmentsViewModel.getMappedDoctors(); + } + }, + onFailure: () { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.giveLocationPermissionForNearestList.tr(context: context), + isShowActionButtons: true, + onCancelTap: () { + Navigator.of(context).pop(); + }, + onConfirmTap: () async { + Navigator.of(context).pop(); + openAppSettings(); + }), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + regionalViewModel.setSortByLocation(false); + }, + onLocationDeniedForever: () { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.giveLocationPermissionForNearestList.tr(context: context), + isShowActionButtons: true, + onCancelTap: () { + Navigator.of(context).pop(); + }, + onConfirmTap: () async { + Navigator.of(context).pop(); + openAppSettings(); + }), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + regionalViewModel.setSortByLocation(false); + }, + ); + } else { + // User turned off sort by location — reset location & re-fetch + final appState = getIt.get(); + appState.resetLocation(); + regionalViewModel.setSortByLocation(false); + if (regionalViewModel.regionBottomSheetType == RegionBottomSheetType.FOR_REGION || regionalViewModel.regionBottomSheetType == RegionBottomSheetType.REGION_FOR_DENTAL_AND_LASER) { + myAppointmentsViewModel.getRegionMappedProjectList(); + } else if (regionalViewModel.regionBottomSheetType == RegionBottomSheetType.FOR_CLINIIC) { + myAppointmentsViewModel.getMappedDoctors(); + } + } + } } diff --git a/lib/presentation/ask_doctor/doctor_response_page.dart b/lib/presentation/ask_doctor/doctor_response_page.dart index 9cd19ef6..5591d777 100644 --- a/lib/presentation/ask_doctor/doctor_response_page.dart +++ b/lib/presentation/ask_doctor/doctor_response_page.dart @@ -78,7 +78,7 @@ class _DoctorResponsePageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - askDoctorVM.doctorResponsesList[index].requestTypeDescription!.toText18(isBold: true), + (askDoctorVM.doctorResponsesList[index].requestTypeDescription ?? "").toText18(isBold: true), SizedBox(height: 24.h), Row( crossAxisAlignment: CrossAxisAlignment.start, @@ -86,8 +86,9 @@ class _DoctorResponsePageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - Image.network( - "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", + Utils.buildImgWithNetwork( + url: "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", + iconColor: AppColors.blackBgColor, width: 50.w, height: 50.h, fit: BoxFit.cover, @@ -133,7 +134,7 @@ class _DoctorResponsePageState extends State { ).onPress(() { showCommonBottomSheetWithoutHeight( context, - title: askDoctorVM.doctorResponsesList[index].requestTypeDescription!, + title: askDoctorVM.doctorResponsesList[index].requestTypeDescription ?? "", child: DoctorResponseTransactions(doctorResponseModel: askDoctorVM.doctorResponsesList[index],), callBackFunc: () {}, isFullScreen: false, diff --git a/lib/presentation/ask_doctor/widgets/ask_doctor_appointment_card.dart b/lib/presentation/ask_doctor/widgets/ask_doctor_appointment_card.dart index d58b75e9..6eae8870 100644 --- a/lib/presentation/ask_doctor/widgets/ask_doctor_appointment_card.dart +++ b/lib/presentation/ask_doctor/widgets/ask_doctor_appointment_card.dart @@ -87,8 +87,9 @@ class AskDoctorAppointmentCard extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - Image.network( - askDoctorAppointmentHistoryList.doctorImageURL!, + Utils.buildImgWithNetwork( + url: askDoctorAppointmentHistoryList.doctorImageURL!, + iconColor: AppColors.blackBgColor, width: 63.h, height: 63.h, fit: BoxFit.cover, @@ -203,7 +204,7 @@ class AskDoctorAppointmentCard extends StatelessWidget { borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), // height: isTablet || isFoldable ? 46.h : 40.h, diff --git a/lib/presentation/ask_doctor/widgets/doctor_response_transactions.dart b/lib/presentation/ask_doctor/widgets/doctor_response_transactions.dart index 33b544d7..141ddf52 100644 --- a/lib/presentation/ask_doctor/widgets/doctor_response_transactions.dart +++ b/lib/presentation/ask_doctor/widgets/doctor_response_transactions.dart @@ -28,8 +28,9 @@ class DoctorResponseTransactions extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - Image.network( - "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", + Utils.buildImgWithNetwork( + url: "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", + iconColor: AppColors.blackBgColor, width: 50.w, height: 50.h, fit: BoxFit.cover, @@ -77,7 +78,7 @@ class DoctorResponseTransactions extends StatelessWidget { borderColor: AppColors.greyColor, textColor: AppColors.textColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 10.r, height: 40.h, ).paddingSymmetrical(16.w, 0.h), @@ -85,7 +86,11 @@ class DoctorResponseTransactions extends StatelessWidget { SizedBox(height: 16.h), Row( children: [ - Image.asset(getIt.get().getAuthenticatedUser()?.gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, width: 42.w, height: 42.h), + Utils.buildImgWithAssets( + icon: getIt.get().getAuthenticatedUser()?.gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, + width: 42.w, + height: 42.h, + ), SizedBox(width: 8.w), Container( padding: EdgeInsets.all(8.w), @@ -93,7 +98,7 @@ class DoctorResponseTransactions extends StatelessWidget { color: AppColors.infoColor.withAlpha(20), borderRadius: BorderRadius.circular(8.r), ), - child: doctorResponseModel.requestTypeDescription!.toText12(color: AppColors.infoColor, fontWeight: FontWeight.w500), + child: (doctorResponseModel.requestTypeDescription ?? "").toText12(color: AppColors.infoColor, isBold: true), ), ], ), @@ -115,11 +120,17 @@ class DoctorResponseTransactions extends StatelessWidget { color: AppColors.infoColor.withAlpha(20), borderRadius: BorderRadius.circular(8.r), ), - child: doctorResponseModel.transactions![index].doctorResponse!.toText12(color: AppColors.textColor, fontWeight: FontWeight.w500), - ), - SizedBox(width: 8.w), - Image.network("https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", fit: BoxFit.cover, width: 42.w, height: 42.h).circle(100.r), - ], + child: doctorResponseModel.transactions![index].doctorResponse!.toText12(color: AppColors.textColor, isBold: true), + ), + SizedBox(width: 8.w), + Utils.buildImgWithNetwork( + url: "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", + iconColor: AppColors.blackBgColor, + fit: BoxFit.cover, + width: 42.w, + height: 42.h, + ).circle(100.r), + ], ), ], ); diff --git a/lib/presentation/authentication/login.dart b/lib/presentation/authentication/login.dart index 62d0c9e2..dee44de0 100644 --- a/lib/presentation/authentication/login.dart +++ b/lib/presentation/authentication/login.dart @@ -1,3 +1,4 @@ +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; @@ -7,7 +8,6 @@ import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; -import 'package:hmg_patient_app_new/core/utils/validation_utils.dart'; import 'package:hmg_patient_app_new/extensions/context_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; @@ -33,19 +33,36 @@ class LoginScreenState extends State { @override void initState() { + Clarity.setCurrentScreenName('Login Screen'); super.initState(); _nationalIdFocusNode = FocusNode(); + + // Clear errors when entering login screen + WidgetsBinding.instance.addPostFrameCallback((_) { + final authVm = context.read(); + authVm.clearNationalIdError(); + authVm.clearPhoneNumberError(); + }); } @override void dispose() { _nationalIdFocusNode.dispose(); + + // Clear errors when leaving login screen + // Use post frame callback to avoid calling notifyListeners during dispose + WidgetsBinding.instance.addPostFrameCallback((_) { + final authVm = getIt.get(); + authVm.clearNationalIdError(); + authVm.clearPhoneNumberError(); + }); + super.dispose(); } + @override Widget build(BuildContext context) { - AuthenticationViewModel authVm = context.read(); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, appBar: CustomAppBar( @@ -56,93 +73,105 @@ class LoginScreenState extends State { context.setLocale(value == 'en' ? Locale('en', 'US') : Locale('ar', 'SA')); }, ), - body: GestureDetector( - onTap: () { - // Dismiss the keyboard and unfocus any focused widget when tapping outside - _nationalIdFocusNode.unfocus(); - FocusScope.of(context).unfocus(); - }, - child: SingleChildScrollView( - child: Padding( - padding: EdgeInsets.symmetric(horizontal: 24.h), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Utils.showLottie(context: context, assetPath: AppAnimations.login, width: 200.h, height: 200.h, repeat: true, fit: BoxFit.cover), - SizedBox(height: 130.h), // Adjusted to sizer unit - LocaleKeys.welcomeToDrSulaiman.tr(context: context).toText32(isBold: true, color: AppColors.textColor), - SizedBox(height: 32.h), - Localizations.override(context: context, locale: Locale('en', 'US'), child: Container()), // Force English locale for this widget - TextInputWidget( - labelText: "${LocaleKeys.nationalId.tr(context: context)} / ${LocaleKeys.fileNo.tr(context: context)}", - hintText: "xxxxxxxxx", - controller: authVm.nationalIdController, - focusNode: _nationalIdFocusNode, - keyboardType: TextInputType.text, - isEnable: true, - prefix: null, - autoFocus: true, - isAllowRadius: true, - isBorderAllowed: false, - isAllowLeadingIcon: true, - padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 10.h), - leadingIcon: AppAssets.student_card, - errorMessage: LocaleKeys.enterValidIDorIqama.tr(context: context), - hasError: false, - fontFamily: "Poppins", - ), - SizedBox(height: 16.h), - CustomButton( - height: 50.h, - text: LocaleKeys.login.tr(context: context), - icon: AppAssets.login1, - iconColor: Colors.white, - onPressed: () { - _nationalIdFocusNode.unfocus(); - FocusScope.of(context).unfocus(); + body: Consumer( + builder: (context, authVm, child) { + return GestureDetector( + onTap: () { + // Dismiss the keyboard and unfocus any focused widget when tapping outside + _nationalIdFocusNode.unfocus(); + FocusScope.of(context).unfocus(); + }, + child: SingleChildScrollView( + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 24.h), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Utils.showLottie(context: context, assetPath: AppAnimations.login, width: 200.h, height: 200.h, repeat: true, fit: BoxFit.cover), + // SizedBox(height: 130.h), + SizedBox(height: MediaQuery.of(context).size.height * 0.12), // based on the screen height Adjusted to sizer unit + LocaleKeys.welcomeToDrSulaiman.tr(context: context).toText32(isBold: true, color: AppColors.textColor ), + SizedBox(height: 32.h), + Localizations.override(context: context, locale: Locale('en', 'US'), child: Container()), // Force English locale for this widget + ClarityUnmask( + child: TextInputWidget( + labelText: LocaleKeys.nationalIdFileNumber.tr(context: context), + hintText: "xxxxxxxxx", + controller: authVm.nationalIdController, + focusNode: _nationalIdFocusNode, + keyboardType: TextInputType.number, + isEnable: true, + prefix: null, + autoFocus: true, + isAllowRadius: true, + isBorderAllowed: false, + isAllowLeadingIcon: true, + padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 10.h), + leadingIcon: AppAssets.student_card, + errorMessage: authVm.nationalIdError, + hasError: authVm.nationalIdError != null, + fontFamily: "Poppins", + onChange: (value) { + // Clear error when user starts typing + authVm.clearNationalIdError(); + }, + ), + ), + SizedBox(height: 16.h), + CustomButton( + height: 50.h, + text: LocaleKeys.login.tr(context: context), + icon: AppAssets.login1, + iconColor: Colors.white, + onPressed: () { + _nationalIdFocusNode.unfocus(); + FocusScope.of(context).unfocus(); - if (ValidationUtils.isValidatedId( - nationalId: authVm.nationalIdController.text, - onOkPress: () { - Navigator.of(context).pop(); - })) { - showLoginModelSheet(context: context, phoneNumberController: authVm.phoneNumberController, authViewModel: authVm); - } - }, - ), - SizedBox(height: 10.h), - Center( - child: RichText( - textAlign: TextAlign.center, - text: TextSpan( - style: context.dynamicTextStyle(color: AppColors.textColor, fontSize: 14.f, height: 26 / 16, fontWeight: FontWeight.w500), - children: [ - TextSpan(text: LocaleKeys.dontHaveAccount.tr(context: context), style: context.dynamicTextStyle()), - TextSpan(text: " "), - TextSpan( - text: LocaleKeys.registernow.tr(context: context), - style: context.dynamicTextStyle( - color: AppColors.primaryRedColor, - fontSize: 14.f, // Adjusted to sizer unit - height: 26 / 16, // Ratio - fontWeight: FontWeight.w500), - recognizer: TapGestureRecognizer() - ..onTap = () { - Navigator.of(context).push( - MaterialPageRoute(builder: (BuildContext context) => RegisterNew()), - ); - }, + // Use ViewModel validation method + if (authVm.validateNationalId()) { + showLoginModelSheet( + context: context, + phoneNumberController: authVm.phoneNumberController, + authViewModel: authVm, + ); + } + }, + ), + SizedBox(height: 10.h), + Center( + child: RichText( + textAlign: TextAlign.center, + text: TextSpan( + style: context.dynamicTextStyle(color: AppColors.textColor, fontSize: 14.f, height: 26 / 16, fontWeight: FontWeight.w600,), + children: [ + TextSpan(text: LocaleKeys.dontHaveAccount.tr(context: context), style: context.dynamicTextStyle()), + TextSpan(text: " "), + TextSpan( + text: LocaleKeys.registernow.tr(context: context), + style: context.dynamicTextStyle( + color: AppColors.primaryRedColor, + fontSize: 14.f, // Adjusted to sizer unit + height: 26 / 16, // Ratio + fontWeight: FontWeight.w600,), + recognizer: TapGestureRecognizer() + ..onTap = () { + Navigator.of(context).push( + MaterialPageRoute(builder: (BuildContext context) => RegisterNew()), + ); + }, + ), + ], ), - ], + ).withVerticalPadding(2.h), ), - ).withVerticalPadding(2.h), + SizedBox(height: 20.h), + ], ), - SizedBox(height: 20.h), - ], + ), ), - ), - ), + ); + }, ), ); } @@ -153,6 +182,7 @@ class LoginScreenState extends State { required AuthenticationViewModel authViewModel, }) async { AppState appState = getIt(); + context.showBottomSheet( isScrollControlled: true, isDismissible: false, @@ -160,80 +190,86 @@ class LoginScreenState extends State { constraints: BoxConstraints(maxWidth: MediaQuery.of(context).size.width), backgroundColor: AppColors.transparent, child: StatefulBuilder(builder: (BuildContext context, StateSetter setModalState) { + // Helper function to validate phone number with error handling + void validatePhoneAndProceed(OTPTypeEnum otpType) { + // Use ViewModel validation method + bool isValid = authViewModel.validatePhoneNumber(); + + if (isValid) { + Navigator.of(context).pop(); + appState.setSelectDeviceByImeiRespModelElement(null); + authViewModel.checkUserAuthentication(otpTypeEnum: otpType); + } + } + return Padding( padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom), child: SingleChildScrollView( - child: GenericBottomSheet( - countryCode: authViewModel.selectedCountrySignup.countryCode, - initialPhoneNumber: "", - textController: phoneNumberController, - isEnableCountryDropdown: true, - onCountryChange: (country) { - authViewModel.onCountryChange(country); - setModalState(() {}); - }, - onChange: authViewModel.onPhoneNumberChange, - buttons: [ - if (authViewModel.selectedCountrySignup != CountryEnum.others) - Padding( - padding: EdgeInsets.only(bottom: 10.h), - child: CustomButton( - text: LocaleKeys.sendOTPSMS.tr(context: context), - onPressed: () async { - if (ValidationUtils.isValidatePhone( - phoneNumber: phoneNumberController!.text, - selectedCountry: authViewModel.selectedCountrySignup, - onOkPress: () { - Navigator.of(context).pop(); - })) { - Navigator.of(context).pop(); - appState.setSelectDeviceByImeiRespModelElement(null); - await authViewModel.checkUserAuthentication(otpTypeEnum: OTPTypeEnum.sms); - } - }, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedBorderColor, - textColor: Colors.white, - iconColor: Colors.white, - icon: AppAssets.message, - ), - ), - if (authViewModel.selectedCountrySignup != CountryEnum.others) - Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ + child: Consumer( + builder: (context, authVm, child) { + return ClarityUnmask( + child: GenericBottomSheet( + countryCode: authVm.selectedCountrySignup.countryCode, + initialPhoneNumber: "", + textController: phoneNumberController, + isEnableCountryDropdown: true, + onCountryChange: (country) { + authVm.onCountryChange(country); + // Clear error when country changes + authVm.clearPhoneNumberError(); + }, + onChange: (value) { + authVm.onPhoneNumberChange(value); + // Clear error when user starts typing + authVm.clearPhoneNumberError(); + }, + phoneNumberError: authVm.phoneNumberError, + buttons: [ + if (authVm.selectedCountrySignup != CountryEnum.others) + Padding( + padding: EdgeInsets.only(bottom: 10.h), + child: CustomButton( + text: LocaleKeys.sendOTPSMS.tr(context: context), + onPressed: () async { + validatePhoneAndProceed(OTPTypeEnum.sms); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedBorderColor, + textColor: Colors.white, + iconColor: Colors.white, + icon: AppAssets.message, + ), + ), + if (authVm.selectedCountrySignup != CountryEnum.others) + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.symmetric(horizontal: 8.h), + child: LocaleKeys.oR.tr(context: context).toText16(color: AppColors.textColor), + ), + ], + ), Padding( - padding: EdgeInsets.symmetric(horizontal: 8.h), - child: LocaleKeys.oR.tr(context: context).toText16(color: AppColors.textColor), + padding: EdgeInsets.only(bottom: 10.h, top: 10.h), + child: CustomButton( + text: LocaleKeys.sendOTPWHATSAPP.tr(context: context), + onPressed: () async { + validatePhoneAndProceed(OTPTypeEnum.whatsapp); + }, + backgroundColor: AppColors.whiteColor, + borderColor: AppColors.textColor, + textColor: AppColors.textColor, + icon: AppAssets.whatsapp, + iconColor: null, + applyThemeColor: false, + ), ), ], ), - Padding( - padding: EdgeInsets.only(bottom: 10.h, top: 10.h), - child: CustomButton( - text: LocaleKeys.sendOTPWHATSAPP.tr(context: context), - onPressed: () async { - if (ValidationUtils.isValidatePhone( - phoneNumber: phoneNumberController!.text, - selectedCountry: authViewModel.selectedCountrySignup, - onOkPress: () { - Navigator.of(context).pop(); - })) { - Navigator.of(context).pop(); - appState.setSelectDeviceByImeiRespModelElement(null); - await authViewModel.checkUserAuthentication(otpTypeEnum: OTPTypeEnum.whatsapp); - } - }, - backgroundColor: AppColors.whiteColor, - borderColor: AppColors.textColor, - textColor: AppColors.textColor, - icon: AppAssets.whatsapp, - iconColor: null, - applyThemeColor: false, - ), - ), - ], + ); + }, ), ), ); diff --git a/lib/presentation/authentication/quick_login.dart b/lib/presentation/authentication/quick_login.dart index fbcb17d8..133e38ef 100644 --- a/lib/presentation/authentication/quick_login.dart +++ b/lib/presentation/authentication/quick_login.dart @@ -49,13 +49,13 @@ class QuickLoginState extends State { ], ), Utils.showLottie(context: context, assetPath: AppAnimations.checkmark, width: 120, height: 120, repeat: true), - LocaleKeys.allSet.tr(context: context).toText16(textAlign: TextAlign.center, weight: FontWeight.w500) + LocaleKeys.allSet.tr(context: context).toText16(textAlign: TextAlign.center, isBold: true) // Text( // ' TranslationBase.of(context).allSet', // textAlign: TextAlign.center, // style: context.dynamicTextStyle( // fontSize: 16, - // fontWeight: FontWeight.w500, + // isBold: true, // color: Colors.black, // ), // ), @@ -65,9 +65,10 @@ class QuickLoginState extends State { mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset(AppAssets.lockIcon, height: 100), + // Image.asset(AppAssets.lockIcon, height: 100), + Utils.buildSvgWithAssets(icon: AppAssets.biometricLockIcon, iconColor: AppColors.textColor, width: 100.h, height: 100.h), SizedBox(height: 10.h), - LocaleKeys.enableQuickLogin.tr(context: context).toText26(isBold: true), + LocaleKeys.quickLogin.tr(context: context).toText26(isBold: true), // Text( // ' TranslationBase.of(context).enableQuickLogin', // style: context.dynamicTextStyle( @@ -76,8 +77,8 @@ class QuickLoginState extends State { // color: Colors.black, // ), // ), - SizedBox(height: 5.h), - LocaleKeys.enableQuickLogin.tr(context: context).toText16(color: AppColors.quickLoginColor), + // SizedBox(height: 5.h), + // LocaleKeys.enableQuickLogin.tr(context: context).toText16(color: AppColors.quickLoginColor), // Description // Text( // 'TranslationBase.of(context).enableMsg', @@ -94,7 +95,7 @@ class QuickLoginState extends State { children: [ Expanded( child: CustomButton( - text: LocaleKeys.enableQuickLogin.tr(context: context), + text: LocaleKeys.enableQuickLoginBtn.tr(context: context), onPressed: () { widget.onPressed(); }, diff --git a/lib/presentation/authentication/register.dart b/lib/presentation/authentication/register.dart index 535cdff1..8d44f377 100644 --- a/lib/presentation/authentication/register.dart +++ b/lib/presentation/authentication/register.dart @@ -1,13 +1,14 @@ +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; -import 'package:hmg_patient_app_new/core/utils/validation_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; @@ -31,22 +32,39 @@ class _RegisterNew extends State { @override void initState() { + Clarity.setCurrentScreenName('Registration Step 1 Screen'); super.initState(); _nationalIdFocusNode = FocusNode(); _dobFocusNode = FocusNode(); + + // Clear errors when entering register screen + WidgetsBinding.instance.addPostFrameCallback((_) { + final authVm = context.read(); + authVm.clearNationalIdError(); + authVm.clearDobError(); + authVm.clearPhoneNumberError(); + }); } @override void dispose() { _nationalIdFocusNode.dispose(); _dobFocusNode.dispose(); + + // Clear errors when leaving register screen + // Use post frame callback to avoid calling notifyListeners during dispose + WidgetsBinding.instance.addPostFrameCallback((_) { + final authVm = getIt.get(); + authVm.clearNationalIdError(); + authVm.clearDobError(); + authVm.clearPhoneNumberError(); + }); + super.dispose(); } @override Widget build(BuildContext context) { - AuthenticationViewModel authVm = context.read(); - return Scaffold( backgroundColor: AppColors.bgScaffoldColor, appBar: CustomAppBar( @@ -57,199 +75,225 @@ class _RegisterNew extends State { context.setLocale(value == 'en' ? Locale('en', 'US') : Locale('ar', 'SA')); }, ), - body: GestureDetector( - onTap: () { - // Dismiss keyboard and unfocus all input fields - _nationalIdFocusNode.unfocus(); - _dobFocusNode.unfocus(); - FocusScope.of(context).unfocus(); - }, - child: ScrollConfiguration( - behavior: ScrollConfiguration.of(context).copyWith(overscroll: false, physics: const ClampingScrollPhysics()), - child: NotificationListener( - onNotification: (notification) { - notification.disallowIndicator(); - return true; + body: Consumer( + builder: (context, authVm, child) { + return GestureDetector( + onTap: () { + // Dismiss keyboard and unfocus all input fields + _nationalIdFocusNode.unfocus(); + _dobFocusNode.unfocus(); + FocusScope.of(context).unfocus(); }, - child: SingleChildScrollView( - physics: ClampingScrollPhysics(), - padding: EdgeInsets.symmetric(horizontal: 24.h), - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Utils.showLottie(context: context, assetPath: 'assets/animations/lottie/register.json', width: 200.w, height: 200.h, fit: BoxFit.cover, repeat: true), - SizedBox(height: 16.h), - LocaleKeys.prepareToElevate.tr(context: context).toText32(isBold: true), - SizedBox(height: 24.h), - Directionality( - textDirection: Directionality.of(context), - child: Container( - decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(24)), - padding: EdgeInsets.symmetric(horizontal: 16.h), - child: Column( - children: [ - CustomCountryDropdown( - countryList: CountryEnum.values.where((c) => c != CountryEnum.others).toList(), - onCountryChange: authVm.onCountryChange, - // isRtl: Directionality.of(context) == TextDirection.LTR, - ).withVerticalPadding(8.h), - Divider(height: 1.h), - TextInputWidget( - labelText: LocaleKeys.nationalIdNumber.tr(context: context), - hintText: "xxxxxxxxx", - controller: authVm.nationalIdController, - focusNode: _nationalIdFocusNode, - keyboardType: TextInputType.number, - isEnable: true, - prefix: null, - isAllowRadius: true, - isBorderAllowed: false, - isAllowLeadingIcon: true, - autoFocus: true, - padding: EdgeInsets.symmetric(vertical: 8.h), - leadingIcon: AppAssets.student_card, - fontFamily: "Poppins", - ).withVerticalPadding(8), - Divider(height: 1), - TextInputWidget( - labelText: LocaleKeys.dob.tr(context: context), - hintText: "11 July, 1994", - controller: authVm.dobController, - focusNode: _dobFocusNode, - isEnable: true, - prefix: null, - isAllowRadius: true, - isBorderAllowed: false, - isAllowLeadingIcon: true, - padding: EdgeInsets.symmetric(vertical: 8.h), - leadingIcon: AppAssets.birthday_cake, - selectionType: SelectionTypeEnum.calendar, - onCalendarTypeChanged: authVm.onCalenderTypeChange, - onChange: authVm.onDobChange, - fontFamily: "Poppins", - ).withVerticalPadding(8), - ], - ), - ), - ), - SizedBox(height: 25.h), - GestureDetector( - onTap: authVm.onTermAccepted, - child: Row( - children: [ - Selector( - selector: (_, viewModel) => viewModel.isTermsAccepted, - shouldRebuild: (previous, next) => previous != next, - builder: (context, isTermsAccepted, child) { - return AnimatedContainer( - duration: const Duration(milliseconds: 200), - height: 24.h, - width: 24.h, - decoration: BoxDecoration( - color: isTermsAccepted ? AppColors.primaryRedColor : Colors.transparent, - borderRadius: BorderRadius.circular(6), - border: Border.all(color: isTermsAccepted ? AppColors.primaryRedBorderColor : AppColors.greyColor, width: 2.h), - ), - child: isTermsAccepted ? Icon(Icons.check, size: 16.f, color: Colors.white) : null, - ); - }, + child: ScrollConfiguration( + behavior: ScrollConfiguration.of(context).copyWith(overscroll: false, physics: const ClampingScrollPhysics()), + child: NotificationListener( + onNotification: (notification) { + notification.disallowIndicator(); + return true; + }, + child: SingleChildScrollView( + physics: ClampingScrollPhysics(), + padding: EdgeInsets.symmetric(horizontal: 24.h), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Utils.showLottie( + context: context, + assetPath: 'assets/animations/lottie/register.json', + width: 200.w, + height: 200.h, + fit: BoxFit.cover, + repeat: true), + SizedBox(height: 16.h), + LocaleKeys.prepareToElevate.tr(context: context).toText32(isBold: true), + SizedBox(height: 24.h), + Directionality( + textDirection: Directionality.of(context), + child: Container( + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(24), + border: Border.all( + color: authVm.hasRegistrationFormError ? AppColors.primaryRedBorderColor : Colors.transparent, + width: 1, + ), + ), + padding: EdgeInsets.symmetric(horizontal: 16.h), + child: Column( + children: [ + CustomCountryDropdown( + countryList: CountryEnum.values.where((c) => c != CountryEnum.others).toList(), + onCountryChange: authVm.onCountryChange, + // isRtl: Directionality.of(context) == TextDirection.LTR, + ).withVerticalPadding(8.h), + Divider(height: 1.h), + TextInputWidget( + labelText: LocaleKeys.nationalIdNumber.tr(context: context), + hintText: "xxxxxxxxx", + controller: authVm.nationalIdController, + focusNode: _nationalIdFocusNode, + keyboardType: TextInputType.number, + isEnable: true, + prefix: null, + isAllowRadius: true, + isBorderAllowed: false, + isAllowLeadingIcon: true, + autoFocus: true, + padding: EdgeInsets.symmetric(vertical: 8.h), + leadingIcon: AppAssets.student_card, + fontFamily: "Poppins", + hasError: false, + // Don't show individual field border + errorMessage: authVm.nationalIdError, + // Show error message if exists + onChange: (value) { + // Clear error when user starts typing + authVm.clearNationalIdError(); + }, + ).withVerticalPadding(8), + Divider(height: 1), + TextInputWidget( + labelText: LocaleKeys.dob.tr(context: context), + hintText: "11 July, 1994", + controller: authVm.dobController, + focusNode: _dobFocusNode, + isEnable: true, + prefix: null, + isAllowRadius: true, + isBorderAllowed: false, + isAllowLeadingIcon: true, + padding: EdgeInsets.symmetric(vertical: 8.h), + leadingIcon: AppAssets.birthday_cake, + selectionType: SelectionTypeEnum.calendar, + onCalendarTypeChanged: authVm.onCalenderTypeChange, + onChange: (value) { + authVm.onDobChange(value); + // Clear error when user selects a date + authVm.clearDobError(); + }, + fontFamily: "Poppins", + hasError: false, + // Don't show individual field border + errorMessage: authVm.dobError, // Show error message if exists + ).withVerticalPadding(8), + ], + ), ), - SizedBox(width: 12.h), - Row( + ), + SizedBox(height: 25.h), + GestureDetector( + onTap: authVm.onTermAccepted, + child: Row( children: [ - Text( - LocaleKeys.iAcceptThe.tr(context: context), - style: context.dynamicTextStyle(fontSize: 14.f, fontWeight: FontWeight.w500, color: Color(0xFF2E3039)), - ), - GestureDetector( - onTap: () { - // Navigate to terms and conditions page - Utils.openWebView( - url: 'https://hmg.com/en/Pages/Terms.aspx', + Selector( + selector: (_, viewModel) => viewModel.isTermsAccepted, + shouldRebuild: (previous, next) => previous != next, + builder: (context, isTermsAccepted, child) { + return AnimatedContainer( + duration: const Duration(milliseconds: 200), + height: 24.h, + width: 24.h, + decoration: BoxDecoration( + color: isTermsAccepted ? AppColors.primaryRedColor : Colors.transparent, + borderRadius: BorderRadius.circular(6), + border: Border.all(color: isTermsAccepted ? AppColors.primaryRedBorderColor : AppColors.greyColor, width: 2.h), + ), + child: isTermsAccepted ? Icon(Icons.check, size: 16.f, color: Colors.white) : null, ); }, - child: Text( - " ${LocaleKeys.termsConditoins.tr(context: context)}", - style: context.dynamicTextStyle( - fontSize: 14.f, - fontWeight: FontWeight.w500, - color: AppColors.primaryRedColor, - decoration: TextDecoration.underline, - decorationColor: AppColors.primaryRedBorderColor, + ), + SizedBox(width: 12.h), + Row( + children: [ + Text( + LocaleKeys.iAcceptThe.tr(context: context), + style: context.dynamicTextStyle(fontSize: 14.f, fontWeight: FontWeight.w600, color: Color(0xFF2E3039)), ), - ), + GestureDetector( + onTap: () { + // Navigate to terms and conditions page + Utils.openWebView( + url: AppUrls.hmgTermsUrlEn, + ); + }, + child: Text( + " ${LocaleKeys.termsConditoins.tr(context: context)}", + style: context.dynamicTextStyle( + fontSize: 14.f, + fontWeight: FontWeight.w600, + color: AppColors.primaryRedColor, + decoration: TextDecoration.underline, + decorationColor: AppColors.primaryRedBorderColor, + ), + ), + ), + ], ), + // Expanded( + // child: Text( + // LocaleKeys.iAcceptTermsConditions.tr(context: context).split("the").first, + // style: context.dynamicTextStyle(fontSize: 14.fSize, isBold: true, color: Color(0xFF2E3039)), + // ), + // ), ], ), - // Expanded( - // child: Text( - // LocaleKeys.iAcceptTermsConditions.tr(context: context).split("the").first, - // style: context.dynamicTextStyle(fontSize: 14.fSize, fontWeight: FontWeight.w500, color: Color(0xFF2E3039)), - // ), - // ), - ], - ), - ), - SizedBox(height: 25.h), - CustomButton( - text: LocaleKeys.registernow.tr(context: context), - icon: AppAssets.note_edit, - onPressed: () { - // Dismiss keyboard before proceeding - _nationalIdFocusNode.unfocus(); - _dobFocusNode.unfocus(); - FocusScope.of(context).unfocus(); + ), + SizedBox(height: 25.h), + CustomButton( + text: LocaleKeys.registernow.tr(context: context), + icon: AppAssets.note_edit, + onPressed: () { + // Dismiss keyboard before proceeding + _nationalIdFocusNode.unfocus(); + _dobFocusNode.unfocus(); + FocusScope.of(context).unfocus(); - if (ValidationUtils.isValidatedId( - nationalId: authVm.nationalIdController.text, - selectedCountry: authVm.selectedCountrySignup, - isTermsAccepted: authVm.isTermsAccepted, - dob: authVm.dobController.text, - onOkPress: () { - Navigator.of(context).pop(); - })) { - showRegisterModel(context: context, authVM: authVm); - } - }, - ), - SizedBox(height: 14), - Center( - child: RichText( - textAlign: TextAlign.center, - text: TextSpan( - style: context.dynamicTextStyle( - color: Colors.black, - fontSize: 16.f, - height: 26 / 16, - fontWeight: FontWeight.w500, - ), - children: [ - TextSpan(text: LocaleKeys.alreadyHaveAccount.tr(context: context), style: context.dynamicTextStyle()), - TextSpan(text: " "), - TextSpan( - text: LocaleKeys.loginNow.tr(context: context), + // Use ViewModel validation method + if (authVm.validateRegistrationForm()) { + showRegisterModel(context: context, authVM: authVm); + } + }, + ), + SizedBox(height: 14), + Center( + child: RichText( + textAlign: TextAlign.center, + text: TextSpan( style: context.dynamicTextStyle( - color: AppColors.primaryRedColor, + color: Colors.black, fontSize: 16.f, height: 26 / 16, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), - recognizer: TapGestureRecognizer() - ..onTap = () { - Navigator.of(context).pop(); - }, + children: [ + TextSpan(text: LocaleKeys.alreadyHaveAccount.tr(context: context), style: context.dynamicTextStyle()), + TextSpan(text: " "), + TextSpan( + text: LocaleKeys.loginNow.tr(context: context), + style: context.dynamicTextStyle( + color: AppColors.primaryRedColor, + fontSize: 16.f, + height: 26 / 16, + fontWeight: FontWeight.w600, + ), + recognizer: TapGestureRecognizer() + ..onTap = () { + Navigator.of(context).pop(); + }, + ), + ], ), - ], + ), ), - ), + SizedBox(height: 30.h), + ], ), - SizedBox(height: 30.h), - ], + ), ), ), - ), - ), + ); + }, )); } @@ -264,73 +308,75 @@ class _RegisterNew extends State { builder: (bottomSheetContext) => Padding( padding: EdgeInsets.only(bottom: MediaQuery.of(bottomSheetContext).viewInsets.bottom), child: SingleChildScrollView( - child: GenericBottomSheet( - countryCode: authVM.selectedCountrySignup.countryCode, - initialPhoneNumber: authVM.phoneNumberController.text, - textController: authVM.phoneNumberController, - isEnableCountryDropdown: false, - onCountryChange: authVM.onCountryChange, - onChange: authVM.onPhoneNumberChange, - autoFocus: true, - buttons: [ - Padding( - padding: const EdgeInsets.only(bottom: 10), - child: CustomButton( - text: LocaleKeys.sendOTPSMS.tr(context: context), - onPressed: () async { - // Dismiss keyboard before validation - FocusScope.of(context).unfocus(); + child: Consumer( + builder: (context, authVm, child) { + return GenericBottomSheet( + countryCode: authVm.selectedCountrySignup.countryCode, + initialPhoneNumber: authVm.phoneNumberController.text, + textController: authVm.phoneNumberController, + isEnableCountryDropdown: false, + onCountryChange: authVm.onCountryChange, + onChange: (value) { + authVm.onPhoneNumberChange(value); + // Clear error when user starts typing + authVm.clearPhoneNumberError(); + }, + autoFocus: true, + phoneNumberError: authVm.phoneNumberError, + buttons: [ + Padding( + padding: const EdgeInsets.only(bottom: 10), + child: CustomButton( + text: LocaleKeys.sendOTPSMS.tr(context: context), + onPressed: () async { + // Dismiss keyboard before validation + FocusScope.of(context).unfocus(); - if (ValidationUtils.isValidatePhone( - phoneNumber: authVM.phoneNumberController.text, - onOkPress: () { - Navigator.of(context).pop(); + // Use ViewModel validation method + if (authVm.validatePhoneNumber()) { + appState.setSelectDeviceByImeiRespModelElement(null); + await authVm.onRegistrationStart(otpTypeEnum: OTPTypeEnum.sms); + } }, - )) { - appState.setSelectDeviceByImeiRespModelElement(null); - await authVM.onRegistrationStart(otpTypeEnum: OTPTypeEnum.sms); - } - }, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedBorderColor, - textColor: AppColors.whiteColor, - icon: AppAssets.message, - ), - ), - Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedBorderColor, + textColor: AppColors.whiteColor, + icon: AppAssets.message, + ), + ), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.symmetric(horizontal: 8.h), + child: LocaleKeys.oR.tr(context: context).toText16(color: AppColors.textColor), + ), + ], + ), Padding( - padding: EdgeInsets.symmetric(horizontal: 8.h), - child: LocaleKeys.oR.tr(context: context).toText16(color: AppColors.textColor), + padding: EdgeInsets.only(bottom: 10.h, top: 10.h), + child: CustomButton( + text: LocaleKeys.sendOTPWHATSAPP.tr(context: context), + onPressed: () async { + FocusScope.of(context).unfocus(); + + // Use ViewModel validation method + if (authVm.validatePhoneNumber()) { + appState.setSelectDeviceByImeiRespModelElement(null); + await authVm.onRegistrationStart(otpTypeEnum: OTPTypeEnum.whatsapp); + } + }, + backgroundColor: AppColors.whiteColor, + borderColor: AppColors.borderOnlyColor, + textColor: AppColors.textColor, + icon: AppAssets.whatsapp, + iconColor: null, + ), ), ], - ), - Padding( - padding: EdgeInsets.only(bottom: 10.h, top: 10.h), - child: CustomButton( - text: LocaleKeys.sendOTPWHATSAPP.tr(context: context), - onPressed: () async { - FocusScope.of(context).unfocus(); - if (ValidationUtils.isValidatePhone( - phoneNumber: authVM.phoneNumberController.text, - onOkPress: () { - Navigator.of(context).pop(); - }, - )) { - appState.setSelectDeviceByImeiRespModelElement(null); - await authVM.onRegistrationStart(otpTypeEnum: OTPTypeEnum.whatsapp); - } - }, - backgroundColor: AppColors.whiteColor, - borderColor: AppColors.borderOnlyColor, - textColor: AppColors.textColor, - icon: AppAssets.whatsapp, - iconColor: null, - ), - ), - ], + ); + }, ), ), ), diff --git a/lib/presentation/authentication/register_step2.dart b/lib/presentation/authentication/register_step2.dart index dc87aa1d..46919e95 100644 --- a/lib/presentation/authentication/register_step2.dart +++ b/lib/presentation/authentication/register_step2.dart @@ -1,3 +1,4 @@ +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -7,7 +8,6 @@ import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; -import 'package:hmg_patient_app_new/core/utils/validation_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; @@ -35,22 +35,29 @@ class _RegisterNew extends State { @override void initState() { + Clarity.setCurrentScreenName('Registration Step 2 Screen'); super.initState(); authVM = context.read(); insuranceVM = context.read(); - // Call insurance API to fetch data + // Clear errors when entering the page WidgetsBinding.instance.addPostFrameCallback((_) { - debugPrint("Registration Step 2: Calling insurance API"); - // Reset the flag to ensure API gets called - insuranceVM?.setIsInsuranceDataToBeLoaded(true); - insuranceVM?.initInsuranceProvider(); - debugPrint("Registration Step 2: Insurance API call initiated"); + authVM?.clearAllStep2FieldErrors(); }); + if (!authVM!.isUserFromUAE()) { + WidgetsBinding.instance.addPostFrameCallback((_) { + insuranceVM?.setIsInsuranceDataToBeLoaded(true); + insuranceVM?.initInsuranceProvider(); + }); + } } @override void dispose() { + // Clear errors when leaving the page + WidgetsBinding.instance.addPostFrameCallback((_) { + authVM?.clearAllStep2FieldErrors(); + }); super.dispose(); } @@ -60,8 +67,8 @@ class _RegisterNew extends State { var name = authVM!.isUserFromUAE() ? "" : appState.getLanguageCode() == "en" - ? ("${appState.getNHICUserData.firstNameEn!.toUpperCase()} ${appState.getNHICUserData.lastNameEn!.toUpperCase()}") - : ("${appState.getNHICUserData.firstNameAr!.toUpperCase()} ${appState.getNHICUserData.lastNameAr!.toUpperCase()}"); + ? ("${(appState.getNHICUserData.firstNameEn ?? '').toUpperCase()} ${(appState.getNHICUserData.lastNameEn ?? '').toUpperCase()}").trim() + : ("${(appState.getNHICUserData.firstNameAr ?? '').toUpperCase()} ${(appState.getNHICUserData.lastNameAr ?? '').toUpperCase()}").trim(); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, appBar: CustomAppBar( @@ -73,7 +80,7 @@ class _RegisterNew extends State { onLanguageChanged: (lang) {}, hideLogoAndLang: true, ), - bottomSheet: Container( + bottomSheet: Container( // height: 200.h, width: MediaQuery.of(context).size.width, decoration: RoundedRectangleBorder().toSmoothCornerDecoration( @@ -81,51 +88,51 @@ class _RegisterNew extends State { customBorder: BorderRadius.only(topLeft: Radius.circular(24), topRight: Radius.circular(24)), hasShadow: true, ), - child: Row( - children: [ - Expanded( - child: CustomButton( - text: LocaleKeys.cancel.tr(), - icon: AppAssets.cancel, - onPressed: () { - Navigator.of(context).pop(); - // authVM!.clearDefaultInputValues(); - }, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - iconColor: AppColors.primaryRedColor, + child: Row( + children: [ + Expanded( + child: CustomButton( + text: LocaleKeys.cancel.tr(), + icon: AppAssets.cancel, + onPressed: () { + Navigator.of(context).pop(); + // authVM!.clearDefaultInputValues(); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + iconColor: AppColors.primaryRedColor, + ), ), - ), - SizedBox(width: 16.w), - Expanded( - child: CustomButton( - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - textColor: AppColors.whiteColor, - text: LocaleKeys.confirm.tr(), - icon: AppAssets.confirm, - iconColor: AppColors.whiteColor, - onPressed: () { - if (appState.getUserRegistrationPayload.zipCode != CountryEnum.saudiArabia.countryCode) { - if (ValidationUtils.validateUaeRegistration( - name: authVM!.nameController.text, - gender: authVM!.genderType, - country: authVM!.pickedCountryByUAEUser, - maritalStatus: authVM!.maritalStatus, - onOkPress: () { - Navigator.of(context).pop(); - })) { + SizedBox(width: 16.w), + Expanded( + child: CustomButton( + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + text: LocaleKeys.confirm.tr(), + icon: AppAssets.confirm, + iconColor: AppColors.whiteColor, + onPressed: () { + // Unfocus keyboard + FocusScope.of(context).unfocus(); + + // For UAE users, validate the form first + if (appState.getUserRegistrationPayload.zipCode != CountryEnum.saudiArabia.countryCode) { + // Use ViewModel validation method + if (authVM!.validateRegistrationStep2Form()) { + showModel(context: context); + } + } else { + // For Saudi users, no validation needed, show email modal directly showModel(context: context); } - } else { - showModel(context: context); - } - }, - ), - ) - ], - ).paddingAll(16.h),), + }, + ), + ) + ], + ).paddingAll(16.h), + ), body: GestureDetector( onTap: () { FocusScope.of(context).unfocus(); @@ -140,7 +147,7 @@ class _RegisterNew extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.personalDetailsVerification.tr(context: context).toText26(color: AppColors.textColor, weight: FontWeight.w600, letterSpacing: -2), + LocaleKeys.personalDetailsVerification.tr(context: context).toText26(color: AppColors.textColor, isBold: true, letterSpacing: -2), SizedBox(height: 24.h), // Insurance Card Section @@ -165,205 +172,272 @@ class _RegisterNew extends State { }, ), - Container( - decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(24)), - padding: EdgeInsets.only(left: 16.h, right: 16.h), - child: Column( - children: [ - TextInputWidget( - labelText: authVM!.isUserFromUAE() ? LocaleKeys.fullName.tr(context: context) : LocaleKeys.name.tr(context: context), - hintText: authVM!.isUserFromUAE() ? LocaleKeys.enterNameHere.tr(context: context) : (name), - controller: authVM!.isUserFromUAE() ? authVM!.nameController : null, - isEnable: true, - prefix: null, - isAllowRadius: false, - isBorderAllowed: false, - keyboardType: TextInputType.text, - // textInputAction: TextInputAction.done, - onSubmitted: (value) { - FocusScope.of(context).unfocus(); - }, - isAllowLeadingIcon: true, - isReadOnly: authVM!.isUserFromUAE() ? false : true, - leadingIcon: AppAssets.user_circle, - labelColor: AppColors.textColor, - ).paddingSymmetrical(0.h, 8.h), - Divider(height: 1.h, color: AppColors.greyColor), - TextInputWidget( - labelText: LocaleKeys.nationalIdNumber.tr(context: context), - hintText: authVM!.isUserFromUAE() ? appState.getUserRegistrationPayload.patientIdentificationId.toString() : (appState.getNHICUserData.idNumber ?? ""), - controller: null, - isEnable: true, - prefix: null, - isAllowRadius: false, - isBorderAllowed: false, - isAllowLeadingIcon: true, - isReadOnly: true, - labelColor: AppColors.textColor, - leadingIcon: AppAssets.student_card) - .paddingSymmetrical(0.h, 8.h), - Divider(height: 1, color: AppColors.greyColor), - authVM!.isUserFromUAE() - ? Selector( - selector: (_, authViewModel) => authViewModel.genderType, - shouldRebuild: (previous, next) => previous != next, - builder: (context, genderType, child) { - final authVM = context.read(); - return DropdownWidget( - labelText: LocaleKeys.gender.tr(context: context), - hintText: LocaleKeys.malE.tr(context: context), - isEnable: true, - dropdownItems: GenderTypeEnum.values.map((e) => appState.isArabic() ? e.typeAr : e.type).toList(), - selectedValue: genderType != null ? (appState.isArabic() ? genderType.typeAr : genderType.type) : "", - onChange: authVM.onGenderChange, - isBorderAllowed: false, - hasSelectionCustomIcon: true, - isAllowRadius: false, - labelColor: AppColors.textColor, - padding: EdgeInsets.only(top: 8.h, bottom: 8.h, left: 0, right: 0), - selectionCustomIcon: AppAssets.arrow_down, - leadingIcon: AppAssets.user_full, - ).withVerticalPadding(8); - }) - : TextInputWidget( - labelText: LocaleKeys.gender.tr(context: context), - hintText: (appState.getNHICUserData.gender ?? ""), + // Form Container with Error Border + Selector( + selector: (_, model) => model.hasRegistrationStep2FormError, + builder: (context, hasError, child) { + return Container( + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(24), + border: Border.all( + color: hasError ? AppColors.primaryRedBorderColor : Colors.transparent, + width: 1, + ), + ), + padding: EdgeInsets.only(left: 16.h, right: 16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + TextInputWidget( + labelText: authVM!.isUserFromUAE() ? LocaleKeys.fullName.tr(context: context) : LocaleKeys.name.tr(context: context), + hintText: authVM!.isUserFromUAE() ? LocaleKeys.enterNameHere.tr(context: context) : (name), + controller: authVM!.isUserFromUAE() ? authVM!.nameController : null, + isEnable: true, + prefix: null, + isAllowRadius: false, + isBorderAllowed: false, + // hintColor: Color(0xff898A8D), + keyboardType: TextInputType.text, + onSubmitted: (value) { + FocusScope.of(context).unfocus(); + }, + onChange: (value) { + authVM!.clearNameError(); + }, + isAllowLeadingIcon: true, + isReadOnly: authVM!.isUserFromUAE() ? false : true, + leadingIcon: AppAssets.user_circle, + labelColor: AppColors.textColor, + ).paddingSymmetrical(0.h, 8.h), + // Show error message if exists + if (authVM!.isUserFromUAE() && authVM!.nameError != null) + Padding( + padding: EdgeInsets.only(left: 0.w, top: 4.h, bottom: 4.h, right: 16.w), + child: Text( + authVM!.nameError!, + style: TextStyle( + color: AppColors.primaryRedColor, + fontSize: 12.f, + ), + ), + ), + Divider(height: 1.h, color: AppColors.greyColor), + TextInputWidget( + labelText: LocaleKeys.nationalIdNumber.tr(context: context), + hintText: authVM!.isUserFromUAE() ? appState.getUserRegistrationPayload.patientIdentificationId.toString() : (appState.getNHICUserData.idNumber ?? ""), controller: null, isEnable: true, prefix: null, isAllowRadius: false, isBorderAllowed: false, isAllowLeadingIcon: true, - isReadOnly: authVM!.isUserFromUAE() ? false : true, - leadingIcon: AppAssets.user_full, - labelColor: AppColors.textColor, - onChange: (value) {}) - .paddingSymmetrical(0.h, 8.h), - Divider(height: 1, color: AppColors.greyColor), - authVM!.isUserFromUAE() - ? Selector( - selector: (_, authViewModel) => authViewModel.maritalStatus, - shouldRebuild: (previous, next) => previous != next, - builder: (context, maritalStatus, child) { - final authVM = context.read(); // For onChange - return DropdownWidget( - labelText: LocaleKeys.maritalStatus.tr(context: context), - hintText: LocaleKeys.married.tr(context: context), - isEnable: true, - dropdownItems: MaritalStatusTypeEnum.values.map((e) => appState.isArabic() ? e.typeAr : e.type).toList(), - selectedValue: maritalStatus != null ? (appState.isArabic() ? maritalStatus.typeAr : maritalStatus.type) : "", - onChange: authVM.onMaritalStatusChange, - isBorderAllowed: false, - hasSelectionCustomIcon: true, - isAllowRadius: false, - labelColor: AppColors.textColor, - padding: EdgeInsets.only(top: 8.h, bottom: 8.h, left: 0, right: 0), - selectionCustomIcon: AppAssets.arrow_down, - leadingIcon: AppAssets.smart_phone, - ).withVerticalPadding(8); - }, - ) - : TextInputWidget( - labelText: LocaleKeys.maritalStatus.tr(context: context), - hintText: appState.isArabic() - ? (MaritalStatusTypeExtension.fromValue(appState.getNHICUserData.maritalStatusCode)!.typeAr) - : (MaritalStatusTypeExtension.fromValue(appState.getNHICUserData.maritalStatusCode)!.type), - isEnable: true, - prefix: null, - isAllowRadius: false, - isBorderAllowed: false, - isAllowLeadingIcon: true, isReadOnly: true, labelColor: AppColors.textColor, - leadingIcon: AppAssets.smart_phone, - onChange: (value) {}) + leadingIcon: AppAssets.student_card) .paddingSymmetrical(0.h, 8.h), - Divider(height: 1.h, color: AppColors.greyColor), - authVM!.isUserFromUAE() - ? Selector? countriesList, NationalityCountries? selectedCountry, bool isArabic})>( - selector: (context, authViewModel) { - final appState = getIt.get(); - return ( - countriesList: authViewModel.countriesList, - selectedCountry: authViewModel.pickedCountryByUAEUser, - isArabic: appState.isArabic(), - ); - }, - shouldRebuild: (previous, next) => previous.countriesList != next.countriesList || previous.selectedCountry != next.selectedCountry || previous.isArabic != next.isArabic, - builder: (context, data, child) { - final authVM = context.read(); - return DropdownWidget( - labelText: LocaleKeys.country.tr(context: context), - hintText: LocaleKeys.uae.tr(context: context), - isEnable: true, - dropdownItems: (data.countriesList ?? []).map((e) => data.isArabic ? e.nameN ?? "" : e.name ?? "").toList(), - selectedValue: data.selectedCountry != null - ? data.isArabic - ? data.selectedCountry!.nameN ?? "" - : data.selectedCountry!.name ?? "" - : "", - onChange: authVM.onUAEUserCountrySelection, - isBorderAllowed: false, - hasSelectionCustomIcon: true, - labelColor: AppColors.textColor, - isAllowRadius: false, - padding: EdgeInsets.only(top: 8.h, bottom: 8.h, left: 0, right: 0), - selectionCustomIcon: AppAssets.arrow_down, - leadingIcon: AppAssets.globe, - ).withVerticalPadding(8.h); - }, - ) - : TextInputWidget( - labelText: LocaleKeys.nationality.tr(context: context), - hintText: appState.isArabic() - ? (authVM!.countriesList!.firstWhere((e) => e.id == (appState.getNHICUserData.nationalityCode ?? ""), orElse: () => NationalityCountries()).nameN ?? "") - : (authVM!.countriesList!.firstWhere((e) => e.id == (appState.getNHICUserData.nationalityCode ?? ""), orElse: () => NationalityCountries()).name ?? ""), - isEnable: true, + Divider(height: 1, color: AppColors.greyColor), + authVM!.isUserFromUAE() + ? Selector( + selector: (_, authViewModel) => authViewModel.genderType, + shouldRebuild: (previous, next) => previous != next, + builder: (context, genderType, child) { + final authVM = context.read(); + return DropdownWidget( + labelText: LocaleKeys.gender.tr(context: context), + hintText: LocaleKeys.malE.tr(context: context), + isEnable: true, + dropdownItems: GenderTypeEnum.values.map((e) => appState.isArabic() ? e.typeAr : e.type).toList(), + selectedValue: genderType != null ? (appState.isArabic() ? genderType.typeAr : genderType.type) : "", + onChange: authVM.onGenderChange, + isBorderAllowed: false, + hasSelectionCustomIcon: true, + isAllowRadius: false, + labelColor: AppColors.textColor, + padding: EdgeInsets.only(top: 8.h, bottom: 8.h, left: 0, right: 0), + selectionCustomIcon: AppAssets.arrow_down, + leadingIcon: AppAssets.user_full, + ).withVerticalPadding(8); + }) + : TextInputWidget( + labelText: LocaleKeys.gender.tr(context: context), + hintText: (appState.getNHICUserData.gender ?? ""), + controller: null, + isEnable: true, + prefix: null, + isAllowRadius: false, + isBorderAllowed: false, + isAllowLeadingIcon: true, + isReadOnly: authVM!.isUserFromUAE() ? false : true, + leadingIcon: AppAssets.user_full, + labelColor: AppColors.textColor, + onChange: (value) {}) + .paddingSymmetrical(0.h, 8.h), + // Show gender error message if exists (for UAE users) + if (authVM!.isUserFromUAE() && authVM!.genderError != null) + Padding( + padding: EdgeInsets.only(left: 0.w, top: 4.h, bottom: 4.h, right: 16.w), + child: Text( + authVM!.genderError!, + style: TextStyle( + color: AppColors.primaryRedColor, + fontSize: 12.f, + ), + ), + ), + Divider(height: 1, color: AppColors.greyColor), + authVM!.isUserFromUAE() + ? Selector( + selector: (_, authViewModel) => authViewModel.maritalStatus, + shouldRebuild: (previous, next) => previous != next, + builder: (context, maritalStatus, child) { + final authVM = context.read(); // For onChange + return DropdownWidget( + labelText: LocaleKeys.maritalStatus.tr(context: context), + hintText: LocaleKeys.married.tr(context: context), + isEnable: true, + dropdownItems: MaritalStatusTypeEnum.values.map((e) => appState.isArabic() ? e.typeAr : e.type).toList(), + selectedValue: maritalStatus != null ? (appState.isArabic() ? maritalStatus.typeAr : maritalStatus.type) : "", + onChange: authVM.onMaritalStatusChange, + isBorderAllowed: false, + hasSelectionCustomIcon: true, + isAllowRadius: false, + labelColor: AppColors.textColor, + padding: EdgeInsets.only(top: 8.h, bottom: 8.h, left: 0, right: 0), + selectionCustomIcon: AppAssets.arrow_down, + leadingIcon: AppAssets.smart_phone, + ).withVerticalPadding(8); + }, + ) + : TextInputWidget( + labelText: LocaleKeys.maritalStatus.tr(context: context), + hintText: appState.isArabic() + ? (MaritalStatusTypeExtension.fromValue(appState.getNHICUserData.maritalStatusCode)?.typeAr ?? '') + : (MaritalStatusTypeExtension.fromValue(appState.getNHICUserData.maritalStatusCode)?.type ?? ''), + isEnable: true, + prefix: null, + isAllowRadius: false, + isBorderAllowed: false, + isAllowLeadingIcon: true, + isReadOnly: true, + labelColor: AppColors.textColor, + leadingIcon: AppAssets.smart_phone, + onChange: (value) {}) + .paddingSymmetrical(0.h, 8.h), + // Show marital status error message if exists (for UAE users) + if (authVM!.isUserFromUAE() && authVM!.maritalStatusError != null) + Padding( + padding: EdgeInsets.only(left: 0.w, top: 4.h, bottom: 4.h, right: 16.w), + child: Text( + authVM!.maritalStatusError!, + style: TextStyle( + color: AppColors.primaryRedColor, + fontSize: 12.f, + ), + ), + ), + Divider(height: 1.h, color: AppColors.greyColor), + authVM!.isUserFromUAE() + ? Selector? countriesList, NationalityCountries? selectedCountry, bool isArabic})>( + selector: (context, authViewModel) { + final appState = getIt.get(); + return ( + countriesList: authViewModel.countriesList, + selectedCountry: authViewModel.pickedCountryByUAEUser, + isArabic: appState.isArabic(), + ); + }, + shouldRebuild: (previous, next) => + previous.countriesList != next.countriesList || previous.selectedCountry != next.selectedCountry || previous.isArabic != next.isArabic, + builder: (context, data, child) { + final authVM = context.read(); + return DropdownWidget( + labelText: LocaleKeys.country.tr(context: context), + hintText: LocaleKeys.uae.tr(context: context), + isEnable: true, + dropdownItems: (data.countriesList ?? []).map((e) => data.isArabic ? e.nameN ?? "" : e.name ?? "").toList(), + selectedValue: data.selectedCountry != null + ? data.isArabic + ? data.selectedCountry!.nameN ?? "" + : data.selectedCountry!.name ?? "" + : "", + onChange: authVM.onUAEUserCountrySelection, + isBorderAllowed: false, + hasSelectionCustomIcon: true, + labelColor: AppColors.textColor, + isAllowRadius: false, + padding: EdgeInsets.only(top: 8.h, bottom: 8.h, left: 0, right: 0), + selectionCustomIcon: AppAssets.arrow_down, + leadingIcon: AppAssets.globe, + ).withVerticalPadding(8.h); + }, + ) + : TextInputWidget( + labelText: LocaleKeys.nationality.tr(context: context), + hintText: appState.isArabic() + ? (authVM!.countriesList!.firstWhere((e) => e.id == (appState.getNHICUserData.nationalityCode ?? ""), orElse: () => NationalityCountries()).nameN ?? "") + : (authVM!.countriesList!.firstWhere((e) => e.id == (appState.getNHICUserData.nationalityCode ?? ""), orElse: () => NationalityCountries()).name ?? ""), + isEnable: true, + prefix: null, + isAllowRadius: false, + isBorderAllowed: false, + isAllowLeadingIcon: true, + isReadOnly: true, + labelColor: AppColors.textColor, + leadingIcon: AppAssets.globe, + onChange: (value) {}) + .paddingSymmetrical(0.h, 8.h), + // Show country error message if exists (for UAE users) + if (authVM!.isUserFromUAE() && authVM!.countryError != null) + Padding( + padding: EdgeInsets.only(left: 0.w, top: 4.h, bottom: 4.h, right: 16.w), + child: Text( + authVM!.countryError!, + style: TextStyle( + color: AppColors.primaryRedColor, + fontSize: 12.f, + ), + ), + ), + Divider( + height: 1, + color: AppColors.greyColor, + ), + TextInputWidget( + labelText: LocaleKeys.mobileNumber.tr(context: context), + hintText: appState.getUserRegistrationPayload.patientMobileNumber.toString(), + controller: null, + isEnable: false, prefix: null, isAllowRadius: false, isBorderAllowed: false, isAllowLeadingIcon: true, - isReadOnly: true, labelColor: AppColors.textColor, - leadingIcon: AppAssets.globe, - onChange: (value) {}) + isReadOnly: true, + leadingIcon: AppAssets.call) .paddingSymmetrical(0.h, 8.h), - Divider( - height: 1, - color: AppColors.greyColor, - ), - TextInputWidget( - labelText: LocaleKeys.mobileNumber.tr(context: context), - hintText: appState.getUserRegistrationPayload.patientMobileNumber.toString(), - controller: null, - isEnable: false, - prefix: null, - isAllowRadius: false, - isBorderAllowed: false, - isAllowLeadingIcon: true, - labelColor: AppColors.textColor, - isReadOnly: true, - leadingIcon: AppAssets.call) - .paddingSymmetrical(0.h, 8.h), - Divider( - height: 1.h, - color: AppColors.greyColor, + Divider( + height: 1.h, + color: AppColors.greyColor, + ), + TextInputWidget( + labelText: LocaleKeys.dob.tr(context: context), + hintText: authVM!.isUserFromUAE() ? (appState.getUserRegistrationPayload.dob ?? '') : (appState.getNHICUserData.dateOfBirth ?? ""), + controller: authVM!.isUserFromUAE() ? authVM!.dobController : null, + isEnable: false, + prefix: null, + isBorderAllowed: false, + isAllowLeadingIcon: true, + isReadOnly: true, + labelColor: AppColors.textColor, + leadingIcon: AppAssets.birthday_cake, + selectionType: null, + ).paddingSymmetrical(0.h, 8.h), + ], ), - TextInputWidget( - labelText: LocaleKeys.dob.tr(context: context), - hintText: authVM!.isUserFromUAE() ? appState.getUserRegistrationPayload.dob! : appState.getNHICUserData.dateOfBirth ?? "", - controller: authVM!.isUserFromUAE() ? authVM!.dobController : null, - isEnable: false, - prefix: null, - isBorderAllowed: false, - isAllowLeadingIcon: true, - isReadOnly: true, - labelColor: AppColors.textColor, - leadingIcon: AppAssets.birthday_cake, - selectionType: null, - ).paddingSymmetrical(0.h, 8.h), - ], - ), + ); + }, ), SizedBox(height: 50.h), // Row( @@ -437,12 +511,17 @@ class _RegisterNew extends State { child: CustomButton( text: LocaleKeys.submit.tr(context: context), onPressed: () { - if (ValidationUtils.isValidateEmail( - email: authVM!.emailController.text, - onOkPress: () { - Navigator.of(context).pop(); - })) { + // Use ViewModel validation method + if (authVM!.validateEmail()) { authVM!.onRegistrationComplete(); + } else { + // Show error in a dialog + if (authVM!.emailError != null) { + // dialogService can be used here if needed + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(authVM!.emailError!)), + ); + } } }, backgroundColor: AppColors.bgGreenColor, diff --git a/lib/presentation/authentication/saved_login_screen.dart b/lib/presentation/authentication/saved_login_screen.dart index e9f201ad..19080ae8 100644 --- a/lib/presentation/authentication/saved_login_screen.dart +++ b/lib/presentation/authentication/saved_login_screen.dart @@ -1,3 +1,6 @@ +import 'dart:ui' as ui; + +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -8,6 +11,7 @@ import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/authentication/login.dart'; @@ -18,7 +22,6 @@ import 'package:hmg_patient_app_new/widgets/bottomsheet/generic_bottom_sheet.dar import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; -import 'dart:ui' as ui; class SavedLogin extends StatefulWidget { const SavedLogin({super.key}); @@ -32,8 +35,10 @@ class _SavedLogin extends State { late AuthenticationViewModel authVm; late AppState appState; bool? isOther; + @override void initState() { + Clarity.setCurrentScreenName('Last Login Screen'); authVm = context.read(); appState = getIt.get(); loginType = LoginTypeExtension.fromValue(appState.getSelectDeviceByImeiRespModelElement!.logInType!)!; @@ -55,7 +60,6 @@ class _SavedLogin extends State { if (loginType == LoginTypeEnum.fingerprint || loginType == LoginTypeEnum.face) { authVm.loginWithFingerPrintFace(() {}); } - super.initState(); } @@ -66,6 +70,7 @@ class _SavedLogin extends State { appBar: CustomAppBar( onBackPressed: () { Navigator.of(context).pop(); + authVm.setIsInitialLoginNavigated(true); }, onLanguageChanged: (value) { context.setLocale(value == 'en' ? Locale('en', 'US') : Locale('ar', 'SA')); @@ -83,24 +88,17 @@ class _SavedLogin extends State { LocaleKeys.welcomeBack.tr().toText16(color: AppColors.inputLabelTextColor), SizedBox(height: 16.h), appState.getSelectDeviceByImeiRespModelElement != null - ? appState.getSelectDeviceByImeiRespModelElement!.name!.toCamelCase - .toText26(isBold: true, height: 26 / 36, color: AppColors.textColor) + ? appState.getSelectDeviceByImeiRespModelElement!.name!.toCamelCase.toText26(isBold: true, height: 26 / 36, color: AppColors.textColor, isEnglishOnly: true) : SizedBox(), SizedBox(height: 24.h), Container( padding: EdgeInsets.all(16.h), - decoration: BoxDecoration( - color: AppColors.whiteColor, - border: Border.all(color: AppColors.whiteColor), - borderRadius: BorderRadius.circular(24.h), - boxShadow: [ - BoxShadow(color: Color(0x0D000000), blurRadius: 16.h, offset: Offset(0, 0), spreadRadius: 5.h), - ], - ), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: false, isCustomShadow: [ + BoxShadow(color: Color(0x0D000000), blurRadius: 16.h, offset: Offset(0, 0), spreadRadius: 5.h), + ]), child: Column( children: [ // Last login info - show WhatsApp only if isOther AND loginType is SMS - ("${LocaleKeys.lastLoginBy.tr()} ${(isOther == true && loginType == LoginTypeEnum.sms) ? LoginTypeEnum.whatsapp.displayName : loginType.displayName}") .toText14(isBold: true, color: AppColors.greyTextColor, letterSpacing: -1), Directionality( @@ -128,15 +126,12 @@ class _SavedLogin extends State { ? "${LocaleKeys.loginBy.tr()} ${LoginTypeEnum.whatsapp.displayName}" : "${LocaleKeys.loginBy.tr()} ${loginType.displayName}", onPressed: () { - if (loginType == LoginTypeEnum.fingerprint || loginType == LoginTypeEnum.face) { authVm.loginWithFingerPrintFace(() {}); } else { // For isOther with SMS, use WhatsApp; otherwise use the original login type authVm.checkUserAuthentication( - otpTypeEnum: (isOther == true && loginType == LoginTypeEnum.sms) - ? OTPTypeEnum.whatsapp - : (loginType == LoginTypeEnum.sms ? OTPTypeEnum.sms : OTPTypeEnum.whatsapp), + otpTypeEnum: (isOther == true && loginType == LoginTypeEnum.sms) ? OTPTypeEnum.whatsapp : (loginType == LoginTypeEnum.sms ? OTPTypeEnum.sms : OTPTypeEnum.whatsapp), ); } }, @@ -144,9 +139,9 @@ class _SavedLogin extends State { borderColor: AppColors.primaryRedColor, textColor: Colors.white, fontSize: 12.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, - height: 40.h, + height: 44.h, padding: EdgeInsets.symmetric(vertical: 10.h), icon: (isOther == true && loginType == LoginTypeEnum.sms) ? AppAssets.whatsapp : getTypeIcons(loginType.toInt), iconColor: (isOther == true && loginType == LoginTypeEnum.sms) || loginType == LoginTypeEnum.whatsapp ? null : Colors.white, @@ -161,119 +156,122 @@ class _SavedLogin extends State { padding: EdgeInsets.symmetric(horizontal: 16.w), child: Text( LocaleKeys.oR.tr(), - style: context.dynamicTextStyle(fontSize: 16.f, fontWeight: FontWeight.w500), + style: context.dynamicTextStyle( + fontSize: 16.f, + fontWeight: FontWeight.w600, + ), ), ), SizedBox(height: 24.h), // OTP login button loginType.toInt != 1 - ? Column( - children: [ - loginType.toInt != 1 - ? CustomButton( - text: LocaleKeys.loginByOTP.tr(), - onPressed: () { - showModalBottomSheet( - context: context, - isScrollControlled: true, - isDismissible: false, - useSafeArea: true, - backgroundColor: Colors.transparent, - enableDrag: false, - // Prevent dragging to avoid focus conflicts - builder: (bottomSheetContext) => - StatefulBuilder(builder: (BuildContext context, StateSetter setModalState) { - return Padding( - padding: EdgeInsets.only(bottom: MediaQuery.of(bottomSheetContext).viewInsets.bottom), - child: SingleChildScrollView( - child: GenericBottomSheet( - countryCode: "966", - initialPhoneNumber: "", - textController: TextEditingController(), - isFromSavedLogin: true, - isEnableCountryDropdown: true, - onCountryChange: (value) {}, - onChange: (String? value) {}, - buttons: [ - Padding( - padding: EdgeInsets.only(bottom: 10.h), - child: CustomButton( - text: LocaleKeys.sendOTPSMS.tr(), + ? Column( + children: [ + loginType.toInt != 1 + ? CustomButton( + text: LocaleKeys.loginByOTP.tr(), + onPressed: () { + showModalBottomSheet( + context: context, + isScrollControlled: true, + isDismissible: false, + useSafeArea: true, + backgroundColor: Colors.transparent, + enableDrag: false, + // Prevent dragging to avoid focus conflicts + builder: (bottomSheetContext) => StatefulBuilder(builder: (BuildContext context, StateSetter setModalState) { + return Padding( + padding: EdgeInsets.only(bottom: MediaQuery.of(bottomSheetContext).viewInsets.bottom), + child: SingleChildScrollView( + child: GenericBottomSheet( + countryCode: appState.getSelectDeviceByImeiRespModelElement!.outSa == true ? "971" : "966", + // countryCode: "966", + initialPhoneNumber: "", + textController: TextEditingController(), + isFromSavedLogin: true, + isEnableCountryDropdown: true, + onCountryChange: (value) {}, + onChange: (String? value) {}, + buttons: [ + Padding( + padding: EdgeInsets.only(bottom: 10.h), + child: CustomButton( + text: LocaleKeys.sendOTPSMS.tr(), + onPressed: () { + Navigator.of(context).pop(); + loginType = LoginTypeEnum.sms; + authVm.checkUserAuthentication(otpTypeEnum: OTPTypeEnum.sms); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: Colors.white, + icon: AppAssets.sms), + ), + Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding(padding: EdgeInsets.symmetric(horizontal: 8.h), child: (LocaleKeys.oR.tr()).toText16(color: AppColors.textColor)), + ], + ), + Padding( + padding: EdgeInsets.only(bottom: 10.h, top: 10.h), + child: CustomButton( + text: LocaleKeys.sendOTPWHATSAPP.tr(), onPressed: () { Navigator.of(context).pop(); - loginType = LoginTypeEnum.sms; - authVm.checkUserAuthentication(otpTypeEnum: OTPTypeEnum.sms); + loginType = LoginTypeEnum.whatsapp; + authVm.checkUserAuthentication(otpTypeEnum: OTPTypeEnum.whatsapp); }, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - textColor: AppColors.whiteColor, - icon: AppAssets.sms), - ), - Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Padding( - padding: EdgeInsets.symmetric(horizontal: 8.h), - child: (LocaleKeys.oR.tr()).toText16(color: AppColors.textColor)), - ], - ), - Padding( - padding: EdgeInsets.only(bottom: 10.h, top: 10.h), - child: CustomButton( - text: LocaleKeys.sendOTPWHATSAPP.tr(), - onPressed: () { - Navigator.of(context).pop(); - loginType = LoginTypeEnum.whatsapp; - authVm.checkUserAuthentication(otpTypeEnum: OTPTypeEnum.whatsapp); - }, - backgroundColor: AppColors.transparent, - borderColor: AppColors.textColor, - textColor: AppColors.textColor, - icon: AppAssets.whatsapp, - iconColor: null, + backgroundColor: AppColors.transparent, + borderColor: AppColors.textColor, + textColor: AppColors.textColor, + icon: AppAssets.whatsapp, + iconColor: null, + applyThemeColor: false, + ), ), - ), - ], + ], + ), ), - ), - ); - }), - ); - }, - backgroundColor: AppColors.whiteColor, - borderColor: AppColors.borderOnlyColor, - textColor: AppColors.textColor, - borderWidth: 2, - padding: EdgeInsets.fromLTRB(0, 14.h, 0, 14.h), - icon: AppAssets.sms, - iconColor: AppColors.textColor, - ) - : Container(), - SizedBox( - height: 20.h, - ), - ], - ) - : CustomButton( - text: "${LocaleKeys.loginBy.tr()} ${LoginTypeEnum.whatsapp.displayName}", - icon: AppAssets.whatsapp, - iconColor: null, - onPressed: () { - if (loginType == LoginTypeEnum.fingerprint || loginType == LoginTypeEnum.face) { - authVm.loginWithFingerPrintFace(() {}); - } else { - loginType = LoginTypeEnum.whatsapp; - authVm.checkUserAuthentication(otpTypeEnum: OTPTypeEnum.whatsapp); - } - }, - backgroundColor: AppColors.whiteColor, - borderColor: AppColors.textColor, - textColor: AppColors.textColor, - borderWidth: 2.w, - padding: EdgeInsets.fromLTRB(0, 14.h, 0, 14.h), - applyThemeColor: false, - ), + ); + }), + ); + }, + height: isFoldable ? 56.h : 50.h, + backgroundColor: AppColors.whiteColor, + borderColor: AppColors.borderOnlyColor, + textColor: AppColors.textColor, + borderWidth: 2, + padding: EdgeInsets.fromLTRB(0, 14.h, 0, 14.h), + icon: AppAssets.sms, + iconColor: AppColors.textColor, + ) + : Container(), + SizedBox( + height: 20.h, + ), + ], + ) + : CustomButton( + text: "${LocaleKeys.loginBy.tr()} ${LoginTypeEnum.whatsapp.displayName}", + icon: AppAssets.whatsapp, + iconColor: null, + onPressed: () { + if (loginType == LoginTypeEnum.fingerprint || loginType == LoginTypeEnum.face) { + authVm.loginWithFingerPrintFace(() {}); + } else { + loginType = LoginTypeEnum.whatsapp; + authVm.checkUserAuthentication(otpTypeEnum: OTPTypeEnum.whatsapp); + } + }, + backgroundColor: AppColors.whiteColor, + borderColor: AppColors.textColor, + textColor: AppColors.textColor, + borderWidth: 2.w, + padding: EdgeInsets.fromLTRB(0, 14.h, 0, 14.h), + applyThemeColor: false, + ), ], const Spacer(flex: 2), @@ -289,12 +287,13 @@ class _SavedLogin extends State { child: CustomButton( text: LocaleKeys.guest.tr(), onPressed: () { + authVm.setIsInitialLoginNavigated(true); Navigator.pushAndRemoveUntil( context, CustomPageRoute( page: LandingNavigation(), ), - (r) => false); + (r) => false); // Navigator.of(context).pushAndRemoveUntil( // MaterialPageRoute(builder: (BuildContext context) => LandingNavigation()) // ); @@ -303,7 +302,7 @@ class _SavedLogin extends State { borderColor: Color(0xffFEE9EA), textColor: Color(0xffED1C2B), fontSize: 16.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, padding: EdgeInsets.fromLTRB(0, 10.h, 0, 10.h), // icon: "assets/images/svg/apple-finder.svg", @@ -328,7 +327,7 @@ class _SavedLogin extends State { borderColor: Color(0xffFEE9EA), textColor: Color(0xffED1C2B), fontSize: 15.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, padding: EdgeInsets.fromLTRB(0, 10.h, 0, 10.h), // icon: "assets/images/svg/apple-finder.svg", diff --git a/lib/presentation/blood_donation/blood_donation_page.dart b/lib/presentation/blood_donation/blood_donation_page.dart index 7c6c625f..f3f0782d 100644 --- a/lib/presentation/blood_donation/blood_donation_page.dart +++ b/lib/presentation/blood_donation/blood_donation_page.dart @@ -1,5 +1,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; @@ -15,18 +16,13 @@ import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/blood_donation/widgets/select_blood_group_widget.dart'; import 'package:hmg_patient_app_new/presentation/blood_donation/widgets/select_city_widget.dart'; import 'package:hmg_patient_app_new/presentation/blood_donation/widgets/select_gender_widget.dart'; -import 'package:hmg_patient_app_new/presentation/book_appointment/select_clinic_page.dart'; -import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; -import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; -import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:lottie/lottie.dart'; import 'package:provider/provider.dart'; -import 'package:hmg_patient_app_new/presentation/appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart'; class BloodDonationPage extends StatefulWidget { BloodDonationPage({super.key}); @@ -56,11 +52,12 @@ class _BloodDonationPageState extends State { child: CollapsingListView( title: LocaleKeys.bloodDonation.tr(), trailing: CustomButton( - text: "Book", + text: LocaleKeys.book.tr(context: context), onPressed: () { if (bloodDonationVM.isUserAuthanticated()) { bloodDonationVM.fetchHospitalsList().then((value) { - showCommonBottomSheetWithoutHeight(context, title: "Select Hospital", isDismissible: false, child: Consumer(builder: (_, data, __) { + showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.selectHospital.tr(context: context), isDismissible: false, + child: Consumer(builder: (_, data, __) { return HospitalBottomSheetBodySelection( isHideTitle: true, onUserHospitalSelection: (BdGetProjectsHaveBdClinic userChoice) { @@ -77,7 +74,8 @@ class _BloodDonationPageState extends State { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Lottie.asset(AppAnimations.errorAnimation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), + Lottie.asset(AppAnimations.errorAnimation, + repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), SizedBox(height: 8.h), (LocaleKeys.loginToUseService.tr()).toText16(color: AppColors.blackColor), SizedBox(height: 16.h), @@ -125,12 +123,14 @@ class _BloodDonationPageState extends State { backgroundColor: AppColors.bgRedLightColor, borderColor: AppColors.bgRedLightColor, textColor: AppColors.primaryRedColor, + isDisabled: !Utils.havePrivilege(117), padding: EdgeInsetsGeometry.symmetric(vertical: 0.h, horizontal: 20.h)), child: Padding( padding: EdgeInsets.all(24.w), child: SingleChildScrollView( child: Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: false), + decoration: + RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: false), child: Padding( padding: EdgeInsets.all(16.h), child: Column( @@ -146,11 +146,12 @@ class _BloodDonationPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.city.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500), + LocaleKeys.city.tr().toText16(color: AppColors.textColor, isBold: true), (appState.isArabic() - ? (bloodDonationVM.selectedCity?.descriptionN ?? LocaleKeys.select.tr()) - : bloodDonationVM.selectedCity?.description ?? LocaleKeys.select.tr(context: context)) - .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + ? (bloodDonationVM.selectedCity?.descriptionN ?? LocaleKeys.selectBloodDonationCity.tr()) + : bloodDonationVM.selectedCity?.description ?? + LocaleKeys.selectBloodDonationCity.tr(context: context)) + .toText14(color: AppColors.greyTextColor, isBold: true), ], ), ], @@ -159,7 +160,10 @@ class _BloodDonationPageState extends State { ], ).onPress(() async { showCommonBottomSheetWithoutHeight(context, - title: LocaleKeys.selectCity.tr(context: context), isDismissible: true, child: SelectCityWidget(bloodDonationViewModel: bloodDonationVM), callBackFunc: () {}); + title: LocaleKeys.selectCity.tr(context: context), + isDismissible: true, + child: SelectCityWidget(bloodDonationViewModel: bloodDonationVM), + callBackFunc: () {}); }), SizedBox(height: 16.h), Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), @@ -174,11 +178,11 @@ class _BloodDonationPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.gender.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500), + LocaleKeys.gender.tr().toText16(color: AppColors.textColor, isBold: true), (appState.isArabic() - ? (bloodDonationVM.selectedGender?.typeAr ?? LocaleKeys.select.tr()) - : bloodDonationVM.selectedGender?.type ?? LocaleKeys.select.tr(context: context)) - .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + ? (bloodDonationVM.selectedGender?.typeAr ?? LocaleKeys.selectBloodDonationGender.tr()) + : bloodDonationVM.selectedGender?.type ?? LocaleKeys.selectBloodDonationGender.tr(context: context)) + .toText14(color: AppColors.greyTextColor, isBold: true), ], ), ], @@ -205,12 +209,12 @@ class _BloodDonationPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.bloodType.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500), - // bloodDonationVM.selectedBloodType?.toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.bloodType.tr().toText16(color: AppColors.textColor, isBold: true), + // bloodDonationVM.selectedBloodType?.toText14(color: AppColors.greyTextColor, isBold: true), (appState.isArabic() - ? (bloodDonationVM.selectedBloodType ?? LocaleKeys.select.tr()) - : bloodDonationVM.selectedBloodType ?? LocaleKeys.select.tr(context: context)) - .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500) + ? (bloodDonationVM.selectedBloodType ?? LocaleKeys.selectBloodType.tr()) + : bloodDonationVM.selectedBloodType ?? LocaleKeys.selectBloodType.tr(context: context)) + .toText14(color: AppColors.greyTextColor, isBold: true) ], ), ], @@ -219,11 +223,114 @@ class _BloodDonationPageState extends State { ], ).onPress(() { showCommonBottomSheetWithoutHeight(context, - title: LocaleKeys.select.tr(context: context), + title: LocaleKeys.selectBloodGroup.tr(context: context), isDismissible: true, child: SelectBloodGroupWidget(isArabic: appState.isArabic(), bloodDonationViewModel: bloodDonationVM), callBackFunc: () {}); }), + SizedBox(height: 24.h), + Container( + padding: EdgeInsets.all(16.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.bgRedLightColor.withValues(alpha: 0.1), + borderRadius: 12.r, + hasShadow: false, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + padding: EdgeInsets.all(8.h), + decoration: BoxDecoration( + color: AppColors.primaryRedColor.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(8.r), + ), + child: Utils.buildSvgWithAssets( + icon: AppAssets.blood_icon, + width: 20.h, + height: 20.h, + iconColor: AppColors.primaryRedColor, + ), + ), + SizedBox(width: 12.w), + Expanded( + child: LocaleKeys.aboutBloodDonation.tr(context: context).toText16( + color: AppColors.primaryRedColor, + isBold: true, + ), + ), + ], + ), + SizedBox(height: 12.h), + LocaleKeys.bloodDonationDescription.tr(context: context).toText14( + color: AppColors.greyTextColor, + isBold: true, + ), + SizedBox(height: 12.h), + Row( + children: [ + Container( + width: 4.w, + height: 4.h, + decoration: BoxDecoration( + color: AppColors.primaryRedColor, + shape: BoxShape.circle, + ), + ), + SizedBox(width: 8.w), + Expanded( + child: LocaleKeys.bloodDonationBenefit1.tr(context: context).toText13( + color: AppColors.textColor, + isBold: true, + ), + ), + ], + ), + SizedBox(height: 8.h), + Row( + children: [ + Container( + width: 4.w, + height: 4.h, + decoration: BoxDecoration( + color: AppColors.primaryRedColor, + shape: BoxShape.circle, + ), + ), + SizedBox(width: 8.w), + Expanded( + child: LocaleKeys.bloodDonationBenefit2.tr(context: context).toText13( + color: AppColors.textColor, + isBold: true, + ), + ), + ], + ), + SizedBox(height: 8.h), + Row( + children: [ + Container( + width: 4.w, + height: 4.h, + decoration: BoxDecoration( + color: AppColors.primaryRedColor, + shape: BoxShape.circle, + ), + ), + SizedBox(width: 8.w), + Expanded( + child: LocaleKeys.bloodDonationBenefit3.tr(context: context).toText13( + color: AppColors.textColor, + isBold: true, + ), + ), + ], + ), + ], + ), + ), ], ), ), @@ -264,7 +371,7 @@ class _BloodDonationPageState extends State { children: [ Text( "${LocaleKeys.iAcceptThe.tr()} ", - style: context.dynamicTextStyle(fontSize: 14.f, fontWeight: FontWeight.w500, color: Color(0xFF2E3039)), + style: context.dynamicTextStyle(fontSize: 14.f, fontWeight: FontWeight.w600, color: Color(0xFF2E3039)), ), GestureDetector( onTap: () { @@ -272,17 +379,17 @@ class _BloodDonationPageState extends State { // Navigator.of(context).pushNamed('/terms'); appState.isArabic() ? Utils.openWebView( - url: 'https://hmg.com/ar/Pages/Terms.aspx', + url: AppUrls.hmgTermsUrlAr, ) : Utils.openWebView( - url: 'https://hmg.com/en/Pages/Terms.aspx', + url: AppUrls.hmgTermsUrlEn, ); }, child: Text( LocaleKeys.termsConditoins.tr(), style: context.dynamicTextStyle( fontSize: 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: AppColors.primaryRedColor, decoration: TextDecoration.underline, decorationColor: AppColors.primaryRedBorderColor, @@ -294,7 +401,7 @@ class _BloodDonationPageState extends State { // Expanded( // child: Text( // LocaleKeys.iAcceptTermsConditions.tr().split("the").first, - // style: context.dynamicTextStyle(fontSize: 14.fSize, fontWeight: FontWeight.w500, color: Color(0xFF2E3039)), + // style: context.dynamicTextStyle(fontSize: 14.fSize, isBold: true, color: Color(0xFF2E3039)), // ), // ), ], @@ -315,7 +422,8 @@ class _BloodDonationPageState extends State { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Lottie.asset(AppAnimations.errorAnimation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), + Lottie.asset(AppAnimations.errorAnimation, + repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), SizedBox(height: 8.h), (LocaleKeys.loginToUseService.tr()).toText16(color: AppColors.blackColor), SizedBox(height: 16.h), @@ -365,7 +473,7 @@ class _BloodDonationPageState extends State { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), height: 50.h, diff --git a/lib/presentation/blood_donation/widgets/select_gender_widget.dart b/lib/presentation/blood_donation/widgets/select_gender_widget.dart index 0d360a80..e51d3e78 100644 --- a/lib/presentation/blood_donation/widgets/select_gender_widget.dart +++ b/lib/presentation/blood_donation/widgets/select_gender_widget.dart @@ -37,7 +37,12 @@ class SelectGenderWidget extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, spacing: 8.h, - children: [GenderTypeEnum.values[index].name.toCamelCase.toText16(color: AppColors.textColor, isBold: true)], + children: [ + (isArabic + ? GenderTypeEnum.values[index].typeAr + : GenderTypeEnum.values[index].type) + .toText16(color: AppColors.textColor, isBold: true) + ], ), ), Transform.flip( @@ -52,7 +57,13 @@ class SelectGenderWidget extends StatelessWidget { ), ], ).paddingSymmetrical(16.h, 16.h).onPress(() { - bloodDonationViewModel.onGenderChange(GenderTypeEnum.values[index].name.toCamelCase); + final genderValue = + // isArabic + // ? GenderTypeEnum.values[index].typeAr + + // : + GenderTypeEnum.values[index].type; + bloodDonationViewModel.onGenderChange(genderValue); Navigator.of(context).pop(); })); }, diff --git a/lib/presentation/book_appointment/book_appointment_page.dart b/lib/presentation/book_appointment/book_appointment_page.dart index ab548449..9b210eee 100644 --- a/lib/presentation/book_appointment/book_appointment_page.dart +++ b/lib/presentation/book_appointment/book_appointment_page.dart @@ -1,12 +1,15 @@ import 'dart:async'; +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/cache_consts.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/location_util.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -18,6 +21,7 @@ import 'package:hmg_patient_app_new/features/immediate_livecare/immediate_liveca import 'package:hmg_patient_app_new/features/my_appointments/appointment_via_region_viewmodel.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/appointments/my_doctors_page.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/faculity_selection/facility_type_selection_widget.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/region_bottomsheet/region_list_widget.dart' show RegionBottomSheetBody; import 'package:hmg_patient_app_new/presentation/book_appointment/doctor_profile_page.dart'; @@ -32,6 +36,7 @@ import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart' show showC import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; import '../appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart'; @@ -53,15 +58,28 @@ class _BookAppointmentPageState extends State { @override void initState() { + Clarity.setCurrentScreenName('Book Appointment Page'); authVM = context.read(); scheduleMicrotask(() { // bookAppointmentsViewModel.selectedTabIndex = 0; bookAppointmentsViewModel.initBookAppointmentViewModel(); - bookAppointmentsViewModel.getLocation(); + // bookAppointmentsViewModel.getLocation(); immediateLiveCareViewModel.initImmediateLiveCare(); + if (appState.isAuthenticated) { + getIt.get().getPatientMyDoctors(isTop8: true); + // getIt.get().getPatientFavouriteDoctors(); + } }); WidgetsBinding.instance.addPostFrameCallback((_) { - showUnKnownClinicBottomSheet(); + if (bookAppointmentsViewModel.selectedTabIndex == 1) { + if (appState.isAuthenticated) { + getIt.get().getPatientMyDoctors(isTop8: true); + getIt.get().getPatientFavouriteDoctors(); + showUnKnownClinicBottomSheet(); + } + } else { + showUnKnownClinicBottomSheet(); + } }); super.initState(); } @@ -102,21 +120,34 @@ class _BookAppointmentPageState extends State { SizedBox(height: 24.h), getSelectedTabData(bookAppointmentsVM.selectedTabIndex), SizedBox(height: 24.h), - if (appState.isAuthenticated) ...[ + if (appState.isAuthenticated && bookAppointmentsVM.selectedTabIndex == 0) ...[ Consumer(builder: (context, myAppointmentsVM, child) { return myAppointmentsVM.isPatientMyDoctorsLoading - ? Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Image.network( - "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", - width: 64.w, - height: 64.h, - fit: BoxFit.cover, - ).circle(100).toShimmer2(isShow: true, radius: 50.r), - SizedBox(height: 8.h), - ("Dr. John Smith Smith Smith").toString().toText12(fontWeight: FontWeight.w500, isCenter: true, maxLine: 2).toShimmer2(isShow: true), - ], + ? SizedBox( + height: 110.h, + child: ListView.separated( + scrollDirection: Axis.horizontal, + itemCount: 5, + shrinkWrap: true, + padding: EdgeInsets.only(left: 24.w, right: 24.w), + itemBuilder: (context, index) { + return Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Utils.buildImgWithNetwork( + url: "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + iconColor: AppColors.transparent, + width: 64.h, + height: 64.h, + fit: BoxFit.cover, + ).circle(100).toShimmer2(isShow: true, radius: 50.r), + SizedBox(height: 8.h), + ("Dr. John").toString().toText12(isBold: true, isCenter: true, maxLine: 2).toShimmer2(isShow: true), + ], + ); + }, + separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 16.h), + ), ) : myAppointmentsVM.patientMyDoctorsList.isEmpty ? SizedBox() @@ -124,10 +155,29 @@ class _BookAppointmentPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ if (appState.isAuthenticated) ...[], - LocaleKeys.recentVisits.tr(context: context).toText18(isBold: true).paddingSymmetrical(24.w, 0.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.recentVisits.tr(context: context).toText18(isBold: true).paddingSymmetrical(24.w, 0.h), + Row( + children: [ + LocaleKeys.viewAll.tr(context: context).toText14(color: AppColors.primaryRedColor, isBold: true), + SizedBox(width: 2.h), + Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), + ], + ).paddingSymmetrical(24.h, 0.h).onPress(() { + myAppointmentsVM.setIsMyDoctorsDataToBeLoaded(true); + Navigator.of(context).push( + CustomPageRoute( + page: MyDoctorsPage(), + ), + ); + }), + ], + ), SizedBox(height: 16.h), SizedBox( - height: 110.h, + height: 115.h, child: ListView.separated( scrollDirection: Axis.horizontal, itemCount: myAppointmentsVM.patientMyDoctorsList.length, @@ -145,8 +195,9 @@ class _BookAppointmentPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - Image.network( - myAppointmentsVM.patientMyDoctorsList[index].doctorImageURL!, + Utils.buildImgWithNetwork( + url: myAppointmentsVM.patientMyDoctorsList[index].doctorImageURL!, + iconColor: AppColors.transparent, width: 64.h, height: 64.h, fit: BoxFit.cover, @@ -156,7 +207,7 @@ class _BookAppointmentPageState extends State { width: 80.w, child: (myAppointmentsVM.patientMyDoctorsList[index].doctorName) .toString() - .toText12(fontWeight: FontWeight.w500, isCenter: true, maxLine: 2) + .toText12(isBold: true, isCenter: true, maxLine: 2) .toShimmer2(isShow: false), ), ], @@ -172,7 +223,7 @@ class _BookAppointmentPageState extends State { LoaderBottomSheet.hideLoader(); Navigator.of(context).push( CustomPageRoute( - page: DoctorProfilePage(), + page: DoctorProfilePage(isDoctorAllowedToBook: !(myAppointmentsVM.patientMyDoctorsList[index].isLiveCareClinic ?? false)), ), ); }, onError: (err) { @@ -196,6 +247,199 @@ class _BookAppointmentPageState extends State { ], ); }), + // Favorite Doctors Section + Consumer(builder: (context, myAppointmentsVM, child) { + // Show shimmer loading state + if (myAppointmentsVM.isPatientFavouriteDoctorsLoading) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 24.h), + LocaleKeys.favouriteList.tr(context: context).toText18(isBold: true).paddingSymmetrical(24.w, 0.h), + SizedBox(height: 16.h), + SizedBox( + height: 110.h, + child: ListView.separated( + scrollDirection: Axis.horizontal, + itemCount: 3, + // Show 3 shimmer items + shrinkWrap: true, + padding: EdgeInsets.only(left: 24.w, right: 24.w), + itemBuilder: (context, index) { + return SizedBox( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + width: 64.h, + height: 64.h, + decoration: BoxDecoration( + color: Colors.grey[300], + shape: BoxShape.circle, + ), + ).toShimmer2(isShow: true, radius: 50.r), + SizedBox(height: 8.h), + SizedBox( + width: 80.w, + child: Container( + height: 12.h, + decoration: BoxDecoration( + color: Colors.grey[300], + borderRadius: BorderRadius.circular(4.r), + ), + ).toShimmer2(isShow: true), + ), + ], + ), + ); + }, + separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 8.h), + ), + ), + ], + ); + } + + // Show empty state or actual list + return myAppointmentsVM.patientFavouriteDoctorsList.isEmpty + ? Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 16.h), + LocaleKeys.favouriteList.tr(context: context).toText18(isBold: true).paddingSymmetrical(24.w, 0.h), + SizedBox(height: 16.h), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.h, + hasShadow: false, + ), + padding: EdgeInsets.all(16.h), + child: Column( + children: [ + Center( + child: LocaleKeys.noFavouriteDoctors.tr(context: context).toText14(color: AppColors.greyTextColor, isBold: true), + ), + SizedBox(height: 12.h), + CustomButton( + text: LocaleKeys.add.tr(context: context), + onPressed: () { + Navigator.of(context).push(CustomPageRoute(page: SearchDoctorByName())); + }, + backgroundColor: Color(0xffFEE9EA), + borderColor: Color(0xffFEE9EA), + textColor: Color(0xffED1C2B), + fontSize: 14.f, + isBold: true, + padding: EdgeInsets.fromLTRB(10.h, 0, 10.h, 0), + icon: AppAssets.add_icon, + iconColor: AppColors.primaryRedColor, + height: 40.h, + ), + ], + ), + ).paddingSymmetrical(24.w, 0.h), + SizedBox(height: 24.h), + ], + ) + : Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 24.h), + LocaleKeys.favourites.tr(context: context).toText18(isBold: true).paddingSymmetrical(24.w, 0.h), + SizedBox(height: 16.h), + SizedBox( + height: 110.h, + child: ListView.separated( + scrollDirection: Axis.horizontal, + itemCount: myAppointmentsVM.patientFavouriteDoctorsList.length + 1, + shrinkWrap: true, + padding: EdgeInsets.only(left: 24.w, right: 24.w), + itemBuilder: (context, index) { + // Last item: static "Add" button + if (index == myAppointmentsVM.patientFavouriteDoctorsList.length) { + return Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.add_new_family_icon, height: 64.h, width: 64.h, applyThemeColor: false), + SizedBox( + width: 80.w, + child: LocaleKeys.add + .tr(context: context) + .toText12( + color: AppColors.textColor, + isBold: true, + isCenter: true, + ) + .paddingOnly(top: 4.h), + ), + ], + ).onPress(() { + Navigator.of(context).push(CustomPageRoute(page: SearchDoctorByName())); + }); + } + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 1000), + child: SlideAnimation( + horizontalOffset: 100.0, + child: FadeInAnimation( + child: SizedBox( + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Utils.buildImgWithNetwork( + url: myAppointmentsVM.patientFavouriteDoctorsList[index].doctorImageUrl!, + iconColor: AppColors.transparent, + width: 64.h, + height: 64.h, + fit: BoxFit.cover, + ).circle(100).toShimmer2(isShow: false, radius: 50.r), + SizedBox(height: 8.h), + SizedBox( + width: 80.w, + child: (myAppointmentsVM.patientFavouriteDoctorsList[index].doctorName) + .toString() + .toText12(isBold: true, isCenter: true, maxLine: 2) + .toShimmer2(isShow: false), + ), + ], + ), + ).onPress(() async { + bookAppointmentsViewModel.setSelectedDoctor(DoctorsListResponseModel( + clinicID: myAppointmentsVM.patientFavouriteDoctorsList[index].clinicId, + projectID: myAppointmentsVM.patientFavouriteDoctorsList[index].projectId, + doctorID: myAppointmentsVM.patientFavouriteDoctorsList[index].doctorId, + )); + LoaderBottomSheet.showLoader(); + await bookAppointmentsViewModel.getDoctorProfile(onSuccess: (dynamic respData) { + LoaderBottomSheet.hideLoader(); + Navigator.of(context).push( + CustomPageRoute( + page: DoctorProfilePage(isDoctorAllowedToBook: true), + ), + ); + }, onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }), + ), + ), + ); + }, + separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 8.h), + ), + ), + ], + ); + }), ], ], ); @@ -203,7 +447,9 @@ class _BookAppointmentPageState extends State { ), ), ), - _buildSymptomsBottomCard(), + Consumer(builder: (context, bookAppointmentsVM, child) { + return _buildSymptomsBottomCard(); + }), ], ), ); @@ -235,8 +481,8 @@ class _BookAppointmentPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.searchByClinic.tr(context: context).toText14(color: AppColors.textColor, weight: FontWeight.w500), - LocaleKeys.tapToSelectClinic.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), + LocaleKeys.searchByClinic.tr(context: context).toText14(color: AppColors.textColor, isBold: true), + LocaleKeys.tapToSelect.tr(context: context).toText12(color: AppColors.primaryRedColor, isBold: true), ], ), ], @@ -267,8 +513,8 @@ class _BookAppointmentPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.searchByDoctor.tr(context: context).toText14(color: AppColors.textColor, weight: FontWeight.w500), - LocaleKeys.tapToSelect.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), + LocaleKeys.searchByDoctor.tr(context: context).toText14(color: AppColors.textColor, isBold: true), + LocaleKeys.tapToSelect.tr(context: context).toText12(color: AppColors.primaryRedColor, isBold: true), ], ), ], @@ -297,8 +543,8 @@ class _BookAppointmentPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.searchByRegion.tr(context: context).toText14(color: AppColors.textColor, weight: FontWeight.w500), - LocaleKeys.centralRegion.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), + LocaleKeys.searchByRegion.tr(context: context).toText14(color: AppColors.textColor, isBold: true), + LocaleKeys.tapToSelect.tr(context: context).toText12(color: AppColors.primaryRedColor, isBold: true), ], ), ], @@ -316,96 +562,98 @@ class _BookAppointmentPageState extends State { ], ).paddingSymmetrical(24.h, 0.h); case 1: - //TODO: Get LiveCare type Select UI from Hussain + //TODO: Get LiveCare type Select UI from Hussain return appState.isAuthenticated ? Column( - children: [ - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.h, - hasShadow: false, - ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ + children: [ + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: false, + ), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ Utils.buildSvgWithAssets(icon: AppAssets.search_by_clinic_icon, width: 40.h, height: 40.h, applyThemeColor: false), SizedBox(width: 12.h), Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.immediateConsultation.tr(context: context).toText14(color: AppColors.textColor, weight: FontWeight.w500), - LocaleKeys.tapToSelectClinic.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), - ], - ), - ], - ), - Transform.flip(flipX: appState.isArabic(), child: Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_icon, iconColor: AppColors.textColor, width: 40.h, height: 40.h)), - ], - ).onPress(() async { - //TODO Implement API to check for existing LiveCare Requests + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.immediateConsultation.tr(context: context).toText14(color: AppColors.textColor, isBold: true), + LocaleKeys.tapToSelectClinic.tr(context: context).toText12(color: AppColors.primaryRedColor, isBold: true), + ], + ), + ], + ), + Transform.flip( + flipX: appState.isArabic(), child: Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_icon, iconColor: AppColors.textColor, width: 40.h, height: 40.h)), + ], + ).onPress(() async { + //TODO Implement API to check for existing LiveCare Requests - LoaderBottomSheet.showLoader(); - await immediateLiveCareViewModel.getPatientLiveCareHistory(); - LoaderBottomSheet.hideLoader(); + LoaderBottomSheet.showLoader(); + await immediateLiveCareViewModel.getPatientLiveCareHistory(); + LoaderBottomSheet.hideLoader(); - if (immediateLiveCareViewModel.patientHasPendingLiveCareRequest) { - Navigator.of(context).push( - CustomPageRoute( - page: ImmediateLiveCarePendingRequestPage(), - ), - ); - } else { - Navigator.of(context).push( - CustomPageRoute( - page: SelectImmediateLiveCareClinicPage(), - ), - ); - } - }), - SizedBox(height: 16.h), - Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), - SizedBox(height: 16.h), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ + if (immediateLiveCareViewModel.patientHasPendingLiveCareRequest) { + Navigator.of(context).push( + CustomPageRoute( + page: ImmediateLiveCarePendingRequestPage(), + ), + ); + } else { + Navigator.of(context).push( + CustomPageRoute( + page: SelectImmediateLiveCareClinicPage(), + ), + ); + } + }), + SizedBox(height: 16.h), + Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), + SizedBox(height: 16.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ Utils.buildSvgWithAssets(icon: AppAssets.search_by_doctor_icon, width: 40.h, height: 40.h, applyThemeColor: false), SizedBox(width: 12.h), Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.scheduledConsultation.tr(context: context).toText14(color: AppColors.textColor, weight: FontWeight.w500), - LocaleKeys.tapToSelectClinic.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), - ], - ), - ], - ), - Transform.flip(flipX: appState.isArabic(), child: Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_icon, iconColor: AppColors.textColor, width: 40.h, height: 40.h)), - ], - ).onPress(() { - bookAppointmentsViewModel.setIsClinicsListLoading(true); - bookAppointmentsViewModel.setIsLiveCareSchedule(true); - Navigator.of(context).push( - CustomPageRoute( - page: SelectClinicPage(), - ), - ); - }), - ], - ), - ), - ), - ], - ).paddingSymmetrical(24.h, 0.h) + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.scheduledConsultation.tr(context: context).toText14(color: AppColors.textColor, isBold: true), + LocaleKeys.tapToSelectClinic.tr(context: context).toText12(color: AppColors.primaryRedColor, isBold: true), + ], + ), + ], + ), + Transform.flip( + flipX: appState.isArabic(), child: Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_icon, iconColor: AppColors.textColor, width: 40.h, height: 40.h)), + ], + ).onPress(() { + bookAppointmentsViewModel.setIsClinicsListLoading(true); + bookAppointmentsViewModel.setIsLiveCareSchedule(true); + Navigator.of(context).push( + CustomPageRoute( + page: SelectClinicPage(), + ), + ); + }), + ], + ), + ), + ), + ], + ).paddingSymmetrical(24.h, 0.h) : getLiveCareNotLoggedInUI(); default: SizedBox.shrink(); @@ -414,48 +662,47 @@ class _BookAppointmentPageState extends State { } Widget _buildSymptomsBottomCard() { - return Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r), - child: Row( - children: [ - Expanded( - child: Column( - mainAxisSize: MainAxisSize.min, - crossAxisAlignment: CrossAxisAlignment.start, + return bookAppointmentsViewModel.checkLiveCareSymptomCheckerStatus() + ? Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r), + child: Row( children: [ - LocaleKeys.notSureHelpMeChooseClinic.tr(context: context).toText16(weight: FontWeight.w600, color: AppColors.textColor), - SizedBox(height: 8.h), - LocaleKeys.mentionYourSymptomsAndFindDoctors.tr(context: context).toText12( - fontWeight: FontWeight.w500, - color: AppColors.greyTextColor, + Expanded( + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.notSureHelpMeChooseClinic.tr(context: context).toText16(isBold: true, color: AppColors.textColor), + SizedBox(height: 8.h), + LocaleKeys.checkYourSymptomsWithScale.tr(context: context).toText12( + isBold: true, + color: AppColors.greyTextColor, + ), + ], + ), ), + SizedBox(width: 16.w), + CustomButton( + height: 42.h, + width: 42.w, + text: "", + onPressed: () => context.navigateWithName(AppRoutes.userInfoSelection), + icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward, + ) ], - ), - ), - SizedBox(width: 16.w), - CustomButton( - height: 42.h, - width: 42.w, - text: "", - onPressed: () => context.navigateWithName(AppRoutes.userInfoSelection), - icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward, + ).paddingAll(24.w), ) - ], - ).paddingAll(24.w), - ); + : SizedBox.shrink(); } void openRegionListBottomSheet(BuildContext context, RegionBottomSheetType type) { regionalViewModel.flush(); regionalViewModel.setBottomSheetType(type); // AppointmentViaRegionViewmodel? viewmodel = null; - showCommonBottomSheetWithoutHeight(context, title: "", - titleWidget: Consumer(builder: (_, data, __) => getTitle(data)), - isDismissible: false, + showCommonBottomSheetWithoutHeight(context, title: "", titleWidget: Consumer(builder: (_, data, __) => getTitle(data)), isDismissible: false, child: Consumer(builder: (_, data, __) { - return getRegionalSelectionWidget(data); - }), - callBackFunc: () {}); + return getRegionalSelectionWidget(data); + }), callBackFunc: () {}); } Widget getRegionalSelectionWidget(AppointmentViaRegionViewmodel data) { @@ -491,27 +738,102 @@ class _BookAppointmentPageState extends State { } }, onHospitalSearch: (value) { - data.searchHospitals(value ?? ""); + data.searchHospitals(value); }, selectedFacility: data.selectedFacility, hmcCount: data.hmcCount, hmgCount: data.hmgCount, + sortByLocation: data.sortByLocation, + onSortByLocationToggle: (value) => _handleSortByLocationToggle(value, data), ); } if (data.bottomSheetState == AppointmentViaRegionState.CLINIC_SELECTION) { // Navigator.of(context).pop(); bookAppointmentsViewModel.setIsClinicsListLoading(true); bookAppointmentsViewModel.setLoadSpecificClinic(true); - bookAppointmentsViewModel.setProjectID(regionalViewModel.selectedHospital?.hospitalList.first?.mainProjectID.toString()); + bookAppointmentsViewModel.setProjectID(regionalViewModel.selectedHospital!.hospitalList.first!.mainProjectID.toString()); } else { SizedBox.shrink(); } return SizedBox.shrink(); } + void _handleSortByLocationToggle(bool value, AppointmentViaRegionViewmodel regionVM) { + if (value) { + final locationUtils = getIt.get(); + locationUtils.getLocation( + isShowConfirmDialog: true, + onSuccess: (latLng) { + regionVM.setSortByLocation(true); + _refreshHospitalListAfterApi(regionVM); + }, + onFailure: () { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.giveLocationPermissionForNearestList.tr(context: context), + isShowActionButtons: true, + onCancelTap: () { + Navigator.of(context).pop(); + }, + onConfirmTap: () async { + Navigator.of(context).pop(); + openAppSettings(); + }), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + regionVM.setSortByLocation(false); + }, + onLocationDeniedForever: () { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.giveLocationPermissionForNearestList.tr(context: context), + isShowActionButtons: true, + onCancelTap: () { + Navigator.of(context).pop(); + }, + onConfirmTap: () async { + Navigator.of(context).pop(); + openAppSettings(); + }), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + regionVM.setSortByLocation(false); + }, + ); + } else { + final appState = getIt.get(); + appState.resetLocation(); + regionVM.setSortByLocation(false); + _refreshHospitalListAfterApi(regionVM); + } + } + + void _refreshHospitalListAfterApi(AppointmentViaRegionViewmodel regionVM) { + void listener() { + if (!bookAppointmentsViewModel.isRegionListLoading) { + bookAppointmentsViewModel.removeListener(listener); + final selectedRegion = regionVM.selectedRegionId; + if (selectedRegion != null && bookAppointmentsViewModel.hospitalList?.registeredDoctorMap?[selectedRegion] != null) { + regionVM.setDisplayListAndRegionHospitalList(bookAppointmentsViewModel.hospitalList!.registeredDoctorMap![selectedRegion]); + } + } + } + + bookAppointmentsViewModel.addListener(listener); + bookAppointmentsViewModel.getRegionMappedProjectList(); + } + getTitle(AppointmentViaRegionViewmodel data) { if (data.selectedRegionId == null) { - return LocaleKeys.selectRegion.tr(context: context).toText20(weight: FontWeight.w600); + return LocaleKeys.selectRegion.tr(context: context).toText20(isBold: true); } else { return Transform.flip( flipX: data.isArabic ? true : false, @@ -539,7 +861,7 @@ class _BookAppointmentPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.immediateService.tr(context: context).toText18(color: AppColors.textColor, isBold: true), - LocaleKeys.noNeedToWaitGetMedicalConsultation.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.noNeedToWaitGetMedicalConsultation.tr(context: context).toText14(color: AppColors.greyTextColor, isBold: true), ], ), ), @@ -555,7 +877,7 @@ class _BookAppointmentPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.noVisitRequired.tr(context: context).toText18(color: AppColors.textColor, isBold: true), - LocaleKeys.livecarePoint5.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.livecarePoint5.tr(context: context).toText14(color: AppColors.greyTextColor, isBold: true), ], ), ), @@ -571,7 +893,7 @@ class _BookAppointmentPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.doctorWillContact.tr(context: context).toText18(color: AppColors.textColor, isBold: true), - LocaleKeys.specialisedDoctorWillContactYou.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.specialisedDoctorWillContactYou.tr(context: context).toText14(color: AppColors.greyTextColor, isBold: true), ], ), ), @@ -587,7 +909,7 @@ class _BookAppointmentPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.freeMedicineDelivery.tr(context: context).toText18(color: AppColors.textColor, isBold: true), - LocaleKeys.offersFreeMedicineDelivery.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.offersFreeMedicineDelivery.tr(context: context).toText14(color: AppColors.greyTextColor, isBold: true), ], ), ), @@ -595,7 +917,7 @@ class _BookAppointmentPageState extends State { ), SizedBox(height: 36.h), CustomButton( - text: "Login to use this service", + text: LocaleKeys.loginToUseServiceLiveCare.tr(), onPressed: () async { await authVM.onLoginPressed(); }, @@ -603,7 +925,7 @@ class _BookAppointmentPageState extends State { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12.r, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 50.h, @@ -615,52 +937,58 @@ class _BookAppointmentPageState extends State { ).paddingSymmetrical(24.h, 0.h); } - void showUnKnownClinicBottomSheet() { - showCommonBottomSheetWithoutHeight( - context, - title: "", - isDismissible: true, + void showUnKnownClinicBottomSheet() async { + if (await Utils.getBoolFromPrefs(CacheConst.isShowSymptomCheckerBottomSheet)) { + showCommonBottomSheetWithoutHeight( + context, + title: "", + isDismissible: true, isCloseButtonVisible: false, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.notSureHelpMeChooseClinic.tr(context: context).toText28(color: AppColors.textColor, isBold: true, height: 1.5), - SizedBox(height: 4.h), - LocaleKeys.mentionYourSymptomsAndFindDoctors.tr(context: context).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500,), - SizedBox(height: 24.h), - CustomButton( - text: LocaleKeys.yesPleaseINeedHelp.tr(context: context), - onPressed: () { - context.pop(); - context.navigateWithName(AppRoutes.userInfoSelection); - }, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - textColor: AppColors.whiteColor, - fontSize: 16.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 56.h, - ), - SizedBox(height: 8.h), - CustomButton( - text: LocaleKeys.noThanksIKnowTheClinic.tr(context: context), - onPressed: () { - context.pop(); - }, - backgroundColor: AppColors.chipSecondaryLightRedColor, - borderColor: AppColors.chipSecondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 16.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 56.h, - ), - ], - ).paddingSymmetrical(24.w, 20.h), - callBackFunc: () {}, - ); + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.notSureHelpMeChooseClinic.tr(context: context).toText28(color: AppColors.textColor, isBold: true, height: 1.5), + SizedBox(height: 4.h), + LocaleKeys.mentionYourSymptomsAndFindDoctors.tr(context: context).toText12( + color: AppColors.greyTextColor, + isBold: true, + ), + SizedBox(height: 24.h), + CustomButton( + text: LocaleKeys.yesPleaseINeedHelp.tr(context: context), + onPressed: () { + context.pop(); + context.navigateWithName(AppRoutes.userInfoSelection); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + fontSize: 16.f, + isBold: true, + borderRadius: 12.r, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 56.h, + ), + SizedBox(height: 8.h), + CustomButton( + text: LocaleKeys.noThanksIKnowTheClinic.tr(context: context), + onPressed: () { + Utils.saveBoolFromPrefs(CacheConst.isShowSymptomCheckerBottomSheet, false); + context.pop(); + }, + backgroundColor: AppColors.chipSecondaryLightRedColor, + borderColor: AppColors.chipSecondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: 16.f, + isBold: true, + borderRadius: 12.r, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 56.h, + ), + ], + ).paddingSymmetrical(24.w, 20.h), + callBackFunc: () {}, + ); + } } } diff --git a/lib/presentation/book_appointment/doctor_filter/doctors_filter.dart b/lib/presentation/book_appointment/doctor_filter/doctors_filter.dart index 9cfcc1f8..b6f8e02f 100644 --- a/lib/presentation/book_appointment/doctor_filter/doctors_filter.dart +++ b/lib/presentation/book_appointment/doctor_filter/doctors_filter.dart @@ -1,6 +1,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -59,8 +61,8 @@ class DoctorsFilters extends StatelessWidget{ Text( LocaleKeys.filters.tr(), style:TextStyle( - fontFamily: 'Poppins', - fontWeight: FontWeight.w600, + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', + fontWeight: FontWeight.w600, fontSize: 27.f, color: AppColors.textColor, letterSpacing: -1 @@ -69,8 +71,8 @@ class DoctorsFilters extends StatelessWidget{ Text( LocaleKeys.clearAllFilters.tr(), style:TextStyle( - fontFamily: 'Poppins', - fontWeight: FontWeight.w500, + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', + fontWeight: FontWeight.w600, fontSize: 14.f, color: AppColors.errorColor ) @@ -96,62 +98,90 @@ class DoctorsFilters extends StatelessWidget{ height: 42.h, child: FacilityChip()), titleWidget(LocaleKeys.hospital.tr()), - TextInputWidget( - controller: TextEditingController()..text =context.watch().selectedHospitalForFilters?.filterName??'', - labelText: LocaleKeys.hospital.tr(context: context), - hintText: LocaleKeys.searchHospital.tr(context: context), - isEnable: false, - prefix: null, - autoFocus: false, - isBorderAllowed: false, - keyboardType: TextInputType.text, - suffix:context.watch().selectedHospitalForFilters != null - ? GestureDetector( - onTap: () { - context.read().setSelectedHospital(null); - }, - child: Utils.buildSvgWithAssets(icon: AppAssets.ic_cross_circle, width: 24.h, height: 24.h, fit: BoxFit.scaleDown), - ) - : null, - onChange: (value) { - // DoctorFilterViewModel.filterClinics(value!); + Consumer( + builder: (context, viewModel, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextInputWidget( + controller: TextEditingController()..text = viewModel.selectedHospitalForFilters?.filterName ?? '', + labelText: LocaleKeys.hospital.tr(context: context), + hintText: LocaleKeys.searchHospital.tr(context: context), + isEnable: false, + prefix: null, + autoFocus: false, + isBorderAllowed: true, + keyboardType: TextInputType.text, + hasError: viewModel.hospitalError != null, + errorMessage: viewModel.hospitalError, + suffix: viewModel.selectedHospitalForFilters != null + ? GestureDetector( + onTap: () { + viewModel.setSelectedHospital(null); + }, + child: Utils.buildSvgWithAssets(icon: AppAssets.ic_cross_circle, width: 24.h, height: 24.h, fit: BoxFit.scaleDown), + ) + : null, + onChange: (value) { + // Clear error when field changes + viewModel.clearHospitalError(); + }, + padding: EdgeInsets.symmetric( + vertical: ResponsiveExtension(8).h, + horizontal: ResponsiveExtension(10).h, + ), + ).onPress(() { + // Clear error when opening bottom sheet + context.read().clearHospitalError(); + openRegionListBottomSheet(context, RegionBottomSheetType.FOR_REGION); + }), + ], + ); }, - padding: EdgeInsets.symmetric( - vertical: ResponsiveExtension(8).h, - horizontal: ResponsiveExtension(10).h, - ), - ).onPress((){ - openRegionListBottomSheet(context, RegionBottomSheetType.FOR_REGION); - }), + ), titleWidget(LocaleKeys.clinic.tr()), - TextInputWidget( - controller: TextEditingController()..text =context.watch().selectedClinicForFilters ??'', - labelText: LocaleKeys.clinicName.tr(context: context), - hintText: LocaleKeys.searchClinic.tr(), - isEnable: false, - prefix: null, - autoFocus: false, - isBorderAllowed: false, - keyboardType: TextInputType.text, - suffix:context.read().selectedClinicForFilters?.isNotEmpty == true - ? GestureDetector( - onTap: () { - context.read().setSelectedClinicForFilter(null); - }, - child: Utils.buildSvgWithAssets(icon: AppAssets.ic_cross_circle, width: 20.h, height: 20.h, fit: BoxFit.scaleDown), - ) - : null, - onChange: (value) { - // DoctorFilterViewModel.filterClinics(value!); + Consumer( + builder: (context, viewModel, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextInputWidget( + controller: TextEditingController()..text = viewModel.selectedClinicForFilters ?? '', + labelText: LocaleKeys.clinicName.tr(context: context), + hintText: LocaleKeys.searchClinic.tr(), + isEnable: false, + prefix: null, + autoFocus: false, + isBorderAllowed: true, + keyboardType: TextInputType.text, + hasError: viewModel.clinicError != null, + errorMessage: viewModel.clinicError, + suffix: viewModel.selectedClinicForFilters?.isNotEmpty == true + ? GestureDetector( + onTap: () { + viewModel.setSelectedClinicForFilter(null); + }, + child: Utils.buildSvgWithAssets(icon: AppAssets.ic_cross_circle, width: 20.h, height: 20.h, fit: BoxFit.scaleDown), + ) + : null, + onChange: (value) { + // Clear error when field changes + viewModel.clearClinicError(); + }, + padding: EdgeInsets.symmetric( + vertical: 8.h, + horizontal: 10.h, + ), + ).onPress(() { + // Clear error when opening bottom sheet + context.read().clearClinicError(); + openClinicListBottomSheet(context); + }), + ], + ); }, - padding: EdgeInsets.symmetric( - vertical: 8.h, - horizontal: 10.h, - ), - ).onPress((){ - openClinicListBottomSheet(context,); - }), + ), ], @@ -181,7 +211,7 @@ class DoctorsFilters extends StatelessWidget{ textColor: Colors.white, fontSize: 16.f, padding: EdgeInsets.zero, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 10.r, icon: AppAssets.add_icon, iconColor: AppColors.primaryRedColor, @@ -199,7 +229,7 @@ class DoctorsFilters extends StatelessWidget{ Text( title, style:TextStyle( - fontFamily: 'Poppins', + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', fontWeight: FontWeight.w600, fontSize: 16.f, color: AppColors.textColor, diff --git a/lib/presentation/book_appointment/doctor_profile_page.dart b/lib/presentation/book_appointment/doctor_profile_page.dart index 549b8b0d..6be110ec 100644 --- a/lib/presentation/book_appointment/doctor_profile_page.dart +++ b/lib/presentation/book_appointment/doctor_profile_page.dart @@ -1,4 +1,3 @@ - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -9,11 +8,14 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/widgets/appointment_calendar.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/widgets/doctor_rating_details.dart'; -import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/presentation/book_appointment/widgets/doctor_schedule_page.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; @@ -21,58 +23,98 @@ import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:provider/provider.dart'; class DoctorProfilePage extends StatelessWidget { - DoctorProfilePage({super.key}); + const DoctorProfilePage({super.key, required this.isDoctorAllowedToBook}); - late AppState appState; - late BookAppointmentsViewModel bookAppointmentsViewModel; + final bool isDoctorAllowedToBook; @override Widget build(BuildContext context) { - bookAppointmentsViewModel = Provider.of(context, listen: false); - appState = getIt.get(); + final bookAppointmentsViewModel = Provider.of(context, listen: false); + final appState = getIt.get(); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: Column( children: [ Expanded( child: CollapsingListView( - title: LocaleKeys.doctorProfile.tr(), + title: LocaleKeys.profileOnlyText.tr(), + trailing: appState.isAuthenticated + ? Consumer( + builder: (context, viewModel, child) { + return SizedBox( + width: 24.h, + height: 24.h, + child: Icon( + viewModel.isFavouriteDoctor ? Icons.bookmark : Icons.bookmark_border_outlined, + size: 36.h, + color: viewModel.isFavouriteDoctor ? AppColors.primaryRedColor : AppColors.textColor, + ).onPress(() async { + viewModel.toggleFavouriteDoctor(); + await viewModel.insertFavouriteDoctor( + patientID: appState.getAuthenticatedUser()!.patientId!, + projectID: viewModel.doctorsProfileResponseModel.projectID ?? 0, + clinicID: viewModel.doctorsProfileResponseModel.clinicID ?? 0, + doctorID: viewModel.doctorsProfileResponseModel.doctorID ?? 0, + isActive: viewModel.isFavouriteDoctor, + onSuccess: (response) { + Utils.showToast(viewModel.isFavouriteDoctor + ? LocaleKeys.doctorAddedToFavourite.tr(context: context) + : LocaleKeys.doctorRemovedFromFavourite.tr(context: context)); + // Successfully added/removed favorite - refresh the favorites list + getIt.get().refreshFavouriteDoctors(); + }, + onError: (error) { + // Revert the state on error + viewModel.toggleFavouriteDoctor(); + Utils.showToast(error); + }, + ); + }), + ); + }, + ) + : SizedBox.shrink(), child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - // SizedBox(height: 24.h), + isFoldable ? SizedBox(height: 24.h) : SizedBox.shrink(), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.network( - bookAppointmentsViewModel.doctorsProfileResponseModel.doctorImageURL!, + Utils.buildImgWithNetwork( + url: bookAppointmentsViewModel.doctorsProfileResponseModel.doctorImageURL!, + iconColor: AppColors.transparent, width: 63.h, height: 63.h, fit: BoxFit.cover, - ).circle(100), + ).circle(100.r), SizedBox(width: 8.h), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( - width: 220.h, - child: ("${bookAppointmentsViewModel.doctorsProfileResponseModel.doctorTitleForProfile} ${bookAppointmentsViewModel.doctorsProfileResponseModel.doctorName}") - .toString() - .toText24(isBold: true), + width: isFoldable ? 250.w : 220.w, + child: + ("${bookAppointmentsViewModel.doctorsProfileResponseModel.doctorTitleForProfile} ${bookAppointmentsViewModel.doctorsProfileResponseModel.doctorName}") + .toString() + .toText24(isBold: true), ), - (bookAppointmentsViewModel.doctorsProfileResponseModel.specialty!.isNotEmpty ? bookAppointmentsViewModel.doctorsProfileResponseModel.specialty!.first : "") + (bookAppointmentsViewModel.doctorsProfileResponseModel.specialty!.isNotEmpty + ? bookAppointmentsViewModel.doctorsProfileResponseModel.specialty!.first + : "") .toString() - .toText18(weight: FontWeight.w500, color: AppColors.primaryRedColor), + .toText18(isBold: true, color: AppColors.primaryRedColor), ], ), ], ), - Image.network( - bookAppointmentsViewModel.doctorsProfileResponseModel.nationalityFlagURL!, + Utils.buildImgWithNetwork( + url: bookAppointmentsViewModel.doctorsProfileResponseModel.nationalityFlagURL!, + iconColor: AppColors.transparent, width: 32.h, height: 32.h, fit: BoxFit.cover, @@ -86,10 +128,12 @@ class DoctorProfilePage extends StatelessWidget { runSpacing: 4.h, children: [ AppCustomChipWidget( + backgroundColor: AppColors.whiteColor, iconColor: AppColors.ratingColorYellow, labelText: "${bookAppointmentsViewModel.doctorsProfileResponseModel.projectName}", ), AppCustomChipWidget( + backgroundColor: AppColors.whiteColor, iconColor: AppColors.ratingColorYellow, labelText: "${bookAppointmentsViewModel.doctorsProfileResponseModel.clinicDescription}", ), @@ -102,17 +146,15 @@ class DoctorProfilePage extends StatelessWidget { Column( children: [ Utils.buildSvgWithAssets( - icon: AppAssets.doctor_profile_rating_icon, - width: 48.w, - height: 48.h, - fit: BoxFit.contain, - applyThemeColor: false - ), + icon: AppAssets.doctor_profile_rating_icon, width: 48.w, height: 48.h, fit: BoxFit.contain, applyThemeColor: false), SizedBox(height: 16.h), - "Ratings".toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - bookAppointmentsViewModel.doctorsProfileResponseModel.decimalDoctorRate - .toString() - .toText16(isBold: true, color: AppColors.textColor, isUnderLine: true, decorationColor: AppColors.textColor), + LocaleKeys.ratings.tr(context: context).toText12(isBold: true, color: AppColors.greyTextColor), + bookAppointmentsViewModel.doctorsProfileResponseModel.decimalDoctorRate.toString().toText16( + isBold: true, + color: AppColors.textColor, + isUnderLine: true, + decorationColor: AppColors.textColor, + fontFamily: "Poppins"), ], ).onPress(() { bookAppointmentsViewModel.getDoctorRatingDetails(); @@ -129,17 +171,17 @@ class DoctorProfilePage extends StatelessWidget { Column( children: [ Utils.buildSvgWithAssets( - icon: AppAssets.doctor_profile_reviews_icon, - width: 48.w, - height: 48.h, - fit: BoxFit.contain, - applyThemeColor: false - ), + icon: AppAssets.doctor_profile_reviews_icon, width: 48.w, height: 48.h, fit: BoxFit.contain, applyThemeColor: false), SizedBox(height: 16.h), - "Reviews".toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - bookAppointmentsViewModel.doctorsProfileResponseModel.noOfPatientsRate - .toString() - .toText16(isBold: true, color: AppColors.textColor, isUnderLine: true, decorationColor: AppColors.textColor), + LocaleKeys.reviews.tr(context: context).toText12(isBold: true, color: AppColors.greyTextColor), + NumberFormat.decimalPattern("en_US") + .format(bookAppointmentsViewModel.doctorsProfileResponseModel.noOfPatientsRate ?? 0) + .toText16( + isBold: true, + color: AppColors.textColor, + isUnderLine: true, + decorationColor: AppColors.textColor, + fontFamily: "Poppins"), ], ).onPress(() { bookAppointmentsViewModel.getDoctorRatingDetails(); @@ -152,96 +194,188 @@ class DoctorProfilePage extends StatelessWidget { isCloseButtonVisible: true, ); }), + SizedBox(width: 36.w), + Column( + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.doctor_profile_schedule_icon, width: 48.w, height: 48.h, fit: BoxFit.contain, applyThemeColor: false), + SizedBox(height: 16.h), + LocaleKeys.schedule.tr(context: context).toText12(isBold: true, color: AppColors.greyTextColor), + LocaleKeys.view.tr(context: context).toText16(isBold: true, color: AppColors.textColor, isUnderLine: true, decorationColor: AppColors.textColor, fontFamily: "Poppins"), + ], + ).onPress(() { + _openDoctorSchedule(context); + }) ], ), SizedBox(height: 16.h), Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), SizedBox(height: 16.h), - LocaleKeys.docInfo.tr(context: context).toText14(weight: FontWeight.w600, color: AppColors.textColor), + LocaleKeys.information.tr(context: context).toText14(isBold: true, color: AppColors.textColor), SizedBox(height: 6.h), - bookAppointmentsViewModel.doctorsProfileResponseModel.doctorProfileInfo!.toText12(fontWeight: FontWeight.w600, color: AppColors.greyTextColor), + (bookAppointmentsViewModel.doctorsProfileResponseModel.doctorProfileInfo ?? "") + .trim() + .toText12(isBold: true, color: AppColors.greyTextColor), + SizedBox(height: 24.h), ], ).paddingSymmetrical(24.h, 0.h), ), ), ), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.h, - hasShadow: true, - ), - child: CustomButton( - text: LocaleKeys.viewAvailableAppointments.tr(), - onPressed: () async { - bookAppointmentsViewModel.selectedDoctor.speciality = bookAppointmentsViewModel.doctorsProfileResponseModel.specialty; - bookAppointmentsViewModel.selectedDoctor.specialityN = bookAppointmentsViewModel.doctorsProfileResponseModel.specialty; - bookAppointmentsViewModel.selectedDoctor.name = bookAppointmentsViewModel.doctorsProfileResponseModel.doctorName; - bookAppointmentsViewModel.selectedDoctor.name = bookAppointmentsViewModel.doctorsProfileResponseModel.doctorName; - LoaderBottomSheet.showLoader(); - bookAppointmentsViewModel.isLiveCareSchedule - ? await bookAppointmentsViewModel.getLiveCareDoctorFreeSlots( - isBookingForLiveCare: true, - onSuccess: (dynamic respData) async { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - title: LocaleKeys.pickADate.tr(), - context, - child: AppointmentCalendar(), - isFullScreen: false, - isCloseButtonVisible: true, - callBackFunc: () {}, - ); - }, - onError: (err) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: err), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }) - : await bookAppointmentsViewModel.getDoctorFreeSlots( - isBookingForLiveCare: false, - onSuccess: (dynamic respData) async { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - title: LocaleKeys.pickADate.tr(), - context, - child: AppointmentCalendar(), - isFullScreen: false, - isCloseButtonVisible: true, - callBackFunc: () {}, - ); - }, - onError: (err) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: err), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }); - }, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - textColor: Colors.white, - fontSize: 16, - fontWeight: FontWeight.w500, - borderRadius: 12, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 50.h, - icon: AppAssets.calendar, - iconColor: Colors.white, - iconSize: 20.h, - ).paddingSymmetrical(24.h, 24.h), - ), + isDoctorAllowedToBook + ? Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: true, + ), + child: CustomButton( + text: LocaleKeys.viewAvailableAppointments.tr(), + onPressed: () async { + bookAppointmentsViewModel.selectedDoctor.speciality = bookAppointmentsViewModel.doctorsProfileResponseModel.specialty; + bookAppointmentsViewModel.selectedDoctor.specialityN = bookAppointmentsViewModel.doctorsProfileResponseModel.specialty; + bookAppointmentsViewModel.selectedDoctor.name = bookAppointmentsViewModel.doctorsProfileResponseModel.doctorName; + bookAppointmentsViewModel.selectedDoctor.doctorImageURL = bookAppointmentsViewModel.doctorsProfileResponseModel.doctorImageURL; + bookAppointmentsViewModel.selectedDoctor.nationalityFlagURL = + bookAppointmentsViewModel.doctorsProfileResponseModel.nationalityFlagURL; + bookAppointmentsViewModel.selectedDoctor.clinicName = bookAppointmentsViewModel.doctorsProfileResponseModel.clinicDescription; + bookAppointmentsViewModel.selectedDoctor.projectName = bookAppointmentsViewModel.doctorsProfileResponseModel.projectName; + + LoaderBottomSheet.showLoader(); + bookAppointmentsViewModel.isLiveCareSchedule + ? await bookAppointmentsViewModel.getLiveCareDoctorFreeSlots( + isBookingForLiveCare: true, + onSuccess: (dynamic respData) async { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.pickADate.tr(), + context, + child: AppointmentCalendar(), + isFullScreen: false, + isCloseButtonVisible: true, + callBackFunc: () {}, + ); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }) + : await bookAppointmentsViewModel.getDoctorFreeSlots( + isBookingForLiveCare: false, + onSuccess: (dynamic respData) async { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.pickADate.tr(), + context, + child: AppointmentCalendar(), + isFullScreen: false, + isCloseButtonVisible: true, + callBackFunc: () {}, + ); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: Colors.white, + fontSize: 16, + isBold: true, + borderRadius: 12, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 50.h, + icon: AppAssets.calendar, + iconColor: Colors.white, + iconSize: 20.h, + ).paddingSymmetrical(24.h, 24.h), + ) + : SizedBox.shrink(), ], ), ); } + + // Guard against double-tap opening two bottom sheets simultaneously + static bool _scheduleInFlight = false; + + void _openDoctorSchedule(BuildContext context) async { + if (_scheduleInFlight) return; + _scheduleInFlight = true; + + final bookAppointmentsViewModel = Provider.of(context, listen: false); + + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingDoctorSchedulePleaseWait.tr(context: context)); + + // Yield to the frame scheduler so the loader is fully painted + // before the API calls start (prevents the "loader appears late" glitch). + await Future.delayed(Duration.zero); + + if (bookAppointmentsViewModel.freeSlotsResponse == null || bookAppointmentsViewModel.freeSlotsResponse.isEmpty) { + await bookAppointmentsViewModel.getDoctorFreeSlots( + isBookingForLiveCare: false, + onSuccess: (dynamic respData) async { + await _fetchDoctorSchedule(context, bookAppointmentsViewModel); + }, + onError: (err) { + _scheduleInFlight = false; + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: true, + isCloseButtonVisible: true, + ); + }, + ); + } else { + await _fetchDoctorSchedule(context, bookAppointmentsViewModel); + } + } + + Future _fetchDoctorSchedule(BuildContext context, BookAppointmentsViewModel bookAppointmentsViewModel) async { + await bookAppointmentsViewModel.getDoctorSchedule( + doctorID: bookAppointmentsViewModel.selectedDoctor.doctorID!, + projectID: bookAppointmentsViewModel.selectedDoctor.projectID!, + clinicID: bookAppointmentsViewModel.selectedDoctor.clinicID!, + doctorWorkingHoursDays: 90, + onSuccess: (dynamic respData) async { + _scheduleInFlight = false; + LoaderBottomSheet.hideLoader(); + if (context.mounted) { + await Navigator.of(context).push( + CustomPageRoute( + page: const DoctorSchedulePage(), + fullScreenDialog: true, + direction: AxisDirection.down, + ), + ); + } + }, + onError: (err) { + _scheduleInFlight = false; + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + ); + } } diff --git a/lib/presentation/book_appointment/laser/laser_appointment.dart b/lib/presentation/book_appointment/laser/laser_appointment.dart index 3b94b0ec..c8773933 100644 --- a/lib/presentation/book_appointment/laser/laser_appointment.dart +++ b/lib/presentation/book_appointment/laser/laser_appointment.dart @@ -84,7 +84,7 @@ class LaserAppointment extends StatelessWidget { activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), tabs: [ CustomTabBarModel(null, LocaleKeys.malE.tr()), - CustomTabBarModel(null, "Female"), + CustomTabBarModel(null, LocaleKeys.femaleGender.tr()), ], onTabChange: (index) { var viewmodel = context.read(); @@ -93,6 +93,7 @@ class LaserAppointment extends StatelessWidget { viewmodel.getLaserClinic(); }, ), + SizedBox(height: 8.h), Selector( selector: (_, vm) => vm.selectedBodyTypeIndex, builder: (_, bodyType, __) { @@ -110,6 +111,7 @@ class LaserAppointment extends StatelessWidget { }); }, ), + SizedBox(height: 8.h), Selector>(selector: (_, vm) => vm.laserBodyPartsList, builder:(_, parts,__){ return BodyPartsListing( parts: parts, diff --git a/lib/presentation/book_appointment/laser/widgets/body_part_listing.dart b/lib/presentation/book_appointment/laser/widgets/body_part_listing.dart index c9578682..51d964eb 100644 --- a/lib/presentation/book_appointment/laser/widgets/body_part_listing.dart +++ b/lib/presentation/book_appointment/laser/widgets/body_part_listing.dart @@ -1,11 +1,17 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/laser_body_parts_data.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/laser_body_parts.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:provider/provider.dart'; +import 'package:smooth_corner/smooth_corner.dart'; class BodyPartsListing extends StatelessWidget { final List parts; @@ -46,11 +52,7 @@ class BodyPartsListing extends StatelessWidget { Visibility( visible: !isLoading, child: GridView.builder( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 3, - childAspectRatio: 85 / 107, - crossAxisSpacing: 4.h, - mainAxisSpacing: 21.h), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 75 / 107, crossAxisSpacing: 4.h, mainAxisSpacing: 21.h), physics: NeverScrollableScrollPhysics(), shrinkWrap: true, itemCount: parts.length, @@ -70,7 +72,7 @@ class BodyPartsListing extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ AspectRatio( - aspectRatio: 97 / 97, + aspectRatio: 150 / 140, child: FittedBox( fit: BoxFit.fitWidth, child: Stack( @@ -93,12 +95,12 @@ class BodyPartsListing extends StatelessWidget { Container( width: 18.h, height: 18.h, - child: Icon(Icons.done, - color: Colors.white, size: 12.h), decoration: BoxDecoration( color: AppColors.primaryRedColor, borderRadius: BorderRadius.circular(30.h), ), + child: Icon(Icons.done, + color: Colors.white, size: 12.h), ), ], ), @@ -106,17 +108,46 @@ class BodyPartsListing extends StatelessWidget { ), SizedBox(height: 6.h), Expanded( - child: Text( - context - .read() - .getLaserProcedureNameWRTLanguage(parts[index]), - style: TextStyle( - fontSize: 12.f, - fontWeight: FontWeight.w600, - color: Color(0xff2B353E), - letterSpacing: -0.48, + child: Center( + child: Column( + children: [ + context.read().getLaserProcedureNameWRTLanguage(parts[index]).toText12(isBold: true, color: AppColors.textColor, isCenter: true, maxLine: 1), + SizedBox(height: 4.h), + AppCustomChipWidget( + backgroundColor: _isSelected ? AppColors.chipSecondaryLightRedColor : AppColors.whiteColor, + textColor: _isSelected ? AppColors.chipPrimaryRedBorderColor : AppColors.blackColor, + // labelText: "${parts[index].timeDuration!} ${LocaleKeys.mins.tr()}", + richText: "${parts[index].timeDuration!} ${LocaleKeys.mins.tr()}".toText12( + isBold: true, + color: _isSelected ? AppColors.chipPrimaryRedBorderColor : AppColors.blackColor, + ), + icon: AppAssets.waiting_time_clock, + iconHasColor: true, + iconColor: _isSelected ? AppColors.chipPrimaryRedBorderColor : AppColors.blackColor, + iconSize: 16, + labelPadding: EdgeInsetsDirectional.only(start: 8.w, end: 8.w), + padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 8.w), + deleteIconSize: Size(18.w, 18.h), + shape: SmoothRectangleBorder( + borderRadius: BorderRadius.circular(10.r), + smoothness: 10, + side: BorderSide(color: _isSelected ? AppColors.chipPrimaryRedBorderColor : AppColors.borderGrayColor, width: 1), + )), + + // AppCustomChipWidget( + // labelText: "${parts[index].timeDuration!} ${LocaleKeys.mins.tr()}", + // backgroundColor: AppColors.whiteColor, + // // textColor: Utils.getCardBorderColor(myAppointmentsVM.currentQueueStatus), + // ), + // Row( + // mainAxisAlignment: MainAxisAlignment.center, + // children: [ + // "${LocaleKeys.mins.tr()}: ".toText12(isBold: true, color: AppColors.textColor, isCenter: true, maxLine: 2), + // parts[index].timeDuration!.toText12(isBold: true, color: AppColors.textColor, isCenter: true, maxLine: 2), + // ], + // ), + ], ), - maxLines: 1, ), ), ], diff --git a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart index 7c2784de..57fd5e94 100644 --- a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart +++ b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_details.dart @@ -7,6 +7,7 @@ import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/int_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; @@ -65,8 +66,8 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { padding: EdgeInsets.all(16.h), child: Row( children: [ - Image.asset( - appState.getAuthenticatedUser()?.gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, + Utils.buildImgWithAssets( + icon: appState.getAuthenticatedUser()?.gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, width: 52.h, height: 52.h, ), @@ -74,17 +75,25 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}".toText16(isBold: true), + "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}" + .toText16(isBold: true, isEnglishOnly: true), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, spacing: 3.h, runSpacing: 4.h, children: [ - AppCustomChipWidget(labelText: "${appState.getAuthenticatedUser()!.age} ${LocaleKeys.yearsOld.tr(context: context)}"), + AppCustomChipWidget( + richText: Row( + children: [ + "${appState.getAuthenticatedUser()!.age} ".toText10(color: AppColors.blackColor, isBold: true), + LocaleKeys.yearsOld.tr(context: context).toText10(color: AppColors.blackColor, isBold: true), + ], + ), + ), AppCustomChipWidget( labelText: - "${LocaleKeys.clinic.tr()}: ${(appState.isArabic() ? immediateLiveCareVM.immediateLiveCareSelectedClinic.serviceNameN : immediateLiveCareVM.immediateLiveCareSelectedClinic.serviceName) ?? ""}"), + "${LocaleKeys.gender.tr(context: context)}: ${appState.getAuthenticatedUser()?.gender == 1 ? LocaleKeys.malE.tr(context: context) : LocaleKeys.femaleGender.tr(context: context)}"), ], ), ], @@ -105,22 +114,39 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { ), child: Padding( padding: EdgeInsets.all(16.h), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ + AppCustomChipWidget( + labelText: + "${LocaleKeys.clinic.tr()}: ${(appState.isArabic() ? immediateLiveCareVM.immediateLiveCareSelectedClinic.serviceNameN : immediateLiveCareVM.immediateLiveCareSelectedClinic.serviceName) ?? ""}"), + SizedBox(height: 16.h), + 1.divider, + SizedBox(height: 16.h), Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Utils.buildSvgWithAssets(icon: getLiveCareTypeIcon(immediateLiveCareVM.liveCareSelectedCallType), width: 32.h, height: 32.h, fit: BoxFit.contain, applyThemeColor: false), - SizedBox(width: 8.h), - getLiveCareType(context, immediateLiveCareVM.liveCareSelectedCallType).toText16(isBold: true), + Row( + children: [ + Utils.buildSvgWithAssets( + icon: getLiveCareTypeIcon(immediateLiveCareVM.liveCareSelectedCallType), + width: 32.h, + height: 32.h, + fit: BoxFit.contain, + applyThemeColor: false), + SizedBox(width: 8.h), + getLiveCareType(context, immediateLiveCareVM.liveCareSelectedCallType).toText16(isBold: true), + ], + ), + Utils.buildSvgWithAssets(icon: AppAssets.edit_icon, width: 24.h, height: 24.h, fit: BoxFit.contain), ], ), - Utils.buildSvgWithAssets(icon: AppAssets.edit_icon, width: 24.h, height: 24.h, fit: BoxFit.contain), ], ), ), ).onPress(() { - showCommonBottomSheetWithoutHeight(context, child: SelectLiveCareCallType(immediateLiveCareViewModel: immediateLiveCareVM), callBackFunc: () async { + showCommonBottomSheetWithoutHeight(context, child: SelectLiveCareCallType(immediateLiveCareViewModel: immediateLiveCareVM), + callBackFunc: () async { debugPrint("Selected Call Type: ${immediateLiveCareVM.liveCareSelectedCallType}"); }, title: LocaleKeys.selectLiveCareCallType.tr(context: context), isCloseButtonVisible: true, isFullScreen: false); }); @@ -153,21 +179,77 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - LocaleKeys.insuranceExpiredOrInactive.tr(context: context).toText14(color: AppColors.primaryRedColor, weight: FontWeight.w500).paddingSymmetrical(24.h, 0.h), + LocaleKeys.insuranceExpiredOrInactive + .tr(context: context) + .toText14(color: AppColors.primaryRedColor, isBold: true) + .paddingSymmetrical(24.h, 0.h), CustomButton( text: LocaleKeys.updateInsurance.tr(context: context), onPressed: () { - Navigator.of(context).push( - CustomPageRoute( - page: InsuranceHomePage(), - ), + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.livecareUpdateInsurance.tr(), + isShowActionButtons: true, + onCancelTap: () { + Navigator.pop(context); + }, + onConfirmTap: () async { + Navigator.pop(context); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr()); + await immediateLiveCareVM.addInsuranceUpdateRequestForLiveCare(onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getSuccessWidget(loadingText: LocaleKeys.livecareUpdateInsuranceSent.tr()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, ); + + // Navigator.of(context) + // .push( + // CustomPageRoute( + // page: InsuranceHomePage(), + // ), + // ) + // .then((val) async { + // LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingFeesPleaseWait.tr()); + // await immediateLiveCareVM.getLiveCareImmediateAppointmentFees(onSuccess: (val) { + // LoaderBottomSheet.hideLoader(); + // }, onError: (err) { + // LoaderBottomSheet.hideLoader(); + // showCommonBottomSheetWithoutHeight( + // context, + // child: Utils.getErrorWidget(loadingText: err), + // callBackFunc: () {}, + // isFullScreen: false, + // isCloseButtonVisible: true, + // ); + // }); + // }); }, backgroundColor: AppColors.primaryRedColor, borderColor: AppColors.secondaryLightRedBorderColor, textColor: AppColors.whiteColor, fontSize: 10, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 8, padding: EdgeInsets.fromLTRB(15, 0, 15, 0), height: 30.h, @@ -183,9 +265,12 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ LocaleKeys.amountBeforeTax.tr(context: context).toText14(isBold: true), - Utils.getPaymentAmountWithSymbol(immediateLiveCareVM.liveCareImmediateAppointmentFeesList.amount!.toText16(isBold: true), AppColors.blackColor, 13, - isSaudiCurrency: immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar" || - immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "ريال"), + Utils.getPaymentAmountWithSymbol( + (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.amount ?? "").toText16(isBold: true, isEnglishOnly: true), + AppColors.blackColor, + 13, + isSaudiCurrency: (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency ?? "sar").toLowerCase() == "sar" || + (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency ?? "ريال").toLowerCase() == "ريال"), ], ).paddingSymmetrical(24.h, 0.h), Row( @@ -193,22 +278,30 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { children: [ LocaleKeys.vat15.tr(context: context).toText14(isBold: true, color: AppColors.greyTextColor), Utils.getPaymentAmountWithSymbol( - immediateLiveCareVM.liveCareImmediateAppointmentFeesList.tax!.toText14(isBold: true, color: AppColors.greyTextColor), AppColors.greyTextColor, 13, - isSaudiCurrency: (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar" || - immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "ريال")), + (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.tax ?? "0.0") + .toText14(isBold: true, color: AppColors.greyTextColor, isEnglishOnly: true), + AppColors.greyTextColor, + 13, + isSaudiCurrency: ((immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency ?? "sar").toLowerCase() == "sar" || + (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency ?? "ريال").toLowerCase() == "ريال")), ], ).paddingSymmetrical(24.h, 0.h), SizedBox(height: 17.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - SizedBox(width: 150.h, child: Utils.getPaymentMethods()), - Utils.getPaymentAmountWithSymbol(immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total!.toText24(isBold: true), AppColors.blackColor, 17, - isSaudiCurrency: (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "sar" || - immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency!.toLowerCase() == "ريال")), + Utils.getPaymentMethods(), + Utils.getPaymentAmountWithSymbol( + (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total ?? "0.0").toText24(isBold: true, isEnglishOnly: true), + AppColors.blackColor, + 17, + isSaudiCurrency: ((immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency ?? "sar").toLowerCase() == "sar" || + (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.currency ?? "ريال").toLowerCase() == "ريال")), ], ).paddingSymmetrical(24.h, 0.h), - (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total == "0" || immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total == "0.0") + (immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total == "0" || + immediateLiveCareVM.liveCareImmediateAppointmentFeesList.total == "0.0") + // (true) ? CustomButton( text: LocaleKeys.confirmLiveCare.tr(context: context), onPressed: () async { @@ -216,7 +309,8 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { if (val) { LoaderBottomSheet.showLoader(loadingText: LocaleKeys.confirmingLiveCareRequest.tr(context: context)); - await immediateLiveCareVM.addNewCallRequestForImmediateLiveCare("${appState.getAuthenticatedUser()!.patientId}${DateTime.now().millisecondsSinceEpoch}"); + await immediateLiveCareVM.addNewCallRequestForImmediateLiveCare( + "${appState.getAuthenticatedUser()!.patientId}${DateTime.now().millisecondsSinceEpoch}"); await immediateLiveCareVM.getPatientLiveCareHistory(); LoaderBottomSheet.hideLoader(); if (immediateLiveCareVM.patientHasPendingLiveCareRequest) { @@ -264,7 +358,7 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { borderColor: AppColors.successColor, textColor: AppColors.whiteColor, fontSize: 16, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 50.h, @@ -307,7 +401,7 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { borderColor: AppColors.infoColor, textColor: AppColors.whiteColor, fontSize: 16, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 50.h, @@ -325,52 +419,57 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { } Future askVideoCallPermission(BuildContext context) async { - final statuses = await LiveCarePermissionService.instance.requestCameraMicAndNotification(context); + final statuses = await LiveCarePermissionService.instance.requestCameraMicAndNotification(false, context); // If service returned nothing (error), treat as not granted if (statuses.isEmpty) return false; - bool cameraGranted = statuses[Permission.camera]?.isGranted ?? false; - bool micGranted = statuses[Permission.microphone]?.isGranted ?? false; + // bool cameraGranted = statuses[Permission.camera]?.isGranted ?? false; + // bool micGranted = statuses[Permission.microphone]?.isGranted ?? false; bool notifGranted = statuses[Permission.notification]?.isGranted ?? false; + // bool alertWindowGranted = Platform.isAndroid ? (statuses[Permission.systemAlertWindow]?.isGranted ?? false) : true; + bool alertWindowGranted = true; // If all required permissions are already granted - if (cameraGranted && micGranted && notifGranted) return true; + // if (cameraGranted && micGranted && notifGranted && alertWindowGranted) return true; + if (notifGranted && alertWindowGranted) return true; // Collect only the missing permissions final missing = []; - if (!cameraGranted) missing.add(Permission.camera); - if (!micGranted) missing.add(Permission.microphone); + // if (!cameraGranted) missing.add(Permission.camera); + // if (!micGranted) missing.add(Permission.microphone); if (!notifGranted) missing.add(Permission.notification); + if (Platform.isAndroid && !alertWindowGranted) missing.add(Permission.systemAlertWindow); // If any of the missing permissions are permanently denied/restricted -> open settings (single dialog) final permanent = missing.where((p) => (statuses[p]?.isPermanentlyDenied ?? false) || (statuses[p]?.isRestricted ?? false)).toList(); if (permanent.isNotEmpty) { final names = permanent.map((p) => LiveCarePermissionService.instance.friendlyName(p)).join(' and '); - final message = permanent.length == 1 ? '$names permission is permanently denied. Open app settings to allow it.' : '$names permissions are permanently denied. Open app settings to allow them.'; + // final message = permanent.length == 1 ? '$names permission is permanently denied. Open app settings to allow it.' : '$names permissions are permanently denied. Open app settings to allow them.'; + final message = LocaleKeys.liveCareNotificationPermissionsMessage.tr(); await LiveCarePermissionService.instance.showOpenSettingsDialog( context, - title: "Permissions Required", + title: LocaleKeys.permissionsProfile.tr(), message: message, ); return false; } // Show one combined retry dialog for all missing permissions - final missingNames = missing.map((p) => LiveCarePermissionService.instance.friendlyName(p)).join(' and '); - final retry = await showDialog( - context: context, - builder: (c) => AlertDialog( - title: const Text('Permissions required'), - content: Text('$missingNames permission${missing.length > 1 ? 's are' : ' is'} required to start the video call. Retry now?'), - actions: [ - TextButton(onPressed: () => Navigator.of(c).pop(false), child: const Text('Cancel')), - TextButton(onPressed: () => Navigator.of(c).pop(true), child: const Text('Retry')), - ], - ), - ); - - if (retry != true) return false; + // final missingNames = missing.map((p) => LiveCarePermissionService.instance.friendlyName(p)).join(' and '); + // final retry = await showDialog( + // context: context, + // builder: (c) => AlertDialog( + // title: const Text('Permissions required'), + // content: Text('$missingNames permission${missing.length > 1 ? 's are' : ' is'} required to start the video call. Retry now?'), + // actions: [ + // TextButton(onPressed: () => Navigator.of(c).pop(false), child: const Text('Cancel')), + // TextButton(onPressed: () => Navigator.of(c).pop(true), child: const Text('Retry')), + // ], + // ), + // ); + // + // if (retry != true) return false; // Request only the missing permissions final newStatuses = {}; @@ -379,16 +478,19 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { } // Update grant state (preserve previously granted ones) - cameraGranted = newStatuses[Permission.camera]?.isGranted ?? cameraGranted; - micGranted = newStatuses[Permission.microphone]?.isGranted ?? micGranted; + // cameraGranted = newStatuses[Permission.camera]?.isGranted ?? cameraGranted; + // micGranted = newStatuses[Permission.microphone]?.isGranted ?? micGranted; notifGranted = newStatuses[Permission.notification]?.isGranted ?? notifGranted; + // alertWindowGranted = newStatuses[Permission.systemAlertWindow]?.isGranted ?? alertWindowGranted; + alertWindowGranted = true; // If any requested permission is now permanently denied -> open settings final newlyPermanent = missing.where((p) => (newStatuses[p]?.isPermanentlyDenied ?? false) || (newStatuses[p]?.isRestricted ?? false)).toList(); if (newlyPermanent.isNotEmpty) { final names = newlyPermanent.map((p) => LiveCarePermissionService.instance.friendlyName(p)).join(' and '); - final message = - newlyPermanent.length == 1 ? '$names permission is permanently denied. Open app settings to allow it.' : '$names permissions are permanently denied. Open app settings to allow them.'; + final message = newlyPermanent.length == 1 + ? '$names permission is permanently denied. Open app settings to allow it.' + : '$names permissions are permanently denied. Open app settings to allow them.'; await LiveCarePermissionService.instance.showOpenSettingsDialog( context, title: "Permissions Required", @@ -397,7 +499,9 @@ class ImmediateLiveCarePaymentDetails extends StatelessWidget { return false; } - return cameraGranted && micGranted && notifGranted; + // return cameraGranted && micGranted && notifGranted && alertWindowGranted; + // return cameraGranted && micGranted && notifGranted; + return notifGranted; } // Future askVideoCallPermission() async { diff --git a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_page.dart b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_page.dart index 4018b42a..ef21ccbd 100644 --- a/lib/presentation/book_appointment/livecare/immediate_livecare_payment_page.dart +++ b/lib/presentation/book_appointment/livecare/immediate_livecare_payment_page.dart @@ -19,6 +19,8 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/payfort/payfort_view_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/models/paytabs_transaction_response_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/paytabs_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/livecare/immediate_livecare_pending_request_page.dart'; import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; @@ -45,6 +47,7 @@ class _ImmediateLiveCarePaymentPageState extends State= myAppointmentsViewModel.getTamaraInstallmentsDetailsResponseModel!.minLimit!.amount! && - num.parse(immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.total!) <= myAppointmentsViewModel.getTamaraInstallmentsDetailsResponseModel!.maxLimit!.amount!) { - setState(() { - isShowTamara = true; - }); + if (myAppointmentsViewModel.getTamaraInstallmentsDetailsResponseModel != null) { + if (num.parse(immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.total!) >= myAppointmentsViewModel.getTamaraInstallmentsDetailsResponseModel!.minLimit!.amount! && + num.parse(immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.total!) <= myAppointmentsViewModel.getTamaraInstallmentsDetailsResponseModel!.maxLimit!.amount!) { + setState(() { + isShowTamara = true; + }); + } } }); }); @@ -77,6 +82,7 @@ class _ImmediateLiveCarePaymentPageState extends State(context, listen: false); immediateLiveCareViewModel = Provider.of(context, listen: false); payfortViewModel = Provider.of(context, listen: false); + paytabsViewModel = Provider.of(context, listen: false); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: Consumer(builder: (context, myAppointmentsVM, child) { @@ -102,7 +108,7 @@ class _ImmediateLiveCarePaymentPageState extends State false); + Navigator.of(context).push( + CustomPageRoute( + page: ImmediateLiveCarePendingRequestPage(), + ), + ); + } else { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: "Unknown error occurred..."), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + }, onError: (err) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + if (appState.isPayfortHostedPageEnabled) { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPaymentInformation.tr(context: context)); + transID = Utils.getAppointmentTransID( + immediateLiveCareViewModel.immediateLiveCareSelectedClinic.serviceID!, + ApiConsts.appEnvironmentType == AppEnvironmentTypeEnum.uat ? 15 : 12, + DateTime.now().millisecondsSinceEpoch, + ); + await payfortViewModel.getPayfortConfigurations( + serviceId: ServiceTypeEnum.liveCareAppointment.getIdFromServiceEnum(), + projectId: ApiConsts.appEnvironmentType == AppEnvironmentTypeEnum.uat ? 15 : 12, + integrationId: 1); + + payfortViewModel.initiatePaymentWithCard( + "mada", + immediateLiveCareViewModel.immediateLiveCareSelectedClinic.serviceID.toString(), + "false", + DateUtil.convertDateToString(DateTime.now()), + "0", + "0", + transactionID: transID, + fileNumber: appState.getAuthenticatedUser()!.patientId.toString(), + amount: immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.total ?? "0.0", + orderDescription: "LiveCare Payment", + onSucceeded: (paymentResult) async { + print("Payment Success Data: ${paymentResult.toString()}"); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr(context: context)); + + await immediateLiveCareViewModel.addNewCallRequestForImmediateLiveCare(transID); + await immediateLiveCareViewModel.getPatientLiveCareHistory(); + LoaderBottomSheet.hideLoader(); + if (immediateLiveCareViewModel.patientHasPendingLiveCareRequest) { + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + Navigator.of(context).push( + CustomPageRoute( + page: ImmediateLiveCarePendingRequestPage(), + ), + ); + } else { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: "Unknown error occurred..."), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + }, + onFailed: (err) { + print("Payment Failed Data: ${err.toString()}"); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + ); + } else { + openPaymentURL("mada"); + } + } }), SizedBox(height: 16.h), Container( @@ -140,9 +255,9 @@ class _ImmediateLiveCarePaymentPageState extends State false); + Navigator.of(context).push( + CustomPageRoute( + page: ImmediateLiveCarePendingRequestPage(), + ), + ); + } else { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: "Unknown error occurred..."), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + }, onError: (err) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + if (appState.isPayfortHostedPageEnabled) { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPaymentInformation.tr(context: context)); + transID = Utils.getAppointmentTransID( + immediateLiveCareViewModel.immediateLiveCareSelectedClinic.serviceID!, + ApiConsts.appEnvironmentType == AppEnvironmentTypeEnum.uat ? 15 : 12, + DateTime.now().millisecondsSinceEpoch, + ); + await payfortViewModel.getPayfortConfigurations( + serviceId: ServiceTypeEnum.liveCareAppointment.getIdFromServiceEnum(), + projectId: ApiConsts.appEnvironmentType == AppEnvironmentTypeEnum.uat ? 15 : 12, + integrationId: 1); + + payfortViewModel.initiatePaymentWithCard( + "visa", + immediateLiveCareViewModel.immediateLiveCareSelectedClinic.serviceID.toString(), + "false", + DateUtil.convertDateToString(DateTime.now()), + "0", + "0", + transactionID: transID, + fileNumber: appState.getAuthenticatedUser()!.patientId.toString(), + amount: immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.total ?? "0.0", + orderDescription: "LiveCare Payment", + onSucceeded: (paymentResult) async { + print("Payment Success Data: ${paymentResult.toString()}"); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr(context: context)); + + await immediateLiveCareViewModel.addNewCallRequestForImmediateLiveCare(transID); + await immediateLiveCareViewModel.getPatientLiveCareHistory(); + LoaderBottomSheet.hideLoader(); + if (immediateLiveCareViewModel.patientHasPendingLiveCareRequest) { + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + Navigator.of(context).push( + CustomPageRoute( + page: ImmediateLiveCarePendingRequestPage(), + ), + ); + } else { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: "Unknown error occurred..."), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + }, + onFailed: (err) { + print("Payment Failed Data: ${err.toString()}"); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + ); + } else { + openPaymentURL("visa"); + } + } }), SizedBox(height: 16.h), isShowTamara @@ -181,7 +405,7 @@ class _ImmediateLiveCarePaymentPageState extends State false); + Navigator.of(context).push( + CustomPageRoute( + page: ImmediateLiveCarePendingRequestPage(), + ), + ); + } else { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: "Unknown error occurred..."), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + }, onError: (err) { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: failureResult.message.toString()), + child: Utils.getErrorWidget(loadingText: err.toString()), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, ); - }, - onSucceeded: (successResult) async { - LoaderBottomSheet.hideLoader(); - log("successResult: ${successResult.responseMessage.toString()}"); - selectedPaymentMethod = successResult.paymentOption ?? "VISA"; - checkPaymentStatus(); - }, - // projectId: appo.projectID, - // serviceTypeEnum: ServiceTypeEnum.appointmentPayment, - ); + }); + } else { + payfortViewModel.paymentWithApplePay( + customerName: "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}", + // customerEmail: projectViewModel.authenticatedUserObject.user.emailAddress, + customerEmail: "CustID_${appState.getAuthenticatedUser()!.patientId.toString()}@HMG.com", + orderDescription: "LiveCare Payment", + orderAmount: num.parse((immediateLiveCareViewModel.liveCareImmediateAppointmentFeesList.total ?? "0.0")), + merchantReference: transID, + merchantIdentifier: payfortViewModel.payfortProjectDetailsRespModel!.merchantIdentifier, + applePayAccessCode: payfortViewModel.payfortProjectDetailsRespModel!.accessCode, + applePayShaRequestPhrase: payfortViewModel.payfortProjectDetailsRespModel!.shaRequest, + currency: appState.getAuthenticatedUser()!.outSa! == 0 ? "SAR" : "AED", + onFailed: (failureResult) async { + log("failureResult: ${failureResult.message.toString()}"); + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: failureResult.message.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + onSucceeded: (successResult) async { + LoaderBottomSheet.hideLoader(); + log("successResult: ${successResult.responseMessage.toString()}"); + selectedPaymentMethod = successResult.paymentOption ?? "VISA"; + checkPaymentStatus(); + }, + // projectId: appo.projectID, + // serviceTypeEnum: ServiceTypeEnum.appointmentPayment, + ); + } }); } } diff --git a/lib/presentation/book_appointment/livecare/immediate_livecare_pending_request_page.dart b/lib/presentation/book_appointment/livecare/immediate_livecare_pending_request_page.dart index da12f3ef..9a1d1fd7 100644 --- a/lib/presentation/book_appointment/livecare/immediate_livecare_pending_request_page.dart +++ b/lib/presentation/book_appointment/livecare/immediate_livecare_pending_request_page.dart @@ -1,5 +1,4 @@ -import 'dart:async'; - +import 'dart:ui' as ui; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -10,6 +9,7 @@ import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/contact_us/contact_us_view_model.dart'; import 'package:hmg_patient_app_new/features/immediate_livecare/immediate_livecare_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -17,6 +17,7 @@ import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/countdown_timer.dart'; +import 'package:lottie/lottie.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -31,25 +32,21 @@ class _ImmediateLiveCarePendingRequestPageState extends State durationNotifier = ValueNotifier(immediateLiveCareViewModel.countdownDuration); - // Timer? timer; + String chatURL = ""; @override void initState() { super.initState(); - scheduleMicrotask(() { - // countdownDuration = Duration(minutes: immediateLiveCareViewModel.patientLiveCareHistoryList[0].watingtimeInteger!, seconds: 0); - // durationNotifier = ValueNotifier(immediateLiveCareViewModel.countdownDuration); - // startTimer(); - }); } @override void dispose() { - // timer?.cancel(); - // durationNotifier.dispose(); + // Cancel the timer when leaving the page + try { + // immediateLiveCareViewModel.stopTimer(); + } catch (e) { + // Handle case where viewModel might not be initialized + } super.dispose(); } @@ -64,7 +61,7 @@ class _ImmediateLiveCarePendingRequestPageState extends State( - valueListenable: immediateLiveCareVM.durationNotifier, - builder: (context, duration, child) { - return Column( - mainAxisAlignment: MainAxisAlignment.center, + LocaleKeys.immediateLiveCareRequest.tr(context: context).toText16(isBold: true), + SizedBox(height: 10.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Wrap( children: [ - buildTime(duration), + AppCustomChipWidget( + labelText: immediateLiveCareViewModel.patientLiveCareHistoryList.isNotEmpty ? immediateLiveCareViewModel.patientLiveCareHistoryList[0].stringCallStatus : "", + backgroundColor: AppColors.warningColorYellow.withValues(alpha: 0.20), + textColor: AppColors.alertColor, + ), + SizedBox(width: 8.w), + AppCustomChipWidget( + icon: AppAssets.appointment_calendar_icon, + labelText: DateUtil.formatDateToDate( + DateUtil.convertStringToDate( + immediateLiveCareViewModel.patientLiveCareHistoryList.isNotEmpty ? immediateLiveCareViewModel.patientLiveCareHistoryList[0].arrivalTime : ""), + false)), ], - ); - }, + ), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.greyColor, + borderRadius: 10.h, + hasShadow: false, + ), + padding: EdgeInsets.all(6.h), + child: Lottie.asset(AppAnimations.hourGlass, repeat: true, reverse: false, frameRate: FrameRate(60), width: 40.h, height: 40.h, fit: BoxFit.fill)), + // Lottie.asset(AppAnimations.pending_loading_animation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 80.h, height: 80.h, fit: BoxFit.cover), + ], ), SizedBox(height: 8.h), + SizedBox(height: 8.h), + LocaleKeys.yourTurnIsAfterPatients.tr(namedArgs: { + 'count': (immediateLiveCareViewModel.patientLiveCareHistoryList.isNotEmpty ? immediateLiveCareViewModel.patientLiveCareHistoryList[0].patCount ?? 0 : 0).toString() + }, context: context).toText14(isBold: true), + // "Your turn is after ${immediateLiveCareViewModel.patientLiveCareHistoryList[0].patCount} patients.".toText16(isBold: true), + SizedBox(height: 8.h), ], ), ), @@ -106,200 +128,246 @@ class _ImmediateLiveCarePendingRequestPageState extends State( + valueListenable: immediateLiveCareVM.durationNotifier, + builder: (context, duration, child) { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Directionality(textDirection: ui.TextDirection.ltr, child: buildTime(duration)), + ], + ); + }, + ), SizedBox(height: 8.h), ], ), ), + ), + SizedBox( + height: 55.h, + ), + CustomButton( + text: LocaleKeys.startLiveChat.tr(), + onPressed: () async { + // launchUrl(Uri.parse("https://chat.hmg.com/geneysChat/Index.aspx?RequestedId=44A515DF-E668-46B5-BD76-D7747D9C7308")); + _getChatRequestID( + context, + name: appState.getAuthenticatedUser()!.firstName ?? '', + mobileNo: appState.getAuthenticatedUser()!.mobileNumber ?? '', + ); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + borderWidth: 0, + textColor: AppColors.whiteColor, + fontSize: 16, + isBold: true, + isDisabled: !Utils.havePrivilege(118), + borderRadius: 12, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 50.h, + icon: AppAssets.livechatMessage, + iconColor: !Utils.havePrivilege(118) ? AppColors.textColor : AppColors.whiteColor, + iconSize: 21.h, + ), + SizedBox( + height: 16.h, + ), + Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + LocaleKeys.oR.tr().toText19( + color: AppColors.textColor, + ), + ], + ), + SizedBox( + height: 16.h, + ), + CustomButton( + text: LocaleKeys.callLiveCareSupport.tr(), + onPressed: () async { + launchUrl(Uri.parse("tel://" + "966 11 525 9553")); + }, + backgroundColor: AppColors.lightRedButtonColor, + borderColor: AppColors.lightRedButtonColor, + borderWidth: 0, + textColor: AppColors.primaryRedColor, + fontSize: 16, + isBold: true, + borderRadius: 12, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 50.h, + icon: AppAssets.call_fill, + iconColor: AppColors.primaryRedColor, + iconSize: 21.h, ) ], ), ), ), ), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.h, - hasShadow: true, - ), - child: CustomButton( - text: LocaleKeys.callLiveCareSupport.tr(), - onPressed: () async { - launchUrl(Uri.parse("tel://" + "011 525 9553")); - }, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - textColor: AppColors.whiteColor, - fontSize: 16, - fontWeight: FontWeight.w500, - borderRadius: 12, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 50.h, - icon: AppAssets.call_fill, - iconColor: AppColors.whiteColor, - iconSize: 21.h, - ).paddingSymmetrical(24.h, 24.h), - ), ], ); }), ); } - // void startTimer() { - // // timer = Timer.periodic(const Duration(seconds: 1), (_) => addTime()); - // // setState(() {}); - // } - // - // void addTime() { - // final seconds = durationNotifier.value.inSeconds - 1; - // if (seconds < 0) { - // timer?.cancel(); - // // Handle end of timer here - // // showEndMessage(); - // } else { - // durationNotifier.value = Duration(seconds: seconds); - // } - // } - // - // Future _onWillPop() async { - // timer?.cancel(); - // Navigator.of(context).pop(); - // return true; - // } - // - // Widget buildTime(Duration duration) { - // String twoDigits(int n) => n.toString().padLeft(2, '0'); - // final hours = twoDigits(duration.inHours); - // final minutes = twoDigits(duration.inMinutes.remainder(60)); - // final seconds = twoDigits(duration.inSeconds.remainder(60)); - // - // return Row( - // mainAxisAlignment: MainAxisAlignment.center, - // children: [ - // buildTimeColumn(hours, "Hours".needTranslation), - // buildTimeColumn(minutes, "Mins".needTranslation), - // buildTimeColumn(seconds, "Secs".needTranslation, isLast: true), - // ], - // ); - // } - // - // Widget buildTimeColumn(String time, String label, {bool isLast = false}) { - // return Column( - // mainAxisAlignment: MainAxisAlignment.center, - // children: [ - // Row( - // children: [ - // buildDigit(time[0]), - // buildDigit(time[1]), - // if (!isLast) buildTimeSeparator(), - // ], - // ), - // buildLabel(label), - // ], - // ); - // } - // - // Widget buildDigit(String digit) { - // return Container( - // padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 4), - // // margin: const EdgeInsets.symmetric(horizontal: 2), - // decoration: BoxDecoration( - // color: Colors.white, - // borderRadius: BorderRadius.circular(8), - // ), - // child: ClipRect( - // child: AnimatedSwitcher( - // duration: const Duration(milliseconds: 600), - // switchInCurve: Curves.easeOutExpo, - // switchOutCurve: Curves.easeInExpo, - // transitionBuilder: (Widget child, Animation animation) { - // return Stack( - // children: [ - // SlideTransition( - // position: Tween( - // begin: const Offset(0, -1), - // end: const Offset(0, 1), - // ).animate(CurvedAnimation( - // parent: animation, - // curve: Curves.easeOutCubic, - // )), - // child: FadeTransition( - // opacity: animation, - // child: child, - // ), - // ), - // SlideTransition( - // position: Tween( - // begin: const Offset(0, -1), - // end: const Offset(0, 0), - // ).animate(CurvedAnimation( - // parent: animation, - // curve: Curves.bounceIn, - // )), - // child: FadeTransition( - // opacity: animation, - // child: child, - // ), - // ), - // ], - // ); - // }, - // child: Text( - // digit, - // key: ValueKey(digit), - // style: TextStyle( - // fontWeight: FontWeight.bold, - // color: Colors.black, - // fontSize: 20.f, - // ), - // ), - // ), - // ), - // ); - // } - // - // Widget buildLabel(String label) { - // return label.toText14(isBold: true); - // } - // - // Widget buildTimeSeparator() { - // return const Padding( - // padding: EdgeInsets.symmetric(horizontal: 2.0), - // child: Text( - // ":", - // style: TextStyle( - // color: Colors.black, - // fontSize: 20, - // ), - // ), - // ); - // } + void _getChatRequestID(BuildContext context, {required String name, required String mobileNo}) { + getIt.get().getChatRequestID( + name: name, + mobileNo: mobileNo, + workGroup: "Live_Care_Chat", + onSuccess: (response) { + debugPrint("Chat Request ID received: ${getIt.get().chatRequestID}"); + chatURL = "https://chat.hmg.com/geneysChat/Index.aspx?RequestedId=${getIt.get().chatRequestID}"; + debugPrint("Chat URL: $chatURL"); + Uri uri = Uri.parse(chatURL); + launchUrl(uri, mode: LaunchMode.platformDefault, webOnlyWindowName: ""); + }, + onError: (error) { + debugPrint("Error getting chat request ID: $error"); + }, + ); + } + +// void startTimer() { +// // timer = Timer.periodic(const Duration(seconds: 1), (_) => addTime()); +// // setState(() {}); +// } +// +// void addTime() { +// final seconds = durationNotifier.value.inSeconds - 1; +// if (seconds < 0) { +// timer?.cancel(); +// // Handle end of timer here +// // showEndMessage(); +// } else { +// durationNotifier.value = Duration(seconds: seconds); +// } +// } +// +// Future _onWillPop() async { +// timer?.cancel(); +// Navigator.of(context).pop(); +// return true; +// } +// +// Widget buildTime(Duration duration) { +// String twoDigits(int n) => n.toString().padLeft(2, '0'); +// final hours = twoDigits(duration.inHours); +// final minutes = twoDigits(duration.inMinutes.remainder(60)); +// final seconds = twoDigits(duration.inSeconds.remainder(60)); +// +// return Row( +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// buildTimeColumn(hours, "Hours".needTranslation), +// buildTimeColumn(minutes, "Mins".needTranslation), +// buildTimeColumn(seconds, "Secs".needTranslation, isLast: true), +// ], +// ); +// } +// +// Widget buildTimeColumn(String time, String label, {bool isLast = false}) { +// return Column( +// mainAxisAlignment: MainAxisAlignment.center, +// children: [ +// Row( +// children: [ +// buildDigit(time[0]), +// buildDigit(time[1]), +// if (!isLast) buildTimeSeparator(), +// ], +// ), +// buildLabel(label), +// ], +// ); +// } +// +// Widget buildDigit(String digit) { +// return Container( +// padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 4), +// // margin: const EdgeInsets.symmetric(horizontal: 2), +// decoration: BoxDecoration( +// color: Colors.white, +// borderRadius: BorderRadius.circular(8), +// ), +// child: ClipRect( +// child: AnimatedSwitcher( +// duration: const Duration(milliseconds: 600), +// switchInCurve: Curves.easeOutExpo, +// switchOutCurve: Curves.easeInExpo, +// transitionBuilder: (Widget child, Animation animation) { +// return Stack( +// children: [ +// SlideTransition( +// position: Tween( +// begin: const Offset(0, -1), +// end: const Offset(0, 1), +// ).animate(CurvedAnimation( +// parent: animation, +// curve: Curves.easeOutCubic, +// )), +// child: FadeTransition( +// opacity: animation, +// child: child, +// ), +// ), +// SlideTransition( +// position: Tween( +// begin: const Offset(0, -1), +// end: const Offset(0, 0), +// ).animate(CurvedAnimation( +// parent: animation, +// curve: Curves.bounceIn, +// )), +// child: FadeTransition( +// opacity: animation, +// child: child, +// ), +// ), +// ], +// ); +// }, +// child: Text( +// digit, +// key: ValueKey(digit), +// style: TextStyle( +// fontWeight: FontWeight.bold, +// color: Colors.black, +// fontSize: 20.f, +// ), +// ), +// ), +// ), +// ); +// } +// +// Widget buildLabel(String label) { +// return label.toText14(isBold: true); +// } +// +// Widget buildTimeSeparator() { +// return const Padding( +// padding: EdgeInsets.symmetric(horizontal: 2.0), +// child: Text( +// ":", +// style: TextStyle( +// color: Colors.black, +// fontSize: 20, +// ), +// ), +// ); +// } } diff --git a/lib/presentation/book_appointment/livecare/select_immediate_livecare_clinic_page.dart b/lib/presentation/book_appointment/livecare/select_immediate_livecare_clinic_page.dart index a83dfa05..16c7d421 100644 --- a/lib/presentation/book_appointment/livecare/select_immediate_livecare_clinic_page.dart +++ b/lib/presentation/book_appointment/livecare/select_immediate_livecare_clinic_page.dart @@ -3,6 +3,7 @@ import 'dart:async'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; @@ -22,6 +23,7 @@ import 'package:hmg_patient_app_new/presentation/book_appointment/livecare/widge import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/input_widget.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; @@ -68,6 +70,34 @@ class _SelectImmediateLiveCareClinicPageState extends State(builder: (context, immediateLiveCareVM, child) { return Column( children: [ + TextInputWidget( + labelText: LocaleKeys.search.tr(context: context), + hintText: LocaleKeys.clinicName.tr(context: context), + controller: searchEditingController, + isEnable: true, + prefix: null, + autoFocus: false, + isBorderAllowed: false, + keyboardType: TextInputType.text, + focusNode: textFocusNode, + suffix: searchEditingController.text.isNotEmpty + ? GestureDetector( + onTap: () { + searchEditingController.clear(); + immediateLiveCareVM.filterClinic(""); + textFocusNode.unfocus(); + }, + child: Utils.buildSvgWithAssets(icon: AppAssets.close_bottom_sheet_icon, width: 20.h, height: 20.h, fit: BoxFit.scaleDown), + ) + : null, + onChange: (value) { + immediateLiveCareVM.filterClinic(value!); + }, + padding: EdgeInsets.symmetric( + vertical: ResponsiveExtension(10).h, + horizontal: ResponsiveExtension(15).h, + ), + ), ListView.separated( padding: EdgeInsets.only(top: 16.h), shrinkWrap: true, @@ -96,7 +126,9 @@ class _SelectImmediateLiveCareClinicPageState extends State(); + appState = getIt.get(); return Container( padding: EdgeInsets.all(16.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration( @@ -36,10 +45,13 @@ class LiveCareClinicCard extends StatelessWidget { Utils.buildSvgWithAssets(icon: AppAssets.generic_clinic_icon, width: 24.h, height: 24.h, fit: BoxFit.contain).toShimmer2(isShow: isLoading), AppCustomChipWidget( icon: AppAssets.livecare_online_icon, - iconColor: AppColors.whiteColor, - richText: (liveCareClinicListResponseModel.isOnline == 1 ? LocaleKeys.online.tr(context: context) : LocaleKeys.offline.tr()).toText10(isBold: true, color: AppColors.whiteColor), - backgroundColor: liveCareClinicListResponseModel.isOnline == 1 ? AppColors.successColor : AppColors.primaryRedColor, - textColor: AppColors.whiteColor, + iconColor: liveCareClinicListResponseModel.isOnline == 1 ? AppColors.successColor : AppColors.primaryRedColor, + richText: (liveCareClinicListResponseModel.isOnline == 1 ? LocaleKeys.online.tr(context: context) : LocaleKeys.offline.tr()).toText12( + isBold: true, + color: liveCareClinicListResponseModel.isOnline == 1 ? AppColors.successColor : AppColors.primaryRedColor, + ), + backgroundColor: AppColors.transparent, + textColor: liveCareClinicListResponseModel.isOnline == 1 ? AppColors.successColor : AppColors.primaryRedColor, ), ]), SizedBox(height: 8.h), @@ -48,12 +60,194 @@ class LiveCareClinicCard extends StatelessWidget { child: (isLoading ? "Cardiology" : (appState.isArabic() ? liveCareClinicListResponseModel.serviceNameN : liveCareClinicListResponseModel.serviceName))! .toText16(isBold: true) .toShimmer2(isShow: isLoading)), - Transform.flip( - flipX: appState.isArabic(), - child: Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_icon, width: 40.h, height: 40.h, fit: BoxFit.contain, iconColor: AppColors.textColor).toShimmer2(isShow: isLoading)), + // Transform.flip( + // flipX: appState.isArabic(), + // child: Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_icon, width: 40.h, height: 40.h, fit: BoxFit.contain, iconColor: AppColors.textColor).toShimmer2(isShow: isLoading)), ]), + SizedBox(height: 8.h), + Row( + children: [ + Expanded( + flex: 7, + child: CustomButton( + text: LocaleKeys.bookNow.tr(), + onPressed: () async { + onImmediateLiveCareClinicSelected(liveCareClinicListResponseModel); + }, + backgroundColor: AppColors.successLightBgColor, + borderColor: AppColors.successLightBgColor, + textColor: AppColors.successColor, + borderWidth: 1.h, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 40.h, + icon: AppAssets.bookAppoBottom, + iconColor: liveCareClinicListResponseModel.isOnline == 0 ? AppColors.textColorLight : AppColors.successColor, + iconSize: 16.h, + isDisabled: liveCareClinicListResponseModel.isOnline == 0, + ), + ), + SizedBox(width: 8.w), + Expanded( + flex: 1, + child: Container( + height: (isFoldable || isTablet) ? 50.h : 40.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // color: Color(0xFFEFEFF0), + color: AppColors.transparent, + borderRadius: 10.h, + side: BorderSide( + color: AppColors.textColor, + width: 1.2, + ), + ), + child: Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.calendar, + iconColor: AppColors.textColor, + width: 5.w, + height: 5.h, + fit: BoxFit.scaleDown, + ), + ), + ).onPress(() { + onClinicScheduleTapped(liveCareClinicListResponseModel.serviceID!); + }), + ), + ], + ), ], ), ); } + + onClinicScheduleTapped(int serviceID) async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr()); + await immediateLiveCareViewModel.getLiveCareImmediateClinicSchedule( + serviceID: serviceID, + onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight(GetIt.instance().navigatorKey.currentContext!, + child: ListView.separated( + shrinkWrap: true, + itemBuilder: (_, index) { + return DecoratedBox( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.h, + hasShadow: false, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 8.h, + children: [ + checkInOptionCard(AppAssets.calendarGrey, immediateLiveCareViewModel.liveCareClinicScheduleList[index].dayOfWeekStr!, + "${immediateLiveCareViewModel.liveCareClinicScheduleList[index].shiftTimings!.first.startTime} to ${immediateLiveCareViewModel.liveCareClinicScheduleList[index].shiftTimings!.first.endTime}"), + ], + ), + ), + ], + ), + ).paddingSymmetrical(0.h, 0.h).onPress(() {}); + }, + separatorBuilder: (_, __) => SizedBox(height: 16.h), + itemCount: immediateLiveCareViewModel.liveCareClinicScheduleList.length), + title: LocaleKeys.clinicSchedule.tr(), + isCloseButtonVisible: true, + useSafeArea: true, + isFullScreen: true); + }); + } + + onImmediateLiveCareClinicSelected(GetLiveCareClinicListResponseModel liveCareClinic) { + //TODO: add implementation to show clinic schedule + // if (liveCareClinic.isOnline == 1) { + showCommonBottomSheetWithoutHeight(GetIt.instance().navigatorKey.currentContext!, child: SelectLiveCareCallType(immediateLiveCareViewModel: immediateLiveCareViewModel), + callBackFunc: () async { + if (immediateLiveCareViewModel.liveCareSelectedCallType != 0) { + immediateLiveCareViewModel.setImmediateLiveCareSelectedClinic(liveCareClinic); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingFeesPleaseWait.tr()); + await immediateLiveCareViewModel.getLiveCareImmediateAppointmentFees(onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + Navigator.of(GetIt.instance().navigatorKey.currentContext!).push( + CustomPageRoute( + page: ImmediateLiveCarePaymentDetails(), + ), + ); + }, onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + GetIt.instance().navigatorKey.currentContext!, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } + }, title: LocaleKeys.selectLiveCareCallType.tr(), isCloseButtonVisible: true, isFullScreen: false); + } + + Widget checkInOptionCard(String icon, String title, String subTitle) { + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.h, + hasShadow: false, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + title.toText16(isBold: true, color: AppColors.textColor), + SizedBox(height: 8.h), + Row( + children: [ + AppCustomChipWidget( + icon: AppAssets.appointment_time_icon, + iconColor: AppColors.textColor, + labelText: subTitle.split("to").first.trim(), + isEnglishOnly: true, + ), + SizedBox(width: 8.w), + Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.arrow_forward, + height: 24.h, + width: 24.h, + iconColor: AppColors.textColor, + ), + ), + SizedBox(width: 8.w), + AppCustomChipWidget( + icon: AppAssets.appointment_time_icon, + iconColor: AppColors.textColor, + labelText: subTitle.split("to")[1].trim(), + isEnglishOnly: true, + ), + ], + ), + ], + ), + ), + ], + ), + ], + ).paddingAll(16.h), + ); + } } diff --git a/lib/presentation/book_appointment/livecare/widgets/select_livecare_call_type.dart b/lib/presentation/book_appointment/livecare/widgets/select_livecare_call_type.dart index 8bb07897..916e0486 100644 --- a/lib/presentation/book_appointment/livecare/widgets/select_livecare_call_type.dart +++ b/lib/presentation/book_appointment/livecare/widgets/select_livecare_call_type.dart @@ -71,7 +71,7 @@ class SelectLiveCareCallType extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ title.toText16(isBold: true, color: AppColors.textColor), - subTitle.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + subTitle.toText12(isBold: true, color: AppColors.greyTextColor), ], ), ), diff --git a/lib/presentation/book_appointment/review_appointment_page.dart b/lib/presentation/book_appointment/review_appointment_page.dart index 794b821b..b7fb6469 100644 --- a/lib/presentation/book_appointment/review_appointment_page.dart +++ b/lib/presentation/book_appointment/review_appointment_page.dart @@ -1,10 +1,15 @@ +import 'dart:convert'; +import 'dart:developer'; +import 'dart:typed_data'; + +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; -import 'package:hmg_patient_app_new/core/utils/loading_utils.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -13,11 +18,13 @@ import 'package:hmg_patient_app_new/features/authentication/authentication_view_ import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/waiting_appointment/waiting_appointment_payment_page.dart'; import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; -import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; @@ -37,6 +44,16 @@ class _ReviewAppointmentPageState extends State { late BookAppointmentsViewModel bookAppointmentsViewModel; late AuthenticationViewModel authVM; late MyAppointmentsViewModel myAppointmentsViewModel; + late SymptomsCheckerViewModel symptomsCheckerViewModel; + + Uint8List? _cachedImageBytes; + String? _cachedImageDataHash; + + @override + void initState() { + Clarity.setCurrentScreenName('Appointment Review Page'); + super.initState(); + } @override Widget build(BuildContext context) { @@ -44,6 +61,7 @@ class _ReviewAppointmentPageState extends State { myAppointmentsViewModel = Provider.of(context, listen: false); authVM = Provider.of(context, listen: false); appState = getIt.get(); + symptomsCheckerViewModel = Provider.of(context, listen: false); return Scaffold( backgroundColor: AppColors.scaffoldBgColor, body: Column( @@ -73,8 +91,10 @@ class _ReviewAppointmentPageState extends State { children: [ Row( children: [ - Image.network( - bookAppointmentsViewModel.selectedDoctor.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", + Utils.buildImgWithNetwork( + url: bookAppointmentsViewModel.selectedDoctor.doctorImageURL ?? + "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", + iconColor: AppColors.transparent, width: 50.h, height: 50.h, fit: BoxFit.cover, @@ -90,18 +110,25 @@ class _ReviewAppointmentPageState extends State { .toString() .toText16(isBold: true, maxlines: 1), SizedBox(width: 12.w), - Image.network( - bookAppointmentsViewModel.selectedDoctor.nationalityFlagURL ?? "https://hmgwebservices.com/Images/flag/SAU.png", - width: 20.h, - height: 15.h, - fit: BoxFit.cover, - ), + (bookAppointmentsViewModel.selectedDoctor.nationalityFlagURL != null && + bookAppointmentsViewModel.selectedDoctor.nationalityFlagURL!.isNotEmpty) + ? Utils.buildImgWithNetwork( + url: bookAppointmentsViewModel.selectedDoctor.nationalityFlagURL ?? + "https://hmgwebservices.com/Images/flag/SAU.png", + iconColor: AppColors.transparent, + width: 20.h, + height: 15.h, + fit: BoxFit.cover, + ) + : SizedBox.shrink(), ], ), SizedBox(height: 2.h), - (bookAppointmentsViewModel.selectedDoctor.speciality!.isNotEmpty ? bookAppointmentsViewModel.selectedDoctor.speciality!.first : "") + (bookAppointmentsViewModel.selectedDoctor.speciality!.isNotEmpty + ? bookAppointmentsViewModel.selectedDoctor.speciality!.first + : "") .toString() - .toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor, maxLine: 1), + .toText12(isBold: true, color: AppColors.greyTextColor, maxLine: 1), ], ), ], @@ -109,8 +136,8 @@ class _ReviewAppointmentPageState extends State { SizedBox(height: 12.h), Wrap( direction: Axis.horizontal, - spacing: 8.h, - runSpacing: 8.h, + spacing: 4.h, + runSpacing: 4.h, children: [ AppCustomChipWidget( labelText: "${LocaleKeys.clinic.tr(context: context)}: ${bookAppointmentsViewModel.selectedDoctor.clinicName}", @@ -145,18 +172,32 @@ class _ReviewAppointmentPageState extends State { padding: EdgeInsets.all(16.h), child: Row( children: [ - Image.asset( - appState.getAuthenticatedUser()?.gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, - width: 52.h, - height: 52.h, - ), + // Image.asset( + // appState.getAuthenticatedUser()?.gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, + // width: 52.h, + // height: 52.h, + // ), + Consumer(builder: (context, profileVm, _) { + return _buildProfileImage(profileVm); + }), SizedBox(width: 8.h), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}".toText16(isBold: true), SizedBox(height: 8.h), - AppCustomChipWidget(labelText: "${appState.getAuthenticatedUser()!.age} Years Old"), + Wrap( + direction: Axis.horizontal, + spacing: 4.h, + runSpacing: 4.h, + children: [ + AppCustomChipWidget( + labelText: "${appState.getAuthenticatedUser()!.age} ${LocaleKeys.yearsOld.tr(context: context)}"), + AppCustomChipWidget( + labelText: + "${LocaleKeys.gender.tr(context: context)}: ${appState.getAuthenticatedUser()?.gender == 1 ? LocaleKeys.malE.tr(context: context) : LocaleKeys.femaleGender.tr(context: context)}"), + ], + ), ], ), ], @@ -183,19 +224,19 @@ class _ReviewAppointmentPageState extends State { bookAppointmentsViewModel.appointmentNearestGateResponseModel != null ? Wrap( direction: Axis.horizontal, - spacing: 8.w, - runSpacing: 8.h, - children: [ - AppCustomChipWidget( - labelText: bookAppointmentsVM.isAppointmentNearestGateLoading - ? "Floor: Ground Floor" - : "Floor: ${getIt.get().isArabic() ? bookAppointmentsViewModel.appointmentNearestGateResponseModel!.clinicLocationN : bookAppointmentsViewModel.appointmentNearestGateResponseModel!.clinicLocation}", - ).toShimmer2(isShow: bookAppointmentsVM.isAppointmentNearestGateLoading), - AppCustomChipWidget( - labelText: - "Nearest Gate: ${getIt.get().isArabic() ? bookAppointmentsVM.appointmentNearestGateResponseModel!.nearestGateNumberN : bookAppointmentsVM.appointmentNearestGateResponseModel!.nearestGateNumber}") - .toShimmer2(isShow: bookAppointmentsVM.isAppointmentNearestGateLoading), - ], + spacing: 8.w, + runSpacing: 8.h, + children: [ + AppCustomChipWidget( + labelText: bookAppointmentsVM.isAppointmentNearestGateLoading + ? "Floor: Ground Floor" + : "${LocaleKeys.floor.tr(context: context)} ${getIt.get().isArabic() ? bookAppointmentsViewModel.appointmentNearestGateResponseModel!.clinicLocationN : bookAppointmentsViewModel.appointmentNearestGateResponseModel!.clinicLocation}", + ).toShimmer2(isShow: bookAppointmentsVM.isAppointmentNearestGateLoading), + AppCustomChipWidget( + labelText: + "${LocaleKeys.nearestGate.tr(context: context)} ${getIt.get().isArabic() ? bookAppointmentsVM.appointmentNearestGateResponseModel!.nearestGateNumberN : bookAppointmentsVM.appointmentNearestGateResponseModel!.nearestGateNumber}") + .toShimmer2(isShow: bookAppointmentsVM.isAppointmentNearestGateLoading), + ], ) : SizedBox.shrink(), ], @@ -227,7 +268,7 @@ class _ReviewAppointmentPageState extends State { borderColor: AppColors.primaryRedColor, textColor: Colors.white, fontSize: 16.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 50.h, @@ -238,6 +279,77 @@ class _ReviewAppointmentPageState extends State { ); } + Widget _buildProfileImage(ProfileSettingsViewModel profileVm) { + // Always get fresh user data + final currentUser = appState.getAuthenticatedUser(); + final currentPatientId = currentUser?.patientId; + final gender = currentUser?.gender ?? 1; + final age = currentUser?.age ?? 0; + + // Determine the default image based on gender and age + final String defaultImage; + if (gender == 1) { + // Male + defaultImage = age < 7 ? AppAssets.babyBoyImg : AppAssets.maleImg; + } else { + // Female + defaultImage = age < 7 ? AppAssets.babyGirlImg : AppAssets.femaleImg; + } + + // Show selected image if available (only during upload) + // if (_selectedImage != null) { + // return ClipOval( + // child: Image.file( + // _selectedImage!, + // width: 136.w, + // height: 136.h, + // fit: BoxFit.cover, + // ), + // ); + // } + + // Use cached decoded bytes — update cache if source data changed + final String? imageData = GetIt.instance().getProfileImageData; + final String? currentHash = (imageData != null && imageData.isNotEmpty) ? '${imageData.length}_${imageData.hashCode}' : null; + + // Re-decode only if the underlying data actually changed + if (currentHash != null && currentHash != _cachedImageDataHash) { + try { + _cachedImageBytes = base64Decode(imageData!); + _cachedImageDataHash = currentHash; + } catch (e) { + print('❌ Error decoding profile image: $e'); + _cachedImageBytes = null; + _cachedImageDataHash = null; + } + } else if (currentHash == null) { + _cachedImageBytes = null; + _cachedImageDataHash = null; + } + + // Show cached decoded image if available + if (_cachedImageBytes != null) { + return ClipOval( + child: Image.memory( + _cachedImageBytes!, + key: ValueKey('profile_$currentPatientId'), + width: 52.w, + height: 52.h, + fit: BoxFit.cover, + gaplessPlayback: true, // Prevents blink during image rebuild + ), + ); + } + + // Show default image (no image data or user has no uploaded image) + print('📷 Showing default avatar for user $currentPatientId'); + return Utils.buildImgWithAssets( + icon: defaultImage, + width: 52.w, + height: 52.h, + ); + } + void getWalkInAppointmentPatientShare() async { LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingAppointmentShare.tr(context: context)); await bookAppointmentsViewModel.getWalkInPatientShareAppointment(onSuccess: (val) { @@ -288,7 +400,9 @@ class _ReviewAppointmentPageState extends State { LoaderBottomSheet.hideLoader(); myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); myAppointmentsViewModel.getPatientAppointments(true, false); - showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.success.tr(context: context), child: Utils.getSuccessWidget(loadingText: apiResponse.data["SuccessMsg"]), callBackFunc: () { + showCommonBottomSheetWithoutHeight(context, + title: LocaleKeys.success.tr(context: context), + child: Utils.getSuccessWidget(loadingText: apiResponse.data["SuccessMsg"]), callBackFunc: () { Navigator.of(context).pop(); Navigator.pushAndRemoveUntil( context, @@ -300,7 +414,8 @@ class _ReviewAppointmentPageState extends State { }, onError: (error) { LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.error.tr(context: context), child: Utils.getErrorWidget(loadingText: error), callBackFunc: () { + showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.error.tr(context: context), child: Utils.getErrorWidget(loadingText: error), + callBackFunc: () { Navigator.of(context).pop(); }, isFullScreen: false); }, @@ -308,19 +423,31 @@ class _ReviewAppointmentPageState extends State { } void initiateBookAppointment() async { - LoadingUtils.showFullScreenLoader(barrierDismissible: true, isSuccessDialog: false, loadingText: LocaleKeys.bookingYourAppointment.tr(context: context)); + // LoadingUtils.showFullScreenLoader(barrierDismissible: true, isSuccessDialog: false, loadingText: bookAppointmentsViewModel.isPatientRescheduleAppointment ? LocaleKeys.reschedulingAppo.tr(context: context) : LocaleKeys.bookingYourAppointment.tr(context: context)); + LoaderBottomSheet.showLoader( + loadingText: bookAppointmentsViewModel.isPatientRescheduleAppointment + ? LocaleKeys.reschedulingAppo.tr(context: context) + : LocaleKeys.bookingYourAppointment.tr(context: context)); myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); if (bookAppointmentsViewModel.isLiveCareSchedule) { await bookAppointmentsViewModel.insertSpecificAppointmentForLiveCare(onError: (err) { - print(err.data["ErrorEndUserMessage"]); - LoadingUtils.hideFullScreenLoader(); + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); }, onSuccess: (apiResp) async { - LoadingUtils.hideFullScreenLoader(); + LoaderBottomSheet.hideLoader(); await Future.delayed(Duration(milliseconds: 50)).then((value) async { - LoadingUtils.showFullScreenLoader(barrierDismissible: true, isSuccessDialog: true, loadingText: LocaleKeys.appointmentSuccess.tr()); - await Future.delayed(Duration(milliseconds: 4000)).then((value) { - LoadingUtils.hideFullScreenLoader(); + // LoaderBottomSheet.showLoader(loadingText: LocaleKeys.appointmentSuccess.tr()); + showCommonBottomSheetWithoutHeight(context, child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentSuccess.tr()), + callBackFunc: () { + bookAppointmentsViewModel.setIsPatientRescheduleAppointment(false); bookAppointmentsViewModel.setIsLiveCareSchedule(false); Navigator.pushAndRemoveUntil( context, @@ -328,14 +455,14 @@ class _ReviewAppointmentPageState extends State { page: LandingNavigation(), ), (r) => false); - }); + }, isFullScreen: false, isCloseButtonVisible: false, isAutoDismiss: true); }); }); } else { //TODO: Add patient Derma package check API Here await bookAppointmentsViewModel.insertSpecificAppointment(onError: (err) { // print(err.data["ErrorEndUserMessage"]); - LoadingUtils.hideFullScreenLoader(); + LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( title: LocaleKeys.notice.tr(context: context), context, @@ -349,19 +476,56 @@ class _ReviewAppointmentPageState extends State { isCloseButtonVisible: true, ); }, onSuccess: (apiResp) async { - LoadingUtils.hideFullScreenLoader(); + log("AppointmentNo: ${symptomsCheckerViewModel.isBookingFromSymptomsChecker}"); + // Check if booking is from symptoms checker and call the API + if (symptomsCheckerViewModel.isBookingFromSymptomsChecker) { + final appointmentNo = apiResp.data['AppointmentNo']?.toString() ?? ''; + final doctorId = bookAppointmentsViewModel.selectedDoctor.doctorID?.toString() ?? ''; + + // Convert date and time to ISO 8601 format with timezone + DateTime? appointmentDateTime; + try { + // Combine date (YYYY-MM-DD) and time (HH:MM) into ISO format string + final dateTimeString = '${bookAppointmentsViewModel.selectedAppointmentDate}T${bookAppointmentsViewModel.selectedAppointmentTime}:00'; + appointmentDateTime = DateTime.parse(dateTimeString); + } catch (e) { + log("Error parsing appointment date/time: $e"); + } + + // Convert to ISO 8601 format with UTC timezone (e.g., "2026-02-11T13:15:37.652Z") + final appointmentDate = appointmentDateTime != null ? DateUtil.getISODateFormat(appointmentDateTime.toUtc()) : ''; + final mobileNumber = appState.getAuthenticatedUser()?.mobileNumber ?? ''; + final fileNo = appState.getAuthenticatedUser()?.patientId?.toString() ?? ''; + final projectId = bookAppointmentsViewModel.selectedDoctor.projectID ?? 0; + final clinicId = bookAppointmentsViewModel.selectedDoctor.clinicID ?? 0; + + await symptomsCheckerViewModel.saveAppointmentDetailsForSymptomsChecker( + fileNo: fileNo, + appointmentNo: appointmentNo, + doctorId: doctorId, + appointmentDate: appointmentDate, + mobileNumber: mobileNumber, + projectId: projectId, + clinicId: clinicId, + onSuccess: (response) { + // Success - continue with normal flow + debugPrint("onSuccess called for saveAppointmentDetailsForSymptomsChecker: ${response.data}"); + }, + onError: (error) { + // Log error but don't block the user flow + debugPrint("Error saving symptoms checker appointment: $error"); + }, + ); + } + + LoaderBottomSheet.hideLoader(); await Future.delayed(Duration(milliseconds: 50)).then((value) async { - LoadingUtils.showFullScreenLoader(barrierDismissible: true, isSuccessDialog: true, loadingText: LocaleKeys.appointmentSuccess.tr()); - await Future.delayed(Duration(milliseconds: 4000)).then((value) { - LoadingUtils.hideFullScreenLoader(); + showCommonBottomSheetWithoutHeight(context, + child: Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentSuccess.tr()).paddingSymmetrical(0.h, 24.h), callBackFunc: () { bookAppointmentsViewModel.setIsLiveCareSchedule(false); - Navigator.pushAndRemoveUntil( - context, - CustomPageRoute( - page: LandingNavigation(), - ), - (r) => false); - }); + bookAppointmentsViewModel.setIsPatientRescheduleAppointment(false); + Navigator.pushAndRemoveUntil(context, CustomPageRoute(page: LandingNavigation()), (r) => false); + }, isFullScreen: false, isCloseButtonVisible: false, isAutoDismiss: true); }); }); } diff --git a/lib/presentation/book_appointment/search_doctor_by_name.dart b/lib/presentation/book_appointment/search_doctor_by_name.dart index fa871f50..165acfbf 100644 --- a/lib/presentation/book_appointment/search_doctor_by_name.dart +++ b/lib/presentation/book_appointment/search_doctor_by_name.dart @@ -1,3 +1,4 @@ +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; @@ -39,6 +40,7 @@ class _SearchDoctorByNameState extends State { @override void initState() { + Clarity.setCurrentScreenName('Search By Doctor Name Page'); _scrollController = ScrollController(); super.initState(); } @@ -52,7 +54,7 @@ class _SearchDoctorByNameState extends State { children: [ Expanded( child: CollapsingListView( - title: LocaleKeys.chooseDoctor.tr(), + title: LocaleKeys.chooseDoctor.tr(context: context), child: SingleChildScrollView( child: Padding( padding: EdgeInsets.symmetric(horizontal: 24.h), @@ -142,49 +144,49 @@ class _SearchDoctorByNameState extends State { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - if (bookAppointmentsVM.isDoctorSearchByNameStarted) - Row( - children: [ - CustomButton( - text: LocaleKeys.byClinic.tr(context: context), - onPressed: () { - bookAppointmentsVM.sortFilteredDoctorList(true); - }, - backgroundColor: bookAppointmentsVM.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, - borderColor: bookAppointmentsVM.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withOpacity(0.2), - textColor: bookAppointmentsVM.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, - fontSize: 12, - fontWeight: FontWeight.w500, - borderRadius: 10, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - ), - SizedBox(width: 8.h), - CustomButton( - text: LocaleKeys.byHospital.tr(context: context), - onPressed: () { - bookAppointmentsVM.sortFilteredDoctorList(false); - }, - backgroundColor: bookAppointmentsVM.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, - borderColor: bookAppointmentsVM.isSortByClinic ? AppColors.textColor.withOpacity(0.2) : AppColors.primaryRedColor, - textColor: bookAppointmentsVM.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, - fontSize: 12, - fontWeight: FontWeight.w500, - borderRadius: 10, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - ), - ], - ).paddingSymmetrical(0.h, 0.h), + // if (bookAppointmentsVM.isDoctorSearchByNameStarted) + // Row( + // children: [ + // CustomButton( + // text: LocaleKeys.byClinic.tr(context: context), + // onPressed: () { + // bookAppointmentsVM.sortFilteredDoctorList(true); + // }, + // backgroundColor: bookAppointmentsVM.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, + // borderColor: bookAppointmentsVM.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withOpacity(0.2), + // textColor: bookAppointmentsVM.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, + // fontSize: 12, + // isBold: true, + // borderRadius: 10, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 40.h, + // ), + // SizedBox(width: 8.h), + // CustomButton( + // text: LocaleKeys.byHospital.tr(context: context), + // onPressed: () { + // bookAppointmentsVM.sortFilteredDoctorList(false); + // }, + // backgroundColor: bookAppointmentsVM.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, + // borderColor: bookAppointmentsVM.isSortByClinic ? AppColors.textColor.withOpacity(0.2) : AppColors.primaryRedColor, + // textColor: bookAppointmentsVM.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, + // fontSize: 12, + // isBold: true, + // borderRadius: 10, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 40.h, + // ), + // ], + // ).paddingSymmetrical(0.h, 0.h), bookAppointmentsVM.isDoctorSearchByNameStarted ? ListView.separated( padding: EdgeInsets.only(top: 20.h), shrinkWrap: true, physics: NeverScrollableScrollPhysics(), - itemCount: bookAppointmentsVM.isDoctorsListLoading ? 5 : bookAppointmentsVM.getGroupedFilteredDoctorsList().length, + itemCount: bookAppointmentsVM.isDoctorsListLoading ? 5 : bookAppointmentsVM.filteredDoctorList.length, itemBuilder: (context, index) { - final isExpanded = bookAppointmentsVM.expandedGroupIndex == index; - final groupedDoctors = bookAppointmentsVM.getGroupedFilteredDoctorsList(); + // final isExpanded = bookAppointmentsVM.expandedGroupIndex == index; + // final groupedDoctors = bookAppointmentsVM.getGroupedFilteredDoctorsList(); return bookAppointmentsVM.isDoctorsListLoading ? DoctorCard( @@ -203,112 +205,185 @@ class _SearchDoctorByNameState extends State { duration: Duration(milliseconds: 300), curve: Curves.easeInOut, decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true), - child: InkWell( - onTap: () { - bookAppointmentsVM.toggleGroupExpansion(index); - // After rebuild, ensure the expanded item is visible - WidgetsBinding.instance.addPostFrameCallback((_) { - final key = _itemKeys[index]; - if (key != null && key.currentContext != null && bookAppointmentsVM.expandedGroupIndex == index) { - Scrollable.ensureVisible( - key.currentContext!, - duration: Duration(milliseconds: 350), - curve: Curves.easeInOut, - alignment: 0.1, + child: Container( + key: ValueKey(index), + padding: EdgeInsets.only(top: 12.h), + child: DoctorCard( + doctorsListResponseModel: bookAppointmentsVM.filteredDoctorList[index], + isLoading: false, + bookAppointmentsViewModel: bookAppointmentsViewModel, + isDoctorNameSearch: true, + ).paddingSymmetrical(16.h, 0.h).onPress(() async { + bookAppointmentsVM.setSelectedDoctor(bookAppointmentsVM.filteredDoctorList[index]); + LoaderBottomSheet.showLoader(); + await bookAppointmentsVM.getDoctorProfile( + onSuccess: (dynamic respData) { + LoaderBottomSheet.hideLoader(); + Navigator.of(context).push( + CustomPageRoute( + page: DoctorProfilePage(isDoctorAllowedToBook: true), + ), + ); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, ); - } - }); - }, - child: Padding( - padding: EdgeInsets.all(16.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - CustomButton( - text: "${groupedDoctors[index].length} ${'doctors'}", - onPressed: () {}, - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, - textColor: AppColors.blackColor, - fontSize: 10, - fontWeight: FontWeight.w500, - borderRadius: 8, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 30.h), - Icon(isExpanded ? Icons.expand_less : Icons.expand_more), - ], - ), - SizedBox(height: 8.h), - // Clinic/Hospital name as group title - Text( - bookAppointmentsVM.isSortByClinic - ? (groupedDoctors[index].first.clinicName ?? 'Unknown') - : (groupedDoctors[index].first.projectName ?? 'Unknown'), - style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), - overflow: TextOverflow.ellipsis, - ), - // Expanded content - list of doctors in this group - AnimatedSwitcher( - duration: Duration(milliseconds: 400), - child: isExpanded - ? Container( - key: ValueKey(index), - padding: EdgeInsets.only(top: 12.h), - child: Column( - children: groupedDoctors[index].asMap().entries.map((entry) { - final doctorIndex = entry.key; - final doctor = entry.value; - final isLastDoctor = doctorIndex == groupedDoctors[index].length - 1; - return Column( - children: [ - DoctorCard( - doctorsListResponseModel: doctor, - isLoading: false, - bookAppointmentsViewModel: bookAppointmentsViewModel, - ).onPress(() async { - bookAppointmentsVM.setSelectedDoctor(doctor); - LoaderBottomSheet.showLoader(); - await bookAppointmentsVM.getDoctorProfile( - onSuccess: (dynamic respData) { - LoaderBottomSheet.hideLoader(); - Navigator.of(context).push( - CustomPageRoute( - page: DoctorProfilePage(), - ), - ); - }, - onError: (err) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: err), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }, - ); - }), - if (!isLastDoctor) - Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), - ], - ); - }).toList(), - ), - ) - : SizedBox.shrink(), - ), - ], - ), - ), + }, + ); + // Column( + // children: bookAppointmentsVM.doctorsList[index].map((entry) { + // final doctorIndex = entry.key; + // final doctor = entry.value; + // final isLastDoctor = doctorIndex == groupedDoctors[index].length - 1; + // return Column( + // children: [ + // DoctorCard( + // doctorsListResponseModel: doctor, + // isLoading: false, + // bookAppointmentsViewModel: bookAppointmentsViewModel, + // ).onPress(() async { + // bookAppointmentsVM.setSelectedDoctor(doctor); + // LoaderBottomSheet.showLoader(); + // await bookAppointmentsVM.getDoctorProfile( + // onSuccess: (dynamic respData) { + // LoaderBottomSheet.hideLoader(); + // Navigator.of(context).push( + // CustomPageRoute( + // page: DoctorProfilePage(), + // ), + // ); + // }, + // onError: (err) { + // LoaderBottomSheet.hideLoader(); + // showCommonBottomSheetWithoutHeight( + // context, + // child: Utils.getErrorWidget(loadingText: err), + // callBackFunc: () {}, + // isFullScreen: false, + // isCloseButtonVisible: true, + // ); + // }, + // ); + // }), + // if (!isLastDoctor) + // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), + // ], + // ); + // }).toList(), + // ), + }), + // InkWell( + // onTap: () { + // bookAppointmentsVM.toggleGroupExpansion(index); + // // After rebuild, ensure the expanded item is visible + // WidgetsBinding.instance.addPostFrameCallback((_) { + // final key = _itemKeys[index]; + // if (key != null && key.currentContext != null && bookAppointmentsVM.expandedGroupIndex == index) { + // Scrollable.ensureVisible( + // key.currentContext!, + // duration: Duration(milliseconds: 350), + // curve: Curves.easeInOut, + // alignment: 0.1, + // ); + // } + // }); + // }, + // child: Padding( + // padding: EdgeInsets.all(16.h), + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // CustomButton( + // text: "${groupedDoctors[index].length} ${'doctors'}", + // onPressed: () {}, + // backgroundColor: AppColors.greyColor, + // borderColor: AppColors.greyColor, + // textColor: AppColors.blackColor, + // fontSize: 10, + // isBold: true, + // borderRadius: 8, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 30.h), + // Icon(isExpanded ? Icons.expand_less : Icons.expand_more), + // ], + // ), + // SizedBox(height: 8.h), + // // Clinic/Hospital name as group title + // Text( + // bookAppointmentsVM.isSortByClinic + // ? (groupedDoctors[index].first.clinicName ?? 'Unknown') + // : (groupedDoctors[index].first.projectName ?? 'Unknown'), + // style: TextStyle(fontSize: 16.h, isBold: true), + // overflow: TextOverflow.ellipsis, + // ), + // // Expanded content - list of doctors in this group + // // AnimatedSwitcher( + // // duration: Duration(milliseconds: 400), + // // child: isExpanded + // // ? Container( + // // key: ValueKey(index), + // // padding: EdgeInsets.only(top: 12.h), + // // child: Column( + // // children: groupedDoctors[index].asMap().entries.map((entry) { + // // final doctorIndex = entry.key; + // // final doctor = entry.value; + // // final isLastDoctor = doctorIndex == groupedDoctors[index].length - 1; + // // return Column( + // // children: [ + // // DoctorCard( + // // doctorsListResponseModel: doctor, + // // isLoading: false, + // // bookAppointmentsViewModel: bookAppointmentsViewModel, + // // ).onPress(() async { + // // bookAppointmentsVM.setSelectedDoctor(doctor); + // // LoaderBottomSheet.showLoader(); + // // await bookAppointmentsVM.getDoctorProfile( + // // onSuccess: (dynamic respData) { + // // LoaderBottomSheet.hideLoader(); + // // Navigator.of(context).push( + // // CustomPageRoute( + // // page: DoctorProfilePage(), + // // ), + // // ); + // // }, + // // onError: (err) { + // // LoaderBottomSheet.hideLoader(); + // // showCommonBottomSheetWithoutHeight( + // // context, + // // child: Utils.getErrorWidget(loadingText: err), + // // callBackFunc: () {}, + // // isFullScreen: false, + // // isCloseButtonVisible: true, + // // ); + // // }, + // // ); + // // }), + // // if (!isLastDoctor) + // // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), + // // ], + // // ); + // // }).toList(), + // // ), + // // ) + // // : SizedBox.shrink(), + // // ), + // ], + // ), + // ), + // ), ), ), ), - ), - ); + )); }, separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h), ) @@ -368,7 +443,7 @@ class _SearchDoctorByNameState extends State { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10.r, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 50.h, diff --git a/lib/presentation/book_appointment/select_clinic_page.dart b/lib/presentation/book_appointment/select_clinic_page.dart index aebb90fd..cf1cd897 100644 --- a/lib/presentation/book_appointment/select_clinic_page.dart +++ b/lib/presentation/book_appointment/select_clinic_page.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; @@ -7,6 +8,7 @@ import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; +import 'package:hmg_patient_app_new/core/location_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -15,6 +17,8 @@ import 'package:hmg_patient_app_new/features/book_appointments/book_appointments import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/get_clinic_list_response_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/get_livecare_clinics_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/appointment_via_region_viewmodel.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/facility_selection.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/doctor_list_api_response.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/faculity_selection/facility_type_selection_widget.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart'; @@ -52,12 +56,16 @@ class _SelectClinicPageState extends State { late AppointmentViaRegionViewmodel regionalViewModel; late AppState appState; late BookAppointmentsViewModel bookAppointmentsViewModel; + late String name; @override void initState() { + Clarity.setCurrentScreenName('Select Clinic Page'); scheduleMicrotask(() { bookAppointmentsViewModel.getClinics(); }); + + name = (widget.calculatorType?.name.toLowerCase() == "bmi" ? widget.calculatorType?.name.toUpperCase() : widget.calculatorType?.name.toCamelCase) ?? ""; super.initState(); } @@ -74,28 +82,29 @@ class _SelectClinicPageState extends State { appState = getIt.get(); if (widget.calculatorType != null) { return CollapsingListView( - title: "Your ${widget.calculatorType!.name.toCamelCase}", + title: appState.isArabic() ? widget.calculatorType!.displayName.toCamelCase : widget.calculatorType!.displayName.toCamelCase, bottomChild: Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, customBorder: BorderRadius.only(topLeft: Radius.circular(24.r), topRight: Radius.circular(24.r))), padding: EdgeInsets.symmetric(vertical: 20.h, horizontal: 20.h), child: CustomButton( - text: LocaleKeys.bookAppo.tr(context: context), - onPressed: () { - if (widget.calculatedResult["clinicId"] == null) { - bookAppointmentsViewModel.setIsDoctorsListLoading(true); - bookAppointmentsViewModel.isGetDocForHealthCal = true; - bookAppointmentsViewModel.calculationID = widget.calculatedResult["calculationID"]; - Navigator.push(context, CustomPageRoute(page: SelectDoctorPage())); - } else { - onClinicSelected(GetClinicsListResponseModel(clinicID: widget.calculatedResult["clinicId"], clinicDescription: "asdfds", clinicDescriptionN: "asdfds")); - } - }, - icon: null, - fontSize: 16.f, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - borderRadius: 12.r, - fontWeight: FontWeight.w500), + text: LocaleKeys.bookAppo.tr(context: context), + onPressed: () { + if (widget.calculatedResult["clinicId"] == null) { + bookAppointmentsViewModel.setIsDoctorsListLoading(true); + bookAppointmentsViewModel.isGetDocForHealthCal = true; + bookAppointmentsViewModel.calculationID = widget.calculatedResult["calculationID"]; + Navigator.push(context, CustomPageRoute(page: SelectDoctorPage())); + } else { + onClinicSelected(GetClinicsListResponseModel(clinicID: widget.calculatedResult["clinicId"], clinicDescription: "asdfds", clinicDescriptionN: "asdfds")); + } + }, + icon: null, + fontSize: 16.f, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + borderRadius: 12.r, + fontWeight: FontWeight.w600, + ), ), child: getCalculatorResultWidget(type: widget.calculatorType!, calculatedResult: widget.calculatedResult).paddingSymmetrical(18.w, 24.h), ); @@ -263,6 +272,7 @@ class _SelectClinicPageState extends State { } Widget resultWidget({required HealthCalculatorsTypeEnum type, dynamic calculatedResult}) { + AppState appState = getIt(); return Column( children: [ if (type == HealthCalculatorsTypeEnum.bmi) ...[ @@ -616,7 +626,7 @@ class _SelectClinicPageState extends State { SizedBox( width: 8.w, ), - calculatedResult["lastPeriodDate"].toString().toText16(color: AppColors.successColor, weight: FontWeight.w600), + calculatedResult["lastPeriodDate"].toString().toText16(color: AppColors.successColor, isBold: true), ], ), ], @@ -638,7 +648,7 @@ class _SelectClinicPageState extends State { SizedBox( width: 8.w, ), - calculatedResult["ovulationDate"].toString().toText16(color: AppColors.successColor, weight: FontWeight.w600), + calculatedResult["ovulationDate"].toString().toText16(color: AppColors.successColor, isBold: true), ], ), SizedBox(height: 8.h), @@ -652,7 +662,7 @@ class _SelectClinicPageState extends State { borderRadius: 8.h, textColor: AppColors.textColor), SizedBox(height: 16.h), - "Fertility Window".toText16(color: AppColors.textColor, weight: FontWeight.w600), + appState.isArabic() ? "فترة الخصوبة".toText16(color: AppColors.textColor, isBold: true) : "Fertility Window".toText16(color: AppColors.textColor, isBold: true), SizedBox(height: 8.h), Row( children: [ @@ -660,7 +670,7 @@ class _SelectClinicPageState extends State { SizedBox( width: 8.w, ), - calculatedResult["fertileWindowStart"].toString().toText13(color: AppColors.successColor, weight: FontWeight.w600), + calculatedResult["fertileWindowStart"].toString().toText13(color: AppColors.successColor, isBold: true), SizedBox( width: 4.w, ), @@ -668,12 +678,15 @@ class _SelectClinicPageState extends State { SizedBox( width: 4.w, ), - calculatedResult["fertileWindowEnd"].toString().toText13(color: AppColors.successColor, weight: FontWeight.w600), + calculatedResult["fertileWindowEnd"].toString().toText13(color: AppColors.successColor, isBold: true), ], ), SizedBox(height: 8.h), - "This is your fertile window. Maintaining a healthy calorie range supports your body during this period, considering your Basal Metabolic Rate and activity. Your Body Mass Index is within the healthy range." - .toText12(height: 1.5, color: AppColors.textColorLight, fontWeight: FontWeight.w500) + appState.isArabic() + ? "هذه هي فترة خصوبتك. يساعد الحفاظ على نطاق صحي من السعرات الحرارية في دعم جسمك خلال هذه الفترة، مع مراعاة معدل الأيض الأساسي ومستوى نشاطك. مؤشر كتلة جسمك ضمن النطاق الصحي." + .toText12(height: 1.5, color: AppColors.textColorLight, isBold: true) + : "This is your fertile window. Maintaining a healthy calorie range supports your body during this period, considering your Basal Metabolic Rate and activity. Your Body Mass Index is within the healthy range." + .toText12(height: 1.5, color: AppColors.textColorLight, isBold: true) ], ), ), @@ -694,7 +707,7 @@ class _SelectClinicPageState extends State { ), Row( children: [ - "Tips to keep in mind".toText16(color: AppColors.textColor, weight: FontWeight.w600), + appState.isArabic() ? "نصائح هامة".toText16(color: AppColors.textColor, isBold: true) : "Tips to keep in mind".toText16(color: AppColors.textColor, isBold: true), ], ), ], @@ -702,13 +715,13 @@ class _SelectClinicPageState extends State { SizedBox(height: 8.h), Column( children: [ - _buildTipRow("Drink before you feel thirsty."), + _buildTipRow(appState.isArabic() ? "اشربي الماء قبل الشعور بالعطش" : "Drink before you feel thirsty."), SizedBox(height: 4.h), - _buildTipRow("Keep a refillable bottle next to you."), + _buildTipRow(appState.isArabic() ? "احتفظي بزجاجة ماء قابلة لإعادة التعبئة بجانبك" : "Keep a refillable bottle next to you."), SizedBox(height: 4.h), - _buildTipRow("Track your daily intake to stay motivated."), + _buildTipRow(appState.isArabic() ? "تابعي استهلاكك اليومي للحفاظ على حماسك" : "Track your daily intake to stay motivated."), SizedBox(height: 4.h), - _buildTipRow("Choose sparkling water instead of soda."), + _buildTipRow(appState.isArabic() ? "اختاري المياه الفوارة بدلاً من المشروبات الغازية" : "Choose sparkling water instead of soda."), ], ).paddingOnly(left: 4.w, right: 4.w) ], @@ -732,7 +745,7 @@ class _SelectClinicPageState extends State { children: [ Utils.buildSvgWithAssets(icon: AppAssets.pregnancyDueDateAccordion, width: 30.h, height: 30.h), SizedBox(width: 8.w), - calculatedResult["dueDate"].toString().toText16(color: AppColors.successColor, weight: FontWeight.w600), + calculatedResult["dueDate"].toString().toText16(color: AppColors.successColor, isBold: true), ], ), Expanded(child: SizedBox(width: 8.w)), @@ -759,7 +772,7 @@ class _SelectClinicPageState extends State { children: [ Row( children: [ - "First Trimester".toText16(color: AppColors.textColor, weight: FontWeight.w600), + "First Trimester".toText16(color: AppColors.textColor, isBold: true), Expanded(child: SizedBox(width: 8.h)), CustomChipWidget( height: 30.h, @@ -779,7 +792,7 @@ class _SelectClinicPageState extends State { SizedBox( width: 8.w, ), - calculatedResult["firstTrimester"]["start"].toString().toText13(color: AppColors.successColor, weight: FontWeight.w600), + calculatedResult["firstTrimester"]["start"].toString().toText13(color: AppColors.successColor, isBold: true), SizedBox( width: 4.w, ), @@ -787,7 +800,7 @@ class _SelectClinicPageState extends State { SizedBox( width: 4.w, ), - calculatedResult["firstTrimester"]["end"].toString().toText13(color: AppColors.successColor, weight: FontWeight.w600), + calculatedResult["firstTrimester"]["end"].toString().toText13(color: AppColors.successColor, isBold: true), ], ), SizedBox(height: 8.h), @@ -803,7 +816,7 @@ class _SelectClinicPageState extends State { children: [ Row( children: [ - "Second Trimester".toText16(color: AppColors.textColor, weight: FontWeight.w600), + "Second Trimester".toText16(color: AppColors.textColor, isBold: true), Expanded(child: SizedBox(width: 8.h)), CustomChipWidget( height: 30.h, @@ -823,7 +836,7 @@ class _SelectClinicPageState extends State { SizedBox( width: 8.w, ), - calculatedResult["secondTrimester"]["start"].toString().toText13(color: AppColors.successColor, weight: FontWeight.w600), + calculatedResult["secondTrimester"]["start"].toString().toText13(color: AppColors.successColor, isBold: true), SizedBox( width: 4.w, ), @@ -831,7 +844,7 @@ class _SelectClinicPageState extends State { SizedBox( width: 4.w, ), - calculatedResult["secondTrimester"]["end"].toString().toText13(color: AppColors.successColor, weight: FontWeight.w600), + calculatedResult["secondTrimester"]["end"].toString().toText13(color: AppColors.successColor, isBold: true), ], ), SizedBox(height: 8.h), @@ -847,7 +860,7 @@ class _SelectClinicPageState extends State { children: [ Row( children: [ - "Third Trimester".toText16(color: AppColors.textColor, weight: FontWeight.w600), + "Third Trimester".toText16(color: AppColors.textColor, isBold: true), Expanded(child: SizedBox(width: 8.h)), CustomChipWidget( height: 30.h, @@ -867,7 +880,7 @@ class _SelectClinicPageState extends State { SizedBox( width: 8.w, ), - calculatedResult["thirdTrimester"]["start"].toString().toText13(color: AppColors.successColor, weight: FontWeight.w600), + calculatedResult["thirdTrimester"]["start"].toString().toText13(color: AppColors.successColor, isBold: true), SizedBox( width: 4.w, ), @@ -875,7 +888,7 @@ class _SelectClinicPageState extends State { SizedBox( width: 4.w, ), - calculatedResult["thirdTrimester"]["end"].toString().toText13(color: AppColors.successColor, weight: FontWeight.w600), + calculatedResult["thirdTrimester"]["end"].toString().toText13(color: AppColors.successColor, isBold: true), ], ), SizedBox(height: 8.h), @@ -901,7 +914,7 @@ class _SelectClinicPageState extends State { ), ), Expanded( - child: text.toText12(color: AppColors.textColorLight, fontWeight: FontWeight.w500, height: 1.2.h), + child: text.toText12(color: AppColors.textColorLight, isBold: true, height: 1.2.h), ), ], ); @@ -921,7 +934,7 @@ class _SelectClinicPageState extends State { children: [ ('${calories.toStringAsFixed(0)}').toText32(color: getTextColor(title), isBold: true), SizedBox(width: 10.w), - hide ? SizedBox() : 'kcal/day'.toText12(color: AppColors.inputLabelTextColor, isBold: true, fontWeight: FontWeight.w600) + hide ? SizedBox() : 'kcal/day'.toText12(color: AppColors.inputLabelTextColor, isBold: true) ], ), _buildStatusIcon(title) @@ -947,9 +960,9 @@ class _SelectClinicPageState extends State { ), SizedBox(height: 8.h), ], - title.toText16(color: AppColors.textColor, weight: FontWeight.w600), + title.toText16(color: AppColors.textColor, isBold: true), SizedBox(height: 8.h), - description.toText12(height: 1.2.h, color: AppColors.textColorLight, fontWeight: FontWeight.w500) + description.toText12(height: 1.2.h, color: AppColors.textColorLight, isBold: true) ], ), ); @@ -1026,6 +1039,7 @@ class _SelectClinicPageState extends State { //17 and 235 void handleDoctorScreen(GetClinicsListResponseModel clinic) async { + regionalViewModel.flush(); if (widget.isFromRegionFlow) { //Dental Clinic Flow if (clinic.clinicID == 17) { @@ -1060,10 +1074,28 @@ class _SelectClinicPageState extends State { ); } } else { + // if (clinic.clinicID == 253) { + // LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr(context: context)); + // await bookAppointmentsViewModel.getLaserHospitals( + // onSuccess: (_) { + // LoaderBottomSheet.hideLoader(); + // _showLaserHospitalBottomSheet(); + // }, + // onError: (err) { + // LoaderBottomSheet.hideLoader(); + // }, + // ); + // return; + // } var bottomSheetType = RegionBottomSheetType.FOR_CLINIIC; - if (clinic.clinicID == 17 || clinic.clinicID == 253) { + if (clinic.clinicID == 17) { + // regionalViewModel.setBottomSheetState(AppointmentViaRegionState.HOSPITAL_SELECTION); + // bottomSheetType = RegionBottomSheetType.REGION_FOR_DENTAL_AND_LASER; bottomSheetType = RegionBottomSheetType.REGION_FOR_DENTAL_AND_LASER; } + // if (clinic.clinicID == 253) { + // bottomSheetType = RegionBottomSheetType.REGION_FOR_DENTAL_AND_LASER; + // } openRegionListBottomSheet(context, bottomSheetType); } } @@ -1071,7 +1103,6 @@ class _SelectClinicPageState extends State { void openRegionListBottomSheet(BuildContext context, RegionBottomSheetType type) { bookAppointmentsViewModel.setProjectID(null); - regionalViewModel.flush(); regionalViewModel.setBottomSheetType(type); // AppointmentViaRegionViewmodel? viewmodel = null; showCommonBottomSheetWithoutHeight(context, title: "", titleWidget: Consumer(builder: (_, data, __) => getTitle(data)), isDismissible: false, @@ -1105,10 +1136,19 @@ class _SelectClinicPageState extends State { regionalViewModel.handleLastStepForRegion(); } else if (regionalViewModel.regionBottomSheetType == RegionBottomSheetType.FOR_CLINIIC) { regionalViewModel.setBottomSheetState(AppointmentViaRegionState.DOCTOR_SELECTION); - regionalViewModel.handleLastStepForClinic(); + var appointmentsViewModel = Provider.of(context, listen: false); + if (appointmentsViewModel.selectedClinic.clinicID == 253) { + appointmentsViewModel.setProjectID(regionalViewModel.selectedHospital?.patientDoctorAppointmentList!.first.iD?.toString() ?? ""); + appointmentsViewModel.resetLaserData(); + appointmentsViewModel.getLaserClinic(); + regionalViewModel.handleLastStepForClinicForDentalAndLaser(appointmentsViewModel.selectedClinic.clinicID ?? -1); + } else { + regionalViewModel.handleLastStepForClinic(); + } } else if (regionalViewModel.regionBottomSheetType == RegionBottomSheetType.REGION_FOR_DENTAL_AND_LASER) { var appointmentsViewModel = Provider.of(context, listen: false); regionalViewModel.setBottomSheetState(AppointmentViaRegionState.DOCTOR_SELECTION); + appointmentsViewModel.setProjectID(regionalViewModel.selectedHospital?.hospitalList.first.iD?.toString() ?? ""); regionalViewModel.handleLastStepForClinicForDentalAndLaser(appointmentsViewModel.selectedClinic.clinicID ?? -1); } }, @@ -1118,6 +1158,8 @@ class _SelectClinicPageState extends State { selectedFacility: data.selectedFacility, hmcCount: data.hmcCount, hmgCount: data.hmgCount, + sortByLocation: data.sortByLocation, + onSortByLocationToggle: (value) => _handleSortByLocationToggle(value, data), ); } if (data.bottomSheetState == AppointmentViaRegionState.DOCTOR_SELECTION) { @@ -1129,6 +1171,7 @@ class _SelectClinicPageState extends State { id = regionalViewModel.selectedHospital?.patientDoctorAppointmentList?.first.projectID?.toString() ?? ""; } if (bookAppointmentsViewModel.selectedClinic.clinicID == 17) { + bookAppointmentsViewModel.setProjectID(id); if (appState.isAuthenticated) { initDentalAppointment(); return SizedBox.shrink(); @@ -1137,12 +1180,18 @@ class _SelectClinicPageState extends State { } } - if (bookAppointmentsViewModel.selectedClinic.clinicID == 253) { - { - bookAppointmentsViewModel.resetLaserData(); - bookAppointmentsViewModel.getLaserClinic(); - } - } + // if (bookAppointmentsViewModel.selectedClinic.clinicID == 253) { + // // { + // // bookAppointmentsViewModel.resetLaserData(); + // // bookAppointmentsViewModel.getLaserClinic(); + // // Navigator.push( + // // context, + // // CustomPageRoute( + // // page: LaserAppointment(), + // // ), + // // ); + // // } + // } bookAppointmentsViewModel.setProjectID(id); return SizedBox.shrink(); } else { @@ -1153,7 +1202,7 @@ class _SelectClinicPageState extends State { getTitle(AppointmentViaRegionViewmodel data) { if (data.selectedRegionId == null) { - return LocaleKeys.selectRegion.tr(context: context).toText20(weight: FontWeight.w600); + return LocaleKeys.selectRegion.tr(context: context).toText20(isBold: true); } else { return Transform.flip( flipX: data.isArabic ? true : false, @@ -1181,7 +1230,7 @@ class _SelectClinicPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.youHaveExistingTreatmentPlan.tr(context: context).toText14(weight: FontWeight.w500), + LocaleKeys.youHaveExistingTreatmentPlan.tr(context: context).toText14(isBold: true), SizedBox(height: 8.h), Container( width: double.infinity, @@ -1236,7 +1285,7 @@ class _SelectClinicPageState extends State { ), ), SizedBox(height: 16.h), - LocaleKeys.wouldYouLikeToContinue.tr(context: context).toText14(weight: FontWeight.w500), + LocaleKeys.wouldYouLikeToContinue.tr(context: context).toText14(isBold: true), SizedBox(height: 16.h), Row( children: [ @@ -1301,4 +1350,107 @@ class _SelectClinicPageState extends State { initDentalAppointmentBookingFlow(int.parse(bookAppointmentsViewModel.currentlySelectedHospitalFromRegionFlow ?? "0")); return; } + + void _handleSortByLocationToggle(bool value, AppointmentViaRegionViewmodel regionVM) { + if (value) { + final locationUtils = getIt.get(); + locationUtils.getLocation( + isShowConfirmDialog: true, + onSuccess: (latLng) { + regionVM.setSortByLocation(true); + _refreshHospitalListAfterApi(regionVM); + }, + onFailure: () { + regionVM.setSortByLocation(false); + locationUtils.onFailureDilouge(); + }, + onLocationDeniedForever: () { + regionVM.setSortByLocation(false); + }, + ); + } else { + final appState = getIt.get(); + appState.resetLocation(); + regionVM.setSortByLocation(false); + _refreshHospitalListAfterApi(regionVM); + } + } + + void _refreshHospitalListAfterApi(AppointmentViaRegionViewmodel regionVM) { + void listener() { + if (!bookAppointmentsViewModel.isRegionListLoading) { + bookAppointmentsViewModel.removeListener(listener); + final selectedRegion = regionVM.selectedRegionId; + if (selectedRegion != null && bookAppointmentsViewModel.hospitalList?.registeredDoctorMap?[selectedRegion] != null) { + regionVM.setDisplayListAndRegionHospitalList(bookAppointmentsViewModel.hospitalList!.registeredDoctorMap![selectedRegion]); + } + } + } + + bookAppointmentsViewModel.addListener(listener); + + if (regionalViewModel.regionBottomSheetType == RegionBottomSheetType.FOR_REGION || regionalViewModel.regionBottomSheetType == RegionBottomSheetType.REGION_FOR_DENTAL_AND_LASER) { + bookAppointmentsViewModel.getRegionMappedProjectList(); + } else if (regionalViewModel.regionBottomSheetType == RegionBottomSheetType.FOR_CLINIIC) { + bookAppointmentsViewModel.getMappedDoctors(); + } + + // bookAppointmentsViewModel.getRegionMappedProjectList(); + } + + void _showLaserHospitalBottomSheet() { + final TextEditingController laserHospitalSearchController = TextEditingController(); + List filteredList = List.from(bookAppointmentsViewModel.laserHospitalsList); + + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.selectHospital.tr(context: context), + isDismissible: true, + isCloseButtonVisible: true, + child: StatefulBuilder( + builder: (context, setModalState) { + return HospitalBottomSheetBody( + searchText: laserHospitalSearchController, + displayList: filteredList, + selectedFacility: FacilitySelection.ALL, + hmcCount: bookAppointmentsViewModel.laserHospitalHmcCount, + hmgCount: bookAppointmentsViewModel.laserHospitalHmgCount, + sortByLocation: false, + onFacilityClicked: (facility) { + setModalState(() { + if (facility == FacilitySelection.ALL) { + filteredList = List.from(bookAppointmentsViewModel.laserHospitalsList); + } else if (facility == FacilitySelection.HMG) { + filteredList = bookAppointmentsViewModel.laserHospitalsList.where((h) => h.isHMC != true).toList(); + } else { + filteredList = bookAppointmentsViewModel.laserHospitalsList.where((h) => h.isHMC == true).toList(); + } + }); + }, + onHospitalClicked: (hospital) { + Navigator.of(context).pop(); // close bottom sheet + final projectID = hospital.hospitalList.isNotEmpty ? hospital.hospitalList.first.iD?.toString() : hospital.patientDoctorAppointmentList?.first.projectID?.toString(); + bookAppointmentsViewModel.setProjectID(projectID); + bookAppointmentsViewModel.resetLaserData(); + bookAppointmentsViewModel.getLaserClinic(); + Navigator.push( + context, + CustomPageRoute(page: LaserAppointment()), + ); + }, + onHospitalSearch: (value) { + setModalState(() { + if (value.isEmpty) { + filteredList = List.from(bookAppointmentsViewModel.laserHospitalsList); + } else { + filteredList = bookAppointmentsViewModel.laserHospitalsList.where((h) => h.filterName != null && h.filterName!.toLowerCase().contains(value.toLowerCase())).toList(); + } + }); + }, + ); + }, + ), + callBackFunc: () {}, + ); + } } diff --git a/lib/presentation/book_appointment/select_doctor_page.dart b/lib/presentation/book_appointment/select_doctor_page.dart index 1fc9d9ad..26ab5519 100644 --- a/lib/presentation/book_appointment/select_doctor_page.dart +++ b/lib/presentation/book_appointment/select_doctor_page.dart @@ -1,5 +1,6 @@ import 'dart:async'; +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; @@ -44,9 +45,10 @@ class _SelectDoctorPageState extends State { @override void initState() { + Clarity.setCurrentScreenName('Select Doctor Page'); _scrollController = ScrollController(); scheduleMicrotask(() { - bookAppointmentsViewModel.setIsNearestAppointmentSelected(false); + bookAppointmentsViewModel.setIsNearestAppointmentSelected(true); if (bookAppointmentsViewModel.isLiveCareSchedule) { bookAppointmentsViewModel.getLiveCareDoctorsList(); } else { @@ -88,7 +90,7 @@ class _SelectDoctorPageState extends State { // backgroundColor: AppColors.primaryRedColor, // borderColor: AppColors.primaryRedColor, // borderRadius: 12.r, - // fontWeight: FontWeight.w500), + // isBold: true), // ), child: SingleChildScrollView( controller: _scrollController, @@ -167,14 +169,14 @@ class _SelectDoctorPageState extends State { ? GestureDetector( onTap: () { searchEditingController.clear(); - bookAppointmentsViewModel.filterClinics(""); + bookAppointmentsViewModel.filterDoctors(""); textFocusNode.unfocus(); }, child: Utils.buildSvgWithAssets(icon: AppAssets.close_bottom_sheet_icon, width: 20.h, height: 20.h, fit: BoxFit.scaleDown), ) : null, onChange: (value) { - bookAppointmentsViewModel.filterClinics(value!); + bookAppointmentsViewModel.filterDoctors(value ?? ""); }, padding: EdgeInsets.symmetric( vertical: ResponsiveExtension(10).h, @@ -197,7 +199,7 @@ class _SelectDoctorPageState extends State { borderColor: bookAppointmentsVM.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withOpacity(0.2), textColor: bookAppointmentsVM.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, @@ -212,7 +214,7 @@ class _SelectDoctorPageState extends State { borderColor: bookAppointmentsVM.isSortByClinic ? AppColors.textColor.withOpacity(0.2) : AppColors.primaryRedColor, textColor: bookAppointmentsVM.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, fontSize: 12, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, @@ -220,15 +222,17 @@ class _SelectDoctorPageState extends State { ], ).paddingSymmetrical(0.h, 0.h), if (bookAppointmentsViewModel.isGetDocForHealthCal && bookAppointmentsVM.showSortFilterButtons) SizedBox(height: 16.h), - Row( - mainAxisSize: MainAxisSize.max, + // bookAppointmentsVM.doctorsListGrouped.isNotEmpty + // ? + Row( + mainAxisSize: MainAxisSize.max, children: [ Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.nearestAppo.tr(context: context).toText13(isBold: true), SizedBox(height: 4.h), - LocaleKeys.viewNearestAppos.tr(context: context).toText11(color: AppColors.textColorLight, weight: FontWeight.w500), + LocaleKeys.viewNearestAppos.tr(context: context).toText11(color: AppColors.textColorLight, isBold: true), ], ), const Spacer(), @@ -238,11 +242,13 @@ class _SelectDoctorPageState extends State { value: bookAppointmentsVM.isNearestAppointmentSelected, onChanged: (newValue) async { bookAppointmentsVM.setIsNearestAppointmentSelected(newValue); - }, - ), - ], - ), - ListView.separated( + bookAppointmentsVM.refreshDoctorsList(); + }, + ), + ], + ), + // : SizedBox.shrink(), + ListView.separated( padding: EdgeInsets.only(top: 16.h), shrinkWrap: true, physics: NeverScrollableScrollPhysics(), @@ -301,7 +307,7 @@ class _SelectDoctorPageState extends State { borderColor: AppColors.greyColor, textColor: AppColors.blackColor, fontSize: 10, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 8, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 30.h, @@ -315,7 +321,7 @@ class _SelectDoctorPageState extends State { bookAppointmentsVM.isSortByClinic ? (bookAppointmentsVM.doctorsListGrouped[index].first.clinicName ?? 'Unknown') : (bookAppointmentsVM.doctorsListGrouped[index].first.projectName ?? 'Unknown'), - style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), + style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600,), overflow: TextOverflow.ellipsis, ), // Expanded content - list of doctors in this group @@ -344,7 +350,7 @@ class _SelectDoctorPageState extends State { LoaderBottomSheet.hideLoader(); Navigator.of(context).push( CustomPageRoute( - page: DoctorProfilePage(), + page: DoctorProfilePage(isDoctorAllowedToBook: true,), ), ); }, onError: (err) { diff --git a/lib/presentation/book_appointment/select_livecare_clinic_page.dart b/lib/presentation/book_appointment/select_livecare_clinic_page.dart index 87ab0eb5..b9d63f55 100644 --- a/lib/presentation/book_appointment/select_livecare_clinic_page.dart +++ b/lib/presentation/book_appointment/select_livecare_clinic_page.dart @@ -1,11 +1,13 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/get_clinic_list_response_model.dart'; import 'package:hmg_patient_app_new/features/immediate_livecare/immediate_livecare_view_model.dart'; import 'package:hmg_patient_app_new/features/immediate_livecare/models/resp_models/get_livecare_immediate_clinics_response_model.dart'; @@ -55,7 +57,7 @@ class SelectLivecareClinicPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.immediateService.tr(context: context).toText18(color: AppColors.textColor, isBold: true), - LocaleKeys.noNeedToWaitGetMedicalConsultation.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.noNeedToWaitGetMedicalConsultation.tr(context: context).toText14(color: AppColors.greyTextColor, isBold: true), ], ), ), @@ -71,7 +73,7 @@ class SelectLivecareClinicPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.noVisitRequired.tr(context: context).toText18(color: AppColors.textColor, isBold: true), - LocaleKeys.livecarePoint5.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.livecarePoint5.tr(context: context).toText14(color: AppColors.greyTextColor, isBold: true), ], ), ), @@ -87,7 +89,7 @@ class SelectLivecareClinicPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.doctorWillContact.tr(context: context).toText18(color: AppColors.textColor, isBold: true), - LocaleKeys.specialisedDoctorWillContactYou.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.specialisedDoctorWillContactYou.tr(context: context).toText14(color: AppColors.greyTextColor, isBold: true), ], ), ), @@ -103,7 +105,7 @@ class SelectLivecareClinicPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.freeMedicineDelivery.tr(context: context).toText18(color: AppColors.textColor, isBold: true), - LocaleKeys.offersFreeMedicineDelivery.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.offersFreeMedicineDelivery.tr(context: context).toText14(color: AppColors.greyTextColor, isBold: true), ], ), ), @@ -114,11 +116,11 @@ class SelectLivecareClinicPage extends StatelessWidget { ), ), ), - Column( - children: [ - CustomButton( - text: LocaleKeys.yesPleasImInAHurry.tr(context: context), - onPressed: () async { + getIt.get().isAuthenticated + ? Column(children: [ + CustomButton( + text: LocaleKeys.yesPleasImInAHurry.tr(context: context), + onPressed: () async { Navigator.pop(context); GetLiveCareClinicListResponseModel liveCareClinic = GetLiveCareClinicListResponseModel( iD: selectedClinic.liveCareClinicID, @@ -152,7 +154,7 @@ class SelectLivecareClinicPage extends StatelessWidget { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10.r, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 50.h, @@ -171,14 +173,30 @@ class SelectLivecareClinicPage extends StatelessWidget { borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10.r, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 50.h, ).paddingSymmetrical(24.h, 0.h), SizedBox(height: 24.h), - ], - ), + ]) + : CustomButton( + text: LocaleKeys.loginToUseServiceLiveCare.tr(), + onPressed: () async { + await getIt.get().onLoginPressed(); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + fontSize: 16.f, + isBold: true, + borderRadius: 12.r, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 50.h, + icon: AppAssets.login1, + iconColor: AppColors.whiteColor, + iconSize: 24.h, + ).paddingSymmetrical(24.h, 120.h), ], ), ); diff --git a/lib/presentation/book_appointment/waiting_appointment/waiting_appointment_info.dart b/lib/presentation/book_appointment/waiting_appointment/waiting_appointment_info.dart index 19d0fb41..500167eb 100644 --- a/lib/presentation/book_appointment/waiting_appointment/waiting_appointment_info.dart +++ b/lib/presentation/book_appointment/waiting_appointment/waiting_appointment_info.dart @@ -98,7 +98,7 @@ class WaitingAppointmentInfo extends StatelessWidget { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 16, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 50.h, diff --git a/lib/presentation/book_appointment/waiting_appointment/waiting_appointment_online_checkin_sheet.dart b/lib/presentation/book_appointment/waiting_appointment/waiting_appointment_online_checkin_sheet.dart index 6f3a773a..11c79c10 100644 --- a/lib/presentation/book_appointment/waiting_appointment/waiting_appointment_online_checkin_sheet.dart +++ b/lib/presentation/book_appointment/waiting_appointment/waiting_appointment_online_checkin_sheet.dart @@ -63,20 +63,20 @@ class WaitingAppointmentOnlineCheckinSheet extends StatelessWidget { }); }), SizedBox(height: 16.h), - checkInOptionCard( - AppAssets.checkin_nfc_icon, - LocaleKeys.nfcNearFieldCommunication.tr(), - LocaleKeys.scanPhoneViaNFC.tr(), - ).onPress(() { - Future.delayed(const Duration(milliseconds: 500), () { - showNfcReader(context, onNcfScan: (String nfcId) { - Future.delayed(const Duration(milliseconds: 100), () { - checkScannedNFCAndQRCode(nfcId, context); - }); - }, onCancel: () {}); - }); - }), - SizedBox(height: 16.h), + // checkInOptionCard( + // AppAssets.checkin_nfc_icon, + // LocaleKeys.nfcNearFieldCommunication.tr(), + // LocaleKeys.scanPhoneViaNFC.tr(), + // ).onPress(() { + // Future.delayed(const Duration(milliseconds: 500), () { + // showNfcReader(context, onNcfScan: (String nfcId) { + // Future.delayed(const Duration(milliseconds: 100), () { + // checkScannedNFCAndQRCode(nfcId, context); + // }); + // }, onCancel: () {}); + // }); + // }), + // SizedBox(height: 16.h), checkInOptionCard( AppAssets.checkin_qr_icon, LocaleKeys.qrCode.tr(), @@ -111,7 +111,7 @@ class WaitingAppointmentOnlineCheckinSheet extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ title.toText16(isBold: true, color: AppColors.textColor), - subTitle.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + subTitle.toText12(isBold: true, color: AppColors.greyTextColor), ], ), ), diff --git a/lib/presentation/book_appointment/waiting_appointment/waiting_appointment_payment_page.dart b/lib/presentation/book_appointment/waiting_appointment/waiting_appointment_payment_page.dart index 663fd5b4..c6e17660 100644 --- a/lib/presentation/book_appointment/waiting_appointment/waiting_appointment_payment_page.dart +++ b/lib/presentation/book_appointment/waiting_appointment/waiting_appointment_payment_page.dart @@ -19,6 +19,8 @@ import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/ import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/payfort/models/apple_pay_request_insert_model.dart'; import 'package:hmg_patient_app_new/features/payfort/payfort_view_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/models/paytabs_transaction_response_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/paytabs_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; import 'package:hmg_patient_app_new/presentation/insurance/insurance_home_page.dart'; @@ -45,6 +47,7 @@ class _WaitingAppointmentPaymentPageState extends State(context); myAppointmentsViewModel = Provider.of(context); payfortViewModel = Provider.of(context); + paytabsViewModel = Provider.of(context, listen: false); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: Consumer(builder: (context, bookAppointmentsVM, child) { @@ -112,7 +116,7 @@ class _WaitingAppointmentPaymentPageState extends State { @override void initState() { + Clarity.setCurrentScreenName('Select Doctor Free Slot Page'); _calendarController = CalendarController(); scheduleMicrotask(() { _events = { @@ -73,6 +76,8 @@ class _AppointmentCalendarState extends State { bookAppointmentsViewModel = Provider.of(context, listen: false); authVM = Provider.of(context, listen: false); appState = getIt.get(); + final isArabic = appState.isArabic(); + return Padding( padding: EdgeInsets.symmetric(horizontal: 0.h), child: Column( @@ -82,104 +87,122 @@ class _AppointmentCalendarState extends State { // Row( // crossAxisAlignment: CrossAxisAlignment.center, // children: [ - // "Pick a Date".toText20(weight: FontWeight.w600).expanded, + // "Pick a Date".toText20(isBold: true).expanded, // Utils.buildSvgWithAssets(icon: AppAssets.close_bottom_sheet_icon, iconColor: Color(0xff2B353E)).onPress(() { // Navigator.of(context).pop(); // }), // ], // ), SizedBox( - height: 350.h, - child: SfCalendar( - controller: _calendarController, - minDate: DateTime.now(), - showNavigationArrow: true, - headerHeight: 60.h, - headerStyle: CalendarHeaderStyle( - backgroundColor: AppColors.scaffoldBgColor, - textAlign: TextAlign.start, - textStyle: TextStyle(fontSize: 18.f, fontWeight: FontWeight.w600, letterSpacing: -0.46, color: AppColors.primaryRedColor, fontFamily: "Poppins"), - ), - viewHeaderStyle: ViewHeaderStyle( - backgroundColor: AppColors.scaffoldBgColor, - dayTextStyle: TextStyle(fontSize: 14.f, fontWeight: FontWeight.w600, letterSpacing: -0.46, color: AppColors.textColor), - ), - view: CalendarView.month, - todayHighlightColor: Colors.transparent, - todayTextStyle: TextStyle(color: AppColors.textColor, fontWeight: FontWeight.bold), - selectionDecoration: ShapeDecoration( - color: AppColors.transparent, - shape: SmoothRectangleBorder( - borderRadius: BorderRadius.circular(10.r), - smoothness: 1, - side: BorderSide(color: AppColors.primaryRedColor, width: 1.5), - ), - ), - cellBorderColor: AppColors.transparent, - dataSource: MeetingDataSource(_getDataSource()), - monthCellBuilder: (context, details) => Padding( - padding: EdgeInsets.all(12.h), - child: details.date.day.toString().toText14( - isCenter: true, - color: details.date == _calendarController.selectedDate ? AppColors.primaryRedColor : AppColors.textColor, + height: MediaQuery.of(context).size.height * 0.45, + child: Directionality( + textDirection: isArabic ? ui.TextDirection.rtl : ui.TextDirection.ltr, + child: Localizations.override( + context: context, + locale: isArabic ? const Locale('ar', 'SA') : const Locale('en'), + child: ClarityUnmask( + child: SfCalendar( + controller: _calendarController, + minDate: DateTime.now(), + showNavigationArrow: true, + // headerHeight: 60.h, + headerStyle: CalendarHeaderStyle( + backgroundColor: AppColors.transparent, + textAlign: isArabic ? TextAlign.end : TextAlign.start, + textStyle: TextStyle(fontSize: 18.f, fontWeight: FontWeight.w600, letterSpacing: -0.46, color: AppColors.primaryRedColor), ), - ), - monthViewSettings: MonthViewSettings( - dayFormat: "EEE", - appointmentDisplayMode: MonthAppointmentDisplayMode.indicator, - showTrailingAndLeadingDates: false, - appointmentDisplayCount: 1, - monthCellStyle: MonthCellStyle( - textStyle: TextStyle(fontSize: 19.f), + viewHeaderStyle: ViewHeaderStyle( + // backgroundColor: AppColors.scaffoldBgColor, + dayTextStyle: TextStyle(fontSize: 14.f, fontWeight: FontWeight.w600, letterSpacing: -0.46, color: AppColors.textColor), + ), + view: CalendarView.month, + todayHighlightColor: Colors.transparent, + todayTextStyle: TextStyle(color: AppColors.textColor, fontWeight: FontWeight.bold), + selectionDecoration: ShapeDecoration( + color: AppColors.transparent, + shape: SmoothRectangleBorder( + borderRadius: BorderRadius.circular(10.r), + smoothness: 1, + side: BorderSide(color: AppColors.primaryRedColor, width: 1.5), + ), + ), + cellBorderColor: AppColors.transparent, + dataSource: MeetingDataSource(_getDataSource()), + monthCellBuilder: (context, details) => Padding( + padding: EdgeInsets.all(12.h), + child: details.date.day.toString().toText14( + isCenter: true, + color: details.date == _calendarController.selectedDate ? AppColors.primaryRedColor : AppColors.textColor, + isEnglishOnly: true, + ), + ), + monthViewSettings: MonthViewSettings( + dayFormat: "EEE", + appointmentDisplayMode: MonthAppointmentDisplayMode.indicator, + showTrailingAndLeadingDates: false, + appointmentDisplayCount: 1, + monthCellStyle: MonthCellStyle( + textStyle: TextStyle(fontSize: 19.f), + ), + ), + onTap: (CalendarTapDetails details) { + _calendarController.selectedDate = details.date; + _onDaySelected(details.date!); + }, + ), ), ), - onTap: (CalendarTapDetails details) { - _calendarController.selectedDate = details.date; - _onDaySelected(details.date!); - }, ), ), SizedBox(height: 10.h), Transform.translate( offset: const Offset(0.0, -10.0), - child: selectedDateDisplay.toText16(weight: FontWeight.w500), + child: ClarityUnmask(child: selectedDateDisplay.toText16(isBold: true, isEnglishOnly: !isArabic)), ), //TODO: Add Next Day Span here dayEvents.isNotEmpty - ? SizedBox( - height: 100.h, - child: SingleChildScrollView( - scrollDirection: Axis.vertical, - child: Wrap( - direction: Axis.horizontal, - alignment: WrapAlignment.start, - spacing: 6.h, - runSpacing: 6.h, - children: List.generate( - dayEvents.length, // Generate a large number of items to ensure scrolling - (index) => TimeSlotChip( - label: dayEvents[index].isoTime!, - isSelected: index == selectedButtonIndex, - onTap: () { - setState(() { - selectedButtonIndex = index; - selectedTime = dayEvents[index].isoTime!; - }); - }, + ? ClarityUnmask( + child: ConstrainedBox( + constraints: BoxConstraints( + maxHeight: MediaQuery.of(context).size.height * 0.15, + minHeight: 0, + ), + child: Directionality( + textDirection: isArabic ? ui.TextDirection.rtl : ui.TextDirection.ltr, + child: SingleChildScrollView( + scrollDirection: Axis.vertical, + child: Wrap( + direction: Axis.horizontal, + alignment: WrapAlignment.start, + spacing: 6.h, + runSpacing: 6.h, + children: List.generate( + dayEvents.length, + (index) => TimeSlotChip( + label: dayEvents[index].isoTime!, + isSelected: index == selectedButtonIndex, + onTap: () { + setState(() { + selectedButtonIndex = index; + selectedTime = dayEvents[index].isoTime!; + }); + }, + ), + ), + ), + ), + ), ), - ), - ), - ), ) : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noFreeSlot.tr(context: context)), SizedBox(height: 16.h), CustomButton( - text: LocaleKeys.select.tr(context: context), + text: LocaleKeys.selectDateTimeKey.tr(context: context), isDisabled: dayEvents.isEmpty, onPressed: () async { if (appState.isAuthenticated) { - if(selectedTime == LocaleKeys.waitingAppointment.tr(context: context)){ + if (selectedTime == LocaleKeys.waitingAppointment.tr(context: context)) { bookAppointmentsViewModel.setWaitingAppointmentProjectID(bookAppointmentsViewModel.selectedDoctor.projectID!); bookAppointmentsViewModel.setWaitingAppointmentDoctor(bookAppointmentsViewModel.selectedDoctor); @@ -190,7 +213,8 @@ class _AppointmentCalendarState extends State { ), ); } else { - bookAppointmentsViewModel.getAppointmentNearestGate(projectID: bookAppointmentsViewModel.selectedDoctor.projectID!, clinicID: bookAppointmentsViewModel.selectedDoctor.clinicID!); + bookAppointmentsViewModel.getAppointmentNearestGate( + projectID: bookAppointmentsViewModel.selectedDoctor.projectID!, clinicID: bookAppointmentsViewModel.selectedDoctor.clinicID!); bookAppointmentsViewModel.setSelectedAppointmentDateTime(selectedDate, selectedTime, selectedDateDisplay); Navigator.of(context).pop(); Navigator.of(context).push( @@ -207,7 +231,8 @@ class _AppointmentCalendarState extends State { mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center, children: [ - Lottie.asset(AppAnimations.errorAnimation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), + Lottie.asset(AppAnimations.errorAnimation, + repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), SizedBox(height: 8.h), (LocaleKeys.loginToUseService.tr(context: context)).toText16(color: AppColors.blackColor), SizedBox(height: 16.h), @@ -264,7 +289,7 @@ class _AppointmentCalendarState extends State { borderColor: AppColors.primaryRedColor, textColor: Colors.white, fontSize: 16.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10.r, padding: EdgeInsets.symmetric(horizontal: 10.w), height: 50.h, @@ -300,13 +325,18 @@ class _AppointmentCalendarState extends State { if (bookAppointmentsViewModel.isWaitingAppointmentAvailable && DateUtils.isSameDay(dateStart, DateTime.now())) { dayEvents.add(TimeSlot(isoTime: LocaleKeys.waitingAppointment.tr(context: context), start: DateTime.now(), end: DateTime.now(), vidaDate: "")); } - freeSlots.forEach((v) { + for (var v in freeSlots) { if (v.start == dateStartObj) dayEvents.add(v); - }); + } selectedButtonIndex = 0; List> timeList = []; for (var i = 0; i < dayEvents.length; i++) { - Map timeSlot = {"isoTime": dayEvents[i].isoTime, "start": dayEvents[i].start.toString(), "end": dayEvents[i].end.toString(), "vidaDate": dayEvents[i].vidaDate}; + Map timeSlot = { + "isoTime": dayEvents[i].isoTime, + "start": dayEvents[i].start.toString(), + "end": dayEvents[i].end.toString(), + "vidaDate": dayEvents[i].vidaDate + }; timeList.add(timeSlot); } if (dayEvents.isNotEmpty) { @@ -317,9 +347,10 @@ class _AppointmentCalendarState extends State { void _onDaySelected(DateTime day) { final DateFormat formatter = DateFormat('yyyy-MM-dd', "en-US"); + final isArabic = appState.isArabic(); setState(() { - selectedDateDisplay = DateUtil.getMonthDayYearDateFormatted(day); - selectedNextDate = DateUtil.getWeekDayMonthDayYearDateFormatted(day.add(Duration(days: 1)), "en"); + selectedDateDisplay = isArabic ? DateUtil.getMonthDayYearDateFormattedAr(day) : DateUtil.getMonthDayYearDateFormatted(day); + selectedNextDate = DateUtil.getWeekDayMonthDayYearDateFormatted(day.add(Duration(days: 1)), isArabic ? "ar" : "en"); _calendarController.selectedDate = day; openTimeSlotsPickerForDate(day, bookAppointmentsViewModel.docFreeSlots); selectedDate = formatter.format(day); @@ -344,33 +375,27 @@ class TimeSlotChip extends StatelessWidget { ? Container( padding: EdgeInsets.symmetric(horizontal: 14.h, vertical: 8.h), decoration: ShapeDecoration( - color: isSelected ? AppColors.warningColorYellow : AppColors.textColor, + color: isSelected ? AppColors.warningColorYellow : AppColors.whiteColor, shape: SmoothRectangleBorder( borderRadius: BorderRadius.circular(8.h), smoothness: 1, side: BorderSide(color: isSelected ? AppColors.warningColorYellow : AppColors.borderOnlyColor.withOpacity(0.2), width: 1), ), ), - child: label.toText12( - color: isSelected ? AppColors.whiteColor : Colors.black87, - fontWeight: FontWeight.w500, - ), + child: label.toText12(color: isSelected ? AppColors.whiteColor : Colors.black87, isBold: true, isEnglishOnly: true), ) : Container( padding: EdgeInsets.symmetric(horizontal: 14.h, vertical: 8.h), decoration: ShapeDecoration( - color: AppColors.whiteColor, - shape: SmoothRectangleBorder( - borderRadius: BorderRadius.circular(8.h), - smoothness: 1, - side: BorderSide(color: isSelected ? AppColors.primaryRedColor : AppColors.borderOnlyColor.withOpacity(0.2), width: 1), - ), - ), - child: label.toText12( - color: isSelected ? AppColors.primaryRedColor : AppColors.textColor, - fontWeight: FontWeight.w500, - ), - ), + color: AppColors.whiteColor, + shape: SmoothRectangleBorder( + borderRadius: BorderRadius.circular(8.h), + smoothness: 1, + side: BorderSide(color: isSelected ? AppColors.primaryRedColor : AppColors.borderOnlyColor.withOpacity(0.2), width: 1), + ), + ), + child: label.toText12(color: isSelected ? AppColors.primaryRedColor : AppColors.textColor, isBold: true, isEnglishOnly: true), + ), ); } } diff --git a/lib/presentation/book_appointment/widgets/appointment_success_reminder_bottom_sheet.dart b/lib/presentation/book_appointment/widgets/appointment_success_reminder_bottom_sheet.dart new file mode 100644 index 00000000..ec3afc40 --- /dev/null +++ b/lib/presentation/book_appointment/widgets/appointment_success_reminder_bottom_sheet.dart @@ -0,0 +1,441 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/reminder_type.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; + +enum ReminderBottomSheetStep { + success, + reminderConfirmation, + reminderTypeSelection, + creatingReminder, + reminderSuccess, + reminderError, +} + +class AppointmentSuccessReminderBottomSheet extends StatefulWidget { + final PatientAppointmentHistoryResponseModel appointmentModel; + final MyAppointmentsViewModel myAppointmentsViewModel; + final VoidCallback onComplete; + + const AppointmentSuccessReminderBottomSheet({ + Key? key, + required this.appointmentModel, + required this.myAppointmentsViewModel, + required this.onComplete, + }) : super(key: key); + + @override + State createState() => _AppointmentSuccessReminderBottomSheetState(); +} + +class _AppointmentSuccessReminderBottomSheetState extends State { + ReminderBottomSheetStep currentStep = ReminderBottomSheetStep.success; + ReminderType? selectedReminderType; + String errorMessage = ''; + bool isProcessing = false; + + @override + void initState() { + super.initState(); + // Auto-progress to reminder confirmation after showing success + Future.delayed(Duration(milliseconds: 2000), () { + if (mounted) { + setState(() { + currentStep = ReminderBottomSheetStep.reminderConfirmation; + }); + } + }); + } + + void _handleNoReminder() { + Navigator.of(context).pop(); + widget.onComplete(); + } + + void _handleYesReminder() { + setState(() { + currentStep = ReminderBottomSheetStep.reminderTypeSelection; + }); + } + + void _selectReminderType(ReminderType type) { + setState(() { + selectedReminderType = type; + }); + } + + Future _createReminder() async { + if (selectedReminderType == null) return; + + setState(() { + currentStep = ReminderBottomSheetStep.creatingReminder; + isProcessing = true; + }); + + await widget.myAppointmentsViewModel.toggleReminder( + context: context, + shouldCreateReminder: true, + reminderType: selectedReminderType!, + patientAppointmentHistoryResponseModel: widget.appointmentModel, + onSuccess: (result) { + if (mounted) { + setState(() { + currentStep = ReminderBottomSheetStep.reminderSuccess; + isProcessing = false; + }); + // Auto-close after showing success + Future.delayed(Duration(milliseconds: 2000), () { + if (mounted) { + Navigator.of(context).pop(); + widget.onComplete(); + } + }); + } + }, + onError: (error) { + if (mounted) { + setState(() { + currentStep = ReminderBottomSheetStep.reminderError; + errorMessage = error; + isProcessing = false; + }); + } + }, + ); + } + + @override + Widget build(BuildContext context) { + return Container( + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.vertical(top: Radius.circular(24.r)), + ), + padding: EdgeInsets.symmetric(horizontal: 24.w, vertical: 24.h), + child: AnimatedSwitcher( + duration: Duration(milliseconds: 300), + child: _buildStepContent(), + ), + ); + } + + Widget _buildStepContent() { + switch (currentStep) { + case ReminderBottomSheetStep.success: + return _buildSuccessStep(); + case ReminderBottomSheetStep.reminderConfirmation: + return _buildReminderConfirmationStep(); + case ReminderBottomSheetStep.reminderTypeSelection: + return _buildReminderTypeSelectionStep(); + case ReminderBottomSheetStep.creatingReminder: + return _buildCreatingReminderStep(); + case ReminderBottomSheetStep.reminderSuccess: + return _buildReminderSuccessStep(); + case ReminderBottomSheetStep.reminderError: + return _buildReminderErrorStep(); + } + } + + Widget _buildSuccessStep() { + return Column( + key: ValueKey('success'), + mainAxisSize: MainAxisSize.min, + children: [ + Utils.getSuccessWidget(loadingText: LocaleKeys.appointmentSuccess.tr(context: context)), + SizedBox(height: 16.h), + Center( + child: "Your appointment has been booked successfully!".toText14( + color: AppColors.greyTextColor, + ), + ), + ], + ); + } + + Widget _buildReminderConfirmationStep() { + return Column( + key: ValueKey('confirmation'), + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.notifications_active_outlined, + size: 56.h, + color: AppColors.primaryRedColor, + ), + SizedBox(height: 16.h), + Center(child: "Add Reminder?".toText20(isBold: true)), + SizedBox(height: 12.h), + Center( + child: "Would you like to add a reminder for this appointment?".toText14( + color: AppColors.greyTextColor, + ), + ), + SizedBox(height: 24.h), + Row( + children: [ + Expanded( + child: CustomButton( + text: LocaleKeys.cancel.tr(context: context), + onPressed: _handleNoReminder, + backgroundColor: AppColors.whiteColor, + borderColor: AppColors.greyTextColor, + textColor: AppColors.greyTextColor, + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12, + height: 48.h, + ), + ), + SizedBox(width: 12.w), + Expanded( + child: CustomButton( + text: LocaleKeys.confirm.tr(context: context), + onPressed: _handleYesReminder, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: Colors.white, + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12, + height: 48.h, + ), + ), + ], + ), + ], + ); + } + + Widget _buildReminderTypeSelectionStep() { + return Column( + key: ValueKey('type_selection'), + mainAxisSize: MainAxisSize.min, + children: [ + Center(child: "Select Reminder Type".toText20(isBold: true)), + SizedBox(height: 8.h), + Center( + child: "Choose what type of reminder you want to set".toText14( + color: AppColors.greyTextColor, + ), + ), + SizedBox(height: 24.h), + _buildReminderTypeCard( + type: ReminderType.appointment, + icon: Icons.event_outlined, + title: "Appointment Reminder", + description: "Get reminded about your upcoming appointment", + ), + SizedBox(height: 12.h), + _buildReminderTypeCard( + type: ReminderType.payment, + icon: Icons.payment_outlined, + title: "Payment Reminder", + description: "Get reminded about payment for this appointment", + ), + SizedBox(height: 12.h), + _buildReminderTypeCard( + type: ReminderType.checkIn, + icon: Icons.check_circle_outline, + title: "Check-In Reminder", + description: "Get reminded to check in for your appointment", + ), + SizedBox(height: 24.h), + Row( + children: [ + Expanded( + child: CustomButton( + text: LocaleKeys.cancel.tr(context: context), + onPressed: () { + setState(() { + currentStep = ReminderBottomSheetStep.reminderConfirmation; + selectedReminderType = null; + }); + }, + backgroundColor: AppColors.whiteColor, + borderColor: AppColors.greyTextColor, + textColor: AppColors.greyTextColor, + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12, + height: 48.h, + ), + ), + SizedBox(width: 12.w), + Expanded( + child: CustomButton( + text: "Continue", + onPressed: selectedReminderType != null ? _createReminder : null, + backgroundColor: selectedReminderType != null ? AppColors.primaryRedColor : AppColors.greyTextColor.withAlpha(76), + borderColor: selectedReminderType != null ? AppColors.primaryRedColor : AppColors.greyTextColor.withAlpha(76), + textColor: Colors.white, + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12, + height: 48.h, + ), + ), + ], + ), + ], + ); + } + + Widget _buildReminderTypeCard({ + required ReminderType type, + required IconData icon, + required String title, + required String description, + }) { + final isSelected = selectedReminderType == type; + return GestureDetector( + onTap: () => _selectReminderType(type), + child: Container( + padding: EdgeInsets.all(16.h), + decoration: BoxDecoration( + color: isSelected ? AppColors.primaryRedColor.withAlpha(26) : AppColors.scaffoldBgColor, + border: Border.all( + color: isSelected ? AppColors.primaryRedColor : AppColors.borderOnlyColor, + width: isSelected ? 2 : 1, + ), + borderRadius: BorderRadius.circular(12.r), + ), + child: Row( + children: [ + Container( + padding: EdgeInsets.all(12.h), + decoration: BoxDecoration( + color: isSelected ? AppColors.primaryRedColor : AppColors.greyTextColor.withAlpha(26), + borderRadius: BorderRadius.circular(8.r), + ), + child: Icon( + icon, + color: isSelected ? Colors.white : AppColors.greyTextColor, + size: 24.h, + ), + ), + SizedBox(width: 12.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + title.toText16( + isBold: true, + color: isSelected ? AppColors.primaryRedColor : AppColors.textColor, + ), + SizedBox(height: 4.h), + description.toText12( + color: AppColors.greyTextColor, + ), + ], + ), + ), + if (isSelected) + Icon( + Icons.check_circle, + color: AppColors.primaryRedColor, + size: 24.h, + ), + ], + ), + ), + ); + } + + Widget _buildCreatingReminderStep() { + return Column( + key: ValueKey('creating'), + mainAxisSize: MainAxisSize.min, + children: [ + CircularProgressIndicator(color: AppColors.primaryRedColor), + SizedBox(height: 24.h), + Center( + child: "Creating your reminder...".toText16( + isBold: true, + ), + ), + SizedBox(height: 8.h), + Center( + child: "Please wait while we set up your reminder".toText14( + color: AppColors.greyTextColor, + ), + ), + ], + ); + } + + Widget _buildReminderSuccessStep() { + return Column( + key: ValueKey('reminder_success'), + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.check_circle, + size: 64.h, + color: AppColors.successColor, + ), + SizedBox(height: 16.h), + Center( + child: LocaleKeys.reminderSuccess.tr(context: context).toText20( + isBold: true, + ), + ), + SizedBox(height: 8.h), + Center( + child: "Your ${selectedReminderType?.displayName ?? 'reminder'} has been set successfully!".toText14( + color: AppColors.greyTextColor, + ), + ), + ], + ); + } + + Widget _buildReminderErrorStep() { + return Column( + key: ValueKey('error'), + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.error_outline, + size: 64.h, + color: AppColors.primaryRedColor, + ), + SizedBox(height: 16.h), + Center( + child: "Error".toText20( + isBold: true, + color: AppColors.primaryRedColor, + ), + ), + SizedBox(height: 8.h), + Center( + child: errorMessage.toText14( + color: AppColors.greyTextColor, + ), + ), + SizedBox(height: 24.h), + CustomButton( + text: "Close", + onPressed: () { + Navigator.of(context).pop(); + widget.onComplete(); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: Colors.white, + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12, + height: 48.h, + ), + ], + ); + } +} + diff --git a/lib/presentation/book_appointment/widgets/bell_switch.dart b/lib/presentation/book_appointment/widgets/bell_switch.dart new file mode 100644 index 00000000..c002e59a --- /dev/null +++ b/lib/presentation/book_appointment/widgets/bell_switch.dart @@ -0,0 +1,192 @@ +import 'package:flutter/material.dart'; + +class BellAnimatedSwitch extends StatefulWidget { + final bool initialValue; + final ValueChanged? onChanged; + final Color? activeColor; + final Color? inactiveColor; + final Color? activeIconColor; + final Color? inactiveIconColor; + final Color? activeCircleColor; + final Color? inactiveCircleColor; + final Widget? activeIcon; + final Widget? inactiveIcon; + final double width; + final double height; + final Duration animationDuration; + + const BellAnimatedSwitch({ + super.key, + this.initialValue = false, + this.onChanged, + this.activeColor, + this.inactiveColor, + this.activeIconColor, + this.inactiveIconColor, + this.activeCircleColor, + this.inactiveCircleColor, + this.activeIcon, + this.inactiveIcon, + this.width = 48, + this.height = 30, + this.animationDuration = const Duration(milliseconds: 300), + }); + + @override + State createState() => BellAnimatedSwitchState(); +} + +class BellAnimatedSwitchState extends State with SingleTickerProviderStateMixin { + late bool _isActive; + late AnimationController _animationController; + late Animation _circleAlignment; + late Animation _scaleAnimation; + + @override + void initState() { + super.initState(); + _isActive = widget.initialValue; + _animationController = AnimationController( + duration: widget.animationDuration, + vsync: this, + ); + + _circleAlignment = AlignmentTween(begin: Alignment.centerLeft, end: Alignment.centerRight).animate( + CurvedAnimation(parent: _animationController, curve: Curves.easeInOut), + ); + + // Scale animation for tap feedback + _scaleAnimation = Tween(begin: 1.0, end: 0.9).animate( + CurvedAnimation( + parent: _animationController, + curve: const Interval(0.0, 0.5, curve: Curves.easeOut), + ), + ); + + if (_isActive) { + _animationController.value = 1.0; + } + } + + @override + void dispose() { + _animationController.dispose(); + super.dispose(); + } + + /// Public method to set switch value programmatically without triggering onChanged callback + void setSwitchValue(bool value, {bool animate = true}) { + if (_isActive == value) return; // No change needed + + setState(() { + _isActive = value; + if (animate) { + if (_isActive) { + _animationController.forward(); + } else { + _animationController.reverse(); + } + } else { + _animationController.value = _isActive ? 1.0 : 0.0; + } + }); + } + + void _toggle() { + setState(() { + _isActive = !_isActive; + if (_isActive) { + _animationController.forward(); + } else { + _animationController.reverse(); + } + widget.onChanged?.call(_isActive); + }); + } + + Color _getBackgroundColor() { + if (_isActive) { + return widget.activeColor ?? Colors.green.shade400; + } + return widget.inactiveColor ?? Colors.grey.shade300; + } + + Color _getCircleColor() { + if (_isActive) { + return widget.activeCircleColor ?? Colors.white; + } + return widget.inactiveCircleColor ?? Colors.white; + } + + Widget _getIcon() { + if (_isActive) { + return widget.activeIcon ?? + Icon( + Icons.check, + size: 18, + color: widget.activeIconColor ?? Colors.green.shade400, + ); + } + return widget.inactiveIcon ?? + Icon( + Icons.close, + size: 18, + color: widget.inactiveIconColor ?? Colors.grey.shade600, + ); + } + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: _toggle, + child: AnimatedBuilder( + animation: _animationController, + builder: (context, child) { + return Transform.scale( + scale: _scaleAnimation.value, + child: Container( + width: widget.width, + height: widget.height, + decoration: BoxDecoration( + color: _getBackgroundColor(), + borderRadius: BorderRadius.circular(widget.height / 2), + // boxShadow: [ + // BoxShadow( + // color: Colors.black.withAlpha(26), + // blurRadius: 4, + // offset: const Offset(0, 2), + // ), + // ], + ), + child: Stack( + children: [ + // Animated circle with icon inside + Align( + alignment: _circleAlignment.value, + child: Container( + margin: const EdgeInsets.all(4), + width: widget.height - 8, + height: widget.height - 8, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: _getCircleColor(), + boxShadow: [ + BoxShadow( + color: Colors.black.withAlpha(51), + blurRadius: 2, + offset: const Offset(0, 1), + ), + ], + ), + child: Center(child: _getIcon()), + ), + ), + ], + ), + ), + ); + }, + ), + ); + } +} diff --git a/lib/presentation/book_appointment/widgets/clinic_card.dart b/lib/presentation/book_appointment/widgets/clinic_card.dart index e7a6ca3a..68b9b1e0 100644 --- a/lib/presentation/book_appointment/widgets/clinic_card.dart +++ b/lib/presentation/book_appointment/widgets/clinic_card.dart @@ -22,6 +22,14 @@ class ClinicCard extends StatelessWidget { @override Widget build(BuildContext context) { AppState appState = getIt.get(); + + // Get clinic icon path with fallback + String getClinicIconPath() { + final clinicId = clinicsListResponseModel.clinicID ?? 1; + // Try to use specific clinic icon, fallback to default if not found + return "assets/images/clinicIcons/$clinicId.svg"; + } + return Container( padding: EdgeInsets.all(16.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration( @@ -32,7 +40,20 @@ class ClinicCard extends StatelessWidget { child: Column( children: [ Row(mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Utils.buildSvgWithAssets(icon: "assets/images/clinicIcons/${clinicsListResponseModel.clinicID ?? 1}.svg", width: 24.w, height: 24.h, fit: BoxFit.contain).toShimmer2(isShow: isLoading), + // Use Image.asset with error builder for fallback + SizedBox( + width: 24.w, + height: 24.h, + child: Utils.buildSvgWithAssets( + icon: getClinicIconPath(), + width: 24.w, + height: 24.h, + fit: BoxFit.contain, + errorAsset: "assets/images/clinicIcons/1.svg" + // Note: Add error handling in the Utils.buildSvgWithAssets if possible + // or use a try-catch wrapper + ), + ).toShimmer2(isShow: isLoading), (clinicsListResponseModel.isLiveCareClinicAndOnline ?? true) ? Utils.buildSvgWithAssets(icon: AppAssets.livecare_clinic_icon, width: 32.w, height: 32.h, fit: BoxFit.contain, applyThemeColor: false).toShimmer2(isShow: isLoading) : SizedBox.shrink(), diff --git a/lib/presentation/book_appointment/widgets/doctor_card.dart b/lib/presentation/book_appointment/widgets/doctor_card.dart index 6eecf5f8..fe7cf3e0 100644 --- a/lib/presentation/book_appointment/widgets/doctor_card.dart +++ b/lib/presentation/book_appointment/widgets/doctor_card.dart @@ -1,6 +1,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; @@ -8,13 +10,17 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/doctors_list_response_model.dart'; +import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/get_clinic_list_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/book_appointment/dental_chief_complaints_page.dart'; +import 'package:hmg_patient_app_new/presentation/book_appointment/laser/laser_appointment.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/widgets/appointment_calendar.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:lottie/lottie.dart'; import 'package:url_launcher/url_launcher.dart'; @@ -23,11 +29,13 @@ class DoctorCard extends StatelessWidget { super.key, required this.doctorsListResponseModel, required this.isLoading, + this.isDoctorNameSearch = false, required this.bookAppointmentsViewModel, }); final DoctorsListResponseModel doctorsListResponseModel; final bool isLoading; + final bool isDoctorNameSearch; final BookAppointmentsViewModel bookAppointmentsViewModel; @@ -50,10 +58,11 @@ class DoctorCard extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.center, children: [ - Image.network( - isLoading + Utils.buildImgWithNetwork( + url: isLoading ? "https://hmgwebservices.com/Images/MobileImages/OALAY/1439.png" : doctorsListResponseModel.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/OALAY/1439.png", + iconColor: AppColors.transparent, width: 63.h, height: 63.h, fit: BoxFit.cover, @@ -76,7 +85,7 @@ class DoctorCard extends StatelessWidget { children: [ Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h, applyThemeColor: false), SizedBox(height: 2.h), - "${isLoading ? 4.78 : doctorsListResponseModel.decimalDoctorRate}".toText11(isBold: true, color: AppColors.textColor), + "${isLoading ? 4.78 : doctorsListResponseModel.decimalDoctorRate}".toText11(isBold: true, color: AppColors.textColor, isEnglishOnly: true), ], ), ).circle(100).toShimmer2(isShow: isLoading), @@ -103,23 +112,31 @@ class DoctorCard extends StatelessWidget { SizedBox( child: (isLoading ? "Consultant Cardiologist" - : doctorsListResponseModel.speciality!.isNotEmpty - ? (doctorsListResponseModel.speciality!.first.length > 32 - ? '${doctorsListResponseModel.speciality!.first.substring(0, 32)}...' - : doctorsListResponseModel.speciality!.first) + : (getIt.get().isArabic() && doctorsListResponseModel.specialityN != null) + ? doctorsListResponseModel.specialityN!.isNotEmpty + ? (doctorsListResponseModel.specialityN!.first.length > 32 + ? '${doctorsListResponseModel.specialityN!.first.substring(0, 32)}...' + : doctorsListResponseModel.specialityN!.first) + : "" + : doctorsListResponseModel.speciality != null ? + doctorsListResponseModel.speciality!.isNotEmpty + ? (doctorsListResponseModel.speciality!.first.length > 32 + ? '${doctorsListResponseModel.speciality!.first.substring(0, 32)}...' + : doctorsListResponseModel.speciality!.first) : "" : "") .toString() - .toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor, maxLine: 2) + .toText12(isBold: true, color: AppColors.textColor, maxLine: 2, isEnglishOnly: true) .toShimmer2(isShow: isLoading), - ), - SizedBox(width: 6.w), - Image.network( - isLoading ? "https://hmgwebservices.com/Images/flag/SYR.png" : doctorsListResponseModel.nationalityFlagURL ?? "https://hmgwebservices.com/Images/flag/SYR.png", - width: 20.h, - height: 15.h, - fit: BoxFit.fill, - ).toShimmer2(isShow: isLoading), - ], + ), + SizedBox(width: 6.w), + Utils.buildImgWithNetwork( + url: isLoading ? "https://hmgwebservices.com/Images/flag/SYR.png" : doctorsListResponseModel.nationalityFlagURL ?? "https://hmgwebservices.com/Images/flag/SYR.png", + iconColor: AppColors.transparent, + width: 20.h, + height: 15.h, + fit: BoxFit.fill, + ).toShimmer2(isShow: isLoading), + ], ), SizedBox(height: 6.h), Wrap( @@ -127,110 +144,82 @@ class DoctorCard extends StatelessWidget { spacing: 3.h, runSpacing: 4.h, children: [ - AppCustomChipWidget( - labelText: "${isLoading ? "Cardiologist" : doctorsListResponseModel.clinicName}", - ).toShimmer2(isShow: isLoading), - AppCustomChipWidget( - labelText: "${isLoading ? "Olaya Hospital" : doctorsListResponseModel.projectName}", - ).toShimmer2(isShow: isLoading), bookAppointmentsViewModel.isNearestAppointmentSelected ? doctorsListResponseModel.nearestFreeSlot != null ? AppCustomChipWidget( - // labelText: (isLoading ? "Cardiologist" : DateUtil.getDateStringForNearestSlot(doctorsListResponseModel.nearestFreeSlot)), - richText: (isLoading ? "Cardiologist" : DateUtil.getDateStringForNearestSlot(doctorsListResponseModel.nearestFreeSlot)) - .toText10(isEnglishOnly: true, color: AppColors.whiteColor), - backgroundColor: AppColors.successColor, - textColor: AppColors.whiteColor, + labelText: (isLoading ? "Cardiologist" : DateUtil.getDateStringForNearestSlot(doctorsListResponseModel.nearestFreeSlot)), + // richText: (isLoading ? "Cardiologist" : DateUtil.getDateStringForNearestSlot(doctorsListResponseModel.nearestFreeSlot)) + // .toText10(isEnglishOnly: true, color: AppColors.textColor), + backgroundColor: AppColors.successColor.withValues(alpha: .15), + isEnglishOnly: true, + textColor: AppColors.successColor, ).toShimmer2(isShow: isLoading) : SizedBox.shrink() : SizedBox.shrink(), + AppCustomChipWidget( + labelText: "${isLoading ? "Cardiologist" : doctorsListResponseModel.clinicName}", + ).toShimmer2(isShow: isLoading), + AppCustomChipWidget( + labelText: "${isLoading ? "Olaya Hospital" : doctorsListResponseModel.projectName}", + ).toShimmer2(isShow: isLoading), ], ), ], ), ), - Expanded( - flex: 1, - child: Utils.buildSvgWithAssets(icon: AppAssets.doctor_profile_icon, width: 20.h, height: 20.h, fit: BoxFit.scaleDown).toShimmer2(isShow: isLoading), - ), + (doctorsListResponseModel.isLiveCare ?? true) + ? SizedBox.shrink() + : Expanded( + flex: 1, + child: Utils.buildSvgWithAssets(icon: AppAssets.doctor_profile_icon, width: 20.h, height: 20.h, fit: BoxFit.scaleDown).toShimmer2(isShow: isLoading), + ), ], ), - SizedBox(height: 12.h), + SizedBox(height: 16.h), CustomButton( text: LocaleKeys.bookAppo.tr(context: context), onPressed: () async { - bookAppointmentsViewModel.setSelectedDoctor(doctorsListResponseModel); - LoaderBottomSheet.showLoader(); - bookAppointmentsViewModel.isLiveCareSchedule - ? await bookAppointmentsViewModel.getLiveCareDoctorFreeSlots( - isBookingForLiveCare: true, - onSuccess: (dynamic respData) async { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - title: LocaleKeys.pickADate.tr(context: context), - context, - child: AppointmentCalendar(), - isFullScreen: false, - isCloseButtonVisible: true, - callBackFunc: () {}, - ); - }, - onError: (err) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: err), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }) - : await bookAppointmentsViewModel.getDoctorFreeSlots( - isBookingForLiveCare: false, - onSuccess: (dynamic respData) async { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - title: LocaleKeys.pickADate.tr(context: context), - context, - child: AppointmentCalendar(), - isFullScreen: false, - isCloseButtonVisible: true, - callBackFunc: () {}, - ); - }, - onError: (err) { - LoaderBottomSheet.hideLoader(); - if (bookAppointmentsViewModel.selectedClinic.clinicID == 23) { + if (isDoctorNameSearch && doctorsListResponseModel.clinicID == 17) { + GetClinicsListResponseModel selectedClinic = GetClinicsListResponseModel( + clinicID: doctorsListResponseModel.clinicID, clinicDescription: doctorsListResponseModel.clinicName, isLiveCareClinicAndOnline: false, liveCareServiceID: 0, liveCareClinicID: 0); + bookAppointmentsViewModel.setProjectID(doctorsListResponseModel.projectID.toString()); + bookAppointmentsViewModel.setSelectedClinic(selectedClinic); + bookAppointmentsViewModel.setIsChiefComplaintsListLoading(true); + Navigator.of(context).push( + CustomPageRoute( + page: DentalChiefComplaintsPage(), + ), + ); + } else if (isDoctorNameSearch && doctorsListResponseModel.clinicID == 253) { + GetClinicsListResponseModel selectedClinic = GetClinicsListResponseModel( + clinicID: doctorsListResponseModel.clinicID, clinicDescription: doctorsListResponseModel.clinicName, isLiveCareClinicAndOnline: false, liveCareServiceID: 0, liveCareClinicID: 0); + bookAppointmentsViewModel.setSelectedClinic(selectedClinic); + bookAppointmentsViewModel.getLaserClinic(); + bookAppointmentsViewModel.setIsDoctorsListLoading(true); + Navigator.of(context).push( + CustomPageRoute( + page: LaserAppointment(), + ), + ); + } else { + bookAppointmentsViewModel.setSelectedDoctor(doctorsListResponseModel); + LoaderBottomSheet.showLoader(); + bookAppointmentsViewModel.isLiveCareSchedule + ? await bookAppointmentsViewModel.getLiveCareDoctorFreeSlots( + isBookingForLiveCare: true, + onSuccess: (dynamic respData) async { + LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( + title: LocaleKeys.pickADate.tr(context: context), context, - child: Column( - mainAxisAlignment: MainAxisAlignment.center, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Lottie.asset(AppAnimations.errorAnimation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), - SizedBox(height: 8.h), - ("For booking appointments in the Physiotherapy clinic, please contact: 920066666").toText16(color: AppColors.blackColor), - SizedBox(height: 16.h), - CustomButton( - height: 40.h, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - text: LocaleKeys.callNow.tr(), - textColor: AppColors.whiteColor, - iconColor: AppColors.whiteColor, - onPressed: () { - launchUrl( - Uri.parse("tel://920066666"), - ); - }, - icon: AppAssets.call), - ], - ).center, - callBackFunc: () {}, + child: AppointmentCalendar(), isFullScreen: false, isCloseButtonVisible: true, + callBackFunc: () {}, ); - } else { + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( context, child: Utils.getErrorWidget(loadingText: err), @@ -238,21 +227,76 @@ class DoctorCard extends StatelessWidget { isFullScreen: false, isCloseButtonVisible: true, ); - } - // showCommonBottomSheetWithoutHeight( - // context, - // child: Utils.getErrorWidget(loadingText: err), - // callBackFunc: () {}, - // isFullScreen: false, - // isCloseButtonVisible: true, - // ); - }); + }) + : await bookAppointmentsViewModel.getDoctorFreeSlots( + isBookingForLiveCare: false, + onSuccess: (dynamic respData) async { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.pickADate.tr(context: context), + context, + child: AppointmentCalendar(), + isFullScreen: false, + isCloseButtonVisible: true, + callBackFunc: () {}, + ); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + if (bookAppointmentsViewModel.selectedClinic.clinicID == 23) { + showCommonBottomSheetWithoutHeight( + context, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Lottie.asset(AppAnimations.errorAnimation, repeat: true, reverse: false, frameRate: FrameRate(60), width: 100.h, height: 100.h, fit: BoxFit.fill), + SizedBox(height: 8.h), + ("For booking appointments in the Physiotherapy clinic, please contact: 920066666").toText16(color: AppColors.blackColor), + SizedBox(height: 16.h), + CustomButton( + height: 40.h, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + text: LocaleKeys.callNow.tr(), + textColor: AppColors.whiteColor, + iconColor: AppColors.whiteColor, + onPressed: () { + launchUrl( + Uri.parse("tel://920066666"), + ); + }, + icon: AppAssets.call), + ], + ).center, + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } else { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + // showCommonBottomSheetWithoutHeight( + // context, + // child: Utils.getErrorWidget(loadingText: err), + // callBackFunc: () {}, + // isFullScreen: false, + // isCloseButtonVisible: true, + // ); + }); + } }, backgroundColor: Color(0xffFEE9EA), borderColor: Color(0xffFEE9EA), textColor: Color(0xffED1C2B), fontSize: 14.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10.r, padding: EdgeInsets.fromLTRB(10.h, 0, 10.h, 0), height: 40.h, diff --git a/lib/presentation/book_appointment/widgets/doctor_rating_details.dart b/lib/presentation/book_appointment/widgets/doctor_rating_details.dart index 6d9e1cb2..df88b366 100644 --- a/lib/presentation/book_appointment/widgets/doctor_rating_details.dart +++ b/lib/presentation/book_appointment/widgets/doctor_rating_details.dart @@ -1,9 +1,9 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_rating_bar/flutter_rating_bar.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -15,181 +15,304 @@ class DoctorRatingDetails extends StatelessWidget { @override Widget build(BuildContext context) { return Consumer(builder: (context, bookAppointmentsVM, child) { - return bookAppointmentsVM.isDoctorRatingDetailsLoading - ? Utils.getLoadingWidget() - : Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - bookAppointmentsVM.doctorsProfileResponseModel.actualDoctorRate!.ceilToDouble().toString().toText44(isBold: true), - SizedBox(height: 4.h), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + if (bookAppointmentsVM.isDoctorRatingDetailsLoading) { + return Utils.getLoadingWidget(); + } + + final rating = bookAppointmentsVM.doctorsProfileResponseModel.decimalDoctorRate?.toDouble() ?? 0.0; + if (rating == 0 || rating == 0.0) { + return NoRatingDialog(); + } + + return DoctorRatingDialog( + averageRating: rating, + totalReviews: (bookAppointmentsVM.doctorsProfileResponseModel.noOfPatientsRate ?? 0).toInt(), + fiveStarPercent: bookAppointmentsVM.doctorDetailsList.isNotEmpty ? bookAppointmentsVM.doctorDetailsList[0].ratio.round() : 0, + fourStarPercent: bookAppointmentsVM.doctorDetailsList.length > 1 ? bookAppointmentsVM.doctorDetailsList[1].ratio.round() : 0, + threeStarPercent: bookAppointmentsVM.doctorDetailsList.length > 2 ? bookAppointmentsVM.doctorDetailsList[2].ratio.round() : 0, + twoStarPercent: bookAppointmentsVM.doctorDetailsList.length > 3 ? bookAppointmentsVM.doctorDetailsList[3].ratio.round() : 0, + oneStarPercent: bookAppointmentsVM.doctorDetailsList.length > 4 ? bookAppointmentsVM.doctorDetailsList[4].ratio.round() : 0, + ); + }); + } +} + +class DoctorRatingDialog extends StatelessWidget { + final double averageRating; + final int totalReviews; + final int fiveStarPercent; + final int fourStarPercent; + final int threeStarPercent; + final int twoStarPercent; + final int oneStarPercent; + + const DoctorRatingDialog({ + super.key, + required this.averageRating, + required this.totalReviews, + required this.fiveStarPercent, + required this.fourStarPercent, + required this.threeStarPercent, + required this.twoStarPercent, + required this.oneStarPercent, + }); + + /// Returns the color for the rating badge and progress bar based on star level. + /// 5 stars -> bright green + /// 4 stars -> slightly darker green + /// 3 stars -> dark yellow / olive + /// 2 stars -> dark orange / brown-red + /// 1 star -> red + Color _getBarColor(int stars) { + switch (stars) { + case 5: + return AppColors.ratingFiveStarColor; + case 4: + return AppColors.ratingFourStarColor; + case 3: + return AppColors.ratingThreeStarColor; + case 2: + return AppColors.ratingTwoStarColor; + case 1: + return AppColors.ratingOneStarColor; + default: + return Colors.grey; + } + } + + /// Returns the background color for the large rating badge based on the + /// overall average rating. + Color _getBadgeColor(double rating) { + if (rating == 0 || rating == 0.0) { + return AppColors.greyLightColor; // Grey color for no rating + } else if (rating >= 4.5) { + return AppColors.ratingFiveStarColor; // Bright green + } else if (rating >= 4.0) { + return AppColors.ratingBadgeFiveStarColor; // Green + } else if (rating >= 3.0) { + return AppColors.ratingThreeStarColor; + } else if (rating >= 2.0) { + return AppColors.ratingTwoStarColor; + } else { + return AppColors.ratingOneStarColor; + } + } + + @override + Widget build(BuildContext context) { + final ratingRows = [ + _RatingRowData(stars: 5, percent: fiveStarPercent), + _RatingRowData(stars: 4, percent: fourStarPercent), + _RatingRowData(stars: 3, percent: threeStarPercent), + _RatingRowData(stars: 2, percent: twoStarPercent), + _RatingRowData(stars: 1, percent: oneStarPercent), + ]; + + return Container( + width: 420, + padding: const EdgeInsets.all(0), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: 130.w, + height: 140.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + borderRadius: 16.r, + color: _getBadgeColor(averageRating), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, children: [ - "${bookAppointmentsVM.doctorsProfileResponseModel.noOfPatientsRate} ${LocaleKeys.reviews.tr(context: context)}" - .toText16(weight: FontWeight.w500, color: AppColors.greyInfoTextColor), - RatingBar( - initialRating: bookAppointmentsVM.doctorsProfileResponseModel.actualDoctorRate!.toDouble(), - direction: Axis.horizontal, - allowHalfRating: true, - itemCount: 5, - itemSize: 20.h, - ignoreGestures: true, - ratingWidget: RatingWidget( - full: Icon( - Icons.star, - color: AppColors.ratingColorYellow, - size: 24.h, - ), - half: Icon( - Icons.star_half, - color: AppColors.ratingColorYellow, - ), - empty: Icon( - Icons.star, - color: AppColors.ratingColorYellow, - ), + Text( + averageRating.toString(), + style: TextStyle( + fontFamily: "Poppins", + fontSize: 48.f, + fontWeight: FontWeight.w700, + color: averageRating == 0 || averageRating == 0.0 ? AppColors.textColor : AppColors.whiteColor, + height: 1.1, ), - tapOnlyMode: true, - unratedColor: Colors.grey[500], - itemPadding: EdgeInsets.symmetric(horizontal: 4.0), - onRatingUpdate: (rating) { - print(rating); - }, ), - ], - ), - SizedBox(height: 8.h), - Container( - margin: EdgeInsets.only(top: 10.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Container( - width: 100.0, - margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0), - child: Text(LocaleKeys.excellent.tr(context: context), style: TextStyle(fontSize: 13.0, color: AppColors.textColor, fontWeight: FontWeight.w600))), - getRatingLine(bookAppointmentsVM.doctorDetailsList[0].ratio, Colors.green[700]!), - ], + const SizedBox(height: 8), + Container( + padding: const EdgeInsets.symmetric( + horizontal: 8, + vertical: 6, ), - Container( - margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0), - child: Text("${getRatingWidth(bookAppointmentsVM.doctorDetailsList[0].ratio).round()}%", style: TextStyle(fontSize: 14.0, color: AppColors.textColor, fontWeight: FontWeight.w600)), + decoration: BoxDecoration( + color: averageRating == 0 || averageRating == 0.0 ? AppColors.greyF7Color : AppColors.textColor.withAlpha(20), + borderRadius: BorderRadius.circular(8), ), - ], - ), - ), - Container( - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( + child: Row( children: [ - Container( - width: 100.0, - margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0), - child: Text(LocaleKeys.vGood.tr(context: context), style: TextStyle(fontSize: 13.0, color: AppColors.textColor, fontWeight: FontWeight.w600))), - getRatingLine(bookAppointmentsVM.doctorDetailsList[1].ratio, Color(0xffB7B723)), + NumberFormat.decimalPattern().format(totalReviews).toText12( + isBold: true, + color: averageRating == 0 || averageRating == 0.0 ? AppColors.textColor : AppColors.whiteColor, + isEnglishOnly: true + ), + ' ${LocaleKeys.reviews.tr(context: context)}'.toText12( + isBold: true, + color: averageRating == 0 || averageRating == 0.0 ? AppColors.textColor : AppColors.whiteColor, + ), ], ), - Container( - margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0), - child: Text("${bookAppointmentsVM.doctorDetailsList[1].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: AppColors.textColor, fontWeight: FontWeight.w600)), - ), - ], - ), - ), - Container( - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Container( - width: 100.0, - margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0), - child: Text(LocaleKeys.good.tr(context: context), style: TextStyle(fontSize: 13.0, color: AppColors.textColor, fontWeight: FontWeight.w600))), - getRatingLine(bookAppointmentsVM.doctorDetailsList[2].ratio, Color(0xffEBA727)), - ], - ), - Container( - margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0), - child: Text("${bookAppointmentsVM.doctorDetailsList[2].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: AppColors.textColor, fontWeight: FontWeight.w600)), - ), - ], - ), + // child: Text( + // '${NumberFormat.decimalPattern().format(totalReviews)} ${LocaleKeys.reviews.tr(context: context)}', + // style: TextStyle( + // fontSize: 12.f, + // isBold: true, + // color: averageRating == 0 || averageRating == 0.0 ? AppColors.textColor : AppColors.whiteColor, + // ), + // ), + ).paddingSymmetrical(12.h, 0.h), + ], ), - Container( - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Container( - width: 100.0, - margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0), - child: Text(LocaleKeys.average.tr(context: context), style: TextStyle(fontSize: 13.0, color: AppColors.textColor, fontWeight: FontWeight.w600))), - getRatingLine(bookAppointmentsVM.doctorDetailsList[3].ratio, Color(0xffEB7227)), - ], - ), - Container( - margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0), - child: Text("${bookAppointmentsVM.doctorDetailsList[3].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: AppColors.textColor, fontWeight: FontWeight.w600)), - ), - ], - ), + ), + + const SizedBox(width: 16), + + // ── Right: Star Breakdown ── + Expanded( + child: Column( + children: ratingRows + .map( + (row) => _buildRatingRow(row.stars, row.percent), + ) + .toList(), ), - Container( - margin: EdgeInsets.only(bottom: 30.0), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - Row( - children: [ - Container( - width: 100.0, - margin: EdgeInsets.only(top: 10.0, left: 15.0, right: 15.0), - child: Text(LocaleKeys.average.tr(context: context), style: TextStyle(fontSize: 13.0, color: AppColors.textColor, fontWeight: FontWeight.w600))), - getRatingLine(bookAppointmentsVM.doctorDetailsList[4].ratio, Color(0xffE20C0C)), - ], - ), - Container( - margin: EdgeInsets.only(top: 10.0, left: 10.0, right: 10.0), - child: Text("${bookAppointmentsVM.doctorDetailsList[4].ratio.round()}%", style: TextStyle(fontSize: 14.0, color: AppColors.textColor, fontWeight: FontWeight.w600)), - ), - ], + ), + ], + ), + const SizedBox(height: 16), + ], + ), + ); + } + + Widget _buildRatingRow(int stars, int percent) { + return Padding( + padding: const EdgeInsets.symmetric(vertical: 5), + child: Row( + children: [ + // Star icons + SizedBox( + width: 70, + child: Row( + mainAxisAlignment: MainAxisAlignment.start, + children: List.generate( + stars, + (_) => Icon(Icons.star, size: 14, color: AppColors.ratingStarIconColor), + ), + ), + ), + + const SizedBox(width: 8), + Expanded( + child: ClipRRect( + borderRadius: BorderRadius.circular(6), + child: SizedBox( + height: 5.h, + child: LinearProgressIndicator( + value: percent / 100, + backgroundColor: AppColors.shimmerBaseColor, + valueColor: AlwaysStoppedAnimation( + _getBarColor(stars), ), ), - ], - ); - }); - } + ), + ), + ), + + const SizedBox(width: 8), - double getRatingWidth(num patientNumber) { - var width = patientNumber; - return width.roundToDouble(); + // Percentage text + SizedBox( + width: 36, + child: Text( + '$percent%', + textAlign: TextAlign.right, + style: TextStyle( + fontFamily: "Poppins", + fontSize: 14, + fontWeight: FontWeight.w600, + color: AppColors.ratingPercentageTextColor, + ), + ), + ), + ], + ), + ); } +} + +class _RatingRowData { + final int stars; + final int percent; + + _RatingRowData({required this.stars, required this.percent}); +} + +class NoRatingDialog extends StatelessWidget { + const NoRatingDialog({super.key}); - Widget getRatingLine(double patientNumber, Color color) { + @override + Widget build(BuildContext context) { return Container( - margin: EdgeInsets.only(top: 10.0), - child: Stack(children: [ - SizedBox( - width: 150.0, - height: 7.h, - child: Container( - color: Colors.grey[300], + width: 420, + padding: const EdgeInsets.all(24), + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + // Icon + Container( + width: 80, + height: 80, + decoration: BoxDecoration( + color: AppColors.lightRedButtonColor, + borderRadius: BorderRadius.circular(24), + ), + child: Icon( + Icons.star_border_rounded, + size: 48, + color: AppColors.primaryRedColor, + ), + ), + + const SizedBox(height: 20), + + // Title + Text( + LocaleKeys.noRatingAvailable.tr(context: context), + style: TextStyle( + fontSize: 22, + fontWeight: FontWeight.w700, + color: AppColors.textColor, + ), + textAlign: TextAlign.center, ), - ), - SizedBox( - width: patientNumber * 1.55, - height: 7.h, - child: Container( - color: color, + + const SizedBox(height: 12), + + // Description + Text( + LocaleKeys.doctorDoesNotHaveRating.tr(context: context), + style: TextStyle( + fontSize: 15, + fontWeight: FontWeight.w400, + color: AppColors.textColorLight, + ), + textAlign: TextAlign.center, ), - ), - ]), + + const SizedBox(height: 8), + ], + ), ); } } diff --git a/lib/presentation/book_appointment/widgets/doctor_schedule_bottom_sheet.dart b/lib/presentation/book_appointment/widgets/doctor_schedule_bottom_sheet.dart new file mode 100644 index 00000000..78f6a22a --- /dev/null +++ b/lib/presentation/book_appointment/widgets/doctor_schedule_bottom_sheet.dart @@ -0,0 +1,400 @@ +import 'dart:ui' as ui; + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/doctor_schedule_response_model.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:provider/provider.dart'; + +class DoctorScheduleBottomSheet extends StatefulWidget { + const DoctorScheduleBottomSheet({super.key}); + + @override + State createState() => _DoctorScheduleBottomSheetState(); +} + +class _DoctorScheduleBottomSheetState extends State + with SingleTickerProviderStateMixin { + late PageController _pageController; + late AnimationController _fadeController; + late Animation _fadeAnimation; + + double currentPage = 0; + List>> weeks = []; + List doctorScheduleResponse = []; + List freeSlots = []; + + /// True while weeks are being computed off the build thread + bool _isInitializing = false; + + late BookAppointmentsViewModel bookAppointmentsViewModel; + late AppState appState; + + @override + void initState() { + super.initState(); + _pageController = PageController(); + _fadeController = AnimationController( + vsync: this, + duration: const Duration(milliseconds: 400), + ); + _fadeAnimation = CurvedAnimation(parent: _fadeController, curve: Curves.easeIn); + } + + @override + void dispose() { + _pageController.dispose(); + _fadeController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + bookAppointmentsViewModel = Provider.of(context, listen: true); + appState = getIt.get(); + final isArabic = appState.isArabic(); + + // Trigger initialization after the first frame so the UI never freezes + final responseReady = bookAppointmentsViewModel.doctorScheduleResponse != null; + if (responseReady && weeks.isEmpty && !_isInitializing) { + WidgetsBinding.instance.addPostFrameCallback((_) => _triggerInit()); + } + + // ── API loading ────────────────────────────────────────────────────────── + if (bookAppointmentsViewModel.isDoctorScheduleLoading || _isInitializing) { + return Center( + child: CircularProgressIndicator( + color: AppColors.primaryRedColor, + strokeWidth: 2.5, + ), + ); + } + + // ── No data ────────────────────────────────────────────────────────────── + if (weeks.isEmpty) { + return Center( + child: Utils.getNoDataWidget( + context, + noDataText: LocaleKeys.noScheduleAvailable.tr(context: context), + ), + ); + } + + // ── Schedule ready — fade in ───────────────────────────────────────────── + return FadeTransition( + opacity: _fadeAnimation, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildHeader(context, isArabic), + SizedBox(height: 20.h), + Expanded( + child: PageView.builder( + controller: _pageController, + itemCount: weeks.length, + onPageChanged: (index) => setState(() => currentPage = index.toDouble()), + itemBuilder: (context, weekIndex) => _buildWeekView(weekIndex, isArabic), + ), + ), + ], + ), + ); + } + + // ── Initialization ───────────────────────────────────────────────────────── + + void _triggerInit() { + if (!mounted || _isInitializing || weeks.isNotEmpty) return; + setState(() => _isInitializing = true); + + // Defer heavy work to the next microtask so the spinner is painted first + Future.microtask(() { + _buildWeeksFromResponse(); + if (mounted) { + setState(() => _isInitializing = false); + _fadeController.forward(); + } + }); + } + + void _buildWeeksFromResponse() { + final response = bookAppointmentsViewModel.doctorScheduleResponse; + if (response == null) return; + + final scheduleList = response['List_DoctorWorkingHoursTable'] as List?; + if (scheduleList == null || scheduleList.isEmpty) return; + + doctorScheduleResponse = + scheduleList.map((item) => DoctorScheduleResponseModel.fromJson(item)).toList(); + + // Resolve free-slot dates + if (bookAppointmentsViewModel.doctorFreeSlotDates.isNotEmpty) { + freeSlots = bookAppointmentsViewModel.doctorFreeSlotDates; + } else if (bookAppointmentsViewModel.freeSlotsResponse != null && + bookAppointmentsViewModel.freeSlotsResponse.isNotEmpty) { + freeSlots = List.from(bookAppointmentsViewModel.freeSlotsResponse); + } else if (response['FreeTimeSlots'] != null) { + freeSlots = List.from(response['FreeTimeSlots']); + } + + _generateWeeksSchedules(); + } + + /// Splits ALL API days into 7-day chunks — one chunk per page. + /// Supports full 3-month schedules (~13 weeks) returned by the API. + void _generateWeeksSchedules() { + weeks.clear(); + + // Convert every API day into a flat map and mark free slots + final allDays = doctorScheduleResponse.map((workDay) { + return { + 'Date': workDay.date ?? '', + 'DayName': workDay.dayName ?? '', + 'WorkingHours': workDay.workingHours ?? '', + 'fullDay': !_hasFreeSlot(workDay.date ?? ''), + }; + }).toList(); + + // Slice into pages of 7 days each + const daysPerPage = 7; + for (var i = 0; i < allDays.length; i += daysPerPage) { + final end = (i + daysPerPage).clamp(0, allDays.length); + weeks.add(allDays.sublist(i, end)); + } + } + + // ── Header ───────────────────────────────────────────────────────────────── + + Widget _buildHeader(BuildContext context, bool isArabic) { + final currentWeek = weeks[currentPage.round()]; + final firstDate = DateUtil.convertStringToDate(currentWeek.first['Date'] as String); + final lastDate = DateUtil.convertStringToDate(currentWeek.last['Date'] as String); + + final dateRangeLabel = isArabic + ? '${firstDate.day} ${DateUtil.getMonthArabic(firstDate.month).trim()} – ' + '${lastDate.day} ${DateUtil.getMonthArabic(lastDate.month).trim()}, ${lastDate.year}' + : '${DateFormat('MMM dd', 'en_US').format(firstDate)} – ' + '${DateFormat('MMM dd', 'en_US').format(lastDate)}, ${lastDate.year}'; + + return Padding( + padding: EdgeInsets.symmetric(horizontal: 5.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Text( + // "Doctor Schedule", + // style: TextStyle( + // fontSize: 24.h, + // fontWeight: FontWeight.bold, + // color: const Color(0xFF1A1A1A), + // ), + // ), + SizedBox(height: 16.h), + + // Navigation: < date-pill > + Row( + mainAxisAlignment: MainAxisAlignment.spaceAround, + children: [ + _buildNavArrow( + icon: Icons.chevron_left, + enabled: currentPage.round() > 0, + onTap: () => _animateToPage(currentPage.round() - 1), + ), + SizedBox(width: 12.w), + Container( + padding: EdgeInsets.symmetric(horizontal: 20.w, vertical: 10.h), + decoration: BoxDecoration( + color: AppColors.secondaryLightRedColor, + borderRadius: BorderRadius.circular(12.r), + ), + child: dateRangeLabel.toText14( + weight: FontWeight.w600, + color: AppColors.primaryRedColor, + ), + ), + SizedBox(width: 12.w), + _buildNavArrow( + icon: Icons.chevron_right, + enabled: currentPage.round() < weeks.length - 1, + onTap: () => _animateToPage(currentPage.round() + 1), + ), + ], + ), + SizedBox(height: 20.h), + + LocaleKeys.weeklyShift.tr(context: context).toText18( + weight: FontWeight.w600, + color: AppColors.textColor, + ), + ], + ), + ); + } + + void _animateToPage(int index) { + _pageController.animateToPage( + index.clamp(0, weeks.length - 1), + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + ); + } + + Widget _buildNavArrow({ + required IconData icon, + required bool enabled, + required VoidCallback onTap, + }) { + return GestureDetector( + onTap: enabled ? onTap : null, + child: Container( + width: 34.w, + height: 34.w, + decoration: BoxDecoration( + + borderRadius: BorderRadius.circular(8.h), + color: enabled ? AppColors.secondaryLightRedColor : AppColors.greyF7Color, + ), + child: Icon( + icon, + size: 28.h, + color: enabled ? AppColors.primaryRedColor : AppColors.checkBoxBorderColor, + ), + ), + ); + } + + // ── Week / day views ─────────────────────────────────────────────────────── + + Widget _buildWeekView(int weekIndex, bool isArabic) { + final weekSchedule = weeks[weekIndex]; + return Directionality( + textDirection: isArabic ? ui.TextDirection.rtl : ui.TextDirection.ltr, + child: ListView.builder( + // primary: false detaches this ListView from the PrimaryScrollController + // so it doesn't fight with CollapsingListView's outer CustomScrollView. + primary: false, + physics: const ClampingScrollPhysics(), + padding: EdgeInsets.only(top: 8.h, bottom: 24.h), + itemCount: weekSchedule.length, + itemBuilder: (context, dayIndex) => _buildDayCard(context, weekSchedule[dayIndex]), + ), + ); + } + + Widget _buildDayCard(BuildContext context, Map daySchedule) { + final date = DateUtil.convertStringToDate(daySchedule['Date'] as String); + final hasFreeSlots = !(daySchedule['fullDay'] as bool? ?? true); + final workingHours = (daySchedule['WorkingHours'] as String?) ?? ''; + final isOff = workingHours.isEmpty || + workingHours.toLowerCase().contains('off') || + workingHours.toLowerCase().contains('not available'); + + final shifts = workingHours.split(',').map((s) => s.trim()).where((s) => s.isNotEmpty).toList(); + + return Material( + color: Colors.transparent, + child: InkWell( + onTap: hasFreeSlots ? () => getIt.get().pop() : null, + borderRadius: BorderRadius.circular(20.r), + child: Container( + margin: EdgeInsets.only(bottom: 12.h, left: 5.w, right: 5.w), + padding: EdgeInsets.symmetric(horizontal: 18.w, vertical: 16.h), + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(20.r), + boxShadow: [ + BoxShadow( + blurRadius: 16, + spreadRadius: 0, + color: Colors.black.withValues(alpha: 0.02), + offset: const Offset(0, 6), + ), + ], + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + // Left — day name + short date + Expanded( + flex: 2, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + daySchedule['DayName'].toString().toText16( + weight: FontWeight.w700, + color: AppColors.textColor, + ), + SizedBox(height: 4.h), + _getDayMonth(date).toText13( + color: AppColors.greyTextColorLight, + ), + ], + ), + ), + + // Right — time slots or "Off" + if (isOff) + LocaleKeys.dayOff.tr(context: context).toText14( + weight: FontWeight.w500, + color: AppColors.greyTextColorLight, + ) + else + Expanded( + flex: 3, + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + for (var i = 0; i < shifts.length; i++) ...[ + shifts[i].toText14( + weight: FontWeight.w500, + color: AppColors.textColor, + ), + if (i < shifts.length - 1) SizedBox(height: 6.h), + ], + ], + ), + ), + ], + ), + ), + ), + ); + } + + // ── Helpers ──────────────────────────────────────────────────────────────── + + bool _hasFreeSlot(String jsonDate) { + if (jsonDate.isEmpty) return false; + final date = DateUtil.convertStringToDate(jsonDate); + final scheduleDay = DateTime(date.year, date.month, date.day); + + for (final event in freeSlots) { + try { + final eventDate = DateUtil.convertStringToDate(event); + final nDate = DateTime(eventDate.year, eventDate.month, eventDate.day); + if (nDate.millisecondsSinceEpoch == scheduleDay.millisecondsSinceEpoch) return true; + } catch (_) { + continue; + } + } + return false; + } + + String _getDayMonth(DateTime dateTime) { + final isArabic = appState.isArabic(); + if (isArabic) { + return '${dateTime.day} ${DateUtil.getMonthArabic(dateTime.month)}'; + } + return '${dateTime.day} ${DateUtil.getMonth(dateTime.month).substring(0, 3)}'; + } +} + diff --git a/lib/presentation/book_appointment/widgets/doctor_schedule_page.dart b/lib/presentation/book_appointment/widgets/doctor_schedule_page.dart new file mode 100644 index 00000000..6e2560e2 --- /dev/null +++ b/lib/presentation/book_appointment/widgets/doctor_schedule_page.dart @@ -0,0 +1,39 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/book_appointment/widgets/doctor_schedule_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; + +class DoctorSchedulePage extends StatelessWidget { + const DoctorSchedulePage({super.key}); + + @override + Widget build(BuildContext context) { + return CollapsingListView( + title: LocaleKeys.doctorSchedule.tr(), + isClose: true, + child: Builder( + builder: (ctx) { + final mq = MediaQuery.of(ctx); + // SliverToBoxAdapter is unbounded — give explicit height so + // the PageView (Expanded) inside DoctorScheduleBottomSheet works. + final height = mq.size.height - mq.padding.top - 56.h; + return SizedBox( + height: height, + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 24.w), + // Stop scroll notifications from bubbling up to CollapsingListView's + // outer CustomScrollView, which would steal vertical scroll gestures. + child: NotificationListener( + onNotification: (_) => true, + child: const DoctorScheduleBottomSheet(), + ), + ), + ); + }, + ), + ); + } +} + diff --git a/lib/presentation/child_vaccine/my_child_vaccine_page.dart b/lib/presentation/child_vaccine/my_child_vaccine_page.dart index 6a226ab4..ef861257 100644 --- a/lib/presentation/child_vaccine/my_child_vaccine_page.dart +++ b/lib/presentation/child_vaccine/my_child_vaccine_page.dart @@ -84,11 +84,11 @@ // Column( // crossAxisAlignment: CrossAxisAlignment.start, // children: [ -// LocaleKeys.city.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500), +// LocaleKeys.city.tr().toText16(color: AppColors.textColor, isBold: true), // (appState.isArabic() // ? (bloodDonationVM.selectedCity?.descriptionN ?? LocaleKeys.select.tr()) // : bloodDonationVM.selectedCity?.description ?? LocaleKeys.select.tr(context: context)) -// .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), +// .toText14(color: AppColors.greyTextColor, isBold: true), // ], // ), // ], @@ -112,11 +112,11 @@ // Column( // crossAxisAlignment: CrossAxisAlignment.start, // children: [ -// LocaleKeys.gender.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500), +// LocaleKeys.gender.tr().toText16(color: AppColors.textColor, isBold: true), // (appState.isArabic() // ? (bloodDonationVM.selectedGender?.typeAr ?? LocaleKeys.select.tr()) // : bloodDonationVM.selectedGender?.type ?? LocaleKeys.select.tr(context: context)) -// .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), +// .toText14(color: AppColors.greyTextColor, isBold: true), // ], // ), // ], @@ -143,12 +143,12 @@ // Column( // crossAxisAlignment: CrossAxisAlignment.start, // children: [ -// LocaleKeys.bloodType.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500), -// // bloodDonationVM.selectedBloodType?.toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), +// LocaleKeys.bloodType.tr().toText16(color: AppColors.textColor, isBold: true), +// // bloodDonationVM.selectedBloodType?.toText14(color: AppColors.greyTextColor, isBold: true), // (appState.isArabic() // ? (bloodDonationVM.selectedBloodType ?? LocaleKeys.select.tr()) // : bloodDonationVM.selectedBloodType ?? LocaleKeys.select.tr(context: context)) -// .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500) +// .toText14(color: AppColors.greyTextColor, isBold: true) // ], // ), // ], @@ -301,13 +301,13 @@ class _MyChildVaccinePageState extends State { ), child: Row( children: [ - Image.asset(children[index]['image'], width: 24.h, height: 24.h), + Utils.buildImgWithAssets(icon: children[index]['image'], width: 24.h, height: 24.h), SizedBox(width: 8.w), Text( "${children[index]['name']} (${children[index]['gender']})", style: TextStyle( color: isSelected ? AppColors.primaryRedColor : AppColors.textColor, - fontWeight: isSelected ? FontWeight.w600 : FontWeight.w500, + fontWeight: isSelected ? FontWeight.w600 : FontWeight.w600, fontSize: 14.f, ), ), @@ -343,7 +343,7 @@ class _MyChildVaccinePageState extends State { children: [ Utils.buildSvgWithAssets(icon: AppAssets.calendar, width: 16.h, height: 16.h, iconColor: AppColors.textColor), SizedBox(width: 8.w), - "Due Date : ${data['dueDate']}".toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + "Due Date : ${data['dueDate']}".toText12(isBold: true, color: AppColors.textColor), ], ), ), @@ -354,7 +354,7 @@ class _MyChildVaccinePageState extends State { children: [ Utils.buildSvgWithAssets(icon: AppAssets.tickIcon, width: 20.h, height: 20.h, iconColor: Colors.green), SizedBox(width: 12.w), - vaccine.toString().toText14(weight: FontWeight.w500, color: AppColors.textColor), + vaccine.toString().toText14(isBold: true, color: AppColors.textColor), ], ), )), diff --git a/lib/presentation/comprehensive_checkup/cmc_order_detail_page.dart b/lib/presentation/comprehensive_checkup/cmc_order_detail_page.dart index dd836a64..fa0fdcdb 100644 --- a/lib/presentation/comprehensive_checkup/cmc_order_detail_page.dart +++ b/lib/presentation/comprehensive_checkup/cmc_order_detail_page.dart @@ -105,7 +105,7 @@ class _CmcOrderDetailPageState extends State { child: (isLoading ? "Processing" : order.statusText ?? '') .toText12( color: statusColor, - fontWeight: FontWeight.w600, + isBold: true, ) .toShimmer2(isShow: isLoading), ), @@ -113,7 +113,7 @@ class _CmcOrderDetailPageState extends State { (isLoading ? "Jan 15, 2024" : _formatDate(order.created)) .toText12( color: AppColors.textColorLight, - fontWeight: FontWeight.w500, + isBold: true, ) .toShimmer2(isShow: isLoading), ], @@ -127,7 +127,7 @@ class _CmcOrderDetailPageState extends State { if (!isLoading) ...[ LocaleKeys.requestID.tr(context: context).toText14( color: AppColors.textColorLight, - weight: FontWeight.w500, + weight: FontWeight.w600, ), SizedBox(width: 4.w), ], @@ -171,7 +171,7 @@ class _CmcOrderDetailPageState extends State { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 14.f, - fontWeight: FontWeight.w600, + isBold: true, borderRadius: 10.r, height: 44.h, ).toShimmer2(isShow: isLoading), diff --git a/lib/presentation/comprehensive_checkup/cmc_selection_review_page.dart b/lib/presentation/comprehensive_checkup/cmc_selection_review_page.dart index 840d38cf..94bc0e13 100644 --- a/lib/presentation/comprehensive_checkup/cmc_selection_review_page.dart +++ b/lib/presentation/comprehensive_checkup/cmc_selection_review_page.dart @@ -356,7 +356,7 @@ class _CmcSelectionReviewPageState extends State { children: [ LocaleKeys.hereIsYourRequestNumber.tr(context: context).toText14( color: AppColors.textColorLight, - weight: FontWeight.w500, + weight: FontWeight.w600, ), SizedBox(width: 4.w), ("$requestId").toText16(isBold: true), @@ -385,7 +385,7 @@ class _CmcSelectionReviewPageState extends State { isCloseButtonVisible: false, isDismissible: false, isFullScreen: false, - ); + isAutoDismiss: true); } void _handleConfirm() { diff --git a/lib/presentation/comprehensive_checkup/comprehensive_checkup_page.dart b/lib/presentation/comprehensive_checkup/comprehensive_checkup_page.dart index da926cd2..7e7bc613 100644 --- a/lib/presentation/comprehensive_checkup/comprehensive_checkup_page.dart +++ b/lib/presentation/comprehensive_checkup/comprehensive_checkup_page.dart @@ -112,14 +112,14 @@ class _ComprehensiveCheckupPageState extends State { ), child: statusDisp.toText12( color: statusColor, - fontWeight: FontWeight.w600, + isBold: true, ), ), SizedBox(width: 8.w), if (order.created != null) DateFormat('MMM dd, yyyy').format(DateTime.parse(order.created!)).toText12( color: AppColors.textColorLight, - fontWeight: FontWeight.w500, + isBold: true, ), ], ), @@ -129,7 +129,7 @@ class _ComprehensiveCheckupPageState extends State { // Request ID Row( children: [ - LocaleKeys.requestID.tr(context: context).toText14(color: AppColors.textColorLight, weight: FontWeight.w500), + LocaleKeys.requestID.tr(context: context).toText14(color: AppColors.textColorLight, isBold: true), SizedBox(width: 4.w), "${order.iD ?? '-'}".toText16(isBold: true), ], @@ -182,7 +182,7 @@ class _ComprehensiveCheckupPageState extends State { Expanded( child: LocaleKeys.pendingOrderWait.tr(context: context).toText12( color: AppColors.infoBannerTextColor, - fontWeight: FontWeight.w500, + isBold: true, ), ), ], @@ -200,7 +200,7 @@ class _ComprehensiveCheckupPageState extends State { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 14.f, - fontWeight: FontWeight.w600, + isBold: true, borderRadius: 10.r, height: 44.h, ), @@ -250,7 +250,10 @@ class _ComprehensiveCheckupPageState extends State { physics: NeverScrollableScrollPhysics(), itemBuilder: (context, index) { final service = services[index]; - final serviceName = service.text ?? service.textN ?? ''; + final appStateLocal = getIt.get(); + final serviceName = appStateLocal.isArabic() + ? (service.textN ?? service.text ?? '') + : (service.text ?? service.textN ?? ''); final price = service.priceTotal ?? 0.0; return RadioListTileWidget( value: service.iD ?? 0, @@ -279,8 +282,8 @@ class _ComprehensiveCheckupPageState extends State { final String imagePath = appStateLocal.isArabic() ? AppAssets.comprehensiveCheckupAr : AppAssets.comprehensiveCheckupEn; return Stack( children: [ - Image.asset( - imagePath, + Utils.buildImgWithAssets( + icon: imagePath, width: double.infinity, fit: BoxFit.cover, ).paddingAll(16.w), @@ -373,7 +376,7 @@ class _ComprehensiveCheckupPageState extends State { borderRadius: 24.r, hasShadow: true, ), - padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 12.h), + padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 12.h, bottom: 16.h), child: CustomButton( borderWidth: 0, text: LocaleKeys.next.tr(context: context), diff --git a/lib/presentation/comprehensive_checkup/widgets/cmc_hospital_bottom_sheet_body.dart b/lib/presentation/comprehensive_checkup/widgets/cmc_hospital_bottom_sheet_body.dart index 93c8d5fd..6f24e5e4 100644 --- a/lib/presentation/comprehensive_checkup/widgets/cmc_hospital_bottom_sheet_body.dart +++ b/lib/presentation/comprehensive_checkup/widgets/cmc_hospital_bottom_sheet_body.dart @@ -85,7 +85,7 @@ class CmcHospitalBottomSheetBody extends StatelessWidget { ? _buildLoadingShimmer() : hmgServicesViewModel.filteredHospitalsList.isEmpty ? Center( - child: LocaleKeys.noHospitalsFound.tr(context: context).toText16(weight: FontWeight.w500, color: AppColors.greyTextColor), + child: LocaleKeys.noHospitalsFound.tr(context: context).toText16(isBold: true, color: AppColors.greyTextColor), ) : ListView.separated( itemCount: hmgServicesViewModel.filteredHospitalsList.length, diff --git a/lib/presentation/comprehensive_checkup/widgets/cmc_hospital_list_item.dart b/lib/presentation/comprehensive_checkup/widgets/cmc_hospital_list_item.dart index 25cd5068..b8ac54cc 100644 --- a/lib/presentation/comprehensive_checkup/widgets/cmc_hospital_list_item.dart +++ b/lib/presentation/comprehensive_checkup/widgets/cmc_hospital_list_item.dart @@ -1,5 +1,6 @@ import 'dart:developer'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; @@ -9,6 +10,7 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/hospital_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; @@ -107,7 +109,7 @@ class CmcHospitalListItem extends StatelessWidget { Visibility( visible: (hospital.distanceInKilometers == null || hospital.distanceInKilometers == 0), child: AppCustomChipWidget( - labelText: " Distance not available", + labelText: LocaleKeys.noDistance.tr(), textColor: AppColors.blackColor, ), ), diff --git a/lib/presentation/contact_us/contact_us.dart b/lib/presentation/contact_us/contact_us.dart index fd0a439b..f4b16ec4 100644 --- a/lib/presentation/contact_us/contact_us.dart +++ b/lib/presentation/contact_us/contact_us.dart @@ -14,9 +14,12 @@ import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/contact_us/feedback_page.dart'; import 'package:hmg_patient_app_new/presentation/contact_us/find_us_page.dart'; import 'package:hmg_patient_app_new/presentation/contact_us/live_chat_page.dart'; +import 'package:hmg_patient_app_new/presentation/home/service_info_page.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; +import 'package:url_launcher/url_launcher.dart'; class ContactUs extends StatelessWidget { ContactUs({super.key}); @@ -33,6 +36,15 @@ class ContactUs extends StatelessWidget { contactUsViewModel = Provider.of(context); return Column( children: [ + checkInOptionCard( + AppAssets.call_fill, + LocaleKeys.callNow.tr(), + LocaleKeys.callForAssistance.tr(), + // "Call for immediate assistance", + ).onPress(() { + launchUrl(Uri.parse("tel://" + "+966 92 006 6666")); + }), + SizedBox(height: 16.h), checkInOptionCard( AppAssets.location, LocaleKeys.findUs.tr(), @@ -46,40 +58,49 @@ class ContactUs extends StatelessWidget { page: FindUsPage(), ), ); + }, onFailure: () { + contactUsViewModel.initContactUsViewModel(); + Navigator.pop(context); + Navigator.of(context).push( + CustomPageRoute( + page: FindUsPage(), + ), + ); + }, onLocationDeniedForever: () { + contactUsViewModel.initContactUsViewModel(); + Navigator.pop(context); + Navigator.of(context).push( + CustomPageRoute( + page: FindUsPage(), + ), + ); }); }), SizedBox(height: 16.h), - checkInOptionCard( - AppAssets.feedbackFill, - LocaleKeys.feedback.tr(), - LocaleKeys.provideFeedbackOnServices.tr(), - ).onPress(() { - contactUsViewModel.setSelectedFeedbackType( - FeedbackType(id: 5, nameEN: "Not classified", nameAR: 'غير محدد'), - ); - contactUsViewModel.setIsSendFeedbackTabSelected(true); - Navigator.pop(context); - Navigator.of(context).push( - CustomPageRoute( - page: FeedbackPage(), - ), - ); - }), - SizedBox(height: 16.h), checkInOptionCard( AppAssets.ask_doctor_icon, LocaleKeys.liveChat.tr(), LocaleKeys.liveChatWithHMG.tr(), ).onPress(() { - locationUtils.getCurrentLocation(onSuccess: (value) { + if (getIt.get().isAuthenticated) { + Navigator.of(context).pop(); contactUsViewModel.getLiveChatProjectsList(); - Navigator.pop(context); Navigator.of(context).push( CustomPageRoute( page: LiveChatPage(), ), ); - }); + } else { + Navigator.of(getIt().navigatorKey.currentContext!).push( + CustomPageRoute( + page: ServiceInfoPage( + serviceName: LocaleKeys.liveChat.tr(), + serviceHeader: LocaleKeys.liveChatServiceHeader.tr(), + serviceDescription: LocaleKeys.liveChatServiceDescription.tr(), + serviceImage: AppAssets.livechatService), + ), + ); + } }), ], ); @@ -105,7 +126,7 @@ class ContactUs extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ title.toText16(isBold: true, color: AppColors.textColor), - subTitle.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + subTitle.toText12(isBold: true, color: AppColors.greyTextColor), ], ), ), diff --git a/lib/presentation/contact_us/feedback_page.dart b/lib/presentation/contact_us/feedback_page.dart index 93954af9..251c720d 100644 --- a/lib/presentation/contact_us/feedback_page.dart +++ b/lib/presentation/contact_us/feedback_page.dart @@ -62,7 +62,7 @@ class FeedbackPage extends StatelessWidget { activeBackgroundColor: AppColors.primaryRedColor.withValues(alpha: .1), tabs: [ CustomTabBarModel(null, LocaleKeys.send.tr(context: context)), - CustomTabBarModel(null, LocaleKeys.status.tr(context: context)), + CustomTabBarModel(null, LocaleKeys.status.tr(context: context)), //TODO: Need to be Disabled This Tab For Now ], onTabChange: (index) { contactUsViewModel.setIsSendFeedbackTabSelected(index == 0); @@ -86,20 +86,12 @@ class FeedbackPage extends StatelessWidget { child: CustomButton( text: LocaleKeys.submit.tr(context: context), onPressed: () async { - if (subjectTextController.text.isEmpty) { - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: LocaleKeys.emptySubject.tr(context: context)), - ); - return; - } - if (messageTextController.text.isEmpty) { - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: LocaleKeys.emptyMessage.tr(context: context)), - ); + // Use ViewModel validation method + if (!contactUsViewModel.validateFeedbackForm(subjectTextController.text, messageTextController.text)) { + // Validation failed, errors are already set in viewModel and displayed below fields return; } + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.sendingFeedback.tr(context: context)); contactUsViewModel.insertCOCItem( subject: subjectTextController.text, @@ -109,6 +101,7 @@ class FeedbackPage extends StatelessWidget { subjectTextController.clear(); messageTextController.clear(); contactUsViewModel.setPatientFeedbackSelectedAppointment(null); + contactUsViewModel.clearAllFeedbackErrors(); showCommonBottomSheetWithoutHeight(context, child: Utils.getSuccessWidget(loadingText: LocaleKeys.success.tr(context: context)), callBackFunc: () { Navigator.pop(context); }); @@ -117,7 +110,7 @@ class FeedbackPage extends StatelessWidget { LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( context, - child: Utils.getSuccessWidget(loadingText: err), + child: Utils.getErrorWidget(loadingText: err), ); }); }, @@ -125,7 +118,7 @@ class FeedbackPage extends StatelessWidget { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 16, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 50.h, @@ -146,7 +139,7 @@ class FeedbackPage extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.likeToHear.tr().toText14(weight: FontWeight.w500), + LocaleKeys.likeToHear.tr().toText14(isBold: true), SizedBox(height: 16.h), Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( @@ -167,9 +160,9 @@ class FeedbackPage extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.feedbackType.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500), + LocaleKeys.feedbackType.tr().toText16(color: AppColors.textColor, isBold: true), (getIt.get().isArabic() ? contactUsViewModel.selectedFeedbackType.nameAR : contactUsViewModel.selectedFeedbackType.nameEN) - .toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + .toText14(color: AppColors.greyTextColor, isBold: true), ], ), ], @@ -197,7 +190,7 @@ class FeedbackPage extends StatelessWidget { getIt.get().isArabic() ? contactUsViewModel.feedbackTypeList[index].nameAR : contactUsViewModel.feedbackTypeList[index].nameEN, style: TextStyle( fontSize: 16.h, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), ), value: contactUsViewModel.feedbackTypeList[index], @@ -266,8 +259,9 @@ class FeedbackPage extends StatelessWidget { child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.network( - contactUsViewModel.patientFeedbackSelectedAppointment!.doctorImageURL!, + Utils.buildImgWithNetwork( + url: contactUsViewModel.patientFeedbackSelectedAppointment!.doctorImageURL!, + iconColor: AppColors.transparent, width: 63.h, height: 63.h, fit: BoxFit.cover, @@ -286,10 +280,13 @@ class FeedbackPage extends StatelessWidget { children: [ AppCustomChipWidget(labelText: contactUsViewModel.patientFeedbackSelectedAppointment!.clinicName!).toShimmer2(isShow: false), AppCustomChipWidget(labelText: contactUsViewModel.patientFeedbackSelectedAppointment!.projectName!).toShimmer2(isShow: false), - AppCustomChipWidget( - icon: AppAssets.appointment_calendar_icon, - labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(contactUsViewModel.patientFeedbackSelectedAppointment!.appointmentDate), false), - ).toShimmer2(isShow: false), + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + icon: AppAssets.appointment_calendar_icon, + labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(contactUsViewModel.patientFeedbackSelectedAppointment!.appointmentDate), false), + isEnglishOnly: true).toShimmer2(isShow: false), + ), ], ), ], @@ -300,35 +297,55 @@ class FeedbackPage extends StatelessWidget { ), ], SizedBox(height: 16.h), - TextInputWidget( - labelText: LocaleKeys.subject.tr(context: context), - hintText: LocaleKeys.enterSubjectHere.tr(context: context), - controller: subjectTextController, - isEnable: true, - prefix: null, - autoFocus: false, - isBorderAllowed: false, - keyboardType: TextInputType.text, - padding: EdgeInsets.symmetric( - vertical: ResponsiveExtension(10).h, - horizontal: ResponsiveExtension(15).h, - ), + Consumer( + builder: (context, viewModel, child) { + return TextInputWidget( + labelText: LocaleKeys.subject.tr(context: context), + hintText: LocaleKeys.enterSubjectHere.tr(context: context), + controller: subjectTextController, + isEnable: true, + prefix: null, + autoFocus: false, + isBorderAllowed: true, + keyboardType: TextInputType.text, + hasError: viewModel.subjectError != null, + errorMessage: viewModel.subjectError, + onChange: (value) { + // Clear error when user starts typing + viewModel.clearSubjectError(); + }, + padding: EdgeInsets.symmetric( + vertical: ResponsiveExtension(10).h, + horizontal: ResponsiveExtension(15).h, + ), + ); + }, ), SizedBox(height: 16.h), - TextInputWidget( - labelText: LocaleKeys.message.tr(context: context), - hintText: LocaleKeys.enterMessageHere.tr(context: context), - controller: messageTextController, - isEnable: true, - prefix: null, - autoFocus: false, - isBorderAllowed: false, - isMultiline: true, - keyboardType: TextInputType.text, - padding: EdgeInsets.symmetric( - vertical: ResponsiveExtension(10).h, - horizontal: ResponsiveExtension(15).h, - ), + Consumer( + builder: (context, viewModel, child) { + return TextInputWidget( + labelText: LocaleKeys.message.tr(context: context), + hintText: LocaleKeys.enterMessageHere.tr(context: context), + controller: messageTextController, + isEnable: true, + prefix: null, + autoFocus: false, + isBorderAllowed: true, + isMultiline: true, + keyboardType: TextInputType.text, + hasError: viewModel.messageError != null, + errorMessage: viewModel.messageError, + onChange: (value) { + // Clear error when user starts typing + viewModel.clearMessageError(); + }, + padding: EdgeInsets.symmetric( + vertical: ResponsiveExtension(10).h, + horizontal: ResponsiveExtension(15).h, + ), + ); + }, ), SizedBox(height: 16.h), CustomButton( @@ -337,11 +354,10 @@ class FeedbackPage extends StatelessWidget { ImageOptions.showImageOptionsNew( context, true, - (String image, file) { - print(image); - print(file); - Navigator.pop(context); - contactUsViewModel.addFeedbackAttachment(image); + (String base64Image, file) { + // base64Image: The base64-encoded image string + // file: The File object + contactUsViewModel.addFeedbackAttachment(base64Image, file); }, ); }, @@ -349,7 +365,7 @@ class FeedbackPage extends StatelessWidget { borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10.r, padding: EdgeInsets.symmetric(horizontal: 10.w), height: 40.h, @@ -368,25 +384,31 @@ class FeedbackPage extends StatelessWidget { child: ListView.builder( padding: EdgeInsets.all(16.h), shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), itemCount: contactUsViewModel.feedbackAttachmentList.length, itemBuilder: (BuildContext context, int index) { + final attachment = contactUsViewModel.feedbackAttachmentList[index]; return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Icon( - Icons.attach_file, - color: Color(0xff2B353E), - ), - SizedBox(width: 8.w), - "Image ${index + 1}".toText14().paddingOnly(bottom: 8.h), - ], + Expanded( + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Icon( + Icons.attach_file, + color: Color(0xff2B353E), + ), + SizedBox(width: 8.w), + Expanded( + child: attachment.fileName.toText14().paddingOnly(bottom: 8.h), + ), + ], + ), ), Utils.buildSvgWithAssets(icon: AppAssets.cancel_circle_icon).onPress(() { - contactUsViewModel.removeFeedbackAttachment(contactUsViewModel.feedbackAttachmentList[index]); + contactUsViewModel.removeFeedbackAttachment(attachment); }), ], ); @@ -472,12 +494,12 @@ class FeedbackPage extends StatelessWidget { ), SizedBox(height: 8.h), "${contactUsViewModel.cocItemsList[index].cOCTitle}" - .toText16(weight: FontWeight.bold, fontFamily: Utils.isArabicText(contactUsViewModel.cocItemsList[index].cOCTitle ?? "") ? "GESSTwo" : "Poppins"), + .toText16(weight: FontWeight.bold, fontFamily: Utils.isArabicText(contactUsViewModel.cocItemsList[index].cOCTitle ?? "") ? "CairoArabic" : "Poppins"), SizedBox(height: 8.h), "${contactUsViewModel.cocItemsList[index].detail}".toText14( - weight: FontWeight.w500, + weight: FontWeight.w600, color: AppColors.textColorLight, - fontFamily: Utils.isArabicText(contactUsViewModel.cocItemsList[index].detail ?? "") ? "GESSTwo" : "Poppins"), + fontFamily: Utils.isArabicText(contactUsViewModel.cocItemsList[index].detail ?? "") ? "CairoArabic" : "Poppins"), ], ), ).paddingOnly(bottom: 16.h), diff --git a/lib/presentation/contact_us/find_us_page.dart b/lib/presentation/contact_us/find_us_page.dart index 5957bb83..379540a3 100644 --- a/lib/presentation/contact_us/find_us_page.dart +++ b/lib/presentation/contact_us/find_us_page.dart @@ -3,6 +3,7 @@ import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/location_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; @@ -15,16 +16,21 @@ import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:provider/provider.dart'; +import '../../core/utils/utils.dart'; + class FindUsPage extends StatelessWidget { FindUsPage({super.key}); late AppState appState; late ContactUsViewModel contactUsViewModel; + late LocationUtils locationUtils; @override Widget build(BuildContext context) { contactUsViewModel = Provider.of(context); appState = getIt.get(); + locationUtils = getIt.get(); + locationUtils.isShowConfirmDialog = true; return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( @@ -41,14 +47,56 @@ class FindUsPage extends StatelessWidget { activeBackgroundColor: AppColors.primaryRedColor.withValues(alpha: .1), tabs: [ CustomTabBarModel(null, LocaleKeys.hmgHospitals.tr()), - CustomTabBarModel(null, LocaleKeys.pharmaciesList.tr()), + CustomTabBarModel(null, LocaleKeys.hmgPharmacy.tr()), ], onTabChange: (index) { contactUsVM.setHMGHospitalsListSelected(index == 0); }, ).paddingSymmetrical(24.h, 0.h), + Row( + mainAxisSize: MainAxisSize.max, + children: [ + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.sortByLocation.tr(context: context).toText14(isBold: true), + SizedBox(height: 4.h), + LocaleKeys.sortByNearestLocation.tr(context: context).toText11(color: AppColors.textColorLight, isBold: true), + ], + ), + const Spacer(), + Switch( + activeThumbColor: AppColors.successColor, + activeTrackColor: AppColors.successColor.withValues(alpha: .15), + value: contactUsVM.hasLocationEnabled, + onChanged: (newValue) async { + if (newValue) { + locationUtils.getCurrentLocation( + onSuccess: (value) { + // if (contactUsVM.hmgHospitalsLocationsList.isNotEmpty) { + // contactUsVM.sortHMGLocations(true); + // contactUsVM.setHasLocationEnabled(newValue); + // } else { + contactUsVM.initContactUsViewModel(); + contactUsVM.setHasLocationEnabled(newValue); + contactUsVM.sortHMGLocations(true); + // } + }, + onFailure: () { + locationUtils.onFailureDilouge(); + }, + ); + } else { + contactUsVM.sortHMGLocations(false); + contactUsVM.setHasLocationEnabled(newValue); + } + // bookAppointmentsVM.setIsNearestAppointmentSelected(newValue); + }, + ), + ], + ).paddingSymmetrical(24.h, 12.h), ListView.separated( - padding: EdgeInsets.only(top: 16.h), + padding: EdgeInsets.only(top: 4.h), shrinkWrap: true, physics: NeverScrollableScrollPhysics(), itemCount: contactUsVM.isHMGLocationsListLoading @@ -74,8 +122,9 @@ class FindUsPage extends StatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.network( - "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + Utils.buildImgWithNetwork( + url: "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + iconColor: AppColors.transparent, width: 63.h, height: 63.h, fit: BoxFit.cover, diff --git a/lib/presentation/contact_us/live_chat_page.dart b/lib/presentation/contact_us/live_chat_page.dart index 0350c316..718294b4 100644 --- a/lib/presentation/contact_us/live_chat_page.dart +++ b/lib/presentation/contact_us/live_chat_page.dart @@ -70,8 +70,9 @@ class LiveChatPage extends StatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.network( - "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + Utils.buildImgWithNetwork( + url: "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + iconColor: AppColors.transparent, width: 63.h, height: 63.h, fit: BoxFit.cover, @@ -121,7 +122,9 @@ class LiveChatPage extends StatelessWidget { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - ("${appState.isArabic() ? contactUsVM.liveChatProjectsList[index].projectNameN! : contactUsVM.liveChatProjectsList[index].projectName!}\n${contactUsVM.liveChatProjectsList[index].distanceInKilometers!} KM") + ("${appState.isArabic() ? contactUsVM.liveChatProjectsList[index].projectNameN! : contactUsVM.liveChatProjectsList[index].projectName!}" + // "\n${contactUsVM.liveChatProjectsList[index].distanceInKilometers!} KM" + ) .toText14(isBold: true, color: contactUsVM.selectedLiveChatProjectIndex == index ? Colors.white : AppColors.textColor), Transform.flip( flipX: getIt.get().isArabic(), @@ -237,7 +240,7 @@ class LiveChatPage extends StatelessWidget { borderColor: contactUsVM.selectedLiveChatProjectIndex == -1 ? AppColors.greyColor : AppColors.primaryRedColor, textColor: Colors.white, fontSize: 16.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 50.h, @@ -256,7 +259,7 @@ class LiveChatPage extends StatelessWidget { workGroup: workGroup, onSuccess: (response) { debugPrint("Chat Request ID received: ${contactUsVM.chatRequestID}"); - chatURL = "https://chat.hmg.com/Index.aspx?RequestedId=${contactUsVM.chatRequestID}"; + chatURL = "https://chat.hmg.com/geneysChat/Index.aspx?RequestedId=${contactUsVM.chatRequestID}"; debugPrint("Chat URL: $chatURL"); }, onError: (error) { diff --git a/lib/presentation/contact_us/widgets/find_us_item_card.dart b/lib/presentation/contact_us/widgets/find_us_item_card.dart index 4738a63a..6db34a4d 100644 --- a/lib/presentation/contact_us/widgets/find_us_item_card.dart +++ b/lib/presentation/contact_us/widgets/find_us_item_card.dart @@ -6,24 +6,31 @@ import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/contact_us/contact_us_view_model.dart'; import 'package:hmg_patient_app_new/features/contact_us/models/resp_models/get_hmg_locations.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:map_launcher/map_launcher.dart'; +import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; +import 'dart:ui' as ui; class FindUsItemCard extends StatelessWidget { FindUsItemCard({super.key, required this.getHMGLocationsModel}); late AppState appState; + late ContactUsViewModel contactUsViewModel; GetHMGLocationsModel getHMGLocationsModel; @override Widget build(BuildContext context) { appState = getIt.get(); + contactUsViewModel = getIt.get(); return DecoratedBox( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, @@ -45,71 +52,113 @@ class FindUsItemCard extends StatelessWidget { ); } - Widget get hospitalName => Row( + Widget get hospitalName => Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.network( - getHMGLocationsModel.projectImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", - width: 40.h, - height: 40.h, - fit: BoxFit.cover, - ).circle(100).toShimmer2(isShow: false).paddingOnly(right: 10), - Expanded( - child: Text( - getHMGLocationsModel.locationName!, - style: TextStyle( - fontWeight: FontWeight.w600, - fontSize: 16, - color: AppColors.blackColor, - ), - ), - ) + (getHMGLocationsModel.distanceInKilometers != 0 && contactUsViewModel.hasLocationEnabled) + ? Column( + children: [ + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelText: "${getHMGLocationsModel.distanceInKilometers ?? ""} km", + labelPadding: EdgeInsetsDirectional.only(start: -4.h, end: 8.w), + icon: AppAssets.location_red, + isEnglishOnly: true, + // iconColor: AppColors.primaryRedColor, + // backgroundColor: AppColors.secondaryLightRedColor, + // textColor: AppColors.errorColor, + ), + ), + SizedBox( + height: 16.h, + ), + ], + ) + : SizedBox.shrink(), + Row( + children: [ + Utils.buildImgWithNetwork( + url: getHMGLocationsModel.projectImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + iconColor: AppColors.transparent, + width: 40.h, + height: 40.h, + fit: BoxFit.cover, + ).circle(100).toShimmer2(isShow: false).paddingOnly(right: 10), + Expanded( + child: Text( + getHMGLocationsModel.locationName!, + style: TextStyle( + fontWeight: FontWeight.w600, + fontSize: 16, + color: AppColors.blackColor, + ), + ), + ) + ], + ), ], ); Widget get distanceInfo => Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - AppCustomChipWidget( - labelText: "${getHMGLocationsModel.distanceInKilometers ?? ""} km", - icon: AppAssets.location_red, - iconColor: AppColors.primaryRedColor, - backgroundColor: AppColors.secondaryLightRedColor, - textColor: AppColors.errorColor, - ), - Row( - children: [ - AppCustomChipWidget( - labelText: LocaleKeys.getDirections.tr(), - icon: AppAssets.directions_icon, - iconColor: AppColors.whiteColor, - backgroundColor: AppColors.textColor.withValues(alpha: 0.8), - textColor: AppColors.whiteColor, - onChipTap: () async { - await MapLauncher.showMarker( - mapType: MapType.google, + Expanded( + flex: 7, + child: CustomButton( + text: LocaleKeys.getDirections.tr(), + onPressed: () async { + await MapLauncher.showMarker( + mapType: MapType.google, + coords: Coords(double.parse(getHMGLocationsModel.latitude ?? "0.0"), double.parse(getHMGLocationsModel.longitude ?? "0.0")), + title: getHMGLocationsModel.locationName ?? "Hospital", + ).catchError((err) { + MapLauncher.showMarker( + mapType: Platform.isIOS ? MapType.apple : MapType.google, coords: Coords(double.parse(getHMGLocationsModel.latitude ?? "0.0"), double.parse(getHMGLocationsModel.longitude ?? "0.0")), title: getHMGLocationsModel.locationName ?? "Hospital", - ).catchError((err) { - MapLauncher.showMarker( - mapType: Platform.isIOS ? MapType.apple : MapType.google, - coords: Coords(double.parse(getHMGLocationsModel.latitude ?? "0.0"), double.parse(getHMGLocationsModel.longitude ?? "0.0")), - title: getHMGLocationsModel.locationName ?? "Hospital", - ); - }); - }, + ); + }); + }, + backgroundColor: AppColors.transparent, + borderColor: AppColors.textColor, + textColor: AppColors.blackColor, + borderWidth: 1.h, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 40.h, + icon: AppAssets.directions_icon, + iconColor: AppColors.blackColor, + iconSize: 16.h, + ), + ), + SizedBox(width: 8.w), + Expanded( + flex: 1, + child: Container( + height: (isFoldable || isTablet) ? 50.h : 40.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.transparent, + borderRadius: 10.h, + side: BorderSide( + color: AppColors.textColor, + width: 1.2, + ), ), - SizedBox(width: 4.w), - AppCustomChipWidget( - labelText: LocaleKeys.callNow.tr(), - icon: AppAssets.call_fill, - iconColor: Colors.white, - backgroundColor: AppColors.primaryRedColor.withValues(alpha: 1.0), - textColor: Colors.white, - onChipTap: () { - launchUrl(Uri.parse("tel://" + "${getHMGLocationsModel.phoneNumber}")); - }, + child: Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.call_fill, + iconColor: AppColors.textColor, + width: 5.w, + height: 5.h, + fit: BoxFit.scaleDown, + ), ), - ], + ).onPress(() { + launchUrl(Uri.parse("tel://" + "${getHMGLocationsModel.phoneNumber}")); + }), ), ], ); diff --git a/lib/presentation/covid19test/covid19_landing_page.dart b/lib/presentation/covid19test/covid19_landing_page.dart index a241da60..63ebe8f5 100644 --- a/lib/presentation/covid19test/covid19_landing_page.dart +++ b/lib/presentation/covid19test/covid19_landing_page.dart @@ -102,7 +102,7 @@ class _Covid19LandingPageState extends State { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), height: 50.h, @@ -259,7 +259,7 @@ class _Covid19LandingPageState extends State { : AppColors.greyTextColor.withValues(alpha: 0.3), textColor: AppColors.whiteColor, fontSize: 16.f, - fontWeight: FontWeight.w600, + isBold: true, borderRadius: 12.r, height: 56.h, ), diff --git a/lib/presentation/covid19test/covid_19_questionnaire.dart b/lib/presentation/covid19test/covid_19_questionnaire.dart index f7b1f4c0..bb12e448 100644 --- a/lib/presentation/covid19test/covid_19_questionnaire.dart +++ b/lib/presentation/covid19test/covid_19_questionnaire.dart @@ -71,7 +71,7 @@ class _Covid19QuestionnaireState extends State { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 16.f, - fontWeight: FontWeight.w600, + isBold: true, borderRadius: 12.r, height: 56.h, )), @@ -93,7 +93,7 @@ class _Covid19QuestionnaireState extends State { children: [ "Please answer below questionnaire:".toText14( color: AppColors.textColor, - weight: FontWeight.w500, + weight: FontWeight.w600, ), SizedBox(height: 20.h), // Question list diff --git a/lib/presentation/covid19test/covid_payment_screen.dart b/lib/presentation/covid19test/covid_payment_screen.dart index 40bf2863..db7268c5 100644 --- a/lib/presentation/covid19test/covid_payment_screen.dart +++ b/lib/presentation/covid19test/covid_payment_screen.dart @@ -178,7 +178,7 @@ class _CovidPaymentScreenState extends State { // borderColor: AppColors.primaryRedColor, // textColor: AppColors.whiteColor, // fontSize: 16.f, - // fontWeight: FontWeight.w500, + // isBold: true, // borderRadius: 12.r, // padding: EdgeInsets.symmetric(horizontal: 10.w), // icon: AppAssets.add_icon, @@ -211,7 +211,7 @@ class _CovidPaymentScreenState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset(AppAssets.mada, width: 72.h, height: 25.h), + Utils.buildImgWithAssets(icon: AppAssets.mada, width: 72.h, height: 25.h), SizedBox(height: 16.h), LocaleKeys.mada.tr(context: context).toText16(isBold: true), ], @@ -252,9 +252,9 @@ class _CovidPaymentScreenState extends State { children: [ Row( children: [ - Image.asset(AppAssets.visa, width: 50.h, height: 50.h), + Utils.buildImgWithAssets(icon: AppAssets.visa, width: 50.h, height: 50.h), SizedBox(width: 8.h), - Image.asset(AppAssets.mastercard, width: 40.h, height: 40.h), + Utils.buildImgWithAssets(icon: AppAssets.mastercard, width: 40.h, height: 40.h), ], ), SizedBox(height: 16.h), @@ -296,21 +296,11 @@ class _CovidPaymentScreenState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset( - AppAssets.tamaraEng, + Utils.buildImgWithAssets( + icon: AppAssets.tamaraEng, width: 72.h, height: 25.h, fit: BoxFit.contain, - // If PNG fails to load for any reason, log and fallback to SVG asset - errorBuilder: (context, error, stackTrace) { - debugPrint('Failed to load Tamara PNG asset: $error'); - return Utils.buildSvgWithAssets( - icon: AppAssets.tamara, - width: 72.h, - height: 25.h, - fit: BoxFit.contain, - ); - }, ), SizedBox(height: 16.h), LocaleKeys.tamara.tr(context: context).toText16(isBold: true), diff --git a/lib/presentation/covid19test/covid_review_screen.dart b/lib/presentation/covid19test/covid_review_screen.dart index 34401298..be6bdb71 100644 --- a/lib/presentation/covid19test/covid_review_screen.dart +++ b/lib/presentation/covid19test/covid_review_screen.dart @@ -279,7 +279,7 @@ class _CovidReviewScreenState extends State { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), // icon: AppAssets.add_icon, @@ -305,7 +305,7 @@ class _CovidReviewScreenState extends State { "Please select the procedure:".toText14( color: AppColors.textColor, - weight: FontWeight.w500, + weight: FontWeight.w600, ), SizedBox(height: 16.h), diff --git a/lib/presentation/e_referral/e_referral_form_manager.dart b/lib/presentation/e_referral/e_referral_form_manager.dart index 9e5cbe8c..bcdd6915 100644 --- a/lib/presentation/e_referral/e_referral_form_manager.dart +++ b/lib/presentation/e_referral/e_referral_form_manager.dart @@ -129,6 +129,18 @@ class ReferralFormManager extends ChangeNotifier { notifyListeners(); // Only notify when errors change } + void setFieldError(String field, String? message) { + switch (field) { + case 'medicalReport': + _errors.medicalReport = message; + break; + case 'insuredDocument': + _errors.insuredDocument = message; + break; + } + notifyListeners(); + } + void clearAllErrors() { _errors.requesterName = null; _errors.requesterPhone = null; diff --git a/lib/presentation/e_referral/e_referral_search_result.dart b/lib/presentation/e_referral/e_referral_search_result.dart index 6a4b8318..29c7a294 100644 --- a/lib/presentation/e_referral/e_referral_search_result.dart +++ b/lib/presentation/e_referral/e_referral_search_result.dart @@ -75,7 +75,7 @@ class _SearchResultPageState extends State { // style: TextStyle( // color: Colors.white, // fontSize: 12, - // fontWeight: FontWeight.w500, + // isBold: true, // ), ), ), diff --git a/lib/presentation/e_referral/new_e_referral.dart b/lib/presentation/e_referral/new_e_referral.dart index 844ef5d5..4135f15f 100644 --- a/lib/presentation/e_referral/new_e_referral.dart +++ b/lib/presentation/e_referral/new_e_referral.dart @@ -104,10 +104,9 @@ class _NewReferralPageState extends State { duration: const Duration(milliseconds: 300), curve: Curves.easeInOut, ); - // setState(() { - _currentStep++; - // }); - // widget.onStepChanged(_currentStep); + setState(() { + _currentStep++; + }); } void _submitReferral() { @@ -132,12 +131,24 @@ class _NewReferralPageState extends State { hmgServicesVM.createEReferral( requestModel: createReferralRequestModel, - onSuccess: (GenericApiModel response) { - showSuccessBottomSheet(int.parse(response.data), hmgServicesVM); + onSuccess: (GenericApiModel response) async{ LoaderBottomSheet.hideLoader(); + showSuccessBottomSheet(int.parse(response.data), hmgServicesVM); + await Future.delayed(Duration(milliseconds: 2000)).then((value) { + if (mounted) Navigator.pop(context); + }); + }, onError: (errorMessage) { // Handle error (e.g., show error message) + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight(context, + title: LocaleKeys.error.tr(context: context), + child: Utils.getErrorWidget( + loadingText: errorMessage.toString(), + ), callBackFunc: () { + Navigator.of(context).pop(); + }, isFullScreen: false); print(errorMessage); }, ); @@ -174,7 +185,7 @@ class _NewReferralPageState extends State { color: AppColors.whiteColor, padding: EdgeInsets.all(ResponsiveExtension(20).h), child: CustomButton( - text: _currentStep <= 1 ? LocaleKeys.next.tr() : LocaleKeys.submit.tr(), + text: _currentStep <= 1 ? LocaleKeys.next.tr() : LocaleKeys.submitEReferral.tr(), // icon: AppAssets.search_icon, iconColor: Colors.white, onPressed: () => {_handleNextStep()}, @@ -190,8 +201,9 @@ class _NewReferralPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.center, children: List.generate(3, (index) { - if (_currentStep == index) { - return StepperWidget(widthOfOneState, AppColors.primaryRedColor, true, 4.h); + // Fill current step and all previous completed steps + if (index <= _currentStep) { + return StepperWidget(widthOfOneState, AppColors.primaryRedColor, index == _currentStep, 4.h); } else { return StepperWidget(widthOfOneState, AppColors.greyLightColor, false, 4.h); } @@ -200,8 +212,8 @@ class _NewReferralPageState extends State { child: PageView( controller: _pageController, physics: const NeverScrollableScrollPhysics(), - onPageChanged: (index) => { - // setState(() => _currentStep = index) + onPageChanged: (index) { + setState(() => _currentStep = index); }, children: [ RequesterFormStep(), @@ -227,7 +239,7 @@ class _NewReferralPageState extends State { children: [ LocaleKeys.hereIsYourReferralNumber.tr(context: context).toText14( color: AppColors.textColorLight, - weight: FontWeight.w500, + weight: FontWeight.w600, ), SizedBox(width: 4.w), ("$requestId").toText16(isBold: true), diff --git a/lib/presentation/e_referral/widget/e-referral_otp.dart b/lib/presentation/e_referral/widget/e-referral_otp.dart index 17ae4272..970dedaa 100644 --- a/lib/presentation/e_referral/widget/e-referral_otp.dart +++ b/lib/presentation/e_referral/widget/e-referral_otp.dart @@ -63,28 +63,12 @@ class OTPService { Navigator.pop(context); final hmgServicesViewModel = context.read(); - LoaderBottomSheet.showLoader(); - hmgServicesViewModel.eReferralSendActivationCode( - requestModel: SendActivationCodeForEReferralRequestModel( - patientMobileNumber: int.parse(formManager.formData.requesterPhone), - zipCode: formManager.formData.countryEnum.countryCode, - patientOutSA: formManager.formData.countryEnum.countryCode == '966' ? 0 : 1, - ), - onSuccess: (GenericApiModel response) { - LoaderBottomSheet.hideLoader(); - hmgServicesViewModel.navigateToOTPScreen( - otpTypeEnum: OTPTypeEnum.sms, - phoneNumber: formManager.formData.requesterPhone, - loginToken: response.data, - onSuccess: () { - Navigator.pop(context); - onSuccess(); - }); - }, - onError: (String errorMessage) { - LoaderBottomSheet.hideLoader(); - ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMessage))); - }, + // Start listening for SMS before sending OTP + _startSmsListener( + context: context, + hmgServicesViewModel: hmgServicesViewModel, + formManager: formManager, + onSuccess: onSuccess, ); } }, @@ -100,4 +84,37 @@ class OTPService { )), ); } + + static void _startSmsListener({ + required BuildContext context, + required HmgServicesViewModel hmgServicesViewModel, + required ReferralFormManager formManager, + required Function onSuccess, + }) async { + LoaderBottomSheet.showLoader(); + + // Send OTP after starting listener + hmgServicesViewModel.eReferralSendActivationCode( + requestModel: SendActivationCodeForEReferralRequestModel( + patientMobileNumber: int.parse(formManager.formData.requesterPhone), + zipCode: formManager.formData.countryEnum.countryCode, + patientOutSA: formManager.formData.countryEnum.countryCode == '966' ? 0 : 1, + ), + onSuccess: (GenericApiModel response) { + LoaderBottomSheet.hideLoader(); + hmgServicesViewModel.navigateToOTPScreen( + otpTypeEnum: OTPTypeEnum.sms, + phoneNumber: formManager.formData.requesterPhone, + loginToken: response.data, + onSuccess: () { + Navigator.pop(context); + onSuccess(); + }); + }, + onError: (String errorMessage) { + LoaderBottomSheet.hideLoader(); + ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text(errorMessage))); + }, + ); + } } diff --git a/lib/presentation/e_referral/widget/e_referral_other_details.dart b/lib/presentation/e_referral/widget/e_referral_other_details.dart index 114b3b24..043dda21 100644 --- a/lib/presentation/e_referral/widget/e_referral_other_details.dart +++ b/lib/presentation/e_referral/widget/e_referral_other_details.dart @@ -142,8 +142,8 @@ class _OtherDetailsStepState extends State { Widget _buildBranchField(BuildContext context, ReferralFormManager formManager) { return DropdownWidget( - labelText: 'Branch', - hintText: formManager.formData.branch?.desciption ?? "Select Branch", + labelText: LocaleKeys.branch.tr(), + hintText: formManager.formData.branch?.desciption ?? LocaleKeys.selectBranch.tr(), isEnable: false, hasSelectionCustomIcon: true, labelColor: Colors.black, @@ -183,7 +183,7 @@ class _OtherDetailsStepState extends State { color: Colors.black, weight: FontWeight.w600, ), - // style: TextStyle(fontSize: 14, fontWeight: FontWeight.w600), + // style: TextStyle(fontSize: 14, isBold: true), //), ), ], @@ -248,7 +248,7 @@ class _OtherDetailsStepState extends State { child: Consumer( builder: (context, habibWalletVM, child) { final hospitals = habibWalletVM.advancePaymentHospitals; - if (hospitals == null || hospitals.isEmpty) { + if (hospitals.isEmpty) { return const Center( child: Padding( padding: EdgeInsets.all(16.0), @@ -289,8 +289,15 @@ class _OtherDetailsStepState extends State { } void _addMedicalReport(String image, File file, ReferralFormManager formManager) { + // Remove max 1 file check + // Max 1 MB + final fileSizeInBytes = file.lengthSync(); + if (fileSizeInBytes > 1 * 1024 * 1024) { + formManager.setFieldError('medicalReport', 'File size exceeds 1MB limit.'); + return; + } final newAttachment = EReferralAttachment( - fileName: 'medical_report_${formManager.formData.medicalReportImages.length + 1}.png', + fileName: 'medical_report_formManager.formData.medicalReportImages.length + 1}.png', base64String: image ); @@ -304,8 +311,15 @@ class _OtherDetailsStepState extends State { } void _addInsuranceDocument(String image, File file, ReferralFormManager formManager) { + // Remove max 1 file check + // Max 1 MB + final fileSizeInBytes = file.lengthSync(); + if (fileSizeInBytes > 1 * 1024 * 1024) { + formManager.setFieldError('insuredDocument', 'File size exceeds 1MB limit.'); + return; + } final newAttachment = EReferralAttachment( - fileName: 'insurance_${formManager.formData.insuredPatientImages.length + 1}.png', + fileName: 'insurance_formManager.formData.insuredPatientImages.length + 1}.png', base64String: image ); diff --git a/lib/presentation/e_referral/widget/e_referral_patient_info.dart b/lib/presentation/e_referral/widget/e_referral_patient_info.dart index cbce6919..ce70b9b9 100644 --- a/lib/presentation/e_referral/widget/e_referral_patient_info.dart +++ b/lib/presentation/e_referral/widget/e_referral_patient_info.dart @@ -1,9 +1,12 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'dart:ui' as ui; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/utils/validation_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/get_all_cities_resp_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/e_referral/e_referral_form_manager.dart'; import 'package:provider/provider.dart'; @@ -13,6 +16,8 @@ import 'package:hmg_patient_app_new/widgets/dropdown/dropdown_widget.dart'; import 'package:hmg_patient_app_new/widgets/input_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import '../../../core/dependencies.dart' show getIt; + class PatientInformationStep extends StatefulWidget { const PatientInformationStep({super.key}); @@ -84,91 +89,82 @@ class PatientInformationStepState extends State { } Widget _buildSectionTitle(String title) { - return Text( - title, - style: const TextStyle(fontWeight: FontWeight.w700, fontSize: 16) - ).paddingSymmetrical(4, 0); + return Text(title, style: const TextStyle(fontWeight: FontWeight.w700, fontSize: 16)).paddingSymmetrical(4, 0); } Widget _buildIdentificationField(ReferralFormManager formManager) { - return Focus( + return TextInputWidget( + controller: _identificationController, focusNode: _identificationFocusNode, - child: TextInputWidget( - controller: _identificationController, - padding: EdgeInsets.symmetric( - vertical: ResponsiveExtension(12).h, - horizontal: ResponsiveExtension(16).h, - ), - hintText: LocaleKeys.enterIdentificationNumber.tr(context: context), - labelText: LocaleKeys.identificationNumber.tr(context: context), - errorMessage: formManager.errors.patientIdentification, - hasError: !ValidationUtils.isNullOrEmpty(formManager.errors.patientIdentification), - onChange: (value) { - formManager.updatePatientIdentification(value ?? ''); - }, - onSubmitted: (value) { - _nameFocusNode.requestFocus(); - }, - ).paddingSymmetrical(0, 4), - ); + padding: EdgeInsets.symmetric( + vertical: ResponsiveExtension(12).h, + horizontal: ResponsiveExtension(16).h, + ), + hintText: LocaleKeys.enterIdentificationNumber.tr(context: context), + labelText: LocaleKeys.identificationNumber.tr(context: context), + errorMessage: formManager.errors.patientIdentification, + hasError: !ValidationUtils.isNullOrEmpty(formManager.errors.patientIdentification), + onChange: (value) { + formManager.updatePatientIdentification(value ?? ''); + }, + onSubmitted: (value) { + _nameFocusNode.requestFocus(); + }, + ).paddingSymmetrical(0, 4); } Widget _buildPatientNameField(ReferralFormManager formManager) { - return Focus( + return TextInputWidget( + controller: _nameController, focusNode: _nameFocusNode, - child: TextInputWidget( - controller: _nameController, - padding: EdgeInsets.symmetric( - vertical: ResponsiveExtension(12).h, - horizontal: ResponsiveExtension(16).h, - ), - hintText: LocaleKeys.patientName.tr(context: context), - labelText: LocaleKeys.name.tr(context: context), - keyboardType: TextInputType.text, - errorMessage: formManager.errors.patientName, - hasError: !ValidationUtils.isNullOrEmpty(formManager.errors.patientName), - onChange: (value) { - formManager.updatePatientName(value ?? ''); - }, - onSubmitted: (value) { - // Optionally move to next field or keep focus - }, - ).paddingSymmetrical(0, 4), - ); + padding: EdgeInsets.symmetric(vertical: ResponsiveExtension(12).h, horizontal: ResponsiveExtension(16).h), + hintText: LocaleKeys.patientName.tr(context: context), + labelText: LocaleKeys.name.tr(context: context), + keyboardType: TextInputType.text, + errorMessage: formManager.errors.patientName, + hasError: !ValidationUtils.isNullOrEmpty(formManager.errors.patientName), + onChange: (value) { + formManager.updatePatientName(value ?? ''); + }, + onSubmitted: (value) { + _phoneFocusNode.requestFocus(); + }, + ).paddingSymmetrical(0, 4); } Widget _buildPatientPhoneField(ReferralFormManager formManager) { - return Focus( - focusNode: _phoneFocusNode, + return Directionality( + textDirection: ui.TextDirection.ltr, child: TextInputWidget( - labelText: LocaleKeys.phoneNumber.tr(context: context), - hintText: "5xxxxxxxx", - controller: _phoneController, - padding: const EdgeInsets.all(8), - keyboardType: TextInputType.number, - fontFamily: "Poppins", - onChange: (value) { - formManager.updatePatientPhone(value ?? ''); - }, - onCountryChange: (value) { - formManager.updatePatientCountryEnum(value); - }, - prefix: '966', - isBorderAllowed: false, - isAllowLeadingIcon: true, - fontSize: 13, - isCountryDropDown: true, - leadingIcon: AppAssets.smart_phone, - errorMessage: formManager.errors.patientPhone, - hasError: !ValidationUtils.isNullOrEmpty(formManager.errors.patientPhone) + labelText: LocaleKeys.phoneNumber.tr(context: context), + hintText: "5xxxxxxxx", + controller: _phoneController, + focusNode: _phoneFocusNode, + padding: const EdgeInsets.all(8), + keyboardType: TextInputType.number, + fontFamily: "Poppins", + onChange: (value) { + formManager.updatePatientPhone(value ?? ''); + }, + onCountryChange: (value) { + formManager.updatePatientCountryEnum(value); + }, + prefix: '966', + isBorderAllowed: false, + isAllowLeadingIcon: true, + fontSize: 13, + isCountryDropDown: true, + leadingIcon: AppAssets.smart_phone, + errorMessage: formManager.errors.patientPhone, + hasError: !ValidationUtils.isNullOrEmpty(formManager.errors.patientPhone), ).paddingSymmetrical(0, 8), ); } Widget _buildPatientCityField(BuildContext context, ReferralFormManager formManager) { return DropdownWidget( - labelText: 'City', - hintText: formManager.formData.patientCity?.description ?? LocaleKeys.selectCity.tr(context: context), + labelText: LocaleKeys.city.tr(), + hintText: getLocaleDescription(formManager.formData.patientCity) ?? LocaleKeys.selectCity.tr(context: context), isEnable: false, hasSelectionCustomIcon: true, labelColor: Colors.black, @@ -177,15 +173,17 @@ class PatientInformationStepState extends State { leadingIcon: AppAssets.globe, dropdownItems: [], errorMessage: formManager.errors.patientCity, - hasError: !ValidationUtils.isNullOrEmpty(formManager.errors.patientCity), + hasError: !ValidationUtils.isNullOrEmpty(formManager.errors.patientCity), ).paddingSymmetrical(0, 4).onPress(() { _showCityBottomSheet(context, formManager); }); } + String? getLocaleDescription(GetAllCitiesResponseModel? patientCity) { + return getIt.get().isArabic() ? patientCity?.descriptionN : patientCity?.description; + } void _showCityBottomSheet(BuildContext context, ReferralFormManager formManager) { - showCommonBottomSheetWithoutHeight( context, title: LocaleKeys.selectCity.tr(context: context), @@ -204,25 +202,25 @@ class PatientInformationStepState extends State { return DecoratedBox( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: Colors.white, - customBorder: BorderRadius.all(Radius.circular(24.h)) , - - ), child: ListView.builder( - shrinkWrap: true, - padding: EdgeInsets.all(16.h), - physics: const BouncingScrollPhysics(), - itemBuilder: (context, index) { - final city = cities[index]; - return ListTile( - title: (city.description ?? 'Unknown').toText14(), - onTap: () { - formManager.updatePatientCity(city); - Navigator.pop(context); + customBorder: BorderRadius.all(Radius.circular(24.h)), + ), + child: ListView.builder( + shrinkWrap: true, + padding: EdgeInsets.all(16.h), + physics: const BouncingScrollPhysics(), + itemBuilder: (context, index) { + final city = cities[index]; + return ListTile( + title: (getLocaleDescription(city) ?? 'Unknown').toText14(), + onTap: () { + formManager.updatePatientCity(city); + Navigator.pop(context); + }, + ); }, - ); - }, - // separatorBuilder: (context, index) => const Divider(), - itemCount: cities.length, - )); + // separatorBuilder: (context, index) => const Divider(), + itemCount: cities.length, + )); }, ), useSafeArea: true, @@ -241,4 +239,4 @@ class PatientInformationStepState extends State { _phoneFocusNode.dispose(); super.dispose(); } -} \ No newline at end of file +} diff --git a/lib/presentation/e_referral/widget/e_referral_requester_form.dart b/lib/presentation/e_referral/widget/e_referral_requester_form.dart index d57abe23..926aab4f 100644 --- a/lib/presentation/e_referral/widget/e_referral_requester_form.dart +++ b/lib/presentation/e_referral/widget/e_referral_requester_form.dart @@ -116,9 +116,9 @@ class RequesterFormStepState extends State { Widget _buildRelationshipField(BuildContext context, ReferralFormManager formManager) { return DropdownWidget( labelText: LocaleKeys.relationship.tr(context: context), - hintText: formManager.formData.relationship?.textEn ?? LocaleKeys.selectRelation.tr(context: context), + hintText: formManager.formData.relationship?.text ?? LocaleKeys.selectRelation.tr(context: context), isEnable: false, - selectedValue: formManager.formData.relationship?.textEn ?? LocaleKeys.selectRelation.tr(context: context), + selectedValue: formManager.formData.relationship?.text ?? LocaleKeys.selectRelation.tr(context: context), errorMessage: formManager.errors.relationship, hasError: !ValidationUtils.isNullOrEmpty(formManager.errors.relationship), hasSelectionCustomIcon: false, @@ -182,7 +182,7 @@ class RequesterFormStepState extends State { itemBuilder: (context, index) { final relationship = hmgServicesVM.relationTypes[index]; return ListTile( - title:relationship.textEn?.toText14(), + title:relationship.text?.toText14(), onTap: () { formManager.updateRelationship(relationship); Navigator.pop(context); diff --git a/lib/presentation/e_referral/widget/search_e_referral_form.dart b/lib/presentation/e_referral/widget/search_e_referral_form.dart index 33697d5e..c19b8a40 100644 --- a/lib/presentation/e_referral/widget/search_e_referral_form.dart +++ b/lib/presentation/e_referral/widget/search_e_referral_form.dart @@ -1,6 +1,9 @@ import 'package:flutter/material.dart'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/utils/validation_utils.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/e_referral/e_referral_form_manager.dart'; import 'package:provider/provider.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -69,12 +72,13 @@ class SearchEReferralFormFormState extends State { autofocus: true, child: TextInputWidget( controller: _searchController, - padding: const EdgeInsets.symmetric(horizontal: 16.0), - hintText: formManager.searchCriteria == 0 ? "Enter Identification Number" : "Enter Referral Number", - labelText: formManager.searchCriteria == 0 ? "Identification Number" : "Referral Number", + hintText: formManager.searchCriteria == 0 ? LocaleKeys.enterIdentificationNumber.tr() : LocaleKeys.enterReferralNumber.tr(), + labelText: formManager.searchCriteria == 0 ? LocaleKeys.identificationNumber.tr() : LocaleKeys.referralNumber.tr(), keyboardType: TextInputType.number, fontFamily: "Poppins", errorMessage: formManager.errors.searchValue, + padding: EdgeInsets.symmetric(vertical: 14.h, horizontal: 16.h), + hasError: !ValidationUtils.isNullOrEmpty(formManager.errors.searchValue), onChange: (value) { formManager.updateSearchValue(value ?? ''); @@ -90,10 +94,10 @@ class SearchEReferralFormFormState extends State { autofocus: false, child: TextInputWidget( autoFocus: false, - labelText: 'Phone Number', - hintText: "5xxxxxxxx", + labelText: LocaleKeys.phoneNumber.tr(), + hintText: LocaleKeys.phoneHint.tr(), controller: _phoneController, - padding: const EdgeInsets.all(8), + padding: const EdgeInsets.symmetric(horizontal: 16.0, vertical: 8.0), keyboardType: TextInputType.number, fontFamily: "Poppins", onChange: (value) { @@ -122,8 +126,8 @@ class SearchEReferralFormFormState extends State { Widget _buildSelectionField(BuildContext context, ReferralFormManager formManager) { return DropdownWidget( - labelText: "Select the Search Criteria", - hintText: formManager.searchCriteria == 0 ? "Identification Number" : "Referral Number", + labelText: LocaleKeys.selectCriteria.tr(), + hintText: formManager.searchCriteria == 0 ? LocaleKeys.identificationNumber.tr() : LocaleKeys.referralNumber.tr(), isEnable: false, hasSelectionCustomIcon: false, labelColor: Colors.black, @@ -137,13 +141,13 @@ class SearchEReferralFormFormState extends State { void _showCriteriaBottomSheet(BuildContext context, ReferralFormManager formManager) { final criteriaList = [ - {0: 'Identification Number'}, - {1: 'Referral Number'}, + {0: LocaleKeys.identificationNumber.tr()}, + {1: LocaleKeys.referralNumber.tr()}, ]; showCommonBottomSheetWithoutHeight( context, - title: "Select Criteria", + title: LocaleKeys.selectCriteria.tr(), child: ListView.separated( shrinkWrap: true, physics: const BouncingScrollPhysics(), diff --git a/lib/presentation/emergency_services/RRT/rrt_map_screen.dart b/lib/presentation/emergency_services/RRT/rrt_map_screen.dart index 530152b1..1a603dc3 100644 --- a/lib/presentation/emergency_services/RRT/rrt_map_screen.dart +++ b/lib/presentation/emergency_services/RRT/rrt_map_screen.dart @@ -31,25 +31,26 @@ class RrtMapScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - floatingActionButton: Visibility( - visible: context.watch().bottomSheetType == - BottomSheetType.FIXED, - child: Padding( - padding: EdgeInsetsDirectional.only(end: 8.h, bottom: 68.h), - child: DecoratedBox( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, borderRadius: 12.h), - child: Utils.buildSvgWithAssets( - icon: AppAssets.locate_me, width: 24.h, height: 24.h) - .paddingAll(12.h) - .onPress(() { - context - .read() - .moveToCurrentLocation(); - }), - ), - ), - ), + // floatingActionButton: Visibility( + // visible: context.watch().bottomSheetType == + // BottomSheetType.FIXED, + // child: Padding( + // padding: EdgeInsetsDirectional.only(end: 8.h, bottom: 68.h), + // child: DecoratedBox( + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // color: AppColors.whiteColor, borderRadius: 12.h), + // child: Container() + // // Utils.buildSvgWithAssets( + // // icon: AppAssets.locate_me, width: 24.h, height: 24.h) + // // .paddingAll(12.h) + // // .onPress(() { + // // context + // // .read() + // // .moveToCurrentLocation(); + // // }), + // ), + // ), + // ), bottomSheet: ExpandableBottomSheet( bottomSheetType: context.watch().bottomSheetType, @@ -73,6 +74,7 @@ class RrtMapScreen extends StatelessWidget { inputController: context.read().gmsController, showCenterMarker: true, + bottomPaddingHeight: MediaQuery.of(context).size.height * 0.3, ) else HMSMap( @@ -139,7 +141,7 @@ class RrtMapScreen extends StatelessWidget { color: AppColors.textColor, ), LocaleKeys.pleaseSelectTheLocation.tr().toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.greyTextColor, ) ], @@ -189,10 +191,7 @@ class RrtMapScreen extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, spacing: 16.h, children: [ - hospitalAndPickUpSection(context), - - ], ).paddingOnly(top: 24.h, bottom: 32.h,left: 24.h, right: 24.h), @@ -227,9 +226,8 @@ class RrtMapScreen extends StatelessWidget { shrinkWrap: true, itemCount: 3, itemBuilder: (__, index) { - if (index == - 2) // todo means the end of the list so handle as per the viewmodel - { + if (index == 2) // todo means the end of the list so handle as per the viewmodel + { return CustomButton( height: 40.h, backgroundColor: AppColors.lightRedButtonColor, @@ -243,7 +241,7 @@ class RrtMapScreen extends StatelessWidget { return AddressItem( isSelected: index == 0, address: - "Flat No 301, Building No 12, Palm Spring Apartment, Sector 45, Gurugram, Haryana 122003", + "", title: index == 0 ? LocaleKeys.home.tr() : LocaleKeys.work.tr(), onTap: () {}, ); @@ -370,7 +368,7 @@ class RrtMapScreen extends StatelessWidget { children: [ title.toText12( color: AppColors.greyTextColor, - fontWeight: FontWeight.w500, + isBold: true, ), SizedBox(height: 2.h), ], @@ -378,7 +376,7 @@ class RrtMapScreen extends StatelessWidget { ), subTitle.toText14( color: AppColors.textColor, - weight: FontWeight.w500, + weight: FontWeight.w600, ), ], ), @@ -423,7 +421,7 @@ class RrtMapScreen extends StatelessWidget { height: 18.h, width: 18.h), SizedBox(width: 4.h,), LocaleKeys.amountPaidAtHospital.tr().toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.greyTextColor, ), ], @@ -437,7 +435,7 @@ class RrtMapScreen extends StatelessWidget { .getTotalPrice() ?? 0)) .toText24( - fontWeight: FontWeight.w600, + isBold: true, color: AppColors.textColor, letterSpacing: -2), AppColors.blackColor, @@ -561,7 +559,9 @@ class RrtMapScreen extends StatelessWidget { context, child: SizedBox( height: MediaQuery.sizeOf(context).height * .8, - child: LocationInputBottomSheet(), + child: LocationInputBottomSheet( + moveCameraController:(location) => context.read().moveController(location) , + ), ), isFullScreen: false, isCloseButtonVisible: true, diff --git a/lib/presentation/emergency_services/RRT/rrt_request_type_select.dart b/lib/presentation/emergency_services/RRT/rrt_request_type_select.dart index c17f3560..79172db3 100644 --- a/lib/presentation/emergency_services/RRT/rrt_request_type_select.dart +++ b/lib/presentation/emergency_services/RRT/rrt_request_type_select.dart @@ -21,6 +21,7 @@ class RrtRequestTypeSelect extends StatelessWidget { return Column( children: [ Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.rapidResponseTeam.tr(context: context).toText20(color: AppColors.textColor, isBold: true), SizedBox( @@ -32,10 +33,9 @@ class RrtRequestTypeSelect extends StatelessWidget { borderRadius: 20.r, ), child: OptionSelection(context)), - SizedBox( - height: 24.h, - ), + SizedBox(height: 16.h), termsAndCondition(context, emergencyServicesVM), + SizedBox(height: 16.h), ], ).paddingSymmetrical(24.w, 0.h), bottomPriceContent(context, emergencyServicesVM) @@ -79,7 +79,7 @@ class RrtRequestTypeSelect extends StatelessWidget { ), Utils.getPaymentAmountWithSymbol( (Utils.formatNumberToInternationalFormat(context.read().selectedRRTProcedure?.patientShare ?? 0)) - .toText24(fontWeight: FontWeight.w600, color: AppColors.textColor, letterSpacing: -2), + .toText24(isBold: true, color: AppColors.textColor, letterSpacing: -2), AppColors.blackColor, 17.h) ], @@ -101,7 +101,7 @@ class RrtRequestTypeSelect extends StatelessWidget { Row( children: [ LocaleKeys.vat15.tr(context: context).toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.greyTextColor, ), "${emergencyServicesVM.selectedRRTProcedure?.patientTaxAmount})".toText14( @@ -122,15 +122,7 @@ class RrtRequestTypeSelect extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Row( - spacing: 6.w, - children: [ - Image.asset(AppAssets.mada, width: 24.h, height: 24.h), - Image.asset(AppAssets.visa, width: 24.h, height: 24.h), - Image.asset(AppAssets.mastercard, width: 24.h, height: 24.h), - Image.asset(AppAssets.applePay, width: 24.h, height: 24.h), - ], - ), + Utils.getPaymentMethods(), Column( children: [ Divider( @@ -139,7 +131,7 @@ class RrtRequestTypeSelect extends StatelessWidget { ), Utils.getPaymentAmountWithSymbol( (Utils.formatNumberToInternationalFormat(context.read().selectedRRTProcedure?.patientShareWithTax ?? 0)) - .toText24(fontWeight: FontWeight.w600, color: AppColors.textColor, letterSpacing: -2), + .toText24(isBold: true, color: AppColors.textColor, letterSpacing: -2), AppColors.blackColor, 17.h), ], @@ -148,8 +140,10 @@ class RrtRequestTypeSelect extends StatelessWidget { ), CustomButton(text: LocaleKeys.next.tr(), onPressed: () { Navigator.pop(context); - emergencyServicesVM.openRRT(); - }) + emergencyServicesVM.openRRT(context); + }, + isDisabled: !emergencyServicesVM.agreedToTermsAndCondition, + ) ], ).paddingAll(24.h), ), @@ -183,7 +177,7 @@ class RrtRequestTypeSelect extends StatelessWidget { final indexOfSelectedItem = selectedProcedure != null ? procedureList.indexOf(selectedProcedure) : -1; return RadioListTile( - title: (procedure.procedureName ?? "").toText16(color: AppColors.textColor, weight: FontWeight.w500), + title: (procedure.procedureName ?? "").toText16(color: AppColors.textColor, isBold: true), value: index, fillColor: WidgetStateProperty.resolveWith((states) { if (states.contains(WidgetState.selected)) { @@ -236,7 +230,6 @@ class RrtRequestTypeSelect extends StatelessWidget { value: emergencyServicesVM.agreedToTermsAndCondition, checkColor: AppColors.whiteColor, fillColor: MaterialStateProperty.resolveWith((Set states) { - print("the state is ${states}"); if (states.contains(WidgetState.selected)) { return AppColors.errorColor; } @@ -250,8 +243,8 @@ class RrtRequestTypeSelect extends StatelessWidget { spacing: 4.w, children: [ SizedBox.shrink(), - LocaleKeys.agreeTo.tr().toText16(color: AppColors.textColor, weight: FontWeight.w500), - LocaleKeys.termsConditoins.tr().toText16(color: AppColors.errorColor, isUnderLine: true, weight: FontWeight.w500).onPress(() { + LocaleKeys.agreeTo.tr().toText16(color: AppColors.textColor, isBold: true), + LocaleKeys.termsConditoins.tr().toText16(color: AppColors.errorColor, isUnderLine: true, isBold: true).onPress(() { emergencyServicesVM.getTermsAndConditions(); }), ], diff --git a/lib/presentation/emergency_services/call_ambulance/call_ambulance_page.dart b/lib/presentation/emergency_services/call_ambulance/call_ambulance_page.dart index e5578a3e..c891e565 100644 --- a/lib/presentation/emergency_services/call_ambulance/call_ambulance_page.dart +++ b/lib/presentation/emergency_services/call_ambulance/call_ambulance_page.dart @@ -1,3 +1,5 @@ +import 'dart:io'; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -33,26 +35,26 @@ class CallAmbulancePage extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - floatingActionButton: Visibility( - visible: context.watch().bottomSheetType == BottomSheetType.FIXED, - child: Padding( - padding: EdgeInsetsDirectional.only(end: 8.h, bottom: 68.h), - child: DecoratedBox( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.h), - child: Utils.buildSvgWithAssets(icon: AppAssets.locate_me, width: 24.h, height: 24.h).paddingAll(12.h).onPress(() { - context.read().moveToCurrentLocation(); - }), - ), - ), - ), + // floatingActionButton: Visibility( + // visible: context.watch().bottomSheetType == BottomSheetType.FIXED, + // child: Padding( + // padding: EdgeInsetsDirectional.only(end: 8.h, bottom: 68.h), + // child: DecoratedBox( + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.h), + // child: Utils.buildSvgWithAssets(icon: AppAssets.locate_me, width: 24.h, height: 24.h).paddingAll(12.h).onPress(() { + // context.read().moveToCurrentLocation(); + // }), + // ), + // ), + // ), bottomSheet: Column( mainAxisSize: MainAxisSize.min, children: [ ExpandableBottomSheet( bottomSheetType: context.watch().bottomSheetType, children: { - BottomSheetType.EXPANDED: ExpanedBottomSheet(context), - BottomSheetType.FIXED: FixedBottomSheet(context), + BottomSheetType.EXPANDED: ExpandedBottomSheet(context), + BottomSheetType.FIXED: pickUpDetailAndAppointementSection(context), }, ), ], @@ -67,6 +69,7 @@ class CallAmbulancePage extends StatelessWidget { myLocationEnabled: true, inputController: context.read().gmsController, showCenterMarker: true, + bottomPaddingHeight: 400.h, ) else HMSMap( @@ -89,7 +92,7 @@ class CallAmbulancePage extends StatelessWidget { ); } - Widget FixedBottomSheet(BuildContext context) { + Widget ExpandedBottomSheet(BuildContext context) { return GestureDetector( onVerticalDragUpdate: (details) { // if(details.delta.dy<0){ @@ -169,7 +172,11 @@ class CallAmbulancePage extends StatelessWidget { CustomButton( text: LocaleKeys.selectDetails.tr(context: context), onPressed: () { - context.read().updateBottomSheetState(BottomSheetType.EXPANDED); + LocationViewModel locationViewModel = context.read(); + GeocodeResponse? response = locationViewModel.geocodeResponse; + PlaceDetails? placeDetails = locationViewModel.placeDetails; + PlacePrediction? placePrediction = locationViewModel.selectedPrediction; + context.read().submitAmbulanceRequest(response?.results.first, placeDetails, placePrediction); }) ], ).paddingOnly(top: 24.h, bottom: 32.h, left: 24.h, right: 24.h), @@ -182,7 +189,7 @@ class CallAmbulancePage extends StatelessWidget { ); } - Widget ExpanedBottomSheet(BuildContext context) { + Widget pickUpDetailAndAppointementSection(BuildContext context) { return GestureDetector( onVerticalDragUpdate: (details) { if (details.delta.dy > 0) { @@ -321,28 +328,34 @@ class CallAmbulancePage extends StatelessWidget { ) ], ), + if(AmbulanceCallingPlace.TO_HOSPITAL == context.read().callingPlace) + Row( + children: [ + hospitalAndPickUpItemContent( + title: LocaleKeys.appointment.tr(context: context), + subTitle: LocaleKeys.haveAnyAppointment.tr(context: context), + leadingIcon: AppAssets.appointment_calendar_icon, + ), + CustomSwitch( + value: context.watch().haveAnAppointment, + onChanged: (value) async { + // if (value) { + // openAppointmentList(context); + // } + await context.read().updateAppointment(value); + if (context.read().appointments?.isNotEmpty == true) { + openAppointmentList(context); + } + }, + ) + ], + ), - Row( - children: [ - hospitalAndPickUpItemContent( - title: LocaleKeys.appointment.tr(context: context), - subTitle: LocaleKeys.haveAnyAppointment.tr(context: context), - leadingIcon: AppAssets.appointment_calendar_icon, - ), - CustomSwitch( - value: context.watch().haveAnAppointment, - onChanged: (value) async { - // if (value) { - // openAppointmentList(context); - // } - await context.read().updateAppointment(value); - if (context.read().appointments?.isNotEmpty == true) { - openAppointmentList(context); - } - }, - ) - ], - ), + + // Visibility( + // visible: , + // child: + // ), ], ).paddingAll(16.h), ); @@ -384,7 +397,7 @@ class CallAmbulancePage extends StatelessWidget { children: [ title.toText12( color: AppColors.greyTextColor, - fontWeight: FontWeight.w500, + isBold: true, ), SizedBox(height: 2.h), ], @@ -392,7 +405,7 @@ class CallAmbulancePage extends StatelessWidget { ), subTitle.toText14( color: AppColors.textColor, - weight: FontWeight.w500, + weight: FontWeight.w600, ), ], ), @@ -437,7 +450,7 @@ class CallAmbulancePage extends StatelessWidget { width: 4.h, ), LocaleKeys.amountPaidAtHospital.tr(context: context).toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.greyTextColor, ), ], @@ -447,7 +460,7 @@ class CallAmbulancePage extends StatelessWidget { ), Utils.getPaymentAmountWithSymbol( (Utils.formatNumberToInternationalFormat(context.read().getTotalPrice() ?? 0)) - .toText24(fontWeight: FontWeight.w600, color: AppColors.textColor, letterSpacing: -2), + .toText24(isBold: true, color: AppColors.textColor, letterSpacing: -2), AppColors.blackColor, 17.h) @@ -457,12 +470,8 @@ class CallAmbulancePage extends StatelessWidget { CustomButton( text: LocaleKeys.submitRequest.tr(context: context), onPressed: () { - LocationViewModel locationViewModel = context.read(); - GeocodeResponse? response = locationViewModel.geocodeResponse; - PlaceDetails? placeDetails = locationViewModel.placeDetails; - PlacePrediction? placePrediction = locationViewModel.selectedPrediction; - context.read().submitAmbulanceRequest(response?.results.first, placeDetails, placePrediction); - }) + context.read().updateBottomSheetState(BottomSheetType.EXPANDED); + }) ], ).paddingOnly(top: 24.h, bottom: 12.h, left: 24.h, right: 24.h), ), @@ -527,7 +536,7 @@ class CallAmbulancePage extends StatelessWidget { textPlaceInput(context) { return Consumer(builder: (_, vm, __) { // print("the data is ${vm.geocodeResponse?.results.first.formattedAddress ?? vm.selectedPrediction?.description}"); - return (vm.geocodeResponse != null && vm.geocodeResponse!.results.isNotEmpty) ? SizedBox( + return SizedBox( width: MediaQuery.sizeOf(context).width, child: TextInputWidget( labelText: LocaleKeys.enterPickupLocationManually.tr(context: context), @@ -546,10 +555,11 @@ class CallAmbulancePage extends StatelessWidget { vertical: ResponsiveExtension(10).h, horizontal: ResponsiveExtension(15).h, ), + fontFamily: "Poppins", ).onPress(() { openLocationInputBottomSheet(context); }), - ) : SizedBox.shrink(); + ); }); } @@ -561,13 +571,15 @@ class CallAmbulancePage extends StatelessWidget { } openLocationInputBottomSheet(BuildContext context) { - context.read().flushSearchPredictions(); + // context.read().flushSearchPredictions(); showCommonBottomSheetWithoutHeight( title: "", context, child: SizedBox( height: MediaQuery.sizeOf(context).height * .8, - child: LocationInputBottomSheet(), + child: LocationInputBottomSheet( + moveCameraController:(location) => context.read().moveController(location) , + ), ), isFullScreen: false, isCloseButtonVisible: true, @@ -578,21 +590,24 @@ class CallAmbulancePage extends StatelessWidget { } hospitalField(BuildContext context) { - return DecoratedBox( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.h), - child: Row( - children: [ - hospitalAndPickUpItemContent( - title: LocaleKeys.selectHospital.tr(context: context), - subTitle: context.read().getSelectedHospitalName() ?? LocaleKeys.selectHospital.tr(context: context), - leadingIcon: AppAssets.hospital, - ), - Utils.buildSvgWithAssets(icon: AppAssets.down_cheveron, width: 24.h, height: 24.h).paddingAll(16.h) - ], - ).onPress(() { - showHospitalBottomSheet(context); - }).paddingSymmetrical( - 10.w, 12.h), + return Visibility( + visible: false == context.watch().haveAnAppointment, + child: DecoratedBox( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.h), + child: Row( + children: [ + hospitalAndPickUpItemContent( + title: LocaleKeys.selectHospital.tr(context: context), + subTitle: context.read().getSelectedHospitalName() ?? LocaleKeys.selectHospital.tr(context: context), + leadingIcon: AppAssets.hospital, + ), + Utils.buildSvgWithAssets(icon: AppAssets.down_cheveron, width: 24.h, height: 24.h).paddingAll(16.h) + ], + ).onPress(() { + showHospitalBottomSheet(context); + }).paddingSymmetrical( + 10.w, 12.h), + ), ); } diff --git a/lib/presentation/emergency_services/call_ambulance/requesting_services_page.dart b/lib/presentation/emergency_services/call_ambulance/requesting_services_page.dart index bc6d9b03..15d1d552 100644 --- a/lib/presentation/emergency_services/call_ambulance/requesting_services_page.dart +++ b/lib/presentation/emergency_services/call_ambulance/requesting_services_page.dart @@ -30,7 +30,7 @@ class RequestingServicesPage extends StatelessWidget { Positioned( bottom: 1, child: LocaleKeys.submitRequest.tr(context: context) - .toText16(color: AppColors.textColor, weight: FontWeight.w500) + .toText16(color: AppColors.textColor, isBold: true) .paddingOnly(bottom: 100.h, left: 100.h, right: 100.h)) ], ), diff --git a/lib/presentation/emergency_services/call_ambulance/tracking_screen.dart b/lib/presentation/emergency_services/call_ambulance/tracking_screen.dart index 9a49dd06..a714ab56 100644 --- a/lib/presentation/emergency_services/call_ambulance/tracking_screen.dart +++ b/lib/presentation/emergency_services/call_ambulance/tracking_screen.dart @@ -73,7 +73,10 @@ class TrackingScreen extends StatelessWidget { child: SingleChildScrollView( child: Column( children: [ - animationSection(), + Padding( + padding: EdgeInsetsDirectional.only(top:16.h,start: 16.w,end: 16.w ), + child: animationSection(context), + ), Column( spacing: 16.h, children: [orderStatus(context), orderTrackingId(context), contactSection()], @@ -83,12 +86,12 @@ class TrackingScreen extends StatelessWidget { ); } - animationSection() { + animationSection(BuildContext context) { switch (state) { case OrderTrackingState.waitingForCall: case OrderTrackingState.dispactched: case OrderTrackingState.returning: - return Lottie.asset(AppAnimations.ambulance, repeat: true, reverse: false, width: 260.h, height: 200.h); + return showImage(order != null ? AppAssets.ambulance_section : AppAssets.rrt_section, context); case OrderTrackingState.ended: return Lottie.asset(AppAnimations.checkmark, repeat: true, width: 260.h, height: 200.h); case OrderTrackingState.failed: @@ -146,7 +149,7 @@ class TrackingScreen extends StatelessWidget { borderColor: AppColors.primaryRedColor, textColor: Colors.white, icon: AppAssets.cancel, - height: 40.h, + height: 56.h, iconSize: 18.w, ), ], @@ -220,9 +223,9 @@ class TrackingScreen extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Dr. John Doe".toText16(color: AppColors.textColor, weight: FontWeight.w600), + "Dr. John Doe".toText16(color: AppColors.textColor, isBold: true), SizedBox(height: 4.h), - "MBBS, MD - General Medicine".toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), + "MBBS, MD - General Medicine".toText12(color: AppColors.greyTextColor, isBold: true), ], ), ), @@ -237,7 +240,7 @@ class TrackingScreen extends StatelessWidget { backgroundColor: AppColors.lightRedButtonColor, iconColor: AppColors.primaryRedColor, borderColor: Colors.transparent, - height: 40.h, + height: 56.h, ), ) ], @@ -253,7 +256,9 @@ class TrackingScreen extends StatelessWidget { }, currentLocation: context.read().getGMSLocation(), - onCameraMoved: (value) => context.read().handleGMSMapCameraMoved(value)); + onCameraMoved: (value) => context.read().handleGMSMapCameraMoved(value), + bottomPaddingHeight: MediaQuery.of(context).size.height * 0.2, + ); } else { return HMSMap( myLocationEnabled: false, @@ -268,7 +273,7 @@ class TrackingScreen extends StatelessWidget { informationRegardingTrackingSection() { return Column( crossAxisAlignment: CrossAxisAlignment.start, - children: [currentStatus(), SizedBox(height: 4.h), "You will receive a call from HMG for confirmation ".toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500)], + children: [currentStatus(), SizedBox(height: 4.h)], ); } @@ -293,7 +298,7 @@ class TrackingScreen extends StatelessWidget { text: "...", style: TextStyle( fontSize: 21.f, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w600, color: AppColors.errorColor, ), ), @@ -306,7 +311,7 @@ class TrackingScreen extends StatelessWidget { text: "15:30", style: TextStyle( fontSize: 21.f, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w600, color: AppColors.textColor, ), ), @@ -314,7 +319,7 @@ class TrackingScreen extends StatelessWidget { text: LocaleKeys.mins.tr(), style: TextStyle( fontSize: 21.f, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w600, color: AppColors.errorColor, ), ), @@ -322,7 +327,7 @@ class TrackingScreen extends StatelessWidget { text: LocaleKeys.toHospitalLower.tr(), style: TextStyle( fontSize: 21.f, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w600, color: AppColors.textColor, ), ), @@ -330,7 +335,7 @@ class TrackingScreen extends StatelessWidget { ); case OrderTrackingState.ended: - return LocaleKeys.arrived.tr().toText21(color: AppColors.textColor, weight: FontWeight.w600); + return LocaleKeys.arrived.tr().toText21(color: AppColors.textColor, isBold: true); case OrderTrackingState.failed: case OrderTrackingState.cancel: return SizedBox.shrink(); @@ -354,7 +359,7 @@ class TrackingScreen extends StatelessWidget { spacing: 8.h, children: [ - Visibility(visible:(order != null || rrtOrder != null) ,child: "Req ID: ${order?.iD?? rrtOrder?.iD}".toText16(color: AppColors.textColor, weight: FontWeight.w600)), + Visibility(visible:(order != null || rrtOrder != null) ,child: "Req ID: ${order?.iD?? rrtOrder?.iD}".toText16(color: AppColors.textColor, isBold: true)), if(order != null) ambulanceOrderData() // else rrtOrderData() @@ -388,8 +393,8 @@ class TrackingScreen extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, spacing: 4.h, children: [ - LocaleKeys.contact.tr().toText14(color: AppColors.textColor, weight: FontWeight.w600), - "0115259555".toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500).onPress((){ + LocaleKeys.contact.tr().toText14(color: AppColors.textColor, isBold: true), + "0115259555".toText12(color: AppColors.primaryRedColor, isBold: true).onPress((){ launchUrl( Uri.parse("tel://0115259555"), ); @@ -432,23 +437,23 @@ class TrackingScreen extends StatelessWidget { getTitle(OrderTrackingState? state) { if(state == null) { - return LocaleKeys.failed.tr().toText16(color: AppColors.textColor, weight: FontWeight.w600); + return LocaleKeys.failed.tr().toText16(color: AppColors.textColor, isBold: true); } switch (state) { case OrderTrackingState.waitingForCall: - return LocaleKeys.confirmationCall.tr().toText16(color: AppColors.textColor, weight: FontWeight.w600); + return LocaleKeys.confirmationCall.tr().toText16(color: AppColors.textColor, isBold: true); case OrderTrackingState.dispactched: - return LocaleKeys.pickupFromHome.tr().toText16(color: AppColors.textColor, weight: FontWeight.w600); + return LocaleKeys.pickupFromHome.tr().toText16(color: AppColors.textColor, isBold: true); case OrderTrackingState.returning: - return LocaleKeys.onTheWayToHospital.tr().toText16(color: AppColors.textColor, weight: FontWeight.w600); + return LocaleKeys.onTheWayToHospital.tr().toText16(color: AppColors.textColor, isBold: true); case OrderTrackingState.ended: - return LocaleKeys.arrivedAtHospital.tr().toText16(color: AppColors.textColor, weight: FontWeight.w600); + return LocaleKeys.arrivedAtHospital.tr().toText16(color: AppColors.textColor, isBold: true); case OrderTrackingState.failed: - return LocaleKeys.failed.tr().toText16(color: AppColors.textColor, weight: FontWeight.w600); + return LocaleKeys.failed.tr().toText16(color: AppColors.textColor, isBold: true); case OrderTrackingState.cancel: - return LocaleKeys.orderCancel.tr().toText16(color: AppColors.textColor, weight: FontWeight.w600); + return LocaleKeys.orderCancel.tr().toText16(color: AppColors.textColor, isBold: true); } } @@ -487,6 +492,18 @@ class TrackingScreen extends StatelessWidget { ); } + showImage(String imageUrl, BuildContext context) { + return Utils.buildImgWithAssetsWithBorderRadius( + icon: imageUrl, + iconColor: Colors.transparent, + width: MediaQuery.sizeOf(context).width, + height: 380.h, + borderRadius: 24.r, + border: 1.r/// did this as the function that is being called is wrongly coupled with the border radius and border, and in some cases like the ambulance and rrt section we don't need any + /// border or border radius + ); + } + // Widget rrtOrderData() { // return Row( // spacing: 8.h, diff --git a/lib/presentation/emergency_services/call_ambulance/widgets/AddressItem.dart b/lib/presentation/emergency_services/call_ambulance/widgets/AddressItem.dart index 13e32561..f9d39434 100644 --- a/lib/presentation/emergency_services/call_ambulance/widgets/AddressItem.dart +++ b/lib/presentation/emergency_services/call_ambulance/widgets/AddressItem.dart @@ -48,7 +48,7 @@ class AddressItem extends StatelessWidget { children: [ title.toText12( color: AppColors.greyTextColor, - fontWeight: FontWeight.w500, + isBold: true, ), Row( mainAxisSize: MainAxisSize.max, @@ -56,7 +56,7 @@ class AddressItem extends StatelessWidget { Expanded( child: address.toText14( color: AppColors.textColor, - weight: FontWeight.w500, + weight: FontWeight.w600, textOverflow : TextOverflow.ellipsis, maxlines: 2 ), diff --git a/lib/presentation/emergency_services/call_ambulance/widgets/WayPickup.dart b/lib/presentation/emergency_services/call_ambulance/widgets/WayPickup.dart new file mode 100644 index 00000000..ad28122c --- /dev/null +++ b/lib/presentation/emergency_services/call_ambulance/widgets/WayPickup.dart @@ -0,0 +1,172 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/emergency_services/emergency_services_view_model.dart'; +import 'package:hmg_patient_app_new/features/emergency_services/models/AmbulanceCallingPlace.dart'; +import 'package:hmg_patient_app_new/features/emergency_services/models/ambulance_direction.dart'; +import 'package:hmg_patient_app_new/presentation/emergency_services/call_ambulance/widgets/transport_option_Item.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:provider/provider.dart'; + +import '../../../../generated/locale_keys.g.dart' show LocaleKeys; + +class WayPickup extends StatelessWidget { + final VoidCallback onTap; + const WayPickup({super.key, required this.onTap}); + + @override + Widget build(BuildContext context) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.selectWay.tr(context: context) + .toText24(color: AppColors.textColor, isBold: true), + SizedBox( + height: 16.h, + ), + // LocaleKeys.selectDirection.tr(context: context) + // .toText16(color: AppColors.textColor, isBold: true), + // SizedBox( + // height: 12.h, + // ), + Column( + children: [ + SizedBox(height: 12.h), + Column( + mainAxisAlignment: MainAxisAlignment.start, + spacing:8.h, + children: [ + TransportOptionItem( + title: LocaleKeys.oneWay.tr(context: context), + subTitle: LocaleKeys.oneWaySubtitle.tr(context: context), + firstIcon: AppAssets.to_arrow, + middleIcon: AppAssets.to_arrow, + lastIcon: AppAssets.hospital, + shouldFlipIcon: getIt.get().isArabic(), + price: context.read().selectedTransportOption?.priceTotal?.toString()??"", + onTap: () { + context + .read() + .updateDirection( AmbulanceDirection.ONE_WAY); + onTap(); + }, + ), + + TransportOptionItem( + title: LocaleKeys.twoWay.tr(context: context), + subTitle: LocaleKeys.twoWaySubtitle.tr(context: context), + firstIcon: AppAssets.dual_arrow, + middleIcon: AppAssets.dual_arrow, + lastIcon: AppAssets.hospital, + price: ((context.read().selectedTransportOption?.priceTotal??0)*2).toString(), + onTap: () { + context + .read() + .updateDirection( AmbulanceDirection.TWO_WAY); + onTap(); + }, + ), + + // Visibility( + // visible: value == AmbulanceCallingPlace.TO_HOSPITAL, + // child: Selector( + // selector: (context, viewModel) => viewModel.ambulanceDirection, + // builder: (context, directionValue, _) { + // return Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // SizedBox(height: 16.h), + // LocaleKeys.selectWay.tr(context: context) + // .toText16(color: AppColors.textColor, isBold: true), + // SizedBox(height: 12.h), + // Row( + // mainAxisAlignment: MainAxisAlignment.start, + // children: [ + // Expanded( + // child: Row( + // children: [ + // Radio( + // value: AmbulanceDirection.ONE_WAY, + // groupValue: directionValue, + // onChanged: (AmbulanceDirection? newValue) { + // if (newValue != null) { + // context + // .read() + // .updateDirection(newValue); + // } + // }, + // activeColor: AppColors.primaryRedColor, + // fillColor: MaterialStateProperty.all(AppColors.primaryRedColor), + // ), + // LocaleKeys.oneWay.tr(context: context) + // .toText12(color: AppColors.textColor, isBold: true) + // ], + // ).onPress(() { + // context + // .read() + // .updateDirection(AmbulanceDirection.ONE_WAY); + // }), + // ), + // Expanded( + // child: Row( + // children: [ + // Radio( + // value: AmbulanceDirection.TWO_WAY, + // groupValue: directionValue, + // onChanged: (AmbulanceDirection? newValue) { + // if (newValue != null) { + // context + // .read() + // .updateDirection(newValue); + // } + // }, + // activeColor: AppColors.primaryRedColor, + // fillColor: MaterialStateProperty.all(AppColors.primaryRedColor), + // ), + // LocaleKeys.twoWay.tr(context: context) + // .toText14(color: AppColors.textColor, isBold: true) + // ], + // ).onPress(() { + // context + // + // .read() + // .updateDirection(AmbulanceDirection.TWO_WAY); + // }), + // ), + // ], + // ), + // ], + // ); + // }, + // ), + ], + ), + ], + ), + // Selector( + // selector: (context, viewModel) => viewModel.callingPlace, + // builder: (context, value, _) { + // return ; + // }, + // ), + SizedBox( + height: 16.h, + ), + // CustomButton( + // text: LocaleKeys.confirm.tr(context: context), + // onPressed: onTap, + // backgroundColor: AppColors.primaryRedColor, + // borderColor: AppColors.primaryRedColor, + // textColor: AppColors.whiteColor, + // iconColor: AppColors.whiteColor, + // ), + ], + ); + } +} \ No newline at end of file diff --git a/lib/presentation/emergency_services/call_ambulance/widgets/ambulance_option_selection_bottomsheet.dart b/lib/presentation/emergency_services/call_ambulance/widgets/ambulance_option_selection_bottomsheet.dart index be1d3800..a99a7bbd 100644 --- a/lib/presentation/emergency_services/call_ambulance/widgets/ambulance_option_selection_bottomsheet.dart +++ b/lib/presentation/emergency_services/call_ambulance/widgets/ambulance_option_selection_bottomsheet.dart @@ -29,7 +29,7 @@ class AmbulanceOptionSelectionBottomSheet extends StatelessWidget { itemBuilder: (_, index) => TransportOptionItem( title: Utils.getTextWRTCurrentLanguage(data[index].text, data[index].textN), subTitle: "", - firstIcon: AppAssets.location_pickup, + firstIcon: AppAssets.ambulance, middleIcon: AppAssets.to_arrow, lastIcon: AppAssets.hospital, price: data[index].priceTotal.toString(), diff --git a/lib/presentation/emergency_services/call_ambulance/widgets/pickup_location.dart b/lib/presentation/emergency_services/call_ambulance/widgets/pickup_location.dart index 56a94e0f..fa4eefe1 100644 --- a/lib/presentation/emergency_services/call_ambulance/widgets/pickup_location.dart +++ b/lib/presentation/emergency_services/call_ambulance/widgets/pickup_location.dart @@ -1,11 +1,13 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/emergency_services/emergency_services_view_model.dart'; import 'package:hmg_patient_app_new/features/emergency_services/models/AmbulanceCallingPlace.dart'; import 'package:hmg_patient_app_new/features/emergency_services/models/ambulance_direction.dart'; +import 'package:hmg_patient_app_new/presentation/emergency_services/call_ambulance/widgets/transport_option_Item.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:provider/provider.dart'; @@ -13,7 +15,7 @@ import 'package:provider/provider.dart'; import '../../../../generated/locale_keys.g.dart' show LocaleKeys; class PickupLocation extends StatelessWidget { - final VoidCallback onTap; + final Function(AmbulanceCallingPlace) onTap; const PickupLocation({super.key, required this.onTap}); @override @@ -26,159 +28,189 @@ class PickupLocation extends StatelessWidget { SizedBox( height: 16.h, ), - LocaleKeys.selectDirection.tr(context: context) - .toText16(color: AppColors.textColor, weight: FontWeight.w600), - SizedBox( - height: 12.h, - ), - Selector( - selector: (context, viewModel) => viewModel.callingPlace, - builder: (context, value, _) { - return Column( + // LocaleKeys.selectDirection.tr(context: context) + // .toText16(color: AppColors.textColor, isBold: true), + // SizedBox( + // height: 12.h, + // ), + Column( + children: [ + SizedBox(height: 12.h), + Column( + mainAxisAlignment: MainAxisAlignment.start, + spacing:8.h, children: [ - SizedBox(height: 12.h), - Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Expanded( - child: Row( - children: [ - Radio( - value: AmbulanceCallingPlace.TO_HOSPITAL, - groupValue: value, - onChanged: (AmbulanceCallingPlace? newValue) { - if (newValue != null) { - context - .read() - .updateCallingPlace(newValue); - } - }, - activeColor: AppColors.primaryRedColor, - fillColor: MaterialStateProperty.all(AppColors.primaryRedColor), - ), - LocaleKeys.toHospital.tr(context: context) - .toText14(color: AppColors.textColor, weight: FontWeight.w500) - ], - ).onPress(() { - context - .read() - .updateCallingPlace(AmbulanceCallingPlace.TO_HOSPITAL); - }), - ), - Expanded( - child: Row( - children: [ - Radio( - value: AmbulanceCallingPlace.FROM_HOSPITAL, - groupValue: value, - onChanged: (AmbulanceCallingPlace? newValue) { - if (newValue != null) { - context - .read() - .updateCallingPlace(newValue); - } - }, - activeColor: AppColors.primaryRedColor, - fillColor: MaterialStateProperty.all(AppColors.primaryRedColor), - ), - LocaleKeys.fromHospital.tr(context: context) - .toText14(color: AppColors.textColor, weight: FontWeight.w500) - ], - ).onPress(() { - context - .read() - .updateCallingPlace(AmbulanceCallingPlace.FROM_HOSPITAL); - }), - ), - ], + TransportOptionItem( + title: LocaleKeys.toHospital.tr(context: context), + subTitle: LocaleKeys.toHospitalSubtitle.tr(context: context), + firstIcon: AppAssets.homeBottomFill, + middleIcon: AppAssets.to_arrow, + lastIcon: AppAssets.hospital, + price: context.read().selectedTransportOption?.priceTotal?.toString()??"", + onTap: () { + context.read() + .updateCallingPlace(AmbulanceCallingPlace.TO_HOSPITAL); + onTap(AmbulanceCallingPlace.TO_HOSPITAL); + }, ), - Visibility( - visible: value == AmbulanceCallingPlace.TO_HOSPITAL, - child: Selector( - selector: (context, viewModel) => viewModel.ambulanceDirection, - builder: (context, directionValue, _) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox(height: 16.h), - LocaleKeys.selectWay.tr(context: context) - .toText16(color: AppColors.textColor, weight: FontWeight.w600), - SizedBox(height: 12.h), - Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Expanded( - child: Row( - children: [ - Radio( - value: AmbulanceDirection.ONE_WAY, - groupValue: directionValue, - onChanged: (AmbulanceDirection? newValue) { - if (newValue != null) { - context - .read() - .updateDirection(newValue); - } - }, - activeColor: AppColors.primaryRedColor, - fillColor: MaterialStateProperty.all(AppColors.primaryRedColor), - ), - LocaleKeys.oneWay.tr(context: context) - .toText12(color: AppColors.textColor, fontWeight: FontWeight.w500) - ], - ).onPress(() { - context - .read() - .updateDirection(AmbulanceDirection.ONE_WAY); - }), - ), - Expanded( - child: Row( - children: [ - Radio( - value: AmbulanceDirection.TWO_WAY, - groupValue: directionValue, - onChanged: (AmbulanceDirection? newValue) { - if (newValue != null) { - context - .read() - .updateDirection(newValue); - } - }, - activeColor: AppColors.primaryRedColor, - fillColor: MaterialStateProperty.all(AppColors.primaryRedColor), - ), - LocaleKeys.twoWay.tr(context: context) - .toText14(color: AppColors.textColor, weight: FontWeight.w500) - ], - ).onPress(() { - context - .read() - .updateDirection(AmbulanceDirection.TWO_WAY); - }), - ), - ], - ), - ], - ); - }, - ), - ) + + TransportOptionItem( + title: LocaleKeys.fromHospital.tr(context: context), + subTitle: LocaleKeys.fromHospitalSubtitle.tr(context: context), + firstIcon: AppAssets.hospital, + middleIcon: AppAssets.to_arrow, + lastIcon: AppAssets.hospital, + price: context.read().selectedTransportOption?.priceTotal?.toString()??"", + onTap: () { + context.read().updateCallingPlace(AmbulanceCallingPlace.FROM_HOSPITAL); + onTap(AmbulanceCallingPlace.FROM_HOSPITAL); + }, + ), + // Expanded( + // child: Row( + // children: [ + // Radio( + // value: AmbulanceCallingPlace.TO_HOSPITAL, + // groupValue: value, + // onChanged: (AmbulanceCallingPlace? newValue) { + // if (newValue != null) { + // context + // .read() + // .updateCallingPlace(newValue); + // } + // }, + // activeColor: AppColors.primaryRedColor, + // fillColor: MaterialStateProperty.all(AppColors.primaryRedColor), + // ), + // LocaleKeys.toHospital.tr(context: context) + // .toText14(color: AppColors.textColor, isBold: true) + // ], + // ).onPress(() { + // context + // .read() + // .updateCallingPlace(AmbulanceCallingPlace.TO_HOSPITAL); + // }), + // ), + // Expanded( + // child: Row( + // children: [ + // Radio( + // value: AmbulanceCallingPlace.FROM_HOSPITAL, + // groupValue: value, + // onChanged: (AmbulanceCallingPlace? newValue) { + // if (newValue != null) { + // context + // .read() + // .updateCallingPlace(newValue); + // } + // }, + // activeColor: AppColors.primaryRedColor, + // fillColor: MaterialStateProperty.all(AppColors.primaryRedColor), + // ), + // LocaleKeys.fromHospital.tr(context: context) + // .toText14(color: AppColors.textColor, isBold: true) + // ], + // ).onPress(() { + // context + // .read() + // .updateCallingPlace(AmbulanceCallingPlace.FROM_HOSPITAL); + // }), + // ), + // ], + // ), + // Visibility( + // visible: value == AmbulanceCallingPlace.TO_HOSPITAL, + // child: Selector( + // selector: (context, viewModel) => viewModel.ambulanceDirection, + // builder: (context, directionValue, _) { + // return Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // SizedBox(height: 16.h), + // LocaleKeys.selectWay.tr(context: context) + // .toText16(color: AppColors.textColor, isBold: true), + // SizedBox(height: 12.h), + // Row( + // mainAxisAlignment: MainAxisAlignment.start, + // children: [ + // Expanded( + // child: Row( + // children: [ + // Radio( + // value: AmbulanceDirection.ONE_WAY, + // groupValue: directionValue, + // onChanged: (AmbulanceDirection? newValue) { + // if (newValue != null) { + // context + // .read() + // .updateDirection(newValue); + // } + // }, + // activeColor: AppColors.primaryRedColor, + // fillColor: MaterialStateProperty.all(AppColors.primaryRedColor), + // ), + // LocaleKeys.oneWay.tr(context: context) + // .toText12(color: AppColors.textColor, isBold: true) + // ], + // ).onPress(() { + // context + // .read() + // .updateDirection(AmbulanceDirection.ONE_WAY); + // }), + // ), + // Expanded( + // child: Row( + // children: [ + // Radio( + // value: AmbulanceDirection.TWO_WAY, + // groupValue: directionValue, + // onChanged: (AmbulanceDirection? newValue) { + // if (newValue != null) { + // context + // .read() + // .updateDirection(newValue); + // } + // }, + // activeColor: AppColors.primaryRedColor, + // fillColor: MaterialStateProperty.all(AppColors.primaryRedColor), + // ), + // LocaleKeys.twoWay.tr(context: context) + // .toText14(color: AppColors.textColor, isBold: true) + // ], + // ).onPress(() { + // context + // + // .read() + // .updateDirection(AmbulanceDirection.TWO_WAY); + // }), + // ), + // ], + // ), + // ], + // ); + // }, + // ), ], - ); - }, + ), + ], ), + // Selector( + // selector: (context, viewModel) => viewModel.callingPlace, + // builder: (context, value, _) { + // return ; + // }, + // ), SizedBox( height: 16.h, ), - CustomButton( - text: LocaleKeys.confirm.tr(context: context), - onPressed: onTap, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - textColor: AppColors.whiteColor, - iconColor: AppColors.whiteColor, - ), + // CustomButton( + // text: LocaleKeys.confirm.tr(context: context), + // onPressed: onTap, + // backgroundColor: AppColors.primaryRedColor, + // borderColor: AppColors.primaryRedColor, + // textColor: AppColors.whiteColor, + // iconColor: AppColors.whiteColor, + // ), ], ); } diff --git a/lib/presentation/emergency_services/call_ambulance/widgets/transport_option_Item.dart b/lib/presentation/emergency_services/call_ambulance/widgets/transport_option_Item.dart index 9a959ebb..81085ed6 100644 --- a/lib/presentation/emergency_services/call_ambulance/widgets/transport_option_Item.dart +++ b/lib/presentation/emergency_services/call_ambulance/widgets/transport_option_Item.dart @@ -1,11 +1,14 @@ import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:provider/provider.dart'; class TransportOptionItem extends StatelessWidget { final String title; @@ -15,6 +18,7 @@ class TransportOptionItem extends StatelessWidget { final String lastIcon; final String price; final VoidCallback onTap; + final bool shouldFlipIcon; const TransportOptionItem( {super.key, @@ -24,6 +28,7 @@ class TransportOptionItem extends StatelessWidget { required this.middleIcon, required this.lastIcon, required this.price, + this.shouldFlipIcon = false, required this.onTap}); @override @@ -39,14 +44,14 @@ class TransportOptionItem extends StatelessWidget { spacing: 16.h, children: [ headerSection(), - titleSection(), + titleSection(context), ], )).onPress((){ onTap(); }); } - titleSection() { + titleSection(BuildContext context) { return Row( children: [ Expanded( @@ -54,14 +59,12 @@ class TransportOptionItem extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ title.toText16( - color: AppColors.textColor, weight: FontWeight.w600), - // subTitle.toText12( - // color: AppColors.greyTextColor, fontWeight: FontWeight.w500), + color: AppColors.textColor, isBold: true), + subTitle.toText12(color: AppColors.greyTextColor, isBold: true), ], ), ), - Utils.buildSvgWithAssets( - icon: AppAssets.forward_arrow_medium, width: 24.h, height: 24.h) + Transform.flip(flipX: getIt.get().isArabic(), child: Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_medium, width: 24.h, height: 24.h)) ], ); } @@ -70,20 +73,19 @@ class TransportOptionItem extends StatelessWidget { return Row( mainAxisAlignment: MainAxisAlignment.end, children: [ - // Expanded( - // child: Row( - // children: [ - // buildIcon(firstIcon), - // Utils.buildSvgWithAssets( - // icon: middleIcon, width: 24.h, height: 24.h).paddingAll(8.h), - // buildIcon(lastIcon) - // ], - // ), - // ), - Utils.getPaymentAmountWithSymbol2( - num.tryParse(price) ?? 0.0, - fontSize: 18.f, - letterSpacing:-2 + Expanded( + child: Row( + children: [ + Transform.flip(flipX: getIt.get().isArabic() && shouldFlipIcon, child: buildIcon(firstIcon)), + // Utils.buildSvgWithAssets( + // icon: middleIcon, width: 24.h, height: 24.h).paddingAll(8.h), + // buildIcon(lastIcon) + ], + ), + ), + Visibility( + visible: price.isNotEmpty, + child: Utils.getPaymentAmountWithSymbol2(num.tryParse(price) ?? 0.0, fontSize: 18.f, letterSpacing: -2), ), ], ); @@ -98,7 +100,7 @@ class TransportOptionItem extends StatelessWidget { backgroundColor: AppColors.greyColor, iconColor: AppColors.greyTextColor, borderColor: Colors.transparent, - height: 40.h, + height: 42.h, ); } } diff --git a/lib/presentation/emergency_services/emergency_services_page.dart b/lib/presentation/emergency_services/emergency_services_page.dart index 41597e40..3a72468a 100644 --- a/lib/presentation/emergency_services/emergency_services_page.dart +++ b/lib/presentation/emergency_services/emergency_services_page.dart @@ -1,6 +1,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -10,9 +12,12 @@ import 'package:hmg_patient_app_new/features/emergency_services/models/OrderDisp import 'package:hmg_patient_app_new/features/location/location_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/RRT/rrt_request_type_select.dart'; +import 'package:hmg_patient_app_new/presentation/emergency_services/call_ambulance/widgets/WayPickup.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/call_ambulance/widgets/ambulance_option_selection_bottomsheet.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/call_ambulance/widgets/pickup_location.dart'; +import 'package:hmg_patient_app_new/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/history/er_history_listing.dart'; +import 'package:hmg_patient_app_new/presentation/home/service_info_page.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -22,23 +27,48 @@ import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:lottie/lottie.dart'; import 'package:provider/provider.dart'; -class EmergencyServicesPage extends StatelessWidget { +import '../../features/emergency_services/models/AmbulanceCallingPlace.dart' show AmbulanceCallingPlace; + +class EmergencyServicesPage extends StatefulWidget { EmergencyServicesPage({super.key}); + @override + State createState() => _EmergencyServicesPageState(); +} + +class _EmergencyServicesPageState extends State { late EmergencyServicesViewModel emergencyServicesViewModel; - _handleConfirmationBottomSheet() {} + late AppState appState; + + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addPostFrameCallback((_) { + if (appState.isAuthenticated) { + emergencyServicesViewModel.flushData(); + emergencyServicesViewModel.getTransportationOrders( + showLoader: false, + ); + emergencyServicesViewModel.getRRTOrders( + showLoader: false, + ); + } + }); + } @override Widget build(BuildContext context) { emergencyServicesViewModel = Provider.of(context, listen: false); - + appState = getIt.get(); return CollapsingListView( title: LocaleKeys.emergencyServices.tr(), - requests: () { - emergencyServicesViewModel.changeOrderDisplayItems(OrderDislpay.ALL); - Navigator.of(context).push(CustomPageRoute(page: ErHistoryListing(), direction: AxisDirection.up)); - }, + history: appState.isAuthenticated + ? () { + emergencyServicesViewModel.changeOrderDisplayItems(OrderDislpay.ALL); + Navigator.of(context).push(CustomPageRoute(page: ErHistoryListing(), direction: AxisDirection.up)); + } + : null, child: Padding( padding: EdgeInsets.all(24.h), child: Column( @@ -60,74 +90,86 @@ class EmergencyServicesPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.callAmbulance.tr().toText16(isBold: true, color: AppColors.blackColor), - LocaleKeys.requestAmbulanceInEmergency.tr() - .toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), + LocaleKeys.requestAmbulanceInEmergency.tr().toText12(color: AppColors.greyTextColor, isBold: true), ], ), ), SizedBox(width: 12.h), - Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, width: 13.h, height: 13.h), + Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, width: 13.h, height: 13.h), + ), ], ).onPress(() { - showCommonBottomSheetWithoutHeight( - context, - child: Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.primaryRedColor, - borderRadius: 24.h, - ), - child: Padding( - padding: EdgeInsets.all(24.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - "".toText14(), - Utils.buildSvgWithAssets( - icon: AppAssets.cancel_circle_icon, - iconColor: Colors.white, - width: 24.h, - height: 24.h, - fit: BoxFit.contain, - ).onPress(() { + if(appState.isAuthenticated) { + showCommonBottomSheetWithoutHeight( + context, + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.primaryRedColor, + borderRadius: 24.h, + ), + child: Padding( + padding: EdgeInsets.all(24.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + "".toText14(), + Utils.buildSvgWithAssets( + icon: AppAssets.cancel_circle_icon, + iconColor: Colors.white, + width: 24.h, + height: 24.h, + fit: BoxFit.contain, + ).onPress(() { + Navigator.of(context).pop(); + }), + ], + ), + Lottie.asset(AppAnimations.ambulanceAlert, repeat: false, reverse: false, frameRate: FrameRate(60), width: 120.h, height: 120.h, fit: BoxFit.contain), + SizedBox(height: 8.h), + LocaleKeys.confirmation.tr().toText28(color: Colors.white, isBold: true), + SizedBox(height: 8.h), + LocaleKeys.areYouSureYouWantToCallAmbulance.tr().toText14(color: Colors.white, isBold: true), + SizedBox(height: 24.h), + CustomButton( + text: LocaleKeys.confirm.tr(context: context), + onPressed: () async { Navigator.of(context).pop(); - }), - ], - ), - Lottie.asset(AppAnimations.ambulanceAlert, - repeat: false, reverse: false, frameRate: FrameRate(60), width: 120.h, height: 120.h, fit: BoxFit.contain), - SizedBox(height: 8.h), - LocaleKeys.confirmation.tr().toText28(color: Colors.white, isBold: true), - SizedBox(height: 8.h), - LocaleKeys.areYouSureYouWantToCallAmbulance.tr() - .toText14(color: Colors.white, weight: FontWeight.w500), - SizedBox(height: 24.h), - CustomButton( - text: LocaleKeys.confirm.tr(context: context), - onPressed: () async { - Navigator.of(context).pop(); - await emergencyServicesViewModel.getTransportationOption(); - openTranportationSelectionBottomSheet(context); - }, - backgroundColor: Colors.white, - borderColor: Colors.white, - textColor: AppColors.primaryRedColor, - icon: AppAssets.checkmark_icon, - iconColor: AppColors.primaryRedColor, - ), - SizedBox(height: 8.h), - ], + await emergencyServicesViewModel.getTransportationOption(); + openTranportationSelectionBottomSheet(context); + }, + backgroundColor: Colors.white, + borderColor: Colors.white, + textColor: AppColors.primaryRedColor, + icon: AppAssets.checkmark_icon, + iconColor: AppColors.primaryRedColor, + ), + SizedBox(height: 8.h), + ], + ), ), ), - ), - isFullScreen: false, - isCloseButtonVisible: false, - hasBottomPadding: false, - backgroundColor: AppColors.primaryRedColor, - callBackFunc: () {}, - ); + isFullScreen: false, + isCloseButtonVisible: false, + hasBottomPadding: false, + backgroundColor: AppColors.primaryRedColor, + callBackFunc: () {}, + ); + } else { + Navigator.of(context).push( + CustomPageRoute( + page: ServiceInfoPage( + serviceName: LocaleKeys.emergencyServices.tr(), + serviceHeader: LocaleKeys.callAmbulance.tr(), + serviceDescription: LocaleKeys.requestAmbulanceInEmergency.tr(), + serviceImage: AppAssets.ambulance_section), + ), + ); + } }), ), SizedBox(height: 16.h), @@ -147,13 +189,15 @@ class EmergencyServicesPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.nearester.tr(context: context).toText16(isBold: true, color: AppColors.blackColor), - LocaleKeys.getDetailsOfNearestBranch.tr() - .toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), + LocaleKeys.getDetailsOfNearestBranch.tr().toText12(color: AppColors.greyTextColor, isBold: true), ], ), ), SizedBox(width: 12.h), - Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, width: 13.h, height: 13.h), + Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, width: 13.h, height: 13.h), + ), ], ).onPress(() { context.read().navigateToNearestERPage(); @@ -176,86 +220,109 @@ class EmergencyServicesPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.rapidResponseTeam.tr(context: context).toText16(isBold: true, color: AppColors.blackColor), - "Comprehensive medical service for all sorts of urgent and stable cases" - .toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), + LocaleKeys.RRTDDetails.tr(context: context).toText12(color: AppColors.greyTextColor, isBold: true), ], ), ), SizedBox(width: 12.h), - Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, width: 13.h, height: 13.h), + Transform.flip(flipX: appState.isArabic(), child: Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, width: 13.h, height: 13.h)), ], ).onPress(() { - showCommonBottomSheetWithoutHeight( - context, - child: Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.primaryRedColor, - borderRadius: 24.h, - ), - child: Padding( - padding: EdgeInsets.all(24.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Lottie.asset(AppAnimations.ambulanceAlert, repeat: false, reverse: false, frameRate: FrameRate(60), width: 120.h, height: 120.h, fit: BoxFit.contain), - SizedBox(height: 8.h), - LocaleKeys.confirm.tr().toText28(color: Colors.white, isBold: true), - SizedBox(height: 8.h), - LocaleKeys.areYouSureYouWantToCallRRT.tr() - .toText14(color: Colors.white, weight: FontWeight.w500), - SizedBox(height: 24.h), - CustomButton( - text: LocaleKeys.confirm.tr(context: context), - onPressed: () async { - Navigator.of(context).pop(); - - LoaderBottomSheet.showLoader(); - emergencyServicesViewModel.clearRRTData(); - await emergencyServicesViewModel.getRRTProcedures(onSuccess: (val) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - padding: EdgeInsets.only(top: 24.h), - titleWidget: Transform.flip( - flipX: emergencyServicesViewModel.isArabic, - child: Utils.buildSvgWithAssets( - icon: AppAssets.arrow_back, - iconColor: Color(0xff2B353E), - fit: BoxFit.contain, - ), - ).onPress(() { - - Navigator.pop(context); - }), - // title: "Rapid Response Team (RRT)".needTranslation, - context, - child: RrtRequestTypeSelect(), - isFullScreen: false, - isCloseButtonVisible: true, - hasBottomPadding: false, - backgroundColor: AppColors.bottomSheetBgColor, - callBackFunc: () {}, - ); - }); - }, - backgroundColor: Colors.white, - borderColor: Colors.white, - textColor: AppColors.primaryRedColor, - icon: AppAssets.checkmark_icon, - iconColor: AppColors.primaryRedColor, - ), - SizedBox(height: 8.h), - ], + if(appState.isAuthenticated) { + showCommonBottomSheetWithoutHeight( + context, + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.primaryRedColor, + borderRadius: 24.h, + ), + child: Padding( + padding: EdgeInsets.all(24.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + "".toText14(), + Utils.buildSvgWithAssets( + icon: AppAssets.cancel_circle_icon, + iconColor: Colors.white, + width: 24.h, + height: 24.h, + fit: BoxFit.contain, + ).onPress(() { + Navigator.of(context).pop(); + }), + ], + ), + Lottie.asset(AppAnimations.ambulanceAlert, repeat: false, reverse: false, frameRate: FrameRate(60), width: 120.h, height: 120.h, fit: BoxFit.contain), + SizedBox(height: 8.h), + LocaleKeys.confirm.tr().toText28(color: Colors.white, isBold: true), + SizedBox(height: 8.h), + LocaleKeys.areYouSureYouWantToCallRRT.tr().toText14(color: Colors.white, isBold: true), + SizedBox(height: 24.h), + CustomButton( + text: LocaleKeys.confirm.tr(context: context), + onPressed: () async { + Navigator.of(context).pop(); + LoaderBottomSheet.showLoader(); + emergencyServicesViewModel.clearRRTData(); + await emergencyServicesViewModel.getRRTProcedures(onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + padding: EdgeInsets.only(top: 24.h), + titleWidget: Transform.flip( + flipX: emergencyServicesViewModel.isArabic, + child: Utils.buildSvgWithAssets( + icon: AppAssets.arrow_back, + iconColor: Color(0xff2B353E), + fit: BoxFit.contain, + ), + ).onPress(() { + Navigator.pop(context); + }), + // title: "Rapid Response Team (RRT)".needTranslation, + context, + child: RrtRequestTypeSelect(), + isFullScreen: false, + isCloseButtonVisible: true, + hasBottomPadding: false, + backgroundColor: AppColors.bottomSheetBgColor, + callBackFunc: () {}, + ); + }); + }, + backgroundColor: Colors.white, + borderColor: Colors.white, + textColor: AppColors.primaryRedColor, + icon: AppAssets.checkmark_icon, + iconColor: AppColors.primaryRedColor, + ), + SizedBox(height: 8.h), + ], + ), ), ), - ), - isFullScreen: false, - isCloseButtonVisible: false, - hasBottomPadding: false, - backgroundColor: AppColors.primaryRedColor, - callBackFunc: () { - context.read().setTermsAndConditions(false); - }, - ); + isFullScreen: false, + isCloseButtonVisible: false, + hasBottomPadding: false, + backgroundColor: AppColors.primaryRedColor, + callBackFunc: () { + context.read().setTermsAndConditions(false); + }, + ); + } else { + Navigator.of(context).push( + CustomPageRoute( + page: ServiceInfoPage( + serviceName: LocaleKeys.emergencyServices.tr(), + serviceHeader: LocaleKeys.rapidResponseTeam.tr(), + serviceDescription: LocaleKeys.RRTDDetails.tr(), + serviceImage: AppAssets.rrt_section), + ), + ); + } }), ), SizedBox(height: 16.h), @@ -275,73 +342,87 @@ class EmergencyServicesPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.emergencyCheckIn.tr(context: context).toText16(isBold: true, color: AppColors.blackColor), - LocaleKeys.priorERCheckInToSkipLine.tr() - .toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), + LocaleKeys.priorERCheckInToSkipLine.tr().toText12(color: AppColors.greyTextColor, isBold: true), ], ), ), SizedBox(width: 12.h), - Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, width: 13.h, height: 13.h), + Transform.flip(flipX: appState.isArabic(), child: Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, width: 13.h, height: 13.h)), ], ).onPress(() { - showCommonBottomSheetWithoutHeight( - context, - child: Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.primaryRedColor, borderRadius: 24.h), - child: Padding( - padding: EdgeInsets.all(24.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + if(appState.isAuthenticated) { + if (emergencyServicesViewModel.patientHasAdvanceERBalance) { + Navigator.of(context).push(CustomPageRoute(page: ErOnlineCheckinHome())); + } else { + showCommonBottomSheetWithoutHeight( + context, + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.primaryRedColor, borderRadius: 24.h), + child: Padding( + padding: EdgeInsets.all(24.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - "".toText14(), - Utils.buildSvgWithAssets( - icon: AppAssets.cancel_circle_icon, - iconColor: AppColors.whiteColor, - width: 24.h, - height: 24.h, - fit: BoxFit.contain, - ).onPress(() { - Navigator.of(context).pop(); - }), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + "".toText14(), + Utils.buildSvgWithAssets( + icon: AppAssets.cancel_circle_icon, + iconColor: AppColors.whiteColor, + width: 24.h, + height: 24.h, + fit: BoxFit.contain, + ).onPress(() { + Navigator.of(context).pop(); + }), + ], + ), + Lottie.asset(AppAnimations.ambulanceAlert, repeat: false, reverse: false, frameRate: FrameRate(60), width: 120.h, height: 120.h, fit: BoxFit.contain), + SizedBox(height: 8.h), + LocaleKeys.confirm.tr().toText28(color: Colors.white, isBold: true), + SizedBox(height: 8.h), + LocaleKeys.areYouSureYouWantToMakeERCheckIn.tr().toText14(color: Colors.white, isBold: true), + SizedBox(height: 24.h), + CustomButton( + text: LocaleKeys.confirm.tr(context: context), + onPressed: () async { + Navigator.of(context).pop(); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingYourERAppointmentStatus.tr()); + await context.read().checkPatientERAdvanceBalance(onSuccess: (dynamic response) { + LoaderBottomSheet.hideLoader(); + context.read().navigateToEROnlineCheckIn(); + }); + }, + backgroundColor: Colors.white, + borderColor: Colors.white, + textColor: AppColors.primaryRedColor, + icon: AppAssets.checkmark_icon, + iconColor: AppColors.primaryRedColor, + ), + SizedBox(height: 8.h), ], ), - Lottie.asset(AppAnimations.ambulanceAlert, - repeat: false, reverse: false, frameRate: FrameRate(60), width: 120.h, height: 120.h, fit: BoxFit.contain), - SizedBox(height: 8.h), - LocaleKeys.confirm.tr().toText28(color: Colors.white, isBold: true), - SizedBox(height: 8.h), - LocaleKeys.areYouSureYouWantToMakeERCheckIn.tr().toText14(color: Colors.white, weight: FontWeight.w500), - SizedBox(height: 24.h), - CustomButton( - text: LocaleKeys.confirm.tr(context: context), - onPressed: () async { - Navigator.of(context).pop(); - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingYourERAppointmentStatus.tr()); - await context.read().checkPatientERAdvanceBalance(onSuccess: (dynamic response) { - LoaderBottomSheet.hideLoader(); - context.read().navigateToEROnlineCheckIn(); - }); - }, - backgroundColor: Colors.white, - borderColor: Colors.white, - textColor: AppColors.primaryRedColor, - icon: AppAssets.checkmark_icon, - iconColor: AppColors.primaryRedColor, - ), - SizedBox(height: 8.h), - ], + ), ), + isFullScreen: false, + isCloseButtonVisible: false, + hasBottomPadding: false, + backgroundColor: AppColors.primaryRedColor, + callBackFunc: () {}, + ); + } + } else { + Navigator.of(context).push( + CustomPageRoute( + page: ServiceInfoPage( + serviceName: LocaleKeys.emergencyServices.tr(), + serviceHeader: LocaleKeys.emergencyCheckIn.tr(), + serviceDescription: LocaleKeys.priorERCheckInToSkipLine.tr(), + serviceImage: AppAssets.er_checkin), ), - ), - isFullScreen: false, - isCloseButtonVisible: false, - hasBottomPadding: false, - backgroundColor: AppColors.primaryRedColor, - callBackFunc: () {}, - ); + ); + } }), ), ], @@ -355,7 +436,7 @@ class EmergencyServicesPage extends StatelessWidget { onCloseClicked: () { context.read().flushPickupInformation(); }, - titleWidget: Transform.flip( + titleWidget: Transform.flip( flipX: emergencyServicesViewModel.isArabic, child: Utils.buildSvgWithAssets( icon: AppAssets.arrow_back, @@ -368,7 +449,42 @@ class EmergencyServicesPage extends StatelessWidget { openTranportationSelectionBottomSheet(context); }), context, - child: PickupLocation(onTap: () { + child: PickupLocation(onTap: (fromLocation) { + Navigator.of(context).pop(); + if(fromLocation == AmbulanceCallingPlace.TO_HOSPITAL){ + openNumberWayOfSelectionBottomSheet(context); + return; + } + context.read().flushSearchPredictions(); + context.read().navigateTOAmbulancePage(); + }), + isFullScreen: false, + isCloseButtonVisible: true, + hasBottomPadding: false, + backgroundColor: AppColors.bottomSheetBgColor, + callBackFunc: () {}, + ); + } + + openNumberWayOfSelectionBottomSheet(BuildContext context) { + showCommonBottomSheetWithoutHeight( + onCloseClicked: () { + context.read().flushPickupInformation(); + }, + titleWidget: Transform.flip( + flipX: emergencyServicesViewModel.isArabic, + child: Utils.buildSvgWithAssets( + icon: AppAssets.arrow_back, + iconColor: Color(0xff2B353E), + fit: BoxFit.contain, + ), + ).onPress(() { + context.read().flushPickupInformation(); + Navigator.pop(context); + openPickupDetailsBottomSheet(context); + }), + context, + child: WayPickup(onTap: () { Navigator.of(context).pop(); context.read().flushSearchPredictions(); context.read().navigateTOAmbulancePage(); @@ -387,7 +503,7 @@ class EmergencyServicesPage extends StatelessWidget { title: LocaleKeys.transportOptions.tr(), context, child: SizedBox( - height: 400.h, + height: 500.h, child: AmbulanceOptionSelectionBottomSheet(onTap: () { Navigator.of(context).pop(); openPickupDetailsBottomSheet(context); diff --git a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart index 7f206c17..3c8a4770 100644 --- a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart +++ b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart @@ -49,18 +49,21 @@ class ErOnlineCheckinHome extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.immediate_service_icon, width: 58.h, height: 58.h), - SizedBox(width: 18.h), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.onlineCheckIn.tr().toText18(color: AppColors.textColor, isBold: true), - LocaleKeys.erOnlineCheckInDescription.tr().toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), - ], - ), - ), + Utils.getNoDataWidget(context) + // Utils.buildSvgWithAssets(icon: AppAssets.immediate_service_icon, width: 58.h, height: 58.h), + // SizedBox(width: 18.h), + // Expanded( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // LocaleKeys.onlineCheckIn.tr().toText18(color: AppColors.textColor, isBold: true), + // LocaleKeys.erOnlineCheckInDescription.tr().toText14(color: AppColors.greyTextColor, isBold: true), + // ], + // ), + // ), ], ), ], @@ -136,7 +139,7 @@ class ErOnlineCheckinHome extends StatelessWidget { borderColor: emergencyServicesViewModel.patientHasAdvanceERBalance ? AppColors.alertColor : AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10.r, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 50.h, diff --git a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_details_page.dart b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_details_page.dart index 463121d9..913fe562 100644 --- a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_details_page.dart +++ b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_details_page.dart @@ -117,7 +117,7 @@ class ErOnlineCheckinPaymentDetailsPage extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Expanded(child: "".toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor)), + Expanded(child: "".toText12(isBold: true, color: AppColors.greyTextColor)), LocaleKeys.vatWithAmount .tr(namedArgs: {"amount": emergencyServicesViewModel.erOnlineCheckInPaymentDetailsResponse.patientTaxAmount.toString()}) .toText14(isBold: true, color: AppColors.greyTextColor, letterSpacing: -1), @@ -128,7 +128,7 @@ class ErOnlineCheckinPaymentDetailsPage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ SizedBox( - width: 150.h, + width: 200.h, child: Utils.getPaymentMethods(), ), Row( @@ -154,7 +154,7 @@ class ErOnlineCheckinPaymentDetailsPage extends StatelessWidget { borderColor: AppColors.infoColor.withOpacity(0.01), textColor: AppColors.whiteColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), height: 56.h, diff --git a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_page.dart b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_page.dart index 8b9633c1..64856226 100644 --- a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_page.dart +++ b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_payment_page.dart @@ -16,6 +16,8 @@ import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/emergency_services/emergency_services_view_model.dart'; import 'package:hmg_patient_app_new/features/payfort/models/apple_pay_request_insert_model.dart'; import 'package:hmg_patient_app_new/features/payfort/payfort_view_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/models/paytabs_transaction_response_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/paytabs_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; import 'package:hmg_patient_app_new/presentation/insurance/insurance_home_page.dart'; @@ -39,6 +41,7 @@ class ErOnlineCheckinPaymentPage extends StatefulWidget { class _ErOnlineCheckinPaymentPageState extends State { late PayfortViewModel payfortViewModel; late EmergencyServicesViewModel emergencyServicesViewModel; + late PayTabsViewModel paytabsViewModel; late AppState appState; @@ -75,6 +78,7 @@ class _ErOnlineCheckinPaymentPageState extends State appState = getIt.get(); payfortViewModel = Provider.of(context, listen: false); emergencyServicesViewModel = Provider.of(context, listen: false); + paytabsViewModel = Provider.of(context, listen: false); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: Column( @@ -98,7 +102,7 @@ class _ErOnlineCheckinPaymentPageState extends State Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset(AppAssets.mada, width: 72.h, height: 25.h), + Utils.buildImgWithAssets(icon: AppAssets.mada, width: 72.h, height: 25.h), SizedBox(height: 16.h), LocaleKeys.mada.tr(context: context).toText16(isBold: true), ], @@ -119,7 +123,55 @@ class _ErOnlineCheckinPaymentPageState extends State ).paddingSymmetrical(16.h, 16.h), ).paddingSymmetrical(24.h, 0.h).onPress(() { selectedPaymentMethod = "MADA"; - openPaymentURL("mada"); + if (appState.isPaytabsEnabled) { + paytabsViewModel.setPaymentConfiguration( + "ER Online Check-In Payment", + emergencyServicesViewModel.erOnlineCheckInPaymentDetailsResponse.patientShareWithTax!, + ); + paytabsViewModel.startCardPayment(onSuccess: (PaytabsTransactionResponseModel transactionData) async { + if (emergencyServicesViewModel.isERBookAppointment) { + await emergencyServicesViewModel.ER_CreateAdvancePayment( + paymentMethodName: selectedPaymentMethod, + paymentReference: transactionData.transactionReference!, + onSuccess: (value) async { + await emergencyServicesViewModel.addAdvanceNumberRequest( + advanceNumber: value, + paymentReference: transactionData.transactionReference!, + appointmentNo: "0", + onSuccess: (val) { + emergencyServicesViewModel.setIsAdvanceERBalanceNeedToBeLoaded(true); + LoaderBottomSheet.hideLoader(); + if (emergencyServicesViewModel.isERBookAppointment) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getSuccessWidget(loadingText: LocaleKeys.erAppointmentBookedSuccess.tr(context: context)), + callBackFunc: () { + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } else {} + }); + }); + } else {} + }, onError: (errMsg) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: errMsg.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + openPaymentURL("mada"); + } }), SizedBox(height: 16.h), Container( @@ -136,9 +188,9 @@ class _ErOnlineCheckinPaymentPageState extends State children: [ Row( children: [ - Image.asset(AppAssets.visa, width: 50.h, height: 50.h), + Utils.buildImgWithAssets(icon: AppAssets.visa, width: 50.h, height: 50.h), SizedBox(width: 8.h), - Image.asset(AppAssets.mastercard, width: 40.h, height: 40.h), + Utils.buildImgWithAssets(icon: AppAssets.mastercard, width: 40.h, height: 40.h), ], ), SizedBox(height: 16.h), @@ -161,7 +213,55 @@ class _ErOnlineCheckinPaymentPageState extends State ).paddingSymmetrical(16.h, 16.h), ).paddingSymmetrical(24.h, 0.h).onPress(() { selectedPaymentMethod = "VISA"; - openPaymentURL("visa"); + if (appState.isPaytabsEnabled) { + paytabsViewModel.setPaymentConfiguration( + "ER Online Check-In Payment", + emergencyServicesViewModel.erOnlineCheckInPaymentDetailsResponse.patientShareWithTax!, + ); + paytabsViewModel.startCardPayment(onSuccess: (PaytabsTransactionResponseModel transactionData) async { + if (emergencyServicesViewModel.isERBookAppointment) { + await emergencyServicesViewModel.ER_CreateAdvancePayment( + paymentMethodName: selectedPaymentMethod, + paymentReference: transactionData.transactionReference!, + onSuccess: (value) async { + await emergencyServicesViewModel.addAdvanceNumberRequest( + advanceNumber: value, + paymentReference: transactionData.transactionReference!, + appointmentNo: "0", + onSuccess: (val) { + emergencyServicesViewModel.setIsAdvanceERBalanceNeedToBeLoaded(true); + LoaderBottomSheet.hideLoader(); + if (emergencyServicesViewModel.isERBookAppointment) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getSuccessWidget(loadingText: LocaleKeys.erAppointmentBookedSuccess.tr(context: context)), + callBackFunc: () { + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } else {} + }); + }); + } else {} + }, onError: (errMsg) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: errMsg.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + openPaymentURL("visa"); + } }), SizedBox(height: 16.h), isShowTamara @@ -177,7 +277,7 @@ class _ErOnlineCheckinPaymentPageState extends State Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset(AppAssets.tamaraEng, width: 72.h, height: 25.h), + Utils.buildImgWithAssets(icon: AppAssets.tamaraEng, width: 72.h, height: 25.h), SizedBox(height: 16.h), LocaleKeys.tamara.tr(context: context).toText16(isBold: true), ], @@ -230,7 +330,7 @@ class _ErOnlineCheckinPaymentPageState extends State child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - LocaleKeys.insuranceExpiredOrInactive.tr(context: context).toText14(color: AppColors.primaryRedColor, weight: FontWeight.w500).paddingSymmetrical(24.h, 0.h), + LocaleKeys.insuranceExpiredOrInactive.tr(context: context).toText14(color: AppColors.primaryRedColor, isBold: true).paddingSymmetrical(24.h, 0.h), CustomButton( text: LocaleKeys.updateInsurance.tr(context: context), onPressed: () { @@ -244,7 +344,7 @@ class _ErOnlineCheckinPaymentPageState extends State borderColor: AppColors.secondaryLightRedBorderColor, textColor: AppColors.whiteColor, fontSize: 10, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 8, padding: EdgeInsets.fromLTRB(15, 0, 15, 0), height: 30.h, @@ -393,35 +493,86 @@ class _ErOnlineCheckinPaymentPageState extends State //TODO: Need to pass dynamic params to the Apple Pay instead of static values await payfortViewModel.applePayRequestInsert(applePayInsertRequest: applePayInsertRequest).then((value) { - payfortViewModel.paymentWithApplePay( - customerName: "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}", - // customerEmail: projectViewModel.authenticatedUserObject.user.emailAddress, - customerEmail: "CustID_${appState.getAuthenticatedUser()!.patientId.toString()}@HMG.com", - orderDescription: "Appointment Payment", - orderAmount: double.parse(emergencyServicesViewModel.erOnlineCheckInPaymentDetailsResponse.patientShareWithTax!.toString()), - merchantReference: transID, - merchantIdentifier: payfortViewModel.payfortProjectDetailsRespModel!.merchantIdentifier, - applePayAccessCode: payfortViewModel.payfortProjectDetailsRespModel!.accessCode, - applePayShaRequestPhrase: payfortViewModel.payfortProjectDetailsRespModel!.shaRequest, - currency: appState.getAuthenticatedUser()!.outSa! == 0 ? "SAR" : "AED", - onFailed: (failureResult) async { - LoaderBottomSheet.hideLoader(); - log("failureResult: ${failureResult.message.toString()}"); + if (appState.isPaytabsEnabled) { + selectedPaymentMethod = "VISA"; + LoaderBottomSheet.hideLoader(); + paytabsViewModel.setPaymentConfiguration( + "ER Online Check-In Payment", + emergencyServicesViewModel.erOnlineCheckInPaymentDetailsResponse.patientShareWithTax!, + ); + paytabsViewModel.startApplePayPayment(onSuccess: (PaytabsTransactionResponseModel transactionData) async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr(context: context)); + if (emergencyServicesViewModel.isERBookAppointment) { + await emergencyServicesViewModel.ER_CreateAdvancePayment( + paymentMethodName: selectedPaymentMethod, + paymentReference: transactionData.transactionReference!, + onSuccess: (value) async { + await emergencyServicesViewModel.addAdvanceNumberRequest( + advanceNumber: value, + paymentReference: transactionData.transactionReference!, + appointmentNo: "0", + onSuccess: (val) { + emergencyServicesViewModel.setIsAdvanceERBalanceNeedToBeLoaded(true); + LoaderBottomSheet.hideLoader(); + if (emergencyServicesViewModel.isERBookAppointment) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getSuccessWidget(loadingText: LocaleKeys.erAppointmentBookedSuccess.tr(context: context)), + callBackFunc: () { + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } else {} + }); + }); + } else {} + }, onError: (err) { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: failureResult.message.toString()), + child: Utils.getErrorWidget(loadingText: err.toString()), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, ); - }, - onSucceeded: (successResult) async { - LoaderBottomSheet.hideLoader(); - log("successResult: ${successResult.responseMessage.toString()}"); - selectedPaymentMethod = successResult.paymentOption ?? "VISA"; - checkPaymentStatus(); - }, - ); + }); + } else { + payfortViewModel.paymentWithApplePay( + customerName: "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}", + // customerEmail: projectViewModel.authenticatedUserObject.user.emailAddress, + customerEmail: "CustID_${appState.getAuthenticatedUser()!.patientId.toString()}@HMG.com", + orderDescription: "ER Online Check-In Payment", + orderAmount: double.parse(emergencyServicesViewModel.erOnlineCheckInPaymentDetailsResponse.patientShareWithTax!.toString()), + merchantReference: transID, + merchantIdentifier: payfortViewModel.payfortProjectDetailsRespModel!.merchantIdentifier, + applePayAccessCode: payfortViewModel.payfortProjectDetailsRespModel!.accessCode, + applePayShaRequestPhrase: payfortViewModel.payfortProjectDetailsRespModel!.shaRequest, + currency: appState.getAuthenticatedUser()!.outSa! == 0 ? "SAR" : "AED", + onFailed: (failureResult) async { + LoaderBottomSheet.hideLoader(); + log("failureResult: ${failureResult.message.toString()}"); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: failureResult.message.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + onSucceeded: (successResult) async { + LoaderBottomSheet.hideLoader(); + log("successResult: ${successResult.responseMessage.toString()}"); + selectedPaymentMethod = successResult.paymentOption ?? "VISA"; + checkPaymentStatus(); + }, + ); + } }); } @@ -442,6 +593,7 @@ class _ErOnlineCheckinPaymentPageState extends State paymentReference: payfortViewModel.payfortCheckPaymentStatusResponseModel!.fortId!, appointmentNo: "0", onSuccess: (val) { + emergencyServicesViewModel.setIsAdvanceERBalanceNeedToBeLoaded(true); LoaderBottomSheet.hideLoader(); if (emergencyServicesViewModel.isERBookAppointment) { showCommonBottomSheetWithoutHeight( @@ -468,12 +620,12 @@ class _ErOnlineCheckinPaymentPageState extends State context, child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), callBackFunc: () { - Navigator.pushAndRemoveUntil( - context, - CustomPageRoute( - page: LandingNavigation(), - ), - (r) => false); + // Navigator.pushAndRemoveUntil( + // context, + // CustomPageRoute( + // page: LandingNavigation(), + // ), + // (r) => false); }, isFullScreen: false, isCloseButtonVisible: true, diff --git a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_select_checkin_bottom_sheet.dart b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_select_checkin_bottom_sheet.dart index 3b2dc8ae..aec10522 100644 --- a/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_select_checkin_bottom_sheet.dart +++ b/lib/presentation/emergency_services/er_online_checkin/er_online_checkin_select_checkin_bottom_sheet.dart @@ -60,20 +60,20 @@ class ErOnlineCheckinSelectCheckinBottomSheet extends StatelessWidget { } }); }), - SizedBox(height: 16.h), - checkInOptionCard( - AppAssets.checkin_nfc_icon, - LocaleKeys.nfcNearFieldCommunication.tr(context: context), - LocaleKeys.scanPhoneViaNFC.tr(context: context), - ).onPress(() { - Future.delayed(const Duration(milliseconds: 500), () { - showNfcReader(context, onNcfScan: (String nfcId) { - Future.delayed(const Duration(milliseconds: 100), () { - sendCheckInRequest(nfcId, context); - }); - }, onCancel: () {}); - }); - }), + // SizedBox(height: 16.h), + // checkInOptionCard( + // AppAssets.checkin_nfc_icon, + // LocaleKeys.nfcNearFieldCommunication.tr(context: context), + // LocaleKeys.scanPhoneViaNFC.tr(context: context), + // ).onPress(() { + // Future.delayed(const Duration(milliseconds: 500), () { + // showNfcReader(context, onNcfScan: (String nfcId) { + // Future.delayed(const Duration(milliseconds: 100), () { + // sendCheckInRequest(nfcId, context); + // }); + // }, onCancel: () {}); + // }); + // }), SizedBox(height: 16.h), checkInOptionCard( AppAssets.checkin_qr_icon, @@ -109,7 +109,7 @@ class ErOnlineCheckinSelectCheckinBottomSheet extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ title.toText16(isBold: true, color: AppColors.textColor), - subTitle.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + subTitle.toText12(isBold: true, color: AppColors.greyTextColor), ], ), ), diff --git a/lib/presentation/emergency_services/history/er_history_listing.dart b/lib/presentation/emergency_services/history/er_history_listing.dart index a60d4556..d72200c5 100644 --- a/lib/presentation/emergency_services/history/er_history_listing.dart +++ b/lib/presentation/emergency_services/history/er_history_listing.dart @@ -23,7 +23,6 @@ class ErHistoryListing extends StatelessWidget { return Scaffold( body: Column( children: [ - Expanded( child: CollapsingListView( title: LocaleKeys.history.tr(context: context), @@ -31,15 +30,12 @@ class ErHistoryListing extends StatelessWidget { physics: NeverScrollableScrollPhysics(), child: Column( children: [ - Selector( selector: (context, vm) => (vm.orderDisplayList, vm.historyLoading), builder: (context, data, _) { - return Column( children: [ orderChips(context, data.$2, data.$1), - Visibility( visible:data.$1.isNotEmpty == true, child: ListView.builder( diff --git a/lib/presentation/emergency_services/history/widget/RequestStatus.dart b/lib/presentation/emergency_services/history/widget/RequestStatus.dart index 849565a7..21a4312b 100644 --- a/lib/presentation/emergency_services/history/widget/RequestStatus.dart +++ b/lib/presentation/emergency_services/history/widget/RequestStatus.dart @@ -24,7 +24,7 @@ class RequestStatus extends StatelessWidget { case 2: //processing return LocaleKeys.underProcessing.tr(); case 3: - return LocaleKeys.completed.tr(); + return LocaleKeys.completedPrescriptionOrder.tr(); case 4: //cancel case 6: case 7: diff --git a/lib/presentation/emergency_services/history/widget/ambulance_history_item.dart b/lib/presentation/emergency_services/history/widget/ambulance_history_item.dart index e1ebc83c..52d820a3 100644 --- a/lib/presentation/emergency_services/history/widget/ambulance_history_item.dart +++ b/lib/presentation/emergency_services/history/widget/ambulance_history_item.dart @@ -13,6 +13,7 @@ import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:provider/provider.dart'; +import 'dart:ui' as ui; import '../../../../core/utils/utils.dart'; @@ -37,11 +38,11 @@ class AmbulanceHistoryItem extends StatelessWidget { spacing: 8.h, children: [ RequestStatus(status: order.statusId ?? 0), - "Req ID: ${order.iD}".toText16(color: AppColors.textColor, weight: FontWeight.w600), + "Req ID: ${order.iD}".toText16(color: AppColors.textColor, isBold: true, isEnglishOnly: true), Row( spacing: 4.w, children: [ - chip( Utils.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(order.time)), AppAssets.calendar, AppColors.blackBgColor), + chip(Utils.getDayMonthYearDateFormatted(DateUtil.parseISODate(order.created)), AppAssets.calendar, AppColors.blackBgColor), chip(LocaleKeys.ambulancerequest.tr(context: context), AppAssets.ambulance, AppColors.blackBgColor), ], ), @@ -71,11 +72,15 @@ class AmbulanceHistoryItem extends StatelessWidget { } chip(String title, String iconString, Color iconColor) { - return AppCustomChipWidget( - labelText: title, - icon: iconString, - iconColor: iconColor, - iconSize: 12.h, + return Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelText: title, + icon: iconString, + iconColor: iconColor, + iconSize: 12.h, + isEnglishOnly: true, + ), ); } diff --git a/lib/presentation/emergency_services/history/widget/rrt_item.dart b/lib/presentation/emergency_services/history/widget/rrt_item.dart index c8787791..d3c0e340 100644 --- a/lib/presentation/emergency_services/history/widget/rrt_item.dart +++ b/lib/presentation/emergency_services/history/widget/rrt_item.dart @@ -13,6 +13,7 @@ import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:provider/provider.dart'; +import 'dart:ui' as ui; import '../../../../core/utils/utils.dart'; @@ -37,11 +38,11 @@ class RRTItem extends StatelessWidget { spacing: 8.h, children: [ RequestStatus(status: order.statusId ?? 0), - "Req ID: ${order.iD}".toText16(color: AppColors.textColor, weight: FontWeight.w600), + "Req ID: ${order.iD}".toText16(color: AppColors.textColor, isBold: true, isEnglishOnly: true), Row( spacing: 4.w, children: [ - chip( Utils.getDayMonthYearDateFormatted(DateUtil.convertStringToDate(order.time)), AppAssets.calendar, AppColors.blackBgColor), + chip(Utils.getDayMonthYearDateFormatted(DateUtil.parseISODate(order.created)), AppAssets.calendar, AppColors.blackBgColor), chip(LocaleKeys.rapidResponseTeam.tr(context: context), AppAssets.ic_rrt_vehicle, AppColors.blackBgColor), ], ), @@ -65,11 +66,15 @@ class RRTItem extends StatelessWidget { } chip(String title, String iconString, Color iconColor) { - return AppCustomChipWidget( - labelText: title, - icon: iconString, - iconColor: iconColor, - iconSize: 12.h, + return Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelText: title, + icon: iconString, + iconColor: iconColor, + iconSize: 12.h, + isEnglishOnly: true, + ), ); } diff --git a/lib/presentation/emergency_services/nearest_er_page.dart b/lib/presentation/emergency_services/nearest_er_page.dart index 0ea3ab8f..9eaaa5c7 100644 --- a/lib/presentation/emergency_services/nearest_er_page.dart +++ b/lib/presentation/emergency_services/nearest_er_page.dart @@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart' show tr, StringTransla import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/location_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -27,6 +28,34 @@ class _NearestErPageState extends State { final TextEditingController searchText = TextEditingController(); final Debouncer debouncer = Debouncer(milliseconds: 500); + @override + void initState() { + super.initState(); + _checkLocationAndFetchER(); + } + + void _checkLocationAndFetchER() { + final emergencyServicesViewModel = context.read(); + + // Check if location utils is available and get location with permission check + if (emergencyServicesViewModel.locationUtils != null) { + emergencyServicesViewModel.locationUtils!.getLocation( + isShowConfirmDialog: true, + onSuccess: (position) { + // Location permission granted and location received + emergencyServicesViewModel.getNearestER(); + }, + onFailure: () { + // Location permission denied or failed, still fetch ER list without location sorting + emergencyServicesViewModel.getNearestER(); + }, + ); + } else { + // No location utils available, just fetch the ER list + emergencyServicesViewModel.getNearestER(); + } + } + @override void dispose() { debouncer.dispose(); @@ -44,7 +73,7 @@ class _NearestErPageState extends State { children: [ TextInputWidget( labelText: LocaleKeys.search.tr(), - hintText: 'Type any facility name', + hintText: '', controller: searchText, onChange: (value) { debouncer.run(() { @@ -92,7 +121,7 @@ class _NearestErPageState extends State { }, ); } else { - return Center(child: Utils.getNoDataWidget(context, noDataText: "No nearest Er Around you")); + return Center(child: Utils.getNoDataWidget(context, noDataText: LocaleKeys.noNearestER.tr())); } }), ), diff --git a/lib/presentation/emergency_services/widgets/location_input_bottom_sheet.dart b/lib/presentation/emergency_services/widgets/location_input_bottom_sheet.dart index db45654a..9b1209c8 100644 --- a/lib/presentation/emergency_services/widgets/location_input_bottom_sheet.dart +++ b/lib/presentation/emergency_services/widgets/location_input_bottom_sheet.dart @@ -4,6 +4,8 @@ import 'package:flutter_staggered_animations/flutter_staggered_animations.dart' show AnimationConfiguration, SlideAnimation, FadeInAnimation; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/debouncer.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; @@ -21,8 +23,9 @@ import '../../../theme/colors.dart'; class LocationInputBottomSheet extends StatelessWidget { final Debouncer debouncer = Debouncer(milliseconds: 500); + final Function(Location)? moveCameraController; - LocationInputBottomSheet({super.key}); + LocationInputBottomSheet({super.key, this.moveCameraController}); @override Widget build(BuildContext context) { @@ -49,6 +52,7 @@ class LocationInputBottomSheet extends StatelessWidget { vertical: 10.h, horizontal: 15.h, ), + fontFamily: "Poppins", ), SizedBox(height: 24.h), Selector>( @@ -82,16 +86,18 @@ class LocationInputBottomSheet extends StatelessWidget { Expanded( child: prediction.description.toText14( color: AppColors.textColor, - weight: FontWeight.w500), + weight: FontWeight.w600), ), - - Utils.buildSvgWithAssets( - icon: AppAssets.forward_arrow_icon_small, - iconColor: AppColors.blackColor, + Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.forward_arrow_icon_small, + iconColor: AppColors.blackColor, width: 20.h, height: 15.h, fit: BoxFit.contain, - ), + ), + ) ], ).paddingAll(24.h),), ), @@ -101,7 +107,7 @@ class LocationInputBottomSheet extends StatelessWidget { Navigator.of(context).pop(); var location = context.read().placeDetails; if(location != null) { - context.read().moveController( + moveCameraController?.call( Location(lat: location.lat, lng: location.lng)); } }); diff --git a/lib/presentation/emergency_services/widgets/nearestERItem.dart b/lib/presentation/emergency_services/widgets/nearestERItem.dart index 0c4a5a6a..f0ba2600 100644 --- a/lib/presentation/emergency_services/widgets/nearestERItem.dart +++ b/lib/presentation/emergency_services/widgets/nearestERItem.dart @@ -13,6 +13,8 @@ import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:provider/provider.dart'; +import 'dart:ui' as ui; + class NearestERItem extends StatelessWidget { final ProjectAvgERWaitingTime nearestERItem; final bool isLoading; @@ -57,7 +59,7 @@ class NearestERItem extends StatelessWidget { Expanded( child: (nearestERItem.projectName?.toText16( color: AppColors.textColor, - weight: FontWeight.w600, + isBold: true ) ?? SizedBox.shrink()).toShimmer2(isShow: isLoading), ), @@ -68,20 +70,28 @@ class NearestERItem extends StatelessWidget { Row( spacing: 8.h, children: [ - AppCustomChipWidget( - labelText: "${nearestERItem.distanceInKilometers} km", - icon: AppAssets.location, - iconHasColor: false, - labelPadding: EdgeInsetsDirectional.only(start: 4.h, end: 0.h), - padding: EdgeInsets.all(8.h), - ).toShimmer2(isShow: isLoading), - AppCustomChipWidget( - labelText: "Expected waiting time: ${nearestERItem.getTime()} mins", - icon: AppAssets.waiting_time_clock, - iconHasColor: false, - labelPadding: EdgeInsetsDirectional.only(start: 4.h, end: 0.h), - padding: EdgeInsets.all(8.h), - ).toShimmer2(isShow: isLoading), + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelText: "${nearestERItem.distanceInKilometers} km", + icon: AppAssets.location, + iconHasColor: false, + labelPadding: EdgeInsetsDirectional.only(start: 4.h, end: 0.h), + padding: EdgeInsets.all(8.h), + isEnglishOnly: true, + ).toShimmer2(isShow: isLoading), + ), + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelText: "${LocaleKeys.waitingTime.tr(context: context)} ${nearestERItem.getTime()} ${LocaleKeys.mins.tr(context: context)}", + icon: AppAssets.waiting_time_clock, + iconHasColor: false, + labelPadding: EdgeInsetsDirectional.only(start: 4.h, end: 0.h), + padding: EdgeInsets.all(8.h), + isEnglishOnly: true, + ).toShimmer2(isShow: isLoading), + ), ], ), SizedBox(height: 16.h), @@ -89,7 +99,7 @@ class NearestERItem extends StatelessWidget { children: [ Expanded( child: CustomButton( - text: LocaleKeys.viewLocationGoogleMaps.tr(context: context), + text: LocaleKeys.getDirections.tr(context: context), iconSize: 16.h, icon: AppAssets.location, onPressed: () { @@ -99,14 +109,14 @@ class NearestERItem extends StatelessWidget { borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, iconColor: AppColors.primaryRedColor, - height: 40.h, + height: 46.h, fontSize: 14.f, - fontWeight: FontWeight.w500, + isBold: true, ).toShimmer2(isShow: isLoading), ), SizedBox(width: 8.h), SizedBox( - height: 40.h, + height: 46.h, width: 40.h, child: CustomButton( text: '', @@ -114,12 +124,11 @@ class NearestERItem extends StatelessWidget { icon: AppAssets.call_fill, onPressed: () { context.read().openDialer( nearestERItem.phonenumber??""); - }, backgroundColor: AppColors.greyColor, iconColor: AppColors.textColor, borderColor: AppColors.greyColor, - height: 40.h, + height: 46.h, ).toShimmer2(isShow: isLoading), ), ], diff --git a/lib/presentation/habib_wallet/habib_wallet_page.dart b/lib/presentation/habib_wallet/habib_wallet_page.dart index c90003a8..2814a961 100644 --- a/lib/presentation/habib_wallet/habib_wallet_page.dart +++ b/lib/presentation/habib_wallet/habib_wallet_page.dart @@ -1,19 +1,30 @@ +import 'dart:async'; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; -import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; +import 'package:hmg_patient_app_new/features/my_invoices/my_invoices_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/habib_wallet/recharge_wallet_page.dart'; -import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/presentation/habib_wallet/widgets/wallet_balance_list.dart'; +import 'package:hmg_patient_app_new/presentation/habib_wallet/withdraw_request_create_page.dart'; +import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; +import 'package:hmg_patient_app_new/presentation/my_invoices/widgets/invoice_list_card.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:open_filex/open_filex.dart'; import 'package:provider/provider.dart'; class HabibWalletPage extends StatefulWidget { @@ -25,11 +36,26 @@ class HabibWalletPage extends StatefulWidget { class _HabibWalletState extends State { late HabibWalletViewModel habibWalletVM; + late MyInvoicesViewModel myInvoicesViewModel; + + @override + void initState() { + scheduleMicrotask(() async { + habibWalletVM.initHabibWalletProvider(); + habibWalletVM.getPatientBalanceAmount(); + habibWalletVM.getLakumAccountInformation(); + myInvoicesViewModel.setInvoicesListLoading(); + myInvoicesViewModel.getAllInvoicesList(); + }); + + super.initState(); + } @override Widget build(BuildContext context) { habibWalletVM = Provider.of(context, listen: false); - AppState _appState = getIt.get(); + myInvoicesViewModel = Provider.of(context, listen: false); + AppState appState = getIt.get(); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( @@ -44,9 +70,10 @@ class _HabibWalletState extends State { width: double.infinity, height: 180.h, decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.blackBgColor, - borderRadius: 24, - ), + // color: AppColors.blackBgColor, + color: Color(0xFF2E3039), + borderRadius: 24.r, + hasShadow: true), child: Padding( padding: EdgeInsets.all(16.h), child: Column( @@ -59,52 +86,244 @@ class _HabibWalletState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "${_appState.getAuthenticatedUser()!.firstName!} ${_appState.getAuthenticatedUser()!.lastName!}".toText19(isBold: true, color: AppColors.whiteColor), - "MRN: ${_appState.getAuthenticatedUser()!.patientId!}".toText14(weight: FontWeight.w500, color: AppColors.greyTextColor), + "${appState.getAuthenticatedUser()!.firstName!} ${appState.getAuthenticatedUser()!.lastName!}" + .toText19(isBold: true, color: Colors.white), + "${LocaleKeys.fileno.tr(context: context)}: ${appState.getAuthenticatedUser()!.patientId!}" + .toText14(isBold: true, color: AppColors.greyTextColor), ], ).expanded, - Utils.buildSvgWithAssets(icon: AppAssets.habiblogo, width: 24.h, height: 24.h), + Utils.buildSvgWithAssets(icon: AppAssets.habiblogo, width: 24.h, height: 24.h, applyThemeColor: false), ], ), Spacer(), - LocaleKeys.balanceAmount.tr(context: context).toText14(weight: FontWeight.w500, color: AppColors.whiteColor), + LocaleKeys.balanceAmount.tr(context: context).toText14(isBold: true, color: Colors.white), SizedBox(height: 4.h), - Consumer(builder: (context, habibWalletVM, child) { - return Utils.getPaymentAmountWithSymbol2(habibWalletVM.habibWalletAmount, textColor: AppColors.whiteColor, iconColor: AppColors.whiteColor, iconSize: 13, isExpanded: false) - .toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.h, width: 80.h, height: 24.h); - }), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Consumer(builder: (context, habibWalletVM, child) { + return Utils.getPaymentAmountWithSymbol2(habibWalletVM.habibWalletAmount, + textColor: Colors.white, iconColor: Colors.white, iconSize: 16, isExpanded: false, letterSpacing: -1) + .toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.h, width: 80.h, height: 24.h); + }), + Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.arrow_forward, + height: 24.h, + width: 24.h, + iconColor: AppColors.whiteColor, + ), + ), + ], + ), ], ), ), - ), + ).onPress(() { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.habibWallet.tr(context: context), + context, + // child: Utils.getSuccessWidget(loadingText: LocaleKeys.erAppointmentBookedSuccess.tr(context: context)), + child: HabibWalletBalanceList(), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }), SizedBox(height: 16.h), Row( mainAxisAlignment: MainAxisAlignment.center, children: [ - CustomButton( - height: 40.h, - icon: AppAssets.recharge_icon, - iconSize: 24.w, - backgroundColor: AppColors.infoColor, - textColor: AppColors.whiteColor, - text: LocaleKeys.recharge.tr(context: context), - borderWidth: 0.w, - fontWeight: FontWeight.w500, - borderColor: Colors.transparent, - padding: EdgeInsets.fromLTRB(4, 0, 12, 0), - fontSize: 14.f, - onPressed: () { - Navigator.of(context) - .push(CustomPageRoute( - page: RechargeWalletPage(), - )) - .then((val) { - habibWalletVM.getPatientBalanceAmount(); - }); - }, + Flexible( + child: CustomButton( + height: 40.h, + icon: AppAssets.recharge_icon, + iconSize: 24.w, + backgroundColor: AppColors.infoColor, + textColor: Colors.white, + text: LocaleKeys.recharge.tr(context: context), + borderWidth: 0.w, + fontWeight: FontWeight.w600, + borderColor: Colors.transparent, + padding: EdgeInsets.fromLTRB(4, 0, 12, 0), + fontSize: 14.f, + onPressed: () { + Navigator.of(context) + .push(CustomPageRoute( + page: RechargeWalletPage(), + )) + .then((val) { + habibWalletVM.initHabibWalletProvider(); + habibWalletVM.getPatientBalanceAmount(); + habibWalletVM.getLakumAccountInformation(); + }); + }, + ), ), + // SizedBox(width: 8.w), + // Flexible( + // child: CustomButton( + // height: 40.h, + // icon: AppAssets.refundIcon, + // iconSize: 24.w, + // backgroundColor: AppColors.successColor, + // textColor: Colors.white, + // text: LocaleKeys.withdraw.tr(context: context), + // borderWidth: 0.w, + // fontWeight: FontWeight.w600, + // borderColor: Colors.transparent, + // padding: EdgeInsets.fromLTRB(4, 0, 12, 0), + // fontSize: 14.f, + // onPressed: () => Navigator.of(context).push(CustomPageRoute(page: WithdrawRequestCreatePage())), + // ), + // ), ], ), + SizedBox(height: 24.h), + // Container( + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // color: AppColors.whiteColor, + // borderRadius: 24.r, + // hasShadow: false, + // ), + // child: Consumer(builder: (context, habibWalletVM, child) { + // return ListView.separated( + // itemCount: habibWalletVM.habibWalletBalanceList.length, + // physics: NeverScrollableScrollPhysics(), + // padding: EdgeInsets.only(top: 8, bottom: 8), + // shrinkWrap: true, + // itemBuilder: (context, index) { + // return Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // Expanded( + // child: habibWalletVM.habibWalletBalanceList[index].projectDescription! + // .toText16(isBold: true, color: AppColors.textColor)), + // Utils.getPaymentAmountWithSymbol2( + // habibWalletVM.habibWalletBalanceList[index].patientAdvanceBalanceAmount!, //did the changes because of negative value + // textColor: AppColors.textColor, + // iconColor: AppColors.textColor, + // iconSize: 18.h, + // isExpanded: false, + // fontSize: 28.f, + // fontWeight: FontWeight.w600, + // letterSpacing: -1), + // ], + // ).paddingSymmetrical(0, 12.h); + // }, + // separatorBuilder: (BuildContext context, int index) { + // return Divider(height: 1, color: AppColors.textColor.withAlpha(20)); + // }, + // ).paddingSymmetrical(16.h, 24.h).toShimmer2(isShow: habibWalletVM.isWalletAmountLoading); + // }), + // ), + // SizedBox(height: 16.h), + // Invoices Section + Consumer(builder: (context, myInvoicesVM, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.invoiceHistory.tr(context: context).toText18(isBold: true, color: context.textColor), + SizedBox(height: 12.h), + ListView.builder( + itemCount: myInvoicesVM.isInvoicesListLoading + ? 4 + : myInvoicesVM.allInvoicesList.isEmpty + ? 1 + : myInvoicesVM.allInvoicesList.length, + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + padding: EdgeInsetsGeometry.zero, + itemBuilder: (context, index) { + return myInvoicesVM.isInvoicesListLoading + ? LabResultItemView(onTap: () {}, labOrder: null, index: index, isLoading: true) + : myInvoicesVM.allInvoicesList.isNotEmpty + ? AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + verticalOffset: 100.0, + child: FadeInAnimation( + child: AnimatedContainer( + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + child: InvoiceListCard( + getInvoicesListResponseModel: myInvoicesVM.allInvoicesList[index], + onTap: () async { + if (Utils.isVidaPlusProject(myInvoicesVM.allInvoicesList[index].projectId ?? 0)) { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.sendingEmailPleaseWait.tr(context: context)); + await myInvoicesViewModel.sendInvoiceEmail( + appointmentNo: myInvoicesVM.allInvoicesList[index].appointmentNo!, + projectID: myInvoicesVM.allInvoicesList[index].projectId!, + onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight(context, + child: Utils.getSuccessWidget( + loadingText: LocaleKeys.emailSentSuccessfullyMessage.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + isAutoDismiss: true); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr(context: context)); + myInvoicesViewModel.downloadInvoicePDF( + setupId: myInvoicesVM.allInvoicesList[index].setupId!, + invoiceNo: myInvoicesVM.allInvoicesList[index].invoiceNo!, + projectID: myInvoicesVM.allInvoicesList[index].projectId!, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + onSuccess: (value) async { + LoaderBottomSheet.hideLoader(); + if (myInvoicesViewModel.downloadInvoicePDFBase64!.isNotEmpty) { + String path = + await Utils.createFileFromString(myInvoicesViewModel.downloadInvoicePDFBase64!, "pdf"); + try { + OpenFilex.open(path); + } catch (ex) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.cannotOpenThisFile.tr()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + } + }, + ); + } + }, + ), + ), + ), + ), + ) + : Utils.getNoDataWidget(context); + }, + ), + ], + ); + }), ], ), ), @@ -113,3 +332,5 @@ class _HabibWalletState extends State { ); } } + + diff --git a/lib/presentation/habib_wallet/recharge_wallet_page.dart b/lib/presentation/habib_wallet/recharge_wallet_page.dart index ef1642eb..0e7a1eac 100644 --- a/lib/presentation/habib_wallet/recharge_wallet_page.dart +++ b/lib/presentation/habib_wallet/recharge_wallet_page.dart @@ -1,5 +1,3 @@ -import 'dart:async'; - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -13,8 +11,8 @@ import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_mode import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/habib_wallet/wallet_payment_confirm_page.dart'; import 'package:hmg_patient_app_new/presentation/habib_wallet/widgets/select_hospital_bottom_sheet.dart'; -import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/input_widget.dart'; @@ -31,7 +29,7 @@ class RechargeWalletPage extends StatefulWidget { } class _RechargeWalletPageState extends State { - FocusNode textFocusNode = FocusNode(); + late FocusNode _amountFocusNode; late HabibWalletViewModel habibWalletVM; late AppState appState; @@ -40,259 +38,334 @@ class _RechargeWalletPageState extends State { @override void initState() { - scheduleMicrotask(() { - habibWalletVM.setDepositorDetails(appState.getAuthenticatedUser()!.patientId.toString(), "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}", + super.initState(); + _amountFocusNode = FocusNode(); + + // Clear errors when entering recharge wallet page + WidgetsBinding.instance.addPostFrameCallback((_) { + habibWalletVM = context.read(); + habibWalletVM.setDepositorDetails( + appState.getAuthenticatedUser()!.patientId.toString(), + "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}", appState.getAuthenticatedUser()!.mobileNumber!); habibWalletVM.setSelectedRechargeType(0); habibWalletVM.getProjectsList(); + + // Clear any previous recharge errors + habibWalletVM.clearAllRechargeErrors(); }); - super.initState(); + } + + @override + void dispose() { + // Clear errors before disposing + // habibWalletVM.clearAllRechargeErrors(); + + _amountFocusNode.dispose(); + amountTextController.dispose(); + notesTextController.dispose(); + + super.dispose(); } @override Widget build(BuildContext context) { habibWalletVM = Provider.of(context, listen: false); appState = getIt.get(); - return Scaffold( - backgroundColor: AppColors.bgScaffoldColor, - body: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Expanded( - child: CollapsingListView( - title: LocaleKeys.createAdvancedPayment.tr(context: context), - child: SingleChildScrollView( - child: Padding( - padding: EdgeInsets.all(24.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - height: 135.h, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.h, - hasShadow: false, - side: BorderSide(color: AppColors.textColor, width: 2.h), - ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - //TODO: Check with hussain to show AED or SAR - LocaleKeys.amount.tr(context: context).toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), - Spacer(), - Row( - crossAxisAlignment: CrossAxisAlignment.end, - children: [ - SizedBox( - width: 150.h, - child: TextInputWidget( - controller: amountTextController, - labelText: "", - hintText: "", - isEnable: true, - prefix: null, - isAllowRadius: true, - isBorderAllowed: false, - isAllowLeadingIcon: true, - autoFocus: true, - fontSize: 40.f, - padding: EdgeInsets.symmetric(horizontal: 8.h, vertical: 0.h), - focusNode: textFocusNode, - isWalletAmountInput: true, - keyboardType: TextInputType.numberWithOptions(signed: false, decimal: true), - fontFamily: "Poppins", - // leadingIcon: AppAssets.student_card, - ), + return PopScope( + onPopInvokedWithResult: (bool didPop, dynamic result) { + if (didPop) { + // Clear errors when user navigates back + habibWalletVM.clearAllRechargeErrors(); + } + }, + child: Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + body: GestureDetector( + onTap: () { + // Dismiss the keyboard and unfocus any focused widget when tapping outside + _amountFocusNode.unfocus(); + FocusScope.of(context).unfocus(); + }, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: CollapsingListView( + title: LocaleKeys.rechargePageKey.tr(context: context), + child: SingleChildScrollView( + child: Padding( + padding: EdgeInsets.all(24.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Consumer( + builder: (context, viewModel, child) { + return Container( + height: 135.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: false, + side: BorderSide( + color: viewModel.amountError != null ? AppColors.primaryRedBorderColor : AppColors.textColor, + width: 2.h, ), - const Spacer(), - LocaleKeys.sar.tr(context: context).toText20(color: AppColors.greyTextColor, weight: FontWeight.w500), - ], - ), - ], + ), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + //TODO: Check with hussain to show AED or SAR + LocaleKeys.amount.tr(context: context).toText14(color: AppColors.greyTextColor, isBold: true), + Spacer(), + Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + SizedBox( + width: 150.h, + child: TextInputWidget( + controller: amountTextController, + labelText: "", + hintText: "", + isEnable: true, + prefix: null, + isAllowRadius: true, + isBorderAllowed: false, + isAllowLeadingIcon: true, + autoFocus: true, + fontSize: 25.f, + padding: EdgeInsets.symmetric(horizontal: 8.h, vertical: 0.h), + focusNode: _amountFocusNode, + isWalletAmountInput: true, + keyboardType: TextInputType.numberWithOptions(signed: false, decimal: true), + fontFamily: "Poppins", + onChange: (value) { + // Clear error when user starts typing + viewModel.clearAmountError(); + }, + // leadingIcon: AppAssets.student_card, + ), + ), + const Spacer(), + ((getIt.get().getAuthenticatedUser()!.outSa == 1) ? LocaleKeys.aed.tr(context: context) : LocaleKeys.sar.tr(context: context)) + .toText20(color: AppColors.greyTextColor, isBold: true), + ], + ), + ], + ), + ), + ); + }, ), - ), - ), - SizedBox(height: 24.h), - Consumer(builder: (context, habibWalletVM, child) { - return Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.h, - hasShadow: false, + // Show error message if exists + Consumer( + builder: (context, viewModel, child) { + if (viewModel.amountError != null) { + return Padding( + padding: EdgeInsets.only(left: 16.w, top: 8.h), + child: Text( + viewModel.amountError!, + style: TextStyle( + color: AppColors.primaryRedColor, + fontSize: 12.f, + ), + ), + ); + } + return SizedBox.shrink(); + }, ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + SizedBox(height: 24.h), + Consumer(builder: (context, habibWalletVM, child) { + return Container( + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(24.h), + border: Border.all( + color: habibWalletVM.hospitalError != null ? AppColors.primaryRedBorderColor : Colors.transparent, + width: 2.h, + ), + ), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.my_account_icon, width: 40.h, height: 40.h, applyThemeColor: false), - SizedBox(width: 8.h), - Column( - crossAxisAlignment: CrossAxisAlignment.start, + Row( children: [ - (habibWalletVM.getSelectedRechargeTypeValue()).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), - "${LocaleKeys.medicalFile.tr(context: context)}: ${habibWalletVM.fileNumber}" - .toText14(color: AppColors.textColor, weight: FontWeight.w500, letterSpacing: -0.2), + Utils.buildSvgWithAssets( + icon: AppAssets.my_account_icon, width: 40.h, height: 40.h, applyThemeColor: false), + SizedBox(width: 8.h), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (habibWalletVM.getSelectedRechargeTypeValue()).toText12(color: AppColors.greyTextColor, isBold: true), + "${LocaleKeys.medicalFile.tr(context: context)}: ${habibWalletVM.fileNumber}" + .toText14(color: AppColors.textColor, isBold: true, letterSpacing: -0.2, isEnglishOnly: true), + ], + ), ], ), + Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, width: 25.h, height: 25.h), ], - ), - Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, width: 25.h, height: 25.h), - ], - ).onPress(() async { - habibWalletVM.setCurrentIndex(0); - showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.medicalFile.tr(context: context), - titleWidget: Consumer(builder: (context, habibWalletVM, child) { - return habibWalletVM.currentIndex != 0 - ? IconButton( - icon: Utils.buildSvgWithAssets(icon: AppAssets.arrow_back, width: 24.h, height: 24.h), - padding: EdgeInsets.zero, - onPressed: () => habibWalletVM.setCurrentIndex(0), - highlightColor: Colors.transparent, - ) - : LocaleKeys.medicalFile.tr(context: context).toText20(weight: FontWeight.w600); - }), child: Consumer(builder: (context, habibWalletVM, child) { - return MultiPageBottomSheet(); - }), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true); - }), - SizedBox(height: 16.h), - Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), - SizedBox(height: 16.h), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ + ).onPress(() async { + habibWalletVM.setCurrentIndex(0); + showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.medicalFile.tr(context: context), + titleWidget: Consumer(builder: (context, habibWalletVM, child) { + return habibWalletVM.currentIndex != 0 + ? IconButton( + icon: Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets(icon: AppAssets.arrow_back, width: 24.h, height: 24.h)), + padding: EdgeInsets.zero, + onPressed: () => habibWalletVM.setCurrentIndex(0), + highlightColor: Colors.transparent, + ) + : LocaleKeys.medicalFile.tr(context: context).toText20(isBold: true); + }), child: Consumer(builder: (context, habibWalletVM, child) { + return MultiPageBottomSheet(); + }), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true); + }), + SizedBox(height: 16.h), + Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), + SizedBox(height: 16.h), Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.select_hospital_icon, width: 40.h, height: 40.h, applyThemeColor: false), + Row( + children: [ + Utils.buildSvgWithAssets( + icon: AppAssets.select_hospital_icon, width: 40.h, height: 40.h, applyThemeColor: false), + SizedBox(width: 8.h), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.hospital.tr(context: context).toText12(color: AppColors.greyTextColor, isBold: true), + SizedBox( + width: MediaQuery.of(context).size.width * 0.55, + child: (habibWalletVM.selectedHospital != null + ? habibWalletVM.selectedHospital!.name + : LocaleKeys.selectHospital.tr(context: context))! + .toText14(color: AppColors.textColor, isBold: true), + ), + ], + ), + ], + ), + Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, width: 25.h, height: 25.h), + ], + ).onPress(() { + showCommonBottomSheetWithoutHeight(context, + title: LocaleKeys.selectHospital.tr(context: context), + isDismissible: false, + child: SelectHospitalBottomSheet(), + callBackFunc: () {}); + }), + // Show hospital error message if exists + if (habibWalletVM.hospitalError != null) + Padding( + padding: EdgeInsets.only(top: 8.h), + child: Text( + habibWalletVM.hospitalError!, + style: TextStyle( + color: AppColors.primaryRedColor, + fontSize: 12.f, + ), + ), + ), + SizedBox(height: 16.h), + Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), + SizedBox(height: 16.h), + Row( + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.email_icon, width: 40.h, height: 40.h, applyThemeColor: false), SizedBox(width: 8.h), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.hospital.tr(context: context).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), - SizedBox( - width: MediaQuery.of(context).size.width * 0.55, - child: (habibWalletVM.selectedHospital != null ? habibWalletVM.selectedHospital!.name : LocaleKeys.selectHospital.tr(context: context))! - .toText14(color: AppColors.textColor, weight: FontWeight.w500), - ), + LocaleKeys.email.tr(context: context).toText12(color: AppColors.greyTextColor, isBold: true), + "${appState.getAuthenticatedUser()!.emailAddress}" + .toText14(color: AppColors.textColor, isBold: true, letterSpacing: -0.2, isEnglishOnly: true), ], ), ], ), - Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, width: 25.h, height: 25.h), - ], - ).onPress(() { - showCommonBottomSheetWithoutHeight(context, - title: LocaleKeys.selectHospital.tr(context: context), isDismissible: false, child: SelectHospitalBottomSheet(), callBackFunc: () {}); - }), - SizedBox(height: 16.h), - Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), - SizedBox(height: 16.h), - Row( - children: [ - Utils.buildSvgWithAssets(icon: AppAssets.email_icon, width: 40.h, height: 40.h, applyThemeColor: false), - SizedBox(width: 8.h), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.email.tr(context: context).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), - "${appState.getAuthenticatedUser()!.emailAddress}".toText14(color: AppColors.textColor, weight: FontWeight.w500, letterSpacing: -0.2), - ], + SizedBox(height: 16.h), + Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), + SizedBox(height: 16.h), + TextInputWidget( + labelText: LocaleKeys.notes.tr(context: context), + hintText: "", + controller: notesTextController, + keyboardType: TextInputType.text, + isEnable: true, + prefix: null, + autoFocus: false, + isAllowRadius: true, + isBorderAllowed: false, + isAllowLeadingIcon: true, + leadingIcon: AppAssets.notes_icon, + hasError: false, ), + SizedBox(height: 8.h), ], ), - SizedBox(height: 16.h), - Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.1), height: 1.h), - SizedBox(height: 16.h), - TextInputWidget( - labelText: LocaleKeys.notes.tr(context: context), - hintText: "", - controller: notesTextController, - keyboardType: TextInputType.text, - isEnable: true, - prefix: null, - autoFocus: false, - isAllowRadius: true, - isBorderAllowed: false, - isAllowLeadingIcon: true, - leadingIcon: AppAssets.notes_icon, - hasError: false, - ), - SizedBox(height: 8.h), - ], - ), - ), - ); - }), - ], + ), + ); + }), + ], + ), + ), ), ), ), - ), - ), - //TODO: Handle Family member selection & Other Account Selection - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.h, - hasShadow: false, - ), - child: CustomButton( - text: LocaleKeys.next.tr(context: context), - onPressed: () { - if (amountTextController.text.isEmpty) { - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: "Please enter amount to continue."), - callBackFunc: () { - textFocusNode.requestFocus(); - }, - isFullScreen: false, - isCloseButtonVisible: true, - ); - } else if (habibWalletVM.selectedHospital == null) { - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: "Please select hospital to continue."), - callBackFunc: () { - textFocusNode.requestFocus(); - }, - isFullScreen: false, - isCloseButtonVisible: true, - ); - } else { - habibWalletVM.setWalletRechargeAmount(num.parse(amountTextController.text)); - habibWalletVM.setNotesText(notesTextController.text); - // habibWalletVM.setDepositorDetails(appState.getAuthenticatedUser()!.patientId.toString(), "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}", - // appState.getAuthenticatedUser()!.mobileNumber!); - Navigator.of(context).push( - CustomPageRoute( - page: WalletPaymentConfirmPage(), - ), - ); - } - }, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - textColor: Colors.white, - fontSize: 16, - fontWeight: FontWeight.w500, - borderRadius: 12, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 50.h, - icon: AppAssets.appointment_pay_icon, - iconColor: Colors.white, - iconSize: 18.h, - ).paddingSymmetrical(24.h, 24.h), + //TODO: Handle Family member selection & Other Account Selection + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: false, + ), + child: CustomButton( + text: LocaleKeys.next.tr(context: context), + onPressed: () { + _amountFocusNode.unfocus(); + FocusScope.of(context).unfocus(); + + // Use ViewModel validation method + if (habibWalletVM.validateRechargeForm(amountTextController.text)) { + habibWalletVM.setWalletRechargeAmount(num.parse(amountTextController.text.replaceAll(',', ''))); + habibWalletVM.setNotesText(notesTextController.text); + // habibWalletVM.setDepositorDetails(appState.getAuthenticatedUser()!.patientId.toString(), "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}", + // appState.getAuthenticatedUser()!.mobileNumber!); + Navigator.of(context).push( + CustomPageRoute( + page: WalletPaymentConfirmPage(), + ), + ); + } + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: Colors.white, + fontSize: 16, + fontWeight: FontWeight.w600, + borderRadius: 12, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 50.h, + icon: AppAssets.appointment_pay_icon, + iconColor: Colors.white, + iconSize: 18.h, + ).paddingSymmetrical(24.h, 24.h), + ), + ], ), - ], + ), ), ); } diff --git a/lib/presentation/habib_wallet/wallet_payment_confirm_page.dart b/lib/presentation/habib_wallet/wallet_payment_confirm_page.dart index 9efcb01b..f894c387 100644 --- a/lib/presentation/habib_wallet/wallet_payment_confirm_page.dart +++ b/lib/presentation/habib_wallet/wallet_payment_confirm_page.dart @@ -2,13 +2,18 @@ import 'dart:async'; import 'dart:developer'; import 'dart:io'; +import 'package:amazon_payfort/amazon_payfort.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_amazonpaymentservices/flutter_amazonpaymentservices.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/cache_consts.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -16,13 +21,17 @@ import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; import 'package:hmg_patient_app_new/features/payfort/models/apple_pay_request_insert_model.dart'; import 'package:hmg_patient_app_new/features/payfort/payfort_view_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/models/paytabs_transaction_response_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/paytabs_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/in_app_browser/InAppBrowser.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:network_info_plus/network_info_plus.dart'; import 'package:provider/provider.dart'; class WalletPaymentConfirmPage extends StatefulWidget { @@ -34,6 +43,7 @@ class WalletPaymentConfirmPage extends StatefulWidget { class _WalletPaymentConfirmPageState extends State { late PayfortViewModel payfortViewModel; + late PayTabsViewModel paytabsViewModel; late AppState appState; late HabibWalletViewModel habibWalletVM; @@ -55,6 +65,7 @@ class _WalletPaymentConfirmPageState extends State { appState = getIt.get(); habibWalletVM = Provider.of(context, listen: false); payfortViewModel = Provider.of(context, listen: false); + paytabsViewModel = Provider.of(context, listen: false); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: Column( @@ -62,7 +73,7 @@ class _WalletPaymentConfirmPageState extends State { children: [ Expanded( child: CollapsingListView( - title: "Select Payment Method", + title: LocaleKeys.selectPaymentOption.tr(context: context), child: SingleChildScrollView( child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -80,7 +91,7 @@ class _WalletPaymentConfirmPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset(AppAssets.mada, width: 72.h, height: 25.h).toShimmer2(isShow: false), + Utils.buildImgWithAssets(icon: AppAssets.mada, width: 72.h, height: 25.h, fit: BoxFit.contain).toShimmer2(isShow: false), SizedBox(height: 16.h), LocaleKeys.mada.tr(context: context).toText16(isBold: true).toShimmer2(isShow: false), ], @@ -99,9 +110,149 @@ class _WalletPaymentConfirmPageState extends State { ), ], ).paddingSymmetrical(16.h, 16.h), - ).paddingSymmetrical(24.h, 0.h).onPress(() { + ).paddingSymmetrical(24.h, 0.h).onPress(() async { selectedPaymentMethod = "MADA"; - openPaymentURL("mada"); + if (appState.isPaytabsEnabled) { + paytabsViewModel.setPaymentConfiguration("Advance Payment", habibWalletVM.walletRechargeAmount); + paytabsViewModel.startCardPayment(onSuccess: (PaytabsTransactionResponseModel transactionData) async { + LoaderBottomSheet.showLoader(); + await habibWalletVM.HISCreateAdvancePayment( + paymentMethodName: selectedPaymentMethod, + paidAmount: habibWalletVM.walletRechargeAmount, + paymentReference: transactionData.transactionReference!, + patientID: habibWalletVM.fileNumber, + projectID: habibWalletVM.selectedHospital!.iD!, + depositorName: habibWalletVM.depositorName, + onSuccess: (value) async { + await habibWalletVM.addAdvanceNumberRequest( + advanceNumber: Utils.isVidaPlusProject(habibWalletVM.selectedHospital!.iD) + ? value.data['OnlineCheckInAppointments'][0]['AdvanceNumber_VP'].toString() + : value.data['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), + paymentReference: transactionData.transactionReference!, + onSuccess: (value) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight(getIt.get().navigatorKey.currentContext!, child: Utils.getSuccessWidget(loadingText: "Payment Successful!"), + callBackFunc: () { + habibWalletVM.setIsWalletAmountToBeLoaded(true); + habibWalletVM.initHabibWalletProvider(); + habibWalletVM.getPatientBalanceAmount(); + Navigator.of(getIt.get().navigatorKey.currentContext!).pop(); + Navigator.of(getIt.get().navigatorKey.currentContext!).pop(); + }, isFullScreen: false, isCloseButtonVisible: true, isAutoDismiss: true); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, onError: (err) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + if (appState.isPayfortHostedPageEnabled) { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPaymentInformation.tr(context: context)); + + transID = Utils.getAdvancePaymentTransID(habibWalletVM.selectedHospital!.iD!, int.parse(habibWalletVM.fileNumber)); + await payfortViewModel.getPayfortConfigurations( + serviceId: ServiceTypeEnum.advancePayment.getIdFromServiceEnum(), projectId: habibWalletVM.selectedHospital!.iD!, integrationId: 1); + + payfortViewModel.initiatePaymentWithCard( + "mada", + "0", + "false", + DateUtil.convertDateToString(DateTime.now()), + "0", + "0", + transactionID: transID, + fileNumber: habibWalletVM.fileNumber.toString(), + amount: habibWalletVM.walletRechargeAmount.toString(), + orderDescription: "Advance Payment", + onSucceeded: (paymentResult) async { + print("Payment Success Data: ${paymentResult.toString()}"); + LoaderBottomSheet.showLoader(); + await habibWalletVM.HISCreateAdvancePayment( + paymentMethodName: selectedPaymentMethod, + paidAmount: habibWalletVM.walletRechargeAmount, + paymentReference: paymentResult.fortId!, + patientID: habibWalletVM.fileNumber, + projectID: habibWalletVM.selectedHospital!.iD!, + depositorName: habibWalletVM.depositorName, + onSuccess: (value) async { + await habibWalletVM.addAdvanceNumberRequest( + advanceNumber: Utils.isVidaPlusProject(habibWalletVM.selectedHospital!.iD) + ? value.data['OnlineCheckInAppointments'][0]['AdvanceNumber_VP'].toString() + : value.data['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), + paymentReference: paymentResult.fortId!, + onSuccess: (value) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight(getIt.get().navigatorKey.currentContext!, + child: Utils.getSuccessWidget(loadingText: "Payment Successful!"), callBackFunc: () { + habibWalletVM.setIsWalletAmountToBeLoaded(true); + habibWalletVM.initHabibWalletProvider(); + habibWalletVM.getPatientBalanceAmount(); + // Navigator.of(getIt.get().navigatorKey.currentContext!).pop(); + Navigator.of(getIt.get().navigatorKey.currentContext!).pop(); + }, isFullScreen: false, isCloseButtonVisible: true, isAutoDismiss: true); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, + onFailed: (err) { + print("Payment Failed Data: ${err.toString()}"); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + ); + } else { + openPaymentURL("mada"); + } + } }), SizedBox(height: 16.h), Container( @@ -118,9 +269,9 @@ class _WalletPaymentConfirmPageState extends State { children: [ Row( children: [ - Image.asset(AppAssets.visa, width: 40.h, height: 40.h), + Utils.buildImgWithAssets(icon: AppAssets.visa, width: 40.h, height: 40.h), SizedBox(width: 8.h), - Image.asset(AppAssets.mastercard, width: 40.h, height: 40.h), + Utils.buildImgWithAssets(icon: AppAssets.mastercard, width: 40.h, height: 40.h, fit: BoxFit.contain), ], ).toShimmer2(isShow: false), SizedBox(height: 16.h), @@ -141,9 +292,149 @@ class _WalletPaymentConfirmPageState extends State { ), ], ).paddingSymmetrical(16.h, 16.h), - ).paddingSymmetrical(24.h, 0.h).onPress(() { + ).paddingSymmetrical(24.h, 0.h).onPress(() async { selectedPaymentMethod = "VISA"; - openPaymentURL("visa"); + if (appState.isPaytabsEnabled) { + paytabsViewModel.setPaymentConfiguration("Advance Payment", habibWalletVM.walletRechargeAmount); + paytabsViewModel.startCardPayment(onSuccess: (PaytabsTransactionResponseModel transactionData) async { + LoaderBottomSheet.showLoader(); + await habibWalletVM.HISCreateAdvancePayment( + paymentMethodName: selectedPaymentMethod, + paidAmount: habibWalletVM.walletRechargeAmount, + paymentReference: transactionData.transactionReference!, + patientID: habibWalletVM.fileNumber, + projectID: habibWalletVM.selectedHospital!.iD!, + depositorName: habibWalletVM.depositorName, + onSuccess: (value) async { + await habibWalletVM.addAdvanceNumberRequest( + advanceNumber: Utils.isVidaPlusProject(habibWalletVM.selectedHospital!.iD) + ? value.data['OnlineCheckInAppointments'][0]['AdvanceNumber_VP'].toString() + : value.data['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), + paymentReference: transactionData.transactionReference!, + onSuccess: (value) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight(getIt.get().navigatorKey.currentContext!, child: Utils.getSuccessWidget(loadingText: "Payment Successful!"), + callBackFunc: () { + habibWalletVM.setIsWalletAmountToBeLoaded(true); + habibWalletVM.initHabibWalletProvider(); + habibWalletVM.getPatientBalanceAmount(); + Navigator.of(getIt.get().navigatorKey.currentContext!).pop(); + Navigator.of(getIt.get().navigatorKey.currentContext!).pop(); + }, isFullScreen: false, isCloseButtonVisible: true, isAutoDismiss: true); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, onError: (err) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + if (appState.isPayfortHostedPageEnabled) { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPaymentInformation.tr(context: context)); + + transID = Utils.getAdvancePaymentTransID(habibWalletVM.selectedHospital!.iD!, int.parse(habibWalletVM.fileNumber)); + await payfortViewModel.getPayfortConfigurations( + serviceId: ServiceTypeEnum.advancePayment.getIdFromServiceEnum(), projectId: habibWalletVM.selectedHospital!.iD!, integrationId: 1); + + payfortViewModel.initiatePaymentWithCard( + "visa", + "0", + "false", + DateUtil.convertDateToString(DateTime.now()), + "0", + "0", + transactionID: transID, + fileNumber: habibWalletVM.fileNumber.toString(), + amount: habibWalletVM.walletRechargeAmount.toString(), + orderDescription: "Advance Payment", + onSucceeded: (paymentResult) async { + print("Payment Success Data: ${paymentResult.toString()}"); + LoaderBottomSheet.showLoader(); + await habibWalletVM.HISCreateAdvancePayment( + paymentMethodName: selectedPaymentMethod, + paidAmount: habibWalletVM.walletRechargeAmount, + paymentReference: paymentResult.fortId!, + patientID: habibWalletVM.fileNumber, + projectID: habibWalletVM.selectedHospital!.iD!, + depositorName: habibWalletVM.depositorName, + onSuccess: (value) async { + await habibWalletVM.addAdvanceNumberRequest( + advanceNumber: Utils.isVidaPlusProject(habibWalletVM.selectedHospital!.iD) + ? value.data['OnlineCheckInAppointments'][0]['AdvanceNumber_VP'].toString() + : value.data['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), + paymentReference: paymentResult.fortId!, + onSuccess: (value) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight(getIt.get().navigatorKey.currentContext!, + child: Utils.getSuccessWidget(loadingText: "Payment Successful!"), callBackFunc: () { + habibWalletVM.setIsWalletAmountToBeLoaded(true); + habibWalletVM.initHabibWalletProvider(); + habibWalletVM.getPatientBalanceAmount(); + Navigator.of(getIt.get().navigatorKey.currentContext!).pop(); + // Navigator.of(getIt.get().navigatorKey.currentContext!).pop(); + }, isFullScreen: false, isCloseButtonVisible: true, isAutoDismiss: true); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, + onFailed: (err) { + print("Payment Failed Data: ${err.toString()}"); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + ); + } else { + openPaymentURL("visa"); + } + } }), ], ), @@ -169,9 +460,17 @@ class _WalletPaymentConfirmPageState extends State { spacing: 4.h, runSpacing: 4.h, children: [ - AppCustomChipWidget(labelText: "${LocaleKeys.fileno.tr(context: context)}.: ${habibWalletVM.fileNumber}"), - AppCustomChipWidget(labelText: "${LocaleKeys.mobileNumber.tr(context: context)}: ${habibWalletVM.mobileNumber}"), - AppCustomChipWidget(labelText: "${habibWalletVM.selectedHospital!.name}"), + AppCustomChipWidget( + labelText: "${LocaleKeys.fileno.tr(context: context)}.: ${habibWalletVM.fileNumber}", + isEnglishOnly: true, + ), + AppCustomChipWidget( + labelText: "${LocaleKeys.mobileNumber.tr(context: context)}: ${habibWalletVM.mobileNumber}", + isEnglishOnly: true, + ), + AppCustomChipWidget( + labelText: "${habibWalletVM.selectedHospital!.name}", + ), ], ).paddingSymmetrical(24.h, 0.h), SizedBox(height: 16.h), @@ -181,14 +480,14 @@ class _WalletPaymentConfirmPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ LocaleKeys.totalAmountToPay.tr(context: context).toText16(isBold: true), - Utils.getPaymentAmountWithSymbol(habibWalletVM.walletRechargeAmount.toString().toText24(isBold: true), AppColors.blackColor, 15.h, isSaudiCurrency: true), + Utils.getPaymentAmountWithSymbol( + NumberFormat.decimalPattern().format(habibWalletVM.walletRechargeAmount).toString().toText24(isBold: true, isEnglishOnly: true), AppColors.blackColor, 15.h, + isSaudiCurrency: true), ], ).paddingSymmetrical(24.h, 0.h), SizedBox(height: 12.h), Platform.isIOS - ? Utils.buildSvgWithAssets( - icon: AppAssets.apple_pay_button, - width: 200.h, height: 56.h, fit: BoxFit.contain, applyThemeColor: false).paddingSymmetrical(24.h, 0.h).onPress(() { + ? Utils.buildSvgWithAssets(icon: AppAssets.apple_pay_button, width: 200.h, height: 56.h, fit: BoxFit.contain, applyThemeColor: false).paddingSymmetrical(24.h, 0.h).onPress(() { if (Utils.havePrivilege(103)) { startApplePay(); } else { @@ -257,33 +556,95 @@ class _WalletPaymentConfirmPageState extends State { //TODO: Need to pass dynamic params to the Apple Pay instead of static values await payfortViewModel.applePayRequestInsert(applePayInsertRequest: applePayInsertRequest).then((value) { - payfortViewModel.paymentWithApplePay( - customerName: "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}", - // customerEmail: projectViewModel.authenticatedUserObject.user.emailAddress, - customerEmail: "CustID_${appState.getAuthenticatedUser()!.patientId.toString()}@HMG.com", - orderDescription: "Appointment Payment", - orderAmount: double.parse(habibWalletVM.walletRechargeAmount.toString()), - merchantReference: transID, - merchantIdentifier: payfortViewModel.payfortProjectDetailsRespModel!.merchantIdentifier, - applePayAccessCode: payfortViewModel.payfortProjectDetailsRespModel!.accessCode, - applePayShaRequestPhrase: payfortViewModel.payfortProjectDetailsRespModel!.shaRequest, - currency: appState.getAuthenticatedUser()!.outSa! == 0 ? "SAR" : "AED", - onFailed: (failureResult) async { - log("failureResult: ${failureResult.message.toString()}"); + if(appState.isPaytabsEnabled) { + selectedPaymentMethod = "VISA"; + LoaderBottomSheet.hideLoader(); + paytabsViewModel.setPaymentConfiguration("Advance Payment", habibWalletVM.walletRechargeAmount); + paytabsViewModel.startApplePayPayment(onSuccess: (PaytabsTransactionResponseModel transactionData) async { + LoaderBottomSheet.showLoader(); + await habibWalletVM.HISCreateAdvancePayment( + paymentMethodName: selectedPaymentMethod, + paidAmount: habibWalletVM.walletRechargeAmount, + paymentReference: transactionData.transactionReference!, + patientID: habibWalletVM.fileNumber, + projectID: habibWalletVM.selectedHospital!.iD!, + depositorName: habibWalletVM.depositorName, + onSuccess: (value) async { + await habibWalletVM.addAdvanceNumberRequest( + advanceNumber: Utils.isVidaPlusProject(habibWalletVM.selectedHospital!.iD) + ? value.data['OnlineCheckInAppointments'][0]['AdvanceNumber_VP'].toString() + : value.data['OnlineCheckInAppointments'][0]['AdvanceNumber'].toString(), + paymentReference: transactionData.transactionReference!, + onSuccess: (value) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight(getIt.get().navigatorKey.currentContext!, child: Utils.getSuccessWidget(loadingText: "Payment Successful!"), + callBackFunc: () { + habibWalletVM.setIsWalletAmountToBeLoaded(true); + habibWalletVM.initHabibWalletProvider(); + habibWalletVM.getPatientBalanceAmount(); + Navigator.of(getIt.get().navigatorKey.currentContext!).pop(); + Navigator.of(getIt.get().navigatorKey.currentContext!).pop(); + }, isFullScreen: false, isCloseButtonVisible: true, isAutoDismiss: true); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }, onError: (err) { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: failureResult.message.toString()), + child: Utils.getErrorWidget(loadingText: err.toString()), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, ); - }, - onSucceeded: (successResult) async { - log("successResult: ${successResult.responseMessage.toString()}"); - selectedPaymentMethod = successResult.paymentOption ?? "VISA"; - checkPaymentStatus(); - }, - ); + }); + } else { + payfortViewModel.paymentWithApplePay( + customerName: "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}", + // customerEmail: projectViewModel.authenticatedUserObject.user.emailAddress, + customerEmail: "CustID_${appState.getAuthenticatedUser()!.patientId.toString()}@HMG.com", + orderDescription: "Advance Payment", + orderAmount: double.parse(habibWalletVM.walletRechargeAmount.toString()), + merchantReference: transID, + merchantIdentifier: payfortViewModel.payfortProjectDetailsRespModel!.merchantIdentifier, + applePayAccessCode: payfortViewModel.payfortProjectDetailsRespModel!.accessCode, + applePayShaRequestPhrase: payfortViewModel.payfortProjectDetailsRespModel!.shaRequest, + currency: appState.getAuthenticatedUser()!.outSa! == 0 ? "SAR" : "AED", + onFailed: (failureResult) async { + log("failureResult: ${failureResult.message.toString()}"); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: failureResult.message.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + onSucceeded: (successResult) async { + log("successResult: ${successResult.responseMessage.toString()}"); + selectedPaymentMethod = successResult.paymentOption ?? "VISA"; + checkPaymentStatus(); + }, + ); + } }); } @@ -309,18 +670,14 @@ class _WalletPaymentConfirmPageState extends State { paymentReference: payfortViewModel.payfortCheckPaymentStatusResponseModel!.fortId!, onSuccess: (value) { LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getSuccessWidget(loadingText: "Payment Successful!"), - callBackFunc: () { - habibWalletVM.initHabibWalletProvider(); - habibWalletVM.getPatientBalanceAmount(); - Navigator.of(context).pop(); - Navigator.of(context).pop(); - }, - isFullScreen: false, - isCloseButtonVisible: true, - ); + showCommonBottomSheetWithoutHeight(getIt.get().navigatorKey.currentContext!, child: Utils.getSuccessWidget(loadingText: "Payment Successful!"), + callBackFunc: () { + habibWalletVM.setIsWalletAmountToBeLoaded(true); + habibWalletVM.initHabibWalletProvider(); + habibWalletVM.getPatientBalanceAmount(); + Navigator.of(getIt.get().navigatorKey.currentContext!).pop(); + Navigator.of(getIt.get().navigatorKey.currentContext!).pop(); + }, isFullScreen: false, isCloseButtonVisible: true, isAutoDismiss: true); }, onError: (err) { LoaderBottomSheet.hideLoader(); @@ -333,7 +690,16 @@ class _WalletPaymentConfirmPageState extends State { ); }); }, - onError: (err) {}); + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); } else { LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight( @@ -426,4 +792,28 @@ class _WalletPaymentConfirmPageState extends State { "", "3"); } + + Future runSafePayment(Map requestParam, {String sdkToken = ""}) async { + dynamic result; + + try { + // Force a 100ms microtask buffer to isolate the UI rendering channel + await Future.delayed(const Duration(milliseconds: 350)); + + result = await FlutterAmazonpaymentservices.normalPay(requestParam, ApiConsts.payFortEnvironmentType, isShowResponsePage: true); + + print("Payment Success Data: ${result.toString()}"); + } on PlatformException catch (e) { + // If the error is the MethodChannel duplicate reply bug, handle it safely + if (e.message != null && e.message!.contains("Reply already submitted")) { + print("Swallowed native channel race-condition crash safely."); + return; + } + + // Process real payment rejection errors here + print("Actual Payment Failure: ${e.details.toString()}"); + } catch (error) { + print("Generic Error: $error"); + } + } } diff --git a/lib/presentation/habib_wallet/widgets/hospital_list_item.dart b/lib/presentation/habib_wallet/widgets/hospital_list_item.dart index 67e174a3..fe5172e6 100644 --- a/lib/presentation/habib_wallet/widgets/hospital_list_item.dart +++ b/lib/presentation/habib_wallet/widgets/hospital_list_item.dart @@ -1,12 +1,18 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/hospital_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; + +import 'dart:ui' as ui; class HospitalListItemAdvancePayment extends StatelessWidget { final HospitalsModel hospitalModel; @@ -32,7 +38,7 @@ class HospitalListItemAdvancePayment extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, spacing: 8.h, - children: [hospitalName], + children: [hospitalName, distanceInfo], ), ), Transform.flip( @@ -68,4 +74,45 @@ class HospitalListItemAdvancePayment extends StatelessWidget { ) ], ); + + Widget get distanceInfo => Row( + spacing: 4.w, + children: [ + Visibility( + visible: (hospitalModel.distanceInKilometers != 0), + child: Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelText: "${hospitalModel.distanceInKilometers ?? ""} KMs", + deleteIcon: AppAssets.location_red, + deleteIconSize: Size(9, 12), + backgroundColor: AppColors.secondaryLightRedColor, + textColor: AppColors.errorColor, + isEnglishOnly: true, + ), + ), + ), + Visibility( + visible: (hospitalModel.distanceInKilometers == 0), + child: Row( + children: [ + AppCustomChipWidget( + labelText: LocaleKeys.noDistance.tr(), + textColor: AppColors.blackColor, + ), + // SizedBox( + // width: 8.h, + // ) + ], + )), + // Visibility( + // visible: !isLocationEnabled, + // child: AppCustomChipWidget( + // labelText: "Location turned off", + // deleteIcon: AppAssets.location_unavailable, + // deleteIconSize: Size(9.w, 12.h), + // textColor: AppColors.blackColor, + // )), + ], + ); } diff --git a/lib/presentation/habib_wallet/widgets/select-medical_file.dart b/lib/presentation/habib_wallet/widgets/select-medical_file.dart index 6fed6522..0a97988c 100644 --- a/lib/presentation/habib_wallet/widgets/select-medical_file.dart +++ b/lib/presentation/habib_wallet/widgets/select-medical_file.dart @@ -78,9 +78,10 @@ class _MultiPageBottomSheetState extends State { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Enter File Number".toText20(weight: FontWeight.w600), + LocaleKeys.pleaseEnterAFileNumber.tr(context: context).toText20(isBold: true), SizedBox(height: 12.h), TextInputWidget( + fontFamily: "Poppins", labelText: LocaleKeys.fileNumber.tr(), hintText: "xxxxxxxxx", controller: fileNumberEditingController, @@ -139,11 +140,16 @@ class _MultiPageBottomSheetState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.myMedicalFile.tr(context: context).toText16(color: AppColors.textColor, weight: FontWeight.w500), - "${LocaleKeys.fileno.tr(context: context)}: ${appState.getAuthenticatedUser()!.patientId}".toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), + LocaleKeys.myMedicalFile.tr(context: context).toText16(color: AppColors.textColor, isBold: true), + Row( + children: [ + "${LocaleKeys.fileno.tr(context: context)}: ".toText12(color: AppColors.greyTextColor, isBold: true), + appState.getAuthenticatedUser()!.patientId.toString().toText12(color: AppColors.greyTextColor, isBold: true, isEnglishOnly: true), + ], + ), ], ), - Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, iconColor: AppColors.textColor, width: 15.h, height: 15.h), + Transform.flip(flipX: appState.isArabic(), child: Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, iconColor: AppColors.textColor, width: 15.h, height: 15.h)), ], ).paddingAll(16.h), ).onPress(() { @@ -166,11 +172,11 @@ class _MultiPageBottomSheetState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.familyTitle.tr(context: context).toText16(color: AppColors.textColor, weight: FontWeight.w500), - "Select a medical file from your family".toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.familyTitle.tr(context: context).toText16(color: AppColors.textColor, isBold: true), + LocaleKeys.selectMedicalFileFromFamily.tr(context: context).toText14(color: AppColors.greyTextColor, isBold: true), ], ), - Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, iconColor: AppColors.textColor, width: 15.h, height: 15.h), + Transform.flip(flipX: appState.isArabic(), child: Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, iconColor: AppColors.textColor, width: 15.h, height: 15.h)), ], ).paddingAll(16.h), ).onPress(() { @@ -204,11 +210,11 @@ class _MultiPageBottomSheetState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.otherAccount.tr(context: context).toText16(color: AppColors.textColor, weight: FontWeight.w500), - "Any active medical file from HMG".toText14(color: AppColors.greyTextColor, weight: FontWeight.w500), + LocaleKeys.otherAccount.tr(context: context).toText16(color: AppColors.textColor, isBold: true), + LocaleKeys.anyFileFromHMG.tr(context: context).toText14(color: AppColors.greyTextColor, isBold: true), ], ), - Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, iconColor: AppColors.textColor, width: 15.h, height: 15.h), + Transform.flip(flipX: appState.isArabic(), child: Utils.buildSvgWithAssets(icon: AppAssets.forward_chevron_icon, iconColor: AppColors.textColor, width: 15.h, height: 15.h)), ], ).paddingAll(16.h), ).onPress(() { diff --git a/lib/presentation/habib_wallet/widgets/select_hospital_bottom_sheet.dart b/lib/presentation/habib_wallet/widgets/select_hospital_bottom_sheet.dart index da374a04..11a2ac30 100644 --- a/lib/presentation/habib_wallet/widgets/select_hospital_bottom_sheet.dart +++ b/lib/presentation/habib_wallet/widgets/select_hospital_bottom_sheet.dart @@ -1,86 +1,226 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/location_util.dart'; +import 'package:hmg_patient_app_new/core/utils/doctor_response_mapper.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/hospital_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/habib_wallet/widgets/hospital_list_item.dart'; import 'package:hmg_patient_app_new/theme/colors.dart' show AppColors; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; -class SelectHospitalBottomSheet extends StatelessWidget { +class SelectHospitalBottomSheet extends StatefulWidget { + /// Optional callback invoked when the user picks a hospital. + /// When provided, the caller handles the selection instead of the default + /// [HabibWalletViewModel.setSelectedHospital] behaviour. + final void Function(HospitalsModel hospital)? onHospitalSelected; + + const SelectHospitalBottomSheet({super.key, this.onHospitalSelected}); + + @override + State createState() => _SelectHospitalBottomSheetState(); +} + +class _SelectHospitalBottomSheetState extends State { late HabibWalletViewModel habibWalletVM; final TextEditingController searchText = TextEditingController(); + bool sortByLocation = false; + bool isLoading = false; + List displayList = []; + + @override + void initState() { + super.initState(); + final appState = getIt.get(); + sortByLocation = (appState.userLat != 0.0) && (appState.userLong != 0.0); + WidgetsBinding.instance.addPostFrameCallback((_) { + _updateDisplayList(); + }); + } + + void _updateDisplayList() { + final appState = getIt.get(); + final hospitals = List.from(habibWalletVM.advancePaymentHospitals); + + if (sortByLocation && appState.userLat != 0.0 && appState.userLong != 0.0) { + hospitals.sort((a, b) { + final distA = (a.latitude != null && a.longitude != null) + ? DoctorMapper.calculateDistance(appState.userLat, appState.userLong, double.parse(a.latitude!), double.parse(a.longitude!)) + : double.infinity; + final distB = (b.latitude != null && b.longitude != null) + ? DoctorMapper.calculateDistance(appState.userLat, appState.userLong, double.parse(b.latitude!), double.parse(b.longitude!)) + : double.infinity; + return distA.compareTo(distB); + }); + } + + setState(() { + displayList = hospitals; + isLoading = false; + }); + } - SelectHospitalBottomSheet({super.key}); + void _refreshHospitalListAfterApi() { + void listener() { + if (habibWalletVM.advancePaymentHospitals.isNotEmpty) { + habibWalletVM.removeListener(listener); + _updateDisplayList(); + } + } + + habibWalletVM.addListener(listener); + habibWalletVM.getProjectsList(); + } + + void _handleSortByLocationToggle(bool value) { + if (value) { + final locationUtils = getIt.get(); + locationUtils.getLocation( + isShowConfirmDialog: true, + onSuccess: (latLng) { + setState(() { + sortByLocation = true; + isLoading = true; + }); + _refreshHospitalListAfterApi(); + }, + onFailure: () { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.giveLocationPermissionForNearestList.tr(context: context), + isShowActionButtons: true, + onCancelTap: () { + Navigator.of(context).pop(); + }, + onConfirmTap: () async { + Navigator.of(context).pop(); + openAppSettings(); + }), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + setState(() { + sortByLocation = false; + }); + }, + onLocationDeniedForever: () { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.giveLocationPermissionForNearestList.tr(context: context), + isShowActionButtons: true, + onCancelTap: () { + Navigator.of(context).pop(); + }, + onConfirmTap: () async { + Navigator.of(context).pop(); + openAppSettings(); + }), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + setState(() { + sortByLocation = false; + }); + }, + ); + } else { + final appState = getIt.get(); + appState.resetLocation(); + setState(() { + sortByLocation = false; + isLoading = true; + }); + _refreshHospitalListAfterApi(); + } + } @override Widget build(BuildContext context) { habibWalletVM = Provider.of(context, listen: false); + if (displayList.isEmpty && habibWalletVM.advancePaymentHospitals.isNotEmpty) { + displayList = List.from(habibWalletVM.advancePaymentHospitals); + } return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - // Text( - // LocaleKeys.selectHospital.tr(), - // style: TextStyle( - // fontSize: 21, - // fontWeight: FontWeight.w600, - // color: AppColors.blackColor, - // ), - // ), Text( LocaleKeys.selectHospitalForAdvancePayment.tr(context: context), style: TextStyle( fontSize: 16, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: AppColors.greyTextColor, ), ), SizedBox(height: 16.h), - // TextInputWidget( - // labelText: LocaleKeys.search.tr(), - // hintText: "Search Hospital".tr(), - // controller: searchText, - // onChange: (value) { - // // appointmentsViewModel.filterHospitalListByString(value, regionalViewModel.selectedRegionId , regionalViewModel.selectedFacilityType == - // // FacilitySelection.HMG.name); - // }, - // isEnable: true, - // prefix: null, - // autoFocus: false, - // isBorderAllowed: false, - // keyboardType: TextInputType.text, - // isAllowLeadingIcon: true, - // selectionType: SelectionTypeEnum.search, - // padding: EdgeInsets.symmetric( - // vertical: ResponsiveExtension(10).h, - // horizontal: ResponsiveExtension(15).h, - // ), - // ), - // SizedBox(height: 24.h), - // TypeSelectionWidget( - // hmcCount: "0", - // hmgCount: "0", - // ), - // SizedBox(height: 21.h), - SizedBox( - height: MediaQuery.sizeOf(context).height * .4, - child: ListView.separated( - itemBuilder: (_, index) { - return HospitalListItemAdvancePayment( - hospitalModel: habibWalletVM.advancePaymentHospitals[index], - isLocationEnabled: false, - ).onPress(() { - habibWalletVM.setSelectedHospital(habibWalletVM.advancePaymentHospitals[index]); - Navigator.of(context).pop(); - }); - }, - separatorBuilder: (_, __) => SizedBox( - height: 16.h, + Padding( + padding: EdgeInsets.symmetric(horizontal: 4.w), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.location, iconColor: AppColors.greyTextColor, width: 18.h, height: 18.h), + SizedBox(width: 8.w), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.sortByLocation.tr(context: context).toText14(isBold: true), + LocaleKeys.sortByNearestLocation.tr(context: context).toText11(color: AppColors.textColorLight, isBold: true), + ], ), - itemCount: habibWalletVM.advancePaymentHospitals.length), - ) + ], + ), + Switch( + value: sortByLocation, + onChanged: _handleSortByLocationToggle, + activeThumbColor: AppColors.successColor, + activeTrackColor: AppColors.successColor.withValues(alpha: 0.15), + ), + ], + ), + ), + SizedBox(height: 8.h), + isLoading + ? SizedBox( + height: MediaQuery.sizeOf(context).height * .4, + child: Center(child: Utils.getLoadingWidget()), + ) + : SizedBox( + height: MediaQuery.sizeOf(context).height * .4, + child: ListView.separated( + itemBuilder: (_, index) { + return HospitalListItemAdvancePayment( + hospitalModel: displayList[index], + isLocationEnabled: sortByLocation, + ).onPress(() { + if (widget.onHospitalSelected != null) { + widget.onHospitalSelected!(displayList[index]); + } else { + habibWalletVM.setSelectedHospital(displayList[index]); + } + Navigator.of(context).pop(); + }); + }, + separatorBuilder: (_, __) => SizedBox( + height: 16.h, + ), + itemCount: displayList.length), + ) ], ); } diff --git a/lib/presentation/habib_wallet/widgets/wallet_balance_list.dart b/lib/presentation/habib_wallet/widgets/wallet_balance_list.dart new file mode 100644 index 00000000..62817e98 --- /dev/null +++ b/lib/presentation/habib_wallet/widgets/wallet_balance_list.dart @@ -0,0 +1,54 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:provider/provider.dart'; + +class HabibWalletBalanceList extends StatelessWidget { + const HabibWalletBalanceList({super.key}); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: false, + ), + child: Consumer(builder: (context, habibWalletVM, child) { + return ListView.separated( + itemCount: habibWalletVM.habibWalletBalanceList.length, + physics: NeverScrollableScrollPhysics(), + padding: EdgeInsets.only(top: 8, bottom: 8), + shrinkWrap: true, + itemBuilder: (context, index) { + return Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded(child: habibWalletVM.habibWalletBalanceList[index].projectDescription!.toText16(isBold: true, color: AppColors.textColor)), + Utils.getPaymentAmountWithSymbol2(habibWalletVM.habibWalletBalanceList[index].patientAdvanceBalanceAmount!, //did the changes because of negative value + textColor: AppColors.textColor, + iconColor: AppColors.textColor, + iconSize: 18.h, + isExpanded: false, + fontSize: 28.f, + fontWeight: FontWeight.w600, + letterSpacing: -1), + ], + ).paddingSymmetrical(0, 12.h); + }, + separatorBuilder: (BuildContext context, int index) { + return Divider(height: 1, color: AppColors.textColor.withAlpha(20)); + }, + ).paddingSymmetrical(16.h, 24.h).toShimmer2(isShow: habibWalletVM.isWalletAmountLoading); + }), + ), + ], + ); + } +} diff --git a/lib/presentation/habib_wallet/withdraw_request_create_page.dart b/lib/presentation/habib_wallet/withdraw_request_create_page.dart new file mode 100644 index 00000000..cc0c9731 --- /dev/null +++ b/lib/presentation/habib_wallet/withdraw_request_create_page.dart @@ -0,0 +1,445 @@ +import 'dart:io'; + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/habib_wallet/widgets/select_hospital_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/presentation/refund_request/refund_history_screen.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/image_picker.dart'; +import 'package:hmg_patient_app_new/widgets/input_widget.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:provider/provider.dart'; + +class WithdrawRequestCreatePage extends StatefulWidget { + const WithdrawRequestCreatePage({super.key}); + + @override + State createState() => _WithdrawRequestCreatePageState(); +} + +class _WithdrawRequestCreatePageState extends State { + late HabibWalletViewModel _habibWalletViewModel; + late AppState _appState; + + final TextEditingController _bankDetailsController = TextEditingController(); + final TextEditingController _descriptionController = TextEditingController(); + final FocusNode _ibanFocusNode = FocusNode(); + final FocusNode _descriptionFocusNode = FocusNode(); + + @override + void initState() { + super.initState(); + _appState = getIt.get(); + _habibWalletViewModel = context.read(); + WidgetsBinding.instance.addPostFrameCallback((_) { + _habibWalletViewModel.getProjectsList(); + }); + } + + @override + void dispose() { + _habibWalletViewModel.resetWithdrawForm(silent: true); + _bankDetailsController.dispose(); + _descriptionController.dispose(); + _ibanFocusNode.dispose(); + _descriptionFocusNode.dispose(); + super.dispose(); + } + + bool get _isFormValid { + final vm = _habibWalletViewModel; + return vm.selectedHospital != null && + !vm.isAdvancesLoading && + _bankDetailsController.text.trim().isNotEmpty && + _descriptionController.text.trim().isNotEmpty; + } + + // ── Bottom bar ──────────────────────────────────────────────────────────── + + Widget _buildBottomBar() { + return Consumer( + builder: (context, vm, _) { + final isValid = vm.selectedHospital != null && + !vm.isAdvancesLoading && + _bankDetailsController.text.trim().isNotEmpty && + _descriptionController.text.trim().isNotEmpty; + + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: true, + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + CustomButton( + text: LocaleKeys.submitRequest.tr(context: context), + isDisabled: !isValid, + onPressed: () { + final isFormValid = vm.validateWithdrawForm( + iban: _bankDetailsController.text, + description: _descriptionController.text, + ); + if (isFormValid) { + _handleWalletWithdrawalSubmit(vm); + } + }, + ).paddingSymmetrical(24.h, 24.h), + ], + ), + ); + }, + ); + } + + Widget _buildProjectSelectionAndBalance(HabibWalletViewModel habibWalletViewModel) { + final isArabic = _appState.isArabic(); + return Container( + padding: EdgeInsets.all(16.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r), + child: Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Utils.buildSvgWithAssets( + icon: AppAssets.select_hospital_icon, + width: 40.h, + height: 40.h, + applyThemeColor: false, + ), + SizedBox(width: 8.h), + Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + LocaleKeys.hospital.tr(context: context).toText12(color: AppColors.greyTextColor, isBold: true), + (habibWalletViewModel.selectedHospital != null + ? ((isArabic + ? (habibWalletViewModel.selectedHospital!.nameN?.toString() ?? habibWalletViewModel.selectedHospital!.name) + : habibWalletViewModel.selectedHospital!.name) ?? + LocaleKeys.selectHospital.tr(context: context)) + : LocaleKeys.selectHospital.tr(context: context)) + .toText14(color: AppColors.textColor, isBold: true), + ]), + ], + ), + Utils.buildSvgWithAssets( + icon: AppAssets.arrow_down, + width: 25.h, + height: 25.h, + ), + ], + ).onPress(() { + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.selectHospital.tr(context: context), + isDismissible: false, + child: SelectHospitalBottomSheet( + onHospitalSelected: (hospital) { + habibWalletViewModel.setSelectedHospital(hospital); + habibWalletViewModel.fetchAdvancesForHospital(); + }, + ), + callBackFunc: () {}, + ); + }), + // Only show divider + amount once hospital is selected + if (habibWalletViewModel.selectedHospital != null) ...[ + Divider(color: AppColors.bottomNAVBorder, thickness: 1).paddingOnly(top: 16.h), + habibWalletViewModel.isAdvancesLoading + ? Container( + height: 60.h, + // width: 160.w, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(12.r), + ), + ).toShimmer2(isShow: true, radius: 12.r) + : Utils.getPaymentAmountWithSymbol( + habibWalletViewModel.totalAdvancesBalance.toStringAsFixed(2).toText44(isBold: true), + AppColors.blackColor, + 18.w, + isSaudiCurrency: true, + isExpanded: false, + ), + ], + ], + ), + ); + } + + Widget _buildBankInputDetails() { + return Consumer( + builder: (context, viewModel, _) { + final hasError = viewModel.ibanError != null || viewModel.withdrawDescriptionError != null; + return Container( + padding: EdgeInsets.all(16.h), + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(24.r), + border: Border.all( + color: hasError ? AppColors.primaryRedBorderColor : Colors.transparent, + width: 1, + ), + ), + child: Column( + children: [ + TextInputWidget( + labelText: LocaleKeys.addIbanDetails.tr(), + hintText: "SA0000000000000000000000", + controller: _bankDetailsController, + focusNode: _ibanFocusNode, + autoFocus: false, + keyboardType: TextInputType.text, + isEnable: true, + isReadOnly: false, + prefix: null, + isBorderAllowed: false, + isAllowLeadingIcon: true, + fontSize: 14.f, + isCountryDropDown: false, + leadingIcon: AppAssets.bankIcon, + fontFamily: "Poppins", + hasError: false, + errorMessage: viewModel.ibanError, + onChange: (value) { + viewModel.clearIbanError(); + }, + onSubmitted: (value) { + _descriptionFocusNode.requestFocus(); + }, + ), + Divider(color: AppColors.bottomNAVBorder, thickness: 1).withVerticalPadding(16.h), + TextInputWidget( + labelText: LocaleKeys.description.tr(), + hintText: LocaleKeys.enterDescription.tr(), + controller: _descriptionController, + focusNode: _descriptionFocusNode, + autoFocus: false, + keyboardType: TextInputType.text, + // leadingIconNeedsContainer: false, + isEnable: true, + isReadOnly: false, + prefix: null, + isBorderAllowed: false, + isAllowLeadingIcon: true, + fontSize: 14.f, + isCountryDropDown: false, + leadingIcon: AppAssets.descriptionIcon, + fontFamily: "Poppins", + hasError: false, + errorMessage: viewModel.withdrawDescriptionError, + onChange: (value) { + viewModel.clearWithdrawDescriptionError(); + }, + ), + ], + ), + ); + }, + ); + } + + Widget _buildImagePickerDropDown() { + return Container( + padding: EdgeInsets.all(16.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Utils.buildSvgWithAssets( + icon: AppAssets.selectImageIcon, + width: 40.h, + height: 40.h, + applyThemeColor: false, + ), + SizedBox(width: 8.h), + Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + LocaleKeys.uploadImage.tr(context: context).toText12(color: AppColors.greyTextColor, isBold: true), + LocaleKeys.selectImage.tr(context: context).toText14(color: AppColors.textColor, isBold: true), + ]), + ], + ), + Utils.buildSvgWithAssets( + icon: AppAssets.arrow_down, + width: 25.h, + height: 25.h, + ), + ], + ).onPress(() { + ImageOptions.showImageOptionsNew( + context, + false, + title: LocaleKeys.selectOptions.tr(context: context), + (String image, File file) {}, + ); + }), + ); + } + +// ── Submit ──────────────────────────────────────────────────────────────── + + void _handleWalletWithdrawalSubmit(HabibWalletViewModel vm) { + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.notice.tr(context: context), + child: Utils.getWarningWidget( + loadingText: LocaleKeys.confirmSubmitRequest.tr(context: context), + isShowActionButtons: true, + onCancelTap: () { + Navigator.pop(context); + }, + onConfirmTap: () async { + Navigator.pop(context); + LoaderBottomSheet.showLoader(); + final user = _appState.getAuthenticatedUser(); + final hospital = vm.selectedHospital; + await vm.submitWalletWithdrawalRequest( + iban: _bankDetailsController.text.trim(), + remarks: _descriptionController.text.trim(), + patientName: '${user?.firstName ?? ''} ${user?.lastName ?? ''}'.trim(), + patientId: (user?.patientId ?? 0).toString(), + patientMobileNumber: user?.mobileNumber ?? '', + patientNationalId: user?.patientIdentificationNo?.toString() ?? '', + projectId: hospital?.mainProjectID ?? 0, + projectName: hospital?.name ?? '', + onSuccess: (response) { + LoaderBottomSheet.hideLoader(); + _showWithdrawalSuccessBottomSheet(response.refNo ?? ''); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + ); + }, + ); + }, + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + + void _showWithdrawalSuccessBottomSheet(String refNo) { + showCommonBottomSheetWithoutHeight( + context, + child: Padding( + padding: EdgeInsets.all(16.w), + child: Column( + children: [ + Utils.getSuccessWidget(loadingText: LocaleKeys.requestSubmittedSuccessfully.tr(context: context)), + if (refNo.isNotEmpty) ...[ + SizedBox(height: 8.h), + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + LocaleKeys.hereIsYourRequestNumber.tr().toText16( + color: AppColors.textColorLight, + ), + SizedBox(width: 6.w), + refNo.toText18(isBold: true, color: AppColors.textColor, isEnglishOnly: true), + ], + ).paddingSymmetrical(24.w, 0), + ], + SizedBox(height: 24.h), + Row( + children: [ + Expanded( + child: CustomButton( + height: 56.h, + text: LocaleKeys.ok.tr(), + onPressed: () { + Navigator.pop(context); // pop success sheet + Navigator.pop(context); // pop refund page + Navigator.of(context).push( + CustomPageRoute( + page: RefundHistoryScreen( + refundType: 1, // 2 for wallet, 1 for invoice + ), + ), + ); + }, + textColor: AppColors.whiteColor, + ), + ), + ], + ), + ], + ), + ), + isCloseButtonVisible: false, + isDismissible: false, + isFullScreen: false, + isAutoDismiss: false, + ); + } + +// ── Build ───────────────────────────────────────────────────────────────── + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, habibWalletViewModel, _) { + return Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + body: Column( + children: [ + Expanded( + child: CollapsingListView( + title: LocaleKeys.requestRefund.tr(context: context), + requests: () => Navigator.of(context).push( + CustomPageRoute( + page: RefundHistoryScreen( + refundType: 2, // 2 for wallet, 1 for invoice + ), + ), + ), + child: SingleChildScrollView( + padding: EdgeInsets.only(bottom: 32.h, left: 24.w, right: 24.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildProjectSelectionAndBalance(habibWalletViewModel), + if (habibWalletViewModel.selectedHospital != null) ...[ + SizedBox(height: 16.h), + _buildBankInputDetails(), + // SizedBox(height: 16.h), + // _buildImagePickerDropDown(), + ], + ], + ), + ), + ), + ), + _buildBottomBar(), + ], + ), + ); + }, + ); + } +} + +// I/flutter (13750): uri: https://uat.hmgwebservices.com/Services/COCWS.svc/REST/SubmitRefund +// [log] body: {"ProjectID":15,"Refund_RefundType":"2","Refund_Project":"مستشفى الريان","Refund_ProjectId":15,"Refund_PatientId":"4770714","PatientMobileNumber":"0504278212","Refund_PatientName":"FAIZ UR REHMAN REHMAN","Refund_NationalId":"2530976584","Refund_DoctorId":0,"Refund_DoctorName":"","Refund_RefundDestination":"2","Refund_IBAN":"SA0380000000608010167519","Refund_Remarks":"teskchjvs","Refund_TotalRefundAmount":1714.75,"Refund_AdvancesList":[{"AdvanceNo":"2026000444","PaidAmount":362.25,"BalanceAmount":362.25,"AdvanceDate":"/Date(1775682000000+0300)/"},{"AdvanceNo":"2026000392","PaidAmount":362.25,"BalanceAmount":362.25,"AdvanceDate":"/Date(1774645200000+0300)/"},{"AdvanceNo":"2026000066","PaidAmount":362.25,"BalanceAmount":362.25,"AdvanceDate":"/Date(1770152400000+0300)/"},{"AdvanceNo":"2026000047","PaidAmount":30.0,"BalanceAmount":30.0,"AdvanceDate":"/Date(1769547600000+0300)/"},{"AdvanceNo":"2025000751","PaidAmount":362.25,"BalanceAmount":362.25,"AdvanceDate":"/Date(1765746000000+0300)/"},{"AdvanceNo":"2025000414","PaidAmount":115.0,"BalanceAmount":115.0,"AdvanceDate":"/Date(1747083600000+0300)/"},{"AdvanceNo":"2025000210","PaidAmount":120.75,"BalanceAmount":120.75,"AdvanceDate":"/Date(1741726800000+0300)/"}],"PatientType":1,"PatientTypeID":1,"TokenID":"@dm!n","PatientID":4770714,"PatientOutSA":0,"SessionID":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlblR5cGUiOjIsIm9iaiI6eyJUaW1lIjoiMjAyNi0wNS0xOFQwNzo1MzoyMS4wMjQ5MDM2WiIsIlBhdGllbnRJRCI6IjQ3NzIxNjMiLCJQYXRpZW50TWVyZ2VkSURzIjoiNDc3MjE2MyIsIlBhdGllbnRPdXRTQSI6ZmFsc2UsIlNoYXJlZElkcyI6IiJ9LCJleHAiOjE3NzkxMzgwMDB9.VHd_kCya33GfK-DywTHwSU1PMewbQB7UhQD1zXS7X5w","VersionID":"21.2","Channel":"3","IPAdress":"10.20.10.20","generalid":"Cs2020@2016$2958","LanguageID":"1","Latitude":"0.0","Longitude":"0.0","DeviceTypeID":"2","IsNewFlutterApp":true} +// [log] response: {"Date":null,"LanguageID":0,"ServiceName":0,"Time":null,"AndroidLink":null,"AuthenticationTokenID":null,"Data":null,"Dataw":false,"DietType":0,"DietTypeID":0,"ErrorCode":null,"ErrorEndUserMessage":"Internal server error occurred.","ErrorEndUserMessageN":null,"ErrorMessage":null,"ErrorStatusCode":0,"ErrorType":0,"FoodCategory":0,"IOSLink":null,"IsAuthenticated":true,"MealOrderStatus":0,"MealType":0,"MessageStatus":2,"NumberOfResultRecords":0,"PatientBlodType":null,"RequestId":null,"SuccessMsg":null,"SuccessMsgN":null,"VidaUpdatedResponse":null,"ENSAT_GetPatientRequestListResponse":null,"ENSAT_Patient_External_Response":null,"ETQAN_CreateIncident_Response":null,"ETQAN_GetEmployeeOVRRequests_Response":null,"ETQAN_GetIncidentRequest_Response":null,"ETQAN_GetProjects_Response":null,"ITGRequest":null,"Itg_FormAttachmentsList":null,"ListCOCItems":null,"Message":"Refunds API returned status 500. Body: {\"message\":\"Internal server error occurred.\"}","Mohemm_ENSAT_GetItgToken_Response":null,"Mohemm_ITG_DepartmentSectionsList":null,"Mohemm_ITG_Pending_Task_ResponseItem":null,"Mohemm_ITG_ProjectDepartmentsList":null,"Mohemm_ITG_ResponseItem":null,"Mohemm_ITG_SectionTopicsList":null,"Mohemm_ITG_TicketDetailsList":null,"Mohemm_ITG_TicketTransactionsList":null,"Mohemm_ITG_TicketsByEmployeeList":null,"Mohemm_Itg_ProjectsList":null,"Mohemm_Itg_TicketTypesList":null,"ReferenceNumber":null,"Refund_InvoicesList":null,"Refund_PatientIdDisplay":null,"Refund_RefNo":null,"Refund_RefundTypeDisplay":null,"Refund_StatusItem":null,"Refund_TotalInvoices":0,"Refund_VerifyResult":null,"RequestType":null,"TotalCount":0,"statuseCode":500} diff --git a/lib/presentation/health_calculators_and_converts/health_calculator_detailed_page.dart b/lib/presentation/health_calculators_and_converts/health_calculator_detailed_page.dart index 8cccf031..3f86e380 100644 --- a/lib/presentation/health_calculators_and_converts/health_calculator_detailed_page.dart +++ b/lib/presentation/health_calculators_and_converts/health_calculator_detailed_page.dart @@ -1,9 +1,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; -import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/select_clinic_page.dart'; @@ -19,7 +17,6 @@ import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts/widgets/ibw.dart'; import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts/widgets/ovulation.dart'; import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts/widgets/triglycerides.dart'; -import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -27,11 +24,11 @@ import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; class HealthCalculatorDetailedPage extends StatefulWidget { - HealthCalculatorsTypeEnum calculatorType; - int? clinicID; - int? calculationID; + final HealthCalculatorsTypeEnum calculatorType; + final int? clinicID; + final int? calculationID; - HealthCalculatorDetailedPage({super.key, required this.calculatorType, this.clinicID, this.calculationID}); + const HealthCalculatorDetailedPage({super.key, required this.calculatorType, this.clinicID, this.calculationID}); @override State createState() => _HealthCalculatorDetailedPageState(); @@ -52,8 +49,8 @@ class _HealthCalculatorDetailedPageState extends State createState() => _HealthCalculatorsPageState(); @@ -32,73 +33,94 @@ class _HealthCalculatorsPageState extends State { @override Widget build(BuildContext context) { - DialogService dialogService = getIt.get(); return CollapsingListView( + isLeading: Navigator.canPop(context), title: widget.type == HealthCalConEnum.calculator ? LocaleKeys.healthCalculators.tr(context: context) : LocaleKeys.healthConverters.tr(), child: widget.type == HealthCalConEnum.calculator - ? Column( - children: [ - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.r), - child: Row( - children: [ - Utils.buildSvgWithAssets(icon: AppAssets.general_health, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false), - SizedBox(width: 12.w), - Flexible( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - LocaleKeys.generalHealth.tr().toText16(weight: FontWeight.w600), - LocaleKeys.relatedToBMICalories.tr().toText12(fontWeight: FontWeight.w500, color: Color(0xFF8F9AA3)) - ], - ), - ), - SizedBox( - width: 12.w, - ), - Utils.buildSvgWithAssets(icon: AppAssets.arrowRight, width: 24.w, height: 24.h, fit: BoxFit.contain, iconColor: AppColors.textColor), - ], - ).paddingAll(16.w)) - .onPress(() { - dialogService.showFamilyBottomSheetWithoutHWithChild( - label: LocaleKeys.selectCalculator.tr(), - message: "", - child: showCalculatorsItems(type: HealthCalculatorEnum.general), - onOkPressed: () {}, - ); - }), - SizedBox(height: 16.h), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.r), - child: Row( - children: [ - Utils.buildSvgWithAssets(icon: AppAssets.women_health, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false), - SizedBox(width: 12.w), - Flexible( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - LocaleKeys.womensHealth.tr().toText16(weight: FontWeight.w600), - LocaleKeys.relatedToPeriodsOvulation.tr().toText12(fontWeight: FontWeight.w500, color: Color(0xFF8F9AA3)) - ], - ), - ), - SizedBox(width: 12.w), - Utils.buildSvgWithAssets(icon: AppAssets.arrowRight, width: 24.w, height: 24.h, fit: BoxFit.contain, iconColor: AppColors.textColor), - ], - ).paddingAll(16.w)) - .onPress(() { - dialogService.showFamilyBottomSheetWithoutHWithChild( - label: LocaleKeys.selectCalculator.tr(), - message: "", - child: showCalculatorsItems(type: HealthCalculatorEnum.women), - onOkPressed: () {}, - ); - }), + ? CustomExpandableList( + expansionMode: ExpansionMode.exactlyOne, + dividerColor: AppColors.dividerColor, + itemPadding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 14.h), + items: [ + ExpandableListItem( + title: LocaleKeys.womensHealth.tr(context: context).toText18(isBold: true), + expandedBackgroundColor: Colors.transparent, + initiallyExpanded: true, + children: [showCalculatorsItems(type: HealthCalculatorEnum.women)], + ), + ExpandableListItem( + title: LocaleKeys.generalHealth.tr(context: context).toText18(isBold: true), + expandedBackgroundColor: Colors.transparent, + initiallyExpanded: true, + children: [showCalculatorsItems(type: HealthCalculatorEnum.general)], + ), ], - ).paddingSymmetrical(20.w, 24.h) + theme: ExpandableListTheme.custom( + defaultTrailingIcon: + Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, height: 22.h, width: 22.w, iconColor: AppColors.textColor), + ), + ).paddingSymmetrical(16.w, 0.0) + // ? Column( + // children: [ + // Container( + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.r), + // child: Row( + // children: [ + // Utils.buildSvgWithAssets(icon: AppAssets.general_health, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false), + // SizedBox(width: 12.w), + // Flexible( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // mainAxisAlignment: MainAxisAlignment.center, + // children: [LocaleKeys.generalHealth.tr().toText16(isBold: true), LocaleKeys.relatedToBMICalories.tr().toText12(isBold: true, color: Color(0xFF8F9AA3))], + // ), + // ), + // SizedBox( + // width: 12.w, + // ), + // Transform.flip( + // flipX: getIt.get().isArabic(), + // child: Utils.buildSvgWithAssets(icon: AppAssets.arrowRight, width: 24.w, height: 24.h, fit: BoxFit.contain, iconColor: AppColors.textColor)), + // ], + // ).paddingAll(16.w)) + // .onPress(() { + // dialogService.showFamilyBottomSheetWithoutHWithChild( + // label: LocaleKeys.selectCalculator.tr(), + // message: "", + // child: showCalculatorsItems(type: HealthCalculatorEnum.general), + // onOkPressed: () {}, + // ); + // }), + // SizedBox(height: 16.h), + // Container( + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.r), + // child: Row( + // children: [ + // Utils.buildSvgWithAssets(icon: AppAssets.women_health, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false), + // SizedBox(width: 12.w), + // Flexible( + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // mainAxisAlignment: MainAxisAlignment.center, + // children: [LocaleKeys.womensHealth.tr().toText16(isBold: true), LocaleKeys.relatedToPeriodsOvulation.tr().toText12(isBold: true, color: Color(0xFF8F9AA3))], + // ), + // ), + // SizedBox(width: 12.w), + // Transform.flip( + // flipX: getIt.get().isArabic(), + // child: Utils.buildSvgWithAssets(icon: AppAssets.arrowRight, width: 24.w, height: 24.h, fit: BoxFit.contain, iconColor: AppColors.textColor)), + // ], + // ).paddingAll(16.w)) + // .onPress(() { + // dialogService.showFamilyBottomSheetWithoutHWithChild( + // label: LocaleKeys.selectCalculator.tr(), + // message: "", + // child: showCalculatorsItems(type: HealthCalculatorEnum.women), + // onOkPressed: () {}, + // ); + // }), + // ], + // ).paddingSymmetrical(20.w, 24.h) : Column( children: [ Container( @@ -106,16 +128,17 @@ class _HealthCalculatorsPageState extends State { child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.bloodSugar, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false), + Utils.buildSvgWithAssets( + icon: AppAssets.bloodSugar, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false), SizedBox(width: 12.w), Flexible( child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ - LocaleKeys.bloodSugar.tr().toText16(weight: FontWeight.w600), - LocaleKeys.trackYourGlucoseLevels.tr().toText12( - fontWeight: FontWeight.w500, + LocaleKeys.bloodSugar.tr(context: context).toText16(isBold: true), + LocaleKeys.trackYourGlucoseLevels.tr(context: context).toText12( + isBold: true, color: Color(0xFF8F9AA3), ) ], @@ -124,7 +147,11 @@ class _HealthCalculatorsPageState extends State { SizedBox( width: 12.w, ), - Utils.buildSvgWithAssets(icon: AppAssets.arrowRight, width: 24.w, height: 24.h, fit: BoxFit.contain, iconColor: AppColors.textColor), + Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.arrowRight, width: 24.w, height: 24.h, fit: BoxFit.contain, iconColor: AppColors.textColor), + ), ], ).paddingAll(16.w)) .onPress(() { @@ -140,21 +167,25 @@ class _HealthCalculatorsPageState extends State { child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.bloodCholestrol, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false), + Utils.buildSvgWithAssets( + icon: AppAssets.bloodCholestrol, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false), SizedBox(width: 12.w), Flexible( child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ - LocaleKeys.bloodCholesterol.tr().toText16(weight: FontWeight.w600), - LocaleKeys.monitorCholesterolLevels.tr() - .toText12(fontWeight: FontWeight.w500, color: Color(0xFF8F9AA3)) + LocaleKeys.bloodCholesterol.tr(context: context).toText16(isBold: true), + LocaleKeys.monitorCholesterolLevels.tr(context: context).toText12(isBold: true, color: Color(0xFF8F9AA3)) ], ), ), SizedBox(width: 12.w), - Utils.buildSvgWithAssets(icon: AppAssets.arrowRight, width: 24.w, height: 24.h, fit: BoxFit.contain, iconColor: AppColors.textColor), + Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.arrowRight, width: 24.w, height: 24.h, fit: BoxFit.contain, iconColor: AppColors.textColor), + ), ], ).paddingAll(16.w)) .onPress(() { @@ -170,21 +201,25 @@ class _HealthCalculatorsPageState extends State { child: Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.triglycerides, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false), + Utils.buildSvgWithAssets( + icon: AppAssets.triglycerides, height: 40.h, width: 40.w, fit: BoxFit.none, applyThemeColor: false), SizedBox(width: 12.w), Flexible( child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ - LocaleKeys.triglyceridesFatBlood.tr().toText16(weight: FontWeight.w600), - LocaleKeys.understandTriglyceridesImpact.tr() - .toText12(fontWeight: FontWeight.w500, color: Color(0xFF8F9AA3)) + LocaleKeys.triglyceridesFatBlood.tr(context: context).toText16(isBold: true), + LocaleKeys.understandTriglyceridesImpact.tr(context: context).toText12(isBold: true, color: Color(0xFF8F9AA3)) ], ), ), SizedBox(width: 12.w), - Utils.buildSvgWithAssets(icon: AppAssets.arrowRight, width: 24.w, height: 24.h, fit: BoxFit.contain, iconColor: AppColors.textColor), + Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.arrowRight, width: 24.w, height: 24.h, fit: BoxFit.contain, iconColor: AppColors.textColor), + ), ], ).paddingAll(16.w)) .onPress(() { @@ -199,49 +234,105 @@ class _HealthCalculatorsPageState extends State { } Widget showCalculatorsItems({required HealthCalculatorEnum type}) { - return GridView.builder( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 3, // 4 icons per row - crossAxisSpacing: 16.w, - mainAxisSpacing: 16.w, - childAspectRatio: 0.85), - physics: NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemCount: type == HealthCalculatorEnum.general ? generalHealthServices.length : womenHealthServices.length, - padding: EdgeInsets.zero, - itemBuilder: (BuildContext context, int index) { - return HealthCard( - icon: type == HealthCalculatorEnum.general ? generalHealthServices[index].icon : womenHealthServices[index].icon, - labelText: type == HealthCalculatorEnum.general ? generalHealthServices[index].title : womenHealthServices[index].title, - onTap: () { - Navigator.pop(context); - Navigator.of(context).push( - CustomPageRoute( - page: HealthCalculatorDetailedPage( - calculatorType: type == HealthCalculatorEnum.general ? generalHealthServices[index].type : womenHealthServices[index].type, - clinicID: type == HealthCalculatorEnum.general ? generalHealthServices[index].clinicID : womenHealthServices[index].clinicID, - calculationID: type == HealthCalculatorEnum.general ? generalHealthServices[index].calculationID : womenHealthServices[index].calculationID, + return ListView.separated( + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: type == HealthCalculatorEnum.general ? generalHealthServices.length : womenHealthServices.length, + padding: EdgeInsets.zero, + itemBuilder: (BuildContext context, int index) { + return HealthCard( + icon: type == HealthCalculatorEnum.general ? generalHealthServices[index].icon : womenHealthServices[index].icon, + labelText: type == HealthCalculatorEnum.general ? generalHealthServices[index].title : womenHealthServices[index].title, + subtitle: type == HealthCalculatorEnum.general ? generalHealthServices[index].subTitle ?? "" : womenHealthServices[index].subTitle ?? "", + iconColor: type == HealthCalculatorEnum.general ? generalHealthServices[index].iconColor : womenHealthServices[index].iconColor, + iconBgColor: type == HealthCalculatorEnum.general ? generalHealthServices[index].bgColor : womenHealthServices[index].bgColor, + onTap: () { + Navigator.of(context).push( + CustomPageRoute( + page: HealthCalculatorDetailedPage( + calculatorType: type == HealthCalculatorEnum.general ? generalHealthServices[index].type : womenHealthServices[index].type, + clinicID: type == HealthCalculatorEnum.general ? generalHealthServices[index].clinicID : womenHealthServices[index].clinicID, + calculationID: + type == HealthCalculatorEnum.general ? generalHealthServices[index].calculationID : womenHealthServices[index].calculationID, + ), ), - ), - ); - }, - ); - }, - ); + ); + }, + ); + }, + separatorBuilder: (BuildContext context, int index) { + return SizedBox(height: 16.h); + }); } final List generalHealthServices = [ - HealthComponentModel(title: LocaleKeys.bmiCalculator.tr(), icon: AppAssets.bmi, type: HealthCalculatorsTypeEnum.bmi, clinicID: 108, calculationID: null), - HealthComponentModel(title: LocaleKeys.caloriesCalculator.tr(), icon: AppAssets.calories, type: HealthCalculatorsTypeEnum.calories, clinicID: null, calculationID: 2), - HealthComponentModel(title: LocaleKeys.bmrCalculator.tr(), icon: AppAssets.bmr, type: HealthCalculatorsTypeEnum.bmr, clinicID: null, calculationID: 3), - HealthComponentModel(title: LocaleKeys.idealBodyWeight.tr(), icon: AppAssets.ibw, type: HealthCalculatorsTypeEnum.idealBodyWeight, clinicID: null, calculationID: 4), - HealthComponentModel(title: LocaleKeys.bodyFatCalculator.tr(), icon: AppAssets.ibw, type: HealthCalculatorsTypeEnum.bodyFat, clinicID: null, calculationID: 5), - HealthComponentModel(title: LocaleKeys.carbsProteinFat.tr(), icon: AppAssets.ibw, type: HealthCalculatorsTypeEnum.crabsProteinFat, clinicID: null, calculationID: 11), + HealthComponentModel( + title: LocaleKeys.bmiCalculator.tr(), + subTitle: LocaleKeys.bmiCalculatorDesc.tr(), + icon: AppAssets.bmicalc, + type: HealthCalculatorsTypeEnum.bmi, + clinicID: 108, + bgColor: AppColors.bmiCalculatorColor, + calculationID: null), + HealthComponentModel( + title: LocaleKeys.caloriesCalculator.tr(), + subTitle: LocaleKeys.caloriesCalculatorDesc.tr(), + icon: AppAssets.bmicalc, + type: HealthCalculatorsTypeEnum.calories, + clinicID: null, + bgColor: AppColors.caloriesCalculatorColor, + calculationID: 2), + HealthComponentModel( + title: LocaleKeys.bmrCalculator.tr(), + subTitle: LocaleKeys.bmrCalculatorDesc.tr(), + icon: AppAssets.bmrcalc, + type: HealthCalculatorsTypeEnum.bmr, + clinicID: null, + bgColor: AppColors.bmrCalculatorColor, + calculationID: 3), + HealthComponentModel( + title: LocaleKeys.idealBodyWeight.tr(), + subTitle: LocaleKeys.idealBodyWeightDesc.tr(), + icon: AppAssets.idealbodyweightcacl, + type: HealthCalculatorsTypeEnum.idealBodyWeight, + bgColor: AppColors.idealBodyWeightColor, + clinicID: null, + calculationID: 4), + HealthComponentModel( + title: LocaleKeys.bodyFatCalculator.tr(), + subTitle: LocaleKeys.bodyFatCalculatorDesc.tr(), + icon: AppAssets.bodyfatcalc, + type: HealthCalculatorsTypeEnum.bodyFat, + clinicID: null, + bgColor: AppColors.bodyFatCalculatorColor, + calculationID: 5), + HealthComponentModel( + title: LocaleKeys.carbsProteinFat.tr(), + subTitle: LocaleKeys.carbsProteinFatDesc.tr(), + icon: AppAssets.bmicalc, + type: HealthCalculatorsTypeEnum.crabsProteinFat, + clinicID: null, + bgColor: AppColors.carbsProteinFatColor, + calculationID: 11), ]; final List womenHealthServices = [ - HealthComponentModel(title: LocaleKeys.ovulationPeriod.tr(), icon: AppAssets.locate_me, type: HealthCalculatorsTypeEnum.ovulation, clinicID: null, calculationID: 6 ), - HealthComponentModel(title: LocaleKeys.deliveryDueDate.tr(), icon: AppAssets.activeCheck, type: HealthCalculatorsTypeEnum.deliveryDueDate, clinicID: null, calculationID: 6), + HealthComponentModel( + title: LocaleKeys.ovulationPeriod.tr(), + subTitle: LocaleKeys.ovulationPeriodDesc.tr(), + icon: AppAssets.ovluationperiod, + type: HealthCalculatorsTypeEnum.ovulation, + clinicID: null, + calculationID: 6, + bgColor: AppColors.ovulationPeriodColor), + HealthComponentModel( + title: LocaleKeys.deliveryDueDate.tr(), + subTitle: LocaleKeys.deliveryDueDateDesc.tr(), + icon: AppAssets.duedatecalc, + type: HealthCalculatorsTypeEnum.deliveryDueDate, + clinicID: null, + bgColor: AppColors.deliveryDueDateColor, + calculationID: 6), ]; } @@ -256,5 +347,14 @@ class HealthComponentModel { int? clinicID; int? calculationID; - HealthComponentModel({required this.title, this.subTitle, required this.icon, this.iconColor, this.bgColor, this.textColor, required this.type, this.clinicID, this.calculationID}); + HealthComponentModel( + {required this.title, + this.subTitle, + required this.icon, + this.iconColor, + this.bgColor, + this.textColor, + required this.type, + this.clinicID, + this.calculationID}); } diff --git a/lib/presentation/health_calculators_and_converts/widgets/bf.dart b/lib/presentation/health_calculators_and_converts/widgets/bf.dart index 481bfcbf..a2d804b0 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/bf.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/bf.dart @@ -26,7 +26,19 @@ class _BodyFatWidgetState extends State { final TextEditingController _neckController = TextEditingController(); final TextEditingController _waistController = TextEditingController(); final TextEditingController _hipController = TextEditingController(); - final List _heightUnits = ['cm', 'm', 'ft', 'in']; + + final Map _heightUnits = { + 'cm': LocaleKeys.cm, + 'm': LocaleKeys.m, + 'ft': LocaleKeys.ft, + 'in': LocaleKeys.inch, + }; + + final Map _genders = { + 'Male': LocaleKeys.malE, + 'Female': LocaleKeys.femaleGender, + }; + String selectedHeightUnit = 'cm'; String selectedNeckUnit = 'in'; String selectedWaistUnit = 'in'; @@ -82,6 +94,7 @@ class _BodyFatWidgetState extends State { decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), child: Column( children: [ + // === GENDER ROW === Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -94,8 +107,8 @@ class _BodyFatWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - LocaleKeys.selectGender.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedGender.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.selectGender.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_genders[selectedGender] ?? selectedGender).tr().toText12(isBold: true, color: AppColors.textColor), ], ), ], @@ -105,7 +118,6 @@ class _BodyFatWidgetState extends State { SizedBox(width: 4.w), ], ).paddingSymmetrical(0.w, 16.w).onPress(() { - List _genders = ["Male", "Female"]; dialogService.showFamilyBottomSheetWithoutHWithChild( label: LocaleKeys.selectGender.tr(context: context), message: "", @@ -116,7 +128,8 @@ class _BodyFatWidgetState extends State { shrinkWrap: true, itemCount: _genders.length, itemBuilder: (context, index) { - final unit = _genders[index]; + final key = _genders.keys.elementAt(index); + final localeKey = _genders[key]!; return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, @@ -127,7 +140,7 @@ class _BodyFatWidgetState extends State { spacing: 8.h, children: [ Radio( - value: unit, + value: key, groupValue: selectedGender, activeColor: AppColors.errorColor, onChanged: (String? value) { @@ -140,13 +153,13 @@ class _BodyFatWidgetState extends State { }, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - unit.toCamelCase.toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + localeKey.tr().toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(() { setState(() { - selectedGender = unit; - _onInputChanged(); + selectedGender = key; }); + _onInputChanged(); Navigator.pop(context); }), ), @@ -162,6 +175,7 @@ class _BodyFatWidgetState extends State { ); }), Divider(height: 1, color: Color(0xFFEEEEEE)), + // === HEIGHT ROW === Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -173,7 +187,7 @@ class _BodyFatWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Height".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + "Height".toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -208,72 +222,24 @@ class _BodyFatWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Unit".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedHeightUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.unit.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_heightUnits[selectedHeightUnit] ?? selectedHeightUnit).tr().toText12(isBold: true, color: AppColors.textColor), ], ), SizedBox(width: 12.w), Utils.buildSvgWithAssets(icon: AppAssets.arrow_down) ], ).onPress(() { - dialogService.showFamilyBottomSheetWithoutHWithChild( - label: LocaleKeys.unit.tr(context: context), - message: "", - child: Container( - padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), - decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)), - child: ListView.separated( - shrinkWrap: true, - itemCount: _heightUnits.length, - itemBuilder: (context, index) { - final unit = _heightUnits[index]; - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - SizedBox( - height: 70, - child: Row( - spacing: 8.h, - children: [ - Radio( - value: unit, - groupValue: selectedHeightUnit, - activeColor: AppColors.errorColor, - onChanged: (String? value) { - if (value == null) return; - setState(() { - selectedHeightUnit = value; - }); - Navigator.pop(context); - }, - materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - ), - unit.toUpperCase().toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, - ], - ).onPress(() { - setState(() { - selectedHeightUnit = unit; - _onInputChanged(); - }); - Navigator.pop(context); - }), - ), - ], - ); - }, - separatorBuilder: (BuildContext context, int index) { - return Divider(height: 1, color: Color(0xFFEEEEEE)); - }, - ), - ), - onOkPressed: () {}, - ); + _showUnitBottomSheet(context, dialogService, selectedHeightUnit, (value) { + setState(() { selectedHeightUnit = value; }); + _onInputChanged(); + }); }), ), ], ).paddingSymmetrical(0.w, 16.w), Divider(height: 1, color: Color(0xFFEEEEEE)), + // === NECK ROW === Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -285,7 +251,7 @@ class _BodyFatWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Neck".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + "Neck".toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -302,12 +268,7 @@ class _BodyFatWidgetState extends State { hintText: '7', hintStyle: TextStyle(color: Colors.grey), ), - style: const TextStyle( - fontSize: 14, - fontWeight: FontWeight.bold, - color: Colors.black87, - height: 1.0, - ), + style: const TextStyle(fontSize: 14, fontWeight: FontWeight.bold, color: Colors.black87, height: 1.0), ), ) ], @@ -325,72 +286,24 @@ class _BodyFatWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - LocaleKeys.unit.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedNeckUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.unit.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_heightUnits[selectedNeckUnit] ?? selectedNeckUnit).tr().toText12(isBold: true, color: AppColors.textColor), ], ), SizedBox(width: 12.w), Utils.buildSvgWithAssets(icon: AppAssets.arrow_down) ], ).onPress(() { - dialogService.showFamilyBottomSheetWithoutHWithChild( - label: LocaleKeys.unit.tr(context: context), - message: "", - child: Container( - padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), - decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)), - child: ListView.separated( - shrinkWrap: true, - itemCount: _heightUnits.length, - itemBuilder: (context, index) { - final unit = _heightUnits[index]; - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - SizedBox( - height: 70, - child: Row( - spacing: 8.h, - children: [ - Radio( - value: unit, - groupValue: selectedNeckUnit, - activeColor: AppColors.errorColor, - onChanged: (String? value) { - if (value == null) return; - setState(() { - selectedNeckUnit = value; - }); - Navigator.pop(context); - }, - materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - ), - unit.toUpperCase().toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, - ], - ).onPress(() { - setState(() { - selectedNeckUnit = unit; - _onInputChanged(); - }); - Navigator.pop(context); - }), - ), - ], - ); - }, - separatorBuilder: (BuildContext context, int index) { - return Divider(height: 1, color: Color(0xFFEEEEEE)); - }, - ), - ), - onOkPressed: () {}, - ); + _showUnitBottomSheet(context, dialogService, selectedNeckUnit, (value) { + setState(() { selectedNeckUnit = value; }); + _onInputChanged(); + }); }), ), ], ).paddingSymmetrical(0.w, 16.w), Divider(height: 1, color: Color(0xFFEEEEEE)), + // === WAIST ROW === Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -402,7 +315,7 @@ class _BodyFatWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Waist".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + "Waist".toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -419,12 +332,7 @@ class _BodyFatWidgetState extends State { hintText: '30', hintStyle: TextStyle(color: Colors.grey), ), - style: const TextStyle( - fontSize: 14, - fontWeight: FontWeight.bold, - color: Colors.black87, - height: 1.0, - ), + style: const TextStyle(fontSize: 14, fontWeight: FontWeight.bold, color: Colors.black87, height: 1.0), ), ) ], @@ -442,72 +350,24 @@ class _BodyFatWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Unit".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedWaistUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.unit.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_heightUnits[selectedWaistUnit] ?? selectedWaistUnit).tr().toText12(isBold: true, color: AppColors.textColor), ], ), SizedBox(width: 12.w), Utils.buildSvgWithAssets(icon: AppAssets.arrow_down) ], ).onPress(() { - dialogService.showFamilyBottomSheetWithoutHWithChild( - label: LocaleKeys.unit.tr(context: context), - message: "", - child: Container( - padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), - decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)), - child: ListView.separated( - shrinkWrap: true, - itemCount: _heightUnits.length, - itemBuilder: (context, index) { - final unit = _heightUnits[index]; - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - SizedBox( - height: 70, - child: Row( - spacing: 8.h, - children: [ - Radio( - value: unit, - groupValue: selectedWaistUnit, - activeColor: AppColors.errorColor, - onChanged: (String? value) { - if (value == null) return; - setState(() { - selectedWaistUnit = value; - }); - Navigator.pop(context); - }, - materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - ), - unit.toUpperCase().toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, - ], - ).onPress(() { - setState(() { - selectedWaistUnit = unit; - _onInputChanged(); - }); - Navigator.pop(context); - }), - ), - ], - ); - }, - separatorBuilder: (BuildContext context, int index) { - return Divider(height: 1, color: Color(0xFFEEEEEE)); - }, - ), - ), - onOkPressed: () {}, - ); + _showUnitBottomSheet(context, dialogService, selectedWaistUnit, (value) { + setState(() { selectedWaistUnit = value; }); + _onInputChanged(); + }); }), ), ], ).paddingSymmetrical(0.w, 16.w), Divider(height: 1, color: Color(0xFFEEEEEE)), + // === HIP ROW === Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -519,7 +379,7 @@ class _BodyFatWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Hip".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + "Hip".toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -536,12 +396,7 @@ class _BodyFatWidgetState extends State { hintText: '0', hintStyle: TextStyle(color: Colors.grey), ), - style: const TextStyle( - fontSize: 14, - fontWeight: FontWeight.bold, - color: Colors.black87, - height: 1.0, - ), + style: const TextStyle(fontSize: 14, fontWeight: FontWeight.bold, color: Colors.black87, height: 1.0), ), ) ], @@ -559,67 +414,18 @@ class _BodyFatWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - LocaleKeys.unit.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedHipUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.unit.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_heightUnits[selectedHipUnit] ?? selectedHipUnit).tr().toText12(isBold: true, color: AppColors.textColor), ], ), SizedBox(width: 12.w), Utils.buildSvgWithAssets(icon: AppAssets.arrow_down) ], ).onPress(() { - dialogService.showFamilyBottomSheetWithoutHWithChild( - label: LocaleKeys.unit.tr(context: context), - message: "", - child: Container( - padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), - decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)), - child: ListView.separated( - shrinkWrap: true, - itemCount: _heightUnits.length, - itemBuilder: (context, index) { - final unit = _heightUnits[index]; - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - SizedBox( - height: 70, - child: Row( - spacing: 8.h, - children: [ - Radio( - value: unit, - groupValue: selectedHipUnit, - activeColor: AppColors.errorColor, - onChanged: (String? value) { - if (value == null) return; - setState(() { - selectedHipUnit = value; - }); - Navigator.pop(context); - }, - materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - ), - unit.toUpperCase().toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, - ], - ).onPress(() { - setState(() { - selectedHipUnit = unit; - _onInputChanged(); - }); - Navigator.pop(context); - }), - ), - ], - ); - }, - separatorBuilder: (BuildContext context, int index) { - return Divider(height: 1, color: Color(0xFFEEEEEE)); - }, - ), - ), - onOkPressed: () {}, - ); + _showUnitBottomSheet(context, dialogService, selectedHipUnit, (value) { + setState(() { selectedHipUnit = value; }); + _onInputChanged(); + }); }), ), ], @@ -631,7 +437,7 @@ class _BodyFatWidgetState extends State { Utils.buildSvgWithAssets(icon: AppAssets.globe, width: 18.w, height: 18.w), SizedBox(width: 12.w), Expanded( - child: "Estimate the total body fat based on the size.".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + child: LocaleKeys.bodyFatAlert.tr().toText12(isBold: true, color: AppColors.inputLabelTextColor), ), ], ).paddingSymmetrical(0.w, 16.w), @@ -640,4 +446,56 @@ class _BodyFatWidgetState extends State { ); }); } + + void _showUnitBottomSheet(BuildContext context, DialogService dialogService, String currentValue, Function(String) onSelected) { + dialogService.showFamilyBottomSheetWithoutHWithChild( + label: LocaleKeys.unit.tr(context: context), + message: "", + child: Container( + padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), + decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)), + child: ListView.separated( + shrinkWrap: true, + itemCount: _heightUnits.length, + itemBuilder: (context, index) { + final key = _heightUnits.keys.elementAt(index); + final localeKey = _heightUnits[key]!; + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + SizedBox( + height: 70, + child: Row( + spacing: 8.h, + children: [ + Radio( + value: key, + groupValue: currentValue, + activeColor: AppColors.errorColor, + onChanged: (String? value) { + if (value == null) return; + onSelected(value); + Navigator.pop(context); + }, + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + ), + localeKey.tr().toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + ], + ).onPress(() { + onSelected(key); + Navigator.pop(context); + }), + ), + ], + ); + }, + separatorBuilder: (BuildContext context, int index) { + return Divider(height: 1, color: Color(0xFFEEEEEE)); + }, + ), + ), + onOkPressed: () {}, + ); + } } diff --git a/lib/presentation/health_calculators_and_converts/widgets/blood_cholesterol.dart b/lib/presentation/health_calculators_and_converts/widgets/blood_cholesterol.dart index e3bc7ff7..5a835561 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/blood_cholesterol.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/blood_cholesterol.dart @@ -1,12 +1,14 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; -import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts/health_calculator_view_model.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:provider/provider.dart'; class BloodCholesterolWidget extends StatefulWidget { final Function(dynamic result)? onChange; @@ -76,7 +78,7 @@ class _BloodCholesterolWidgetState extends State { child: Column( children: [ _buildInputField( - label: "MG/DL", + label: LocaleKeys.mldl.tr(), hint: "120", controller: _mgdlController, focusNode: _mgdlFocus, @@ -105,7 +107,7 @@ class _BloodCholesterolWidgetState extends State { ], ), _buildInputField( - label: "MMOL/L", + label: LocaleKeys.mmol.tr(), hint: "3.1", controller: _mmolController, focusNode: _mmolFocus, @@ -121,7 +123,7 @@ class _BloodCholesterolWidgetState extends State { Utils.buildSvgWithAssets(icon: AppAssets.globe, width: 18.w, height: 18.w), SizedBox(width: 12.w), Expanded( - child: "Convert blood cholesterol values between mg/dL and mmol/L. ".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + child: LocaleKeys.convertBloodcholesterolInfo.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), ), ], ).paddingSymmetrical(0.w, 16.w), @@ -144,32 +146,29 @@ class _BloodCholesterolWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ label.toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.inputLabelTextColor, ), - SizedBox( - height: 40.h, - child: TextField( - controller: controller, - focusNode: focusNode, - keyboardType: const TextInputType.numberWithOptions(decimal: true), - maxLines: 1, - onChanged: onChanged, - cursorHeight: 35.h, - textAlignVertical: TextAlignVertical.center, - decoration: InputDecoration( - border: InputBorder.none, - contentPadding: EdgeInsets.zero, - isCollapsed: true, - hintText: hint, - hintStyle: const TextStyle(color: Colors.grey), - ), - style: TextStyle( - fontSize: 32.f, - fontWeight: FontWeight.bold, - color: Colors.black87, - height: 1.h, - ), + TextField( + controller: controller, + focusNode: focusNode, + keyboardType: const TextInputType.numberWithOptions(decimal: true), + maxLines: 1, + onChanged: onChanged, + cursorHeight: 35.h, + textAlignVertical: TextAlignVertical.center, + decoration: InputDecoration( + border: InputBorder.none, + contentPadding: EdgeInsets.zero, + isCollapsed: true, + hintText: hint, + hintStyle: const TextStyle(color: Colors.grey), + ), + style: TextStyle( + fontSize: 32.f, + fontWeight: FontWeight.bold, + color: Colors.black87, + height: 1.h, ), ), ], diff --git a/lib/presentation/health_calculators_and_converts/widgets/blood_sugar.dart b/lib/presentation/health_calculators_and_converts/widgets/blood_sugar.dart index cf7cc61b..670236de 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/blood_sugar.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/blood_sugar.dart @@ -1,4 +1,6 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:provider/provider.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; @@ -129,8 +131,8 @@ class _BloodSugarWidgetState extends State { ), SizedBox(width: 12.w), Expanded( - child: "Convert blood glucose values between mg/dL and mmol/L. (1 mmol/L ≈ 18.0182 mg/dL)".toText12( - fontWeight: FontWeight.w500, + child: LocaleKeys.glucoseAlert.tr().toText12( + isBold: true, color: AppColors.inputLabelTextColor, ), ), @@ -155,7 +157,7 @@ class _BloodSugarWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ label.toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.inputLabelTextColor, ), SizedBox( diff --git a/lib/presentation/health_calculators_and_converts/widgets/bmi.dart b/lib/presentation/health_calculators_and_converts/widgets/bmi.dart index a5ea06d1..b982df0b 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/bmi.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/bmi.dart @@ -25,11 +25,29 @@ class BMIWidget extends StatefulWidget { class _BMIWidgetState extends State { final TextEditingController _heightController = TextEditingController(); final TextEditingController _weightController = TextEditingController(); - final List _heightUnits = ['cm', 'm', 'ft', 'in']; - final List _weightUnits = ['kg', 'lb']; + // Map keys are the localization keys (when available) or plain strings. + // Map values are the actual unit values used for calculations. + final Map _heightUnitsMap = { + LocaleKeys.cm: 'cm', + LocaleKeys.m: 'm', // no LocaleKeys entry found for meter, fallback to key 'm' + LocaleKeys.ft: 'ft', + LocaleKeys.inch: 'in', // no LocaleKeys entry for inches, fallback + }; + + final Map _weightUnitsMap = { + LocaleKeys.kg: 'kg', + LocaleKeys.lb: 'lb', + }; String selectedHeightUnit = 'cm'; String selectedWeightUnit = 'kg'; + // Helper to return a localized label for a given selected (value) unit. + String _getUnitLabel(Map map, String value) { + final entry = map.entries.firstWhere((e) => e.value == value, orElse: () => MapEntry(value, value)); + // tr() will return the localized string if available, otherwise it will return the key itself. + return entry.key.tr(context: context); + } + @override void initState() { super.initState(); @@ -75,7 +93,7 @@ class _BMIWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Height".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.height.tr().toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -110,8 +128,9 @@ class _BMIWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Unit".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedHeightUnit.toUpperCase().toText12(fontWeight: FontWeight.w600, color: AppColors.textColor), + LocaleKeys.unit.tr().toText12(isBold: true, color: AppColors.inputLabelTextColor), + // Show localized label for the currently selected height unit + _getUnitLabel(_heightUnitsMap, selectedHeightUnit).toText12(isBold: true, color: AppColors.textColor), ], ), SizedBox(width: 12.w), @@ -126,9 +145,11 @@ class _BMIWidgetState extends State { decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)), child: ListView.separated( shrinkWrap: true, - itemCount: _heightUnits.length, + itemCount: _heightUnitsMap.length, itemBuilder: (context, index) { - final unit = _heightUnits[index]; + final entry = _heightUnitsMap.entries.elementAt(index); + final key = entry.key; + final value = entry.value; return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, @@ -139,7 +160,7 @@ class _BMIWidgetState extends State { spacing: 8.h, children: [ Radio( - value: unit, + value: value, groupValue: selectedHeightUnit, activeColor: AppColors.errorColor, onChanged: (String? value) { @@ -152,11 +173,12 @@ class _BMIWidgetState extends State { }, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - unit.toUpperCase().toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + // show localized label (if available) otherwise show the key itself + key.tr(context: context).toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(() { setState(() { - selectedHeightUnit = unit; + selectedHeightUnit = value; }); Navigator.pop(context); }), @@ -187,7 +209,7 @@ class _BMIWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Weight".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.weight.tr().toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -227,8 +249,9 @@ class _BMIWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Unit".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedWeightUnit.toUpperCase().toText12(fontWeight: FontWeight.w600, color: AppColors.textColor), + LocaleKeys.unit.tr().toText12(isBold: true, color: AppColors.inputLabelTextColor), + // Show localized label for the currently selected weight unit + _getUnitLabel(_weightUnitsMap, selectedWeightUnit).toText12(isBold: true, color: AppColors.textColor), ], ), SizedBox(width: 12.w), @@ -243,9 +266,11 @@ class _BMIWidgetState extends State { decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)), child: ListView.separated( shrinkWrap: true, - itemCount: _weightUnits.length, + itemCount: _weightUnitsMap.length, itemBuilder: (context, index) { - final unit = _weightUnits[index]; + final entry = _weightUnitsMap.entries.elementAt(index); + final key = entry.key; + final value = entry.value; return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, @@ -256,7 +281,7 @@ class _BMIWidgetState extends State { spacing: 8.h, children: [ Radio( - value: unit, + value: value, groupValue: selectedWeightUnit, activeColor: AppColors.errorColor, onChanged: (String? value) { @@ -268,11 +293,11 @@ class _BMIWidgetState extends State { }, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - unit.toUpperCase().toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + key.tr(context: context).toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(() { setState(() { - selectedWeightUnit = unit; + selectedWeightUnit = value; _onInputChanged(); }); Navigator.pop(context); @@ -300,7 +325,7 @@ class _BMIWidgetState extends State { SizedBox(width: 12.w), Expanded( child: "Calculate the BMI value and weight status to identify the healthy weight. NOt appropriate for children and women who are pregnant or breastfeeding." - .toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + .toText12(isBold: true, color: AppColors.inputLabelTextColor), ), ], ).paddingSymmetrical(0.w, 16.w), diff --git a/lib/presentation/health_calculators_and_converts/widgets/bmr.dart b/lib/presentation/health_calculators_and_converts/widgets/bmr.dart index d1cb2c3a..2b013549 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/bmr.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/bmr.dart @@ -26,8 +26,31 @@ class _BMRWidgetState extends State { final TextEditingController _heightController = TextEditingController(); final TextEditingController _weightController = TextEditingController(); final TextEditingController _ageController = TextEditingController(); - final List _heightUnits = ['cm', 'm', 'ft', 'in']; - final List _weightUnits = ['kg', 'lb']; + + final Map _heightUnits = { + 'cm': LocaleKeys.cm, + 'm': LocaleKeys.m, + 'ft': LocaleKeys.ft, + 'in': LocaleKeys.inch, + }; + + final Map _weightUnits = { + 'kg': LocaleKeys.kg, + 'lb': LocaleKeys.lb, + }; + + final Map _genders = { + 'Male': LocaleKeys.malE, + 'Female': LocaleKeys.femaleGender, + }; + + final Map _activityLevels = { + 'Almost Inactive (no exercise)': LocaleKeys.almostInactive, + 'Lightly active': LocaleKeys.lightlyActive, + 'Lightly active (1-3) days per week': LocaleKeys.lightlyActive13Days, + 'Super active (very hard exercise)': LocaleKeys.superActive, + }; + String selectedHeightUnit = 'cm'; String selectedWeightUnit = 'kg'; String selectedActivityLevel = 'Lightly active'; @@ -89,8 +112,8 @@ class _BMRWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - LocaleKeys.selectGender.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedGender.toCamelCase.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.selectGender.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_genders[selectedGender] ?? selectedGender).tr().toText12(isBold: true, color: AppColors.textColor), ], ), ], @@ -100,8 +123,6 @@ class _BMRWidgetState extends State { SizedBox(width: 4.w), ], ).paddingSymmetrical(0.w, 16.w).onPress(() { - List _genders = ["Male", "Female"]; - dialogService.showFamilyBottomSheetWithoutHWithChild( label: LocaleKeys.selectGender.tr(context: context), message: "", @@ -112,7 +133,8 @@ class _BMRWidgetState extends State { shrinkWrap: true, itemCount: _genders.length, itemBuilder: (context, index) { - final unit = _genders[index]; + final key = _genders.keys.elementAt(index); + final localeKey = _genders[key]!; return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, @@ -123,12 +145,11 @@ class _BMRWidgetState extends State { spacing: 8.h, children: [ Radio( - value: unit, + value: key, groupValue: selectedGender, activeColor: AppColors.errorColor, onChanged: (String? value) { if (value == null) return; - print(value); setState(() { selectedGender = value; }); @@ -137,11 +158,11 @@ class _BMRWidgetState extends State { }, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - unit.toCamelCase.toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + localeKey.tr().toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(() { setState(() { - selectedGender = unit; + selectedGender = key; }); _onInputChanged(); Navigator.pop(context); @@ -170,7 +191,7 @@ class _BMRWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Age (11-120) yrs".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + "Age (11-120) yrs".toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -207,7 +228,7 @@ class _BMRWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Height".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + "Height".toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -242,8 +263,8 @@ class _BMRWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - LocaleKeys.unit.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedHeightUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.unit.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_heightUnits[selectedHeightUnit] ?? selectedHeightUnit).tr().toText12(isBold: true, color: AppColors.textColor), ], ), SizedBox(width: 12.w), @@ -260,7 +281,8 @@ class _BMRWidgetState extends State { shrinkWrap: true, itemCount: _heightUnits.length, itemBuilder: (context, index) { - final unit = _heightUnits[index]; + final key = _heightUnits.keys.elementAt(index); + final localeKey = _heightUnits[key]!; return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, @@ -271,7 +293,7 @@ class _BMRWidgetState extends State { spacing: 8.h, children: [ Radio( - value: unit, + value: key, groupValue: selectedHeightUnit, activeColor: AppColors.errorColor, onChanged: (String? value) { @@ -284,13 +306,13 @@ class _BMRWidgetState extends State { }, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - unit.toUpperCase().toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + localeKey.tr().toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(() { setState(() { - selectedHeightUnit = unit; - _onInputChanged(); + selectedHeightUnit = key; }); + _onInputChanged(); Navigator.pop(context); }), ), @@ -320,7 +342,7 @@ class _BMRWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Weight".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + "Weight".toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -360,8 +382,8 @@ class _BMRWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Unit".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedWeightUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + "Unit".toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_weightUnits[selectedWeightUnit] ?? selectedWeightUnit).tr().toText12(isBold: true, color: AppColors.textColor), ], ), SizedBox(width: 12.w), @@ -378,7 +400,8 @@ class _BMRWidgetState extends State { shrinkWrap: true, itemCount: _weightUnits.length, itemBuilder: (context, index) { - final unit = _weightUnits[index]; + final key = _weightUnits.keys.elementAt(index); + final localeKey = _weightUnits[key]!; return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, @@ -389,7 +412,7 @@ class _BMRWidgetState extends State { spacing: 8.h, children: [ Radio( - value: unit, + value: key, groupValue: selectedWeightUnit, activeColor: AppColors.errorColor, onChanged: (String? value) { @@ -402,13 +425,13 @@ class _BMRWidgetState extends State { }, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - unit.toUpperCase().toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + localeKey.tr().toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(() { setState(() { - selectedWeightUnit = unit; - _onInputChanged(); + selectedWeightUnit = key; }); + _onInputChanged(); Navigator.pop(context); }), ), @@ -439,8 +462,8 @@ class _BMRWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - LocaleKeys.activityLevel.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedActivityLevel.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.activityLevel.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_activityLevels[selectedActivityLevel] ?? selectedActivityLevel).tr().toText12(isBold: true, color: AppColors.textColor), ], ), ], @@ -450,7 +473,6 @@ class _BMRWidgetState extends State { SizedBox(width: 4.w), ], ).paddingSymmetrical(0.w, 16.w).onPress(() { - List _activity = ["Almost Inactive (no exercise)", "Lightly active", "Lightly active (1-3) days per week", "Super active (very hard exercise)"]; dialogService.showFamilyBottomSheetWithoutHWithChild( label: LocaleKeys.selectActivityLevel.tr(context: context), message: "", @@ -459,9 +481,10 @@ class _BMRWidgetState extends State { decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)), child: ListView.separated( shrinkWrap: true, - itemCount: _activity.length, + itemCount: _activityLevels.length, itemBuilder: (context, index) { - final unit = _activity[index]; + final key = _activityLevels.keys.elementAt(index); + final localeKey = _activityLevels[key]!; return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, @@ -472,7 +495,7 @@ class _BMRWidgetState extends State { spacing: 8.h, children: [ Radio( - value: unit, + value: key, groupValue: selectedActivityLevel, activeColor: AppColors.errorColor, onChanged: (String? value) { @@ -485,13 +508,13 @@ class _BMRWidgetState extends State { }, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - unit.toCamelCase.toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + localeKey.tr().toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(() { setState(() { - selectedActivityLevel = unit; - _onInputChanged(); + selectedActivityLevel = key; }); + _onInputChanged(); Navigator.pop(context); }), ), @@ -513,8 +536,8 @@ class _BMRWidgetState extends State { Utils.buildSvgWithAssets(icon: AppAssets.globe, width: 18.w, height: 18.w), SizedBox(width: 12.w), Expanded( - child: "Calculates daily calorie intake based on server factors, like height, weight, age, gender and daily physical activity." - .toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + child: LocaleKeys.calculateCaloriesBasedOnFactors.tr() + .toText12(isBold: true, color: AppColors.inputLabelTextColor), ), ], ).paddingSymmetrical(0.w, 16.w), diff --git a/lib/presentation/health_calculators_and_converts/widgets/calories.dart b/lib/presentation/health_calculators_and_converts/widgets/calories.dart index 1609c056..ad31cd6c 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/calories.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/calories.dart @@ -26,8 +26,31 @@ class _CaloriesWidgetState extends State { final TextEditingController _heightController = TextEditingController(); final TextEditingController _weightController = TextEditingController(); final TextEditingController _ageController = TextEditingController(); - final List _heightUnits = ['cm', 'm', 'ft', 'in']; - final List _weightUnits = ['kg', 'lb']; + + final Map _heightUnits = { + 'cm': LocaleKeys.cm, + 'm': LocaleKeys.m, + 'ft': LocaleKeys.ft, + 'in': LocaleKeys.inch, + }; + + final Map _weightUnits = { + 'kg': LocaleKeys.kg, + 'lb': LocaleKeys.lb, + }; + + final Map _genders = { + 'Male': LocaleKeys.malE, + 'Female': LocaleKeys.femaleGender, + }; + + final Map _activityLevels = { + 'Almost Inactive (no exercise)': LocaleKeys.almostInactive, + 'Lightly active': LocaleKeys.lightlyActive, + 'Lightly active (1-3) days per week': LocaleKeys.lightlyActive13Days, + 'Super active (very hard exercise)': LocaleKeys.superActive, + }; + String selectedHeightUnit = 'cm'; String selectedWeightUnit = 'kg'; String selectedActivityLevel = 'Lightly active'; @@ -69,7 +92,6 @@ class _CaloriesWidgetState extends State { @override Widget build(BuildContext context) { DialogService dialogService = getIt(); - AppState appState = getIt(); return Consumer(builder: (context, provider, _) { return Container( @@ -78,6 +100,7 @@ class _CaloriesWidgetState extends State { decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), child: Column( children: [ + // === GENDER ROW === Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -90,8 +113,8 @@ class _CaloriesWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Select Gender".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedGender.toCamelCase.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.selectGender.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_genders[selectedGender] ?? selectedGender).tr().toText12(isBold: true, color: AppColors.textColor), ], ), ], @@ -101,8 +124,6 @@ class _CaloriesWidgetState extends State { SizedBox(width: 4.w), ], ).paddingSymmetrical(0.w, 16.w).onPress(() { - List _genders = ["Male", "Female"]; - dialogService.showFamilyBottomSheetWithoutHWithChild( label: LocaleKeys.selectGender.tr(context: context), message: "", @@ -113,7 +134,8 @@ class _CaloriesWidgetState extends State { shrinkWrap: true, itemCount: _genders.length, itemBuilder: (context, index) { - final unit = _genders[index]; + final key = _genders.keys.elementAt(index); + final localeKey = _genders[key]!; return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, @@ -124,7 +146,7 @@ class _CaloriesWidgetState extends State { spacing: 8.h, children: [ Radio( - value: unit, + value: key, groupValue: selectedGender, activeColor: AppColors.errorColor, onChanged: (String? value) { @@ -137,13 +159,13 @@ class _CaloriesWidgetState extends State { }, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - unit.toCamelCase.toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + localeKey.tr().toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(() { setState(() { - selectedGender = unit; - _onInputChanged(); + selectedGender = key; }); + _onInputChanged(); Navigator.pop(context); }), ), @@ -159,6 +181,7 @@ class _CaloriesWidgetState extends State { ); }), Divider(height: 1, color: Color(0xFFEEEEEE)), + // === AGE ROW (unchanged) === Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -170,7 +193,7 @@ class _CaloriesWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Age (11-120) yrs".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + "Age (11-120) yrs".toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -196,6 +219,7 @@ class _CaloriesWidgetState extends State { ], ).paddingSymmetrical(0.w, 16.w), Divider(height: 1, color: Color(0xFFEEEEEE)), + // === HEIGHT ROW === Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -207,7 +231,7 @@ class _CaloriesWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Height".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + "Height".toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -242,72 +266,24 @@ class _CaloriesWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Unit".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedHeightUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.unit.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_heightUnits[selectedHeightUnit] ?? selectedHeightUnit).tr().toText12(isBold: true, color: AppColors.textColor), ], ), SizedBox(width: 12.w), Utils.buildSvgWithAssets(icon: AppAssets.arrow_down) ], ).onPress(() { - dialogService.showFamilyBottomSheetWithoutHWithChild( - label: LocaleKeys.unit.tr(context: context), - message: "", - child: Container( - padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), - decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)), - child: ListView.separated( - shrinkWrap: true, - itemCount: _heightUnits.length, - itemBuilder: (context, index) { - final unit = _heightUnits[index]; - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - SizedBox( - height: 70, - child: Row( - spacing: 8.h, - children: [ - Radio( - value: unit, - groupValue: selectedHeightUnit, - activeColor: AppColors.errorColor, - onChanged: (String? value) { - if (value == null) return; - setState(() { - selectedHeightUnit = value; - }); - Navigator.pop(context); - }, - materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - ), - unit.toUpperCase().toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, - ], - ).onPress(() { - setState(() { - selectedHeightUnit = unit; - _onInputChanged(); - }); - Navigator.pop(context); - }), - ), - ], - ); - }, - separatorBuilder: (BuildContext context, int index) { - return Divider(height: 1, color: Color(0xFFEEEEEE)); - }, - ), - ), - onOkPressed: () {}, - ); + _showUnitBottomSheet(context, dialogService, _heightUnits, selectedHeightUnit, (value) { + setState(() { selectedHeightUnit = value; }); + _onInputChanged(); + }); }), ), ], ).paddingSymmetrical(0.w, 16.w), Divider(height: 1, color: Color(0xFFEEEEEE)), + // === WEIGHT ROW === Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -319,7 +295,7 @@ class _CaloriesWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Weight".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + "Weight".toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -359,73 +335,24 @@ class _CaloriesWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Unit".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedWeightUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.unit.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_weightUnits[selectedWeightUnit] ?? selectedWeightUnit).tr().toText12(isBold: true, color: AppColors.textColor), ], ), SizedBox(width: 12.w), Utils.buildSvgWithAssets(icon: AppAssets.arrow_down) ], ).onPress(() { - dialogService.showFamilyBottomSheetWithoutHWithChild( - label: LocaleKeys.unit.tr(context: context), - message: "", - child: Container( - padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), - decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)), - child: ListView.separated( - shrinkWrap: true, - itemCount: _weightUnits.length, - itemBuilder: (context, index) { - final unit = _weightUnits[index]; - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.start, - children: [ - SizedBox( - height: 70, - child: Row( - spacing: 8.h, - children: [ - Radio( - value: unit, - groupValue: selectedWeightUnit, - activeColor: AppColors.errorColor, - onChanged: (String? value) { - if (value == null) return; - setState(() { - selectedWeightUnit = value; - }); - _onInputChanged(); - Navigator.pop(context); - }, - materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - ), - unit.toUpperCase().toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, - ], - ).onPress(() { - setState(() { - selectedWeightUnit = unit; - _onInputChanged(); - }); - Navigator.pop(context); - }), - ), - ], - ); - }, - separatorBuilder: (BuildContext context, int index) { - return Divider(height: 1, color: Color(0xFFEEEEEE)); - }, - ), - ), - onOkPressed: () {}, - ); + _showUnitBottomSheet(context, dialogService, _weightUnits, selectedWeightUnit, (value) { + setState(() { selectedWeightUnit = value; }); + _onInputChanged(); + }); }), ), ], ).paddingSymmetrical(0.w, 16.w), Divider(height: 1, color: Color(0xFFEEEEEE)), + // === ACTIVITY LEVEL ROW === Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ @@ -438,8 +365,8 @@ class _CaloriesWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - LocaleKeys.activityLevel.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedActivityLevel.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.activityLevel.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_activityLevels[selectedActivityLevel] ?? selectedActivityLevel).tr().toText12(isBold: true, color: AppColors.textColor), ], ), ], @@ -449,7 +376,6 @@ class _CaloriesWidgetState extends State { SizedBox(width: 4.w), ], ).paddingSymmetrical(0.w, 16.w).onPress(() { - List _activity = ["Almost Inactive (no exercise)", "Lightly active", "Lightly active (1-3) days per week", "Super active (very hard exercise)"]; dialogService.showFamilyBottomSheetWithoutHWithChild( label: LocaleKeys.selectActivityLevel.tr(context: context), message: "", @@ -458,9 +384,10 @@ class _CaloriesWidgetState extends State { decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)), child: ListView.separated( shrinkWrap: true, - itemCount: _activity.length, + itemCount: _activityLevels.length, itemBuilder: (context, index) { - final unit = _activity[index]; + final key = _activityLevels.keys.elementAt(index); + final localeKey = _activityLevels[key]!; return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, @@ -471,7 +398,7 @@ class _CaloriesWidgetState extends State { spacing: 8.h, children: [ Radio( - value: unit, + value: key, groupValue: selectedActivityLevel, activeColor: AppColors.errorColor, onChanged: (String? value) { @@ -484,13 +411,13 @@ class _CaloriesWidgetState extends State { }, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - unit.toCamelCase.toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + localeKey.tr().toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(() { setState(() { - selectedActivityLevel = unit; - _onInputChanged(); + selectedActivityLevel = key; }); + _onInputChanged(); Navigator.pop(context); }), ), @@ -512,8 +439,8 @@ class _CaloriesWidgetState extends State { Utils.buildSvgWithAssets(icon: AppAssets.globe, width: 18.w, height: 18.w), SizedBox(width: 12.w), Expanded( - child: "Calculates daily calorie intake based on server factors, like height, weight, age, gender and daily physical activity." - .toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + child: LocaleKeys.calculateCaloriesBasedOnFactors.tr() + .toText12(isBold: true, color: AppColors.inputLabelTextColor), ), ], ).paddingSymmetrical(0.w, 16.w), @@ -522,4 +449,56 @@ class _CaloriesWidgetState extends State { ); }); } + + void _showUnitBottomSheet(BuildContext context, DialogService dialogService, Map units, String currentValue, Function(String) onSelected) { + dialogService.showFamilyBottomSheetWithoutHWithChild( + label: LocaleKeys.unit.tr(context: context), + message: "", + child: Container( + padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), + decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)), + child: ListView.separated( + shrinkWrap: true, + itemCount: units.length, + itemBuilder: (context, index) { + final key = units.keys.elementAt(index); + final localeKey = units[key]!; + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.start, + children: [ + SizedBox( + height: 70, + child: Row( + spacing: 8.h, + children: [ + Radio( + value: key, + groupValue: currentValue, + activeColor: AppColors.errorColor, + onChanged: (String? value) { + if (value == null) return; + onSelected(value); + Navigator.pop(context); + }, + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + ), + localeKey.tr().toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + ], + ).onPress(() { + onSelected(key); + Navigator.pop(context); + }), + ), + ], + ); + }, + separatorBuilder: (BuildContext context, int index) { + return Divider(height: 1, color: Color(0xFFEEEEEE)); + }, + ), + ), + onOkPressed: () {}, + ); + } } diff --git a/lib/presentation/health_calculators_and_converts/widgets/crabs.dart b/lib/presentation/health_calculators_and_converts/widgets/crabs.dart index c241e688..8a2f6343 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/crabs.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/crabs.dart @@ -70,7 +70,7 @@ class _CrabsWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - LocaleKeys.caloriesPerDay.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.caloriesPerDay.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -113,8 +113,8 @@ class _CrabsWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - LocaleKeys.dietType.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedDietType.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.dietType.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + selectedDietType.toText12(isBold: true, color: AppColors.textColor), ], ), ], @@ -159,7 +159,7 @@ class _CrabsWidgetState extends State { }, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - unit.toCamelCase.toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + unit.toCamelCase.toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(() { setState(() { @@ -187,8 +187,8 @@ class _CrabsWidgetState extends State { Utils.buildSvgWithAssets(icon: AppAssets.globe, width: 18.w, height: 18.w), SizedBox(width: 12.w), Expanded( - child: "Calculate carbohydrate based protein and fat ration in calories and grams according to a pre set ratio." - .toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + child: LocaleKeys.carbsAlert.tr() + .toText12(isBold: true, color: AppColors.inputLabelTextColor), ), ], ).paddingSymmetrical(0.w, 16.w), diff --git a/lib/presentation/health_calculators_and_converts/widgets/health_card.dart b/lib/presentation/health_calculators_and_converts/widgets/health_card.dart index d54d0378..776e8cdf 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/health_card.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/health_card.dart @@ -1,4 +1,7 @@ import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -9,41 +12,54 @@ class HealthCard extends StatelessWidget { const HealthCard({ super.key, required this.icon, + this.iconColor, + this.iconBgColor, required this.labelText, + required this.subtitle, this.onTap, }); final String icon; + final Color? iconColor; + final Color? iconBgColor; final String labelText; + final String subtitle; final VoidCallback? onTap; @override Widget build(BuildContext context) { + AppState appState = getIt.get(); return Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.r, - hasShadow: false, - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.r, hasShadow: false), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, children: [ - Utils.buildSvgWithAssets( - icon: icon, - width: 40.w, - height: 40.h, - fit: BoxFit.cover, - ).toShimmer2(isShow: false, radius: 12.r), - SizedBox(height: 14.h), - Row( - mainAxisAlignment: MainAxisAlignment.start, - children: [ - Flexible( - child: labelText.toText12( - fontWeight: FontWeight.w600, - maxLine: 2, - )), - ], + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: iconBgColor ?? Colors.transparent, borderRadius: 10.r), + height: 40.w, + width: 40.w, + child: Utils.buildSvgWithAssets(icon: icon, fit: BoxFit.none, height: 22.w, width: 22.w, iconColor: iconColor, )), + SizedBox(width: 12.h), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.start, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + labelText.toText16(weight: FontWeight.w600,), + ], + ), + SizedBox(height: 4.h), + subtitle.toText12(maxLine: 2, color: AppColors.greyTextColor), + ], + ), + ), + SizedBox(width: 2.h), + Transform.flip( + flipX: appState.getLanguageCode() == "ar", + child: Utils.buildSvgWithAssets(icon: AppAssets.arrowRight, width: 24.w, height: 24.h, fit: BoxFit.cover, iconColor: AppColors.textColor), ), ], ).paddingAll(16.w).onPress(() { diff --git a/lib/presentation/health_calculators_and_converts/widgets/ibw.dart b/lib/presentation/health_calculators_and_converts/widgets/ibw.dart index a783d2c8..f9d7e964 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/ibw.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/ibw.dart @@ -24,12 +24,24 @@ class IdealBodyWeightWidget extends StatefulWidget { class _IdealBodyWeightWidgetState extends State { final TextEditingController _heightController = TextEditingController(); final TextEditingController _weightController = TextEditingController(); - final List _heightUnits = ['cm', 'm', 'ft', 'in']; - final List _weightUnits = ['kg', 'lb']; + final Map _heightUnits = { + 'cm': LocaleKeys.cm, + 'm': LocaleKeys.m, + 'ft': LocaleKeys.ft, + 'in': LocaleKeys.inch, + }; + final Map _weightUnits = { + 'kg': LocaleKeys.kg, + 'lb': LocaleKeys.lb, + }; + final Map _bodyFrameSizes = { + 'Small (fingers overlaps)': LocaleKeys.bodyFrameSmall, + 'Medium (fingers touch)': LocaleKeys.bodyFrameMedium, + "Large (fingers don't touch)": LocaleKeys.bodyFrameLarge, + }; String selectedHeightUnit = 'cm'; String selectedWeightUnit = 'kg'; String selectedBodyFrameSize = 'Medium (fingers touch)'; - Function(String)? onUnitSelected; @override void initState() { @@ -81,7 +93,7 @@ class _IdealBodyWeightWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Height".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + "Height".toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -116,8 +128,8 @@ class _IdealBodyWeightWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - LocaleKeys.unit.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedHeightUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.unit.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_heightUnits[selectedHeightUnit] ?? selectedHeightUnit).tr().toText12(isBold: true, color: AppColors.textColor), ], ), SizedBox(width: 12.w), @@ -134,7 +146,8 @@ class _IdealBodyWeightWidgetState extends State { shrinkWrap: true, itemCount: _heightUnits.length, itemBuilder: (context, index) { - final unit = _heightUnits[index]; + final key = _heightUnits.keys.elementAt(index); + final localeKey = _heightUnits[key]!; return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, @@ -145,7 +158,7 @@ class _IdealBodyWeightWidgetState extends State { spacing: 8.h, children: [ Radio( - value: unit, + value: key, groupValue: selectedHeightUnit, activeColor: AppColors.errorColor, onChanged: (String? value) { @@ -153,17 +166,18 @@ class _IdealBodyWeightWidgetState extends State { setState(() { selectedHeightUnit = value; }); + _onInputChanged(); Navigator.pop(context); }, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - unit.toUpperCase().toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + localeKey.tr().toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(() { setState(() { - selectedHeightUnit = unit; - _onInputChanged(); + selectedHeightUnit = key; }); + _onInputChanged(); Navigator.pop(context); }), ), @@ -193,7 +207,7 @@ class _IdealBodyWeightWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Weight".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + "Weight".toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -233,8 +247,8 @@ class _IdealBodyWeightWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - LocaleKeys.unit.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedWeightUnit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.unit.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_weightUnits[selectedWeightUnit] ?? selectedWeightUnit).tr().toText12(isBold: true, color: AppColors.textColor), ], ), SizedBox(width: 12.w), @@ -251,7 +265,8 @@ class _IdealBodyWeightWidgetState extends State { shrinkWrap: true, itemCount: _weightUnits.length, itemBuilder: (context, index) { - final unit = _weightUnits[index]; + final key = _weightUnits.keys.elementAt(index); + final localeKey = _weightUnits[key]!; return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, @@ -262,7 +277,7 @@ class _IdealBodyWeightWidgetState extends State { spacing: 8.h, children: [ Radio( - value: unit, + value: key, groupValue: selectedWeightUnit, activeColor: AppColors.errorColor, onChanged: (String? value) { @@ -270,16 +285,18 @@ class _IdealBodyWeightWidgetState extends State { setState(() { selectedWeightUnit = value; }); + _onInputChanged(); + Navigator.pop(context); }, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - unit.toUpperCase().toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + localeKey.tr().toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(() { setState(() { - selectedWeightUnit = unit; - _onInputChanged(); + selectedWeightUnit = key; }); + _onInputChanged(); Navigator.pop(context); }), ), @@ -310,8 +327,8 @@ class _IdealBodyWeightWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - LocaleKeys.bodyFrameSize.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - selectedBodyFrameSize.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.bodyFrameSize.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + (_bodyFrameSizes[selectedBodyFrameSize] ?? selectedBodyFrameSize).tr().toText12(isBold: true, color: AppColors.textColor), ], ), ], @@ -321,7 +338,6 @@ class _IdealBodyWeightWidgetState extends State { SizedBox(width: 4.w), ], ).paddingSymmetrical(0.w, 16.w).onPress(() { - List _activity = ["Small (fingers overlaps)", "Medium (fingers touch)", "Large (fingers don't touch)"]; dialogService.showFamilyBottomSheetWithoutHWithChild( label: LocaleKeys.selectBodyFrameSize.tr(context: context), message: "", @@ -330,9 +346,10 @@ class _IdealBodyWeightWidgetState extends State { decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(20.r)), child: ListView.separated( shrinkWrap: true, - itemCount: _activity.length, + itemCount: _bodyFrameSizes.length, itemBuilder: (context, index) { - final unit = _activity[index]; + final key = _bodyFrameSizes.keys.elementAt(index); + final localeKey = _bodyFrameSizes[key]!; return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, @@ -343,7 +360,7 @@ class _IdealBodyWeightWidgetState extends State { spacing: 8.h, children: [ Radio( - value: unit, + value: key, groupValue: selectedBodyFrameSize, activeColor: AppColors.errorColor, onChanged: (String? value) { @@ -351,17 +368,18 @@ class _IdealBodyWeightWidgetState extends State { setState(() { selectedBodyFrameSize = value; }); + _onInputChanged(); Navigator.pop(context); }, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - unit.toCamelCase.toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + localeKey.tr().toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(() { setState(() { - selectedBodyFrameSize = unit; - _onInputChanged(); + selectedBodyFrameSize = key; }); + _onInputChanged(); Navigator.pop(context); }), ), @@ -383,7 +401,7 @@ class _IdealBodyWeightWidgetState extends State { Utils.buildSvgWithAssets(icon: AppAssets.globe, width: 18.w, height: 18.w), SizedBox(width: 12.w), Expanded( - child: "Calculates the ideal body weight based on height, weight and body size.".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + child: LocaleKeys.ibwAlert.tr().toText12(isBold: true, color: AppColors.inputLabelTextColor), ), ], ).paddingSymmetrical(0.w, 16.w), diff --git a/lib/presentation/health_calculators_and_converts/widgets/ovulation.dart b/lib/presentation/health_calculators_and_converts/widgets/ovulation.dart index 556880d4..1769f0bc 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/ovulation.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/ovulation.dart @@ -1,5 +1,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:provider/provider.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -56,6 +58,7 @@ class _OvulationWidgetState extends State { @override Widget build(BuildContext context) { + AppState appState = getIt(); return Consumer(builder: (context, provider, _) { return Container( margin: EdgeInsets.zero, @@ -97,7 +100,7 @@ class _OvulationWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - LocaleKeys.averageCycleLength.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.averageCycleLength.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -134,7 +137,7 @@ class _OvulationWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - LocaleKeys.averageLutealPhase.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + LocaleKeys.averageLutealPhase.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), Container( height: 20.w, alignment: Alignment.centerLeft, @@ -165,7 +168,9 @@ class _OvulationWidgetState extends State { Utils.buildSvgWithAssets(icon: AppAssets.globe, width: 18.w, height: 18.w), SizedBox(width: 12.w), Expanded( - child: "Calculate ovulation and fertile window based on last period, cycle length and luteal phase.".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + child: appState.isArabic() + ? "احسب فترة الإباضة وفترة الخصوبة بناءً على آخر دورة شهرية وطول الدورة الشهرية ومرحلة الجسم الأصفر.".toText12(isBold: true, color: AppColors.inputLabelTextColor) + : "Calculate ovulation and fertile window based on last period, cycle length and luteal phase.".toText12(isBold: true, color: AppColors.inputLabelTextColor), ), ], ).paddingSymmetrical(0.w, 16.w), diff --git a/lib/presentation/health_calculators_and_converts/widgets/triglycerides.dart b/lib/presentation/health_calculators_and_converts/widgets/triglycerides.dart index 1c8c99ed..724a99eb 100644 --- a/lib/presentation/health_calculators_and_converts/widgets/triglycerides.dart +++ b/lib/presentation/health_calculators_and_converts/widgets/triglycerides.dart @@ -1,12 +1,14 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:provider/provider.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; -import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts/health_calculator_view_model.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:provider/provider.dart'; class TriglyceridesWidget extends StatefulWidget { final Function(dynamic result)? onChange; @@ -80,7 +82,7 @@ class _TriglyceridesWidgetState extends State { child: Column( children: [ _buildInputField( - label: "MG/DL", + label: LocaleKeys.mldl.tr(), hint: "150", controller: _mgdlController, focusNode: _mgdlFocus, @@ -89,7 +91,6 @@ class _TriglyceridesWidgetState extends State { provider.onTriglyceridesMgdlChanged(value); }, ).paddingOnly(top: 16.h), - Row( children: [ const Expanded( @@ -109,9 +110,8 @@ class _TriglyceridesWidgetState extends State { }), ], ), - _buildInputField( - label: "MMOL/L", + label: LocaleKeys.mmol, hint: "1.7", controller: _mmolController, focusNode: _mmolFocus, @@ -120,9 +120,7 @@ class _TriglyceridesWidgetState extends State { provider.onTriglyceridesMmolChanged(value); }, ).paddingOnly(bottom: 16.h), - const Divider(height: 1, color: Color(0xFFEEEEEE)), - Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -133,12 +131,10 @@ class _TriglyceridesWidgetState extends State { ), SizedBox(width: 12.w), Expanded( - child: - "Convert triglyceride values between mg/dL and mmol/L." - .toText12( - fontWeight: FontWeight.w500, - color: AppColors.inputLabelTextColor, - ), + child: LocaleKeys.triglycerideInfo.tr().toText12( + isBold: true, + color: AppColors.inputLabelTextColor, + ), ), ], ).paddingSymmetrical(0.w, 16.w), @@ -160,30 +156,26 @@ class _TriglyceridesWidgetState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ label.toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.inputLabelTextColor, ), - SizedBox( - height: 40.h, - child: TextField( - controller: controller, - focusNode: focusNode, - keyboardType: - const TextInputType.numberWithOptions(decimal: true), - onChanged: onChanged, - cursorHeight: 35.h, - decoration: InputDecoration( - border: InputBorder.none, - contentPadding: EdgeInsets.zero, - isCollapsed: true, - hintText: hint, - hintStyle: const TextStyle(color: Colors.grey), - ), - style: TextStyle( - fontSize: 32.f, - fontWeight: FontWeight.bold, - color: Colors.black87, - ), + TextField( + controller: controller, + focusNode: focusNode, + keyboardType: const TextInputType.numberWithOptions(decimal: true), + onChanged: onChanged, + cursorHeight: 35.h, + decoration: InputDecoration( + border: InputBorder.none, + contentPadding: EdgeInsets.zero, + isCollapsed: true, + hintText: hint, + hintStyle: const TextStyle(color: Colors.grey), + ), + style: TextStyle( + fontSize: 32.f, + fontWeight: FontWeight.bold, + color: Colors.black87, ), ), ], diff --git a/lib/presentation/health_trackers/add_health_tracker_entry_page.dart b/lib/presentation/health_trackers/add_health_tracker_entry_page.dart index 8320972e..c448cc97 100644 --- a/lib/presentation/health_trackers/add_health_tracker_entry_page.dart +++ b/lib/presentation/health_trackers/add_health_tracker_entry_page.dart @@ -44,12 +44,27 @@ class _AddHealthTrackerEntryPageState extends State { void initState() { super.initState(); dialogService = getIt.get(); + + // Clear errors when entering the page + WidgetsBinding.instance.addPostFrameCallback((_) { + final viewModel = context.read(); + viewModel.clearAllFieldErrors(); + }); } @override void dispose() { dateController.dispose(); timeController.dispose(); + + // Clear errors when leaving the page + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted) { + final viewModel = context.read(); + viewModel.clearAllFieldErrors(); + } + }); + super.dispose(); } @@ -94,10 +109,17 @@ class _AddHealthTrackerEntryPageState extends State { // Save Blood Sugar entry Future _saveBloodSugarEntry(HealthTrackersViewModel viewModel) async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr(context: context)); // Combine date and time final dateTime = "${dateController.text} ${timeController.text}"; + // Validate using ViewModel method that sets field errors + if (!viewModel.validateBloodSugarEntry(dateTime)) { + // Validation failed, errors are already set in viewModel + return; + } + + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr(context: context)); + // Call ViewModel method with callbacks await viewModel.saveBloodSugarEntry( dateTime: dateTime, @@ -115,10 +137,17 @@ class _AddHealthTrackerEntryPageState extends State { // Save Weight entry Future _saveWeightEntry(HealthTrackersViewModel viewModel) async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr(context: context)); // Combine date and time final dateTime = "${dateController.text} ${timeController.text}"; + // Validate using ViewModel method that sets field errors + if (!viewModel.validateWeightEntry(dateTime)) { + // Validation failed, errors are already set in viewModel + return; + } + + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr(context: context)); + // Call ViewModel method with callbacks await viewModel.saveWeightEntry( dateTime: dateTime, @@ -135,10 +164,17 @@ class _AddHealthTrackerEntryPageState extends State { // Save Blood Pressure entry Future _saveBloodPressureEntry(HealthTrackersViewModel viewModel) async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr(context: context)); // Combine date and time final dateTime = "${dateController.text} ${timeController.text}"; + // Validate using ViewModel method that sets field errors + if (!viewModel.validateBloodPressureEntry(dateTime)) { + // Validation failed, errors are already set in viewModel + return; + } + + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.pleaseWait.tr(context: context)); + // Call ViewModel method with callbacks await viewModel.saveBloodPressureEntry( dateTime: dateTime, @@ -154,19 +190,20 @@ class _AddHealthTrackerEntryPageState extends State { } // Show success message and pop back - void _showSuccessAndPop() { - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getSuccessWidget( - loadingText: _getSuccessMessage(), - ), - callBackFunc: () { + + void _showSuccessAndPop() async { + showCommonBottomSheetWithoutHeight(context, + child: Utils.getSuccessWidget( + loadingText: _getSuccessMessage(), + ).paddingSymmetrical(0.h, 24.h), callBackFunc: () { + // Navigator.pop(context); + }, isCloseButtonVisible: false, isDismissible: true, isFullScreen: false, isAutoDismiss: false); + await Future.delayed(Duration(milliseconds: 2000)).then((value) { + if (mounted) { Navigator.pop(context); - }, - isCloseButtonVisible: false, - isDismissible: true, - isFullScreen: false, - ); + Navigator.pop(context); + } + }); } // Reusable method to build selection row widget @@ -188,9 +225,7 @@ class _AddHealthTrackerEntryPageState extends State { onChanged: (_) => onTap(), materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - (useUpperCase ? value.toUpperCase() : value.toCamelCase) - .toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1) - .expanded, + (useUpperCase ? value.toUpperCase() : value.toCamelCase).toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(onTap), ); @@ -233,7 +268,7 @@ class _AddHealthTrackerEntryPageState extends State { onOkPressed: () {}, ); } - + // Blood Sugar unit selection void _showBloodSugarUnitSelectionBottomSheet(BuildContext context, HealthTrackersViewModel viewModel) { FocusScope.of(context).unfocus(); @@ -253,7 +288,7 @@ class _AddHealthTrackerEntryPageState extends State { _showSelectionBottomSheet( context: context, title: LocaleKeys.selectMeasureTime.tr(context: context), - items: viewModel.bloodSugarMeasureTimeEnList, + items: viewModel.getBloodSugarTimeList(), selectedValue: viewModel.selectedBloodSugarMeasureTime, onSelected: viewModel.setBloodSugarMeasureTime, useUpperCase: false, @@ -266,8 +301,8 @@ class _AddHealthTrackerEntryPageState extends State { _showSelectionBottomSheet( context: context, title: LocaleKeys.selectUnit.tr(context: context), - items: viewModel.weightUnits, - selectedValue: viewModel.selectedWeightUnit, + items: viewModel.getWeightUnitsList(), + selectedValue: viewModel.selectedWeightUnitDisplay, onSelected: viewModel.setWeightUnit, useUpperCase: false, ); @@ -279,21 +314,27 @@ class _AddHealthTrackerEntryPageState extends State { _showSelectionBottomSheet( context: context, title: LocaleKeys.selectArm.tr(context: context), - items: viewModel.measuredArmList, - selectedValue: viewModel.selectedMeasuredArm, + items: viewModel.getMeasuredArmList(), + selectedValue: viewModel.selectedMeasuredArmDisplay, onSelected: viewModel.setMeasuredArm, useUpperCase: false, ); } // Reusable method to build text field - Widget _buildTextField(TextEditingController controller, String hintText, {TextInputType keyboardType = TextInputType.name}) { + Widget _buildTextField( + TextEditingController controller, + String hintText, { + TextInputType keyboardType = TextInputType.name, + Function(String)? onChanged, + }) { return TextField( controller: controller, keyboardType: keyboardType, maxLines: 1, cursorHeight: 14.h, textAlignVertical: TextAlignVertical.center, + onChanged: onChanged, decoration: InputDecoration( border: InputBorder.none, contentPadding: EdgeInsets.zero, @@ -303,12 +344,29 @@ class _AddHealthTrackerEntryPageState extends State { ), style: TextStyle( fontSize: 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: AppColors.textColor, ), ); } + // Build error text widget + Widget _buildErrorText(String errorMessage) { + return Padding( + padding: EdgeInsets.only(left: 52.w, top: 4.h, bottom: 4.h), + child: Align( + alignment: Alignment.centerLeft, + child: Text( + errorMessage, + style: TextStyle( + color: AppColors.primaryRedColor, + fontSize: 12.f, + ), + ), + ), + ); + } + // Reusable method to build settings row Widget _buildSettingsRow({ required String icon, @@ -343,7 +401,7 @@ class _AddHealthTrackerEntryPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - label.toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + label.toText12(isBold: true, color: AppColors.inputLabelTextColor), if (inputField != null) Container( height: 20.w, @@ -351,7 +409,7 @@ class _AddHealthTrackerEntryPageState extends State { child: inputField, ) else if (value != null && value.isNotEmpty) - value.toCamelCase.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + value.toCamelCase.toText12(isBold: true, color: AppColors.textColor), ], ), ), @@ -368,8 +426,8 @@ class _AddHealthTrackerEntryPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Unit".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - unit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.unit.tr(context: context).toText12(isBold: true, color: AppColors.inputLabelTextColor), + unit.toText12(isBold: true, color: AppColors.textColor), ], ), SizedBox(width: 12.w), @@ -402,129 +460,230 @@ class _AddHealthTrackerEntryPageState extends State { /// Blood Sugar form fields Widget _buildBloodSugarForm(HealthTrackersViewModel viewModel) { - return Column( - children: [ - _buildSettingsRow( - icon: AppAssets.heightIcon, - label: LocaleKeys.enterBloodSugar.tr(context: context), - inputField: _buildTextField(viewModel.bloodSugarController, '', keyboardType: TextInputType.number), - unit: viewModel.selectedBloodSugarUnit, - onUnitTap: () => _showBloodSugarUnitSelectionBottomSheet(context, viewModel), - ), - _buildDateTimeFields(), - Divider(height: 1, color: AppColors.dividerColor), - _buildSettingsRow( - icon: AppAssets.weight_tracker_icon, - label: LocaleKeys.selectMeasureTime.tr(context: context), - value: viewModel.selectedBloodSugarMeasureTime, - onRowTap: () => _showBloodSugarEntryTimeBottomSheet(context, viewModel), - ), - ], + return Selector( + selector: (_, model) => model.hasBloodSugarFormError, + builder: (context, hasError, child) { + return Container( + margin: EdgeInsets.symmetric(horizontal: 24.w, vertical: 24.h), + padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: true, + side: hasError + ? BorderSide(color: AppColors.primaryRedBorderColor, width: 1) + : null, + ), + child: Column( + children: [ + _buildSettingsRow( + icon: AppAssets.heightIcon, + label: LocaleKeys.enterBloodSugar.tr(context: context), + inputField: _buildTextField( + viewModel.bloodSugarController, + '', + keyboardType: TextInputType.number, + onChanged: (value) => viewModel.clearBloodSugarError(), + ), + unit: viewModel.selectedBloodSugarUnit, + onUnitTap: () => _showBloodSugarUnitSelectionBottomSheet(context, viewModel), + ), + if (viewModel.bloodSugarError != null) + _buildErrorText(viewModel.bloodSugarError!), + _buildDateTimeFields(), + Divider(height: 1, color: AppColors.dividerColor), + _buildSettingsRow( + icon: AppAssets.weight_tracker_icon, + label: LocaleKeys.selectMeasureTime.tr(context: context), + value: viewModel.selectedBloodSugarMeasureTime, + onRowTap: () => _showBloodSugarEntryTimeBottomSheet(context, viewModel), + ), + if (viewModel.bloodSugarMeasureTimeError != null) + _buildErrorText(viewModel.bloodSugarMeasureTimeError!), + ], + ), + ); + }, ); } /// Blood Pressure form fields Widget _buildBloodPressureForm(HealthTrackersViewModel viewModel) { - return Column( - children: [ - _buildSettingsRow( - icon: AppAssets.bloodPressureIcon, - iconColor: AppColors.greyTextColor, - label: LocaleKeys.enterSystolicValue.tr(context: context), - inputField: _buildTextField(viewModel.systolicController, '', keyboardType: TextInputType.number), - ), - _buildSettingsRow( - icon: AppAssets.bloodPressureIcon, - iconColor: AppColors.greyTextColor, - label: LocaleKeys.enterDiastolicValue.tr(context: context), - inputField: _buildTextField(viewModel.diastolicController, '', keyboardType: TextInputType.number), - ), - _buildSettingsRow( - icon: AppAssets.bodyIcon, - iconColor: AppColors.greyTextColor, - label: LocaleKeys.selectArm.tr(context: context), - value: viewModel.selectedMeasuredArm, - onRowTap: () => _showMeasuredArmSelectionBottomSheet(context, viewModel), - ), - _buildDateTimeFields(), - ], + return Selector( + selector: (_, model) => model.hasBloodPressureFormError, + builder: (context, hasError, child) { + return Container( + margin: EdgeInsets.symmetric(horizontal: 24.w, vertical: 24.h), + padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: true, + side: hasError + ? BorderSide(color: AppColors.primaryRedBorderColor, width: 1) + : null, + ), + child: Column( + children: [ + _buildSettingsRow( + icon: AppAssets.bloodPressureIcon, + iconColor: AppColors.greyTextColor, + label: LocaleKeys.enterSystolicValue.tr(context: context), + inputField: _buildTextField( + viewModel.systolicController, + '', + keyboardType: TextInputType.number, + onChanged: (value) => viewModel.clearSystolicError(), + ), + ), + if (viewModel.systolicError != null) + _buildErrorText(viewModel.systolicError!), + _buildSettingsRow( + icon: AppAssets.bloodPressureIcon, + iconColor: AppColors.greyTextColor, + label: LocaleKeys.enterDiastolicValue.tr(context: context), + inputField: _buildTextField( + viewModel.diastolicController, + '', + keyboardType: TextInputType.number, + onChanged: (value) => viewModel.clearDiastolicError(), + ), + ), + if (viewModel.diastolicError != null) + _buildErrorText(viewModel.diastolicError!), + _buildSettingsRow( + icon: AppAssets.bodyIcon, + iconColor: AppColors.greyTextColor, + label: LocaleKeys.selectArm.tr(context: context), + value: viewModel.selectedMeasuredArmDisplay, + onRowTap: () { + _showMeasuredArmSelectionBottomSheet(context, viewModel); + viewModel.clearMeasuredArmError(); + }, + ), + if (viewModel.measuredArmError != null) + _buildErrorText(viewModel.measuredArmError!), + _buildDateTimeFields(), + ], + ), + ); + }, ); } /// Weight form fields Widget _buildWeightForm(HealthTrackersViewModel viewModel) { - return Column( - children: [ - _buildSettingsRow( - icon: AppAssets.weightScale, - label: LocaleKeys.enterWeight.tr(context: context), - inputField: _buildTextField(viewModel.weightController, '', keyboardType: TextInputType.number), - unit: viewModel.selectedWeightUnit, - onUnitTap: () => _showWeightUnitSelectionBottomSheet(context, viewModel), - ), - _buildDateTimeFields(), - ], + return Selector( + selector: (_, model) => model.hasWeightFormError, + builder: (context, hasError, child) { + return Container( + margin: EdgeInsets.symmetric(horizontal: 24.w, vertical: 24.h), + padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: true, + side: hasError + ? BorderSide(color: AppColors.primaryRedBorderColor, width: 1) + : null, + ), + child: Column( + children: [ + _buildSettingsRow( + icon: AppAssets.weightScale, + label: LocaleKeys.enterWeight.tr(context: context), + inputField: _buildTextField( + viewModel.weightController, + '', + keyboardType: TextInputType.number, + onChanged: (value) => viewModel.clearWeightError(), + ), + unit: viewModel.selectedWeightUnitDisplay, + onUnitTap: () => _showWeightUnitSelectionBottomSheet(context, viewModel), + ), + if (viewModel.weightError != null) + _buildErrorText(viewModel.weightError!), + _buildDateTimeFields(), + ], + ), + ); + }, ); } /// Common date and time fields Widget _buildDateTimeFields() { - return Column( - children: [ - TextInputWidget( - controller: dateController, - isReadOnly: true, - isArrowTrailing: true, - labelText: "Date", - hintText: LocaleKeys.pickADate.tr(context: context), - focusNode: FocusNode(), - isEnable: true, - prefix: null, - isAllowRadius: true, - isBorderAllowed: false, - isAllowLeadingIcon: true, - padding: EdgeInsets.symmetric(vertical: 8.h), - leadingIcon: AppAssets.calendarGrey, - selectionType: SelectionTypeEnum.calendar, - isHideSwitcher: true, - onCalendarTypeChanged: (val) {}, - onChange: (val) { - if (val == null) return; - try { - final parsedDate = DateTime.parse(val); - final formattedDate = DateFormat('dd MMM yyyy').format(parsedDate); - dateController.text = formattedDate; - log("date: $formattedDate"); - } catch (e) { - dateController.text = val; - log("date: $val"); - } - }, - ), - TextInputWidget( - controller: timeController, - isReadOnly: true, - isArrowTrailing: true, - labelText: "Time", - hintText: LocaleKeys.selectMeasureTime.tr(context: context), - focusNode: FocusNode(), - isEnable: true, - prefix: null, - isAllowRadius: true, - isBorderAllowed: false, - isAllowLeadingIcon: true, - padding: EdgeInsets.symmetric(vertical: 8.h), - leadingIcon: AppAssets.calendarGrey, - selectionType: SelectionTypeEnum.time, - isHideSwitcher: true, - onCalendarTypeChanged: (val) {}, - onChange: (val) { - if (val == null) return; - timeController.text = val; - log("time: $val"); - }, - ), - ], + return Consumer( + builder: (context, viewModel, child) { + return Column( + children: [ + SizedBox(width: 8.w), + TextInputWidget( + controller: dateController, + isReadOnly: true, + isArrowTrailing: true, + labelText: LocaleKeys.date.tr(context: context), + hintText: LocaleKeys.pickADate.tr(context: context), + focusNode: FocusNode(), + isEnable: true, + prefix: null, + isAllowRadius: true, + isBorderAllowed: false, + isAllowLeadingIcon: true, + padding: EdgeInsets.symmetric(vertical: 8.h), + leadingIcon: AppAssets.calendarGrey, + selectionType: SelectionTypeEnum.calendar, + isHideSwitcher: true, + btnTitle: LocaleKeys.add.tr(context: context), + onCalendarTypeChanged: (val) {}, + onChange: (val) { + if (val == null) return; + try { + final parsedDate = DateTime.parse(val); + final formattedDate = DateFormat('dd MMM yyyy').format(parsedDate); + dateController.text = formattedDate; + viewModel.clearDateError(); + log("date: $formattedDate"); + } catch (e) { + dateController.text = val; + viewModel.clearDateError(); + log("date: $val"); + } + }, + ), + if (viewModel.dateError != null) + _buildErrorText(viewModel.dateError!), + Divider(height: 1, color: AppColors.dividerColor), + SizedBox(width: 8.w), + TextInputWidget( + controller: timeController, + isReadOnly: true, + isArrowTrailing: true, + labelText: LocaleKeys.time.tr(context: context), + hintText: LocaleKeys.selectMeasureTime.tr(context: context), + focusNode: FocusNode(), + isEnable: true, + prefix: null, + isAllowRadius: true, + isBorderAllowed: false, + isAllowLeadingIcon: true, + padding: EdgeInsets.symmetric(vertical: 8.h), + leadingIcon: AppAssets.calendarGrey, + selectionType: SelectionTypeEnum.time, + isHideSwitcher: true, + onCalendarTypeChanged: (val) {}, + onChange: (val) { + if (val == null) return; + timeController.text = val; + viewModel.clearTimeError(); + log("time: $val"); + }, + ), + if (viewModel.timeError != null) + _buildErrorText(viewModel.timeError!), + ], + ); + }, ); } @@ -541,11 +700,7 @@ class _AddHealthTrackerEntryPageState extends State { body: CollapsingListView( title: _getPageTitle(), bottomChild: Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.r, - hasShadow: true, - ), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), child: Padding( padding: EdgeInsets.all(24.w), child: CustomButton( @@ -556,12 +711,7 @@ class _AddHealthTrackerEntryPageState extends State { ), ), ), - child: Container( - margin: EdgeInsets.symmetric(horizontal: 24.w, vertical: 24.h), - padding: EdgeInsets.only(left: 16.w, right: 16.w, top: 4.h, bottom: 4.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), - child: _buildFormFields(viewModel), - ), + child: _buildFormFields(viewModel), ), ), ); diff --git a/lib/presentation/health_trackers/health_tracker_detail_page.dart b/lib/presentation/health_trackers/health_tracker_detail_page.dart index b5f41dae..35956588 100644 --- a/lib/presentation/health_trackers/health_tracker_detail_page.dart +++ b/lib/presentation/health_trackers/health_tracker_detail_page.dart @@ -27,6 +27,7 @@ import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/graph/custom_graph.dart'; import 'package:hmg_patient_app_new/widgets/input_widget.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:open_filex/open_filex.dart'; import 'package:provider/provider.dart'; import 'package:shimmer/shimmer.dart'; @@ -91,13 +92,15 @@ class _HealthTrackerDetailPageState extends State { /// Get empty state message based on tracker type String _getEmptyStateMessage() { + final isArabic = getIt.get().isArabic(); + switch (widget.trackerType) { case HealthTrackerTypeEnum.bloodSugar: - return "Please add data to track your Blood Sugar"; + return isArabic ? "الرجاء إضافة قراءة جديدة لتتبع سكر الدم" : "Please add data to track your Blood Sugar"; case HealthTrackerTypeEnum.bloodPressure: - return "Please add data to track your Blood Pressure"; + return isArabic ? "الرجاء إضافة قراءة جديدة لتتبع ضغط الدم" : "Please add data to track your Blood Pressure"; case HealthTrackerTypeEnum.weightTracker: - return "Please add data to track your Weight"; + return isArabic ? "الرجاء إضافة قراءة جديدة لتتبع الوزن" : "Please add data to track your Weight"; } } @@ -137,7 +140,7 @@ class _HealthTrackerDetailPageState extends State { materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), (useUpperCase ? value.toUpperCase() : value.toCamelCase) - .toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1) + .toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1) .expanded, ], ).onPress(onTap), @@ -187,7 +190,7 @@ class _HealthTrackerDetailPageState extends State { context: context, title: LocaleKeys.selectDuration.tr(), items: viewModel.durationFilters, - selectedValue: viewModel.selectedDurationFilter, + selectedValue: viewModel.selectedDurationFilterDisplay, onSelected: viewModel.setFilterDuration, ); } @@ -254,7 +257,7 @@ class _HealthTrackerDetailPageState extends State { ], ), SizedBox(height: 4.h), - subTitle.toText16(weight: FontWeight.w600, color: AppColors.textColor), + subTitle.toText16(isBold: true, color: AppColors.textColor), ], ), Transform.rotate( @@ -303,7 +306,7 @@ class _HealthTrackerDetailPageState extends State { child: Row( crossAxisAlignment: CrossAxisAlignment.end, children: [ - viewModel.selectedDurationFilter.toText12(fontWeight: FontWeight.w500), + viewModel.selectedDurationFilterDisplay.toText12(isBold: true), SizedBox(width: 4.w), Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, height: 16.h), ], @@ -572,6 +575,8 @@ class _HealthTrackerDetailPageState extends State { } Widget _buildEmptyStateWidget() { + final isArabic = getIt.get().isArabic(); + return SizedBox( height: MediaQuery.of(context).size.height * 0.5, child: Center( @@ -586,8 +591,8 @@ class _HealthTrackerDetailPageState extends State { width: 48.w, ), SizedBox(height: 16.h), - "You do not have any data available.".toText14( - weight: FontWeight.w500, + (isArabic ? "ليس لديك أي بيانات متاحة." : "You do not have any data available.").toText14( + weight: FontWeight.w600, color: AppColors.textColor, isCenter: true, ), @@ -702,7 +707,7 @@ class _HealthTrackerDetailPageState extends State { final positions = [0.0, interval, interval * 2, interval * 3, maxY]; for (var position in positions) { if ((value - position).abs() < 1) { - return '${value.toInt()}'.toText10(weight: FontWeight.w600); + return '${value.toInt()}'.toText10(isBold: true); } } return SizedBox.shrink(); @@ -716,19 +721,19 @@ class _HealthTrackerDetailPageState extends State { if (selectedDuration == 'Week' && index < 7) { return Padding( padding: EdgeInsets.only(top: 10.h), - child: data[index].label.toText10(weight: FontWeight.w600, color: AppColors.labelTextColor), + child: data[index].label.toText10(isBold: true, color: AppColors.labelTextColor), ); } if (selectedDuration == 'Month' && index < 6) { return Padding( padding: EdgeInsets.only(top: 10.h), - child: data[index].label.toText10(weight: FontWeight.w600, color: AppColors.labelTextColor), + child: data[index].label.toText10(isBold: true, color: AppColors.labelTextColor), ); } if (selectedDuration == 'Year' && index < 12) { return Padding( padding: EdgeInsets.only(top: 10.h), - child: data[index].label.toText8(fontWeight: FontWeight.w600, color: AppColors.labelTextColor), + child: data[index].label.toText8(isBold: true, color: AppColors.labelTextColor), ); } return SizedBox.shrink(); @@ -757,7 +762,7 @@ class _HealthTrackerDetailPageState extends State { ), ), SizedBox(width: 6.w), - label.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + label.toText12(isBold: true, color: AppColors.textColor), ], ); } @@ -1250,7 +1255,32 @@ class _HealthTrackerDetailPageState extends State { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( - sendEmail: () async => onSendEmailPressed(context), + downloadReport: () async { + + + + await context.read().downloadReport(widget.trackerType, + onSuccess: (report) async { + + if (report.isEmpty) {} + String path = await Utils.createFileFromString(report, "pdf"); + try { + OpenFilex.open(path); + } catch (ex) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: "Cannot open file"), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + }); + + + + // .downloadBloodSugerReport(); + }, title: _getPageTitle(), bottomChild: Consumer( builder: (context, viewModel, child) { diff --git a/lib/presentation/health_trackers/health_trackers_page.dart b/lib/presentation/health_trackers/health_trackers_page.dart index 66630f28..e066b106 100644 --- a/lib/presentation/health_trackers/health_trackers_page.dart +++ b/lib/presentation/health_trackers/health_trackers_page.dart @@ -2,6 +2,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; @@ -47,21 +49,24 @@ Widget buildHealthTrackerCard({ crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ - title.toText16(weight: FontWeight.w600), + title.toText16(isBold: true), description.toText12( - fontWeight: FontWeight.w500, + isBold: true, color: Color(0xFF8F9AA3), ), ], ), ), SizedBox(width: 12.w), - Utils.buildSvgWithAssets( - icon: AppAssets.arrowRight, - width: 24.w, - height: 24.h, - fit: BoxFit.contain, - iconColor: AppColors.textColor, + Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.arrowRight, + width: 24.w, + height: 24.h, + fit: BoxFit.contain, + iconColor: AppColors.textColor, + ), ), ], ).paddingAll(16.w), @@ -79,7 +84,7 @@ class _HealthTrackersPageState extends State { iconBgColor: AppColors.primaryRedColor, icon: AppAssets.bloodSugarOnlyIcon, title: LocaleKeys.bloodSugar.tr(context: context), - description: "Track your glucose levels, understand trends, and get personalized insights for better health.", + description: LocaleKeys.trackYourGlucoseLevels.tr(context: context), onTap: () { context.navigateWithName( AppRoutes.healthTrackerDetailPage, diff --git a/lib/presentation/health_trackers/widgets/tracker_last_value_card.dart b/lib/presentation/health_trackers/widgets/tracker_last_value_card.dart index 39465b0f..e12f16c2 100644 --- a/lib/presentation/health_trackers/widgets/tracker_last_value_card.dart +++ b/lib/presentation/health_trackers/widgets/tracker_last_value_card.dart @@ -225,7 +225,7 @@ class TrackerLastValueCard extends StatelessWidget { children: [ "--".toText32(isBold: true, color: AppColors.greyTextColor), SizedBox(width: 6.w), - unit.toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500).paddingOnly(top: 8.h), + unit.toText12(color: AppColors.greyTextColor, isBold: true).paddingOnly(top: 8.h), ], ), SizedBox(height: 8.h), @@ -253,7 +253,7 @@ class TrackerLastValueCard extends StatelessWidget { children: [ displayValue.toText32(isBold: true, color: statusColor), SizedBox(width: 6.w), - unit.toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500).paddingOnly(top: 8.h), + unit.toText12(color: AppColors.greyTextColor, isBold: true).paddingOnly(top: 8.h), ], ), SizedBox(height: 8.h), diff --git a/lib/presentation/hmg_services/services_page.dart b/lib/presentation/hmg_services/services_page.dart index de3235aa..75144cf7 100644 --- a/lib/presentation/hmg_services/services_page.dart +++ b/lib/presentation/hmg_services/services_page.dart @@ -1,7 +1,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; -import 'package:get_it/get_it.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; @@ -12,24 +12,27 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; import 'package:hmg_patient_app_new/features/blood_donation/blood_donation_view_model.dart'; -import 'package:hmg_patient_app_new/features/emergency_services/emergency_services_view_model.dart'; +import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/models/ui_models/hmg_services_component_model.dart'; -import 'package:hmg_patient_app_new/features/hospital/hospital_selection_view_model.dart'; import 'package:hmg_patient_app_new/features/medical_file/medical_file_view_model.dart'; import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_view_model.dart'; +import 'package:hmg_patient_app_new/features/weather/weather_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/blood_donation/blood_donation_page.dart'; +import 'package:hmg_patient_app_new/presentation/book_appointment/book_appointment_page.dart'; +import 'package:hmg_patient_app_new/presentation/comprehensive_checkup/comprehensive_checkup_page.dart'; import 'package:hmg_patient_app_new/presentation/contact_us/contact_us.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/emergency_services_page.dart'; import 'package:hmg_patient_app_new/presentation/habib_wallet/habib_wallet_page.dart'; import 'package:hmg_patient_app_new/presentation/habib_wallet/recharge_wallet_page.dart'; import 'package:hmg_patient_app_new/presentation/hmg_services/services_view.dart'; +import 'package:hmg_patient_app_new/presentation/hmg_services/widgets/weather_widget.dart'; import 'package:hmg_patient_app_new/presentation/home/data/landing_page_data.dart'; +import 'package:hmg_patient_app_new/presentation/home/service_info_page.dart'; import 'package:hmg_patient_app_new/presentation/home/widgets/large_service_card.dart'; -import 'package:hmg_patient_app_new/presentation/medical_file/medical_file_page.dart'; -import 'package:hmg_patient_app_new/presentation/parking/paking_page.dart'; -import 'package:hmg_patient_app_new/presentation/servicesPriceList/services_price_list_page.dart'; +import 'package:hmg_patient_app_new/presentation/my_family/my_family.dart'; +import 'package:hmg_patient_app_new/presentation/service_price/services_price_list_page.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -39,116 +42,167 @@ import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; +import 'package:url_launcher/url_launcher.dart'; -import '../../core/dependencies.dart' show getIt; -import '../../features/qr_parking/qr_parking_view_model.dart'; -import '../emergency_services/call_ambulance/widgets/HospitalBottomSheetBody.dart'; +import '../../core/dependencies.dart'; -class ServicesPage extends StatelessWidget { - bool showBackIcon; +class ServicesPage extends StatefulWidget { + final bool showBackIcon; - ServicesPage({super.key, this.showBackIcon = true}); + const ServicesPage({super.key, this.showBackIcon = true}); + @override + State createState() => _ServicesPageState(); +} + +class _ServicesPageState extends State { late BloodDonationViewModel bloodDonationViewModel; + late MedicalFileViewModel medicalFileViewModel; + late WeatherMonitorViewModel weatherVM; + late final List hmgServices = [ - HmgServicesComponentModel(11, LocaleKeys.emergencyServices.tr(), "", AppAssets.emergency_services_icon, bgColor: AppColors.primaryRedColor, true, route: null, onTap: () async { + HmgServicesComponentModel( + 11, + LocaleKeys.emergencyServices.tr(), + "", + AppAssets.emergency_services_icon, + bgColor: AppColors.primaryRedColor, + true, + route: null, onTap: () async { + // if (getIt.get().isAuthenticated) { + // getIt.get().flushData(); + // getIt.get().getTransportationOrders( + // showLoader: false, + // ); + // getIt.get().getRRTOrders( + // showLoader: false, + // ); + Navigator.of(getIt.get().navigatorKey.currentContext!).push( + CustomPageRoute( + page: EmergencyServicesPage(), + settings: const RouteSettings(name: '/EmergencyServicesPage'), + ), + ); + // } else { + // await getIt.get().onLoginPressed(); + // } + }), + HmgServicesComponentModel( + 11, + LocaleKeys.bookAppointmentService.tr(), + "", + AppAssets.appointment_calendar_icon, + bgColor: AppColors.bookAppointment, + true, + route: null, onTap: () { + getIt.get().onTabChanged(0); + Navigator.of(getIt().navigatorKey.currentContext!).push(CustomPageRoute(page: BookAppointmentPage())); + }), + HmgServicesComponentModel( + 5, LocaleKeys.completeCheckup.tr(), "", AppAssets.comprehensiveCheckup, bgColor: AppColors.bgGreenColor, true, route: null, onTap: () async { if (getIt.get().isAuthenticated) { - getIt.get().flushData(); - getIt.get().getTransportationOrders( - showLoader: false, - ); - getIt.get().getRRTOrders( - showLoader: false, - ); - Navigator.of(getIt.get().navigatorKey.currentContext!).push( + Navigator.of(getIt().navigatorKey.currentContext!).push(CustomPageRoute(page: ComprehensiveCheckupPage())); + } else { + Navigator.of(getIt().navigatorKey.currentContext!).push( CustomPageRoute( - page: EmergencyServicesPage(), - settings: const RouteSettings(name: '/EmergencyServicesPage'), + page: ServiceInfoPage( + serviceName: LocaleKeys.comprehensiveMedicalCheckup.tr(), + serviceHeader: LocaleKeys.cmcServiceHeader.tr(), + serviceDescription: LocaleKeys.cmcServiceDescription.tr(), + serviceImage: AppAssets.cmcService), ), ); - } else { - await getIt.get().onLoginPressed(); } }), + // HmgServicesComponentModel( + // 11, + // LocaleKeys.indoorNavigation.tr(), + // "", + // AppAssets.indoor_nav_icon, + // bgColor: Color(0xff45A2F8), + // true, + // route: null, + // onTap: () { + // showCommonBottomSheetWithoutHeight( + // title: LocaleKeys.selectHospital.tr(), + // GetIt.instance().navigatorKey.currentContext!, + // child: ChangeNotifierProvider( + // create: (context) => HospitalSelectionBottomSheetViewModel(getIt()), + // child: Consumer( + // builder: (_, vm, __) => HospitalBottomSheetBody( + // searchText: vm.searchController, + // displayList: vm.displayList, + // onFacilityClicked: (value) { + // vm.setSelectedFacility(value); + // vm.getDisplayList(); + // }, + // onHospitalClicked: (hospital) { + // Navigator.pop(GetIt.instance().navigatorKey.currentContext!); + // vm.openPenguin(hospital); + // }, + // onHospitalSearch: (value) { + // vm.searchHospitals(value ?? ""); + // }, + // selectedFacility: vm.selectedFacility, + // hmcCount: vm.hmcCount, + // hmgCount: vm.hmgCount, + // ), + // ), + // ), + // isFullScreen: false, + // isCloseButtonVisible: true, + // hasBottomPadding: false, + // backgroundColor: AppColors.bottomSheetBgColor, + // callBackFunc: () { + // GetIt.instance().navigatorKey.currentContext!.read().clearSearchText(); + // }, + // ); + // }, + // ), HmgServicesComponentModel( - 11, - LocaleKeys.bookAppointment.tr(), - "", - AppAssets.appointment_calendar_icon, - bgColor: AppColors.bookAppointment, - true, - route: AppRoutes.bookAppointmentPage, - ), - HmgServicesComponentModel(5, LocaleKeys.completeCheckup.tr(), "", AppAssets.comprehensiveCheckup, bgColor: AppColors.bgGreenColor, true, route: null, onTap: () async { + 11, LocaleKeys.eReferralServices.tr(), "", AppAssets.eReferral, bgColor: AppColors.eReferralCardColor, true, route: null, onTap: () async { if (getIt.get().isAuthenticated) { - getIt.get().pushPageRoute(AppRoutes.comprehensiveCheckupPage); + getIt.get().pushPageRoute(AppRoutes.eReferralPage); } else { - await getIt.get().onLoginPressed(); + Navigator.of(getIt().navigatorKey.currentContext!).push( + CustomPageRoute( + page: ServiceInfoPage( + serviceName: LocaleKeys.eReferralServices.tr(), + serviceHeader: LocaleKeys.eReferralServiceHeader.tr(), + serviceDescription: LocaleKeys.eReferralServiceDescription.tr(), + serviceImage: AppAssets.eReferralService), + ), + ); } }), HmgServicesComponentModel( - 11, - LocaleKeys.indoorNavigation.tr(), - "", - AppAssets.indoor_nav_icon, - bgColor: Color(0xff45A2F8), - true, - route: null, - onTap: () { - showCommonBottomSheetWithoutHeight( - title: LocaleKeys.selectHospital.tr(), - GetIt.instance().navigatorKey.currentContext!, - child: ChangeNotifierProvider( - create: (context) => HospitalSelectionBottomSheetViewModel(getIt()), - child: Consumer( - builder: (_, vm, __) => HospitalBottomSheetBody( - searchText: vm.searchController, - displayList: vm.displayList, - onFacilityClicked: (value) { - vm.setSelectedFacility(value); - vm.getDisplayList(); - }, - onHospitalClicked: (hospital) { - Navigator.pop(GetIt.instance().navigatorKey.currentContext!); - vm.openPenguin(hospital); - }, - onHospitalSearch: (value) { - vm.searchHospitals(value ?? ""); - }, - selectedFacility: vm.selectedFacility, - hmcCount: vm.hmcCount, - hmgCount: vm.hmgCount, - ), - ), + 3, + LocaleKeys.bloodDonationService.tr(context: getIt.get().navigatorKey.currentContext!), + "".needTranslation, + AppAssets.blood_donation_icon, + bgColor: AppColors.bloodDonationCardColor, + true, + route: null, onTap: () { + if (getIt.get().isAuthenticated) { + Navigator.of(getIt().navigatorKey.currentContext!).push( + CustomPageRoute( + page: BloodDonationPage(), ), - isFullScreen: false, - isCloseButtonVisible: true, - hasBottomPadding: false, - backgroundColor: AppColors.bottomSheetBgColor, - callBackFunc: () { - GetIt.instance().navigatorKey.currentContext!.read().clearSearchText(); - }, ); - }, - ), - HmgServicesComponentModel(11, LocaleKeys.eReferralServices.tr(), "", AppAssets.eReferral, bgColor: AppColors.eReferralCardColor, true, route: null, onTap: () async { - if (getIt.get().isAuthenticated) { - getIt.get().pushPageRoute(AppRoutes.eReferralPage); } else { - await getIt.get().onLoginPressed(); + Navigator.of(getIt().navigatorKey.currentContext!).push( + CustomPageRoute( + page: ServiceInfoPage( + serviceName: LocaleKeys.bloodDonation.tr(), + serviceHeader: LocaleKeys.bloodDonationServiceHeader.tr(), + serviceDescription: LocaleKeys.bloodDonationServiceDescription.tr(), + serviceImage: AppAssets.bloodDonationService), + ), + ); } }), - HmgServicesComponentModel( - 3, - LocaleKeys.bloodDonation.tr(context: getIt.get().navigatorKey.currentContext!), - "".needTranslation, - AppAssets.blood_donation_icon, - bgColor: AppColors.bloodDonationCardColor, - true, - route: AppRoutes.bloodDonationPage, - ), HmgServicesComponentModel( 113, LocaleKeys.servicePriceList.tr(context: getIt.get().navigatorKey.currentContext!), @@ -230,7 +284,15 @@ class ServicesPage extends StatelessWidget { if (getIt.get().isAuthenticated) { getIt.get().pushPageRoute(AppRoutes.healthTrackersPage); } else { - await getIt.get().onLoginPressed(); + Navigator.of(getIt().navigatorKey.currentContext!).push( + CustomPageRoute( + page: ServiceInfoPage( + serviceName: LocaleKeys.healthTrackers.tr(), + serviceHeader: LocaleKeys.healthTrackersServiceHeader.tr(), + serviceDescription: LocaleKeys.healthTrackersServiceDescription.tr(), + serviceImage: AppAssets.healthTrackersService), + ), + ); } }, ), @@ -263,7 +325,15 @@ class ServicesPage extends StatelessWidget { }, ); } else { - await getIt.get().onLoginPressed(); + Navigator.of(getIt().navigatorKey.currentContext!).push( + CustomPageRoute( + page: ServiceInfoPage( + serviceName: LocaleKeys.waterConsumption.tr(), + serviceHeader: LocaleKeys.waterConsumptionServiceHeader.tr(), + serviceDescription: LocaleKeys.waterConsumptionServiceDescription.tr(), + serviceImage: AppAssets.waterConsumptionService), + ), + ); } }, ), @@ -294,8 +364,21 @@ class ServicesPage extends StatelessWidget { true, route: null, onTap: () async { - // if (getIt.get().isAuthenticated) { + if (getIt.get().isAuthenticated) { getIt.get().pushPageRoute(AppRoutes.smartWatches); + } else { + Navigator.of(getIt().navigatorKey.currentContext!).push( + CustomPageRoute( + page: ServiceInfoPage( + serviceName: LocaleKeys.smartWatches.tr(), + serviceHeader: LocaleKeys.smartWatchServiceHeader.tr(), + serviceDescription: LocaleKeys.smartWatchServiceDescription.tr(), + serviceImage: AppAssets.smartWatchService), + ), + ); + } + // if (getIt.get().isAuthenticated) { + // getIt.get().pushPageRoute(AppRoutes.smartWatches); // } else { // await getIt.get().onLoginPressed(); // } @@ -304,452 +387,495 @@ class ServicesPage extends StatelessWidget { ), ]; + late final List socialLinkedinMessage = [ + HmgServicesComponentModel( + 101, + LocaleKeys.followUsOnX.tr(), + "", + AppAssets.x, + bgColor: AppColors.whiteColor, + true, + route: null, + onTap: () async { + launchUrl(Uri.parse("https://twitter.com/HMG")); + }, + ), + HmgServicesComponentModel( + 102, + LocaleKeys.likeUsOnFB.tr(), + "", + AppAssets.fb, + bgColor: AppColors.whiteColor, + true, + route: null, // Set to null since we handle navigation in onTap + onTap: () async { + launchUrl(Uri.parse("https://www.facebook.com/DrSulaimanAlHabib?ref=tn_tnmn")); + }, + ), + HmgServicesComponentModel( + 103, + LocaleKeys.watchUsOnYoutube.tr(), + "", + AppAssets.youtube, + bgColor: AppColors.whiteColor, + true, + onTap: () => launchUrl(Uri.parse("https://www.youtube.com/c/DrsulaimanAlhabibHospitals"))), + HmgServicesComponentModel( + 104, + LocaleKeys.connectOnLinkedin.tr(), + "", + AppAssets.linkedin, + bgColor: AppColors.whiteColor, + true, + onTap: () => launchUrl(Uri.parse("https://www.linkedin.com/company/drsulaiman-alhabib-medical-group")), + ), + ]; + + @override + void initState() { + // TODO: implement initState + super.initState(); + weatherVM = getIt(); + weatherVM.initiateFetchWeather(); + } + @override Widget build(BuildContext context) { bloodDonationViewModel = Provider.of(context); medicalFileViewModel = Provider.of(context); - hmgServices.removeWhere((element) => Utils.havePrivilege(element.action) == false); - return Scaffold( - backgroundColor: AppColors.bgScaffoldColor, - body: CollapsingListView( - title: LocaleKeys.exploreServices.tr(), - isLeading: showBackIcon, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox(height: 16.h), - LocaleKeys.medicalAndCareServices.tr().toText18(weight: FontWeight.w600).paddingSymmetrical(24.w, 0), - SizedBox(height: 16.h), - GridView.builder( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: (isFoldable || isTablet) ? 6 : 4, // 4 icons per row - crossAxisSpacing: 21.w, - mainAxisSpacing: 18.h, - childAspectRatio: 80 / 94), - physics: NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemCount: hmgServices.length, - padding: EdgeInsets.zero, - itemBuilder: (BuildContext context, int index) { - return ServiceGridViewItem(hmgServices[index], index, false, isHealthToolIcon: false); - }, - ).paddingSymmetrical(24.w, 0), - SizedBox(height: 24.h), - LocaleKeys.hmgServices.tr().toText18(weight: FontWeight.w600).paddingSymmetrical(24.w, 0), - SizedBox(height: 16.h), - SizedBox( - height: 350.h, - child: ListView.separated( - scrollDirection: Axis.horizontal, - itemCount: LandingPageData.getServiceCardsList.length, + return ChangeNotifierProvider.value( + value: weatherVM, + child: Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + body: CollapsingListView( + title: LocaleKeys.exploreServices.tr(), + isLeading: widget.showBackIcon, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + const WeatherWidget(), + SizedBox(height: 16.h), + LocaleKeys.medicalAndCareServices.tr().toText18(isBold: true).paddingSymmetrical(24.w, 0), + SizedBox(height: 16.h), + GridView.builder( + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: (isFoldable || isTablet) ? 5 : 4, // 4 icons per row + ), + physics: NeverScrollableScrollPhysics(), shrinkWrap: true, - padding: EdgeInsets.symmetric(horizontal: 24.w), - itemBuilder: (context, index) { - return AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 1000), - child: SlideAnimation( - horizontalOffset: 100.0, - child: FadeInAnimation( - child: LargeServiceCard( - serviceCardData: LandingPageData.getServiceCardsList[index], - image: LandingPageData.getServiceCardsList[index].icon, - title: LandingPageData.getServiceCardsList[index].title, - subtitle: LandingPageData.getServiceCardsList[index].subtitle, - icon: LandingPageData.getServiceCardsList[index].largeCardIcon, - ), - ), - ), - ); + itemCount: hmgServices.length, + padding: EdgeInsets.zero, + itemBuilder: (BuildContext context, int index) { + return ServiceGridViewItem(hmgServices[index], index, false, isHealthToolIcon: false); }, - separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 16.w), - ), - ), - SizedBox(height: 24.h), - LocaleKeys.personalServices.tr().toText18(weight: FontWeight.w600).paddingSymmetrical(24.w, 0), - SizedBox(height: 16.h), - Row( - children: [ - Expanded( - child: Container( - height: 183.h, - width: 183.h, - padding: EdgeInsets.all(16.w), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.r, - hasShadow: false, - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - spacing: 8.w, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 40.w, height: 40.h, applyThemeColor: false), - LocaleKeys.habibWallet.tr().toText14(weight: FontWeight.w600, maxlines: 2).expanded, - Utils.buildSvgWithAssets(icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward), - ], + ).paddingSymmetrical(24.w, 0), + SizedBox(height: 24.h), + LocaleKeys.hmgServices.tr().toText18(isBold: true).paddingSymmetrical(24.w, 0), + SizedBox(height: 16.h), + ConstrainedBox( + constraints: BoxConstraints( + minHeight: 320.h, + maxHeight: isFoldable ? 380.h : (isTablet ? 370.h : 340.h), + ), + child: ListView.separated( + scrollDirection: Axis.horizontal, + itemCount: LandingPageData.getServiceCardsList.length, + shrinkWrap: true, + padding: EdgeInsets.symmetric(horizontal: 24.w), + itemBuilder: (context, index) { + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 1000), + child: SlideAnimation( + horizontalOffset: 100.0, + child: FadeInAnimation( + child: LargeServiceCard( + serviceCardData: LandingPageData.getServiceCardsList[index], + image: LandingPageData.getServiceCardsList[index].icon, + title: LandingPageData.getServiceCardsList[index].title, + subtitle: LandingPageData.getServiceCardsList[index].subtitle, + icon: LandingPageData.getServiceCardsList[index].largeCardIcon, + isPNG: LandingPageData.getServiceCardsList[index].isPNG, + ), ), - Spacer(), - getIt.get().isAuthenticated - ? Consumer(builder: (context, habibWalletVM, child) { - return Utils.getPaymentAmountWithSymbol2(habibWalletVM.habibWalletAmount, isExpanded: false) - .toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.r, width: 80.w, height: 24.h); - }) - : LocaleKeys.loginToViewWalletBalance.tr().toText12(fontWeight: FontWeight.w500, maxLine: 2), - Spacer(), - getIt.get().isAuthenticated - ? CustomButton( - height: 40.h, - icon: AppAssets.recharge_icon, - iconSize: 24.w, - iconColor: AppColors.infoColor, - textColor: AppColors.infoColor, - text: LocaleKeys.recharge.tr(), - borderWidth: 0.w, - fontWeight: FontWeight.w500, - borderColor: Colors.transparent, - backgroundColor: Color(0xff45A2F8).withValues(alpha: 0.08), - padding: EdgeInsets.all(8.w), - fontSize: 14.f, - onPressed: () { - Navigator.of(context).push(CustomPageRoute(page: RechargeWalletPage())); - }, - ) - : SizedBox.shrink(), - ], - ).onPress(() async { - if (getIt.get().isAuthenticated) { - Navigator.of(context).push(CustomPageRoute(page: HabibWalletPage())); - } else { - await getIt.get().onLoginPressed(); - } - }), - ), + ), + ); + }, + separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 16.w), ), - SizedBox(width: 16.w), - Expanded( - child: Container( - height: 183.h, - width: 183.h, - padding: EdgeInsets.all(16.w), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.r, - hasShadow: false, - ), - child: Column( + ), + SizedBox(height: 24.h), + getIt.get().isAuthenticated + ? Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + LocaleKeys.personalServices.tr().toText18(isBold: true).paddingSymmetrical(24.w, 0), + SizedBox(height: 16.h), Row( - spacing: 8.w, - crossAxisAlignment: CrossAxisAlignment.center, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.services_medical_file_icon, width: 40.w, height: 40.h, applyThemeColor: false), - LocaleKeys.medicalFile.tr().toText16(weight: FontWeight.w600, maxlines: 2).expanded, - Utils.buildSvgWithAssets(icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward), + Expanded( + child: Container( + height: 183.h, + width: 183.h, + padding: EdgeInsets.all(16.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.r, + hasShadow: false, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + spacing: 8.w, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 40.w, height: 40.h, applyThemeColor: false), + LocaleKeys.habibWallet.tr().toText14(isBold: true, maxlines: 2).expanded, + Utils.buildSvgWithAssets( + icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward), + ], + ), + Spacer(), + getIt.get().isAuthenticated + ? Consumer(builder: (context, habibWalletVM, child) { + return Row( + children: [ + Utils.buildSvgWithAssets( + icon: (getIt.get().getAuthenticatedUser()!.outSa == 1) ? AppAssets.uae_dirham_symbol : AppAssets.saudi_riyal_icon, + iconColor: AppColors.inputLabelTextColor, + width: 24.h, + height: 24.h, + fit: BoxFit.contain, + ), + SizedBox(width: 8.h), + NumberFormat.decimalPattern() + .format(habibWalletVM.habibWalletAmount) + .toString() + .toText28(isBold: true) + .toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.h, width: 80.h, height: 40.h), + ], + ); + // Utils.getPaymentAmountWithSymbol2(num.parse(NumberFormat.decimalPattern().format(habibWalletVM.habibWalletAmount)), + // isExpanded: false, letterSpacing: -1) + // .toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.r, width: 80.w, height: 24.h); + }) + : LocaleKeys.loginToViewWalletBalance.tr().toText12(isBold: true, maxLine: 2), + Spacer(), + getIt.get().isAuthenticated + ? CustomButton( + height: 40.h, + icon: AppAssets.recharge_icon, + iconSize: 24.w, + iconColor: AppColors.infoColor, + textColor: AppColors.infoColor, + text: LocaleKeys.recharge.tr(), + borderWidth: 0.w, + isBold: true, + borderColor: Colors.transparent, + backgroundColor: Color(0xff45A2F8).withValues(alpha: 0.08), + padding: EdgeInsets.all(8.w), + fontSize: 14.f, + onPressed: () { + Navigator.of(context).push(CustomPageRoute(page: RechargeWalletPage())); + }, + ) + : SizedBox.shrink(), + ], + ).onPress(() async { + if (getIt.get().isAuthenticated) { + Navigator.of(context).push(CustomPageRoute(page: HabibWalletPage())); + } else { + await getIt.get().onLoginPressed(); + } + }), + ), + ), + SizedBox(width: 16.w), + Expanded( + child: Container( + height: 183.h, + width: 183.h, + padding: EdgeInsets.all(16.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.r, + hasShadow: false, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + spacing: 8.w, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Utils.buildSvgWithAssets( + icon: AppAssets.services_medical_file_icon, width: 40.w, height: 40.h, applyThemeColor: false), + LocaleKeys.familyTitle.tr().toText16(isBold: true, maxlines: 2).expanded, + Utils.buildSvgWithAssets( + icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward), + ], + ), + Spacer(), + getIt.get().isAuthenticated + ? Wrap( + spacing: -12.h, + // runSpacing: 0.h, + children: [ + Utils.buildImgWithAssets( + icon: AppAssets.babyGirlImg, + height: 32.h, + width: 32.w, + border: 1, + fit: BoxFit.contain, + borderRadius: 50.r, + ), + Utils.buildImgWithAssets( + icon: AppAssets.femaleImg, + height: 32.h, + width: 32.w, + border: 1, + borderRadius: 50.r, + fit: BoxFit.contain, + ), + Utils.buildImgWithAssets( + icon: AppAssets.maleImg, + height: 32.h, + width: 32.w, + border: 1, + borderRadius: 50.r, + fit: BoxFit.contain, + ), + ], + ) + : LocaleKeys.loginToViewMedicalFile.tr().toText12(isBold: true, maxLine: 2), + Spacer(), + getIt.get().isAuthenticated + ? CustomButton( + height: 40.h, + icon: AppAssets.add_icon, + iconSize: 24.h, + iconColor: AppColors.primaryRedColor, + textColor: AppColors.primaryRedColor, + text: getIt.get().isArabic() ? LocaleKeys.add.tr() : LocaleKeys.addMember.tr(), + borderWidth: 0.w, + isBold: true, + borderColor: Colors.transparent, + backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.08), + padding: EdgeInsets.all(8.w), + fontSize: 14.f, + onPressed: () { + DialogService dialogService = getIt.get(); + medicalFileViewModel.clearAuthValues(); + dialogService.showAddFamilyFileSheet( + label: LocaleKeys.addFamilyMember.tr(), + message: LocaleKeys.pleaseFillBelowFieldToAddNewFamilyMember.tr(), + onVerificationPress: () { + medicalFileViewModel.addFamilyFile(otpTypeEnum: OTPTypeEnum.sms); + }); + }, + ) + : SizedBox.shrink(), + ], + ).onPress(() async { + if (getIt.get().isAuthenticated) { + // Navigator.of(context).push( + // CustomPageRoute( + // page: MedicalFilePage(), + // ), + // ); + Navigator.of(context).push( + CustomPageRoute( + direction: AxisDirection.down, + page: FamilyMedicalScreen(), + ), + ); + } else { + await getIt.get().onLoginPressed(); + } + }), + ), + ), ], - ), - Spacer(), - getIt.get().isAuthenticated - ? Wrap( - spacing: -12.h, - // runSpacing: 0.h, - children: [ - Utils.buildImgWithAssets( - icon: AppAssets.babyGirlImg, - height: 32.h, - width: 32.w, - border: 1, - fit: BoxFit.contain, - borderRadius: 50.r, - ), - Utils.buildImgWithAssets( - icon: AppAssets.femaleImg, - height: 32.h, - width: 32.w, - border: 1, - borderRadius: 50.r, - fit: BoxFit.contain, - ), - Utils.buildImgWithAssets( - icon: AppAssets.maleImg, - height: 32.h, - width: 32.w, - border: 1, - borderRadius: 50.r, - fit: BoxFit.contain, - ), - ], - ) - : LocaleKeys.loginToViewMedicalFile.tr().toText12(fontWeight: FontWeight.w500, maxLine: 2), - Spacer(), - getIt.get().isAuthenticated - ? CustomButton( - height: 40.h, - icon: AppAssets.add_icon, - iconSize: 24.h, - iconColor: AppColors.primaryRedColor, - textColor: AppColors.primaryRedColor, - text: LocaleKeys.addMember.tr(), - borderWidth: 0.w, - fontWeight: FontWeight.w500, - borderColor: Colors.transparent, - backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.08), - padding: EdgeInsets.all(8.w), - fontSize: 14.f, - onPressed: () { - DialogService dialogService = getIt.get(); - medicalFileViewModel.clearAuthValues(); - dialogService.showAddFamilyFileSheet( - label: LocaleKeys.addFamilyMember.tr(), - message: LocaleKeys.pleaseFillBelowFieldToAddNewFamilyMember.tr(), - onVerificationPress: () { - medicalFileViewModel.addFamilyFile(otpTypeEnum: OTPTypeEnum.sms); - }); - }, - ) - : SizedBox.shrink(), + ).paddingSymmetrical(24.w, 0), ], - ).onPress(() async { - if (getIt.get().isAuthenticated) { - Navigator.of(context).push( - CustomPageRoute( - page: MedicalFilePage(), - ), - ); - } else { - await getIt.get().onLoginPressed(); - } - }), - ), + ) + : SizedBox(), + SizedBox(height: 24.h), + LocaleKeys.healthTools.tr().toText18(isBold: true).paddingSymmetrical(24.w, 0), + SizedBox(height: 16.h), + GridView.builder( + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: (isFoldable || isTablet) ? 5 : 4, // 4 icons per row + mainAxisSpacing: 18.h, ), - ], - ).paddingSymmetrical(24.w, 0), - SizedBox(height: 24.h), - LocaleKeys.healthTools.tr().toText18(weight: FontWeight.w600).paddingSymmetrical(24.w, 0), - SizedBox(height: 16.h), - GridView.builder( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: (isFoldable || isTablet) ? 6 : 4, // 4 icons per row - crossAxisSpacing: 21.w, - mainAxisSpacing: 18.h, - childAspectRatio: 80.w / 94.h, - ), - physics: NeverScrollableScrollPhysics(), - shrinkWrap: true, - itemCount: hmgHealthToolServices.length, - padding: EdgeInsets.zero, - itemBuilder: (BuildContext context, int index) { - return ServiceGridViewItem( - hmgHealthToolServices[index], - index, - false, - isHealthToolIcon: true, - ); - }, - ).paddingSymmetrical(24.w, 0), - SizedBox(height: 24.h), - LocaleKeys.supportServices.tr().toText18(weight: FontWeight.w600).paddingSymmetrical(24.w, 0), - SizedBox(height: 16.h), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - Expanded( - child: Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 12.h, - hasShadow: false, - ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Row( - children: [ - Utils.buildSvgWithAssets( - icon: AppAssets.virtual_tour_icon, - width: 32.w, - height: 32.h, - fit: BoxFit.contain, - ), - SizedBox(width: 8.w), - LocaleKeys.virtualTour.tr().toText14(weight: FontWeight.w500) - ], + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: hmgHealthToolServices.length, + padding: EdgeInsets.zero, + itemBuilder: (BuildContext context, int index) { + return ServiceGridViewItem( + hmgHealthToolServices[index], + index, + false, + isHealthToolIcon: true, + ); + }, + ).paddingSymmetrical(24.w, 0), + SizedBox(height: 24.h), + LocaleKeys.supportServices.tr().toText18(isBold: true).paddingSymmetrical(24.w, 0), + SizedBox(height: 16.h), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 16.h), + Row( + children: [ + Expanded( + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.h, + hasShadow: false, ), - ), - ).onPress(() { - Utils.openWebView( - url: 'https://hmgwebservices.com/vt_mobile/html/index.html', - ); - }), - ), - SizedBox(width: 16.w), - Expanded( - child: Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 12.h, - hasShadow: false, - ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Row( - children: [ - Utils.buildSvgWithAssets( - icon: AppAssets.car_parking_icon, - width: 32.w, - height: 32.h, - fit: BoxFit.contain, - ), - SizedBox(width: 8.w), - LocaleKeys.carParking.tr().toText14(weight: FontWeight.w500) - ], - ).onPress(() { - Navigator.push( - context, - MaterialPageRoute( - builder: (_) => ChangeNotifierProvider( - create: (_) => getIt(), - child: const ParkingPage(), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Row( + children: [ + Utils.buildSvgWithAssets( + icon: AppAssets.latest_news_icon, + width: 32.h, + height: 32.h, + fit: BoxFit.contain, ), - ), - ); - }), - ), + SizedBox(width: 8.w), + LocaleKeys.latestNews.tr().toText14(isBold: true) + ], + ), + ), + ).onPress(() { + Utils.openWebView( + url: 'https://x.com/HMG', + ); + }), ), - ), - ], - ), - SizedBox(height: 16.h), - Row( - children: [ - Expanded( - child: Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 12.h, - hasShadow: false, - ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Row( - children: [ - Utils.buildSvgWithAssets( - icon: AppAssets.latest_news_icon, - width: 32.w, - height: 32.h, - fit: BoxFit.contain, - ), - SizedBox(width: 8.w), - LocaleKeys.latestNews.tr().toText14(weight: FontWeight.w500) - ], + SizedBox(width: 16.w), + Expanded( + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.h, + hasShadow: false, ), - ), - ).onPress(() { - Utils.openWebView( - url: 'https://x.com/HMG', - ); - }), - ), - SizedBox(width: 16.w), - Expanded( - child: Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 12.h, - hasShadow: false, - ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Row( - children: [ - Utils.buildSvgWithAssets( - icon: AppAssets.hmg_contact_icon, - width: 32.w, - height: 32.h, - fit: BoxFit.contain, - ), - SizedBox(width: 8.w), - Expanded(child: LocaleKeys.hmgContact.tr().toText14(weight: FontWeight.w500)) - ], + child: Padding( + padding: EdgeInsets.all(16.h), + child: Row( + children: [ + Utils.buildSvgWithAssets( + icon: AppAssets.hmg_contact_icon, + width: 32.h, + height: 32.h, + fit: BoxFit.contain, + ), + SizedBox(width: 8.w), + Expanded(child: LocaleKeys.hmgContact.tr().toText14(isBold: true)) + ], + ), ), - ), - ).onPress(() { - showCommonBottomSheetWithoutHeight( - context, - title: LocaleKeys.contactUs.tr(), - child: ContactUs(), - callBackFunc: () {}, - isFullScreen: false, - ); - }), - ) - ], - ), - SizedBox(height: 24.h), - LocaleKeys.hmgPolicies.tr().toText18(weight: FontWeight.bold), - SizedBox(height: 16.h), - Row( - children: [ - Expanded( - child: Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 12.h, - hasShadow: false, - ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Row( - children: [ - Utils.buildSvgWithAssets(icon: AppAssets.privacy_terms, width: 32.w, height: 32.h, fit: BoxFit.contain, iconColor: AppColors.blackColor), - SizedBox(width: 8.w), - Expanded(child: LocaleKeys.termsConditoins.tr().toText14(weight: FontWeight.w500)) - ], + ).onPress(() { + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.contactUs.tr(), + child: ContactUs(), + callBackFunc: () {}, + isFullScreen: false, + ); + }), + ) + ], + ), + SizedBox(height: 24.h), + LocaleKeys.hmgPolicies.tr().toText18(weight: FontWeight.bold), + SizedBox(height: 16.h), + Row( + children: [ + Expanded( + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.h, + hasShadow: false, ), - ), - ).onPress(() { - Utils.openWebView( - url: 'https://hmg.com/en/Pages/Terms.aspx', - ); - }), - ), - SizedBox(width: 16.w), - Expanded( - child: Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 12.h, - hasShadow: false, - ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Row( - children: [ - Utils.buildSvgWithAssets(icon: AppAssets.privacy_terms, width: 32.w, height: 32.h, fit: BoxFit.contain, iconColor: AppColors.blackColor), - SizedBox(width: 8.w), - Expanded(child: LocaleKeys.privacyPolicy.tr().toText14(weight: FontWeight.w500)) - ], + child: Padding( + padding: EdgeInsets.all(16.h), + child: Row( + children: [ + Utils.buildSvgWithAssets( + icon: AppAssets.privacy_terms, width: 32.w, height: 32.h, fit: BoxFit.contain, iconColor: AppColors.blackColor), + SizedBox(width: 8.w), + Expanded(child: LocaleKeys.termsConditoins.tr().toText14(isBold: true)) + ], + ), ), - ), - ).onPress(() { - Utils.openWebView( - url: 'https://hmg.com/en/Pages/Privacy.aspx', - ); - }), - ) - ], - ) - ], - ).paddingSymmetrical(24.w, 0), - SizedBox(height: 24.h), - ], + ).onPress(() { + Utils.openWebView( + url: AppUrls.hmgTermsUrlEn, + ); + }), + ), + SizedBox(width: 16.w), + Expanded( + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.h, + hasShadow: false, + ), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Row( + children: [ + Utils.buildSvgWithAssets( + icon: AppAssets.privacy_terms, width: 32.w, height: 32.h, fit: BoxFit.contain, iconColor: AppColors.blackColor), + SizedBox(width: 8.w), + Expanded(child: LocaleKeys.privacyPolicy.tr().toText14(isBold: true)) + ], + ), + ), + ).onPress(() { + Utils.openWebView( + url: AppUrls.hmgPrivacyUrlEn, + ); + }), + ) + ], + ) + ], + ).paddingSymmetrical(24.w, 0), + SizedBox(height: 16.h), + GridView.builder( + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: (isFoldable || isTablet) ? 5 : 4, // 4 icons per row + mainAxisSpacing: 18.h, + ), + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + itemCount: socialLinkedinMessage.length, + padding: EdgeInsets.zero, + itemBuilder: (BuildContext context, int index) { + return ServiceGridViewItem( + socialLinkedinMessage[index], + index, + false, + isHealthToolIcon: true, + ); + }, + ).paddingSymmetrical(24.w, 0), + SizedBox(height: 24.h), + ], + ), ), ), ); diff --git a/lib/presentation/hmg_services/services_view.dart b/lib/presentation/hmg_services/services_view.dart index dd70c413..906c23f6 100644 --- a/lib/presentation/hmg_services/services_view.dart +++ b/lib/presentation/hmg_services/services_view.dart @@ -54,9 +54,10 @@ class ServiceGridViewItem extends StatelessWidget { ), SizedBox(height: 4.h), hmgServiceComponentModel.title.toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.textColor, maxLine: 2, + ), ], )); diff --git a/lib/presentation/hmg_services/widgets/weather_widget.dart b/lib/presentation/hmg_services/widgets/weather_widget.dart new file mode 100644 index 00000000..9ea2aa2b --- /dev/null +++ b/lib/presentation/hmg_services/widgets/weather_widget.dart @@ -0,0 +1,247 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/weather/weather_view_model.dart'; +import 'package:hmg_patient_app_new/features/weather/models/waether_cities_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/weather/weather_details_page.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:provider/provider.dart'; + +class WeatherWidget extends StatelessWidget { + final bool showButton; + + const WeatherWidget({super.key, this.showButton = true}); + + String _getWeatherIcon(String? categoryValue) { + if (categoryValue == null) return "assets/images/svg/cloudyweather.svg"; + + final lowerValue = categoryValue.toLowerCase(); + if (lowerValue.contains('sunny') || lowerValue.contains('clear')) { + return "assets/images/svg/morning.svg"; + } else if (lowerValue.contains('cloudy') || lowerValue.contains('cloud')) { + return "assets/images/svg/cloudyweather.svg"; + } else if (lowerValue.contains('rain')) { + return "assets/images/svg/cloudyweather.svg"; + } + return "assets/images/svg/cloudyweather.svg"; + } + + String _formatDateTime(DateTime dateTime) { + final formatter = DateFormat('MMMM dd, yyyy - EEEE, HH:mm', 'en_US'); + return formatter.format(dateTime); + } + + @override + Widget build(BuildContext context) { + AppState appState = getIt(); + return Selector cityInfoList})>( + selector: (_, vm) => (isLoading: vm.isLoading, isLocationAvailable: vm.isLocationAvailable, cityInfoList: vm.cityInfoList), + builder: (context, state, child) { + if (!state.isLocationAvailable) { + return noWeatherWidget(context).paddingSymmetrical(24.w, 0.w); + } + if (state.isLoading) { + return _buildLoadingState().paddingSymmetrical(24.w, 0.w); + } + + + final currentCity = state.cityInfoList.isNotEmpty ? state.cityInfoList.first : null; + final now = DateTime.now(); + final temperature = currentCity?.temperature; + final healthTip = LocaleKeys.healthTipsBasedOnCurrentWeather.tr(); + + return Row( + children: [ + Flexible( + child: Container( + padding: EdgeInsets.all(16.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: false), + child: Column( + children: [ + Row( + children: [ + Utils.buildSvgWithAssets(icon: _getWeatherIcon(currentCity?.categoryValue), width: 64.w, height: 64.w), + SizedBox(width: 12.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _formatDateTime(now).toText12( + fontWeight: FontWeight.w500, + color: AppColors.greyTextColor, + ), + SizedBox(height: 4.w), + "$temperature°C".toText16( + isBold: true, + weight: FontWeight.w600, + ), + SizedBox(height: 4.w), + healthTip.toText12( + color: AppColors.greyTextColor, + fontWeight: FontWeight.w500, + maxLine: 2, + ), + ], + ), + ), + ], + ), + if (showButton) ...[ + SizedBox(height: 16.w), + CustomButton( + text: appState.isArabic() ?"مؤشرات الطقس الصحية" : "Health weather indicators", + onPressed: () { + Navigator.of(context).push( + CustomPageRoute( + page: ChangeNotifierProvider.value( + value: context.read(), + child: const WeatherDetailsPage(), + ), + ), + ); + }, + padding: EdgeInsets.zero, + backgroundColor: AppColors.infoColor.withValues(alpha: 0.12), + borderColor: AppColors.infoColor.withValues(alpha: 0.01), + textColor: AppColors.infoColor, + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 10.r, + height: 40.h, + ), + ], + ], + ), + ), + ), + ], + ).paddingSymmetrical(24.w, 0.w); + }, + ); + } + + Widget noWeatherWidget(BuildContext context) { + return Container( + padding: EdgeInsets.all(16.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: false, + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + height: 48.h, + width: 48.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.greyColor, + borderRadius: 12.r, + hasShadow: false, + ), + child: Padding( + padding: EdgeInsets.all(12.h), + child: Utils.buildSvgWithAssets(icon: AppAssets.location_unavailable_filled, fit: BoxFit.contain, applyThemeColor: false), + ), + ), + SizedBox(width: 12.w), + Expanded( + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.max, + children: [ + _formatDateTime(DateTime.now()).toText12( + fontWeight: FontWeight.w500, + color: AppColors.greyTextColor, + ), + SizedBox(height: 4.w), + "--".toText16( + isBold: true, + weight: FontWeight.w600, + ), + SizedBox(height: 4.w), + LocaleKeys.locationServicesDisabled.tr().toText12( + color: AppColors.greyTextColor, + fontWeight: FontWeight.w500, + maxLine: 2, + ), + ], + ), + ), + ], + )).onPress(() { + context.read().fetchCityInfoList(); + }); + } + + Widget _buildLoadingState() { + return Column( + children: [ + Row( + children: [ + Container( + width: 64.w, + height: 64.w, + decoration: BoxDecoration( + color: AppColors.lightGrayBGColor, + borderRadius: BorderRadius.circular(12.r), + ), + ), + SizedBox(width: 12.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: double.infinity, + height: 12.h, + decoration: BoxDecoration( + color: AppColors.lightGrayBGColor, + borderRadius: BorderRadius.circular(6.r), + ), + ), + SizedBox(height: 8.h), + Container( + width: 100.w, + height: 16.h, + decoration: BoxDecoration( + color: AppColors.lightGrayBGColor, + borderRadius: BorderRadius.circular(8.r), + ), + ), + SizedBox(height: 8.h), + Container( + width: double.infinity, + height: 12.h, + decoration: BoxDecoration( + color: AppColors.lightGrayBGColor, + borderRadius: BorderRadius.circular(6.r), + ), + ), + ], + ), + ), + ], + ), + SizedBox(height: 16.w), + Container( + height: 56.h, + decoration: BoxDecoration( + color: AppColors.lightGrayBGColor, + borderRadius: BorderRadius.circular(10.r), + ), + ), + ], + ); + } +} diff --git a/lib/presentation/home/app_update_page.dart b/lib/presentation/home/app_update_page.dart index 5e6481bd..37dab487 100644 --- a/lib/presentation/home/app_update_page.dart +++ b/lib/presentation/home/app_update_page.dart @@ -18,7 +18,7 @@ import 'package:lottie/lottie.dart'; class AppUpdatePage extends StatelessWidget { AppUpdatePage({super.key, required this.appUpdateMessage}); - String appUpdateMessage; + final String appUpdateMessage; @override Widget build(BuildContext context) { @@ -41,7 +41,7 @@ class AppUpdatePage extends StatelessWidget { ), ), SizedBox(height: 50.h), - appUpdateMessage.toText16(weight: FontWeight.w500), + appUpdateMessage.toText16(isBold: true), ], ), ), @@ -72,25 +72,52 @@ class AppUpdatePage extends StatelessWidget { openAppUpdateLink() { if (Platform.isAndroid) { - // _launchURL("https://play.google.com/store/apps/details?id=com.ejada.hmg"); - InAppUpdate.checkForUpdate().then((info) { - print("checkForUpdate!!!"); - print(info.toString()); - if (info.immediateUpdateAllowed) { - print("Immediate Allowed!!!"); - InAppUpdate.performImmediateUpdate().then((value) {}).catchError((e) => print(e.toString())); - } - }).catchError((e) { - print(e.toString()); - Utils.openWebView( - url: "https://play.google.com/store/apps/details?id=com.ejada.hmg", - ); - }); + _handleAndroidAppUpdate(); } if (Platform.isIOS) { Utils.openWebView( - url: "https://itunes.apple.com/app/id733503978", + // url: "https://itunes.apple.com/app/id733503978", + url: "https://itunes.apple.com/app/id6758851027", ); } } + + Future _handleAndroidAppUpdate() async { + const fallbackUrl = "https://play.google.com/store/apps/details?id=com.cloudsolutions.HMGPatientApp"; + try { + final info = await InAppUpdate.checkForUpdate(); + print("InAppUpdate.checkForUpdate -> $info"); + + if (info != null) { + final immediateAllowed = info.immediateUpdateAllowed ?? false; + final flexibleAllowed = info.flexibleUpdateAllowed ?? false; + + print("immediateAllowed: $immediateAllowed, flexibleAllowed: $flexibleAllowed"); + + if (immediateAllowed) { + print("Performing immediate update..."); + await InAppUpdate.performImmediateUpdate(); + return; + } + + if (flexibleAllowed) { + print("Starting flexible update..."); + await InAppUpdate.startFlexibleUpdate(); + try { + await InAppUpdate.completeFlexibleUpdate(); + } catch (e) { + print("Error completing flexible update: $e"); + } + return; + } + } + + print("No in-app update allowed/available; opening Play Store page"); + Utils.openWebView(url: fallbackUrl); + } catch (e, st) { + print("InAppUpdate.checkForUpdate threw an exception: $e"); + print(st); + Utils.openWebView(url: fallbackUrl); + } + } } diff --git a/lib/presentation/home/data/landing_page_data.dart b/lib/presentation/home/data/landing_page_data.dart index b74e57f3..3d98e5a1 100644 --- a/lib/presentation/home/data/landing_page_data.dart +++ b/lib/presentation/home/data/landing_page_data.dart @@ -1,6 +1,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/home/data/service_card_data.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -10,27 +12,17 @@ class LandingPageData { ServiceCardData( serviceName: "emergency", icon: AppAssets.emergency_services_icon, - title: LocaleKeys.emergency, - subtitle: LocaleKeys.services2, + title: getIt.get().isArabic()?LocaleKeys.services3 :LocaleKeys.emergency2, + subtitle: getIt.get().isArabic()?LocaleKeys.emergency2:LocaleKeys.services3, backgroundColor: AppColors.primaryRedColor, iconColor: Colors.white, textColor: Colors.white, isBold: true, ), - ServiceCardData( - serviceName: "indoor_navigation", - icon: AppAssets.indoor_nav_icon, - title: LocaleKeys.indoor, - subtitle: LocaleKeys.navigation, - backgroundColor: AppColors.whiteColor, - iconColor: AppColors.blackColor, - textColor: AppColors.blackColor, - isBold: false, - ), ServiceCardData( serviceName: "search_doctor", icon: AppAssets.search_doctor_icon, - title: LocaleKeys.search, + title: LocaleKeys.finda, subtitle: LocaleKeys.doctor, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, @@ -40,8 +32,8 @@ class LandingPageData { ServiceCardData( serviceName: "health_calculators_and_converts", icon: AppAssets.health_calculators_icon, - title: LocaleKeys.health, - subtitle: LocaleKeys.calculators, + title: getIt.get().isArabic()? LocaleKeys.calculators:LocaleKeys.health , + subtitle: getIt.get().isArabic()? LocaleKeys.health:LocaleKeys.calculators, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -50,18 +42,28 @@ class LandingPageData { ServiceCardData( serviceName: "health_converters", icon: AppAssets.health_converters_icon, - title: LocaleKeys.health, - subtitle: LocaleKeys.converters, + title: getIt.get().isArabic()? LocaleKeys.converters:LocaleKeys.health, + subtitle: getIt.get().isArabic()? LocaleKeys.health:LocaleKeys.converters, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, isBold: false, ), + // ServiceCardData( + // serviceName: "parking_guide", + // icon: AppAssets.car_parking_icon, + // title: getIt.get().isArabic()? LocaleKeys.guide:LocaleKeys.parking2, + // subtitle: getIt.get().isArabic()? LocaleKeys.parking2:LocaleKeys.guide, + // backgroundColor: AppColors.whiteColor, + // iconColor: AppColors.blackColor, + // textColor: AppColors.blackColor, + // isBold: false, + // ), ServiceCardData( - serviceName: "parking_guide", - icon: AppAssets.car_parking_icon, - title: LocaleKeys.parking, - subtitle: LocaleKeys.guide, + serviceName: "indoor_navigation", + icon: AppAssets.indoor_nav_icon, + title: LocaleKeys.indoor, + subtitle: LocaleKeys.thehospital, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -69,12 +71,12 @@ class LandingPageData { ), ]; - static List get getLoggedInServiceCardsList => [ + List get getLoggedInServiceCardsList => [ ServiceCardData( serviceName: "emergency", icon: AppAssets.emergency_services_icon, - title: LocaleKeys.emergency, - subtitle: LocaleKeys.services2, + title: getIt.get().isArabic()?LocaleKeys.services3 :LocaleKeys.emergency2, + subtitle: getIt.get().isArabic()?LocaleKeys.emergency2:LocaleKeys.services3, backgroundColor: AppColors.primaryRedColor, iconColor: Colors.white, textColor: Colors.white, @@ -83,8 +85,8 @@ class LandingPageData { ServiceCardData( serviceName: "lab_results", icon: AppAssets.home_lab_result_icon, - title: LocaleKeys.lab, - subtitle: LocaleKeys.labSubtitle, + title: getIt.get().isArabic()?LocaleKeys.labSubtitle:LocaleKeys.lab, + subtitle: getIt.get().isArabic()?LocaleKeys.lab:LocaleKeys.labSubtitle , backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -93,8 +95,8 @@ class LandingPageData { ServiceCardData( serviceName: "radiology_results", icon: AppAssets.my_radiology_icon, - title: LocaleKeys.radiology, - subtitle: LocaleKeys.radiologySubtitle, + title: getIt.get().isArabic()?LocaleKeys.labSubtitle:LocaleKeys.radiology, + subtitle: getIt.get().isArabic()?LocaleKeys.radiology:LocaleKeys.labSubtitle , backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -103,8 +105,8 @@ class LandingPageData { ServiceCardData( serviceName: "prescriptions", icon: AppAssets.my_prescription_icon, - title: LocaleKeys.medicinesSubtitle, - subtitle: LocaleKeys.details, + title: getIt.get().isArabic()?LocaleKeys.medicinesSubtitle:LocaleKeys.medicalKey, + subtitle: getIt.get().isArabic()?LocaleKeys.medicalKey:LocaleKeys.medicinesSubtitle, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -113,8 +115,8 @@ class LandingPageData { ServiceCardData( serviceName: "insurance_update", icon: AppAssets.insurance_update_icon, - title: LocaleKeys.insurance, - subtitle: LocaleKeys.details, + title: getIt.get().isArabic()?LocaleKeys.insurance :LocaleKeys.insurance, + subtitle: getIt.get().isArabic()?LocaleKeys.medical: LocaleKeys.details2, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -123,8 +125,8 @@ class LandingPageData { ServiceCardData( serviceName: "my_doctors", icon: AppAssets.my_doctors_icon, - title: "My", - subtitle: "Doctors", + title: getIt.get().isArabic() ? LocaleKeys.myDoctorSubtitle2.tr() : "My", + subtitle: getIt.get().isArabic() ? LocaleKeys.myDoctor.tr() : "Doctors", backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -133,8 +135,18 @@ class LandingPageData { ServiceCardData( serviceName: "sick_leaves", icon: AppAssets.my_sick_leave_icon, - title: LocaleKeys.sick, - subtitle: LocaleKeys.sickSubtitle, + title: getIt.get().isArabic()?LocaleKeys.sickSubtitle:LocaleKeys.sick2, + subtitle: getIt.get().isArabic()?LocaleKeys.sick2:LocaleKeys.sickSubtitle, + backgroundColor: AppColors.whiteColor, + iconColor: AppColors.blackColor, + textColor: AppColors.blackColor, + isBold: false, + ), + ServiceCardData( + serviceName: "my_invoice", + icon: AppAssets.invoiceListIcon, + title: getIt.get().isArabic()?LocaleKeys.myDoctorSubtitle2:LocaleKeys.invoiceList2, + subtitle: getIt.get().isArabic()?LocaleKeys.invoiceList2:LocaleKeys.myDoctorSubtitle2, backgroundColor: AppColors.whiteColor, iconColor: AppColors.blackColor, textColor: AppColors.blackColor, @@ -152,6 +164,7 @@ class LandingPageData { backgroundColor: AppColors.successColor, iconColor: AppColors.whiteColor, isBold: false, + isPNG: false ), // ServiceCardData( // icon: AppAssets.homeBottom, @@ -165,21 +178,23 @@ class LandingPageData { serviceName: "home_health_care", icon: AppAssets.homeBottom, title: LocaleKeys.homeHealthCare, - subtitle: LocaleKeys.liveCareServiceDesc, - largeCardIcon: AppAssets.homeHealthCareService, + subtitle: LocaleKeys.homeHealthCareText, + largeCardIcon: AppAssets.homeHealthCareService, backgroundColor: AppColors.primaryRedColor, iconColor: AppColors.whiteColor, isBold: false, + isPNG: false ), ServiceCardData( serviceName: "pharmacy", - icon: AppAssets.pharmacy_icon, //359846 + icon: AppAssets.defaultMEP, //359846 title: LocaleKeys.hmgPharmacy, - subtitle: LocaleKeys.liveCareServiceDesc, - largeCardIcon: AppAssets.pharmacyService, + subtitle: LocaleKeys.hmgPharmacyText, + largeCardIcon: AppAssets.pharmacyService, backgroundColor: AppColors.pharmacyBGColor, iconColor: null, isBold: true, + isPNG: true ), ]; } diff --git a/lib/presentation/home/data/service_card_data.dart b/lib/presentation/home/data/service_card_data.dart index c16147b1..f2f1d121 100644 --- a/lib/presentation/home/data/service_card_data.dart +++ b/lib/presentation/home/data/service_card_data.dart @@ -12,6 +12,7 @@ class ServiceCardData { final Color? backgroundColor; final bool isBold; final String largeCardIcon; + final bool isPNG; ServiceCardData({ this.serviceName = "", @@ -22,6 +23,7 @@ class ServiceCardData { this.backgroundColor, this.iconColor, this.textColor, - this.isBold = false + this.isBold = false, + this.isPNG = false, }); } diff --git a/lib/presentation/home/lakum_wallet_details.dart b/lib/presentation/home/lakum_wallet_details.dart new file mode 100644 index 00000000..bcd5cb3e --- /dev/null +++ b/lib/presentation/home/lakum_wallet_details.dart @@ -0,0 +1,442 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; +import 'package:hmg_patient_app_new/features/habib_wallet/models/lakum_inquiry_information_response_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:provider/provider.dart'; +import 'package:url_launcher/url_launcher.dart'; +import 'dart:ui' as ui; + +class LakumWalletDetails extends StatelessWidget { + const LakumWalletDetails({super.key}); + + @override + Widget build(BuildContext context) { + AppState appState = getIt.get(); + + return CollapsingListView( + title: LocaleKeys.lakumPoints.tr(context: context), + child: Consumer( + builder: (context, viewModel, child) { + // Check if loading + if (viewModel.isLakumAccountInfoLoading) { + return Center( + child: Padding( + padding: EdgeInsets.all(32.w), + child: CircularProgressIndicator( + color: AppColors.primaryRedColor, + ), + ), + ); + } + + // Check if account number is not available + if (viewModel.yahalaAccountNumber == "0" || viewModel.yahalaAccountNumber.isEmpty) { + return Utils.getNoDataWidget(context); + // return Center( + // child: Padding( + // padding: EdgeInsets.all(32.w), + // child: LocaleKeys.lakumMsg.tr().toText14( + // color: AppColors.greyTextColor, + // ), + // ), + // ); + } + + // Get all transactions + List transactions = viewModel.getAllLakumTransactions(); + + // Display main UI + return SingleChildScrollView( + child: Padding( + padding: EdgeInsets.all(16.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + // Main Lakum Card with gradient and user info + _buildLakumMainCard(viewModel.lakumAccountInfo, appState), + SizedBox(height: 24.h), + + // Redeem Button + _buildRedeemButton(context), + SizedBox(height: 24.h), + + // Transaction List Header + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.transactions.tr(context: context).toText16(isBold: true), + // if (transactions.isNotEmpty) "${transactions.length} Records".toText12(color: AppColors.greyTextColor), + ], + ), + SizedBox(height: 12.h), + + // Transaction List Container + if (transactions.isEmpty) _buildEmptyTransactions() else _buildTransactionsList(transactions), + + SizedBox(height: 24.h), + ], + ), + ), + ); + }, + ), + ); + } + + Widget _buildLakumMainCard(LakumInquiryInformationResponseModel? accountInfo, AppState appState) { + return Container( + decoration: BoxDecoration( + gradient: LinearGradient( + colors: [ + AppColors.habibPharmacyColor, + AppColors.habibPharmacyColor.withAlpha(220), + ], + begin: Alignment.topLeft, + end: Alignment.bottomRight, + ), + borderRadius: BorderRadius.circular(24.r), + boxShadow: [ + BoxShadow( + color: AppColors.habibPharmacyColor.withAlpha(76), + blurRadius: 16, + offset: Offset(0, 8), + ), + ], + ), + child: Padding( + padding: EdgeInsets.all(20.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Top Row: User Info and Grid Icon + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + "${appState.getAuthenticatedUser()?.firstName ?? ''} ${appState.getAuthenticatedUser()?.lastName ?? ''}".toText18( + isBold: true, + color: Colors.white, + ), + SizedBox(height: 4.h), + (accountInfo?.accountNumber ?? 0).toString().toText14( + color: Colors.white.withAlpha(230), + ), + ], + ), + ), + Utils.buildImgWithAssets( + icon: AppAssets.lakumLogoWhite, + width: 110.h, + height: 100.h, + ), + ], + ), + // SizedBox(height: 24.h), + LocaleKeys.lakumPoints.tr().toText18(color: Colors.white.withAlpha(230), isBold: true), + SizedBox(height: 8.h), + + // Points Balance + Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + (accountInfo?.pointsBalance?.toString() ?? "0").toText44( + isBold: true, + color: Colors.white, + ), + SizedBox(width: 8.w), + LocaleKeys.points + .tr() + .toText18( + color: Colors.white.withAlpha(230), + isBold: true, + ) + .paddingOnly(bottom: 8.h), + ], + ), + SizedBox(height: 4.h), + + // Balance Amount in SAR + "≈ ${accountInfo?.pointsBalanceAmount?.toStringAsFixed(2) ?? "0.00"} SAR".toText18( + color: Colors.white.withAlpha(204), + ), + SizedBox(height: 20.h), + + // Stats Row + Row( + children: [ + Expanded( + child: _buildStatChip( + LocaleKeys.gained.tr(), + accountInfo?.gainedPoints?.toString() ?? "0", + Icons.arrow_circle_up, + ), + ), + SizedBox(width: 8.w), + Expanded( + child: _buildStatChip( + LocaleKeys.consumed.tr(), + accountInfo?.consumedPoints?.toString() ?? "0", + Icons.arrow_circle_down, + ), + ), + SizedBox(width: 8.w), + Expanded( + child: _buildStatChip( + LocaleKeys.expired.tr(), accountInfo?.expiredPoints?.toString() ?? "0", Icons.calendar_month, + isSvg: true + ), + ), + ], + ), + ], + ), + ), + ); + } + + Widget _buildStatChip(String label, String value, IconData icon, {bool isSvg = false}) { + return Container( + padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 10.h), + decoration: BoxDecoration( + color: Colors.white.withAlpha(51), + borderRadius: BorderRadius.circular(12.r), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + isSvg ? Utils.buildSvgWithAssets(icon: AppAssets.expired_icon, width: 15.w, height: 15.h, applyThemeColor: false) : Icon(icon, color: Colors.white, size: 16.f), + SizedBox(width: 6.w), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + value.toText14(color: Colors.white, isBold: true), + label.toText10(color: Colors.white.withAlpha(204)), + ], + ), + ], + ), + ); + } + + Widget _buildRedeemButton(BuildContext context) { + return CustomButton( + height: 46.h, + icon: AppAssets.redeem_icon, + iconColor: AppColors.textColor, + iconSize: 24.h, + backgroundColor: AppColors.habibPharmacyColor, + textColor: AppColors.textColor, + text: LocaleKeys.redeem.tr(context: context), + borderWidth: 0.w, + fontWeight: FontWeight.w600, + borderColor: AppColors.habibPharmacyColor.withAlpha(15), + padding: EdgeInsets.fromLTRB(4, 0, 12, 0), + fontSize: 14.f, + onPressed: () { + Uri uri = Uri.parse(PHARMACY_REDIRECT_URL); + launchUrl(uri, mode: LaunchMode.externalApplication); + }, + ); + } + + Widget _buildEmptyTransactions() { + return Container( + padding: EdgeInsets.all(32.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 16.r, + hasShadow: false, + ), + child: Center( + child: Column( + children: [ + Icon(Icons.receipt_long_outlined, size: 48.f, color: AppColors.greyTextColor), + SizedBox(height: 12.h), + "No transactions found".toText14( + color: AppColors.greyTextColor, + isCenter: true, + ), + ], + ), + ), + ); + } + + Widget _buildTransactionsList(List transactions) { + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 16.r, + hasShadow: false, + ), + child: ListView.separated( + padding: EdgeInsets.all(16.w), + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + itemCount: transactions.length, + separatorBuilder: (context, index) => Divider( + color: AppColors.dividerColor, + height: 24.h, + ), + itemBuilder: (context, index) { + return _buildTransactionItem(transactions[index]); + }, + ), + ); + } + + Widget _buildTransactionItem(PointsDetails transaction) { + // Determine if points were gained or used + bool isGained = transaction.subTransactionType == 1 || transaction.operationType?.toLowerCase() == 'cr' || (transaction.points ?? 0) > 0; + + Color transactionColor = isGained ? AppColors.habibPharmacyColor : AppColors.primaryRedColor; + String pointsText = "${isGained ? '+' : '-'}${transaction.points?.abs() ?? 0}"; + + // Format date + String formattedDate = ""; + if (transaction.transactionDate != null) { + try { + formattedDate = DateUtil.formatDateToDate( + DateUtil.convertStringToDate(transaction.transactionDate!), + false, + ); + } catch (e) { + formattedDate = transaction.transactionDate ?? ""; + } + } + + return Row( + children: [ + // Transaction Icon + // Container( + // width: 44.w, + // height: 44.h, + // decoration: BoxDecoration( + // color: transactionColor.withAlpha(25), + // borderRadius: BorderRadius.circular(12.r), + // ), + // child: Icon( + // isGained ? Icons.add_rounded : Icons.remove_rounded, + // color: transactionColor, + // size: 24.f, + // ), + // ), + // SizedBox(width: 12.w), + + // Transaction Details + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (isGained ? LocaleKeys.earned.tr() : LocaleKeys.consumed.tr()).toText14( + isBold: true, + maxlines: 2, + ), + SizedBox(height: 2.h), + Directionality( + textDirection: ui.TextDirection.ltr, + child: formattedDate.toText12(color: AppColors.greyTextColor), + ), + ], + ), + ), + + // Points Value + Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + pointsText.toText18( + isBold: true, + color: transactionColor, + ), + // if (transaction.amount != null && transaction.amount! > 0) + // "${transaction.amount?.toStringAsFixed(2) ?? "0.00"} SAR".toText11( + // color: AppColors.greyTextColor, + // ), + ], + ), + ], + ); + } +} + +// Custom painter for wavy background pattern +class _WavyBackgroundPainter extends CustomPainter { + @override + void paint(Canvas canvas, Size size) { + // Base color from AppColors + final baseColor = AppColors.habibPharmacyColor; + + final paint = Paint() + ..color = Colors.white.withAlpha(25) + ..style = PaintingStyle.fill; + + // Draw multiple wave patterns + final path1 = Path(); + path1.moveTo(0, size.height * 0.3); + path1.quadraticBezierTo( + size.width * 0.25, + size.height * 0.2, + size.width * 0.5, + size.height * 0.3, + ); + path1.quadraticBezierTo( + size.width * 0.75, + size.height * 0.4, + size.width, + size.height * 0.3, + ); + path1.lineTo(size.width, 0); + path1.lineTo(0, 0); + path1.close(); + canvas.drawPath(path1, paint); + + // Second wave with darker shade + paint.color = Colors.black.withAlpha(15); + final path2 = Path(); + path2.moveTo(0, size.height * 0.6); + path2.quadraticBezierTo( + size.width * 0.3, + size.height * 0.5, + size.width * 0.6, + size.height * 0.6, + ); + path2.quadraticBezierTo( + size.width * 0.8, + size.height * 0.7, + size.width, + size.height * 0.6, + ); + path2.lineTo(size.width, size.height); + path2.lineTo(0, size.height); + path2.close(); + canvas.drawPath(path2, paint); + + // Decorative circles with white overlay + paint.color = Colors.white.withAlpha(20); + canvas.drawCircle(Offset(size.width * 0.85, size.height * 0.15), 30, paint); + paint.color = Colors.white.withAlpha(10); + canvas.drawCircle(Offset(size.width * 0.15, size.height * 0.75), 40, paint); + } + + @override + bool shouldRepaint(covariant CustomPainter oldDelegate) => false; +} diff --git a/lib/presentation/home/landing_page.dart b/lib/presentation/home/landing_page.dart index a7ae78b9..85f1e972 100644 --- a/lib/presentation/home/landing_page.dart +++ b/lib/presentation/home/landing_page.dart @@ -1,6 +1,8 @@ import 'dart:async'; import 'dart:developer'; +import 'dart:ui' as ui; +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; @@ -10,7 +12,6 @@ import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/cache_consts.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; -import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; @@ -27,41 +28,52 @@ import 'package:hmg_patient_app_new/features/immediate_livecare/immediate_liveca import 'package:hmg_patient_app_new/features/insurance/insurance_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/appointment_rating_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_queue_details_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/notifications/notifications_view_model.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/paytabs_view_model.dart'; import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/appointments/appointment_queue_page.dart'; import 'package:hmg_patient_app_new/presentation/appointments/my_appointments_page.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/appointment_card.dart'; +import 'package:hmg_patient_app_new/presentation/authentication/login.dart'; import 'package:hmg_patient_app_new/presentation/authentication/quick_login.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/book_appointment_page.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/livecare/immediate_livecare_pending_request_page.dart'; import 'package:hmg_patient_app_new/presentation/contact_us/contact_us.dart'; -import 'package:hmg_patient_app_new/presentation/emergency_services/er_online_checkin/er_online_checkin_home.dart'; import 'package:hmg_patient_app_new/presentation/hmg_services/services_page.dart'; +import 'package:hmg_patient_app_new/presentation/home/app_update_page.dart'; import 'package:hmg_patient_app_new/presentation/home/data/landing_page_data.dart'; import 'package:hmg_patient_app_new/presentation/home/widgets/habib_wallet_card.dart'; +import 'package:hmg_patient_app_new/presentation/home/widgets/lakum_wallet_card.dart'; import 'package:hmg_patient_app_new/presentation/home/widgets/large_service_card.dart'; import 'package:hmg_patient_app_new/presentation/home/widgets/small_service_card.dart'; import 'package:hmg_patient_app_new/presentation/home/widgets/welcome_widget.dart'; +import 'package:hmg_patient_app_new/presentation/insurance/widgets/insurance_update_details_card.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/medical_file_page.dart'; +import 'package:hmg_patient_app_new/presentation/my_family/my_family.dart'; import 'package:hmg_patient_app_new/presentation/notifications/notifications_list_page.dart'; -import 'package:hmg_patient_app_new/presentation/profile_settings/profile_settings.dart'; +import 'package:hmg_patient_app_new/presentation/offers_and_discounts/offers_and_discounts_page.dart'; +import 'package:hmg_patient_app_new/presentation/offers_and_discounts/widgets/offers_and_discounts.dart'; import 'package:hmg_patient_app_new/presentation/rate_appointment/rate_appointment_doctor.dart'; import 'package:hmg_patient_app_new/presentation/todo_section/ancillary_procedures_details_page.dart'; +import 'package:hmg_patient_app_new/presentation/todo_section/todo_page.dart'; import 'package:hmg_patient_app_new/presentation/todo_section/widgets/ancillary_orders_list.dart'; import 'package:hmg_patient_app_new/routes/app_routes.dart'; import 'package:hmg_patient_app_new/services/cache_service.dart'; -import 'package:hmg_patient_app_new/services/zoom_service.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/countdown_timer.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; -import 'package:hmg_patient_app_new/widgets/routes/spring_page_route_builder.dart'; +import 'package:hmg_patient_app_new/widgets/user_avatar_widget.dart'; +import 'package:lottie/lottie.dart'; import 'package:provider/provider.dart'; +import 'package:smooth_corner/smooth_corner.dart'; import '../emergency_services/call_ambulance/widgets/HospitalBottomSheetBody.dart'; @@ -92,14 +104,19 @@ class _LandingPageState extends State { final ScrollController _horizontalScrollController = ScrollController(); + final ScrollController _scrollController = ScrollController(); + double _scrollOpacity = 0.0; + @override void dispose() { _horizontalScrollController.dispose(); + _scrollController.dispose(); super.dispose(); } @override void initState() { + Clarity.setCurrentScreenName('Landing Page'); authVM = context.read(); habibWalletVM = context.read(); appointmentRatingViewModel = context.read(); @@ -110,10 +127,29 @@ class _LandingPageState extends State { showQuickLogin(context); }); } - scheduleMicrotask(() { + + _scrollController.addListener(() { + final scrollOffset = _scrollController.offset; + final newOpacity = (scrollOffset / 50).clamp(0.0, 1.0); + if (_scrollOpacity != newOpacity) { + setState(() { + _scrollOpacity = newOpacity; + }); + } + }); + + scheduleMicrotask(() async { + if (!appState.isAuthenticated) { + // LoaderBottomSheet.showLoader(); + await authVM.handleNewImeiRegistration(isNavigate: false); + } + if (appState.isAuthenticated) { + Clarity.setCustomUserId(appState.getAuthenticatedUser()!.patientId.toString()); + habibWalletVM.initHabibWalletProvider(); habibWalletVM.getPatientBalanceAmount(); + habibWalletVM.getLakumAccountInformation(); todoSectionViewModel.initializeTodoSectionViewModel(); immediateLiveCareViewModel.initImmediateLiveCare(); immediateLiveCareViewModel.getPatientLiveCareHistory(); @@ -122,25 +158,31 @@ class _LandingPageState extends State { emergencyServicesViewModel.checkPatientERAdvanceBalance(); // myAppointmentsViewModel.getPatientAppointmentQueueDetails(); notificationsViewModel.initNotificationsViewModel(); + insuranceViewModel.initInsuranceProvider(); - // Commented as per new requirement to remove rating popup from the app - - // if(!appState.isRatedVisible) { - // appointmentRatingViewModel.getLastRatingAppointment(onSuccess: (response) { - // if (appointmentRatingViewModel.appointmentRatedList.isNotEmpty) { - // appointmentRatingViewModel.getAppointmentDetails(appointmentRatingViewModel.appointmentRatedList.last.appointmentNo!, appointmentRatingViewModel.appointmentRatedList.last.projectID!, - // onSuccess: ((response) { - // appointmentRatingViewModel.setClinicOrDoctor(false); - // appointmentRatingViewModel.setTitle("Rate Doctor".needTranslation); - // appointmentRatingViewModel.setSubTitle("How was your last visit with doctor?".needTranslation); - // openLastRating(); - // appState.setRatedVisible(true); - // }), - // ); - // } - // }, - // ); - // } + if (!appState.isRatedVisible) { + appointmentRatingViewModel.getLastRatingAppointment( + onSuccess: (response) { + if (appointmentRatingViewModel.appointmentRatedList.isNotEmpty) { + final lastAppointment = appointmentRatingViewModel.appointmentRatedList.last; + final appointmentNo = lastAppointment.appointmentNo; + final projectID = lastAppointment.projectID; + if (appointmentNo == null || projectID == null) return; + appointmentRatingViewModel.getAppointmentDetails( + appointmentNo, + projectID, + onSuccess: ((response) { + appointmentRatingViewModel.setClinicOrDoctor(false); + appointmentRatingViewModel.setTitle(LocaleKeys.rateDoctor.tr(context: context)); + appointmentRatingViewModel.setSubTitle(LocaleKeys.howWasYourLastVisitWithDoctor.tr(context: context)); + openLastRating(); + appState.setRatedVisible(true); + }), + ); + } + }, + ); + } } }); super.initState(); @@ -160,197 +202,305 @@ class _LandingPageState extends State { canPop: false, child: Scaffold( backgroundColor: AppColors.bgScaffoldColor, - body: SingleChildScrollView( - padding: EdgeInsets.only(top: kToolbarHeight + 0.h, bottom: 24), - child: Column( - spacing: 16.h, + body: Consumer(builder: (context, insuranceVM, child) { + return Stack( children: [ - Row( - spacing: 8.h, - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - appState.isAuthenticated - ? WelcomeWidget( - onTap: () { - Navigator.of(context).push(springPageRoute(ProfileSettings())); - }, - name: ('${appState.getAuthenticatedUser()!.firstName!} ${appState.getAuthenticatedUser()!.lastName!}'), - imageUrl: appState.getAuthenticatedUser()?.gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, - ).expanded - : CustomButton( - text: LocaleKeys.loginOrRegister.tr(context: context), - onPressed: () async { - await authVM.onLoginPressed(); - - // Navigator.pushReplacementNamed( - // // context, - // context, - // AppRoutes.zoomCallPage, - // // arguments: CallArguments(appointmentID, "111", "Patient", "40", "1", true, 1), - // arguments: CallArguments("test123", "123", "Patient", "40", "0", true, 1), - // // arguments: CallArguments("SmallDailyStandup9875", "123", "Patient", "40", "0", false, int.parse(widget.incomingCallData!.appointmentNo!)), - // ); - }, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 14.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - padding: EdgeInsets.fromLTRB(12.h, 0, 12.h, 0), - height: 40.h, - ), - Consumer(builder: (context, todoSectionVM, child) { - return Row( - mainAxisSize: MainAxisSize.min, - spacing: 18.h, - children: [ - Stack(children: [ - if (appState.isAuthenticated) - Utils.buildSvgWithAssets(icon: AppAssets.bell, height: 24.h, width: 24.h).onPress(() async { - if (appState.isAuthenticated) { - notificationsViewModel.setNotificationStatusID(2); - notificationsViewModel.getAllNotifications(); - Navigator.of(context).push( - CustomPageRoute( - page: NotificationsListPage(), - // page: LoginScreen(), - ), - ); - } else { - await authVM.onLoginPressed(); - } - }), - (appState.isAuthenticated && (int.parse(todoSectionVM.notificationsCount ?? "0") > 0)) - ? Positioned( - right: 0, - top: 0, - child: Container( - width: 8.w, - height: 8.h, - padding: EdgeInsets.all(4), - decoration: BoxDecoration( - color: AppColors.primaryRedColor, - borderRadius: BorderRadius.circular(20.r), - ), - child: Text( - "", - style: TextStyle( - color: Colors.white, - fontSize: 8.f, + RefreshIndicator( + color: AppColors.primaryRedColor, + onRefresh: () async { + if (appState.isAuthenticated) { + // Refresh Appointments Data + myAppointmentsViewModel.setIsAppointmentDataToBeLoaded(true); + myAppointmentsViewModel.initAppointmentsViewModel(); + myAppointmentsViewModel.getPatientAppointments(true, false); + + // Refresh Appointments Data + habibWalletVM.initHabibWalletProvider(); + habibWalletVM.getPatientBalanceAmount(); + habibWalletVM.getLakumAccountInformation(); + + // Refresh Ancillary Orders + todoSectionViewModel.setIsAncillaryOrdersNeedReloading(true); + todoSectionViewModel.initializeTodoSectionViewModel(); + + // Refresh Immediate LiveCare Data + immediateLiveCareViewModel.initImmediateLiveCare(); + immediateLiveCareViewModel.getPatientLiveCareHistory(); + + // appointmentRatingViewModel.getLastRatingAppointment( + // onSuccess: (response) { + // if (appointmentRatingViewModel.appointmentRatedList.isNotEmpty) { + // appointmentRatingViewModel.getAppointmentDetails( + // appointmentRatingViewModel.appointmentRatedList.last.appointmentNo!, + // appointmentRatingViewModel.appointmentRatedList.last.projectID!, + // onSuccess: ((response) { + // appointmentRatingViewModel.setClinicOrDoctor(false); + // appointmentRatingViewModel.setTitle(LocaleKeys.rateDoctor.tr(context: context)); + // appointmentRatingViewModel.setSubTitle(LocaleKeys.howWasYourLastVisitWithDoctor.tr(context: context)); + // openLastRating(); + // appState.setRatedVisible(true); + // }), + // ); + // } + // }, + // ); + + } + }, + child: SingleChildScrollView( + controller: _scrollController, + physics: const AlwaysScrollableScrollPhysics(), + padding: EdgeInsets.only( + top: (appState.isAuthenticated && !insuranceVM.isInsuranceLoading && insuranceVM.isInsuranceExpired && insuranceVM.isInsuranceExpiryBannerShown) + ? (MediaQuery.paddingOf(context).top + 70.h) + : kToolbarHeight + 0.h, + bottom: 24), + child: Column( + spacing: 16.h, + children: [ + Row( + spacing: 8.h, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + appState.isAuthenticated + ? WelcomeWidget( + onTap: () { + // ...existing navigation code... + + Navigator.of(context).push( + CustomPageRoute( + direction: AxisDirection.down, + page: FamilyMedicalScreen(), ), - textAlign: TextAlign.center, - ), + ); + }, + name: ('${appState.getAuthenticatedUser()!.firstName!} ${appState.getAuthenticatedUser()!.lastName!}'), + imageWidget: Selector( + selector: (_, profileVM) => profileVM.profileImageData ?? appState.getProfileImageData, + shouldRebuild: (previous, next) => previous != next, + builder: (context, profileImageData, child) { + // Only rebuild when profile image data changes + return UserAvatarWidget( + key: ValueKey('landing_avatar_${profileImageData?.hashCode ?? 0}'), + width: 42.w, + height: 42.h, + fit: BoxFit.cover, + isCircular: true, + customProfileImageData: profileImageData, + ); + }, ), - ) - : SizedBox.shrink(), - ]), - Utils.buildSvgWithAssets(icon: AppAssets.indoor_nav_icon, height: 24.h, width: 24.w).onPress(() { - openIndoorNavigationBottomSheet(context); - }), - Utils.buildSvgWithAssets(icon: AppAssets.contact_icon, height: 24.h, width: 24.h).onPress(() { - showCommonBottomSheetWithoutHeight( - context, - title: LocaleKeys.contactUs.tr(), - child: ContactUs(), - callBackFunc: () {}, - isFullScreen: false, - ); - }), - !appState.isAuthenticated - ? Utils.buildSvgWithAssets(icon: AppAssets.changeLanguageHomePageIcon, height: 24.h, width: 24.h).onPress(() { - context.setLocale(appState.isArabic() ? Locale('en', 'US') : Locale('ar', 'SA')); - }) - : SizedBox.shrink() - ], - ); - }), - ], - ).paddingSymmetrical(24.h, 0.h), - !appState.isAuthenticated - ? Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.r, - hasShadow: false, - ), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Row( - children: [ - Utils.buildSvgWithAssets( - width: 50.w, - height: 60.h, - icon: AppAssets.symptomCheckerIcon, - fit: BoxFit.contain, - ), - SizedBox(width: 12.w), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - LocaleKeys.howAreYouFeelingToday.tr(context: context).toText14(weight: FontWeight.w600), - LocaleKeys.checkYourSymptomsWithScale.tr(context: context).toText12(fontWeight: FontWeight.w500), - SizedBox(height: 14.h), - CustomButton( - text: LocaleKeys.checkYourSymptoms.tr(context: context), + ).expanded + : CustomButton( + text: LocaleKeys.loginOrRegister.tr(context: context), onPressed: () async { - context.navigateWithName(AppRoutes.userInfoSelection); + await authVM.onLoginPressed(); + + // Navigator.of(context).push( + // CustomPageRoute( + // // page: NotificationsListPage(), + // page: AppUpdatePage( + // appUpdateMessage: + // "A new update for Dr.Alhabib app is now available with new features and services.\r\nFor technical support:\r\neservices.hmg@drsulaimanalhabib.com"), + // ), + // ); + + // ...existing commented code... }, - padding: EdgeInsetsGeometry.zero, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - textColor: Colors.white, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, fontSize: 14.f, - fontWeight: FontWeight.w600, + fontWeight: FontWeight.w700, borderRadius: 12.r, + padding: EdgeInsets.fromLTRB(12.h, 0, 12.h, 0), height: 40.h, ), - ], - ).expanded - ], - ), - ), - ).paddingSymmetrical(24.w, 0.h) - : SizedBox.shrink(), - appState.isAuthenticated - ? Column( - children: [ - SizedBox(height: 12.h), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - LocaleKeys.appointmentsAndVisits.tr(context: context).toText16(weight: FontWeight.w600), - Row( + Consumer(builder: (context, todoSectionVM, child) { + return Row( + mainAxisSize: MainAxisSize.min, + // spacing: 18.h, children: [ - LocaleKeys.viewAll.tr(context: context).toText14(color: AppColors.primaryRedColor, weight: FontWeight.w500), - SizedBox(width: 2.h), - Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), + Stack(clipBehavior: Clip.none, children: [ + if (appState.isAuthenticated) + Utils.buildSvgWithAssets(icon: AppAssets.bell, height: 24.h, width: 24.h).onPress(() async { + if (appState.isAuthenticated) { + notificationsViewModel.setNotificationStatusID(2); + notificationsViewModel.getAllNotifications(); + Navigator.of(context).push( + CustomPageRoute( + page: NotificationsListPage(), + // page: LoginScreen(), + ), + ); + } else { + await authVM.onLoginPressed(); + } + }), + (appState.isAuthenticated && todoSectionVM.notificationsCount != null && todoSectionVM.notificationsCount != "0") + ? Positioned( + // right: appState.isArabic() ? 8.w : -8.w, + top: -8.h, + // left: 4.h, + // bottom: 4.h, + child: Container( + width: 18.w, + height: 18.h, + padding: EdgeInsets.all(2), + decoration: BoxDecoration( + color: AppColors.primaryRedColor, + borderRadius: BorderRadius.circular(20.r), + ), + child: Text( + todoSectionVM.notificationsCount ?? "0", + style: TextStyle( + color: Colors.white, + fontFamily: "Poppins", + fontSize: 10.f, + fontWeight: FontWeight.w600, + ), + textAlign: TextAlign.center, + ), + ), + ) + : SizedBox.shrink(), + ]), + SizedBox( + width: 24.w, + ), + Utils.buildSvgWithAssets(icon: AppAssets.location, height: 24.h, width: 24.w).onPress(() { + // openIndoorNavigationBottomSheet(context); + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.contactUs.tr(), + child: ContactUs(), + callBackFunc: () {}, + isFullScreen: false, + ); + }), + + // Utils.buildSvgWithAssets(icon: AppAssets.contact_icon, height: 24.h, width: 24.h).onPress(() { + // showCommonBottomSheetWithoutHeight( + // context, + // title: LocaleKeys.contactUs.tr(), + // child: ContactUs(), + // callBackFunc: () {}, + // isFullScreen: false, + // ); + // }), + !appState.isAuthenticated + ? Row(children: [ + SizedBox(width: 24.w), + Utils.buildSvgWithAssets(icon: appState.isArabic() ? AppAssets.enLangIcon : AppAssets.arLangIcon, height: 24.h, width: 24.h).onPress(() { + context.setLocale(appState.isArabic() ? Locale('en', 'US') : Locale('ar', 'SA')); + }) + ]) + : SizedBox() ], - ), - ], - ).paddingSymmetrical(24.h, 0.h).onPress(() { - Navigator.of(context).push(CustomPageRoute(page: MyAppointmentsPage())); - }), - SizedBox(height: 16.h), - Consumer3( - builder: (context, myAppointmentsVM, immediateLiveCareVM, todoSectionVM, child) { - return myAppointmentsVM.isMyAppointmentsLoading - ? Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.r, - hasShadow: true, + ); + }), + ], + ).paddingSymmetrical(24.h, 0.h), + !appState.isAuthenticated + ? Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: false, + ), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Row( + children: [ + Utils.buildSvgWithAssets( + width: 50.w, + height: 60.h, + icon: AppAssets.symptomCheckerIcon, + fit: BoxFit.contain, ), - child: AppointmentCard( - patientAppointmentHistoryResponseModel: PatientAppointmentHistoryResponseModel(), - myAppointmentsViewModel: myAppointmentsViewModel, - bookAppointmentsViewModel: bookAppointmentsViewModel, - isLoading: true, - isFromHomePage: true, + SizedBox(width: 12.w), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.howAreYouFeelingToday.tr(context: context).toText14(isBold: true), + LocaleKeys.checkYourSymptomsWithScale.tr(context: context).toText12(isBold: true), + SizedBox(height: 14.h), + CustomButton( + text: LocaleKeys.checkYourSymptoms.tr(context: context), + onPressed: () async { + context.navigateWithName(AppRoutes.userInfoSelection); + }, + padding: EdgeInsetsGeometry.zero, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: Colors.white, + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + height: 40.h, + ), + ], + ).expanded + ], + ), + ), + ).paddingSymmetrical(24.w, 0.h) + : SizedBox.shrink(), + + // Offers And Discounts Carousel - Auto-scrolling from right to left + // appState.isAuthenticated && appState.isEnabledOffersAndDiscountsCarousel + // ? Column( + // children: [ + // SizedBox(height: 12.h), + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // ("${LocaleKeys.offers.tr(context: context)} & ${LocaleKeys.discount.tr(context: context)}").toText16(isBold: true), + // Row( + // children: [ + // LocaleKeys.viewAll.tr(context: context).toText14(color: AppColors.primaryRedColor, isBold: true), + // SizedBox(width: 2.h), + // Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), + // ], + // ), + // ], + // ).paddingSymmetrical(24.h, 0.h).onPress(() { + // Navigator.of(context).push(CustomPageRoute(page: OffersAndDiscountsPage())); + // }), + // SizedBox(height: 16.h), + // OffersAndDiscountsCarousel().paddingSymmetrical(24.h, 0.h), + // SizedBox(height: 18.h), + // ], + // ) + // : SizedBox.shrink(), + + appState.isAuthenticated + ? Column( + children: [ + SizedBox(height: 12.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.appointmentsAndVisits.tr(context: context).toText16(isBold: true), + Row( + children: [ + LocaleKeys.viewAll.tr(context: context).toText14(color: AppColors.primaryRedColor, isBold: true), + SizedBox(width: 2.h), + Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), + ], ), - ).paddingSymmetrical(24.h, 0.h) - : myAppointmentsVM.patientAppointmentsHistoryList.isNotEmpty - ? myAppointmentsVM.patientAppointmentsHistoryList.length == 1 + ], + ).paddingSymmetrical(24.h, 0.h).onPress(() { + myAppointmentsViewModel.onTabChange(0); + myAppointmentsViewModel.updateListWRTTab(0); + Navigator.of(context).push(CustomPageRoute(page: MyAppointmentsPage())); + + // getIt.get().setPaymentConfiguration("Appointment Payment", 15.5); + // getIt.get().startCardPayment(); + }), + Consumer3( + builder: (context, myAppointmentsVM, immediateLiveCareVM, todoSectionVM, child) { + return myAppointmentsVM.isMyAppointmentsLoading ? Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, @@ -358,335 +508,508 @@ class _LandingPageState extends State { hasShadow: true, ), child: AppointmentCard( - patientAppointmentHistoryResponseModel: myAppointmentsVM.patientAppointmentsHistoryList.first, + patientAppointmentHistoryResponseModel: PatientAppointmentHistoryResponseModel(), myAppointmentsViewModel: myAppointmentsViewModel, bookAppointmentsViewModel: bookAppointmentsViewModel, - isLoading: false, + isLoading: true, isFromHomePage: true, ), - ).paddingSymmetrical(24.h, 0.h) - : isTablet - ? SizedBox( - height: isFoldable ? 290.h : 255.h, - child: ListView.separated( - scrollDirection: Axis.horizontal, - itemCount: 3, - shrinkWrap: true, - padding: EdgeInsets.only(left: 16.h, right: 16.h), - itemBuilder: (context, index) { - return SizedBox( - height: 255.h, - width: 250.w, - child: getIndexSwiperCard(index), - ); - // return AnimationConfiguration.staggeredList( - // position: index, - // duration: const Duration(milliseconds: 1000), - // child: SlideAnimation( - // horizontalOffset: 100.0, - // child: FadeInAnimation( - // child: SizedBox( - // height: 255.h, - // width: 250.w, - // child: getIndexSwiperCard(index), - // ), - // ), - // ), - // ); - }, - separatorBuilder: (BuildContext cxt, int index) => SizedBox( - width: 10.w, + ).paddingSymmetrical(24.h, 16.h) + : myAppointmentsVM.patientAppointmentsHistoryList.isNotEmpty + ? myAppointmentsVM.patientAppointmentsHistoryList.length == 1 && !immediateLiveCareVM.patientHasPendingLiveCareRequest + ? Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: true, + ), + child: AppointmentCard( + patientAppointmentHistoryResponseModel: myAppointmentsVM.patientAppointmentsHistoryList.first, + myAppointmentsViewModel: myAppointmentsViewModel, + bookAppointmentsViewModel: bookAppointmentsViewModel, + isLoading: false, + isFromHomePage: true, + ), + ).paddingSymmetrical(24.h, 0.h) + : isTablet + ? SizedBox( + height: isTablet ? 290.h : 255.h, + child: ListView.separated( + scrollDirection: Axis.horizontal, + itemCount: () { + final int baseCount = + myAppointmentsVM.patientAppointmentsHistoryList.length + (immediateLiveCareVM.patientHasPendingLiveCareRequest ? 1 : 0); + return baseCount < 3 ? baseCount : 3; + }(), + shrinkWrap: true, + padding: EdgeInsets.only(left: 16.h, right: 16.h), + itemBuilder: (context, index) { + return SizedBox( + height: isTablet ? 290.h : 255.h, + width: 250.w, + child: getIndexSwiperCard(index), + ); + // return AnimationConfiguration.staggeredList( + // position: index, + // duration: const Duration(milliseconds: 1000), + // child: SlideAnimation( + // horizontalOffset: 100.0, + // child: FadeInAnimation( + // child: SizedBox( + // height: 255.h, + // width: 250.w, + // child: getIndexSwiperCard(index), + // ), + // ), + // ), + // ); + }, + separatorBuilder: (BuildContext cxt, int index) => SizedBox( + width: 10.w, + ), + ), + ) + : SizedBox( + height: 255.h + 20 + 30, // itemHeight + shadow padding (10 top + 10 bottom) + pagination dots space + child: Builder( + builder: (context) { + final int baseAppointmentCount = myAppointmentsVM.patientAppointmentsHistoryList.length; + final int liveCareCount = immediateLiveCareVM.patientHasPendingLiveCareRequest ? 1 : 0; + final int totalCount = baseAppointmentCount + liveCareCount; + + final int swiperItemCount = myAppointmentsVM.isMyAppointmentsLoading + ? 3 + : totalCount < 3 + ? totalCount + : 3; + final bool isArabic = appState.isArabic(); + return Swiper( + itemCount: swiperItemCount, + layout: SwiperLayout.STACK, + loop: false, + itemWidth: MediaQuery.of(context).size.width - 48.h, + indicatorLayout: PageIndicatorLayout.COLOR, + axisDirection: isArabic ? AxisDirection.right : AxisDirection.left, + controller: _controller, + index: isArabic ? swiperItemCount - 1 : 0, + itemHeight: 255.h + 20, + // extra space for shadow + pagination: SwiperPagination( + alignment: Alignment.bottomCenter, + margin: EdgeInsets.only(top: 220.h + 20 + 8 + 24), + builder: _DirectionalDotPaginationBuilder( + color: Color(0xffD9D9D9), + activeColor: AppColors.blackBgColor, + isRTL: isArabic, + totalCount: swiperItemCount, + ), + ), + itemBuilder: (BuildContext context, int index) { + final int actualIndex = isArabic ? (swiperItemCount - 1 - index) : index; + return Padding( + padding: const EdgeInsets.symmetric(vertical: 10), + child: getIndexSwiperCard(actualIndex), + ); + }, + ); + }, + ), + ) + : immediateLiveCareVM.patientHasPendingLiveCareRequest + ? _buildLiveCareRequestCard().paddingSymmetrical(24.h, 16.h) + : Container( + width: double.infinity, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Column( + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.home_calendar_icon, width: 32.h, height: 32.h), + SizedBox(height: 12.h), + LocaleKeys.noUpcomingAppointmentPleaseBook.tr(context: context).toText12(isCenter: true), + SizedBox(height: 12.h), + CustomButton( + text: LocaleKeys.bookAppo.tr(context: context), + onPressed: () { + getIt.get().onTabChanged(0); + Navigator.of(context).push(CustomPageRoute(page: BookAppointmentPage())); + }, + backgroundColor: Color(0xffFEE9EA), + borderColor: Color(0xffFEE9EA), + textColor: Color(0xffED1C2B), + fontSize: 14.f, + fontWeight: FontWeight.w600, + padding: EdgeInsets.fromLTRB(10.h, 0, 10.h, 0), + icon: AppAssets.add_icon, + iconColor: AppColors.primaryRedColor, + height: 40.h, + ), + ], + ), + ), + ).paddingSymmetrical(24.h, 16.h); + }, + ), + + // Consumer for ER Online Check-In pending request + // Consumer( + // builder: (context, emergencyServicesVM, child) { + // return emergencyServicesVM.patientHasAdvanceERBalance + // ? Column( + // children: [ + // SizedBox(height: 16.h), + // Container( + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // color: AppColors.whiteColor, + // borderRadius: 20.r, + // hasShadow: false, + // side: BorderSide(color: AppColors.primaryRedColor, width: 3.h), + // ), + // width: double.infinity, + // child: Padding( + // padding: EdgeInsets.all(16.h), + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // // Row( + // // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // // children: [ + // // AppCustomChipWidget( + // // labelText: LocaleKeys.erOnlineCheckInRequest.tr(context: context), + // // backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.10), + // // textColor: AppColors.primaryRedColor, + // // ), + // // Utils.buildSvgWithAssets(icon: AppAssets.appointment_checkin_icon, width: 24.h, height: 24.h, iconColor: AppColors.primaryRedColor), + // // ], + // // ), + // SizedBox(height: 8.h), + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // LocaleKeys.youHaveEROnlineCheckInRequest.tr(context: context).toText12(isBold: true), + // Transform.flip( + // flipX: getIt.get().isArabic(), + // child: Utils.buildSvgWithAssets( + // icon: AppAssets.forward_arrow_icon_small, + // iconColor: AppColors.blackColor, + // width: 20.h, + // height: 15.h, + // fit: BoxFit.contain, + // ), + // ), + // ], + // ), + // ], + // ), + // ), + // ).paddingSymmetrical(24.h, 0.h).onPress(() { + // Navigator.of(context).push(CustomPageRoute(page: ErOnlineCheckinHome())); + // // context.read().navigateToEROnlineCheckIn(); + // }), + // SizedBox(height: 12.h), + // ], + // ) + // : SizedBox(height: 0.h); + // }, + // ), + SizedBox(height: 16.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.quickLinks.tr(context: context).toText16(isBold: true), + Row( + children: [ + LocaleKeys.viewMedicalFileLandingPage.tr(context: context).toText14(color: AppColors.primaryRedColor, isBold: true), + SizedBox(width: 2.h), + Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), + ], + ), + ], + ).paddingSymmetrical(24.h, 0.h).onPress(() { + Navigator.of(context).push(CustomPageRoute(page: MedicalFilePage())); + }), + SizedBox(height: 16.h), + Consumer(builder: (BuildContext context, TodoSectionViewModel todoSectionVM, Widget? child) { + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r), + child: Column( + children: [ + todoSectionVM.patientAncillaryOrdersList.isNotEmpty + ? Container( + height: 50.h, + decoration: ShapeDecoration( + color: AppColors.eReferralCardColor.withAlpha(50), + shape: SmoothRectangleBorder( + borderRadius: BorderRadius.only(topLeft: Radius.circular(24), topRight: Radius.circular(24)), + smoothness: 1, ), ), - ) - : Swiper( - itemCount: myAppointmentsVM.isMyAppointmentsLoading - ? 3 - : myAppointmentsVM.patientAppointmentsHistoryList.length < 3 - ? myAppointmentsVM.patientAppointmentsHistoryList.length - : 3, - layout: SwiperLayout.STACK, - loop: true, - itemWidth: MediaQuery.of(context).size.width - 48.h, - indicatorLayout: PageIndicatorLayout.COLOR, - axisDirection: AxisDirection.right, - controller: _controller, - itemHeight: 255.h, - pagination: SwiperPagination( - alignment: Alignment.bottomCenter, - margin: EdgeInsets.only(top: 240.h + 8 + 24), - builder: DotSwiperPaginationBuilder(color: Color(0xffD9D9D9), activeColor: AppColors.blackBgColor), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.pendingAncillaryOrders.tr(context: context).toText14(color: AppColors.eReferralCardColor, isBold: true).paddingSymmetrical(24.h, 0.h), + CustomButton( + text: LocaleKeys.view.tr(context: context), + onPressed: () { + todoSectionVM.setIsAncillaryOrdersNeedReloading(true); + Navigator.of(context).push(CustomPageRoute(page: ToDoPage())); + }, + backgroundColor: AppColors.eReferralCardColor, + borderColor: AppColors.eReferralCardColor, + textColor: AppColors.whiteColor, + fontSize: 10.f, + fontWeight: FontWeight.w600, + borderRadius: 8, + padding: EdgeInsets.fromLTRB(15, 0, 15, 0), + height: 30.h, + ).paddingSymmetrical(24.h, 0.h), + ], ), - itemBuilder: (BuildContext context, int index) { - return getIndexSwiperCard(index); - }, ) - : Container( - width: double.infinity, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), - child: Padding( - padding: EdgeInsets.all(16.h), - child: Column( - children: [ - Utils.buildSvgWithAssets(icon: AppAssets.home_calendar_icon, width: 32.h, height: 32.h), - SizedBox(height: 12.h), - LocaleKeys.noUpcomingAppointmentPleaseBook.tr(context: context).toText12(isCenter: true), - SizedBox(height: 12.h), - CustomButton( - text: LocaleKeys.bookAppo.tr(context: context), - onPressed: () { - getIt.get().onTabChanged(0); - Navigator.of(context).push(CustomPageRoute(page: BookAppointmentPage())); - }, - backgroundColor: Color(0xffFEE9EA), - borderColor: Color(0xffFEE9EA), - textColor: Color(0xffED1C2B), - fontSize: 14.f, - fontWeight: FontWeight.w500, - padding: EdgeInsets.fromLTRB(10.h, 0, 10.h, 0), - icon: AppAssets.add_icon, - iconColor: AppColors.primaryRedColor, - height: 40.h, - ), - ], - ), - ), - ).paddingSymmetrical(24.h, 0.h); - }, - ), - - // Consumer for ER Online Check-In pending request - Consumer( - builder: (context, emergencyServicesVM, child) { - return emergencyServicesVM.patientHasAdvanceERBalance - ? Column( - children: [ - SizedBox(height: 16.h), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.r, - hasShadow: true, - side: BorderSide(color: AppColors.primaryRedColor, width: 3.h), - ), - width: double.infinity, - child: Padding( - padding: EdgeInsets.all(16.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - AppCustomChipWidget( - labelText: LocaleKeys.erOnlineCheckInRequest.tr(context: context), - backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.10), - textColor: AppColors.primaryRedColor, - ), - Utils.buildSvgWithAssets(icon: AppAssets.appointment_checkin_icon, width: 24.h, height: 24.h, iconColor: AppColors.primaryRedColor), - ], - ), - SizedBox(height: 8.h), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - LocaleKeys.youHaveEROnlineCheckInRequest.tr(context: context).toText12(isBold: true), - Transform.flip( - flipX: getIt.get().isArabic(), - child: Utils.buildSvgWithAssets( - icon: AppAssets.forward_arrow_icon_small, - iconColor: AppColors.blackColor, - width: 20.h, - height: 15.h, - fit: BoxFit.contain, + : SizedBox.shrink(), + SizedBox( + height: 92.h + 32.h - 4.h, + child: RawScrollbar( + controller: _horizontalScrollController, + thumbVisibility: true, + radius: Radius.circular(10.0), + thumbColor: AppColors.primaryRedColor, + trackVisibility: true, + trackColor: Color(0xffD9D9D9), + trackBorderColor: Colors.transparent, + trackRadius: Radius.circular(10.0), + padding: EdgeInsets.only(top: 92.h + 32.h, left: MediaQuery.sizeOf(context).width / 2.5 - 10, right: MediaQuery.sizeOf(context).width / 2.5 - 10), + child: ListView.separated( + scrollDirection: Axis.horizontal, + itemCount: LandingPageData().getLoggedInServiceCardsList.length, + shrinkWrap: true, + controller: _horizontalScrollController, + padding: EdgeInsets.only(left: 0.h, right: 0.h, top: 16.h, bottom: 12.h), + itemBuilder: (context, index) { + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 200), + child: SlideAnimation( + horizontalOffset: 100.0, + child: FadeInAnimation( + child: SmallServiceCard( + icon: LandingPageData().getLoggedInServiceCardsList[index].icon, + title: LandingPageData().getLoggedInServiceCardsList[index].title, + subtitle: LandingPageData().getLoggedInServiceCardsList[index].subtitle, + iconColor: LandingPageData().getLoggedInServiceCardsList[index].iconColor!, + textColor: LandingPageData().getLoggedInServiceCardsList[index].textColor, + backgroundColor: LandingPageData().getLoggedInServiceCardsList[index].backgroundColor, + isBold: LandingPageData().getLoggedInServiceCardsList[index].isBold, + serviceName: LandingPageData().getLoggedInServiceCardsList[index].serviceName, + ), ), ), - ], - ), - ], + ); + }, + separatorBuilder: (BuildContext cxt, int index) => 10.width, + ).paddingSymmetrical(16.h, 0.h), ), ), - ).paddingSymmetrical(24.h, 0.h).onPress(() { - Navigator.of(context).push(CustomPageRoute(page: ErOnlineCheckinHome())); - // context.read().navigateToEROnlineCheckIn(); - }), - SizedBox(height: 12.h), - ], - ) - : SizedBox(height: 0.h); + SizedBox(height: 16.h), + ], + ), + ).paddingSymmetrical(24.h, 0.h); + }), + ], + ) + : Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r), + child: Column( + children: [ + SizedBox( + height: 92.h + 32.h - 4.h, + child: RawScrollbar( + controller: _horizontalScrollController, + thumbVisibility: true, + radius: Radius.circular(10.0), + thumbColor: AppColors.primaryRedColor, + trackVisibility: true, + trackColor: Color(0xffD9D9D9), + trackBorderColor: Colors.transparent, + trackRadius: Radius.circular(10.0), + padding: EdgeInsets.only(top: 92.h + 32.h, left: MediaQuery.sizeOf(context).width / 2.5 - 10, right: MediaQuery.sizeOf(context).width / 2.5 - 10), + child: ListView.separated( + scrollDirection: Axis.horizontal, + itemCount: LandingPageData.getNotLoggedInServiceCardsList.length, + shrinkWrap: true, + controller: _horizontalScrollController, + padding: EdgeInsets.only(left: 0.h, right: 0.h, top: 16.h, bottom: 12.h), + itemBuilder: (context, index) { + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 1000), + child: SlideAnimation( + horizontalOffset: 100.0, + child: FadeInAnimation( + child: SmallServiceCard( + serviceName: LandingPageData.getNotLoggedInServiceCardsList[index].serviceName, + icon: LandingPageData.getNotLoggedInServiceCardsList[index].icon, + title: LandingPageData.getNotLoggedInServiceCardsList[index].title, + subtitle: LandingPageData.getNotLoggedInServiceCardsList[index].subtitle, + iconColor: LandingPageData.getNotLoggedInServiceCardsList[index].iconColor!, + textColor: LandingPageData.getNotLoggedInServiceCardsList[index].textColor, + backgroundColor: LandingPageData.getNotLoggedInServiceCardsList[index].backgroundColor, + isBold: LandingPageData.getNotLoggedInServiceCardsList[index].isBold, + ), + ), + ), + ); + }, + separatorBuilder: (BuildContext cxt, int index) => 0.width, + ).paddingSymmetrical(16.h, 0.h), + ), + ), + SizedBox(height: 16.h), + ], + ), + ).paddingSymmetrical(24.h, 0.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.services2.tr(context: context).toText18(isBold: true), + Row( + children: [ + LocaleKeys.viewAll.tr(context: context).toText14(color: AppColors.primaryRedColor, isBold: true), + SizedBox(width: 2.h), + Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), + ], + ).onPress(() { + Navigator.of(context).push(CustomPageRoute(page: ServicesPage())); + }), + ], + ).paddingSymmetrical(24.w, 0.h), + ConstrainedBox( + constraints: BoxConstraints(maxHeight: isFoldable ? 450.h : (isTablet ? 440.h : 431.h), minHeight: 411.h), + child: ListView.separated( + scrollDirection: Axis.horizontal, + itemCount: LandingPageData.getServiceCardsList.length, + shrinkWrap: true, + padding: EdgeInsets.only(left: 24.w, right: 24.w), + itemBuilder: (context, index) { + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 1000), + child: SlideAnimation( + horizontalOffset: 100.0, + child: FadeInAnimation( + child: FadedLargeServiceCard( + serviceCardData: LandingPageData.getServiceCardsList[index], + image: LandingPageData.getServiceCardsList[index].icon, + title: LandingPageData.getServiceCardsList[index].title, + subtitle: LandingPageData.getServiceCardsList[index].subtitle, + icon: LandingPageData.getServiceCardsList[index].largeCardIcon, + isPNG: LandingPageData.getServiceCardsList[index].isPNG, + ), + ), + ), + ); }, + separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 16.w), ), - SizedBox(height: 16.h), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - LocaleKeys.quickLinks.tr(context: context).toText16(weight: FontWeight.w600), - Row( + ), + appState.isAuthenticated + ? Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.viewMedicalFile.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), - SizedBox(width: 2.h), - Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), - ], - ), - ], - ).paddingSymmetrical(24.h, 0.h).onPress(() { - Navigator.of(context).push(CustomPageRoute(page: MedicalFilePage())); - }), - SizedBox(height: 16.h), - Container( - // height: 121.h, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r), - child: Column( - children: [ - SizedBox( - height: 92.h + 32.h - 4.h, - child: RawScrollbar( - controller: _horizontalScrollController, - thumbVisibility: true, - radius: Radius.circular(10.0), - thumbColor: AppColors.primaryRedColor, - trackVisibility: true, - trackColor: Color(0xffD9D9D9), - trackBorderColor: Colors.transparent, - trackRadius: Radius.circular(10.0), - padding: EdgeInsets.only(top: 92.h + 32.h, left: MediaQuery.sizeOf(context).width / 2 - 35, right: MediaQuery.sizeOf(context).width / 2 - 35), + LocaleKeys.myBalanceSubtitle.tr(context: context).toText16(isBold: true).paddingSymmetrical(24.h, 0.h), + SizedBox( + height: 175.h, child: ListView.separated( scrollDirection: Axis.horizontal, - itemCount: LandingPageData.getLoggedInServiceCardsList.length, - shrinkWrap: true, - controller: _horizontalScrollController, - padding: EdgeInsets.only(left: 16.h, right: 16.h, top: 16.h, bottom: 12.h), - itemBuilder: (context, index) { - return AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 1000), - child: SlideAnimation( - horizontalOffset: 100.0, - child: FadeInAnimation( - child: SmallServiceCard( - icon: LandingPageData.getLoggedInServiceCardsList[index].icon, - title: LandingPageData.getLoggedInServiceCardsList[index].title, - subtitle: LandingPageData.getLoggedInServiceCardsList[index].subtitle, - iconColor: LandingPageData.getLoggedInServiceCardsList[index].iconColor!, - textColor: LandingPageData.getLoggedInServiceCardsList[index].textColor, - backgroundColor: LandingPageData.getLoggedInServiceCardsList[index].backgroundColor, - isBold: LandingPageData.getLoggedInServiceCardsList[index].isBold, - serviceName: LandingPageData.getLoggedInServiceCardsList[index].serviceName, - ), - ), - ), - ); + itemCount: 2, + padding: EdgeInsetsDirectional.only(start: 24.h, end: 24.h), + itemBuilder: (BuildContext context, int index) { + return index == 0 ? HabibWalletCard() : LakumWalletCard(); }, - separatorBuilder: (BuildContext cxt, int index) => 10.width, + separatorBuilder: (BuildContext context, int index) => SizedBox(width: 12.h), ), ), - ), - SizedBox(height: 16.h), - ], - ), - ).paddingSymmetrical(24.h, 0.h), + ], + ) + : SizedBox(), + ], + ), + ), + ), + AnimatedOpacity( + opacity: _scrollOpacity, + duration: Duration(milliseconds: 200), + child: Container( + height: MediaQuery.paddingOf(context).top + 10.h, + decoration: BoxDecoration( + gradient: LinearGradient( + begin: Alignment.topCenter, + end: Alignment.bottomCenter, + colors: [ + AppColors.scaffoldBgColor, + AppColors.scaffoldBgColor.withValues(alpha: 0.9), + AppColors.scaffoldBgColor.withValues(alpha: 0.0), ], - ) - : Container( - // height: 141.h, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r), + stops: [0.0, 0.7, 1.0], + ), + ), + ), + ), + (appState.isAuthenticated && !insuranceVM.isInsuranceLoading && insuranceVM.isInsuranceExpired && insuranceVM.isInsuranceExpiryBannerShown) + ? Container( + height: MediaQuery.paddingOf(context).top + 50.h, + decoration: ShapeDecoration( + color: AppColors.secondaryLightRedBorderColor, + shape: SmoothRectangleBorder( + side: BorderSide(width: 1, color: AppColors.primaryRedColor.withAlpha(20)), + // borderRadius: BorderRadius.only(bottomLeft: Radius.circular(24), bottomRight: Radius.circular(24)), + smoothness: 1, + ), + ), child: Column( + mainAxisAlignment: MainAxisAlignment.end, children: [ - SizedBox( - height: 92.h + 32.h - 4.h, - child: RawScrollbar( - controller: _horizontalScrollController, - thumbVisibility: true, - radius: Radius.circular(10.0), - thumbColor: AppColors.primaryRedColor, - trackVisibility: true, - trackColor: Color(0xffD9D9D9), - trackBorderColor: Colors.transparent, - trackRadius: Radius.circular(10.0), - padding: EdgeInsets.only(top: 92.h + 32.h, left: MediaQuery.sizeOf(context).width / 2 - 35, right: MediaQuery.sizeOf(context).width / 2 - 35), - child: ListView.separated( - scrollDirection: Axis.horizontal, - itemCount: LandingPageData.getNotLoggedInServiceCardsList.length, - shrinkWrap: true, - controller: _horizontalScrollController, - padding: EdgeInsets.only(left: 16.h, right: 16.h, top: 16.h, bottom: 12.h), - // padding: EdgeInsets.zero, - itemBuilder: (context, index) { - return AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 1000), - child: SlideAnimation( - horizontalOffset: 100.0, - child: FadeInAnimation( - child: SmallServiceCard( - serviceName: LandingPageData.getNotLoggedInServiceCardsList[index].serviceName, - icon: LandingPageData.getNotLoggedInServiceCardsList[index].icon, - title: LandingPageData.getNotLoggedInServiceCardsList[index].title, - subtitle: LandingPageData.getNotLoggedInServiceCardsList[index].subtitle, - iconColor: LandingPageData.getNotLoggedInServiceCardsList[index].iconColor!, - textColor: LandingPageData.getNotLoggedInServiceCardsList[index].textColor, - backgroundColor: LandingPageData.getNotLoggedInServiceCardsList[index].backgroundColor, - isBold: LandingPageData.getNotLoggedInServiceCardsList[index].isBold, - ), - ), - ), - ); - }, - separatorBuilder: (BuildContext cxt, int index) => 0.width, + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.insuranceExpiredOrInactive.tr(context: context).toText14(color: AppColors.primaryRedColor, isBold: true).paddingSymmetrical(0.h, 0.h), + Row( + children: [ + CustomButton( + text: LocaleKeys.updateInsurance.tr(context: context), + onPressed: () { + insuranceVM.setIsInsuranceUpdateDetailsLoading(true); + insuranceVM.getPatientInsuranceDetailsForUpdate( + appState.getAuthenticatedUser()!.patientId.toString(), appState.getAuthenticatedUser()!.patientIdentificationNo.toString()); + showCommonBottomSheetWithoutHeight(context, + child: PatientInsuranceCardUpdateCard(), callBackFunc: () {}, title: "", isCloseButtonVisible: false, isFullScreen: false); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.secondaryLightRedBorderColor, + textColor: Colors.white, + fontSize: 12.f, + fontWeight: FontWeight.bold, + borderRadius: 8.r, + padding: EdgeInsets.fromLTRB(15, 0, 15, 0), + height: 36.h, + ).paddingSymmetrical(12.h, 0.h), + Icon(Icons.close, color: AppColors.primaryRedColor).onPress(() { + insuranceVM.setIsInsuranceExpiryBannerShown(false); + }), + ], ), - ), + ], ), - SizedBox(height: 16.h), + SizedBox( + height: 10.h, + ) ], - ), - ).paddingSymmetrical(24.h, 0.h), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - LocaleKeys.services2.tr(context: context).toText18(weight: FontWeight.w600), - Row( - children: [ - LocaleKeys.viewAllServices.tr(context: context).toText14(color: AppColors.primaryRedColor, weight: FontWeight.w500), - SizedBox(width: 2.h), - Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), - ], - ).onPress(() { - Navigator.of(context).push(CustomPageRoute(page: ServicesPage())); - }), - ], - ).paddingSymmetrical(24.w, 0.h), - SizedBox( - height: 431.h, - child: ListView.separated( - scrollDirection: Axis.horizontal, - itemCount: LandingPageData.getServiceCardsList.length, - shrinkWrap: true, - padding: EdgeInsets.only(left: 24.w, right: 24.w), - itemBuilder: (context, index) { - return AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 1000), - child: SlideAnimation( - horizontalOffset: 100.0, - child: FadeInAnimation( - child: FadedLargeServiceCard( - serviceCardData: LandingPageData.getServiceCardsList[index], - image: LandingPageData.getServiceCardsList[index].icon, - title: LandingPageData.getServiceCardsList[index].title, - subtitle: LandingPageData.getServiceCardsList[index].subtitle, - icon: LandingPageData.getServiceCardsList[index].largeCardIcon, - ), - ), - ), - ); - }, - separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 16.w), - ), - ), - appState.isAuthenticated ? HabibWalletCard() : SizedBox(), + ).paddingSymmetrical(24.h, 0.h), + ) + : SizedBox.shrink() ], - ), - ), + ); + }), ), ); } @@ -739,15 +1062,20 @@ class _LandingPageState extends State { ); } - if (todoSectionViewModel.patientAncillaryOrdersList.isNotEmpty) { - return _buildAncillaryOrderCardWrapper( - todoSectionViewModel.patientAncillaryOrdersList.first, + // if (todoSectionViewModel.patientAncillaryOrdersList.isNotEmpty) { + // return _buildAncillaryOrderCardWrapper( + // todoSectionViewModel.patientAncillaryOrdersList.first, + // ); + // } + + // Safety check: ensure list has at least 2 items + if (myAppointmentsViewModel.patientAppointmentsHistoryList.length > 1) { + return _buildAppointmentCardWrapper( + myAppointmentsViewModel.patientAppointmentsHistoryList[1], ); } - return _buildAppointmentCardWrapper( - myAppointmentsViewModel.patientAppointmentsHistoryList[1], - ); + return Container(); // Return empty container if not enough items } // Third slot: Shows ancillary orders or appointment @@ -756,14 +1084,19 @@ class _LandingPageState extends State { final hasAncillaryOrders = todoSectionViewModel.patientAncillaryOrdersList.isNotEmpty; if (hasQueueOrLiveCare && hasAncillaryOrders) { - return _buildAncillaryOrderCardWrapper( - todoSectionViewModel.patientAncillaryOrdersList.first, + // return _buildAncillaryOrderCardWrapper( + // todoSectionViewModel.patientAncillaryOrdersList.first, + // ); + } + + // Safety check: ensure list has at least 3 items + if (myAppointmentsViewModel.patientAppointmentsHistoryList.length > 2) { + return _buildAppointmentCardWrapper( + myAppointmentsViewModel.patientAppointmentsHistoryList[2], ); } - return _buildAppointmentCardWrapper( - myAppointmentsViewModel.patientAppointmentsHistoryList[2], - ); + return Container(); // Return empty container if not enough items } // Queue Card Widget @@ -775,7 +1108,7 @@ class _LandingPageState extends State { decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, borderRadius: 20.h, - hasShadow: false, + hasShadow: true, side: BorderSide( color: Utils.getCardBorderColor(currentStatus), width: 2.w, @@ -786,20 +1119,20 @@ class _LandingPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - _buildQueueHeader(currentStatus), + _buildQueueHeader(currentQueue, currentStatus), SizedBox(height: 8.h), _buildQueueGreeting(), SizedBox(height: 2.h), LocaleKeys.thankYouForPatience.tr().toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.textColorLight, ), SizedBox(height: 8.h), - currentQueue.queueNo!.toText28(isBold: true), + (currentQueue.queueNo ?? "IM-123").toText28(isBold: true).toShimmer2(isShow: (currentQueue.queueNo == null || currentQueue.queueNo!.isEmpty)), SizedBox(height: 6.h), _buildServingNowSection(), SizedBox(height: 5.h), - _buildQueueActionButton(currentStatus, currentQueue.roomNo ?? ""), + _buildQueueActionButton(currentStatus, currentQueue.roomNo ?? "").toShimmer2(isShow: (currentQueue.queueNo == null || currentQueue.queueNo!.isEmpty)), ], ), ), @@ -811,20 +1144,24 @@ class _LandingPageState extends State { } // Queue Card: Header with status chip and icon - Widget _buildQueueHeader(int currentStatus) { + Widget _buildQueueHeader(PatientInQueueList currentQueue, int currentStatus) { return Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.start, children: [ AppCustomChipWidget( labelText: currentStatus == 0 ? LocaleKeys.inQueue.tr() : LocaleKeys.yourTurn.tr(), backgroundColor: Utils.getCardBorderColor(currentStatus).withValues(alpha: 0.20), textColor: Utils.getCardBorderColor(currentStatus), - ), - Utils.buildSvgWithAssets( - icon: AppAssets.waiting_icon, - width: 24.h, - height: 24.h, - ), + ).toShimmer2(isShow: (currentQueue.queueNo == null || currentQueue.queueNo!.isEmpty)), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.greyColor, + borderRadius: 10.h, + hasShadow: false, + ), + padding: EdgeInsets.all(6.h), + child: Lottie.asset(AppAnimations.hourGlass, repeat: true, reverse: false, frameRate: FrameRate(60), width: 40.h, height: 40.h, fit: BoxFit.fill)), ], ); } @@ -837,7 +1174,7 @@ class _LandingPageState extends State { // Queue Card: Currently serving section Widget _buildServingNowSection() { if (myAppointmentsViewModel.patientQueueDetailsList.isEmpty) { - return SizedBox(height: 12.h); + return SizedBox(height: 24.h); } final servingQueue = myAppointmentsViewModel.patientQueueDetailsList.first; @@ -901,22 +1238,44 @@ class _LandingPageState extends State { color: AppColors.whiteColor, borderRadius: 20.r, hasShadow: true, - side: BorderSide(color: AppColors.ratingColorYellow, width: 3.h), + // side: BorderSide(color: AppColors.ratingColorYellow, width: 3.h), ), child: Padding( padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.immediateLiveCareRequest.tr(context: context).toText16(isBold: true), - SizedBox(height: 10.h), - _buildLiveCareHeader(liveCareData), - SizedBox(height: 10.h), - _buildLiveCareGreeting(), - SizedBox(height: 8.h), - _buildLiveCareQueueInfo(liveCareData.patCount), - SizedBox(height: 8.h), - _buildLiveCareWaitingTime(), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.immediateLiveCareRequest.tr(context: context).toText16(isBold: true), + SizedBox(height: 10.h), + _buildLiveCareHeader(liveCareData), + SizedBox(height: 10.h), + SizedBox(height: 8.h), + _buildLiveCareQueueInfo(liveCareData.patCount), + SizedBox(height: 14.h), + ], + ), + CustomButton( + text: LocaleKeys.viewDetails.tr(context: context), + onPressed: () { + Navigator.of(context).push( + CustomPageRoute(page: ImmediateLiveCarePendingRequestPage()), + ); + }, + backgroundColor: AppColors.warningColorYellow.withValues(alpha: 0.20), + textColor: AppColors.alertColor, + borderColor: AppColors.warningColorYellow.withValues(alpha: 0.01), + fontSize: 12.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 40.h, + iconColor: AppColors.whiteColor, + iconSize: 18.h, + ), + // _buildLiveCareWaitingTime(), ], ), ), @@ -936,6 +1295,7 @@ class _LandingPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Row( + crossAxisAlignment: CrossAxisAlignment.start, children: [ AppCustomChipWidget( labelText: liveCareData.stringCallStatus, @@ -950,13 +1310,42 @@ class _LandingPageState extends State { false, ), ), + SizedBox(width: 8.w), + AppCustomChipWidget( + richText: ValueListenableBuilder( + valueListenable: immediateLiveCareViewModel.durationNotifier, + builder: (context, duration, child) { + final hours = duration.inHours.toString().padLeft(2, '0'); + final minutes = duration.inMinutes.remainder(60).toString().padLeft(2, '0'); + final seconds = duration.inSeconds.remainder(60).toString().padLeft(2, '0'); + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + '$hours:$minutes:$seconds'.toText10(isBold: true), + ], + ); + }, + ), + // labelText: DateUtil.formatDateToDate( + // DateUtil.convertStringToDate(liveCareData.arrivalTime), + // false, + // ), + ), ], ), - Utils.buildSvgWithAssets( - icon: AppAssets.waiting_icon, - width: 24.h, - height: 24.h, - ), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.greyColor, + borderRadius: 10.h, + hasShadow: false, + ), + padding: EdgeInsets.all(6.h), + child: Lottie.asset(AppAnimations.hourGlass, repeat: true, reverse: false, frameRate: FrameRate(60), width: 40.h, height: 40.h, fit: BoxFit.fill)), + // Utils.buildSvgWithAssets( + // icon: AppAssets.waiting_icon, + // width: 24.h, + // height: 24.h, + // ), ], ); } @@ -971,10 +1360,7 @@ class _LandingPageState extends State { // LiveCare Card: Queue position info Widget _buildLiveCareQueueInfo(int? patCount) { - return LocaleKeys.yourTurnIsAfterPatients.tr( - namedArgs: {'count': (patCount ?? 0).toString()}, - context: context, - ).toText14(isBold: true); + return LocaleKeys.yourTurnIsAfterPatients.tr(namedArgs: {'count': (patCount ?? 0).toString()}, context: context).toText14(isBold: true); } // LiveCare Card: Waiting time counter @@ -1002,11 +1388,7 @@ class _LandingPageState extends State { // Appointment Card Wrapper (reusable) Widget _buildAppointmentCardWrapper(appointment) { return Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.r, - hasShadow: true, - ), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true, hasDenseShadow: true), child: AppointmentCard( patientAppointmentHistoryResponseModel: appointment, myAppointmentsViewModel: myAppointmentsViewModel, @@ -1034,6 +1416,7 @@ class _LandingPageState extends State { orderNo: order.orderNo ?? 0, projectID: order.projectID ?? 0, projectName: order.projectName ?? "", + setupID: order.setupID ?? "", ), ), ); @@ -1043,7 +1426,7 @@ class _LandingPageState extends State { void showQuickLogin(BuildContext context) { showCommonBottomSheetWithoutHeight( - context, + getIt().navigatorKey.currentContext!, // title: "", isCloseButtonVisible: false, child: StatefulBuilder( @@ -1084,7 +1467,7 @@ class _LandingPageState extends State { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - displayTitle.toText20(weight: FontWeight.w600), + displayTitle.toText20(isBold: true), (context.select((vm) => vm.subTitle) ?? '').toText12(), ], ); @@ -1137,3 +1520,46 @@ class _LandingPageState extends State { ); } } + +/// A custom pagination builder that reverses the active-dot index +/// when the UI is in RTL (Arabic) mode, so the dots visually match +/// the swipe direction. +class _DirectionalDotPaginationBuilder extends SwiperPlugin { + final Color color; + final Color activeColor; + final double size; + final double activeSize; + final double space; + final bool isRTL; + final int totalCount; + + const _DirectionalDotPaginationBuilder({ + required this.color, + required this.activeColor, + required this.isRTL, + required this.totalCount, + this.size = 10.0, + this.activeSize = 10.0, + this.space = 3.0, + }); + + @override + Widget build(BuildContext context, SwiperPluginConfig config) { + return Row( + mainAxisSize: MainAxisSize.min, + textDirection: ui.TextDirection.ltr, // always lay out dots left-to-right + children: List.generate(config.itemCount, (i) { + final bool isActive = i == config.activeIndex; + return Container( + margin: EdgeInsets.symmetric(horizontal: space), + width: isActive ? activeSize : size, + height: isActive ? activeSize : size, + decoration: BoxDecoration( + color: isActive ? activeColor : color, + shape: BoxShape.circle, + ), + ); + }), + ); + } +} diff --git a/lib/presentation/home/navigation_screen.dart b/lib/presentation/home/navigation_screen.dart index 5cfc8ff7..92d3bea6 100644 --- a/lib/presentation/home/navigation_screen.dart +++ b/lib/presentation/home/navigation_screen.dart @@ -1,15 +1,23 @@ +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/location_util.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; -import 'package:hmg_patient_app_new/presentation/contact_us/feedback_page.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/hmg_services/services_page.dart'; import 'package:hmg_patient_app_new/presentation/home/landing_page.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/medical_file_page.dart'; +import 'package:hmg_patient_app_new/presentation/weather/weather_details_page.dart'; import 'package:hmg_patient_app_new/routes/app_routes.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/widgets/bottom_navigation/bottom_navigation.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:permission_handler/permission_handler.dart' show openAppSettings; + class LandingNavigation extends StatefulWidget { const LandingNavigation({super.key}); @@ -31,7 +39,7 @@ class _LandingNavigationState extends State { physics: const NeverScrollableScrollPhysics(), children: [ const LandingPage(), - appState.isAuthenticated ? MedicalFilePage(showBackIcon: false) : /* need add feedback page */ FeedbackPage(), + appState.isAuthenticated ? MedicalFilePage(showBackIcon: false) : const WeatherDetailsPage(showBackIcon: false,), SizedBox(), // const ToDoPage(), // appState.isAuthenticated ? UserInfoSelectionScreen() : /* need add news page */ SizedBox(), @@ -41,10 +49,50 @@ class _LandingNavigationState extends State { ), bottomNavigationBar: BottomNavigation( currentIndex: _currentIndex, - onTap: (index) { + onTap: (index) async { setState(() => _currentIndex = index); + + if (_currentIndex == 1 && !appState.isAuthenticated) { + final locationUtils = getIt.get(); + final isLocationEnabled = await locationUtils.isLocationPermissionEnabled(); + if (isLocationEnabled) { + _pageController.animateToPage(index, duration: const Duration(milliseconds: 300), curve: Curves.easeInOut); + } else { + locationUtils.getLocation( + isShowConfirmDialog: true, + onSuccess: (position) { + _pageController.animateToPage(index, duration: const Duration(milliseconds: 300), curve: Curves.easeInOut); + }, + onFailure: () { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(), + context, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.grantLocationPermission.tr(), + isShowActionButtons: true, + onCancelTap: () { + getIt.get().pop(); + setState(() => _currentIndex = 0); + }, + onConfirmTap: () async { + getIt.get().pop(); + openAppSettings(); + setState(() => _currentIndex = 0); + }, + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + ); + } + return; + } + if (_currentIndex == 2) { getIt.get().onTabChanged(0); + getIt.get().getPatientFavouriteDoctors(); context.navigateWithName(AppRoutes.bookAppointmentPage); return; } diff --git a/lib/presentation/home/service_info_page.dart b/lib/presentation/home/service_info_page.dart new file mode 100644 index 00000000..00f264b5 --- /dev/null +++ b/lib/presentation/home/service_info_page.dart @@ -0,0 +1,93 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; + +import '../../core/utils/utils.dart'; + +class ServiceInfoPage extends StatelessWidget { + final String serviceName; + final String serviceHeader; + final String serviceDescription; + final String serviceImage; + + const ServiceInfoPage({required this.serviceName, required this.serviceHeader, required this.serviceDescription, required this.serviceImage, super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + body: Column( + children: [ + Expanded( + child: CollapsingListView( + title: "", + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(24.r), + child: Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildImgWithAssets( + icon: serviceImage, + fit: BoxFit.fitHeight, + // height: 480.h, + // width: 520.w, + ), + ), + ).paddingSymmetrical(24.h, 0.h), + SizedBox(height: 32.h), + AppCustomChipWidget( + richText: serviceName.toText14(color: AppColors.infoColor, isBold: true), + backgroundColor: AppColors.infoColor.withAlpha(50), + textColor: AppColors.infoColor, + ).paddingSymmetrical(24.h, 0.h), + SizedBox(height: 24.h), + serviceHeader.toText28(isBold: true, height: 1.4).paddingSymmetrical(24.h, 0.h), + SizedBox(height: 24.h), + serviceDescription.toText14(isBold: true, color: AppColors.greyTextColor).paddingSymmetrical(24.h, 0.h), + SizedBox(height: 24.h), + ], + ), + ), + ), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: true, + ), + child: CustomButton( + text: LocaleKeys.login.tr(context: context), + onPressed: () { + getIt().onLoginPressed(); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + fontSize: 16.f, + isBold: true, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 56.h, + icon: AppAssets.login1, + iconColor: AppColors.whiteColor, + iconSize: 18.h, + ).paddingSymmetrical(24.h, 24.h), + ) + ], + ), + ); + } +} diff --git a/lib/presentation/home/widgets/habib_wallet_card.dart b/lib/presentation/home/widgets/habib_wallet_card.dart index 0ac32443..0bfba696 100644 --- a/lib/presentation/home/widgets/habib_wallet_card.dart +++ b/lib/presentation/home/widgets/habib_wallet_card.dart @@ -1,6 +1,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -21,23 +23,23 @@ class HabibWalletCard extends StatelessWidget { Widget build(BuildContext context) { return Column( children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - LocaleKeys.myBalance.tr(context: context).toText16(weight: FontWeight.w600), - // Row( - // children: [ - // LocaleKeys.viewAllServices.tr(context: context).toText12(color: AppColors.primaryRedColor, weight: FontWeight.w500), - // SizedBox(width: 2.h), - // Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), - // ], - // ), - ], - ).paddingSymmetrical(24.h, 0.h), + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // LocaleKeys.myBalanceSubtitle.tr(context: context).toText16(isBold: true), + // // Row( + // // children: [ + // // LocaleKeys.viewAllServices.tr(context: context).toText12(color: AppColors.primaryRedColor, isBold: true), + // // SizedBox(width: 2.h), + // // Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), + // // ], + // // ), + // ], + // ).paddingSymmetrical(24.h, 0.h), SizedBox(height: 16.h), Container( // height: 150.h, - width: double.infinity, + width: 355.h, decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, borderRadius: 24, @@ -45,7 +47,9 @@ class HabibWalletCard extends StatelessWidget { child: Stack(children: [ Positioned( right: 0, - child: ClipRRect(borderRadius: BorderRadius.circular(24.0), child: Utils.buildSvgWithAssets(icon: AppAssets.habib_background_icon, width: 150.h, height: 150.h, applyThemeColor: false)), + child: ClipRRect( + borderRadius: BorderRadius.circular(24.0), + child: Utils.buildSvgWithAssets(icon: AppAssets.habib_background_icon, width: 150.h, height: 150.h, applyThemeColor: false)), ), Padding( padding: EdgeInsets.all(16.h), @@ -55,84 +59,112 @@ class HabibWalletCard extends StatelessWidget { // Row( // mainAxisAlignment: MainAxisAlignment.spaceBetween, // children: [ - LocaleKeys.habibWallet.tr(context: context).toText16(weight: FontWeight.w500, letterSpacing: -0.2), - // Container( - // height: 40.h, - // width: 40.h, - // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - // color: AppColors.textColor, - // borderRadius: 8.h, - // ), - // child: Padding( - // padding: EdgeInsets.all(8.h), - // child: Utils.buildSvgWithAssets( - // icon: AppAssets.show_icon, - // width: 12.h, - // height: 12.h, - // fit: BoxFit.contain, - // ), - // ), - // ), - // ], + LocaleKeys.habibWallet.tr(context: context).toText16(isBold: true, letterSpacing: -0.2), + // Container( + // height: 40.h, + // width: 40.h, + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // color: AppColors.textColor, + // borderRadius: 8.h, + // ), + // child: Padding( + // padding: EdgeInsets.all(8.h), + // child: Utils.buildSvgWithAssets( + // icon: AppAssets.show_icon, + // width: 12.h, + // height: 12.h, + // fit: BoxFit.contain, + // ), + // ), + // ), + // ], // ), SizedBox(height: 4.h), - Consumer(builder: (context, habibWalletVM, child) { - return Row( - children: [ - Utils.buildSvgWithAssets( - icon: AppAssets.saudi_riyal_icon, - iconColor: AppColors.inputLabelTextColor, - width: 24.h, - height: 24.h, - fit: BoxFit.contain, - ), - SizedBox(width: 8.h), - habibWalletVM.habibWalletAmount - .toString() - .toText32(isBold: true, isEnglishOnly: true) - .toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.h, width: 80.h, height: 40.h), - ], - ); - }), - Padding( - padding: EdgeInsets.symmetric(horizontal: 50.h), - child: Row( - children: [ - LocaleKeys.viewDetails.tr(context: context).toText12(color: AppColors.primaryRedColor), - SizedBox(width: 2.h), - Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), - ], - ).onPress(() { - Navigator.of(context).push( - CustomPageRoute( - page: HabibWalletPage(), - ), - ); - }), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Consumer(builder: (context, habibWalletVM, child) { + return Row( + mainAxisSize: MainAxisSize.max, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + Utils.buildSvgWithAssets( + icon: (getIt.get().getAuthenticatedUser()!.outSa == 1) ? AppAssets.uae_dirham_symbol : AppAssets.saudi_riyal_icon, + iconColor: AppColors.inputLabelTextColor, + width: 24.h, + height: 24.h, + fit: BoxFit.contain, + ), + SizedBox(width: 8.h), + NumberFormat.decimalPattern() + .format(habibWalletVM.habibWalletAmount) + .toString() + .toText32(isBold: true, isEnglishOnly: true) + .toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.h, width: 80.h, height: 40.h), + ], + ), + Spacer(), + Utils.getPaymentMethods(spacing: 3, width: 30, height: 30), + ], + ); + }), + ], ), SizedBox(height: 16.h), Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - SizedBox( - width: 150.h, - child: Utils.getPaymentMethods(), + Expanded( + flex: 6, + child: CustomButton( + height: 40.h, + icon: AppAssets.recharge_icon, + iconColor: AppColors.infoColor, + iconSize: 24.h, + backgroundColor: AppColors.infoColor.withAlpha(15), + textColor: AppColors.infoColor, + text: LocaleKeys.recharge.tr(context: context), + borderWidth: 0.w, + fontWeight: FontWeight.w600, + borderColor: AppColors.infoColor.withAlpha(15), + padding: EdgeInsets.fromLTRB(4, 0, 12, 0), + fontSize: 14.f, + onPressed: () { + Navigator.of(context).push(CustomPageRoute(page: RechargeWalletPage())); + }, + ), ), - CustomButton( - height: 40.h, - icon: AppAssets.recharge_icon, - iconSize: 24.h, - backgroundColor: AppColors.infoColor, - textColor: Colors.white, - text: LocaleKeys.recharge.tr(context: context), - borderWidth: 0.w, - fontWeight: FontWeight.w500, - borderColor: Colors.transparent, - padding: EdgeInsets.fromLTRB(4, 0, 12, 0), - fontSize: 14.f, - onPressed: () { - Navigator.of(context).push(CustomPageRoute(page: RechargeWalletPage())); - }, + SizedBox(width: 8.h), + Expanded( + flex: 1, + child: Container( + height: (isFoldable || isTablet) ? 50.h : 40.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.textColor, + borderRadius: 10.h, + side: BorderSide( + color: AppColors.textColor, + width: 1.2, + ), + ), + child: Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.forward_arrow_icon, + iconColor: AppColors.whiteColor, + width: 24.w, + height: 24.h, + fit: BoxFit.contain, + ), + ), + ).onPress(() { + Navigator.of(context).push( + CustomPageRoute( + page: HabibWalletPage(), + ), + ); + }), ), ], ), @@ -140,7 +172,7 @@ class HabibWalletCard extends StatelessWidget { ), ), ]), - ).paddingSymmetrical(24.h, 0.h).onPress(() { + ).paddingSymmetrical(0.h, 0.h).onPress(() { Navigator.of(context).push( CustomPageRoute( page: HabibWalletPage(), diff --git a/lib/presentation/home/widgets/lakum_wallet_card.dart b/lib/presentation/home/widgets/lakum_wallet_card.dart new file mode 100644 index 00000000..3645a2d3 --- /dev/null +++ b/lib/presentation/home/widgets/lakum_wallet_card.dart @@ -0,0 +1,193 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/habib_wallet/habib_wallet_page.dart'; +import 'package:hmg_patient_app_new/presentation/habib_wallet/recharge_wallet_page.dart'; +import 'package:hmg_patient_app_new/presentation/home/lakum_wallet_details.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:provider/provider.dart'; +import 'package:url_launcher/url_launcher.dart'; + +class LakumWalletCard extends StatelessWidget { + const LakumWalletCard({super.key}); + + @override + Widget build(BuildContext context) { + return Column( + children: [ + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // LocaleKeys.myBalanceSubtitle.tr(context: context).toText16(isBold: true), + // // Row( + // // children: [ + // // LocaleKeys.viewAllServices.tr(context: context).toText12(color: AppColors.primaryRedColor, isBold: true), + // // SizedBox(width: 2.h), + // // Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 14.h), + // // ], + // // ), + // ], + // ).paddingSymmetrical(24.h, 0.h), + SizedBox(height: 16.h), + Container( + // height: 150.h, + width: 355.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24, + ), + child: Stack(children: [ + Positioned( + right: 0, + child: ClipRRect( + borderRadius: BorderRadius.circular(24.0), + child: Utils.buildImgWithAssets( + icon: AppAssets.lakumLogo, + width: 150.h, + height: 150.h, + )), + ), + Padding( + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // LocaleKeys.habibWallet.tr(context: context).toText16(isBold: true, letterSpacing: -0.2), + LocaleKeys.lakumPoints.tr(context: context).toText16(isBold: true, letterSpacing: -0.2), + // Container( + // height: 40.h, + // width: 40.h, + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // color: AppColors.textColor, + // borderRadius: 8.h, + // ), + // child: Padding( + // padding: EdgeInsets.all(8.h), + // child: Utils.buildSvgWithAssets( + // icon: AppAssets.show_icon, + // width: 12.h, + // height: 12.h, + // fit: BoxFit.contain, + // ), + // ), + // ), + // ], + // ), + SizedBox(height: 8.h), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Consumer(builder: (context, habibWalletVM, child) { + return Row( + mainAxisSize: MainAxisSize.max, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + NumberFormat.decimalPattern() + .format(habibWalletVM.isLakumAccountInfoLoading + ? 123 + : habibWalletVM.yahalaAccountNumber == "0" + ? 0 + : (habibWalletVM.lakumAccountInfo?.pointsBalance ?? 0)) + .toString() + .toText32(isBold: true, isEnglishOnly: true) + .toShimmer2(isShow: habibWalletVM.isLakumAccountInfoLoading, radius: 12.h, width: 80.h, height: 40.h), + SizedBox(width: 4.h), + LocaleKeys.points.tr().toText12(color: AppColors.inputLabelTextColor, isBold: true) + ], + ), + Spacer(), + Utils.buildSvgWithAssets(icon: AppAssets.hmg_pharmacy_logo, width: 32.h, height: 32.h, fit: BoxFit.contain, applyThemeColor: false), + ], + ); + }), + ], + ), + SizedBox(height: 16.h), + Row( + children: [ + Expanded( + flex: 6, + child: CustomButton( + height: 40.h, + icon: AppAssets.redeem_icon, + iconColor: AppColors.habibPharmacyColor, + iconSize: 24.h, + backgroundColor: AppColors.habibPharmacyColor.withAlpha(15), + textColor: AppColors.habibPharmacyColor, + text: LocaleKeys.redeem.tr(context: context), + borderWidth: 0.w, + fontWeight: FontWeight.w600, + borderColor: AppColors.habibPharmacyColor.withAlpha(15), + padding: EdgeInsets.fromLTRB(4, 0, 12, 0), + fontSize: 14.f, + onPressed: () { + Uri uri = Uri.parse(PHARMACY_REDIRECT_URL); + launchUrl(uri, mode: LaunchMode.externalApplication); + // Navigator.of(context).push(CustomPageRoute(page: RechargeWalletPage())); + }, + ), + ), + SizedBox(width: 8.h), + Expanded( + flex: 1, + child: Container( + height: (isFoldable || isTablet) ? 50.h : 40.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.textColor, + borderRadius: 10.h, + side: BorderSide( + color: AppColors.textColor, + width: 1.2, + ), + ), + child: Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.forward_arrow_icon, + iconColor: AppColors.whiteColor, + width: 24.w, + height: 24.h, + fit: BoxFit.contain, + ), + ), + ).onPress(() { + Navigator.of(context).push( + CustomPageRoute( + page: LakumWalletDetails(), + ), + ); + }), + ), + ], + ), + ], + ), + ), + ]), + ).paddingSymmetrical(0.h, 0.h).onPress(() { + Navigator.of(context).push( + CustomPageRoute( + page: LakumWalletDetails(), + ), + ); + }), + ], + ); + } +} diff --git a/lib/presentation/home/widgets/large_service_card.dart b/lib/presentation/home/widgets/large_service_card.dart index 7c86dd09..7c037604 100644 --- a/lib/presentation/home/widgets/large_service_card.dart +++ b/lib/presentation/home/widgets/large_service_card.dart @@ -1,14 +1,18 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/api_consts.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/book_appointment_page.dart'; import 'package:hmg_patient_app_new/presentation/home/data/service_card_data.dart'; +import 'package:hmg_patient_app_new/presentation/home/service_info_page.dart'; import 'package:hmg_patient_app_new/presentation/home_health_care/hhc_procedures_page.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -24,6 +28,7 @@ class LargeServiceCard extends StatelessWidget { final String icon; final String title; final String subtitle; + final bool isPNG; const LargeServiceCard({ super.key, @@ -32,88 +37,93 @@ class LargeServiceCard extends StatelessWidget { this.icon = "", this.title = "", this.subtitle = "", + this.isPNG = false, }); @override Widget build(BuildContext context) { return Container( - height: 350.h, width: 230.w, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.transparent, borderRadius: 24.r), - child: Stack( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + ), + child: Column( + mainAxisSize: MainAxisSize.min, children: [ ClipRRect( - borderRadius: BorderRadius.circular(24.r), - child: Image.asset( - serviceCardData.largeCardIcon, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(24.r), + topRight: Radius.circular(24.r), + ), + child: Utils.buildImgWithAssets( + icon: serviceCardData.largeCardIcon, fit: BoxFit.cover, + width: double.infinity, + height: isFoldable ? 190.h : (isTablet ? 200.h : 180.h), ), ), - Positioned( - bottom: 0.0, // Positions the child 0 logical pixels from the bottom - left: 0.0, - right: 0.0, - child: Container( - height: 180.h, - padding: EdgeInsets.only(bottom: 16.h, top: 16.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - customBorder: BorderRadius.only( - bottomLeft: Radius.circular(24.r), - bottomRight: Radius.circular(24.r), - ), - ), - child: Column( - children: [ - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Container( - height: 48.h, - width: 48.h, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: serviceCardData.backgroundColor!, - borderRadius: 12.r, - hasShadow: false, - ), - child: Padding( - padding: EdgeInsets.all(12.h), - child: Utils.buildSvgWithAssets( - icon: serviceCardData.icon, - iconColor: serviceCardData.iconColor, - fit: BoxFit.contain, - applyThemeColor: false, + Container( + padding: EdgeInsets.all(16.w), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + isPNG + ? Utils.buildImgWithAssets(icon: serviceCardData.icon, width: 35.h, height: 35.h) + : Container( + height: 48.h, + width: 48.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: serviceCardData.backgroundColor!, + borderRadius: 12.r, + hasShadow: false, + ), + child: Padding( + padding: EdgeInsets.all(12.h), + child: Utils.buildSvgWithAssets( + icon: serviceCardData.icon, + iconColor: serviceCardData.iconColor, + fit: BoxFit.contain, + applyThemeColor: false, + ), + ), ), - ), + SizedBox(width: 12.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + serviceCardData.title.tr(context: context).toText14( + isBold: true, + color: AppColors.textColor, + maxlines: 1, + textOverflow: TextOverflow.ellipsis, + ), + serviceCardData.subtitle.tr(context: context).toText12(isBold: true, color: AppColors.textColorLight, maxLine: 2), + ], ), - SizedBox(width: 12.w), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - serviceCardData.title.tr(context: context).toText14(isBold: true, color: AppColors.textColor), - serviceCardData.subtitle.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), - ], - ), - ), - ], - ).paddingSymmetrical(16.w, 0.h).expanded, - CustomButton( - text: serviceCardData.isBold ? LocaleKeys.visitPharmacyOnline.tr(context: context) : LocaleKeys.bookNow.tr(context: context), - onPressed: () { - handleOnTap(); - }, - padding: EdgeInsets.zero, - backgroundColor: serviceCardData.isBold ? AppColors.successLightColor.withValues(alpha: 0.2) : AppColors.bgRedLightColor, - borderColor: serviceCardData.isBold ? AppColors.successLightColor.withValues(alpha: 0.01) : AppColors.bgRedLightColor, - textColor: serviceCardData.isBold ? AppColors.successColor : AppColors.primaryRedColor, - fontSize: 14.f, - fontWeight: FontWeight.w500, - borderRadius: 10.r, - height: 40.h, - ).paddingSymmetrical(16.w, 0.h), - ], - ), + ), + ], + ), + SizedBox(height: 24.h), + CustomButton( + text: serviceCardData.isBold ? LocaleKeys.visitPharmacyOnline.tr(context: context) : LocaleKeys.bookNow.tr(context: context), + onPressed: () { + handleOnTap(); + }, + padding: EdgeInsets.zero, + backgroundColor: serviceCardData.isBold ? AppColors.successLightColor.withValues(alpha: 0.2) : AppColors.bgRedLightColor, + borderColor: serviceCardData.isBold ? AppColors.successLightColor.withValues(alpha: 0.01) : AppColors.bgRedLightColor, + textColor: serviceCardData.isBold ? AppColors.successColor : AppColors.primaryRedColor, + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 10.r, + height: 40.h, + ), + ], ), ), ], @@ -125,6 +135,7 @@ class LargeServiceCard extends StatelessWidget { switch (serviceCardData.serviceName) { case "livecare": { + getIt.get().getPatientFavouriteDoctors(); getIt.get().onTabChanged(1); Navigator.of(getIt.get().navigatorKey.currentContext!).push( CustomPageRoute( @@ -134,11 +145,23 @@ class LargeServiceCard extends StatelessWidget { } case "home_health_care": { - Navigator.of(getIt().navigatorKey.currentContext!).push( - CustomPageRoute( - page: HhcProceduresPage(), - ), - ); + if (getIt.get().isAuthenticated) { + Navigator.of(getIt().navigatorKey.currentContext!).push( + CustomPageRoute( + page: HhcProceduresPage(), + ), + ); + } else { + Navigator.of(getIt().navigatorKey.currentContext!).push( + CustomPageRoute( + page: ServiceInfoPage( + serviceName: LocaleKeys.homeHealthCare.tr(), + serviceHeader: LocaleKeys.homeHealthCareServiceHeader.tr(), + serviceDescription: LocaleKeys.homeHealthCareServiceDescription.tr(), + serviceImage: AppAssets.homeHealthCareService), + ), + ); + } } case "pharmacy": { @@ -155,6 +178,7 @@ class FadedLargeServiceCard extends StatelessWidget { final String icon; final String title; final String subtitle; + final bool isPNG; const FadedLargeServiceCard({ super.key, @@ -163,6 +187,7 @@ class FadedLargeServiceCard extends StatelessWidget { this.icon = "", this.title = "", this.subtitle = "", + this.isPNG = false, }); @override @@ -177,7 +202,9 @@ class FadedLargeServiceCard extends StatelessWidget { children: [ ClipRRect( borderRadius: BorderRadius.circular(24.r), - child: Image.asset(serviceCardData.largeCardIcon, fit: BoxFit.cover, width: 520.w, height: 250.h), + child: Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildImgWithAssets(icon: serviceCardData.largeCardIcon, fit: BoxFit.cover, width: 520.w, height: 250.h)), ), Positioned( top: 0, @@ -206,33 +233,34 @@ class FadedLargeServiceCard extends StatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.center, children: [ - Container( - height: 32.h, - width: 32.h, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: serviceCardData.backgroundColor!, - borderRadius: 30.r, - hasShadow: false, - ), - child: Padding( - padding: EdgeInsets.all(8.h), - child: Utils.buildSvgWithAssets( - icon: serviceCardData.icon, - iconColor: serviceCardData.iconColor, - fit: BoxFit.contain, - applyThemeColor: false - ), - ), - ), + isPNG + ? Utils.buildImgWithAssets(icon: serviceCardData.icon, width: 32.h, height: 32.h).circle(100.h) + : Container( + height: 32.h, + width: 32.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: serviceCardData.backgroundColor!, + borderRadius: 30.r, + hasShadow: false, + ), + child: Padding( + padding: EdgeInsets.all(8.h), + child: Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildSvgWithAssets( + icon: serviceCardData.icon, iconColor: serviceCardData.iconColor, fit: BoxFit.contain, applyThemeColor: false), + ), + ), + ), SizedBox(width: 12.w), - serviceCardData.title.tr(context: context).toText18(weight: FontWeight.w500, color: AppColors.textColor).expanded, + serviceCardData.title.tr(context: context).toText18(isBold: true, color: AppColors.textColor).expanded, ], ), SizedBox(height: 10.h), - serviceCardData.subtitle.tr(context: context).toText14(weight: FontWeight.w500, color: AppColors.blackBgColor, letterSpacing: 0), + serviceCardData.subtitle.tr(context: context).toText14(isBold: true, color: AppColors.blackBgColor, letterSpacing: 0, maxlines: 2), SizedBox(height: 12.h), CustomButton( - text: serviceCardData.isBold ? "Visit Pharmacy Online".needTranslation : LocaleKeys.bookNow.tr(context: context), + text: serviceCardData.isBold ? LocaleKeys.visitPharmacyOnline.tr(context: context) : LocaleKeys.bookNow.tr(context: context), onPressed: () { handleOnTap(); }, @@ -241,7 +269,7 @@ class FadedLargeServiceCard extends StatelessWidget { borderColor: serviceCardData.isBold ? AppColors.successLightColor.withValues(alpha: 0.01) : AppColors.blackBgColor, textColor: serviceCardData.isBold ? AppColors.successColor : AppColors.whiteColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 10.r, height: 40.h, ), @@ -255,6 +283,7 @@ class FadedLargeServiceCard extends StatelessWidget { case "livecare": { getIt.get().onTabChanged(1); + getIt.get().setIsLiveCareSelectedFromHomePage(true); Navigator.of(getIt.get().navigatorKey.currentContext!).push( CustomPageRoute( page: BookAppointmentPage(), @@ -263,11 +292,23 @@ class FadedLargeServiceCard extends StatelessWidget { } case "home_health_care": { - Navigator.of(getIt().navigatorKey.currentContext!).push( - CustomPageRoute( - page: HhcProceduresPage(), - ), - ); + if (getIt.get().isAuthenticated) { + Navigator.of(getIt().navigatorKey.currentContext!).push( + CustomPageRoute( + page: HhcProceduresPage(), + ), + ); + } else { + Navigator.of(getIt().navigatorKey.currentContext!).push( + CustomPageRoute( + page: ServiceInfoPage( + serviceName: LocaleKeys.homeHealthCare.tr(), + serviceHeader: LocaleKeys.homeHealthCareServiceHeader.tr(), + serviceDescription: LocaleKeys.homeHealthCareServiceDescription.tr(), + serviceImage: AppAssets.homeHealthCareService), + ), + ); + } } case "pharmacy": { diff --git a/lib/presentation/home/widgets/small_service_card.dart b/lib/presentation/home/widgets/small_service_card.dart index 0c2da8d6..45023c3b 100644 --- a/lib/presentation/home/widgets/small_service_card.dart +++ b/lib/presentation/home/widgets/small_service_card.dart @@ -16,6 +16,7 @@ import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts import 'package:hmg_patient_app_new/presentation/insurance/insurance_home_page.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_orders_page.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/patient_sickleaves_list_page.dart'; +import 'package:hmg_patient_app_new/presentation/my_invoices/my_invoices_list.dart'; import 'package:hmg_patient_app_new/presentation/parking/paking_page.dart'; import 'package:hmg_patient_app_new/presentation/prescriptions/prescriptions_list_page.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; @@ -68,11 +69,11 @@ class SmallServiceCard extends StatelessWidget { Utils.buildSvgWithAssets(icon: icon, iconColor: resolvedIconColor, width: 32.h, height: 32.h), SizedBox(height: 6.h), if (isFoldable || isTablet) ...[ - title.tr(context: context).toText10(color: resolvedTextColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxlines: 1), - subtitle.tr(context: context).toText10(color: resolvedTextColor, weight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxlines: 1), + title.tr(context: context).toText10(color: resolvedTextColor, isBold: true, isCenter: true, letterSpacing: -0.2, maxlines: 1), + subtitle.tr(context: context).toText10(color: resolvedTextColor, isBold: true, isCenter: true, letterSpacing: -0.2, maxlines: 1), ] else ...[ - title.tr(context: context).toText12(color: resolvedTextColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxLine: 1), - subtitle.tr(context: context).toText12(color: resolvedTextColor, fontWeight: FontWeight.w500, isCenter: true, letterSpacing: -0.2, maxLine: 1), + title.tr(context: context).toText12(color: resolvedTextColor, isBold: true, isCenter: true, letterSpacing: -0.2, maxLine: 1), + subtitle.tr(context: context).toText12(color: resolvedTextColor, isBold: true, isCenter: true, letterSpacing: -0.2, maxLine: 1), ] ], ), @@ -92,6 +93,13 @@ class SmallServiceCard extends StatelessWidget { ), ); break; + case "my_invoice": + Navigator.of(context).push( + CustomPageRoute( + page: MyInvoicesList(), + ), + ); + break; case "prescriptions": Navigator.of(context).push( CustomPageRoute( diff --git a/lib/presentation/home/widgets/welcome_widget.dart b/lib/presentation/home/widgets/welcome_widget.dart index 4ccc126a..039da8c1 100644 --- a/lib/presentation/home/widgets/welcome_widget.dart +++ b/lib/presentation/home/widgets/welcome_widget.dart @@ -1,52 +1,102 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/insurance/insurance_view_model.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/insurance/insurance_home_page.dart'; +import 'package:hmg_patient_app_new/presentation/profile_settings/profile_settings.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:hmg_patient_app_new/widgets/routes/spring_page_route_builder.dart'; +import 'package:smooth_corner/smooth_corner.dart'; class WelcomeWidget extends StatelessWidget { final String name; - final String imageUrl; + final String? imageUrl; + final Widget? imageWidget; final VoidCallback? onTap; const WelcomeWidget({ super.key, required this.name, - required this.imageUrl, + this.imageUrl, + this.imageWidget, this.onTap, }); @override Widget build(BuildContext context) { - return InkWell( - onTap: onTap, - borderRadius: BorderRadius.circular(30), - child: Row( - mainAxisSize: MainAxisSize.min, - spacing: 8.h, - children: [ - Image.asset(imageUrl, width: 40, height: 40), - Column( - crossAxisAlignment: CrossAxisAlignment.start, - spacing: 4.h, + return Column( + children: [ + InkWell( + onTap: onTap, + borderRadius: BorderRadius.circular(30), + child: Row( mainAxisSize: MainAxisSize.min, + spacing: 8.h, children: [ - LocaleKeys.welcome.tr(context: context).toText14(color: AppColors.greyTextColor, height: 1, weight: FontWeight.w500), - Row( + Icon(Icons.menu, color: AppColors.textColor).onPress(() { + getIt.get().getProfileSettings(); + Navigator.of(context).push( + CustomPageRoute( + direction: getIt.get().isArabic() ? AxisDirection.right : AxisDirection.left, + page: ProfileSettings(), + ), + ); + }), + Container( + height: 32.h, + width: 1.5.w, + margin: EdgeInsets.only(right: 10.w,left: 10.w), + decoration: BoxDecoration( + color: AppColors.greyTextColor.withOpacity(.3), + borderRadius: BorderRadius.circular(1.r), + ), + ), + imageWidget ?? + (imageUrl != null + ? Utils.buildImgWithAssets(icon: imageUrl!, width: 40, height: 40) + : SizedBox(width: 40, height: 40)), + Column( + crossAxisAlignment: CrossAxisAlignment.start, spacing: 4.h, - crossAxisAlignment: CrossAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ - Flexible(child: name.toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1, height: 1)), - Icon(Icons.keyboard_arrow_down, size: 20, color: AppColors.greyTextColor), + LocaleKeys.welcome.tr(context: context).toText14(color: AppColors.greyTextColor, height: 1, isBold: true), + Row( + spacing: 4.h, + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + Flexible(child: name.toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1, height: 1, isEnglishOnly: true)), + // Icon(Icons.keyboard_arrow_down, size: 20, color: AppColors.greyTextColor), + Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.arrowRight, + iconColor: AppColors.blackColor, + width: 22.w, + height: 22.h, + fit: BoxFit.contain, + ) + ), + // Utils.buildSvgWithAssets(icon: AppAssets.arrowRight, height: 22.h, width: 22.w) + ], + ), ], - ), + ).expanded, ], - ).expanded, - ], - ), + ), + ), + ], ); } } diff --git a/lib/presentation/home_health_care/hhc_order_detail_page.dart b/lib/presentation/home_health_care/hhc_order_detail_page.dart index 7017441c..ff2f9af7 100644 --- a/lib/presentation/home_health_care/hhc_order_detail_page.dart +++ b/lib/presentation/home_health_care/hhc_order_detail_page.dart @@ -102,7 +102,7 @@ class _HhcOrderDetailPageState extends State { child: (isLoading ? "Processing" : order.statusText ?? '') .toText12( color: statusColor, - fontWeight: FontWeight.w600, + isBold: true, ) .toShimmer2(isShow: isLoading), ), @@ -110,7 +110,7 @@ class _HhcOrderDetailPageState extends State { (isLoading ? "Jan 15, 2024" : _formatDate(order.created)) .toText12( color: AppColors.textColorLight, - fontWeight: FontWeight.w500, + isBold: true, ) .toShimmer2(isShow: isLoading), ], @@ -124,7 +124,7 @@ class _HhcOrderDetailPageState extends State { if (!isLoading) ...[ LocaleKeys.requestID.tr(context: context).toText14( color: AppColors.textColorLight, - weight: FontWeight.w500, + weight: FontWeight.w600, ), SizedBox(width: 4.w), ], @@ -161,7 +161,7 @@ class _HhcOrderDetailPageState extends State { // borderColor: AppColors.primaryRedColor, // textColor: AppColors.whiteColor, // fontSize: 14.f, - // fontWeight: FontWeight.w600, + // isBold: true, // borderRadius: 10.r, // height: 44.h, // ).toShimmer2(isShow: isLoading), diff --git a/lib/presentation/home_health_care/hhc_procedures_page.dart b/lib/presentation/home_health_care/hhc_procedures_page.dart index c420742c..fca3f9c4 100644 --- a/lib/presentation/home_health_care/hhc_procedures_page.dart +++ b/lib/presentation/home_health_care/hhc_procedures_page.dart @@ -8,9 +8,11 @@ import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/get_cmc_all_orders_resp_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/models/resq_models/get_cmc_services_resp_model.dart'; +import 'package:hmg_patient_app_new/features/location/location_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/home_health_care/hhc_order_detail_page.dart'; import 'package:hmg_patient_app_new/presentation/home_health_care/hhc_selection_review_page.dart'; @@ -33,11 +35,13 @@ class HhcProceduresPage extends StatefulWidget { } class _HhcProceduresPageState extends State { + + late AppState appState; + @override void initState() { super.initState(); final HmgServicesViewModel hmgServicesViewModel = context.read(); - final AppState appState = getIt.get(); scheduleMicrotask(() async { final user = appState.getAuthenticatedUser(); @@ -94,7 +98,7 @@ class _HhcProceduresPageState extends State { children: [ Row( children: [ - LocaleKeys.requestID.tr(context: context).toText14(color: AppColors.textColorLight, weight: FontWeight.w500), + LocaleKeys.requestID.tr(context: context).toText14(color: AppColors.textColorLight, isBold: true), SizedBox(width: 4.w), "${order.iD ?? '-'}".toText16(isBold: true), ], @@ -103,7 +107,7 @@ class _HhcProceduresPageState extends State { if (order.created != null) DateFormat('MMM dd, yyyy').format(DateTime.parse(order.created!)).toText12( color: AppColors.textColorLight, - fontWeight: FontWeight.w500, + isBold: true, ), ], ), @@ -175,7 +179,7 @@ class _HhcProceduresPageState extends State { Expanded( child: serviceName.toText14( color: AppColors.blackColor, - weight: FontWeight.w500, + weight: FontWeight.w600, maxlines: 3, ), ), @@ -212,7 +216,7 @@ class _HhcProceduresPageState extends State { Expanded( child: LocaleKeys.pendingOrderWait.tr(context: context).toText12( color: AppColors.infoBannerTextColor, - fontWeight: FontWeight.w500, + isBold: true, ), ), ], @@ -230,7 +234,7 @@ class _HhcProceduresPageState extends State { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 14.f, - fontWeight: FontWeight.w600, + isBold: true, borderRadius: 10.r, height: 44.h, ), @@ -318,7 +322,7 @@ class _HhcProceduresPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ serviceName.toText16( - weight: FontWeight.w500, + weight: FontWeight.w600, color: AppColors.blackColor, maxlines: 2, ), @@ -354,13 +358,12 @@ class _HhcProceduresPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.selectedServices.tr(context: context).toText12( - color: AppColors.textColorLight, - fontWeight: FontWeight.w600, - ), - "${hmgServicesViewModel.selectedHhcServices.length} service(s) selected".toText14( - isBold: true, - weight: FontWeight.bold, + LocaleKeys.selectedServices.tr(context: context).toText12(color: AppColors.textColorLight, isBold: true), + Row( + children: [ + ("${hmgServicesViewModel.selectedHhcServices.length} ").toText14(isBold: true, weight: FontWeight.bold, isEnglishOnly: true), + LocaleKeys.servicesSelected.tr(context: context).toText14(isBold: true, weight: FontWeight.bold), + ], ), ], ), @@ -393,9 +396,11 @@ class _HhcProceduresPageState extends State { final navigationServices = getIt.get(); final appState = getIt.get(); final hmgServicesViewModel = context.read(); + if (hmgServicesViewModel.selectedHhcServices.isNotEmpty) { - hmgServicesViewModel.setSelectedServiceForHhcOrder(hmgServicesViewModel.selectedHhcServices.first); + context.read().placeValueInController(); + hmgServicesViewModel.setSelectedServiceForHhcOrder(hmgServicesViewModel.selectedHhcServices.first); bool result = await navigationServices.push( CustomPageRoute( page: MapUtilityScreen( @@ -445,11 +450,12 @@ class _HhcProceduresPageState extends State { @override Widget build(BuildContext context) { + appState = getIt.get(); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( title: LocaleKeys.homeHealthCare.tr(context: context), - history: () => Navigator.of(context).push(CustomPageRoute(page: HhcOrderDetailPage(), direction: AxisDirection.up)), + history: () => appState.isAuthenticated ? Navigator.of(context).push(CustomPageRoute(page: HhcOrderDetailPage(), direction: AxisDirection.up)) : null, bottomChild: Consumer( builder: (BuildContext context, HmgServicesViewModel hmgServicesViewModel, Widget? child) { if (hmgServicesViewModel.isHhcOrdersLoading || hmgServicesViewModel.isHhcServicesLoading) { @@ -467,8 +473,14 @@ class _HhcProceduresPageState extends State { padding: EdgeInsets.all(24.w), child: CustomButton( borderWidth: 0, - text: LocaleKeys.createNewRequest.tr(context: context), - onPressed: () => _buildServicesListBottomsSheet(hmgServicesViewModel.hhcServicesList), + text: appState.isAuthenticated ? LocaleKeys.createNewRequest.tr(context: context) : LocaleKeys.loginToUseService.tr(context: context), + onPressed: () { + if(appState.isAuthenticated) { + _buildServicesListBottomsSheet(hmgServicesViewModel.hhcServicesList); + } else { + getIt().onLoginPressed(); + } + }, textColor: AppColors.whiteColor, borderRadius: 12.r, borderColor: Colors.transparent, @@ -492,12 +504,13 @@ class _HhcProceduresPageState extends State { } else { return Column( children: [ + appState.isAuthenticated ? Center( child: Utils.getNoDataWidget( context, noDataText: LocaleKeys.youHaveNoPendingRequests.tr(context: context), ), - ), + ) : LocaleKeys.homeHealthCareText.tr(context: context).toText18(isBold: true).paddingSymmetrical(24.h, 24.h), ], ); } diff --git a/lib/presentation/home_health_care/hhc_selection_review_page.dart b/lib/presentation/home_health_care/hhc_selection_review_page.dart index 9a9342d7..27245bee 100644 --- a/lib/presentation/home_health_care/hhc_selection_review_page.dart +++ b/lib/presentation/home_health_care/hhc_selection_review_page.dart @@ -172,7 +172,7 @@ class _HhcSelectionReviewPageState extends State { children: [ LocaleKeys.hereIsYourRequestNumber.tr(context: context).toText14( color: AppColors.textColorLight, - weight: FontWeight.w500, + weight: FontWeight.w600, ), SizedBox(width: 4.w), ("$requestId").toText16(isBold: true), diff --git a/lib/presentation/insurance/insurance_approval_details_page.dart b/lib/presentation/insurance/insurance_approval_details_page.dart index a074a8d8..d0d7f681 100644 --- a/lib/presentation/insurance/insurance_approval_details_page.dart +++ b/lib/presentation/insurance/insurance_approval_details_page.dart @@ -6,6 +6,7 @@ import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/insurance/insurance_view_model.dart'; @@ -16,6 +17,8 @@ import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:provider/provider.dart'; +import 'dart:ui' as ui; + class InsuranceApprovalDetailsPage extends StatelessWidget { InsuranceApprovalDetailsPage({super.key, required this.insuranceApprovalResponseModel}); @@ -36,7 +39,7 @@ class InsuranceApprovalDetailsPage extends StatelessWidget { decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, borderRadius: 24.h, - hasShadow: true, + hasShadow: false, ), child: Padding( padding: EdgeInsets.all(14.h), @@ -51,8 +54,16 @@ class InsuranceApprovalDetailsPage extends StatelessWidget { children: [ AppCustomChipWidget( labelText: insuranceApprovalResponseModel.approvalStatusDescption, - backgroundColor: insuranceApprovalResponseModel.status == 9 ? AppColors.successColor.withOpacity(0.1) : AppColors.primaryRedColor.withOpacity(0.1), - textColor: insuranceApprovalResponseModel.status == 9 ? AppColors.successColor : AppColors.primaryRedColor, + backgroundColor: insuranceApprovalResponseModel.status == 9 + ? AppColors.successColor.withValues(alpha: 0.1) + : (insuranceApprovalResponseModel.approvalStatusDescption?.toLowerCase().contains('partial') == true || insuranceApprovalResponseModel.status == 8) + ? AppColors.warningColorYellow.withValues(alpha: 0.1) + : AppColors.primaryRedColor.withValues(alpha: 0.1), + textColor: insuranceApprovalResponseModel.status == 9 + ? AppColors.successColor + : (insuranceApprovalResponseModel.approvalStatusDescption?.toLowerCase().contains('partial') == true || insuranceApprovalResponseModel.status == 8) + ? AppColors.warningColorYellow + : AppColors.primaryRedColor, ), AppCustomChipWidget( icon: (!insuranceApprovalResponseModel.isLiveCareAppointment! ? AppAssets.walkin_appointment_icon : AppAssets.small_livecare_icon), @@ -63,8 +74,8 @@ class InsuranceApprovalDetailsPage extends StatelessWidget { ), AppCustomChipWidget( labelText: appState.isArabic() ? insuranceApprovalResponseModel.isInOutPatientDescriptionN! : insuranceApprovalResponseModel.isInOutPatientDescription!, - backgroundColor: AppColors.primaryRedColor.withOpacity(0.1), - textColor: AppColors.primaryRedColor, + backgroundColor: AppColors.warningColorYellow.withValues(alpha: 0.1), + textColor: AppColors.warningColorYellow, ), ], ), @@ -72,8 +83,9 @@ class InsuranceApprovalDetailsPage extends StatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.network( - insuranceApprovalResponseModel.doctorImageURL!, + Utils.buildImgWithNetwork( + url: insuranceApprovalResponseModel.doctorImageURL!, + iconColor: AppColors.blackBgColor, width: 63.h, height: 63.h, fit: BoxFit.cover, @@ -84,21 +96,41 @@ class InsuranceApprovalDetailsPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ (insuranceApprovalResponseModel.doctorName!).toText16(isBold: true), + SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, spacing: 3.h, runSpacing: 4.h, children: [ - AppCustomChipWidget(labelText: insuranceApprovalResponseModel.clinicName!), - AppCustomChipWidget(labelText: "${LocaleKeys.approvalNo.tr(context: context)} ${insuranceApprovalResponseModel.approvalNo}"), - AppCustomChipWidget(labelText: "${LocaleKeys.unusedCount.tr(context: context)} ${insuranceApprovalResponseModel.unUsedCount}"), + AppCustomChipWidget(labelText: insuranceApprovalResponseModel.clinicName ?? ""), + AppCustomChipWidget(labelText: "${LocaleKeys.approvalNo.tr(context: context)} ${insuranceApprovalResponseModel.approvalNo}", isEnglishOnly: true), + AppCustomChipWidget(labelText: "${LocaleKeys.unusedCount.tr(context: context)} ${insuranceApprovalResponseModel.unUsedCount}", isEnglishOnly: true), AppCustomChipWidget(labelText: "${LocaleKeys.companyName.tr(context: context)} ${insuranceApprovalResponseModel.companyName}"), AppCustomChipWidget( - labelText: - "${LocaleKeys.receiptOn.tr(context: context)} ${DateUtil.formatDateToDate(DateUtil.convertStringToDate(insuranceApprovalResponseModel.receiptOn), false)}"), + richText: Row( + mainAxisSize: MainAxisSize.min, + children: [ + "${LocaleKeys.receiptOn.tr(context: context)} ".toText10(isBold: true), + Directionality( + textDirection: ui.TextDirection.ltr, + child: DateUtil.formatDateToDate(DateUtil.convertStringToDate(insuranceApprovalResponseModel.receiptOn), false).toText10(isBold: true)), + ], + ), + isEnglishOnly: true, + ), + AppCustomChipWidget( - labelText: - "${LocaleKeys.expiryOn.tr(context: context)} ${DateUtil.formatDateToDate(DateUtil.convertStringToDate(insuranceApprovalResponseModel.expiryDate), false)}"), + richText: Row( + mainAxisSize: MainAxisSize.min, + children: [ + "${LocaleKeys.expiryOn.tr(context: context)} ".toText10(isBold: true), + Directionality( + textDirection: ui.TextDirection.ltr, + child: DateUtil.formatDateToDate(DateUtil.convertStringToDate(insuranceApprovalResponseModel.expiryDate), false).toText10(isBold: true)), + ], + ), + isEnglishOnly: true, + ), ], ), ], @@ -115,14 +147,14 @@ class InsuranceApprovalDetailsPage extends StatelessWidget { decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, borderRadius: 24.h, - hasShadow: true, + hasShadow: false, ), child: Padding( padding: EdgeInsets.all(16.h), child: insuranceApprovalResponseModel.apporvalDetails != null ? Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Approval Details".toText16(isBold: true), + LocaleKeys.approvalDetails.tr().toText16(isBold: true), ListView.separated( padding: EdgeInsets.only(top: 16.h), shrinkWrap: true, @@ -138,7 +170,6 @@ class InsuranceApprovalDetailsPage extends StatelessWidget { child: AnimatedContainer( duration: Duration(milliseconds: 300), curve: Curves.easeInOut, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -148,7 +179,7 @@ class InsuranceApprovalDetailsPage extends StatelessWidget { LocaleKeys.procedureName.tr(context: context).toText14(isBold: true), Expanded( child: (insuranceApprovalResponseModel.apporvalDetails![index]!.procedureName ?? "") - .toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor, textAlignment: TextAlign.end, maxLine: 2), + .toText12(isBold: true, color: AppColors.greyTextColor, textAlignment: TextAlign.end, maxLine: 2), ), ], ), @@ -157,7 +188,7 @@ class InsuranceApprovalDetailsPage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ "${LocaleKeys.status.tr(context: context)}: ".toText14(isBold: true), - insuranceApprovalResponseModel.apporvalDetails![index]!.status!.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + (insuranceApprovalResponseModel.apporvalDetails![index].status ?? "").toText12(isBold: true, color: AppColors.greyTextColor), ], ), SizedBox(height: 8.h), @@ -165,7 +196,7 @@ class InsuranceApprovalDetailsPage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ "${LocaleKeys.usageStatus.tr(context: context)}: ".toText14(isBold: true), - (insuranceApprovalResponseModel.apporvalDetails![index]!.isInvoicedDesc ?? "").toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + (insuranceApprovalResponseModel.apporvalDetails![index].isInvoicedDesc ?? "").toText12(isBold: true, color: AppColors.greyTextColor), ], ), ], diff --git a/lib/presentation/insurance/insurance_approvals_page.dart b/lib/presentation/insurance/insurance_approvals_page.dart index 52f8b1f6..feac2e3a 100644 --- a/lib/presentation/insurance/insurance_approvals_page.dart +++ b/lib/presentation/insurance/insurance_approvals_page.dart @@ -51,7 +51,7 @@ class _InsuranceApprovalsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ ListView.separated( - padding: EdgeInsets.only(top: 24.h), + padding: EdgeInsets.only(top: 12.h), shrinkWrap: true, physics: NeverScrollableScrollPhysics(), itemCount: insuranceVM.isInsuranceApprovalsLoading diff --git a/lib/presentation/insurance/insurance_home_page.dart b/lib/presentation/insurance/insurance_home_page.dart index 519d8306..2bbe6f7d 100644 --- a/lib/presentation/insurance/insurance_home_page.dart +++ b/lib/presentation/insurance/insurance_home_page.dart @@ -47,12 +47,12 @@ class _InsuranceHomePageState extends State { appState = getIt.get(); insuranceViewModel = Provider.of(context, listen: false); return CollapsingListView( - title: "${LocaleKeys.insurance.tr(context: context)} ${LocaleKeys.updateInsurance.tr(context: context)}", - history: () { - insuranceViewModel.setIsInsuranceHistoryLoading(true); - insuranceViewModel.getPatientInsuranceCardHistory(); - showCommonBottomSheetWithoutHeight(context, child: InsuranceHistory(), callBackFunc: () {}, title: "", isCloseButtonVisible: false, isFullScreen: false); - }, + title: "${LocaleKeys.updateInsurance.tr(context: context)} ${LocaleKeys.insurance.tr(context: context)}", + // history: () { + // // insuranceViewModel.setIsInsuranceHistoryLoading(true); + // // insuranceViewModel.getPatientInsuranceCardHistory(); + // showCommonBottomSheetWithoutHeight(context, child: InsuranceHistory(), callBackFunc: () {}, title: "", isCloseButtonVisible: false, isFullScreen: false); + // }, child: SingleChildScrollView( child: Consumer(builder: (context, insuranceVM, child) { return Column( @@ -66,12 +66,24 @@ class _InsuranceHomePageState extends State { isLoading: true, ).paddingSymmetrical(24.h, 24.h) : insuranceVM.patientInsuranceList.isNotEmpty - ? Padding( - padding: EdgeInsets.only(top: 24.h), - child: PatientInsuranceCard( - insuranceCardDetailsModel: insuranceVM.patientInsuranceList.first, - isInsuranceExpired: DateTime.now().isAfter(DateUtil.convertStringToDate(insuranceVM.patientInsuranceList.first.cardValidTo))) - .paddingSymmetrical(24.w, 0.h), + ? ListView.builder( + shrinkWrap: true, + padding: EdgeInsets.all(16.h), + physics: const BouncingScrollPhysics(), + itemBuilder: (context, index) { + return Column( + children: [ + PatientInsuranceCard( + isShowButtons: index == 0, + insuranceCardDetailsModel: insuranceVM.patientInsuranceList[index], + isInsuranceExpired: DateTime.now().isAfter(DateUtil.convertStringToDate(insuranceVM.patientInsuranceList.first.cardValidTo))), + SizedBox( + height: 12.h, + ) + ], + ); + }, + itemCount: insuranceVM.patientInsuranceList.length, ) : Padding( padding: EdgeInsets.only(top: MediaQuery.of(context).size.height * 0.12), @@ -93,7 +105,7 @@ class _InsuranceHomePageState extends State { borderColor: AppColors.bgGreenColor.withOpacity(0.0), textColor: AppColors.bgGreenColor, fontSize: 14, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, diff --git a/lib/presentation/insurance/widgets/insurance_approval_card.dart b/lib/presentation/insurance/widgets/insurance_approval_card.dart index 588f9887..34662ef4 100644 --- a/lib/presentation/insurance/widgets/insurance_approval_card.dart +++ b/lib/presentation/insurance/widgets/insurance_approval_card.dart @@ -9,8 +9,13 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/insurance/models/resp_models/patient_insurance_approval_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/insurance/insurance_approval_details_page.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; + +import 'dart:ui' as ui; class InsuranceApprovalCard extends StatelessWidget { InsuranceApprovalCard({super.key, required this.insuranceApprovalResponseModel, required this.isLoading, required this.appState}); @@ -19,6 +24,34 @@ class InsuranceApprovalCard extends StatelessWidget { AppState appState; bool isLoading; + /// Helper method to determine if approval is partially approved + bool _isPartiallyApproved() { + final description = insuranceApprovalResponseModel.approvalStatusDescption?.toLowerCase() ?? ''; + return description.contains('partial') || insuranceApprovalResponseModel.status == 8; + } + + /// Helper method to get chip background color based on approval status + Color _getChipBackgroundColor() { + if (insuranceApprovalResponseModel.status == 9) { + return AppColors.successColor.withValues(alpha: 0.1); + } else if (_isPartiallyApproved()) { + return AppColors.warningColorYellow.withValues(alpha: 0.1); + } else { + return AppColors.primaryRedColor.withValues(alpha: 0.1); + } + } + + /// Helper method to get chip text color based on approval status + Color _getChipTextColor() { + if (insuranceApprovalResponseModel.status == 9) { + return AppColors.successColor; + } else if (_isPartiallyApproved()) { + return AppColors.warningColorYellow; + } else { + return AppColors.primaryRedColor; + } + } + @override Widget build(BuildContext context) { return Container( @@ -40,8 +73,8 @@ class InsuranceApprovalCard extends StatelessWidget { children: [ AppCustomChipWidget( labelText: isLoading ? "Approved" : insuranceApprovalResponseModel.approvalStatusDescption, - backgroundColor: insuranceApprovalResponseModel.status == 9 ? AppColors.successColor.withOpacity(0.1) : AppColors.primaryRedColor.withOpacity(0.1), - textColor: insuranceApprovalResponseModel.status == 9 ? AppColors.successColor : AppColors.primaryRedColor, + backgroundColor: isLoading ? AppColors.successColor.withValues(alpha: 0.1) : _getChipBackgroundColor(), + textColor: isLoading ? AppColors.successColor : _getChipTextColor(), ).toShimmer2(isShow: isLoading), AppCustomChipWidget( icon: isLoading ? AppAssets.walkin_appointment_icon : (!insuranceApprovalResponseModel.isLiveCareAppointment! ? AppAssets.walkin_appointment_icon : AppAssets.small_livecare_icon), @@ -64,8 +97,8 @@ class InsuranceApprovalCard extends StatelessWidget { : appState.isArabic() ? insuranceApprovalResponseModel.isInOutPatientDescriptionN! : insuranceApprovalResponseModel.isInOutPatientDescription!, - backgroundColor: AppColors.primaryRedColor.withOpacity(0.1), - textColor: AppColors.primaryRedColor, + backgroundColor: AppColors.warningColorYellow.withValues(alpha: 0.1), + textColor: AppColors.warningColorYellow, ).toShimmer2(isShow: isLoading), ], ).toShimmer2(isShow: isLoading), @@ -73,8 +106,9 @@ class InsuranceApprovalCard extends StatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.network( - isLoading ? "https://hmgwebservices.com/Images/MobileImages/OALAY/1439.png" : insuranceApprovalResponseModel.doctorImageURL!, + Utils.buildImgWithNetwork( + url: isLoading ? "https://hmgwebservices.com/Images/MobileImages/OALAY/1439.png" : insuranceApprovalResponseModel.doctorImageURL!, + iconColor: AppColors.blackBgColor, width: 63.h, height: 63.h, fit: BoxFit.cover, @@ -84,7 +118,8 @@ class InsuranceApprovalCard extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - (isLoading ? "John Smith" : insuranceApprovalResponseModel.doctorName!).toText16(isBold: true).toShimmer2(isShow: isLoading), + (isLoading ? "John Smith" : insuranceApprovalResponseModel.doctorName ?? "").toText16(isBold: true).toShimmer2(isShow: isLoading), + SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, spacing: 3.h, @@ -94,15 +129,18 @@ class InsuranceApprovalCard extends StatelessWidget { // backgroundColor: insuranceApprovalResponseModel.status == 9 ? AppColors.successColor.withValues(alpha: 0.1) : AppColors.primaryRedColor.withValues(alpha: 0.1), // textColor: insuranceApprovalResponseModel.status == 9 ? AppColors.successColor : AppColors.primaryRedColor, // ).toShimmer2(isShow: isLoading), - AppCustomChipWidget(labelText: isLoading ? "Cardiology" : insuranceApprovalResponseModel.clinicName!).toShimmer2(isShow: isLoading), - AppCustomChipWidget( - icon: AppAssets.doctor_calendar_icon, - labelText: isLoading ? "Cardiology" : DateUtil.formatDateToDate(DateUtil.convertStringToDate(insuranceApprovalResponseModel.submitOn), false)) - .toShimmer2(isShow: isLoading), + AppCustomChipWidget(labelText: isLoading ? "Cardiology" : insuranceApprovalResponseModel.clinicName ?? "").toShimmer2(isShow: isLoading), + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + icon: AppAssets.doctor_calendar_icon, + labelText: isLoading ? "Cardiology" : DateUtil.formatDateToDate(DateUtil.convertStringToDate(insuranceApprovalResponseModel.submitOn), false), isEnglishOnly: true,) + .toShimmer2(isShow: isLoading), + ), isLoading ? SizedBox.shrink() : AppCustomChipWidget( - labelText: isLoading ? LocaleKeys.approvalNo.tr(context: context) : "${LocaleKeys.approvalNo.tr(context: context)} ${insuranceApprovalResponseModel.approvalNo}") + labelText: isLoading ? LocaleKeys.approvalNo.tr(context: context) : "${LocaleKeys.approvalNo.tr(context: context)} ${insuranceApprovalResponseModel.approvalNo}", isEnglishOnly: true,) .toShimmer2(isShow: isLoading), ], ), @@ -111,12 +149,30 @@ class InsuranceApprovalCard extends StatelessWidget { ), ], ), - Row( - mainAxisAlignment: MainAxisAlignment.end, - children: [ - Transform.flip( - flipX: appState.isArabic(), child: Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_icon_small, width: 15.h, height: 15.h, fit: BoxFit.contain, iconColor: AppColors.textColor)), - ], + SizedBox( + height: 12.h, + ), + CustomButton( + text: LocaleKeys.viewDetails.tr(context: context), + onPressed: () async { + Navigator.of(context).push( + CustomPageRoute( + page: InsuranceApprovalDetailsPage(insuranceApprovalResponseModel: insuranceApprovalResponseModel), + ), + ); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: isTablet || isFoldable ? 46.h : 40.h, + // height: 40.h, + // icon: AppAssets.insurance, + // iconColor: AppColors.primaryRedColor, + iconSize: 16.h, ).toShimmer2(isShow: isLoading), ], ), diff --git a/lib/presentation/insurance/widgets/insurance_history.dart b/lib/presentation/insurance/widgets/insurance_history.dart index 7219a34e..0f5bde1e 100644 --- a/lib/presentation/insurance/widgets/insurance_history.dart +++ b/lib/presentation/insurance/widgets/insurance_history.dart @@ -73,7 +73,7 @@ class InsuranceHistory extends StatelessWidget { borderColor: AppColors.primaryRedColor.withOpacity(0.0), textColor: AppColors.primaryRedColor, fontSize: 10, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 8, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 30.h, @@ -81,7 +81,7 @@ class InsuranceHistory extends StatelessWidget { ], ), SizedBox(height: 8.h), - // "Haroon Amjad".toText16(weight: FontWeight.w600), + // "Haroon Amjad".toText16(isBold: true), SizedBox(height: 8.h), Row( children: [ diff --git a/lib/presentation/insurance/widgets/insurance_update_details_card.dart b/lib/presentation/insurance/widgets/insurance_update_details_card.dart index 35be7f9e..f7fd4402 100644 --- a/lib/presentation/insurance/widgets/insurance_update_details_card.dart +++ b/lib/presentation/insurance/widgets/insurance_update_details_card.dart @@ -3,13 +3,16 @@ import 'package:flutter/cupertino.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/insurance/insurance_view_model.dart'; +import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; +import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; @@ -55,8 +58,8 @@ class PatientInsuranceCardUpdateCard extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - insuranceViewModel.patientInsuranceUpdateResponseModel!.memberName!.toText16(weight: FontWeight.w600), - "Policy: ${insuranceViewModel.patientInsuranceUpdateResponseModel!.policyNumber}".toText12(isBold: true, color: AppColors.lightGrayColor), + insuranceViewModel.patientInsuranceUpdateResponseModel!.memberName!.toText16(isBold: true), + LocaleKeys.policyNumberInsurancePage.tr(namedArgs: {'number': insuranceViewModel.patientInsuranceUpdateResponseModel!.policyNumber.toString()}).toText12(isBold: true, color: AppColors.lightGrayColor, isEnglishOnly: true), SizedBox(height: 8.h), Row( children: [ @@ -75,21 +78,19 @@ class PatientInsuranceCardUpdateCard extends StatelessWidget { ], ), SizedBox(height: 8.h), - Row( + Wrap( + direction: Axis.horizontal, + spacing: 4.h, + runSpacing: 4.h, children: [ - Wrap( - direction: Axis.horizontal, - spacing: 4.h, - runSpacing: 4.h, - children: [ - AppCustomChipWidget( - icon: AppAssets.doctor_calendar_icon, - labelText: "${LocaleKeys.expiryOn.tr(context: context)} ${insuranceViewModel.patientInsuranceUpdateResponseModel!.effectiveTo}", - ), - AppCustomChipWidget( - labelText: "Member ID: ${insuranceViewModel.patientInsuranceUpdateResponseModel!.memberID!}", - ), - ], + AppCustomChipWidget( + icon: AppAssets.doctor_calendar_icon, + labelText: + "${LocaleKeys.expiryOn.tr(context: context)} ${DateUtil.formatDateToDate(DateTime.parse(insuranceViewModel.patientInsuranceUpdateResponseModel!.effectiveTo!), false)}", + isEnglishOnly: true, + ), + AppCustomChipWidget( + labelText: "Member ID: ${insuranceViewModel.patientInsuranceUpdateResponseModel!.memberID!}", isEnglishOnly: true, ), ], ), @@ -106,45 +107,68 @@ class PatientInsuranceCardUpdateCard extends StatelessWidget { iconSize: 20.w, text: "${LocaleKeys.updateInsurance.tr(context: context)} ${LocaleKeys.updateInsuranceSubtitle.tr(context: context)}", onPressed: () { - LoaderBottomSheet.showLoader(); - insuranceViewModel.updatePatientInsuranceCard( - patientID: appState.getAuthenticatedUser()!.patientId!, - patientType: appState.getAuthenticatedUser()!.patientType!, - patientIdentificationID: appState.getAuthenticatedUser()!.patientIdentificationNo!, - mobileNo: appState.getAuthenticatedUser()!.mobileNumber!, - insuranceCardImage: "", - onSuccess: (val) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - title: LocaleKeys.success.tr(context: context), - context, - child: Utils.getSuccessWidget(loadingText: LocaleKeys.success.tr(context: context)), - callBackFunc: () { - Navigator.pop(context); - }, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }, - onError: (err) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - title: LocaleKeys.notice.tr(context: context), - context, - child: Utils.getErrorWidget(loadingText: err.toString()), - callBackFunc: () { - Navigator.pop(context); + if (insuranceViewModel.patientInsuranceUpdateResponseModel != null) { + LoaderBottomSheet.showLoader(); + getIt().sendPatientUpdateRequest(onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + insuranceViewModel.setIsInsuranceDataToBeLoaded(true); + insuranceViewModel.initInsuranceProvider(); + Navigator.pop(context); + }, onError: (err) { + insuranceViewModel.updatePatientInsuranceCard( + patientID: appState.getAuthenticatedUser()!.patientId!, + patientType: appState.getAuthenticatedUser()!.patientType!, + patientIdentificationID: appState.getAuthenticatedUser()!.patientIdentificationNo!, + mobileNo: appState.getAuthenticatedUser()!.mobileNumber!, + insuranceCardImage: "", + onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + getIt.get().showCommonBottomSheetWithoutH( + message: LocaleKeys.insuranceRequestSubmittedSuccessfully.tr(context: context), + label: LocaleKeys.notice.tr(), + onOkPressed: () { + Navigator.pop(context); + }, + okLabel: "confirm", + cancelLabel: LocaleKeys.acknowledged.tr(context: context), + isConfirmButton: true, + ); + // showCommonBottomSheetWithoutHeight( + // title: LocaleKeys.success.tr(context: context), + // context, + // child: Utils.getSuccessWidget(loadingText: LocaleKeys.insuranceRequestSubmittedSuccessfully.tr(context: context)), + // callBackFunc: () { + // Navigator.pop(context); + // }, + // isFullScreen: false, + // isCloseButtonVisible: false, + // isAutoDismiss: true + // ); + // Future.delayed(Duration(milliseconds: 2000)).then((value) async { + // Navigator.pop(context); + // }); }, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }); + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () { + Navigator.pop(context); + }, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }); + } }, backgroundColor: insuranceViewModel.patientInsuranceUpdateResponseModel != null ? AppColors.successColor : AppColors.lightGrayBGColor, borderColor: AppColors.successColor.withOpacity(0.01), textColor: AppColors.whiteColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12.r, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), ).paddingSymmetrical(24.w, 0.h), diff --git a/lib/presentation/insurance/widgets/patient_insurance_card.dart b/lib/presentation/insurance/widgets/patient_insurance_card.dart index 531341b5..6fab990c 100644 --- a/lib/presentation/insurance/widgets/patient_insurance_card.dart +++ b/lib/presentation/insurance/widgets/patient_insurance_card.dart @@ -20,10 +20,11 @@ import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; class PatientInsuranceCard extends StatelessWidget { - PatientInsuranceCard({super.key, required this.insuranceCardDetailsModel, required this.isInsuranceExpired}); + PatientInsuranceCard({super.key, required this.insuranceCardDetailsModel, required this.isInsuranceExpired, this.isShowButtons = true}); PatientInsuranceDetailsResponseModel insuranceCardDetailsModel; bool isInsuranceExpired = false; + bool isShowButtons = true; late InsuranceViewModel insuranceViewModel; late AppState appState; @@ -52,63 +53,76 @@ class PatientInsuranceCard extends StatelessWidget { children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.4, - child: "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}".toText18(isBold: true, textOverflow: TextOverflow.clip)), - LocaleKeys.policyNumber.tr(namedArgs: {'number': insuranceCardDetailsModel.insurancePolicyNo ?? ''}, context: context).toText12(isBold: true, color: AppColors.lightGrayColor), + child: "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}".toText18(isBold: true, textOverflow: TextOverflow.clip, isEnglishOnly: true)), + LocaleKeys.policyNumberInsurancePage.tr(namedArgs: {'number': insuranceCardDetailsModel.insurancePolicyNo.toString()}).toText12(isBold: true, color: AppColors.lightGrayColor, isEnglishOnly: true), + // Row( + // children: [ + // "${LocaleKeys.policyNumber.tr(context: context)}${insuranceCardDetailsModel.insurancePolicyNo}".toText12(isBold: true, color: AppColors.lightGrayColor), + // ], + // ), ], ), - AppCustomChipWidget( - icon: insuranceViewModel.isInsuranceExpired + isShowButtons ? AppCustomChipWidget( + icon: isCurrentPatientInsuranceExpired(insuranceCardDetailsModel.cardValidTo!) ? AppAssets.cancel_circle_icon : insuranceViewModel.isInsuranceActive ? AppAssets.insurance_active_icon : AppAssets.alertSquare, - labelText: insuranceViewModel.isInsuranceExpired + labelText: isCurrentPatientInsuranceExpired(insuranceCardDetailsModel.cardValidTo!) ? LocaleKeys.insuranceExpired.tr(context: context) : insuranceViewModel.isInsuranceActive ? LocaleKeys.insuranceActive.tr(context: context) : LocaleKeys.insuranceInActive.tr(context: context), - iconColor: insuranceViewModel.isInsuranceExpired + iconColor: isCurrentPatientInsuranceExpired(insuranceCardDetailsModel.cardValidTo!) ? AppColors.primaryRedColor : insuranceViewModel.isInsuranceActive ? AppColors.successColor : AppColors.warningColorYellow, - textColor: insuranceViewModel.isInsuranceExpired + textColor: isCurrentPatientInsuranceExpired(insuranceCardDetailsModel.cardValidTo!) ? AppColors.primaryRedColor : insuranceViewModel.isInsuranceActive ? AppColors.successColor : AppColors.warningColorYellow, iconSize: 12.w, deleteIcon: insuranceViewModel.isInsuranceActive ? null : AppAssets.forward_chevron_icon, - deleteIconColor: AppColors.warningColorYellow, + deleteIconColor: insuranceViewModel.isInsuranceExpired + ? AppColors.primaryRedColor + : insuranceViewModel.isInsuranceActive + ? AppColors.successColor + : AppColors.warningColorYellow, deleteIconHasColor: true, onChipTap: () { if (!insuranceViewModel.isInsuranceActive) { - showCommonBottomSheetWithoutHeight( - title: LocaleKeys.notice.tr(context: context), - context, - child: Utils.getWarningWidget( - loadingText: LocaleKeys.insuranceInActiveContactSupport.tr(context: context), - confirmText: LocaleKeys.contactUs.tr(context: context), - isShowActionButtons: true, - onCancelTap: () { - Navigator.pop(context); - }, - onConfirmTap: () async { - launchUrl(Uri.parse("tel://" + "+966 92 006 6666")); - }), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); + insuranceViewModel.setIsInsuranceUpdateDetailsLoading(true); + insuranceViewModel.getPatientInsuranceDetailsForUpdate( + appState.getAuthenticatedUser()!.patientId.toString(), appState.getAuthenticatedUser()!.patientIdentificationNo.toString()); + showCommonBottomSheetWithoutHeight(context, child: PatientInsuranceCardUpdateCard(), callBackFunc: () {}, title: "", isCloseButtonVisible: false, isFullScreen: false); + // showCommonBottomSheetWithoutHeight( + // title: LocaleKeys.notice.tr(context: context), + // context, + // child: Utils.getWarningWidget( + // loadingText: LocaleKeys.insuranceInActiveContactSupport.tr(context: context), + // confirmText: LocaleKeys.contactUs.tr(context: context), + // isShowActionButtons: true, + // onCancelTap: () { + // Navigator.pop(context); + // }, + // onConfirmTap: () async { + // launchUrl(Uri.parse("tel://" + "+966 92 006 6666")); + // }), + // callBackFunc: () {}, + // isFullScreen: false, + // isCloseButtonVisible: true, + // ); } }, - backgroundColor: insuranceViewModel.isInsuranceExpired + backgroundColor: isCurrentPatientInsuranceExpired(insuranceCardDetailsModel.cardValidTo!) ? AppColors.primaryRedColor.withOpacity(0.1) : insuranceViewModel.isInsuranceActive ? AppColors.successColor.withOpacity(0.1) : AppColors.warningColorYellow.withOpacity(0.1), labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: insuranceViewModel.isInsuranceActive ? 6.w : 0.w), - ).toShimmer2(isShow: insuranceViewModel.isInsuranceLoading), + ).toShimmer2(isShow: insuranceViewModel.isInsuranceLoading) : SizedBox.shrink(), // AppCustomChipWidget( // icon: isInsuranceExpired ? AppAssets.cancel_circle_icon : AppAssets.insurance_active_icon, // labelText: isInsuranceExpired ? LocaleKeys.insuranceExpired.tr(context: context) : LocaleKeys.insuranceActive.tr(context: context), @@ -121,8 +135,24 @@ class PatientInsuranceCard extends StatelessWidget { ], ), SizedBox(height: 12.h), - insuranceCardDetailsModel.groupName!.toText12(isBold: true), - insuranceCardDetailsModel.companyName!.toText12(isBold: true), + insuranceCardDetailsModel.groupName!.toText12(isBold: true, isEnglishOnly: true), + Row( + children: [ + (insuranceCardDetailsModel.companyName!.length > 40 ? "${insuranceCardDetailsModel.companyName!.substring(0, 40)}..." : insuranceCardDetailsModel.companyName!).toText12(isBold: true, isEnglishOnly: true), + SizedBox( + width: 6.h, + ), + Container( + padding: EdgeInsets.symmetric(horizontal: 6.h, vertical: 4.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.infoColor, + borderRadius: 50.r, + ), + child: ((insuranceCardDetailsModel.subCategoryDesc ?? "").length > 10 ? (insuranceCardDetailsModel.subCategoryDesc ?? "").substring(0, 10) : (insuranceCardDetailsModel.subCategoryDesc ?? "")) + .toText8(isBold: true, color: AppColors.whiteColor, isEnglishOnly: true), + ), + ], + ), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, @@ -132,19 +162,21 @@ class PatientInsuranceCard extends StatelessWidget { AppCustomChipWidget( icon: AppAssets.doctor_calendar_icon, // labelText: "${LocaleKeys.expiryDate.tr(context: context)} ${DateUtil.formatDateToDate(DateUtil.convertStringToDate(insuranceCardDetailsModel.cardValidTo), false)}", - richText: "${LocaleKeys.expiryDate.tr(context: context)} ${DateUtil.formatDateToDate(DateUtil.convertStringToDate(insuranceCardDetailsModel.cardValidTo), false)}".toText10(isEnglishOnly: true), + richText: + "${LocaleKeys.expiryDate.tr(context: context)} ${DateUtil.formatDateToDate(DateUtil.convertStringToDate(insuranceCardDetailsModel.cardValidTo), false)}".toText10(isBold: true), labelPadding: EdgeInsetsDirectional.only(start: -4.h, end: 8.h), ), - AppCustomChipWidget(richText: LocaleKeys.patientCardID.tr(namedArgs: {'id': insuranceCardDetailsModel.patientCardID ?? ''}, context: context).toText10(isEnglishOnly: true)), + AppCustomChipWidget(richText: LocaleKeys.patientCardID.tr(namedArgs: {'id': insuranceCardDetailsModel.patientCardID ?? ''}, context: context).toText10(isBold: true)), ], ), SizedBox(height: 10.h), isInsuranceExpired - ? CustomButton( + ? isShowButtons ? CustomButton( icon: AppAssets.update_insurance_card_icon, - iconColor: AppColors.successColor, + iconColor: AppColors.warningColorYellow, iconSize: 15.h, - text: "${LocaleKeys.updateInsurance.tr(context: context)} ${LocaleKeys.updateInsuranceSubtitle.tr(context: context)}", + // text: "${LocaleKeys.updateInsurance.tr(context: context)} ${LocaleKeys.updateInsuranceSubtitle.tr(context: context)}", + text: LocaleKeys.verifyInsurance.tr(context: context), onPressed: () { insuranceViewModel.setIsInsuranceUpdateDetailsLoading(true); insuranceViewModel.getPatientInsuranceDetailsForUpdate( @@ -157,19 +189,25 @@ class PatientInsuranceCard extends StatelessWidget { isCloseButtonVisible: false, isFullScreen: false); }, - backgroundColor: AppColors.bgGreenColor.withOpacity(0.20), - borderColor: AppColors.bgGreenColor.withOpacity(0.0), - textColor: AppColors.bgGreenColor, + backgroundColor: AppColors.warningColorYellow.withOpacity(0.20), + borderColor: AppColors.warningColorYellow.withOpacity(0.0), + textColor: AppColors.warningColorYellow, fontSize: 14, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, - ) + ) : SizedBox.shrink() : Container(), ], ), ), ).paddingSymmetrical(0.h, 0.h); } + + bool isCurrentPatientInsuranceExpired(String cardValidTo) { + return DateTime.now().isAfter( + DateUtil.convertStringToDate(cardValidTo), + ); + } } diff --git a/lib/presentation/lab/alphabeticScroll.dart b/lib/presentation/lab/alphabeticScroll.dart index 95d9da45..933f399c 100644 --- a/lib/presentation/lab/alphabeticScroll.dart +++ b/lib/presentation/lab/alphabeticScroll.dart @@ -45,41 +45,55 @@ class _AlphabetScrollPageState extends State { void initState() { super.initState(); scheduleMicrotask((){ - for(var char in widget.alpahbetsAvailable){ - data[char] = widget.details.where((element)=>element.description?.toLowerCase().startsWith(char.toLowerCase()) == true).toList(); - - } - setState((){}); - + _rebuildData(); }); - itemPositionsListener.itemPositions.addListener((){ + itemPositionsListener.itemPositions.addListener(_onPositionChanged); + } + + @override + void didUpdateWidget(covariant AlphabeticScroll oldWidget) { + super.didUpdateWidget(oldWidget); + if (oldWidget.details != widget.details || oldWidget.alpahbetsAvailable != widget.alpahbetsAvailable) { + _rebuildData(); + } + } - final positions = itemPositionsListener.itemPositions.value; + void _rebuildData() { + data.clear(); + for (var char in widget.alpahbetsAvailable) { + data[char] = widget.details + .where((element) => element.description?.toLowerCase().startsWith(char.toLowerCase()) == true) + .toList(); + } + if (_activeIndex >= widget.alpahbetsAvailable.length) { + _activeIndex = 0; + } + setState(() {}); + } - if (positions.isEmpty) return; + void _onPositionChanged() { + final positions = itemPositionsListener.itemPositions.value; - // Get FIRST visible item (top-most) - final firstVisible = positions - .where((p) => p.itemTrailingEdge > 0) // visible - .reduce((min, p) => - p.itemLeadingEdge < min.itemLeadingEdge ? p : min); + if (positions.isEmpty) return; - if(_activeIndex == firstVisible.index) return ; - setState(() { - _activeIndex = firstVisible.index; - }); + // Get FIRST visible item (top-most) + final firstVisible = positions + .where((p) => p.itemTrailingEdge > 0) // visible + .reduce((min, p) => + p.itemLeadingEdge < min.itemLeadingEdge ? p : min); - print("Active index = $_activeIndex"); + if(_activeIndex == firstVisible.index) return ; + setState(() { + _activeIndex = firstVisible.index; }); + + print("Active index = $_activeIndex"); } @override void dispose() { - itemPositionsListener.itemPositions.removeListener((){ - - }); + itemPositionsListener.itemPositions.removeListener(_onPositionChanged); super.dispose(); - } void _scrollToLetter(String letter) async { @@ -145,7 +159,6 @@ class _AlphabetScrollPageState extends State { crossAxisAlignment: CrossAxisAlignment.center, children:List.generate(widget.alpahbetsAvailable.length, (i) { final isActive = (i == _activeIndex); - return GestureDetector( onTap: () { setState(() => _activeIndex = i); @@ -161,7 +174,7 @@ class _AlphabetScrollPageState extends State { child: Opacity( opacity: isActive ? 1.0 : 0.5, child: widget.alpahbetsAvailable[i].toUpperCase().toText14( - color: !isActive ? AppColors.greyTextColor : AppColors.primaryRedColor + color: !isActive ? AppColors.greyTextColor : AppColors.primaryRedColor, isEnglishOnly: true ), ), ); diff --git a/lib/presentation/lab/lab_order_by_test.dart b/lib/presentation/lab/lab_order_by_test.dart index 1b5db920..7740a596 100644 --- a/lib/presentation/lab/lab_order_by_test.dart +++ b/lib/presentation/lab/lab_order_by_test.dart @@ -11,6 +11,7 @@ import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'dart:ui' as ui; class LabOrderByTest extends StatelessWidget { final VoidCallback onTap; @@ -36,15 +37,21 @@ class LabOrderByTest extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - '${tests!.description}'.toText16(isBold: true), + '${tests!.description}'.toText16(isBold: true, isEnglishOnly: true), SizedBox(height: 4.h), - (appState.isArabic() ? tests!.testDescriptionAr : tests!.testDescriptionEn)!.toText12(fontWeight: FontWeight.w500), + (appState.isArabic() ? tests!.testDescriptionAr : tests!.testDescriptionEn)!.toText12(isBold: true), SizedBox(height: 8.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppCustomChipWidget( - richText: '${"${LocaleKeys.lastTested.tr(context: context)}:"} ${DateUtil.formatDateToDate(DateUtil.convertStringToDate(tests!.createdOn), false)}'.toText12(fontWeight: FontWeight.w500), + richText: Row( + children: [ + "${LocaleKeys.lastTested.tr(context: context)}: ".toText12(isBold: true), + Directionality( + textDirection: ui.TextDirection.ltr,child: DateUtil.formatDateToDate(DateUtil.convertStringToDate(tests!.createdOn), false).toText12(isBold: true, isEnglishOnly: true)) + ], + ), backgroundColor: AppColors.greyLightColor, textColor: AppColors.textColor, ), @@ -59,7 +66,7 @@ class LabOrderByTest extends StatelessWidget { icon: AppAssets.view_report_icon, iconColor: AppColors.primaryRedColor, iconSize: 16.h, - text: LocaleKeys.viewReport.tr(context: context), + text: LocaleKeys.viewResults.tr(context: context), onPressed: () { onTap(); }, @@ -67,7 +74,7 @@ class LabOrderByTest extends StatelessWidget { borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, diff --git a/lib/presentation/lab/lab_orders_page.dart b/lib/presentation/lab/lab_orders_page.dart index 15461659..c3a2adfe 100644 --- a/lib/presentation/lab/lab_orders_page.dart +++ b/lib/presentation/lab/lab_orders_page.dart @@ -1 +1 @@ -import 'dart:async'; import 'dart:convert'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart'; import 'package:hmg_patient_app_new/presentation/lab/search_lab_report.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_toolbar.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/chip/custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; import 'alphabeticScroll.dart'; class LabOrdersPage extends StatefulWidget { const LabOrdersPage({super.key}); @override State createState() => _LabOrdersPageState(); } class _LabOrdersPageState extends State { late LabViewModel labProvider; late DateRangeSelectorRangeViewModel rangeViewModel; late AppState _appState; List?> labSuggestions = []; int? expandedIndex; String? selectedFilterText = ''; int activeIndex = 0; @override void initState() { scheduleMicrotask(() { labProvider.initLabProvider(); }); super.initState(); } @override Widget build(BuildContext context) { labProvider = Provider.of(context, listen: false); rangeViewModel = Provider.of(context); _appState = getIt(); return CollapsingListView( title: LocaleKeys.labResults.tr(context: context), search: () async { if (labProvider.isLabOrdersLoading) { return; } else { String? value = await Navigator.of(context).push( CustomPageRoute( page: SearchLabResultsContent(labSuggestionsList: labProvider.labSuggestions), fullScreenDialog: true, direction: AxisDirection.down, ), ); if (value != null) { selectedFilterText = value; labProvider.filterLabReports(value); } } }, child: Consumer( builder: (context, labViewModel, child) { return SingleChildScrollView( physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.all(24.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Expanded( child: CustomTabBar( activeTextColor: Color(0xffED1C2B), activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), tabs: [ CustomTabBarModel(null, LocaleKeys.byVisit.tr()), CustomTabBarModel(null, LocaleKeys.byTest.tr()), // CustomTabBarModel(null, "Completed".needTranslation), ], onTabChange: (index) { activeIndex = index; setState(() {}); }, ), ), ], ), if (activeIndex == 0) Padding( padding: EdgeInsets.symmetric(vertical: 10.h), child: Row( children: [ CustomButton( text: LocaleKeys.byClinic.tr(context: context), onPressed: () { labViewModel.setIsSortByClinic(true); }, backgroundColor: labViewModel.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, borderColor: labViewModel.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), textColor: labViewModel.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12.f, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), SizedBox(width: 8.h), CustomButton( text: LocaleKeys.byHospital.tr(context: context), onPressed: () { labViewModel.setIsSortByClinic(false); }, backgroundColor: labViewModel.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, borderColor: labViewModel.isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, textColor: labViewModel.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, fontSize: 12, fontWeight: FontWeight.w500, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ], ), ), SizedBox(height: 8.h), selectedFilterText!.isNotEmpty ? Column( children: [ AppCustomChipWidget( labelText: selectedFilterText!, backgroundColor: AppColors.alertColor, textColor: AppColors.whiteColor, deleteIcon: AppAssets.close_bottom_sheet_icon, deleteIconColor: AppColors.whiteColor, deleteIconHasColor: true, onDeleteTap: () { selectedFilterText = ""; labProvider.filterLabReports(""); }, ), SizedBox(height: 8.h), ], ) : SizedBox(), activeIndex == 0 ? // By Visit - show grouped view when available labViewModel.isLabOrdersLoading ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: 5, itemBuilder: (context, index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, ), ) : (labViewModel.patientLabOrdersViewList.isNotEmpty ? ListView.builder( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: labViewModel.patientLabOrdersViewList.length, itemBuilder: (context, index) { final group = labViewModel.patientLabOrdersViewList[index]; final isExpanded = expandedIndex == index; return AnimationConfiguration.staggeredList( position: index, duration: const Duration(milliseconds: 500), child: SlideAnimation( verticalOffset: 100.0, child: FadeInAnimation( child: AnimatedContainer( duration: Duration(milliseconds: 300), curve: Curves.easeInOut, margin: EdgeInsets.symmetric(vertical: 8.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), child: InkWell( onTap: () { setState(() { expandedIndex = isExpanded ? null : index; }); }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ AppCustomChipWidget(labelText: "${group.length} ${LocaleKeys.results.tr(context: context)}"), Icon(isExpanded ? Icons.expand_less : Icons.expand_more), ], ), SizedBox(height: 8.h), Text( labViewModel.isSortByClinic ? (group.first.clinicDescription ?? 'Unknown') : (group.first.projectName ?? 'Unknown'), style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), overflow: TextOverflow.ellipsis, ), ], ), ), AnimatedSwitcher( duration: Duration(milliseconds: 500), switchInCurve: Curves.easeIn, switchOutCurve: Curves.easeOut, transitionBuilder: (Widget child, Animation animation) { return FadeTransition( opacity: animation, child: SizeTransition( sizeFactor: animation, axisAlignment: 0.0, child: child, ), ); }, child: isExpanded ? Container( key: ValueKey(index), padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h), child: ListView.separated( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.zero, itemBuilder: (cxt, index) { PatientLabOrdersResponseModel order = group[index]; return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisSize: MainAxisSize.min, children: [ Image.network( order.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", width: 24.w, height: 24.h, fit: BoxFit.cover, ).circle(100), SizedBox(width: 8.h), Expanded(child: (order.doctorName ?? order.doctorNameEnglish ?? "").toString().toText14(weight: FontWeight.w500)), ], ), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, spacing: 4.h, runSpacing: 4.h, children: [ AppCustomChipWidget( labelText: ("${LocaleKeys.orderNo.tr(context: context)}: ${order.orderNo!}"), ), AppCustomChipWidget( labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), ), AppCustomChipWidget( labelText: labViewModel.isSortByClinic ? (order.projectName ?? "") : (order.clinicDescription ?? ""), ), ], ), // Row( // children: [ // CustomButton( // text: ("Order No: ".needTranslation + order.orderNo!), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // SizedBox(width: 8.h), // CustomButton( // text: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), // SizedBox(height: 8.h), // Row( // children: [ // CustomButton( // text: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), // onPressed: () {}, // backgroundColor: AppColors.greyColor, // borderColor: AppColors.greyColor, // textColor: AppColors.blackColor, // fontSize: 10, // fontWeight: FontWeight.w500, // borderRadius: 8, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 24.h, // ), // ], // ), SizedBox(height: 12.h), Row( children: [ Expanded(flex: 2, child: SizedBox()), // Expanded( // flex: 1, // child: Container( // height: 40.h, // width: 40.w, // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( // color: AppColors.textColor, // borderRadius: 12, // ), // child: Padding( // padding: EdgeInsets.all(12.h), // child: Transform.flip( // flipX: _appState.isArabic(), // child: Utils.buildSvgWithAssets( // icon: AppAssets.forward_arrow_icon_small, // iconColor: AppColors.whiteColor, // fit: BoxFit.contain, // ), // ), // ), // ).onPress(() { // model.currentlySelectedPatientOrder = order; // labProvider.getPatientLabResultByHospital(order); // labProvider.getPatientSpecialResult(order); // Navigator.of(context).push( // CustomPageRoute(page: LabResultByClinic(labOrder: order)), // ); // }), // ) Expanded( flex: 2, child: CustomButton( icon: AppAssets.view_report_icon, iconColor: AppColors.primaryRedColor, iconSize: 16.h, text: LocaleKeys.viewResults.tr(context: context), onPressed: () { labViewModel.currentlySelectedPatientOrder = order; labProvider.getPatientLabResultByHospital(order); labProvider.getPatientSpecialResult(order); Navigator.of(context).push( CustomPageRoute(page: LabResultByClinic(labOrder: order)), ); }, backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14, fontWeight: FontWeight.w500, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, ), ) ], ), // SizedBox(height: 12.h), // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), // SizedBox(height: 12.h), ], ).paddingOnly(top: 16, bottom: 16); }, separatorBuilder: (cxt, index) => Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), itemCount: group.length)) : SizedBox.shrink(), ), ], ), ), ), ), )); }, ) : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noLabResults.tr(context: context))) : // By Test or other tabs keep existing behavior (labViewModel.isLabOrdersLoading) ? Column( children: List.generate( 5, (index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, )), ) : AlphabeticScroll( alpahbetsAvailable: labViewModel.indexedCharacterForUniqueTest, details: labViewModel.uniqueTestsList, labViewModel: labViewModel, rangeViewModel: rangeViewModel, appState: _appState, ) ], )); }, ), ); } Color getLabOrderStatusColor(num status) { switch (status) { case 44: return AppColors.warningColorYellow; case 45: return AppColors.warningColorYellow; case 16: return AppColors.successColor; case 17: return AppColors.successColor; default: return AppColors.greyColor; } } String getLabOrderStatusText(num status) { switch (status) { case 44: return LocaleKeys.resultsPending.tr(context: context); case 45: return LocaleKeys.resultsPending.tr(context: context); case 16: return LocaleKeys.resultsAvailable.tr(context: context); case 17: return LocaleKeys.resultsAvailable.tr(context: context); default: return ""; } } getLabSuggestions(LabViewModel model) { if (model.patientLabOrders.isEmpty) { return []; } return model.patientLabOrders.map((m) => m.testDetails).toList(); } } \ No newline at end of file +import 'dart:async'; import 'dart:ui' as ui; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_orders_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart'; import 'package:hmg_patient_app_new/presentation/lab/search_lab_report.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; import 'alphabeticScroll.dart'; class LabOrdersPage extends StatefulWidget { const LabOrdersPage({super.key}); @override State createState() => _LabOrdersPageState(); } class _LabOrdersPageState extends State { late LabViewModel labProvider; late DateRangeSelectorRangeViewModel rangeViewModel; late AppState _appState; List?> labSuggestions = []; int? expandedIndex; String? selectedFilterText = ''; int activeIndex = 0; @override void initState() { scheduleMicrotask(() { labProvider.initLabProvider(); }); super.initState(); } @override Widget build(BuildContext context) { labProvider = Provider.of(context, listen: false); rangeViewModel = Provider.of(context); _appState = getIt(); return CollapsingListView( title: LocaleKeys.labResults.tr(context: context), search: () async { if (labProvider.isLabOrdersLoading) { return; } else { String? value = await Navigator.of(context).push( CustomPageRoute( page: SearchLabResultsContent(labSuggestionsList: labProvider.labSuggestions), fullScreenDialog: true, direction: AxisDirection.down, ), ); if (value != null) { selectedFilterText = value; labProvider.filterLabReports(value); } } }, child: Consumer( builder: (context, labViewModel, child) { return SingleChildScrollView( physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.all(24.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( children: [ Expanded( child: CustomTabBar( activeTextColor: Color(0xffED1C2B), activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), tabs: [ CustomTabBarModel(null, LocaleKeys.byVisit.tr()), CustomTabBarModel(null, LocaleKeys.byTest.tr()), // CustomTabBarModel(null, "Completed".needTranslation), ], onTabChange: (index) { activeIndex = index; setState(() {}); }, ), ), ], ), if (activeIndex == 0) Padding( padding: EdgeInsets.symmetric(vertical: 10.h), child: Row( children: [ // CustomButton( // text: LocaleKeys.byClinic.tr(context: context), // onPressed: () { // labViewModel.setIsSortByClinic(true); // }, // backgroundColor: labViewModel.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, // borderColor: labViewModel.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), // textColor: labViewModel.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, // fontSize: 12.f, // isBold: true, // borderRadius: 10, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 40.h, // ), // SizedBox(width: 8.h), // CustomButton( // text: LocaleKeys.byHospital.tr(context: context), // onPressed: () { // labViewModel.setIsSortByClinic(false); // }, // backgroundColor: labViewModel.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, // borderColor: labViewModel.isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, // textColor: labViewModel.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, // fontSize: 12, // isBold: true, // borderRadius: 10, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 40.h, // ), ], ), ), SizedBox(height: 8.h), selectedFilterText!.isNotEmpty ? Column( children: [ AppCustomChipWidget( labelText: selectedFilterText!, backgroundColor: AppColors.alertColor, textColor: AppColors.whiteColor, deleteIcon: AppAssets.close_bottom_sheet_icon, deleteIconColor: AppColors.whiteColor, deleteIconHasColor: true, isEnglishOnly: true, onDeleteTap: () { selectedFilterText = ""; labProvider.filterLabReports(""); }, ), SizedBox(height: 8.h), ], ) : SizedBox(), activeIndex == 0 ? // By Visit - show grouped view when available labViewModel.isLabOrdersLoading ? ListView.builder( shrinkWrap: true, physics: AlwaysScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: 5, itemBuilder: (context, index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, ), ) : (labViewModel.patientLabOrders.isNotEmpty ? ListView.builder( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.zero, itemCount: labViewModel.filteredLabOrders.length, itemBuilder: (context, index) { final group = labViewModel.filteredLabOrders[index]; final isExpanded = expandedIndex == index; return AnimationConfiguration.staggeredList( position: index, duration: const Duration(milliseconds: 500), child: SlideAnimation( verticalOffset: 100.0, child: FadeInAnimation( child: AnimatedContainer( duration: Duration(milliseconds: 300), curve: Curves.easeInOut, margin: EdgeInsets.symmetric(vertical: 8.h), decoration: RoundedRectangleBorder() .toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), child: InkWell( onTap: () { setState(() { expandedIndex = isExpanded ? null : index; }); }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Wrap( direction: Axis.horizontal, spacing: 4.h, runSpacing: 4.h, children: [ AppCustomChipWidget( richText: Row( children: [ "${group.testDetails!.length} ".toText10( color: AppColors.successColor, isEnglishOnly: true, weight: FontWeight.w600), LocaleKeys.tests .tr(context: context) .toText10(color: AppColors.successColor, weight: FontWeight.w600), ], ), labelText: "${group.testDetails!.length} ${LocaleKeys.tests.tr(context: context)}", backgroundColor: AppColors.successColor.withOpacity(0.1), textColor: AppColors.successColor, ), AppCustomChipWidget( labelText: "${_appState.isArabic() ? group.isInOutPatientDescriptionN : group.isInOutPatientDescription}", backgroundColor: AppColors.warningColorYellow.withOpacity(0.1), textColor: AppColors.warningColorYellow, ) ], ), Icon(isExpanded ? Icons.expand_less : Icons.expand_more), ], ), SizedBox(height: 8.h), Row( mainAxisSize: MainAxisSize.min, children: [ Image.network( group.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", width: 24.w, height: 24.h, fit: BoxFit.cover, ).circle(100), SizedBox(width: 8.h), Expanded( child: (group.doctorName ?? group.doctorNameEnglish ?? "") .toString() .toText14(isBold: true)), ], ), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, spacing: 4.h, runSpacing: 4.h, children: [ Directionality( textDirection: ui.TextDirection.ltr, child: AppCustomChipWidget( labelText: DateUtil.formatDateToDate( DateUtil.convertStringToDate(group.orderDate ?? ""), false), isEnglishOnly: true, )), AppCustomChipWidget( labelText: (group.projectName ?? ""), ), AppCustomChipWidget( labelText: (group.clinicDescription ?? ""), ), ], ), ], ), ), AnimatedSwitcher( duration: Duration(milliseconds: 500), switchInCurve: Curves.easeIn, switchOutCurve: Curves.easeOut, transitionBuilder: (Widget child, Animation animation) { return FadeTransition( opacity: animation, child: SizeTransition( sizeFactor: animation, axisAlignment: 0.0, child: child, ), ); }, child: isExpanded ? Container( key: ValueKey(index), padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h), child: Column( children: [ ListView.separated( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.zero, itemBuilder: (cxt, index) { PatientLabOrdersResponseModel order = group; return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ "• ${order.testDetails![index].description!}" .toText14(isBold: true, isEnglishOnly: true), SizedBox(height: 4.h), (_appState.isArabic() ? order.testDetails![index].testDescriptionAr! : order.testDetails![index].testDescriptionEn!).toText12( isBold: true, color: AppColors.textColorLight, isEnglishOnly: true), ], ).paddingOnly(top: 16, bottom: 16); }, separatorBuilder: (cxt, index) => Divider( color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), itemCount: group.testDetails!.length > 3 ? 3 : group.testDetails!.length), SizedBox(height: 16.h), CustomButton( text: "${LocaleKeys.viewResults.tr()} (${group.testDetails!.length})", onPressed: () { labProvider.currentlySelectedPatientOrder = group; labProvider.getPatientLabResultByHospital(group); labProvider.getPatientSpecialResult(group); Navigator.of(context).push( CustomPageRoute( page: LabResultByClinic(labOrder: group), ), ); }, backgroundColor: AppColors.infoColor.withAlpha(20), borderColor: AppColors.infoColor.withAlpha(0), textColor: AppColors.infoColor, fontSize: (isFoldable || isTablet) ? 12.f : 14.f, isBold: true, borderRadius: 12.r, padding: EdgeInsets.fromLTRB(10.w, 0, 10.w, 0), height: 40.h, iconSize: 14.h, icon: AppAssets.view_report_icon, iconColor: AppColors.infoColor, ), SizedBox(height: 16.h), ], ), ) : SizedBox.shrink(), ), ], ), ), ), ), )); }, ) : Utils.getNoDataWidget(context, noDataText: LocaleKeys.noLabResults.tr(context: context))) : // By Test or other tabs keep existing behavior (labViewModel.isLabOrdersLoading) ? Column( children: List.generate( 5, (index) => LabResultItemView( onTap: () {}, labOrder: null, index: index, isLoading: true, )), ) : AlphabeticScroll( alpahbetsAvailable: labViewModel.filteredIndexedCharacterForUniqueTest, details: labViewModel.filteredUniqueTestsList, labViewModel: labViewModel, rangeViewModel: rangeViewModel, appState: _appState, ) ], )); }, ), ); } Color getLabOrderStatusColor(num status) { switch (status) { case 44: return AppColors.warningColorYellow; case 45: return AppColors.warningColorYellow; case 16: return AppColors.successColor; case 17: return AppColors.successColor; default: return AppColors.greyColor; } } String getLabOrderStatusText(num status) { switch (status) { case 44: return LocaleKeys.resultsPending.tr(context: context); case 45: return LocaleKeys.resultsPending.tr(context: context); case 16: return LocaleKeys.resultsAvailable.tr(context: context); case 17: return LocaleKeys.resultsAvailable.tr(context: context); default: return ""; } } getLabSuggestions(LabViewModel model) { if (model.patientLabOrders.isEmpty) { return []; } return model.patientLabOrders.map((m) => m.testDetails).toList(); } } \ No newline at end of file diff --git a/lib/presentation/lab/lab_result_item_view.dart b/lib/presentation/lab/lab_result_item_view.dart index db80918b..d03c02df 100644 --- a/lib/presentation/lab/lab_result_item_view.dart +++ b/lib/presentation/lab/lab_result_item_view.dart @@ -55,8 +55,9 @@ class LabResultItemView extends StatelessWidget { SizedBox(height: 8.h), Row( children: [ - Image.network( - isLoading ? "" : labOrder!.doctorImageURL!, + Utils.buildImgWithNetwork( + url: isLoading ? "" : labOrder!.doctorImageURL!, + iconColor: AppColors.transparent, width: 24.h, height: 24.h, fit: BoxFit.cover, @@ -118,7 +119,7 @@ class LabResultItemView extends StatelessWidget { // ...labOrder!.testDetails!.map((detail) { // return Padding( // padding: EdgeInsets.only(bottom: 8.h), - // child: '● ${detail.description}'.toText14(weight: FontWeight.w500), + // child: '● ${detail.description}'.toText14(isBold: true), // ); // }).toList(), // SizedBox(height: 16.h), diff --git a/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart b/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart index af6c97f8..9834e2a7 100644 --- a/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart +++ b/lib/presentation/lab/lab_result_via_clinic/LabResultByClinic.dart @@ -136,53 +136,56 @@ class LabResultByClinic extends StatelessWidget { ).paddingAll(24.h), )), ), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.h, - hasShadow: true, - ), - child: Container( - height: 56.h, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(12.r), - gradient: LinearGradient( - begin: Alignment.centerLeft, - end: Alignment.centerRight, - stops: [0.236, 1.0], // 53.6% and 100% - colors: [ - Color(0xFF8A38F5), // Transparent - Color(0xFFE20BBB), // Solid #F8F8F8 - ], - ), - ), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Padding( - padding: EdgeInsets.only(right: 4.w, left: 4.w), - child: Utils.buildSvgWithAssets(icon: AppAssets.aiOverView, width: 16.h, height: 16.h, iconColor: Colors.white), + Utils.havePrivilege(115) + ? Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: true, ), - LocaleKeys.generateAiAnalysis.tr(context: context).toText16(isBold: true) - ], - ), - ).paddingSymmetrical(24.h, 24.h).onPress(() async { - final _dialogService = getIt.get(); - await _dialogService.showCommonBottomSheetWithoutH( - message: LocaleKeys.aiDisclaimer.tr(), - label: LocaleKeys.consent.tr(), - okLabel: LocaleKeys.acceptLbl.tr(), - cancelLabel: LocaleKeys.rejectView.tr(), - onOkPressed: () { - context.pop(); - labViewModel.getAiOverviewLabOrders(labOrder: labOrder, loadingText: LocaleKeys.loadingAIAnalysis.tr(context: context)); - }, - onCancelPressed: () { - context.pop(); - }); - }), - ), + child: Container( + height: 56.h, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12.r), + gradient: LinearGradient( + begin: Alignment.centerLeft, + end: Alignment.centerRight, + stops: [0.236, 1.0], // 53.6% and 100% + colors: [ + Color(0xFF8A38F5), // Transparent + Color(0xFFE20BBB), // Solid #F8F8F8 + ], + ), + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(right: 4.w, left: 4.w), + child: Utils.buildSvgWithAssets(icon: AppAssets.aiOverView, width: 16.h, height: 16.h, iconColor: Colors.white), + ), + LocaleKeys.generateAiAnalysis.tr(context: context).toText16(isBold: true, color: Colors.white) + ], + ), + ).paddingSymmetrical(24.h, 24.h).onPress(() async { + final dialogService = getIt.get(); + final appState = getIt.get(); + await dialogService.showCommonBottomSheetWithoutH( + message: LocaleKeys.aiDisclaimer.tr(), + label: LocaleKeys.consent.tr(), + okLabel: LocaleKeys.acceptLbl.tr(), + cancelLabel: LocaleKeys.rejectView.tr(), + onOkPressed: () { + context.pop(); + labViewModel.getAiOverviewLabOrders(langId: appState.getLanguageID(), labOrder: labOrder, loadingText: LocaleKeys.loadingAIAnalysis.tr(context: context)); + }, + onCancelPressed: () { + context.pop(); + }); + }), + ) + : SizedBox.shrink(), ], ), ); diff --git a/lib/presentation/lab/lab_result_via_clinic/LabResultList.dart b/lib/presentation/lab/lab_result_via_clinic/LabResultList.dart index 07b9fb65..88b9cb6a 100644 --- a/lib/presentation/lab/lab_result_via_clinic/LabResultList.dart +++ b/lib/presentation/lab/lab_result_via_clinic/LabResultList.dart @@ -1,41 +1,275 @@ +import 'dart:ui' as ui; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/lab_result.dart'; -import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_via_clinic/lab_order_result_item.dart'; -import 'package:provider/provider.dart' show Selector, Provider, ReadContext; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart'; +import 'package:provider/provider.dart'; +import '../../../core/dependencies.dart' show getIt; +import '../../../core/utils/size_utils.dart' show ResponsiveExtension; +import '../../../generated/locale_keys.g.dart' show LocaleKeys; + +class LabResultList extends StatefulWidget { + @override + State createState() => _LabResultListState(); +} -class LabResultList extends StatelessWidget { +class _LabResultListState extends State { late LabViewModel model; + int expandedIndex = -1; + Map descriptionExpandedMap = {}; @override Widget build(BuildContext context) { model = Provider.of(context); - return Selector>( - selector: (_, model) => model.mainLabResultsByHospitals, - builder: (__, list, ___) { - if (list.isEmpty && context.read().labSpecialResult.isEmpty) { - return Utils.getNoDataWidget(context, - noDataText: LocaleKeys.noLabResults.tr(context: context)); + return Selector>>( + selector: (_, model) => model.mainLabResultsByPackageName, + builder: (__, groupedResults, ___) { + if (groupedResults.isEmpty && context.read().labSpecialResult.isEmpty) { + // return Utils.getNoDataWidget(context, + // noDataText: LocaleKeys.noLabResults.tr(context: context)); + return Container(); } else { + // Convert map entries to a list for indexed access + final packageEntries = groupedResults.entries.toList(); + return ListView.builder( physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.zero, - shrinkWrap: true,itemCount: list.length,itemBuilder: (____, index) { - var labItem = list[index]; - return LabOrderResultItem(onTap: () { - model.getPatientLabResult(model.currentlySelectedPatientOrder!, labItem.description ?? "", labItem.testShortDescription!, labItem.uOM ?? ""); - }, - tests: labItem, - index: index, - iconColor: model.getColor(labItem.calculatedResultFlag ?? "N"), - severityText: model.getSeverityText(labItem.calculatedResultFlag ?? "N")); - }); + shrinkWrap: true, + itemCount: packageEntries.length, + itemBuilder: (context, packageIndex) { + final packageName = packageEntries[packageIndex].key; + final labResults = packageEntries[packageIndex].value; + final isExpanded = expandedIndex == packageIndex; + + return AnimatedContainer( + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + margin: EdgeInsets.symmetric(vertical: 8.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Package name as title/header + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.0.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 8.h, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: packageName.toText18( + isBold: true + ), + ), + AnimatedRotation( + turns: isExpanded ? 0.5 : 0, + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + child: Icon(Icons.expand_more), + ), + ], + ), + if(labResults.first.packageShortDescription != null) + _ExpandableDescriptionText( + description: labResults.first.packageShortDescription!, + isExpanded: descriptionExpandedMap[packageIndex] ?? false, + onToggle: () { + setState(() { + descriptionExpandedMap[packageIndex] = !(descriptionExpandedMap[packageIndex] ?? false); + }); + }, + ) + else + SizedBox.shrink() + ], + ),), + + // Lab results under this package with animation + AnimatedSize( + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + child: isExpanded + ? Column( + children: labResults.asMap().entries.map((entry) { + final index = entry.key; + final labItem = entry.value; + + return TweenAnimationBuilder( + tween: Tween(begin: 0.0, end: 1.0), + duration: Duration(milliseconds: 300 + (index * 50)), + curve: Curves.easeOut, + builder: (context, value, child) { + return Opacity( + opacity: value, + child: Transform.translate( + offset: Offset(0, 20 * (1 - value)), + child: child, + ), + ); + }, + child: Column( + children: [ + LabOrderResultItem( + onTap: () { + context.read().flush(); + model.getPatientLabResult( + model.currentlySelectedPatientOrder!, + labItem.description ?? "", + labItem.testShortDescription ?? "", + labItem.uOM ?? "" + ); + }, + tests: labItem, + index: index, + iconColor: model.getColor(labItem.calculatedResultFlag ?? "N"), + severityText: model.getSeverityText(labItem.calculatedResultFlag ?? "N") + ), + if(labResults.length>1) + ...[SizedBox( + height: 8.h, + ), + Padding( + padding: EdgeInsets.symmetric(horizontal: 16.h), + child: Divider( + color: AppColors.dividerColor, + thickness: 1.h, + ), + )] + ], + ), + ); + }).toList(), + ) + : SizedBox.shrink(), + ), + ], + ), + ).onPress((){ + setState(() { + expandedIndex = isExpanded ? -1 : packageIndex; + }); + }); + } + ); } }, ); } -} \ No newline at end of file +} + +class _ExpandableDescriptionText extends StatelessWidget { + final String description; + final bool isExpanded; + final VoidCallback onToggle; + + const _ExpandableDescriptionText({ + required this.description, + required this.isExpanded, + required this.onToggle, + }); + + static TextStyle get textStyle => TextStyle( + fontSize: 14.f, + color: AppColors.textColorLight, + // or Colors.black87 + // fontFamily: 'Poppins', + fontWeight: FontWeight.w600, + fontStyle: FontStyle.normal, + height: 1.4, + letterSpacing: 0.0, + decoration: TextDecoration.none, + ); + + @override + Widget build(BuildContext context) { + final readMoreText = isExpanded + ? ' ${LocaleKeys.hide.tr()}' + : ' ${LocaleKeys.readMore.tr(context: context)}'; + + final readMoreStyle = TextStyle( + fontSize: 12.f, + color: AppColors.primaryRedColor, + // fontFamily: 'Poppins', + fontWeight: FontWeight.w500, + ); + + return LayoutBuilder( + builder: (context, constraints) { + // Check if description alone overflows 2 lines + final descriptionPainter = TextPainter( + text: TextSpan(text: description, style: textStyle), + maxLines: 2, + textDirection: Directionality.of(context), + )..layout(maxWidth: constraints.maxWidth); + + final isOverflowing = descriptionPainter.didExceedMaxLines; + + // No overflow, or already expanded -> show full text + if (!isOverflowing || isExpanded) { + return GestureDetector( + onTap: isOverflowing ? onToggle : null, + child: Text.rich( + TextSpan( + style: textStyle, + children: [ + TextSpan(text: description, style: textStyle), + if (isOverflowing) + TextSpan(text: readMoreText, style: readMoreStyle), + ], + ), + ), + ); + } + + // Binary search for max chars that fit in 2 lines with "Read more" appended + int low = 0, high = description.length; + while (low < high) { + final mid = (low + high + 1) ~/ 2; + final testPainter = TextPainter( + text: TextSpan( + style: textStyle, + children: [ + TextSpan(text: '${description.substring(0, mid)}...'), + TextSpan(text: readMoreText, style: readMoreStyle), + ], + ), + maxLines: 2, + textDirection: Directionality.of(context), + )..layout(maxWidth: constraints.maxWidth); + + if (testPainter.didExceedMaxLines) { + high = mid - 1; + } else { + low = mid; + } + } + + final truncated = description.substring(0, low).trimRight(); + + return GestureDetector( + onTap: onToggle, + child: Text.rich( + TextSpan( + style: textStyle, + children: [ + TextSpan(text: '$truncated...'), + TextSpan(text: readMoreText, style: readMoreStyle), + ], + ), + ), + ); + }, + ); + } +} diff --git a/lib/presentation/lab/lab_result_via_clinic/ai_analysis_widget.dart b/lib/presentation/lab/lab_result_via_clinic/ai_analysis_widget.dart index 7a477761..b643515f 100644 --- a/lib/presentation/lab/lab_result_via_clinic/ai_analysis_widget.dart +++ b/lib/presentation/lab/lab_result_via_clinic/ai_analysis_widget.dart @@ -1,12 +1,15 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/models/resp_models/patient_lab_order_response_by_ai_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; class AiAnalysisWidget extends StatelessWidget { final LabOrderResponseByAi data; @@ -34,7 +37,13 @@ class AiAnalysisWidget extends StatelessWidget { Container( padding: EdgeInsets.all(8.r), decoration: BoxDecoration(gradient: AppColors.aiLinearGradient, borderRadius: BorderRadius.circular(8.r)), - child: SvgPicture.asset(AppAssets.aiOverView, colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn), height: 18.r, width: 18.r), + child: Utils.buildSvgWithAssets( + icon: AppAssets.aiOverView, + iconColor: Colors.white, + height: 18.r, + width: 18.r, + applyThemeColor: false, + ), ), ], ), @@ -71,6 +80,16 @@ class AiAnalysisWidget extends StatelessWidget { ), ], ), + SizedBox(height: 16.h), + CustomButton( + height: 50.h, + text: LocaleKeys.close.tr(context: context), + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + onPressed: () { + getIt.get().closeAILabResultAnalysis(); + }, + ), ], ), ), diff --git a/lib/presentation/lab/lab_result_via_clinic/lab_ai_analysis_detailed_page.dart b/lib/presentation/lab/lab_result_via_clinic/lab_ai_analysis_detailed_page.dart index 2a4fd66d..4debd41b 100644 --- a/lib/presentation/lab/lab_result_via_clinic/lab_ai_analysis_detailed_page.dart +++ b/lib/presentation/lab/lab_result_via_clinic/lab_ai_analysis_detailed_page.dart @@ -30,6 +30,7 @@ class _LabAiAnalysisDetailedPageState extends State { Widget build(BuildContext context) { labProvider = Provider.of(context, listen: false); return CollapsingListView( + isClose: true, title: LocaleKeys.aiAnalysis.tr(context: context), child: Consumer( builder: (context, model, child) { @@ -44,11 +45,14 @@ class _LabAiAnalysisDetailedPageState extends State { if (analysis.summary != null && analysis.summary!.isNotEmpty) { expandableItems.add( ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor:Colors.transparent , title: LocaleKeys.summary.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), initiallyExpanded: true, children: [ SizedBox(height: 10.h), Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.r, side: BorderSide(width: 1, color: Color(0xFF0B85F7))), padding: EdgeInsets.all(16.r), child: (analysis.summary ?? "").toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400), @@ -63,6 +67,9 @@ class _LabAiAnalysisDetailedPageState extends State { if (analysis.aiGeneratedAttributes != null && analysis.aiGeneratedAttributes!.isNotEmpty) { expandableItems.add( ExpandableListItem( + + backgroundColor: Colors.transparent, + expandedBackgroundColor:Colors.transparent , title: LocaleKeys.labResults.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), children: [ SizedBox(height: 10.h), @@ -83,6 +90,8 @@ class _LabAiAnalysisDetailedPageState extends State { if (analysis.aiPredictions != null && analysis.aiPredictions!.isNotEmpty) { expandableItems.add( ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor:Colors.transparent , title: LocaleKeys.prediction.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), children: [ SizedBox(height: 10.h), @@ -104,6 +113,8 @@ class _LabAiAnalysisDetailedPageState extends State { if (analysis.aiRecommendations != null && analysis.aiRecommendations!.isNotEmpty) { expandableItems.add( ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor:Colors.transparent , title: LocaleKeys.suggestions.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), children: [ SizedBox(height: 10.h), @@ -122,7 +133,7 @@ class _LabAiAnalysisDetailedPageState extends State { Container( padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), decoration: BoxDecoration(color: _getPriorityColor(rec.priority), borderRadius: BorderRadius.circular(4.r)), - child: rec.priority!.toText12(fontWeight: FontWeight.w600, color: _getPriorityTextColor(rec.priority)), + child: rec.priority!.toText12(isBold: true, color: _getPriorityTextColor(rec.priority)), ), SizedBox(height: 8.h), ], @@ -151,6 +162,8 @@ class _LabAiAnalysisDetailedPageState extends State { if (analysis.riskFactors != null && analysis.riskFactors!.isNotEmpty) { expandableItems.add( ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor:Colors.transparent , title: LocaleKeys.riskFactors.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), children: [ SizedBox(height: 10.h), @@ -172,7 +185,7 @@ class _LabAiAnalysisDetailedPageState extends State { decoration: BoxDecoration(color: Color(0xFFFBCB6E).withAlpha(38), borderRadius: BorderRadius.circular(8)), child: Padding( padding: const EdgeInsets.all(8.0), - child: (risk.risk ?? "").toText10(weight: FontWeight.w500, color: AppColors.blackColor), + child: (risk.risk ?? "").toText10(isBold: true, color: AppColors.blackColor), ), ), ), @@ -220,6 +233,8 @@ class _LabAiAnalysisDetailedPageState extends State { if (analysis.prevention != null && analysis.prevention!.isNotEmpty) { expandableItems.add( ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor:Colors.transparent , title: LocaleKeys.prevention.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), children: [ SizedBox(height: 10.h), @@ -307,10 +322,11 @@ class _LabAiAnalysisDetailedPageState extends State { else CustomExpandableList( expansionMode: ExpansionMode.exactlyOne, - dividerColor: Color(0xff2b353e1a), + dividerColor: AppColors.dividerColor, itemPadding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 14.h), items: expandableItems, theme: ExpandableListTheme.custom( + defaultTrailingIcon: Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, height: 22.h, width: 22.w, iconColor: AppColors.textColor), ), ).paddingSymmetrical(16.w, 0.0), @@ -335,7 +351,7 @@ class _LabAiAnalysisDetailedPageState extends State { if (priority == null) return AppColors.primaryRedColor; switch (priority.toLowerCase()) { case 'high': - return Color(0xFFED1C2B).withOpacity(.10); + return AppColors.secondaryLightRedColor; case 'medium' || 'moderate': return AppColors.lightGreenButtonColor; case 'low': @@ -415,7 +431,7 @@ class _LabAiAnalysisDetailedPageState extends State { Widget _buildCombinedLabCard(AiGeneratedAttribute attr) { return Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: false), padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -434,7 +450,7 @@ class _LabAiAnalysisDetailedPageState extends State { children: [ Utils.buildSvgWithAssets(icon: AppAssets.informationIcon, width: 14.w, height: 14.h), SizedBox(width: 4.w), - LocaleKeys.contextDependent.tr().toText12(fontWeight: FontWeight.w600, color: AppColors.textColor), + LocaleKeys.contextDependent.tr().toText12(isBold: true, color: AppColors.textColor), ], ), ), @@ -449,7 +465,7 @@ class _LabAiAnalysisDetailedPageState extends State { decoration: BoxDecoration(color: _getResultFlagColor(attr.calculatedResultFlag), borderRadius: BorderRadius.circular(4.r)), child: Row( children: [ - (attr.calculatedResultFlag ?? "").toText12(fontWeight: FontWeight.w600, color: _getResultTextColor(attr.calculatedResultFlag)), + (attr.calculatedResultFlag ?? "").toText12(isBold: true, color: _getResultTextColor(attr.calculatedResultFlag)), ], ), ), @@ -470,7 +486,7 @@ class _LabAiAnalysisDetailedPageState extends State { // children: [ // Consumer( // builder: (context, labViewModel, child) { - // return labViewModel.getSeverityText(attr.calculatedResultFlag ?? "").tr(context: context).toText10(weight: FontWeight.w500, color: AppColors.greyTextColor); + // return labViewModel.getSeverityText(attr.calculatedResultFlag ?? "").tr(context: context).toText10(isBold: true, color: AppColors.greyTextColor); // }, // ), // Consumer( @@ -502,13 +518,17 @@ class _LabAiAnalysisDetailedPageState extends State { Container( padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), decoration: BoxDecoration(color: _getResultFlagColor(attr.calculatedResultFlag), borderRadius: BorderRadius.circular(4.r)), - child: ("${LocaleKeys.calculatedValue.tr()}: ${attr.resultValue!}").toText12(fontWeight: FontWeight.w600, color: _getResultTextColor(attr.calculatedResultFlag)), + child: ("${LocaleKeys.calculatedValue.tr()}: ${attr.resultValue!}").toText12( + isBold: true, + color: _getResultTextColor(attr.calculatedResultFlag), + isEnglishOnly: true + ), ), SizedBox(width: 8.h), Container( padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), decoration: BoxDecoration(color: AppColors.greyLightColor, borderRadius: BorderRadius.circular(4.r)), - child: ("${LocaleKeys.unit.tr()}: ${attr.uom!}").toText12(fontWeight: FontWeight.w600, color: AppColors.textColor), + child: ("${LocaleKeys.unit.tr()}: ${attr.uom!}").toText12(isBold: true, color: AppColors.textColor), ), ], ), @@ -519,7 +539,7 @@ class _LabAiAnalysisDetailedPageState extends State { Container( padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), decoration: BoxDecoration(color: AppColors.greyLightColor, borderRadius: BorderRadius.circular(4.r)), - child: ("${LocaleKeys.referenceRange.tr(context: context)}: ${attr.referanceRange!.trim()}").toText12(fontWeight: FontWeight.w600, color: AppColors.textColor), + child: ("${LocaleKeys.referenceRange.tr(context: context)}: ${attr.referanceRange!.trim()}").toText12(isBold: true, color: AppColors.textColor), ), if (attr.calculationFormula != null && attr.calculationFormula!.isNotEmpty) ...[ SizedBox(height: 8.h), @@ -533,8 +553,8 @@ class _LabAiAnalysisDetailedPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, children: [ - LocaleKeys.calculationFormula.tr().toText16(weight: FontWeight.w600), - (attr.calculationFormula ?? "").toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), + LocaleKeys.calculationFormula.tr().toText16(isBold: true), + (attr.calculationFormula ?? "").toText12(isBold: true, color: AppColors.textColorLight, isEnglishOnly: true), ], ), ), diff --git a/lib/presentation/lab/lab_result_via_clinic/lab_order_result_item.dart b/lib/presentation/lab/lab_result_via_clinic/lab_order_result_item.dart index cf6ce97b..2f6ee667 100644 --- a/lib/presentation/lab/lab_result_via_clinic/lab_order_result_item.dart +++ b/lib/presentation/lab/lab_result_via_clinic/lab_order_result_item.dart @@ -2,6 +2,9 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; @@ -10,6 +13,7 @@ import 'package:hmg_patient_app_new/features/lab/models/resp_models/lab_result.d import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:provider/provider.dart'; import 'dart:ui' as ui; @@ -22,7 +26,16 @@ class LabOrderResultItem extends StatelessWidget { final bool isExpanded; final Color iconColor; - const LabOrderResultItem({super.key, required this.onTap, this.tests, required this.index, this.isLoading = false, this.isExpanded = false, required this.iconColor, required this.severityText}); + const LabOrderResultItem({ + super.key, + required this.onTap, + this.tests, + required this.index, + this.isLoading = false, + this.isExpanded = false, + required this.iconColor, + required this.severityText + }); @override build(BuildContext context) { @@ -30,69 +43,72 @@ class LabOrderResultItem extends StatelessWidget { duration: Duration(milliseconds: 300), curve: Curves.easeInOut, margin: EdgeInsets.symmetric(vertical: 8.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: false), child: Container( key: ValueKey(index), - padding: EdgeInsets.symmetric(horizontal: 16.h, vertical: 16.h), + padding: EdgeInsets.symmetric(horizontal: 16.h, vertical: 4.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ // ...labOrder!.testDetails!.map((detail) { Padding( padding: EdgeInsets.only(bottom: 8.h), - child: '${tests!.description}'.toText14(weight: FontWeight.w500), + child: '${tests!.description}'.toText14(isBold: true, isEnglishOnly: true), ), - // (tests!.packageShortDescription ?? "").toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), + // (tests!.packageShortDescription ?? "").toText12(isBold: true, color: AppColors.textColorLight), - ((tests!.testShortDescription != null && tests!.testShortDescription!.isNotEmpty) ? tests!.testShortDescription : tests!.packageShortDescription)! - .toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), + (((tests!.testShortDescription != null && tests!.testShortDescription!.isNotEmpty) ? tests!.testShortDescription : tests!.packageShortDescription) ?? "") + .toText12(isBold: true, color: AppColors.textColorLight), SizedBox(height: 12.h), Directionality( textDirection: ui.TextDirection.ltr, - child: Row( - mainAxisSize: MainAxisSize.max, + child: Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Flexible( + Text( + "${tests?.resultValue} ${tests?.uOM}", + style: TextStyle( + fontSize: 24.f, + fontWeight: FontWeight.w600, + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', + color: tests!.checkIfGraphShouldBeDisplayed() + ? context.read().getColor( + tests?.calculatedResultFlag ?? "", + ) + : Colors.grey.shade700, + letterSpacing: -1, + ), + ), + // SizedBox( + // height: 2.h, + // ), + Visibility( + visible: tests?.referanceRange != null, child: Text( - "${tests?.resultValue} ${tests?.uOM}", + "(${LocaleKeys.referenceRange.tr(context: context)}: ${tests?.referanceRange})", style: TextStyle( - fontSize: 24.f, + fontSize: 12.f, fontWeight: FontWeight.w600, - fontFamily: 'Poppins', - color: tests!.checkIfGraphShouldBeDisplayed() - ? context.read().getColor( - tests?.calculatedResultFlag ?? "", - ) - : Colors.grey.shade700, - letterSpacing: -2, + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', + color: AppColors.greyTextColor, ), + softWrap: true, ), ), - SizedBox( - width: 4.h, - ), Visibility( - // visible: tests?.checkIfGraphShouldBeDisplayed() == true, - visible: true, - child: Expanded( - flex: 2, - child: Visibility( - visible: tests?.referanceRange != null, - child: Text( - "(${LocaleKeys.referenceRange.tr(context: context)}: ${tests?.referanceRange})", - style: TextStyle( - fontSize: 12.f, - fontWeight: FontWeight.w500, - fontFamily: 'Poppins', - color: AppColors.greyTextColor, - ), - // overflow: TextOverflow.ellipsis, - // maxLines: 2, - softWrap: true, - ), + visible: tests?.notes != null && tests?.notes?.isNotEmpty == true, + child: Text( + tests?.notes??"", + style: TextStyle( + fontSize: 12.f, + fontWeight: FontWeight.w600, + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', + color: AppColors.greyTextColor, ), + softWrap: true, ), - ) + ), ], ), ), @@ -101,33 +117,44 @@ class LabOrderResultItem extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Visibility( - visible: tests?.checkIfGraphShouldBeDisplayed() == true, - child: Column( - spacing: 6.h, - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - severityText.tr().toText10(weight: FontWeight.w500, color: AppColors.greyTextColor), - Utils.buildSvgWithAssets(icon: AppAssets.lab_result_indicator, width: 21, height: 23, iconColor: iconColor), - ], + Flexible( + flex: 2, + child: Visibility( + visible: tests?.checkIfGraphShouldBeDisplayed() == true, + child: Column( + spacing: 6.h, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + severityText.tr().toText10(isBold: true, color: AppColors.greyTextColor), + Utils.buildSvgWithAssets(icon: AppAssets.lab_result_indicator, width: 21, height: 23, iconColor: iconColor), + ], + ).onPress((){ + _buildSeverityDetailsBottomsheet(severity: tests?.calculatedResultFlag ?? "N", context: context); + }), ), ), - CustomButton( - icon: AppAssets.view_report_icon, - iconColor: AppColors.primaryRedColor, - iconSize: 16.h, - text: LocaleKeys.viewReport.tr(context: context), - onPressed: () { - onTap(); - }, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 14, - fontWeight: FontWeight.w500, - borderRadius: 12, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, + Flexible( + flex:2, + child: Visibility( + visible: tests?.checkIfGraphShouldBeDisplayed() == true, + child: CustomButton( + icon: AppAssets.view_report_icon, + iconColor: AppColors.infoColor, + iconSize: 16.h, + text: LocaleKeys.viewReport.tr(context: context), + onPressed: () { + onTap(); + }, + backgroundColor: AppColors.infoColor.withAlpha(20), + borderColor: AppColors.infoColor.withAlpha(0), + textColor: AppColors.infoColor, + fontSize: 14, + fontWeight: FontWeight.w600, + borderRadius: 12, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 40.h, + ), + ), ), ], ), @@ -135,4 +162,77 @@ class LabOrderResultItem extends StatelessWidget { ), )); } + + _buildSeverityDetailsBottomsheet({required String severity,required BuildContext context}) { + return showCommonBottomSheetWithoutHeight( + title: LocaleKeys.colorScience.tr(context: context), + context, + child: Container( + padding: EdgeInsets.all(16.w), + width: double.infinity, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), + child: Column( + children: [ + _buildInfoTile(severityValue: severity, context: context), + ], + ), + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + + Widget _buildInfoTile({required String severityValue, required BuildContext context}) { + + String title = LocaleKeys.emergency.tr(context: context); + String description = LocaleKeys.emergencyDescription.tr(context: context); + Color dotColor = AppColors.chipColorEmergency; + switch (severityValue) { + case 'CL': + case 'LCL': + title = LocaleKeys.emergency.tr(context: context); + description = LocaleKeys.emergencyDescription.tr(context: context); + dotColor = AppColors.chipColorEmergency; + case 'L': + title = LocaleKeys.seekMedicalAdvice.tr(context: context); + description = LocaleKeys.seekMedicalAdviceDescription.tr(context: context); + dotColor = AppColors.chipColorSeekMedicalAdvice; + case 'N': + title = LocaleKeys.monitor.tr(context: context); + description = LocaleKeys.monitorDescription.tr(context: context); + dotColor = AppColors.chipColorMonitor; + case 'H': + title = LocaleKeys.seekMedicalAdvice.tr(context: context); + description = LocaleKeys.seekMedicalAdviceDescription.tr(context: context); + dotColor = AppColors.chipColorSeekMedicalAdvice; + case 'CH': + case 'HCH': + title = LocaleKeys.emergency.tr(context: context); + description = LocaleKeys.emergencyDescription.tr(context: context); + dotColor = AppColors.chipColorEmergency; + } + + return Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + height: 14.h, + width: 14.w, + decoration: BoxDecoration(shape: BoxShape.circle, color: dotColor), + ).paddingOnly(top: 3.h), + SizedBox(width: 8.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + title.toText14(isBold: true, color: AppColors.textColor), + SizedBox(height: 4.h), + description.toText12(isBold: true, color: AppColors.greyTextColor), + ], + ), + ), + ], + ); + } } diff --git a/lib/presentation/lab/lab_result_via_clinic/lab_order_specialResult.dart b/lib/presentation/lab/lab_result_via_clinic/lab_order_specialResult.dart index 5f71a7ea..55bf8ef1 100644 --- a/lib/presentation/lab/lab_result_via_clinic/lab_order_specialResult.dart +++ b/lib/presentation/lab/lab_result_via_clinic/lab_order_specialResult.dart @@ -62,14 +62,14 @@ class LabOrderSpecialResult extends StatelessWidget { // ...labOrder!.testDetails!.map((detail) { LocaleKeys.specialResult .tr() - .toText14(weight: FontWeight.w500) + .toText14(isBold: true) .toShimmer2(isShow: isLoading), data.isEmpty ? LocaleKeys.noSpecialResult .tr() .toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.textColorLight) .toShimmer2(isShow: isLoading) : HtmlWidget(data).toShimmer2(isShow: isLoading) @@ -89,7 +89,7 @@ class LabOrderSpecialResult extends StatelessWidget { "Special Results", style: TextStyle( fontSize: 18.fSize, - fontWeight: FontWeight.w600, + isBold: true, color: AppColors.blackColor), ), Container( @@ -111,7 +111,7 @@ class LabOrderSpecialResult extends StatelessWidget { ? Text("No result available".needTranslation, style: TextStyle( fontSize: 12.fSize, - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.textColorLight)) .toShimmer2(isShow: isLoading) : HtmlWidget(data) diff --git a/lib/presentation/lab/lab_results/lab_result_details.dart b/lib/presentation/lab/lab_results/lab_result_details.dart index d2c1b524..9fbb49a8 100644 --- a/lib/presentation/lab/lab_results/lab_result_details.dart +++ b/lib/presentation/lab/lab_results/lab_result_details.dart @@ -4,6 +4,7 @@ import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; @@ -19,113 +20,193 @@ import 'package:hmg_patient_app_new/widgets/date_range_selector/date_range_calen import 'package:hmg_patient_app_new/presentation/lab/lab_results/lab_result_list_item.dart'; import 'package:hmg_patient_app_new/theme/colors.dart' show AppColors; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart'; import 'package:hmg_patient_app_new/widgets/graph/custom_graph.dart'; import 'package:provider/provider.dart' show Consumer, Provider, ReadContext, Selector; +import '../../../core/common_models/data_points.dart'; import '../../../widgets/common_bottom_sheet.dart' show showCommonBottomSheetWithoutHeight; +import 'dart:ui' as ui; -class LabResultDetails extends StatelessWidget { +class LabResultDetails extends StatefulWidget { final LabResult recentLabResult; final String? testDescription; const LabResultDetails({super.key, required this.recentLabResult, required this.testDescription}); + @override + State createState() => _LabResultDetailsState(); +} + +class _LabResultDetailsState extends State { + final GlobalKey _aiAnalysisKey = GlobalKey(); + LabOrderResponseByAi? _previousAiData; + + LabResult get recentLabResult => widget.recentLabResult; + + String? get testDescription => widget.testDescription; + @override Widget build(BuildContext context) { LabViewModel labViewModel = Provider.of(context, listen: false); final appState = getIt.get(); return Scaffold( - body: Column( - children: [ - Expanded( - child: CollapsingListView( - title: LocaleKeys.labResultDetails.tr(context: context), - // aiOverview: () async { - // final _dialogService = getIt.get(); - // await _dialogService.showCommonBottomSheetWithoutH( - // message: LocaleKeys.aiDisclaimer.tr(), - // label: LocaleKeys.consent.tr(), - // okLabel: LocaleKeys.acceptLbl.tr(), - // cancelLabel: LocaleKeys.rejectView.tr(), - // onOkPressed: () { - // context.pop(); - // labViewModel.getAiOverviewSingleLabResult(langId: appState.getLanguageID().toString(), recentLabResult: recentLabResult, loadingText: LocaleKeys.loadingAIAnalysis.tr(context: context)); - // }, - // onCancelPressed: () { - // context.pop(); - // }); - // }, - child: SingleChildScrollView( - child: Column( - spacing: 16.h, - children: [ - LabNameAndStatus(context), - getLabDescription(context), - LabGraph(context), - Selector( - selector: (_, model) => model.labOrderResponseByAi, - builder: (_, aiData, __) { - if (aiData != null) { - return AiAnalysisWidget(data: aiData).paddingOnly(bottom: 16.h); - } - return const SizedBox.shrink(); - }, - ), - ], - ).paddingAll(24.h), + body: Consumer(builder: (context, labVM, child) { + // Detect changes in labOrderResponseByAi + WidgetsBinding.instance.addPostFrameCallback((_) { + if (labVM.labOrderResponseByAi != null && _previousAiData == null) { + // AI data just became available — scroll to it + final ctx = _aiAnalysisKey.currentContext; + if (ctx != null) { + Scrollable.ensureVisible( + ctx, + duration: const Duration(milliseconds: 400), + curve: Curves.easeOut, + ); + } + } else if (labVM.labOrderResponseByAi == null && _previousAiData != null) { + // AI data just became null — scroll to top + final scrollable = Scrollable.maybeOf(context); + scrollable?.position.animateTo( + 0, + duration: const Duration(milliseconds: 400), + curve: Curves.easeOut, + ); + } + _previousAiData = labVM.labOrderResponseByAi; + }); + + return Column( + children: [ + Expanded( + child: CollapsingListView( + title: LocaleKeys.labResultDetails.tr(context: context), + // aiOverview: () async { + // final _dialogService = getIt.get(); + // await _dialogService.showCommonBottomSheetWithoutH( + // message: LocaleKeys.aiDisclaimer.tr(), + // label: LocaleKeys.consent.tr(), + // okLabel: LocaleKeys.acceptLbl.tr(), + // cancelLabel: LocaleKeys.rejectView.tr(), + // onOkPressed: () { + // context.pop(); + // labViewModel.getAiOverviewSingleLabResult(langId: appState.getLanguageID().toString(), recentLabResult: recentLabResult, loadingText: LocaleKeys.loadingAIAnalysis.tr(context: context)); + // }, + // onCancelPressed: () { + // context.pop(); + // }); + // }, + child: SingleChildScrollView( + child: Column( + spacing: 16.h, + children: [ + LabNameAndStatus(context), + getLabDescription(context), + Selector?>( + selector: (_, model) => model.mainLabResults, + builder: (_, data, __) => Visibility( + visible: data?.isNotEmpty == true, + child: Column( + spacing: 16.h, + children: [ + LabGraph(context), + Container( + padding: EdgeInsets.symmetric(horizontal: 24.h, vertical: 16.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: true, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.history.tr(context: context).toText16(isBold: true, color: AppColors.textColor), + (labVM.isLabResultsHistoryShowMore ? "Show Less" : "Show More") + .toText14(isBold: true, color: AppColors.primaryRedColor, isUnderLine: true) + .onPress(() { + labVM.setIsLabResultsHistoryShowMore(); + }), + ], + ), + SizedBox( + height: 24.h, + ), + labHistoryList(labVM), + ], + ), + ), + ], + ), + ), + ), + Selector( + selector: (_, model) => model.labOrderResponseByAi, + builder: (_, aiData, __) { + if (aiData != null) { + return AiAnalysisWidget(key: _aiAnalysisKey, data: aiData).paddingOnly(bottom: 16.h); + } + return const SizedBox.shrink(); + }, + ), + ], + ).paddingAll(24.h), + ), ), ), - ), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.h, - hasShadow: true, - ), - child: Container( - height: 56.h, - decoration: BoxDecoration( - borderRadius: BorderRadius.circular(12.r), - gradient: LinearGradient( - begin: Alignment.centerLeft, - end: Alignment.centerRight, - stops: [0.236, 1.0], // 53.6% and 100% - colors: [ - Color(0xFF8A38F5), // Transparent - Color(0xFFE20BBB), // Solid #F8F8F8 - ], - ), + Utils.havePrivilege(115) ? labVM.labOrderResponseByAi == null ? Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: true, ), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - Padding( - padding: EdgeInsets.only(right: 4.w, left: 4.w), - child: Utils.buildSvgWithAssets(icon: AppAssets.aiOverView, width: 16.h, height: 16.h, iconColor: Colors.white), + child: Container( + height: 56.h, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12.r), + gradient: LinearGradient( + begin: Alignment.centerLeft, + end: Alignment.centerRight, + stops: [0.236, 1.0], // 53.6% and 100% + colors: [ + Color(0xFF8A38F5), // Transparent + Color(0xFFE20BBB), // Solid #F8F8F8 + ], ), - LocaleKeys.generateAiAnalysis.tr(context: context).toText16(isBold: true) - ], - ), - ).paddingSymmetrical(24.h, 24.h).onPress(() async { - final _dialogService = getIt.get(); - await _dialogService.showCommonBottomSheetWithoutH( - message: LocaleKeys.aiDisclaimer.tr(), - label: LocaleKeys.consent.tr(), - okLabel: LocaleKeys.acceptLbl.tr(), - cancelLabel: LocaleKeys.rejectView.tr(), - onOkPressed: () { - context.pop(); - labViewModel.getAiOverviewSingleLabResult( - langId: appState.getLanguageID().toString(), recentLabResult: recentLabResult, loadingText: LocaleKeys.loadingAIAnalysis.tr(context: context)); - }, - onCancelPressed: () { - context.pop(); - }); - }), - ), - ], - ), + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(right: 4.w, left: 4.w), + child: Utils.buildSvgWithAssets(icon: AppAssets.aiOverView, width: 16.h, height: 16.h, iconColor: Colors.white), + ), + LocaleKeys.generateAiAnalysisResult.tr(context: context).toText16(isBold: true, color: Colors.white) + ], + ), + ).paddingSymmetrical(24.h, 24.h).onPress(() async { + final _dialogService = getIt.get(); + await _dialogService.showCommonBottomSheetWithoutH( + message: LocaleKeys.aiDisclaimer.tr(), + label: LocaleKeys.consent.tr(), + okLabel: LocaleKeys.acceptLbl.tr(), + cancelLabel: LocaleKeys.rejectView.tr(), + onOkPressed: () { + context.pop(); + labViewModel.getAiOverviewSingleLabResult( + langId: appState.getLanguageID(), recentLabResult: recentLabResult, loadingText: LocaleKeys.loadingAIAnalysis.tr(context: context)); + }, + onCancelPressed: () { + context.pop(); + }); + }), + ) : SizedBox.shrink() : SizedBox.shrink(), + ], + ); + }), ); } @@ -142,7 +223,7 @@ class LabResultDetails extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - (recentLabResult.testCode ?? "").toText28(isBold: true, color: AppColors.textColor, letterSpacing: -2), + (recentLabResult.testCode ?? "").toText28(isBold: true, color: AppColors.textColor, letterSpacing: -2, isEnglishOnly: true), Visibility( visible: recentLabResult.checkIfGraphShouldBeDisplayed() == true, child: Column( @@ -154,7 +235,7 @@ class LabResultDetails extends StatelessWidget { recentLabResult.calculatedResultFlag ?? "", ) .tr(context: context) - .toText10(weight: FontWeight.w500, color: AppColors.greyTextColor), + .toText10(isBold: true, color: AppColors.greyTextColor), Utils.buildSvgWithAssets( icon: AppAssets.lab_result_indicator, width: 21, @@ -168,7 +249,7 @@ class LabResultDetails extends StatelessWidget { ], ), SizedBox(height: 4.h), - ("${LocaleKeys.resultOf.tr(context: context)} ${recentLabResult.verifiedOn ?? ""}").toText11(weight: FontWeight.w500, color: AppColors.greyTextColor), + ("${LocaleKeys.resultOf.tr(context: context)} ${recentLabResult.verifiedOn ?? ""}").toText11(isBold: true, color: AppColors.greyTextColor, isEnglishOnly: true), ], ), Row( @@ -179,12 +260,16 @@ class LabResultDetails extends StatelessWidget { mainAxisSize: MainAxisSize.max, children: [ Flexible( - child: ("${recentLabResult.resultValue} ${recentLabResult.uOM}" ?? "").toText28( - isBold: true, - color: context.read().getColor( - recentLabResult.calculatedResultFlag ?? "", - ), - letterSpacing: -2), + child: Directionality( + textDirection: ui.TextDirection.ltr, + child: ("${recentLabResult.resultValue} ${recentLabResult.uOM}" ?? "").toText28( + isBold: true, + color: context.read().getColor( + recentLabResult.calculatedResultFlag ?? "", + ), + letterSpacing: -2, + isEnglishOnly: true), + ), ), SizedBox( width: 4.h, @@ -200,8 +285,8 @@ class LabResultDetails extends StatelessWidget { "${LocaleKeys.referenceRange.tr(context: context)}: \n${recentLabResult.referanceRange!.trim()}", style: TextStyle( fontSize: 12.f, - fontWeight: FontWeight.w500, - fontFamily: 'Poppins', + fontWeight: FontWeight.w600, + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', color: AppColors.greyTextColor, ), softWrap: true, @@ -230,24 +315,25 @@ class LabResultDetails extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text( - labmodel.isGraphVisible ? LocaleKeys.historyFlowchart.tr(context: context) : LocaleKeys.history.tr(context: context), - style: TextStyle( - fontSize: 16.f, - fontFamily: 'Poppins', - fontWeight: FontWeight.w600, - color: AppColors.textColor, - ), - ), + (labmodel.isGraphVisible ? LocaleKeys.historyFlowchart.tr(context: context) : LocaleKeys.history.tr(context: context)).toText16(isBold: true, color: AppColors.textColor), + // Text( + // labmodel.isGraphVisible ? LocaleKeys.historyFlowchart.tr(context: context) : LocaleKeys.history.tr(context: context), + // style: TextStyle( + // fontSize: 16.f, + // fontFamily: 'Poppins', + // isBold: true, + // color: AppColors.textColor, + // ), + // ), Row( spacing: 16.h, children: [ //todo handle when the graph icon is being displayed - Utils.buildSvgWithAssets(icon: labmodel.isGraphVisible ? AppAssets.ic_list : AppAssets.ic_graph, width: 24.h, height: 24.h).onPress(() { - if (labmodel.shouldShowGraph) { - labmodel.alterGraphVisibility(); - } - }), + // Utils.buildSvgWithAssets(icon: labmodel.isGraphVisible ? AppAssets.ic_list : AppAssets.ic_graph, width: 24.h, height: 24.h).onPress(() { + // if (labmodel.shouldShowGraph) { + // labmodel.alterGraphVisibility(); + // } + // }), Utils.buildSvgWithAssets(icon: AppAssets.ic_date_filter, width: 24, height: 24).onPress(() { showCommonBottomSheetWithoutHeight( title: LocaleKeys.setTheDateRange.tr(context: context), @@ -278,7 +364,7 @@ class LabResultDetails extends StatelessWidget { value, style: TextStyle( fontWeight: FontWeight.w600, - fontFamily: 'Poppins', + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', fontSize: 8.f, color: AppColors.textColor, ), @@ -290,13 +376,13 @@ class LabResultDetails extends StatelessWidget { padding: const EdgeInsets.only(top: 8.0), child: Text( label, - style: TextStyle(fontSize: 8.f, fontFamily: 'Poppins', fontWeight: FontWeight.w600, color: AppColors.labelTextColor), + style: TextStyle(fontSize: 8.f, fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', fontWeight: FontWeight.w600, color: AppColors.labelTextColor), ), ); } Widget historyBody(LabViewModel labmodel) { - if (labmodel.isGraphVisible && labmodel.shouldShowGraph) { + if (labmodel.shouldShowGraph) { var graphColor = labmodel.getColor(recentLabResult.calculatedResultFlag ?? "N"); return CustomGraph( dataPoints: labmodel.filteredGraphValues, @@ -308,9 +394,11 @@ class LabResultDetails extends StatelessWidget { maxY: (labmodel.maxY), minY: labmodel.minY, maxX: labmodel.filteredGraphValues.length.toDouble() - .75, - horizontalInterval: .1, + horizontalInterval: .01, + isRTL: getIt.get().isArabic(), getDrawingHorizontalLine: (value) { - value = double.parse(value.toStringAsFixed(1)); + value = double.parse(value.toStringAsFixed(2)); + // print("the value is $value"); if (value == labmodel.highRefrenceValue || value == labmodel.lowRefenceValue) { return FlLine( color: AppColors.bgGreenColor.withOpacity(0.6), @@ -325,21 +413,21 @@ class LabResultDetails extends StatelessWidget { ; }, leftLabelFormatter: (value) { - value = double.parse(value.toStringAsFixed(1)); - // return leftLabels(value.toStringAsFixed(2)); - if (value == labmodel.highRefrenceValue) { - return leftLabels(LocaleKeys.high.tr()); - } - - if (value == labmodel.lowRefenceValue) { - return leftLabels(LocaleKeys.low.tr()); - } + value = double.parse(value.toStringAsFixed(2)); + return leftLabels(value.toStringAsFixed(2)); + // if (value == labmodel.highRefrenceValue) { + // return leftLabels(LocaleKeys.high.tr()); + // } + // + // if (value == labmodel.lowRefenceValue) { + // return leftLabels(LocaleKeys.low.tr()); + // } return SizedBox.shrink(); // } }, - graphColor: AppColors.blackColor, - graphShadowColor: Colors.transparent, + graphColor: AppColors.textColor.withAlpha(90), + graphShadowColor: AppColors.graphGridColor.withOpacity(.5), graphGridColor: graphColor.withOpacity(.4), bottomLabelFormatter: (value, data) { if (data.isEmpty) return SizedBox.shrink(); @@ -358,9 +446,8 @@ class LabResultDetails extends StatelessWidget { minX: (labmodel.filteredGraphValues.length == 1) ? null : -.2, scrollDirection: Axis.horizontal, height: 180.h); - } else { - return labHistoryList(labmodel); } + return SizedBox.shrink(); } List _buildRangeShades( @@ -371,7 +458,7 @@ class LabResultDetails extends StatelessWidget { ranges.add(HorizontalRangeAnnotation( y1: model.minY, y2: model.lowRefenceValue, - color: AppColors.highAndLow.withOpacity(0.05), + color: Colors.transparent, )); ranges.add(HorizontalRangeAnnotation( @@ -383,24 +470,25 @@ class LabResultDetails extends StatelessWidget { ranges.add(HorizontalRangeAnnotation( y1: model.highRefrenceValue, y2: model.maxY, - color: AppColors.criticalLowAndHigh.withOpacity(0.05), + color: Colors.transparent, )); return ranges; } Widget labHistoryList(LabViewModel labmodel) { return SizedBox( - height: labmodel.filteredGraphValues.length < 3 ? labmodel.filteredGraphValues.length * 64 : 180.h, + height: labmodel.mainLabResults.length < 3 ? labmodel.mainLabResults.length * 64 : (!labmodel.isLabResultsHistoryShowMore ? 180.h : 220.h), child: ListView.separated( padding: EdgeInsets.zero, - itemCount: labmodel.filteredGraphValues.length, + // itemCount: labmodel.isLabResultsHistoryShowMore ? (labmodel.filteredGraphValues.length < 3 ? labmodel.filteredGraphValues : 3) : labmodel.filteredGraphValues.length, + itemCount: !labmodel.isLabResultsHistoryShowMore ? (labmodel.mainLabResults.length < 3 ? labmodel.mainLabResults.length : 3) : labmodel.mainLabResults.length, itemBuilder: (context, index) { - var data = labmodel.filteredGraphValues.reversed.toList()[index]; + var data = labmodel.mainLabResults.toList()[index]; return LabHistoryItem( - dayNameAndDate: labmodel.getFormattedDate(data.time), - result: data.actualValue, - assetUrl: labmodel.getAssetUrlWRTResult(data.referenceValue), - shouldRotateIcon: labmodel.getRotationWRTResult(data.referenceValue), + dayNameAndDate: labmodel.getFormattedDate(DateUtil.convertStringToDate(data.verifiedOnDateTime)), + result: data.resultValue??"", + assetUrl: labmodel.getAssetUrlWRTResult(data.calculatedResultFlag??""), + shouldRotateIcon: labmodel.getRotationWRTResult(data.calculatedResultFlag??""), ); }, separatorBuilder: (_, __) => Divider( @@ -412,19 +500,22 @@ class LabResultDetails extends StatelessWidget { } double? getInterval(LabViewModel labmodel) { - return .1; - // var maxX = labmodel.maxY; - // if(maxX<1) return .5; - // if(maxX >1 && maxX < 5) return 1; - // if(maxX >5 && maxX < 10) return 5; - // if(maxX >10 && maxX < 50) return 10; - // if(maxX >50 && maxX < 100) return 20; - // if(maxX >100 && maxX < 200) return 30; - // return 50; + // return .1; + var maxX = labmodel.maxY; + if(maxX<1) return .3; + if(maxX >1 && maxX <= 5) return .7; + if(maxX >5 && maxX <= 10) return 2.5; + if(maxX >10 && maxX <= 50) return 5; + if(maxX >50 && maxX <= 100) return 10; + if(maxX >100 && maxX <= 200) return 30; + if(maxX >200 && maxX <= 300) return 50; + if(maxX >300 && maxX <= 400) return 100; + return 200 ; } Widget getLabDescription(BuildContext context) { return Container( + width: MediaQuery.sizeOf(context).width, decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, borderRadius: 24.h, @@ -435,8 +526,8 @@ class LabResultDetails extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, spacing: 8.h, children: [ - LocaleKeys.whatIsThisResult.tr(context: context).toText16(weight: FontWeight.w600, color: AppColors.textColor), - testDescription?.toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight) ?? SizedBox.shrink() + LocaleKeys.whatIsThisResult.tr(context: context).toText16(isBold: true, color: AppColors.textColor), + testDescription?.toText12(isBold: true, color: AppColors.textColorLight) ?? SizedBox.shrink() ], )); } diff --git a/lib/presentation/lab/lab_results/lab_result_list_item.dart b/lib/presentation/lab/lab_results/lab_result_list_item.dart index f2dc90e4..78369463 100644 --- a/lib/presentation/lab/lab_results/lab_result_list_item.dart +++ b/lib/presentation/lab/lab_results/lab_result_list_item.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart' ; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -24,8 +26,8 @@ class LabHistoryItem extends StatelessWidget{ dayNameAndDate, style: TextStyle( fontSize: 14.f, - fontWeight: FontWeight.w500, - fontFamily: 'Poppins', + fontWeight: FontWeight.w600, + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', color: AppColors.labelTextColor ), ), @@ -33,8 +35,8 @@ class LabHistoryItem extends StatelessWidget{ result, style: TextStyle( fontSize: 18.f, - fontWeight: FontWeight.w600, - fontFamily: 'Poppins', + fontWeight: FontWeight.w600, + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', color: AppColors.textColor ), ) diff --git a/lib/presentation/lab/search_lab_report.dart b/lib/presentation/lab/search_lab_report.dart index d366f38f..24f24d68 100644 --- a/lib/presentation/lab/search_lab_report.dart +++ b/lib/presentation/lab/search_lab_report.dart @@ -25,9 +25,8 @@ class _SearchLabResultsContentState extends State { @override void initState() { super.initState(); - filteredSuggestions = List.from(widget.labSuggestionsList); + filteredSuggestions = List.from(widget.labSuggestionsList)..sort((a, b) => a.toLowerCase().compareTo(b.toLowerCase())); - // Listen for changes in the search field searchEditingController.addListener(() { filterSuggestions(); }); @@ -44,11 +43,11 @@ class _SearchLabResultsContentState extends State { if (query.isEmpty) { setState(() { - filteredSuggestions = List.from(widget.labSuggestionsList); + filteredSuggestions = List.from(widget.labSuggestionsList)..sort((a, b) => a.toLowerCase().compareTo(b.toLowerCase())); }); } else { setState(() { - filteredSuggestions = widget.labSuggestionsList.where((suggestion) => suggestion.toLowerCase().contains(query)).toList(); + filteredSuggestions = widget.labSuggestionsList.where((suggestion) => suggestion.toLowerCase().contains(query)).toList()..sort((a, b) => a.toLowerCase().compareTo(b.toLowerCase())); }); } } @@ -78,8 +77,9 @@ class _SearchLabResultsContentState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ TextInputWidget( - labelText: "Search lab results", - hintText: "Type test name", + fontFamily: "Poppins", + labelText: LocaleKeys.searchLabResults.tr(context: context), + hintText: "", controller: searchEditingController, isEnable: true, prefix: null, @@ -93,7 +93,7 @@ class _SearchLabResultsContentState extends State { ), SizedBox(height: ResponsiveExtension(20).h), if (filteredSuggestions.isNotEmpty) ...[ - "Suggestions".toText16(isBold: true), + LocaleKeys.suggestions.tr(context: context).toText16(isBold: true, isEnglishOnly: true), ], ], ), @@ -146,7 +146,8 @@ class SuggestionChip extends StatelessWidget { child: label.toText12( // color: isSelected ? AppColors.textColor : Colors.black87, color: AppColors.textColor, - fontWeight: FontWeight.w500, + isBold: true, + isEnglishOnly: true ), ), ); diff --git a/lib/presentation/medical_file/eye_measurement_details_page.dart b/lib/presentation/medical_file/eye_measurement_details_page.dart index 08226095..68f261cd 100644 --- a/lib/presentation/medical_file/eye_measurement_details_page.dart +++ b/lib/presentation/medical_file/eye_measurement_details_page.dart @@ -172,7 +172,7 @@ class EyeMeasurementDetailsPage extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceAround, crossAxisAlignment: CrossAxisAlignment.start, children: [ - Expanded(flex: 2, child: title.toText11(weight: FontWeight.w500)), + Expanded(flex: 2, child: title.toText11(isBold: true)), Expanded( flex: 2, child: Row( diff --git a/lib/presentation/medical_file/eye_measurements_appointments_page.dart b/lib/presentation/medical_file/eye_measurements_appointments_page.dart index d8438ba4..df30a5a3 100644 --- a/lib/presentation/medical_file/eye_measurements_appointments_page.dart +++ b/lib/presentation/medical_file/eye_measurements_appointments_page.dart @@ -25,7 +25,7 @@ class EyeMeasurementsAppointmentsPage extends StatelessWidget { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( - title: "Eye Measurements", + title: LocaleKeys.eyeMeasurements.tr(context: context), child: SingleChildScrollView( child: Consumer(builder: (context, myAppointmentsVM, child) { return Column( diff --git a/lib/presentation/medical_file/medical_file_page.dart b/lib/presentation/medical_file/medical_file_page.dart index f288af66..cdee10db 100644 --- a/lib/presentation/medical_file/medical_file_page.dart +++ b/lib/presentation/medical_file/medical_file_page.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:ui' as ui; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; @@ -7,17 +8,13 @@ import 'package:get_it/get_it.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; -import 'package:hmg_patient_app_new/core/cache_consts.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; -import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_config.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; -import 'package:hmg_patient_app_new/features/active_prescriptions/models/active_prescriptions_response_model.dart'; -import 'package:hmg_patient_app_new/features/ask_doctor/ask_doctor_view_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/book_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/book_appointments/models/resp_models/doctors_list_response_model.dart'; import 'package:hmg_patient_app_new/features/hmg_services/hmg_services_view_model.dart'; @@ -26,25 +23,24 @@ import 'package:hmg_patient_app_new/features/hmg_services/models/ui_models/vital import 'package:hmg_patient_app_new/features/insurance/insurance_view_model.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; import 'package:hmg_patient_app_new/features/medical_file/medical_file_view_model.dart'; -import 'package:hmg_patient_app_new/features/medical_file/models/family_file_response_model.dart'; +import 'package:hmg_patient_app_new/features/medical_file/models/patient_medical_response_model.dart'; import 'package:hmg_patient_app_new/features/medical_file/models/patient_sickleave_response_model.dart'; import 'package:hmg_patient_app_new/features/monthly_report/monthly_report_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/my_invoices/my_invoices_view_model.dart'; import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_view_model.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart'; +import 'package:hmg_patient_app_new/features/water_monitor/water_monitor_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; -import 'package:hmg_patient_app_new/presentation/active_medication/active_medication_page.dart'; import 'package:hmg_patient_app_new/presentation/allergies/allergies_list_page.dart'; import 'package:hmg_patient_app_new/presentation/appointments/my_appointments_page.dart'; import 'package:hmg_patient_app_new/presentation/appointments/my_doctors_page.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/ask_doctor_request_type_select.dart'; -import 'package:hmg_patient_app_new/presentation/ask_doctor/ask_doctor_page.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/book_appointment_page.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/doctor_profile_page.dart'; import 'package:hmg_patient_app_new/presentation/book_appointment/widgets/appointment_calendar.dart'; -import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; import 'package:hmg_patient_app_new/presentation/insurance/insurance_approvals_page.dart'; import 'package:hmg_patient_app_new/presentation/insurance/insurance_home_page.dart'; import 'package:hmg_patient_app_new/presentation/insurance/widgets/insurance_update_details_card.dart'; @@ -54,11 +50,11 @@ import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/eye_measurements_appointments_page.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/patient_sickleaves_list_page.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/vaccine_list_page.dart'; +import 'package:hmg_patient_app_new/presentation/medical_file/widgets/health_tools_card.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/widgets/lab_rad_card.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/widgets/medical_file_card.dart'; +import 'package:hmg_patient_app_new/presentation/medical_file/widgets/medical_report_card.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/widgets/patient_sick_leave_card.dart'; -import 'package:hmg_patient_app_new/presentation/medical_report/medical_reports_page.dart'; -import 'package:hmg_patient_app_new/presentation/monthly_report/monthly_report.dart'; import 'package:hmg_patient_app_new/presentation/my_family/my_family.dart'; import 'package:hmg_patient_app_new/presentation/my_invoices/my_invoices_list.dart'; import 'package:hmg_patient_app_new/presentation/prescriptions/prescriptions_list_page.dart'; @@ -66,7 +62,6 @@ import 'package:hmg_patient_app_new/presentation/radiology/radiology_orders_page import 'package:hmg_patient_app_new/presentation/todo_section/todo_page.dart'; import 'package:hmg_patient_app_new/presentation/vital_sign/vital_sign_page.dart'; import 'package:hmg_patient_app_new/services/cache_service.dart'; -import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; @@ -74,12 +69,11 @@ import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/expandable_list_widget.dart'; -import 'package:hmg_patient_app_new/widgets/input_widget.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:hmg_patient_app_new/widgets/shimmer/common_shimmer_widget.dart'; +import 'package:hmg_patient_app_new/widgets/user_avatar_widget.dart'; import 'package:provider/provider.dart'; -import 'package:url_launcher/url_launcher.dart'; import '../../features/active_prescriptions/active_prescriptions_view_model.dart'; import '../prescriptions/prescription_detail_page.dart'; @@ -111,42 +105,27 @@ class _MedicalFilePageState extends State { int currentIndex = 0; - // Used to make the PageView height follow the card's intrinsic height - final GlobalKey _vitalSignMeasureKey = GlobalKey(); - double? _vitalSignMeasuredHeight; - @override void initState() { appState = getIt.get(); scheduleMicrotask(() { if (appState.isAuthenticated) { - myAppointmentsViewModel.getPatientMyDoctors(); - prescriptionsViewModel.initPrescriptionsViewModel(); insuranceViewModel.initInsuranceProvider(); - medicalFileViewModel.setIsPatientSickLeaveListLoading(true); - medicalFileViewModel.getPatientSickLeaveList(); - medicalFileViewModel.onTabChanged(0); // Load vital signs hmgServicesViewModel.getPatientVitalSign(); - } - }); - super.initState(); - } - void _scheduleVitalSignMeasure() { - WidgetsBinding.instance.addPostFrameCallback((_) { - final ctx = _vitalSignMeasureKey.currentContext; - if (ctx == null) return; - final box = ctx.findRenderObject(); - if (box is RenderBox) { - final h = box.size.height; - if (h > 0 && h != _vitalSignMeasuredHeight) { - setState(() { - _vitalSignMeasuredHeight = h; - }); - } + // myAppointmentsViewModel.getPatientMyDoctors(isTop8: true); + // prescriptionsViewModel.initPrescriptionsViewModel(); + + // medicalFileViewModel.setIsPatientSickLeaveListLoading(true); + // medicalFileViewModel.getPatientSickLeaveList(); + // medicalFileViewModel.setIsPatientMedicalReportsLoading(true); + // medicalFileViewModel.getPatientMedicalReportList(); + + medicalFileViewModel.onTabChanged(0); } }); + super.initState(); } @override @@ -197,18 +176,24 @@ class _MedicalFilePageState extends State { ], ), SizedBox(width: 4.h), - Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, height: 22.h, width: 22.w) + Transform.flip(flipX: appState.isArabic(), child: Utils.buildSvgWithAssets(icon: AppAssets.arrowRight, height: 22.h, width: 22.w)) ], ).onPress(() { - DialogService dialogService = getIt.get(); - dialogService.showFamilyBottomSheetWithoutH( - label: LocaleKeys.familyTitle.tr(context: context), - message: "", - isShowManageButton: true, - onSwitchPress: (FamilyFileResponseModelLists profile) { - medicalFileViewModel.switchFamilyFiles(responseID: profile.responseId, patientID: profile.patientId, phoneNumber: profile.mobileNumber); - }, - profiles: medicalFileViewModel.patientFamilyFiles); + Navigator.of(context).push( + CustomPageRoute( + direction: AxisDirection.down, + page: FamilyMedicalScreen(), + ), + ); + // DialogService dialogService = getIt.get(); + // dialogService.showFamilyBottomSheetWithoutH( + // label: LocaleKeys.familyTitle.tr(context: context), + // message: "", + // isShowManageButton: true, + // onSwitchPress: (FamilyFileResponseModelLists profile) { + // medicalFileViewModel.switchFamilyFiles(responseID: profile.responseId, patientID: profile.patientId, phoneNumber: profile.mobileNumber); + // }, + // profiles: medicalFileViewModel.patientFamilyFiles); }), isLeading: widget.showBackIcon, // leadingCallback: () { @@ -234,15 +219,28 @@ class _MedicalFilePageState extends State { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset(appState.getAuthenticatedUser()?.gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, width: 56.w, height: 56.h), + Selector( + selector: (_, profileVM) => profileVM.profileImageData ?? appState.getProfileImageData, + shouldRebuild: (previous, next) => previous != next, + builder: (context, profileImageData, child) { + return UserAvatarWidget( + key: ValueKey('medical_avatar_${profileImageData?.hashCode ?? 0}'), + width: 56.h, + height: 56.h, + fit: BoxFit.cover, + isCircular: true, + customProfileImageData: profileImageData, + ); + }, + ), SizedBox(width: 8.w), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox( width: MediaQuery.of(context).size.width * 0.6, - child: "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}" - .toText18(isBold: true, weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 2), + child: + "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}".toText18(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 2), ), SizedBox(height: 4.h), Wrap( @@ -252,7 +250,7 @@ class _MedicalFilePageState extends State { children: [ AppCustomChipWidget( icon: AppAssets.file_icon, - richText: "${LocaleKeys.fileno.tr(context: context)}: ${appState.getAuthenticatedUser()!.patientId}".toText10(isEnglishOnly: true), + labelText: "${LocaleKeys.fileno.tr(context: context)}: ${appState.getAuthenticatedUser()!.patientId}", labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), ), AppCustomChipWidget( @@ -281,9 +279,9 @@ class _MedicalFilePageState extends State { ), AppCustomChipWidget( icon: AppAssets.blood_icon, - labelText: LocaleKeys.bloodGroup.tr(namedArgs: {'bloodType': appState.getUserBloodGroup.isEmpty ? "N/A" : appState.getUserBloodGroup}, context: context), + labelText: appState.getUserBloodGroup.isEmpty ? "N/A" : appState.getUserBloodGroup, iconColor: AppColors.primaryRedColor, - labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + labelPadding: EdgeInsetsDirectional.only(start: -6.w, end: 6.w), padding: EdgeInsets.zero, ), Consumer(builder: (context, insuranceVM, child) { @@ -310,27 +308,35 @@ class _MedicalFilePageState extends State { : AppColors.warningColorYellow, iconSize: 12.w, deleteIcon: insuranceVM.isInsuranceActive ? null : AppAssets.forward_chevron_icon, - deleteIconColor: AppColors.warningColorYellow, + deleteIconColor: insuranceVM.isInsuranceExpired + ? AppColors.primaryRedColor + : insuranceVM.isInsuranceActive + ? AppColors.successColor + : AppColors.warningColorYellow, deleteIconHasColor: true, onChipTap: () { if (!insuranceVM.isInsuranceActive) { - showCommonBottomSheetWithoutHeight( - title: LocaleKeys.notice.tr(context: navigationService.navigatorKey.currentContext!), - navigationService.navigatorKey.currentContext!, - child: Utils.getWarningWidget( - loadingText: LocaleKeys.insuranceInActiveContactSupport.tr(context: context), - confirmText: LocaleKeys.contactUs.tr(context: context), - isShowActionButtons: true, - onCancelTap: () { - navigationService.pop(); - }, - onConfirmTap: () async { - launchUrl(Uri.parse("tel://" + "+966 92 006 6666")); - }), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); + insuranceVM.setIsInsuranceUpdateDetailsLoading(true); + insuranceVM.getPatientInsuranceDetailsForUpdate( + appState.getAuthenticatedUser()!.patientId.toString(), appState.getAuthenticatedUser()!.patientIdentificationNo.toString()); + showCommonBottomSheetWithoutHeight(context, child: PatientInsuranceCardUpdateCard(), callBackFunc: () {}, title: "", isCloseButtonVisible: false, isFullScreen: false); + // showCommonBottomSheetWithoutHeight( + // title: LocaleKeys.notice.tr(context: navigationService.navigatorKey.currentContext!), + // navigationService.navigatorKey.currentContext!, + // child: Utils.getWarningWidget( + // loadingText: LocaleKeys.insuranceInActiveContactSupport.tr(context: context), + // confirmText: LocaleKeys.contactUs.tr(context: context), + // isShowActionButtons: true, + // onCancelTap: () { + // navigationService.pop(); + // }, + // onConfirmTap: () async { + // launchUrl(Uri.parse("tel://" + "+966 92 006 6666")); + // }), + // callBackFunc: () {}, + // isFullScreen: false, + // isCloseButtonVisible: true, + // ); } }, backgroundColor: insuranceVM.isInsuranceExpired @@ -359,10 +365,10 @@ class _MedicalFilePageState extends State { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - LocaleKeys.vitalSigns.tr(context: context).toText16(weight: FontWeight.w500, letterSpacing: -0.2), + LocaleKeys.vitalSigns.tr(context: context).toText16(isBold: true, letterSpacing: -0.2), Row( children: [ - LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), + LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor, isBold: true), SizedBox(width: 2.h), Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), ], @@ -409,17 +415,17 @@ class _MedicalFilePageState extends State { ); } - // The cards define their own height; measure the first rendered page once - _scheduleVitalSignMeasure(); - final double hostHeight = _vitalSignMeasuredHeight ?? (135.h); - - return SizedBox( - height: hostHeight, + // Responsive PageView with dynamic height constraint + return ConstrainedBox( + constraints: BoxConstraints( + minHeight: 135.h, + maxHeight: 150.h, + // maxHeight: isFoldable ? 150.h : (isTablet ? 140.h : 140.h), + ), child: PageView( controller: hmgServicesVM.vitalSignPageController, onPageChanged: (index) { hmgServicesVM.setVitalSignCurrentPage(index); - _scheduleVitalSignMeasure(); }, children: _buildVitalSignPages( vitalSign: hmgServicesVM.vitalSignList.first, @@ -430,7 +436,6 @@ class _MedicalFilePageState extends State { ), ); }, - measureKey: _vitalSignMeasureKey, currentPageIndex: hmgServicesVM.vitalSignCurrentPage, ), ), @@ -458,8 +463,7 @@ class _MedicalFilePageState extends State { ], ); }), - SizedBox(height: 16.h), - + SizedBox(height: 24.h), // TextInputWidget( // labelText: LocaleKeys.search.tr(context: context), // hintText: "Type any record".needTranslation, @@ -474,32 +478,41 @@ class _MedicalFilePageState extends State { // leadingIcon: AppAssets.search_icon, // hintColor: AppColors.textColor, // ).paddingSymmetrical(24.w, 0.0), - SizedBox(height: 16.h), + // SizedBox(height: 16.h), // Using CustomExpandableList CustomExpandableList( expansionMode: ExpansionMode.exactlyOne, dividerColor: AppColors.dividerColor, itemPadding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 14.h), + onItemToggled: (index, isExpanded) { + debugPrint("Item at index $index is now ${isExpanded ? 'expanded' : 'collapsed'}"); + + if (index == 0 && isExpanded) { + myAppointmentsViewModel.getPatientMyDoctors(isTop8: true); + prescriptionsViewModel.initPrescriptionsViewModel(); + } + if (index == 1 && isExpanded) { + medicalFileViewModel.setIsPatientSickLeaveListLoading(true); + medicalFileViewModel.getPatientSickLeaveList(); + medicalFileViewModel.setIsPatientMedicalReportsLoading(true); + medicalFileViewModel.getPatientMedicalReportList(); + } + }, items: [ ExpandableListItem( - title: LocaleKeys.medicalServices.tr(context: context).toText18(weight: FontWeight.w600), + title: LocaleKeys.medicalServices.tr(context: context).toText18(isBold: true), expandedBackgroundColor: Colors.transparent, children: [ SizedBox(height: 10.h), getSelectedTabData(0), ], ), + ExpandableListItem(title: LocaleKeys.medicalReports.tr(context: context).toText18(isBold: true), expandedBackgroundColor: Colors.transparent, children: [ + SizedBox(height: 10.h), + getSelectedTabData(2), + ]), ExpandableListItem( - title: LocaleKeys.medicalReports.tr(context: context).toText18( - weight: FontWeight.w600, - ), - expandedBackgroundColor: Colors.transparent, - children: [ - SizedBox(height: 10.h), - getSelectedTabData(2), - ]), - ExpandableListItem( - title: LocaleKeys.insuranceAndPayments.tr(context: context).toText18(weight: FontWeight.w600), + title: LocaleKeys.insuranceAndPayments.tr(context: context).toText18(isBold: true), expandedBackgroundColor: Colors.transparent, children: [ SizedBox(height: 10.h), @@ -507,7 +520,7 @@ class _MedicalFilePageState extends State { ], ), ExpandableListItem( - title: LocaleKeys.trackerAndOthers.tr(context: context).toText18(weight: FontWeight.w600), + title: LocaleKeys.healthTools.tr(context: context).toText18(isBold: true), expandedBackgroundColor: Colors.transparent, children: [ SizedBox(height: 10.h), @@ -532,7 +545,7 @@ class _MedicalFilePageState extends State { doctorImageURL: patientAppointmentHistoryResponseModel.doctorImageURL, doctorTitle: patientAppointmentHistoryResponseModel.doctorTitle, name: patientAppointmentHistoryResponseModel.doctorNameObj, - nationalityFlagURL: "https://hmgwebservices.com/Images/flag/SYR.png", + nationalityFlagURL: "", speciality: [], clinicName: patientAppointmentHistoryResponseModel.clinicName, projectName: patientAppointmentHistoryResponseModel.projectName, @@ -564,820 +577,839 @@ class _MedicalFilePageState extends State { }); } - Widget getSelectedTabData(int index) { - switch (index) { - case 0: - //General Tab Data - return Column( - crossAxisAlignment: CrossAxisAlignment.start, + Widget buildInsuranceTab(int index) { + return Column( + children: [ + Consumer(builder: (context, insuranceVM, child) { + return insuranceVM.isInsuranceLoading + ? LabResultItemView( + onTap: () {}, + labOrder: null, + index: index, + isLoading: true, + ).paddingSymmetrical(0.w, 0.0) + : insuranceVM.patientInsuranceList.isNotEmpty + ? PatientInsuranceCard( + insuranceCardDetailsModel: insuranceVM.patientInsuranceList.first, + isInsuranceExpired: DateTime.now().isAfter( + DateUtil.convertStringToDate(insuranceVM.patientInsuranceList.first.cardValidTo), + ), + ) + : Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // color: AppColors.bgRedLightColor, + borderRadius: 12.r, + hasShadow: false, + ), + child: Utils.getNoDataWidget( + context, + noDataText: LocaleKeys.noInsuranceWithHMG.tr(context: context), + isSmallWidget: true, + width: 62.w, + height: 62.h, + callToActionButton: CustomButton( + icon: AppAssets.update_insurance_card_icon, + iconColor: AppColors.successColor, + iconSize: 15.h, + text: "${LocaleKeys.updateInsurance.tr(context: context)} ${LocaleKeys.updateInsuranceSubtitle.tr(context: context)}", + onPressed: () { + insuranceViewModel.setIsInsuranceUpdateDetailsLoading(true); + insuranceViewModel.getPatientInsuranceDetailsForUpdate( + appState.getAuthenticatedUser()!.patientId.toString(), appState.getAuthenticatedUser()!.patientIdentificationNo.toString()); + showCommonBottomSheetWithoutHeight(context, child: PatientInsuranceCardUpdateCard(), callBackFunc: () {}, title: "", isCloseButtonVisible: false, isFullScreen: false); + }, + backgroundColor: AppColors.bgGreenColor.withOpacity(0.20), + borderColor: AppColors.bgGreenColor.withOpacity(0.0), + textColor: AppColors.bgGreenColor, + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.fromLTRB(10.w, 0, 10.w, 0), + height: isFoldable ? 50.h : 40.h, + ).paddingOnly(left: 12.w, right: 12.w, bottom: 12.h), + ), + ).paddingSymmetrical(0.w, 0.h); + }), + SizedBox(height: 10.h), + GridView( + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + crossAxisSpacing: 10.h, + mainAxisSpacing: 16.w, + childAspectRatio: isFoldable ? 1.2 : (isTablet ? 1.4 : 0.98), + // mainAxisExtent: 120.h, + ), + physics: NeverScrollableScrollPhysics(), + padding: EdgeInsets.only(top: 12.h), + shrinkWrap: true, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - LocaleKeys.appointmentsAndVisits.tr(context: context).toText16(weight: FontWeight.w500, letterSpacing: -0.2), - Row( - children: [ - LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), - SizedBox(width: 2.h), - Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), - ], - ), - ], - ).paddingSymmetrical(0.w, 0.h).onPress(() { + MedicalFileCard( + label: LocaleKeys.updateInsuranceInfo.tr(context: context), + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.update_insurance_icon, + isLargeText: true, + iconSize: 36.w, + ).onPress(() { + Navigator.of(context).push(CustomPageRoute(page: InsuranceHomePage())); + }), + MedicalFileCard( + label: "${LocaleKeys.approvals1.tr(context: context)} ${LocaleKeys.insurance.tr(context: context)}", + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.insurance_approval_icon, + isLargeText: true, + iconSize: 36.w, + ).onPress(() { + Navigator.of(context).push(CustomPageRoute(page: InsuranceApprovalsPage())); + }), + MedicalFileCard( + label: LocaleKeys.myInvoicesList.tr(context: context), + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.invoices_list_icon, + isLargeText: true, + iconSize: 36.w, + ).onPress(() { + Navigator.of(context).push(CustomPageRoute(page: MyInvoicesList())); + }), + // MedicalFileCard( + // label: LocaleKeys.requestRefund.tr(context: context), + // textColor: AppColors.blackColor, + // backgroundColor: AppColors.whiteColor, + // svgIcon: AppAssets.ancillary_orders_list_icon, + // isLargeText: true, + // iconSize: 36.w, + // ).onPress(() { + // Navigator.of(context).push( + // CustomPageRoute( + // page: const RefundRequestCreatePage(initialTabIndex: 0), + // ), + // ); + // }), + MedicalFileCard( + label: LocaleKeys.ancillaryOrdersListNew.tr(context: context), + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.ancillary_orders_list_icon, + isLargeText: true, + iconSize: 36.w, + ).onPress(() { + getIt.get().setIsAncillaryOrdersNeedReloading(true); Navigator.of(context).push( CustomPageRoute( - page: MyAppointmentsPage(), + page: ToDoPage(), ), ); }), - SizedBox(height: 16.h), - Consumer(builder: (context, myAppointmentsVM, child) { - // Provide an explicit height so the horizontal ListView has a bounded height - return SizedBox( - height: 192.h, - child: myAppointmentsVM.isMyAppointmentsLoading - ? MedicalFileAppointmentCard( - patientAppointmentHistoryResponseModel: PatientAppointmentHistoryResponseModel(), - myAppointmentsViewModel: myAppointmentsVM, - onRescheduleTap: () {}, - onAskDoctorTap: () {}, - ) - : myAppointmentsVM.patientAppointmentsHistoryList.isEmpty - ? Container( - padding: EdgeInsets.all(12.w), - width: MediaQuery.of(context).size.width, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.r, hasShadow: false), - child: Column( - children: [ - Utils.buildSvgWithAssets(icon: AppAssets.home_calendar_icon, width: 32.h, height: 32.h), - SizedBox(height: 12.h), - LocaleKeys.noUpcomingAppointmentPleaseBook.tr(context: context).toText12(isCenter: true), - SizedBox(height: 12.h), - CustomButton( - text: LocaleKeys.bookAppo.tr(context: context), - onPressed: () { - getIt.get().onTabChanged(0); - Navigator.of(context).push( - CustomPageRoute( - page: BookAppointmentPage(), - ), - ); - }, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 14.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - padding: EdgeInsets.symmetric(horizontal: 10.w), - height: isFoldable || isTablet ? 50.h : 40.h, - icon: AppAssets.add_icon, - iconColor: AppColors.primaryRedColor, - ), - ], + ], + ).paddingSymmetrical(0.w, 0.0), + SizedBox(height: 16.h), + ], + ); + } + + Widget buildMedicalServicesTab() { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.appointmentsAndVisits.tr(context: context).toText16(isBold: true, letterSpacing: -0.2), + Row( + children: [ + LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor, isBold: true), + SizedBox(width: 2.h), + Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), + ], + ), + ], + ).paddingSymmetrical(0.w, 0.h).onPress(() { + Navigator.of(context).push(CustomPageRoute(page: MyAppointmentsPage())); + }), + SizedBox(height: 16.h), + Consumer(builder: (context, myAppointmentsVM, child) { + // Dynamic height that adapts to device and content + return ConstrainedBox( + constraints: BoxConstraints( + minHeight: 150.h, + maxHeight: isFoldable ? 210.h : (isTablet ? 200.h : 180.h), + ), + child: myAppointmentsVM.isMyAppointmentsLoading + ? MedicalFileAppointmentCard( + patientAppointmentHistoryResponseModel: PatientAppointmentHistoryResponseModel(), + myAppointmentsViewModel: myAppointmentsVM, + onRescheduleTap: () {}, + onAskDoctorTap: () {}, + ) + : myAppointmentsVM.patientAppointmentsHistoryList.isEmpty + ? Container( + padding: EdgeInsets.all(12.w), + width: MediaQuery.of(context).size.width, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.r, hasShadow: false), + child: Column( + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.home_calendar_icon, width: 32.h, height: 32.h), + SizedBox(height: 12.h), + LocaleKeys.noUpcomingAppointmentPleaseBook.tr(context: context).toText12(isCenter: true), + SizedBox(height: 12.h), + CustomButton( + text: LocaleKeys.bookAppo.tr(context: context), + onPressed: () { + getIt.get().onTabChanged(0); + Navigator.of(context).push( + CustomPageRoute( + page: BookAppointmentPage(), + ), + ); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: isFoldable || isTablet ? 50.h : 40.h, + icon: AppAssets.add_icon, + iconColor: AppColors.primaryRedColor, ), - ) - : ListView.separated( - scrollDirection: Axis.horizontal, - shrinkWrap: true, - itemCount: myAppointmentsVM.patientAppointmentsHistoryList.length, - padding: EdgeInsets.zero, - itemBuilder: (context, index) { - return AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 500), - child: SlideAnimation( - horizontalOffset: 100.0, - child: FadeInAnimation( - child: AnimatedContainer( - duration: const Duration(milliseconds: 300), - curve: Curves.easeInOut, - child: MedicalFileAppointmentCard( - patientAppointmentHistoryResponseModel: myAppointmentsVM.patientAppointmentsHistoryList[index], - myAppointmentsViewModel: myAppointmentsViewModel, - onRescheduleTap: () { - openDoctorScheduleCalendar(myAppointmentsVM.patientAppointmentsHistoryList[index]); - }, - onAskDoctorTap: () async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingDoctorAvailability.tr(context: context)); - await myAppointmentsViewModel.isDoctorAvailable( - projectID: myAppointmentsVM.patientAppointmentsHistoryList[index].projectID, - doctorId: myAppointmentsVM.patientAppointmentsHistoryList[index].doctorID, - clinicId: myAppointmentsVM.patientAppointmentsHistoryList[index].clinicID, - onSuccess: (value) async { - if (value) { - await myAppointmentsViewModel.getAskDoctorRequestTypes(onSuccess: (val) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - title: LocaleKeys.askDoctor.tr(context: context), - child: AskDoctorRequestTypeSelect( - askDoctorRequestTypeList: myAppointmentsViewModel.askDoctorRequestTypeList, - myAppointmentsViewModel: myAppointmentsViewModel, - patientAppointmentHistoryResponseModel: myAppointmentsVM.patientAppointmentsHistoryList[index], - ), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }); - } else { - LoaderBottomSheet.hideLoader(); - } - }, - onError: (_) { + ], + ), + ) + : ListView.separated( + scrollDirection: Axis.horizontal, + shrinkWrap: true, + itemCount: myAppointmentsVM.patientAppointmentsHistoryList.length, + padding: EdgeInsets.zero, + itemBuilder: (context, index) { + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + horizontalOffset: 100.0, + child: FadeInAnimation( + child: AnimatedContainer( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + child: MedicalFileAppointmentCard( + patientAppointmentHistoryResponseModel: myAppointmentsVM.patientAppointmentsHistoryList[index], + myAppointmentsViewModel: myAppointmentsViewModel, + onRescheduleTap: () { + openDoctorScheduleCalendar(myAppointmentsVM.patientAppointmentsHistoryList[index]); + }, + onAskDoctorTap: () async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingDoctorAvailability.tr(context: context)); + await myAppointmentsViewModel.isDoctorAvailable( + projectID: myAppointmentsVM.patientAppointmentsHistoryList[index].projectID, + doctorId: myAppointmentsVM.patientAppointmentsHistoryList[index].doctorID, + clinicId: myAppointmentsVM.patientAppointmentsHistoryList[index].clinicID, + onSuccess: (value) async { + if (value) { + await myAppointmentsViewModel.getAskDoctorRequestTypes(onSuccess: (val) { LoaderBottomSheet.hideLoader(); - }, - ); + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.askDoctor.tr(context: context), + child: AskDoctorRequestTypeSelect( + askDoctorRequestTypeList: myAppointmentsViewModel.askDoctorRequestTypeList, + myAppointmentsViewModel: myAppointmentsViewModel, + patientAppointmentHistoryResponseModel: myAppointmentsVM.patientAppointmentsHistoryList[index], + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + LoaderBottomSheet.hideLoader(); + } }, - ), - ), + onError: (_) { + LoaderBottomSheet.hideLoader(); + }, + ); + }, ), - )); - }, - separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 12.w), - ), - ); - }), - SizedBox(height: 10.h), - LocaleKeys.labAndRadiology.tr(context: context).toText16(weight: FontWeight.w500, letterSpacing: -0.2), - SizedBox(height: 16.h), + ), + ), + )); + }, + separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 12.w), + ), + ); + }), + SizedBox(height: 10.h), + LocaleKeys.labAndRadiology.tr(context: context).toText16(isBold: true, letterSpacing: -0.2), + SizedBox(height: 16.h), + Row( + children: [ + Expanded( + child: LabRadCard( + icon: AppAssets.lab_result_icon, + labelText: LocaleKeys.labResults.tr(context: context), + // labOrderTests: ["Complete blood count", "Creatinine", "Blood Sugar"], + labOrderTests: labViewModel.isLabOrdersLoading ? [] : labViewModel.labOrderTests, + isLoading: labViewModel.isLabOrdersLoading, + ).onPress(() { + Navigator.of(context).push( + CustomPageRoute( + page: LabOrdersPage(), + ), + ); + }), + ), + SizedBox(width: 8.w), + Expanded( + child: LabRadCard( + icon: AppAssets.radiology_icon, + labelText: LocaleKeys.radiologyLabResults.tr(context: context), + // labOrderTests: ["Complete blood count", "Creatinine", "Blood Sugar", + // labOrderTests: ["Chest X-ray", "Abdominal Ultrasound", "Dental X-ray"], + labOrderTests: [], + isLoading: false, + ).onPress(() { + Navigator.of(context).push( + CustomPageRoute( + page: RadiologyOrdersPage(), + ), + ); + }), + ), + ], + ).paddingSymmetrical(0.w, 0.h), + SizedBox(height: 24.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.activeMedicationsAndPrescriptions.tr(context: context).toText16(isBold: true, letterSpacing: -0.2), Row( children: [ - Expanded( - child: LabRadCard( - icon: AppAssets.lab_result_icon, - labelText: LocaleKeys.labResults.tr(context: context), - // labOrderTests: ["Complete blood count", "Creatinine", "Blood Sugar"], - labOrderTests: labViewModel.isLabOrdersLoading ? [] : labViewModel.labOrderTests, - isLoading: labViewModel.isLabOrdersLoading, - ).onPress(() { - Navigator.of(context).push( - CustomPageRoute( - page: LabOrdersPage(), - ), - ); - }), - ), - SizedBox(width: 8.w), - Expanded( - child: LabRadCard( - icon: AppAssets.radiology_icon, - labelText: "${LocaleKeys.radiology.tr(context: context)} ${LocaleKeys.results.tr(context: context)}", - // labOrderTests: ["Complete blood count", "Creatinine", "Blood Sugar", - // labOrderTests: ["Chest X-ray", "Abdominal Ultrasound", "Dental X-ray"], - labOrderTests: [], - isLoading: false, - ).onPress(() { - Navigator.of(context).push( - CustomPageRoute( - page: RadiologyOrdersPage(), - ), - ); - }), - ), + LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor, isBold: true), + SizedBox(width: 2.w), + Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), ], - ).paddingSymmetrical(0.w, 0.h), - SizedBox(height: 24.h), - LocaleKeys.activeMedicationsAndPrescriptions.tr(context: context).toText16(weight: FontWeight.w500, letterSpacing: -0.2), - SizedBox(height: 16.h), - Consumer(builder: (context, prescriptionVM, child) { - return prescriptionVM.isPrescriptionsOrdersLoading - ? const CommonShimmerWidget().paddingSymmetrical(0.w, 0.h) - : prescriptionVM.patientPrescriptionOrders.isNotEmpty - ? Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.r, hasShadow: false), - child: Padding( - padding: EdgeInsets.all(16.w), - child: Column( - children: [ - ListView.separated( - itemCount: prescriptionVM.patientPrescriptionOrders.length <= 2 ? prescriptionVM.patientPrescriptionOrders.length : 2, - shrinkWrap: true, - padding: EdgeInsets.only(left: 0, right: 8.w), - physics: NeverScrollableScrollPhysics(), - itemBuilder: (context, index) { - return AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 500), - child: SlideAnimation( - verticalOffset: 100.0, - child: FadeInAnimation( - child: Row( - children: [ - Image.network( - prescriptionVM.patientPrescriptionOrders[index].doctorImageURL!, - width: 40.w, - height: 40.h, - fit: BoxFit.cover, - ).circle(100.r), - SizedBox(width: 16.w), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + ).onPress(() { + // myAppointmentsViewModel.getPatientMyDoctors(); + Navigator.of(context).push( + CustomPageRoute( + page: PrescriptionsListPage(), + ), + ); + }), + ], + ), + SizedBox(height: 16.h), + Consumer(builder: (context, prescriptionVM, child) { + return prescriptionVM.isPrescriptionsOrdersLoading + ? const CommonShimmerWidget().paddingSymmetrical(0.w, 0.h) + : prescriptionVM.patientPrescriptionOrders.isNotEmpty + ? Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.r, hasShadow: false), + child: Padding( + padding: EdgeInsets.all(16.w), + child: Column( + children: [ + ListView.separated( + itemCount: prescriptionVM.patientPrescriptionOrders.length <= 2 ? prescriptionVM.patientPrescriptionOrders.length : 2, + shrinkWrap: true, + padding: EdgeInsets.only(left: 0, right: 8.w), + physics: NeverScrollableScrollPhysics(), + itemBuilder: (context, index) { + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + verticalOffset: 100.0, + child: FadeInAnimation( + child: Row( + children: [ + Utils.buildImgWithNetwork( + url: prescriptionVM.patientPrescriptionOrders[index].doctorImageURL!, + iconColor: AppColors.transparent, + width: 40.h, + height: 40.h, + fit: BoxFit.cover, + ).circle(100.r), + SizedBox(width: 16.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + prescriptionVM.patientPrescriptionOrders[index].doctorName!.toText16(isBold: true), + SizedBox(height: 4.h), + Wrap( + direction: Axis.horizontal, + spacing: 3.w, + runSpacing: 4.w, children: [ - prescriptionVM.patientPrescriptionOrders[index].doctorName!.toText16(isBold: true), - SizedBox(height: 4.h), - Wrap( - direction: Axis.horizontal, - spacing: 3.w, - runSpacing: 4.w, - children: [ - AppCustomChipWidget(labelText: prescriptionVM.patientPrescriptionOrders[index].clinicDescription!), - AppCustomChipWidget( - icon: AppAssets.doctor_calendar_icon, - labelText: DateUtil.formatDateToDate( - DateUtil.convertStringToDate(prescriptionVM.patientPrescriptionOrders[index].appointmentDate), - false, - ), + AppCustomChipWidget(labelText: prescriptionVM.patientPrescriptionOrders[index].clinicDescription!), + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + icon: AppAssets.doctor_calendar_icon, + labelText: DateUtil.formatDateToDate( + DateUtil.convertStringToDate(prescriptionVM.patientPrescriptionOrders[index].appointmentDate), + false, ), - ], + isEnglishOnly: true, + ), ), ], ), - ), - // SizedBox(width: 40.h), - Transform.flip( - flipX: appState.isArabic(), - child: Utils.buildSvgWithAssets( - icon: AppAssets.forward_arrow_icon_small, width: 15.w, height: 15.h, fit: BoxFit.contain, iconColor: AppColors.textColor)), - ], - ).onPress(() { - prescriptionVM.setPrescriptionsDetailsLoading(); - Navigator.of(context).push( - CustomPageRoute( - page: PrescriptionDetailPage(isFromAppointments: false, prescriptionsResponseModel: prescriptionVM.patientPrescriptionOrders[index]), - ), - ); - }), - ), - )); - }, - separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h), - ), - SizedBox(height: 16.h), - Divider(color: AppColors.dividerColor), - SizedBox(height: 16.h), - Row( - children: [ - Expanded( - child: CustomButton( - text: LocaleKeys.allPrescriptions.tr(context: context), - onPressed: () { + ], + ), + ), + // SizedBox(width: 40.h), + Transform.flip( + flipX: appState.isArabic(), + child: + Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_icon_small, width: 15.w, height: 15.h, fit: BoxFit.contain, iconColor: AppColors.textColor)), + ], + ).onPress(() { + prescriptionVM.setPrescriptionsDetailsLoading(); Navigator.of(context).push( CustomPageRoute( - page: PrescriptionsListPage(), + page: PrescriptionDetailPage(isFromAppointments: false, prescriptionsResponseModel: prescriptionVM.patientPrescriptionOrders[index]), ), ); - }, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 12.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - height: 40.h, - icon: AppAssets.requests, - iconColor: AppColors.primaryRedColor, - iconSize: 16.w, + }), ), - ), - SizedBox(width: 6.w), - Expanded( - child: CustomButton( - text: LocaleKeys.allMedications.tr(context: context), - onPressed: () { Navigator.of(context).push( - CustomPageRoute( - page: ActiveMedicationPage(), - ), - );}, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 12.f, - fontWeight: FontWeight.w500, - borderRadius: 12.h, - height: 40.h, - icon: AppAssets.all_medications_icon, - iconColor: AppColors.primaryRedColor, - iconSize: 16.h, - ), - ), - ], - ), - ], + )); + }, + separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h), ), - ), - ).paddingSymmetrical(0.w, 0.h) - : Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 12.r, - hasShadow: false, - ), - child: Utils.getNoDataWidget( - context, - noDataText: LocaleKeys.youDontHaveAnyPrescriptionsYet.tr(context: context), - isSmallWidget: true, - width: 62.w, - height: 62.h, - ), - ).paddingSymmetrical(0.w, 0.h); - }), - SizedBox(height: 24.h), - //My Doctor Section + SizedBox(height: 16.h), + // Divider(color: AppColors.dividerColor), + // SizedBox(height: 16.h), + // Row( + // children: [ + // Expanded( + // child: CustomButton( + // text: LocaleKeys.allPrescriptions.tr(context: context), + // onPressed: () { + // Navigator.of(context).push( + // CustomPageRoute( + // page: PrescriptionsListPage(), + // ), + // ); + // }, + // backgroundColor: AppColors.secondaryLightRedColor, + // borderColor: AppColors.secondaryLightRedColor, + // textColor: AppColors.primaryRedColor, + // fontSize: 12.f, + // isBold: true, + // borderRadius: 12.r, + // height: 40.h, + // icon: AppAssets.requests, + // iconColor: AppColors.primaryRedColor, + // iconSize: 16.w, + // ), + // ), + // SizedBox(width: 6.w), + // Expanded( + // child: CustomButton( + // text: LocaleKeys.allMedications.tr(context: context), + // onPressed: () { Navigator.of(context).push( + // CustomPageRoute( + // page: ActiveMedicationPage(), + // ), + // );}, + // backgroundColor: AppColors.secondaryLightRedColor, + // borderColor: AppColors.secondaryLightRedColor, + // textColor: AppColors.primaryRedColor, + // fontSize: 12.f, + // isBold: true, + // borderRadius: 12.h, + // height: 40.h, + // icon: AppAssets.all_medications_icon, + // iconColor: AppColors.primaryRedColor, + // iconSize: 16.h, + // ), + // ), + // ], + // ), + ], + ), + ), + ).paddingSymmetrical(0.w, 0.h) + : Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + hasShadow: false, + ), + child: Utils.getNoDataWidget( + context, + noDataText: LocaleKeys.youDontHaveAnyPrescriptionsYet.tr(context: context), + isSmallWidget: true, + width: 62.w, + height: 62.h, + ), + ).paddingSymmetrical(0.w, 0.h); + }), + SizedBox(height: 24.h), + //My Doctor Section + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.myDoctor.tr(context: context).toText16(isBold: true, letterSpacing: -0.2), Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - LocaleKeys.myDoctor.tr(context: context).toText16(weight: FontWeight.w500, letterSpacing: -0.2), - Row( + LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor, isBold: true), + SizedBox(width: 2.w), + Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), + ], + ).onPress(() { + // myAppointmentsViewModel.getPatientMyDoctors(); + myAppointmentsViewModel.setIsMyDoctorsDataToBeLoaded(true); + Navigator.of(context).push( + CustomPageRoute( + page: MyDoctorsPage(), + ), + ); + }), + ], + ).paddingSymmetrical(0.w, 0.h), + SizedBox(height: 16.h), + Consumer(builder: (context, myAppointmentsVM, child) { + return myAppointmentsVM.isPatientMyDoctorsLoading + ? Column( + crossAxisAlignment: CrossAxisAlignment.center, children: [ - LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500), - SizedBox(width: 2.w), - Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), + Utils.buildImgWithNetwork( + url: "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + iconColor: AppColors.transparent, + width: 64.h, + height: 64.h, + fit: BoxFit.cover, + ).circle(100).toShimmer2(isShow: true, radius: 50.r), + SizedBox(height: 8.h), + ("Dr. John Smith Smith Smith").toString().toText12(isBold: true, isCenter: true, maxLine: 2).toShimmer2(isShow: true), ], - ).onPress(() { - myAppointmentsViewModel.getPatientMyDoctors(); - Navigator.of(context).push( - CustomPageRoute( - page: MyDoctorsPage(), - ), - ); - }), - ], - ).paddingSymmetrical(0.w, 0.h), - SizedBox(height: 16.h), - Consumer(builder: (context, myAppointmentsVM, child) { - return myAppointmentsVM.isPatientMyDoctorsLoading - ? Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Image.network( - "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", - width: 64.w, - height: 64.h, - fit: BoxFit.cover, - ).circle(100).toShimmer2(isShow: true, radius: 50.r), - SizedBox(height: 8.h), - ("Dr. John Smith Smith Smith").toString().toText12(fontWeight: FontWeight.w500, isCenter: true, maxLine: 2).toShimmer2(isShow: true), - ], - ) - : myAppointmentsVM.patientMyDoctorsList.isEmpty - ? Container( - width: SizeConfig.screenWidth, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 12.r, - hasShadow: false, - ), - child: Utils.getNoDataWidget( - context, - noDataText: LocaleKeys.youDontHaveAnyCompletedVisitsYet.tr(context: context), - isSmallWidget: true, - width: 62.w, - height: 62.h, - ), - ).paddingSymmetrical(0.w, 0.h) - : SizedBox( - height: 100.h, - child: ListView.separated( - scrollDirection: Axis.horizontal, - itemCount: myAppointmentsVM.patientMyDoctorsList.length, - shrinkWrap: true, - itemBuilder: (context, index) { - return AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 1000), - child: SlideAnimation( - horizontalOffset: 100.0, - child: FadeInAnimation( - child: SizedBox( - // width: 80.w, - child: Column( - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Image.network( - myAppointmentsVM.patientMyDoctorsList[index].doctorImageURL!, - width: 64.w, - height: 64.h, - fit: BoxFit.cover, - ).circle(100).toShimmer2(isShow: false, radius: 50.r), - SizedBox(height: 8.h), - Expanded( - child: (myAppointmentsVM.patientMyDoctorsList[index].doctorName) - .toString() - .toText12(fontWeight: FontWeight.w500, isCenter: true, maxLine: 2) - .toShimmer2(isShow: false), - ), - ], + ) + : myAppointmentsVM.patientMyDoctorsList.isEmpty + ? Container( + width: SizeConfig.screenWidth, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + hasShadow: false, + ), + child: Utils.getNoDataWidget( + context, + noDataText: LocaleKeys.youDontHaveAnyCompletedVisitsYet.tr(context: context), + isSmallWidget: true, + width: 62.w, + height: 62.h, + ), + ).paddingSymmetrical(0.w, 0.h) + : ConstrainedBox( + constraints: BoxConstraints( + minHeight: 100.h, + maxHeight: isFoldable ? 130.h : (isTablet ? 140.h : 115.h), + ), + child: ListView.separated( + scrollDirection: Axis.horizontal, + itemCount: myAppointmentsVM.patientMyDoctorsList.length, + shrinkWrap: true, + itemBuilder: (context, index) { + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 250), + child: SlideAnimation( + horizontalOffset: 100.0, + child: FadeInAnimation( + child: SizedBox( + // width: 80.w, + child: Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Utils.buildImgWithNetwork( + url: myAppointmentsVM.patientMyDoctorsList[index].doctorImageURL!, + iconColor: AppColors.transparent, + width: 64.h, + height: 64.h, + fit: BoxFit.cover, + ).circle(100).toShimmer2(isShow: false, radius: 50.r), + SizedBox(height: 8.h), + SizedBox( + width: 80.w, + child: (myAppointmentsVM.patientMyDoctorsList[index].doctorName).toString().toText12(isBold: true, isCenter: true, maxLine: 2).toShimmer2(isShow: false), ), - ).onPress(() async { - bookAppointmentsViewModel.setSelectedDoctor(DoctorsListResponseModel( - clinicID: myAppointmentsVM.patientMyDoctorsList[index].clinicID, - projectID: myAppointmentsVM.patientMyDoctorsList[index].projectID, - doctorID: myAppointmentsVM.patientMyDoctorsList[index].doctorID, - )); - LoaderBottomSheet.showLoader(); - await bookAppointmentsViewModel.getDoctorProfile(onSuccess: (dynamic respData) { - LoaderBottomSheet.hideLoader(); - Navigator.of(context).push( - CustomPageRoute( - page: DoctorProfilePage(), - ), - ); - }, onError: (err) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: err), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }); - }), + ], ), - )); - }, - separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 8.h), - ), - ).paddingSymmetrical(0.w, 0); - }), - SizedBox(height: 24.h), - LocaleKeys.others.tr(context: context).toText16(weight: FontWeight.w500, letterSpacing: -0.2), - SizedBox(height: 16.h), - GridView( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 3, - crossAxisSpacing: 10.h, - mainAxisSpacing: 16.w, - mainAxisExtent: 115.h, - ), - physics: NeverScrollableScrollPhysics(), - padding: EdgeInsets.zero, - shrinkWrap: true, - children: [ - MedicalFileCard( - label: LocaleKeys.eyeMeasurements.tr(context: context), - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.eye_result_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() { - myAppointmentsViewModel.setIsEyeMeasurementsAppointmentsLoading(true); - myAppointmentsViewModel.onEyeMeasurementsTabChanged(0); - myAppointmentsViewModel.getPatientEyeMeasurementAppointments(); - Navigator.of(context).push( - CustomPageRoute( - page: EyeMeasurementsAppointmentsPage(), - ), - ); - }), - MedicalFileCard( - label: "Allergy Information".needTranslation, - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.allergy_info_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() { - medicalFileViewModel.getPatientAllergiesList(); - Navigator.of(context).push( - CustomPageRoute( - page: AllergiesListPage(), - ), - ); - }), - MedicalFileCard( - label: "Vaccine Information".needTranslation, - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.vaccine_info_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() { - Navigator.of(context).push( - CustomPageRoute( - page: VaccineListPage(), - ), - ); - }), - ], - ).paddingSymmetrical(0.w, 0.0), - SizedBox(height: 24.h), - ], - ); - case 1: - //Insurance Tab Data - return Column( + ).onPress(() async { + bookAppointmentsViewModel.setSelectedDoctor(DoctorsListResponseModel( + clinicID: myAppointmentsVM.patientMyDoctorsList[index].clinicID, + projectID: myAppointmentsVM.patientMyDoctorsList[index].projectID, + doctorID: myAppointmentsVM.patientMyDoctorsList[index].doctorID, + )); + LoaderBottomSheet.showLoader(); + await bookAppointmentsViewModel.getDoctorProfile(onSuccess: (dynamic respData) { + LoaderBottomSheet.hideLoader(); + Navigator.of(context).push( + CustomPageRoute( + page: DoctorProfilePage(isDoctorAllowedToBook: !(myAppointmentsVM.patientMyDoctorsList[index].isLiveCareClinic ?? false)), + ), + ); + }, onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + }), + ), + )); + }, + separatorBuilder: (BuildContext cxt, int index) => SizedBox(width: 8.h), + ), + ).paddingSymmetrical(0.w, 0); + }), + SizedBox(height: 24.h), + LocaleKeys.others.tr(context: context).toText16(isBold: true, letterSpacing: -0.2), + SizedBox(height: 16.h), + GridView( + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + childAspectRatio: isFoldable ? 1.2 : (isTablet ? 1.4 : 0.98), + crossAxisSpacing: 10.h, + ), + physics: NeverScrollableScrollPhysics(), + padding: EdgeInsets.zero, + shrinkWrap: true, children: [ - Consumer(builder: (context, insuranceVM, child) { - return insuranceVM.isInsuranceLoading - ? LabResultItemView( - onTap: () {}, - labOrder: null, - index: index, - isLoading: true, - ).paddingSymmetrical(0.w, 0.0) - : insuranceVM.patientInsuranceList.isNotEmpty - ? PatientInsuranceCard( - insuranceCardDetailsModel: insuranceVM.patientInsuranceList.first, - isInsuranceExpired: DateTime.now().isAfter( - DateUtil.convertStringToDate(insuranceVM.patientInsuranceList.first.cardValidTo), - ), - ) - : Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 12.r, - hasShadow: false, - ), - child: Utils.getNoDataWidget( - context, - noDataText: LocaleKeys.noInsuranceWithHMG.tr(context: context), - isSmallWidget: true, - width: 62.w, - height: 62.h, - callToActionButton: CustomButton( - icon: AppAssets.update_insurance_card_icon, - iconColor: AppColors.successColor, - iconSize: 15.h, - text: "${LocaleKeys.updateInsurance.tr(context: context)} ${LocaleKeys.updateInsuranceSubtitle.tr(context: context)}", - onPressed: () { - insuranceViewModel.setIsInsuranceUpdateDetailsLoading(true); - insuranceViewModel.getPatientInsuranceDetailsForUpdate( - appState.getAuthenticatedUser()!.patientId.toString(), appState.getAuthenticatedUser()!.patientIdentificationNo.toString()); - showCommonBottomSheetWithoutHeight(context, child: PatientInsuranceCardUpdateCard(), callBackFunc: () {}, title: "", isCloseButtonVisible: false, isFullScreen: false); - }, - backgroundColor: AppColors.bgGreenColor.withOpacity(0.20), - borderColor: AppColors.bgGreenColor.withOpacity(0.0), - textColor: AppColors.bgGreenColor, - fontSize: 14.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - padding: EdgeInsets.fromLTRB(10.w, 0, 10.w, 0), - height: isFoldable ? 50.h : 40.h, - ).paddingOnly(left: 12.w, right: 12.w, bottom: 12.h), - ), - ).paddingSymmetrical(0.w, 0.h); + MedicalFileCard( + label: LocaleKeys.eyeMeasurements.tr(context: context), + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.eye_result_icon, + isLargeText: true, + iconSize: 36.w, + ).onPress(() { + myAppointmentsViewModel.setIsEyeMeasurementsAppointmentsLoading(true); + myAppointmentsViewModel.onEyeMeasurementsTabChanged(0); + myAppointmentsViewModel.getPatientEyeMeasurementAppointments(); + Navigator.of(context).push( + CustomPageRoute( + page: EyeMeasurementsAppointmentsPage(), + ), + ); }), - SizedBox(height: 10.h), - GridView( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 3, - crossAxisSpacing: 10.h, - mainAxisSpacing: 16.w, - mainAxisExtent: 120.h, - ), - physics: NeverScrollableScrollPhysics(), - padding: EdgeInsets.only(top: 12.h), - shrinkWrap: true, - children: [ - MedicalFileCard( - label: LocaleKeys.updateInsuranceInfo.tr(context: context), - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.update_insurance_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() { - Navigator.of(context).push(CustomPageRoute(page: InsuranceHomePage())); - }), - MedicalFileCard( - label: "${LocaleKeys.insurance.tr(context: context)} ${LocaleKeys.approvals.tr(context: context)}", - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.insurance_approval_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() { - Navigator.of(context).push( - CustomPageRoute( - page: InsuranceApprovalsPage(), - ), - ); - }), - MedicalFileCard( - label: LocaleKeys.myInvoicesList.tr(context: context), - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.invoices_list_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() { - Navigator.of(context).push( - CustomPageRoute( - page: MyInvoicesList(), - ), - ); - }), - MedicalFileCard( - label: LocaleKeys.ancillaryOrdersList.tr(context: context), - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.ancillary_orders_list_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() { - getIt.get().setIsAncillaryOrdersNeedReloading(true); - Navigator.of(context).push( - CustomPageRoute( - page: ToDoPage(), - ), - ); - }), - ], - ).paddingSymmetrical(0.w, 0.0), - SizedBox(height: 16.h), - ], - ); - case 2: - // Requests Tab Data - return Column( - children: [ - Consumer(builder: (context, medicalFileVM, child) { - return medicalFileVM.isPatientSickLeaveListLoading - ? PatientSickLeaveCard( - patientSickLeavesResponseModel: PatientSickLeavesResponseModel(), - isLoading: true, - ).paddingSymmetrical(0.w, 0.0) - : medicalFileVM.patientSickLeaveList.isNotEmpty - ? PatientSickLeaveCard( - patientSickLeavesResponseModel: medicalFileVM.patientSickLeaveList.first, - isLoading: false, - ).paddingSymmetrical(0.w, 0.0) - : Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 12.r, - hasShadow: false, - ), - child: Utils.getNoDataWidget( - context, - noDataText: LocaleKeys.youDontHaveAnySickLeavesYet.tr(context: context), - isSmallWidget: true, - width: 62.w, - height: 62.h, - ), - ).paddingSymmetrical(0.w, 0.h); + MedicalFileCard( + label: LocaleKeys.illurgyInfomation.tr(), + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.allergy_info_icon, + isLargeText: true, + iconSize: 36.w, + ).onPress(() { + medicalFileViewModel.getPatientAllergiesList(); + Navigator.of(context).push( + CustomPageRoute( + page: AllergiesListPage(), + ), + ); + }), + MedicalFileCard( + label: LocaleKeys.vaccineInfomation.tr(), + textColor: AppColors.blackColor, + backgroundColor: AppColors.whiteColor, + svgIcon: AppAssets.vaccine_info_icon, + isLargeText: true, + iconSize: 36.w, + ).onPress(() { + Navigator.of(context).push( + CustomPageRoute( + page: VaccineListPage(), + ), + ); }), - SizedBox(height: 16.h), - GridView( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 3, - crossAxisSpacing: 10.h, - mainAxisSpacing: 16.w, - mainAxisExtent: 110.h, - ), - physics: NeverScrollableScrollPhysics(), - padding: EdgeInsets.zero, - shrinkWrap: true, - children: [ - MedicalFileCard( - label: LocaleKeys.monthlyReports.tr(context: context), - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.monthly_reports_icon, - isLargeText: true, - iconSize: 36.h, - ).onPress(() { - monthlyReportViewModel.setHealthSummaryEnabled(cacheService.getBool(key: CacheConst.isMonthlyReportEnabled) ?? false); - Navigator.of(context).push( - CustomPageRoute( - page: MonthlyReport(), - ), - ); - }), - MedicalFileCard( - label: LocaleKeys.medicalReports.tr(context: context), - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.medical_reports_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() { - medicalFileViewModel.setIsPatientMedicalReportsLoading(true); - medicalFileViewModel.getPatientMedicalReportList(); - Navigator.of(context).push( - CustomPageRoute( - page: MedicalReportsPage(), - ), - ); - }), - MedicalFileCard( - label: LocaleKeys.sickLeaveReport.tr(context: context), - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.sick_leave_report_icon, - isLargeText: true, - iconSize: 36.h, - ).onPress(() { - Navigator.of(context).push( - CustomPageRoute( - page: PatientSickleavesListPage(), - ), - ); - }), - ], - ).paddingSymmetrical(0.w, 0.0), - SizedBox(height: 24.h), ], - ); - case 3: - // Trackers Tab Data - return Column( - crossAxisAlignment: CrossAxisAlignment.start, + ).paddingSymmetrical(0.w, 0.0), + SizedBox(height: 24.h), + ], + ); + } + + Widget buildRequestsTab() { + return Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ + (!appState.isArabic() + ? "${LocaleKeys.sick2.tr(context: context)} ${LocaleKeys.sickSubtitle.tr(context: context)}" + : "${LocaleKeys.sickSubtitle.tr(context: context)} ${LocaleKeys.sick2.tr(context: context)}") + .toText16(isBold: true), Row( children: [ - LocaleKeys.healthTrackers.tr(context: context).toText16(weight: FontWeight.w500, color: AppColors.textColor), + LocaleKeys.viewAll.tr(context: context).toText12(color: AppColors.primaryRedColor, isBold: true), + SizedBox(width: 2.h), + Icon(Icons.arrow_forward_ios, color: AppColors.primaryRedColor, size: 10.h), ], ), - SizedBox(height: 16.h), - GridView( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 3, - crossAxisSpacing: 10.h, - mainAxisSpacing: 16.w, - mainAxisExtent: 115.h, - ), - physics: NeverScrollableScrollPhysics(), - padding: EdgeInsets.zero, - shrinkWrap: true, - children: [ - MedicalFileCard( - label: LocaleKeys.bloodSugar.tr(context: context), - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.blood_sugar_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() => context.navigateWithName(AppRoutes.healthTrackerDetailPage, arguments: HealthTrackerTypeEnum.bloodSugar)), - MedicalFileCard( - label: LocaleKeys.bloodPressure.tr(context: context), - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.lab_result_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() => context.navigateWithName(AppRoutes.healthTrackerDetailPage, arguments: HealthTrackerTypeEnum.bloodPressure)), - MedicalFileCard( - label: LocaleKeys.weightTracker.tr(context: context), - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.weight_tracker_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() => context.navigateWithName(AppRoutes.healthTrackerDetailPage, arguments: HealthTrackerTypeEnum.weightTracker)), - ], - ).paddingSymmetrical(0.w, 0.0), - SizedBox(height: 16.h), - Row( - children: [ - LocaleKeys.others.tr(context: context).toText16(weight: FontWeight.w500, color: AppColors.textColor), - ], + ], + ).onPress(() { + Navigator.of(context).push( + CustomPageRoute( + page: PatientSickleavesListPage(), ), - SizedBox(height: 16.h), - GridView( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 3, - crossAxisSpacing: 10.h, - mainAxisSpacing: 16.w, - mainAxisExtent: 115.h, - ), - physics: NeverScrollableScrollPhysics(), - padding: EdgeInsets.zero, - shrinkWrap: true, - children: [ - MedicalFileCard( - label: LocaleKeys.askYourDoctor.tr(context: context), - textColor: AppColors.blackColor, - backgroundColor: AppColors.whiteColor, - svgIcon: AppAssets.ask_doctor_medical_file_icon, - isLargeText: true, - iconSize: 36.w, - ).onPress(() { - getIt.get().initAskDoctorViewModel(); - Navigator.of(context).push( - CustomPageRoute( - page: AskDoctorPage(), - ), - ); - }), - // MedicalFileCard( - // label: LocaleKeys.internetPairing.tr(context: context), - // textColor: AppColors.blackColor, - // backgroundColor: AppColors.whiteColor, - // svgIcon: AppAssets.internet_pairing_icon, - // isLargeText: true, - // iconSize: 36.w, - // ).onPress(() {}), - ], - ).paddingSymmetrical(0.w, 0.0), - SizedBox(height: 24.h), + ); + }), + SizedBox(height: 16.h), + Consumer(builder: (context, medicalFileVM, child) { + return medicalFileVM.isPatientSickLeaveListLoading + ? PatientSickLeaveCard( + patientSickLeavesResponseModel: PatientSickLeavesResponseModel(), + isLoading: true, + ).paddingSymmetrical(0.w, 0.0) + : medicalFileVM.patientSickLeaveList.isNotEmpty + ? PatientSickLeaveCard( + patientSickLeavesResponseModel: medicalFileVM.patientSickLeaveList.first, + isLoading: false, + ).paddingSymmetrical(0.w, 0.0) + : Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + hasShadow: false, + ), + child: Utils.getNoDataWidget( + context, + noDataText: LocaleKeys.youDontHaveAnySickLeavesYet.tr(context: context), + isSmallWidget: true, + width: 62.h, + height: 62.h, + ), + ); + }), + SizedBox(height: 16.h), + Selector listRequest, List listReady})>( + selector: (context, vm) => (isLoading: vm.isPatientMedicalReportsListLoading, listRequest: vm.patientMedicalReportRequestedList, listReady: vm.patientMedicalReportReadyList), + builder: (context, data, _) { + return MedicalReportCard(isLoading: data.isLoading, listRequest: data.listRequest, listReady: data.listReady); + }, + ), + SizedBox(height: 24.h), + ], + ); + } + + Widget buildHealthToolsTab() { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + GridView( + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + crossAxisSpacing: 10.h, + mainAxisSpacing: 16.w, + childAspectRatio: isFoldable ? 1.2 : (isTablet ? 1.4 : 0.98), + ), + physics: NeverScrollableScrollPhysics(), + padding: EdgeInsets.only(top: 12.h), + shrinkWrap: true, + children: [ + // Health Trackers + HealthToolsCard( + label: LocaleKeys.healthTrackers.tr(context: context), + textColor: AppColors.blackColor, + svgIcon: AppAssets.general_health, + iconColor: null, + iconSize: 24.w, + ).onPress(() { + if (getIt.get().isAuthenticated) { + context.navigateWithName(AppRoutes.healthTrackersPage); + } + }), + // Daily Water Monitor + HealthToolsCard( + label: LocaleKeys.dailyWaterMonitor.tr(context: context), + textColor: AppColors.blackColor, + svgIcon: AppAssets.daily_water_monitor_icon, + iconColor: AppColors.infoColor, + iconSize: 24.w, + ).onPress(() async { + if (getIt.get().isAuthenticated) { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingYourWaterIntakeDetails.tr()); + final waterMonitorVM = getIt.get(); + await waterMonitorVM.fetchUserDetailsForMonitoring( + onSuccess: (userDetail) { + LoaderBottomSheet.hideLoader(); + if (userDetail == null) { + waterMonitorVM.populateFromAuthenticatedUser(); + context.navigateWithName(AppRoutes.waterMonitorSettingsPage); + } else { + context.navigateWithName(AppRoutes.waterConsumptionPage); + } + }, + onError: (error) { + LoaderBottomSheet.hideLoader(); + context.navigateWithName(AppRoutes.waterConsumptionPage); + }, + ); + } + }), + // Health Calculators + HealthToolsCard( + label: LocaleKeys.healthCalculatorsServices.tr(context: context), + textColor: AppColors.blackColor, + svgIcon: AppAssets.health_calculators_services_icon, + iconColor: AppColors.successColor, + iconSize: 24.w, + ).onPress(() { + context.navigateWithName(AppRoutes.healthCalculatorsPage); + }), + // Health Converters + HealthToolsCard( + label: LocaleKeys.healthConvertersServices.tr(context: context), + textColor: AppColors.blackColor, + svgIcon: AppAssets.health_converters_icon, + iconColor: AppColors.primaryRedColor, + iconSize: 24.w, + ).onPress(() { + context.navigateWithName(AppRoutes.healthConvertersPage); + }), + // Smart Watches + HealthToolsCard( + label: LocaleKeys.smartWatchesServices.tr(context: context), + textColor: AppColors.blackColor, + svgIcon: AppAssets.smartwatch_icon, + iconColor: AppColors.warningColorYellow, + iconSize: 24.w, + ).onPress(() { + if (getIt.get().isAuthenticated) { + context.navigateWithName(AppRoutes.smartWatches); + } + }), ], - ); + ).paddingSymmetrical(0.w, 0.0), + SizedBox(height: 24.h), + ], + ); + } + + Widget getSelectedTabData(int index) { + switch (index) { + case 0: + //General Tab Data + return buildMedicalServicesTab(); + case 1: + //Insurance Tab Data + return buildInsuranceTab(index); + case 2: + // Requests Tab Data + return buildRequestsTab(); + case 3: + // Health Tools Tab Data + return buildHealthToolsTab(); default: return Container(); } @@ -1463,22 +1495,22 @@ class _MedicalFilePageState extends State { List _buildVitalSignPages({ required VitalSignResModel vitalSign, required VoidCallback onTap, - required GlobalKey measureKey, required int currentPageIndex, }) { return [ // Page 1: BMI + Height Padding( - padding: EdgeInsets.only(left: 24.w), + padding: EdgeInsets.symmetric(horizontal: 24.w), child: Row( children: [ Expanded( child: _buildVitalSignCard( icon: AppAssets.bmiVital, label: LocaleKeys.bmi.tr(context: context), - value: vitalSign.bodyMassIndex?.toString() ?? '--', + value: _formatValue(vitalSign.bodyMassIndex), unit: '', status: vitalSign.bodyMassIndex != null ? _getBMIStatus(vitalSign.bodyMassIndex) : null, + // status: "Overweight", onTap: onTap, ), ), @@ -1487,8 +1519,8 @@ class _MedicalFilePageState extends State { child: _buildVitalSignCard( icon: AppAssets.heightVital, label: LocaleKeys.height.tr(context: context), - value: vitalSign.heightCm?.toString() ?? '--', - unit: 'cm', + value: _formatValue(vitalSign.heightCm), + unit: LocaleKeys.cm.tr(), status: null, onTap: onTap, ), @@ -1498,16 +1530,16 @@ class _MedicalFilePageState extends State { ), // Page 2: Weight + Blood Pressure Padding( - padding: EdgeInsets.symmetric(horizontal: 12.w), + padding: EdgeInsets.symmetric(horizontal: 24.w), child: Row( children: [ Expanded( child: _buildVitalSignCard( icon: AppAssets.weightVital, label: LocaleKeys.weight.tr(context: context), - value: vitalSign.weightKg?.toString() ?? '--', - unit: 'kg', - status: vitalSign.weightKg != null ? "Normal" : null, + value: _formatValue(vitalSign.weightKg), + unit: LocaleKeys.kg.tr(), + status: vitalSign.weightKg != null ? _getWeightStatus(vitalSign.bodyMassIndex) : null, onTap: onTap, ), ), @@ -1516,12 +1548,16 @@ class _MedicalFilePageState extends State { child: _buildVitalSignCard( icon: AppAssets.bloodPressure, label: LocaleKeys.bloodPressure.tr(context: context), - value: vitalSign.bloodPressureLower != null && vitalSign.bloodPressureHigher != null ? "${vitalSign.bloodPressureHigher}/${vitalSign.bloodPressureLower}" : '--', + value: (vitalSign.bloodPressureLower != null && vitalSign.bloodPressureHigher != null && vitalSign.bloodPressureLower != 0 && vitalSign.bloodPressureHigher != 0) + ? "${vitalSign.bloodPressureHigher}/${vitalSign.bloodPressureLower}" + : '--', unit: '', - status: _getBloodPressureStatus( - systolic: vitalSign.bloodPressureHigher, - diastolic: vitalSign.bloodPressureLower, - ), + status: (vitalSign.bloodPressureLower != null && vitalSign.bloodPressureHigher != null && vitalSign.bloodPressureLower != 0 && vitalSign.bloodPressureHigher != 0) + ? _getBloodPressureStatus( + systolic: vitalSign.bloodPressureHigher, + diastolic: vitalSign.bloodPressureLower, + ) + : null, onTap: onTap, ), ), @@ -1530,20 +1566,36 @@ class _MedicalFilePageState extends State { ]; } - String _getBMIStatus(dynamic bmi) { + VitalSignStatus? _getBMIStatus(dynamic bmi) { return VitalSignUiModel.bmiStatus(bmi); } - String? _getBloodPressureStatus({dynamic systolic, dynamic diastolic}) { + VitalSignStatus? _getWeightStatus(dynamic bmi) { + return VitalSignUiModel.weightStatus(bmi); + } + + VitalSignStatus? _getBloodPressureStatus({dynamic systolic, dynamic diastolic}) { return VitalSignUiModel.bloodPressureStatus(systolic: systolic, diastolic: diastolic); } + // Helper function to format vital sign values, showing '--' instead of 0 or null + String _formatValue(dynamic value) { + if (value == null) return '--'; + if (value is num && value == 0) return '--'; + if (value is String) { + if (value.trim().isEmpty) return '--'; + final parsed = double.tryParse(value); + if (parsed == null || parsed == 0) return '--'; + } + return value.toString(); + } + Widget _buildVitalSignCard({ required String icon, required String label, required String value, required String unit, - required String? status, + required VitalSignStatus? status, required VoidCallback onTap, }) { final VitalSignUiModel scheme = VitalSignUiModel.scheme(status: status, label: label); @@ -1571,7 +1623,7 @@ class _MedicalFilePageState extends State { ), child: Utils.buildSvgWithAssets( icon: icon, - width: 22.w, + width: 22.h, height: 22.h, iconColor: scheme.iconFg, fit: BoxFit.contain, @@ -1587,7 +1639,8 @@ class _MedicalFilePageState extends State { Utils.buildSvgWithAssets(icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward, width: 18.w, height: 18.h), ], ), - SizedBox(height: 14.h), + Spacer(), + // SizedBox(height: 14.h), Container( padding: EdgeInsets.symmetric(horizontal: 6.w, vertical: 6.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration( @@ -1604,17 +1657,13 @@ class _MedicalFilePageState extends State { mainAxisSize: MainAxisSize.min, children: [ Flexible( - child: value.toText17( - isBold: true, - color: AppColors.textColor, - isEnglishOnly: true - ), + child: value.toText17(isBold: true, color: AppColors.textColor, isEnglishOnly: true), ), - if (unit.isNotEmpty) ...[ + if (unit.isNotEmpty && value != '--' && value != '0') ...[ SizedBox(width: 3.w), unit.toText12( color: AppColors.textColor, - fontWeight: FontWeight.w500, + isBold: true, ), ], ], @@ -1623,7 +1672,7 @@ class _MedicalFilePageState extends State { if (status != null) ...[ SizedBox(width: 4.w), AppCustomChipWidget( - labelText: status, + labelText: VitalSignUiModel.statusToString(status), backgroundColor: scheme.chipBg, textColor: scheme.chipFg, ), diff --git a/lib/presentation/medical_file/patient_sickleaves_list_page.dart b/lib/presentation/medical_file/patient_sickleaves_list_page.dart index 93cf17ff..431a8faf 100644 --- a/lib/presentation/medical_file/patient_sickleaves_list_page.dart +++ b/lib/presentation/medical_file/patient_sickleaves_list_page.dart @@ -24,6 +24,8 @@ import 'package:provider/provider.dart'; import 'widgets/patient_sick_leave_card.dart'; +import 'dart:ui' as ui; + class PatientSickleavesListPage extends StatefulWidget { const PatientSickleavesListPage({super.key}); @@ -51,54 +53,56 @@ class _PatientSickleavesListPageState extends State { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( - title: "${LocaleKeys.sick.tr(context: context)} ${LocaleKeys.sickSubtitle.tr(context: context)}", + title: (!appState.isArabic() + ? "${LocaleKeys.sick2.tr(context: context)} ${LocaleKeys.sickSubtitle.tr(context: context)}" + : "${LocaleKeys.sickSubtitle.tr(context: context)} ${LocaleKeys.sick2.tr(context: context)}"), child: SingleChildScrollView( child: Consumer(builder: (context, model, child) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - SizedBox(height: 16.h), + // SizedBox(height: 16.h), // Clinic & Hospital Sort - Row( - children: [ - CustomButton( - text: LocaleKeys.byClinic.tr(context: context), - onPressed: () { - model.setIsSickLeavesSortByClinic(true); - }, - backgroundColor: model.isSickLeavesSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, - borderColor: model.isSickLeavesSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), - textColor: model.isSickLeavesSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, - fontSize: 12, - fontWeight: FontWeight.w500, - borderRadius: 10, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - ), - SizedBox(width: 8.h), - CustomButton( - text: LocaleKeys.byHospital.tr(context: context), - onPressed: () { - model.setIsSickLeavesSortByClinic(false); - }, - backgroundColor: model.isSickLeavesSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, - borderColor: model.isSickLeavesSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, - textColor: model.isSickLeavesSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, - fontSize: 12, - fontWeight: FontWeight.w500, - borderRadius: 10, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - ), - ], - ).paddingSymmetrical(24.h, 0.h), - SizedBox(height: 20.h), + // Row( + // children: [ + // CustomButton( + // text: LocaleKeys.byClinic.tr(context: context), + // onPressed: () { + // model.setIsSickLeavesSortByClinic(true); + // }, + // backgroundColor: model.isSickLeavesSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, + // borderColor: model.isSickLeavesSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), + // textColor: model.isSickLeavesSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, + // fontSize: 12, + // isBold: true, + // borderRadius: 10, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 40.h, + // ), + // SizedBox(width: 8.h), + // CustomButton( + // text: LocaleKeys.byHospital.tr(context: context), + // onPressed: () { + // model.setIsSickLeavesSortByClinic(false); + // }, + // backgroundColor: model.isSickLeavesSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, + // borderColor: model.isSickLeavesSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, + // textColor: model.isSickLeavesSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, + // fontSize: 12, + // isBold: true, + // borderRadius: 10, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 40.h, + // ), + // ], + // ).paddingSymmetrical(24.h, 0.h), + // SizedBox(height: 20.h), // Expandable list ListView.builder( itemCount: model.isPatientSickLeaveListLoading ? 4 : model.patientSickLeaveList.isNotEmpty - ? model.patientSickLeavesViewList.length + ? model.patientSickLeaveList.length : 1, physics: NeverScrollableScrollPhysics(), shrinkWrap: true, @@ -122,155 +126,335 @@ class _PatientSickleavesListPageState extends State { curve: Curves.easeInOut, margin: EdgeInsets.symmetric(vertical: 8.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), - child: InkWell( - onTap: () { - setState(() { - expandedIndex = isExpanded ? null : index; - }); - }, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Padding( - padding: EdgeInsets.all(16.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, + child: Container( + padding: EdgeInsets.symmetric(horizontal: 16.h, vertical: 16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AppCustomChipWidget( + labelText: + "${getIt.get().isArabic() ? model.patientSickLeaveList[index].isInOutPatientDescriptionN : model.patientSickLeaveList[index].isInOutPatientDescription}", + backgroundColor: AppColors.warningColorYellow.withOpacity(0.1), + textColor: AppColors.warningColorYellow, + ), + SizedBox(height: 16.h), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Utils.buildImgWithNetwork( + url: model.patientSickLeaveList[index].doctorImageURL!, + iconColor: AppColors.transparent, + width: 24.h, + height: 24.h, + fit: BoxFit.fill, + ).circle(100), + SizedBox(width: 8.h), + Expanded(child: model.patientSickLeaveList[index].doctorName!.toText14(isBold: true)), + ], + ), + SizedBox(height: 8.h), + Wrap( + direction: Axis.horizontal, + spacing: 6.h, + runSpacing: 6.h, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - CustomButton( - text: "${model.patientSickLeavesViewList[index].sickLeavesList!.length} ${LocaleKeys.sickSubtitle.tr(context: context)} Available", - onPressed: () {}, - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, - textColor: AppColors.blackColor, - fontSize: 10, - fontWeight: FontWeight.w500, - borderRadius: 8, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 30.h, - ), - Icon(isExpanded ? Icons.expand_less : Icons.expand_more), - ], + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(model.patientSickLeaveList[index].appointmentDate), false), + isEnglishOnly: true, + ), + ), + AppCustomChipWidget( + labelText: model.isSickLeavesSortByClinic ? model.patientSickLeaveList[index].projectName! : model.patientSickLeaveList[index].clinicName!, + ), + AppCustomChipWidget( + richText: Row( + mainAxisSize: MainAxisSize.min, + children: [ + "${model.patientSickLeaveList[index].sickLeaveDays} ".toText10(isBold: true), + LocaleKeys.days.tr(context: context).toText10(isBold: true) + ], + ), + // labelText: "${model.patientSickLeaveList[index].sickLeaveDays} ${LocaleKeys.days.tr(context: context)}", + isEnglishOnly: true, ), - SizedBox(height: 8.h), - model.patientSickLeavesViewList[index].filterName!.toText16(isBold: true) ], ), - ), - AnimatedSwitcher( - duration: Duration(milliseconds: 500), - switchInCurve: Curves.easeIn, - switchOutCurve: Curves.easeOut, - transitionBuilder: (Widget child, Animation animation) { - return FadeTransition( - opacity: animation, - child: SizeTransition( - sizeFactor: animation, - axisAlignment: 0.0, - child: child, + SizedBox(height: 12.h), + Row( + children: [ + Expanded( + flex: 6, + child: CustomButton( + text: LocaleKeys.downloadReport.tr(context: context), + onPressed: () async { + LoaderBottomSheet.showLoader(); + await medicalFileViewModel.getPatientSickLeavePDF(model.patientSickLeaveList[index], appState.getAuthenticatedUser()!).then((val) async { + LoaderBottomSheet.hideLoader(); + if (medicalFileViewModel.patientSickLeavePDFBase64.isNotEmpty) { + String path = await Utils.createFileFromString(medicalFileViewModel.patientSickLeavePDFBase64, "pdf"); + try { + OpenFilex.open(path); + } catch (ex) { + debugPrint("Error opening file: $ex"); + } + } + }); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: 14, + isBold: true, + borderRadius: 12, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 40.h, + icon: AppAssets.download, + iconColor: AppColors.primaryRedColor, + iconSize: 14.h, + ), ), - ); - }, - child: isExpanded - ? Container( - key: ValueKey(index), - padding: EdgeInsets.symmetric(horizontal: 16.h, vertical: 8.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ...model.patientSickLeavesViewList[index].sickLeavesList!.map((sickLeave) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Image.network( - sickLeave.doctorImageURL!, - width: 24.h, - height: 24.h, - fit: BoxFit.fill, - ).circle(100), - SizedBox(width: 8.h), - Expanded(child: sickLeave.doctorName!.toText14(weight: FontWeight.w500)), - ], - ), - SizedBox(height: 8.h), - Wrap( - direction: Axis.horizontal, - spacing: 6.h, - runSpacing: 6.h, - children: [ - AppCustomChipWidget( - labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(sickLeave.appointmentDate), false), - ), - AppCustomChipWidget( - labelText: model.isSickLeavesSortByClinic ? sickLeave.projectName! : sickLeave.clinicName!, - ), - AppCustomChipWidget( - labelText: "${sickLeave.sickLeaveDays} Days", - ), - ], - ), - SizedBox(height: 12.h), - Row( - children: [ - Expanded( - flex: 6, - child: CustomButton( - text: LocaleKeys.downloadReport.tr(context: context), - onPressed: () async { - LoaderBottomSheet.showLoader(); - await medicalFileViewModel.getPatientSickLeavePDF(sickLeave, appState.getAuthenticatedUser()!).then((val) async { - LoaderBottomSheet.hideLoader(); - if (medicalFileViewModel.patientSickLeavePDFBase64.isNotEmpty) { - String path = await Utils.createFileFromString(medicalFileViewModel.patientSickLeavePDFBase64, "pdf"); - try { - OpenFilex.open(path); - } catch (ex) { - debugPrint("Error opening file: $ex"); - } - } - }); - }, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 14, - fontWeight: FontWeight.w500, - borderRadius: 12, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - icon: AppAssets.download, - iconColor: AppColors.primaryRedColor, - iconSize: 14.h, - ), - ), - ], - ), - SizedBox(height: 12.h), - Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), - SizedBox(height: 12.h), - ], - ); - }), - ], - ), - ) - : SizedBox.shrink(), - ), - ], + ], + ), + // SizedBox(height: 12.h), + // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), + // SizedBox(height: 12.h), + ], + ), + // Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // ...model.patientSickLeaveList[index].sickLeavesList!.map((sickLeave) { + // return Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Row( + // mainAxisSize: MainAxisSize.min, + // children: [ + // Image.network( + // sickLeave.doctorImageURL!, + // width: 24.h, + // height: 24.h, + // fit: BoxFit.fill, + // ).circle(100), + // SizedBox(width: 8.h), + // Expanded(child: sickLeave.doctorName!.toText14(isBold: true)), + // ], + // ), + // SizedBox(height: 8.h), + // Wrap( + // direction: Axis.horizontal, + // spacing: 6.h, + // runSpacing: 6.h, + // children: [ + // AppCustomChipWidget( + // labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(sickLeave.appointmentDate), false), + // ), + // AppCustomChipWidget( + // labelText: model.isSickLeavesSortByClinic ? sickLeave.projectName! : sickLeave.clinicName!, + // ), + // AppCustomChipWidget( + // labelText: "${sickLeave.sickLeaveDays} Days", + // ), + // ], + // ), + // SizedBox(height: 12.h), + // Row( + // children: [ + // Expanded( + // flex: 6, + // child: CustomButton( + // text: LocaleKeys.downloadReport.tr(context: context), + // onPressed: () async { + // LoaderBottomSheet.showLoader(); + // await medicalFileViewModel.getPatientSickLeavePDF(sickLeave, appState.getAuthenticatedUser()!).then((val) async { + // LoaderBottomSheet.hideLoader(); + // if (medicalFileViewModel.patientSickLeavePDFBase64.isNotEmpty) { + // String path = await Utils.createFileFromString(medicalFileViewModel.patientSickLeavePDFBase64, "pdf"); + // try { + // OpenFilex.open(path); + // } catch (ex) { + // debugPrint("Error opening file: $ex"); + // } + // } + // }); + // }, + // backgroundColor: AppColors.secondaryLightRedColor, + // borderColor: AppColors.secondaryLightRedColor, + // textColor: AppColors.primaryRedColor, + // fontSize: 14, + // isBold: true, + // borderRadius: 12, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 40.h, + // icon: AppAssets.download, + // iconColor: AppColors.primaryRedColor, + // iconSize: 14.h, + // ), + // ), + // ], + // ), + // SizedBox(height: 12.h), + // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), + // SizedBox(height: 12.h), + // ], + // ); + // }), + // ], + // ), + ) + // InkWell( + // onTap: () { + // setState(() { + // expandedIndex = isExpanded ? null : index; + // }); + // }, + // child: + // Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Padding( + // padding: EdgeInsets.all(16.h), + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // CustomButton( + // text: "${model.patientSickLeavesViewList[index].sickLeavesList!.length} ${LocaleKeys.sickSubtitle.tr(context: context)} Available", + // onPressed: () {}, + // backgroundColor: AppColors.greyColor, + // borderColor: AppColors.greyColor, + // textColor: AppColors.blackColor, + // fontSize: 10, + // isBold: true, + // borderRadius: 8, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 30.h, + // ), + // Icon(isExpanded ? Icons.expand_less : Icons.expand_more), + // ], + // ), + // SizedBox(height: 8.h), + // model.patientSickLeavesViewList[index].filterName!.toText16(isBold: true) + // ], + // ), + // ), + // // AnimatedSwitcher( + // // duration: Duration(milliseconds: 500), + // // switchInCurve: Curves.easeIn, + // // switchOutCurve: Curves.easeOut, + // // transitionBuilder: (Widget child, Animation animation) { + // // return FadeTransition( + // // opacity: animation, + // // child: SizeTransition( + // // sizeFactor: animation, + // // axisAlignment: 0.0, + // // child: child, + // // ), + // // ); + // // }, + // // child: isExpanded + // // ? Container( + // // key: ValueKey(index), + // // padding: EdgeInsets.symmetric(horizontal: 16.h, vertical: 8.h), + // // child: Column( + // // crossAxisAlignment: CrossAxisAlignment.start, + // // children: [ + // // ...model.patientSickLeavesViewList[index].sickLeavesList!.map((sickLeave) { + // // return Column( + // // crossAxisAlignment: CrossAxisAlignment.start, + // // children: [ + // // Row( + // // mainAxisSize: MainAxisSize.min, + // // children: [ + // // Image.network( + // // sickLeave.doctorImageURL!, + // // width: 24.h, + // // height: 24.h, + // // fit: BoxFit.fill, + // // ).circle(100), + // // SizedBox(width: 8.h), + // // Expanded(child: sickLeave.doctorName!.toText14(isBold: true)), + // // ], + // // ), + // // SizedBox(height: 8.h), + // // Wrap( + // // direction: Axis.horizontal, + // // spacing: 6.h, + // // runSpacing: 6.h, + // // children: [ + // // AppCustomChipWidget( + // // labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(sickLeave.appointmentDate), false), + // // ), + // // AppCustomChipWidget( + // // labelText: model.isSickLeavesSortByClinic ? sickLeave.projectName! : sickLeave.clinicName!, + // // ), + // // AppCustomChipWidget( + // // labelText: "${sickLeave.sickLeaveDays} Days", + // // ), + // // ], + // // ), + // // SizedBox(height: 12.h), + // // Row( + // // children: [ + // // Expanded( + // // flex: 6, + // // child: CustomButton( + // // text: LocaleKeys.downloadReport.tr(context: context), + // // onPressed: () async { + // // LoaderBottomSheet.showLoader(); + // // await medicalFileViewModel.getPatientSickLeavePDF(sickLeave, appState.getAuthenticatedUser()!).then((val) async { + // // LoaderBottomSheet.hideLoader(); + // // if (medicalFileViewModel.patientSickLeavePDFBase64.isNotEmpty) { + // // String path = await Utils.createFileFromString(medicalFileViewModel.patientSickLeavePDFBase64, "pdf"); + // // try { + // // OpenFilex.open(path); + // // } catch (ex) { + // // debugPrint("Error opening file: $ex"); + // // } + // // } + // // }); + // // }, + // // backgroundColor: AppColors.secondaryLightRedColor, + // // borderColor: AppColors.secondaryLightRedColor, + // // textColor: AppColors.primaryRedColor, + // // fontSize: 14, + // // isBold: true, + // // borderRadius: 12, + // // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // // height: 40.h, + // // icon: AppAssets.download, + // // iconColor: AppColors.primaryRedColor, + // // iconSize: 14.h, + // // ), + // // ), + // // ], + // // ), + // // SizedBox(height: 12.h), + // // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), + // // SizedBox(height: 12.h), + // // ], + // // ); + // // }), + // // ], + // // ), + // // ) + // // : SizedBox.shrink(), + // // ), + // ], + // ), + // ), ), - ), - ), ), ), ) : Utils.getNoDataWidget(context, noDataText: LocaleKeys.youDontHaveAnySickLeavesYet.tr(context: context)); }, ).paddingSymmetrical(24.h, 0.h), + SizedBox(height: 24.h), ], ); }), diff --git a/lib/presentation/medical_file/vaccine_list_page.dart b/lib/presentation/medical_file/vaccine_list_page.dart index bf02cb74..a58802cc 100644 --- a/lib/presentation/medical_file/vaccine_list_page.dart +++ b/lib/presentation/medical_file/vaccine_list_page.dart @@ -29,11 +29,19 @@ class _VaccineListPageState extends State { @override void initState() { + super.initState(); scheduleMicrotask(() { + medicalFileViewModel = Provider.of(context, listen: false); medicalFileViewModel.setIsPatientVaccineListLoading(true); - medicalFileViewModel.getPatientVaccinesList(); + medicalFileViewModel.getPatientVaccinesList( + onSuccess: (data) { + // print("✅ Vaccine data received: ${medicalFileViewModel.patientVaccineList.length} items"); + }, + onError: (error) { + //print("❌ Vaccine error: $error"); + }, + ); }); - super.initState(); } @override @@ -42,7 +50,7 @@ class _VaccineListPageState extends State { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( - title: LocaleKeys.vaccineInfo.tr(context: context), + title: LocaleKeys.vaccineInfomation.tr(context: context), child: SingleChildScrollView( child: Consumer(builder: (context, medicalFileVM, child) { return Column( @@ -75,8 +83,9 @@ class _VaccineListPageState extends State { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.network( - "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + Utils.buildImgWithNetwork( + url: "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + iconColor: AppColors.transparent, width: 63.h, height: 63.h, fit: BoxFit.cover, @@ -133,11 +142,18 @@ class _VaccineListPageState extends State { // height: 63.h, // fit: BoxFit.fill, // ).circle(100).toShimmer2(isShow: false), - SizedBox(width: 16.h), + + SizedBox(width: 8.h), Expanded( child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + AppCustomChipWidget( + backgroundColor: AppColors.lightGreenButtonColor, + textColor: AppColors.textGreenColor, + padding: EdgeInsets.all(0), + labelText: medicalFileVM.patientVaccineList[index].vaccineName).toShimmer2(isShow: false, width: 16.h, ), + SizedBox(height:10.h), (medicalFileVM.patientVaccineList[index].doctorName).toString().toText16(isBold: true).toShimmer2(isShow: false), SizedBox(height: 8.h), Wrap( @@ -148,7 +164,7 @@ class _VaccineListPageState extends State { AppCustomChipWidget( icon: AppAssets.doctor_calendar_icon, labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(medicalFileVM.patientVaccineList[index].vaccinationDate), false)), - AppCustomChipWidget(labelText: medicalFileVM.patientVaccineList[index].vaccineName).toShimmer2(isShow: false, width: 16.h), + AppCustomChipWidget(labelText: medicalFileVM.patientVaccineList[index].clinicName).toShimmer2(isShow: false, width: 16.h), AppCustomChipWidget(labelText: medicalFileVM.patientVaccineList[index].projectName).toShimmer2(isShow: false, width: 16.h), ], diff --git a/lib/presentation/medical_file/widgets/health_tools_card.dart b/lib/presentation/medical_file/widgets/health_tools_card.dart new file mode 100644 index 00000000..bd2c6f75 --- /dev/null +++ b/lib/presentation/medical_file/widgets/health_tools_card.dart @@ -0,0 +1,69 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; + +class HealthToolsCard extends StatelessWidget { + final String label; + final Color textColor; + final String svgIcon; + final double? iconSize; + final Color? iconColor; + + const HealthToolsCard({ + super.key, + required this.label, + required this.textColor, + required this.svgIcon, + this.iconSize, + this.iconColor, + }); + + @override + Widget build(BuildContext context) { + final iconS = iconSize ?? 24.w; + + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.r, + hasShadow: false, + ), + padding: EdgeInsets.all(12.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + // Icon container with white background and border + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + side: BorderSide( + color: AppColors.borderOnlyColor.withValues(alpha: 0.1), + width: 1, + ), + ), + height: 48.h, + width: 48.h, + child: Center( + child: Utils.buildSvgWithAssets( + icon: svgIcon, + width: iconS, + height: iconS, + fit: BoxFit.contain, + applyThemeColor: false, + iconColor: iconColor, + ), + ), + ), + SizedBox(height: 6.h), + label.toText13(color: textColor, isBold: true, maxLine: 2), + ], + ), + ); + } +} + diff --git a/lib/presentation/medical_file/widgets/health_tracker_menu_card.dart b/lib/presentation/medical_file/widgets/health_tracker_menu_card.dart new file mode 100644 index 00000000..6284a827 --- /dev/null +++ b/lib/presentation/medical_file/widgets/health_tracker_menu_card.dart @@ -0,0 +1,86 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; + +class HealthTrackerMenuCard extends StatelessWidget { + final String label; + final Color textColor; + final Color backgroundColor; + final String svgIcon; + final double? iconSize; + final Color? iconColor; + final Color iconBgColor; + + const HealthTrackerMenuCard({ + super.key, + required this.label, + required this.textColor, + required this.backgroundColor, + required this.svgIcon, + required this.iconBgColor, + this.iconSize, + this.iconColor, + }); + + @override + Widget build(BuildContext context) { + final iconS = iconSize ?? 22.w; + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: backgroundColor, + borderRadius: 20.r, + hasShadow: false + ), + padding: EdgeInsets.all(16.w), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: iconBgColor, + borderRadius: 10.r + ), + height: 40.w, + width: 40.w, + child: Utils.buildSvgWithAssets( + icon: svgIcon, + fit: BoxFit.none, + height: iconS, + width: iconS, + applyThemeColor: false, + iconColor: iconColor, + ), + ), + SizedBox(width: 12.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + label.toText14(color: textColor, isBold: true), + ], + ), + ), + SizedBox(width: 12.w), + Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.arrowRight, + width: 24.w, + height: 24.h, + fit: BoxFit.contain, + iconColor: AppColors.textColor, + ), + ), + ], + ), + ); + } +} + diff --git a/lib/presentation/medical_file/widgets/lab_rad_card.dart b/lib/presentation/medical_file/widgets/lab_rad_card.dart index b107403d..0fcdb24e 100644 --- a/lib/presentation/medical_file/widgets/lab_rad_card.dart +++ b/lib/presentation/medical_file/widgets/lab_rad_card.dart @@ -30,22 +30,28 @@ class LabRadCard extends StatelessWidget { decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 18.r, hasShadow: false), child: Row( mainAxisAlignment: MainAxisAlignment.start, + mainAxisSize: MainAxisSize.max, children: [ - Utils.buildSvgWithAssets( - icon: icon, - width: 40.w, - height: 40.h, - fit: BoxFit.cover, - applyThemeColor: false - ).toShimmer2(isShow: false, radius: 12.r), - SizedBox(width: 8.w), - Flexible( - child: labelText.toText12(isBold: true, maxLine: 2), + Expanded( + child: Row( + children: [ + Utils.buildSvgWithAssets( + icon: icon, + width: 40.w, + height: 40.h, + fit: BoxFit.cover, + applyThemeColor: false + ).toShimmer2(isShow: false, radius: 12.r), + SizedBox(width: 8.w), + Flexible(child: labelText.toText12(isBold: true, maxLine: 2)), + ], + ), ), + SizedBox(width: 12.w), Transform.flip( flipX: appState.isArabic(), - child: Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_icon_small, width: 10.w, height: 10.h, fit: BoxFit.contain, iconColor: AppColors.textColor), + child: Utils.buildSvgWithAssets(icon: AppAssets.forward_arrow_icon_small, width: 12.h, height: 12.h, fit: BoxFit.contain, iconColor: AppColors.textColor), ), ], ).paddingAll(12.w), diff --git a/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart b/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart index 73dd1652..5ddf25ea 100644 --- a/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart +++ b/lib/presentation/medical_file/widgets/medical_file_appointment_card.dart @@ -1,3 +1,6 @@ +import 'dart:async'; +import 'dart:ui' as ui; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -13,14 +16,14 @@ import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_vie import 'package:hmg_patient_app_new/features/my_appointments/utils/appointment_type.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/appointments/appointment_details_page.dart'; +import 'package:hmg_patient_app_new/presentation/appointments/appointment_payment_page.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; -import 'dart:ui' as ui; - -class MedicalFileAppointmentCard extends StatelessWidget { +class MedicalFileAppointmentCard extends StatefulWidget { final PatientAppointmentHistoryResponseModel patientAppointmentHistoryResponseModel; final MyAppointmentsViewModel myAppointmentsViewModel; final Function onRescheduleTap; @@ -34,6 +37,97 @@ class MedicalFileAppointmentCard extends StatelessWidget { required this.onAskDoctorTap, }); + @override + State createState() => _MedicalFileAppointmentCardState(); +} + +class _MedicalFileAppointmentCardState extends State { + Timer? _countdownTimer; + Duration? _timeRemaining; + Function(void Function())? _modalSetState; + + @override + void initState() { + super.initState(); + // Start countdown timer if appointment requires payment + if (widget.patientAppointmentHistoryResponseModel.nextAction == 15) { + _startCountdownTimer(); + } + } + + @override + void dispose() { + _countdownTimer?.cancel(); + super.dispose(); + } + + void _startCountdownTimer() { + final appointmentDate = DateUtil.convertStringToDate(widget.patientAppointmentHistoryResponseModel.appointmentDate!); + final expiryDate = appointmentDate.subtract(const Duration(hours: 4)); + + setState(() { + _timeRemaining = expiryDate.difference(DateTime.now()); + }); + + _countdownTimer?.cancel(); + _countdownTimer = Timer.periodic(const Duration(seconds: 1), (timer) { + final newTimeRemaining = expiryDate.difference(DateTime.now()); + + if (newTimeRemaining.isNegative) { + timer.cancel(); + setState(() { + _timeRemaining = Duration.zero; + }); + _modalSetState?.call(() { + _timeRemaining = Duration.zero; + }); + } else { + setState(() { + _timeRemaining = newTimeRemaining; + }); + _modalSetState?.call(() { + _timeRemaining = newTimeRemaining; + }); + } + }); + } + + // Helper method to build each time unit (number + label) + Widget _buildTimeUnit(String value, String label) { + return Column( + mainAxisSize: MainAxisSize.min, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Container( + alignment: Alignment.center, + child: value.toText32( + isBold: true, + color: AppColors.blackColor, + isEnglishOnly: true, + ), + ), + SizedBox(height: 4.h), + Container( + alignment: Alignment.center, + child: label.toText12( + color: AppColors.greyTextColor, + ), + ), + ], + ); + } + + // Helper method to build time separator (:) + Widget _buildTimeSeparator() { + return Padding( + padding: EdgeInsets.only(bottom: 16.h, left: 6.w, right: 6.w), + child: ':'.toText32( + isBold: true, + color: AppColors.blackColor, + ), + ); + } + @override Widget build(BuildContext context) { AppState appState = getIt.get(); @@ -43,160 +137,449 @@ class MedicalFileAppointmentCard extends StatelessWidget { AppCustomChipWidget( richText: Directionality( textDirection: ui.TextDirection.ltr, - child: DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate), false) - .toText12(color: AppointmentType.isArrived(patientAppointmentHistoryResponseModel) ? AppColors.textColor : AppColors.primaryRedColor, fontWeight: FontWeight.w500, isEnglishOnly: true) + child: DateUtil.formatDateToDate(DateUtil.convertStringToDate(widget.patientAppointmentHistoryResponseModel.appointmentDate), false) + .toText12( + color: AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) ? AppColors.textColor : AppColors.primaryRedColor, + isBold: true, + isEnglishOnly: true) .paddingSymmetrical(8.w, 0), ), - icon: AppointmentType.isArrived(patientAppointmentHistoryResponseModel) ? AppAssets.appointment_calendar_icon : AppAssets.alarm_clock_icon, - iconColor: AppointmentType.isArrived(patientAppointmentHistoryResponseModel) ? AppColors.textColor : AppColors.primaryRedColor, + icon: AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) + ? AppAssets.appointment_calendar_icon + : AppAssets.alarm_clock_icon, + iconColor: AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) ? AppColors.textColor : AppColors.primaryRedColor, iconSize: 16.w, - backgroundColor: AppointmentType.isArrived(patientAppointmentHistoryResponseModel) ? AppColors.greyColor : AppColors.secondaryLightRedColor, - textColor: AppointmentType.isArrived(patientAppointmentHistoryResponseModel) ? AppColors.textColor : AppColors.primaryRedColor, - padding: EdgeInsets.only(top: 12.h, bottom: 12.h, left: 8.w, right: 8.w), - ).toShimmer2(isShow: myAppointmentsViewModel.isMyAppointmentsLoading), + backgroundColor: + AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) ? AppColors.greyColor : AppColors.secondaryLightRedColor, + textColor: AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel) ? AppColors.textColor : AppColors.primaryRedColor, + padding: EdgeInsets.all(8.h), + ).toShimmer2(isShow: widget.myAppointmentsViewModel.isMyAppointmentsLoading), SizedBox(height: 16.h), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: false), - width: 200.w, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - children: [ - Image.network( - patientAppointmentHistoryResponseModel.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", - width: 25.w, - height: 27.h, - fit: BoxFit.fill, - ).circle(100).toShimmer2(isShow: myAppointmentsViewModel.isMyAppointmentsLoading), - SizedBox(width: 8.w), - Expanded( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - (patientAppointmentHistoryResponseModel.doctorNameObj ?? "").toText14(isBold: true, maxlines: 1).toShimmer2(isShow: myAppointmentsViewModel.isMyAppointmentsLoading), - (patientAppointmentHistoryResponseModel.clinicName ?? "") - .toText12(maxLine: 1, fontWeight: FontWeight.w500, color: AppColors.greyTextColor) - .toShimmer2(isShow: myAppointmentsViewModel.isMyAppointmentsLoading), - ], - ), - ), - ], - ), - SizedBox(height: 12.h), - Row( - children: [ - myAppointmentsViewModel.isMyAppointmentsLoading - ? Container().toShimmer2(isShow: true, height: 40.h, width: 100.w, radius: 12.r) - : Expanded( - flex: 7, - child: AppointmentType.isArrived(patientAppointmentHistoryResponseModel) - ? getArrivedAppointmentButton(context).toShimmer2(isShow: myAppointmentsViewModel.isMyAppointmentsLoading) - : CustomButton( - text: AppointmentType.getNextActionText(patientAppointmentHistoryResponseModel.nextAction), - onPressed: () { - Navigator.of(context) - .push(CustomPageRoute( - page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel), - )) - .then((val) { - // widget.myAppointmentsViewModel.initAppointmentsViewModel(); - // widget.myAppointmentsViewModel.getPatientAppointments(true, false); - }); - }, - backgroundColor: AppointmentType.getNextActionButtonColor(patientAppointmentHistoryResponseModel.nextAction).withOpacity(0.15), - borderColor: AppointmentType.getNextActionButtonColor(patientAppointmentHistoryResponseModel.nextAction).withOpacity(0.01), - textColor: AppointmentType.getNextActionTextColor(patientAppointmentHistoryResponseModel.nextAction), - fontSize: 14.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - padding: EdgeInsets.symmetric(horizontal: 10.w), - height: 40.h, - icon: AppointmentType.getNextActionIcon(patientAppointmentHistoryResponseModel.nextAction), - iconColor: AppointmentType.getNextActionTextColor(patientAppointmentHistoryResponseModel.nextAction), - iconSize: 14.h, - ).toShimmer2(isShow: myAppointmentsViewModel.isMyAppointmentsLoading), - ), - SizedBox(width: 8.w), - Expanded( - flex: 2, - child: Container( - height: 40.h, - width: 40.w, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.textColor, - borderRadius: 10.r, - ), - child: Padding( - padding: EdgeInsets.all(10.w), - child: Transform.flip( - flipX: appState.isArabic(), - child: Utils.buildSvgWithAssets( - iconColor: AppColors.whiteColor, - icon: AppAssets.forward_arrow_icon_small, - width: 40.w, - height: 40.h, - fit: BoxFit.contain, - ), - ), + IntrinsicWidth( + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: false), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Utils.buildImgWithNetwork( + url: widget.patientAppointmentHistoryResponseModel.doctorImageURL ?? + "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + iconColor: AppColors.transparent, + width: 30.h, + height: 30.h, + fit: BoxFit.fill, + ).circle(100.r).toShimmer2(isShow: widget.myAppointmentsViewModel.isMyAppointmentsLoading), + SizedBox(width: 8.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (widget.patientAppointmentHistoryResponseModel.doctorNameObj ?? "") + .toText14( + isBold: true, + maxlines: 1, + isEnglishOnly: !Utils.isArabicText(widget.patientAppointmentHistoryResponseModel.doctorNameObj ?? "")) + .toShimmer2(isShow: widget.myAppointmentsViewModel.isMyAppointmentsLoading), + (widget.patientAppointmentHistoryResponseModel.clinicName ?? "") + .toText12(maxLine: 1, textOverflow: TextOverflow.ellipsis, isBold: true, color: AppColors.greyTextColor) + .toShimmer2(isShow: widget.myAppointmentsViewModel.isMyAppointmentsLoading), + ], ), - ).toShimmer2(isShow: myAppointmentsViewModel.isMyAppointmentsLoading).onPress(() { - Navigator.of(context) - .push( - CustomPageRoute( - page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: patientAppointmentHistoryResponseModel), - ), - ) - .then((val) { - // widget.myAppointmentsViewModel.initAppointmentsViewModel(); - // widget.myAppointmentsViewModel.getPatientAppointments(true, false); - }); - }), - ), - ], - ), - ], - ).paddingAll(16.w), + ), + ], + ), + SizedBox(height: 8.h), + _buildAppointmentActionButton(context, appState), + ], + ).paddingAll(16.w), + ), ), ], ); } + /// Builds the appropriate action button based on appointment state and doctor status + Widget _buildAppointmentActionButton(BuildContext context, AppState appState) { + final isLoading = widget.myAppointmentsViewModel.isMyAppointmentsLoading; + final appointment = widget.patientAppointmentHistoryResponseModel; + final isDoctorActive = appointment.isActiveDoctor ?? true; + + // If doctor is not active, show only View Details button + if (!isDoctorActive) { + return _buildViewDetailsButton(context); + } + + // Doctor is active - check rebooking logic + final isArrived = AppointmentType.isArrived(appointment); + final isRebookingNotAllowed = appointment.isClinicReBookingAllowed == false; + + // If arrived and rebooking not allowed, show button without arrow + if (isArrived && isRebookingNotAllowed) { + return _buildSingleButton(context, isLoading); + } + + // Normal flow - show button with arrow + return _buildButtonWithArrow(context, appState, isLoading); + } + + /// Builds a single button without arrow (for no rebooking scenarios) + Widget _buildSingleButton(BuildContext context, bool isLoading) { + if (isLoading) { + return Container().toShimmer2(isShow: true, height: 40.h, width: 100.w, radius: 12.r); + } + + final isArrived = AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel); + + if (isArrived) { + return getArrivedAppointmentButton(context).toShimmer2(isShow: isLoading); + } + + return _buildNextActionButton(context, isLoading); + } + + /// Builds the next action button (Pay Now, Confirm, etc.) + Widget _buildNextActionButton(BuildContext context, bool isLoading) { + final appointment = widget.patientAppointmentHistoryResponseModel; + + return CustomButton( + text: AppointmentType.getNextActionText(appointment.nextAction), + onPressed: () { + handleAppointmentNextAction(appointment.nextAction, context); + }, + backgroundColor: AppointmentType.getNextActionButtonColor(appointment.nextAction).withValues(alpha: 0.15), + borderColor: AppointmentType.getNextActionButtonColor(appointment.nextAction).withValues(alpha: 0.01), + textColor: AppointmentType.getNextActionTextColor(appointment.nextAction), + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 40.h, + icon: AppointmentType.getNextActionIcon(appointment.nextAction), + iconColor: AppointmentType.getNextActionTextColor(appointment.nextAction), + iconSize: 14.h, + ).toShimmer2(isShow: isLoading); + } + + /// Builds button with arrow (normal flow with navigation arrow) + Widget _buildButtonWithArrow(BuildContext context, AppState appState, bool isLoading) { + return Row( + children: [ + _buildMainActionButton(context, isLoading), + SizedBox(width: 8.w), + _buildNavigationArrow(context, appState, isLoading), + ], + ); + } + + /// Builds the main action button in the row (left side) + Widget _buildMainActionButton(BuildContext context, bool isLoading) { + if (isLoading) { + return Container().toShimmer2(isShow: true, height: 40.h, width: 100.w, radius: 12.r); + } + + final isArrived = AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel); + + return Expanded( + flex: 7, + child: isArrived ? getArrivedAppointmentButton(context).toShimmer2(isShow: isLoading) : _buildNextActionButton(context, isLoading), + ); + } + + /// Builds the navigation arrow button (right side) + Widget _buildNavigationArrow(BuildContext context, AppState appState, bool isLoading) { + final appointment = widget.patientAppointmentHistoryResponseModel; + final isArrived = AppointmentType.isArrived(appointment); + + // Check if arrow should be hidden + final shouldHideArrow = (appointment.isLiveCareAppointment ?? false) || + (appointment.isExecludeDoctor ?? false) || + !Utils.isClinicAllowedForRebook(appointment.clinicID ?? 0); + + if (shouldHideArrow && isArrived) { + return SizedBox.shrink(); + } + + return Expanded( + flex: 2, + child: Container( + height: 40.h, + width: 40.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.textColor, + borderRadius: 10.r, + ), + child: Padding( + padding: EdgeInsets.all(10.h), + child: Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets( + iconColor: AppColors.whiteColor, + icon: AppAssets.forward_arrow_icon_small, + width: 36.h, + height: 36.h, + fit: BoxFit.contain, + ), + ), + ), + ).toShimmer2(isShow: isLoading).onPress(() { + Navigator.of(context) + .push( + CustomPageRoute( + page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: appointment), + ), + ) + .then((val) { + // Can refresh appointments here if needed + }); + }), + ); + } + + /// Builds the View Details button (for inactive doctors) + Widget _buildViewDetailsButton(BuildContext context) { + return CustomButton( + text: LocaleKeys.viewDetails.tr(context: context), + onPressed: () { + Navigator.of(context) + .push( + CustomPageRoute( + page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel), + ), + ) + .then((_) { + widget.myAppointmentsViewModel.initAppointmentsViewModel(); + widget.myAppointmentsViewModel.getPatientAppointments(true, false); + }); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: isFoldable ? 36.h : 40.h, + ).toShimmer2(isShow: widget.myAppointmentsViewModel.isMyAppointmentsLoading); + } + Widget getArrivedAppointmentButton(BuildContext context) { - return DateTime.now().difference(DateUtil.convertStringToDate(patientAppointmentHistoryResponseModel.appointmentDate)).inDays <= 15 - ? CustomButton( - text: LocaleKeys.askDoctor.tr(context: context), - onPressed: () { - onAskDoctorTap(); - }, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 14.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - padding: EdgeInsets.symmetric(horizontal: 10.w), - height: 40.h, - icon: AppAssets.ask_doctor_icon, - iconColor: AppColors.primaryRedColor, - iconSize: 16.h, + // Check if rebooking is not allowed - show View Details button + if (widget.patientAppointmentHistoryResponseModel.isClinicReBookingAllowed == false) { + return CustomButton( + text: LocaleKeys.viewDetails.tr(context: context), + onPressed: () { + Navigator.of(context) + .push( + CustomPageRoute( + page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel), + ), + ) + .then((_) { + widget.myAppointmentsViewModel.initAppointmentsViewModel(); + widget.myAppointmentsViewModel.getPatientAppointments(true, false); + }); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 40.h, + ); + } + + // Check if clinic allows rebooking or if doctor is excluded + if ((((widget.patientAppointmentHistoryResponseModel.isLiveCareAppointment ?? false) || + (widget.patientAppointmentHistoryResponseModel.isExecludeDoctor ?? false) || + !Utils.isClinicAllowedForRebook(widget.patientAppointmentHistoryResponseModel.clinicID ?? 0))) && + AppointmentType.isArrived(widget.patientAppointmentHistoryResponseModel)) { + return CustomButton( + text: LocaleKeys.viewDetails.tr(context: context), + onPressed: () { + Navigator.of(context) + .push( + CustomPageRoute( + page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel), + ), ) - : CustomButton( - text: LocaleKeys.rebook.tr(context: context), - onPressed: () { - onRescheduleTap(); + .then((_) { + widget.myAppointmentsViewModel.initAppointmentsViewModel(); + widget.myAppointmentsViewModel.getPatientAppointments(true, false); + }); + }, + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + // height: isTablet || isFoldable ? 46.h : 40.h, + height: 40.h, + icon: null, + iconColor: AppColors.primaryRedColor, + iconSize: 16.h, + ); + } else { + return CustomButton( + text: LocaleKeys.rebook.tr(context: context), + onPressed: () { + widget.onRescheduleTap(); + }, + backgroundColor: AppColors.greyColor, + borderColor: AppColors.greyColor, + textColor: AppColors.blackColor, + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 40.h, + icon: AppAssets.rebook_appointment_icon, + iconColor: AppColors.blackColor, + iconSize: 16.h, + ); + } + } + + Future handleAppointmentNextAction(nextAction, BuildContext context) async { + switch (nextAction) { + case 0: + // No action needed - go to details + Navigator.of(context) + .push(CustomPageRoute( + page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel), + )) + .then((val) {}); + break; + case 10: + // Confirm appointment - go to details + Navigator.of(context) + .push(CustomPageRoute( + page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel), + )) + .then((val) {}); + break; + case 15: + // Pending payment - show waiting modal + // Ensure timer is running before showing modal + if (_countdownTimer == null || !_countdownTimer!.isActive) { + _startCountdownTimer(); + } + + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.notice.tr(), + child: StatefulBuilder( + builder: (context, setModalState) { + // Store the modal setState callback + _modalSetState = setModalState; + + return Column( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + // Message text + LocaleKeys.upcomingPaymentPending.tr(context: context).toText14( + color: AppColors.textColor, + isCenter: true, + ), + SizedBox(height: 24.h), + // Countdown Timer - DD : HH : MM : SS format with labels + Directionality( + textDirection: ui.TextDirection.ltr, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Days + _buildTimeUnit( + _timeRemaining != null ? _timeRemaining!.inDays.toString().padLeft(2, '0') : '00', + LocaleKeys.days.tr(context: context), + ), + _buildTimeSeparator(), + // Hours + _buildTimeUnit( + _timeRemaining != null ? _timeRemaining!.inHours.remainder(24).toString().padLeft(2, '0') : '00', + LocaleKeys.hours.tr(context: context), + ), + _buildTimeSeparator(), + // Minutes + _buildTimeUnit( + _timeRemaining != null ? _timeRemaining!.inMinutes.remainder(60).toString().padLeft(2, '0') : '00', + LocaleKeys.minutes.tr(context: context), + ), + _buildTimeSeparator(), + // Seconds + _buildTimeUnit( + _timeRemaining != null ? _timeRemaining!.inSeconds.remainder(60).toString().padLeft(2, '0') : '00', + LocaleKeys.seconds.tr(context: context), + ), + ], + )), + SizedBox(height: 24.h), + // Green Acknowledge button with checkmark icon + CustomButton( + text: LocaleKeys.acknowledged.tr(context: context), + onPressed: () { + _modalSetState = null; // Clear callback when closing + Navigator.of(context).pop(); + }, + backgroundColor: AppColors.successColor, + borderColor: AppColors.successColor, + textColor: Colors.white, + fontSize: 16.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + height: 50.h, + icon: AppAssets.checkmark_icon, + iconColor: Colors.white, + ), + ], + ); }, - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, - textColor: AppColors.blackColor, - fontSize: 14.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - padding: EdgeInsets.symmetric(horizontal: 10.w), - height: 40.h, - icon: AppAssets.rebook_appointment_icon, - iconColor: AppColors.blackColor, - iconSize: 16.h, - ); + ), + callBackFunc: () { + _modalSetState = null; // Clear callback when closing + }, + isFullScreen: false, + isCloseButtonVisible: true, + ); + break; + case 20: + // Pay now - navigate to payment page + widget.myAppointmentsViewModel.setIsPatientAppointmentShareLoading(true); + Navigator.of(context).push( + CustomPageRoute( + page: AppointmentPaymentPage(patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel), + ), + ); + break; + case 50: + // Confirm livecare - go to details + Navigator.of(context) + .push(CustomPageRoute( + page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel), + )) + .then((val) {}); + break; + case 90: + // Check-in - go to details + Navigator.of(context) + .push(CustomPageRoute( + page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel), + )) + .then((val) {}); + break; + default: + // Default - go to details + Navigator.of(context) + .push(CustomPageRoute( + page: AppointmentDetailsPage(patientAppointmentHistoryResponseModel: widget.patientAppointmentHistoryResponseModel), + )) + .then((val) {}); + } } } diff --git a/lib/presentation/medical_file/widgets/medical_file_card.dart b/lib/presentation/medical_file/widgets/medical_file_card.dart index c2551d30..ebf569e1 100644 --- a/lib/presentation/medical_file/widgets/medical_file_card.dart +++ b/lib/presentation/medical_file/widgets/medical_file_card.dart @@ -11,6 +11,8 @@ class MedicalFileCard extends StatelessWidget { final String svgIcon; final double? iconSize; final bool isLargeText; + final bool isLocked; + final Color? iconColor; const MedicalFileCard({ super.key, @@ -20,26 +22,39 @@ class MedicalFileCard extends StatelessWidget { this.svgIcon = "", this.iconSize, this.isLargeText = false, + this.isLocked = false, + this.iconColor, }); @override Widget build(BuildContext context) { final iconS = iconSize ?? 30.w; return Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: backgroundColor, - borderRadius: 20.r, - hasShadow: false - ), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: backgroundColor, borderRadius: 20.r, hasShadow: false), padding: EdgeInsets.all(12.w), child: Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.center, mainAxisSize: MainAxisSize.min, children: [ - Utils.buildSvgWithAssets(icon: svgIcon, width: iconS, height: iconS, fit: BoxFit.contain, applyThemeColor: false), - SizedBox(height: 8.h), - isLargeText ? label.toText13(color: textColor, isBold: true, maxLine: 2) : label.toText11(color: textColor, isBold: true, maxLine: 2), + Opacity( + opacity: isLocked ? 0.4 : 1.0, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Utils.buildSvgWithAssets( + icon: svgIcon, + width: iconS, + height: iconS, + fit: BoxFit.contain, + applyThemeColor: false, + iconColor: iconColor, + ), + SizedBox(height: 8.h), + isLargeText ? label.toText13(color: textColor, isBold: true, maxLine: 2) : label.toText11(color: textColor, isBold: true, maxLine: 2), + ], + ), + ), ], ), ); diff --git a/lib/presentation/medical_file/widgets/medical_report_card.dart b/lib/presentation/medical_file/widgets/medical_report_card.dart new file mode 100644 index 00000000..1a43b83b --- /dev/null +++ b/lib/presentation/medical_file/widgets/medical_report_card.dart @@ -0,0 +1,102 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/medical_file/models/patient_medical_response_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/medical_report/medical_reports_page.dart'; +import 'package:hmg_patient_app_new/presentation/monthly_report/monthly_report.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; + +class MedicalReportCard extends StatelessWidget { + final bool isLoading; + final List listRequest; + final List listReady; + final VoidCallback? onViewDetails; + + const MedicalReportCard({ + super.key, + required this.isLoading, + required this.listRequest, + required this.listReady, + this.onViewDetails, + }); + + + + @override + Widget build(BuildContext context) { + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24, + hasShadow: true, + ), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.medicalReportNew.tr().toText18( + isBold: true, + weight: FontWeight.w700, + ).toShimmer2(isShow: isLoading), + SizedBox(height: 12.h), + Wrap( + spacing: 8.w, + runSpacing: 8.h, + children: [ + if ( listRequest.isNotEmpty ) + AppCustomChipWidget( + labelText: '${listRequest.length.toString().padLeft(2, '0')} ${LocaleKeys.requested.tr()}', + icon: AppAssets.document, + iconColor: AppColors.alertColor, + textColor: AppColors.alertColor, + backgroundColor: AppColors.warningColorYellow.withOpacity(.2), + iconSize: 14.w, + ), + if (listReady.isNotEmpty) + AppCustomChipWidget( + labelText: '${listReady.length.toString().padLeft(2, '0')} ${LocaleKeys.readyToDownload.tr()}', + icon: AppAssets.sucess, + iconColor: AppColors.successColor, + textColor: AppColors.successColor, + backgroundColor: AppColors.switchBackgroundColor, + iconSize: 14.w, + ), + ], + ).toShimmer2(isShow: isLoading), + SizedBox(height: 16.h), + CustomButton( + text: LocaleKeys.viewDetails.tr(), + icon: AppAssets.report, + borderWidth: 0, + isDisabled: false, + onPressed: (){ + Navigator.of(context).push( + CustomPageRoute( + page: MedicalReportsPage(), + ), + ); + }, + backgroundColor: AppColors.lightRedButtonColor, + borderColor: AppColors.lightRedButtonColor, + textColor: AppColors.primaryRedColor, + iconColor: AppColors.primaryRedColor, + fontSize: 14.f, + // fontWeight: FontWeight.w600, + isBold: true, + borderRadius: 12.r, + height: 40.h, + ).toShimmer2(isShow: isLoading), + ], + ), + ), + ); + } +} diff --git a/lib/presentation/medical_file/widgets/patient_sick_leave_card.dart b/lib/presentation/medical_file/widgets/patient_sick_leave_card.dart index a0c54e68..63aac378 100644 --- a/lib/presentation/medical_file/widgets/patient_sick_leave_card.dart +++ b/lib/presentation/medical_file/widgets/patient_sick_leave_card.dart @@ -21,6 +21,8 @@ import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:open_filex/open_filex.dart'; import 'package:provider/provider.dart'; +import 'dart:ui' as ui; + class PatientSickLeaveCard extends StatelessWidget { PatientSickLeaveCard({super.key, required this.patientSickLeavesResponseModel, this.isLoading = false, this.isSickLeaveListPage = false}); @@ -40,23 +42,23 @@ class PatientSickLeaveCard extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - "${LocaleKeys.sick.tr(context: context)} ${LocaleKeys.sickSubtitle.tr(context: context)}".toText16(isBold: true).toShimmer2(isShow: isLoading), - AppCustomChipWidget( - labelText: isLoading ? "" : getStatusText(context), - backgroundColor: getStatusColor().withOpacity(0.15), - textColor: getStatusColor(), - ).toShimmer2(isShow: isLoading, width: 100.h), - ], - ), - SizedBox(height: 16.h), + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // AppCustomChipWidget( + // labelText: isLoading ? "" : getStatusText(context), + // backgroundColor: getStatusColor().withOpacity(0.15), + // textColor: getStatusColor(), + // ).toShimmer2(isShow: isLoading, width: 100.h), + // ], + // ), + // SizedBox(height: 16.h), Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.network( - isLoading ? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png" : patientSickLeavesResponseModel.doctorImageURL!, + Utils.buildImgWithNetwork( + url: isLoading ? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png" : patientSickLeavesResponseModel.doctorImageURL!, + iconColor: AppColors.transparent, width: 30.h, height: 30.h, fit: BoxFit.cover, @@ -73,11 +75,15 @@ class PatientSickLeaveCard extends StatelessWidget { spacing: 3.h, runSpacing: 4.h, children: [ - AppCustomChipWidget( - icon: AppAssets.doctor_calendar_icon, - labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientSickLeavesResponseModel.appointmentDate), false), - labelPadding: EdgeInsetsDirectional.only(start: -4.h, end: 8.h), - ).toShimmer2(isShow: isLoading), + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + icon: AppAssets.doctor_calendar_icon, + labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(patientSickLeavesResponseModel.appointmentDate), false), + labelPadding: EdgeInsetsDirectional.only(start: -4.h, end: 8.h), + isEnglishOnly: true, + ).toShimmer2(isShow: isLoading), + ), AppCustomChipWidget(labelText: isLoading ? "Pending Activation" : patientSickLeavesResponseModel.clinicName!).toShimmer2(isShow: isLoading), ], ), @@ -118,9 +124,9 @@ class PatientSickLeaveCard extends StatelessWidget { backgroundColor: AppColors.secondaryLightRedColor, borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, - fontSize: 14, - fontWeight: FontWeight.w500, - borderRadius: 12, + fontSize: 14.f, + isBold: true, + borderRadius: 12.r, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, icon: AppAssets.download, diff --git a/lib/presentation/medical_report/medical_reports_page.dart b/lib/presentation/medical_report/medical_reports_page.dart index fd3ba7f9..9463debe 100644 --- a/lib/presentation/medical_report/medical_reports_page.dart +++ b/lib/presentation/medical_report/medical_reports_page.dart @@ -63,7 +63,7 @@ class _MedicalReportsPageState extends State { // borderColor: medicalFileVM.isMedicalReportsSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), // textColor: medicalFileVM.isMedicalReportsSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, // fontSize: 12, - // fontWeight: FontWeight.w500, + // isBold: true, // borderRadius: 10, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 40.h, @@ -78,7 +78,7 @@ class _MedicalReportsPageState extends State { // borderColor: medicalFileVM.isMedicalReportsSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, // textColor: medicalFileVM.isMedicalReportsSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, // fontSize: 12, - // fontWeight: FontWeight.w500, + // isBold: true, // borderRadius: 10, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 40.h, @@ -100,7 +100,7 @@ class _MedicalReportsPageState extends State { borderColor: medicalFileVM.selectedMedicalReportsTabIndex == 0 ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), textColor: medicalFileVM.selectedMedicalReportsTabIndex == 0 ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, @@ -118,7 +118,7 @@ class _MedicalReportsPageState extends State { borderColor: medicalFileVM.selectedMedicalReportsTabIndex == 1 ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), textColor: medicalFileVM.selectedMedicalReportsTabIndex == 1 ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, @@ -136,7 +136,7 @@ class _MedicalReportsPageState extends State { borderColor: medicalFileVM.selectedMedicalReportsTabIndex == 2 ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), textColor: medicalFileVM.selectedMedicalReportsTabIndex == 2 ? AppColors.primaryRedColor : AppColors.blackColor, fontSize: 12, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, @@ -200,7 +200,7 @@ class _MedicalReportsPageState extends State { borderColor: AppColors.greyColor, textColor: AppColors.blackColor, fontSize: 10, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 8, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 30.h, @@ -241,14 +241,15 @@ class _MedicalReportsPageState extends State { Row( mainAxisSize: MainAxisSize.min, children: [ - Image.network( - report.doctorImageURL!, + Utils.buildImgWithNetwork( + url: report.doctorImageURL ?? "", + iconColor: AppColors.transparent, width: 24.h, height: 24.h, fit: BoxFit.fill, ).circle(100), SizedBox(width: 8.h), - Expanded(child: report.doctorName!.toText14(weight: FontWeight.w500)), + Expanded(child: report.doctorName!.toText14(isBold: true)), ], ), SizedBox(height: 8.h), @@ -295,7 +296,7 @@ class _MedicalReportsPageState extends State { borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, @@ -372,7 +373,7 @@ class _MedicalReportsPageState extends State { borderColor: AppColors.primaryRedColor, textColor: Colors.white, fontSize: 16.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, height: 46.h, icon: AppAssets.requests, @@ -398,14 +399,18 @@ class _MedicalReportsPageState extends State { onConfirmTap: () async { Navigator.pop(context); LoaderBottomSheet.showLoader(); - await medicalFileViewModel.insertRequestForMedicalReport(onSuccess: (val) { + await medicalFileViewModel.insertRequestForMedicalReport(onSuccess: (val) async{ LoaderBottomSheet.hideLoader(); showCommonBottomSheetWithoutHeight(context, child: Utils.getSuccessWidget(loadingText: LocaleKeys.yourMedicalReportRequestSubmittedSuccessfully.tr(context: context)), - callBackFunc: () { + callBackFunc: () async{ medicalFileViewModel.setIsPatientMedicalReportsLoading(true); medicalFileViewModel.onMedicalReportTabChange(0); medicalFileViewModel.getPatientMedicalReportList(); + + }); + await Future.delayed(Duration(milliseconds: 2000)).then((value) { + if (mounted) Navigator.pop(context); }); }, onError: (err) { LoaderBottomSheet.hideLoader(); @@ -419,6 +424,7 @@ class _MedicalReportsPageState extends State { callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, + isAutoDismiss: false ); } } diff --git a/lib/presentation/medical_report/widgets/patient_medical_report_card.dart b/lib/presentation/medical_report/widgets/patient_medical_report_card.dart index 282a2d60..f074022e 100644 --- a/lib/presentation/medical_report/widgets/patient_medical_report_card.dart +++ b/lib/presentation/medical_report/widgets/patient_medical_report_card.dart @@ -42,8 +42,9 @@ class PatientMedicalReportCard extends StatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.network( - isLoading ? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png" : patientMedicalReportResponseModel.doctorImageURL!, + Utils.buildImgWithNetwork( + url: isLoading ? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png" : patientMedicalReportResponseModel.doctorImageURL!, + iconColor: AppColors.transparent, width: 63.h, height: 63.h, fit: BoxFit.fill, @@ -93,7 +94,7 @@ class PatientMedicalReportCard extends StatelessWidget { borderColor: AppColors.secondaryLightRedColor, textColor: AppColors.primaryRedColor, fontSize: 14, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.h, height: 40.h, icon: AppAssets.download_1, @@ -112,7 +113,7 @@ class PatientMedicalReportCard extends StatelessWidget { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 14, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.h, height: 40.h, icon: AppAssets.download_1, diff --git a/lib/presentation/monthly_report/monthly_report.dart b/lib/presentation/monthly_report/monthly_report.dart index 998d7f48..9a42754c 100644 --- a/lib/presentation/monthly_report/monthly_report.dart +++ b/lib/presentation/monthly_report/monthly_report.dart @@ -1,6 +1,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:get_it/get_it.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/cache_consts.dart'; @@ -79,10 +80,11 @@ class MonthlyReport extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.email.tr(context: context).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), + LocaleKeys.email.tr(context: context).toText12(color: AppColors.greyTextColor, isBold: true), SizedBox( width: MediaQuery.of(context).size.width * 0.7, - child: "${appState.getAuthenticatedUser()!.emailAddress}".toText16(color: AppColors.textColor, weight: FontWeight.w500, maxlines: 2), + child: "${appState.getAuthenticatedUser()!.emailAddress}" + .toText16(color: AppColors.textColor, isBold: true, maxlines: 2), ), ], ), @@ -98,7 +100,9 @@ class MonthlyReport extends StatelessWidget { Utils.buildSvgWithAssets(icon: AppAssets.prescription_remarks_icon, width: 18.w, height: 18.h), SizedBox(width: 9.h), Expanded( - child: LocaleKeys.monthlyHealthSummaryReportDisclaimer.tr(context: context).toText10(weight: FontWeight.w500, color: AppColors.greyTextColorLight), + child: LocaleKeys.monthlyHealthSummaryReportDisclaimer + .tr(context: context) + .toText10(isBold: true, color: AppColors.greyTextColorLight), ), ], ), @@ -135,9 +139,11 @@ class MonthlyReport extends StatelessWidget { ), SizedBox(width: 10.w), "I agree to the ".toText14(isBold: true, letterSpacing: -1.0), - "terms and conditions".toText14(isBold: true, letterSpacing: -1.0, color: AppColors.primaryRedColor, isUnderLine: true).onPress(() { + "terms and conditions" + .toText14(isBold: true, letterSpacing: -1.0, color: AppColors.primaryRedColor, isUnderLine: true) + .onPress(() { Utils.openWebView( - url: 'https://hmg.com/en/Pages/Terms.aspx', + url: AppUrls.hmgTermsUrlEn, ); }) ], @@ -172,7 +178,7 @@ class MonthlyReport extends StatelessWidget { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, height: 46.h, iconColor: AppColors.whiteColor, diff --git a/lib/presentation/my_family/my_family.dart b/lib/presentation/my_family/my_family.dart index dca75747..4b6f820a 100644 --- a/lib/presentation/my_family/my_family.dart +++ b/lib/presentation/my_family/my_family.dart @@ -16,6 +16,7 @@ import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:provider/provider.dart'; class FamilyMedicalScreen extends StatefulWidget { @@ -32,9 +33,15 @@ class _FamilyMedicalScreenState extends State { void initState() { super.initState(); medicalVM = context.read(); - WidgetsBinding.instance.addPostFrameCallback((_) { + WidgetsBinding.instance.addPostFrameCallback((_) async { + if(medicalVM!.isFamilyFilesLoading) { + LoaderBottomSheet.showLoader(); + } else { + LoaderBottomSheet.hideLoader(); + } medicalVM?.onFamilyFileTabChange(0); medicalVM?.getAllPendingRecordsByResponseId(); + }); } @@ -43,6 +50,7 @@ class _FamilyMedicalScreenState extends State { AppState appState = getIt.get(); return CollapsingListView( + isClose: true, title: LocaleKeys.familyTitle.tr(context: context), bottomChild: appState.getAuthenticatedUser()!.isParentUser! ? Container( @@ -66,7 +74,7 @@ class _FamilyMedicalScreenState extends State { icon: AppAssets.add_icon, fontSize: 16.f, borderRadius: 12.r, - fontWeight: FontWeight.w500)) + isBold: true)) .paddingOnly(bottom: 20.h) : SizedBox(), child: Column( @@ -89,11 +97,22 @@ class _FamilyMedicalScreenState extends State { ), appState.isChildLoggedIn ? SizedBox() : SizedBox(height: 25.h), Selector patientFiles, List pendingFiles})>( - selector: (_, model) => (selectedIndex: model.getSelectedFamilyFileTabIndex, patientFiles: model.patientFamilyFiles, pendingFiles: model.pendingFamilyFiles), + selector: (_, model) => ( + selectedIndex: model.getSelectedFamilyFileTabIndex, + patientFiles: model.patientFamilyFiles, + pendingFiles: model.pendingFamilyFiles, + ), shouldRebuild: (previous, next) { - return previous.selectedIndex != next.selectedIndex || previous.patientFiles.length != next.patientFiles.length || previous.pendingFiles.length != next.pendingFiles.length; + // Only rebuild if something actually changed + return previous.selectedIndex != next.selectedIndex || + !identical(previous.patientFiles, next.patientFiles) || + !identical(previous.pendingFiles, next.pendingFiles); }, - builder: (context, data, child) => getFamilyTabs(index: data.selectedIndex, patientFiles: data.patientFiles, pendingFiles: data.pendingFiles), + builder: (context, data, child) => getFamilyTabs( + index: data.selectedIndex, + patientFiles: data.patientFiles, + pendingFiles: data.pendingFiles, + ), ), SizedBox(height: 20.h), ], @@ -108,6 +127,7 @@ class _FamilyMedicalScreenState extends State { }) { switch (index) { case 0: + return FamilyCards( profiles: patientFiles, onSelect: (FamilyFileResponseModelLists profile) { diff --git a/lib/presentation/my_family/widget/family_cards.dart b/lib/presentation/my_family/widget/family_cards.dart index 826b1741..8feb8434 100644 --- a/lib/presentation/my_family/widget/family_cards.dart +++ b/lib/presentation/my_family/widget/family_cards.dart @@ -1,3 +1,5 @@ +import 'dart:async'; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -6,19 +8,32 @@ import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/core/utils/image_compression_helper.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; +import 'package:hmg_patient_app_new/features/insurance/insurance_view_model.dart'; import 'package:hmg_patient_app_new/features/medical_file/models/family_file_response_model.dart'; +import 'package:hmg_patient_app_new/features/profile_picture/profile_picture_view_model.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/insurance/widgets/insurance_update_details_card.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/services/permission_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/chip/custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/expandable_list_widget.dart'; +import 'package:hmg_patient_app_new/widgets/user_avatar_widget.dart'; +import 'package:hmg_patient_app_new/widgets/image_picker.dart'; +import 'package:provider/provider.dart'; class FamilyCards extends StatefulWidget { final List profiles; + late List? profileViewList; final Function(FamilyFileResponseModelLists) onSelect; final Function(FamilyFileResponseModelLists) onRemove; final bool isShowDetails; @@ -28,11 +43,12 @@ class FamilyCards extends StatefulWidget { final bool isShowRemoveButton; final bool isForWalletRecharge; - const FamilyCards( + FamilyCards( {super.key, required this.profiles, required this.onSelect, required this.onRemove, + this.profileViewList, this.isShowDetails = false, this.isBottomSheet = false, this.isRequestDesign = false, @@ -46,40 +62,125 @@ class FamilyCards extends StatefulWidget { class _FamilyCardsState extends State { AppState appState = getIt(); + final PermissionService _permissionService = getIt(); + late InsuranceViewModel insuranceViewModel; + late ProfileSettingsViewModel profileSettingsViewModel; + + @override + void initState() { + scheduleMicrotask(() { + insuranceViewModel.initInsuranceProvider(); + }); + super.initState(); + } + + void _pickImage() { + final profilePictureViewModel = context.read(); + + profilePictureViewModel.pickImage( + context, + showImagePicker: ImageOptions.showImageOptionsNew, + compressImage: ImageCompressionHelper.compressAndResizeImage, + onSuccess: (data) { + if (mounted) { + Utils.showToast(LocaleKeys.profileImageUpdatedSuccessfully.tr(context: context)); + } + }, + onError: (error) { + if (mounted) { + Utils.showToast(error); + } + }, + imageSizeTooLargeMessage: LocaleKeys.imageSizeTooLarge.tr(context: context), + failedToProcessImageMessage: LocaleKeys.failedToProcessImage.tr(context: context), + checkCameraPermission: (ctx) => _permissionService.checkCameraPermission(ctx), + checkGalleryPermission: (ctx) => _permissionService.checkGalleryPermission(ctx), + ); + } + + double _calculateAspectRatio(BuildContext context) { + final screenWidth = MediaQuery.of(context).size.width; + final itemWidth = (screenWidth - 32.w - 10.w) / 2; + double itemHeight = 0; + itemHeight += 30.h; // 15.h top + 15.h bottom + itemHeight += 70.h; + itemHeight += 8.h; + itemHeight += 20.h; + + if (widget.isShowDetails) { + itemHeight += 4.h; + itemHeight += 30.h; + itemHeight += 8.h; + } else { + itemHeight += 4.h; + } + + itemHeight += 70.h; + final aspectRatio = itemWidth / itemHeight; + return aspectRatio; + } @override Widget build(BuildContext context) { + widget.profileViewList = []; + widget.profileViewList!.addAll(widget.profiles); + widget.profileViewList!.removeWhere((element) => element.responseId == appState.getAuthenticatedUser()?.patientId); + insuranceViewModel = Provider.of(context, listen: false); + profileSettingsViewModel = Provider.of(context, listen: false); DialogService dialogService = getIt.get(); if (widget.isRequestDesign) { return Column( children: [ - Row( - children: [ - Utils.buildSvgWithAssets(icon: AppAssets.alertSquare), - SizedBox(width: 8.h), - LocaleKeys.whoCanViewMyMedicalFile.tr(context: context).toText14(color: AppColors.textColor, isUnderLine: true, weight: FontWeight.w500) - .onPress(() { - dialogService.showFamilyBottomSheetWithoutHWithChild( - label: LocaleKeys.manageFiles.tr(context: context), - message: "", - child: manageFamily(), - onOkPressed: () {}, - ); - }), - SizedBox(width: 4.h), - Utils.buildSvgWithAssets(icon: AppAssets.arrowRight), - ], - ), - SizedBox(height: 24.h), - widget.profiles.where((profile) => profile.isRequestFromMySide ?? false).isEmpty - ? Utils.getNoDataWidget(context) - : ListView.builder( + // Row( + // children: [ + // Utils.buildSvgWithAssets(icon: AppAssets.alertSquare), + // SizedBox(width: 8.h), + // LocaleKeys.whoCanViewMyMedicalFile.tr(context: context).toText14(color: AppColors.textColor, isUnderLine: true, isBold: true).onPress(() { + // dialogService.showFamilyBottomSheetWithoutHWithChild( + // label: LocaleKeys.manageFiles.tr(context: context), + // message: "", + // child: manageFamily(), + // onOkPressed: () {}, + // ); + // }), + // SizedBox(width: 4.h), + // Transform.flip( + // flipX: getIt.get().isArabic(), + // child: Utils.buildSvgWithAssets( + // icon: AppAssets.arrowRight, + // iconColor: AppColors.blackColor, + // width: 22.w, + // height: 22.h, + // fit: BoxFit.contain, + // )), + // ], + // ), + // SizedBox(height: 24.h), + CustomExpandableList( + expansionMode: ExpansionMode.multiple, + dividerColor: AppColors.dividerColor, + itemPadding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 14.h), + items: [ + ExpandableListItem( + title: LocaleKeys.whoCanViewMyMedicalFile.tr(context: context).toText18(isBold: true), + expandedBackgroundColor: Colors.transparent, + initiallyExpanded: true, + children: [ + SizedBox(height: 10.h), + manageFamily() + ], + ), + ExpandableListItem(title: LocaleKeys.notifications.tr(context: context).toText18(isBold: true), expandedBackgroundColor: Colors.transparent, initiallyExpanded: true, children: [ + SizedBox(height: 10.h), + widget.profileViewList!.where((profile) => profile.isRequestFromMySide ?? false).isEmpty + ? Utils.getNoDataWidget(context) + : ListView.builder( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), padding: EdgeInsets.zero, - itemCount: widget.profiles.where((profile) => profile.isRequestFromMySide ?? false).length, + itemCount: widget.profileViewList!.where((profile) => profile.isRequestFromMySide ?? false).length, itemBuilder: (context, index) { - final mySideProfiles = widget.profiles.where((profile) => profile.isRequestFromMySide ?? false).toList(); + final mySideProfiles = widget.profileViewList!.where((profile) => profile.isRequestFromMySide ?? false).toList(); FamilyFileResponseModelLists profile = mySideProfiles[index]; return Container( margin: EdgeInsets.only(bottom: 12.h), @@ -92,167 +193,355 @@ class _FamilyCardsState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - CustomChipWidget( - height: 30.h, - chipType: ChipTypeEnum.alert, - backgroundColor: profile.status == FamilyFileEnum.pending.toInt - ? AppColors.alertLightColor.withValues(alpha: 0.20) - : profile.status == FamilyFileEnum.rejected.toInt - ? AppColors.primaryRedColor.withValues(alpha: 0.20) - : profile.status == FamilyFileEnum.active.toInt - ? AppColors.lightGreenColor - : AppColors.lightGrayBGColor, - chipText: profile.statusDescription ?? "N/A", - iconAsset: null, - isShowBorder: false, - borderRadius: 8.h, + AppCustomChipWidget( + labelText: profile.statusDescription ?? " N/A", + backgroundColor: profile.status == FamilyFileEnum.pending.toInt + ? AppColors.alertLightColor.withValues(alpha: 0.20) + : profile.status == FamilyFileEnum.rejected.toInt + ? AppColors.primaryRedColor.withValues(alpha: 0.20) + : profile.status == FamilyFileEnum.active.toInt + ? AppColors.lightGreenColor + : AppColors.lightGrayBGColor, textColor: profile.status == FamilyFileEnum.pending.toInt ? AppColors.alertLightColor : profile.status == FamilyFileEnum.rejected.toInt - ? AppColors.primaryRedColor - : profile.status == FamilyFileEnum.active.toInt - ? AppColors.textGreenColor - : AppColors.alertColor), + ? AppColors.primaryRedColor + : profile.status == FamilyFileEnum.active.toInt + ? AppColors.textGreenColor + : AppColors.alertColor + ), SizedBox(height: 8.h), - Wrap( - alignment: WrapAlignment.start, - crossAxisAlignment: WrapCrossAlignment.start, - runAlignment: WrapAlignment.start, - spacing: 0.h, - children: [ - (profile.patientName ?? "").toText14(isBold: false, isCenter: false, maxlines: 1, weight: FontWeight.w600), - (getStatusTextByRequest( - FamilyFileEnum.values.firstWhere((e) => e.toInt == profile.status), profile.isRequestFromMySide ?? false)) - .toText12( - isBold: false, isCenter: false, maxLine: 1, fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - ]), + Wrap(alignment: WrapAlignment.start, crossAxisAlignment: WrapCrossAlignment.start, runAlignment: WrapAlignment.start, spacing: 0.h, children: [ + (profile.patientName ?? "").toText14(isBold: true, isCenter: false, maxlines: 1), + (getStatusTextByRequest(FamilyFileEnum.values.firstWhere((e) => e.toInt == profile.status), profile.isRequestFromMySide ?? false)) + .toText12(isCenter: false, maxLine: 1, isBold: true, color: AppColors.greyTextColor), + ]), SizedBox(height: 8.h), - CustomChipWidget( - height: 30.h, - chipType: ChipTypeEnum.alert, - backgroundColor: AppColors.lightGrayBGColor, - chipText: "Medical File: ${profile.responseId ?? "N/A"}", - iconAsset: null, - isShowBorder: false, - borderRadius: 8.h, - textColor: AppColors.textColor), + AppCustomChipWidget( + labelText: "Medical File: ${profile.responseId ?? "N/A"}", + ), ], ), ), ); }, ), + ]) + ], + theme: ExpandableListTheme.custom( + defaultTrailingIcon: Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, height: 22.h, width: 22.w, iconColor: AppColors.textColor), + ), + ).paddingSymmetrical(0.w, 0.0), SizedBox(height: 20.h), ], ); } else { - return GridView.builder( - shrinkWrap: true, - physics: NeverScrollableScrollPhysics(), - itemCount: widget.profiles.length, - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( - crossAxisCount: 2, - crossAxisSpacing: 10.w, - mainAxisSpacing: 10.h, - childAspectRatio: widget.isShowDetails ? 0.56.h : 0.64.h, - ), - padding: EdgeInsets.only(bottom: 20.h), - itemBuilder: (context, index) { - final profile = widget.profiles[index]; - final isActive = (profile.responseId == appState.getAuthenticatedUser()?.patientId); - final isParentUser = appState.getAuthenticatedUser()?.isParentUser ?? false; - final canSwitch = isParentUser || (!isParentUser && profile.responseId == appState.getSuperUserID); - return Container( - padding: EdgeInsets.symmetric(vertical: 15.h, horizontal: 15.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24), - child: Opacity( - opacity: isActive || profile.status == FamilyFileEnum.pending.toInt || !canSwitch ? 0.4 : 1.0, // Fade all content if active - child: Stack( + return Column( + children: [ + Container( + width: double.infinity, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.r), + child: Padding( + padding: EdgeInsets.all(16.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Column( - mainAxisSize: MainAxisSize.min, + Row( + crossAxisAlignment: CrossAxisAlignment.start, children: [ - Utils.buildImgWithAssets( - icon: profile.gender == null - ? AppAssets.dummyUser - : profile.gender == 1 - ? ((profile.age ?? 0) < 7 ? AppAssets.babyBoyImg : AppAssets.maleImg) - : (profile.age! < 7 ? AppAssets.babyGirlImg : AppAssets.femaleImg), - width: 72.h, - height: 70.h, - ), - SizedBox(height: 8.h), - (profile.patientName ?? "Unknown").toText14(isBold: false, isCenter: true, maxlines: 1, weight: FontWeight.w600), - SizedBox(height: 8.h), - CustomChipWidget( - chipType: ChipTypeEnum.alert, - backgroundColor: AppColors.lightGrayBGColor, - chipText: "Relation:${profile.relationship ?? " N/A"}", - iconAsset: AppAssets.heart, - isShowBorder: false, - borderRadius: 8.h, - textColor: AppColors.textColor), - widget.isShowDetails ? SizedBox(height: 4.h) : SizedBox(), - widget.isShowDetails - ? CustomChipWidget( - chipType: ChipTypeEnum.alert, - backgroundColor: AppColors.lightGrayBGColor, - chipText: "Age:${profile.age ?? "N/A"} Years", - isShowBorder: false, - borderRadius: 8.h, - textColor: AppColors.textColor, - ) - : SizedBox(), - widget.isShowDetails - ? SizedBox(height: 8.h) - : SizedBox( - height: 4.h, + Stack( + children: [ + UserAvatarWidget( + width: 56.w, + height: 56.h, + fit: BoxFit.cover, + isCircular: true, + ), + // Camera/Edit button + Positioned( + right: 0, + bottom: 0, + child: Consumer( + builder: (context, profileVm, _) { + return GestureDetector( + onTap: () { + if (!profileVm.isUploadingProfileImage) { + _pickImage(); + } + }, + child: Container( + width: 20.w, + height: 20.h, + decoration: BoxDecoration( + color: AppColors.primaryRedColor, + shape: BoxShape.circle, + border: Border.all( + color: AppColors.whiteColor, + width: 1.5.w, + ), + ), + child: profileVm.isUploadingProfileImage + ? SizedBox( + width: 10.w, + height: 10.h, + child: CircularProgressIndicator( + strokeWidth: 1.5.w, + valueColor: AlwaysStoppedAnimation( + AppColors.whiteColor, + ), + ).paddingAll(4.w), + ) + : Icon( + Icons.camera_alt, + color: AppColors.whiteColor, + size: 10.w, + ), + ), + ); + }, ), - Spacer(), - widget.isForWalletRecharge ? CustomButton( - height: 40.h, - onPressed: () { - widget.onSelect(profile); - // if (canSwitch) widget.onSelect(profile); - }, - text: LocaleKeys.select.tr(context: context), - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 13.h, - icon: AppAssets.activeCheck, - iconColor: isActive || !canSwitch ? (isActive ? null : AppColors.greyTextColor) : AppColors.primaryRedColor, - padding: EdgeInsets.symmetric(vertical: 0, horizontal: 0), - ).paddingOnly(top: 0, bottom: 0) : CustomButton( - height: 40.h, - onPressed: () { - if (canSwitch) widget.onSelect(profile); - }, - text: isActive ? LocaleKeys.active.tr(context: context) : LocaleKeys.switchLogin.tr(context: context), - backgroundColor: isActive || !canSwitch ? Colors.grey.shade200 : AppColors.secondaryLightRedColor, - borderColor: isActive || !canSwitch ? Colors.grey.shade200 : AppColors.secondaryLightRedColor, - textColor: isActive || !canSwitch ? AppColors.greyTextColor : AppColors.primaryRedColor, - fontSize: 13.h, - icon: isActive ? AppAssets.activeCheck : AppAssets.switch_user, - iconColor: isActive || !canSwitch ? (isActive ? null : AppColors.greyTextColor) : AppColors.primaryRedColor, - padding: EdgeInsets.symmetric(vertical: 0, horizontal: 0), - ).paddingOnly(top: 0, bottom: 0), + ), + ], + ), + SizedBox(width: 8.w), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox( + width: MediaQuery.of(context).size.width * 0.6, + child: + "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}".toText18(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 2), + ), + SizedBox(height: 4.h), + Wrap( + direction: Axis.horizontal, + spacing: 4.w, + runSpacing: 6.w, + children: [ + AppCustomChipWidget( + icon: AppAssets.file_icon, + richText: "${LocaleKeys.fileno.tr(context: context)}: ${appState.getAuthenticatedUser()!.patientId}".toText10(isBold: true), + labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + ), + AppCustomChipWidget( + icon: AppAssets.checkmark_icon, + labelText: LocaleKeys.verified.tr(context: context), + iconColor: AppColors.successColor, + labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + ), + ], + ), + ], + ) ], ), - if (widget.isShowRemoveButton) ...[ - Positioned( - top: 0, - right: 0, - child: Utils.buildSvgWithAssets(icon: AppAssets.deleteIcon).onPress(() { - if (!isActive) widget.onRemove(profile); + SizedBox(height: 16.h), + Divider(color: AppColors.dividerColor, height: 1.h), + SizedBox(height: 16.h), + Wrap( + direction: Axis.horizontal, + spacing: 4.h, + runSpacing: 4.h, + children: [ + AppCustomChipWidget( + labelText: LocaleKeys.ageYearsOld.tr(namedArgs: {'age': '${appState.getAuthenticatedUser()!.age}', 'yearsOld': LocaleKeys.yearsOld.tr(context: context)}, context: context), + labelPadding: EdgeInsetsDirectional.only(start: 8.w, end: 8.w), + ), + AppCustomChipWidget( + icon: AppAssets.blood_icon, + labelText: appState.getUserBloodGroup.isEmpty ? "N/A" : appState.getUserBloodGroup, + iconColor: AppColors.primaryRedColor, + labelPadding: EdgeInsetsDirectional.only(start: -6.w, end: 6.w), + padding: EdgeInsets.zero, + ), + Consumer(builder: (context, insuranceVM, child) { + return AppCustomChipWidget( + icon: insuranceVM.isInsuranceExpired + ? AppAssets.cancel_circle_icon + : insuranceVM.isInsuranceActive + ? AppAssets.insurance_active_icon + : AppAssets.alertSquare, + labelText: insuranceVM.isInsuranceExpired + ? LocaleKeys.insuranceExpired.tr(context: context) + : insuranceVM.isInsuranceActive + ? LocaleKeys.insuranceActive.tr(context: context) + : LocaleKeys.insuranceInActive.tr(context: context), + iconColor: insuranceVM.isInsuranceExpired + ? AppColors.primaryRedColor + : insuranceVM.isInsuranceActive + ? AppColors.successColor + : AppColors.warningColorYellow, + textColor: insuranceVM.isInsuranceExpired + ? AppColors.primaryRedColor + : insuranceVM.isInsuranceActive + ? AppColors.successColor + : AppColors.warningColorYellow, + iconSize: 12.w, + deleteIcon: insuranceVM.isInsuranceActive ? null : AppAssets.forward_chevron_icon, + deleteIconColor: insuranceVM.isInsuranceExpired + ? AppColors.primaryRedColor + : insuranceVM.isInsuranceActive + ? AppColors.successColor + : AppColors.warningColorYellow, + deleteIconHasColor: true, + onChipTap: () { + if (!insuranceVM.isInsuranceActive) { + insuranceVM.setIsInsuranceUpdateDetailsLoading(true); + insuranceVM.getPatientInsuranceDetailsForUpdate( + appState.getAuthenticatedUser()!.patientId.toString(), appState.getAuthenticatedUser()!.patientIdentificationNo.toString()); + showCommonBottomSheetWithoutHeight(context, child: PatientInsuranceCardUpdateCard(), callBackFunc: () {}, title: "", isCloseButtonVisible: false, isFullScreen: false); + // showCommonBottomSheetWithoutHeight( + // title: LocaleKeys.notice.tr(context: navigationService.navigatorKey.currentContext!), + // navigationService.navigatorKey.currentContext!, + // child: Utils.getWarningWidget( + // loadingText: LocaleKeys.insuranceInActiveContactSupport.tr(context: context), + // confirmText: LocaleKeys.contactUs.tr(context: context), + // isShowActionButtons: true, + // onCancelTap: () { + // navigationService.pop(); + // }, + // onConfirmTap: () async { + // launchUrl(Uri.parse("tel://" + "+966 92 006 6666")); + // }), + // callBackFunc: () {}, + // isFullScreen: false, + // isCloseButtonVisible: true, + // ); + } + }, + backgroundColor: insuranceVM.isInsuranceExpired + ? AppColors.primaryRedColor.withValues(alpha: 0.1) + : insuranceVM.isInsuranceActive + ? AppColors.successColor.withValues(alpha: 0.1) + : AppColors.warningColorYellow.withValues(alpha: 0.1), + labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: insuranceVM.isInsuranceActive ? 6.w : 0.w), + ).toShimmer2(isShow: insuranceVM.isInsuranceLoading); }), - ), - ], + ], + ), ], ), ), - ); - }, + ).paddingSymmetrical(0.w, 0.0), + SizedBox(height: 16.h), + GridView.builder( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + itemCount: widget.profileViewList!.length, + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 10.w, + mainAxisSpacing: 10.h, + childAspectRatio: _calculateAspectRatio(context), + ), + padding: EdgeInsets.only(bottom: 20.h), + itemBuilder: (context, index) { + final profile = widget.profileViewList![index]; + final isActive = (profile.responseId == appState.getAuthenticatedUser()?.patientId); + final isParentUser = appState.getAuthenticatedUser()?.isParentUser ?? false; + final isSuperUser = appState.getUserSwitchPayloads; + // TODO: canSwitch functionality is currently disabled - set to true to allow all switches + // Original logic: final canSwitch = isParentUser || (!isParentUser && profile.responseId == appState.getSuperUserID); + final canSwitch = true; // Disabled - allows all users to switch + return Container( + padding: EdgeInsets.symmetric(vertical: 12.h, horizontal: 12.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r), + child: Opacity( + opacity: isActive || profile.status == FamilyFileEnum.pending.toInt || !canSwitch ? 0.4 : 1.0, // Fade all content if active + child: Stack( + children: [ + Column( + mainAxisSize: MainAxisSize.min, + children: [ + UserAvatarWidget( + width: 70.h, + height: 66.h, + gender: profile.gender, + age: profile.age, + fit: BoxFit.cover, + customProfileImageData: profile.patientImageData, + isCircular: true, + isFamilyMember: true, // Prevent AppState fallback + ), + SizedBox(height: 4.h), + (profile.patientName ?? "Unknown").toText14(isBold: true, isCenter: true, maxlines: 1), + // SizedBox(height: 8.h), + // CustomChipWidget( + // chipType: ChipTypeEnum.alert, + // backgroundColor: AppColors.lightGrayBGColor, + // chipText: "${LocaleKeys.relationship.tr(context: context)}: ${profile.relationship ?? " N/A"}", + // iconAsset: AppAssets.heart, + // isShowBorder: false, + // borderRadius: 8.h, + // textColor: AppColors.textColor), + widget.isShowDetails ? SizedBox(height: 4.h) : SizedBox(), + widget.isShowDetails + ? Wrap(direction: Axis.horizontal, spacing: 4.h, runSpacing: 4.h, children: [ + AppCustomChipWidget( + icon: AppAssets.file_icon, + richText: "${LocaleKeys.fileno.tr(context: context)}: ${profile.responseId}".toText10(isBold: true), + labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + ), + AppCustomChipWidget( + labelText: "${LocaleKeys.age.tr(context: context)}: ${profile.age ?? "N/A"} ${LocaleKeys.years.tr(context: context)}", + labelPadding: EdgeInsetsDirectional.only(start: 4.w, end: 6.w), + ), + ]) + : SizedBox(), + widget.isShowDetails + ? SizedBox(height: 8.h) + : SizedBox( + height: 4.h, + ), + Spacer(), + widget.isForWalletRecharge + ? CustomButton( + height: 40.h, + onPressed: () { + widget.onSelect(profile); + // if (canSwitch) widget.onSelect(profile); + }, + text: widget.isForWalletRecharge ? LocaleKeys.selectFamilyFile.tr() : LocaleKeys.select.tr(context: context), + backgroundColor: AppColors.secondaryLightRedColor, + borderColor: AppColors.secondaryLightRedColor, + textColor: AppColors.primaryRedColor, + fontSize: 13.h, + icon: AppAssets.activeCheck, + iconColor: isActive || !canSwitch ? (isActive ? null : AppColors.greyTextColor) : AppColors.primaryRedColor, + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 0), + ).paddingOnly(top: 0, bottom: 0) + : CustomButton( + height: 40.h, + onPressed: () { + if (canSwitch) widget.onSelect(profile); + }, + text: isActive ? LocaleKeys.active.tr(context: context) : LocaleKeys.switchLogin.tr(context: context), + backgroundColor: isActive || !canSwitch ? Colors.grey.shade200 : AppColors.secondaryLightRedColor, + borderColor: isActive || !canSwitch ? Colors.grey.shade200 : AppColors.secondaryLightRedColor, + textColor: isActive || !canSwitch ? AppColors.greyTextColor : AppColors.primaryRedColor, + fontSize: 13.h, + icon: isActive ? AppAssets.activeCheck : AppAssets.switch_user, + iconColor: isActive || !canSwitch ? (isActive ? null : AppColors.greyTextColor) : AppColors.primaryRedColor, + padding: EdgeInsets.symmetric(vertical: 0, horizontal: 0), + ).paddingOnly(top: 0, bottom: 0), + ], + ), + if (widget.isShowRemoveButton) ...[ + isParentUser ? Positioned( + top: 0, + right: 0, + child: Utils.buildSvgWithAssets(icon: AppAssets.deleteIcon).onPress(() { + if (!isActive) widget.onRemove(profile); + }), + ) : SizedBox(), + ], + ], + ), + ), + ); + }, + ), + ], ); } } @@ -260,15 +549,15 @@ class _FamilyCardsState extends State { Widget manageFamily() { NavigationService navigationService = getIt(); - return widget.profiles.where((profile) => !(profile.isRequestFromMySide ?? false)).isEmpty + return widget.profileViewList!.where((profile) => !(profile.isRequestFromMySide ?? false)).isEmpty ? Utils.getNoDataWidget(context) : ListView.builder( shrinkWrap: true, physics: NeverScrollableScrollPhysics(), padding: EdgeInsetsGeometry.zero, - itemCount: widget.profiles.where((profile) => !(profile.isRequestFromMySide ?? false)).length, + itemCount: widget.profileViewList!.where((profile) => !(profile.isRequestFromMySide ?? false)).length, itemBuilder: (context, index) { - final otherProfiles = widget.profiles.where((profile) => !(profile.isRequestFromMySide ?? false)).toList(); + final otherProfiles = widget.profileViewList!.where((profile) => !(profile.isRequestFromMySide ?? false)).toList(); FamilyFileResponseModelLists profile = otherProfiles[index]; return Container( margin: EdgeInsets.only(bottom: 12.h), @@ -281,9 +570,8 @@ class _FamilyCardsState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - CustomChipWidget( - height: 30.h, - chipType: ChipTypeEnum.alert, + AppCustomChipWidget( + labelText: profile.statusDescription ?? "N/A", backgroundColor: profile.status == FamilyFileEnum.pending.toInt ? AppColors.alertLightColor.withValues(alpha: 0.20) : profile.status == FamilyFileEnum.rejected.toInt @@ -291,10 +579,6 @@ class _FamilyCardsState extends State { : profile.status == FamilyFileEnum.active.toInt ? AppColors.lightGreenColor : AppColors.lightGrayBGColor, - chipText: profile.statusDescription ?? "N/A", - iconAsset: null, - isShowBorder: false, - borderRadius: 8.h, textColor: profile.status == FamilyFileEnum.pending.toInt ? AppColors.alertLightColor : profile.status == FamilyFileEnum.rejected.toInt @@ -307,29 +591,22 @@ class _FamilyCardsState extends State { Wrap( alignment: WrapAlignment.start, children: [ - (profile.patientName ?? "").toText14(isBold: false, isCenter: true, maxlines: 1, weight: FontWeight.w600), - SizedBox(width: 2.w,), - (getStatusTextByRequest( - FamilyFileEnum.values.firstWhere((e) => e.toInt == profile.status), profile.isRequestFromMySide ?? false)) - .toText14( + (profile.patientName ?? "").toText14(isBold: true, isCenter: true, maxlines: 1), + SizedBox( + width: 2.w, + ), + (getStatusTextByRequest(FamilyFileEnum.values.firstWhere((e) => e.toInt == profile.status), profile.isRequestFromMySide ?? false)).toText14( isBold: false, isCenter: true, maxlines: 1, - weight: FontWeight.w500, + weight: FontWeight.w600, color: AppColors.greyTextColor, ), ], ), SizedBox(height: 8.h), - CustomChipWidget( - height: 30.h, - chipType: ChipTypeEnum.alert, - backgroundColor: AppColors.lightGrayBGColor, - chipText: "${LocaleKeys.medicalFile.tr(context: context)}: ${profile.patientId ?? "N/A"}", - iconAsset: null, - isShowBorder: false, - borderRadius: 8.h, - textColor: AppColors.textColor, + AppCustomChipWidget( + labelText: "${LocaleKeys.medicalFile.tr(context: context)}: ${profile.patientId ?? "N/A"}", ), SizedBox(height: 16.h), Row( @@ -339,6 +616,7 @@ class _FamilyCardsState extends State { : Expanded( child: CustomButton( height: 40.h, + fontSize: 14.f, text: LocaleKeys.acceptLbl.tr(), onPressed: () { navigationService.pop(); @@ -355,6 +633,7 @@ class _FamilyCardsState extends State { Expanded( child: CustomButton( height: 40.h, + fontSize: 14.f, text: profile.status == FamilyFileEnum.active.toInt ? LocaleKeys.removeMember.tr() : LocaleKeys.rejectView.tr(), onPressed: () { navigationService.pop(); diff --git a/lib/presentation/my_invoices/my_invoices_details_page.dart b/lib/presentation/my_invoices/my_invoices_details_page.dart index a38194fe..2b539b24 100644 --- a/lib/presentation/my_invoices/my_invoices_details_page.dart +++ b/lib/presentation/my_invoices/my_invoices_details_page.dart @@ -6,9 +6,11 @@ import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/int_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/my_invoices/models/get_invoice_details_response_model.dart'; +import 'package:hmg_patient_app_new/features/my_invoices/models/get_invoices_list_response_model.dart'; import 'package:hmg_patient_app_new/features/my_invoices/my_invoices_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -16,12 +18,16 @@ import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:open_filex/open_filex.dart'; import 'package:provider/provider.dart'; +import 'dart:ui' as ui; + class MyInvoicesDetailsPage extends StatefulWidget { GetInvoiceDetailsResponseModel getInvoiceDetailsResponseModel; + GetInvoicesListResponseModel getInvoicesListResponseModel; - MyInvoicesDetailsPage({super.key, required this.getInvoiceDetailsResponseModel}); + MyInvoicesDetailsPage({super.key, required this.getInvoiceDetailsResponseModel, required this.getInvoicesListResponseModel}); @override State createState() => _MyInvoicesDetailsPageState(); @@ -40,7 +46,42 @@ class _MyInvoicesDetailsPageState extends State { Expanded( child: CollapsingListView( title: LocaleKeys.invoiceDetails.tr(context: context), - sendEmail: () async { + downloadInvoice: Utils.isVidaPlusProject(widget.getInvoiceDetailsResponseModel.projectID ?? 0) ? null : () { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr(context: context)); + myInvoicesViewModel.downloadInvoicePDF( + setupId: widget.getInvoicesListResponseModel.setupId!, + invoiceNo: widget.getInvoicesListResponseModel.invoiceNo!, + projectID: widget.getInvoicesListResponseModel.projectId!, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + onSuccess: (value) async { + LoaderBottomSheet.hideLoader(); + if (myInvoicesViewModel.downloadInvoicePDFBase64!.isNotEmpty) { + String path = await Utils.createFileFromString(myInvoicesViewModel.downloadInvoicePDFBase64!, "pdf"); + try { + OpenFilex.open(path); + } catch (ex) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: "Cannot open file"), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + } + }, + ); + }, + sendEmail: Utils.isVidaPlusProject(widget.getInvoiceDetailsResponseModel.projectID ?? 0) ? () async { LoaderBottomSheet.showLoader(loadingText: LocaleKeys.sendingEmailPleaseWait.tr(context: context)); await myInvoicesViewModel.sendInvoiceEmail( appointmentNo: widget.getInvoiceDetailsResponseModel.appointmentNo!, @@ -53,6 +94,7 @@ class _MyInvoicesDetailsPageState extends State { callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, + isAutoDismiss: true ); }, onError: (err) { @@ -65,7 +107,7 @@ class _MyInvoicesDetailsPageState extends State { isCloseButtonVisible: true, ); }); - }, + } : null, child: SingleChildScrollView( child: Padding( padding: EdgeInsets.all(24.h), @@ -82,17 +124,61 @@ class _MyInvoicesDetailsPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + Wrap( + alignment: WrapAlignment.start, + direction: Axis.horizontal, + spacing: 6.w, + runSpacing: 6.h, + children: [ + AppCustomChipWidget( + icon: AppAssets.walkin_appointment_icon, + iconColor: AppColors.textColor, + labelText: LocaleKeys.walkin.tr(context: context), + textColor: AppColors.textColor, + ), + AppCustomChipWidget( + labelText: LocaleKeys.outPatient.tr(context: context), + backgroundColor: AppColors.warningColorYellow.withValues(alpha: 0.1), + textColor: AppColors.warningColorYellow, + ), + ], + ), + SizedBox(height: 16.h), Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ Column( children: [ - Image.network( - widget.getInvoiceDetailsResponseModel.doctorImageURL!, + Utils.buildImgWithNetwork( + url: widget.getInvoiceDetailsResponseModel.doctorImageURL ?? 'https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png', + iconColor: AppColors.transparent, width: 63.h, height: 63.h, fit: BoxFit.cover, ).circle(100.r), + Transform.translate( + offset: Offset(0.0, -20.h), + child: Container( + width: 40.w, + height: 40.h, + decoration: BoxDecoration( + color: AppColors.whiteColor, + shape: BoxShape.circle, + border: Border.all( + color: AppColors.scaffoldBgColor, + width: 1.5.w, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h, applyThemeColor: false), + SizedBox(height: 2.h), + "${widget.getInvoicesListResponseModel.decimalDoctorRate ?? '0.0'}".toText11(isBold: true, color: AppColors.textColor), + ], + ), + ).circle(100), + ), ], ), SizedBox(width: 16.w), @@ -100,7 +186,7 @@ class _MyInvoicesDetailsPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - (getIt().isArabic() ? widget.getInvoiceDetailsResponseModel.doctorNameN! : widget.getInvoiceDetailsResponseModel.doctorName!).toText16(isBold: true), + (widget.getInvoiceDetailsResponseModel.doctorName ?? LocaleKeys.doctor.tr(context: context)).toText16(isBold: true), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, @@ -108,24 +194,33 @@ class _MyInvoicesDetailsPageState extends State { runSpacing: 6.h, children: [ AppCustomChipWidget( - labelText: "${LocaleKeys.invoiceNo}: ${widget.getInvoiceDetailsResponseModel.invoiceNo!}", + labelText: "${LocaleKeys.invoiceNo.tr(context: context)}: ${widget.getInvoiceDetailsResponseModel.invoiceNo ?? '-'}", labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w), + isEnglishOnly: true, ), AppCustomChipWidget( - labelText: (widget.getInvoiceDetailsResponseModel.clinicDescription!.length > 15 - ? '${widget.getInvoiceDetailsResponseModel.clinicDescription!.substring(0, 12)}...' - : widget.getInvoiceDetailsResponseModel.clinicDescription!), + labelText: () { + final clinicName = getIt().isArabic() + ? (widget.getInvoiceDetailsResponseModel.clinicDescriptionN ?? widget.getInvoiceDetailsResponseModel.clinicDescription ?? LocaleKeys.clinic.tr(context: context)) + : (widget.getInvoiceDetailsResponseModel.clinicDescription ?? widget.getInvoiceDetailsResponseModel.clinicDescriptionN ?? LocaleKeys.clinic.tr(context: context)); + return clinicName.length > 15 ? '${clinicName.substring(0, 12)}...' : clinicName; + }(), labelPadding: EdgeInsetsDirectional.only(start: 4.w, end: 4.w), ), AppCustomChipWidget( - labelText: widget.getInvoiceDetailsResponseModel.projectName!, + labelText: widget.getInvoiceDetailsResponseModel.projectName ?? LocaleKeys.hospital.tr(context: context), labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w), ), - AppCustomChipWidget( - labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), - icon: AppAssets.doctor_calendar_icon, - labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(widget.getInvoiceDetailsResponseModel.appointmentDate), false), - ), + if (widget.getInvoiceDetailsResponseModel.appointmentDate != null) + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + icon: AppAssets.doctor_calendar_icon, + labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(widget.getInvoiceDetailsResponseModel.appointmentDate), false), + isEnglishOnly: true, + ), + ), ], ), ], @@ -149,63 +244,81 @@ class _MyInvoicesDetailsPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - widget.getInvoiceDetailsResponseModel.listConsultation!.first.procedureName!.toText16(isBold: true), + LocaleKeys.insurance.tr(context: context).toText16(isBold: true), SizedBox(height: 16.h), - Wrap( - direction: Axis.horizontal, - spacing: 6.w, - runSpacing: 6.h, + (getIt().isArabic() + ? (widget.getInvoiceDetailsResponseModel.groupNameN ?? widget.getInvoiceDetailsResponseModel.groupName ?? LocaleKeys.insurance.tr(context: context)) + : (widget.getInvoiceDetailsResponseModel.groupName ?? widget.getInvoiceDetailsResponseModel.groupNameN ?? LocaleKeys.insurance.tr(context: context)) + ).toText14(isBold: true), + Row( children: [ - AppCustomChipWidget( - labelText: "${LocaleKeys.quantity.tr()}: ${widget.getInvoiceDetailsResponseModel.listConsultation!.first.quantity!}", - labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w), - ), - AppCustomChipWidget( - labelText: "${LocaleKeys.price.tr()}: ${widget.getInvoiceDetailsResponseModel.listConsultation!.first.price!} ${LocaleKeys.sar.tr()}", - labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w), - ), - AppCustomChipWidget( - labelText: "${LocaleKeys.total.tr()}: ${widget.getInvoiceDetailsResponseModel.listConsultation!.first.total!} ${LocaleKeys.sar.tr()}", - labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w), - ), + Expanded(child: (widget.getInvoiceDetailsResponseModel.companyName ?? "").toText14(isBold: true)), ], ), + SizedBox(height: 12.h), + // Row( + // children: [ + // AppCustomChipWidget( + // labelText: "Insurance ID: ${widget.getInvoiceDetailsResponseModel.insuranceID ?? "-"}", + // labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w), + // isEnglishOnly: true, + // ), + // ], + // ), ], ), ), ), SizedBox(height: 16.h), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.h, - hasShadow: true, - ), - child: Padding( - padding: EdgeInsets.all(14.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - "Insurance Details".toText16(isBold: true), - SizedBox(height: 16.h), - widget.getInvoiceDetailsResponseModel.groupName!.toText14(isBold: true), - Row( - children: [ - Expanded(child: widget.getInvoiceDetailsResponseModel.companyName!.toText14(isBold: true)), - ], + Row( + mainAxisSize: MainAxisSize.max, + children: [ + Expanded( + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.h, + hasShadow: true, ), - SizedBox(height: 12.h), - Row( - children: [ - AppCustomChipWidget( - labelText: "Insurance ID: ${widget.getInvoiceDetailsResponseModel.insuranceID ?? "-"}", - labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w), - ), - ], + child: Padding( + padding: EdgeInsets.all(14.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Header row + Row( + children: [ + Expanded(flex: 3, child: LocaleKeys.name.tr().toText12(color: AppColors.textColor, isBold: true)), + Expanded(flex: 1, child: LocaleKeys.quantity.tr().toText12(color: AppColors.textColor, isBold: true, isCenter: true)), + Expanded( + flex: 2, child: LocaleKeys.price.tr().toText12(color: AppColors.textColor, isBold: true, isCenter: true)), + Expanded( + flex: 2, child: LocaleKeys.total.tr().toText12(color: AppColors.textColor, isBold: true, isCenter: true)), + ], + ), + SizedBox(height: 16.h), + 2.divider, + SizedBox(height: 12.h), + // Data rows + ...widget.getInvoiceDetailsResponseModel.listConsultation!.map( + (consultation) => Padding( + padding: EdgeInsets.symmetric(vertical: 6.h), + child: Row( + children: [ + Expanded(flex: 3, child: (consultation.procedureName ?? '-').toText12(isBold: true)), + Expanded(flex: 1, child: '${consultation.quantity ?? '-'}'.toText12(isBold: true, isCenter: true, isEnglishOnly: true)), + Expanded(flex: 2, child: (NumberFormat.decimalPattern().format(consultation.totalPatientShare) ?? '-').toText12(isBold: true, isCenter: true, isEnglishOnly: true)), + Expanded(flex: 2, child: (NumberFormat.decimalPattern().format(consultation.totalPatientShare) ?? '-').toText12(isBold: true, isCenter: true, isEnglishOnly: true)), + ], + ), + ), + ), + ], + ), ), - ], + ), ), - ), + ], ), ], ), @@ -229,7 +342,8 @@ class _MyInvoicesDetailsPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ LocaleKeys.amountBeforeTax.tr(context: context).toText14(isBold: true), - Utils.getPaymentAmountWithSymbol(widget.getInvoiceDetailsResponseModel.listConsultation!.first.totalShare.toString().toText16(isBold: true), AppColors.blackColor, 13, + Utils.getPaymentAmountWithSymbol( + NumberFormat.decimalPattern().format(widget.getInvoiceDetailsResponseModel.listConsultation!.first.patientShare).toString().toText16(isBold: true, isEnglishOnly: true), AppColors.blackColor, 13, isSaudiCurrency: true), ], ).paddingSymmetrical(24.h, 0.h), @@ -238,26 +352,37 @@ class _MyInvoicesDetailsPageState extends State { children: [ LocaleKeys.vat15.tr(context: context).toText14(isBold: true, color: AppColors.greyTextColor), Utils.getPaymentAmountWithSymbol( - widget.getInvoiceDetailsResponseModel.listConsultation!.first.totalVATAmount!.toString().toText14(isBold: true, color: AppColors.greyTextColor), AppColors.greyTextColor, 13, + NumberFormat.decimalPattern() + .format(widget.getInvoiceDetailsResponseModel.listConsultation!.first.patientVATAmount!) + .toString() + .toText14(isBold: true, color: AppColors.greyTextColor, isEnglishOnly: true), + AppColors.greyTextColor, + 13, isSaudiCurrency: true), ], ).paddingSymmetrical(24.h, 0.h), SizedBox(height: 16.h), - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - LocaleKeys.discount.tr(context: context).toText14(isBold: true), - Utils.getPaymentAmountWithSymbol(widget.getInvoiceDetailsResponseModel.listConsultation!.first.discountAmount!.toString().toText14(isBold: true, color: AppColors.primaryRedColor), - AppColors.primaryRedColor, 13, - isSaudiCurrency: true), - ], - ).paddingSymmetrical(24.h, 0.h), + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // LocaleKeys.discount.tr(context: context).toText14(isBold: true), + // Utils.getPaymentAmountWithSymbol( + // NumberFormat.decimalPattern() + // .format(widget.getInvoiceDetailsResponseModel.listConsultation!.first.discountAmount!) + // .toString() + // .toText14(isBold: true, color: AppColors.primaryRedColor, isEnglishOnly: true), + // AppColors.primaryRedColor, 13, + // isSaudiCurrency: true), + // ], + // ).paddingSymmetrical(24.h, 0.h), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ LocaleKeys.paid.tr(context: context).toText14(isBold: true), Utils.getPaymentAmountWithSymbol( - widget.getInvoiceDetailsResponseModel.listConsultation!.first.grandTotal!.toString().toText14(isBold: true, color: AppColors.textColor), AppColors.textColor, 13, + NumberFormat.decimalPattern().format(widget.getInvoiceDetailsResponseModel.listConsultation!.first.totalPatientShare!).toString().toText14(isBold: true, color: AppColors.textColor, isEnglishOnly: true), + AppColors.textColor, + 13, isSaudiCurrency: true), ], ).paddingSymmetrical(24.h, 0.h), diff --git a/lib/presentation/my_invoices/my_invoices_list.dart b/lib/presentation/my_invoices/my_invoices_list.dart index 177dde84..67ee05a6 100644 --- a/lib/presentation/my_invoices/my_invoices_list.dart +++ b/lib/presentation/my_invoices/my_invoices_list.dart @@ -5,22 +5,23 @@ import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; -import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; -import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/patient_appointment_history_response_model.dart'; import 'package:hmg_patient_app_new/features/my_invoices/my_invoices_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; -import 'package:hmg_patient_app_new/presentation/appointments/widgets/appointment_card.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; -import 'package:hmg_patient_app_new/presentation/my_invoices/my_invoices_details_page.dart'; +import 'package:hmg_patient_app_new/presentation/my_invoices/widgets/invoice_filter_bottom_sheet.dart'; import 'package:hmg_patient_app_new/presentation/my_invoices/widgets/invoice_list_card.dart'; +import 'package:hmg_patient_app_new/presentation/my_invoices/widgets/pharmacy_invoice_card.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; -import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:open_filex/open_filex.dart'; import 'package:provider/provider.dart'; +import '../../widgets/buttons/custom_button.dart'; + class MyInvoicesList extends StatefulWidget { const MyInvoicesList({super.key}); @@ -40,6 +41,75 @@ class _MyInvoicesListState extends State { super.initState(); } + void _showHospitalFilterBottomSheet(BuildContext context) { + myInvoicesViewModel.prepareFilterList(InvoiceFilterType.hospital); + + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.selectHospital.tr(context: context), + context, + child: InvoiceFilterBottomSheet( + title: LocaleKeys.hospital.tr(context: context), + onItemSelected: (selectedHospital) { + Navigator.pop(context); + myInvoicesViewModel.filterInvoicesByHospital(selectedHospital); + }, + ), + isFullScreen: false, + isCloseButtonVisible: true, + hasBottomPadding: false, + backgroundColor: AppColors.bottomSheetBgColor, + callBackFunc: () { + myInvoicesViewModel.clearFilterSearch(); + }, + ); + } + + void _showClinicFilterBottomSheet(BuildContext context) { + myInvoicesViewModel.prepareFilterList(InvoiceFilterType.clinic); + + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.selectClinic.tr(context: context), + context, + child: InvoiceFilterBottomSheet( + title: LocaleKeys.clinic.tr(context: context), + onItemSelected: (selectedClinic) { + Navigator.pop(context); + myInvoicesViewModel.filterInvoicesByClinic(selectedClinic); + }, + ), + isFullScreen: false, + isCloseButtonVisible: true, + hasBottomPadding: false, + backgroundColor: AppColors.bottomSheetBgColor, + callBackFunc: () { + myInvoicesViewModel.clearFilterSearch(); + }, + ); + } + + void _showDoctorFilterBottomSheet(BuildContext context) { + myInvoicesViewModel.prepareFilterList(InvoiceFilterType.doctor); + + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.selectDoctor.tr(context: context), + context, + child: InvoiceFilterBottomSheet( + title: LocaleKeys.doctor.tr(context: context), + onItemSelected: (selectedDoctor) { + Navigator.pop(context); + myInvoicesViewModel.filterInvoicesByDoctor(selectedDoctor); + }, + ), + isFullScreen: false, + isCloseButtonVisible: true, + hasBottomPadding: false, + backgroundColor: AppColors.bottomSheetBgColor, + callBackFunc: () { + myInvoicesViewModel.clearFilterSearch(); + }, + ); + } + @override Widget build(BuildContext context) { myInvoicesViewModel = Provider.of(context, listen: false); @@ -50,63 +120,290 @@ class _MyInvoicesListState extends State { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - SizedBox(height: 24.h), - ListView.builder( - itemCount: myInvoicesVM.isInvoicesListLoading ? 4 : myInvoicesVM.allInvoicesList.isEmpty ? 1 : myInvoicesVM.allInvoicesList.length, - physics: NeverScrollableScrollPhysics(), - shrinkWrap: true, - padding: EdgeInsetsGeometry.zero, - itemBuilder: (context, index) { - return myInvoicesVM.isInvoicesListLoading - ? LabResultItemView( - onTap: () {}, - labOrder: null, - index: index, - isLoading: true, - ) - : myInvoicesVM.allInvoicesList.isNotEmpty ? AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 500), - child: SlideAnimation( - verticalOffset: 100.0, - child: FadeInAnimation( - child: AnimatedContainer( - duration: Duration(milliseconds: 300), - curve: Curves.easeInOut, - child: InvoiceListCard( - getInvoicesListResponseModel: myInvoicesVM.allInvoicesList[index], - onTap: () async { - myInvoicesVM.setInvoiceDetailLoading(); - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingInvoiceDetails.tr(context: context)); - await myInvoicesVM.getInvoiceDetails( - appointmentNo: myInvoicesVM.allInvoicesList[index].appointmentNo!, - invoiceNo: myInvoicesVM.allInvoicesList[index].invoiceNo!, - projectID: myInvoicesVM.allInvoicesList[index].projectID!, - onSuccess: (val) { - LoaderBottomSheet.hideLoader(); - Navigator.of(context).push( - CustomPageRoute( - page: MyInvoicesDetailsPage(getInvoiceDetailsResponseModel: myInvoicesVM.invoiceDetailsResponseModel), - ), - ); - }, - onError: (err) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: err), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }); - }, - ), - ), - ), + SizedBox(height: 16.h), + CustomTabBar( + activeTextColor: Color(0xffED1C2B), + activeBackgroundColor: Color(0xffED1C2B).withValues(alpha: .1), + initialIndex: 0, + tabs: [ + CustomTabBarModel(null, LocaleKeys.visitsOrders.tr(context: context)), + CustomTabBarModel(null, LocaleKeys.pharmacy.tr(context: context)), + ], + onTabChange: (index) { + myInvoicesVM.onTabChanged(index); + if (index == 1 && myInvoicesVM.allPharmacyInvoicesList.isEmpty) { + // Load pharmacy invoices when pharmacy tab is selected and list is empty + myInvoicesVM.getAllPharmacyInvoices(); + } + }, + ).paddingSymmetrical(24.h, 0.h), + myInvoicesVM.selectedTabIndex == 0 + ? Column( + children: [ + SizedBox(height: 16.h), + Row( + children: [ + CustomButton( + text: LocaleKeys.allInvoices.tr(context: context), + onPressed: () { + myInvoicesViewModel.filterInvoices(InvoiceFilterType.all); + }, + backgroundColor: myInvoicesVM.currentFilter == InvoiceFilterType.all ? AppColors.bgRedLightColor : AppColors.whiteColor, + borderColor: myInvoicesVM.currentFilter == InvoiceFilterType.all + ? AppColors.primaryRedColor + : AppColors.textColor.withValues(alpha: 0.2), + textColor: myInvoicesVM.currentFilter == InvoiceFilterType.all ? AppColors.primaryRedColor : AppColors.blackColor, + fontSize: 12, + fontWeight: FontWeight.w600, + borderRadius: 10, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 40.h, ), - ) : Utils.getNoDataWidget(context); - }).paddingSymmetrical(24.w, 0.h), + SizedBox(width: 8.h), + CustomButton( + text: LocaleKeys.hospitals.tr(context: context), + onPressed: () { + if (myInvoicesVM.getOriginalInvoicesList().isEmpty) return; + _showHospitalFilterBottomSheet(context); + }, + backgroundColor: + myInvoicesVM.currentFilter == InvoiceFilterType.hospital ? AppColors.bgRedLightColor : AppColors.whiteColor, + borderColor: myInvoicesVM.currentFilter == InvoiceFilterType.hospital + ? AppColors.primaryRedColor + : AppColors.textColor.withValues(alpha: 0.2), + textColor: myInvoicesVM.currentFilter == InvoiceFilterType.hospital ? AppColors.primaryRedColor : AppColors.blackColor, + fontSize: 12, + fontWeight: FontWeight.w600, + borderRadius: 10, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 40.h, + ), + SizedBox(width: 8.h), + CustomButton( + text: LocaleKeys.clinics.tr(context: context), + onPressed: () { + if (myInvoicesVM.getOriginalInvoicesList().isEmpty) return; + _showClinicFilterBottomSheet(context); + }, + backgroundColor: + myInvoicesVM.currentFilter == InvoiceFilterType.clinic ? AppColors.bgRedLightColor : AppColors.whiteColor, + borderColor: myInvoicesVM.currentFilter == InvoiceFilterType.clinic + ? AppColors.primaryRedColor + : AppColors.textColor.withValues(alpha: 0.2), + textColor: myInvoicesVM.currentFilter == InvoiceFilterType.clinic ? AppColors.primaryRedColor : AppColors.blackColor, + fontSize: 12, + fontWeight: FontWeight.w600, + borderRadius: 10, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 40.h, + ), + SizedBox(width: 8.h), + CustomButton( + text: LocaleKeys.doctors.tr(context: context), + onPressed: () { + if (myInvoicesVM.getOriginalInvoicesList().isEmpty) return; + _showDoctorFilterBottomSheet(context); + }, + backgroundColor: + myInvoicesVM.currentFilter == InvoiceFilterType.doctor ? AppColors.bgRedLightColor : AppColors.whiteColor, + borderColor: myInvoicesVM.currentFilter == InvoiceFilterType.doctor + ? AppColors.primaryRedColor + : AppColors.textColor.withValues(alpha: 0.2), + textColor: myInvoicesVM.currentFilter == InvoiceFilterType.doctor ? AppColors.primaryRedColor : AppColors.blackColor, + fontSize: 12, + fontWeight: FontWeight.w600, + borderRadius: 10, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 40.h, + ), + ], + ).paddingSymmetrical(24.h, 0.h), + SizedBox(height: 16.h), + ListView.builder( + itemCount: myInvoicesVM.isInvoicesListLoading + ? 4 + : myInvoicesVM.allInvoicesList.isEmpty + ? 1 + : myInvoicesVM.allInvoicesList.length, + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + padding: EdgeInsetsGeometry.zero, + itemBuilder: (context, index) { + return myInvoicesVM.isInvoicesListLoading + ? LabResultItemView(onTap: () {}, labOrder: null, index: index, isLoading: true) + : myInvoicesVM.allInvoicesList.isNotEmpty + ? AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + verticalOffset: 100.0, + child: FadeInAnimation( + child: AnimatedContainer( + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + child: InvoiceListCard( + getInvoicesListResponseModel: myInvoicesVM.allInvoicesList[index], + onTap: () async { + if (Utils.isVidaPlusProject(myInvoicesVM.allInvoicesList[index].projectId ?? 0)) { + LoaderBottomSheet.showLoader( + loadingText: LocaleKeys.sendingEmailPleaseWait.tr(context: context)); + await myInvoicesViewModel.sendInvoiceEmail( + appointmentNo: myInvoicesVM.allInvoicesList[index].appointmentNo!, + projectID: myInvoicesVM.allInvoicesList[index].projectId!, + onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight(context, + child: Utils.getSuccessWidget( + loadingText: LocaleKeys.emailSentSuccessfullyMessage.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + isAutoDismiss: true); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr(context: context)); + myInvoicesViewModel.downloadInvoicePDF( + setupId: myInvoicesVM.allInvoicesList[index].setupId!, + invoiceNo: myInvoicesVM.allInvoicesList[index].invoiceNo!, + projectID: myInvoicesVM.allInvoicesList[index].projectId!, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + onSuccess: (value) async { + LoaderBottomSheet.hideLoader(); + if (myInvoicesViewModel.downloadInvoicePDFBase64!.isNotEmpty) { + String path = await Utils.createFileFromString( + myInvoicesViewModel.downloadInvoicePDFBase64!, "pdf"); + try { + OpenFilex.open(path); + } catch (ex) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.cannotOpenThisFile.tr()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + } + }, + ); + } + }, + ), + ), + ), + ), + ) + : Utils.getNoDataWidget(context); + }).paddingSymmetrical(24.w, 0.h), + ], + ) + : Column( + children: [ + SizedBox(height: 16.h), + ListView.builder( + itemCount: myInvoicesVM.isPharmacyInvoicesLoading + ? 4 + : myInvoicesVM.allPharmacyInvoicesList.isEmpty + ? 1 + : myInvoicesVM.allPharmacyInvoicesList.length, + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + padding: EdgeInsetsGeometry.zero, + itemBuilder: (context, index) { + return myInvoicesVM.isPharmacyInvoicesLoading + ? LabResultItemView(onTap: () {}, labOrder: null, index: index, isLoading: true) + : myInvoicesVM.allPharmacyInvoicesList.isNotEmpty + ? AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + verticalOffset: 100.0, + child: FadeInAnimation( + child: AnimatedContainer( + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + child: PharmacyInvoiceCard( + pharmacyInvoice: myInvoicesVM.allPharmacyInvoicesList[index], + onTap: () async { + // if (Utils.isVidaPlusProject(myInvoicesVM.allPharmacyInvoicesList[index].projectID ?? 0)) { + // // For Vida+ projects, send email (if API is available) + // showCommonBottomSheetWithoutHeight( + // context, + // child: Utils.getSuccessWidget( + // loadingText: LocaleKeys.comingSoon.tr(context: context), + // ), + // callBackFunc: () {}, + // isFullScreen: false, + // isCloseButtonVisible: true, + // isAutoDismiss: true, + // ); + // } else { + // Download pharmacy invoice PDF + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr(context: context)); + myInvoicesViewModel.downloadPharmacyInvoicePDF( + setupId: myInvoicesVM.allPharmacyInvoicesList[index].setupId ?? "", + invoiceNo: myInvoicesVM.allPharmacyInvoicesList[index].invoiceNo ?? 0, + projectID: myInvoicesVM.allPharmacyInvoicesList[index].pharmacyProjectID ?? 0, + locationID: myInvoicesVM.allPharmacyInvoicesList[index].locationID ?? 0, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + onSuccess: (value) async { + LoaderBottomSheet.hideLoader(); + if (myInvoicesViewModel.downloadPharmacyInvoicePDFBase64!.isNotEmpty) { + String path = await Utils.createFileFromString( + myInvoicesViewModel.downloadPharmacyInvoicePDFBase64!, "pdf"); + try { + OpenFilex.open(path); + } catch (ex) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: "Cannot open file"), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + } + }, + ); + // } + }, + ), + ), + ), + ), + ) + : Utils.getNoDataWidget(context); + }).paddingSymmetrical(24.w, 0.h), + ], + ), ], ); }), diff --git a/lib/presentation/my_invoices/widgets/invoice_filter_bottom_sheet.dart b/lib/presentation/my_invoices/widgets/invoice_filter_bottom_sheet.dart new file mode 100644 index 00000000..ada8b466 --- /dev/null +++ b/lib/presentation/my_invoices/widgets/invoice_filter_bottom_sheet.dart @@ -0,0 +1,133 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/enums.dart'; +import 'package:hmg_patient_app_new/core/utils/debouncer.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/my_invoices/my_invoices_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/input_widget.dart'; +import 'package:provider/provider.dart'; + +class InvoiceFilterBottomSheet extends StatelessWidget { + final Function(String) onItemSelected; + final String title; + + const InvoiceFilterBottomSheet({ + super.key, + required this.onItemSelected, + required this.title, + }); + + @override + Widget build(BuildContext context) { + final debouncer = Debouncer(milliseconds: 500); + + return Consumer( + builder: (context, vm, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + TextInputWidget( + labelText: LocaleKeys.search.tr(context: context), + hintText: "${LocaleKeys.search.tr(context: context)} $title", + controller: vm.filterSearchController, + onChange: (value) { + debouncer.run(() { + vm.searchFilterItems(value ?? ""); + }); + }, + isEnable: true, + prefix: null, + autoFocus: false, + isBorderAllowed: false, + keyboardType: TextInputType.text, + isAllowLeadingIcon: true, + selectionType: SelectionTypeEnum.search, + padding: EdgeInsets.symmetric( + vertical: ResponsiveExtension(10).h, + horizontal: ResponsiveExtension(15).h, + ), + ), + SizedBox(height: 24.h), + SizedBox( + height: MediaQuery.sizeOf(context).height * 0.4, + child: vm.filterDisplayList.isEmpty + ? Center( + child: Text( + "No $title found", + style: TextStyle( + fontSize: 16, + color: AppColors.greyTextColor, + ), + ), + ) + : ListView.separated( + itemBuilder: (_, index) { + final item = vm.filterDisplayList[index]; + return FilterListItem( + itemName: item, + ).onPress(() { + vm.selectFilterItem(item); + onItemSelected(item); + }); + }, + separatorBuilder: (_, __) => SizedBox(height: 16.h), + itemCount: vm.filterDisplayList.length, + ), + ), + ], + ); + }, + ); + } +} + +class FilterListItem extends StatelessWidget { + final String itemName; + + const FilterListItem({super.key, required this.itemName}); + + AppState get appState => getIt.get(); + + @override + Widget build(BuildContext context) { + return DecoratedBox( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.h, + hasShadow: false, + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Text( + itemName, + style: TextStyle( + fontWeight: FontWeight.w600, + fontSize: 16, + color: AppColors.blackColor, + ), + ), + ), + Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.forward_arrow_icon_small, + iconColor: AppColors.blackColor, + width: 18.h, + height: 13.h, + fit: BoxFit.contain, + ), + ), + ], + ).paddingSymmetrical(16.h, 16.h), + ); + } +} diff --git a/lib/presentation/my_invoices/widgets/invoice_list_card.dart b/lib/presentation/my_invoices/widgets/invoice_list_card.dart index 6e0fa0e4..8fea72fc 100644 --- a/lib/presentation/my_invoices/widgets/invoice_list_card.dart +++ b/lib/presentation/my_invoices/widgets/invoice_list_card.dart @@ -1,3 +1,5 @@ +import 'dart:ui' as ui; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -9,25 +11,67 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/my_invoices/models/get_invoices_list_response_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/refund_request_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/refund_request/refund_request_create_page.dart'; +import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:provider/provider.dart'; class InvoiceListCard extends StatelessWidget { final GetInvoicesListResponseModel getInvoicesListResponseModel; - Function? onTap; + final Function? onTap; + + const InvoiceListCard({super.key, required this.getInvoicesListResponseModel, required this.onTap}); + + void _handleRefundInvoiceTap(BuildContext context) { + final invoiceNo = getInvoicesListResponseModel.invoiceNo; + final projectId = getInvoicesListResponseModel.projectId; + + if (invoiceNo == null || projectId == null) { + Navigator.of(context).push( + CustomPageRoute( + page: RefundRequestCreatePage(initialTabIndex: 0, invoice: getInvoicesListResponseModel), + ), + ); + return; + } + + final viewModel = context.read(); - InvoiceListCard({super.key, required this.getInvoicesListResponseModel, required this.onTap}); + LoaderBottomSheet.showLoader(); + + viewModel.checkIsRefundableInvoice( + invoiceNo: invoiceNo, + projectId: projectId, + onSuccess: (result) { + LoaderBottomSheet.hideLoader(); + if (result.isRefundable == true) { + Navigator.of(context).push( + CustomPageRoute( + page: RefundRequestCreatePage(initialTabIndex: 0, invoice: getInvoicesListResponseModel), + ), + ); + } else { + final message = result.message?.isNotEmpty == true ? result.message! : LocaleKeys.thisInvoiceIsNotEligibleForRefund.tr(context: context); + getIt().showErrorBottomSheet(message: message); + } + }, + onError: (error) { + LoaderBottomSheet.hideLoader(); + getIt().showErrorBottomSheet(message: error); + }, + ); + } @override Widget build(BuildContext context) { return Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.h, - hasShadow: true, - ), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), child: Padding( padding: EdgeInsets.all(14.h), child: Column( @@ -42,13 +86,13 @@ class InvoiceListCard extends StatelessWidget { AppCustomChipWidget( icon: AppAssets.walkin_appointment_icon, iconColor: AppColors.textColor, - labelText: LocaleKeys.walkin.tr(context: context), + labelText: LocaleKeys.walkin.tr(), textColor: AppColors.textColor, ), AppCustomChipWidget( labelText: LocaleKeys.outPatient.tr(context: context), - backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.1), - textColor: AppColors.primaryRedColor, + backgroundColor: AppColors.warningColorYellow.withValues(alpha: 0.1), + textColor: AppColors.warningColorYellow, ), ], ), @@ -58,8 +102,9 @@ class InvoiceListCard extends StatelessWidget { children: [ Column( children: [ - Image.network( - getInvoicesListResponseModel.doctorImageURL!, + Utils.buildImgWithNetwork( + url: getInvoicesListResponseModel.doctorImageUrl ?? 'https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png', + iconColor: AppColors.transparent, width: 63.h, height: 63.h, fit: BoxFit.cover, @@ -71,10 +116,10 @@ class InvoiceListCard extends StatelessWidget { height: 40.h, decoration: BoxDecoration( color: AppColors.whiteColor, - shape: BoxShape.circle, // Makes the container circular + shape: BoxShape.circle, border: Border.all( - color: AppColors.scaffoldBgColor, // Color of the border - width: 1.5.w, // Width of the border + color: AppColors.scaffoldBgColor, + width: 1.5.w, ), ), child: Column( @@ -82,7 +127,7 @@ class InvoiceListCard extends StatelessWidget { children: [ Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h, applyThemeColor: false), SizedBox(height: 2.h), - "${getInvoicesListResponseModel.decimalDoctorRate}".toText11(isBold: true, color: AppColors.textColor), + "${getInvoicesListResponseModel.decimalDoctorRate ?? '0.0'}".toText11(isBold: true, color: AppColors.textColor), ], ), ).circle(100), @@ -94,7 +139,14 @@ class InvoiceListCard extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - (getIt().isArabic() ? getInvoicesListResponseModel.doctorNameN! : getInvoicesListResponseModel.doctorName!).toText16(isBold: true), + (getIt().isArabic() + ? (getInvoicesListResponseModel.doctorNameN ?? + getInvoicesListResponseModel.doctorName ?? + LocaleKeys.doctor.tr(context: context)) + : (getInvoicesListResponseModel.doctorName ?? + getInvoicesListResponseModel.doctorNameN ?? + LocaleKeys.doctor.tr(context: context))) + .toText16(isBold: true), SizedBox(height: 8.h), Wrap( direction: Axis.horizontal, @@ -102,23 +154,31 @@ class InvoiceListCard extends StatelessWidget { runSpacing: 6.h, children: [ AppCustomChipWidget( - labelText: "${LocaleKeys.invoiceNo}: ${getInvoicesListResponseModel.invoiceNo!}", + labelText: "${LocaleKeys.invoiceNo.tr(context: context)}: ${getInvoicesListResponseModel.invoiceNo ?? '-'}", labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w), + isEnglishOnly: true, ), AppCustomChipWidget( - labelText: - (getInvoicesListResponseModel.clinicName!.length > 15 ? '${getInvoicesListResponseModel.clinicName!.substring(0, 12)}...' : getInvoicesListResponseModel.clinicName!), + labelText: ((getInvoicesListResponseModel.clinicName ?? LocaleKeys.clinic.tr(context: context)).length > 15 + ? '${(getInvoicesListResponseModel.clinicName ?? LocaleKeys.clinic.tr(context: context)).substring(0, 12)}...' + : (getInvoicesListResponseModel.clinicName ?? LocaleKeys.clinic.tr(context: context))), labelPadding: EdgeInsetsDirectional.only(start: 4.w, end: 4.w), ), AppCustomChipWidget( - labelText: getInvoicesListResponseModel.projectName!, + labelText: getInvoicesListResponseModel.projectName ?? LocaleKeys.hospital.tr(context: context), labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w), ), - AppCustomChipWidget( - labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), - icon: AppAssets.doctor_calendar_icon, - labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(getInvoicesListResponseModel.appointmentDate), false), - ), + if (getInvoicesListResponseModel.appointmentDate != null) + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + icon: AppAssets.doctor_calendar_icon, + labelText: + DateUtil.formatDateToDate(DateUtil.convertStringToDate(getInvoicesListResponseModel.appointmentDate), false), + isEnglishOnly: true, + ), + ), ], ), ], @@ -126,24 +186,57 @@ class InvoiceListCard extends StatelessWidget { ), ], ), - SizedBox(height: 16.h), - CustomButton( - text: LocaleKeys.viewInvoiceDetails.tr(context: context), - onPressed: () { - if (onTap != null) { - onTap!(); - } - }, - backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.1), - borderColor: AppColors.primaryRedColor.withValues(alpha: 0.01), - textColor: AppColors.primaryRedColor, - fontSize: 14.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - padding: EdgeInsets.symmetric(horizontal: 10.w), - height: 40.h, - iconSize: 14.h, - ), + if (onTap != null) ...[ + SizedBox(height: 16.h), + Row( + children: [ + Expanded( + child: CustomButton( + // text: LocaleKeys.viewInvoiceDetails.tr(context: context), + text: Utils.isVidaPlusProject(getInvoicesListResponseModel.projectId ?? 0) + ? LocaleKeys.sendEmail.tr(context: context) + : LocaleKeys.downloadInvoice.tr(context: context), + onPressed: () { + if (onTap != null) { + onTap!(); + } + }, + backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.1), + borderColor: AppColors.primaryRedColor.withValues(alpha: 0.01), + textColor: AppColors.primaryRedColor, + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 40.h, + iconSize: 14.h, + ), + ), + // if (getInvoicesListResponseModel.isAllowRefund == true) ...[ + // SizedBox(width: 8.w), + // Expanded( + // child: CustomButton( + // text: LocaleKeys.requestRefund.tr(context: context), + // onPressed: () { + // _handleRefundInvoiceTap(context); + // }, + // icon: AppAssets.refundIcon, + // iconColor: AppColors.caloriesCalculatorColor, + // backgroundColor: AppColors.blueColor.withValues(alpha: 0.14), + // borderColor: AppColors.primaryRedColor.withValues(alpha: 0.01), + // textColor: AppColors.caloriesCalculatorColor, + // fontSize: 14.f, + // fontWeight: FontWeight.w600, + // borderRadius: 12.r, + // padding: EdgeInsets.symmetric(horizontal: 10.w), + // height: 40.h, + // iconSize: 14.h, + // ), + // ), + // ] + ], + ), + ], ], ), ), diff --git a/lib/presentation/my_invoices/widgets/pharmacy_invoice_card.dart b/lib/presentation/my_invoices/widgets/pharmacy_invoice_card.dart new file mode 100644 index 00000000..2aaefcac --- /dev/null +++ b/lib/presentation/my_invoices/widgets/pharmacy_invoice_card.dart @@ -0,0 +1,187 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/my_invoices/models/get_pharmacy_invoices_response_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; + +import 'dart:ui' as ui; + +class PharmacyInvoiceCard extends StatelessWidget { + final GetPharmacyInvoicesResponseModel pharmacyInvoice; + final VoidCallback onTap; + + const PharmacyInvoiceCard({ + super.key, + required this.pharmacyInvoice, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + final isArabic = getIt().isArabic(); + + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.h, + hasShadow: true, + ), + child: Padding( + padding: EdgeInsets.all(14.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Type chips + // Wrap( + // alignment: WrapAlignment.start, + // direction: Axis.horizontal, + // spacing: 6.w, + // runSpacing: 6.h, + // children: [ + // AppCustomChipWidget( + // icon: AppAssets.pharmacy_icon, + // iconColor: AppColors.primaryRedColor, + // labelText: LocaleKeys.pharmacy.tr(context: context), + // textColor: AppColors.primaryRedColor, + // ), + // if (pharmacyInvoice.totalAmount != null) + // AppCustomChipWidget( + // labelText: '${pharmacyInvoice.totalAmount!.toStringAsFixed(2)} ${LocaleKeys.sar.tr(context: context)}', + // backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.1), + // textColor: AppColors.primaryRedColor, + // isEnglishOnly: true, + // ), + // ], + // ), + SizedBox(height: 16.h), + + // Main content row + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Column( + children: [ + Utils.buildImgWithNetwork( + url: pharmacyInvoice.doctorImageURL ?? 'https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png', + iconColor: AppColors.transparent, + width: 63.h, + height: 63.h, + fit: BoxFit.cover, + ).circle(100.r), + Transform.translate( + offset: Offset(0.0, -20.h), + child: Container( + width: 40.w, + height: 40.h, + decoration: BoxDecoration( + color: AppColors.whiteColor, + shape: BoxShape.circle, + border: Border.all( + color: AppColors.scaffoldBgColor, + width: 1.5.w, + ), + ), + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.rating_icon, width: 15.w, height: 15.h, applyThemeColor: false), + SizedBox(height: 2.h), + "${pharmacyInvoice.decimalDoctorRate ?? '0.0'}".toText11(isBold: true, color: AppColors.textColor), + ], + ), + ).circle(100), + ), + ], + ), + SizedBox(width: 16.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (getIt().isArabic() + ? (pharmacyInvoice.doctorNameN ?? pharmacyInvoice.doctorName ?? LocaleKeys.doctor.tr(context: context)) + : (pharmacyInvoice.doctorName ?? pharmacyInvoice.doctorNameN ?? LocaleKeys.doctor.tr(context: context)) + ).toText16(isBold: true), + SizedBox(height: 8.h), + Wrap( + direction: Axis.horizontal, + spacing: 6.w, + runSpacing: 6.h, + children: [ + AppCustomChipWidget( + labelText: "${LocaleKeys.invoiceNo.tr(context: context)}: ${pharmacyInvoice.invoiceNo ?? '-'}", + labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w), + isEnglishOnly: true, + ), + AppCustomChipWidget( + labelText: ((pharmacyInvoice.clinicName ?? LocaleKeys.clinic.tr(context: context)).length > 15 + ? '${(pharmacyInvoice.clinicName ?? LocaleKeys.clinic.tr(context: context)).substring(0, 12)}...' + : (pharmacyInvoice.clinicName ?? LocaleKeys.clinic.tr(context: context))), + labelPadding: EdgeInsetsDirectional.only(start: 4.w, end: 4.w), + ), + AppCustomChipWidget( + labelText: pharmacyInvoice.projectName ?? LocaleKeys.hospital.tr(context: context), + labelPadding: EdgeInsetsDirectional.only(start: 6.w, end: 6.w), + ), + if (pharmacyInvoice.appointmentDate != null) + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + icon: AppAssets.doctor_calendar_icon, + labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(pharmacyInvoice.appointmentDate), false), + isEnglishOnly: true, + ), + ), + ], + ), + ], + ), + ), + ], + ), + SizedBox(height: 16.h), + + // Action button + CustomButton( + text: Utils.isVidaPlusProject(pharmacyInvoice.projectID ?? 0) + ? LocaleKeys.sendEmail.tr(context: context) + : LocaleKeys.downloadInvoice.tr(context: context), + onPressed: onTap, + backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.1), + borderColor: AppColors.primaryRedColor.withValues(alpha: 0.01), + textColor: AppColors.primaryRedColor, + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 40.h, + iconSize: 14.h, + ), + ], + ), + ), + ).paddingOnly(bottom: 16.h); + } + + String _formatDate(String? dateString) { + if (dateString == null || dateString.isEmpty) return '-'; + try { + final date = DateUtil.convertStringToDate(dateString); + return DateUtil.formatDateToDate(date, false); + } catch (e) { + return dateString; + } + } +} + diff --git a/lib/presentation/notifications/notification_details_page.dart b/lib/presentation/notifications/notification_details_page.dart index 1607e8f5..70f87739 100644 --- a/lib/presentation/notifications/notification_details_page.dart +++ b/lib/presentation/notifications/notification_details_page.dart @@ -1,10 +1,13 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:flutter_screenshot_blocker/flutter_screenshot_blocker.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/notifications/models/resp_models/notification_response_model.dart'; +import 'package:hmg_patient_app_new/features/notifications/notifications_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; @@ -20,28 +23,39 @@ class NotificationDetailsPage extends StatelessWidget { @override Widget build(BuildContext context) { - return CollapsingListView( - title: LocaleKeys.notificationDetails.tr(), - // trailing: IconButton( - // icon: Icon( - // Icons.share_outlined, - // size: 24.h, - // color: AppColors.textColor, - // ), - // onPressed: () { - // _shareNotification(); - // }, - // ), - child: SingleChildScrollView( - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox(height: 24.h), - // Notification content card - _buildNotificationCard(context), - SizedBox(height: 24.h), - ], - ).paddingSymmetrical(24.w, 0.h), + getIt.get().markAsRead(notificationID: notification.id ?? 0); + return ScreenshotBlockerWidget( + blockScreenshots: true, // makes this widget appear black in screenshots + detectScreenshots: true, // listen for screenshot attempts + onScreenshotDetected: (event) { + // event.type → 'screenshot_taken' or 'screenshot_blocked' + // ScaffoldMessenger.of(context).showSnackBar( + // SnackBar(content: Text('Screenshots are not allowed!')), + // ); + }, + child: CollapsingListView( + title: LocaleKeys.notificationDetails.tr(), + // trailing: IconButton( + // icon: Icon( + // Icons.share_outlined, + // size: 24.h, + // color: AppColors.textColor, + // ), + // onPressed: () { + // _shareNotification(); + // }, + // ), + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 24.h), + // Notification content card + _buildNotificationCard(context), + SizedBox(height: 24.h), + ], + ).paddingSymmetrical(24.w, 0.h), + ), ), ); } @@ -73,7 +87,7 @@ class NotificationDetailsPage extends StatelessWidget { Icon(Icons.access_time, size: 12.w, color: AppColors.textColor), SizedBox(width: 4.w), _formatTime(notification.isSentOn).toText10( - weight: FontWeight.w500, + weight: FontWeight.w600, color: AppColors.textColor, ), ], @@ -93,7 +107,7 @@ class NotificationDetailsPage extends StatelessWidget { Icon(Icons.calendar_today, size: 12.w, color: AppColors.textColor), SizedBox(width: 4.w), _formatDate(notification.isSentOn).toText10( - weight: FontWeight.w500, + weight: FontWeight.w600, color: AppColors.textColor, ), ], @@ -109,9 +123,9 @@ class NotificationDetailsPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.messageNotification.tr().toText14( - weight: FontWeight.w600, - color: AppColors.greyTextColor, - ), + weight: FontWeight.w600, + color: AppColors.greyTextColor, + ), SizedBox(height: 8.h), notification.message!.toText16( weight: FontWeight.w400, @@ -123,8 +137,7 @@ class NotificationDetailsPage extends StatelessWidget { ), // Notification image (if MessageType is "image") - if (notification.messageType != null && - notification.messageType!.toLowerCase() == "image") + if (notification.messageType != null && notification.messageType!.toLowerCase() == "image") Builder( builder: (context) { // Try to get image URL from videoURL or messageTypeData @@ -147,9 +160,9 @@ class NotificationDetailsPage extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.attachedImage.tr().toText14( - weight: FontWeight.w600, - color: AppColors.greyTextColor, - ), + weight: FontWeight.w600, + color: AppColors.greyTextColor, + ), SizedBox(height: 8.h), ClipRRect( borderRadius: BorderRadius.circular(12.h), @@ -177,8 +190,8 @@ class NotificationDetailsPage extends StatelessWidget { ), SizedBox(height: 8.h), LocaleKeys.failedToLoadImage.tr().toText12( - color: AppColors.greyTextColor, - ), + color: AppColors.greyTextColor, + ), SizedBox(height: 4.h), Text( imageUrl!, @@ -205,10 +218,7 @@ class NotificationDetailsPage extends StatelessWidget { ), child: Center( child: CircularProgressIndicator( - value: loadingProgress.expectedTotalBytes != null - ? loadingProgress.cumulativeBytesLoaded / - loadingProgress.expectedTotalBytes! - : null, + value: loadingProgress.expectedTotalBytes != null ? loadingProgress.cumulativeBytesLoaded / loadingProgress.expectedTotalBytes! : null, ), ), ); @@ -249,7 +259,8 @@ ${notification.message ?? 'Notification'} Time: ${_formatTime(notification.isSentOn)} Date: ${_formatDate(notification.isSentOn)} ${notification.notificationType != null ? '\nType: ${notification.notificationType}' : ''} - '''.trim(); + ''' + .trim(); await Share.share(shareText); } @@ -274,4 +285,3 @@ ${notification.notificationType != null ? '\nType: ${notification.notificationTy } } } - diff --git a/lib/presentation/notifications/notifications_list_page.dart b/lib/presentation/notifications/notifications_list_page.dart index 6c344b2e..77f9a20a 100644 --- a/lib/presentation/notifications/notifications_list_page.dart +++ b/lib/presentation/notifications/notifications_list_page.dart @@ -2,6 +2,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; @@ -9,6 +11,7 @@ import 'package:hmg_patient_app_new/extensions/int_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/notifications/notifications_view_model.dart'; +import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/presentation/notifications/notification_details_page.dart'; @@ -16,110 +19,173 @@ import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:provider/provider.dart'; import 'package:intl/intl.dart'; +import 'dart:ui' as ui; -class NotificationsListPage extends StatelessWidget { +class NotificationsListPage extends StatefulWidget { const NotificationsListPage({super.key}); + @override + State createState() => _NotificationsListPageState(); +} + +class _NotificationsListPageState extends State { + final GlobalKey _bottomKey = GlobalKey(); + + void _scrollToBottom() { + WidgetsBinding.instance.addPostFrameCallback((_) { + final ctx = _bottomKey.currentContext; + if (ctx != null) { + Scrollable.ensureVisible( + ctx, + duration: const Duration(milliseconds: 400), + curve: Curves.easeOut, + ); + } + }); + } + @override Widget build(BuildContext context) { return CollapsingListView( title: LocaleKeys.notification.tr(context: context), - child: SingleChildScrollView( - child: Consumer(builder: (context, notificationsVM, child) { - return Container( - margin: EdgeInsets.symmetric(vertical: 24.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.h, - hasShadow: false, - ), - child: ListView.builder( - itemCount: notificationsVM.isNotificationsLoading ? 4 : notificationsVM.notificationsList.length, - physics: NeverScrollableScrollPhysics(), - shrinkWrap: true, - padding: EdgeInsetsGeometry.zero, - itemBuilder: (context, index) { - return notificationsVM.isNotificationsLoading - ? LabResultItemView( - onTap: () {}, - labOrder: null, - index: index, - isLoading: true, - ) - : AnimationConfiguration.staggeredList( - position: index, - duration: const Duration(milliseconds: 500), - child: SlideAnimation( - verticalOffset: 100.0, - child: FadeInAnimation( - child: GestureDetector( - onTap: () { - Navigator.push( - context, - MaterialPageRoute( - builder: (context) => NotificationDetailsPage( - notification: notificationsVM.notificationsList[index], - ), - ), - ); - }, - child: AnimatedContainer( - duration: Duration(milliseconds: 300), - curve: Curves.easeInOut, - child: Column( + child: Consumer(builder: (context, notificationsVM, child) { + return Column( + children: [ + Container( + margin: EdgeInsets.symmetric(vertical: 24.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: false, + ), + child: ListView.builder( + itemCount: notificationsVM.isNotificationsLoading + ? 4 + // : notificationsVM.notificationsList.length + (notificationsVM.hasMoreNotifications ? 1 : 0), + : notificationsVM.notificationsList.length, + physics: NeverScrollableScrollPhysics(), + shrinkWrap: true, + padding: EdgeInsetsGeometry.zero, + itemBuilder: (context, index) { + if (notificationsVM.isNotificationsLoading) { + return LabResultItemView( + onTap: () {}, + labOrder: null, + index: index, + isLoading: true, + ); + } + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + verticalOffset: 100.0, + child: FadeInAnimation( + child: GestureDetector( + onTap: () { + notificationsVM.markAsRead(notificationID: notificationsVM.notificationsList[index].id ?? 0); + getIt.get().getPatientDashboard(); + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => NotificationDetailsPage( + notification: notificationsVM.notificationsList[index], + ), + ), + ); + }, + child: AnimatedContainer( + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 16.h), + // Message row with red dot for unread + Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - SizedBox(height: 16.h), - // Message row with red dot for unread - Row( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Expanded( - child: notificationsVM.notificationsList[index].message!.toText16( - isBold: (notificationsVM.notificationsList[index].isRead == false), - weight: (notificationsVM.notificationsList[index].isRead == false) - ? FontWeight.w600 - : FontWeight.w400, - ), + Expanded( + child: notificationsVM.notificationsList[index].message!.toText16( + isBold: (notificationsVM.notificationsList[index].isRead == false), + weight: (notificationsVM.notificationsList[index].isRead == false) ? FontWeight.w600 : FontWeight.w400, + ), + ), + SizedBox(width: 8.w), + // Red dot for unread notifications ONLY + if (notificationsVM.notificationsList[index].isRead == false) + Container( + width: 8.w, + height: 8.w, + decoration: BoxDecoration( + color: Colors.red, + shape: BoxShape.circle, ), - SizedBox(width: 8.w), - // Red dot for unread notifications ONLY - if (notificationsVM.notificationsList[index].isRead == false) - Container( - width: 8.w, - height: 8.w, - decoration: BoxDecoration( - color: Colors.red, - shape: BoxShape.circle, - ), - ), - ], + ), + ], + ), + SizedBox(height: 12.h), + // First row: Time and Date chips with arrow + Row( + children: [ + // Time chip with clock icon + Container( + padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), + decoration: BoxDecoration( + color: AppColors.greyColor, + borderRadius: BorderRadius.circular(8), + ), + child: Directionality( + textDirection: ui.TextDirection.ltr, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.access_time, size: 12.w, color: AppColors.textColor), + SizedBox(width: 4.w), + _formatTime(notificationsVM.notificationsList[index].isSentOn).toText10(weight: FontWeight.w600, color: AppColors.textColor, isEnglishOnly: true), + ], + ), + ), ), - SizedBox(height: 12.h), - // First row: Time and Date chips with arrow - Row( - children: [ - // Time chip with clock icon - Container( - padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), - decoration: BoxDecoration( - color: AppColors.greyColor, - borderRadius: BorderRadius.circular(8), - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon(Icons.access_time, size: 12.w, color: AppColors.textColor), - SizedBox(width: 4.w), - _formatTime(notificationsVM.notificationsList[index].isSentOn).toText10( - weight: FontWeight.w500, - color: AppColors.textColor, - ), - ], - ), + SizedBox(width: 8.w), + // Date chip with calendar icon + Container( + padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), + decoration: BoxDecoration( + color: AppColors.greyColor, + borderRadius: BorderRadius.circular(8), + ), + child: Directionality( + textDirection: ui.TextDirection.ltr, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon(Icons.calendar_today, size: 12.w, color: AppColors.textColor), + SizedBox(width: 4.w), + _formatDate(notificationsVM.notificationsList[index].isSentOn).toText10(weight: FontWeight.w600, color: AppColors.textColor, isEnglishOnly: true), + ], ), - SizedBox(width: 8.w), - // Date chip with calendar icon + ), + ), + Spacer(), + // Arrow icon + Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.arrow_forward, + width: 16.w, + height: 16.h, + iconColor: AppColors.greyTextColor, + ), + ), + ], + ), + // Second row: Contains Image chip (if MessageType is "image") + if (notificationsVM.notificationsList[index].messageType != null && notificationsVM.notificationsList[index].messageType!.toLowerCase() == "image") + Padding( + padding: EdgeInsets.only(top: 8.h), + child: Row( + children: [ Container( padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), decoration: BoxDecoration( @@ -129,66 +195,45 @@ class NotificationsListPage extends StatelessWidget { child: Row( mainAxisSize: MainAxisSize.min, children: [ - Icon(Icons.calendar_today, size: 12.w, color: AppColors.textColor), + Icon(Icons.image_outlined, size: 12.w, color: AppColors.textColor), SizedBox(width: 4.w), - _formatDate(notificationsVM.notificationsList[index].isSentOn).toText10( - weight: FontWeight.w500, + LocaleKeys.containsImage.toText10( + weight: FontWeight.w600, color: AppColors.textColor, ), ], ), ), - Spacer(), - // Arrow icon - Utils.buildSvgWithAssets( - icon: AppAssets.arrow_forward, - width: 16.w, - height: 16.h, - iconColor: AppColors.greyTextColor, - ), ], ), - // Second row: Contains Image chip (if MessageType is "image") - if (notificationsVM.notificationsList[index].messageType != null && - notificationsVM.notificationsList[index].messageType!.toLowerCase() == "image") - Padding( - padding: EdgeInsets.only(top: 8.h), - child: Row( - children: [ - Container( - padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), - decoration: BoxDecoration( - color: AppColors.greyColor, - borderRadius: BorderRadius.circular(8), - ), - child: Row( - mainAxisSize: MainAxisSize.min, - children: [ - Icon(Icons.image_outlined, size: 12.w, color: AppColors.textColor), - SizedBox(width: 4.w), - 'Contains Image'.toText10( - weight: FontWeight.w500, - color: AppColors.textColor, - ), - ], - ), - ), - ], - ), - ), - SizedBox(height: 16.h), - 1.divider, - ], - ), - ), + ), + SizedBox(height: 16.h), + 1.divider, + ], ), ), ), - ); - }).paddingSymmetrical(16.w, 0.h), - ).paddingSymmetrical(24.w, 0.h); - }), - ), + ), + ), + ); + }).paddingSymmetrical(16.w, 0.h), + ).paddingSymmetrical(24.w, 0.h), + SizedBox(height: 16.h), + // SizedBox( + // key: _bottomKey, + // child: "Show more notifications".toText16( + // color: AppColors.primaryRedColor, + // isBold: true, + // isUnderLine: true + // ), + // ).onPress(() async { + // await notificationsVM.loadMoreNotifications(); + // _scrollToBottom(); + // }), + SizedBox(height: 24.h), + ], + ); + }), ); } diff --git a/lib/presentation/offers_and_discounts/offer_and_discounts_full_screen_swiper_page.dart b/lib/presentation/offers_and_discounts/offer_and_discounts_full_screen_swiper_page.dart new file mode 100644 index 00000000..4d377462 --- /dev/null +++ b/lib/presentation/offers_and_discounts/offer_and_discounts_full_screen_swiper_page.dart @@ -0,0 +1,247 @@ +import 'package:flutter/cupertino.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:share_plus/share_plus.dart'; + +class OfferAndDiscountsFullScreenSwiperPage extends StatefulWidget { + final List? images; + final int initialIndex; + + const OfferAndDiscountsFullScreenSwiperPage({ + super.key, + this.images, + this.initialIndex = 0, + }); + + @override + State createState() => _OfferAndDiscountsFullScreenSwiperPageState(); +} + +class _OfferAndDiscountsFullScreenSwiperPageState extends State { + late PageController _pageController; + late int _currentPage; + late List _promoImages; + + @override + void initState() { + super.initState(); + // Use provided images or default demo images + _promoImages = widget.images ?? + [ + 'assets/images/offersanddiscounts/promo.jpg', + 'assets/images/offersanddiscounts/promo.jpg', + 'assets/images/offersanddiscounts/promo.jpg', + 'assets/images/offersanddiscounts/promo.jpg', + ]; + _currentPage = widget.initialIndex; + _pageController = PageController(initialPage: widget.initialIndex); + } + + @override + void dispose() { + _pageController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: const Color(0xFFADA6D0), + body: SafeArea( + child: Stack( + children: [ + // Main content area + Column( + children: [ + SizedBox(height: 26.h), + + // Page indicators + _buildPageIndicators(), + + SizedBox(height: 70.h), + + // Swipeable image section + Expanded( + child: PageView.builder( + controller: _pageController, + onPageChanged: (index) { + setState(() { + _currentPage = index; + }); + }, + itemCount: _promoImages.length, + itemBuilder: (context, index) { + return Center( + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 24.w, vertical: 0.h), + child: Transform.flip( + flipX: getIt.get().isArabic(), + child: ClipRRect( + borderRadius: BorderRadius.circular(16.r), + child: Utils.buildImgWithAssets( + icon: _promoImages[index], + fit: BoxFit.contain, + ), + ), + ), + ), + ); + }, + ), + ), + + SizedBox(height: 70.h), + // Bottom action buttons + _buildBottomActions(), + + SizedBox(height: 12.h), + ], + ), + + // Close button (top right) + Positioned( + top: 26.h + 14.h, // After indicator spacing + right: 24.w, + child: _buildCloseButton()), + ], + ), + ), + ); + } + + Widget _buildPageIndicators() { + return Padding( + padding: EdgeInsets.symmetric(horizontal: 24.w), + child: Row( + children: List.generate( + _promoImages.length, + (index) => Expanded( + child: Container( + margin: EdgeInsets.only( + right: index < _promoImages.length - 1 ? 4.w : 0, + ), + height: 4.h, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(2.r), + // Fill bar if it's current page or any previous page + color: index <= _currentPage ? Colors.white : const Color(0x33000000), // 20% opacity + ), + ), + ), + ), + ), + ); + } + + Widget _buildCloseButton() { + return GestureDetector( + onTap: () { + Navigator.of(context).pop(); + }, + child: Container( + width: 32.w, + height: 32.h, + decoration: BoxDecoration( + color: const Color(0x33FFFFFF), // 20% opacity + borderRadius: BorderRadius.circular(8.r), + ), + child: Center( + child: Icon( + Icons.close, + color: AppColors.textColor, + size: 20.h, + ), + ), + ), + ); + } + + Widget _buildBottomActions() { + return Padding( + padding: EdgeInsets.symmetric(horizontal: 24.w), + child: Row( + children: [ + // Buy Now button (takes remaining space) + Expanded( + child: CustomButton( + text: 'Buy Now', + icon: AppAssets.shoppingCart, + iconColor: AppColors.whiteColor, + onPressed: () { + // Handle buy now action + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + fontSize: 16.f, + isBold: true, + borderRadius: 12.r, + height: 56.h, + ), + ), + + SizedBox(width: 12.w), + + // Next button + _buildIconButton( + svgIcon: AppAssets.nextSwiper, + onTap: () { + if (_currentPage < _promoImages.length - 1) { + _pageController.nextPage( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + ); + } + }, + ), + + SizedBox(width: 12.w), + + _buildIconButton( + svgIcon: AppAssets.share, + onTap: () async { + await Share.share('Check out this amazing offer!'); + }), + ], + ), + ); + } + + Widget _buildIconButton({ + IconData? icon, + String? svgIcon, + required VoidCallback onTap, + }) { + return GestureDetector( + onTap: onTap, + child: Container( + width: 56.w, + height: 56.h, + decoration: BoxDecoration( + color: const Color(0x57303957), // 34% opacity approximation + borderRadius: BorderRadius.circular(12.r), + ), + child: Center( + child: svgIcon != null + ? Utils.buildSvgWithAssets( + icon: svgIcon, + iconColor: AppColors.whiteColor, + width: 24.h, + height: 24.h, + ) + : Icon( + icon!, + color: AppColors.whiteColor, + size: 24.h, + ), + ), + ), + ); + } +} diff --git a/lib/presentation/offers_and_discounts/offers_and_discounts_detailed_page.dart b/lib/presentation/offers_and_discounts/offers_and_discounts_detailed_page.dart new file mode 100644 index 00000000..ed78dffb --- /dev/null +++ b/lib/presentation/offers_and_discounts/offers_and_discounts_detailed_page.dart @@ -0,0 +1,225 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/offers_and_discounts/models/offers_and_discounts_response_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; + +class OffersAndDiscountsDetailedPage extends StatelessWidget { + final OffersAndDiscountsResponseModel offer; + + const OffersAndDiscountsDetailedPage({ + super.key, + required this.offer, + }); + + String _formatDateString(String? dateString) { + if (dateString == null || dateString.isEmpty) return ''; + try { + DateTime date = DateTime.parse(dateString); + return DateFormat('d MMM, yyyy').format(date); + } catch (e) { + return dateString; + } + } + + // Determine the status of the offer based on dates and isActive flag + String _getOfferStatus(String? endDate, bool? isActive) { + if (endDate == null || endDate.isEmpty) return 'Expired'; + try { + DateTime end = DateTime.parse(endDate); + DateTime now = DateTime.now(); + + if (now.isAfter(end)) { + return 'Expired'; + } else { + if (isActive == true) { + return 'Active'; + } else { + return 'Availed'; + } + } + } catch (e) { + return 'Expired'; + } + } + + Color _getStatusBgColor(String status) { + switch (status) { + case 'Active': + return AppColors.successColor.withValues(alpha: 0.1); + case 'Availed': + return AppColors.infoColor.withValues(alpha: 0.1); + case 'Expired': + return AppColors.errorColor.withValues(alpha: 0.1); + default: + return AppColors.greyColor; + } + } + + Color _getStatusTextColor(String status) { + switch (status) { + case 'Active': + return AppColors.successColor; + case 'Availed': + return AppColors.infoColor; + case 'Expired': + return AppColors.errorColor; + default: + return AppColors.textColor; + } + } + + @override + Widget build(BuildContext context) { + final status = _getOfferStatus(offer.endDate, offer.isActive); + + return CollapsingListView( + title: "${LocaleKeys.offers.tr(context: context)} ${LocaleKeys.details.tr(context: context)}", + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Offer Image + if (offer.imageUrl != null) + Stack( + children: [ + ClipRRect( + borderRadius: BorderRadius.circular(24.h), + child: Utils.buildImgWithNetwork( + url: offer.imageUrl!, + iconColor: AppColors.blackBgColor, + width: double.infinity, + height: 250.h, + fit: BoxFit.cover, + errorBuilder: (context, error, stackTrace) { + return Container( + height: 250.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.greyColor, + borderRadius: 24.h, + ), + child: Center( + child: Icon(Icons.image_not_supported, size: 64.h), + ), + ); + }, + ), + ), + // Discount badge at top right on image + // if (offer.discount != null) + // Positioned( + // top: 16.h, + // right: 16.w, + // child: Container( + // padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 8.h), + // decoration: BoxDecoration( + // color: AppColors.primaryRedColor, + // borderRadius: BorderRadius.circular(8.r), + // ), + // child: Text( + // offer.discount!, + // style: TextStyle( + // fontSize: 14.f, + // fontWeight: FontWeight.w700, + // color: AppColors.whiteColor, + // ), + // ), + // ), + // ), + ], + ), + + SizedBox(height: 24.h), + + // Title + if (offer.title != null) + offer.title!.toText24( + isBold: true, + fontWeight: FontWeight.w700, + ), + + SizedBox(height: 16.h), + + // Chips Row (Valid Till and Status) + Wrap( + spacing: 12.w, + runSpacing: 12.h, + children: [ + // Valid till chip + if (offer.endDate != null) + AppCustomChipWidget( + labelText: "Valid till ${_formatDateString(offer.endDate)}", + backgroundColor: AppColors.chipBgColor, + textColor: AppColors.textColor, + icon: AppAssets.calendar, + iconSize: 14.h, + iconColor: AppColors.textColor, + isEnglishOnly: true, + ), + // Status chip + AppCustomChipWidget( + labelText: status, + backgroundColor: _getStatusBgColor(status), + textColor: _getStatusTextColor(status), + ), + // Facility type chip + if (offer.facilityType != null) + AppCustomChipWidget( + labelText: offer.facilityType!, + backgroundColor: AppColors.chipBgColor, + textColor: AppColors.textColor, + ), + ], + ), + + SizedBox(height: 32.h), + + // Description Heading + LocaleKeys.description.tr(context: context).toText18( + isBold: true, + weight: FontWeight.w700, + ), + + SizedBox(height: 12.h), + + // Description Content + if (offer.description != null) + offer.description!.toText16( + color: AppColors.greyTextColor, + height: 1.5, + ), + + SizedBox(height: 32.h), + + // Buy Now Button + CustomButton( + text: "Buy Now", + icon: AppAssets.shoppingCart, + iconColor: AppColors.whiteColor, + onPressed: () { + // Handle buy now action + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + fontSize: 16.f, + isBold: true, + borderRadius: 12.r, + height: 56.h, + ), + + SizedBox(height: 24.h), + ], + ).paddingSymmetrical(24.h, 0.h), + ), + ); + } +} diff --git a/lib/presentation/offers_and_discounts/offers_and_discounts_history_page.dart b/lib/presentation/offers_and_discounts/offers_and_discounts_history_page.dart new file mode 100644 index 00000000..74ef2426 --- /dev/null +++ b/lib/presentation/offers_and_discounts/offers_and_discounts_history_page.dart @@ -0,0 +1,292 @@ +import 'dart:async'; + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/offers_and_discounts/offers_and_discounts_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/offers_and_discounts/offers_and_discounts_detailed_page.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:provider/provider.dart'; + +class OffersAndDiscountsHistoryPage extends StatefulWidget { + const OffersAndDiscountsHistoryPage({super.key}); + + @override + State createState() => _OffersAndDiscountsHistoryPageState(); +} + +class _OffersAndDiscountsHistoryPageState extends State { + late OffersAndDiscountsViewModel offersAndDiscountsViewModel; + late AppState appState; + + @override + void initState() { + scheduleMicrotask(() { + offersAndDiscountsViewModel.getOffersAndDiscountsHistory(); + }); + super.initState(); + } + + String _formatDateString(String? dateString) { + if (dateString == null || dateString.isEmpty) return ''; + try { + DateTime date = DateTime.parse(dateString); + return DateFormat('d MMM, yyyy').format(date); + } catch (e) { + return dateString; + } + } + + // Determine the status of the offer based on dates and isActive flag + String _getOfferStatus(String? endDate, bool? isActive) { + if (endDate == null || endDate.isEmpty) return 'Expired'; + try { + DateTime end = DateTime.parse(endDate); + DateTime now = DateTime.now(); + + if (now.isAfter(end)) { + return 'Expired'; + } else { + // If end date is in future, check isActive flag + if (isActive == true) { + return 'Active'; + } else { + return 'Availed'; + } + } + } catch (e) { + return 'Expired'; + } + } + + Color _getStatusBgColor(String status) { + switch (status) { + case 'Active': + return AppColors.successColor.withValues(alpha: 0.1); + case 'Availed': + return AppColors.infoColor.withValues(alpha: 0.1); + case 'Expired': + return AppColors.errorColor.withValues(alpha: 0.1); + default: + return AppColors.greyColor; + } + } + + Color _getStatusTextColor(String status) { + switch (status) { + case 'Active': + return AppColors.successColor; + case 'Availed': + return AppColors.infoColor; + case 'Expired': + return AppColors.errorColor; + default: + return AppColors.textColor; + } + } + + @override + Widget build(BuildContext context) { + appState = getIt.get(); + offersAndDiscountsViewModel = Provider.of(context, listen: false); + + return CollapsingListView( + title: '${LocaleKeys.order.tr(context: context)} ${LocaleKeys.history.tr(context: context)}', + child: SingleChildScrollView( + child: Consumer(builder: (context, offersAndDiscountVM, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + offersAndDiscountVM.isHistoryLoading + ? Container( + height: 200.h, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: true, + ), + child: Center(child: Utils.getLoadingWidget()), + ).paddingSymmetrical(24.h, 0.h) + : ListView.separated( + padding: EdgeInsets.only(top: 12.h), + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + itemCount: offersAndDiscountVM.filteredHistory.isNotEmpty ? offersAndDiscountVM.filteredHistory.length : 1, + itemBuilder: (context, index) { + if (offersAndDiscountVM.filteredHistory.isEmpty) { + return Utils.getNoDataWidget(context, noDataText: LocaleKeys.noDataAvailable.tr(context: context)); + } + + final offer = offersAndDiscountVM.filteredHistory[index]; + final status = _getOfferStatus(offer.endDate, offer.isActive); + + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + verticalOffset: 100.0, + child: FadeInAnimation( + child: AnimatedContainer( + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: true, + ), + child: Stack( + children: [ + Padding( + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Title with space for status chip + Padding( + padding: EdgeInsets.only(right: 80.w), + child: offer.title?.toText18( + isBold: true, + weight: FontWeight.w700, + ) ?? + SizedBox(), + ), + SizedBox(height: 12.h), + + // Info chips + Wrap( + spacing: 8.w, + runSpacing: 8.h, + children: [ + // Start Date chip + if (offer.startDate != null) + AppCustomChipWidget( + labelText: _formatDateString(offer.startDate), + backgroundColor: AppColors.chipBgColor, + textColor: AppColors.textColor, + icon: AppAssets.calendar, + iconSize: 12.h, + iconColor: AppColors.textColor, + isEnglishOnly: true, + ), + // Hospital/Facility chip + if (offer.facilityType != null) + AppCustomChipWidget( + labelText: offer.facilityType!, + backgroundColor: AppColors.chipBgColor, + textColor: AppColors.textColor, + ), + // Purchase date chip (using startDate as purchased date) + if (offer.startDate != null) + AppCustomChipWidget( + labelText: "Purchased ${_formatDateString(offer.startDate)}", + backgroundColor: AppColors.chipBgColor, + textColor: AppColors.textColor, + isEnglishOnly: true, + ), + // Valid until chip + if (offer.endDate != null) + AppCustomChipWidget( + labelText: "Valid till ${_formatDateString(offer.endDate)}", + backgroundColor: AppColors.chipBgColor, + textColor: AppColors.textColor, + icon: AppAssets.calendar, + iconSize: 12.h, + iconColor: AppColors.textColor, + isEnglishOnly: true, + ), + // Order ID chip (using offer.id) + if (offer.id != null) + AppCustomChipWidget( + labelText: "ID: #${offer.id}", + backgroundColor: AppColors.chipBgColor, + textColor: AppColors.textColor, + isEnglishOnly: true, + ), + ], + ), + SizedBox(height: 16.h), + + // Action buttons + Row( + children: [ + Expanded( + child: CustomButton( + text: 'View Offer Details', + onPressed: () { + Navigator.of(context).push( + CustomPageRoute( + page: OffersAndDiscountsDetailedPage( + offer: offersAndDiscountVM.filteredOffers[index], + ), + ), + ); + }, + backgroundColor: AppColors.errorColor.withValues(alpha: 0.1), + borderColor: Colors.transparent, + textColor: AppColors.errorColor, + fontSize: 12.f, + isBold: true, + borderRadius: 12.r, + height: 40.h, + ), + ), + SizedBox(width: 12.w), + Expanded( + child: CustomButton( + text: 'View Order Details', + onPressed: () { + // Handle view order details + }, + backgroundColor: AppColors.whiteColor, + borderColor: AppColors.textColor, + textColor: AppColors.textColor, + fontSize: 12.f, + isBold: true, + borderRadius: 12.r, + height: 40.h, + ), + ), + ], + ), + ], + ), + ), + // Status chip at top right + Positioned( + top: 16.h, + right: 16.w, + child: AppCustomChipWidget( + labelText: status, + backgroundColor: _getStatusBgColor(status), + textColor: _getStatusTextColor(status), + ), + ), + ], + ), + ).paddingSymmetrical(24.h, 0.h), + ), + ), + ); + }, + separatorBuilder: (BuildContext cxt, int index) => SizedBox(height: 16.h), + ), + SizedBox(height: 24.h), + ], + ); + }), + ), + ); + } +} diff --git a/lib/presentation/offers_and_discounts/offers_and_discounts_page.dart b/lib/presentation/offers_and_discounts/offers_and_discounts_page.dart new file mode 100644 index 00000000..2a26ac24 --- /dev/null +++ b/lib/presentation/offers_and_discounts/offers_and_discounts_page.dart @@ -0,0 +1,280 @@ +import 'dart:async'; + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/enums.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/offers_and_discounts/offers_and_discounts_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/offers_and_discounts/offers_and_discounts_detailed_page.dart'; +import 'package:hmg_patient_app_new/presentation/offers_and_discounts/offers_and_discounts_history_page.dart'; +import 'package:hmg_patient_app_new/presentation/offers_and_discounts/widgets/offers_and_discount_type_selection_widget.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:provider/provider.dart'; + +import '../../widgets/input_widget.dart'; + +class OffersAndDiscountsPage extends StatefulWidget { + const OffersAndDiscountsPage({super.key}); + + @override + State createState() => _OffersAndDiscountsPageState(); +} + +class _OffersAndDiscountsPageState extends State { + late OffersAndDiscountsViewModel offersAndDiscountsViewModel; + late AppState appState; + final TextEditingController _searchController = TextEditingController(); + + @override + void initState() { + scheduleMicrotask(() { + offersAndDiscountsViewModel.initOffersAndDiscounts(); + }); + super.initState(); + } + + @override + void dispose() { + _searchController.dispose(); + super.dispose(); + } + + + @override + Widget build(BuildContext context) { + appState = getIt.get(); + offersAndDiscountsViewModel = Provider.of(context, listen: false); + + return CollapsingListView( + title: "${LocaleKeys.offers.tr(context: context)} & ${LocaleKeys.discount.tr(context: context)}", + history: () { + Navigator.of(context).push( + CustomPageRoute( + page: OffersAndDiscountsHistoryPage(), + ), + ); + }, + child: SingleChildScrollView( + child: Consumer(builder: (context, offersAndDiscountVM, child) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Search Input + TextInputWidget( + labelText: LocaleKeys.search.tr(context: context), + hintText: LocaleKeys.search.tr(context: context), + controller: _searchController, + onChange: (value) { + offersAndDiscountVM.setSearchQuery(value!); + }, + isEnable: true, + prefix: null, + autoFocus: false, + isBorderAllowed: false, + keyboardType: TextInputType.text, + isAllowLeadingIcon: true, + selectionType: SelectionTypeEnum.search, + padding: EdgeInsets.symmetric( + vertical: ResponsiveExtension(10).h, + horizontal: ResponsiveExtension(15).h, + ), + ), + SizedBox(height: 16.h), + OffersAndDiscountTypeSelectionWidget( + selectedOffers: offersAndDiscountVM.selectedFacilities, + onOfferClicked: (selectedValues) { + offersAndDiscountVM.setSelectedFacility(selectedValues); + }, + ), + + SizedBox(height: 16.h), + + // Offers Grid + offersAndDiscountVM.isOffersLoading + ? GridView.builder( + padding: EdgeInsets.symmetric(horizontal: 24.w), + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 2, + crossAxisSpacing: 16.w, + mainAxisSpacing: 16.h, + childAspectRatio: 0.55, // Adjust this to control card height + ), + itemCount: 6, + // Show 6 loading placeholders + itemBuilder: (context, index) { + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: true, + ), + child: Center(child: Utils.getLoadingWidget()), + ); + }, + ) + : offersAndDiscountVM.filteredOffers.isNotEmpty + ? GridView.builder( + padding: EdgeInsets.symmetric(horizontal: 0.w), + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 2, crossAxisSpacing: 16.w, mainAxisSpacing: 16.h, childAspectRatio: 0.55), + itemCount: offersAndDiscountVM.filteredOffers.length, + itemBuilder: (context, index) { + return AnimationConfiguration.staggeredGrid( + position: index, + duration: const Duration(milliseconds: 500), + columnCount: 2, + child: ScaleAnimation( + child: FadeInAnimation( + child: AnimatedContainer( + duration: Duration(milliseconds: 300), + curve: Curves.easeInOut, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: true, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + if (offersAndDiscountVM.filteredOffers[index].imageUrl != null) + Expanded( + flex: 3, + child: Stack( + children: [ + ClipRRect( + borderRadius: BorderRadius.vertical(top: Radius.circular(24.h)), + child: SizedBox.expand( + child: Utils.buildImgWithNetwork( + url: offersAndDiscountVM.filteredOffers[index].imageUrl!, + iconColor: AppColors.blackBgColor, + fit: BoxFit.cover, + errorBuilder: (context, error, stackTrace) { + return Container( + color: AppColors.greyColor, + child: Center( + child: Icon(Icons.image_not_supported, size: 32.h), + ), + ); + }, + ), + ), + ).onPress(() { + Navigator.of(context).push( + CustomPageRoute( + page: OffersAndDiscountsDetailedPage( + offer: offersAndDiscountVM.filteredOffers[index], + ), + ), + ); + }), + // Discount badge at top right + // if (offersAndDiscountVM.filteredOffers[index].discount != null) + // Positioned( + // top: 8.h, + // right: 8.w, + // child: Container( + // padding: EdgeInsets.symmetric(horizontal: 8.w, vertical: 4.h), + // decoration: BoxDecoration( + // color: AppColors.primaryRedColor, + // borderRadius: BorderRadius.circular(6.r), + // ), + // child: Text( + // offersAndDiscountVM.filteredOffers[index].discount!, + // style: TextStyle( + // fontSize: 10.f, + // fontWeight: FontWeight.w700, + // color: AppColors.whiteColor, + // ), + // ), + // ), + // ), + ], + ), + ), + Expanded( + flex: 3, + child: Padding( + padding: EdgeInsets.all(12.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisSize: MainAxisSize.min, + children: [ + if (offersAndDiscountVM.filteredOffers[index].title != null) + Text( + offersAndDiscountVM.filteredOffers[index].title!, + style: TextStyle( + fontSize: 14.f, + fontWeight: FontWeight.w700, + color: AppColors.textColor, + ), + maxLines: 2, + overflow: TextOverflow.ellipsis, + ), + SizedBox(height: 8.h), + // Valid till chip + if (offersAndDiscountVM.filteredOffers[index].endDate != null) + AppCustomChipWidget( + labelText: "Valid till ${Utils.formatDateToDisplay(offersAndDiscountVM.filteredOffers[index].endDate ?? "")}", + // labelText: "Valid till ${_formatDateString(offersAndDiscountVM.filteredOffers[index].endDate)}", + backgroundColor: AppColors.chipBgColor, + textColor: AppColors.textColor, + icon: AppAssets.calendar, + iconSize: 12.h, + iconColor: AppColors.textColor, + isEnglishOnly: true, + labelPadding: EdgeInsetsDirectional.only(start: 4.w, end: 8.w), + ), + SizedBox(height: 20.h), + CustomButton( + text: 'Buy Now', + icon: AppAssets.shoppingCart, + iconColor: AppColors.whiteColor, + onPressed: () { + // Handle buy now action + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + fontSize: 14.f, + isBold: true, + borderRadius: 12.r, + height: 40.h, + ), + ], + ), + ), + ), + ], + ), + ), + ), + ), + ); + }, + ) + : Padding( + padding: EdgeInsets.symmetric(horizontal: 24.w), + child: Utils.getNoDataWidget(context, noDataText: LocaleKeys.noDataAvailable.tr(context: context)), + ), + SizedBox(height: 24.h), + ], + ).paddingSymmetrical(24.h, 0.h); + }), + ), + ); + } +} diff --git a/lib/presentation/offers_and_discounts/widgets/offers_and_discount_type_selection_widget.dart b/lib/presentation/offers_and_discounts/widgets/offers_and_discount_type_selection_widget.dart new file mode 100644 index 00000000..11713003 --- /dev/null +++ b/lib/presentation/offers_and_discounts/widgets/offers_and_discount_type_selection_widget.dart @@ -0,0 +1,113 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; + +class OffersAndDiscountTypeSelectionWidget extends StatelessWidget { + final List selectedOffers; + final Function(List) onOfferClicked; + + const OffersAndDiscountTypeSelectionWidget({ + super.key, + required this.selectedOffers, + required this.onOfferClicked, + }); + + @override + Widget build(BuildContext context) { + return SingleChildScrollView( + scrollDirection: Axis.horizontal, + child: Row( + children: [ + _buildOfferTypeCard( + context: context, + title: "All Offers", + facilityType: 'All Offers', + isSelected: selectedOffers.contains('All Offers'), + ), + SizedBox(width: 12.w), + _buildOfferTypeCard( + context: context, + title: 'Female', + facilityType: 'Female', + isSelected: selectedOffers.contains('Female'), + ), + SizedBox(width: 12.w), + _buildOfferTypeCard( + context: context, + title: 'OB-Gyne', + facilityType: 'OB-Gyne', + isSelected: selectedOffers.contains('OB-Gyne'), + ), + SizedBox(width: 12.w), + _buildOfferTypeCard( + context: context, + title: 'Dermatology', + facilityType: 'Dermatology', + isSelected: selectedOffers.contains('Dermatology'), + ), + SizedBox(width: 12.w), + _buildOfferTypeCard( + context: context, + title: 'Radiology', + facilityType: 'Radiology', + isSelected: selectedOffers.contains('Radiology'), + ), + ], + ), + ); + } + + Widget _buildOfferTypeCard({ + required BuildContext context, + required String title, + required String facilityType, + required bool isSelected, + }) { + return AnimatedContainer( + duration: Duration(milliseconds: 200), + padding: EdgeInsets.symmetric(vertical: 12.h, horizontal: 16.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: isSelected ? AppColors.bgRedLightColor : AppColors.whiteColor, + borderRadius: 12.r, + hasShadow: true, + side: isSelected ? BorderSide(color: AppColors.primaryRedColor, width: 2) : BorderSide(color: AppColors.borderGrayColor, width: 1), + ), + child: Center( + child: title.toText14( + color: isSelected ? AppColors.primaryRedColor : AppColors.textColor, + weight: isSelected ? FontWeight.w700 : FontWeight.w500, + isBold: isSelected, + ), + ), + ).onPress(() { + List updatedSelection = List.from(selectedOffers); + + if (facilityType == 'All Offers') { + if (updatedSelection.contains('All Offers')) { + updatedSelection.clear(); + } else { + updatedSelection.clear(); + updatedSelection.add('All Offers'); + } + } else { + // Remove "All Offers" if any specific type is selected + updatedSelection.remove('All Offers'); + + // Toggle the clicked facility type + if (updatedSelection.contains(facilityType)) { + updatedSelection.remove(facilityType); + // If no selection left, default to "All Offers" + if (updatedSelection.isEmpty) { + updatedSelection.add('All Offers'); + } + } else { + updatedSelection.add(facilityType); + } + } + + onOfferClicked(updatedSelection); + }); + } +} diff --git a/lib/presentation/offers_and_discounts/widgets/offers_and_discounts.dart b/lib/presentation/offers_and_discounts/widgets/offers_and_discounts.dart new file mode 100644 index 00000000..408831be --- /dev/null +++ b/lib/presentation/offers_and_discounts/widgets/offers_and_discounts.dart @@ -0,0 +1,127 @@ +import 'dart:async'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/presentation/offers_and_discounts/offer_and_discounts_full_screen_swiper_page.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:smooth_corner/smooth_corner.dart'; + +import '../../../core/utils/utils.dart'; + +class OffersAndDiscountsCarousel extends StatefulWidget { + const OffersAndDiscountsCarousel({super.key}); + + @override + State createState() => _OffersAndDiscountsCarouselState(); +} + +class _OffersAndDiscountsCarouselState extends State { + final ScrollController _scrollController = ScrollController(); + Timer? _autoScrollTimer; + + // List of offer images - you can add more images here + final List offerImages = [ + 'assets/images/offersanddiscounts/img1.png', + 'assets/images/offersanddiscounts/img2.png', + 'assets/images/offersanddiscounts/img3.png', + 'assets/images/offersanddiscounts/img1.png', + 'assets/images/offersanddiscounts/img2.png', + 'assets/images/offersanddiscounts/img3.png', + 'assets/images/offersanddiscounts/img1.png', + ]; + + @override + void initState() { + super.initState(); + // _startAutoScroll(); + } + + void _startAutoScroll() { + _autoScrollTimer = Timer.periodic(const Duration(milliseconds: 50), (timer) { + if (_scrollController.hasClients) { + final maxScroll = _scrollController.position.maxScrollExtent; + final currentScroll = _scrollController.position.pixels; + final delta = 1.0; // Scroll speed + + if (currentScroll >= maxScroll) { + // Reset to beginning for infinite scroll effect + _scrollController.jumpTo(0); + } else { + _scrollController.animateTo( + currentScroll + delta, + duration: const Duration(milliseconds: 50), + curve: Curves.linear, + ); + } + } + }); + } + + @override + void dispose() { + _autoScrollTimer?.cancel(); + _scrollController.dispose(); + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return SizedBox( + height: 79.h, + child: ListView.separated( + controller: _scrollController, + scrollDirection: Axis.horizontal, + padding: EdgeInsets.symmetric(horizontal: 0.w), + itemCount: offerImages.length * 100, + itemBuilder: (context, index) { + final imageIndex = index % offerImages.length; + return GestureDetector( + onTap: () { + Navigator.push( + context, + MaterialPageRoute(builder: (context) => const OfferAndDiscountsFullScreenSwiperPage()), + ); + }, + child: _buildOfferItem(offerImages[imageIndex]), + ); + }, + separatorBuilder: (context, index) => SizedBox(width: 12.w), + ), + ); + } + + Widget _buildOfferItem(String imagePath) { + return Container( + width: 79.w, + height: 79.h, + decoration: ShapeDecoration( + shape: SmoothRectangleBorder( + borderRadius: BorderRadius.circular(13.r), + smoothness: 0.6, + side: BorderSide( + color: Color(0xff2E3039), + width: 2.w, + ), + ), + ), + child: ClipRRect( + borderRadius: BorderRadius.circular(13.r), + child: Container( + decoration: BoxDecoration( + border: Border.all(color: AppColors.textColor, width: 2.w), + borderRadius: BorderRadius.circular(11.r), + ), + child: Padding( + padding: const EdgeInsets.all(2.0), + child: ClipRRect( + borderRadius: BorderRadius.circular(11.r), + child: Utils.buildImgWithAssets( + icon: imagePath, + fit: BoxFit.cover, + ), + ), + ), + ), + ), + ); + } +} diff --git a/lib/presentation/onboarding/onboarding_screen.dart b/lib/presentation/onboarding/onboarding_screen.dart index 4855c0cf..0af63b40 100644 --- a/lib/presentation/onboarding/onboarding_screen.dart +++ b/lib/presentation/onboarding/onboarding_screen.dart @@ -143,7 +143,7 @@ class _OnboardingScreenState extends State { }) : CustomButton( text: LocaleKeys.getStarted.tr(context: context), - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, fontSize: 16.f, height: 56.h, textOverflow: TextOverflow.ellipsis, @@ -178,7 +178,7 @@ class _OnboardingScreenState extends State { ), Text( body, - style: TextStyle(fontSize: 16.f, fontWeight: FontWeight.w500, color: AppColors.greyTextColor, letterSpacing: 0, height: 26 / 16), + style: TextStyle(fontSize: 16.f, fontWeight: FontWeight.w600, color: AppColors.greyTextColor, letterSpacing: 0, height: 26 / 16), ), ], ).paddingOnly(left: 24.w, right: 24.w); diff --git a/lib/presentation/parking/paking_page.dart b/lib/presentation/parking/paking_page.dart index db451b27..43b25973 100644 --- a/lib/presentation/parking/paking_page.dart +++ b/lib/presentation/parking/paking_page.dart @@ -1,7 +1,11 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; @@ -101,8 +105,20 @@ class _ParkingPageState extends State { hasShadow: true, ), child: Padding( - padding: EdgeInsets.all(16.h), child: LocaleKeys.parkingDescription.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.textColor)), + padding: EdgeInsets.all(16.h), child: LocaleKeys.parkingDescription.tr(context: context).toText12(isBold: true, color: AppColors.textColor)), ).paddingOnly(top: 16, bottom: 16), + ClipRRect( + borderRadius: BorderRadius.circular(24.r), + child: Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildImgWithAssets( + icon: AppAssets.carParkingService, + fit: BoxFit.fitHeight, + height: 480.h, + width: 520.w, + ), + ), + ), ], ), ), diff --git a/lib/presentation/prescriptions/prescription_ai_analysis_detailed_page.dart b/lib/presentation/prescriptions/prescription_ai_analysis_detailed_page.dart new file mode 100644 index 00000000..82a5d9de --- /dev/null +++ b/lib/presentation/prescriptions/prescription_ai_analysis_detailed_page.dart @@ -0,0 +1,324 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/prescriptions/models/resp_models/prescription_analysis_response_model.dart'; +import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/expandable_list_widget.dart'; +import 'package:provider/provider.dart'; + +class PrescriptionAiAnalysisDetailedPage extends StatefulWidget { + const PrescriptionAiAnalysisDetailedPage({super.key}); + + @override + State createState() => _PrescriptionAiAnalysisDetailedPageState(); +} + +class _PrescriptionAiAnalysisDetailedPageState extends State { + late PrescriptionsViewModel prescriptionsViewModel; + + @override + Widget build(BuildContext context) { + prescriptionsViewModel = Provider.of(context, listen: false); + return CollapsingListView( + isClose: true, + title: LocaleKeys.aiAnalysis.tr(context: context), + child: Consumer( + builder: (context, model, child) { + if (model.prescriptionAnalysisResponse == null) { + return Utils.getNoDataWidget(context); + } + + final analysis = model.prescriptionAnalysisResponse!; + List expandableItems = []; + + // Summary Section + if (analysis.prescriptionSummary != null && analysis.prescriptionSummary!.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor: Colors.transparent, + title: LocaleKeys.summary.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + initiallyExpanded: true, + children: [ + SizedBox(height: 10.h), + SizedBox( + width: double.infinity, + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + side: BorderSide(width: 1, color: Color(0xFF0B85F7)), + ), + padding: EdgeInsets.all(16.r), + child: (analysis.prescriptionSummary ?? "").toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400), + ), + ), + SizedBox(height: 8.h), + ], + ), + ); + } + + // Medicines Analysis Section + if (analysis.medicinesAnalysis != null && analysis.medicinesAnalysis!.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor: Colors.transparent, + title: LocaleKeys.medicinesAnalysis.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + children: [ + SizedBox(height: 10.h), + ...analysis.medicinesAnalysis!.map((medicine) { + return Column( + children: [ + _buildMedicineCard(medicine), + SizedBox(height: 16.h), + ], + ); + }).toList(), + ], + ), + ); + } + + // Important Warnings Section + if (analysis.importantWarnings != null && analysis.importantWarnings!.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor: Colors.transparent, + title: LocaleKeys.importantWarnings.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + children: [ + SizedBox(height: 10.h), + SizedBox( + width: double.infinity, + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + side: BorderSide(width: 1, color: Color(0xFFFF5252)), + ), + padding: EdgeInsets.all(16.r), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: analysis.importantWarnings!.map((warning) { + return Padding( + padding: EdgeInsets.only(bottom: 8.h), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Icon(Icons.warning_amber_rounded, color: Color(0xFFFF5252), size: 18.w), + SizedBox(width: 8.w), + Expanded(child: warning.toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400)), + ], + ), + ); + }).toList(), + ), + ), + ), + SizedBox(height: 8.h), + ], + ), + ); + } + // Medicine Interactions Section + if (analysis.medicineInteractions != null && analysis.medicineInteractions!.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor: Colors.transparent, + title: LocaleKeys.medicineInteractions.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + children: [ + SizedBox(height: 10.h), + SizedBox( + width: double.infinity, + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + side: BorderSide(width: 1, color: Color(0xFFFFAF15)), + ), + padding: EdgeInsets.all(16.r), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: analysis.medicineInteractions!.map((interaction) { + return Padding( + padding: EdgeInsets.only(bottom: 8.h), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Icon(Icons.info_outline, color: Color(0xFFFFAF15), size: 18.w), + SizedBox(width: 8.w), + Expanded(child: interaction.toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400)), + ], + ), + ); + }).toList(), + ), + ), + ), + SizedBox(height: 8.h), + ], + ), + ); + } + + // Follow-up Needed Section + if (analysis.followUpNeeded != null && analysis.followUpNeeded!.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor: Colors.transparent, + title: LocaleKeys.followUpNeeded.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + children: [ + SizedBox(height: 10.h), + SizedBox( + width: double.infinity, + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + side: BorderSide(width: 1, color: AppColors.primaryRedColor), + ), + padding: EdgeInsets.all(16.r), + child: (analysis.followUpNeeded ?? "").toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400), + ), + ), + SizedBox(height: 8.h), + ], + ), + ); + } + + return Column( + children: [ + if (expandableItems.isEmpty) + Utils.getNoDataWidget(context) + else + CustomExpandableList( + expansionMode: ExpansionMode.exactlyOne, + dividerColor: AppColors.dividerColor, + itemPadding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 14.h), + items: expandableItems, + theme: ExpandableListTheme.custom( + defaultTrailingIcon: Utils.buildSvgWithAssets( + icon: AppAssets.arrow_down, + height: 22.h, + width: 22.w, + iconColor: AppColors.textColor, + ), + ), + ).paddingSymmetrical(16.w, 0.0), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Icon(Icons.info_outline, color: AppColors.greyTextColor, size: 20.r), + SizedBox(width: 8.w), + Expanded( + child: ("${LocaleKeys.disclaimer.tr()}: ${LocaleKeys.thisAboveInfoPrescription.tr()}").toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w400), + ), + ], + ).paddingSymmetrical(16.w, 16.h) + ], + ); + }, + ), + ); + } + + Widget _buildMedicineCard(MedicineAnalysis medicine) { + return SizedBox( + width: double.infinity, + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + side: BorderSide(width: 1, color: Color(0xFF4CAF50)), + ), + padding: EdgeInsets.all(16.r), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Medicine Name + (medicine.medicineName ?? "").toText16(isBold: true, color: AppColors.blackColor), + SizedBox(height: 12.h), + + // Benefit + if (medicine.benefit != null && medicine.benefit!.isNotEmpty) ...[ + _buildInfoRow( + icon: Icons.medication_rounded, + iconColor: Color(0xFF4CAF50), + title: LocaleKeys.benefit.tr(context: context), + content: medicine.benefit!, + ), + SizedBox(height: 12.h), + ], + + // Common Side Effects + if (medicine.commonSideEffects != null && medicine.commonSideEffects!.isNotEmpty) ...[ + _buildInfoRow( + icon: Icons.warning_amber_rounded, + iconColor: Color(0xFFFFAF15), + title: LocaleKeys.commonSideEffects.tr(context: context), + content: medicine.commonSideEffects!.join(', '), + ), + SizedBox(height: 12.h), + ], + + // Serious Warnings + // if (medicine.seriousWarnings != null && medicine.seriousWarnings!.isNotEmpty) ...[ + // _buildInfoRow( + // icon: Icons.error_outline, + // iconColor: Color(0xFFFF5252), + // title: LocaleKeys.seriousWarnings.tr(context: context), + // content: medicine.seriousWarnings!.join(', '), + // ), + // SizedBox(height: 12.h), + // ], + + // Storage + if (medicine.storage != null && medicine.storage!.isNotEmpty) ...[ + _buildInfoRow( + icon: Icons.inventory_2_outlined, + iconColor: Color(0xFF2196F3), + title: LocaleKeys.storage.tr(context: context), + content: medicine.storage!, + ), + ], + ], + ), + )); + } + + Widget _buildInfoRow({ + required IconData icon, + required Color iconColor, + required String title, + required String content, + }) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Row( + // children: [ + // // Icon(icon, color: iconColor, size: 18.w), + // SizedBox(width: 8.w), + // // title.toText14(isBold: true, color: AppColors.blackColor), + // ], + // ), + title.toText14(isBold: true, color: AppColors.blackColor), + SizedBox(height: 4.h), + content.toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400), + ], + ); + } +} + diff --git a/lib/presentation/prescriptions/prescription_delivery_order_summary_page.dart b/lib/presentation/prescriptions/prescription_delivery_order_summary_page.dart index d6a616ee..968c4b5b 100644 --- a/lib/presentation/prescriptions/prescription_delivery_order_summary_page.dart +++ b/lib/presentation/prescriptions/prescription_delivery_order_summary_page.dart @@ -1,17 +1,21 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/prescriptions/prescription_delivery_orders_list_page.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; class PrescriptionDeliveryOrderSummaryPage extends StatelessWidget { @@ -22,6 +26,7 @@ class PrescriptionDeliveryOrderSummaryPage extends StatelessWidget { @override Widget build(BuildContext context) { prescriptionsViewModel = Provider.of(context, listen: false); + AppState appState = getIt(); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: Column( @@ -56,8 +61,9 @@ class PrescriptionDeliveryOrderSummaryPage extends StatelessWidget { borderRadius: BorderRadius.all( Radius.circular(5.r), ), - child: Image.network( - prescriptionsViewModel.prescriptionDetailsList[index].imageSRCUrl!, + child: Utils.buildImgWithNetwork( + url: prescriptionsViewModel.prescriptionDetailsList[index].imageSRCUrl!, + iconColor: AppColors.blackBgColor, fit: BoxFit.cover, width: 60.w, height: 70.h, @@ -66,7 +72,7 @@ class PrescriptionDeliveryOrderSummaryPage extends StatelessWidget { Expanded( child: Padding( padding: EdgeInsets.all(8.h), - child: prescriptionsViewModel.prescriptionDetailsList[index].itemDescription!.trim().toText14(weight: FontWeight.w500), + child: prescriptionsViewModel.prescriptionDetailsList[index].itemDescription!.trim().toText14(isBold: true), ), ), ], @@ -94,9 +100,12 @@ class PrescriptionDeliveryOrderSummaryPage extends StatelessWidget { ClipRRect( clipBehavior: Clip.hardEdge, borderRadius: BorderRadius.circular(20.r), - child: Image.network( - "https://maps.googleapis.com/maps/api/staticmap?center=${prescriptionsViewModel.locationGeocodeResponse.results.first.geometry.location.lat},${prescriptionsViewModel.locationGeocodeResponse.results.first.geometry.location.lng}&zoom=15&size=350x165&maptype=roadmap&markers=color:red%7C${prescriptionsViewModel.locationGeocodeResponse.results.first.geometry.location.lat},${prescriptionsViewModel.locationGeocodeResponse.results.first.geometry.location.lng}&key=AIzaSyB6TERnxIr0yJ3qG4ULBZbu0sAD4tGqtng", + child: Utils.buildImgWithNetwork( + url: "https://maps.googleapis.com/maps/api/staticmap?center=${prescriptionsViewModel.locationGeocodeResponse.results.first.geometry.location.lat},${prescriptionsViewModel.locationGeocodeResponse.results.first.geometry.location.lng}&zoom=15&size=350x165&maptype=roadmap&markers=color:red%7C${prescriptionsViewModel.locationGeocodeResponse.results.first.geometry.location.lat},${prescriptionsViewModel.locationGeocodeResponse.results.first.geometry.location.lng}&key=AIzaSyB6TERnxIr0yJ3qG4ULBZbu0sAD4tGqtng", + iconColor: AppColors.blackBgColor, fit: BoxFit.contain, + width: double.infinity, + height: 165.h, ), ), ], @@ -114,7 +123,7 @@ class PrescriptionDeliveryOrderSummaryPage extends StatelessWidget { hasShadow: true, ), child: CustomButton( - text: LocaleKeys.submit.tr(context: context), + text: appState.isArabic() ? "ارسال" : "Submit", onPressed: () async { LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr(context: context)); await prescriptionsViewModel.submitPrescriptionDeliveryRequest( @@ -130,11 +139,18 @@ class PrescriptionDeliveryOrderSummaryPage extends StatelessWidget { child: Utils.getSuccessWidget(loadingText: LocaleKeys.requestSubmittedSuccessfully.tr(context: context)), callBackFunc: () { Navigator.of(context).pop(); + prescriptionsViewModel.getPrescriptionOrdersList(); + Navigator.of(context).push( + CustomPageRoute( + page: PrescriptionDeliveryOrdersListPage(), + ), + ); }, title: "", isCloseButtonVisible: true, isDismissible: false, isFullScreen: false, + isAutoDismiss: true ); }, onError: (err) { @@ -156,7 +172,7 @@ class PrescriptionDeliveryOrderSummaryPage extends StatelessWidget { borderColor: AppColors.successColor.withOpacity(0.01), textColor: AppColors.whiteColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12.r, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 50.h, diff --git a/lib/presentation/prescriptions/prescription_delivery_orders_list_page.dart b/lib/presentation/prescriptions/prescription_delivery_orders_list_page.dart index 7760fd2d..f8d8f820 100644 --- a/lib/presentation/prescriptions/prescription_delivery_orders_list_page.dart +++ b/lib/presentation/prescriptions/prescription_delivery_orders_list_page.dart @@ -2,6 +2,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -20,6 +22,7 @@ class PrescriptionDeliveryOrdersListPage extends StatelessWidget { @override Widget build(BuildContext context) { + AppState appState = getIt(); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( @@ -58,8 +61,7 @@ class PrescriptionDeliveryOrdersListPage extends StatelessWidget { margin: EdgeInsets.symmetric(vertical: 8.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), child: InkWell( - onTap: () { - }, + onTap: () {}, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -70,7 +72,9 @@ class PrescriptionDeliveryOrdersListPage extends StatelessWidget { spacing: 8.h, children: [ RequestStatus(status: model.prescriptionsOrderList[index].statusId ?? 0), - "Req ID: ${model.prescriptionsOrderList[index].iD}".toText16(color: AppColors.textColor, weight: FontWeight.w600), + appState.isArabic() + ? " رقم الطلب: ${model.prescriptionsOrderList[index].iD}".toText16(color: AppColors.textColor, isBold: true) + : "Req ID: ${model.prescriptionsOrderList[index].iD}".toText16(color: AppColors.textColor, isBold: true), Row( spacing: 4.w, children: [ diff --git a/lib/presentation/prescriptions/prescription_detail_page.dart b/lib/presentation/prescriptions/prescription_detail_page.dart index b9b5b789..802c41c2 100644 --- a/lib/presentation/prescriptions/prescription_detail_page.dart +++ b/lib/presentation/prescriptions/prescription_detail_page.dart @@ -4,25 +4,33 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/prescriptions/models/resp_models/patient_prescriptions_response_model.dart'; import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/prescriptions/prescription_ai_analysis_detailed_page.dart'; import 'package:hmg_patient_app_new/presentation/prescriptions/prescription_item_view.dart'; +import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:open_filex/open_filex.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; +import 'dart:ui' as ui; + class PrescriptionDetailPage extends StatefulWidget { PrescriptionDetailPage({super.key, required this.prescriptionsResponseModel, required this.isFromAppointments}); @@ -36,7 +44,6 @@ class PrescriptionDetailPage extends StatefulWidget { class _PrescriptionDetailPageState extends State { late PrescriptionsViewModel prescriptionsViewModel; - bool _isSwitched = false; // Initial state of the switch @override void initState() { @@ -61,8 +68,9 @@ class _PrescriptionDetailPageState extends State { Expanded( child: CollapsingListView( title: LocaleKeys.prescriptions.tr(context: context), - instructions: () async { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPrescriptionPDFPleaseWait.tr(context: context)); + instructions: widget.prescriptionsResponseModel.isInOutPatient ?? false + ? () async { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPrescriptionPDFPleaseWait.tr(context: context)); await prescriptionsViewModel.getPrescriptionInstructionsPDF(widget.prescriptionsResponseModel, onSuccess: (val) { LoaderBottomSheet.hideLoader(); if (prescriptionsViewModel.prescriptionInstructionsPDFLink.isNotEmpty) { @@ -87,7 +95,8 @@ class _PrescriptionDetailPageState extends State { isCloseButtonVisible: true, ); }); - }, + } + : null, child: SingleChildScrollView( child: Consumer(builder: (context, prescriptionVM, child) { return Column( @@ -105,11 +114,20 @@ class _PrescriptionDetailPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + AppCustomChipWidget( + labelText: getIt.get().isArabic() + ? (widget.prescriptionsResponseModel.isInOutPatientDescriptionN ?? "العيادات الخارجية") + : (widget.prescriptionsResponseModel.isInOutPatientDescription ?? "OutPatient"), + backgroundColor: AppColors.warningColorYellow.withOpacity(0.1), + textColor: AppColors.warningColorYellow, + ), + SizedBox(height: 16.h), Row( mainAxisSize: MainAxisSize.min, children: [ - Image.network( - widget.prescriptionsResponseModel.doctorImageURL!, + Utils.buildImgWithNetwork( + url: widget.prescriptionsResponseModel.doctorImageURL!, + iconColor: AppColors.blackBgColor, width: 24.h, height: 24.h, fit: BoxFit.fill, @@ -124,11 +142,15 @@ class _PrescriptionDetailPageState extends State { spacing: 4.h, runSpacing: 4.h, children: [ - AppCustomChipWidget( - icon: AppAssets.doctor_calendar_icon, - labelText: DateUtil.formatDateToDate( - DateUtil.convertStringToDate(widget.prescriptionsResponseModel.appointmentDate), false), - labelPadding: EdgeInsetsDirectional.only(start: -4.h, end: 8.h), + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + icon: AppAssets.doctor_calendar_icon, + labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(widget.prescriptionsResponseModel.appointmentDate), false), + isEnglishOnly: true + , + labelPadding: EdgeInsetsDirectional.only(start: -4.h, end: 8.h), + ), ), AppCustomChipWidget( labelText: widget.prescriptionsResponseModel.clinicDescription!, @@ -137,6 +159,7 @@ class _PrescriptionDetailPageState extends State { icon: AppAssets.rating_icon, iconColor: AppColors.ratingColorYellow, labelText: LocaleKeys.ratingValue.tr(namedArgs: {'rating': widget.prescriptionsResponseModel.decimalDoctorRate.toString()}, context: context), + isEnglishOnly: true, ), AppCustomChipWidget( labelText: widget.prescriptionsResponseModel.name ?? "", @@ -179,7 +202,7 @@ class _PrescriptionDetailPageState extends State { borderColor: AppColors.successColor.withValues(alpha: 0.01), textColor: AppColors.successColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), height: 40.h, @@ -218,40 +241,104 @@ class _PrescriptionDetailPageState extends State { ), ), ), - Container( + Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true, ), + child: Column( + children: [ + SizedBox(height: 24.h), + Container( + child: CustomButton( - text: widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported! - ? LocaleKeys.resendOrder.tr(context: context) - : LocaleKeys.prescriptionDeliveryError.tr(context: context), + text: widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported! ? LocaleKeys.resendOrder.tr(context: context) : LocaleKeys.prescriptionDeliveryError.tr(context: context), onPressed: () async { if (widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported!) { LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPrescriptionDetails.tr(context: context)); await prescriptionsViewModel.getPrescriptionDetails(widget.prescriptionsResponseModel, onSuccess: (val) { LoaderBottomSheet.hideLoader(); - prescriptionsViewModel.initiatePrescriptionDelivery(); + prescriptionsViewModel.initiatePrescriptionDelivery(context); + }, onError: (err) { + LoaderBottomSheet.hideLoader(); + print(err); }); } }, - backgroundColor: widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported! ? AppColors.successColor : AppColors.greyF7Color, + backgroundColor: widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported! ? AppColors.successColor : AppColors.textColor.withOpacity(0.15), borderColor: AppColors.successColor.withOpacity(0.01), - textColor: - widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported! ? Colors.white : AppColors.textColor.withOpacity(0.35), + textColor: widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported! ? Colors.white : AppColors.textColor.withOpacity(0.35), fontSize: 16, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12, padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 50.h, + height: 56.h, icon: AppAssets.prescription_refill_icon, - iconColor: - widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported! ? Colors.white : AppColors.textColor.withOpacity(0.35), + iconColor: widget.prescriptionsResponseModel.isHomeMedicineDeliverySupported! ? Colors.white : AppColors.textColor.withOpacity(0.35), iconSize: 20.h, - ).paddingSymmetrical(24.h, 24.h), + ).paddingSymmetrical(24.h, 0.h), ), + + Utils.havePrivilege(119) ? Container( + child: Container( + height: 56.h, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(14.r), + gradient: LinearGradient( + begin: Alignment.centerLeft, + end: Alignment.centerRight, + stops: [0.236, 1.0], + colors: [ + Color(0xFF8A38F5), + Color(0xFFE20BBB), + ], + ), + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(right: 4.w, left: 4.w), + child: Utils.buildSvgWithAssets(icon: AppAssets.aiOverView, width: 16.h, height: 16.h, iconColor: Colors.white), + ), + LocaleKeys.generateAiAnalysisPrescription.tr(context: context).toText16(isBold: true, color: Colors.white) + ], + ), + ).paddingSymmetrical(24.h, 12.h).onPress(() { + final _dialogService = getIt.get(); + _dialogService.showCommonBottomSheetWithoutH( + message: LocaleKeys.aiDisclaimerPrescription.tr(), + label: LocaleKeys.consent.tr(), + okLabel: LocaleKeys.acceptLbl.tr(), + cancelLabel: LocaleKeys.rejectView.tr(), + onOkPressed: () { + context.pop(); + prescriptionsViewModel.setIsPrescriptionAIAnalysisNeedsToBeShown(true); + prescriptionsViewModel.getPrescriptionAiAnalysis( + prescriptions: prescriptionsViewModel.prescriptionDetailsList, + langId: getIt.get().getLanguageID(), + loadingText: LocaleKeys.loadingAIAnalysisPrescription.tr(context: context), + onNavigate: (data) { + // Navigate to prescription AI analysis detailed page + Navigator.push( + context, + CustomPageRoute( + direction: AxisDirection.down, + page: PrescriptionAiAnalysisDetailedPage(), + ), + ); + }, + ); + }, + onCancelPressed: () { + context.pop(); + }); + }), + + ): SizedBox(height: 24,), + ])) ], ), ); diff --git a/lib/presentation/prescriptions/prescription_item_view.dart b/lib/presentation/prescriptions/prescription_item_view.dart index 38b96d37..fc607986 100644 --- a/lib/presentation/prescriptions/prescription_item_view.dart +++ b/lib/presentation/prescriptions/prescription_item_view.dart @@ -1,3 +1,5 @@ +import 'dart:io' show Platform; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -8,11 +10,14 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/prescriptions/prescriptions_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/services/permission_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:hmg_patient_app_new/widgets/scroll_wheel_time_picker.dart'; +import 'package:permission_handler/permission_handler.dart'; class PrescriptionItemView extends StatelessWidget { int index; @@ -37,8 +42,9 @@ class PrescriptionItemView extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.start, spacing: 8.h, children: [ - Image.network( - isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].imageThumbUrl!, + Utils.buildImgWithNetwork( + url: isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].imageThumbUrl!, + iconColor: AppColors.blackBgColor, width: 60.h, height: 60.h, errorBuilder: (cxt, child, tr) { @@ -47,7 +53,7 @@ class PrescriptionItemView extends StatelessWidget { fit: BoxFit.fill, ).toShimmer2(isShow: isLoading).circle(100), Expanded( - child: (isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].itemDescription!).toText16(isBold: true, maxlines: 2).toShimmer2(isShow: isLoading), + child: (isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].itemDescription!).toText16(isBold: true, maxlines: 2, isEnglishOnly: true).toShimmer2(isShow: isLoading), ), ], ).paddingSymmetrical(16.h, 0.h), @@ -58,7 +64,7 @@ class PrescriptionItemView extends StatelessWidget { runSpacing: 6.h, children: [ AppCustomChipWidget( - labelText: "${LocaleKeys.route.tr(context: context)}: ${isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].route}", + labelText: "${LocaleKeys.routePrescription.tr(context: context)}: ${isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].route}", ).toShimmer2(isShow: isLoading), AppCustomChipWidget( labelText: "${LocaleKeys.frequency.tr(context: context)}: ${isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].frequency}", @@ -68,6 +74,7 @@ class PrescriptionItemView extends StatelessWidget { ).toShimmer2(isShow: isLoading), AppCustomChipWidget( labelText: "${LocaleKeys.days.tr(context: context)}: ${isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].days}", + isEnglishOnly: true, ).toShimmer2(isShow: isLoading), ], ).paddingSymmetrical(16.h, 0.h), @@ -78,7 +85,9 @@ class PrescriptionItemView extends StatelessWidget { children: [ Utils.buildSvgWithAssets(icon: AppAssets.prescription_remarks_icon, width: 18.h, height: 18.h), SizedBox(width: 9.h), - Expanded(child: "${LocaleKeys.remarks.tr(context: context)}: ${isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].remarks!}".toText10(isBold: true)), + Expanded( + child: "${LocaleKeys.remarks.tr(context: context)} ${isLoading ? "" : prescriptionVM.prescriptionDetailsList[index].remarks!}".toText10(isBold: true, isEnglishOnly: true), + ), ], ).paddingSymmetrical(16.h, 0.h), SizedBox(height: 14.h), @@ -95,61 +104,66 @@ class PrescriptionItemView extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ LocaleKeys.setReminder.tr(context: context).toText13(isBold: true), - "Notify me before the consumption time".toText10(color: AppColors.textColorLight), + LocaleKeys.notifyPrescription.tr(context: context).toText10(color: AppColors.textColorLight), ], ).toShimmer2(isShow: isLoading).expanded, Switch( activeColor: AppColors.successColor, activeTrackColor: AppColors.successColor.withValues(alpha: .15), value: isLoading ? false : prescriptionVM.prescriptionDetailsList[index].hasReminder!, + // value: prescriptionVM.prescriptionDetailsList[index].hasReminder ?? false, onChanged: (newValue) async { CalenderUtilsNew calender = CalenderUtilsNew.instance; + if (await prescriptionVM.checkIfReminderExistForPrescription(index)) { + prescriptionVM.prescriptionDetailsList[index].hasReminder = true; - if (prescriptionVM.prescriptionDetailsList[index].hasReminder ?? false) { LoaderBottomSheet.showLoader(loadingText: "Removing Reminders"); bool resultValue = await calender.checkAndRemoveMultipleItems(id: prescriptionVM.prescriptionDetailsList[index].itemID.toString()); prescriptionVM.setPrescriptionItemReminder(newValue, prescriptionVM.prescriptionDetailsList[index]); LoaderBottomSheet.hideLoader(); return; - } + } else { + DateTime startDate = DateTime.now(); + prescriptionVM.serSelectedTime(startDate); + DateTime endDate = DateTime(startDate.year, startDate.month, startDate.day + prescriptionVM.prescriptionDetailsList[index].days!.toInt()); + showCommonBottomSheetWithoutHeight(context, child: bottomSheetContent(context), title: LocaleKeys.timeForFirstReminder.tr(), isCloseButtonVisible: true); - DateTime startDate = DateTime.now(); - DateTime endDate = DateTime(startDate.year, startDate.month, startDate.day + prescriptionVM.prescriptionDetailsList[index].days!.toInt()); - BottomSheetUtils().showReminderBottomSheet( - context, - endDate, - "", - prescriptionVM.prescriptionDetailsList[index].itemID.toString(), - "", - "", - title: "${prescriptionVM.prescriptionDetailsList[index].itemDescription} Prescription Reminder", - description: - "${prescriptionVM.prescriptionDetailsList[index].itemDescription} ${prescriptionVM.prescriptionDetailsList[index].frequency} ${prescriptionVM.prescriptionDetailsList[index].route} ", - onSuccess: () {}, - isMultiAllowed: true, - onMultiDateSuccess: (int selectedIndex) async { - bool isEventAdded = await calender.createMultipleEvents( - reminderMinutes: selectedIndex, - frequencyNumber: prescriptionVM.prescriptionDetailsList[index].frequencyNumber?.toInt(), - days: prescriptionVM.prescriptionDetailsList[index].days!.toInt(), - orderDate: prescriptionVM.prescriptionDetailsList[index].orderDate!, - itemDescriptionN: prescriptionVM.prescriptionDetailsList[index].itemDescription!, - route: prescriptionVM.prescriptionDetailsList[index].route!, - onFailure: (errorMessage) => prescriptionVM.showError(errorMessage), - prescriptionNumber: prescriptionVM.prescriptionDetailsList[index].itemID.toString(), - ); - prescriptionVM.setPrescriptionItemReminder(isEventAdded, prescriptionVM.prescriptionDetailsList[index]); - // setCalender(context, - // eventId: prescriptionVM.prescriptionDetailsList[index].itemID.toString(), - // selectedMinutes: selectedIndex, - // frequencyNumber: prescriptionVM.prescriptionDetailsList[index].frequencyNumber?.toInt(), - // days: prescriptionVM.prescriptionDetailsList[index].days!.toInt(), - // orderDate: prescriptionVM.prescriptionDetailsList[index].orderDate!, - // itemDescriptionN: prescriptionVM.prescriptionDetailsList[index].itemDescription!, - // route: prescriptionVM.prescriptionDetailsList[index].route!); - }, - ); + // BottomSheetUtils().showReminderBottomSheet( + // context, + // endDate, + // "", + // prescriptionVM.prescriptionDetailsList[index].itemID.toString(), + // "", + // "", + // title: "${prescriptionVM.prescriptionDetailsList[index].itemDescription} Prescription Reminder", + // description: + // "${prescriptionVM.prescriptionDetailsList[index].itemDescription} ${prescriptionVM.prescriptionDetailsList[index].frequency} ${prescriptionVM.prescriptionDetailsList[index].route} ", + // onSuccess: () {}, + // isMultiAllowed: true, + // onMultiDateSuccess: (int selectedIndex) async { + // bool isEventAdded = await calender.createMultipleEvents( + // reminderMinutes: selectedIndex, + // frequencyNumber: prescriptionVM.prescriptionDetailsList[index].frequencyNumber?.toInt(), + // days: prescriptionVM.prescriptionDetailsList[index].days!.toInt(), + // orderDate: prescriptionVM.prescriptionDetailsList[index].orderDate!, + // itemDescriptionN: prescriptionVM.prescriptionDetailsList[index].itemDescription!, + // route: prescriptionVM.prescriptionDetailsList[index].route!, + // onFailure: (errorMessage) => prescriptionVM.showError(errorMessage), + // prescriptionNumber: prescriptionVM.prescriptionDetailsList[index].itemID.toString(), + // ); + // prescriptionVM.setPrescriptionItemReminder(isEventAdded, prescriptionVM.prescriptionDetailsList[index]); + // // setCalender(context, + // // eventId: prescriptionVM.prescriptionDetailsList[index].itemID.toString(), + // // selectedMinutes: selectedIndex, + // // frequencyNumber: prescriptionVM.prescriptionDetailsList[index].frequencyNumber?.toInt(), + // // days: prescriptionVM.prescriptionDetailsList[index].days!.toInt(), + // // orderDate: prescriptionVM.prescriptionDetailsList[index].orderDate!, + // // itemDescriptionN: prescriptionVM.prescriptionDetailsList[index].itemDescription!, + // // route: prescriptionVM.prescriptionDetailsList[index].route!); + // }, + // ); + } }, ).toShimmer2(isShow: isLoading), ], @@ -167,7 +181,7 @@ class PrescriptionItemView extends StatelessWidget { // borderColor: AppColors.primaryRedColor.withOpacity(0.0), // textColor: AppColors.primaryRedColor, // fontSize: 14.f, - // fontWeight: FontWeight.w500, + // isBold: true, // borderRadius: 12.r, // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), // height: 40.h, @@ -180,4 +194,115 @@ class PrescriptionItemView extends StatelessWidget { ), ); } + + Widget bottomSheetContent(BuildContext context) { + return Column( + children: [ + SizedBox(height: 4.h), + LocaleKeys.reminderRemovalNote.tr().toText14(isBold: true, color: AppColors.warningColorYellow), + SizedBox(height: 8.h), + ScrollWheelTimePicker( + initialHour: DateTime.now().hour, + initialMinute: DateTime.now().minute, + use24HourFormat: true, + pickerHeight: 200.h, + itemExtent: 100.h, + onTimeChanged: (time) { + // Handle selected time + debugPrint('Selected time: ${time.hour}:${time.minute}'); + prescriptionVM.serSelectedTime(DateTime(DateTime.now().year, DateTime.now().month, DateTime.now().day, time.hour, time.minute)); + }, + ), + SizedBox(height: 8.h), + CustomButton( + backgroundColor: AppColors.successColor, + borderColor: AppColors.successColor, + text: LocaleKeys.add.tr(), + onPressed: () async { + CalenderUtilsNew calender = CalenderUtilsNew.instance; + bool isEventAdded = await calender.createMultipleEvents( + reminderMinutes: 10, + scaleOffset : prescriptionVM.prescriptionDetailsList[index].scaleOffset!, + frequencyNumber: prescriptionVM.prescriptionDetailsList[index].frequencyNumber?.toInt(), + days: prescriptionVM.prescriptionDetailsList[index].days!.toInt(), + orderDate: prescriptionVM.prescriptionDetailsList[index].orderDate!, + itemDescriptionN: prescriptionVM.prescriptionDetailsList[index].itemDescription!, + route: prescriptionVM.prescriptionDetailsList[index].route!, + onFailure: (errorMessage) => prescriptionVM.showError(errorMessage), + prescriptionNumber: prescriptionVM.prescriptionDetailsList[index].itemID.toString(), + scheduleDateTime: prescriptionVM.selectedReminderTime, + ); + prescriptionVM.setPrescriptionItemReminder(isEventAdded, prescriptionVM.prescriptionDetailsList[index]); + Navigator.of(context).pop(); + }) + ], + ); + } + + /// Checks and requests calendar permissions for both Android and iOS + /// Returns true if all required permissions are granted + Future _checkAndRequestCalendarPermissions() async { + if (Platform.isAndroid) { + // Android: Check existing permission first using PermissionService + bool hasPermission = await PermissionService.isCalendarPermissionEnabled(); + if (hasPermission) { + return true; + } + + // Request calendarFullAccess permission (Android 14+ requires this) + // This internally requests both READ_CALENDAR and WRITE_CALENDAR + PermissionStatus status = await Permission.calendarFullAccess.request(); + + // If calendarFullAccess request didn't show dialog or failed, + // fallback to requesting individual permissions + if (!status.isGranted) { + Map statuses = await [ + Permission.calendarWriteOnly, + ].request(); + + return statuses[Permission.calendarWriteOnly]?.isGranted ?? false; + } + + return status.isGranted; + } else { + // iOS: Check if we already have full access + PermissionStatus fullAccessStatus = await Permission.calendarFullAccess.status; + + if (fullAccessStatus.isGranted) { + return true; + } + + // Request write permission first (required before full access on iOS) + PermissionStatus writeStatus = await Permission.calendarWriteOnly.request(); + if (!writeStatus.isGranted) { + return false; + } + + // Then request full access permission + PermissionStatus fullStatus = await Permission.calendarFullAccess.request(); + return fullStatus.isGranted; + } + } + + /// Shows permission denied dialog with option to open settings + Future _showPermissionDeniedDialog(BuildContext context) async { + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.notice.tr(context: context), + child: Utils.getWarningWidget( + loadingText: LocaleKeys.calendarPermissionAlert.tr(), + isShowActionButtons: true, + onCancelTap: () { + Navigator.of(context).pop(); + }, + onConfirmTap: () async { + Navigator.of(context).pop(); + await openAppSettings(); + }, + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } } diff --git a/lib/presentation/prescriptions/prescription_reminder_view.dart b/lib/presentation/prescriptions/prescription_reminder_view.dart index aab587d4..0d4ec9f5 100644 --- a/lib/presentation/prescriptions/prescription_reminder_view.dart +++ b/lib/presentation/prescriptions/prescription_reminder_view.dart @@ -20,7 +20,7 @@ class PrescriptionReminderView extends StatefulWidget { } class _PrescriptionReminderViewState extends State { - final List _options = [15, 30, 60, 90]; + final List _options = [60, 360, 720, 1440]; int _selectedOption = 0; // Nullable to represent no selection initially @override @@ -54,10 +54,10 @@ class _PrescriptionReminderViewState extends State { ), child: RadioListTile( title: Text( - "${_options[index]} ${LocaleKeys.minute.tr(context: context)}", + "${(_options[index] / 60).toInt()} ${LocaleKeys.hours.tr(context: context)}", style: TextStyle( fontSize: 16.h, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), ), value: index, diff --git a/lib/presentation/prescriptions/prescriptions_list_page.dart b/lib/presentation/prescriptions/prescriptions_list_page.dart index cd507d41..fcb0b291 100644 --- a/lib/presentation/prescriptions/prescriptions_list_page.dart +++ b/lib/presentation/prescriptions/prescriptions_list_page.dart @@ -24,8 +24,10 @@ import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; +import 'dart:ui' as ui; + class PrescriptionsListPage extends StatefulWidget { - const PrescriptionsListPage({super.key}); + const PrescriptionsListPage({super.key}); @override State createState() => _PrescriptionsListPageState(); @@ -67,52 +69,52 @@ class _PrescriptionsListPageState extends State { children: [ SizedBox(height: 16.h), // Clinic & Hospital Sort - Row( - children: [ - CustomButton( - text: LocaleKeys.byClinic.tr(context: context), - onPressed: () { - model.setIsSortByClinic(true); - }, - backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, - borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withOpacity(0.2), - textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, - fontSize: 12, - fontWeight: FontWeight.w500, - borderRadius: 10, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - ), - SizedBox(width: 8.h), - CustomButton( - text: LocaleKeys.byHospital.tr(context: context), - onPressed: () { - model.setIsSortByClinic(false); - }, - backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, - borderColor: model.isSortByClinic ? AppColors.textColor.withOpacity(0.2) : AppColors.primaryRedColor, - textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, - fontSize: 12, - fontWeight: FontWeight.w500, - borderRadius: 10, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - ), - ], - ).paddingSymmetrical(24.h, 0.h), - SizedBox(height: 20.h), + // Row( + // children: [ + // CustomButton( + // text: LocaleKeys.byClinic.tr(context: context), + // onPressed: () { + // model.setIsSortByClinic(true); + // }, + // backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, + // borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withOpacity(0.2), + // textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, + // fontSize: 12, + // isBold: true, + // borderRadius: 10, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 40.h, + // ), + // SizedBox(width: 8.h), + // CustomButton( + // text: LocaleKeys.byHospital.tr(context: context), + // onPressed: () { + // model.setIsSortByClinic(false); + // }, + // backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, + // borderColor: model.isSortByClinic ? AppColors.textColor.withOpacity(0.2) : AppColors.primaryRedColor, + // textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, + // fontSize: 12, + // isBold: true, + // borderRadius: 10, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 40.h, + // ), + // ], + // ).paddingSymmetrical(24.h, 0.h), + // SizedBox(height: 20.h), // Expandable list ListView.builder( itemCount: model.isPrescriptionsOrdersLoading ? 4 : model.patientPrescriptionOrders.isNotEmpty - ? model.patientPrescriptionOrdersViewList.length + ? model.patientPrescriptionOrders.length : 1, physics: NeverScrollableScrollPhysics(), shrinkWrap: true, padding: const EdgeInsets.only(left: 0, right: 8), itemBuilder: (context, index) { - final isExpanded = expandedIndex == index; + // final isExpanded = expandedIndex == index; return model.isPrescriptionsOrdersLoading ? LabResultItemView( onTap: () {}, @@ -132,178 +134,427 @@ class _PrescriptionsListPageState extends State { curve: Curves.easeInOut, margin: EdgeInsets.symmetric(vertical: 8.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), - child: InkWell( - onTap: () { - setState(() { - expandedIndex = isExpanded ? null : index; - }); - }, + child: Container( + key: ValueKey(index), + padding: EdgeInsets.symmetric(horizontal: 16.h, vertical: 16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Padding( - padding: EdgeInsets.all(16.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - CustomButton( - text: "${model.patientPrescriptionOrdersViewList[index].prescriptionsList!.length} Prescriptions Available", - onPressed: () {}, - backgroundColor: AppColors.greyColor, - borderColor: AppColors.greyColor, - textColor: AppColors.blackColor, - fontSize: 10, - fontWeight: FontWeight.w500, - borderRadius: 8, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 30.h, - ), - Icon(isExpanded ? Icons.expand_less : Icons.expand_more), - ], + AppCustomChipWidget( + labelText: + "${getIt.get().isArabic() ? model.patientPrescriptionOrders[index].isInOutPatientDescriptionN : model.patientPrescriptionOrders[index].isInOutPatientDescription}", + backgroundColor: AppColors.warningColorYellow.withOpacity(0.1), + textColor: AppColors.warningColorYellow, + ), + SizedBox(height: 16.h), + Row( + mainAxisSize: MainAxisSize.min, + children: [ + Utils.buildImgWithNetwork( + url: model.patientPrescriptionOrders[index].doctorImageURL!, + iconColor: AppColors.blackBgColor, + width: 24.h, + height: 24.h, + fit: BoxFit.fill, + ).circle(100), + SizedBox(width: 8.h), + Expanded(child: model.patientPrescriptionOrders[index].doctorName!.toText14(isBold: true)), + ], + ), + SizedBox(height: 8.h), + Wrap( + direction: Axis.horizontal, + spacing: 6.h, + runSpacing: 6.h, + children: [ + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(model.patientPrescriptionOrders[index].appointmentDate), false), + isEnglishOnly: true, ), - SizedBox(height: 8.h), - (model.patientPrescriptionOrdersViewList[index].filterName ?? "").toText16(isBold: true) - ], - ), + ), + AppCustomChipWidget( + labelText: model.patientPrescriptionOrders[index].name, + ), + AppCustomChipWidget( + labelText: model.patientPrescriptionOrders[index].clinicDescription!, + ), + ], ), - AnimatedSwitcher( - duration: Duration(milliseconds: 500), - switchInCurve: Curves.easeIn, - switchOutCurve: Curves.easeOut, - transitionBuilder: (Widget child, Animation animation) { - return FadeTransition( - opacity: animation, - child: SizeTransition( - sizeFactor: animation, - axisAlignment: 0.0, - child: child, + SizedBox(height: 8.h), + Row( + children: [ + Expanded( + flex: 6, + child: CustomButton( + text: model.patientPrescriptionOrders[index].isHomeMedicineDeliverySupported! + ? LocaleKeys.resendOrder.tr(context: context) + : LocaleKeys.prescriptionDeliveryError.tr(context: context), + onPressed: () async { + if (model.patientPrescriptionOrders[index].isHomeMedicineDeliverySupported!) { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPrescriptionDetails.tr(context: context)); + await prescriptionsViewModel.getPrescriptionDetails(prescriptionsViewModel.patientPrescriptionOrders[index], onSuccess: (val) { + LoaderBottomSheet.hideLoader(); + prescriptionsViewModel.initiatePrescriptionDelivery(context); + }); + } + }, + backgroundColor: model.patientPrescriptionOrders[index].isHomeMedicineDeliverySupported! + ? AppColors.successColor.withOpacity(0.15) + : AppColors.textColor.withOpacity(0.15), + borderColor: AppColors.successColor.withOpacity(0.01), + textColor: model.patientPrescriptionOrders[index].isHomeMedicineDeliverySupported! ? AppColors.successColor : AppColors.textColor.withOpacity(0.35), + fontSize: model.patientPrescriptionOrders[index].isHomeMedicineDeliverySupported! ? 14.f : 12.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 40.h, + icon: AppAssets.prescription_refill_icon, + iconColor: model.patientPrescriptionOrders[index].isHomeMedicineDeliverySupported! ? AppColors.successColor : AppColors.textColor.withOpacity(0.35), + iconSize: 16.h, ), - ); - }, - child: isExpanded - ? Container( - key: ValueKey(index), - padding: EdgeInsets.symmetric(horizontal: 16.h, vertical: 8.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ...model.patientPrescriptionOrdersViewList[index].prescriptionsList!.map((prescription) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Image.network( - prescription.doctorImageURL!, - width: 24.h, - height: 24.h, - fit: BoxFit.fill, - ).circle(100), - SizedBox(width: 8.h), - Expanded(child: prescription.doctorName!.toText14(weight: FontWeight.w500)), - ], - ), - SizedBox(height: 8.h), - Wrap( - direction: Axis.horizontal, - spacing: 6.h, - runSpacing: 6.h, - children: [ - AppCustomChipWidget( - labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(prescription.appointmentDate), false), - ), - AppCustomChipWidget( - labelText: model.isSortByClinic ? prescription.name ?? "" : prescription.clinicDescription!, - ), - ], - ), - SizedBox(height: 8.h), - Row( - children: [ - Expanded( - flex: 6, - child: CustomButton( - text: prescription.isHomeMedicineDeliverySupported! - ? LocaleKeys.resendOrder.tr(context: context) - : LocaleKeys.prescriptionDeliveryError.tr(context: context), - onPressed: () async { - if (prescription.isHomeMedicineDeliverySupported!) { - LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPrescriptionDetails.tr(context: context)); - await prescriptionsViewModel.getPrescriptionDetails(prescriptionsViewModel.patientPrescriptionOrders[index], - onSuccess: (val) { - LoaderBottomSheet.hideLoader(); - prescriptionsViewModel.initiatePrescriptionDelivery(); - }); - } - }, - backgroundColor: - prescription.isHomeMedicineDeliverySupported! ? AppColors.successColor.withOpacity(0.15) : AppColors.greyF7Color, - borderColor: AppColors.successColor.withOpacity(0.01), - textColor: prescription.isHomeMedicineDeliverySupported! ? AppColors.successColor : AppColors.textColor.withOpacity(0.35), - fontSize: prescription.isHomeMedicineDeliverySupported! ? 14.f : 12.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - icon: AppAssets.prescription_refill_icon, - iconColor: prescription.isHomeMedicineDeliverySupported! ? AppColors.successColor : AppColors.textColor.withOpacity(0.35), - iconSize: 16.h, - ), - ), - SizedBox(width: 8.h), - Expanded( - flex: 1, - child: Container( - height: 40.h, - width: 40.w, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.textColor, - borderRadius: 12, - ), - child: Padding( - padding: EdgeInsets.all(12.h), - child: Transform.flip( - flipX: appState.isArabic(), - child: Utils.buildSvgWithAssets( - icon: AppAssets.forward_arrow_icon_small, - iconColor: AppColors.whiteColor, - fit: BoxFit.contain, - ), - ), - ), - ).onPress(() { - model.setPrescriptionsDetailsLoading(); - Navigator.of(context).push( - CustomPageRoute( - page: PrescriptionDetailPage( - prescriptionsResponseModel: prescription, - isFromAppointments: false, - ), - ), - ); - }), - ), - ], - ), - SizedBox(height: 12.h), - Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), - SizedBox(height: 12.h), - ], - ); - }).toList(), - ], + ), + SizedBox(width: 8.h), + Expanded( + flex: 1, + child: Container( + height: 40.h, + width: 40.w, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.textColor, + borderRadius: 12, + ), + child: Padding( + padding: EdgeInsets.all(12.h), + child: Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.forward_arrow_icon_small, + iconColor: AppColors.whiteColor, + fit: BoxFit.contain, + ), + ), + ), + ).onPress(() { + model.setPrescriptionsDetailsLoading(); + Navigator.of(context).push( + CustomPageRoute( + page: PrescriptionDetailPage( + prescriptionsResponseModel: model.patientPrescriptionOrders[index], + isFromAppointments: false, + ), ), - ) - : SizedBox.shrink(), + ); + }), + ), + ], ), + // SizedBox(height: 12.h), + // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), + // SizedBox(height: 12.h), ], ), + // Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // ...model.patientPrescriptionOrders.map((prescription) { + // return Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Row( + // mainAxisSize: MainAxisSize.min, + // children: [ + // Image.network( + // prescription.doctorImageURL!, + // width: 24.h, + // height: 24.h, + // fit: BoxFit.fill, + // ).circle(100), + // SizedBox(width: 8.h), + // Expanded(child: prescription.doctorName!.toText14(isBold: true)), + // ], + // ), + // SizedBox(height: 8.h), + // Wrap( + // direction: Axis.horizontal, + // spacing: 6.h, + // runSpacing: 6.h, + // children: [ + // Directionality( + // textDirection: ui.TextDirection.ltr, + // child: AppCustomChipWidget( + // labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(prescription.appointmentDate), false), isEnglishOnly: true, + // ), + // ), + // AppCustomChipWidget( + // labelText: model.isSortByClinic ? prescription.name ?? "" : prescription.clinicDescription!, + // ), + // ], + // ), + // SizedBox(height: 8.h), + // Row( + // children: [ + // Expanded( + // flex: 6, + // child: CustomButton( + // text: prescription.isHomeMedicineDeliverySupported! + // ? LocaleKeys.resendOrder.tr(context: context) + // : LocaleKeys.prescriptionDeliveryError.tr(context: context), + // onPressed: () async { + // if (prescription.isHomeMedicineDeliverySupported!) { + // LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPrescriptionDetails.tr(context: context)); + // await prescriptionsViewModel.getPrescriptionDetails(prescriptionsViewModel.patientPrescriptionOrders[index], + // onSuccess: (val) { + // LoaderBottomSheet.hideLoader(); + // prescriptionsViewModel.initiatePrescriptionDelivery(); + // }); + // } + // }, + // backgroundColor: + // prescription.isHomeMedicineDeliverySupported! ? AppColors.successColor.withOpacity(0.15) : AppColors.greyF7Color, + // borderColor: AppColors.successColor.withOpacity(0.01), + // textColor: prescription.isHomeMedicineDeliverySupported! ? AppColors.successColor : AppColors.textColor.withOpacity(0.35), + // fontSize: prescription.isHomeMedicineDeliverySupported! ? 14.f : 12.f, + // isBold: true, + // borderRadius: 12.r, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 40.h, + // icon: AppAssets.prescription_refill_icon, + // iconColor: prescription.isHomeMedicineDeliverySupported! ? AppColors.successColor : AppColors.textColor.withOpacity(0.35), + // iconSize: 16.h, + // ), + // ), + // SizedBox(width: 8.h), + // Expanded( + // flex: 1, + // child: Container( + // height: 40.h, + // width: 40.w, + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // color: AppColors.textColor, + // borderRadius: 12, + // ), + // child: Padding( + // padding: EdgeInsets.all(12.h), + // child: Transform.flip( + // flipX: appState.isArabic(), + // child: Utils.buildSvgWithAssets( + // icon: AppAssets.forward_arrow_icon_small, + // iconColor: AppColors.whiteColor, + // fit: BoxFit.contain, + // ), + // ), + // ), + // ).onPress(() { + // model.setPrescriptionsDetailsLoading(); + // Navigator.of(context).push( + // CustomPageRoute( + // page: PrescriptionDetailPage( + // prescriptionsResponseModel: prescription, + // isFromAppointments: false, + // ), + // ), + // ); + // }), + // ), + // ], + // ), + // SizedBox(height: 12.h), + // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), + // SizedBox(height: 12.h), + // ], + // ); + // }).toList(), + // ], + // ), ), - ), + + // InkWell( + // onTap: () { + // setState(() { + // expandedIndex = isExpanded ? null : index; + // }); + // }, + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Padding( + // padding: EdgeInsets.all(16.h), + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // CustomButton( + // text: "${model.patientPrescriptionOrdersViewList[index].prescriptionsList!.length} Prescriptions Available", + // onPressed: () {}, + // backgroundColor: AppColors.greyColor, + // borderColor: AppColors.greyColor, + // textColor: AppColors.blackColor, + // fontSize: 10, + // isBold: true, + // borderRadius: 8, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 30.h, + // ), + // Icon(isExpanded ? Icons.expand_less : Icons.expand_more), + // ], + // ), + // SizedBox(height: 8.h), + // (model.patientPrescriptionOrdersViewList[index].filterName ?? "").toText16(isBold: true) + // ], + // ), + // ), + // AnimatedSwitcher( + // duration: Duration(milliseconds: 500), + // switchInCurve: Curves.easeIn, + // switchOutCurve: Curves.easeOut, + // transitionBuilder: (Widget child, Animation animation) { + // return FadeTransition( + // opacity: animation, + // child: SizeTransition( + // sizeFactor: animation, + // axisAlignment: 0.0, + // child: child, + // ), + // ); + // }, + // // child: isExpanded + // // ? Container( + // // key: ValueKey(index), + // // padding: EdgeInsets.symmetric(horizontal: 16.h, vertical: 8.h), + // // child: Column( + // // crossAxisAlignment: CrossAxisAlignment.start, + // // children: [ + // // ...model.patientPrescriptionOrdersViewList[index].prescriptionsList!.map((prescription) { + // // return Column( + // // crossAxisAlignment: CrossAxisAlignment.start, + // // children: [ + // // Row( + // // mainAxisSize: MainAxisSize.min, + // // children: [ + // // Image.network( + // // prescription.doctorImageURL!, + // // width: 24.h, + // // height: 24.h, + // // fit: BoxFit.fill, + // // ).circle(100), + // // SizedBox(width: 8.h), + // // Expanded(child: prescription.doctorName!.toText14(isBold: true)), + // // ], + // // ), + // // SizedBox(height: 8.h), + // // Wrap( + // // direction: Axis.horizontal, + // // spacing: 6.h, + // // runSpacing: 6.h, + // // children: [ + // // Directionality( + // // textDirection: ui.TextDirection.ltr, + // // child: AppCustomChipWidget( + // // labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(prescription.appointmentDate), false), isEnglishOnly: true, + // // ), + // // ), + // // AppCustomChipWidget( + // // labelText: model.isSortByClinic ? prescription.name ?? "" : prescription.clinicDescription!, + // // ), + // // ], + // // ), + // // SizedBox(height: 8.h), + // // Row( + // // children: [ + // // Expanded( + // // flex: 6, + // // child: CustomButton( + // // text: prescription.isHomeMedicineDeliverySupported! + // // ? LocaleKeys.resendOrder.tr(context: context) + // // : LocaleKeys.prescriptionDeliveryError.tr(context: context), + // // onPressed: () async { + // // if (prescription.isHomeMedicineDeliverySupported!) { + // // LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPrescriptionDetails.tr(context: context)); + // // await prescriptionsViewModel.getPrescriptionDetails(prescriptionsViewModel.patientPrescriptionOrders[index], + // // onSuccess: (val) { + // // LoaderBottomSheet.hideLoader(); + // // prescriptionsViewModel.initiatePrescriptionDelivery(); + // // }); + // // } + // // }, + // // backgroundColor: + // // prescription.isHomeMedicineDeliverySupported! ? AppColors.successColor.withOpacity(0.15) : AppColors.greyF7Color, + // // borderColor: AppColors.successColor.withOpacity(0.01), + // // textColor: prescription.isHomeMedicineDeliverySupported! ? AppColors.successColor : AppColors.textColor.withOpacity(0.35), + // // fontSize: prescription.isHomeMedicineDeliverySupported! ? 14.f : 12.f, + // // isBold: true, + // // borderRadius: 12.r, + // // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // // height: 40.h, + // // icon: AppAssets.prescription_refill_icon, + // // iconColor: prescription.isHomeMedicineDeliverySupported! ? AppColors.successColor : AppColors.textColor.withOpacity(0.35), + // // iconSize: 16.h, + // // ), + // // ), + // // SizedBox(width: 8.h), + // // Expanded( + // // flex: 1, + // // child: Container( + // // height: 40.h, + // // width: 40.w, + // // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // // color: AppColors.textColor, + // // borderRadius: 12, + // // ), + // // child: Padding( + // // padding: EdgeInsets.all(12.h), + // // child: Transform.flip( + // // flipX: appState.isArabic(), + // // child: Utils.buildSvgWithAssets( + // // icon: AppAssets.forward_arrow_icon_small, + // // iconColor: AppColors.whiteColor, + // // fit: BoxFit.contain, + // // ), + // // ), + // // ), + // // ).onPress(() { + // // model.setPrescriptionsDetailsLoading(); + // // Navigator.of(context).push( + // // CustomPageRoute( + // // page: PrescriptionDetailPage( + // // prescriptionsResponseModel: prescription, + // // isFromAppointments: false, + // // ), + // // ), + // // ); + // // }), + // // ), + // // ], + // // ), + // // SizedBox(height: 12.h), + // // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), + // // SizedBox(height: 12.h), + // // ], + // // ); + // // }).toList(), + // // ], + // // ), + // // ) + // // : SizedBox.shrink(), + // ), + // ], + // ), + // ), + ).onPress(() { + model.setPrescriptionsDetailsLoading(); + Navigator.of(context).push( + CustomPageRoute( + page: PrescriptionDetailPage( + prescriptionsResponseModel: model.patientPrescriptionOrders[index], + isFromAppointments: false, + ), + ), + ); + }), ), ), ) diff --git a/lib/presentation/profile_settings/accessibility_page.dart b/lib/presentation/profile_settings/accessibility_page.dart new file mode 100644 index 00000000..328c1936 --- /dev/null +++ b/lib/presentation/profile_settings/accessibility_page.dart @@ -0,0 +1,546 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/services/dialog_service.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:provider/provider.dart'; +import 'package:screen_brightness/screen_brightness.dart'; + +enum VisualMode { off, invert, dim, highContrast } + +class AccessibilityPage extends StatefulWidget { + const AccessibilityPage({super.key}); + + @override + State createState() => _AccessibilityPageState(); +} + +class _AccessibilityPageState extends State { + late ProfileSettingsViewModel profileSettingsViewModel; + int _currentFontSizeStep = 2; // 0: Small, 1: Small-Medium, 2: Medium (default), 3: Medium-Large, 4: Large + VisualMode _selectedMode = VisualMode.off; + + // Screen brightness control + final ScreenBrightness _screenBrightness = ScreenBrightness(); + + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addPostFrameCallback((_) async { + if (mounted) { + profileSettingsViewModel = Provider.of(context, listen: false); + + // Load saved settings from ViewModel + _loadSavedSettings(); + } + }); + } + + void _loadSavedSettings() { + setState(() { + _currentFontSizeStep = profileSettingsViewModel.fontSizeStep; + _selectedMode = _visualModeFromString(profileSettingsViewModel.visualMode); + }); + } + + VisualMode _visualModeFromString(String mode) { + switch (mode) { + case 'off': + return VisualMode.off; + case 'invert': + return VisualMode.invert; + case 'dim': + return VisualMode.dim; + case 'highContrast': + return VisualMode.highContrast; + default: + return VisualMode.off; + } + } + + String _visualModeToString(VisualMode mode) { + switch (mode) { + case VisualMode.off: + return 'off'; + case VisualMode.invert: + return 'invert'; + case VisualMode.dim: + return 'dim'; + case VisualMode.highContrast: + return 'highContrast'; + } + } + + @override + void dispose() { + // Reset to system brightness when leaving accessibility page + // This ensures we don't keep the preview brightness when navigating away + _screenBrightness.resetScreenBrightness(); + super.dispose(); + } + + /// Apply brightness based on visual mode + Future _applyBrightness(VisualMode mode) async { + try { + switch (mode) { + case VisualMode.dim: + // Reduce brightness to 40% for dim mode + await _screenBrightness.setScreenBrightness(0.4); + break; + case VisualMode.off: + case VisualMode.invert: + case VisualMode.highContrast: + // Reset to system brightness for other modes + await _screenBrightness.resetScreenBrightness(); + break; + } + } catch (e) { + print('Error setting brightness: $e'); + } + } + + double _getFontSizeForStep(int step) { + const double mediumSize = 40.0; // Medium is baseline + switch (step) { + case 0: + return mediumSize * 0.5; // Small: 20.0 + case 1: + return mediumSize * 0.75; // Small-Medium: 30.0 + case 2: + return mediumSize; // Medium (default): 40.0 + case 3: + return mediumSize * 1.5; // Medium-Large: 60.0 + case 4: + return mediumSize * 1.75; // Large: 70.0 + default: + return mediumSize; + } + } + + @override + Widget build(BuildContext context) { + profileSettingsViewModel = Provider.of(context, listen: false); + + return CollapsingListView( + title: LocaleKeys.accessibility.tr(context: context), + isClose: true, + bottomChild: Container( + padding: EdgeInsets.all(24.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: false, + ), + child: CustomButton( + height: 56.h, + icon: AppAssets.checkmark_icon, + iconColor: AppColors.whiteColor, + text: LocaleKeys.saveChanges.tr(context: context), + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + fontSize: 16.f, + isBold: true, + onPressed: () async { + // Save accessibility settings to ViewModel + profileSettingsViewModel.setFontSizeStep(_currentFontSizeStep); + profileSettingsViewModel.setVisualMode(_visualModeToString(_selectedMode)); + + // Apply brightness changes based on selected mode + await _applyBrightness(_selectedMode); + + // Show success bottom sheet + getIt().showSuccessBottomSheetWithoutH( + message: LocaleKeys.settingsSavedSuccessfully.tr(context: context), + onOkPressed: () { + Navigator.pop(context); + }, + ); + }, + ), + ), + child: SingleChildScrollView( + padding: EdgeInsets.only(top: 16.h, bottom: 24.h, left: 24.w, right: 24.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Font Size Card + _buildFontSizeCard(), + SizedBox(height: 24.h), + + // Mode for Partially Blind Card + _buildVisualModeCard(), + ], + ), + ), + ); + } + + Widget _buildFontSizeCard() { + return Container( + padding: EdgeInsets.all(24.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: false, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Card Label + LocaleKeys.fontSize.tr(context: context).toText18(isBold: true), + SizedBox(height: 24.h), + + // Center Aa heading that changes size + Container( + height: 70.h, + child: Center( + child: AnimatedDefaultTextStyle( + duration: const Duration(milliseconds: 300), + style: TextStyle( + fontSize: _getFontSizeForStep(_currentFontSizeStep), + fontWeight: FontWeight.bold, + color: AppColors.blackBgColor, + ), + child: const Text("Aa"), + ), + ), + ), + SizedBox(height: 32.h), + + // Stepped slider + Column( + children: [ + // Stack to position circles on top of the bar + Stack( + alignment: Alignment.center, + children: [ + // Grey bar + Container( + height: 4.h, + decoration: BoxDecoration( + color: AppColors.greyTextColor.withValues(alpha: 0.2), + borderRadius: BorderRadius.circular(2.r), + ), + ), + // Step indicator with dots positioned on top of the bar + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: List.generate(5, (index) { + bool isSelected = index == _currentFontSizeStep; + return GestureDetector( + onTap: () { + setState(() { + _currentFontSizeStep = index; + }); + }, + behavior: HitTestBehavior.opaque, + child: Padding( + padding: EdgeInsets.all(8.w), // Increased tap zone + child: Container( + width: isSelected ? 20.w : 12.w, + height: isSelected ? 20.w : 12.w, + decoration: BoxDecoration( + color: isSelected ? AppColors.primaryRedColor : Colors.transparent, + shape: BoxShape.circle, + border: Border.all( + color: isSelected ? AppColors.primaryRedColor : AppColors.greyTextColor.withValues(alpha: 0.3), + width: 2.w, + ), + ), + ), + ), + ); + }), + ), + ], + ), + SizedBox(height: 12.h), + + // Labels + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.fontSizeSmall.tr(context: context).toText12(color: AppColors.textColor, fontWeight: FontWeight.w600), + LocaleKeys.fontSizeMedium.tr(context: context).toText12(color: AppColors.textColor, fontWeight: FontWeight.w600), + LocaleKeys.fontSizeLarge.tr(context: context).toText12(color: AppColors.textColor, fontWeight: FontWeight.w600), + ], + ), + ], + ), + ], + ), + ); + } + + Widget _buildVisualModeCard() { + return Container( + padding: EdgeInsets.all(24.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: false, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Card Label + LocaleKeys.blindModes.tr(context: context).toText18(isBold: true), + SizedBox(height: 24.h), + + // Two columns layout + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Left Column - Radio buttons + Expanded( + flex: 2, + child: Column( + children: [ + _buildRadioOption(VisualMode.off, LocaleKeys.offTheme.tr(context: context)), + SizedBox(height: 12.h), + _buildRadioOption(VisualMode.invert, LocaleKeys.invertTheme.tr(context: context)), + SizedBox(height: 12.h), + _buildRadioOption(VisualMode.dim, LocaleKeys.dimTheme.tr(context: context)), + SizedBox(height: 12.h), + _buildRadioOption(VisualMode.highContrast, LocaleKeys.highContrastTheme.tr(context: context)), + ], + ), + ), + SizedBox(width: 16.w), + + // Right Column - Preview Card + Expanded( + flex: 3, + child: _buildPreviewCard(), + ), + ], + ), + ], + ), + ); + } + + Widget _buildRadioOption(VisualMode mode, String label) { + bool isSelected = _selectedMode == mode; + return GestureDetector( + onTap: () { + setState(() { + _selectedMode = mode; + }); + }, + child: Row( + children: [ + Container( + width: 20.w, + height: 20.w, + decoration: BoxDecoration( + shape: BoxShape.circle, + border: Border.all( + color: isSelected ? AppColors.primaryRedColor : AppColors.greyTextColor, + width: 2.w, + ), + color: Colors.transparent, + ), + child: isSelected + ? Center( + child: Container( + width: 10.w, + height: 10.w, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColors.primaryRedColor, + ), + ), + ) + : null, + ), + SizedBox(width: 8.w), + label.toText14(isBold: isSelected, color: isSelected ? AppColors.textColor : AppColors.textColor, weight: FontWeight.w600), + ], + ), + ); + } + + Widget _buildPreviewCard() { + // Always build preview content with base "Off" mode colors + // Use raw widgets WITHOUT preservation wrappers to isolate from saved visual mode + Widget previewContent = Container( + padding: EdgeInsets.all(16.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.r, + isCustomShadow: [ + BoxShadow( + color: const Color(0xff000000).withValues(alpha: 0.1), + blurRadius: 16, + spreadRadius: 16 * 0.1, // 10% of blur radius + offset: const Offset(0, 0), // Uniform shadow on all sides + ), + ], + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Top row with heading and arrow + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + LocaleKeys.cardHeading.tr(context: context).toText14( + isBold: true, + color: AppColors.blackBgColor, // Always use base color + ), + Transform.scale( + scaleX: Utils.appState.isArabic() ? -1 : 1, + child: SvgPicture.asset( + AppAssets.arrow_forward, + colorFilter: ColorFilter.mode(AppColors.blackBgColor, BlendMode.srcIn), + width: 24.w, + height: 24.h, + ), + ), + ], + ), + SizedBox(height: 16.h), + + // Price with SAR symbol + Row( + children: [ + SvgPicture.asset( + (Utils.appState.getAuthenticatedUser()!.outSa == 1) ? AppAssets.uae_dirham_symbol : AppAssets.saudi_riyal_icon, + colorFilter: ColorFilter.mode(AppColors.blackBgColor, BlendMode.srcIn), + width: 16.w, + height: 16.h, + ), + SizedBox(width: 4.h), + "1234".toText24( + isBold: true, + color: AppColors.blackBgColor, // Always use base color + ), + ], + ), + SizedBox(height: 16.h), + + // Button - simple container without preservation wrappers + Container( + height: 44.h, + padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 12.h), + decoration: BoxDecoration( + color: AppColors.primaryRedColor, + borderRadius: BorderRadius.circular(12.r), + ), + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + SvgPicture.asset( + AppAssets.add_icon, + colorFilter: ColorFilter.mode(AppColors.whiteColor, BlendMode.srcIn), + width: 20.w, + height: 20.h, + ), + SizedBox(width: 8.w), + LocaleKeys.buttonText.tr(context: context).toText14( + isBold: true, + color: AppColors.whiteColor, + ), + ], + ), + ), + ], + ), + ); + + // First, cancel out the global app filter by applying reverse filter + Widget neutralizedContent = _cancelGlobalFilter(previewContent); + + // Then apply the selected mode filter on top of the neutralized content + return _applySelectedModeFilter(neutralizedContent); + } + + /// Cancel out the global app filter to get back to base colors + Widget _cancelGlobalFilter(Widget child) { + final savedMode = profileSettingsViewModel.visualMode; + + switch (savedMode) { + case 'invert': + // Global filter is invert, apply reverse (invert again) to get base colors + return ColorFiltered( + colorFilter: const ColorFilter.matrix([ + -1, 0, 0, 0, 255, + 0, -1, 0, 0, 255, + 0, 0, -1, 0, 255, + 0, 0, 0, 1, 0, + ]), + child: child, + ); + + case 'dim': + // Global filter has overlay, but we can't reverse an overlay + // Just return child as-is (dim affects whole screen anyway) + return child; + + case 'highContrast': + // Global filter is grayscale, apply saturation boost to approximate reverse + return ColorFiltered( + colorFilter: const ColorFilter.matrix([ + 1.5, 0, 0, 0, 0, + 0, 1.5, 0, 0, 0, + 0, 0, 1.5, 0, 0, + 0, 0, 0, 1, 0, + ]), + child: child, + ); + + case 'off': + default: + // No global filter, return as-is + return child; + } + } + + /// Apply the selected mode filter to the preview + Widget _applySelectedModeFilter(Widget child) { + switch (_selectedMode) { + case VisualMode.invert: + return ColorFiltered( + colorFilter: const ColorFilter.matrix([ + -1, 0, 0, 0, 255, // Red channel inverted + 0, -1, 0, 0, 255, // Green channel inverted + 0, 0, -1, 0, 255, // Blue channel inverted + 0, 0, 0, 1, 0, // Alpha channel unchanged + ]), + child: child, + ); + + case VisualMode.dim: + // For dim mode, we control actual screen brightness + // No filter is applied - images remain unchanged + return child; + + case VisualMode.highContrast: + return ColorFiltered( + colorFilter: const ColorFilter.matrix([ + 0.2126, 0.7152, 0.0722, 0, 0, // Red channel (grayscale) + 0.2126, 0.7152, 0.0722, 0, 0, // Green channel (grayscale) + 0.2126, 0.7152, 0.0722, 0, 0, // Blue channel (grayscale) + 0, 0, 0, 1, 0, // Alpha channel unchanged + ]), + child: child, + ); + + case VisualMode.off: + return child; + } + } +} diff --git a/lib/presentation/profile_settings/profile_settings.dart b/lib/presentation/profile_settings/profile_settings.dart index 2bd41f06..2e9bb3b7 100644 --- a/lib/presentation/profile_settings/profile_settings.dart +++ b/lib/presentation/profile_settings/profile_settings.dart @@ -4,36 +4,45 @@ import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_swiper_view/flutter_swiper_view.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; -import 'package:hmg_patient_app_new/core/enums.dart'; -import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/int_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; -import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; +import 'package:hmg_patient_app_new/features/contact_us/contact_us_view_model.dart'; +import 'package:hmg_patient_app_new/features/contact_us/models/feedback_type.dart'; import 'package:hmg_patient_app_new/features/insurance/insurance_view_model.dart'; import 'package:hmg_patient_app_new/features/medical_file/medical_file_view_model.dart'; import 'package:hmg_patient_app_new/features/medical_file/models/family_file_response_model.dart'; import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; -import 'package:hmg_patient_app_new/presentation/habib_wallet/habib_wallet_page.dart'; -import 'package:hmg_patient_app_new/presentation/habib_wallet/recharge_wallet_page.dart'; -import 'package:hmg_patient_app_new/services/dialog_service.dart'; +import 'package:hmg_patient_app_new/presentation/contact_us/feedback_page.dart'; +import 'package:hmg_patient_app_new/presentation/insurance/widgets/insurance_update_details_card.dart'; +import 'package:hmg_patient_app_new/presentation/profile_settings/accessibility_page.dart'; +import 'package:hmg_patient_app_new/presentation/profile_settings/widgets/profile_picture_widget.dart'; +import 'package:hmg_patient_app_new/presentation/profile_settings/widgets/update_email_widget.dart'; +import 'package:hmg_patient_app_new/presentation/profile_settings/widgets/update_emergency_contact_widget.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/app_language_change.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/user_avatar_widget.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; -import 'package:permission_handler/permission_handler.dart'; import 'package:provider/provider.dart'; +import 'package:permission_handler/permission_handler.dart'; import 'package:url_launcher/url_launcher.dart'; +import 'package:in_app_review/in_app_review.dart'; + +import 'dart:ui' as ui; + +import 'widgets/patient_qr_code_widget.dart'; class ProfileSettings extends StatefulWidget { const ProfileSettings({super.key}); @@ -43,12 +52,22 @@ class ProfileSettings extends StatefulWidget { } class ProfileSettingsState extends State { + + final InAppReview inAppReview = InAppReview.instance; + @override void initState() { - scheduleMicrotask(() { - insuranceViewModel.initInsuranceProvider(); - }); super.initState(); + _loadPermissions(); + + // Load data after first frame + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted) { + insuranceViewModel.initInsuranceProvider(); + // Load profile settings for preferred language + profileSettingsViewModel.getProfileSettings(); + } + }); } @override @@ -86,10 +105,15 @@ class ProfileSettingsState extends State { int length = 3; final SwiperController _controller = SwiperController(); late InsuranceViewModel insuranceViewModel; + late ContactUsViewModel contactUsViewModel; + late ProfileSettingsViewModel profileSettingsViewModel; + String _permissionsLabel = ""; @override Widget build(BuildContext context) { insuranceViewModel = Provider.of(context, listen: false); + contactUsViewModel = Provider.of(context, listen: false); + profileSettingsViewModel = Provider.of(context, listen: false); return CollapsingListView( title: LocaleKeys.profileAndSettings.tr(context: context), logout: () { @@ -97,109 +121,130 @@ class ProfileSettingsState extends State { }, isClose: true, child: SingleChildScrollView( - padding: EdgeInsets.only(top: 24.h, bottom: 24.h), + padding: EdgeInsets.only(top: 0.h, bottom: 24.h), physics: NeverScrollableScrollPhysics(), child: Consumer2( builder: (context, profileVm, medicalVm, child) { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Swiper( - itemCount: medicalVm.patientFamilyFiles.length, - layout: SwiperLayout.STACK, - loop: true, - itemHeight: dynamicItemHeight(context), - itemWidth: SizeUtils.width - 30.w, - indicatorLayout: PageIndicatorLayout.COLOR, - axisDirection: AxisDirection.right, - controller: _controller, - pagination: SwiperPagination( - alignment: Alignment.bottomCenter, - margin: EdgeInsets.only(top: (210.h + 8.h + 24.h)), - builder: DotSwiperPaginationBuilder(color: Color(0xffD9D9D9), activeColor: AppColors.blackBgColor), - ), - itemBuilder: (BuildContext context, int index) { - return FamilyCardWidget( - profile: medicalVm.patientFamilyFiles[index], - onAddFamilyMemberPress: () { - DialogService dialogService = getIt.get(); - dialogService.showAddFamilyFileSheet( - label: LocaleKeys.addFamilyMember.tr(context: context), - message: LocaleKeys.pleaseFillBelowFieldToAddNewFamilyMember.tr(context: context), - onVerificationPress: () { - medicalVm.addFamilyFile(otpTypeEnum: OTPTypeEnum.sms); - }); - }, - onFamilySwitchPress: (FamilyFileResponseModelLists profile) { - medicalVm.switchFamilyFiles(responseID: profile.responseId, patientID: profile.patientId, phoneNumber: profile.mobileNumber); - }, - ).paddingOnly(right: 16.w, left: 8.w); - }, - ), - SizedBox(height: 5.h), - GridView( - gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: isTablet ? 3 : 2), - physics: const NeverScrollableScrollPhysics(), - padding: EdgeInsets.only(left: 24.w, right: 24.w, bottom: 24.h), - shrinkWrap: true, - children: [ - Container( - padding: EdgeInsets.all(16.w), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.r, - hasShadow: true, - ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - // spacing: 4.h, - children: [ - Row( - spacing: 8.w, - crossAxisAlignment: CrossAxisAlignment.center, - children: [ - Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 40.w, height: 40.h, applyThemeColor: false), - LocaleKeys.habibWallet.tr(context: context).toText16(weight: FontWeight.w600, maxlines: 2).expanded, - Utils.buildSvgWithAssets(icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward), - ], - ), - Spacer(), - Consumer(builder: (context, habibWalletVM, child) { - return Utils.getPaymentAmountWithSymbol2(habibWalletVM.habibWalletAmount, isExpanded: false) - .toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.r, width: 80.w, height: 24.h); - }), - Spacer(), - CustomButton( - height: 40.h, - icon: AppAssets.recharge_icon, - iconSize: 22.w, - iconColor: AppColors.infoColor, - textColor: AppColors.infoColor, - text: LocaleKeys.recharge.tr(context: context), - borderWidth: 0.w, - fontWeight: FontWeight.w500, - borderColor: Colors.transparent, - backgroundColor: Color(0xff45A2F8).withValues(alpha: 0.08), - padding: EdgeInsets.all(8.w), - fontSize: 14.f, - onPressed: () { - Navigator.of(context).push(CustomPageRoute(page: RechargeWalletPage())); - }, - ), - ], - ).onPress(() { - Navigator.of(context).push(CustomPageRoute(page: HabibWalletPage())); - }), - ), - ], - ), - LocaleKeys.quickActions.tr(context: context).toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w), + // Profile Picture Section + ProfilePictureWidget(), + + // SizedBox( + // height: dynamicItemHeight(context) + 20 + 30, // itemHeight + shadow padding (10 top + 10 bottom) + pagination dots space + // child: Swiper( + // itemCount: medicalVm.patientFamilyFiles.length, + // layout: SwiperLayout.STACK, + // loop: true, + // itemHeight: dynamicItemHeight(context) + 20, + // // extra space for shadow + // itemWidth: SizeUtils.width - 30.w, + // indicatorLayout: PageIndicatorLayout.COLOR, + // axisDirection: getIt.get().isArabic() ? AxisDirection.left : AxisDirection.right, + // controller: _controller, + // pagination: SwiperPagination( + // alignment: Alignment.bottomCenter, + // margin: EdgeInsets.only(top: (180.h + 20 + 8.h + 24.h)), + // builder: DotSwiperPaginationBuilder(color: Color(0xffD9D9D9), activeColor: AppColors.blackBgColor), + // ), + // itemBuilder: (BuildContext context, int index) { + // return Padding( + // padding: const EdgeInsets.symmetric(vertical: 10), + // child: FamilyCardWidget( + // profile: medicalVm.patientFamilyFiles[index], + // onAddFamilyMemberPress: () { + // DialogService dialogService = getIt.get(); + // dialogService.showAddFamilyFileSheet( + // label: LocaleKeys.addFamilyMember.tr(context: context), + // message: LocaleKeys.pleaseFillBelowFieldToAddNewFamilyMember.tr(context: context), + // onVerificationPress: () { + // medicalVm.addFamilyFile(otpTypeEnum: OTPTypeEnum.sms); + // }); + // }, + // onFamilySwitchPress: (FamilyFileResponseModelLists profile) { + // medicalVm.switchFamilyFiles(responseID: profile.responseId, patientID: profile.patientId, phoneNumber: profile.mobileNumber); + // }, + // ).paddingOnly(right: 16.w, left: 8.w), + // ); + // }, + // ), + // ), + // SizedBox(height: 16.h), + // GridView( + // gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: isTablet ? 3 : 2), + // physics: const NeverScrollableScrollPhysics(), + // padding: EdgeInsets.only(left: 24.w, right: 24.w, bottom: 24.h), + // shrinkWrap: true, + // children: [ + // Container( + // padding: EdgeInsets.all(16.w), + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // color: AppColors.whiteColor, + // borderRadius: 20.r, + // hasShadow: true, + // ), + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // // spacing: 4.h, + // children: [ + // Row( + // spacing: 8.w, + // crossAxisAlignment: CrossAxisAlignment.center, + // children: [ + // Utils.buildSvgWithAssets(icon: AppAssets.wallet, width: 40.w, height: 40.h, applyThemeColor: false), + // LocaleKeys.habibWallet.tr(context: context).toText16(isBold: true, maxlines: 2).expanded, + // Utils.buildSvgWithAssets(icon: getIt.get().isArabic() ? AppAssets.arrow_back : AppAssets.arrow_forward), + // ], + // ), + // Spacer(), + // Consumer(builder: (context, habibWalletVM, child) { + // return Utils.getPaymentAmountWithSymbol2(habibWalletVM.habibWalletAmount, isExpanded: false) + // .toShimmer2(isShow: habibWalletVM.isWalletAmountLoading, radius: 12.r, width: 80.w, height: 24.h); + // }), + // Spacer(), + // CustomButton( + // height: 40.h, + // icon: AppAssets.recharge_icon, + // iconSize: 22.w, + // iconColor: AppColors.infoColor, + // textColor: AppColors.infoColor, + // text: LocaleKeys.recharge.tr(context: context), + // borderWidth: 0.w, + // isBold: true, + // borderColor: Colors.transparent, + // backgroundColor: Color(0xff45A2F8).withValues(alpha: 0.08), + // padding: EdgeInsets.all(8.w), + // fontSize: 14.f, + // onPressed: () { + // Navigator.of(context).push(CustomPageRoute(page: RechargeWalletPage())); + // }, + // ), + // ], + // ).onPress(() { + // Navigator.of(context).push(CustomPageRoute(page: HabibWalletPage())); + // }), + // ), + // ], + // ), + LocaleKeys.quickActions.tr(context: context).toText18(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w), Container( margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h, bottom: 24.h), padding: EdgeInsets.only(top: 4.h, bottom: 4.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: false), child: Column( children: [ + actionItem(AppAssets.patientQRCodeIcon, LocaleKeys.viewPatientQR.tr(context: context), () { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.patientQR.tr(context: context), + context, + child: PatientQrCodeWidget(), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }), + 1.divider, actionItem(AppAssets.language_change, LocaleKeys.language.tr(context: context), () { showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.language.tr(context: context), child: AppLanguageChange(), callBackFunc: () {}, isFullScreen: false); }, trailingLabel: Utils.appState.isArabic() ? "العربية" : "English"), @@ -223,37 +268,47 @@ class ProfileSettingsState extends State { ); }, ), - ], - ), - ), - Container( - margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h, bottom: 24.h), - padding: EdgeInsets.only(top: 4.h, bottom: 4.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), - child: Column( - children: [ - actionItem(AppAssets.language_change, LocaleKeys.language.tr(context: context), () { - showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.language.tr(context: context), child: AppLanguageChange(), callBackFunc: () {}, isFullScreen: false); - }, trailingLabel: Utils.appState.isArabic() ? "العربية" : "English"), 1.divider, - actionItem(AppAssets.bell, LocaleKeys.notificationsSettings.tr(context: context), () { - openAppSettings(); + actionItem(AppAssets.accessibility, LocaleKeys.accessibility.tr(context: context), () { + Navigator.of(context).push(CustomPageRoute(page: const AccessibilityPage())); }), - // 1.divider, - // actionItem(AppAssets.touch_face_id, LocaleKeys.touchIDFaceIDServices.tr(context: context), () {}, switchValue: true), ], ), ), - LocaleKeys.personalInformation.tr(context: context).toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w), + LocaleKeys.personalInformation.tr(context: context).toText18(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w), Container( margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h, bottom: 24.h), padding: EdgeInsets.only(top: 4.h, bottom: 4.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: false), child: Column( children: [ - actionItem(AppAssets.email_transparent, LocaleKeys.updateEmailAddress.tr(context: context), () {}), - // 1.divider, - // actionItem(AppAssets.smart_phone_fill, "Phone Number".needTranslation, () {}), + actionItem(AppAssets.email_transparent, LocaleKeys.updateEmailAddress.tr(context: context), () { + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.updateEmailAddress.tr(context: context), + child: UpdateEmailDialog(), + callBackFunc: () {}, + isFullScreen: false, + ); + }), + 1.divider, + actionItem(AppAssets.language, LocaleKeys.communicationLanguage.tr(context: context), () { + profileVm.openPreferredLanguageBottomSheet(); + }, + trailingLabel: profileVm.isPatientProfileLoading || profileVm.getPatientInfoForUpdate == null + ? "English" + : (profileVm.getPatientInfoForUpdate!.preferredLanguage! == "1" ? LocaleKeys.arabic.tr(context: context) : LocaleKeys.english.tr(context: context)), + isShowLoading: profileVm.isPatientProfileLoading), + 1.divider, + actionItem(AppAssets.smart_phone_fill, LocaleKeys.emrgNo.tr(context: context), () { + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.emrgNo.tr(context: context), + child: UpdateEmergencyContactDialog(), + callBackFunc: () {}, + isFullScreen: false, + ); + }), // 1.divider, // actionItem(AppAssets.my_address, "My Addresses".needTranslation, () {}), // 1.divider, @@ -261,51 +316,76 @@ class ProfileSettingsState extends State { ], ), ), - LocaleKeys.helpAndSupport.tr(context: context).toText18(weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w), + LocaleKeys.helpAndSupport.tr(context: context).toText18(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).paddingOnly(left: 24.w, right: 24.w), Container( margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h), padding: EdgeInsets.only(top: 4.h, bottom: 4.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: true), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: false), child: Column( children: [ actionItem(AppAssets.call_fill, LocaleKeys.contactUs.tr(context: context), () { launchUrl(Uri.parse("tel://" + "+966 92 006 6666")); - }, trailingLabel: "92 006 6666"), + }, trailingLabel: "92 006 6666", isEnglishOnly: true), + 1.divider, + actionItem(AppAssets.permission, LocaleKeys.permissionsProfile.tr(context: context), () { + openAppSettings(); + }, trailingLabel: getCurrentPermissions(), isEnglishOnly: true), + actionItem(AppAssets.feedbackFill, LocaleKeys.feedback.tr(context: context), () { + contactUsViewModel.setSelectedFeedbackType( + FeedbackType(id: 5, nameEN: "Not classified", nameAR: 'غير محدد'), + ); + contactUsViewModel.setIsSendFeedbackTabSelected(true); + Navigator.pop(context); + Navigator.of(context).push( + CustomPageRoute( + page: FeedbackPage(), + ), + ); + }, trailingLabel: ""), 1.divider, // actionItem(AppAssets.permission, LocaleKeys.permissions.tr(context: context), () {}, trailingLabel: "Location, Camera"), // 1.divider, - actionItem(AppAssets.rate, LocaleKeys.rateApp.tr(context: context), () { + actionItem(AppAssets.rate, LocaleKeys.rateApp.tr(context: context), () async { + // if (await inAppReview.isAvailable()) { + // inAppReview.requestReview(); + // } else { + // inAppReview.openStoreListing(appStoreId: '6758851027'); + // } if (Platform.isAndroid) { - Utils.openWebView( - url: 'https://play.google.com/store/apps/details?id=com.ejada.hmg', - ); + inAppReview.openStoreListing(appStoreId: '6758851027'); + // Utils.openWebView( + // url: 'https://play.google.com/store/apps/details?id=com.ejada.hmg', + // ); } else { - Utils.openWebView( - url: 'https://itunes.apple.com/app/id733503978', - ); + if (await inAppReview.isAvailable()) { + inAppReview.requestReview(); + } } - }, isExternalLink: true), + // }, isExternalLink: true), + }), 1.divider, actionItem(AppAssets.privacy_terms, LocaleKeys.privacyPolicy.tr(context: context), () { Utils.openWebView( - url: 'https://hmg.com/en/Pages/Privacy.aspx', + url: AppUrls.hmgPrivacyUrlEn, ); }, isExternalLink: true), 1.divider, actionItem(AppAssets.privacy_terms, LocaleKeys.termsConditoins.tr(context: context), () { Utils.openWebView( - url: 'https://hmg.com/en/Pages/Terms.aspx', + url: AppUrls.hmgTermsUrlEn, ); }, isExternalLink: true), + 1.divider, + socialMedia(AppAssets.privacy_terms, LocaleKeys.followUsOn.tr(context: context)), ], ), ), - CustomButton( - height: 56.h, - icon: AppAssets.minus, - text: LocaleKeys.deactivateAccount.tr(context: context), - onPressed: () {}, - ).paddingAll(24.w), + // CustomButton( + // height: 56.h, + // icon: AppAssets.minus, + // text: LocaleKeys.deactivateAccount.tr(context: context), + // onPressed: () {}, + // ).paddingAll(24.w), ], ); }, @@ -314,15 +394,48 @@ class ProfileSettingsState extends State { ); } - Widget actionItem(String icon, String label, VoidCallback onPress, {String trailingLabel = "", bool? switchValue, ValueChanged? onSwitchChanged, bool isExternalLink = false}) { + Future _loadPermissions() async { + final Map permissionMap = { + 'Camera': Permission.camera, + 'Microphone': Permission.microphone, + 'Location': Permission.location, + 'Notifications': Permission.notification, + 'Calendar': Permission.calendarFullAccess, + }; + + final List granted = []; + + for (final entry in permissionMap.entries) { + if (await entry.value.isGranted) { + granted.add(entry.key); + } + } + + if (mounted) { + setState(() { + _permissionsLabel = granted.isEmpty ? 'No permissions granted' : granted.join(', '); + }); + } + } + + String getCurrentPermissions() { + return _permissionsLabel; + } + + Widget actionItem(String icon, String label, VoidCallback onPress, + {String trailingLabel = "", bool? switchValue, ValueChanged? onSwitchChanged, bool isExternalLink = false, bool isShowLoading = false, bool isEnglishOnly = false}) { return SizedBox( height: 56.h, child: Row( spacing: 8.w, children: [ Utils.buildSvgWithAssets(icon: icon, iconColor: AppColors.greyTextColor), - label.toText14(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, - if (trailingLabel.isNotEmpty) trailingLabel.toText14(color: AppColors.greyTextColor, weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1), + label.toText14(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + if (trailingLabel.isNotEmpty) + ConstrainedBox( + constraints: BoxConstraints(maxWidth: MediaQuery.of(context).size.width * 0.35), + child: isEnglishOnly ? Directionality(textDirection: ui.TextDirection.ltr, child: trailingLabel.toText14(color: AppColors.greyTextColor, isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1, isEnglishOnly: isEnglishOnly).toShimmer2(isShow: isShowLoading)) : trailingLabel.toText14(color: AppColors.greyTextColor, isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1, isEnglishOnly: isEnglishOnly).toShimmer2(isShow: isShowLoading), + ), switchValue != null ? Switch( value: switchValue, @@ -338,9 +451,33 @@ class ProfileSettingsState extends State { ).paddingOnly(left: 16.w, right: 16.w).onPress(onPress), ); } + + Widget socialMedia(String icon, String label, + ) { + return SizedBox( + height: 56.h, + child: Row( + spacing: 8.w, + children: [ + Utils.buildSvgWithAssets(icon: icon, iconColor: AppColors.greyTextColor), + label.toText14(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, + + Row( + spacing: 24.w, + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.x2).onPress(()=> launchUrl(Uri.parse("https://twitter.com/HMG"))), + Utils.buildSvgWithAssets(icon: AppAssets.fb).onPress(()=> launchUrl(Uri.parse("https://www.facebook.com/DrSulaimanAlHabib?ref=tn_tnmn"))), + Utils.buildSvgWithAssets(icon: AppAssets.linkedin).onPress(()=> launchUrl(Uri.parse("https://www.linkedin.com/company/drsulaiman-alhabib-medical-group"))), + Utils.buildSvgWithAssets(icon: AppAssets.youtube).onPress(()=> launchUrl(Uri.parse("https://www.youtube.com/c/DrsulaimanAlhabibHospitals"))), + ], + ) + ], + ).paddingOnly(left: 16.w, right: 16.w), + ); + } } -class FamilyCardWidget extends StatelessWidget { +class FamilyCardWidget extends StatefulWidget { final Function() onAddFamilyMemberPress; final Function(FamilyFileResponseModelLists member) onFamilySwitchPress; final FamilyFileResponseModelLists profile; @@ -352,18 +489,66 @@ class FamilyCardWidget extends StatelessWidget { required this.onFamilySwitchPress(FamilyFileResponseModelLists member), }); + @override + State createState() => _FamilyCardWidgetState(); +} + +class _FamilyCardWidgetState extends State { + @override + void initState() { + super.initState(); + // Sync ProfileSettingsViewModel with AppState when widget is created + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted) { + _syncProfileImageFromAppState(); + } + }); + } + + // @override + // void didChangeDependencies() { + // super.didChangeDependencies(); + // // Also sync when dependencies change (e.g., after user switch) + // WidgetsBinding.instance.addPostFrameCallback((_) { + // if (mounted) { + // _syncProfileImageFromAppState(); + // } + // }); + // } + + void _syncProfileImageFromAppState() { + try { + final profileVm = context.read(); + final appState = getIt.get(); + + final appStateImageData = appState.getProfileImageData; + + // Sync profile image from AppState if it's different + if (appStateImageData != null && appStateImageData.isNotEmpty) { + if (profileVm.profileImageData != appStateImageData) { + print("🔄 Syncing profile image from AppState to ProfileSettingsViewModel"); + profileVm.syncProfileImageFromAppState(); + } + } else if (profileVm.profileImageData != null) { + // AppState is null but ViewModel has data - clear it + print("🧹 Clearing ProfileSettingsViewModel image data (AppState is null)"); + profileVm.clearProfileImageCache(); + } + } catch (e) { + print("⚠️ Error syncing profile image: $e"); + } + } + @override Widget build(BuildContext context) { AppState appState = getIt.get(); - final isActive = (profile.responseId == appState.getAuthenticatedUser()?.patientId); + final isActive = (widget.profile.responseId == appState.getAuthenticatedUser()?.patientId); // final isParentUser = appState.getAuthenticatedUser()?.isParentUser ?? false; - // final canSwitch = isParentUser || (!isParentUser && profile.responseId == appState.getSuperUserID); + // final canSwitch = isParentUser || (!isParentUser && widget.profile.responseId == appState.getSuperUserID); return Container( decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, - borderRadius: 24.r, - hasShadow: true, - ), + borderRadius: 24.r, hasShadow: true, hasDenseShadow: true), child: Column( children: [ Column( @@ -373,21 +558,73 @@ class FamilyCardWidget extends StatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset(profile.gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, width: 56.w, height: 56.h), + // Wrap in Consumer to rebuild when ProfileSettingsViewModel changes + Consumer( + builder: (context, profileVm, _) { + final currentUserId = appState.getAuthenticatedUser()?.patientId; + final isCurrentUser = widget.profile.responseId == currentUserId; + + if (isCurrentUser) { + // Current user - use AppState directly (like home screen profile icon) + return UserAvatarWidget( + width: 56.w, + height: 56.h, + gender: widget.profile.gender, + age: widget.profile.age, + fit: BoxFit.cover, + // Don't pass customProfileImageData - let it use AppState + isCircular: true, + // Don't pass isFamilyMember - allow AppState fallback + ); + } else { + // Family member - use their specific image data + return UserAvatarWidget( + width: 56.w, + height: 56.h, + gender: widget.profile.gender, + age: widget.profile.age, + fit: BoxFit.cover, + customProfileImageData: widget.profile.patientImageData, + isCircular: true, + isFamilyMember: true, // Prevent AppState fallback + ); + } + }, + ), Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - "${profile.patientName}".toText18(isBold: true, weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1), - AppCustomChipWidget( - icon: AppAssets.file_icon, - labelText: "${LocaleKeys.fileNo.tr(context: context)}: ${profile.responseId}", - iconSize: 12.w, + "${widget.profile.patientName}".toText18(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1, isEnglishOnly: true), + Wrap( + direction: Axis.horizontal, + spacing: 4.w, + runSpacing: 6.w, + children: [ + AppCustomChipWidget( + labelPadding: EdgeInsetsDirectional.only(start: -6.w, end: 6.w), + icon: AppAssets.file_icon, + labelText: "${LocaleKeys.fileno.tr(context: context)}: ${widget.profile.responseId}", + iconSize: 12.w, + ), + isActive ? AppCustomChipWidget( + icon: AppAssets.checkmark_icon, + labelText: LocaleKeys.verified.tr(context: context), + iconColor: AppColors.successColor, + labelPadding: EdgeInsetsDirectional.only(start: -6.w, end: 6.w), + ) : SizedBox.shrink(), + ], ), ], ).expanded, // Icon(Icons.qr_code, size: 56.h) - Image.network("https://api.qrserver.com/v1/create-qr-code/?size=250x250&data=${profile.responseId.toString()}", fit: BoxFit.contain, height: 56.h, width: 56.w) + Utils.buildImgWithNetwork( + url: "https://api.qrserver.com/v1/create-qr-code/?size=250x250&data=${widget.profile.responseId.toString()}", + iconColor: AppColors.transparent, + fit: BoxFit.contain, + height: 56.h, + width: 56.w, + ) ], ), SizedBox(height: 4.h), @@ -398,20 +635,22 @@ class FamilyCardWidget extends StatelessWidget { runSpacing: 4.h, children: [ AppCustomChipWidget( - labelText: LocaleKeys.ageYearsOld.tr(namedArgs: {'age': profile.age.toString(), 'yearsOld': LocaleKeys.yearsOld.tr(context: context)}), + labelText: LocaleKeys.ageYearsOld.tr(namedArgs: {'age': widget.profile.age.toString(), 'yearsOld': LocaleKeys.yearsOld.tr(context: context)}), ), - isActive && appState.getAuthenticatedUser()!.bloodGroup != null - ? AppCustomChipWidget( - icon: AppAssets.blood_icon, + // isActive && appState.getAuthenticatedUser()!.bloodGroup != null + // ? + isActive ? AppCustomChipWidget( + icon: AppAssets.blood_icon, labelPadding: EdgeInsetsDirectional.only(start: -6.w, end: 8.w), - labelText: "Blood: ${appState.getAuthenticatedUser()!.bloodGroup ?? ""}", - iconColor: AppColors.primaryRedColor) - : SizedBox(), + labelText: appState.getAuthenticatedUser()!.bloodGroup ?? "N/A", + iconColor: AppColors.primaryRedColor) + : SizedBox(), Consumer(builder: (context, insuranceVM, child) { - return AppCustomChipWidget( - icon: insuranceVM.isInsuranceExpired - ? AppAssets.cancel_circle_icon - : insuranceVM.isInsuranceActive + return isActive + ? AppCustomChipWidget( + icon: insuranceVM.isInsuranceExpired + ? AppAssets.cancel_circle_icon + : insuranceVM.isInsuranceActive ? AppAssets.insurance_active_icon : AppAssets.alertSquare, labelText: insuranceVM.isInsuranceExpired @@ -431,36 +670,44 @@ class FamilyCardWidget extends StatelessWidget { : AppColors.warningColorYellow, iconSize: 12.w, deleteIcon: insuranceVM.isInsuranceActive ? null : AppAssets.forward_chevron_icon, - deleteIconColor: AppColors.warningColorYellow, + deleteIconColor: insuranceVM.isInsuranceExpired + ? AppColors.primaryRedColor + : insuranceVM.isInsuranceActive + ? AppColors.successColor + : AppColors.warningColorYellow, deleteIconHasColor: true, onChipTap: () { if (!insuranceVM.isInsuranceActive) { - showCommonBottomSheetWithoutHeight( - title: LocaleKeys.notice.tr(context: context), - context, - child: Utils.getWarningWidget( - loadingText: LocaleKeys.insuranceInActiveContactSupport.tr(context: context), - confirmText: LocaleKeys.contactUs.tr(context: context), - isShowActionButtons: true, - onCancelTap: () { - Navigator.pop(context); - }, - onConfirmTap: () async { - launchUrl(Uri.parse("tel://" + "+966 92 006 6666")); - }), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); + insuranceVM.setIsInsuranceUpdateDetailsLoading(true); + insuranceVM.getPatientInsuranceDetailsForUpdate(appState.getAuthenticatedUser()!.patientId.toString(), appState.getAuthenticatedUser()!.patientIdentificationNo.toString()); + showCommonBottomSheetWithoutHeight(context, child: PatientInsuranceCardUpdateCard(), callBackFunc: () {}, title: "", isCloseButtonVisible: false, isFullScreen: false); + // showCommonBottomSheetWithoutHeight( + // title: LocaleKeys.notice.tr(context: context), + // context, + // child: Utils.getWarningWidget( + // loadingText: LocaleKeys.insuranceInActiveContactSupport.tr(context: context), + // confirmText: LocaleKeys.contactUs.tr(context: context), + // isShowActionButtons: true, + // onCancelTap: () { + // Navigator.pop(context); + // }, + // onConfirmTap: () async { + // launchUrl(Uri.parse("tel://" + "+966 92 006 6666")); + // }), + // callBackFunc: () {}, + // isFullScreen: false, + // isCloseButtonVisible: true, + // ); } }, backgroundColor: insuranceVM.isInsuranceExpired - ? AppColors.primaryRedColor.withOpacity(0.1) + ? AppColors.primaryRedColor.withValues(alpha: 0.1) : insuranceVM.isInsuranceActive - ? AppColors.successColor.withOpacity(0.1) - : AppColors.warningColorYellow.withOpacity(0.1), + ? AppColors.successColor.withValues(alpha: 0.1) + : AppColors.warningColorYellow.withValues(alpha: 0.1), labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: insuranceVM.isInsuranceActive ? 6.w : 0.w), - ).toShimmer2(isShow: insuranceVM.isInsuranceLoading); + ).toShimmer2(isShow: insuranceVM.isInsuranceLoading) + : SizedBox.shrink(); }), ], ), @@ -487,12 +734,12 @@ class FamilyCardWidget extends StatelessWidget { } Widget _buildParentUserButton(int? currentUserId) { - final canSwitch = profile.responseId != currentUserId; + final canSwitch = widget.profile.responseId != currentUserId; return CustomButton( icon: canSwitch ? AppAssets.switch_user : AppAssets.add_family, text: canSwitch ? LocaleKeys.switchAccount.tr() : LocaleKeys.addANewFamilyMember.tr(), - onPressed: canSwitch ? () => onFamilySwitchPress(profile) : onAddFamilyMemberPress, + onPressed: canSwitch ? () => widget.onFamilySwitchPress(widget.profile) : widget.onAddFamilyMemberPress, backgroundColor: canSwitch ? AppColors.secondaryLightRedColor : AppColors.primaryRedColor, borderColor: canSwitch ? AppColors.secondaryLightRedColor : AppColors.primaryRedColor, textColor: canSwitch ? AppColors.primaryRedColor : Colors.white, @@ -503,7 +750,7 @@ class FamilyCardWidget extends StatelessWidget { } Widget _buildNonParentUserButton(int? superUserId) { - final canSwitchBack = superUserId != null && superUserId == profile.responseId; + final canSwitchBack = superUserId != null && superUserId == widget.profile.responseId; return CustomButton( icon: AppAssets.switch_user, @@ -512,7 +759,7 @@ class FamilyCardWidget extends StatelessWidget { borderColor: canSwitchBack ? AppColors.primaryRedColor : Colors.grey.shade200, textColor: canSwitchBack ? AppColors.whiteColor : AppColors.greyTextColor, iconColor: canSwitchBack ? AppColors.whiteColor : AppColors.greyTextColor, - onPressed: canSwitchBack ? () => onFamilySwitchPress(profile) : () {}, + onPressed: canSwitchBack ? () => widget.onFamilySwitchPress(widget.profile) : () {}, height: isFoldable ? 50.h : 40.h, fontSize: 14.f, ).paddingOnly(top: 12.h, right: 16.w, left: 16.w, bottom: 16.h); diff --git a/lib/presentation/profile_settings/widgets/family_card_widget.dart b/lib/presentation/profile_settings/widgets/family_card_widget.dart index b21c52d4..fbd1d58b 100644 --- a/lib/presentation/profile_settings/widgets/family_card_widget.dart +++ b/lib/presentation/profile_settings/widgets/family_card_widget.dart @@ -14,6 +14,7 @@ import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/user_avatar_widget.dart'; import 'package:provider/provider.dart'; class FamilyCardWidget extends StatelessWidget { @@ -49,12 +50,21 @@ class FamilyCardWidget extends StatelessWidget { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset(profile.gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, width: 56.w, height: 56.h), + UserAvatarWidget( + width: 56.w, + height: 56.h, + gender: profile.gender, + age: profile.age, + fit: BoxFit.cover, + customProfileImageData: profile.patientImageData, + isCircular: true, + isFamilyMember: true, // Prevent AppState fallback + ), Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - "${profile.patientName}".toText18(isBold: true, weight: FontWeight.w600, textOverflow: TextOverflow.ellipsis, maxlines: 1), + "${profile.patientName}".toText18(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1), AppCustomChipWidget( icon: AppAssets.file_icon, labelText: "${LocaleKeys.fileNo.tr(context: context)}: ${profile.responseId}", diff --git a/lib/presentation/profile_settings/widgets/patient_qr_code_widget.dart b/lib/presentation/profile_settings/widgets/patient_qr_code_widget.dart new file mode 100644 index 00000000..adc1632e --- /dev/null +++ b/lib/presentation/profile_settings/widgets/patient_qr_code_widget.dart @@ -0,0 +1,56 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; + +import '../../../generated/locale_keys.g.dart'; + +class PatientQrCodeWidget extends StatelessWidget { + PatientQrCodeWidget({super.key}); + + late AppState appState; + + @override + Widget build(BuildContext context) { + appState = getIt.get(); + return Column( + children: [ + SizedBox(height: 8.h), + "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}".toText18(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 2), + SizedBox(height: 8.h), + Wrap( + direction: Axis.horizontal, + spacing: 4.w, + runSpacing: 6.w, + children: [ + AppCustomChipWidget( + icon: AppAssets.file_icon, + labelText: "${LocaleKeys.fileno.tr(context: context)}: ${appState.getAuthenticatedUser()!.patientId}", + labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + ), + AppCustomChipWidget( + icon: AppAssets.checkmark_icon, + labelText: LocaleKeys.verified.tr(context: context), + iconColor: AppColors.successColor, + labelPadding: EdgeInsetsDirectional.only(start: -4.w, end: 6.w), + ), + ], + ), + SizedBox(height: 16.h), + Image.network( + "https://api.qrserver.com/v1/create-qr-code/?size=250x250&data=${appState.getAuthenticatedUser()!.patientId.toString()}", + fit: BoxFit.fill, + height: 156.h, + width: 156.h, + ), + SizedBox(height: 16.h), + ], + ); + } +} diff --git a/lib/presentation/profile_settings/widgets/preferred_language_widget.dart b/lib/presentation/profile_settings/widgets/preferred_language_widget.dart new file mode 100644 index 00000000..d0f85090 --- /dev/null +++ b/lib/presentation/profile_settings/widgets/preferred_language_widget.dart @@ -0,0 +1,118 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/int_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:provider/provider.dart'; + +class PreferredLanguageWidget extends StatefulWidget { + PreferredLanguageWidget({super.key}); + + @override + State createState() => _PreferredLanguageWidgetState(); +} + +class _PreferredLanguageWidgetState extends State { + String? selectedValue; + late ProfileSettingsViewModel profileSettingsViewModel; + + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addPostFrameCallback((_) { + setState(() { + selectedValue = profileSettingsViewModel.getPatientInfoForUpdate?.preferredLanguage!; + }); + }); + } + + @override + Widget build(BuildContext context) { + profileSettingsViewModel = Provider.of(context, listen: false); + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + spacing: 24.h, + children: [ + LocaleKeys.communicationLanguage.tr(context: context).toText14(), + Container( + padding: EdgeInsets.only(top: 4, bottom: 4), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true), + child: Column( + children: [ + languageItem("العربية", "1"), + 1.divider, + languageItem("English", "2"), + ], + ), + ), + CustomButton( + text: LocaleKeys.save.tr(context: context), + onPressed: () { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr(context: context)); + profileSettingsViewModel!.updatePatientInfo( + patientInfo: { + "PreferredLanguage": selectedValue, + "EmailAddress": profileSettingsViewModel.getPatientInfoForUpdate!.emailAddress, + "EmergencyContactName": profileSettingsViewModel.getPatientInfoForUpdate!.emergencyContactName, + "EmergencyContactNo": profileSettingsViewModel.getPatientInfoForUpdate!.emergencyContactNo, + "IsEmailAlertRequired": true, + "IsSMSAlertRequired": true, + }, + onSuccess: (response) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.success.tr(context: context), child: Utils.getSuccessWidget(loadingText: LocaleKeys.success.tr()), + callBackFunc: () async { + Navigator.of(GetIt.instance().navigatorKey.currentContext!).pop(); + profileSettingsViewModel.getProfileSettings(); + }, isFullScreen: false, isAutoDismiss: true); + }, + onError: (error) { + LoaderBottomSheet.hideLoader(); + // Show error message + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(error)), + ); + }, + ); + }), + ], + ); + } + + Widget languageItem(String title, String _value) { + return SizedBox( + height: 72, + child: Row( + spacing: 8.h, + children: [ + Radio( + value: _value, + groupValue: selectedValue, + activeColor: AppColors.errorColor, + onChanged: (value) { + setState(() { + selectedValue = _value; + }); + }, + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + ), + title.toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1, fontFamily: _value == "1" ? 'CairoArabic' : 'Poppins').expanded, + ], + ).paddingOnly(left: 16, right: 16).onPress(() { + setState(() { + selectedValue = _value; + }); + }), + ); + } +} diff --git a/lib/presentation/profile_settings/widgets/profile_picture_widget.dart b/lib/presentation/profile_settings/widgets/profile_picture_widget.dart new file mode 100644 index 00000000..5fe71e1e --- /dev/null +++ b/lib/presentation/profile_settings/widgets/profile_picture_widget.dart @@ -0,0 +1,216 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/core/utils/image_compression_helper.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/profile_picture/profile_picture_view_model.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/services/permission_service.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/image_picker.dart'; +import 'package:provider/provider.dart'; + +class ProfilePictureWidget extends StatefulWidget { + const ProfilePictureWidget({super.key}); + + @override + State createState() => _ProfilePictureWidgetState(); +} + +class _ProfilePictureWidgetState extends State { + final AppState _appState = getIt.get(); + final PermissionService _permissionService = getIt.get(); + + @override + void initState() { + super.initState(); + + // Initialize view model + WidgetsBinding.instance.addPostFrameCallback((_) { + if (!mounted) return; + final profilePictureViewModel = context.read(); + profilePictureViewModel.initialize(); + profilePictureViewModel.triggerInitialLoad(); + }); + } + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + // Check for user switch + final profilePictureViewModel = context.read(); + if (profilePictureViewModel.isInitialLoadTriggered) { + profilePictureViewModel.checkForUserSwitch(); + } + } + + @override + void didUpdateWidget(ProfilePictureWidget oldWidget) { + super.didUpdateWidget(oldWidget); + // Check for user switch + context.read().checkForUserSwitch(); + } + + void _pickImage() { + final profilePictureViewModel = context.read(); + + profilePictureViewModel.pickImage( + context, + showImagePicker: ImageOptions.showImageOptionsNew, + compressImage: ImageCompressionHelper.compressAndResizeImage, + onSuccess: (data) { + if (mounted) { + Utils.showToast(LocaleKeys.profileImageUpdatedSuccessfully.tr(context: context)); + } + }, + onError: (error) { + if (mounted) { + Utils.showToast(error); + } + }, + imageSizeTooLargeMessage: LocaleKeys.imageSizeTooLarge.tr(context: context), + failedToProcessImageMessage: LocaleKeys.failedToProcessImage.tr(context: context), + checkCameraPermission: (ctx) => _permissionService.checkCameraPermission(ctx), + checkGalleryPermission: (ctx) => _permissionService.checkGalleryPermission(ctx), + ); + } + + Widget _buildProfileImage(ProfilePictureViewModel profilePictureViewModel, ProfileSettingsViewModel profileVm) { + // Always get fresh user data + final currentUser = _appState.getAuthenticatedUser(); + final currentPatientId = currentUser?.patientId; + final gender = currentUser?.gender ?? 1; + final age = currentUser?.age ?? 0; + + // Determine the default image based on gender and age + final String defaultImage; + if (gender == 1) { + // Male + defaultImage = age < 7 ? AppAssets.babyBoyImg : AppAssets.maleImg; + } else { + // Female + defaultImage = age < 7 ? AppAssets.babyGirlImg : AppAssets.femaleImg; + } + + // Show selected image if available (only during upload) + if (profilePictureViewModel.selectedImage != null) { + return ClipOval( + child: Image.file( + profilePictureViewModel.selectedImage!, + width: 136.w, + height: 136.h, + fit: BoxFit.cover, + ), + ); + } + + // Update cache if needed + profilePictureViewModel.updateCacheIfNeeded(); + + // Show cached decoded image if available + if (profilePictureViewModel.cachedImageBytes != null) { + return ClipOval( + child: Image.memory( + profilePictureViewModel.cachedImageBytes!, + key: ValueKey('profile_$currentPatientId'), + width: 136.w, + height: 136.h, + fit: BoxFit.cover, + gaplessPlayback: true, // Prevents blink during image rebuild + ), + ); + } + + // Show default image (no image data or user has no uploaded image) + print('📷 Showing default avatar for user $currentPatientId'); + return Utils.buildImgWithAssets( + icon: defaultImage, + width: 136.w, + height: 136.h, + ); + } + + @override + Widget build(BuildContext context) { + return Consumer2( + builder: (context, profilePictureViewModel, profileVm, _) { + // If we already have cached bytes, show the image even while "loading" + // to prevent the shimmer→image blink on page open + final bool showShimmer = profilePictureViewModel.shouldShowShimmer(); + + return Center( + child: Stack( + children: [ + // Profile Image — use ValueListenableBuilder for targeted updates + ValueListenableBuilder( + valueListenable: profilePictureViewModel.profileImageVersion, + builder: (context, version, child) { + return AnimatedSwitcher( + duration: const Duration(milliseconds: 200), + child: showShimmer + ? Container( + key: const ValueKey('shimmer'), + width: 136.w, + height: 136.h, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColors.greyTextColor.withValues(alpha: 0.2), + ), + ).toShimmer2(isShow: true) + : _buildProfileImage(profilePictureViewModel, profileVm), + ); + }, + ), + + // Edit button + Positioned( + right: 0, + top: 0, + child: GestureDetector( + onTap: () { + if (!profileVm.isUploadingProfileImage) { + _pickImage(); + } + }, + child: Container( + width: 32.w, + height: 32.h, + decoration: BoxDecoration( + color: AppColors.primaryRedColor, + shape: BoxShape.circle, + border: Border.all( + color: AppColors.whiteColor, + width: 2.w, + ), + ), + child: profileVm.isUploadingProfileImage + ? SizedBox( + width: 16.w, + height: 16.h, + child: CircularProgressIndicator( + strokeWidth: 2.w, + valueColor: AlwaysStoppedAnimation( + AppColors.whiteColor, + ), + ).paddingAll(8.w), + ) + : Icon( + Icons.camera_alt, + color: AppColors.whiteColor, + size: 16.w, + ), + ), + ), + ), + ], + ).paddingOnly(bottom: 24.h), + ); + }, + ); + } +} diff --git a/lib/presentation/profile_settings/widgets/update_email_widget.dart b/lib/presentation/profile_settings/widgets/update_email_widget.dart new file mode 100644 index 00000000..55f848a6 --- /dev/null +++ b/lib/presentation/profile_settings/widgets/update_email_widget.dart @@ -0,0 +1,156 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/input_widget.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:provider/provider.dart'; + +class UpdateEmailDialog extends StatefulWidget { + UpdateEmailDialog({super.key}); + + @override + State createState() => _UpdateEmailDialogState(); +} + +class _UpdateEmailDialogState extends State { + late FocusNode _textFieldFocusNode; + late TextEditingController? textController; + ProfileSettingsViewModel? profileSettingsViewModel; + + @override + void initState() { + _textFieldFocusNode = FocusNode(); + textController = TextEditingController(); + + WidgetsBinding.instance.addPostFrameCallback((_) { + // Get the view model reference + final viewModel = Provider.of(context, listen: false); + + // Clear any previous email error + viewModel.clearEmailError(); + + // Set the text + setState(() { + textController!.text = viewModel.getPatientInfoForUpdate!.emailAddress ?? ""; + }); + }); + + super.initState(); + } + + @override + void dispose() { + _textFieldFocusNode.dispose(); + + // Clear email error when closing + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted) { + profileSettingsViewModel?.clearEmailError(); + } + }); + + super.dispose(); + } + + @override + Widget build(BuildContext context) { + profileSettingsViewModel = Provider.of(context); + return GestureDetector( + onTap: () { + _textFieldFocusNode.unfocus(); + FocusScope.of(context).unfocus(); + }, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.updateEmailAddressTitle.tr().toText16(textAlign: TextAlign.start, isBold: true), + SizedBox(height: 12.h), + Consumer( + builder: (context, viewModel, child) { + return TextInputWidget( + labelText: LocaleKeys.email.tr(), + hintText: "demo@gmail.com", + controller: textController, + focusNode: _textFieldFocusNode, + autoFocus: true, + padding: EdgeInsets.all(8.h), + keyboardType: TextInputType.emailAddress, + isEnable: true, + isReadOnly: false, + prefix: null, + isBorderAllowed: true, + isAllowLeadingIcon: true, + fontSize: 14.f, + isCountryDropDown: false, + leadingIcon: AppAssets.email, + fontFamily: "Poppins", + hasError: viewModel.emailError != null, + errorMessage: viewModel.emailError, + onChange: (value) { + // Clear error when user starts typing + viewModel.clearEmailError(); + }, + ); + }, + ), + SizedBox(height: 12.h), + CustomButton( + text: LocaleKeys.submit.tr(context: context), + onPressed: () { + // Unfocus keyboard + _textFieldFocusNode.unfocus(); + FocusScope.of(context).unfocus(); + + // Validate email using ViewModel method + if (!profileSettingsViewModel!.validateEmail(textController!.text)) { + // Validation failed, error is already set in viewModel and displayed below field + return; + } + + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.updatingEmailAddress.tr(context: context)); + profileSettingsViewModel!.updatePatientInfo( + patientInfo: { + "PreferredLanguage": profileSettingsViewModel!.getPatientInfoForUpdate!.preferredLanguage, + "EmailAddress": textController!.text, + "EmergencyContactName": profileSettingsViewModel!.getPatientInfoForUpdate!.emergencyContactName, + "EmergencyContactNo": profileSettingsViewModel!.getPatientInfoForUpdate!.emergencyContactNo, + "IsEmailAlertRequired": true, + "IsSMSAlertRequired": true, + }, + onSuccess: (response) { + LoaderBottomSheet.hideLoader(); + profileSettingsViewModel!.clearEmailError(); + showCommonBottomSheetWithoutHeight(context, title: LocaleKeys.success.tr(context: context), child: Utils.getSuccessWidget(loadingText: LocaleKeys.success.tr()), + callBackFunc: () async { + Navigator.of(getIt().navigatorKey.currentContext!).pop(); + profileSettingsViewModel!.getProfileSettings(); + }, isFullScreen: false, isAutoDismiss: true); + }, + onError: (error) { + LoaderBottomSheet.hideLoader(); + // Show error message + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(error)), + ); + }, + ); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: const Color(0xFFffffff), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/profile_settings/widgets/update_emergency_contact_widget.dart b/lib/presentation/profile_settings/widgets/update_emergency_contact_widget.dart new file mode 100644 index 00000000..f1a34565 --- /dev/null +++ b/lib/presentation/profile_settings/widgets/update_emergency_contact_widget.dart @@ -0,0 +1,158 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/input_widget.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:provider/provider.dart'; + +class UpdateEmergencyContactDialog extends StatefulWidget { + UpdateEmergencyContactDialog({super.key}); + + @override + State createState() => _UpdateEmergencyContactDialogState(); +} + +class _UpdateEmergencyContactDialogState extends State { + late FocusNode _textFieldFocusNode; + late TextEditingController? textController; + ProfileSettingsViewModel? profileSettingsViewModel; + + @override + void initState() { + _textFieldFocusNode = FocusNode(); + textController = TextEditingController(); + + WidgetsBinding.instance.addPostFrameCallback((_) { + // Get the view model reference + final viewModel = Provider.of(context, listen: false); + + // Clear any previous emergency contact error + viewModel.clearEmergencyContactError(); + + // Set the text + setState(() { + textController!.text = viewModel.getPatientInfoForUpdate!.emergencyContactNo ?? ""; + }); + }); + + super.initState(); + } + + @override + void dispose() { + _textFieldFocusNode.dispose(); + + // Clear emergency contact error when closing + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted) { + profileSettingsViewModel?.clearEmergencyContactError(); + } + }); + + super.dispose(); + } + + @override + Widget build(BuildContext context) { + profileSettingsViewModel = Provider.of(context); + return GestureDetector( + onTap: () { + _textFieldFocusNode.unfocus(); + FocusScope.of(context).unfocus(); + }, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.enterNewNewContactNumber.tr().toText16(textAlign: TextAlign.start, isBold: true), + SizedBox(height: 12.h), + Consumer( + builder: (context, viewModel, child) { + return TextInputWidget( + labelText: LocaleKeys.emrgNo.tr(), + hintText: "05xxxxxxxx", + controller: textController, + focusNode: _textFieldFocusNode, + autoFocus: true, + padding: EdgeInsets.all(8.h), + keyboardType: TextInputType.number, + isEnable: true, + isReadOnly: false, + prefix: null, + isBorderAllowed: true, + isAllowLeadingIcon: true, + fontSize: 14.f, + isCountryDropDown: false, + leadingIcon: AppAssets.call_fill, + fontFamily: "Poppins", + hasError: viewModel.emergencyContactError != null, + errorMessage: viewModel.emergencyContactError, + onChange: (value) { + // Clear error when user starts typing + viewModel.clearEmergencyContactError(); + }, + ); + }, + ), + SizedBox(height: 12.h), + CustomButton( + text: LocaleKeys.submit.tr(context: context), + onPressed: () { + // Unfocus keyboard + _textFieldFocusNode.unfocus(); + FocusScope.of(context).unfocus(); + + // Validate emergency contact using ViewModel method + if (!profileSettingsViewModel!.validateEmergencyContact(textController!.text)) { + // Validation failed, error is already set in viewModel and displayed below field + return; + } + + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.loadingText.tr(context: context)); + profileSettingsViewModel!.updatePatientInfo( + patientInfo: { + "PreferredLanguage": profileSettingsViewModel!.getPatientInfoForUpdate!.preferredLanguage, + "EmailAddress": profileSettingsViewModel!.getPatientInfoForUpdate!.emailAddress, + "EmergencyContactName": profileSettingsViewModel!.getPatientInfoForUpdate!.emergencyContactName, + "EmergencyContactNo": textController!.text, + "IsEmailAlertRequired": true, + "IsSMSAlertRequired": true, + }, + onSuccess: (response) { + LoaderBottomSheet.hideLoader(); + profileSettingsViewModel!.clearEmergencyContactError(); + final navContext = getIt.get().navigatorKey.currentContext; + if (navContext == null) return; + showCommonBottomSheetWithoutHeight(navContext, title: LocaleKeys.success.tr(context: navContext), child: Utils.getSuccessWidget(loadingText: LocaleKeys.success.tr()), + callBackFunc: () async { + Navigator.of(navContext).pop(); + profileSettingsViewModel!.getProfileSettings(); + }, isFullScreen: false, isAutoDismiss: true); + }, + onError: (error) { + LoaderBottomSheet.hideLoader(); + // Show error message + ScaffoldMessenger.of(context).showSnackBar( + SnackBar(content: Text(error)), + ); + }, + ); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: const Color(0xFFffffff), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/radiology/radiology_ai_analysis_detailed_page.dart b/lib/presentation/radiology/radiology_ai_analysis_detailed_page.dart new file mode 100644 index 00000000..a3e00e79 --- /dev/null +++ b/lib/presentation/radiology/radiology_ai_analysis_detailed_page.dart @@ -0,0 +1,255 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/radiology/radiology_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/expandable_list_widget.dart'; +import 'package:provider/provider.dart'; + +class RadiologyAiAnalysisDetailedPage extends StatefulWidget { + const RadiologyAiAnalysisDetailedPage({super.key}); + + @override + State createState() => _RadiologyAiAnalysisDetailedPageState(); +} + +class _RadiologyAiAnalysisDetailedPageState extends State { + late RadiologyViewModel radiologyProvider; + + List _parseStringToList(String? text) { + if (text == null || text.isEmpty) return []; + // Split by newlines and filter out empty lines + return text.split('\n').where((line) => line.trim().isNotEmpty).map((line) => line.trim()).toList(); + } + + @override + Widget build(BuildContext context) { + radiologyProvider = Provider.of(context, listen: false); + return CollapsingListView( + isClose: true, + title: LocaleKeys.aiAnalysis.tr(context: context), + child: Consumer( + builder: (context, model, child) { + if (model.radiologyAiAnalysisResponse == null) { + return Utils.getNoDataWidget(context); + } + + final analysis = model.radiologyAiAnalysisResponse!; + List expandableItems = []; + + // Parse string fields into lists + final predictions = _parseStringToList(analysis.aiPredictions); + final preventions = _parseStringToList(analysis.prevention); + final riskFactorsText = _parseStringToList(analysis.riskFactors); + + // Summary Section + if (analysis.summary != null && analysis.summary!.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor: Colors.transparent, + title: LocaleKeys.summary.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + initiallyExpanded: true, + children: [ + SizedBox(height: 10.h), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + side: BorderSide(width: 1, color: Color(0xFF0B85F7)), + ), + padding: EdgeInsets.all(16.r), + child: (analysis.summary ?? "").toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400), + ), + SizedBox(height: 8.h), + ], + ), + ); + } + + // Lab Results Section (Radiology Results) + if (analysis.labResults != null && analysis.labResults!.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor: Colors.transparent, + title: LocaleKeys.radiologyLabResults.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + children: [ + SizedBox(height: 10.h), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + side: BorderSide(width: 1, color: Color(0xFF0B85F7)), + ), + padding: EdgeInsets.all(16.r), + child: (analysis.labResults ?? "").toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400), + ), + SizedBox(height: 8.h), + ], + ), + ); + } + + // AI Predictions Section + if (predictions.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor: Colors.transparent, + title: LocaleKeys.prediction.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + children: [ + SizedBox(height: 10.h), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + side: BorderSide(width: 1, color: Color(0xFFFFAF15)), + ), + padding: EdgeInsets.all(16.r), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: predictions.map((prediction) => _buildBulletItem(prediction)).toList(), + ), + ), + SizedBox(height: 8.h), + ], + ), + ); + } + + // Risk Factors Section + if (riskFactorsText.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor: Colors.transparent, + title: LocaleKeys.riskFactors.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + children: [ + SizedBox(height: 10.h), + ...riskFactorsText.asMap().entries.map((entry) { + final riskText = entry.value; + return Column( + children: [ + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: Color(0xFFFBCB6E).withOpacity(0.10), + borderRadius: 12.r, + side: BorderSide(width: 1, color: Color(0xFFFBCB6E).withOpacity(0.10)), + ), + padding: EdgeInsets.all(16.r), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Utils.buildSvgWithAssets(icon: AppAssets.guradIcon), + Padding( + padding: const EdgeInsets.all(8.0), + child: LocaleKeys.riskFactors.tr(context: context).toText16(weight: FontWeight.w700, color: AppColors.blackColor), + ), + ], + ), + SizedBox(height: 8.h), + riskText.toText14( + color: AppColors.textColorLight, + height: 1.5, + weight: FontWeight.w400, + ), + ], + ), + ), + SizedBox(height: 16.h), + ], + ); + }).toList(), + ], + ), + ); + } + + // Prevention Section + if (preventions.isNotEmpty) { + expandableItems.add( + ExpandableListItem( + backgroundColor: Colors.transparent, + expandedBackgroundColor: Colors.transparent, + title: LocaleKeys.prevention.tr(context: context).toText18(weight: FontWeight.w700, color: AppColors.blackColor), + children: [ + SizedBox(height: 10.h), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + side: BorderSide(width: 1, color: Color(0xFF18C273)), + ), + padding: EdgeInsets.all(16.r), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: preventions.map((prevention) => _buildBulletItem(prevention)).toList(), + ), + ), + SizedBox(height: 8.h), + ], + ), + ); + } + + return Column( + children: [ + if (expandableItems.isEmpty) + Utils.getNoDataWidget(context) + else + CustomExpandableList( + expansionMode: ExpansionMode.exactlyOne, + dividerColor: AppColors.dividerColor, + itemPadding: EdgeInsets.symmetric(vertical: 16.h, horizontal: 14.h), + items: expandableItems, + theme: ExpandableListTheme.custom( + defaultTrailingIcon: Utils.buildSvgWithAssets( + icon: AppAssets.arrow_down, + height: 22.h, + width: 22.w, + iconColor: AppColors.textColor, + ), + ), + ).paddingSymmetrical(16.w, 0.0), + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Icon(Icons.info_outline, color: AppColors.greyTextColor, size: 20.r), + SizedBox(width: 8.w), + Expanded( + child: ("${LocaleKeys.disclaimer.tr()}:${LocaleKeys.disclaimerRadiology.tr()}") + .toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w400), + ), + ], + ).paddingSymmetrical(16.w, 16.h) + ], + ); + }, + ), + ); + } + + Widget _buildBulletItem(String text) { + return Padding( + padding: EdgeInsets.only(bottom: 12.h), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Expanded( + child: text.toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400), + ), + ], + ), + ); + } +} + diff --git a/lib/presentation/radiology/radiology_ai_analysis_widget.dart b/lib/presentation/radiology/radiology_ai_analysis_widget.dart new file mode 100644 index 00000000..f22bcbd0 --- /dev/null +++ b/lib/presentation/radiology/radiology_ai_analysis_widget.dart @@ -0,0 +1,125 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/features/radiology/models/resp_models/radiology_ai_analysis_response_model.dart'; +import 'package:hmg_patient_app_new/features/radiology/radiology_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/accessibility/preserve_svg_colors.dart'; + +class RadiologyAiAnalysisWidget extends StatelessWidget { + final RadiologyAiAnalysisResponse data; + + const RadiologyAiAnalysisWidget({super.key, required this.data}); + + List _parseStringToList(String? text) { + if (text == null || text.isEmpty) return []; + // Split by newlines and filter out empty lines + return text.split('\n').where((line) => line.trim().isNotEmpty).map((line) => line.trim()).toList(); + } + + @override + Widget build(BuildContext context) { + // Parse the string fields into lists + final predictions = _parseStringToList(data.aiPredictions); + final preventions = _parseStringToList(data.prevention); + + return Container( + decoration: BoxDecoration(borderRadius: BorderRadius.circular(24.r), gradient: AppColors.aiLinearGradient), + padding: EdgeInsets.all(1.5.r), // Border thickness + child: Container( + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(22.r), + ), + padding: EdgeInsets.all(20.r), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.aiAnalysis.tr().toText18(weight: FontWeight.w700, color: AppColors.blackColor), + Container( + padding: EdgeInsets.all(8.r), + decoration: BoxDecoration(gradient: AppColors.aiLinearGradient, borderRadius: BorderRadius.circular(8.r)), + child: PreserveSvgColors(child: SvgPicture.asset(AppAssets.aiOverView, colorFilter: const ColorFilter.mode(Colors.white, BlendMode.srcIn), height: 18.r, width: 18.r)), + ), + ], + ), + SizedBox(height: 16.h), + if (data.summary != null && data.summary!.isNotEmpty) ...[ + LocaleKeys.suggestion.tr().toText16(weight: FontWeight.w700, color: AppColors.blackColor), + SizedBox(height: 8.h), + data.summary!.toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400), + SizedBox(height: 16.h), + Divider(color: AppColors.dividerColor, thickness: 1), + SizedBox(height: 16.h), + ], + if (predictions.isNotEmpty) ...[ + LocaleKeys.prediction.tr().toText16(weight: FontWeight.w700, color: AppColors.blackColor), + SizedBox(height: 12.h), + ...predictions.map((item) => _buildBulletItem(item)), + SizedBox(height: 16.h), + Divider(color: AppColors.dividerColor, thickness: 1), + SizedBox(height: 16.h), + ], + if (preventions.isNotEmpty) ...[ + LocaleKeys.prevention.tr().toText16(weight: FontWeight.w700, color: AppColors.blackColor), + SizedBox(height: 12.h), + ...preventions.map((item) => _buildBulletItem(item)), + SizedBox(height: 20.h), + ], + Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Icon(Icons.info_outline, color: AppColors.greyTextColor, size: 20.r), + SizedBox(width: 8.w), + Expanded( + child: ("${LocaleKeys.disclaimer.tr()}:${LocaleKeys.disclaimerRadiology.tr()}").toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w400), + ), + ], + ), + SizedBox(height: 16.h), + CustomButton( + height: 50.h, + text: LocaleKeys.close.tr(context: context), + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + onPressed: () { + getIt.get().closeRadiologyAIAnalysis(); + }, + ), + ], + ), + ), + ); + } + + Widget _buildBulletItem(String text) { + return Padding( + padding: EdgeInsets.only(bottom: 12.h), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: EdgeInsets.only(top: 8.h, right: 12.w, left: 4.w), + child: Container( + width: 5.r, + height: 5.r, + decoration: BoxDecoration(color: AppColors.blackColor, shape: BoxShape.circle), + ), + ), + Expanded( + child: text.toText14(color: AppColors.textColorLight, height: 1.5, weight: FontWeight.w400), + ), + ], + ), + ); + } +} diff --git a/lib/presentation/radiology/radiology_orders_page.dart b/lib/presentation/radiology/radiology_orders_page.dart index a07face1..3ff500db 100644 --- a/lib/presentation/radiology/radiology_orders_page.dart +++ b/lib/presentation/radiology/radiology_orders_page.dart @@ -3,13 +3,14 @@ import 'dart:async'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/lab/lab_view_model.dart'; -import 'package:hmg_patient_app_new/features/radiology/models/resp_models/patient_radiology_response_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/lab/lab_result_item_view.dart'; import 'package:hmg_patient_app_new/presentation/radiology/radiology_result_page.dart'; @@ -20,10 +21,13 @@ import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; import 'package:provider/provider.dart'; +import 'package:url_launcher/url_launcher.dart'; import '../../features/radiology/radiology_view_model.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'dart:ui' as ui; + class RadiologyOrdersPage extends StatefulWidget { const RadiologyOrdersPage({super.key}); @@ -94,40 +98,40 @@ class _RadiologyOrdersPageState extends State { children: [ // Clinic / Hospital toggle SizedBox(height: 16.h), - Row( - children: [ - CustomButton( - text: LocaleKeys.byClinic.tr(context: context), - onPressed: () { - model.setIsSortByClinic(true); - }, - backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, - borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), - textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, - fontSize: 12, - fontWeight: FontWeight.w500, - borderRadius: 10, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - ), - SizedBox(width: 8.h), - CustomButton( - text: LocaleKeys.byHospital.tr(context: context), - onPressed: () { - model.setIsSortByClinic(false); - }, - backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, - borderColor: model.isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, - textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, - fontSize: 12, - fontWeight: FontWeight.w500, - borderRadius: 10, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - ), - ], - ), - SizedBox(height: 8.h), + // Row( + // children: [ + // CustomButton( + // text: LocaleKeys.byClinic.tr(context: context), + // onPressed: () { + // model.setIsSortByClinic(true); + // }, + // backgroundColor: model.isSortByClinic ? AppColors.bgRedLightColor : AppColors.whiteColor, + // borderColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.2), + // textColor: model.isSortByClinic ? AppColors.primaryRedColor : AppColors.blackColor, + // fontSize: 12, + // isBold: true, + // borderRadius: 10, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 40.h, + // ), + // SizedBox(width: 8.h), + // CustomButton( + // text: LocaleKeys.byHospital.tr(context: context), + // onPressed: () { + // model.setIsSortByClinic(false); + // }, + // backgroundColor: model.isSortByClinic ? AppColors.whiteColor : AppColors.bgRedLightColor, + // borderColor: model.isSortByClinic ? AppColors.textColor.withValues(alpha: 0.2) : AppColors.primaryRedColor, + // textColor: model.isSortByClinic ? AppColors.blackColor : AppColors.primaryRedColor, + // fontSize: 12, + // isBold: true, + // borderRadius: 10, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 40.h, + // ), + // ], + // ), + // SizedBox(height: 8.h), selectedFilterText.isNotEmpty ? AppCustomChipWidget( padding: EdgeInsets.symmetric(horizontal: 5.h), @@ -143,6 +147,7 @@ class _RadiologyOrdersPageState extends State { model.filterRadiologyReports(''); }); }, + isEnglishOnly: true // chipType: ChipTypeEnum.alert, // isSelected: true, ) @@ -165,199 +170,539 @@ class _RadiologyOrdersPageState extends State { ); } - if (model.patientRadiologyOrdersViewList.isEmpty) { + if (model.patientRadiologyOrders.isEmpty) { return Utils.getNoDataWidget(ctx, noDataText: LocaleKeys.youDontHaveRadiologyOrders.tr(context: context)); } - return ListView.builder( - shrinkWrap: true, - physics: NeverScrollableScrollPhysics(), - padding: EdgeInsets.zero, - itemCount: model.patientRadiologyOrdersViewList.length, - itemBuilder: (context, index) { - final group = model.patientRadiologyOrdersViewList[index]; - final displayName = model.isSortByClinic ? (group.first.clinicDescription ?? 'Unknown') : (group.first.projectName ?? 'Unknown'); - final isExpanded = expandedIndex == index; - return AnimationConfiguration.staggeredList( + // return ListView.builder( + // shrinkWrap: true, + // physics: NeverScrollableScrollPhysics(), + // padding: EdgeInsets.zero, + // itemCount: model.patientRadiologyOrdersViewList.length, + // itemBuilder: (context, index) { + // final group = model.patientRadiologyOrdersViewList[index]; + // final displayName = model.isSortByClinic ? (group.first.clinicDescription ?? 'Unknown') : (group.first.projectName ?? 'Unknown'); + // final isExpanded = expandedIndex == index; + // return AnimationConfiguration.staggeredList( + // position: index, + // duration: const Duration(milliseconds: 400), + // child: SlideAnimation( + // verticalOffset: 50.0, + // child: FadeInAnimation( + // child: AnimatedContainer( + // duration: const Duration(milliseconds: 300), + // curve: Curves.easeInOut, + // margin: EdgeInsets.symmetric(vertical: 8.h), + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // color: AppColors.whiteColor, + // borderRadius: 20.h, + // hasShadow: true, + // ), + // child: InkWell( + // onTap: () { + // setState(() { + // expandedIndex = isExpanded ? null : index; + // }); + // WidgetsBinding.instance.addPostFrameCallback((_) { + // final key = _groupKeys.putIfAbsent(index, () => GlobalKey()); + // if (key.currentContext != null && expandedIndex == index) { + // Future.delayed(const Duration(milliseconds: 450), () { + // if (key.currentContext != null) { + // Scrollable.ensureVisible( + // key.currentContext!, + // duration: const Duration(milliseconds: 350), + // curve: Curves.easeInOut, + // alignment: 0.0, + // ); + // } + // }); + // } + // }); + // }, + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Padding( + // key: _groupKeys.putIfAbsent(index, () => GlobalKey()), + // padding: EdgeInsets.all(16.h), + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Row( + // mainAxisAlignment: MainAxisAlignment.spaceBetween, + // children: [ + // AppCustomChipWidget(labelText: "${group.length} ${LocaleKeys.results.tr(context: context)}"), + // Icon(isExpanded ? Icons.expand_less : Icons.expand_more), + // ], + // ), + // SizedBox(height: 8.h), + // Text( + // displayName, + // style: TextStyle(fontSize: 16.h, isBold: true), + // overflow: TextOverflow.ellipsis, + // ), + // ], + // ), + // ), + // AnimatedSwitcher( + // duration: const Duration(milliseconds: 500), + // switchInCurve: Curves.easeIn, + // switchOutCurve: Curves.easeOut, + // transitionBuilder: (Widget child, Animation animation) { + // return FadeTransition( + // opacity: animation, + // child: SizeTransition( + // sizeFactor: animation, + // axisAlignment: 0.0, + // child: child, + // ), + // ); + // }, + // child: isExpanded + // ? Container( + // key: ValueKey(index), + // padding: EdgeInsets.symmetric(horizontal: 16.w), + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // ...group.map((order) { + // return Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // Row( + // mainAxisSize: MainAxisSize.min, + // children: [ + // Image.network( + // order.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + // width: 24.w, + // height: 24.h, + // fit: BoxFit.cover, + // ).circle(100), + // SizedBox(width: 8.h), + // Expanded( + // child: (order.doctorName ?? '').toString().toText14(isBold: true), + // ), + // ], + // ), + // SizedBox(height: 8.h), + // Wrap( + // direction: Axis.horizontal, + // spacing: 4.h, + // runSpacing: 4.h, + // children: [ + // if ((order.description ?? '').isNotEmpty) + // AppCustomChipWidget( + // labelText: (order.description ?? '').toString(), + // ), + // Directionality( + // textDirection: ui.TextDirection.ltr, + // child: AppCustomChipWidget( + // labelText: DateUtil.formatDateToDate( + // (order.orderDate ?? order.appointmentDate), + // false, + // ), isEnglishOnly: true, + // ), + // ), + // AppCustomChipWidget( + // labelText: model.isSortByClinic ? (order.projectName ?? '') : (order.clinicDescription ?? ''), + // ), + // ], + // ), + // SizedBox(height: 12.h), + // Row( + // children: [ + // Expanded(flex: 2, child: const SizedBox()), + // Expanded( + // flex: 2, + // child: CustomButton( + // icon: AppAssets.view_report_icon, + // iconColor: AppColors.primaryRedColor, + // iconSize: 16.h, + // text: LocaleKeys.viewResults.tr(context: context), + // onPressed: () { + // model.navigationService.push( + // CustomPageRoute( + // page: RadiologyResultPage(patientRadiologyResponseModel: order), + // ), + // ); + // }, + // backgroundColor: AppColors.secondaryLightRedColor, + // borderColor: AppColors.secondaryLightRedColor, + // textColor: AppColors.primaryRedColor, + // fontSize: 14, + // isBold: true, + // borderRadius: 12, + // padding: const EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 40.h, + // ), + // ), + // ], + // ), + // SizedBox(height: 12.h), + // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), + // SizedBox(height: 12.h), + // ], + // ); + // }).toList(), + // ], + // ), + // ) + // : const SizedBox.shrink(), + // ), + // ], + // ), + // ), + // ), + // ), + // ), + // ); + // }, + // ); + + return ListView.builder( + shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), + padding: EdgeInsets.zero, + itemCount: model.patientRadiologyOrders.length, + itemBuilder: (context, index) { + final group = model.patientRadiologyOrders[index]; + final isExpanded = expandedIndex == index; + return AnimationConfiguration.staggeredList( position: index, - duration: const Duration(milliseconds: 400), + duration: const Duration(milliseconds: 500), child: SlideAnimation( - verticalOffset: 50.0, + verticalOffset: 100.0, child: FadeInAnimation( child: AnimatedContainer( - duration: const Duration(milliseconds: 300), + duration: Duration(milliseconds: 300), curve: Curves.easeInOut, margin: EdgeInsets.symmetric(vertical: 8.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.h, - hasShadow: true, - ), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: true), child: InkWell( onTap: () { setState(() { expandedIndex = isExpanded ? null : index; }); - WidgetsBinding.instance.addPostFrameCallback((_) { - final key = _groupKeys.putIfAbsent(index, () => GlobalKey()); - if (key.currentContext != null && expandedIndex == index) { - Future.delayed(const Duration(milliseconds: 450), () { - if (key.currentContext != null) { - Scrollable.ensureVisible( - key.currentContext!, - duration: const Duration(milliseconds: 350), - curve: Curves.easeInOut, - alignment: 0.0, - ); - } - }); - } - }); }, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ Padding( - key: _groupKeys.putIfAbsent(index, () => GlobalKey()), padding: EdgeInsets.all(16.h), child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + AppCustomChipWidget( + labelText: "${getIt.get().isArabic() ? group.isInOutPatientDescriptionN : group.isInOutPatientDescription}", + backgroundColor: AppColors.warningColorYellow.withOpacity(0.1), + textColor: AppColors.warningColorYellow, + ), + SizedBox(height: 16.h), Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, + mainAxisSize: MainAxisSize.min, children: [ - AppCustomChipWidget(labelText: "${group.length} ${LocaleKeys.results.tr(context: context)}"), - Icon(isExpanded ? Icons.expand_less : Icons.expand_more), + Utils.buildImgWithNetwork( + url: group.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + iconColor: AppColors.transparent, + width: 24.w, + height: 24.h, + fit: BoxFit.cover, + ).circle(100), + SizedBox(width: 8.h), + Expanded(child: (group.doctorName ?? "").toString().toText14(isBold: true)), ], ), SizedBox(height: 8.h), - Text( - displayName, - style: TextStyle(fontSize: 16.h, fontWeight: FontWeight.w600), - overflow: TextOverflow.ellipsis, - ), - ], - ), - ), - AnimatedSwitcher( - duration: const Duration(milliseconds: 500), - switchInCurve: Curves.easeIn, - switchOutCurve: Curves.easeOut, - transitionBuilder: (Widget child, Animation animation) { - return FadeTransition( - opacity: animation, - child: SizeTransition( - sizeFactor: animation, - axisAlignment: 0.0, - child: child, + Wrap( + direction: Axis.horizontal, + spacing: 4.h, + runSpacing: 4.h, + children: [ + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelText: DateUtil.formatDateToDate(group.orderDate!, false), + isEnglishOnly: true, + )), + AppCustomChipWidget( + labelText: (group.projectName ?? ""), + ), + AppCustomChipWidget( + labelText: (group.clinicDescription ?? ""), + ), + ], ), - ); - }, - child: isExpanded - ? Container( - key: ValueKey(index), - padding: EdgeInsets.symmetric(horizontal: 16.w), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - ...group.map((order) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - Row( - mainAxisSize: MainAxisSize.min, - children: [ - Image.network( - order.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", - width: 24.w, - height: 24.h, - fit: BoxFit.cover, - ).circle(100), - SizedBox(width: 8.h), - Expanded( - child: (order.doctorName ?? '').toString().toText14(weight: FontWeight.w500), - ), - ], - ), - SizedBox(height: 8.h), - Wrap( - direction: Axis.horizontal, - spacing: 4.h, - runSpacing: 4.h, - children: [ - if ((order.description ?? '').isNotEmpty) - AppCustomChipWidget( - labelText: (order.description ?? '').toString(), - ), - AppCustomChipWidget( - labelText: DateUtil.formatDateToDate( - (order.orderDate ?? order.appointmentDate), - false, - ), - ), - AppCustomChipWidget( - labelText: model.isSortByClinic ? (order.projectName ?? '') : (order.clinicDescription ?? ''), - ), - ], - ), - SizedBox(height: 12.h), - Row( - children: [ - Expanded(flex: 2, child: const SizedBox()), - Expanded( - flex: 2, - child: CustomButton( - icon: AppAssets.view_report_icon, - iconColor: AppColors.primaryRedColor, - iconSize: 16.h, - text: LocaleKeys.viewResults.tr(context: context), - onPressed: () { - model.navigationService.push( - CustomPageRoute( - page: RadiologyResultPage(patientRadiologyResponseModel: order), - ), - ); - }, - backgroundColor: AppColors.secondaryLightRedColor, - borderColor: AppColors.secondaryLightRedColor, - textColor: AppColors.primaryRedColor, - fontSize: 14, - fontWeight: FontWeight.w500, - borderRadius: 12, - padding: const EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - ), - ), - ], - ), - SizedBox(height: 12.h), - Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), - SizedBox(height: 12.h), - ], + SizedBox(height: 16.h), + Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + "• ${group.procedureName.toString().trim() ?? ""}".toText14(isBold: true, isEnglishOnly: true), + // "Lorem ipsum text".toText12(isBold: true, color: AppColors.textColorLight), + SizedBox(height: 16.h), + CustomButton( + text: LocaleKeys.viewReport.tr(), + onPressed: () async { + // Check if reportData is empty or null + if (group.reportData == null || group.reportData!.trim().isEmpty) { + // Open image directly + await model.getRadiologyImage(patientRadiologyResponseModel: group); + if (model.radiologyImageURL.isNotEmpty) { + Uri uri = Uri.parse(model.radiologyImageURL); + await launchUrl(uri, mode: LaunchMode.platformDefault, webOnlyWindowName: ""); + } else { + Utils.showToast(LocaleKeys.noDataAvailable.tr()); + } + } else { + // Navigate to details page + model.navigationService.push( + CustomPageRoute( + page: RadiologyResultPage(patientRadiologyResponseModel: group), + ), ); - }).toList(), - ], + } + }, + backgroundColor: AppColors.infoColor.withAlpha(20), + borderColor: AppColors.infoColor.withAlpha(0), + textColor: AppColors.infoColor, + fontSize: (isFoldable || isTablet) ? 12.f : 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.fromLTRB(10.w, 0, 10.w, 0), + height: 40.h, + iconSize: 14.h, + icon: AppAssets.view_report_icon, + iconColor: AppColors.infoColor, ), - ) - : const SizedBox.shrink(), + ], + ) + ], + ), ), + // AnimatedSwitcher( + // duration: Duration(milliseconds: 500), + // switchInCurve: Curves.easeIn, + // switchOutCurve: Curves.easeOut, + // transitionBuilder: (Widget child, Animation animation) { + // return FadeTransition( + // opacity: animation, + // child: SizeTransition( + // sizeFactor: animation, + // axisAlignment: 0.0, + // child: child, + // ), + // ); + // }, + // child: isExpanded + // ? Container( + // key: ValueKey(index), + // padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 0.h), + // child: Column( + // children: [ + // ListView.separated( + // shrinkWrap: true, + // physics: NeverScrollableScrollPhysics(), + // padding: EdgeInsets.zero, + // itemBuilder: (cxt, index) { + // PatientRadiologyResponseModel order = group; + // return Column( + // crossAxisAlignment: CrossAxisAlignment.start, + // children: [ + // "• ${order.procedureName ?? ""}".toText14(isBold: true), + // "Lorem ipsum text".toText12(isBold: true, color: AppColors.textColorLight), + // // SizedBox(height: 4.h), + // // order.testDetails![index].testDescriptionEn!.toText12(isBold: true, color: AppColors.textColorLight), + // // Row( + // // mainAxisSize: MainAxisSize.min, + // // children: [ + // // Image.network( + // // order.doctorImageURL ?? "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown_female.png", + // // width: 24.w, + // // height: 24.h, + // // fit: BoxFit.cover, + // // ).circle(100), + // // SizedBox(width: 8.h), + // // Expanded(child: (order.doctorName ?? order.doctorNameEnglish ?? "").toString().toText14(isBold: true)), + // // ], + // // ), + // // SizedBox(height: 8.h), + // // Wrap( + // // direction: Axis.horizontal, + // // spacing: 4.h, + // // runSpacing: 4.h, + // // children: [ + // // AppCustomChipWidget( + // // labelText: ("${LocaleKeys.orderNo.tr(context: context)}: ${order.orderNo!}"), isEnglishOnly: true, + // // ), + // // Directionality( + // // textDirection: ui.TextDirection.ltr, + // // child: AppCustomChipWidget( + // // labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), + // // isEnglishOnly: true, + // // )), + // // AppCustomChipWidget( + // // labelText: labViewModel.isSortByClinic ? (order.projectName ?? "") : (order.clinicDescription ?? ""), + // // ), + // // ], + // // ), + // // // Row( + // // // children: [ + // // // CustomButton( + // // // text: ("Order No: ".needTranslation + order.orderNo!), + // // // onPressed: () {}, + // // // backgroundColor: AppColors.greyColor, + // // // borderColor: AppColors.greyColor, + // // // textColor: AppColors.blackColor, + // // // fontSize: 10, + // // // isBold: true, + // // // borderRadius: 8, + // // // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // // // height: 24.h, + // // // ), + // // // SizedBox(width: 8.h), + // // // CustomButton( + // // // text: DateUtil.formatDateToDate(DateUtil.convertStringToDate(order.orderDate ?? ""), false), + // // // onPressed: () {}, + // // // backgroundColor: AppColors.greyColor, + // // // borderColor: AppColors.greyColor, + // // // textColor: AppColors.blackColor, + // // // fontSize: 10, + // // // isBold: true, + // // // borderRadius: 8, + // // // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // // // height: 24.h, + // // // ), + // // // ], + // // // ), + // // // SizedBox(height: 8.h), + // // // Row( + // // // children: [ + // // // CustomButton( + // // // text: model.isSortByClinic ? (order.clinicDescription ?? "") : (order.projectName ?? ""), + // // // onPressed: () {}, + // // // backgroundColor: AppColors.greyColor, + // // // borderColor: AppColors.greyColor, + // // // textColor: AppColors.blackColor, + // // // fontSize: 10, + // // // isBold: true, + // // // borderRadius: 8, + // // // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // // // height: 24.h, + // // // ), + // // // ], + // // // ), + // // SizedBox(height: 12.h), + // // Row( + // // children: [ + // // Expanded(flex: 2, child: SizedBox()), + // // // Expanded( + // // // flex: 1, + // // // child: Container( + // // // height: 40.h, + // // // width: 40.w, + // // // decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + // // // color: AppColors.textColor, + // // // borderRadius: 12, + // // // ), + // // // child: Padding( + // // // padding: EdgeInsets.all(12.h), + // // // child: Transform.flip( + // // // flipX: _appState.isArabic(), + // // // child: Utils.buildSvgWithAssets( + // // // icon: AppAssets.forward_arrow_icon_small, + // // // iconColor: AppColors.whiteColor, + // // // fit: BoxFit.contain, + // // // ), + // // // ), + // // // ), + // // // ).onPress(() { + // // // model.currentlySelectedPatientOrder = order; + // // // labProvider.getPatientLabResultByHospital(order); + // // // labProvider.getPatientSpecialResult(order); + // // // Navigator.of(context).push( + // // // CustomPageRoute(page: LabResultByClinic(labOrder: order)), + // // // ); + // // // }), + // // // ) + // // + // // Expanded( + // // flex: 2, + // // child: CustomButton( + // // icon: AppAssets.view_report_icon, + // // iconColor: AppColors.primaryRedColor, + // // iconSize: 16.h, + // // text: LocaleKeys.viewResults.tr(context: context), + // // onPressed: () { + // // labViewModel.currentlySelectedPatientOrder = order; + // // labProvider.getPatientLabResultByHospital(order); + // // labProvider.getPatientSpecialResult(order); + // // Navigator.of(context).push( + // // CustomPageRoute(page: LabResultByClinic(labOrder: order)), + // // ); + // // }, + // // backgroundColor: AppColors.secondaryLightRedColor, + // // borderColor: AppColors.secondaryLightRedColor, + // // textColor: AppColors.primaryRedColor, + // // fontSize: 14, + // // isBold: true, + // // borderRadius: 12, + // // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // // height: 40.h, + // // ), + // // ) + // // ], + // // ), + // // SizedBox(height: 12.h), + // // Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), + // // SizedBox(height: 12.h), + // ], + // ).paddingOnly(top: 16, bottom: 16); + // }, + // separatorBuilder: (cxt, index) => Divider(color: AppColors.borderOnlyColor.withValues(alpha: 0.05), height: 1.h), + // itemCount: 1), + // SizedBox(height: 16.h), + // CustomButton( + // text: LocaleKeys.viewReport.tr(), + // onPressed: () { + // model.navigationService.push( + // CustomPageRoute( + // page: RadiologyResultPage(patientRadiologyResponseModel: group), + // ), + // ); + // }, + // backgroundColor: AppColors.infoColor.withAlpha(20), + // borderColor: AppColors.infoColor.withAlpha(0), + // textColor: AppColors.infoColor, + // fontSize: (isFoldable || isTablet) ? 12.f : 14.f, + // isBold: true, + // borderRadius: 12.r, + // padding: EdgeInsets.fromLTRB(10.w, 0, 10.w, 0), + // height: 40.h, + // iconSize: 14.h, + // icon: AppAssets.view_report_icon, + // iconColor: AppColors.infoColor, + // ), + // SizedBox(height: 16.h), + // ], + // ), + // ) + // : SizedBox.shrink(), + // ), ], ), ), ), ), - ), - ); - }, - ); - }), - ], - ), - ); - }, - ), + )); + }, + ); + }), + ], + ), + ); + }, ), ), + ), ); } diff --git a/lib/presentation/radiology/radiology_result_page.dart b/lib/presentation/radiology/radiology_result_page.dart index 7b3f11d4..5b7072e6 100644 --- a/lib/presentation/radiology/radiology_result_page.dart +++ b/lib/presentation/radiology/radiology_result_page.dart @@ -7,11 +7,13 @@ import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/radiology/models/resp_models/patient_radiology_response_model.dart'; import 'package:hmg_patient_app_new/features/radiology/radiology_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -20,11 +22,12 @@ import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:open_filex/open_filex.dart'; import 'package:provider/provider.dart'; import 'package:url_launcher/url_launcher.dart'; +import 'dart:ui' as ui; class RadiologyResultPage extends StatefulWidget { - RadiologyResultPage({super.key, required this.patientRadiologyResponseModel}); + const RadiologyResultPage({super.key, required this.patientRadiologyResponseModel}); - PatientRadiologyResponseModel patientRadiologyResponseModel; + final PatientRadiologyResponseModel patientRadiologyResponseModel; @override State createState() => _RadiologyResultPageState(); @@ -41,123 +44,210 @@ class _RadiologyResultPageState extends State { super.initState(); } + @override + void dispose() { + // Clear AI analysis data when leaving the screen + radiologyViewModel.closeRadiologyAIAnalysis(); + // radiologyViewModel.setIsRadiologyAIAnalysisNeedsToBeShown(true); + super.dispose(); + } + @override Widget build(BuildContext context) { - radiologyViewModel = Provider.of(context); + radiologyViewModel = Provider.of(context, listen: false); AppState _appState = getIt.get(); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, - body: Column( - children: [ - Expanded( - child: CollapsingListView( - title: LocaleKeys.radiologyResult.tr(context: context), - child: SingleChildScrollView( - child: Padding( - padding: EdgeInsets.symmetric(horizontal: 24.h), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox(height: 24.h), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.h, - hasShadow: true, + body: Consumer(builder: (context, radVM, child) { + + return Column( + children: [ + Expanded( + child: CollapsingListView( + title: LocaleKeys.radiologyResult.tr(context: context), + downloadReport: () async { + LoaderBottomSheet.showLoader(); + await radiologyViewModel + .getRadiologyPDF( + patientRadiologyResponseModel: widget.patientRadiologyResponseModel, + authenticatedUser: _appState.getAuthenticatedUser()!, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }) + .then((val) async { + LoaderBottomSheet.hideLoader(); + if (radiologyViewModel.patientRadiologyReportPDFBase64.isNotEmpty) { + String path = await Utils.createFileFromString(radiologyViewModel.patientRadiologyReportPDFBase64, "pdf"); + try { + OpenFilex.open(path); + } catch (ex) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: "Cannot open file"), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + } + }); + }, + // viewImage: () { + // if (radiologyViewModel.radiologyImageURL.isNotEmpty) { + // Uri uri = Uri.parse(radiologyViewModel.radiologyImageURL); + // launchUrl(uri, mode: LaunchMode.platformDefault, webOnlyWindowName: ""); + // } else { + // Utils.showToast("Radiology image not available"); + // } + // }, + child: SingleChildScrollView( + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 24.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 24.h), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.h, + hasShadow: true, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + SizedBox(height: 16.h), + // widget.patientRadiologyResponseModel.description!.toText16(isBold: true), + SizedBox(height: 8.h), + Directionality( + textDirection: ui.TextDirection.ltr, + child: widget.patientRadiologyResponseModel.reportData!.trim().toText12(isBold: true, color: AppColors.textColorLight, isEnglishOnly: true), + ), + SizedBox(height: 16.h), + // CustomButton( + // text: LocaleKeys.viewRadiologyImage.tr(context: context), + // onPressed: () async { + // if (radiologyViewModel.radiologyImageURL.isNotEmpty) { + // Uri uri = Uri.parse(radiologyViewModel.radiologyImageURL); + // launchUrl(uri, mode: LaunchMode.platformDefault, webOnlyWindowName: ""); + // } else { + // Utils.showToast("Radiology image not available"); + // } + // }, + // backgroundColor: AppColors.primaryRedColor, + // borderColor: AppColors.primaryRedColor, + // textColor: Colors.white, + // fontSize: 14, + // isBold: true, + // borderRadius: 12, + // padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + // height: 40.h, + // icon: AppAssets.download, + // iconColor: Colors.white, + // iconSize: 20.h, + // ), + // SizedBox(height: 16.h), + ], + ).paddingSymmetrical(16.h, 0.h), ), - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - SizedBox(height: 16.h), - // widget.patientRadiologyResponseModel.description!.toText16(isBold: true), - SizedBox(height: 8.h), - widget.patientRadiologyResponseModel.reportData!.trim().toText12(isBold: true, color: AppColors.textColorLight), - SizedBox(height: 16.h), - CustomButton( - text: LocaleKeys.viewRadiologyImage.tr(context: context), - onPressed: () async { - if (radiologyViewModel.radiologyImageURL.isNotEmpty) { - Uri uri = Uri.parse(radiologyViewModel.radiologyImageURL); - launchUrl(uri, mode: LaunchMode.platformDefault, webOnlyWindowName: ""); - } else { - Utils.showToast("Radiology image not available"); - } - }, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - textColor: Colors.white, - fontSize: 14, - fontWeight: FontWeight.w500, - borderRadius: 12, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 40.h, - icon: AppAssets.download, - iconColor: Colors.white, - iconSize: 20.h, - ), - SizedBox(height: 16.h), - ], - ).paddingSymmetrical(16.h, 0.h), - ), - SizedBox(height: 24.h), - ], + SizedBox(height: 24.h), + ], + ), ), ), ), ), - ), - Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.h, - hasShadow: true, - ), - child: CustomButton( - text: LocaleKeys.downloadReport.tr(context: context), - onPressed: () async { - LoaderBottomSheet.showLoader(); - await radiologyViewModel.getRadiologyPDF(patientRadiologyResponseModel: widget.patientRadiologyResponseModel, authenticatedUser: _appState.getAuthenticatedUser()!, onError: (err) { - LoaderBottomSheet.hideLoader(); - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: err), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - }).then((val) async { - LoaderBottomSheet.hideLoader(); - if (radiologyViewModel.patientRadiologyReportPDFBase64.isNotEmpty) { - String path = await Utils.createFileFromString(radiologyViewModel.patientRadiologyReportPDFBase64, "pdf"); - try { - OpenFilex.open(path); - } catch (ex) { - showCommonBottomSheetWithoutHeight( - context, - child: Utils.getErrorWidget(loadingText: "Cannot open file"), - callBackFunc: () {}, - isFullScreen: false, - isCloseButtonVisible: true, - ); - } - } - }); - }, - backgroundColor: AppColors.successColor, - borderColor: AppColors.successColor, - textColor: Colors.white, - fontSize: 16, - fontWeight: FontWeight.w500, - borderRadius: 12, - padding: EdgeInsets.fromLTRB(10, 0, 10, 0), - height: 45.h, - icon: AppAssets.download, - iconColor: Colors.white, - iconSize: 20.h, - ).paddingSymmetrical(24.h, 24.h), - ), - ], - ), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: true, + ), + child: Column( + children: [ + SizedBox(height: 24.h), + widget.patientRadiologyResponseModel.dIAPACSURL != "" + ? CustomButton( + text: LocaleKeys.openRad.tr(context: context), + onPressed: () async { + if (radiologyViewModel.radiologyImageURL.isNotEmpty) { + Uri uri = Uri.parse(radiologyViewModel.radiologyImageURL); + launchUrl(uri, mode: LaunchMode.platformDefault, webOnlyWindowName: ""); + } else { + Utils.showToast("Radiology image not available"); + } + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: Colors.white, + fontSize: 16, + isBold: true, + borderRadius: 12, + padding: EdgeInsets.fromLTRB(10, 0, 10, 0), + height: 56.h, + icon: AppAssets.imageIcon, + iconColor: Colors.white, + iconSize: 20.h, + ).paddingSymmetrical(24.h, 0.h) + : SizedBox.shrink(), + Utils.havePrivilege(116) ? Container( + height: 56.h, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(12.r), + gradient: LinearGradient( + begin: Alignment.centerLeft, + end: Alignment.centerRight, + stops: [0.236, 1.0], // 53.6% and 100% + colors: [ + Color(0xFF8A38F5), // Transparent + Color(0xFFE20BBB), // Solid #F8F8F8 + ], + ), + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + Padding( + padding: EdgeInsets.only(right: 4.w, left: 4.w), + child: Utils.buildSvgWithAssets(icon: AppAssets.aiOverView, width: 16.h, height: 16.h, iconColor: Colors.white), + ), + LocaleKeys.generateAiAnalysisRadResult.tr(context: context).toText16(isBold: true, color: Colors.white) + ], + ), + ).paddingSymmetrical(24.h, 12.h).onPress(() async { + final _dialogService = getIt.get(); + await _dialogService.showCommonBottomSheetWithoutH( + message: LocaleKeys.aiDisclaimerRad.tr(), + label: LocaleKeys.consent.tr(), + okLabel: LocaleKeys.acceptLbl.tr(), + cancelLabel: LocaleKeys.rejectView.tr(), + onOkPressed: () { + context.pop(); + radiologyViewModel.getRadiologyAiAnalysis( + reportData: widget.patientRadiologyResponseModel.reportData ?? "", + loadingText: LocaleKeys.loadingAIAnalysis.tr(context: context), + langId: _appState.getLanguageID(), + ); + }, + onCancelPressed: () { + context.pop(); + }, + ); + }) : SizedBox(height: 24.h), + ], + ), + ), + ], + ); + }), ); } } diff --git a/lib/presentation/radiology/search_radiology.dart b/lib/presentation/radiology/search_radiology.dart index 7c14fd1d..6f78713c 100644 --- a/lib/presentation/radiology/search_radiology.dart +++ b/lib/presentation/radiology/search_radiology.dart @@ -78,8 +78,9 @@ class _SearchRadiologyContentContentState extends State crossAxisAlignment: CrossAxisAlignment.start, children: [ TextInputWidget( - labelText: "Search radiology results", - hintText: "Type test description", + fontFamily: "Poppins", + labelText: LocaleKeys.search.tr(context: context), + hintText: "", controller: searchEditingController, isEnable: true, prefix: null, @@ -93,7 +94,7 @@ class _SearchRadiologyContentContentState extends State ), SizedBox(height: ResponsiveExtension(20).h), if (filteredSuggestions.isNotEmpty) ...[ - "Suggestions".toText16(isBold: true), + LocaleKeys.suggestions.tr(context: context).toText16(isBold: true), ], ], ), @@ -146,8 +147,8 @@ class SuggestionChip extends StatelessWidget { child: label.toText12( // color: isSelected ? Colors.white : Colors.black87, color: AppColors.textColor, - fontWeight: FontWeight.w500, - ), + isBold: true, + isEnglishOnly: true), ), ); } diff --git a/lib/presentation/rate_appointment/rate_appointment_clinic.dart b/lib/presentation/rate_appointment/rate_appointment_clinic.dart index e7e29f67..c8aedea8 100644 --- a/lib/presentation/rate_appointment/rate_appointment_clinic.dart +++ b/lib/presentation/rate_appointment/rate_appointment_clinic.dart @@ -1,7 +1,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/my_appointments/appointment_rating_view_model.dart'; @@ -96,7 +96,13 @@ class _RateAppointmentClinicState extends State { }); }, iconSize: 35, - icon: SvgPicture.asset('assets/images/svg/rate_${index + 1}.svg', colorFilter: getColors(rating)), + icon: Utils.buildSvgWithAssets( + icon: 'assets/images/svg/rate_${index + 1}.svg', + iconColor: getRatingColor(rating), + width: 35, + height: 35, + applyThemeColor: false, + ), ), ) : IconButton( @@ -106,7 +112,12 @@ class _RateAppointmentClinicState extends State { }); }, iconSize: 35, - icon: SvgPicture.asset('assets/images/svg/rate_${index + 1}.svg'), + icon: Utils.buildSvgWithAssets( + icon: 'assets/images/svg/rate_${index + 1}.svg', + width: 35, + height: 35, + applyThemeColor: false, + ), ), ), ], @@ -181,6 +192,23 @@ class _RateAppointmentClinicState extends State { ); } + Color getRatingColor(int rating) { + switch (rating) { + case 5: + return AppColors.bgGreenColor; + case 4: + return Colors.greenAccent; + case 3: + return AppColors.warningLightColor; + case 2: + return Colors.orange; + case 1: + return AppColors.primaryRedColor; + default: + return AppColors.greyColor; + } + } + ColorFilter getColors(int rating){ switch(rating){ diff --git a/lib/presentation/rate_appointment/rate_appointment_doctor.dart b/lib/presentation/rate_appointment/rate_appointment_doctor.dart index b9a6c587..d78dc59e 100644 --- a/lib/presentation/rate_appointment/rate_appointment_doctor.dart +++ b/lib/presentation/rate_appointment/rate_appointment_doctor.dart @@ -1,5 +1,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; @@ -10,6 +12,7 @@ import 'package:hmg_patient_app_new/presentation/rate_appointment/rate_appointme import 'package:hmg_patient_app_new/presentation/rate_appointment/widget/doctor_row.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:provider/provider.dart'; class RateAppointmentDoctor extends StatefulWidget { @@ -25,7 +28,7 @@ class RateAppointmentDoctor extends StatefulWidget { class _RateAppointmentDoctorState extends State { final formKey = GlobalKey(); String note = ""; - int rating = 5; + int rating = 0; // ProjectViewModel? projectViewModel; AppointmentRatingViewModel? appointmentRatingViewModel; @@ -40,7 +43,6 @@ class _RateAppointmentDoctorState extends State { @override Widget build(BuildContext context) { - myAppointmentsViewModel = Provider.of(context, listen: false); appointmentRatingViewModel = Provider.of(context, listen: false); @@ -48,16 +50,16 @@ class _RateAppointmentDoctorState extends State { return Selector( selector: (_, vm) => vm.isRateClinic, - builder: (context, isRateClinic, child) => isRateClinic - ? RateAppointmentClinic(doctorNote: note, doctorRate: rating,) - : SizedBox( - height: sheetHeight, + builder: (context, isRateClinic, child) => + // isRateClinic ? RateAppointmentClinic(doctorNote: note, doctorRate: rating,) + // : + SizedBox( + height: sheetHeight, child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ // Scrollable main content Expanded( - child: Padding( padding: const EdgeInsets.only(top: 0.0, left: 0, right: 0), child: Column( @@ -90,7 +92,7 @@ class _RateAppointmentDoctorState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Please rate the doctor".toText16(isBold: true), + LocaleKeys.rateTheDoctor.tr(context: context).toText16(isBold: true), SizedBox(height: 12), Row( mainAxisAlignment: MainAxisAlignment.center, @@ -139,16 +141,23 @@ class _RateAppointmentDoctorState extends State { child: Padding( padding: EdgeInsets.all(16.0), child: TextField( - maxLines: 4, + // style: TextStyle( + // fontSize: 14.f, + // fontWeight: FontWeight.w400, + // color: Color(0xff2B353E), + // letterSpacing: 0, + // fontFamily: getIt.get().getLanguageCode() == "ar" ? 'CairoArabic' : 'Poppins', + // ), decoration: InputDecoration.collapsed( hintText: LocaleKeys.notes.tr(context: context), hintStyle: TextStyle( - fontSize: 16, - fontWeight: FontWeight.w600, - color: Color(0xff2B353E), - letterSpacing: -0.64, - height: 23 / 16)), + fontSize: 16.f, + fontWeight: FontWeight.w600, + letterSpacing: -0.4, + fontFamily: getIt.get().getLanguageCode() == "ar" ? 'CairoArabic' : 'Poppins', + ), + ), onChanged: (value) { setState(() { note = value; @@ -162,7 +171,6 @@ class _RateAppointmentDoctorState extends State { ), ), - // Bottom action buttons pinned to bottom SafeArea( top: false, @@ -172,7 +180,7 @@ class _RateAppointmentDoctorState extends State { children: [ Expanded( child: CustomButton( - text: "Later", + text: LocaleKeys.later.tr(context: context), backgroundColor: Color(0xffFEE9EA), borderColor: Color(0xffFEE9EA), textColor: Color(0xffED1C2B), @@ -184,15 +192,16 @@ class _RateAppointmentDoctorState extends State { SizedBox(width: 10), Expanded( child: CustomButton( - text: LocaleKeys.next.tr(context: context), - onPressed: () { - // Set up clinic rating and show clinic rating view - appointmentRatingViewModel!.setTitle(LocaleKeys.rateDoctor.tr(context: context),); - appointmentRatingViewModel!.setSubTitle(LocaleKeys.howWasYourLastVisitWithDoctor.tr(context: context),); - appointmentRatingViewModel!.setClinicOrDoctor(true); - - setState(() {}); - }, + text: LocaleKeys.submitRating.tr(context: context), + onPressed: rating > 0 + ? () { + LoaderBottomSheet.showLoader(); + appointmentRatingViewModel!.submitDoctorRating(docRate: rating, docNote: note).then((_) { + LoaderBottomSheet.hideLoader(); + Navigator.pop(context); + }); + } + : null, ), ), ], diff --git a/lib/presentation/rate_appointment/widget/doctor_row.dart b/lib/presentation/rate_appointment/widget/doctor_row.dart index 725ac7c3..09b6c134 100644 --- a/lib/presentation/rate_appointment/widget/doctor_row.dart +++ b/lib/presentation/rate_appointment/widget/doctor_row.dart @@ -1,4 +1,3 @@ - import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/date_util.dart'; @@ -8,6 +7,11 @@ import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/my_appointments/models/resp_models/appointment_details_resp_model.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'dart:ui' as ui; + +import '../../../core/utils/utils.dart'; +import '../../../theme/colors.dart'; + class BuildDoctorRow extends StatelessWidget { bool isForClinic = false; AppointmentDetails? appointmentDetails; @@ -20,8 +24,9 @@ class BuildDoctorRow extends StatelessWidget { return Padding(padding: EdgeInsets.all(16),child:Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.network( - isForClinic ? 'https://hmgwebservices.com/Images/Hospitals/${appointmentDetails!.projectID}.jpg' : appointmentDetails!.doctorImageURL , + Utils.buildImgWithNetwork( + url: isForClinic ? 'https://hmgwebservices.com/Images/Hospitals/${appointmentDetails!.projectID}.jpg' : appointmentDetails!.doctorImageURL , + iconColor: AppColors.transparent, width: 63.h, height: 63.h, fit: BoxFit.cover, @@ -36,32 +41,27 @@ class BuildDoctorRow extends StatelessWidget { SizedBox(height: 8.h), - isForClinic ? Wrap( direction: Axis.horizontal, spacing: 3.h, runSpacing: 4.h, children: [ AppCustomChipWidget( - labelText: appointmentDetails!.clinicName.toString(), - ), AppCustomChipWidget( icon: AppAssets.ic_date_filter, labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(appointmentDetails!.appointmentDate), false), - + isEnglishOnly: true, ), AppCustomChipWidget( icon: AppAssets.appointment_time_icon, labelText: appointmentDetails!.startTime.substring(0, appointmentDetails!.startTime.length - 3), - ), - ] ) : Wrap( direction: Axis.horizontal, @@ -69,26 +69,30 @@ class BuildDoctorRow extends StatelessWidget { runSpacing: 4.h, children: [ AppCustomChipWidget( - labelText: appointmentDetails!.projectName.toString(), - - ), AppCustomChipWidget( - labelText: appointmentDetails!.clinicName.toString(), - - ) - - ] - ) - ], + ), + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelPadding: EdgeInsetsDirectional.only(start: -8.w, end: 6.w), + icon: AppAssets.ic_date_filter, + labelText: DateUtil.formatDateToDate(DateUtil.convertStringToDate(appointmentDetails!.appointmentDate), false), + isEnglishOnly: true, + ), + ), + ], + ), + ], + ), ), - ), ], - )); + ), + ); } } \ No newline at end of file diff --git a/lib/presentation/refund_request/refund_history_screen.dart b/lib/presentation/refund_request/refund_history_screen.dart new file mode 100644 index 00000000..630c5dc0 --- /dev/null +++ b/lib/presentation/refund_request/refund_history_screen.dart @@ -0,0 +1,264 @@ +import 'dart:async'; + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/resp_models/refund_request_list_response_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/refund_request_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/refund_request/refund_request_detail_screen.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:provider/provider.dart'; + +class RefundHistoryScreen extends StatefulWidget { + final int refundType; + + const RefundHistoryScreen({super.key, required this.refundType}); + + @override + State createState() => _RefundHistoryScreenState(); +} + +class _RefundHistoryScreenState extends State { + @override + void initState() { + super.initState(); + final vm = context.read(); + scheduleMicrotask(() async { + await vm.getRefundInvoices(refundType: widget.refundType); + }); + } + + // ── Helpers ────────────────────────────────────────────────────────────── + + String _formatDate(String? rawDate) { + if (rawDate == null || rawDate.isEmpty) return ''; + try { + final date = DateUtil.convertStringToDate(rawDate); + return DateFormat('MMM dd, yyyy').format(date); + } catch (_) { + return rawDate; + } + } + + // ── Shimmer ─────────────────────────────────────────────────────────────── + + Widget _buildLoadingShimmer() { + return ListView.separated( + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + padding: EdgeInsets.only(top: 24.h), + itemCount: 4, + separatorBuilder: (_, __) => SizedBox(height: 16.h), + itemBuilder: (_, __) => _buildInvoiceCard(null, isLoading: true), + ); + } + + // ── Card ────────────────────────────────────────────────────────────────── + + Color getStatusColor(int status) { + Color statusColor = AppColors.textColor; + if (status == 3) { + statusColor = AppColors.statusRejectedColor; + } else if (status == 2) { + statusColor = AppColors.statusCompletedColor; + } else if (status == 1) { + statusColor = AppColors.statusPendingColor; + } + return statusColor; + } + + String getRefundDestinationIcon(String refundDestination) { + String icon = ""; + + if (refundDestination.toLowerCase().contains("wallet")) { + icon = AppAssets.habibLogoOnly; + } else if (refundDestination.toLowerCase().contains("bank")) { + icon = AppAssets.bankIconOnly; + } + + return icon; + } + + Widget _buildInvoiceCard(RefundInvoiceModel? invoice, {bool isLoading = false}) { + final referenceNo = isLoading ? 'INV-000000' : (invoice?.referenceNumber ?? '-'); + final String requestStatusName = isLoading ? 'Processed' : (invoice?.requestStatusName ?? ''); + final int requestStatusId = isLoading ? 1 : (invoice?.requestStatusId ?? 1); + final refundDestinationId = (invoice?.refundDestination ?? ''); + final refundDestination = isLoading ? 'Wallet' : (invoice?.refundDestination ?? ''); + final isInvoiceRefund = invoice?.refundTypeId == 1; + + // Resolve total refund amount from whichever payload is present + final totalAmount = isLoading + ? 0.0 + : isInvoiceRefund + ? (invoice?.invoiceRequestPayload?.totalRefundAmount) + : (invoice?.walletRequestPayload?.totalRefundAmount); + final totalAmountStr = totalAmount?.toStringAsFixed(2); + + // Resolve total refund amount from whichever payload is present + final projectName = isInvoiceRefund ? (invoice?.invoiceRequestPayload?.project ?? "") : ""; + final String totalProcedures = (invoice?.invoiceRequestPayload?.proceduresList?.length.toString() ?? ''); + + return AnimatedContainer( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: false, + ), + child: Padding( + padding: EdgeInsets.all(16.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Invoice No + Last Updated row + + AppCustomChipWidget( + icon: "", + labelText: requestStatusName, + textColor: getStatusColor(requestStatusId), + backgroundColor: getStatusColor(requestStatusId).withValues(alpha: 0.2), + ).toShimmer2(isShow: isLoading), + SizedBox(height: 8.h), + + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + "${LocaleKeys.referenceNo.tr(context: context)} $referenceNo" + .toText16( + color: AppColors.textColor, + isBold: true, + ) + .toShimmer2(isShow: isLoading), + ], + ), + + SizedBox(height: 8.h), + Wrap( + spacing: 6.w, + runSpacing: 6.h, + children: [ + if (!isLoading && refundDestination.isNotEmpty) + AppCustomChipWidget(icon: getRefundDestinationIcon(refundDestination), iconHasColor: false, labelText: refundDestination), + if (totalProcedures.isNotEmpty) AppCustomChipWidget(icon: "", labelText: "$totalProcedures ${LocaleKeys.procedures.tr()}"), + if (!isLoading && projectName.isNotEmpty) AppCustomChipWidget(icon: "", labelText: projectName), + ], + ), + + SizedBox(height: 16.h), + + // Total refund amount + if (totalAmountStr != null) + Utils.getPaymentAmountWithSymbol( + isExpanded: false, + (isLoading ? '0.00' : totalAmountStr).toText20(isBold: true, color: AppColors.textColor), + AppColors.textColor, + 18, + isSaudiCurrency: true, + ).toShimmer2(isShow: isLoading), + + SizedBox(height: 16.h), + CustomButton( + text: LocaleKeys.viewDetails.tr(context: context), + onPressed: () => Navigator.of(context).push(CustomPageRoute(page: RefundRequestDetailScreen(invoice: invoice!))), + backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.1), + borderColor: AppColors.primaryRedColor.withValues(alpha: 0.01), + textColor: AppColors.primaryRedColor, + fontSize: 14.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + padding: EdgeInsets.symmetric(horizontal: 10.w), + height: 40.h, + iconColor: AppColors.whiteColor, + iconSize: 18.h, + ).toShimmer2(isShow: isLoading), + ], + ), + ), + ); + } + + // ── Empty ───────────────────────────────────────────────────────────────── + + Widget _buildEmptyState() { + return Center( + child: Padding( + padding: EdgeInsets.symmetric(vertical: 40.h), + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + hasShadow: false, + ), + child: Utils.getNoDataWidget( + context, + noDataText: LocaleKeys.noRefundHistoryFound.tr(context: context), + isSmallWidget: true, + width: 62.w, + height: 62.h, + ), + ), + ), + ); + } + + // ── Build ───────────────────────────────────────────────────────────────── + + @override + Widget build(BuildContext context) { + return CollapsingListView( + title: LocaleKeys.refundHistory.tr(context: context), + isLeading: true, + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Consumer( + builder: (context, viewModel, _) { + if (viewModel.isRefundInvoicesLoading) { + return _buildLoadingShimmer(); + } + + if (viewModel.refundInvoicesList.isEmpty) { + return _buildEmptyState(); + } + return ListView.separated( + padding: EdgeInsets.only(top: 24.h), + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: viewModel.refundInvoicesList.length, + separatorBuilder: (_, __) => SizedBox(height: 12.h), + itemBuilder: (context, index) { + final invoice = viewModel.refundInvoicesList[index]; + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 500), + child: SlideAnimation( + verticalOffset: 100.0, + child: FadeInAnimation( + child: _buildInvoiceCard(invoice), + ), + ), + ); + }, + ); + }, + ), + ], + ).paddingSymmetrical(24.w, 0), + ), + ); + } +} diff --git a/lib/presentation/refund_request/refund_request_create_page.dart b/lib/presentation/refund_request/refund_request_create_page.dart new file mode 100644 index 00000000..1d0f723f --- /dev/null +++ b/lib/presentation/refund_request/refund_request_create_page.dart @@ -0,0 +1,717 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_staggered_animations/flutter_staggered_animations.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/my_invoices/models/get_invoices_list_response_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/req_models/submit_refund_request_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/refund_request_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/my_invoices/widgets/invoice_list_card.dart'; +import 'package:hmg_patient_app_new/presentation/refund_request/refund_history_screen.dart'; +import 'package:hmg_patient_app_new/presentation/refund_request/widgets/refund_reason_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/input_widget.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:hmg_patient_app_new/widgets/radio_list_tile_widget.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:hmg_patient_app_new/widgets/stepper/stepper_widget.dart'; +import 'package:provider/provider.dart'; + +class RefundRequestCreatePage extends StatefulWidget { + final GetInvoicesListResponseModel invoice; + + /// 0 = Invoices (default), 1 = HMG Wallet + final int initialTabIndex; + + const RefundRequestCreatePage({ + super.key, + required this.invoice, + this.initialTabIndex = 0, + }); + + @override + State createState() => _RefundRequestCreatePageState(); +} + +class _RefundRequestCreatePageState extends State { + late RefundRequestViewModel _refundRequestViewModel; + late AppState _appState; + + final TextEditingController _ibanController = TextEditingController(); + final TextEditingController _descriptionController = TextEditingController(); + final FocusNode _ibanFocusNode = FocusNode(); + final FocusNode _descriptionFocusNode = FocusNode(); + + @override + void initState() { + super.initState(); + _appState = getIt.get(); + WidgetsBinding.instance.addPostFrameCallback((_) { + _refundRequestViewModel = context.read(); + _ibanController.addListener(() => _refundRequestViewModel.triggerRebuild()); + _descriptionController.addListener(() => _refundRequestViewModel.triggerRebuild()); + _loadInvoiceDetails(); + }); + } + + @override + void dispose() { + _ibanController.dispose(); + _descriptionController.dispose(); + _ibanFocusNode.dispose(); + _descriptionFocusNode.dispose(); + _refundRequestViewModel.resetState(); + super.dispose(); + } + + void _loadInvoiceDetails() { + final invoiceNo = widget.invoice.invoiceNo; + final projectId = widget.invoice.projectId; + if (invoiceNo == null || projectId == null) return; + + _refundRequestViewModel.getRefundableInvoicesDetails( + invoiceNo: invoiceNo, + projectId: projectId, + onSuccess: (details) { + final procedures = details.refundableInvoiceDetailsItems + .map((item) => RefundableProcedure( + procedureId: item.lineItemNo ?? 0, + procedureName: item.procedureName ?? '', + patientPaidAmount: item.patientPaidAmount ?? 0.0, + apiLineItemNo: item.lineItemNo, + apiProcedureId: item.procedureId, + )) + .toList(); + _refundRequestViewModel.setProcedures(procedures, needsITGApproval: details.needITGApproval ?? false); + }, + ); + } + + // ── Stepper ─────────────────────────────────────────────────────────────── + + Widget _buildStepper(RefundRequestViewModel vm) { + return Padding( + padding: EdgeInsets.symmetric(horizontal: 24.w), + child: LayoutBuilder( + builder: (context, constraints) { + // StepperWidget appends SizedBox(width: 8.h) after itself + final itemWidth = (constraints.maxWidth - 2 * 8.h) / 2; + return Row( + children: List.generate(2, (index) { + final isActive = index <= vm.currentStep; + final isThumb = index == vm.currentStep; + return StepperWidget( + itemWidth, + isActive ? AppColors.primaryRedColor : AppColors.greyColor, + isThumb, + 6.h, + ); + }), + ); + }, + ), + ); + } + + // ── Step 1 — exactly mirrors RechargeWalletPage hospital row ───────────── + + Widget _buildStep1Content(RefundRequestViewModel vm) { + return Consumer( + builder: (context, refundVM, _) { + final isArabic = _appState.isArabic(); + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.selectProcedures.tr(context: context).toText20(isBold: true), + SizedBox(height: 24.h), + if (vm.isProceduresLoading) + ListView.separated( + padding: EdgeInsets.zero, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + separatorBuilder: (context, index) => SizedBox(height: 16.h), + itemCount: 4, + itemBuilder: (_, index) => Container( + height: 40.h, + margin: EdgeInsets.only(bottom: 24.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 16.h, + ), + ).toShimmer2(isShow: true, radius: 16.r), + ) + else if (vm.procedures.isEmpty) + Center( + child: Padding( + padding: EdgeInsets.symmetric(vertical: 24.h), + child: LocaleKeys.noProceduresAvailableForRefund.tr().toText14(color: AppColors.greyTextColor), + ), + ) + else + AnimationLimiter( + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: false), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Select All row + Material( + color: Colors.transparent, + child: InkWell( + onTap: () => _refundRequestViewModel.toggleSelectAll(), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Row( + children: [ + SizedBox( + width: 24.w, + height: 24.w, + child: Transform.scale( + scale: 24.w / 22, + child: Checkbox( + value: vm.isAllSelected, + onChanged: (_) => _refundRequestViewModel.toggleSelectAll(), + activeColor: AppColors.primaryRedColor, + side: BorderSide(color: AppColors.checkBoxBorderColor, width: 1), + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + visualDensity: VisualDensity.compact, + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(4.r)), + ), + ), + ), + SizedBox(width: 8.w), + LocaleKeys.selectAll.tr(context: context).toText16(isBold: true), + ], + ), + ), + ), + ), + Divider(color: AppColors.bottomNAVBorder, height: 1, thickness: 1).paddingSymmetrical(16.w, 0.w), + ...List.generate( + vm.procedures.length, + (index) => _buildProcedureCard(vm.procedures[index], index, vm.procedures.length), + ), + ], + ), + ), + ), + ], + ); + }, + ); + } + + // ── Step 2 — payment method selection ──────────────────────────────────── + + Widget _buildStep2Content(RefundRequestViewModel vm) { + final paymentOptions = [ + RefundTabType.hmgWallet, + RefundTabType.invoices, + ]; + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.selectRefundMethod.tr(context: context).toText20(isBold: true), + SizedBox(height: 24.h), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.h, + hasShadow: false, + ), + child: ListView.builder( + padding: EdgeInsets.zero, + itemCount: paymentOptions.length, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemBuilder: (context, index) { + final type = paymentOptions[index]; + return Column( + children: [ + RadioListTileWidget( + value: type, + groupValue: vm.selectedPaymentMethod, + title: type.toDisplayString(), + onChanged: (value) { + if (value != null) vm.setPaymentMethod(value); + }, + ), + if (index != paymentOptions.length - 1) + Divider(color: AppColors.bottomNAVBorder, height: 1, thickness: 1).paddingSymmetrical(16.w, 0.w), + ], + ); + }, + ), + ), + if (vm.selectedPaymentMethod == RefundTabType.invoices) ...[ + SizedBox(height: 16.h), + _buildBankInputDetails(vm), + ], + ], + ); + } + + // ── Bank Transfer Input ─────────────────────────────────────────────────── + + Widget _buildBankInputDetails(RefundRequestViewModel vm) { + final hasError = vm.ibanError != null || vm.descriptionError != null; + return Container( + padding: EdgeInsets.all(16.h), + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(24.r), + border: Border.all( + color: hasError ? AppColors.primaryRedBorderColor : Colors.transparent, + width: 1, + ), + ), + child: Column( + children: [ + TextInputWidget( + labelText: LocaleKeys.addIbanDetails.tr(), + hintText: "SA0000000000000000000000", + controller: _ibanController, + focusNode: _ibanFocusNode, + autoFocus: false, + keyboardType: TextInputType.text, + isEnable: true, + isReadOnly: false, + prefix: null, + isBorderAllowed: false, + isAllowLeadingIcon: true, + fontSize: 14.f, + isCountryDropDown: false, + leadingIcon: AppAssets.bankIcon, + fontFamily: "Poppins", + hasError: false, + errorMessage: vm.ibanError, + onChange: (value) { + vm.clearIbanError(); + }, + onSubmitted: (value) { + _descriptionFocusNode.requestFocus(); + }, + ), + Divider(color: AppColors.bottomNAVBorder, thickness: 1).withVerticalPadding(16.h), + TextInputWidget( + labelText: LocaleKeys.description.tr(), + hintText: LocaleKeys.enterDescription.tr(), + controller: _descriptionController, + focusNode: _descriptionFocusNode, + autoFocus: false, + keyboardType: TextInputType.text, + isEnable: true, + isReadOnly: false, + prefix: null, + isBorderAllowed: false, + isAllowLeadingIcon: true, + fontSize: 14.f, + isCountryDropDown: false, + leadingIcon: AppAssets.descriptionIcon, + fontFamily: "Poppins", + hasError: false, + errorMessage: vm.descriptionError, + onChange: (value) { + vm.clearDescriptionError(); + }, + ), + ], + ), + ); + } + + // ── Step 2 — procedure checkboxes ───────────────────────────────────────── + + Widget _buildProcedureCard(RefundableProcedure procedure, int index, int length) { + final isArabic = _appState.isArabic(); + final name = isArabic && procedure.procedureNameN != null ? procedure.procedureNameN! : procedure.procedureName; + + return AnimationConfiguration.staggeredList( + position: index, + duration: const Duration(milliseconds: 400), + child: SlideAnimation( + verticalOffset: 50.0, + child: FadeInAnimation( + child: AnimatedContainer( + duration: const Duration(milliseconds: 250), + curve: Curves.easeInOut, + child: Material( + color: Colors.transparent, + child: InkWell( + onTap: () => _refundRequestViewModel.toggleProcedureSelection(procedure), + child: Padding( + padding: EdgeInsets.all(16.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + SizedBox( + width: 24.w, + height: 24.w, + child: Transform.scale( + scale: 24.w / 22, + child: Checkbox( + value: procedure.isSelected, + onChanged: (_) => _refundRequestViewModel.toggleProcedureSelection(procedure), + activeColor: AppColors.primaryRedColor, + side: BorderSide(color: AppColors.checkBoxBorderColor, width: 1), + materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, + visualDensity: VisualDensity.compact, + shape: RoundedRectangleBorder( + borderRadius: BorderRadius.circular(4.r), + ), + ), + ), + ), + SizedBox(width: 8.w), + Expanded(child: name.toText16(isBold: true)), + SizedBox(width: 8.w), + Utils.getPaymentAmountWithSymbol( + procedure.patientPaidAmount.toStringAsFixed(2).toText20( + isBold: true, + isEnglishOnly: true, + color: AppColors.textColor, + ), + AppColors.textColor, + 10.f, + isSaudiCurrency: true, + ), + ], + ), + if (procedure.isSelected) ...[ + InkWell( + onTap: () => showRefundReasonBottomSheet( + context, + selectedReason: procedure.refundReason, + onDone: (reason) => _refundRequestViewModel.setRefundReasonForProcedure(procedure, reason), + ), + child: Padding( + padding: EdgeInsets.only(top: 16.h), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + crossAxisAlignment: CrossAxisAlignment.center, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.refundReason.tr(context: context).toText12(color: AppColors.greyTextColor, isBold: true), + (procedure.refundReason ?? LocaleKeys.selectRefundReason.tr(context: context)) + .toText14(color: AppColors.textColor, isBold: true), + ], + ), + ), + Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, width: 25.h, height: 25.h), + ], + ), + ), + ), + ], + if (index != length - 1) ...[ + Divider(color: AppColors.bottomNAVBorder, height: 1, thickness: 1).paddingOnly(top: 16.h), + ] + ], + ), + ), + ), + ), + ), + ), + ), + ); + } + + // ── Bottom bar ──────────────────────────────────────────────────────────── + + Widget _buildBottomBar(RefundRequestViewModel refundRequestViewModel) { + final isStep2 = refundRequestViewModel.currentStep == 1; + final isWallet = refundRequestViewModel.selectedTab == RefundTabType.hmgWallet; + + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: true, + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + if (!isWallet && refundRequestViewModel.selectedProcedures.isNotEmpty) ...[ + Padding( + padding: EdgeInsets.fromLTRB(24.w, 16.h, 24.w, 0), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.totalAmount.tr().toText18(color: AppColors.textColor, isBold: true), + Utils.getPaymentAmountWithSymbol( + refundRequestViewModel.totalRefundableAmount.toStringAsFixed(2).toText24( + isBold: true, + isEnglishOnly: true, + color: AppColors.textColor, + ), + AppColors.textColorLight, + 14, + isSaudiCurrency: true, + ), + ], + ), + ), + ], + CustomButton( + icon: isStep2 ? AppAssets.refundIcon : null, + text: isStep2 ? LocaleKeys.submit.tr(context: context) : LocaleKeys.next.tr(context: context), + onPressed: () { + if (!isStep2) { + if (refundRequestViewModel.selectedProcedures.isNotEmpty) refundRequestViewModel.nextStep(); + } else { + final isBankTransfer = refundRequestViewModel.selectedPaymentMethod == RefundTabType.invoices; + if (isBankTransfer) { + final isValid = refundRequestViewModel.validateBankTransferForm( + iban: _ibanController.text, + description: _descriptionController.text, + ); + if (!isValid) return; + } + _handleInvoiceRefundRequestSubmit(refundRequestViewModel); + } + }, + isDisabled: isStep2 + ? (refundRequestViewModel.selectedPaymentMethod == null || + (refundRequestViewModel.selectedPaymentMethod == RefundTabType.invoices && + (_ibanController.text.trim().isEmpty || _descriptionController.text.trim().isEmpty))) + : (refundRequestViewModel.selectedProcedures.isEmpty || !refundRequestViewModel.allSelectedProceduresHaveReasons), + ).paddingSymmetrical(24.h, 24.h), + ], + ), + ); + } + + // ── HMG Wallet placeholder ───────────────────────────────────────────────── + + Widget buildInvoiceCard() { + return Padding( + padding: EdgeInsets.symmetric(horizontal: 24.w), + child: InvoiceListCard(onTap: null, getInvoicesListResponseModel: widget.invoice), + ); + } + + // ── Submit ──────────────────────────────────────────────────────────────── + + void _handleInvoiceRefundRequestSubmit(RefundRequestViewModel vm) { + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.notice.tr(context: context), + child: Utils.getWarningWidget( + loadingText: LocaleKeys.confirmSubmitRequest.tr(context: context), + isShowActionButtons: true, + onCancelTap: () => Navigator.pop(context), + onConfirmTap: () async { + Navigator.pop(context); + LoaderBottomSheet.showLoader(); + + final isBankTransfer = vm.selectedPaymentMethod == RefundTabType.invoices; + final invoice = widget.invoice; + final userPayload = _appState.getAuthenticatedUser(); + final patientId = userPayload!.patientId; + final patientName = "${userPayload.firstName} ${userPayload.lastName}"; + final patientMobileNumber = "${userPayload.mobileNumber}"; + final patientNationalId = userPayload.patientIdentificationNo.toString(); + final request = SubmitRefundRequestModel( + projectId: invoice.projectId ?? 0, + refundType: '1', + isRefundFastTrack: vm.needITGApproval, + refundProject: invoice.projectName ?? '', + refundProjectId: invoice.projectId ?? 0, + refundPatientId: patientId.toString(), + refundPatientName: patientName, + refundNationalId: patientNationalId, + patientMobileNumber: patientMobileNumber, + refundInvoiceNo: (invoice.invoiceNo ?? 0).toString(), + refundAppointmentNo: (invoice.appointmentNo ?? 0).toString(), + refundDoctorId: invoice.doctorId ?? 0, + refundDoctorName: invoice.doctorName ?? '', + refundClinicId: invoice.clinicId ?? 0, + refundClinicName: invoice.clinicName ?? '', + refundDestination: isBankTransfer ? '2' : '1', + refundIban: isBankTransfer ? _ibanController.text.trim() : '', + refundRemarks: isBankTransfer ? _descriptionController.text.trim() : '', + refundTotalAmount: vm.totalRefundableAmount, + refundProceduresList: vm.selectedProcedures + .map((p) => SubmitRefundProcedureItem( + lineItemNo: p.apiLineItemNo ?? 0, + procedureId: p.apiProcedureId ?? '', + procedureName: p.procedureName, + patientPaidAmount: p.patientPaidAmount, + refundReason: p.refundReason ?? '', + )) + .toList(), + ); + + await vm.submitInvoiceRefundRequest( + request: request, + onSuccess: (response) { + LoaderBottomSheet.hideLoader(); + _showSuccessBottomSheet(response.refNo ?? ''); + }, + onError: (err) { + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err), + callBackFunc: () {}, + ); + }, + ); + }, + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + + void _showSuccessBottomSheet(String refNo) { + showCommonBottomSheetWithoutHeight( + context, + child: Padding( + padding: EdgeInsets.all(16.w), + child: Column( + children: [ + Utils.getSuccessWidget(loadingText: LocaleKeys.requestSubmittedSuccessfully.tr(context: context)), + if (refNo.isNotEmpty) ...[ + SizedBox(height: 8.h), + Row( + mainAxisAlignment: MainAxisAlignment.start, + children: [ + LocaleKeys.hereIsYourRequestNumber.tr().toText16( + color: AppColors.textColorLight, + ), + SizedBox(width: 6.w), + refNo.toText18(isBold: true, color: AppColors.textColor, isEnglishOnly: true), + ], + ).paddingSymmetrical(24.w, 0), + ], + SizedBox(height: 24.h), + Row( + children: [ + Expanded( + child: CustomButton( + height: 56.h, + text: LocaleKeys.ok.tr(), + onPressed: () { + Navigator.pop(context); // pop success sheet + Navigator.pop(context); // pop refund page + Navigator.of(context).push( + CustomPageRoute( + page: RefundHistoryScreen( + refundType: 1, // 2 for wallet, 1 for invoice + ), + ), + ); + }, + textColor: AppColors.whiteColor, + ), + ), + ], + ), + ], + ), + ), + isCloseButtonVisible: false, + isDismissible: false, + isFullScreen: false, + isAutoDismiss: false, + ); + } + +// ── Build ───────────────────────────────────────────────────────────────── + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, vm, _) { + return Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + body: Column( + children: [ + Expanded( + child: CollapsingListView( + title: LocaleKeys.requestRefund.tr(context: context), + leadingCallback: () { + final refundRequestViewModel = context.read(); + if (refundRequestViewModel.currentStep > 0) { + refundRequestViewModel.previousStep(); + } else { + context.pop(); + } + }, + requests: () => Navigator.of(context).push(CustomPageRoute( + page: RefundHistoryScreen( + refundType: 1, // 1 for invoice, 2 for wallet + ))), + child: SingleChildScrollView( + padding: EdgeInsets.only(bottom: 32.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Stepper (invoices tab only) + if (vm.selectedTab == RefundTabType.invoices) ...[ + buildInvoiceCard(), + _buildStepper(vm), + SizedBox(height: 16.h), + ], + // Content + AnimatedSwitcher( + duration: const Duration(milliseconds: 350), + transitionBuilder: (child, animation) => FadeTransition( + opacity: animation, + child: SlideTransition( + position: Tween( + begin: const Offset(0.05, 0), + end: Offset.zero, + ).animate(animation), + child: child, + ), + ), + child: vm.currentStep == 0 + ? KeyedSubtree( + key: const ValueKey('step1'), + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 24.w), + child: _buildStep1Content(vm), + ), + ) + : KeyedSubtree( + key: const ValueKey('step2'), + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 24.w), + child: _buildStep2Content(vm), + ), + ), + ), + ], + ), + ), + ), + ), + _buildBottomBar(vm), + ], + ), + ); + }, + ); + } +} diff --git a/lib/presentation/refund_request/refund_request_detail_screen.dart b/lib/presentation/refund_request/refund_request_detail_screen.dart new file mode 100644 index 00000000..a28aa4dd --- /dev/null +++ b/lib/presentation/refund_request/refund_request_detail_screen.dart @@ -0,0 +1,283 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/utils/date_util.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/resp_models/refund_request_list_response_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; + +class RefundRequestDetailScreen extends StatelessWidget { + final RefundInvoiceModel invoice; + + const RefundRequestDetailScreen({super.key, required this.invoice}); + + String _formatDate(String? rawDate) { + if (rawDate == null || rawDate.isEmpty) return ''; + try { + final date = DateUtil.convertStringToDate(rawDate); + return DateFormat('MMM dd, yyyy').format(date); + } catch (_) { + return rawDate; + } + } + + String rawDateForAdvance(String? rawDate) { + if (rawDate == null || rawDate.isEmpty) return ''; + try { + final date = DateTime.parse(rawDate); + return DateFormat('MMM dd, yyyy').format(date); + } catch (_) { + return rawDate; + } + } + + Color getStatusColor(int status) { + Color statusColor = AppColors.textColor; + if (status == 3) { + statusColor = AppColors.statusRejectedColor; + } else if (status == 2) { + statusColor = AppColors.statusCompletedColor; + } else if (status == 1) { + statusColor = AppColors.statusPendingColor; + } + return statusColor; + } + + String getRefundDestinationIcon(String refundDestination) { + String icon = ""; + + if (refundDestination.toLowerCase().contains("wallet")) { + icon = AppAssets.habibLogoOnly; + } else if (refundDestination.toLowerCase().contains("bank")) { + icon = AppAssets.bankIconOnly; + } + + return icon; + } + + Widget _buildInvoiceCard(BuildContext context, RefundInvoiceModel? invoice, {bool isLoading = false}) { + final isInvoiceType = (invoice?.refundTypeId ?? 0) == 1; + final isWalletType = (invoice?.refundTypeId ?? 0) == 2; + final referenceNo = (invoice?.referenceNumber ?? ''); + final lastUpdated = _formatDate(invoice?.lastUpdated); + final invoicePayload = invoice?.invoiceRequestPayload; + final walletPayload = invoice?.walletRequestPayload; + final totalProcedures = (invoicePayload?.proceduresList?.length.toString() ?? ''); + final statusName = (invoice?.requestStatusName ?? ''); + final statusId = (invoice?.requestStatusId ?? 1); + final refundDestination = (invoice?.refundDestination ?? ''); + final refundType = invoice?.refundType ?? ''; + + return AnimatedContainer( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r, hasShadow: false), + child: Padding( + padding: EdgeInsets.all(16.w), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + AppCustomChipWidget( + icon: "", + labelText: statusName, + textColor: getStatusColor(statusId), + backgroundColor: getStatusColor(statusId).withValues(alpha: 0.2), + ), + " $lastUpdated" + .toText12( + color: AppColors.textColorLight, + isBold: false, + ) + .toShimmer2(isShow: isLoading), + ], + ), + SizedBox(height: 8.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + "${LocaleKeys.referenceNo.tr(context: context)} $referenceNo" + .toText16( + color: AppColors.textColor, + isBold: true, + ) + .toShimmer2(isShow: isLoading), + // lastUpdated.toText12(color: AppColors.textColorLight).toShimmer2(isShow: isLoading), + ], + ), + SizedBox(height: 8.h), + Wrap( + spacing: 6.w, + runSpacing: 6.h, + children: [ + if (!isLoading && refundDestination.isNotEmpty) + AppCustomChipWidget(icon: getRefundDestinationIcon(refundDestination), iconHasColor: false, labelText: refundDestination), + if (refundType.isNotEmpty) AppCustomChipWidget(icon: "", labelText: "$refundType ${LocaleKeys.refund.tr()}"), + if (isInvoiceType && invoicePayload != null) ...[ + if (totalProcedures.isNotEmpty) AppCustomChipWidget(icon: "", labelText: "$totalProcedures ${LocaleKeys.procedures.tr()}"), + if (invoicePayload.project != null && invoicePayload.project!.isNotEmpty) + AppCustomChipWidget(icon: '', labelText: invoicePayload.project ?? ''), + if (invoicePayload.clinicName != null && invoicePayload.clinicName!.isNotEmpty) + AppCustomChipWidget(icon: '', labelText: invoicePayload.clinicName ?? ''), + if (invoicePayload.doctorName != null && invoicePayload.doctorName!.isNotEmpty) + AppCustomChipWidget(icon: '', labelText: invoicePayload.doctorName ?? ''), + // AppCustomChipWidget(icon: '', labelText: invoicePayload?.refundTypeName ?? ''), + ] else if (isWalletType && walletPayload != null) ...[ + AppCustomChipWidget(icon: '', labelText: walletPayload.project ?? ''), + // AppCustomChipWidget(icon: '', labelText: invoicePayload?.refundTypeName ?? ''), + ], + ], + ), + SizedBox(height: 16.h), + if (isInvoiceType) ...[ + Utils.getPaymentAmountWithSymbol( + isExpanded: false, + ('${invoicePayload?.totalRefundAmount ?? 0}').toText20(isBold: true, color: AppColors.textColor), + AppColors.textColor, + 14, + isSaudiCurrency: true, + ) + ] else ...[ + Utils.getPaymentAmountWithSymbol( + isExpanded: false, + ('${walletPayload?.totalRefundAmount ?? 0}').toText20(isBold: true, color: AppColors.textColor), + AppColors.textColor, + 14, + isSaudiCurrency: true, + ) + ] + ], + ), + ), + ); + } + + Widget buildListDetails(BuildContext context, RefundInvoiceModel? invoice, {bool isLoading = false}) { + final isInvoiceType = (invoice?.refundTypeId ?? 0) == 1; + final isWalletType = (invoice?.refundTypeId ?? 0) == 2; + final invoicePayload = invoice?.invoiceRequestPayload; + final walletPayload = invoice?.walletRequestPayload; + + bool shouldShowPadding = (isWalletType && walletPayload != null) || (isInvoiceType && invoicePayload != null); + return AnimatedContainer( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: false, + ), + child: Padding( + padding: EdgeInsets.all(shouldShowPadding ? 16.w : 0), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Summary info + if (isInvoiceType && invoicePayload != null) ...[ + // Procedures header + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.procedure.tr(context: context).toText12(color: AppColors.textColor, isBold: true), + LocaleKeys.amountOnly.tr(context: context).toText12(color: AppColors.textColor, isBold: true), + ], + ), + SizedBox(height: 16.h), + Divider(color: AppColors.bottomNAVBorder, height: 1, thickness: 1), + SizedBox(height: 16.h), + if (invoicePayload.proceduresList != null && invoicePayload.proceduresList!.isNotEmpty) + ...invoicePayload.proceduresList!.map((p) => _buildProcedureRow(context, p)), + ], + if (isWalletType && walletPayload != null) ...[ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded(child: LocaleKeys.advanceNumber.tr(context: context).toText12(color: AppColors.textColor, isBold: true)), + SizedBox( + width: 80.w, + child: + LocaleKeys.amountOnly.tr(context: context).toText12(color: AppColors.textColor, isBold: true, textAlignment: TextAlign.end), + ), + ], + ), + SizedBox(height: 16.h), + Divider(color: AppColors.bottomNAVBorder, height: 1, thickness: 1), + SizedBox(height: 16.h), + if (walletPayload.advancesList != null && walletPayload.advancesList!.isNotEmpty) + ...walletPayload.advancesList!.map((a) => _buildAdvanceRow(context, a)), + ], + ], + ), + ), + ); + } + + Widget _buildProcedureRow(BuildContext context, InvoiceRefundProcedure procedure) { + return Padding( + padding: EdgeInsets.symmetric(vertical: 6.h), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + flex: 3, + child: (procedure.procedureName ?? '-').toText12(color: AppColors.textColor), + ), + SizedBox(width: 8.w), + (procedure.patientPaidAmount?.toString() ?? '-').toText12(color: AppColors.textColor, isBold: true), + ], + ), + ); + } + + Widget _buildAdvanceRow(BuildContext context, WalletAdvanceItem advance) { + return Padding( + padding: EdgeInsets.symmetric(vertical: 6.h), + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + (advance.advanceNo ?? '').toText12(color: AppColors.textColor), + if (advance.advanceDate != null && advance.advanceDate!.isNotEmpty) + rawDateForAdvance(advance.advanceDate!).toText10(color: AppColors.greyTextColor), + ], + ), + ), + SizedBox( + width: 80.w, + child: (advance.balanceAmount?.toStringAsFixed(2) ?? '').toText12(color: AppColors.textColor, isBold: true, textAlignment: TextAlign.end), + ), + ], + ), + ); + } + + @override + Widget build(BuildContext context) { + return CollapsingListView( + title: LocaleKeys.refundDetails.tr(context: context), + isLeading: true, + child: SingleChildScrollView( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildInvoiceCard(context, invoice), + SizedBox(height: 16.h), + buildListDetails(context, invoice), + ], + ).paddingSymmetrical(24.w, 0), + ), + ); + } +} diff --git a/lib/presentation/refund_request/widgets/refund_reason_bottom_sheet.dart b/lib/presentation/refund_request/widgets/refund_reason_bottom_sheet.dart new file mode 100644 index 00000000..5fa8e5ad --- /dev/null +++ b/lib/presentation/refund_request/widgets/refund_reason_bottom_sheet.dart @@ -0,0 +1,111 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/radio_list_tile_widget.dart'; + +void showRefundReasonBottomSheet( + BuildContext context, { + required String? selectedReason, + required ValueChanged onDone, +}) { + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.selectRefundReason.tr(context: context), + isDismissible: true, + child: _RefundReasonSheetContent( + selectedReason: selectedReason, + onDone: onDone, + ), + callBackFunc: () {}, + ); +} + +class _RefundReasonSheetContent extends StatefulWidget { + final String? selectedReason; + final ValueChanged onDone; + + const _RefundReasonSheetContent({ + required this.selectedReason, + required this.onDone, + }); + + @override + State<_RefundReasonSheetContent> createState() => _RefundReasonSheetContentState(); +} + +class _RefundReasonSheetContentState extends State<_RefundReasonSheetContent> { + String? _selected; + + static List _reasons(BuildContext context) => [ + LocaleKeys.refundReason1.tr(context: context), + LocaleKeys.refundReason2.tr(context: context), + LocaleKeys.refundReason3.tr(context: context), + LocaleKeys.refundReason4.tr(context: context), + LocaleKeys.refundReason5.tr(context: context), + LocaleKeys.refundReason6.tr(context: context), + LocaleKeys.refundReason7.tr(context: context), + ]; + + @override + void initState() { + super.initState(); + _selected = widget.selectedReason; + } + + @override + Widget build(BuildContext context) { + final reasons = _reasons(context); + + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: false, + ), + child: ListView.separated( + padding: EdgeInsets.zero, + shrinkWrap: true, + physics: const NeverScrollableScrollPhysics(), + itemCount: reasons.length, + separatorBuilder: (_, __) => Divider( + color: AppColors.bottomNAVBorder, + height: 1, + thickness: 1, + ).paddingSymmetrical(16.w, 0.w), + itemBuilder: (context, index) { + final reason = reasons[index]; + return RadioListTileWidget( + value: reason, + groupValue: _selected, + title: reason, + onChanged: (value) { + if (value != null) setState(() => _selected = value); + }, + ); + }, + ), + ), + SizedBox(height: 16.h), + CustomButton( + text: LocaleKeys.done.tr(context: context), + isDisabled: _selected == null, + onPressed: () { + if (_selected != null) { + widget.onDone(_selected!); + Navigator.of(context).pop(); + } + }, + ).paddingSymmetrical(0, 0), + SizedBox(height: 8.h), + ], + ); + } +} diff --git a/lib/presentation/servicesPriceList/services_price_list_page.dart b/lib/presentation/service_price/services_price_list_page.dart similarity index 97% rename from lib/presentation/servicesPriceList/services_price_list_page.dart rename to lib/presentation/service_price/services_price_list_page.dart index 0ee81ae3..a2e4fbb6 100644 --- a/lib/presentation/servicesPriceList/services_price_list_page.dart +++ b/lib/presentation/service_price/services_price_list_page.dart @@ -57,7 +57,7 @@ class _ServicesPriceListPageState extends State { ), child: Padding( padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h), - child: LocaleKeys.servicePriceListDesc.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), + child: LocaleKeys.servicePriceListDesc.tr(context: context).toText12(isBold: true, color: AppColors.textColorLight), ), ), SizedBox(height: 16.h), @@ -119,7 +119,7 @@ class _ServicesPriceListPageState extends State { children: [ Expanded( child: (appState.isArabic() ? service.nameAR ?? service.nameEN ?? '' : service.nameEN ?? service.nameAR ?? '').toText16( - weight: FontWeight.w500, + weight: FontWeight.w600, color: AppColors.textColor, ), ), @@ -146,7 +146,7 @@ class _ServicesPriceListPageState extends State { ), child: Padding( padding: EdgeInsets.symmetric(horizontal: 16.w, vertical: 16.h), - child: LocaleKeys.servicePriceListRights.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), + child: LocaleKeys.servicePriceListRights.tr(context: context).toText12(isBold: true, color: AppColors.textColorLight), ), ), ], diff --git a/lib/presentation/smartwatches/activity_detail.dart b/lib/presentation/smartwatches/activity_detail.dart index 78527140..7911baf6 100644 --- a/lib/presentation/smartwatches/activity_detail.dart +++ b/lib/presentation/smartwatches/activity_detail.dart @@ -14,7 +14,7 @@ import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; import 'package:hmg_patient_app_new/widgets/graph/CustomBarGraph.dart'; import 'package:intl/intl.dart' show DateFormat; import 'package:provider/provider.dart'; -import 'package:hmg_patient_app_new/features/smartwatch_health_data/HealthDataTransformation.dart' as durations; +import 'package:hmg_patient_app_new/features/smartwatch_health_data/health_data_transformations.dart' as durations; import 'package:dartz/dartz.dart' show Tuple2; import '../../core/utils/date_util.dart'; @@ -113,8 +113,8 @@ class _ActivityDetailsState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - widget.sectionName.capitalizeFirstofEach.toText32(weight: FontWeight.w600, color: AppColors.textColor), - "Average".toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor) + widget.sectionName.capitalizeFirstofEach.toText32(isBold: true, color: AppColors.textColor), + "Average".toText12(isBold: true, color: AppColors.greyTextColor) ], ), Selector>( @@ -127,10 +127,10 @@ class _ActivityDetailsState extends State { textBaseline: TextBaseline.alphabetic, spacing: 4.w, children: [ - (averageAsDouble?.toStringAsFixed(2) ?? averageAsString ?? "N/A").toText24(color: AppColors.textGreenColor, fontWeight: FontWeight.w600), + (averageAsDouble?.toStringAsFixed(2) ?? averageAsString ?? "N/A").toText24(color: AppColors.textGreenColor, isBold: true), Visibility( visible: averageAsDouble != null || averageAsString != null, - child: widget.uom.toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500) + child: widget.uom.toText12(color: AppColors.greyTextColor, isBold: true) ) ], ); @@ -240,7 +240,8 @@ class _ActivityDetailsState extends State { return Selector>?>( selector: (_, model) => model.selectedData, builder: (_, data, __) { - if (context.read().selectedData.values.toList().first?.isEmpty == true) return SizedBox(); + // if (context.read().selectedData.values.toList().first.isEmpty == true) return SizedBox(); + if (context.read().selectedData.values.toList().isEmpty == true) return SizedBox(); return CustomBarChart( dataPoints: context.read().selectedData.values.toList().first, @@ -279,7 +280,7 @@ class _ActivityDetailsState extends State { TextStyle( color: Colors.black, fontSize: 12.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), ); } diff --git a/lib/presentation/smartwatches/huawei_health_example.dart b/lib/presentation/smartwatches/huawei_health_example.dart deleted file mode 100644 index bf569a6a..00000000 --- a/lib/presentation/smartwatches/huawei_health_example.dart +++ /dev/null @@ -1,1563 +0,0 @@ -// import 'package:flutter/material.dart'; -// import 'package:flutter/services.dart'; -// import 'package:huawei_health/huawei_health.dart'; -// -// const String packageName = 'com.ejada.hmg'; -// -// class HuaweiHealthExample extends StatefulWidget { -// const HuaweiHealthExample({Key? key}) : super(key: key); -// -// @override -// State createState() => _HuaweiHealthExampleState(); -// } -// -// class _HuaweiHealthExampleState extends State { -// /// Styles -// static const TextStyle cardTitleTextStyle = TextStyle( -// fontWeight: FontWeight.w500, -// fontSize: 18, -// ); -// static const EdgeInsets componentPadding = EdgeInsets.all(8.0); -// -// /// Text Controllers for showing the logs of different modules -// final TextEditingController _activityTextController = TextEditingController(); -// final TextEditingController _dataTextController = TextEditingController(); -// final TextEditingController _settingTextController = TextEditingController(); -// final TextEditingController _autoRecorderTextController = TextEditingController(); -// final TextEditingController _consentTextController = TextEditingController(); -// final TextEditingController _healthTextController = TextEditingController(); -// -// /// Data controller reference to initialize at startup. -// late DataController _dataController; -// -// String? accessToken = ''; -// -// @override -// void initState() { -// super.initState(); -// if (!mounted) return; -// // Initialize Event Callbacks -// AutoRecorderController.autoRecorderStream.listen(_onAutoRecorderEvent); -// // Initialize a DataController -// initDataController(); -// } -// -// /// Prints the specified text on both the console and the specified text controller. -// void log( -// String methodName, -// TextEditingController controller, -// LogOptions logOption, { -// String? result = '', -// String? error = '', -// }) { -// String log = ''; -// switch (logOption) { -// case LogOptions.call: -// log = '$methodName called'; -// break; -// case LogOptions.success: -// log = '$methodName [Success: $result] '; -// break; -// case LogOptions.error: -// log = '$methodName [Error: $error] [Error Description: ${HiHealthStatusCodes.getStatusCodeMessage(error ?? '')}]'; -// break; -// case LogOptions.custom: -// log = methodName; // Custom text -// break; -// } -// debugPrint(log); -// setState(() { -// controller.text = '$log\n${controller.text}'; -// }); -// } -// -// /// Authorizes Huawei Health Kit for the user, with defined scopes. -// void signIn() async { -// // List of scopes to ask for authorization. -// // -// // Note: These scopes should also be authorized on the Huawei Developer Console. -// final List scopes = [ -// Scope.HEALTHKIT_ACTIVITY_READ, -// Scope.HEALTHKIT_ACTIVITY_WRITE, -// Scope.HEALTHKIT_BLOODGLUCOSE_READ, -// Scope.HEALTHKIT_BLOODGLUCOSE_WRITE, -// Scope.HEALTHKIT_CALORIES_READ, -// Scope.HEALTHKIT_CALORIES_WRITE, -// Scope.HEALTHKIT_DISTANCE_READ, -// Scope.HEALTHKIT_DISTANCE_WRITE, -// Scope.HEALTHKIT_HEARTRATE_READ, -// Scope.HEALTHKIT_HEARTRATE_WRITE, -// Scope.HEALTHKIT_HEIGHTWEIGHT_READ, -// Scope.HEALTHKIT_HEIGHTWEIGHT_WRITE, -// Scope.HEALTHKIT_LOCATION_READ, -// Scope.HEALTHKIT_LOCATION_WRITE, -// Scope.HEALTHKIT_PULMONARY_READ, -// Scope.HEALTHKIT_PULMONARY_WRITE, -// Scope.HEALTHKIT_SLEEP_READ, -// Scope.HEALTHKIT_SLEEP_WRITE, -// Scope.HEALTHKIT_SPEED_READ, -// Scope.HEALTHKIT_SPEED_WRITE, -// Scope.HEALTHKIT_STEP_READ, -// Scope.HEALTHKIT_STEP_WRITE, -// Scope.HEALTHKIT_STRENGTH_READ, -// Scope.HEALTHKIT_STRENGTH_WRITE, -// Scope.HEALTHKIT_BODYFAT_READ, -// Scope.HEALTHKIT_BODYFAT_WRITE, -// Scope.HEALTHKIT_NUTRITION_READ, -// Scope.HEALTHKIT_NUTRITION_WRITE, -// Scope.HEALTHKIT_BLOODPRESSURE_READ, -// Scope.HEALTHKIT_BLOODPRESSURE_WRITE, -// Scope.HEALTHKIT_BODYTEMPERATURE_READ, -// Scope.HEALTHKIT_BODYTEMPERATURE_WRITE, -// Scope.HEALTHKIT_OXYGENSTATURATION_READ, -// Scope.HEALTHKIT_OXYGENSTATURATION_WRITE, -// Scope.HEALTHKIT_REPRODUCTIVE_READ, -// Scope.HEALTHKIT_REPRODUCTIVE_WRITE, -// Scope.HEALTHKIT_ACTIVITY_RECORD_READ, -// Scope.HEALTHKIT_ACTIVITY_RECORD_WRITE, -// Scope.HEALTHKIT_HEARTRATE_REALTIME, -// Scope.HEALTHKIT_STEP_REALTIME, -// Scope.HEALTHKIT_HEARTHEALTH_WRITE, -// Scope.HEALTHKIT_HEARTHEALTH_READ, -// Scope.HEALTHKIT_STRESS_WRITE, -// Scope.HEALTHKIT_STRESS_READ, -// Scope.HEALTHKIT_OXYGEN_SATURATION_WRITE, -// Scope.HEALTHKIT_OXYGEN_SATURATION_READ, -// Scope.HEALTHKIT_HISTORYDATA_OPEN_WEEK, -// Scope.HEALTHKIT_HISTORYDATA_OPEN_MONTH, -// Scope.HEALTHKIT_HISTORYDATA_OPEN_YEAR, -// ]; -// try { -// AuthHuaweiId? result = await HealthAuth.signIn(scopes); -// debugPrint( -// 'Granted Scopes for User(${result?.displayName}): ${result?.grantedScopes?.toString()}', -// ); -// showSnackBar( -// 'Authorization Success.', -// color: Colors.green, -// ); -// setState(() => accessToken = result?.accessToken); -// } on PlatformException catch (e) { -// debugPrint('Error on authorization, Error:${e.toString()}'); -// showSnackBar( -// 'Error on authorization, Error:${e.toString()}, Error Description: ' -// '${HiHealthStatusCodes.getStatusCodeMessage(e.message ?? '')}', -// ); -// } -// } -// -// // ActivityRecordsController -// // -// /// Adds an ActivityRecord with an ActivitySummary, time range is 2 hours from now. -// Future addActivityRecord() async { -// log( -// 'addActivityRecord', -// _activityTextController, -// LogOptions.call, -// ); -// DateTime startTime = DateTime.now().subtract(const Duration(hours: 2)); -// DateTime endTime = DateTime.now(); -// // Build an ActivityRecord object -// ActivityRecord activityRecord = ActivityRecord( -// startTime: startTime, -// endTime: endTime, -// id: 'ActivityRecordId0', -// name: 'AddActivityRecord', -// activityTypeId: HiHealthActivities.running, -// description: 'This is a test for ActivityRecord', -// activitySummary: ActivitySummary( -// paceSummary: PaceSummary( -// avgPace: 247.27626, -// bestPace: 212.0, -// britishPaceMap: { -// '102802480': 365.0, -// }, -// britishPartTimeMap: { -// '1.0': 263.0, -// }, -// partTimeMap: { -// '1.0': 456.0, -// }, -// paceMap: { -// '1.0': 263.0, -// }, -// ), -// dataSummary: [ -// SamplePoint( -// dataType: DataType.DT_CONTINUOUS_DISTANCE_TOTAL, -// startTime: startTime.add(Duration(seconds: 1)), -// endTime: endTime.subtract(Duration(seconds: 1)), -// fieldValueOptions: FieldFloat(Field.FIELD_DISTANCE, 400), -// timeUnit: TimeUnit.MILLISECONDS, -// ), -// SamplePoint( -// dataType: DataType.POLYMERIZE_CONTINUOUS_SPEED_STATISTICS, -// fieldValueOptions: FieldFloat(Field.FIELD_AVG, 60.0), -// startTime: startTime.add(Duration(seconds: 1)), -// endTime: endTime.subtract(Duration(seconds: 1)), -// timeUnit: TimeUnit.MILLISECONDS, -// ) -// ..setFieldValue(Field.FIELD_MIN, 40.0) -// ..setFieldValue(Field.FIELD_MAX, 80.0), -// ]), -// ); -// -// // Build the dataCollector object -// DataCollector dataCollector = DataCollector( -// dataGenerateType: DataGenerateType.DATA_TYPE_RAW, -// dataType: DataType.DT_INSTANTANEOUS_STEPS_RATE, -// name: 'AddActivityRecord1923', -// ); -// -// // You can use sampleSets to add more sample points to the sampling dataset. -// // Build a list of sampling point objects and add it to the sampling dataSet -// List samplePoints = [ -// SamplePoint( -// dataCollector: dataCollector, -// startTime: startTime.add(Duration(seconds: 1)), -// endTime: endTime.subtract(Duration(seconds: 1)), -// fieldValueOptions: FieldFloat(Field.FIELD_STEP_RATE, 10.0), -// timeUnit: TimeUnit.MILLISECONDS, -// ), -// ]; -// SampleSet sampleSet = SampleSet( -// dataCollector, -// samplePoints, -// ); -// -// try { -// await ActivityRecordsController.addActivityRecord( -// ActivityRecordInsertOptions( -// activityRecord: activityRecord, -// sampleSets: [ -// sampleSet, -// ], -// ), -// ); -// log( -// 'addActivityRecord', -// _activityTextController, -// LogOptions.success, -// ); -// } on PlatformException catch (e) { -// log( -// 'addActivityRecord', -// _activityTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Obtains saved ActivityRecords between yesterday and now, -// /// with the DT_CONTINUOUS_STEPS_DELTA data type -// void getActivityRecord() async { -// log( -// 'getActivityRecord', -// _activityTextController, -// LogOptions.call, -// ); -// // Create start time that will be used to read activity record. -// DateTime startTime = DateTime.now().subtract(const Duration(days: 1)); -// -// // Create end time that will be used to read activity record. -// DateTime endTime = DateTime.now().add(const Duration(hours: 3)); -// -// ActivityRecordReadOptions activityRecordReadOptions = ActivityRecordReadOptions( -// activityRecordId: "ActivityRecordId0", -// activityRecordName: null, -// startTime: startTime, -// endTime: endTime, -// timeUnit: TimeUnit.MILLISECONDS, -// dataType: DataType.DT_INSTANTANEOUS_STEPS_RATE, -// ); -// try { -// List result = await ActivityRecordsController.getActivityRecord( -// activityRecordReadOptions, -// ); -// log( -// 'getActivityRecord', -// _activityTextController, -// LogOptions.success, -// result: '[IDs: ${result.map((ActivityRecord e) => e.id).toList()}]', -// ); -// } on PlatformException catch (e) { -// log( -// 'getActivityRecord', -// _activityTextController, -// LogOptions.error, -// result: e.message, -// ); -// } -// } -// -// /// Starts the ActivityRecord with the id:`ActivityRecordRun1` -// void beginActivityRecord() async { -// try { -// log( -// 'beginActivityRecord', -// _activityTextController, -// LogOptions.call, -// ); -// // Build an ActivityRecord object -// ActivityRecord activityRecord = ActivityRecord( -// id: 'ActivityRecordRun0', -// name: 'BeginActivityRecord', -// description: 'This is ActivityRecord begin test!', -// activityTypeId: HiHealthActivities.running, -// startTime: DateTime.now().subtract(const Duration(hours: 1)), -// ); -// await ActivityRecordsController.beginActivityRecord( -// activityRecord, -// ); -// log( -// 'beginActivityRecord', -// _activityTextController, -// LogOptions.success, -// ); -// } on PlatformException catch (e) { -// log( -// 'beginActivityRecord', -// _activityTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Stops the ActivityRecord with the id:`ActivityRecordRun1` -// void endActivityRecord() async { -// try { -// log( -// 'endActivityRecord', -// _activityTextController, -// LogOptions.call, -// ); -// final List result = await ActivityRecordsController.endActivityRecord( -// 'ActivityRecordRun0', -// ); -// // Return the list of activity records that have stopped -// log( -// 'endActivityRecord', -// _activityTextController, -// LogOptions.success, -// result: result.toString(), -// ); -// } on PlatformException catch (e) { -// log( -// 'endActivityRecord', -// _activityTextController, -// LogOptions.error, -// result: e.message, -// ); -// } -// } -// -// /// Ends all the ongoing activity records. -// /// -// /// Result list will be null if there is no ongoing activity record. -// void endAllActivityRecords() async { -// try { -// log( -// 'endAllActivityRecords', -// _activityTextController, -// LogOptions.call, -// ); -// // Return the list of activity records that have stopped -// List result = await ActivityRecordsController.endAllActivityRecords(); -// log( -// 'endAllActivityRecords', -// _activityTextController, -// LogOptions.success, -// result: '[IDs: ${result.map((ActivityRecord e) => e.id).toList()}]', -// ); -// } on PlatformException catch (e) { -// log( -// 'endAllActivityRecords', -// _activityTextController, -// LogOptions.error, -// result: e.message, -// ); -// } -// } -// -// // -// // -// // End of ActivityRecordsController Methods -// -// // DataController Methods -// // -// // -// /// Initializes a DataController instance with a list of HiHealtOptions. -// void initDataController() async { -// if (!mounted) return; -// log( -// 'init', -// _dataTextController, -// LogOptions.call, -// ); -// try { -// _dataController = await DataController.init(); -// log( -// 'init', -// _dataTextController, -// LogOptions.success, -// ); -// } on PlatformException catch (e) { -// log( -// 'init', -// _dataTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Clears all the data inserted by the app. -// void clearAll() async { -// log('clearAll', _dataTextController, LogOptions.call); -// try { -// await _dataController.clearAll(); -// log('clearAll', _dataTextController, LogOptions.success); -// } on PlatformException catch (e) { -// log('clearAll', _dataTextController, LogOptions.error, error: e.message); -// } -// } -// -// /// Deletes DT_CONTINUOUS_STEPS_DELTA type data by the specified time range. -// void delete() async { -// log( -// 'delete', -// _dataTextController, -// LogOptions.call, -// ); -// // Build the dataCollector object -// DataCollector dataCollector = DataCollector( -// dataType: DataType.DT_CONTINUOUS_STEPS_DELTA, -// dataGenerateType: DataGenerateType.DATA_TYPE_RAW, -// dataStreamName: 'STEPS_DELTA', -// ); -// -// // Build the time range for the deletion: start time and end time. -// DeleteOptions deleteOptions = DeleteOptions( -// dataCollectors: [dataCollector], -// startTime: DateTime.parse('2020-10-10 08:00:00'), -// endTime: DateTime.parse('2020-10-10 12:30:00'), -// ); -// -// // Call the api with the constructed DeleteOptions instance. -// try { -// _dataController.delete(deleteOptions); -// log( -// 'delete', -// _dataTextController, -// LogOptions.success, -// ); -// } on PlatformException catch (e) { -// log( -// 'delete', -// _dataTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Inserts a sampling set with the DT_CONTINUOUS_STEPS_DELTA data type at the -// /// specified start and end dates. -// void insert() async { -// log( -// 'insert', -// _dataTextController, -// LogOptions.call, -// ); -// // Build the dataCollector object -// DataCollector dataCollector = DataCollector( -// dataType: DataType.DT_CONTINUOUS_STEPS_DELTA, -// dataStreamName: 'STEPS_DELTA', -// dataGenerateType: DataGenerateType.DATA_TYPE_RAW, -// ); -// // You can use sampleSets to add more sampling points to the sampling dataset. -// SampleSet sampleSet = SampleSet( -// dataCollector, -// [ -// SamplePoint( -// dataCollector: dataCollector, -// startTime: DateTime.parse('2020-10-10 12:00:00'), -// endTime: DateTime.parse('2020-10-10 12:12:00'), -// fieldValueOptions: FieldInt( -// Field.FIELD_STEPS_DELTA, -// 100, -// ), -// ), -// ], -// ); -// // Call the api with the constructed sample set. -// try { -// _dataController.insert(sampleSet); -// log( -// 'insert', -// _dataTextController, -// LogOptions.success, -// ); -// } on PlatformException catch (e) { -// log( -// 'insert', -// _dataTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// // Reads the user data between the specified start and end dates. -// void read() async { -// log( -// 'read', -// _dataTextController, -// LogOptions.call, -// ); -// // Build the dataCollector object -// DataCollector dataCollector = DataCollector( -// dataType: DataType.DT_CONTINUOUS_STEPS_DELTA, -// dataGenerateType: DataGenerateType.DATA_TYPE_RAW, -// dataStreamName: 'STEPS_DELTA', -// ); -// -// // Build the time range for the query: start time and end time. -// ReadOptions readOptions = ReadOptions( -// dataCollectors: [ -// dataCollector, -// ], -// startTime: DateTime.parse('2020-10-10 12:00:00'), -// endTime: DateTime.parse('2020-10-10 12:12:00'), -// )..groupByTime(10000); -// -// // Call the api with the constructed ReadOptions instance. -// try { -// ReadReply? readReply = await _dataController.read(readOptions); -// log( -// 'read', -// _dataTextController, -// LogOptions.success, -// result: readReply.toString(), -// ); -// } on PlatformException catch (e) { -// log( -// 'read', -// _dataTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Reads the daily summation between the dates: `2020.10.02` to `2020.12.15` for multiple data types. -// /// Note that the time format is different for this method. -// void readDailySummationList() async { -// log( -// 'readDailySummationList', -// _dataTextController, -// LogOptions.call, -// ); -// try { -// List? sampleSets = await _dataController.readDailySummationList( -// [DataType.DT_CONTINUOUS_STEPS_DELTA, DataType.DT_CONTINUOUS_CALORIES_BURNT], -// 20201002, -// 20201003, -// ); -// log( -// 'readDailySummationList', -// _dataTextController, -// LogOptions.success, -// result: sampleSets.toString(), -// ); -// } on PlatformException catch (e) { -// log( -// 'readDailySummationList', -// _dataTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Reads the steps summation for today. -// void readTodaySummation() async { -// log( -// 'readTodaySummation', -// _dataTextController, -// LogOptions.call, -// ); -// try { -// SampleSet? sampleSet = await _dataController.readTodaySummation( -// DataType.DT_CONTINUOUS_STEPS_DELTA, -// ); -// log( -// 'readTodaySummation', -// _dataTextController, -// LogOptions.success, -// result: sampleSet.toString(), -// ); -// } on PlatformException catch (e) { -// log( -// 'readTodaySummation', -// _dataTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Updates DT_CONTINUOUS_STEPS_DELTA for the specified dates. -// void update() async { -// log( -// 'update', -// _dataTextController, -// LogOptions.call, -// ); -// -// // Build the dataCollector object -// DataCollector dataCollector = DataCollector( -// dataType: DataType.DT_CONTINUOUS_STEPS_DELTA, -// dataStreamName: 'STEPS_DELTA', -// dataGenerateType: DataGenerateType.DATA_TYPE_RAW, -// ); -// -// // You can use sampleSets to add more sampling points to the sampling dataset. -// SampleSet sampleSet = SampleSet( -// dataCollector, -// [ -// SamplePoint( -// dataCollector: dataCollector, -// startTime: DateTime.parse('2020-12-12 09:00:00'), -// endTime: DateTime.parse('2020-12-12 09:05:00'), -// fieldValueOptions: FieldInt( -// Field.FIELD_STEPS_DELTA, -// 120, -// ), -// ), -// ], -// ); -// -// // Build a parameter object for the update. -// // Note: (1) The start time of the modified object updateOptions can not be greater than the minimum -// // value of the start time of all sample data points in the modified data sample set -// // (2) The end time of the modified object updateOptions can not be less than the maximum value of the -// // end time of all sample data points in the modified data sample set -// UpdateOptions updateOptions = UpdateOptions( -// startTime: DateTime.parse('2020-12-12 08:00:00'), -// endTime: DateTime.parse('2020-12-12 09:25:00'), -// sampleSet: sampleSet, -// ); -// try { -// await _dataController.update(updateOptions); -// log( -// 'update', -// _dataTextController, -// LogOptions.success, -// result: sampleSet.toString(), -// ); -// } on PlatformException catch (e) { -// log( -// 'update', -// _dataTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// // -// // -// // End of DataController Methods -// -// // SettingController Methods -// // -// /// Adds a custom DataType with the FIELD_ALTITUDE. -// void addDataType() async { -// log( -// 'addDataType', -// _settingTextController, -// LogOptions.call, -// ); -// try { -// // The name of the created data type must be prefixed with the package name -// // of the app. Otherwise, the creation fails. If the same data type is tried to -// // be added again an exception will be thrown. -// DataTypeAddOptions options = DataTypeAddOptions( -// '$packageName.myCustomDataType', -// [ -// const Field.newIntField('myIntField'), -// Field.FIELD_ALTITUDE, -// ], -// ); -// final DataType dataTypeResult = await SettingController.addDataType( -// options, -// ); -// log( -// 'addDataType', -// _settingTextController, -// LogOptions.success, -// result: dataTypeResult.toString(), -// ); -// } on PlatformException catch (e) { -// log( -// 'addDataType', -// _settingTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Reads the inserted data type on the [addDataType] method. -// void readDataType() async { -// log( -// 'readDataType', -// _settingTextController, -// LogOptions.call, -// ); -// try { -// final DataType dataTypeResult = await SettingController.readDataType( -// '$packageName.myCustomDataType', -// ); -// log( -// 'readDataType', -// _settingTextController, -// LogOptions.success, -// result: dataTypeResult.toString(), -// ); -// } on PlatformException catch (e) { -// log( -// 'readDataType', -// _settingTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Disables the Health Kit function, cancels user authorization, and cancels -// /// all data records. (The task takes effect in 24 hours.) -// void disableHiHealth() async { -// log( -// 'disableHiHealth', -// _settingTextController, -// LogOptions.call, -// ); -// try { -// await SettingController.disableHiHealth(); -// log( -// 'disableHiHealth', -// _settingTextController, -// LogOptions.success, -// ); -// } on PlatformException catch (e) { -// log( -// 'disableHiHealth', -// _settingTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Checks the user privacy authorization to Health Kit. Redirects the user to -// /// the Authorization screen if the permissions are not given. -// void checkHealthAppAuthorization() async { -// log( -// 'checkHealthAppAuthorization', -// _settingTextController, -// LogOptions.call, -// ); -// try { -// await SettingController.checkHealthAppAuthorization(); -// log( -// 'checkHealthAppAuthorization', -// _settingTextController, -// LogOptions.success, -// ); -// } on PlatformException catch (e) { -// log( -// 'checkHealthAppAuthorization', -// _settingTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Checks the user privacy authorization to Health Kit. If authorized `true` -// /// value would be returned. -// void getHealthAppAuthorization() async { -// log( -// 'getHealthAppAuthorization', -// _settingTextController, -// LogOptions.call, -// ); -// try { -// final bool result = await SettingController.getHealthAppAuthorization(); -// log( -// 'getHealthAppAuthorization', -// _settingTextController, -// LogOptions.success, -// result: result.toString(), -// ); -// } on PlatformException catch (e) { -// log( -// 'getHealthAppAuthorization', -// _settingTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// void requestAuth() async { -// final HealthKitAuthResult res = await SettingController.requestAuthorizationIntent( -// [ -// Scope.HEALTHKIT_STEP_READ, -// Scope.HEALTHKIT_STEP_WRITE, -// Scope.HEALTHKIT_HEIGHTWEIGHT_READ, -// Scope.HEALTHKIT_HEIGHTWEIGHT_WRITE, -// Scope.HEALTHKIT_HEARTRATE_READ, -// Scope.HEALTHKIT_HEARTRATE_WRITE, -// Scope.HEALTHKIT_ACTIVITY_RECORD_READ, -// Scope.HEALTHKIT_ACTIVITY_RECORD_WRITE, -// Scope.HEALTHKIT_HEARTHEALTH_READ, -// Scope.HEALTHKIT_HEARTHEALTH_WRITE, -// ], -// true, -// ); -// debugPrint(res.authAccount?.accessToken); -// } -// -// // -// // -// // End of SettingController Methods -// -// // AutoRecorderController Methods -// // -// // -// // Callback function for AutoRecorderStream event. -// void _onAutoRecorderEvent(SamplePoint? res) { -// log( -// '[AutoRecorderEvent] obtained, SamplePoint Field Value is ${res?.fieldValues?.toString()}', -// _autoRecorderTextController, -// LogOptions.custom, -// ); -// } -// -// /// Starts an Android Foreground Service to count the steps of the user. -// /// The steps will be emitted to the AutoRecorderStream. -// void startRecord() async { -// log( -// 'startRecord', -// _autoRecorderTextController, -// LogOptions.call, -// ); -// try { -// await AutoRecorderController.startRecord( -// DataType.DT_CONTINUOUS_STEPS_TOTAL, -// NotificationProperties( -// title: 'HMS Flutter Health Demo', -// text: 'Counting steps', -// subText: 'this is a subtext', -// ticker: 'this is a ticker', -// showChronometer: true, -// ), -// ); -// log( -// 'startRecord', -// _autoRecorderTextController, -// LogOptions.success, -// ); -// } on PlatformException catch (e) { -// log( -// 'startRecord', -// _autoRecorderTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Ends the Foreground service and stops the step count events. -// void stopRecord() async { -// log( -// 'endRecord', -// _autoRecorderTextController, -// LogOptions.call, -// ); -// try { -// await AutoRecorderController.stopRecord( -// DataType.DT_CONTINUOUS_STEPS_TOTAL, -// ); -// log( -// 'endRecord', -// _autoRecorderTextController, -// LogOptions.success, -// ); -// } on PlatformException catch (e) { -// log( -// 'endRecord', -// _autoRecorderTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// // -// // -// // End of AutoRecorderController Methods -// -// // ConsentController Methods -// // -// /// Obtains the application id from the agconnect-services.json file. -// void getAppId() async { -// log( -// 'getAppId', -// _consentTextController, -// LogOptions.call, -// ); -// try { -// final String appId = await ConsentsController.getAppId(); -// log( -// 'getAppId', -// _consentTextController, -// LogOptions.success, -// result: appId, -// ); -// } on PlatformException catch (e) { -// log( -// 'getAppId', -// _consentTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Gets the granted permission scopes for the app. -// void getScopes() async { -// log( -// 'getScopes', -// _consentTextController, -// LogOptions.call, -// ); -// try { -// final String appId = await ConsentsController.getAppId(); -// final ScopeLangItem scopeLangItem = await ConsentsController.getScopes( -// 'en-gb', -// appId, -// ); -// log( -// 'getScopes', -// _consentTextController, -// LogOptions.success, -// result: scopeLangItem.toString(), -// ); -// } on PlatformException catch (e) { -// log( -// 'getScopes', -// _consentTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Revokes all the permissions that authorized for this app. -// void revoke() async { -// log( -// 'revoke', -// _consentTextController, -// LogOptions.call, -// ); -// try { -// final String appId = await ConsentsController.getAppId(); -// await ConsentsController.revoke(appId); -// log( -// 'revoke', -// _consentTextController, -// LogOptions.success, -// ); -// } on PlatformException catch (e) { -// log( -// 'revoke', -// _consentTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// /// Revokes the distance read/write permissions for the app. -// void revokeWithScopes() async { -// log( -// 'revokeWithScopes', -// _consentTextController, -// LogOptions.call, -// ); -// try { -// // Obtain the application id. -// final String appId = await ConsentsController.getAppId(); -// // Call the revokeWithScopes method with desired scopes. -// await ConsentsController.revokeWithScopes( -// appId, -// [ -// Scope.HEALTHKIT_DISTANCE_WRITE, -// Scope.HEALTHKIT_DISTANCE_READ, -// ], -// ); -// log( -// 'revokeWithScopes', -// _consentTextController, -// LogOptions.success, -// ); -// } on PlatformException catch (e) { -// log( -// 'revokeWithScopes', -// _consentTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// // -// // -// // End of ConsentController Methods -// -// // HealthController Methods -// // -// void addHealthRecord() async { -// log( -// 'addHealthRecord', -// _healthTextController, -// LogOptions.call, -// ); -// try { -// final DateTime startTime = DateTime(2023, 5, 11); -// final DateTime endTime = DateTime(2023, 5, 13); -// -// DataCollector contDataCollector = DataCollector( -// dataStreamName: 'contDataCollector', -// packageName: packageName, -// dataType: DataType.POLYMERIZE_CONTINUOUS_HEART_RATE_STATISTICS, -// dataGenerateType: DataGenerateType.DATA_TYPE_RAW, -// ); -// -// DataCollector instDataCollector = DataCollector( -// dataStreamName: 'instDataCollector', -// packageName: packageName, -// dataType: DataType.DT_INSTANTANEOUS_HEART_RATE, -// dataGenerateType: DataGenerateType.DATA_TYPE_RAW, -// ); -// -// List subDataDetails = [ -// SampleSet(instDataCollector, [ -// SamplePoint( -// dataCollector: instDataCollector, -// ) -// ..setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS) -// ..setFieldValue(Field.FIELD_BPM, 88.0) -// ]) -// ]; -// -// List subDataSummary = [ -// SamplePoint( -// dataCollector: contDataCollector, -// ) -// ..setTimeInterval(startTime, endTime, TimeUnit.MILLISECONDS) -// ..setFieldValue(Field.FIELD_AVG, 90.0) -// ..setFieldValue(Field.FIELD_MAX, 100.0) -// ..setFieldValue(Field.FIELD_MIN, 80.0) -// ..setFieldValue(Field.LAST, 85.0) -// ]; -// -// final HealthRecord healthRecord = HealthRecord( -// startTime: startTime, -// endTime: endTime, -// metadata: 'Data', -// dataCollector: DataCollector( -// dataStreamName: 'such as step count', -// packageName: packageName, -// dataType: HealthDataTypes.DT_HEALTH_RECORD_BRADYCARDIA, -// dataGenerateType: DataGenerateType.DATA_TYPE_RAW, -// ), -// ) -// ..setSubDataSummary(subDataSummary) -// ..setSubDataDetails(subDataDetails) -// ..setFieldValue(HealthFields.FIELD_THRESHOLD, 42.0) -// ..setFieldValue(HealthFields.FIELD_MAX_HEART_RATE, 48.0) -// ..setFieldValue(HealthFields.FIELD_MIN_HEART_RATE, 42.0) -// ..setFieldValue(HealthFields.FIELD_AVG_HEART_RATE, 45.0); -// -// final String? result = await HealthRecordController.addHealthRecord( -// HealthRecordInsertOptions( -// healthRecord: healthRecord, -// ), -// ); -// log( -// 'addHealthRecord', -// _healthTextController, -// LogOptions.success, -// result: result.toString(), -// ); -// } on PlatformException catch (e) { -// log( -// 'addHealthRecord', -// _healthTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// void getHealthRecord() async { -// log( -// 'getHealthRecord', -// _healthTextController, -// LogOptions.call, -// ); -// try { -// final DateTime startTime = DateTime(2023, 5, 11); -// final DateTime endTime = DateTime(2023, 5, 13); -// -// HealthRecordReply result = await HealthRecordController.getHealthRecord( -// HealthRecordReadOptions( -// packageName: packageName, -// ) -// ..setSubDataTypeList( -// [ -// DataType.DT_INSTANTANEOUS_HEART_RATE, -// ], -// ) -// ..setTimeInterval( -// startTime, -// endTime, -// TimeUnit.MILLISECONDS, -// ) -// ..readByDataType( -// HealthDataTypes.DT_HEALTH_RECORD_BRADYCARDIA, -// ) -// ..readHealthRecordsFromAllApps(), -// ); -// log( -// 'getHealthRecord', -// _healthTextController, -// LogOptions.success, -// result: result.healthRecords[0].toJson(), -// ); -// } on PlatformException catch (e) { -// log( -// 'getHealthRecord', -// _healthTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// void updateHealthRecord() async { -// log( -// 'updateHealthRecord', -// _healthTextController, -// LogOptions.call, -// ); -// try { -// final DateTime startTime = DateTime(2022, 10, 11); -// final DateTime endTime = DateTime(2022, 10, 12); -// final HealthRecord healthRecord = HealthRecord( -// startTime: startTime, -// endTime: endTime, -// metadata: 'Data', -// dataCollector: DataCollector( -// dataStreamName: 'such as step count', -// packageName: packageName, -// dataType: HealthDataTypes.DT_HEALTH_RECORD_BRADYCARDIA, -// dataGenerateType: DataGenerateType.DATA_TYPE_RAW, -// ), -// ) -// ..setFieldValue(HealthFields.FIELD_THRESHOLD, 41.9) -// ..setFieldValue(HealthFields.FIELD_MAX_HEART_RATE, 49.1) -// ..setFieldValue(HealthFields.FIELD_MIN_HEART_RATE, 41.1) -// ..setFieldValue(HealthFields.FIELD_AVG_HEART_RATE, 45.1); -// await HealthRecordController.updateHealthRecord( -// HealthRecordUpdateOptions( -// healthRecord: healthRecord, -// healthRecordId: '', -// ), -// ); -// log( -// 'updateHealthRecord', -// _healthTextController, -// LogOptions.success, -// ); -// } on PlatformException catch (e) { -// log( -// 'updateHealthRecord', -// _healthTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// void deleteHealthRecord() async { -// log( -// 'deleteHealthRecord', -// _healthTextController, -// LogOptions.call, -// ); -// try { -// await HealthRecordController.deleteHealthRecord( -// HealthRecordDeleteOptions( -// startTime: DateTime.now().subtract(const Duration(days: 14)), -// endTime: DateTime.now(), -// )..setHealthRecordIds( -// [ -// '', -// ], -// ), -// ); -// log( -// 'deleteHealthRecord', -// _healthTextController, -// LogOptions.success, -// ); -// } on PlatformException catch (e) { -// log( -// 'deleteHealthRecord', -// _healthTextController, -// LogOptions.error, -// error: e.message, -// ); -// } -// } -// -// // -// // -// // End of HealthController Methods -// -// // App's widgets. -// // -// // -// Widget expansionCard({ -// required String titleText, -// required List children, -// }) { -// return Card( -// margin: componentPadding, -// shape: RoundedRectangleBorder( -// borderRadius: BorderRadius.circular(10.0), -// ), -// child: ExpansionTile( -// title: Text( -// titleText, -// style: cardTitleTextStyle, -// ), -// children: children, -// ), -// ); -// } -// -// Widget loggingArea( -// TextEditingController moduleTextController, -// ) { -// return Column( -// children: [ -// Container( -// margin: componentPadding, -// padding: const EdgeInsets.all(8.0), -// height: 200, -// decoration: BoxDecoration( -// borderRadius: BorderRadius.circular(5.0), -// border: Border.all(color: Colors.black12), -// ), -// child: TextField( -// readOnly: true, -// maxLines: 15, -// controller: moduleTextController, -// decoration: const InputDecoration( -// enabledBorder: InputBorder.none, -// ), -// ), -// ), -// TextButton( -// child: const Text('Clear Log'), -// onPressed: () => setState(() { -// moduleTextController.text = ''; -// }), -// ) -// ], -// ); -// } -// -// void showSnackBar( -// String text, { -// Color color = Colors.blue, -// }) { -// final SnackBar snackBar = SnackBar( -// content: Text(text), -// backgroundColor: color, -// action: SnackBarAction( -// label: 'Close', -// textColor: Colors.white, -// onPressed: () { -// ScaffoldMessenger.of(context).removeCurrentSnackBar(); -// }, -// ), -// ); -// ScaffoldMessenger.of(context).showSnackBar(snackBar); -// } -// -// @override -// Widget build(BuildContext context) { -// return Scaffold( -// appBar: AppBar( -// backgroundColor: Colors.white, -// title: const Text( -// 'Huawei Health Kit', -// style: TextStyle( -// color: Colors.blue, -// fontWeight: FontWeight.bold, -// ), -// ), -// centerTitle: true, -// elevation: 0.0, -// actions: [ -// IconButton( -// onPressed: requestAuth, -// icon: const Icon(Icons.ac_unit), -// ), -// ], -// ), -// body: Builder( -// builder: (BuildContext context) { -// return ListView( -// physics: const BouncingScrollPhysics( -// parent: AlwaysScrollableScrollPhysics(), -// ), -// children: [ -// // Sign In Widgets -// Card( -// margin: componentPadding, -// shape: RoundedRectangleBorder( -// borderRadius: BorderRadius.circular(10.0), -// ), -// child: Column( -// mainAxisAlignment: MainAxisAlignment.center, -// children: [ -// const Padding( -// padding: componentPadding, -// child: Text( -// 'Tap to SignIn button to obtain the HMS Account to complete ' -// 'login and authorization, and then use other buttons ' -// 'to try the related API functions.', -// textAlign: TextAlign.center, -// ), -// ), -// const Padding( -// padding: componentPadding, -// child: Text( -// 'Note: If the login page is not displayed, change the package ' -// 'name, AppID, and configure the signature file by referring ' -// 'to the developer guide on the official website.', -// textAlign: TextAlign.center, -// style: TextStyle( -// color: Colors.blue, -// ), -// ), -// ), -// Container( -// padding: componentPadding, -// width: double.infinity, -// child: OutlinedButton( -// style: ButtonStyle( -// backgroundColor: MaterialStateProperty.all( -// Colors.blue, -// ), -// ), -// child: const Text( -// 'SignIn', -// style: TextStyle( -// color: Colors.white, -// ), -// ), -// onPressed: () => signIn(), -// ), -// ), -// ], -// ), -// ), -// -// // ActivityRecordsController -// expansionCard( -// titleText: 'ActivityRecords Controller', -// children: [ -// loggingArea(_activityTextController), -// ListTile( -// title: const Text('AddActivityRecord'), -// onTap: () => addActivityRecord(), -// ), -// ListTile( -// title: const Text('GetActivityRecord'), -// onTap: () => getActivityRecord(), -// ), -// ListTile( -// title: const Text('beginActivityRecord'), -// onTap: () => beginActivityRecord(), -// ), -// ListTile( -// title: const Text('endActivityRecord'), -// onTap: () => endActivityRecord(), -// ), -// ListTile( -// title: const Text('endAllActivityRecords'), -// onTap: () => endAllActivityRecords(), -// ), -// ], -// ), -// // DataController Widgets -// expansionCard( -// titleText: 'DataController', -// children: [ -// loggingArea(_dataTextController), -// ListTile( -// title: const Text('readTodaySummation'), -// onTap: () => readTodaySummation(), -// ), -// ListTile( -// title: const Text('readDailySummationList'), -// onTap: () => readDailySummationList(), -// ), -// ListTile( -// title: const Text('insert'), -// onTap: () => insert(), -// ), -// ListTile( -// title: const Text('read'), -// onTap: () => read(), -// ), -// ListTile( -// title: const Text('update'), -// onTap: () => update(), -// ), -// ListTile( -// title: const Text('delete'), -// onTap: () => delete(), -// ), -// ListTile( -// title: const Text('clearAll'), -// onTap: () => clearAll(), -// ), -// ], -// ), -// // SettingController Widgets. -// expansionCard( -// titleText: 'SettingController', -// children: [ -// loggingArea(_settingTextController), -// ListTile( -// title: const Text('addDataType'), -// onTap: () => addDataType(), -// ), -// ListTile( -// title: const Text('readDataType'), -// onTap: () => readDataType(), -// ), -// ListTile( -// title: const Text('disableHiHealth'), -// onTap: () => disableHiHealth(), -// ), -// ListTile( -// title: const Text('checkHealthAppAuthorization'), -// onTap: () => checkHealthAppAuthorization(), -// ), -// ListTile( -// title: const Text('getHealthAppAuthorization'), -// onTap: () => getHealthAppAuthorization(), -// ), -// ], -// ), -// // AutoRecorderController Widgets -// expansionCard( -// titleText: 'AutoRecorderController', -// children: [ -// loggingArea(_autoRecorderTextController), -// ListTile( -// title: const Text('startRecord'), -// onTap: () => startRecord(), -// ), -// ListTile( -// title: const Text('stopRecord'), -// onTap: () => stopRecord(), -// ), -// ], -// ), -// // Consent Controller Widgets -// expansionCard( -// titleText: 'ConsentController', -// children: [ -// loggingArea(_consentTextController), -// ListTile( -// title: const Text('getAppId'), -// onTap: () => getAppId(), -// ), -// ListTile( -// title: const Text('getScopes'), -// onTap: () => getScopes(), -// ), -// ListTile( -// title: const Text('revoke'), -// onTap: () => revoke(), -// ), -// ListTile( -// title: const Text('revokeWithScopes'), -// onTap: () => revokeWithScopes(), -// ), -// ], -// ), -// -// // Health Controller Widgets -// expansionCard( -// titleText: 'HealthController', -// children: [ -// loggingArea(_healthTextController), -// ListTile( -// title: const Text('addHealthRecord'), -// onTap: () => addHealthRecord(), -// ), -// ListTile( -// title: const Text('getHealthRecord'), -// onTap: () => getHealthRecord(), -// ), -// ListTile( -// title: const Text('updateHealthRecord'), -// onTap: () => updateHealthRecord(), -// ), -// ListTile( -// title: const Text('deleteHealthRecord'), -// onTap: () => deleteHealthRecord(), -// ), -// ], -// ), -// ], -// ); -// }, -// ), -// ); -// } -// } -// -// /// Options for logging. -// enum LogOptions { -// call, -// success, -// error, -// custom, -// } diff --git a/lib/presentation/smartwatches/smart_watch_activity.dart b/lib/presentation/smartwatches/smart_watch_activity.dart deleted file mode 100644 index 678fd715..00000000 --- a/lib/presentation/smartwatches/smart_watch_activity.dart +++ /dev/null @@ -1,252 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:hmg_patient_app_new/core/app_assets.dart'; -import 'package:hmg_patient_app_new/core/app_export.dart'; -import 'package:hmg_patient_app_new/core/dependencies.dart'; -import 'package:hmg_patient_app_new/core/utils/utils.dart'; -import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; -import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; -import 'package:hmg_patient_app_new/features/smartwatch_health_data/health_provider.dart'; -import 'package:hmg_patient_app_new/presentation/smartwatches/activity_detail.dart'; -import 'package:hmg_patient_app_new/services/navigation_service.dart'; -import 'package:hmg_patient_app_new/theme/colors.dart'; -import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; -import 'package:provider/provider.dart'; -import 'package:hmg_patient_app_new/features/smartwatch_health_data/HealthDataTransformation.dart' as durations; - -import '../../core/utils/date_util.dart' show DateUtil; - -class SmartWatchActivity extends StatelessWidget { - @override - Widget build(BuildContext context) { - return Scaffold( - backgroundColor: AppColors.bgScaffoldColor, - body: CollapsingListView( - title: "All Health Data".needTranslation, - child: Column( - spacing: 16.h, - children: [ - resultItem( - leadingIcon: AppAssets.watchActivity, - title: "Activity Calories".needTranslation, - description: "Activity rings give you a quick visual reference of how active you are each day. ".needTranslation, - trailingIcon: AppAssets.watchActivityTrailing, - result: context.read().sumOfNonEmptyData(context.read().vitals?.activity??[]), - unitsOfMeasure: "Kcal" - ).onPress((){ - // Map> getVitals() { - // return { - // "heartRate": heartRate , - // "sleep": sleep, - // "steps": step, - // "activity": activity, - // "bodyOxygen": bodyOxygen, - // "bodyTemperature": bodyTemperature, - // }; - // } - context.read().setDurations(durations.Durations.daily); - - context.read().deleteDataIfSectionIsDifferent("activity"); - context.read().saveSelectedSection("activity"); - context.read().fetchData(); - context.read().navigateToDetails("activity", sectionName:"Activity Calories", uom: "Kcal"); - - }), - resultItem( - leadingIcon: AppAssets.watchSteps, - title: "Steps".needTranslation, - description: "Step count is the number of steps you take throughout the day.".needTranslation, - trailingIcon: AppAssets.watchStepsTrailing, - result: context.read().sumOfNonEmptyData(context.read().vitals?.step??[]), - unitsOfMeasure: "Steps" - ).onPress((){ - // Map> getVitals() { - // return { - // "heartRate": heartRate , - // "sleep": sleep, - // "steps": step, - // "activity": activity, - // "bodyOxygen": bodyOxygen, - // "bodyTemperature": bodyTemperature, - // }; - // } - context.read().setDurations(durations.Durations.daily); - - context.read().deleteDataIfSectionIsDifferent("steps"); - context.read().saveSelectedSection("steps"); - context.read().fetchData(); - context.read().navigateToDetails("steps", sectionName: "Steps", uom: "Steps"); - - }), - resultItem( - leadingIcon: AppAssets.watchSteps, - title: "Distance Covered".needTranslation, - description: "Step count is the distance you take throughout the day.".needTranslation, - trailingIcon: AppAssets.watchStepsTrailing, - result: context.read().sumOfNonEmptyData(context.read().vitals?.distance??[]), - unitsOfMeasure: "Km" - ).onPress((){ - // Map> getVitals() { - // return { - // "heartRate": heartRate , - // "sleep": sleep, - // "steps": step, - // "activity": activity, - // "bodyOxygen": bodyOxygen, - // "bodyTemperature": bodyTemperature, - // }; - // } - context.read().setDurations(durations.Durations.daily); - - context.read().deleteDataIfSectionIsDifferent("distance"); - context.read().saveSelectedSection("distance"); - context.read().fetchData(); - context.read().navigateToDetails("distance", sectionName: "Distance Covered", uom: "km"); - - }), - - resultItem( - leadingIcon: AppAssets.watchSleep, - title: "Sleep Score".needTranslation, - description: "This will keep track of how much hours you sleep in a day".needTranslation, - trailingIcon: AppAssets.watchSleepTrailing, - result: DateUtil.millisToHourMin(int.parse(context.read().firstNonEmptyValue(context.read().vitals?.sleep??[]))).split(" ")[0], - unitsOfMeasure: "hr", - resultSecondValue: DateUtil.millisToHourMin(int.parse(context.read().firstNonEmptyValue(context.read().vitals?.sleep??[]))).split(" ")[2], - unitOfSecondMeasure: "min" - ).onPress((){ - // Map> getVitals() { - // return { - // "heartRate": heartRate , - // "sleep": sleep, - // "steps": step, - // "activity": activity, - // "bodyOxygen": bodyOxygen, - // "bodyTemperature": bodyTemperature, - // }; - // } - context.read().setDurations(durations.Durations.daily); - - context.read().deleteDataIfSectionIsDifferent("sleep"); - context.read().saveSelectedSection("sleep"); - context.read().fetchData(); - context.read().navigateToDetails("sleep", sectionName:"Sleep Score",uom:""); - - }), - - resultItem( - leadingIcon: AppAssets.watchWeight, - title: "Blood Oxygen".needTranslation, - description: "This will calculate your Blood Oxygen to keep track and update history".needTranslation, - trailingIcon: AppAssets.watchWeightTrailing, - result: context.read().firstNonEmptyValue(context.read().vitals?.bodyOxygen??[], ), - unitsOfMeasure: "%" - ).onPress((){ - // Map> getVitals() { - // return { - // "heartRate": heartRate , - // "sleep": sleep, - // "steps": step, - // "activity": activity, - // "bodyOxygen": bodyOxygen, - // "bodyTemperature": bodyTemperature, - // }; - // } - context.read().setDurations(durations.Durations.daily); - - context.read().deleteDataIfSectionIsDifferent("bodyOxygen"); - context.read().saveSelectedSection("bodyOxygen"); - context.read().fetchData(); - context.read().navigateToDetails("bodyOxygen", uom: "%", sectionName:"Blood Oxygen" ); - - }), - resultItem( - leadingIcon: AppAssets.watchWeight, - title: "Body temperature".needTranslation, - description: "This will calculate your Body temprerature to keep track and update history".needTranslation, - trailingIcon: AppAssets.watchWeightTrailing, - result: context.read().firstNonEmptyValue(context.read().vitals?.bodyTemperature??[]), - unitsOfMeasure: "C" - ).onPress((){ - // Map> getVitals() { - // return { - // "heartRate": heartRate , - // "sleep": sleep, - // "steps": step, - // "activity": activity, - // "bodyOxygen": bodyOxygen, - // "bodyTemperature": bodyTemperature, - // }; - // } - context.read().setDurations(durations.Durations.daily); - - context.read().deleteDataIfSectionIsDifferent("bodyTemperature"); - context.read().saveSelectedSection("bodyTemperature"); - context.read().fetchData(); - context.read().navigateToDetails("bodyTemperature" , sectionName: "Body temperature".capitalizeFirstofEach, uom: "C"); - - }), - ], - ).paddingSymmetrical(24.w, 24.h), - )); - } - - Widget resultItem({ - required String leadingIcon, - required String title, - required String description, - required String trailingIcon, - required String result, - required String unitsOfMeasure, - String? resultSecondValue, - String? unitOfSecondMeasure - }) { - return DecoratedBox( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.h), - child: Row( - spacing: 16.w, - children: [ - Expanded( - child:Column( - spacing: 8.h, - children: [ - Row( - spacing: 8.w, - children: [ - Utils.buildSvgWithAssets(icon: leadingIcon, height: 16.h, width: 14.w), - title.toText16( weight: FontWeight.w600, color: AppColors.textColor), - ], - ), - description.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - Row( - crossAxisAlignment: CrossAxisAlignment.baseline, - textBaseline: TextBaseline.alphabetic, - spacing: 2.h, - children: [ - result.toText21(weight: FontWeight.w600, color: AppColors.textColor), - unitsOfMeasure.toText10(weight: FontWeight.w500, color:AppColors.greyTextColor ), - if(resultSecondValue != null) - Visibility( - visible: resultSecondValue != null , - child: Row( - crossAxisAlignment: CrossAxisAlignment.baseline, - textBaseline: TextBaseline.alphabetic, - spacing: 2.h, - children: [ - SizedBox(width: 2.w,), - resultSecondValue.toText21(weight: FontWeight.w600, color: AppColors.textColor), - unitOfSecondMeasure!.toText10(weight: FontWeight.w500, color:AppColors.greyTextColor ) - ], - ), - ) - ], - ), - - ], - ) , - ), - Utils.buildSvgWithAssets(icon: trailingIcon, width: 72.w, height: 72.h), - ], - ).paddingSymmetrical(16.w, 16.h) - ); - } -} diff --git a/lib/presentation/smartwatches/smart_watches_health_data_screen.dart b/lib/presentation/smartwatches/smart_watches_health_data_screen.dart new file mode 100644 index 00000000..baa65b49 --- /dev/null +++ b/lib/presentation/smartwatches/smart_watches_health_data_screen.dart @@ -0,0 +1,188 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/smartwatch_health_data/health_data_transformations.dart' as durations; +import 'package:hmg_patient_app_new/features/smartwatch_health_data/health_provider.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:provider/provider.dart'; + +import '../../core/utils/date_util.dart' show DateUtil; + +class SmartWatchesHealthDataScreen extends StatelessWidget { + const SmartWatchesHealthDataScreen({super.key}); + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + body: CollapsingListView( + title: "All Health Data".needTranslation, + child: Column( + spacing: 16.h, + children: [ + resultItem( + leadingIcon: AppAssets.watchActivity, + title: "Activity Calories".needTranslation, + description: "Activity rings give you a quick visual reference of how active you are each day. ".needTranslation, + trailingIcon: AppAssets.watchActivityTrailing, + result: context.read().sumOfNonEmptyData(context.read().vitals?.activity ?? []), + unitsOfMeasure: "Kcal") + .onPress(() { + context.read().setDurations(durations.Durations.daily); + context.read().deleteDataIfSectionIsDifferent("activity"); + context.read().saveSelectedSection("activity"); + context.read().fetchData(); + context.read().navigateToDetails("activity", sectionName: "Activity Calories", uom: "Kcal"); + }), + resultItem( + leadingIcon: AppAssets.watchSteps, + title: "Steps".needTranslation, + description: "Step count is the number of steps you take throughout the day.".needTranslation, + trailingIcon: AppAssets.watchStepsTrailing, + result: context.read().sumOfNonEmptyData(context.read().vitals?.step ?? []), + unitsOfMeasure: "Steps") + .onPress(() { + // Map> getVitals() { + // return { + // "heartRate": heartRate , + // "sleep": sleep, + // "steps": step, + // "activity": activity, + // "bodyOxygen": bodyOxygen, + // "bodyTemperature": bodyTemperature, + // }; + // } + context.read().setDurations(durations.Durations.daily); + context.read().deleteDataIfSectionIsDifferent("steps"); + context.read().saveSelectedSection("steps"); + context.read().fetchData(); + context.read().navigateToDetails("steps", sectionName: "Steps", uom: "Steps"); + }), + resultItem( + leadingIcon: AppAssets.watchSteps, + title: "Distance Covered".needTranslation, + description: "Step count is the distance you take throughout the day.".needTranslation, + trailingIcon: AppAssets.watchStepsTrailing, + result: context.read().sumOfNonEmptyData(context.read().vitals?.distance ?? []), + unitsOfMeasure: "Km") + .onPress(() { + context.read().setDurations(durations.Durations.daily); + context.read().deleteDataIfSectionIsDifferent("distance"); + context.read().saveSelectedSection("distance"); + context.read().fetchData(); + context.read().navigateToDetails("distance", sectionName: "Distance Covered", uom: "km"); + }), + resultItem( + leadingIcon: AppAssets.watchSleep, + title: "Sleep Score".needTranslation, + description: "This will keep track of how much hours you sleep in a day".needTranslation, + trailingIcon: AppAssets.watchSleepTrailing, + result: DateUtil.millisToHourMin( + int.parse(context.read().firstNonEmptyValue(context.read().vitals?.sleep ?? []))) + .split(" ")[0], + unitsOfMeasure: "hr", + resultSecondValue: DateUtil.millisToHourMin( + int.parse(context.read().firstNonEmptyValue(context.read().vitals?.sleep ?? []))) + .split(" ")[2], + unitOfSecondMeasure: "min") + .onPress(() { + context.read().setDurations(durations.Durations.daily); + context.read().deleteDataIfSectionIsDifferent("sleep"); + context.read().saveSelectedSection("sleep"); + context.read().fetchData(); + context.read().navigateToDetails("sleep", sectionName: "Sleep Score", uom: ""); + }), + resultItem( + leadingIcon: AppAssets.watchWeight, + title: "Blood Oxygen".needTranslation, + description: "This will calculate your Blood Oxygen to keep track and update history".needTranslation, + trailingIcon: AppAssets.watchWeightTrailing, + result: context.read().firstNonEmptyValue( + context.read().vitals?.bodyOxygen ?? [], + ), + unitsOfMeasure: "%") + .onPress(() { + context.read().setDurations(durations.Durations.daily); + context.read().deleteDataIfSectionIsDifferent("bodyOxygen"); + context.read().saveSelectedSection("bodyOxygen"); + context.read().fetchData(); + context.read().navigateToDetails("bodyOxygen", uom: "%", sectionName: "Blood Oxygen"); + }), + resultItem( + leadingIcon: AppAssets.watchWeight, + title: "Body temperature".needTranslation, + description: "This will calculate your Body temprerature to keep track and update history".needTranslation, + trailingIcon: AppAssets.watchWeightTrailing, + result: context.read().firstNonEmptyValue(context.read().vitals?.bodyTemperature ?? []), + unitsOfMeasure: "C") + .onPress(() { + context.read().setDurations(durations.Durations.daily); + context.read().deleteDataIfSectionIsDifferent("bodyTemperature"); + context.read().saveSelectedSection("bodyTemperature"); + context.read().fetchData(); + context.read().navigateToDetails("bodyTemperature", sectionName: "Body temperature".capitalizeFirstofEach, uom: "C"); + }), + ], + ).paddingSymmetrical(24.w, 24.h), + )); + } + + Widget resultItem({ + required String leadingIcon, + required String title, + required String description, + required String trailingIcon, + required String result, + required String unitsOfMeasure, + String? resultSecondValue, + String? unitOfSecondMeasure, + }) { + return DecoratedBox( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.h), + child: Row( + spacing: 16.w, + children: [ + Expanded( + child: Column( + spacing: 8.h, + children: [ + Row( + spacing: 8.w, + children: [ + Utils.buildSvgWithAssets(icon: leadingIcon, height: 16.h, width: 14.w), + title.toText16(weight: FontWeight.w600, color: AppColors.textColor), + ], + ), + description.toText12(isBold: true, color: AppColors.greyTextColor), + Row( + crossAxisAlignment: CrossAxisAlignment.baseline, + textBaseline: TextBaseline.alphabetic, + spacing: 2.h, + children: [ + result.toText21(isBold: true, color: AppColors.textColor), + unitsOfMeasure.toText10(isBold: true, color: AppColors.greyTextColor), + if (resultSecondValue != null) + Row( + crossAxisAlignment: CrossAxisAlignment.baseline, + textBaseline: TextBaseline.alphabetic, + spacing: 2.h, + children: [ + SizedBox(width: 2.w), + resultSecondValue.toText21(isBold: true, color: AppColors.textColor), + unitOfSecondMeasure!.toText10(isBold: true, color: AppColors.greyTextColor) + ], + ), + ], + ), + ], + ), + ), + Utils.buildSvgWithAssets(icon: trailingIcon, width: 72.w, height: 72.h), + ], + ).paddingSymmetrical(16.w, 16.h)); + } +} diff --git a/lib/presentation/smartwatches/smartwatch_home_page.dart b/lib/presentation/smartwatches/smartwatch_home_page.dart index 800ff030..3bd8e9f5 100644 --- a/lib/presentation/smartwatches/smartwatch_home_page.dart +++ b/lib/presentation/smartwatches/smartwatch_home_page.dart @@ -1,5 +1,3 @@ -import 'dart:io'; - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -52,7 +50,7 @@ class SmartwatchHomePage extends StatelessWidget { borderColor: AppColors.infoColor.withAlpha(0), textColor: AppColors.infoColor, fontSize: 16.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12.r, height: 50.h, icon: AppAssets.ask_doctor_icon, @@ -68,11 +66,12 @@ class SmartwatchHomePage extends StatelessWidget { child: GridView( padding: EdgeInsets.zero, shrinkWrap: true, + physics: NeverScrollableScrollPhysics(), gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( crossAxisCount: 2, - crossAxisSpacing: 16.h, + crossAxisSpacing: 16.h, mainAxisSpacing: 16.w, - mainAxisExtent: 240.h, + childAspectRatio: isFoldable ? 1.1 : (isTablet ? 1.3 : 0.7), ), children: [ Container( @@ -82,26 +81,30 @@ class SmartwatchHomePage extends StatelessWidget { ), child: Column( children: [ - Image.asset("assets/images/png/smartwatches/apple-watch-5.jpg", width: 136.w, height: 136.h).paddingSymmetrical(24.w, 8.h), + Utils.buildImgWithAssets(icon: "assets/images/png/smartwatches/apple-watch-5.jpg", width: 136.h, height: 136.h).paddingSymmetrical(24.w, 8.h), "Apple Watch".needTranslation.toText16(isBold: true), CustomButton( - text: LocaleKeys.select.tr(context: context), + text: LocaleKeys.selectSmartWatch.tr(context: context), onPressed: () { - context.read().setSelectedWatchType(SmartWatchTypes.apple, "assets/images/png/smartwatches/apple-watch-5.jpg"); - getIt.get().pushPage(page: SmartwatchInstructionsPage( - smartwatchDetails: SmartwatchDetails(SmartWatchTypes.apple, - "assets/images/png/smartwatches/apple-watch-5.jpg", - AppAssets.bluetooth, - LocaleKeys.applehealthapplicationshouldbeinstalledinyourphone.tr(context: context), - LocaleKeys.unabletodetectapplicationinstalledpleasecomebackonceinstalled.tr(context: context), - LocaleKeys.applewatchshouldbeconnected.tr(context: context)), - )); + context + .read() + .setSelectedWatchType(SmartWatchTypes.apple, "assets/images/png/smartwatches/apple-watch-5.jpg"); + getIt.get().pushPage( + page: SmartwatchInstructionsPage( + smartwatchDetails: SmartwatchDetails( + SmartWatchTypes.apple, + "assets/images/png/smartwatches/apple-watch-5.jpg", + AppAssets.bluetooth, + LocaleKeys.applehealthapplicationshouldbeinstalledinyourphone.tr(context: context), + LocaleKeys.unabletodetectapplicationinstalledpleasecomebackonceinstalled.tr(context: context), + LocaleKeys.applewatchshouldbeconnected.tr(context: context)), + )); }, backgroundColor: AppColors.primaryRedColor.withAlpha(40), borderColor: AppColors.primaryRedColor.withAlpha(0), textColor: AppColors.primaryRedColor, - fontSize: 16.f, - fontWeight: FontWeight.w500, + fontSize: 14.f, + isBold: true, borderRadius: 12.r, height: 40.h, ).paddingSymmetrical(16.w, 12.h), @@ -109,31 +112,34 @@ class SmartwatchHomePage extends StatelessWidget { ), ), Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.r, - ), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r), child: Column( children: [ - Image.asset("assets/images/png/smartwatches/galaxy_watch_8_classic.jpeg", fit: BoxFit.contain, width: 136.w, height: 136.h).paddingSymmetrical(24.w, 8.h), + Utils.buildImgWithAssets(icon: "assets/images/png/smartwatches/galaxy_watch_8_classic.jpeg", fit: BoxFit.contain, width: 136.w, height: 136.h) + .paddingSymmetrical(24.w, 8.h), "Samsung Watch".needTranslation.toText16(isBold: true), CustomButton( - text: LocaleKeys.select.tr(context: context), + text: LocaleKeys.selectSmartWatch.tr(context: context), onPressed: () { - context.read().setSelectedWatchType(SmartWatchTypes.samsung, "assets/images/png/smartwatches/galaxy_watch_8_classic.jpeg"); - getIt.get().pushPage(page: SmartwatchInstructionsPage( - smartwatchDetails: SmartwatchDetails(SmartWatchTypes.samsung, - "assets/images/png/smartwatches/galaxy_watch_8_classic.jpeg", - AppAssets.bluetooth, - LocaleKeys.samsunghealthapplicationshouldbeinstalledinyourphone.tr(context: context), - LocaleKeys.unabletodetectapplicationinstalledpleasecomebackonceinstalled.tr(context: context), - LocaleKeys.samsungwatchshouldbeconnected.tr(context: context)), - )); }, + context + .read() + .setSelectedWatchType(SmartWatchTypes.samsung, "assets/images/png/smartwatches/galaxy_watch_8_classic.jpeg"); + getIt.get().pushPage( + page: SmartwatchInstructionsPage( + smartwatchDetails: SmartwatchDetails( + SmartWatchTypes.samsung, + "assets/images/png/smartwatches/galaxy_watch_8_classic.jpeg", + AppAssets.bluetooth, + LocaleKeys.samsunghealthapplicationshouldbeinstalledinyourphone.tr(context: context), + LocaleKeys.unabletodetectapplicationinstalledpleasecomebackonceinstalled.tr(context: context), + LocaleKeys.samsungwatchshouldbeconnected.tr(context: context)), + )); + }, backgroundColor: AppColors.primaryRedColor.withAlpha(40), borderColor: AppColors.primaryRedColor.withAlpha(0), textColor: AppColors.primaryRedColor, - fontSize: 16.f, - fontWeight: FontWeight.w500, + fontSize: 14.f, + isBold: true, borderRadius: 12.r, height: 40.h, ).paddingSymmetrical(16.w, 12.h), @@ -147,10 +153,10 @@ class SmartwatchHomePage extends StatelessWidget { ), child: Column( children: [ - Image.asset("assets/images/png/smartwatches/Huawei_Watch.png", width: 136.w, height: 136.h).paddingSymmetrical(24.w, 8.h), + Utils.buildImgWithAssets(icon: "assets/images/png/smartwatches/Huawei_Watch.png", width: 136.w, height: 136.h).paddingSymmetrical(24.w, 8.h), "Huawei Watch".needTranslation.toText16(isBold: true), CustomButton( - text: LocaleKeys.select.tr(context: context), + text: LocaleKeys.selectSmartWatch.tr(context: context), onPressed: () { // context.read().setSelectedWatchType(SmartWatchTypes.huawei, "assets/images/png/smartwatches/Huawei_Watch.png"); // getIt.get().pushPage(page: SmartwatchInstructionsPage( @@ -166,8 +172,8 @@ class SmartwatchHomePage extends StatelessWidget { backgroundColor: AppColors.primaryRedColor.withAlpha(40), borderColor: AppColors.primaryRedColor.withAlpha(0), textColor: AppColors.primaryRedColor, - fontSize: 16.f, - fontWeight: FontWeight.w500, + fontSize: 14.f, + isBold: true, borderRadius: 12.r, height: 40.h, ).paddingSymmetrical(16.w, 12.h), @@ -181,12 +187,11 @@ class SmartwatchHomePage extends StatelessWidget { ), child: Column( children: [ - Image.asset("assets/images/png/smartwatches/Whoop_Watch.png", width: 136.w, height: 136.h).paddingSymmetrical(24.w, 8.h), + Utils.buildImgWithAssets(icon: "assets/images/png/smartwatches/Whoop_Watch.png", width: 136.w, height: 136.h).paddingSymmetrical(24.w, 8.h), "Whoop Watch".needTranslation.toText16(isBold: true), CustomButton( - text: LocaleKeys.select.tr(context: context), + text: LocaleKeys.selectSmartWatch.tr(context: context), onPressed: () { - showUnavailableDialog(context); // context.read().setSelectedWatchType(SmartWatchTypes.whoop, "assets/images/png/smartwatches/Whoop_Watch.png"); // getIt.get().pushPage(page: SmartwatchInstructionsPage( @@ -201,8 +206,8 @@ class SmartwatchHomePage extends StatelessWidget { backgroundColor: AppColors.primaryRedColor.withAlpha(40), borderColor: AppColors.primaryRedColor.withAlpha(0), textColor: AppColors.primaryRedColor, - fontSize: 16.f, - fontWeight: FontWeight.w500, + fontSize: 14.f, + isBold: true, borderRadius: 12.r, height: 40.h, ).paddingSymmetrical(16.w, 12.h), @@ -220,18 +225,16 @@ class SmartwatchHomePage extends StatelessWidget { } void showUnavailableDialog(BuildContext context) { - showCommonBottomSheetWithoutHeight( title: LocaleKeys.notice.tr(context: context), context, child: Utils.getWarningWidget( - loadingText: LocaleKeys.featureComingSoonDescription.tr(context: context), + loadingText: LocaleKeys.featureComingSoonDescription.tr(context: context), isShowActionButtons: false, showOkButton: true, onConfirmTap: () async { context.pop(); - } - ), + }), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, diff --git a/lib/presentation/smartwatches/smartwatch_instructions_page.dart b/lib/presentation/smartwatches/smartwatch_instructions_page.dart index fa5f3135..7c0d0b97 100644 --- a/lib/presentation/smartwatches/smartwatch_instructions_page.dart +++ b/lib/presentation/smartwatches/smartwatch_instructions_page.dart @@ -2,13 +2,10 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/common_models/smart_watch.dart'; -import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; -import 'package:hmg_patient_app_new/presentation/smartwatches/smart_watch_activity.dart' show SmartWatchActivity; -import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -26,62 +23,66 @@ class SmartwatchInstructionsPage extends StatelessWidget { Widget build(BuildContext context) { return Scaffold( backgroundColor: AppColors.bgScaffoldColor, - body: CollapsingListView( - title: "How does it work".needTranslation, - bottomChild: Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 24.r, - ), - child: CustomButton( - text: LocaleKeys.getStarted.tr(context: context), - onPressed: () { - context.read().initDevice(); - }, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedColor, - textColor: AppColors.whiteColor, - fontSize: 16.f, - fontWeight: FontWeight.w500, - borderRadius: 12.r, - height: 50.h, - ).paddingSymmetrical(24.w, 30.h), + body: CollapsingListView( + title: "How does it work".needTranslation, + bottomChild: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, ), - child: Column( - mainAxisSize: MainAxisSize.max, - spacing: 18.h, - children: [ - Image.asset(smartwatchDetails.watchIcon, fit: BoxFit.contain, height: 280.h,width: 280.w,), - DecoratedBox( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.h), - child: Column( - children: [ - watchContentDetails( - title: smartwatchDetails.detailsTitle, - description: smartwatchDetails.details, - icon: smartwatchDetails.smallIcon, - descriptionTextColor: AppColors.primaryRedColor - ), - Divider( - color: AppColors.dividerColor, - thickness: 1.h, - ).paddingOnly(top: 16.h, bottom: 16.h), - watchContentDetails( - title: smartwatchDetails.secondTitle, - description: LocaleKeys.updatetheinformation.tr(), - icon: AppAssets.bluetooth, - descriptionTextColor: AppColors.greyTextColor - ), - ], - ).paddingSymmetrical(16.w, 16.h), - ) - ], - ).paddingSymmetrical(24.w, 16.h), + child: CustomButton( + text: LocaleKeys.getStarted.tr(context: context), + onPressed: () { + context.read().initDevice(); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + fontSize: 16.f, + isBold: true, + borderRadius: 12.r, + height: 50.h, + ).paddingSymmetrical(24.w, 30.h), ), + child: Column( + mainAxisSize: MainAxisSize.max, + spacing: 18.h, + children: [ + Utils.buildImgWithAssets( + icon: smartwatchDetails.watchIcon, + fit: BoxFit.contain, + height: 280.h, + width: 280.w, + ), + DecoratedBox( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.h), + child: Column( + children: [ + watchContentDetails( + title: smartwatchDetails.detailsTitle, + description: smartwatchDetails.details, + icon: smartwatchDetails.smallIcon, + descriptionTextColor: AppColors.primaryRedColor, + ), + Divider( + color: AppColors.dividerColor, + thickness: 1.h, + ).paddingOnly(top: 16.h, bottom: 16.h), + watchContentDetails( + title: smartwatchDetails.secondTitle, + description: LocaleKeys.updatetheinformation.tr(), + icon: AppAssets.bluetooth, + descriptionTextColor: AppColors.greyTextColor, + ), + ], + ).paddingSymmetrical(16.w, 16.h), + ) + ], + ).paddingSymmetrical(24.w, 16.h), + ), ); } - Widget watchContentDetails({required String title, required String description, required String icon, required Color descriptionTextColor}) { return Column( crossAxisAlignment: CrossAxisAlignment.start, @@ -90,11 +91,9 @@ class SmartwatchInstructionsPage extends StatelessWidget { DecoratedBox( decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.h), child: Utils.buildSvgWithAssets(icon: icon, width: 40.w, height: 40.h), - ), - - title.toText16(weight: FontWeight.w600, color: AppColors.textColor), - description.toText12(fontWeight: FontWeight.w500, color: descriptionTextColor) + title.toText16(isBold: true, color: AppColors.textColor), + description.toText12(isBold: true, color: descriptionTextColor) ], ); } diff --git a/lib/presentation/smartwatches/widgets/health_metric_card.dart b/lib/presentation/smartwatches/widgets/health_metric_card.dart index 023f41b7..53ad4705 100644 --- a/lib/presentation/smartwatches/widgets/health_metric_card.dart +++ b/lib/presentation/smartwatches/widgets/health_metric_card.dart @@ -1,11 +1,11 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; import 'package:health/health.dart'; import 'package:fl_chart/fl_chart.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/smartwatches/widgets/health_metric.dart'; @@ -53,12 +53,12 @@ class HealthMetricCard extends StatelessWidget { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - SvgPicture.asset( - metric.svgIcon, + Utils.buildSvgWithAssets( + icon: metric.svgIcon, height: 30.h, width: 30.h, fit: BoxFit.contain, - // color: color, + applyThemeColor: false, ), // Icon( // metric.icon, diff --git a/lib/presentation/smartwatches/widgets/supported_watches_list.dart b/lib/presentation/smartwatches/widgets/supported_watches_list.dart index 839af802..f28d57c5 100644 --- a/lib/presentation/smartwatches/widgets/supported_watches_list.dart +++ b/lib/presentation/smartwatches/widgets/supported_watches_list.dart @@ -25,11 +25,11 @@ class SupportedWatchesList extends StatelessWidget { ], ), SizedBox(height: 4.h), - "• Apple Watch Ultra".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - "• Apple Watch 11".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - "• Apple Watch 10".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - "• Apple Watch 9".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - "• Apple Watch 8".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Apple Watch Ultra".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), + "• Apple Watch 11".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), + "• Apple Watch 10".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), + "• Apple Watch 9".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), + "• Apple Watch 8".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), SizedBox(height: 16.h), Row( children: [ @@ -37,12 +37,12 @@ class SupportedWatchesList extends StatelessWidget { ], ), SizedBox(height: 4.h), - "• Samsung Watch Ultra".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - "• Galaxy Watch 8".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - "• Galaxy Watch 7".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - "• Galaxy Watch 6".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - "• Galaxy Watch FE".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - "• Galaxy Watch Fit".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Samsung Watch Ultra".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), + "• Galaxy Watch 8".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), + "• Galaxy Watch 7".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), + "• Galaxy Watch 6".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), + "• Galaxy Watch FE".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), + "• Galaxy Watch Fit".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), SizedBox(height: 16.h), Row( children: [ @@ -50,10 +50,10 @@ class SupportedWatchesList extends StatelessWidget { ], ), SizedBox(height: 4.h), - "• Huawei Watch Ultimate Series".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - "• Huawei Watch Series".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - "• Huawei Watch Fit Series".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - "• Huawei Watch Bands".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Huawei Watch Ultimate Series".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), + "• Huawei Watch Series".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), + "• Huawei Watch Fit Series".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), + "• Huawei Watch Bands".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), SizedBox(height: 16.h), Row( children: [ @@ -61,8 +61,8 @@ class SupportedWatchesList extends StatelessWidget { ], ), SizedBox(height: 4.h), - "• Whoop 1".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), - "• Whoop 2".needTranslation.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "• Whoop 1".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), + "• Whoop 2".needTranslation.toText12(isBold: true, color: AppColors.greyTextColor), ], ), ), diff --git a/lib/presentation/symptoms_checker/organ_selector_screen.dart b/lib/presentation/symptoms_checker/organ_selector_screen.dart index 253fccdc..2244ecbd 100644 --- a/lib/presentation/symptoms_checker/organ_selector_screen.dart +++ b/lib/presentation/symptoms_checker/organ_selector_screen.dart @@ -1,8 +1,10 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/cache_consts.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; @@ -11,6 +13,8 @@ import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/widgets/interactive_body_widget.dart'; +import 'package:hmg_patient_app_new/presentation/symptoms_checker/widgets/pinch_zoom_tutorial_overlay.dart'; +import 'package:hmg_patient_app_new/services/cache_service.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -28,12 +32,36 @@ class OrganSelectorPage extends StatefulWidget { class _OrganSelectorPageState extends State { late final AppState _appState; late final DialogService dialogService; + late final CacheService cacheService; + bool _showTutorial = false; @override void initState() { super.initState(); _appState = getIt.get(); dialogService = getIt(); + cacheService = getIt(); + _checkAndShowTutorial(); + } + + Future _checkAndShowTutorial() async { + // final hasSeenTutorial = cacheService.getBool(key: CacheConst.organSelectorTutorialShown) ?? false; + // if (!hasSeenTutorial) { + // Show tutorial after a short delay to ensure the screen is fully built + await Future.delayed(const Duration(milliseconds: 500)); + if (mounted) { + setState(() { + _showTutorial = true; + }); + } + // } + } + + void _onTutorialComplete() async { + await cacheService.saveBool(key: CacheConst.organSelectorTutorialShown, value: true); + setState(() { + _showTutorial = false; + }); } void _onNextPressed(SymptomsCheckerViewModel viewModel) async { @@ -43,16 +71,26 @@ class _OrganSelectorPageState extends State { ); return; } + + // If user is not authenticated, navigate to user consent screen + if (!_appState.isAuthenticated) { + context.navigateWithName(AppRoutes.userConsentScreen); + return; + } + + // User is authenticated, proceed with API call LoaderBottomSheet.showLoader( loadingText: LocaleKeys.pleaseWait.tr(context: context), ); - final String userName = 'guest_user'; - final String password = '123456'; + // Get fileNo from authenticated user + final user = _appState.getAuthenticatedUser(); + String? fileNo = user?.patientId.toString(); await viewModel.getSymptomsUserDetails( - userName: userName, - password: password, + userName: ApiConsts.symptomsCheckerUsername, + password: ApiConsts.symptomsCheckerPassword, + fileNo: fileNo, onSuccess: () { LoaderBottomSheet.hideLoader(); context.navigateWithName(AppRoutes.symptomsSelectorPage); @@ -65,29 +103,39 @@ class _OrganSelectorPageState extends State { @override Widget build(BuildContext context) { - return Scaffold( - backgroundColor: AppColors.bgScaffoldColor, - appBar: _buildAppBar(), - body: Consumer( - builder: (context, viewModel, _) { - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - _buildTitle(), - SizedBox(height: 8.h), - Expanded( - child: Stack( - children: [ - _buildBodyViewer(viewModel), - _buildViewToggleButtons(viewModel), - _buildBottomSheet(viewModel), - ], - ), - ), - ], - ); - }, - ), + return Stack( + children: [ + Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + appBar: _buildAppBar(), + body: Consumer( + builder: (context, viewModel, _) { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + _buildTitle(), + SizedBox(height: 8.h), + Expanded( + child: Stack( + children: [ + _buildBodyViewer(viewModel), + _buildViewToggleButtons(viewModel), + // _buildViewZoomButtons(viewModel), + _buildBottomSheet(viewModel), + ], + ), + ), + ], + ); + }, + ), + ), + // Tutorial overlay + if (_showTutorial) + PinchZoomTutorialOverlay( + onComplete: _onTutorialComplete, + ), + ], ); } @@ -161,6 +209,7 @@ class _OrganSelectorPageState extends State { isBodyHidden: viewModel.isBodyHidden, tooltipOrganId: viewModel.tooltipOrganId, isArabic: _appState.isArabic(), + zoomScale: viewModel.currentZoomScale, ); }, ), @@ -212,6 +261,26 @@ class _OrganSelectorPageState extends State { ); } + Widget _buildViewZoomButtons(SymptomsCheckerViewModel viewModel) { + return PositionedDirectional( + end: 16.w, + top: 36.h, + child: Column( + children: [ + _buildToggleButton( + icon: "assets/images/svg/zoom-in.svg", + onTap: viewModel.toggleZoomIn, + ), + SizedBox(height: 16.h), + _buildToggleButton( + icon: "assets/images/svg/zoom_out.svg", + onTap: viewModel.toggleZoomOut, + ), + ], + ), + ); + } + Widget _buildToggleButton({required String icon, required VoidCallback onTap}) { return GestureDetector( onTap: onTap, diff --git a/lib/presentation/symptoms_checker/possible_conditions_screen.dart b/lib/presentation/symptoms_checker/possible_conditions_screen.dart index 323a13c2..f7740602 100644 --- a/lib/presentation/symptoms_checker/possible_conditions_screen.dart +++ b/lib/presentation/symptoms_checker/possible_conditions_screen.dart @@ -2,8 +2,10 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; +import 'package:hmg_patient_app_new/core/location_util.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -15,8 +17,11 @@ import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/faculity_selection/facility_type_selection_widget.dart'; +import 'package:hmg_patient_app_new/presentation/appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart'; import 'package:hmg_patient_app_new/presentation/appointments/widgets/region_bottomsheet/region_list_widget.dart'; +import 'package:hmg_patient_app_new/presentation/emergency_services/nearest_er_page.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/widgets/condition_card.dart'; +import 'package:hmg_patient_app_new/presentation/symptoms_checker/widgets/triage_level_card.dart'; import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -24,37 +29,140 @@ import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:provider/provider.dart'; -import 'package:shimmer/shimmer.dart'; -import '../appointments/widgets/hospital_bottom_sheet/hospital_bottom_sheet_body.dart'; +class PossibleConditionsPage extends StatefulWidget { + const PossibleConditionsPage({super.key}); -class PossibleConditionsPage extends StatelessWidget { - PossibleConditionsPage({super.key}); + @override + State createState() => _PossibleConditionsPageState(); +} +class _PossibleConditionsPageState extends State { late SymptomsCheckerViewModel symptomsCheckerViewModel; late BookAppointmentsViewModel bookAppointmentsViewModel; late AppointmentViaRegionViewmodel regionalViewModel; + late AppState appState; + + @override + void initState() { + super.initState(); + WidgetsBinding.instance.addPostFrameCallback((_) { + symptomsCheckerViewModel = context.read(); + + // Call GetTriage API to fetch triage level + _fetchTriageLevel(); + + // NOTE: Do NOT clear selections here - we need the evidence for getExplanations API + // The evidence (symptoms, risk factors, suggestions) is needed when user taps "Explain, Why?" on condition cards + // symptomsCheckerViewModel.clearSelectionsForPossibleConditions(); + }); + } + + void _fetchTriageLevel() { + // Build evidence from all selections + List> evidence = []; + + // Get all evidence with proper sources + final allEvidence = symptomsCheckerViewModel.getAllEvidenceWithSources(); + + // Convert to simple format (id + choice_id) + for (var item in allEvidence) { + evidence.add({ + "id": item["id"] ?? "", + "choice_id": "present", + }); + } + + // Call Triage API + symptomsCheckerViewModel.fetchTriageLevel( + evidence: evidence, + onSuccess: (response) { + // Triage level data is now stored in ViewModel + // UI will update automatically via Consumer + }, + onError: (error) { + // Silently fail - show conditions without triage card + debugPrint("Error fetching triage level: $error"); + }, + ); + } Widget _buildLoadingShimmer() { - return ListView.separated( - shrinkWrap: true, - physics: const NeverScrollableScrollPhysics(), - padding: EdgeInsets.all(16.w), - itemCount: 10, - separatorBuilder: (_, __) => SizedBox(height: 12.h), - itemBuilder: (context, index) { - return Shimmer.fromColors( - baseColor: Colors.grey[300]!, - highlightColor: Colors.grey[100]!, - child: Container( - height: 80.h, + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Triage Level Card Shimmer + + // Condition Cards Shimmer + ...List.generate(5, (index) { + return Container( + width: double.infinity, + margin: EdgeInsets.only(left: 24.w, right: 24.w, bottom: 16.h), + padding: EdgeInsets.all(20.w), decoration: BoxDecoration( color: AppColors.whiteColor, - borderRadius: BorderRadius.circular(10.r), + borderRadius: BorderRadius.circular(24.r), + boxShadow: [ + BoxShadow( + color: Colors.black.withValues(alpha: 0.08), + blurRadius: 10.r, + offset: Offset(0, 2.h), + ), + ], ), - ), - ); - }, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Condition name shimmer + Container( + height: 20.h, + width: 220.w, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(8.r), + ), + ).toShimmer2(isShow: true, radius: 8.r), + SizedBox(height: 8.h), + + Container( + height: 20.h, + width: 200.w, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(8.r), + ), + ).toShimmer2(isShow: true, radius: 8.r), + SizedBox(height: 8.h), + + // Probability percentage shimmer + Container( + height: 16.h, + width: 100.w, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(8.r), + ), + ).toShimmer2(isShow: true, radius: 8.r), + SizedBox(height: 30.h), + // Action buttons shimmer + Row( + children: [ + Expanded( + child: Container( + height: 40.h, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(12.r), + ), + ).toShimmer2(isShow: true, radius: 12.r), + ), + ], + ), + ], + ), + ); + }), + ], ); } @@ -79,6 +187,12 @@ class PossibleConditionsPage extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ + // Triage Level Card at the top (if available) + if (symptomsCheckerViewModel.triageLevelResponse?.dataDetails != null) + TriageLevelCard( + triageLevelData: symptomsCheckerViewModel.triageLevelResponse!.dataDetails!, + ), + SizedBox(height: 16.h), ListView.separated( padding: EdgeInsets.zero, @@ -88,16 +202,35 @@ class PossibleConditionsPage extends StatelessWidget { separatorBuilder: (context, index) => SizedBox(height: 16.h), itemBuilder: (context, index) { final condition = conditions[index]; + // Create temporary card to access severity enum + final conditionCard = ConditionCard( + condition: condition, + symptoms: symptoms, + ); + return ConditionCard( condition: condition, symptoms: symptoms, onActionPressed: () { + // Check if condition is Emergency - redirect to Nearest ER page + if (conditionCard.severityEnum == PossibleConditionsSeverityEnum.emergency) { + Navigator.push( + context, + MaterialPageRoute( + builder: (context) => NearestErPage(), + ), + ); + return; + } + + // For non-emergency cases, continue with normal booking flow LoaderBottomSheet.showLoader(); symptomsCheckerViewModel.getClinicConditionsFromCategory( categoryName: (condition.conditionDetails!.category!.name) ?? "Other", onSuccess: (value) { LoaderBottomSheet.hideLoader(); - print(symptomsCheckerViewModel.clinicDetailsList.first.clinicID); + debugPrint("isBookingFromSymptomsChecker:: ${symptomsCheckerViewModel.isBookingFromSymptomsChecker}"); + debugPrint(symptomsCheckerViewModel.clinicDetailsList.first.clinicID.toString()); initiateBookAppointmentFlow(context); }, onError: (err) { @@ -124,7 +257,11 @@ class PossibleConditionsPage extends StatelessWidget { loadingText: LocaleKeys.areYouSureYouWantToExitProgress.tr(context: context), isShowActionButtons: true, onCancelTap: () => Navigator.pop(context), - onConfirmTap: () => onConfirm(), + onConfirmTap: () { + // Clear all evidence before exiting + symptomsCheckerViewModel.clearSelectionsForPossibleConditions(); + onConfirm(); + }, ), callBackFunc: () {}, isFullScreen: false, @@ -168,9 +305,9 @@ class PossibleConditionsPage extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - title.toText14(weight: FontWeight.w600, color: AppColors.textColor), + title.toText14(isBold: true, color: AppColors.textColor), SizedBox(height: 4.h), - description.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + description.toText12(isBold: true, color: AppColors.greyTextColor), ], ), ), @@ -221,6 +358,7 @@ class PossibleConditionsPage extends StatelessWidget { symptomsCheckerViewModel = context.read(); bookAppointmentsViewModel = context.read(); regionalViewModel = context.read(); + appState = getIt.get(); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, body: CollapsingListView( @@ -238,7 +376,10 @@ class PossibleConditionsPage extends StatelessWidget { trailing: _buildTrailingSection(context), child: Consumer( builder: (context, symptomsCheckerViewModel, child) { - if (symptomsCheckerViewModel.isPossibleConditionsLoading || symptomsCheckerViewModel.isTriageDiagnosisLoading) { + // Show shimmer while loading triage level or conditions + if (symptomsCheckerViewModel.isPossibleConditionsLoading || + symptomsCheckerViewModel.isTriageDiagnosisLoading || + symptomsCheckerViewModel.isTriageLevelLoading) { return _buildLoadingShimmer(); } // Get conditions directly from ViewModel @@ -246,7 +387,7 @@ class PossibleConditionsPage extends StatelessWidget { // Get selected symptoms names for display final symptoms = symptomsCheckerViewModel .getAllSelectedSymptoms() - .map((s) => s.commonName ?? s.name ?? '') + .map((s) => (appState.isArabic() ? s.commonNameAr ?? s.nameAr ?? '' : s.commonName ?? s.name ?? '')) .where((name) => name.isNotEmpty) .take(3) .toList(); @@ -258,7 +399,19 @@ class PossibleConditionsPage extends StatelessWidget { } initiateBookAppointmentFlow(BuildContext context) { - bookAppointmentsViewModel.getLocation(); + // Set flag to indicate booking is from symptoms checker + symptomsCheckerViewModel.setBookingFromSymptomsChecker(true); + // Check if clinicDetailsList is not empty before accessing + if (symptomsCheckerViewModel.clinicDetailsList.isEmpty) { + // Show error if no clinic details available + final dialogService = getIt(); + dialogService.showErrorBottomSheet( + message: appState.isArabic() ? "لا توجد تفاصيل عيادة متاحة" : "No clinic details available", + ); + return; + } + + // bookAppointmentsViewModel.getLocation(); bookAppointmentsViewModel.setSelectedClinic(GetClinicsListResponseModel( clinicID: symptomsCheckerViewModel.clinicDetailsList.first.clinicID, clinicDescription: symptomsCheckerViewModel.clinicDetailsList.first.category, @@ -272,7 +425,7 @@ class PossibleConditionsPage extends StatelessWidget { getTitle(AppointmentViaRegionViewmodel data, BuildContext context) { if (data.selectedRegionId == null) { - return LocaleKeys.selectRegion.tr(context: context).toText20(weight: FontWeight.w600); + return LocaleKeys.selectRegion.tr(context: context).toText20(isBold: true); } else { return Transform.flip( flipX: data.isArabic ? true : false, @@ -283,6 +436,10 @@ class PossibleConditionsPage extends StatelessWidget { ), ).onPress(() { data.handleBackPress(); + // Reset flag if user goes back during symptoms checker booking + if (symptomsCheckerViewModel.isBookingFromSymptomsChecker) { + symptomsCheckerViewModel.setBookingFromSymptomsChecker(false); + } }); } } @@ -293,8 +450,10 @@ class PossibleConditionsPage extends StatelessWidget { regionalViewModel.flush(); regionalViewModel.setBottomSheetType(type); // AppointmentViaRegionViewmodel? viewmodel = null; - showCommonBottomSheetWithoutHeight(context, title: "", titleWidget: Consumer(builder: (_, data, __) => getTitle(data, context)), isDismissible: false, - child: Consumer(builder: (context, data, __) { + showCommonBottomSheetWithoutHeight(context, + title: "", + titleWidget: Consumer(builder: (_, data, __) => getTitle(data, context)), + isDismissible: false, child: Consumer(builder: (context, data, __) { return getRegionalSelectionWidget(data, context); }), callBackFunc: () {}); } @@ -332,26 +491,73 @@ class PossibleConditionsPage extends StatelessWidget { } }, onHospitalSearch: (value) { - data.searchHospitals(value ?? ""); + data.searchHospitals(value); }, selectedFacility: data.selectedFacility, hmcCount: data.hmcCount, hmgCount: data.hmgCount, + sortByLocation: data.sortByLocation, + onSortByLocationToggle: (value) => _handleSortByLocationToggle(value, data), ); } if (data.bottomSheetState == AppointmentViaRegionState.DOCTOR_SELECTION) { //if the region screen is opened for the dental clinic then the project id will be in the hospital list as the list is formed form the get project api var id = ""; if (data.regionBottomSheetType == RegionBottomSheetType.REGION_FOR_DENTAL_AND_LASER) { - id = regionalViewModel.selectedHospital?.hospitalList.first.iD?.toString() ?? ""; + // Check if hospitalList is not empty before accessing first + if (regionalViewModel.selectedHospital?.hospitalList != null && regionalViewModel.selectedHospital!.hospitalList.isNotEmpty) { + id = regionalViewModel.selectedHospital!.hospitalList.first.iD?.toString() ?? ""; + } } else { - id = regionalViewModel.selectedHospital?.patientDoctorAppointmentList?.first.projectID?.toString() ?? ""; + // Check if patientDoctorAppointmentList is not empty before accessing first + if (regionalViewModel.selectedHospital?.patientDoctorAppointmentList != null && + regionalViewModel.selectedHospital!.patientDoctorAppointmentList!.isNotEmpty) { + id = regionalViewModel.selectedHospital!.patientDoctorAppointmentList!.first.projectID?.toString() ?? ""; + } } bookAppointmentsViewModel.setProjectID(id); return SizedBox.shrink(); } else { return SizedBox.shrink(); } - return SizedBox.shrink(); + } + + void _handleSortByLocationToggle(bool value, AppointmentViaRegionViewmodel regionVM) { + if (value) { + final locationUtils = getIt.get(); + locationUtils.getLocation( + isShowConfirmDialog: true, + onSuccess: (latLng) { + regionVM.setSortByLocation(true); + _refreshHospitalListAfterApi(regionVM); + }, + onFailure: () { + regionVM.setSortByLocation(false); + locationUtils.onFailureDilouge(); + }, + onLocationDeniedForever: () { + regionVM.setSortByLocation(false); + }, + ); + } else { + appState.resetLocation(); + regionVM.setSortByLocation(false); + _refreshHospitalListAfterApi(regionVM); + } + } + + void _refreshHospitalListAfterApi(AppointmentViaRegionViewmodel regionVM) { + void listener() { + if (!bookAppointmentsViewModel.isRegionListLoading) { + bookAppointmentsViewModel.removeListener(listener); + final selectedRegion = regionVM.selectedRegionId; + if (selectedRegion != null && bookAppointmentsViewModel.hospitalList?.registeredDoctorMap?[selectedRegion] != null) { + regionVM.setDisplayListAndRegionHospitalList(bookAppointmentsViewModel.hospitalList!.registeredDoctorMap![selectedRegion]); + } + } + } + + bookAppointmentsViewModel.addListener(listener); + bookAppointmentsViewModel.getRegionMappedProjectList(); } } diff --git a/lib/presentation/symptoms_checker/risk_factors_screen.dart b/lib/presentation/symptoms_checker/risk_factors_screen.dart index 462cffbd..0e150733 100644 --- a/lib/presentation/symptoms_checker/risk_factors_screen.dart +++ b/lib/presentation/symptoms_checker/risk_factors_screen.dart @@ -1,5 +1,4 @@ import 'package:easy_localization/easy_localization.dart'; -import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; @@ -84,7 +83,7 @@ class _RiskFactorsScreenState extends State { Expanded( child: optionText.toText14( color: riskFactorId == "not_applicable" ? AppColors.errorColor : AppColors.textColor, - weight: FontWeight.w500, + weight: FontWeight.w600, )), ], ), @@ -121,29 +120,28 @@ class _RiskFactorsScreenState extends State { child: RichText( text: TextSpan( style: TextStyle( - height: 1.3, - fontSize: 13.f, - fontWeight: FontWeight.w500, - color: AppColors.greyInfoTextColor, - fontFamily: isArabic ? 'GESSTwo' : 'Poppins' - ), + height: 1.3, + fontSize: 13.f, + fontWeight: FontWeight.w600, + color: AppColors.greyInfoTextColor, + fontFamily: isArabic ? 'CairoArabic' : 'Poppins'), children: [ TextSpan( text: LocaleKeys.aboveYouSeeCommonRiskFactors.tr(context: context), ), - TextSpan( - text: LocaleKeys.readMore.tr(context: context), - style: TextStyle( - color: AppColors.primaryRedColor, - fontWeight: FontWeight.w500, - ), - recognizer: TapGestureRecognizer() - ..onTap = () { - // handle tap - navigate or show bottom sheet - debugPrint('Read more tapped'); - // Example: Navigator.push(context, MaterialPageRoute(builder: (_) => RiskFactorsDetailScreen())); - }, - ), + // TextSpan( + // text: LocaleKeys.readMore.tr(context: context), + // style: TextStyle( + // color: AppColors.primaryRedColor, + // fontWeight: FontWeight.w600, + // ), + // recognizer: TapGestureRecognizer() + // ..onTap = () { + // // // handle tap - navigate or show bottom sheet + // // debugPrint('Read more tapped'); + // // Navigator.push(context, MaterialPageRoute(builder: (_) => RiskFactorsDetailScreen())); + // }, + // ), ], ), ), @@ -223,7 +221,7 @@ class _RiskFactorsScreenState extends State { children: [ Expanded( child: CollapsingListView( - title: LocaleKeys.riskFactors.tr(context: context), + title: LocaleKeys.doAnyOfTheseApply.tr(context: context), leadingCallback: () => context.pop(), child: viewModel.isRiskFactorsLoading ? _buildLoadingShimmer() diff --git a/lib/presentation/symptoms_checker/suggestions_screen.dart b/lib/presentation/symptoms_checker/suggestions_screen.dart index cbfc15a1..5e102581 100644 --- a/lib/presentation/symptoms_checker/suggestions_screen.dart +++ b/lib/presentation/symptoms_checker/suggestions_screen.dart @@ -86,7 +86,7 @@ class _SuggestionsScreenState extends State { Expanded( child: optionText.toText14( color: suggestionId == "not_applicable" ? AppColors.errorColor : AppColors.textColor, - weight: FontWeight.w500, + weight: FontWeight.w600, )), ], ), @@ -122,6 +122,7 @@ class _SuggestionsScreenState extends State { Expanded( child: LocaleKeys.suggestionAIListDescription.tr(context: context).toText12( color: AppColors.greyInfoTextColor, + fontWeight: FontWeight.w600 ), ) ], @@ -199,7 +200,7 @@ class _SuggestionsScreenState extends State { children: [ Expanded( child: CollapsingListView( - title: LocaleKeys.suggestions.tr(), + title: LocaleKeys.riskFactorPageTitle.tr() , leadingCallback: () => context.pop(), child: viewModel.isSuggestionsLoading ? _buildLoadingShimmer() diff --git a/lib/presentation/symptoms_checker/symptoms_selector_screen.dart b/lib/presentation/symptoms_checker/symptoms_selector_screen.dart index d7fbf63c..6a83316b 100644 --- a/lib/presentation/symptoms_checker/symptoms_selector_screen.dart +++ b/lib/presentation/symptoms_checker/symptoms_selector_screen.dart @@ -1,5 +1,6 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; @@ -28,12 +29,20 @@ class SymptomsSelectorPage extends StatefulWidget { class _SymptomsSelectorPageState extends State { late DialogService dialogService; late AppState _appState; + final TextEditingController _searchController = TextEditingController(); @override void initState() { super.initState(); dialogService = getIt(); _appState = getIt(); + + // Listen to search input changes + _searchController.addListener(() { + final viewModel = context.read(); + viewModel.filterSymptoms(_searchController.text, isArabic: _appState.isArabic()); + }); + // Initialize symptom groups based on selected organs WidgetsBinding.instance.addPostFrameCallback((_) { final viewModel = context.read(); @@ -41,6 +50,12 @@ class _SymptomsSelectorPageState extends State { }); } + @override + void dispose() { + _searchController.dispose(); + super.dispose(); + } + void _onNextPressed(SymptomsCheckerViewModel viewModel) { if (viewModel.hasSelectedSymptoms) { // Navigate to triage screen @@ -100,7 +115,56 @@ class _SymptomsSelectorPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, children: [ SizedBox(height: 16.h), - ...viewModel.organSymptomsResults.map((organResult) { + // Inline search field + Padding( + padding: EdgeInsets.symmetric(horizontal: 24.w), + child: Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 12.r, + ), + child: TextField( + controller: _searchController, + style: TextStyle( + fontSize: 14.f, + color: AppColors.textColor, + fontFamily: _appState.isArabic() ? 'CairoArabic' : 'Poppins', + ), + decoration: InputDecoration( + hintText: LocaleKeys.search.tr(context: context), + hintStyle: TextStyle( + color: AppColors.greyTextColor, + fontSize: 14.f, + ), + prefixIcon: Icon( + Icons.search, + color: AppColors.greyTextColor, + size: 20.h, + ), + suffixIcon: _searchController.text.isNotEmpty + ? IconButton( + icon: Icon( + Icons.clear, + color: AppColors.greyTextColor, + size: 20.h, + ), + onPressed: () { + _searchController.clear(); + viewModel.clearSymptomFilter(); + }, + ) + : null, + border: InputBorder.none, + contentPadding: EdgeInsets.symmetric( + horizontal: 16.w, + vertical: 12.h, + ), + ), + ), + ), + ), + SizedBox(height: 16.h), + ...viewModel.filteredOrganSymptomsResults.map((organResult) { // Find matching organ ID from selected organs String? organId; String? organName; @@ -161,7 +225,7 @@ class _SymptomsSelectorPageState extends State { children: [ Expanded( child: Text( - '${LocaleKeys.possibleSymptomsRelatedTo.tr(context: context)} "$organName"', + LocaleKeys.possibleSymptomsRelatedTo.tr(context: context), style: TextStyle(fontSize: 18.f, fontWeight: FontWeight.w600, color: AppColors.textColor), ), ), diff --git a/lib/presentation/symptoms_checker/triage_screen.dart b/lib/presentation/symptoms_checker/triage_screen.dart index b4ceff4c..95de9464 100644 --- a/lib/presentation/symptoms_checker/triage_screen.dart +++ b/lib/presentation/symptoms_checker/triage_screen.dart @@ -1,5 +1,3 @@ -import 'dart:developer'; - import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; @@ -20,6 +18,7 @@ import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; import 'package:lottie/lottie.dart'; import 'package:provider/provider.dart'; @@ -64,10 +63,10 @@ class _TriagePageState extends State { void _handleTriageResponse() { // Case 1: Emergency evidence detected - if (viewModel.hasEmergencyEvidence) { - _showEmergencyDialog(); - return; - } + // if (viewModel.hasEmergencyEvidence) { + // _showEmergencyDialog(); + // return; + // } // Get the highest probability condition final conditions = viewModel.currentConditions ?? []; @@ -79,8 +78,11 @@ class _TriagePageState extends State { highestProbability = (sortedConditions.first.probability ?? 0.0) * 100; } - // Case 2: Should stop flag is true OR Case 3: Probability >= 70% OR Case 4: 7 or more questions answered - if (viewModel.shouldStopTriage || highestProbability >= 70.0 || viewModel.triageQuestionCount >= 7) { + // Case 2: Should stop flag is true OR + // Case 3: Probability >= 70% OR + // Case 4: 30 or more questions answered + // if (viewModel.shouldStopTriage || highestProbability >= 70.0 || viewModel.triageQuestionCount >= 30) { + if (highestProbability >= 70.0 || viewModel.triageQuestionCount >= 4 || viewModel.shouldStopTriage) { // Navigate to results/possible conditions screen context.navigateWithName(AppRoutes.possibleConditionsPage); return; @@ -123,7 +125,7 @@ class _TriagePageState extends State { SizedBox(height: 8.h), LocaleKeys.emergencyTriage.tr(context: context).toText28(color: AppColors.whiteColor, isBold: true), SizedBox(height: 8.h), - LocaleKeys.emergencyEvidenceDetected.tr(context: context).toText14(color: AppColors.whiteColor, weight: FontWeight.w500), + LocaleKeys.emergencyEvidenceDetected.tr(context: context).toText14(color: AppColors.whiteColor, isBold: true), SizedBox(height: 24.h), CustomButton( text: LocaleKeys.confirm.tr(context: context), @@ -157,7 +159,13 @@ class _TriagePageState extends State { } void _onPreviousPressed() { - context.pop(); + // Try to go back to previous question + bool wentBack = viewModel.goBackToPreviousTriageQuestion(); + + if (!wentBack) { + // If already at first question, go back to suggestions screen + context.pop(); + } } void _onNextPressed() { @@ -175,36 +183,64 @@ class _TriagePageState extends State { return; } - // Collect all evidence from all items - for (var item in currentQuestion.items!) { - final itemId = item.id ?? ""; - if (itemId.isEmpty) continue; - - final selectedChoiceIndex = viewModel.getTriageChoiceForItem(itemId); - if (selectedChoiceIndex == null) continue; - - if (item.choices != null && selectedChoiceIndex < item.choices!.length) { - final selectedChoice = item.choices![selectedChoiceIndex]; - final choiceId = selectedChoice.id ?? ""; - - if (choiceId.isNotEmpty) { - viewModel.addTriageEvidence(itemId, choiceId); + // Collect evidence based on question type + if (viewModel.isTriageQuestionSingleSelection) { + // Type 1: Single selection - only one evidence entry with "Yes" choice + final selectedItemId = viewModel.selectedSingleItemId; + + if (selectedItemId != null) { + // Find the item and its "Yes" choice + for (var item in currentQuestion.items!) { + if (item.id == selectedItemId) { + // Find the "Yes" choice (case-insensitive) + String? yesChoiceId; + if (item.choices != null) { + for (var choice in item.choices!) { + final label = choice.label?.toLowerCase() ?? ''; + if (label == 'yes' || label == 'نعم') { + yesChoiceId = choice.id; + break; + } + } + } + + // If "Yes" choice found, add evidence + if (yesChoiceId != null && yesChoiceId.isNotEmpty) { + viewModel.addTriageEvidence(selectedItemId, yesChoiceId); + } + break; + } + } + } + } else { + // Type 2: Multi-item selection - collect evidence from all items + for (var item in currentQuestion.items!) { + final itemId = item.id ?? ""; + if (itemId.isEmpty) continue; + + final selectedChoiceIndex = viewModel.getTriageChoiceForItem(itemId); + if (selectedChoiceIndex == null) continue; + + if (item.choices != null && selectedChoiceIndex < item.choices!.length) { + final selectedChoice = item.choices![selectedChoiceIndex]; + final choiceId = selectedChoice.id ?? ""; + + if (choiceId.isNotEmpty) { + viewModel.addTriageEvidence(itemId, choiceId); + } } } } - // Get all evidence: initial symptoms + risk factors + suggestions + triage evidence - List initialEvidenceIds = viewModel.getAllEvidenceIds(); + // Get all evidence: initial symptoms + risk factors + suggestions (with sources) + triage evidence + List> initialEvidenceList = viewModel.getAllEvidenceWithSources(); List> triageEvidence = viewModel.getTriageEvidence(); - log("initialEvidenceIds: ${initialEvidenceIds.toString()}"); - log("triageEvidence: ${triageEvidence.toString()}"); - // Call API with updated evidence viewModel.getDiagnosisForTriage( age: viewModel.selectedAge!, gender: viewModel.selectedGender!.toLowerCase() == "male" ? 1 : 2, - evidenceIds: initialEvidenceIds, + initialEvidenceList: initialEvidenceList, triageEvidence: triageEvidence, language: viewModel.appState.isArabic() ? 'ar' : 'en', onSuccess: (response) { @@ -216,6 +252,159 @@ class _TriagePageState extends State { ); } + void _showRationaleBottomSheet(BuildContext context) { + // Get all current evidence to send to the API + List> evidence = []; + + // Add all initial evidence (symptoms + risk factors + suggestions) with sources + final initialEvidence = viewModel.getAllEvidenceWithSources(); + evidence.addAll(initialEvidence); + + // Add triage evidence answered so far + final triageEvidence = viewModel.getTriageEvidence(); + for (var triageItem in triageEvidence) { + evidence.add({ + "id": triageItem["id"] ?? "", + "choice_id": triageItem["choice_id"] ?? "present", + "source": "initial", + }); + } + + // Show loading state + LoaderBottomSheet.showLoader(); + + // Call Rationale API + viewModel.fetchRationale( + evidence: evidence, + onSuccess: (response) { + LoaderBottomSheet.hideLoader(); + + // Get observation params (symptoms being analyzed) + final observationParams = response.dataDetails?.observationParams ?? []; + + // Build symptom names string + String symptomNames = ''; + if (observationParams.isNotEmpty) { + final names = observationParams.map((param) => param.getDisplayName()).where((name) => name.isNotEmpty).toList(); + final isArabic = _appState.isArabic(); + final andSeparator = isArabic ? ' و ' : ' and '; + + if (names.length == 1) { + symptomNames = names.first; + } else if (names.length == 2) { + symptomNames = names.join(andSeparator); + } else if (names.length > 2) { + final lastItem = names.last; + final allButLast = names.sublist(0, names.length - 1); + symptomNames = '${allButLast.join(', ')}$andSeparator$lastItem'; + } + } + + if (symptomNames.isEmpty) { + symptomNames = LocaleKeys.analyzingYourSymptoms.tr(context: context); + } + + // Show bottom sheet with rationale + _displayRationaleBottomSheet(context, symptomNames); + }, + onError: (error) { + LoaderBottomSheet.hideLoader(); + dialogService.showErrorBottomSheet(message: error); + }, + ); + } + + void _displayRationaleBottomSheet(BuildContext context, String symptomNames) { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.whyAmIBeingAskedThis.tr(context: context), + context, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.weAreAskingThisQuestionToBetterUnderstand.tr(context: context, namedArgs: {'symptoms': symptomNames}).toText14( + color: AppColors.textColor, + ), + SizedBox(height: 24.h), + CustomButton( + text: LocaleKeys.ok.tr(context: context), + onPressed: () => Navigator.pop(context), + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + ), + ], + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + + void _showInstructionsBottomSheet(BuildContext context, TriageQuestion question) { + final instructions = question.instruction ?? []; + final hasExplication = question.explication != null && question.explication!.isNotEmpty; + final hasInstructions = instructions.isNotEmpty; + + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.information.tr(context: context), + context, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Explication (if available) + if (hasExplication) ...[ + (question.explication!).toText14( + color: AppColors.textColor, + ), + if (hasInstructions) SizedBox(height: 16.h), + ], + + // Instructions list with bullets (if available) + if (hasInstructions) ...[ + ...instructions.asMap().entries.map((entry) { + final instruction = entry.value; + + return Padding( + padding: EdgeInsets.only(bottom: 12.h), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.only(top: 6.h, right: 12.w, left: 12.w), + width: 6.w, + height: 6.h, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColors.primaryRedColor, + ), + ), + Expanded( + child: instruction.toText14( + color: AppColors.textColor, + ), + ), + ], + ), + ); + }).toList(), + ], + + SizedBox(height: 24.h), + CustomButton( + text: LocaleKeys.ok.tr(context: context), + onPressed: () => Navigator.pop(context), + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + ), + ], + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + @override Widget build(BuildContext context) { return Scaffold( @@ -333,7 +522,7 @@ class _TriagePageState extends State { if (viewModel.currentTriageQuestion == null) { return Center( - child: LocaleKeys.noQuestionAvailable.tr(context: context).toText16(weight: FontWeight.w500), + child: LocaleKeys.noQuestionAvailable.tr(context: context).toText16(isBold: true), ); } @@ -372,37 +561,115 @@ class _TriagePageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - // Main question text - (question.text ?? "").toText16(weight: FontWeight.w600, color: AppColors.textColor), + // Main question text with optional help icon + Row( + children: [ + Expanded( + child: (question.text ?? "").toText16(isBold: true, color: AppColors.textColor), + ), + // Show help icon if instructions are available + if (question.hasInstructions) ...[ + SizedBox(width: 8.w), + GestureDetector( + onTap: () => _showInstructionsBottomSheet(context, question), + child: Utils.buildSvgWithAssets( + icon: AppAssets.alertSquare, + height: 24.h, + width: 24.h, + iconColor: AppColors.textColor, + ), + ), + ], + ], + ), SizedBox(height: 24.h), - // Show all items with dividers - ...List.generate(question.items!.length, (itemIndex) { - final item = question.items![itemIndex]; - final itemId = item.id ?? ""; - final choices = item.choices ?? []; - - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - // Item name (sub-question) - (item.name ?? "").toText14(weight: FontWeight.w600, color: AppColors.textColor), - SizedBox(height: 8.h), - // Choices for this item - ...List.generate(choices.length, (choiceIndex) { - bool selected = viewModel.getTriageChoiceForItem(itemId) == choiceIndex; - return _buildOptionItem(itemId, choiceIndex, selected, choices[choiceIndex].label ?? ""); - }), - - // Add divider between items (but not after the last one) - if (itemIndex < question.items!.length - 1) ...[ + // Type 1: Show items as checkboxes only (no choices displayed) + if (viewModel.isTriageQuestionSingleSelection) ...[ + ...List.generate(question.items!.length, (itemIndex) { + final item = question.items![itemIndex]; + final itemId = item.id ?? ""; + final itemName = item.name ?? ""; + final isSelected = viewModel.selectedSingleItemId == itemId; + + return GestureDetector( + onTap: () => _onOptionSelectedForItem(itemId, 0), // Pass 0 as placeholder + child: Container( + margin: EdgeInsets.only(bottom: 12.h), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AnimatedContainer( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + width: 24.w, + height: 24.w, + decoration: BoxDecoration( + color: isSelected ? AppColors.primaryRedColor : Colors.transparent, + borderRadius: BorderRadius.circular(5.r), + border: Border.all( + color: isSelected ? AppColors.primaryRedColor : AppColors.checkBoxBorderColor, + width: 1.w, + ), + ), + child: isSelected ? Icon(Icons.check, size: 16.f, color: AppColors.whiteColor) : null, + ), + SizedBox(width: 12.w), + Expanded(child: itemName.toText13(isBold: true)), + ], + ), + ), + ); + }), + ] else ...[ + // Type 2: Show all items with their choices + ...List.generate(question.items!.length, (itemIndex) { + final item = question.items![itemIndex]; + final itemId = item.id ?? ""; + final choices = item.choices ?? []; + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Item name (sub-question) + (item.name ?? "").toText14(isBold: true, color: AppColors.textColor), SizedBox(height: 8.h), - Divider(color: AppColors.bottomNAVBorder, thickness: 1), - SizedBox(height: 10.h), + // Choices for this item + ...List.generate(choices.length, (choiceIndex) { + // Check selection based on question type + bool selected = viewModel.isTriageQuestionSingleSelection + ? viewModel.isTriageSingleOptionSelected(itemId, choiceIndex) + : viewModel.getTriageChoiceForItem(itemId) == choiceIndex; + return _buildOptionItem(itemId, choiceIndex, selected, choices[choiceIndex].label ?? ""); + }), + + // Add divider between items (but not after the last one) + if (itemIndex < question.items!.length - 1) ...[ + SizedBox(height: 8.h), + Divider(color: AppColors.bottomNAVBorder, thickness: 1), + SizedBox(height: 10.h), + ], ], + ); + }), + ], + + SizedBox(height: 12.h), + GestureDetector( + onTap: () => _showRationaleBottomSheet(context), + child: Row( + children: [ + Expanded( + child: LocaleKeys.whyAmIBeingAskedThis.tr(context: context).toText12( + decorationColor: AppColors.primaryRedColor, + isUnderLine: true, + color: AppColors.primaryRedColor, + fontWeight: FontWeight.w600, + ), + ) ], - ); - }), + ), + ), ], ), ), @@ -430,7 +697,7 @@ class _TriagePageState extends State { child: selected ? Icon(Icons.check, size: 16.f, color: AppColors.whiteColor) : null, ), SizedBox(width: 12.w), - Expanded(child: optionText.toText13(weight: FontWeight.w500)), + Expanded(child: optionText.toText13(isBold: true)), ], ), ), @@ -466,16 +733,14 @@ class _TriagePageState extends State { children: [ RichText( text: TextSpan( - text: LocaleKeys.possibleSymptom.tr(context: context), + text: "${LocaleKeys.possibleConditions.tr(context: context)} ", style: TextStyle( - color: AppColors.greyTextColor, fontWeight: FontWeight.w600, fontSize: 14.f, fontFamily: isArabic ? 'GESSTwo' : 'Poppins'), + color: AppColors.greyTextColor, fontWeight: FontWeight.w600, fontSize: 14.f, fontFamily: isArabic ? 'CairoArabic' : 'Poppins'), children: [ TextSpan( text: suggestedCondition, style: TextStyle( - color: AppColors.textColor, - fontWeight: FontWeight.w600, - fontSize: 14.f, fontFamily: isArabic ? 'GESSTwo' : 'Poppins'), + color: AppColors.textColor, fontWeight: FontWeight.w600, fontSize: 14.f, fontFamily: isArabic ? 'CairoArabic' : 'Poppins'), ), ], ), @@ -491,7 +756,7 @@ class _TriagePageState extends State { text: TextSpan( text: "${probability.toStringAsFixed(1)}% ", style: TextStyle( - fontFamily: isArabic ? 'GESSTwo' : 'Poppins', + fontFamily: isArabic ? 'CairoArabic' : 'Poppins', color: AppColors.primaryRedColor, fontWeight: FontWeight.w600, fontSize: 14.f, @@ -501,9 +766,9 @@ class _TriagePageState extends State { text: LocaleKeys.symptomsCheckerFindingScore.tr(context: context), style: TextStyle( color: AppColors.textColor, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, fontSize: 13.f, - fontFamily: isArabic ? 'GESSTwo' : 'Poppins', + fontFamily: isArabic ? 'CairoArabic' : 'Poppins', ), ), ], @@ -518,8 +783,8 @@ class _TriagePageState extends State { Expanded( child: CustomButton( text: LocaleKeys.previous.tr(context: context), - onPressed: isFirstQuestion ? () {} : _onPreviousPressed, - isDisabled: isFirstQuestion || viewModel.isTriageDiagnosisLoading, + onPressed: _onPreviousPressed, + isDisabled: viewModel.isTriageDiagnosisLoading, backgroundColor: AppColors.primaryRedColor.withValues(alpha: 0.11), borderColor: Colors.transparent, textColor: AppColors.primaryRedColor, diff --git a/lib/presentation/symptoms_checker/user_consent_screen.dart b/lib/presentation/symptoms_checker/user_consent_screen.dart new file mode 100644 index 00000000..3e046af5 --- /dev/null +++ b/lib/presentation/symptoms_checker/user_consent_screen.dart @@ -0,0 +1,259 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/api_consts.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:provider/provider.dart'; + +class UserConsentScreen extends StatefulWidget { + const UserConsentScreen({super.key}); + + @override + State createState() => _UserConsentScreenState(); +} + +class _UserConsentScreenState extends State { + bool _isTermsAccepted = false; + bool _isPrivacyAccepted = false; + + void _onTermsAndConditionsAgreed() { + setState(() { + _isTermsAccepted = !_isTermsAccepted; + }); + } + + void _onPrivacyPolicyAgreed() { + setState(() { + _isPrivacyAccepted = !_isPrivacyAccepted; + }); + } + + bool get _canProceed => _isTermsAccepted && _isPrivacyAccepted; + + void _onNextPressed() async { + final viewModel = context.read(); + final appState = getIt.get(); + + LoaderBottomSheet.showLoader( + loadingText: LocaleKeys.pleaseWait.tr(context: context), + ); + + // For non-authenticated users, fileNo is null + String? fileNo; + if (appState.isAuthenticated) { + final user = appState.getAuthenticatedUser(); + fileNo = user?.patientId.toString(); + } + + await viewModel.getSymptomsUserDetails( + userName: ApiConsts.symptomsCheckerUsername, + password: ApiConsts.symptomsCheckerPassword, + fileNo: fileNo, + onSuccess: () { + LoaderBottomSheet.hideLoader(); + context.navigateWithName(AppRoutes.symptomsSelectorPage); + }, + onError: (String error) { + LoaderBottomSheet.hideLoader(); + }, + ); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + body: Column( + children: [ + Expanded( + child: CollapsingListView( + title: LocaleKeys.termsService.tr(), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.beforeUsingSymptomsChecker.tr(context: context).toText14(), + SizedBox(height: 30.h), + LocaleKeys.symptomsCheckerNotDiagnosis.tr(context: context).toText14(), + SizedBox(height: 12.h), + LocaleKeys.symptomsCheckerNotEmergency.tr(context: context).toText14(), + SizedBox(height: 12.h), + LocaleKeys.yourDataIsSafe.tr(context: context).toText14(), + SizedBox(height: 30.h), + GestureDetector( + onTap: _onTermsAndConditionsAgreed, + child: Container( + margin: EdgeInsets.only(bottom: 12.h), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AnimatedContainer( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + width: 24.w, + height: 24.w, + decoration: BoxDecoration( + color: _isTermsAccepted ? AppColors.primaryRedColor : Colors.transparent, + borderRadius: BorderRadius.circular(5.r), + border: Border.all( + color: _isTermsAccepted ? AppColors.primaryRedColor : AppColors.checkBoxBorderColor, + width: 1.w, + ), + ), + child: _isTermsAccepted ? Icon(Icons.check, size: 16.f, color: AppColors.whiteColor) : null, + ), + SizedBox(width: 12.w), + Expanded( + child: RichText( + text: TextSpan( + text: LocaleKeys.iAgreeAndAcceptTermsAndConditions.tr(context: context), + style: TextStyle( + fontSize: 16.f, + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', + fontWeight: FontWeight.w500, + color: AppColors.textColor, + ), + children: [ + WidgetSpan( + child: GestureDetector( + onTap: () { + AppState appState = getIt.get(); + Utils.openWebView( + url: appState.isArabic() ? AppUrls.hmgTermsUrlAr : AppUrls.hmgTermsUrlEn, + ); + }, + child: Text( + LocaleKeys.termsAndConditions.tr(context: context), + style: TextStyle( + fontSize: 16.f, + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', + fontWeight: FontWeight.w600, + color: AppColors.primaryRedColor, + decoration: TextDecoration.underline, + decorationColor: AppColors.primaryRedColor, + ), + ), + ), + ), + ], + ), + ), + ), + ], + ), + ), + ), + SizedBox( + height: 16.h, + ), + GestureDetector( + onTap: _onPrivacyPolicyAgreed, + child: Container( + margin: EdgeInsets.only(bottom: 12.h), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + AnimatedContainer( + duration: const Duration(milliseconds: 300), + curve: Curves.easeInOut, + width: 24.w, + height: 24.w, + decoration: BoxDecoration( + color: _isPrivacyAccepted ? AppColors.primaryRedColor : Colors.transparent, + borderRadius: BorderRadius.circular(5.r), + border: Border.all( + color: _isPrivacyAccepted ? AppColors.primaryRedColor : AppColors.checkBoxBorderColor, + width: 1.w, + ), + ), + child: _isPrivacyAccepted ? Icon(Icons.check, size: 16.f, color: AppColors.whiteColor) : null, + ), + SizedBox(width: 12.w), + Expanded( + child: RichText( + text: TextSpan( + text: LocaleKeys.iAgreeHealthInfoCanBeUsed.tr(context: context), + style: TextStyle( + fontSize: 16.f, + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', + fontWeight: FontWeight.w500, + color: AppColors.textColor, + ), + children: [ + WidgetSpan( + child: GestureDetector( + onTap: () { + AppState appState = getIt.get(); + Utils.openWebView( + url: appState.isArabic() ? AppUrls.hmgPrivacyUrlAr : AppUrls.hmgPrivacyUrlEn, + ); + }, + child: Text( + LocaleKeys.privacyPolicyText.tr(context: context), + style: TextStyle( + fontSize: 16.f, + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', + fontWeight: FontWeight.w600, + color: AppColors.primaryRedColor, + decoration: TextDecoration.underline, + decorationColor: AppColors.primaryRedColor, + ), + ), + ), + ), + ], + ), + ), + ), + ], + ), + ), + ), + ], + ).paddingAll(24.w), + ), + ), + _buildStickyBottomCard(context), + ], + ), + ); + } + + Widget _buildStickyBottomCard(BuildContext context) { + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.r), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox(height: 16.h), + Row( + children: [ + Expanded( + child: CustomButton( + text: LocaleKeys.next.tr(context: context), + onPressed: _canProceed ? _onNextPressed : null, + isDisabled: !_canProceed, + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + fontSize: 16.f, + ), + ), + ], + ), + SizedBox(height: 24.h), + ], + ).paddingSymmetrical(24.w, 0), + ); + } +} diff --git a/lib/presentation/symptoms_checker/user_info_selection/pages/age_selection_page.dart b/lib/presentation/symptoms_checker/user_info_selection/pages/age_selection_page.dart index 37802a27..63cff2e4 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/pages/age_selection_page.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/pages/age_selection_page.dart @@ -27,7 +27,7 @@ class AgeSelectionPage extends StatelessWidget { builder: (BuildContext context, symptomsViewModel, Widget? child) { return Column( children: [ - LocaleKeys.dateOfBirthSymptoms.tr(context: context).toText18(weight: FontWeight.w600, color: AppColors.textColor).paddingAll(24.w), + LocaleKeys.dateOfBirthSymptoms.tr(context: context).toText18(isBold: true, color: AppColors.textColor).paddingAll(24.w), SizedBox(height: 30.h), ThreeColumnDatePicker( enableHaptic: true, diff --git a/lib/presentation/symptoms_checker/user_info_selection/pages/gender_selection_page.dart b/lib/presentation/symptoms_checker/user_info_selection/pages/gender_selection_page.dart index 07f44f16..401f8529 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/pages/gender_selection_page.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/pages/gender_selection_page.dart @@ -37,7 +37,7 @@ class GenderSelectionPage extends StatelessWidget { Utils.buildImgWithAssets(icon: iconPng, height: 80.h, width: 80.h, fit: BoxFit.contain), SizedBox(height: 8.h), label.toText16( - weight: FontWeight.w500, + weight: FontWeight.w600, ) ], ), @@ -74,7 +74,7 @@ class GenderSelectionPage extends StatelessWidget { builder: (BuildContext context, symptomsViewModel, Widget? child) { return Column( children: [ - LocaleKeys.genderSymptoms.tr(context: context).toText18(weight: FontWeight.w600, color: AppColors.textColor), + LocaleKeys.genderSymptoms.tr(context: context).toText18(isBold: true, color: AppColors.textColor), SizedBox(height: 70.h), Row( children: [ diff --git a/lib/presentation/symptoms_checker/user_info_selection/pages/height_selection_page.dart b/lib/presentation/symptoms_checker/user_info_selection/pages/height_selection_page.dart index ce8087d4..42e017ae 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/pages/height_selection_page.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/pages/height_selection_page.dart @@ -49,14 +49,14 @@ class HeightSelectionPage extends StatelessWidget { }, child: Container( alignment: Alignment.center, - color: Colors.transparent, + color: Colors.white, child: Text( 'CM', style: TextStyle( - fontWeight: FontWeight.w700, - fontSize: 14.f, - color: viewModel.isHeightCm ? AppColors.textColor : AppColors.textColor.withValues(alpha: 0.6), - ), + fontWeight: FontWeight.w700, + fontSize: 14.f, + color: viewModel.isHeightCm ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.6), + fontFamily: "Poppins"), ), ), ), @@ -71,14 +71,14 @@ class HeightSelectionPage extends StatelessWidget { }, child: Container( alignment: Alignment.center, - color: Colors.transparent, + color: Colors.white, child: Text( 'FT', style: TextStyle( - fontWeight: FontWeight.w700, - fontSize: 14.f, - color: !viewModel.isHeightCm ? AppColors.textColor : AppColors.textColor.withValues(alpha: 0.6), - ), + fontWeight: FontWeight.w700, + fontSize: 14.f, + color: !viewModel.isHeightCm ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.6), + fontFamily: "Poppins"), ), ), ), @@ -130,11 +130,7 @@ class HeightSelectionPage extends StatelessWidget { TextSpan( text: viewModel.isHeightCm ? viewModel.selectedHeight?.round().toString() : viewModel.selectedHeight?.toStringAsFixed(1), - style: TextStyle( - fontSize: 90.f, - color: AppColors.textColor, - height: 1, - ), + style: TextStyle(fontSize: 90.f, color: AppColors.textColor, height: 1, fontFamily: "Poppins"), ), TextSpan( text: viewModel.isHeightCm ? 'cm' : 'ft', @@ -145,7 +141,7 @@ class HeightSelectionPage extends StatelessWidget { ), ], ), - ).paddingOnly(bottom: 100.h, left: 20.w); + ).paddingOnly(bottom: 100.h, left: isFoldable ? 40.w : 20.w); }, ), ), diff --git a/lib/presentation/symptoms_checker/user_info_selection/pages/weight_selection_page.dart b/lib/presentation/symptoms_checker/user_info_selection/pages/weight_selection_page.dart index 6e68eef9..fefc9abe 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/pages/weight_selection_page.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/pages/weight_selection_page.dart @@ -57,13 +57,14 @@ class WeightSelectionPage extends StatelessWidget { }, child: Container( alignment: Alignment.center, - color: Colors.transparent, + color: Colors.white, child: Text( 'KG', style: TextStyle( fontWeight: FontWeight.w700, fontSize: 14.f, - color: isKg ? AppColors.textColor : AppColors.textColor.withValues(alpha: 0.6), + color: isKg ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.6), + fontFamily: "Poppins" ), ), ), @@ -86,7 +87,8 @@ class WeightSelectionPage extends StatelessWidget { style: TextStyle( fontWeight: FontWeight.w700, fontSize: 14.f, - color: !isKg ? AppColors.textColor : AppColors.textColor.withValues(alpha: 0.6), + color: !isKg ? AppColors.primaryRedColor : AppColors.textColor.withValues(alpha: 0.6), + fontFamily: "Poppins" ), ), ), @@ -133,12 +135,12 @@ class WeightSelectionPage extends StatelessWidget { children: [ Text( viewModel.selectedWeight!.round().toString(), - style: TextStyle(fontSize: 100.f, color: AppColors.textColor, height: 1), + style: TextStyle(fontSize: 100.f, color: AppColors.textColor, height: 1, fontFamily: "Poppins"), ), SizedBox(width: 8.w), Text( isKg ? 'kg' : 'lbs', - style: TextStyle(fontWeight: FontWeight.w700, fontSize: 24.f), + style: TextStyle(fontWeight: FontWeight.w700, fontSize: 24.f, fontFamily: "Poppins"), ).paddingOnly(bottom: 10.h), ], ), diff --git a/lib/presentation/symptoms_checker/user_info_selection/user_info_flow_manager.dart b/lib/presentation/symptoms_checker/user_info_selection/user_info_flow_manager.dart index fdfe2288..6672a968 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/user_info_flow_manager.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/user_info_flow_manager.dart @@ -181,7 +181,7 @@ class _UserInfoFlowManagerState extends State { color: AppColors.whiteColor, borderRadius: BorderRadius.vertical(top: Radius.circular(24.r)), ), - padding: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h), + padding: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h, bottom: 24.h), child: SafeArea( top: false, child: isSingleEdit diff --git a/lib/presentation/symptoms_checker/user_info_selection/widgets/custom_date_picker.dart b/lib/presentation/symptoms_checker/user_info_selection/widgets/custom_date_picker.dart index 98051e04..c0b76be7 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/widgets/custom_date_picker.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/widgets/custom_date_picker.dart @@ -146,9 +146,10 @@ class _ThreeColumnDatePickerState extends State { textAlign: TextAlign.center, style: TextStyle( fontSize: selected ? 22.f : 20.f, - fontWeight: selected ? FontWeight.w600 : FontWeight.w500, + fontWeight: selected ? FontWeight.w600 : FontWeight.w600, color: selected ? AppColors.textColor : AppColors.greyTextColor.withValues(alpha: 0.9), height: 1.0, + fontFamily: "Poppins", letterSpacing: selected ? -0.02 * 30 : -0.02 * 18, ), ); diff --git a/lib/presentation/symptoms_checker/user_info_selection/widgets/height_scale.dart b/lib/presentation/symptoms_checker/user_info_selection/widgets/height_scale.dart index e09380eb..d95c6c82 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/widgets/height_scale.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/widgets/height_scale.dart @@ -131,11 +131,11 @@ class _HeightScaleState extends State { child: Text( widget.isCm ? height.round().toString() : height.toStringAsFixed(1), style: TextStyle( - fontSize: 11.f, - color: AppColors.greyTextColor, - fontWeight: FontWeight.w500, - height: 1, - ), + fontSize: 11.f, + color: AppColors.greyTextColor, + fontWeight: FontWeight.w600, + height: isFoldable ? 0.5 : 1, + fontFamily: "Poppins"), textAlign: TextAlign.right, ), ) diff --git a/lib/presentation/symptoms_checker/user_info_selection/widgets/weight_scale.dart b/lib/presentation/symptoms_checker/user_info_selection/widgets/weight_scale.dart index 8526a526..9ab2d73c 100644 --- a/lib/presentation/symptoms_checker/user_info_selection/widgets/weight_scale.dart +++ b/lib/presentation/symptoms_checker/user_info_selection/widgets/weight_scale.dart @@ -152,8 +152,9 @@ class _WeightScaleState extends State { style: TextStyle( fontSize: 11.f, color: AppColors.greyTextColor, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, height: 1, + fontFamily: "Poppins" ), textAlign: TextAlign.center, maxLines: 1, diff --git a/lib/presentation/symptoms_checker/user_info_selection.dart b/lib/presentation/symptoms_checker/user_info_selection_screen.dart similarity index 86% rename from lib/presentation/symptoms_checker/user_info_selection.dart rename to lib/presentation/symptoms_checker/user_info_selection_screen.dart index f1e8413d..589771ec 100644 --- a/lib/presentation/symptoms_checker/user_info_selection.dart +++ b/lib/presentation/symptoms_checker/user_info_selection_screen.dart @@ -17,14 +17,14 @@ import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:provider/provider.dart'; -class UserInfoSelectionPage extends StatefulWidget { - const UserInfoSelectionPage({super.key}); +class UserInfoSelectionScreen extends StatefulWidget { + const UserInfoSelectionScreen({super.key}); @override - State createState() => _UserInfoSelectionPageState(); + State createState() => _UserInfoSelectionScreenState(); } -class _UserInfoSelectionPageState extends State { +class _UserInfoSelectionScreenState extends State { @override void initState() { super.initState(); @@ -98,10 +98,9 @@ class _UserInfoSelectionPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - title.toText14(weight: FontWeight.w500), - subTitle - .toText12(color: AppColors.primaryRedColor, fontWeight: FontWeight.w500) - .toShimmer2(isShow: (leadingIcon == AppAssets.rulerIcon || leadingIcon == AppAssets.weightScale) && hmgServicesVM.isVitalSignLoading), + title.toText14(isBold: true), + subTitle.toText12(color: AppColors.primaryRedColor, isBold: true, isEnglishOnly: true).toShimmer2( + isShow: (leadingIcon == AppAssets.rulerIcon || leadingIcon == AppAssets.weightScale) && hmgServicesVM.isVitalSignLoading), ], ), ], @@ -159,7 +158,9 @@ class _UserInfoSelectionPageState extends State { } } } else { - name = "Guest"; + name = ""; + + /// as per the mahmooud instruction, if user is not authenticated, we will not show any name in the greeting message } return Scaffold( @@ -167,7 +168,10 @@ class _UserInfoSelectionPageState extends State { body: Consumer2( builder: (context, viewModel, hmgServicesVM, child) { // Check if any field is empty - bool hasEmptyFields = viewModel.selectedGender == null || viewModel.selectedAge == null || viewModel.selectedHeight == null || viewModel.selectedWeight == null; + bool hasEmptyFields = viewModel.selectedGender == null || + viewModel.selectedAge == null || + viewModel.selectedHeight == null || + viewModel.selectedWeight == null; // Get display values String genderText = _getLocalizedGender(viewModel.selectedGender, context); @@ -175,9 +179,13 @@ class _UserInfoSelectionPageState extends State { int? displayAge = viewModel.selectedAge ?? userAgeFromDOB; String ageText = displayAge != null ? "$displayAge ${LocaleKeys.years.tr(context: context)}" : LocaleKeys.notSet.tr(context: context); - String heightText = viewModel.selectedHeight != null ? "${viewModel.selectedHeight!.round()} ${viewModel.isHeightCm ? 'cm' : 'ft'}" : LocaleKeys.notSet.tr(context: context); + String heightText = (viewModel.selectedHeight != null && viewModel.selectedHeight != 0) + ? "${viewModel.selectedHeight!.round()} ${viewModel.isHeightCm ? LocaleKeys.cm.tr() : LocaleKeys.ft.tr()}" + : LocaleKeys.notSet.tr(context: context); - String weightText = viewModel.selectedWeight != null ? "${viewModel.selectedWeight!.round()} ${viewModel.isWeightKg ? 'kg' : 'lbs'}" : LocaleKeys.notSet.tr(context: context); + String weightText = (viewModel.selectedWeight != null && viewModel.selectedWeight != 0) + ? "${viewModel.selectedWeight!.round()} ${viewModel.isWeightKg ? LocaleKeys.kg.tr() : LocaleKeys.lb.tr()}" + : LocaleKeys.notSet.tr(context: context); return Column( children: [ @@ -194,10 +202,15 @@ class _UserInfoSelectionPageState extends State { padding: EdgeInsets.symmetric(vertical: 24.h, horizontal: 16.w), child: Column( children: [ - LocaleKeys.helloIsYourInformationUpToDate.tr(namedArgs: {'name': name}).toText16( - weight: FontWeight.w600, - color: AppColors.textColor, - ), + LocaleKeys.helloIsYourInformationUpToDate + .tr(namedArgs: {'name': name}) + .toText16( + weight: FontWeight.w600, + color: AppColors.textColor, + ) + .onPress(() { + context.navigateWithName(AppRoutes.userConsentScreen); + }), SizedBox(height: 32.h), _buildEditInfoTile( context: context, @@ -309,6 +322,7 @@ class _UserInfoSelectionPageState extends State { ), ], ), + SizedBox(height: 24.h), ], ).paddingSymmetrical(24.w, 0), ), diff --git a/lib/presentation/symptoms_checker/widgets/condition_card.dart b/lib/presentation/symptoms_checker/widgets/condition_card.dart index e48f41ea..607b49da 100644 --- a/lib/presentation/symptoms_checker/widgets/condition_card.dart +++ b/lib/presentation/symptoms_checker/widgets/condition_card.dart @@ -8,11 +8,16 @@ import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/triage_response_model.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/symptoms_checker_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/widgets/custom_progress_bar.dart'; +import 'package:hmg_patient_app_new/services/dialog_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/loader/bottomsheet_loader.dart'; +import 'package:provider/provider.dart'; class ConditionCard extends StatelessWidget { final TriageCondition condition; @@ -168,7 +173,7 @@ class ConditionCard extends StatelessWidget { crossAxisAlignment: WrapCrossAlignment.center, children: [ for (int i = 0; i < symptoms.length; i++) ...[ - "● ${symptoms[i]}".toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + "● ${symptoms[i]}".toText12(isBold: true, color: AppColors.greyTextColor, isEnglishOnly: true), if (i != symptoms.length - 1) Padding( padding: EdgeInsets.symmetric(horizontal: 2.w), @@ -212,7 +217,7 @@ class ConditionCard extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ Expanded( - child: title.toText18(weight: FontWeight.w600, color: AppColors.textColor), + child: title.toText18(isBold: true, color: AppColors.textColor), ), AppCustomChipWidget( labelText: tagText, @@ -228,7 +233,7 @@ class ConditionCard extends StatelessWidget { backgroundColor: AppColors.scaffoldBgColor, titleWidget: Row( children: [ - "$percentage%".toText12(fontWeight: FontWeight.bold, color: getChipColorBySeverityEnum(severityEnum)), + "$percentage%".toText12(fontWeight: FontWeight.bold, color: getChipColorBySeverityEnum(severityEnum), isEnglishOnly: true), ], ).paddingSymmetrical(0, 4.h), ), @@ -241,12 +246,22 @@ class ConditionCard extends StatelessWidget { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.commonSymptom.tr(context: context).toText14(weight: FontWeight.w600, color: AppColors.textColor), + LocaleKeys.commonSymptom.tr(context: context).toText14(isBold: true, color: AppColors.textColor), _buildSymptomsRow(), SizedBox(height: 16.h), LocaleKeys.description.tr(context: context).toText14(weight: FontWeight.bold, color: AppColors.textColor), SizedBox(height: 2.h), - description.toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor), + description.toText12(isBold: true, color: AppColors.greyTextColor), + SizedBox(height: 8.h), + GestureDetector( + onTap: () => _showExplanationBottomSheet(context), + child: LocaleKeys.explainWhy.tr(context: context).toText12( + isBold: true, + color: AppColors.primaryRedColor, + isUnderLine: true, + decorationColor: AppColors.primaryRedColor, + ), + ), if (severityEnum != PossibleConditionsSeverityEnum.monitorOnly) CustomButton( text: LocaleKeys.bookAppointment.tr(context: context), @@ -259,7 +274,7 @@ class ConditionCard extends StatelessWidget { borderColor: Colors.transparent, textColor: AppColors.whiteColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, padding: EdgeInsets.symmetric(horizontal: 10.w), icon: AppAssets.add_icon, height: 48.h, @@ -283,4 +298,107 @@ class ConditionCard extends StatelessWidget { ), ); } + + void _showExplanationBottomSheet(BuildContext context) { + final viewModel = context.read(); + final conditionId = condition.id ?? ""; + + if (conditionId.isEmpty) { + final dialogService = getIt(); + dialogService.showErrorBottomSheet( + message: "Condition ID not available", + ); + return; + } + + // Get all evidence with proper sources + final allEvidenceWithSources = viewModel.getAllEvidenceWithSources(); + + // Convert to format expected by GetExplanations API (with choice_id) + final evidence = allEvidenceWithSources.map((item) { + return { + "id": item["id"] ?? "", + "choice_id": "present", + "source": item["source"] ?? "initial", + }; + }).toList(); + + // Show loading + LoaderBottomSheet.showLoader(); + + // Call Explanations API + viewModel.fetchExplanations( + targetConditionId: conditionId, + evidence: evidence, + onSuccess: (response) { + LoaderBottomSheet.hideLoader(); + + final supportingEvidence = response.dataDetails?.supportingEvidence ?? []; + + // Show bottom sheet with supporting evidence + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.whyThisCondition.tr(context: context), + context, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Human-understandable description + LocaleKeys.explanationDescription.tr(context: context).toText14( + color: AppColors.textColor, + ), + SizedBox(height: 12.h), + + // Supporting Evidence List + if (supportingEvidence.isEmpty) + LocaleKeys.noDataAvailable.tr(context: context).toText14( + color: AppColors.greyTextColor, + ) + else + ...supportingEvidence.map((evidence) { + return Padding( + padding: EdgeInsets.only(bottom: 8.h), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.only(top: 6.h, right: 12.w, left: 12.w), + width: 6.w, + height: 6.h, + decoration: BoxDecoration( + shape: BoxShape.circle, + color: AppColors.textColor, + ), + ), + Expanded( + child: (evidence.getDisplayName()).toText14( + color: AppColors.textColor, + ), + ), + ], + ), + ); + }).toList(), + + SizedBox(height: 24.h), + CustomButton( + text: LocaleKeys.ok.tr(context: context), + onPressed: () => Navigator.pop(context), + backgroundColor: AppColors.primaryRedColor, + borderColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + ), + ], + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + onError: (error) { + LoaderBottomSheet.hideLoader(); + final dialogService = getIt(); + dialogService.showErrorBottomSheet(message: error); + }, + ); + } } diff --git a/lib/presentation/symptoms_checker/widgets/interactive_body_widget.dart b/lib/presentation/symptoms_checker/widgets/interactive_body_widget.dart index 62c38f9a..a32709f9 100644 --- a/lib/presentation/symptoms_checker/widgets/interactive_body_widget.dart +++ b/lib/presentation/symptoms_checker/widgets/interactive_body_widget.dart @@ -2,9 +2,12 @@ import 'dart:ui' as ui; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/features/symptoms_checker/models/organ_model.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/widgets/organ_dot_widget.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/widgets/organ_tooltip_widget.dart'; +import 'package:vector_math/vector_math_64.dart' show Vector3; class InteractiveBodyWidget extends StatefulWidget { final String bodyImageAsset; @@ -14,6 +17,7 @@ class InteractiveBodyWidget extends StatefulWidget { final Function(String organId) onOrganTap; final String? tooltipOrganId; final bool isArabic; + final double zoomScale; const InteractiveBodyWidget({ super.key, @@ -24,6 +28,7 @@ class InteractiveBodyWidget extends StatefulWidget { this.isBodyHidden = false, this.tooltipOrganId, this.isArabic = false, + this.zoomScale = 1.0, }); @override @@ -48,6 +53,11 @@ class _InteractiveBodyWidgetState extends State { // Reset zoom when switching views _transformationController.value = Matrix4.identity(); } + + // Update zoom when zoomScale changes + if (oldWidget.zoomScale != widget.zoomScale) { + _updateZoom(widget.zoomScale); + } } @override @@ -69,6 +79,19 @@ class _InteractiveBodyWidgetState extends State { } } + void _updateZoom(double scale) { + // Get current translation + final currentTransform = _transformationController.value; + final currentTranslation = currentTransform.getTranslation(); + + // Create new transformation with updated scale while preserving translation + final newTransform = Matrix4.identity() + ..setTranslation(currentTranslation) + ..scaleByVector3(Vector3(scale, scale, 1.0)); + + _transformationController.value = newTransform; + } + @override Widget build(BuildContext context) { if (_imageAspectRatio == null) { @@ -92,11 +115,21 @@ class _InteractiveBodyWidgetState extends State { children: [ // Body image Positioned.fill( - child: Image.asset( - widget.bodyImageAsset, - fit: BoxFit.fill, - color: widget.isBodyHidden ? Colors.black.withValues(alpha: 0.5) : null, - ), + child: widget.isBodyHidden + ? ColorFiltered( + colorFilter: ColorFilter.mode( + Colors.black.withValues(alpha: 0.5), + BlendMode.darken, + ), + child: Utils.buildImgWithAssets( + icon: widget.bodyImageAsset, + fit: BoxFit.fill, + ), + ) + : Utils.buildImgWithAssets( + icon: widget.bodyImageAsset, + fit: BoxFit.fill, + ), ), // Organ dots diff --git a/lib/presentation/symptoms_checker/widgets/organ_tooltip_widget.dart b/lib/presentation/symptoms_checker/widgets/organ_tooltip_widget.dart index 6c2625b3..2852d930 100644 --- a/lib/presentation/symptoms_checker/widgets/organ_tooltip_widget.dart +++ b/lib/presentation/symptoms_checker/widgets/organ_tooltip_widget.dart @@ -28,7 +28,7 @@ class OrganTooltipWidget extends StatelessWidget { style: TextStyle( color: AppColors.textColor, fontSize: 12.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), ), ), diff --git a/lib/presentation/symptoms_checker/widgets/pinch_zoom_tutorial_overlay.dart b/lib/presentation/symptoms_checker/widgets/pinch_zoom_tutorial_overlay.dart new file mode 100644 index 00000000..307445a4 --- /dev/null +++ b/lib/presentation/symptoms_checker/widgets/pinch_zoom_tutorial_overlay.dart @@ -0,0 +1,261 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; + +class PinchZoomTutorialOverlay extends StatefulWidget { + final VoidCallback onComplete; + + const PinchZoomTutorialOverlay({ + Key? key, + required this.onComplete, + }) : super(key: key); + + @override + State createState() => _PinchZoomTutorialOverlayState(); +} + +class _PinchZoomTutorialOverlayState extends State with SingleTickerProviderStateMixin { + late AnimationController _animationController; + late Animation _fadeAnimation; + int _currentStep = 0; + + @override + void initState() { + super.initState(); + _animationController = AnimationController( + duration: const Duration(milliseconds: 300), + vsync: this, + ); + _fadeAnimation = CurvedAnimation( + parent: _animationController, + curve: Curves.easeInOut, + ); + _animationController.forward(); + } + + @override + void dispose() { + _animationController.dispose(); + super.dispose(); + } + + void _nextStep() { + if (_currentStep < 1) { + setState(() { + _currentStep++; + }); + } else { + _animationController.reverse().then((_) { + widget.onComplete(); + }); + } + } + + @override + Widget build(BuildContext context) { + return FadeTransition( + opacity: _fadeAnimation, + child: Material( + color: Colors.black.withValues(alpha: 0.85), + child: SafeArea( + child: Stack( + children: [ + // Tap to dismiss overlay + Positioned.fill( + child: GestureDetector( + onTap: () {}, + child: Container(color: Colors.transparent), + ), + ), + // Tutorial content + Center( + child: Padding( + padding: EdgeInsets.symmetric(horizontal: 24.w), + child: _currentStep == 0 ? _buildFirstStep() : _buildSecondStep(), + ), + ), + ], + ), + ), + ), + ); + } + + Widget _buildFirstStep() { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // Pinch gesture illustration + Container( + width: 200.w, + height: 200.h, + decoration: BoxDecoration( + color: Colors.white.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(20.r), + ), + child: Center( + child: _buildPinchGestureAnimation(), + ), + ), + SizedBox(height: 32.h), + // Title + Text( + LocaleKeys.pinchToZoom.tr(context: context), + style: TextStyle( + color: Colors.white, + fontSize: 24.f, + fontWeight: FontWeight.bold, + ), + textAlign: TextAlign.center, + ), + SizedBox(height: 32.h), + // Button + CustomButton( + text: LocaleKeys.gotIt.tr(context: context), + onPressed: _nextStep, + backgroundColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + fontSize: 16.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + height: 50.h, + ), + ], + ); + } + + Widget _buildSecondStep() { + return Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + // Illustration container with rounded corners + Container( + padding: EdgeInsets.all(24.w), + decoration: BoxDecoration( + color: Colors.white.withValues(alpha: 0.95), + borderRadius: BorderRadius.circular(20.r), + ), + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + Text( + LocaleKeys.zoomIntoDetails.tr(context: context), + style: TextStyle( + color: AppColors.textColor, + fontSize: 20.f, + fontWeight: FontWeight.bold, + ), + textAlign: TextAlign.center, + ), + SizedBox(height: 24.h), + // Pinch instruction + _buildInstructionRow( + icon: Icons.pinch_outlined, + text: LocaleKeys.pinchWithTwoFingersToZoom.tr(context: context), + ), + SizedBox(height: 16.h), + // Drag instruction + _buildInstructionRow( + icon: Icons.pan_tool_outlined, + text: LocaleKeys.dragToMoveAround.tr(context: context), + ), + ], + ), + ), + SizedBox(height: 32.h), + // Button + CustomButton( + text: LocaleKeys.startExploring.tr(context: context), + onPressed: _nextStep, + backgroundColor: AppColors.primaryRedColor, + textColor: AppColors.whiteColor, + fontSize: 16.f, + fontWeight: FontWeight.w600, + borderRadius: 12.r, + height: 50.h, + ), + ], + ); + } + + Widget _buildInstructionRow({required IconData icon, required String text}) { + return Row( + children: [ + Container( + width: 48.w, + height: 48.h, + decoration: BoxDecoration( + color: AppColors.primaryRedColor.withValues(alpha: 0.1), + borderRadius: BorderRadius.circular(12.r), + ), + child: Icon( + icon, + color: AppColors.primaryRedColor, + size: 24.w, + ), + ), + SizedBox(width: 16.w), + Expanded( + child: Text( + text, + style: TextStyle( + color: AppColors.textColor, + fontSize: 14.f, + fontWeight: FontWeight.w500, + ), + ), + ), + ], + ); + } + + Widget _buildPinchGestureAnimation() { + return TweenAnimationBuilder( + tween: Tween(begin: 1.0, end: 0.7), + duration: const Duration(milliseconds: 1500), + curve: Curves.easeInOut, + builder: (context, value, child) { + return Transform.scale( + scale: value, + child: Stack( + alignment: Alignment.center, + children: [ + // Left hand + Positioned( + left: 40.w * (1 - value), + child: Transform.rotate( + angle: -0.3, + child: Icon( + Icons.pan_tool, + size: 50.w, + color: Colors.white.withValues(alpha: 0.9), + ), + ), + ), + // Right hand + Positioned( + right: 40.w * (1 - value), + child: Transform.rotate( + angle: 0.3, + child: Icon( + Icons.pan_tool, + size: 50.w, + color: Colors.white.withValues(alpha: 0.9), + ), + ), + ), + ], + ), + ); + }, + onEnd: () { + // Restart animation + setState(() {}); + }, + ); + } +} + diff --git a/lib/presentation/symptoms_checker/widgets/selected_organs_section.dart b/lib/presentation/symptoms_checker/widgets/selected_organs_section.dart index b66ef037..e2b342b6 100644 --- a/lib/presentation/symptoms_checker/widgets/selected_organs_section.dart +++ b/lib/presentation/symptoms_checker/widgets/selected_organs_section.dart @@ -57,6 +57,7 @@ class _SelectedOrgansSectionState extends State { LocaleKeys.selectedOrgans.tr(context: context), style: TextStyle( fontSize: 16.f, + // isBold: true, fontWeight: FontWeight.w600, color: AppColors.textColor, ), diff --git a/lib/presentation/symptoms_checker/widgets/triage_level_card.dart b/lib/presentation/symptoms_checker/widgets/triage_level_card.dart new file mode 100644 index 00000000..19ad3935 --- /dev/null +++ b/lib/presentation/symptoms_checker/widgets/triage_level_card.dart @@ -0,0 +1,280 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/features/symptoms_checker/models/resp_models/triage_level_response_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; + +class TriageLevelCard extends StatefulWidget { + final TriageLevelDataDetails triageLevelData; + + const TriageLevelCard({super.key, required this.triageLevelData}); + + @override + State createState() => _TriageLevelCardState(); +} + +class _TriageLevelCardState extends State with SingleTickerProviderStateMixin { + late AnimationController _animationController; + late Animation _borderAnimation; + + @override + void initState() { + super.initState(); + + // Create animation controller for border pulse effect + _animationController = AnimationController( + vsync: this, + duration: const Duration(milliseconds: 2000), + ); + + // Create animation that goes from 1.0 to 0.3 and back (for opacity) + _borderAnimation = Tween(begin: 1.0, end: 0.3).animate( + CurvedAnimation( + parent: _animationController, + curve: Curves.easeInOut, + ), + ); + + // Start the animation and repeat + _animationController.repeat(reverse: true); + } + + @override + void dispose() { + _animationController.dispose(); + super.dispose(); + } + + /// Get localized title based on triage level + String getTitle(BuildContext context) { + final triageLevel = widget.triageLevelData.triageLevel ?? ''; + + switch (triageLevel) { + case 'emergency_ambulance': + return LocaleKeys.triageLevelEmergencyAmbulance.tr(context: context); + case 'emergency': + return LocaleKeys.triageLevelEmergency.tr(context: context); + case 'consultation_24': + return LocaleKeys.triageLevelConsultation24.tr(context: context); + case 'consultation': + return LocaleKeys.triageLevelConsultation.tr(context: context); + case 'self_care': + return LocaleKeys.triageLevelSelfCare.tr(context: context); + default: + return LocaleKeys.triageLevelConsultation.tr(context: context); + } + } + + /// Get localized description based on triage level + String getDescription(BuildContext context) { + final triageLevel = widget.triageLevelData.triageLevel ?? ''; + + switch (triageLevel) { + case 'emergency_ambulance': + return LocaleKeys.triageLevelEmergencyAmbulanceDesc.tr(context: context); + case 'emergency': + return LocaleKeys.triageLevelEmergencyDesc.tr(context: context); + case 'consultation_24': + return LocaleKeys.triageLevelConsultation24Desc.tr(context: context); + case 'consultation': + return LocaleKeys.triageLevelConsultationDesc.tr(context: context); + case 'self_care': + return LocaleKeys.triageLevelSelfCareDesc.tr(context: context); + default: + return LocaleKeys.triageLevelConsultationDesc.tr(context: context); + } + } + + /// Get color based on triage level + Color getBackgroundColor() { + final triageLevel = widget.triageLevelData.triageLevel ?? ''; + + switch (triageLevel) { + case 'emergency_ambulance': + case 'emergency': + return AppColors.chipColorEmergency.withValues(alpha: 0.1); + case 'consultation_24': + case 'consultation': + return AppColors.chipColorSeekMedicalAdvice.withValues(alpha: 0.1); + case 'self_care': + return AppColors.chipColorMonitor.withValues(alpha: 0.1); + default: + return AppColors.chipColorSeekMedicalAdvice.withValues(alpha: 0.1); + } + } + + /// Get border color based on triage level + Color getBorderColor() { + final triageLevel = widget.triageLevelData.triageLevel ?? ''; + + switch (triageLevel) { + case 'emergency_ambulance': + case 'emergency': + return AppColors.chipColorEmergency; + case 'consultation_24': + case 'consultation': + return AppColors.chipColorSeekMedicalAdvice; + case 'self_care': + return AppColors.chipColorMonitor; + default: + return AppColors.chipColorSeekMedicalAdvice; + } + } + + /// Get icon based on triage level + IconData getIcon() { + final triageLevel = widget.triageLevelData.triageLevel ?? ''; + + switch (triageLevel) { + case 'emergency_ambulance': + return Icons.local_hospital; + case 'emergency': + return Icons.emergency; + case 'consultation_24': + return Icons.schedule; + case 'consultation': + return Icons.medical_services; + case 'self_care': + return Icons.self_improvement; + default: + return Icons.medical_services; + } + } + + /// Get root cause text (localized) + String? getRootCauseText(BuildContext context) { + final rootCause = widget.triageLevelData.rootCause ?? ''; + + switch (rootCause) { + case 'emergency_evidence_present': + return LocaleKeys.rootCauseEmergencyEvidencePresent.tr(context: context); + case 'serious_evidence_present': + return LocaleKeys.rootCauseSeriousEvidencePresent.tr(context: context); + case 'emergency_condition_likely': + return LocaleKeys.rootCauseEmergencyConditionLikely.tr(context: context); + case 'emergency_condition_possible': + return LocaleKeys.rootCauseEmergencyConditionPossible.tr(context: context); + case 'consultation_condition_likely': + return LocaleKeys.rootCauseConsultationConditionLikely.tr(context: context); + case 'self_care_sufficient': + return LocaleKeys.rootCauseSelfCareSufficient.tr(context: context); + case 'diagnosis_unknown': + return LocaleKeys.rootCauseDiagnosisUnknown.tr(context: context); + default: + return null; + } + } + + @override + Widget build(BuildContext context) { + final borderColor = getBorderColor(); + final title = getTitle(context); + final description = getDescription(context); + final rootCauseText = getRootCauseText(context); + final seriousSymptoms = widget.triageLevelData.serious ?? []; + + return AnimatedBuilder( + animation: _borderAnimation, + builder: (context, child) { + return Container( + width: double.infinity, + margin: EdgeInsets.only(left: 24.w, right: 24.w, top: 16.h, bottom: 8.h), + padding: EdgeInsets.all(20.w), + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(24.r), + border: Border.all( + color: borderColor.withValues(alpha: _borderAnimation.value), + width: 2.w, + ), + boxShadow: [ + BoxShadow( + color: Colors.black.withValues(alpha: 0.08), + blurRadius: 10.r, + offset: Offset(0, 2.h), + ), + ], + ), + child: child, + ); + }, + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Expanded( + child: title.toText18(isBold: true, color: AppColors.textColor), + ), + ], + ), + + SizedBox(height: 12.h), + + // Description + description.toText14(color: AppColors.textColor), + + // Root Cause (if available) + if (rootCauseText != null) ...[ + SizedBox(height: 12.h), + Container( + padding: EdgeInsets.symmetric(horizontal: 0.w, vertical: 8.h), + decoration: BoxDecoration( + color: AppColors.whiteColor.withValues(alpha: 0.5), + borderRadius: BorderRadius.circular(8.r), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + Icons.info_outline, + size: 16.f, + color: borderColor, + ), + SizedBox(width: 8.w), + Flexible( + child: rootCauseText.toText12( + color: AppColors.textColor, + isBold: true, + ), + ), + ], + ), + ), + ], + + // Serious Symptoms (if any) + if (seriousSymptoms.isNotEmpty) ...[ + SizedBox(height: 16.h), + LocaleKeys.seriousSymptoms.tr(context: context).toText14( + isBold: true, + color: borderColor, + ), + SizedBox(height: 8.h), + ...seriousSymptoms.map((symptom) { + return Padding( + padding: EdgeInsets.only(bottom: 4.h), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + margin: EdgeInsets.only(top: 6.h, right: 8.w, left: 8.w), + width: 6.w, + height: 6.h, + decoration: BoxDecoration(shape: BoxShape.circle, color: borderColor), + ), + Expanded( + child: (symptom.getDisplayName()).toText13(color: AppColors.textColor), + ), + ], + ), + ); + }), + ], + ], + ), + ); + } +} diff --git a/lib/presentation/tele_consultation/zoom/call_screen.dart b/lib/presentation/tele_consultation/zoom/call_screen.dart index 51edf9ed..64c6c471 100644 --- a/lib/presentation/tele_consultation/zoom/call_screen.dart +++ b/lib/presentation/tele_consultation/zoom/call_screen.dart @@ -1,1838 +1,1876 @@ -// import 'dart:async'; -// import 'dart:convert'; -// import 'dart:io'; -// -// import 'package:flutter/cupertino.dart'; -// import 'package:flutter/foundation.dart'; -// import 'package:flutter/material.dart'; -// import 'package:flutter/services.dart'; -// import 'package:flutter_hooks/flutter_hooks.dart'; -// import 'package:flutter_ios_voip_kit_karmm/flutter_ios_voip_kit.dart'; -// import 'package:flutter_zoom_videosdk/flutter_zoom_view.dart'; -// import 'package:flutter_zoom_videosdk/native/zoom_videosdk.dart'; -// import 'package:flutter_zoom_videosdk/native/zoom_videosdk_camera_device.dart'; -// import 'package:flutter_zoom_videosdk/native/zoom_videosdk_cmd_channel.dart'; -// import 'package:flutter_zoom_videosdk/native/zoom_videosdk_event_listener.dart'; -// import 'package:flutter_zoom_videosdk/native/zoom_videosdk_live_transcription_message_info.dart'; -// import 'package:flutter_zoom_videosdk/native/zoom_videosdk_share_action.dart'; -// import 'package:flutter_zoom_videosdk/native/zoom_videosdk_user.dart'; -// import 'package:hmg_patient_app_new/core/app_export.dart'; -// import 'package:hmg_patient_app_new/core/cache_consts.dart'; -// import 'package:hmg_patient_app_new/core/utils/jwt.dart'; -// import 'package:hmg_patient_app_new/core/utils/utils.dart'; -// import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; -// import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; -// import 'package:hmg_patient_app_new/presentation/tele_consultation/zoom/video_view.dart'; -// import 'package:hmg_patient_app_new/theme/colors.dart'; -// import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; -// import 'package:image_picker/image_picker.dart'; -// -// class CallScreen extends StatefulHookWidget { -// const CallScreen({Key? key}) : super(key: key); -// -// @override -// State createState() => _CallScreenState(); -// } -// -// class _CallScreenState extends State { -// static TextEditingController changeNameController = TextEditingController(); -// double opacityLevel = 1.0; -// -// final voIPKit = FlutterIOSVoIPKit.instance; -// -// bool isScreenBeingShared = false; -// -// void _changeOpacity() { -// setState(() => opacityLevel = opacityLevel == 0 ? 1.0 : 0.0); -// } -// -// @override -// Widget build(BuildContext context) { -// var zoom = ZoomVideoSdk(); -// var eventListener = ZoomVideoSdkEventListener(); -// var isInSession = useState(false); -// var sessionName = useState(''); -// var sessionPassword = useState(''); -// var users = useState([]); -// var fullScreenUser = useState(null); -// var sharingUser = useState(null); -// var videoInfo = useState(''); -// var isSharing = useState(false); -// var isMuted = useState(true); -// var isVideoOn = useState(false); -// var isSpeakerOn = useState(false); -// var isRenameModalVisible = useState(false); -// var isRecordingStarted = useState(false); -// var isMicOriginalOn = useState(false); -// var isMounted = useIsMounted(); -// var audioStatusFlag = useState(false); -// var videoStatusFlag = useState(false); -// var userNameFlag = useState(false); -// var userShareStatusFlag = useState(false); -// var isReceiveSpokenLanguageContentEnabled = useState(false); -// var isVideoMirrored = useState(false); -// var isOriginalAspectRatio = useState(false); -// var isPiPView = useState(false); -// var isSharedCamera = useState(false); -// CameraShareView cameraShareView = const CameraShareView(creationParams: {}); -// -// //hide status bar -// SystemChrome.setEnabledSystemUIMode(SystemUiMode.leanBack); -// var circleButtonSize = 65.0; -// Color backgroundColor = const Color(0xFF232323); -// Color buttonBackgroundColor = const Color.fromRGBO(0, 0, 0, 0.6); -// Color chatTextColor = const Color(0xFFAAAAAA); -// Widget changeNamePopup; -// final args = ModalRoute.of(context)!.settings.arguments as CallArguments; -// -// useEffect(() { -// Future.microtask(() async { -// var token = generateJwt(args.sessionName, args.role); -// -// Utils.removeFromPrefs(CacheConst.isAppOpenedFromCall); -// -// try { -// Map SDKaudioOptions = {"connect": true, "mute": false, "autoAdjustSpeakerVolume": false}; -// Map SDKvideoOptions = { -// "localVideoOn": true, -// }; -// JoinSessionConfig joinSession = JoinSessionConfig( -// sessionName: args.sessionName, -// sessionPassword: args.sessionPwd, -// token: token, -// userName: args.displayName, -// audioOptions: SDKaudioOptions, -// videoOptions: SDKvideoOptions, -// sessionIdleTimeoutMins: int.parse(args.sessionIdleTimeoutMins), -// ); -// await zoom.joinSession(joinSession); -// } catch (e) { -// const AlertDialog( -// title: Text("Error"), -// content: Text("Failed to join the session"), -// ); -// Future.delayed(const Duration(milliseconds: 1000)).asStream().listen((event) { -// Navigator.pushAndRemoveUntil( -// context, -// CustomPageRoute( -// page: LandingNavigation(), -// ), -// (r) => false); -// }); -// } -// }); -// return null; -// }, []); -// -// useEffect(() { -// final sessionJoinListener = eventListener.addListener(EventType.onSessionJoin, (data) async { -// data = data as Map; -// isInSession.value = true; -// zoom.session.getSessionName().then((value) => sessionName.value = value!); -// sessionPassword.value = await zoom.session.getSessionPassword(); -// debugPrint("sessionPhonePasscode: ${await zoom.session.getSessionPhonePasscode()}"); -// ZoomVideoSdkUser mySelf = ZoomVideoSdkUser.fromJson(jsonDecode(data['sessionUser'])); -// List? remoteUsers = await zoom.session.getRemoteUsers(); -// var muted = await mySelf.audioStatus?.isMuted(); -// var videoOn = await mySelf.videoStatus?.isOn(); -// var speakerOn = await zoom.audioHelper.getSpeakerStatus(); -// fullScreenUser.value = mySelf; -// remoteUsers?.insert(0, mySelf); -// isMuted.value = muted!; -// isSpeakerOn.value = speakerOn; -// isVideoOn.value = videoOn!; -// users.value = remoteUsers!; -// isReceiveSpokenLanguageContentEnabled.value = await zoom.liveTranscriptionHelper.isReceiveSpokenLanguageContentEnabled(); -// }); -// -// final sessionLeaveListener = eventListener.addListener(EventType.onSessionLeave, (data) async { -// data = data as Map; -// debugPrint("onSessionLeave: ${data['reason']}"); -// isInSession.value = false; -// users.value = []; -// fullScreenUser.value = null; -// // Navigator.popAndPushNamed( -// // context, -// // "Join", -// // arguments: JoinArguments(args.isJoin, sessionName.value, sessionPassword.value, args.displayName, args.sessionIdleTimeoutMins, args.role), -// // ); -// Navigator.pushAndRemoveUntil( -// context, -// CustomPageRoute( -// page: LandingNavigation(), -// ), -// (r) => false); -// }); -// -// final sessionNeedPasswordListener = eventListener.addListener(EventType.onSessionNeedPassword, (data) async { -// showDialog( -// context: context, -// builder: (BuildContext context) => AlertDialog( -// title: const Text('Session Need Password'), -// content: const Text('Password is required'), -// actions: [ -// TextButton( -// onPressed: () async => { -// Navigator.pushAndRemoveUntil( -// context, -// CustomPageRoute( -// page: LandingNavigation(), -// ), -// (r) => false), -// await zoom.leaveSession(false), -// }, -// child: const Text('OK'), -// ), -// ], -// ), -// ); -// }); -// -// final sessionPasswordWrongListener = eventListener.addListener(EventType.onSessionPasswordWrong, (data) async { -// showDialog( -// context: context, -// builder: (BuildContext context) => AlertDialog( -// title: const Text('Session Password Incorrect'), -// content: const Text('Password is wrong'), -// actions: [ -// TextButton( -// onPressed: () async => { -// Navigator.popAndPushNamed(context, 'Join', arguments: JoinArguments(args.isJoin, args.sessionName, "", args.displayName, args.sessionIdleTimeoutMins, args.role)), -// await zoom.leaveSession(false), -// }, -// child: const Text('OK'), -// ), -// ], -// ), -// ); -// }); -// -// final userVideoStatusChangedListener = eventListener.addListener(EventType.onUserVideoStatusChanged, (data) async { -// data = data as Map; -// ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); -// var userListJson = jsonDecode(data['changedUsers']) as List; -// List userList = userListJson.map((userJson) => ZoomVideoSdkUser.fromJson(userJson)).toList(); -// for (var user in userList) { -// { -// if (user.userId == mySelf?.userId) { -// mySelf?.videoStatus?.isOn().then((on) => isVideoOn.value = on); -// } -// } -// } -// videoStatusFlag.value = !videoStatusFlag.value; -// }); -// -// final userAudioStatusChangedListener = eventListener.addListener(EventType.onUserAudioStatusChanged, (data) async { -// data = data as Map; -// ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); -// var userListJson = jsonDecode(data['changedUsers']) as List; -// List userList = userListJson.map((userJson) => ZoomVideoSdkUser.fromJson(userJson)).toList(); -// for (var user in userList) { -// { -// if (user.userId == mySelf?.userId) { -// mySelf?.audioStatus?.isMuted().then((muted) => isMuted.value = muted); -// } -// } -// } -// audioStatusFlag.value = !audioStatusFlag.value; -// }); -// -// final userShareStatusChangeListener = eventListener.addListener(EventType.onUserShareStatusChanged, (data) async { -// data = data as Map; -// ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); -// ZoomVideoSdkUser shareUser = ZoomVideoSdkUser.fromJson(jsonDecode(data['user'].toString())); -// ZoomVideoSdkShareAction? shareAction = ZoomVideoSdkShareAction.fromJson(jsonDecode(data['shareAction'])); -// -// if (shareAction.shareStatus == ShareStatus.Start || shareAction.shareStatus == ShareStatus.Resume) { -// sharingUser.value = shareUser; -// fullScreenUser.value = shareUser; -// isSharing.value = (shareUser.userId == mySelf?.userId); -// -// setState(() { -// isScreenBeingShared = true; -// }); -// Future.delayed(const Duration(seconds: 2), () { -// setState(() { -// isScreenBeingShared = false; -// }); -// }); -// } else { -// sharingUser.value = null; -// isSharing.value = false; -// isSharedCamera.value = false; -// fullScreenUser.value = mySelf; -// isScreenBeingShared = false; -// setState(() { -// isScreenBeingShared = true; -// }); -// Future.delayed(const Duration(seconds: 2), () { -// setState(() { -// isScreenBeingShared = false; -// }); -// }); -// } -// userShareStatusFlag.value = !userShareStatusFlag.value; -// }); -// -// final shareContentChangedListener = eventListener.addListener(EventType.onShareContentChanged, (data) async { -// data = data as Map; -// ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); -// ZoomVideoSdkUser shareUser = ZoomVideoSdkUser.fromJson(jsonDecode(data['user'].toString())); -// ZoomVideoSdkShareAction? shareAction = ZoomVideoSdkShareAction.fromJson(jsonDecode(data['shareAction'])); -// if (shareAction.shareType == ShareType.Camera) { -// debugPrint("Camera share started"); -// isSharedCamera.value = (shareUser.userId == mySelf?.userId); -// } -// }); -// -// final userJoinListener = eventListener.addListener(EventType.onUserJoin, (data) async { -// if (!isMounted()) return; -// data = data as Map; -// ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); -// var userListJson = jsonDecode(data['remoteUsers']) as List; -// List remoteUserList = userListJson.map((userJson) => ZoomVideoSdkUser.fromJson(userJson)).toList(); -// remoteUserList.insert(0, mySelf!); -// users.value = remoteUserList; -// }); -// -// final userLeaveListener = eventListener.addListener(EventType.onUserLeave, (data) async { -// if (!isMounted()) return; -// ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); -// data = data as Map; -// List? remoteUserList = await zoom.session.getRemoteUsers(); -// var leftUserListJson = jsonDecode(data['leftUsers']) as List; -// List leftUserLis = leftUserListJson.map((userJson) => ZoomVideoSdkUser.fromJson(userJson)).toList(); -// if (fullScreenUser.value != null) { -// for (var user in leftUserLis) { -// { -// if (fullScreenUser.value?.userId == user.userId) { -// fullScreenUser.value = mySelf; -// } -// } -// } -// } else { -// fullScreenUser.value = mySelf; -// } -// remoteUserList?.add(mySelf!); -// users.value = remoteUserList!; -// }); -// -// final userNameChangedListener = eventListener.addListener(EventType.onUserNameChanged, (data) async { -// if (!isMounted()) return; -// data = data as Map; -// ZoomVideoSdkUser? changedUser = ZoomVideoSdkUser.fromJson(jsonDecode(data['changedUser'])); -// int index; -// for (var user in users.value) { -// if (user.userId == changedUser.userId) { -// index = users.value.indexOf(user); -// users.value[index] = changedUser; -// } -// } -// userNameFlag.value = !userNameFlag.value; -// }); -// -// final commandReceived = eventListener.addListener(EventType.onCommandReceived, (data) async { -// data = data as Map; -// debugPrint("sender: ${ZoomVideoSdkUser.fromJson(jsonDecode(data['sender']))}, command: ${data['command']}"); -// }); -// -// final liveStreamStatusChangeListener = eventListener.addListener(EventType.onLiveStreamStatusChanged, (data) async { -// data = data as Map; -// debugPrint("onLiveStreamStatusChanged: status: ${data['status']}"); -// }); -// -// final liveTranscriptionStatusChangeListener = eventListener.addListener(EventType.onLiveTranscriptionStatus, (data) async { -// data = data as Map; -// debugPrint("onLiveTranscriptionStatus: status: ${data['status']}"); -// }); -// -// final cloudRecordingStatusListener = eventListener.addListener(EventType.onCloudRecordingStatus, (data) async { -// data = data as Map; -// debugPrint("onCloudRecordingStatus: status: ${data['status']}"); -// ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); -// if (data['status'] == RecordingStatus.Start) { -// if (mySelf != null && !mySelf.isHost!) { -// showDialog( -// context: context, -// builder: (BuildContext context) => AlertDialog( -// content: const Text('The session is being recorded.'), -// actions: [ -// TextButton( -// onPressed: () async { -// await zoom.acceptRecordingConsent(); -// if (context.mounted) { -// Navigator.pop(context); -// } -// ; -// }, -// child: const Text('accept'), -// ), -// TextButton( -// onPressed: () async { -// String currentConsentType = await zoom.getRecordingConsentType(); -// if (currentConsentType == ConsentType.ConsentType_Individual) { -// await zoom.declineRecordingConsent(); -// Navigator.pop(context); -// } else { -// await zoom.declineRecordingConsent(); -// zoom.leaveSession(false); -// if (!context.mounted) return; -// Navigator.popAndPushNamed( -// context, -// "Join", -// arguments: JoinArguments(args.isJoin, sessionName.value, sessionPassword.value, args.displayName, args.sessionIdleTimeoutMins, args.role), -// ); -// } -// }, -// child: const Text('decline'), -// ), -// ], -// ), -// ); -// } -// isRecordingStarted.value = true; -// } else { -// isRecordingStarted.value = false; -// } -// }); -// -// final liveTranscriptionMsgInfoReceivedListener = eventListener.addListener(EventType.onLiveTranscriptionMsgInfoReceived, (data) async { -// data = data as Map; -// ZoomVideoSdkLiveTranscriptionMessageInfo? messageInfo = ZoomVideoSdkLiveTranscriptionMessageInfo.fromJson(jsonDecode(data['messageInfo'])); -// debugPrint("onLiveTranscriptionMsgInfoReceived: content: ${messageInfo.messageContent}"); -// }); -// -// final inviteByPhoneStatusListener = eventListener.addListener(EventType.onInviteByPhoneStatus, (data) async { -// data = data as Map; -// debugPrint("onInviteByPhoneStatus: status: ${data['status']}, reason: ${data['reason']}"); -// }); -// -// final multiCameraStreamStatusChangedListener = eventListener.addListener(EventType.onMultiCameraStreamStatusChanged, (data) async { -// data = data as Map; -// ZoomVideoSdkUser? changedUser = ZoomVideoSdkUser.fromJson(jsonDecode(data['changedUser'])); -// var status = data['status']; -// for (var user in users.value) { -// { -// if (changedUser.userId == user.userId) { -// if (status == MultiCameraStreamStatus.Joined) { -// user.hasMultiCamera = true; -// } else if (status == MultiCameraStreamStatus.Left) { -// user.hasMultiCamera = false; -// } -// } -// } -// } -// }); -// -// final requireSystemPermission = eventListener.addListener(EventType.onRequireSystemPermission, (data) async { -// data = data as Map; -// ZoomVideoSdkUser? changedUser = ZoomVideoSdkUser.fromJson(jsonDecode(data['changedUser'])); -// var permissionType = data['permissionType']; -// switch (permissionType) { -// case SystemPermissionType.Camera: -// showDialog( -// context: context, -// builder: (BuildContext context) => AlertDialog( -// title: const Text("Can't Access Camera"), -// content: const Text("please turn on the toggle in system settings to grant permission"), -// actions: [ -// TextButton( -// onPressed: () => Navigator.pop(context, 'OK'), -// child: const Text('OK'), -// ), -// ], -// ), -// ); -// break; -// case SystemPermissionType.Microphone: -// showDialog( -// context: context, -// builder: (BuildContext context) => AlertDialog( -// title: const Text("Can't Access Microphone"), -// content: const Text("please turn on the toggle in system settings to grant permission"), -// actions: [ -// TextButton( -// onPressed: () => Navigator.pop(context, 'OK'), -// child: const Text('OK'), -// ), -// ], -// ), -// ); -// break; -// } -// }); -// -// final networkStatusChangeListener = eventListener.addListener(EventType.onUserVideoNetworkStatusChanged, (data) async { -// data = data as Map; -// ZoomVideoSdkUser? networkUser = ZoomVideoSdkUser.fromJson(jsonDecode(data['user'])); -// -// if (data['status'] == NetworkStatus.Bad) { -// debugPrint("onUserVideoNetworkStatusChanged: status: ${data['status']}, user: ${networkUser.userName}"); -// } -// }); -// -// final eventErrorListener = eventListener.addListener(EventType.onError, (data) async { -// data = data as Map; -// String errorType = data['errorType']; -// showDialog( -// context: context, -// builder: (BuildContext context) => AlertDialog( -// title: const Text("Error"), -// content: Text(errorType), -// actions: [ -// TextButton( -// onPressed: () => Navigator.pop(context, 'OK'), -// child: const Text('OK'), -// ), -// ], -// ), -// ); -// if (errorType == Errors.SessionJoinFailed || errorType == Errors.SessionDisconnecting) { -// Timer( -// const Duration(milliseconds: 1000), -// () => { -// Navigator.popAndPushNamed( -// context, -// "Join", -// arguments: JoinArguments(args.isJoin, sessionName.value, sessionPassword.value, args.displayName, args.sessionIdleTimeoutMins, args.role), -// ), -// }); -// } -// }); -// -// final userRecordingConsentListener = eventListener.addListener(EventType.onUserRecordingConsent, (data) async { -// data = data as Map; -// ZoomVideoSdkUser? user = ZoomVideoSdkUser.fromJson(jsonDecode(data['user'])); -// debugPrint('userRecordingConsentListener: user= ${user.userName}'); -// }); -// -// final callCRCDeviceStatusListener = eventListener.addListener(EventType.onCallCRCDeviceStatusChanged, (data) async { -// data = data as Map; -// debugPrint('onCallCRCDeviceStatusChanged: status = ${data['status']}'); -// }); -// -// final originalLanguageMsgReceivedListener = eventListener.addListener(EventType.onOriginalLanguageMsgReceived, (data) async { -// data = data as Map; -// ZoomVideoSdkLiveTranscriptionMessageInfo? messageInfo = ZoomVideoSdkLiveTranscriptionMessageInfo.fromJson(jsonDecode(data['messageInfo'])); -// debugPrint("onOriginalLanguageMsgReceived: content: ${messageInfo.messageContent}"); -// }); -// -// final chatPrivilegeChangedListener = eventListener.addListener(EventType.onChatPrivilegeChanged, (data) async { -// data = data as Map; -// String type = data['privilege']; -// debugPrint('chatPrivilegeChangedListener: type= $type'); -// }); -// -// final testMicStatusListener = eventListener.addListener(EventType.onTestMicStatusChanged, (data) async { -// data = data as Map; -// String status = data['status']; -// debugPrint('testMicStatusListener: status= $status'); -// }); -// -// final micSpeakerVolumeChangedListener = eventListener.addListener(EventType.onMicSpeakerVolumeChanged, (data) async { -// data = data as Map; -// int type = data['micVolume']; -// debugPrint('onMicSpeakerVolumeChanged: micVolume= $type, speakerVolume'); -// }); -// -// final cameraControlRequestResultListener = eventListener.addListener(EventType.onCameraControlRequestResult, (data) async { -// data = data as Map; -// bool approved = data['approved']; -// debugPrint('onCameraControlRequestResult: approved= $approved'); -// }); -// -// final callOutUserJoinListener = eventListener.addListener(EventType.onCalloutJoinSuccess, (data) async { -// data = data as Map; -// String phoneNumber = data['phoneNumber']; -// ZoomVideoSdkUser? user = ZoomVideoSdkUser.fromJson(jsonDecode(data['user'])); -// debugPrint('onCalloutJoinSuccess: phoneNumber= $phoneNumber, user= ${user.userName}'); -// }); -// -// return () => { -// sessionJoinListener.cancel(), -// sessionLeaveListener.cancel(), -// sessionPasswordWrongListener.cancel(), -// sessionNeedPasswordListener.cancel(), -// userVideoStatusChangedListener.cancel(), -// userAudioStatusChangedListener.cancel(), -// userJoinListener.cancel(), -// userLeaveListener.cancel(), -// userNameChangedListener.cancel(), -// userShareStatusChangeListener.cancel(), -// liveStreamStatusChangeListener.cancel(), -// cloudRecordingStatusListener.cancel(), -// inviteByPhoneStatusListener.cancel(), -// eventErrorListener.cancel(), -// commandReceived.cancel(), -// liveTranscriptionStatusChangeListener.cancel(), -// liveTranscriptionMsgInfoReceivedListener.cancel(), -// multiCameraStreamStatusChangedListener.cancel(), -// requireSystemPermission.cancel(), -// userRecordingConsentListener.cancel(), -// networkStatusChangeListener.cancel(), -// callCRCDeviceStatusListener.cancel(), -// originalLanguageMsgReceivedListener.cancel(), -// chatPrivilegeChangedListener.cancel(), -// testMicStatusListener.cancel(), -// micSpeakerVolumeChangedListener.cancel(), -// cameraControlRequestResultListener.cancel(), -// callOutUserJoinListener.cancel(), -// shareContentChangedListener.cancel(), -// }; -// }, [zoom, users.value, isMounted]); -// -// void selectVirtualBackgroundItem() async { -// final ImagePicker picker = ImagePicker(); -// // Pick an image. -// final XFile? image = await picker.pickImage(source: ImageSource.gallery); -// await zoom.virtualBackgroundHelper.addVirtualBackgroundItem(image!.path); -// } -// -// void onPressAudio() async { -// ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); -// if (mySelf != null) { -// final audioStatus = mySelf.audioStatus; -// if (audioStatus != null) { -// var muted = await audioStatus.isMuted(); -// if (muted) { -// await zoom.audioHelper.unMuteAudio(mySelf.userId); -// } else { -// await zoom.audioHelper.muteAudio(mySelf.userId); -// } -// } -// } -// } -// -// void onPressVideo() async { -// ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); -// if (mySelf != null) { -// final videoStatus = mySelf.videoStatus; -// if (videoStatus != null) { -// var videoOn = await videoStatus.isOn(); -// if (videoOn) { -// await zoom.videoHelper.stopVideo(); -// } else { -// await zoom.videoHelper.startVideo(); -// } -// } -// } -// } -// -// void onPressShare() async { -// var isOtherSharing = await zoom.shareHelper.isOtherSharing(); -// var isShareLocked = await zoom.shareHelper.isShareLocked(); -// String? shareCameraViewResult = Errors.InternalError; -// -// if (isOtherSharing) { -// showDialog( -// context: context, -// builder: (BuildContext context) => AlertDialog( -// title: const Text("Error"), -// content: const Text('Other is sharing'), -// actions: [ -// TextButton( -// onPressed: () => Navigator.pop(context, 'OK'), -// child: const Text('OK'), -// ), -// ], -// ), -// ); -// } else if (isShareLocked) { -// showDialog( -// context: context, -// builder: (BuildContext context) => AlertDialog( -// title: const Text("Error"), -// content: const Text('Share is locked by host'), -// actions: [ -// TextButton( -// onPressed: () => Navigator.pop(context, 'OK'), -// child: const Text('OK'), -// ), -// ], -// ), -// ); -// } else if (isSharing.value) { -// zoom.shareHelper.stopShare(); -// } else { -// List options = [ -// ListTile( -// title: Text( -// 'Share Device Screen', -// style: TextStyle( -// fontSize: 14, -// fontWeight: FontWeight.normal, -// color: Colors.black, -// ), -// ), -// onTap: () async => { -// zoom.shareHelper.shareScreen(), -// Navigator.of(context).pop(), -// }, -// ), -// ListTile( -// title: Text( -// 'Share Camera', -// style: TextStyle( -// fontSize: 14, -// fontWeight: FontWeight.normal, -// color: Colors.black, -// ), -// ), -// onTap: () async => { -// shareCameraViewResult = await zoom.shareHelper.startShareCamera(cameraShareView), -// debugPrint('start camera: $shareCameraViewResult'), -// Navigator.of(context).pop(), -// }, -// ), -// ]; -// showDialog( -// context: context, -// builder: (context) { -// return Dialog( -// elevation: 0.0, -// insetPadding: const EdgeInsets.symmetric(horizontal: 40), -// shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), -// child: SizedBox( -// height: options.length * 60, -// child: Scrollbar( -// child: ListView( -// shrinkWrap: true, -// scrollDirection: Axis.vertical, -// children: ListTile.divideTiles( -// context: context, -// tiles: options, -// ).toList(), -// ), -// ), -// ), -// ); -// }); -// } -// } -// -// void onSelectedUserVolume(ZoomVideoSdkUser user) async { -// var isShareAudio = user.isSharing; -// bool canSetVolume = await user.canSetUserVolume(user.userId, isShareAudio); -// num userVolume; -// -// List options = [ -// ListTile( -// title: Text( -// 'Adjust Volume', -// style: const TextStyle( -// fontSize: 18, -// fontWeight: FontWeight.w600, -// color: Colors.black, -// ), -// ), -// ), -// ListTile( -// title: Text( -// 'Current volume', -// style: const TextStyle( -// fontSize: 14, -// fontWeight: FontWeight.normal, -// color: Colors.black, -// ), -// ), -// onTap: () async => { -// debugPrint('user volume'), -// userVolume = await user.getUserVolume(user.userId, isShareAudio), -// debugPrint('user ${user.userName}\'s volume is ${userVolume!}'), -// }, -// ), -// ]; -// if (canSetVolume) { -// options.add( -// ListTile( -// title: Text( -// 'Volume up', -// style: const TextStyle( -// fontSize: 14, -// fontWeight: FontWeight.normal, -// color: Colors.black, -// ), -// ), -// onTap: () async => { -// userVolume = await user.getUserVolume(user.userId, isShareAudio), -// if (userVolume < 10) -// { -// await user.setUserVolume(user.userId, userVolume + 1, isShareAudio), -// } -// else -// { -// debugPrint("Cannot volume up."), -// } -// }, -// ), -// ); -// options.add( -// ListTile( -// title: Text( -// 'Volume down', -// style: const TextStyle( -// fontSize: 14, -// fontWeight: FontWeight.normal, -// color: Colors.black, -// ), -// ), -// onTap: () async => { -// userVolume = await user.getUserVolume(user.userId, isShareAudio), -// if (userVolume > 0) -// { -// await user.setUserVolume(user.userId, userVolume - 1, isShareAudio), -// } -// else -// { -// debugPrint("Cannot volume down."), -// } -// }, -// ), -// ); -// } -// showDialog( -// context: context, -// builder: (context) { -// return Dialog( -// elevation: 0.0, -// insetPadding: const EdgeInsets.symmetric(horizontal: 40), -// shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), -// child: SizedBox( -// height: options.length * 58, -// child: Column( -// crossAxisAlignment: CrossAxisAlignment.stretch, -// children: [ -// ListView( -// shrinkWrap: true, -// children: ListTile.divideTiles( -// context: context, -// tiles: options, -// ).toList(), -// ), -// ], -// ), -// )); -// }); -// } -// -// void onPressCameraList() async { -// List options = []; -// List cameraList = await zoom.videoHelper.getCameraList(); -// for (var camera in cameraList) { -// options.add( -// ListTile( -// title: Text( -// camera.deviceName, -// style: const TextStyle( -// fontSize: 14, -// fontWeight: FontWeight.normal, -// color: Colors.black, -// ), -// ), -// onTap: () async => { -// await zoom.videoHelper.switchCamera(camera.deviceId), -// Navigator.of(context).pop(), -// }, -// ), -// ); -// } -// options.add( -// ListTile( -// title: Text( -// "Cancel", -// style: const TextStyle( -// fontSize: 14, -// fontWeight: FontWeight.normal, -// color: Colors.black, -// ), -// ), -// onTap: () async => { -// Navigator.of(context).pop(), -// }, -// ), -// ); -// showDialog( -// context: context, -// builder: (context) { -// return Dialog( -// elevation: 0.0, -// insetPadding: const EdgeInsets.symmetric(horizontal: 40), -// shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), -// child: SizedBox( -// height: options.length * 60, -// child: Scrollbar( -// child: ListView( -// shrinkWrap: true, -// scrollDirection: Axis.vertical, -// children: ListTile.divideTiles( -// context: context, -// tiles: options, -// ).toList(), -// ), -// ), -// ), -// ); -// }); -// } -// -// // Future onPressMore() async { -// // ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); -// // bool isShareLocked = await zoom.shareHelper.isShareLocked(); -// // bool canSwitchSpeaker = await zoom.audioHelper.canSwitchSpeaker(); -// // bool canStartRecording = (await zoom.recordingHelper.canStartRecording()) == Errors.Success; -// // debugPrint("canStartRecording ${await zoom.recordingHelper.canStartRecording()}"); -// // var startLiveTranscription = (await zoom.liveTranscriptionHelper.getLiveTranscriptionStatus()) == LiveTranscriptionStatus.Start; -// // bool canStartLiveTranscription = await zoom.liveTranscriptionHelper.canStartLiveTranscription(); -// // bool isHost = (mySelf != null) ? (await mySelf.getIsHost()) : false; -// // isOriginalAspectRatio.value = await zoom.videoHelper.isOriginalAspectRatioEnabled(); -// // bool canCallOutToCRC = await zoom.CRCHelper.isCRCEnabled(); -// // bool supportVB = await zoom.virtualBackgroundHelper.isSupportVirtualBackground(); -// // List? shareActionList = await mySelf?.getShareActionList(); -// // -// // List options = [ -// // ListTile( -// // title: Text( -// // 'More', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 18, -// // fontWeight: FontWeight.w600, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // ), -// // ListTile( -// // title: Text( -// // 'Get Chat Privilege', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // debugPrint("Chat Privilege = ${await zoom.chatHelper.getChatPrivilege()}"), -// // Navigator.of(context).pop(), -// // }, -// // ), -// // ListTile( -// // title: Text( -// // 'Get Session Dial-in Number infos', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // debugPrint("session number = ${await zoom.session.getSessionNumber()}"), -// // Navigator.of(context).pop(), -// // }, -// // ), -// // ListTile( -// // title: Text( -// // 'Get Camera List', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // debugPrint("camera list= ${await zoom.videoHelper.getCameraList()}"), -// // onPressCameraList(), -// // Navigator.of(context).pop(), -// // }, -// // ), -// // ListTile( -// // title: Text( -// // '${isMicOriginalOn.value ? 'Disable' : 'Enable'} Original Sound', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // debugPrint("${isMicOriginalOn.value}"), -// // await zoom.audioSettingHelper.enableMicOriginalInput(!isMicOriginalOn.value), -// // isMicOriginalOn.value = await zoom.audioSettingHelper.isMicOriginalInputEnable(), -// // debugPrint("Original sound ${isMicOriginalOn.value ? 'Enabled' : 'Disabled'}"), -// // Navigator.of(context).pop(), -// // }, -// // ) -// // ]; -// // -// // if (supportVB) { -// // options.add( -// // ListTile( -// // title: Text( -// // 'Add Virtual Background', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // selectVirtualBackgroundItem(), -// // Navigator.of(context).pop(), -// // }, -// // ), -// // ); -// // } -// // -// // if (canCallOutToCRC) { -// // options.add(ListTile( -// // title: Text( -// // 'Call-out to CRC devices', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // debugPrint('CRC result = ${await zoom.CRCHelper.callCRCDevice("bjn.vc", ZoomVideoSdkCRCProtocolType.SIP)}'), -// // Navigator.of(context).pop(), -// // }, -// // )); -// // options.add(ListTile( -// // title: Text( -// // 'Cancel call-out to CRC devices', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // debugPrint('cancel result= ${await zoom.CRCHelper.cancelCallCRCDevice()}'), -// // Navigator.of(context).pop(), -// // }, -// // )); -// // } -// // -// // if (canSwitchSpeaker) { -// // options.add(ListTile( -// // title: Text( -// // 'Turn ${isSpeakerOn.value ? 'off' : 'on'} Speaker', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // await zoom.audioHelper.setSpeaker(!isSpeakerOn.value), -// // isSpeakerOn.value = await zoom.audioHelper.getSpeakerStatus(), -// // debugPrint('Turned ${isSpeakerOn.value ? 'on' : 'off'} Speaker'), -// // Navigator.of(context).pop(), -// // }, -// // )); -// // } -// // -// // if (isHost) { -// // options.add(ListTile( -// // title: Text( -// // '${isShareLocked ? 'Unlock' : 'Lock'} Share', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // debugPrint("isShareLocked = ${await zoom.shareHelper.lockShare(!isShareLocked)}"), -// // Navigator.of(context).pop(), -// // })); -// // options.add(ListTile( -// // title: Text( -// // 'Change Name', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () => { -// // isRenameModalVisible.value = true, -// // Navigator.of(context).pop(), -// // }, -// // )); -// // } -// // -// // if (canStartLiveTranscription) { -// // options.add(ListTile( -// // title: Text( -// // "${startLiveTranscription ? 'Stop' : 'Start'} Live Transcription", -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // if (startLiveTranscription) -// // { -// // debugPrint('stopLiveTranscription= ${await zoom.liveTranscriptionHelper.stopLiveTranscription()}'), -// // } -// // else -// // { -// // debugPrint('startLiveTranscription= ${await zoom.liveTranscriptionHelper.startLiveTranscription()}'), -// // }, -// // Navigator.of(context).pop(), -// // }, -// // )); -// // options.add(ListTile( -// // title: Text( -// // '${isReceiveSpokenLanguageContentEnabled.value ? 'Disable' : 'Enable'} receiving original caption', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // await zoom.liveTranscriptionHelper.enableReceiveSpokenLanguageContent(!isReceiveSpokenLanguageContentEnabled.value), -// // isReceiveSpokenLanguageContentEnabled.value = await zoom.liveTranscriptionHelper.isReceiveSpokenLanguageContentEnabled(), -// // debugPrint("isReceiveSpokenLanguageContentEnabled = ${isReceiveSpokenLanguageContentEnabled.value}"), -// // Navigator.of(context).pop(), -// // })); -// // } -// // -// // if (canStartRecording) { -// // options.add(ListTile( -// // title: Text( -// // '${isRecordingStarted.value ? 'Stop' : 'Start'} Recording', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // if (!isRecordingStarted.value) -// // { -// // debugPrint('isRecordingStarted = ${await zoom.recordingHelper.startCloudRecording()}'), -// // } -// // else -// // { -// // debugPrint('isRecordingStarted = ${await zoom.recordingHelper.stopCloudRecording()}'), -// // }, -// // Navigator.of(context).pop(), -// // })); -// // } -// // -// // if (Platform.isAndroid) { -// // bool isFlashlightSupported = await zoom.videoHelper.isSupportFlashlight(); -// // bool isFlashlightOn = await zoom.videoHelper.isFlashlightOn(); -// // if (isFlashlightSupported) { -// // options.add(ListTile( -// // title: Text( -// // '${isFlashlightOn ? 'Turn Off' : 'Turn On'} Flashlight', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // if (!isFlashlightOn) -// // { -// // await zoom.videoHelper.turnOnOrOffFlashlight(true), -// // } -// // else -// // { -// // await zoom.videoHelper.turnOnOrOffFlashlight(false), -// // }, -// // Navigator.of(context).pop(), -// // })); -// // } -// // } -// // -// // if (Platform.isIOS) { -// // options.add(ListTile( -// // title: Text( -// // '${isPiPView.value ? 'Disable' : 'Enable'} picture in picture view', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // isPiPView.value = !isPiPView.value, -// // Navigator.of(context).pop(), -// // })); -// // } -// // -// // if (isVideoOn.value) { -// // options.add(ListTile( -// // title: Text( -// // 'Mirror the video', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // await zoom.videoHelper.mirrorMyVideo(!isVideoMirrored.value), -// // isVideoMirrored.value = await zoom.videoHelper.isMyVideoMirrored(), -// // Navigator.of(context).pop(), -// // })); -// // options.add(ListTile( -// // title: Text( -// // '${isOriginalAspectRatio.value ? 'Enable' : 'Disable'} original aspect ratio', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.normal, -// // color: Colors.black, -// // ), -// // ), -// // ), -// // onTap: () async => { -// // await zoom.videoHelper.enableOriginalAspectRatio(!isOriginalAspectRatio.value), -// // isOriginalAspectRatio.value = await zoom.videoHelper.isOriginalAspectRatioEnabled(), -// // debugPrint("isOriginalAspectRatio= ${isOriginalAspectRatio.value}"), -// // Navigator.of(context).pop(), -// // })); -// // } -// // -// // showDialog( -// // context: context, -// // builder: (context) { -// // return Dialog( -// // elevation: 0.0, -// // insetPadding: const EdgeInsets.symmetric(horizontal: 40), -// // shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), -// // child: SizedBox( -// // height: 500, -// // child: Scrollbar( -// // child: ListView( -// // shrinkWrap: true, -// // scrollDirection: Axis.vertical, -// // children: ListTile.divideTiles( -// // context: context, -// // tiles: options, -// // ).toList(), -// // ), -// // ), -// // ), -// // ); -// // }); -// // } -// -// void onLeaveSession(bool isEndSession) async { -// await zoom.leaveSession(isEndSession); -// Navigator.pushAndRemoveUntil( -// context, -// CustomPageRoute( -// page: LandingNavigation(), -// ), -// (r) => false); -// } -// -// void showLeaveOptions() async { -// ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); -// bool isHost = await mySelf!.getIsHost(); -// -// Widget endSession; -// Widget leaveSession; -// Widget cancel = TextButton( -// child: const Text('Cancel'), -// onPressed: () { -// Navigator.pop(context); //close Dialog -// }, -// ); -// -// switch (defaultTargetPlatform) { -// case TargetPlatform.android: -// endSession = TextButton( -// child: const Text('End Session'), -// onPressed: () => onLeaveSession(true), -// ); -// leaveSession = TextButton( -// child: const Text('Leave Session'), -// onPressed: () => onLeaveSession(false), -// ); -// break; -// default: -// endSession = CupertinoActionSheetAction( -// isDestructiveAction: true, -// child: const Text('End Session'), -// onPressed: () => onLeaveSession(true), -// ); -// leaveSession = CupertinoActionSheetAction( -// child: const Text('Leave Session'), -// onPressed: () => onLeaveSession(false), -// ); -// break; -// } -// -// List options = [ -// leaveSession, -// cancel, -// ]; -// -// if (Platform.isAndroid) { -// if (isHost) { -// options.removeAt(1); -// options.insert(0, endSession); -// } -// showDialog( -// context: context, -// builder: (context) { -// return AlertDialog( -// content: const Text("Do you want to leave this session?"), -// shape: const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(2.0))), -// actions: options, -// ); -// }); -// } else { -// options.removeAt(1); -// if (isHost) { -// options.insert(1, endSession); -// } -// showCupertinoModalPopup( -// context: context, -// builder: (context) => CupertinoActionSheet( -// message: const Text('Are you sure that you want to leave the session?'), -// actions: options, -// cancelButton: cancel, -// ), -// ); -// } -// } -// -// final chatMessageController = TextEditingController(); -// -// void sendChatMessage(String message) async { -// await zoom.chatHelper.sendChatToAll(message); -// ZoomVideoSdkUser? self = await zoom.session.getMySelf(); -// ZoomVideoSdkCmdChannel cmdChannel = zoom.cmdChannel; -// for (var user in users.value) { -// if (user.userId != self?.userId) { -// await zoom.cmdChannel.sendCommand(user.userId, message); -// } -// } -// chatMessageController.clear(); -// // send the chat as a command -// } -// -// void onSelectedUser(ZoomVideoSdkUser user) async { -// setState(() { -// fullScreenUser.value = user; -// }); -// } -// -// changeNamePopup = Center( -// child: Stack( -// children: [ -// Visibility( -// visible: isRenameModalVisible.value, -// child: Row( -// mainAxisSize: MainAxisSize.min, -// children: [ -// Container( -// alignment: Alignment.bottomLeft, -// decoration: const BoxDecoration( -// borderRadius: BorderRadius.all(Radius.circular(10)), -// color: Colors.white, -// ), -// width: MediaQuery.of(context).size.width - 130, -// height: MediaQuery.of(context).size.height * 0.2, -// child: Center( -// child: (Column( -// crossAxisAlignment: CrossAxisAlignment.start, -// children: [ -// Padding( -// padding: const EdgeInsets.only(top: 20, left: 20), -// child: Text( -// 'Change Name', -// style: const TextStyle( -// fontSize: 18, -// fontWeight: FontWeight.w500, -// ), -// ), -// ), -// Padding( -// padding: const EdgeInsets.only(top: 10, left: 20), -// child: SizedBox( -// width: MediaQuery.of(context).size.width - 230, -// child: TextField( -// onEditingComplete: () {}, -// autofocus: true, -// cursorColor: Colors.black, -// controller: changeNameController, -// decoration: InputDecoration( -// isDense: true, -// hintText: 'New name', -// hintStyle: TextStyle( -// fontSize: 14.0, -// color: chatTextColor, -// ), -// ), -// ), -// ), -// ), -// Padding( -// padding: const EdgeInsets.only(top: 15), -// child: Row( -// children: [ -// Padding( -// padding: const EdgeInsets.only(left: 40), -// child: InkWell( -// child: Text( -// 'Apply', -// style: const TextStyle( -// fontSize: 16, -// ), -// ), -// onTap: () async { -// if (fullScreenUser.value != null) { -// ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); -// await zoom.userHelper.changeName((mySelf?.userId)!, changeNameController.text); -// changeNameController.clear(); -// } -// isRenameModalVisible.value = false; -// }, -// ), -// ), -// Padding( -// padding: const EdgeInsets.only(left: 40), -// child: InkWell( -// child: Text( -// 'Cancel', -// style: const TextStyle( -// fontSize: 16, -// ), -// ), -// onTap: () async { -// isRenameModalVisible.value = false; -// }, -// ), -// ) -// ], -// ), -// ) -// ], -// )), -// ), -// ), -// ], -// )), -// ], -// ), -// ); -// -// Widget fullScreenView; -// Widget smallView; -// Widget cameraView; -// -// if (isInSession.value && fullScreenUser.value != null && users.value.isNotEmpty) { -// fullScreenView = AnimatedOpacity( -// opacity: opacityLevel, -// duration: const Duration(seconds: 3), -// child: VideoView( -// user: users.value.length > 1 ? users.value[1] : users.value[0], -// hasMultiCamera: false, -// isPiPView: isPiPView.value, -// sharing: sharingUser.value == null ? false : (sharingUser.value?.userId == fullScreenUser.value?.userId), -// preview: false, -// focused: false, -// multiCameraIndex: "0", -// videoAspect: VideoAspect.Original, -// fullScreen: true, -// resolution: VideoResolution.Resolution360, -// ), -// ); -// -// smallView = Container( -// height: 110, -// margin: const EdgeInsets.only(left: 20, right: 20), -// alignment: Alignment.center, -// child: ListView.separated( -// scrollDirection: Axis.horizontal, -// itemCount: users.value.length, -// itemBuilder: (BuildContext context, int index) { -// return InkWell( -// onTap: () async { -// onSelectedUser(users.value[index]); -// }, -// onDoubleTap: () async { -// onSelectedUserVolume(users.value[index]); -// }, -// child: Center( -// child: VideoView( -// user: users.value[index], -// hasMultiCamera: false, -// isPiPView: false, -// sharing: false, -// preview: false, -// focused: false, -// multiCameraIndex: "0", -// videoAspect: VideoAspect.Original, -// fullScreen: false, -// resolution: VideoResolution.Resolution180, -// ), -// ), -// ); -// }, -// separatorBuilder: (BuildContext context, int index) => const Divider(), -// ), -// ); -// } else { -// fullScreenView = Container( -// color: Colors.black, -// child: const Center( -// child: Text( -// "Connecting...", -// style: TextStyle( -// fontSize: 20, -// color: Colors.white, -// ), -// ), -// )); -// smallView = Container( -// height: 110, -// color: Colors.transparent, -// ); -// } -// -// cameraView = Offstage( -// offstage: !isSharedCamera.value, -// child: AnimatedOpacity( -// opacity: isSharedCamera.value ? 1.0 : 0.0, -// duration: const Duration(milliseconds: 300), -// child: cameraShareView, -// ), -// ); -// -// _changeOpacity; -// return Scaffold( -// resizeToAvoidBottomInset: false, -// backgroundColor: backgroundColor, -// body: Stack( -// children: [ -// // isScreenBeingShared ? fullScreenView : SizedBox.shrink(), -// isScreenBeingShared ? SizedBox.shrink() : fullScreenView, -// cameraView, -// Container( -// padding: const EdgeInsets.only(top: 35), -// child: Stack( -// children: [ -// Row( -// crossAxisAlignment: CrossAxisAlignment.start, -// mainAxisAlignment: MainAxisAlignment.spaceBetween, -// children: [ -// Container( -// height: 80, -// width: 180, -// margin: const EdgeInsets.only(top: 16, left: 8), -// padding: const EdgeInsets.all(8), -// alignment: Alignment.topLeft, -// decoration: BoxDecoration( -// borderRadius: const BorderRadius.all(Radius.circular(8.0)), -// // color: buttonBackgroundColor, -// ), -// // child: InkWell( -// // onTap: () async { -// // showDialog( -// // context: context, -// // builder: (context) { -// // return Dialog( -// // elevation: 0.0, -// // insetPadding: const EdgeInsets.symmetric(horizontal: 40), -// // shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), -// // child: FractionallySizedBox( -// // heightFactor: 0.2, -// // widthFactor: 0.3, -// // child: Column( -// // crossAxisAlignment: CrossAxisAlignment.stretch, -// // children: [ -// // ListView( -// // shrinkWrap: true, -// // children: ListTile.divideTiles( -// // context: context, -// // tiles: [ -// // ListTile( -// // title: Text( -// // 'Session Information', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 18, -// // fontWeight: FontWeight.w600, -// // ), -// // ), -// // ), -// // ), -// // ListTile( -// // title: Text( -// // 'Session Name', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // ), -// // ), -// // ), -// // subtitle: Text( -// // sessionName.value, -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 12, -// // ), -// // ), -// // ), -// // ), -// // ListTile( -// // title: Text( -// // 'Session Password', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // ), -// // ), -// // ), -// // subtitle: Text( -// // sessionPassword.value, -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 12, -// // ), -// // ), -// // ), -// // ), -// // ListTile( -// // title: Text( -// // 'Participants', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // ), -// // ), -// // ), -// // subtitle: Text( -// // '${users.value.length}', -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 12, -// // ), -// // ), -// // ), -// // ), -// // ], -// // ).toList(), -// // ), -// // ], -// // ), -// // )); -// // }); -// // }, -// // child: Stack( -// // children: [ -// // Column( -// // children: [ -// // const Padding(padding: EdgeInsets.symmetric(vertical: 4)), -// // Align( -// // alignment: Alignment.centerLeft, -// // child: Text( -// // sessionName.value, -// // overflow: TextOverflow.ellipsis, -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.w600, -// // color: Colors.white, -// // ), -// // ), -// // ), -// // ), -// // const Padding(padding: EdgeInsets.symmetric(vertical: 5)), -// // Align( -// // alignment: Alignment.centerLeft, -// // child: Text( -// // "Participants: ${users.value.length}", -// // style: GoogleFonts.lato( -// // textStyle: const TextStyle( -// // fontSize: 14, -// // fontWeight: FontWeight.w600, -// // color: Colors.white, -// // ), -// // ), -// // ), -// // ) -// // ], -// // ), -// // Container( -// // alignment: Alignment.centerRight, -// // child: Image.asset( -// // "assets/icons/unlocked@2x.png", -// // height: 22, -// // )), -// // ], -// // ), -// // ), -// ), -// TextButton( -// onPressed: (showLeaveOptions), -// child: Container( -// alignment: Alignment.topRight, -// margin: const EdgeInsets.only(top: 16, right: 8), -// padding: const EdgeInsets.only(top: 5, bottom: 5, left: 16, right: 16), -// height: 28, -// decoration: BoxDecoration( -// borderRadius: const BorderRadius.all(Radius.circular(20.0)), -// color: buttonBackgroundColor, -// ), -// child: const Text( -// "LEAVE", -// style: TextStyle( -// fontSize: 14, -// fontWeight: FontWeight.bold, -// color: Color(0xFFE02828), -// ), -// ), -// )), -// ], -// ), -// Align( -// alignment: Alignment.centerRight, -// child: FractionallySizedBox( -// widthFactor: 0.2, -// heightFactor: 0.6, -// child: Column( -// mainAxisAlignment: MainAxisAlignment.center, -// children: [ -// IconButton( -// onPressed: onPressAudio, -// icon: isMuted.value ? Image.asset("assets/images/png/zoom/unmute@2x.png") : Image.asset("assets/images/png/zoom/mute@2x.png"), -// iconSize: circleButtonSize, -// tooltip: isMuted.value == true ? "Unmute" : "Mute", -// ), -// IconButton( -// onPressed: onPressShare, -// icon: isSharing.value ? Image.asset("assets/images/png/zoom/share-off@2x.png") : Image.asset("assets/images/png/zoom/share-on@2x.png"), -// iconSize: circleButtonSize, -// ), -// IconButton( -// onPressed: onPressVideo, -// iconSize: circleButtonSize, -// icon: isVideoOn.value ? Image.asset("assets/images/png/zoom/video-off@2x.png") : Image.asset("assets/images/png/zoom/video-on@2x.png"), -// ), -// Column( -// children: [ -// IconButton( -// onPressed: () async { -// onPressCameraList(); -// }, -// icon: Icon(Icons.cameraswitch, color: Colors.white), -// color: Colors.white, -// iconSize: 40.h, -// ), -// "Switch Camera".toText12(color: AppColors.whiteColor, isCenter: true, isBold: true) -// ], -// ), -// ], -// ), -// )), -// Container( -// margin: const EdgeInsets.only(left: 16, right: 16, bottom: 40, top: 10), -// alignment: Alignment.bottomCenter, -// child: SizedBox( -// height: MediaQuery.of(context).viewInsets.bottom == 0 ? 65 : MediaQuery.of(context).viewInsets.bottom + 18, -// child: TextField( -// maxLines: 1, -// textAlign: TextAlign.left, -// style: TextStyle(color: chatTextColor), -// cursorColor: chatTextColor, -// textAlignVertical: TextAlignVertical.center, -// controller: chatMessageController, -// decoration: InputDecoration( -// contentPadding: const EdgeInsets.only(left: 16, top: 10, bottom: 10, right: 16), -// enabledBorder: OutlineInputBorder( -// borderSide: BorderSide(width: 1, color: chatTextColor), //<-- SEE HERE -// ), -// hintText: 'Type your message here...', -// hintStyle: TextStyle( -// fontSize: 14.0, -// color: chatTextColor, -// ), -// ), -// onSubmitted: (String str) { -// sendChatMessage(str); -// }, -// ), -// ), -// ), -// Container( -// alignment: Alignment.bottomLeft, -// margin: const EdgeInsets.only(bottom: 120), -// child: smallView, -// ), -// // CommentList(zoom: zoom, eventListener: eventListener), -// changeNamePopup, -// ], -// )), -// ], -// )); -// } -// } -// -// class CallArguments { -// final bool isJoin; -// final String sessionName; -// final String sessionPwd; -// final String displayName; -// final String sessionIdleTimeoutMins; -// final String role; -// final int callType; -// -// CallArguments(this.sessionName, this.sessionPwd, this.displayName, this.sessionIdleTimeoutMins, this.role, this.isJoin, this.callType); -// } -// -// class JoinArguments { -// final bool isJoin; -// final String sessionName; -// final String sessionPwd; -// final String displayName; -// final String sessionTimeout; -// final String roleType; -// -// JoinArguments(this.isJoin, this.sessionName, this.sessionPwd, this.displayName, this.sessionTimeout, this.roleType); -// } +import 'dart:async'; +import 'dart:convert'; +import 'dart:io'; + +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/cupertino.dart'; +import 'package:flutter/foundation.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter/services.dart'; +import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:flutter_ios_voip_kit_karmm/flutter_ios_voip_kit.dart'; +import 'package:flutter_zoom_videosdk/flutter_zoom_view.dart'; +import 'package:flutter_zoom_videosdk/native/zoom_videosdk.dart'; +import 'package:flutter_zoom_videosdk/native/zoom_videosdk_camera_device.dart'; +import 'package:flutter_zoom_videosdk/native/zoom_videosdk_cmd_channel.dart'; +import 'package:flutter_zoom_videosdk/native/zoom_videosdk_event_listener.dart'; +import 'package:flutter_zoom_videosdk/native/zoom_videosdk_live_transcription_message_info.dart'; +import 'package:flutter_zoom_videosdk/native/zoom_videosdk_share_action.dart'; +import 'package:flutter_zoom_videosdk/native/zoom_videosdk_user.dart'; +import 'package:get_it/get_it.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/cache_consts.dart'; +import 'package:hmg_patient_app_new/core/utils/jwt.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; +import 'package:hmg_patient_app_new/presentation/tele_consultation/zoom/video_view.dart'; +import 'package:hmg_patient_app_new/services/livecare_permission_service.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'package:image_picker/image_picker.dart'; +import 'package:permission_handler/permission_handler.dart'; + +class CallScreen extends StatefulHookWidget { + const CallScreen({Key? key}) : super(key: key); + + @override + State createState() => _CallScreenState(); +} + +class _CallScreenState extends State { + static TextEditingController changeNameController = TextEditingController(); + double opacityLevel = 1.0; + + final voIPKit = FlutterIOSVoIPKit.instance; + + bool isScreenBeingShared = false; + + void _changeOpacity() { + setState(() => opacityLevel = opacityLevel == 0 ? 1.0 : 0.0); + } + + @override + Widget build(BuildContext context) { + var zoom = ZoomVideoSdk(); + var eventListener = ZoomVideoSdkEventListener(); + var isInSession = useState(false); + var sessionName = useState(''); + var sessionPassword = useState(''); + var users = useState([]); + var fullScreenUser = useState(null); + var sharingUser = useState(null); + var videoInfo = useState(''); + var isSharing = useState(false); + var isMuted = useState(true); + var isVideoOn = useState(false); + var isSpeakerOn = useState(false); + var isRenameModalVisible = useState(false); + var isRecordingStarted = useState(false); + var isMicOriginalOn = useState(false); + var isMounted = useIsMounted(); + var audioStatusFlag = useState(false); + var videoStatusFlag = useState(false); + var userNameFlag = useState(false); + var userShareStatusFlag = useState(false); + var isReceiveSpokenLanguageContentEnabled = useState(false); + var isVideoMirrored = useState(false); + var isOriginalAspectRatio = useState(false); + var isPiPView = useState(false); + var isSharedCamera = useState(false); + CameraShareView cameraShareView = const CameraShareView(creationParams: {}); + + //hide status bar + SystemChrome.setEnabledSystemUIMode(SystemUiMode.leanBack); + var circleButtonSize = 65.0; + Color backgroundColor = const Color(0xFF232323); + Color buttonBackgroundColor = const Color.fromRGBO(0, 0, 0, 0.6); + Color chatTextColor = const Color(0xFFAAAAAA); + Widget changeNamePopup; + final args = ModalRoute.of(context)!.settings.arguments as CallArguments; + var isFrontCamera = useState(true); + + useEffect(() { + Future.microtask(() async { + final statuses = await LiveCarePermissionService.instance.requestCameraMicAndNotification(true, context); + bool cameraGranted = statuses[Permission.camera]?.isGranted ?? false; + bool micGranted = statuses[Permission.microphone]?.isGranted ?? false; + if (cameraGranted && micGranted) { + } else { + await LiveCarePermissionService.instance.showOpenSettingsDialog( + context, + title: LocaleKeys.permissionsProfile.tr(), + message: LocaleKeys.liveCarePermissions.tr(), + ); + } + + var token = generateJwt(args.sessionName, args.role); + + Utils.removeFromPrefs(CacheConst.isAppOpenedFromCall); + + try { + Map SDKaudioOptions = {"connect": true, "mute": false, "autoAdjustSpeakerVolume": false}; + // Map SDKvideoOptions = { + // "localVideoOn": true, + // }; + Map SDKvideoOptions = { + "localVideoOn": args.callType == 1 ? true : false, + }; + JoinSessionConfig joinSession = JoinSessionConfig( + sessionName: args.sessionName, + sessionPassword: args.sessionPwd, + token: token, + userName: args.displayName, + audioOptions: SDKaudioOptions, + videoOptions: SDKvideoOptions, + sessionIdleTimeoutMins: int.parse(args.sessionIdleTimeoutMins), + ); + await zoom.joinSession(joinSession); + } catch (e) { + const AlertDialog( + title: Text("Error"), + content: Text("Failed to join the session"), + ); + Future.delayed(const Duration(milliseconds: 1000)).asStream().listen((event) { + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }); + } + }); + return null; + }, []); + + useEffect(() { + final sessionJoinListener = eventListener.addListener(EventType.onSessionJoin, (data) async { + data = data as Map; + isInSession.value = true; + zoom.session.getSessionName().then((value) => sessionName.value = value!); + sessionPassword.value = await zoom.session.getSessionPassword(); + debugPrint("sessionPhonePasscode: ${await zoom.session.getSessionPhonePasscode()}"); + ZoomVideoSdkUser mySelf = ZoomVideoSdkUser.fromJson(jsonDecode(data['sessionUser'])); + List? remoteUsers = await zoom.session.getRemoteUsers(); + var muted = await mySelf.audioStatus?.isMuted(); + var videoOn = await mySelf.videoStatus?.isOn(); + var speakerOn = await zoom.audioHelper.getSpeakerStatus(); + fullScreenUser.value = mySelf; + remoteUsers?.insert(0, mySelf); + isMuted.value = muted!; + isSpeakerOn.value = speakerOn; + isVideoOn.value = videoOn!; + users.value = remoteUsers!; + isReceiveSpokenLanguageContentEnabled.value = await zoom.liveTranscriptionHelper.isReceiveSpokenLanguageContentEnabled(); + }); + + final sessionLeaveListener = eventListener.addListener(EventType.onSessionLeave, (data) async { + data = data as Map; + debugPrint("onSessionLeave: ${data['reason']}"); + isInSession.value = false; + users.value = []; + fullScreenUser.value = null; + // Navigator.popAndPushNamed( + // context, + // "Join", + // arguments: JoinArguments(args.isJoin, sessionName.value, sessionPassword.value, args.displayName, args.sessionIdleTimeoutMins, args.role), + // ); + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + }); + + final sessionNeedPasswordListener = eventListener.addListener(EventType.onSessionNeedPassword, (data) async { + showDialog( + context: context, + builder: (BuildContext context) => AlertDialog( + title: const Text('Session Need Password'), + content: const Text('Password is required'), + actions: [ + TextButton( + onPressed: () async => { + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false), + await zoom.leaveSession(false), + }, + child: const Text('OK'), + ), + ], + ), + ); + }); + + final sessionPasswordWrongListener = eventListener.addListener(EventType.onSessionPasswordWrong, (data) async { + showDialog( + context: context, + builder: (BuildContext context) => AlertDialog( + title: const Text('Session Password Incorrect'), + content: const Text('Password is wrong'), + actions: [ + TextButton( + onPressed: () async => { + Navigator.popAndPushNamed(context, 'Join', arguments: JoinArguments(args.isJoin, args.sessionName, "", args.displayName, args.sessionIdleTimeoutMins, args.role)), + await zoom.leaveSession(false), + }, + child: const Text('OK'), + ), + ], + ), + ); + }); + + final userVideoStatusChangedListener = eventListener.addListener(EventType.onUserVideoStatusChanged, (data) async { + data = data as Map; + ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); + var userListJson = jsonDecode(data['changedUsers']) as List; + List userList = userListJson.map((userJson) => ZoomVideoSdkUser.fromJson(userJson)).toList(); + for (var user in userList) { + { + if (user.userId == mySelf?.userId) { + mySelf?.videoStatus?.isOn().then((on) => isVideoOn.value = on); + } + } + } + videoStatusFlag.value = !videoStatusFlag.value; + }); + + final userAudioStatusChangedListener = eventListener.addListener(EventType.onUserAudioStatusChanged, (data) async { + data = data as Map; + ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); + var userListJson = jsonDecode(data['changedUsers']) as List; + List userList = userListJson.map((userJson) => ZoomVideoSdkUser.fromJson(userJson)).toList(); + for (var user in userList) { + { + if (user.userId == mySelf?.userId) { + mySelf?.audioStatus?.isMuted().then((muted) => isMuted.value = muted); + } + } + } + audioStatusFlag.value = !audioStatusFlag.value; + }); + + final userShareStatusChangeListener = eventListener.addListener(EventType.onUserShareStatusChanged, (data) async { + data = data as Map; + ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); + ZoomVideoSdkUser shareUser = ZoomVideoSdkUser.fromJson(jsonDecode(data['user'].toString())); + ZoomVideoSdkShareAction? shareAction = ZoomVideoSdkShareAction.fromJson(jsonDecode(data['shareAction'])); + + if (shareAction.shareStatus == ShareStatus.Start || shareAction.shareStatus == ShareStatus.Resume) { + sharingUser.value = shareUser; + fullScreenUser.value = shareUser; + isSharing.value = (shareUser.userId == mySelf?.userId); + + setState(() { + isScreenBeingShared = true; + }); + Future.delayed(const Duration(seconds: 2), () { + setState(() { + isScreenBeingShared = false; + }); + }); + } else { + sharingUser.value = null; + isSharing.value = false; + isSharedCamera.value = false; + fullScreenUser.value = mySelf; + isScreenBeingShared = false; + setState(() { + isScreenBeingShared = true; + }); + Future.delayed(const Duration(seconds: 2), () { + setState(() { + isScreenBeingShared = false; + }); + }); + } + userShareStatusFlag.value = !userShareStatusFlag.value; + }); + + final shareContentChangedListener = eventListener.addListener(EventType.onShareContentChanged, (data) async { + data = data as Map; + ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); + ZoomVideoSdkUser shareUser = ZoomVideoSdkUser.fromJson(jsonDecode(data['user'].toString())); + ZoomVideoSdkShareAction? shareAction = ZoomVideoSdkShareAction.fromJson(jsonDecode(data['shareAction'])); + if (shareAction.shareType == ShareType.Camera) { + debugPrint("Camera share started"); + isSharedCamera.value = (shareUser.userId == mySelf?.userId); + } + }); + + final userJoinListener = eventListener.addListener(EventType.onUserJoin, (data) async { + if (!isMounted()) return; + data = data as Map; + ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); + var userListJson = jsonDecode(data['remoteUsers']) as List; + List remoteUserList = userListJson.map((userJson) => ZoomVideoSdkUser.fromJson(userJson)).toList(); + remoteUserList.insert(0, mySelf!); + users.value = remoteUserList; + }); + + final userLeaveListener = eventListener.addListener(EventType.onUserLeave, (data) async { + if (!isMounted()) return; + ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); + data = data as Map; + List? remoteUserList = await zoom.session.getRemoteUsers(); + var leftUserListJson = jsonDecode(data['leftUsers']) as List; + List leftUserLis = leftUserListJson.map((userJson) => ZoomVideoSdkUser.fromJson(userJson)).toList(); + + // If no remote users remain, the other participant has left — end the session + if (remoteUserList == null || remoteUserList.isEmpty) { + await zoom.leaveSession(true); + final navContext = GetIt.instance().navigatorKey.currentContext; + if (navContext != null && Navigator.canPop(navContext)) { + Navigator.pushAndRemoveUntil( + navContext, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + } + return; + } + + if (fullScreenUser.value != null) { + for (var user in leftUserLis) { + { + if (fullScreenUser.value?.userId == user.userId) { + fullScreenUser.value = mySelf; + } + } + } + } else { + fullScreenUser.value = mySelf; + } + remoteUserList.add(mySelf!); + users.value = remoteUserList; + }); + + final userNameChangedListener = eventListener.addListener(EventType.onUserNameChanged, (data) async { + if (!isMounted()) return; + data = data as Map; + ZoomVideoSdkUser? changedUser = ZoomVideoSdkUser.fromJson(jsonDecode(data['changedUser'])); + int index; + for (var user in users.value) { + if (user.userId == changedUser.userId) { + index = users.value.indexOf(user); + users.value[index] = changedUser; + } + } + userNameFlag.value = !userNameFlag.value; + }); + + final commandReceived = eventListener.addListener(EventType.onCommandReceived, (data) async { + data = data as Map; + debugPrint("sender: ${ZoomVideoSdkUser.fromJson(jsonDecode(data['sender']))}, command: ${data['command']}"); + }); + + final liveStreamStatusChangeListener = eventListener.addListener(EventType.onLiveStreamStatusChanged, (data) async { + data = data as Map; + debugPrint("onLiveStreamStatusChanged: status: ${data['status']}"); + }); + + final liveTranscriptionStatusChangeListener = eventListener.addListener(EventType.onLiveTranscriptionStatus, (data) async { + data = data as Map; + debugPrint("onLiveTranscriptionStatus: status: ${data['status']}"); + }); + + final cloudRecordingStatusListener = eventListener.addListener(EventType.onCloudRecordingStatus, (data) async { + data = data as Map; + debugPrint("onCloudRecordingStatus: status: ${data['status']}"); + ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); + if (data['status'] == RecordingStatus.Start) { + if (mySelf != null && !mySelf.isHost!) { + await zoom.acceptRecordingConsent(); + // showDialog( + // context: context, + // builder: (BuildContext context) => AlertDialog( + // content: const Text('The session is being recorded.'), + // actions: [ + // TextButton( + // onPressed: () async { + // await zoom.acceptRecordingConsent(); + // if (context.mounted) { + // Navigator.pop(context); + // } + // ; + // }, + // child: const Text('accept'), + // ), + // TextButton( + // onPressed: () async { + // String currentConsentType = await zoom.getRecordingConsentType(); + // if (currentConsentType == ConsentType.ConsentType_Individual) { + // await zoom.declineRecordingConsent(); + // Navigator.pop(context); + // } else { + // await zoom.declineRecordingConsent(); + // zoom.leaveSession(false); + // if (!context.mounted) return; + // Navigator.popAndPushNamed( + // context, + // "Join", + // arguments: JoinArguments(args.isJoin, sessionName.value, sessionPassword.value, args.displayName, args.sessionIdleTimeoutMins, args.role), + // ); + // } + // }, + // child: const Text('decline'), + // ), + // ], + // ), + // ); + } + isRecordingStarted.value = true; + } else { + isRecordingStarted.value = false; + } + }); + + final liveTranscriptionMsgInfoReceivedListener = eventListener.addListener(EventType.onLiveTranscriptionMsgInfoReceived, (data) async { + data = data as Map; + ZoomVideoSdkLiveTranscriptionMessageInfo? messageInfo = ZoomVideoSdkLiveTranscriptionMessageInfo.fromJson(jsonDecode(data['messageInfo'])); + debugPrint("onLiveTranscriptionMsgInfoReceived: content: ${messageInfo.messageContent}"); + }); + + final inviteByPhoneStatusListener = eventListener.addListener(EventType.onInviteByPhoneStatus, (data) async { + data = data as Map; + debugPrint("onInviteByPhoneStatus: status: ${data['status']}, reason: ${data['reason']}"); + }); + + final multiCameraStreamStatusChangedListener = eventListener.addListener(EventType.onMultiCameraStreamStatusChanged, (data) async { + data = data as Map; + ZoomVideoSdkUser? changedUser = ZoomVideoSdkUser.fromJson(jsonDecode(data['changedUser'])); + var status = data['status']; + for (var user in users.value) { + { + if (changedUser.userId == user.userId) { + if (status == MultiCameraStreamStatus.Joined) { + user.hasMultiCamera = true; + } else if (status == MultiCameraStreamStatus.Left) { + user.hasMultiCamera = false; + } + } + } + } + }); + + final requireSystemPermission = eventListener.addListener(EventType.onRequireSystemPermission, (data) async { + data = data as Map; + ZoomVideoSdkUser? changedUser = ZoomVideoSdkUser.fromJson(jsonDecode(data['changedUser'])); + var permissionType = data['permissionType']; + switch (permissionType) { + case SystemPermissionType.Camera: + showDialog( + context: context, + builder: (BuildContext context) => AlertDialog( + title: const Text("Can't Access Camera"), + content: const Text("please turn on the toggle in system settings to grant permission"), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context, 'OK'), + child: const Text('OK'), + ), + ], + ), + ); + break; + case SystemPermissionType.Microphone: + showDialog( + context: context, + builder: (BuildContext context) => AlertDialog( + title: const Text("Can't Access Microphone"), + content: const Text("please turn on the toggle in system settings to grant permission"), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context, 'OK'), + child: const Text('OK'), + ), + ], + ), + ); + break; + } + }); + + final networkStatusChangeListener = eventListener.addListener(EventType.onUserVideoNetworkStatusChanged, (data) async { + data = data as Map; + ZoomVideoSdkUser? networkUser = ZoomVideoSdkUser.fromJson(jsonDecode(data['user'])); + + if (data['status'] == NetworkStatus.Bad) { + debugPrint("onUserVideoNetworkStatusChanged: status: ${data['status']}, user: ${networkUser.userName}"); + } + }); + + final eventErrorListener = eventListener.addListener(EventType.onError, (data) async { + data = data as Map; + String errorType = data['errorType']; + showDialog( + context: context, + builder: (BuildContext context) => AlertDialog( + title: const Text("Error"), + content: Text(errorType), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context, 'OK'), + child: const Text('OK'), + ), + ], + ), + ); + if (errorType == Errors.SessionJoinFailed || errorType == Errors.SessionDisconnecting) { + // Timer( + // const Duration(milliseconds: 1000), + // () { + // Navigator.popAndPushNamed( + // context, + // "Join", + // arguments: JoinArguments(args.isJoin, sessionName.value, sessionPassword.value, args.displayName, args.sessionIdleTimeoutMins, args.role), + // ); + // }); + } + }); + + final userRecordingConsentListener = eventListener.addListener(EventType.onUserRecordingConsent, (data) async { + data = data as Map; + ZoomVideoSdkUser? user = ZoomVideoSdkUser.fromJson(jsonDecode(data['user'])); + debugPrint('userRecordingConsentListener: user= ${user.userName}'); + }); + + final callCRCDeviceStatusListener = eventListener.addListener(EventType.onCallCRCDeviceStatusChanged, (data) async { + data = data as Map; + debugPrint('onCallCRCDeviceStatusChanged: status = ${data['status']}'); + }); + + final originalLanguageMsgReceivedListener = eventListener.addListener(EventType.onOriginalLanguageMsgReceived, (data) async { + data = data as Map; + ZoomVideoSdkLiveTranscriptionMessageInfo? messageInfo = ZoomVideoSdkLiveTranscriptionMessageInfo.fromJson(jsonDecode(data['messageInfo'])); + debugPrint("onOriginalLanguageMsgReceived: content: ${messageInfo.messageContent}"); + }); + + final chatPrivilegeChangedListener = eventListener.addListener(EventType.onChatPrivilegeChanged, (data) async { + data = data as Map; + String type = data['privilege']; + debugPrint('chatPrivilegeChangedListener: type= $type'); + }); + + final testMicStatusListener = eventListener.addListener(EventType.onTestMicStatusChanged, (data) async { + data = data as Map; + String status = data['status']; + debugPrint('testMicStatusListener: status= $status'); + }); + + final micSpeakerVolumeChangedListener = eventListener.addListener(EventType.onMicSpeakerVolumeChanged, (data) async { + data = data as Map; + int type = data['micVolume']; + debugPrint('onMicSpeakerVolumeChanged: micVolume= $type, speakerVolume'); + }); + + final cameraControlRequestResultListener = eventListener.addListener(EventType.onCameraControlRequestResult, (data) async { + data = data as Map; + bool approved = data['approved']; + debugPrint('onCameraControlRequestResult: approved= $approved'); + }); + + final callOutUserJoinListener = eventListener.addListener(EventType.onCalloutJoinSuccess, (data) async { + data = data as Map; + String phoneNumber = data['phoneNumber']; + ZoomVideoSdkUser? user = ZoomVideoSdkUser.fromJson(jsonDecode(data['user'])); + debugPrint('onCalloutJoinSuccess: phoneNumber= $phoneNumber, user= ${user.userName}'); + }); + + return () => { + sessionJoinListener.cancel(), + sessionLeaveListener.cancel(), + sessionPasswordWrongListener.cancel(), + sessionNeedPasswordListener.cancel(), + userVideoStatusChangedListener.cancel(), + userAudioStatusChangedListener.cancel(), + userJoinListener.cancel(), + userLeaveListener.cancel(), + userNameChangedListener.cancel(), + userShareStatusChangeListener.cancel(), + liveStreamStatusChangeListener.cancel(), + cloudRecordingStatusListener.cancel(), + inviteByPhoneStatusListener.cancel(), + eventErrorListener.cancel(), + commandReceived.cancel(), + liveTranscriptionStatusChangeListener.cancel(), + liveTranscriptionMsgInfoReceivedListener.cancel(), + multiCameraStreamStatusChangedListener.cancel(), + requireSystemPermission.cancel(), + userRecordingConsentListener.cancel(), + networkStatusChangeListener.cancel(), + callCRCDeviceStatusListener.cancel(), + originalLanguageMsgReceivedListener.cancel(), + chatPrivilegeChangedListener.cancel(), + testMicStatusListener.cancel(), + micSpeakerVolumeChangedListener.cancel(), + cameraControlRequestResultListener.cancel(), + callOutUserJoinListener.cancel(), + shareContentChangedListener.cancel(), + }; + }, [zoom, users.value, isMounted]); + + void selectVirtualBackgroundItem() async { + final ImagePicker picker = ImagePicker(); + // Pick an image. + final XFile? image = await picker.pickImage(source: ImageSource.gallery); + await zoom.virtualBackgroundHelper.addVirtualBackgroundItem(image!.path); + } + + void onPressAudio() async { + final statuses = await LiveCarePermissionService.instance.requestCameraMicAndNotification(true, context); + bool cameraGranted = statuses[Permission.camera]?.isGranted ?? false; + bool micGranted = statuses[Permission.microphone]?.isGranted ?? false; + + if (cameraGranted && micGranted) { + ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); + if (mySelf != null) { + final audioStatus = mySelf.audioStatus; + if (audioStatus != null) { + var muted = await audioStatus.isMuted(); + if (muted) { + await zoom.audioHelper.unMuteAudio(mySelf.userId); + } else { + await zoom.audioHelper.muteAudio(mySelf.userId); + } + } + } + } else { + await LiveCarePermissionService.instance.showOpenSettingsDialog( + context, + title: LocaleKeys.permissionsProfile.tr(), + message: LocaleKeys.liveCarePermissions.tr(), + ); + } + } + + void onPressVideo() async { + final statuses = await LiveCarePermissionService.instance.requestCameraMicAndNotification(true, context); + bool cameraGranted = statuses[Permission.camera]?.isGranted ?? false; + bool micGranted = statuses[Permission.microphone]?.isGranted ?? false; + + if (cameraGranted && micGranted) { + ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); + if (mySelf != null) { + final videoStatus = mySelf.videoStatus; + if (videoStatus != null) { + var videoOn = await videoStatus.isOn(); + if (videoOn) { + await zoom.videoHelper.stopVideo(); + } else { + await zoom.videoHelper.startVideo(); + } + } + } + } else { + await LiveCarePermissionService.instance.showOpenSettingsDialog( + context, + title: LocaleKeys.permissionsProfile.tr(), + message: LocaleKeys.liveCarePermissions.tr(), + ); + } + } + + void onPressShare() async { + var isOtherSharing = await zoom.shareHelper.isOtherSharing(); + var isShareLocked = await zoom.shareHelper.isShareLocked(); + String? shareCameraViewResult = Errors.InternalError; + + if (isOtherSharing) { + showDialog( + context: context, + builder: (BuildContext context) => AlertDialog( + title: const Text("Error"), + content: const Text('Other is sharing'), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context, 'OK'), + child: const Text('OK'), + ), + ], + ), + ); + } else if (isShareLocked) { + showDialog( + context: context, + builder: (BuildContext context) => AlertDialog( + title: const Text("Error"), + content: const Text('Share is locked by host'), + actions: [ + TextButton( + onPressed: () => Navigator.pop(context, 'OK'), + child: const Text('OK'), + ), + ], + ), + ); + } else if (isSharing.value) { + zoom.shareHelper.stopShare(); + } else { + List options = [ + ListTile( + title: Text( + 'Share Device Screen', + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.normal, + color: Colors.black, + ), + ), + onTap: () async => { + zoom.shareHelper.shareScreen(), + Navigator.of(context).pop(), + }, + ), + ListTile( + title: Text( + 'Share Camera', + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.normal, + color: Colors.black, + ), + ), + onTap: () async => { + shareCameraViewResult = await zoom.shareHelper.startShareCamera(cameraShareView), + debugPrint('start camera: $shareCameraViewResult'), + Navigator.of(context).pop(), + }, + ), + ]; + showDialog( + context: context, + builder: (context) { + return Dialog( + elevation: 0.0, + insetPadding: const EdgeInsets.symmetric(horizontal: 40), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), + child: SizedBox( + height: options.length * 60, + child: Scrollbar( + child: ListView( + shrinkWrap: true, + scrollDirection: Axis.vertical, + children: ListTile.divideTiles( + context: context, + tiles: options, + ).toList(), + ), + ), + ), + ); + }); + } + } + + void onSelectedUserVolume(ZoomVideoSdkUser user) async { + var isShareAudio = user.isSharing; + bool canSetVolume = await user.canSetUserVolume(user.userId, isShareAudio); + num userVolume; + + List options = [ + ListTile( + title: Text( + 'Adjust Volume', + style: const TextStyle( + fontSize: 18, + fontWeight: FontWeight.w600, + color: Colors.black, + ), + ), + ), + ListTile( + title: Text( + 'Current volume', + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.normal, + color: Colors.black, + ), + ), + onTap: () async => { + debugPrint('user volume'), + userVolume = await user.getUserVolume(user.userId, isShareAudio), + debugPrint('user ${user.userName}\'s volume is ${userVolume!}'), + }, + ), + ]; + if (canSetVolume) { + options.add( + ListTile( + title: Text( + 'Volume up', + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.normal, + color: Colors.black, + ), + ), + onTap: () async => { + userVolume = await user.getUserVolume(user.userId, isShareAudio), + if (userVolume < 10) + { + await user.setUserVolume(user.userId, userVolume + 1, isShareAudio), + } + else + { + debugPrint("Cannot volume up."), + } + }, + ), + ); + options.add( + ListTile( + title: Text( + 'Volume down', + style: const TextStyle( + fontSize: 14, + fontWeight: FontWeight.normal, + color: Colors.black, + ), + ), + onTap: () async => { + userVolume = await user.getUserVolume(user.userId, isShareAudio), + if (userVolume > 0) + { + await user.setUserVolume(user.userId, userVolume - 1, isShareAudio), + } + else + { + debugPrint("Cannot volume down."), + } + }, + ), + ); + } + showDialog( + context: context, + builder: (context) { + return Dialog( + elevation: 0.0, + insetPadding: const EdgeInsets.symmetric(horizontal: 40), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), + child: SizedBox( + height: options.length * 58, + child: Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + children: [ + ListView( + shrinkWrap: true, + children: ListTile.divideTiles( + context: context, + tiles: options, + ).toList(), + ), + ], + ), + )); + }); + } + + void onPressCameraList() async { + List cameraList = await zoom.videoHelper.getCameraList(); + if (cameraList.isEmpty) return; + + // Find the target camera by toggling between front and back + ZoomVideoSdkCameraDevice? targetCamera; + try { + if (isFrontCamera.value) { + // Currently front, switch to back + targetCamera = cameraList.firstWhere( + (c) => c.deviceName.toLowerCase().contains('back') || c.deviceName.toLowerCase().contains('rear'), + ); + } else { + // Currently back, switch to front + targetCamera = cameraList.firstWhere( + (c) => c.deviceName.toLowerCase().contains('front') || c.deviceName.toLowerCase().contains('facing'), + ); + } + } catch (_) { + targetCamera = null; + } + + // Fallback: if we can't identify by name, just pick the other camera + if (targetCamera == null && cameraList.length >= 2) { + final currentIndex = isFrontCamera.value ? 0 : 1; + final nextIndex = (currentIndex + 1) % cameraList.length; + targetCamera = cameraList[nextIndex]; + } + + if (targetCamera != null) { + await zoom.videoHelper.switchCamera(targetCamera.deviceId); + isFrontCamera.value = !isFrontCamera.value; + } + } + + // Future onPressMore() async { + // ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); + // bool isShareLocked = await zoom.shareHelper.isShareLocked(); + // bool canSwitchSpeaker = await zoom.audioHelper.canSwitchSpeaker(); + // bool canStartRecording = (await zoom.recordingHelper.canStartRecording()) == Errors.Success; + // debugPrint("canStartRecording ${await zoom.recordingHelper.canStartRecording()}"); + // var startLiveTranscription = (await zoom.liveTranscriptionHelper.getLiveTranscriptionStatus()) == LiveTranscriptionStatus.Start; + // bool canStartLiveTranscription = await zoom.liveTranscriptionHelper.canStartLiveTranscription(); + // bool isHost = (mySelf != null) ? (await mySelf.getIsHost()) : false; + // isOriginalAspectRatio.value = await zoom.videoHelper.isOriginalAspectRatioEnabled(); + // bool canCallOutToCRC = await zoom.CRCHelper.isCRCEnabled(); + // bool supportVB = await zoom.virtualBackgroundHelper.isSupportVirtualBackground(); + // List? shareActionList = await mySelf?.getShareActionList(); + // + // List options = [ + // ListTile( + // title: Text( + // 'More', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 18, + // isBold: true, + // color: Colors.black, + // ), + // ), + // ), + // ), + // ListTile( + // title: Text( + // 'Get Chat Privilege', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // debugPrint("Chat Privilege = ${await zoom.chatHelper.getChatPrivilege()}"), + // Navigator.of(context).pop(), + // }, + // ), + // ListTile( + // title: Text( + // 'Get Session Dial-in Number infos', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // debugPrint("session number = ${await zoom.session.getSessionNumber()}"), + // Navigator.of(context).pop(), + // }, + // ), + // ListTile( + // title: Text( + // 'Get Camera List', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // debugPrint("camera list= ${await zoom.videoHelper.getCameraList()}"), + // onPressCameraList(), + // Navigator.of(context).pop(), + // }, + // ), + // ListTile( + // title: Text( + // '${isMicOriginalOn.value ? 'Disable' : 'Enable'} Original Sound', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // debugPrint("${isMicOriginalOn.value}"), + // await zoom.audioSettingHelper.enableMicOriginalInput(!isMicOriginalOn.value), + // isMicOriginalOn.value = await zoom.audioSettingHelper.isMicOriginalInputEnable(), + // debugPrint("Original sound ${isMicOriginalOn.value ? 'Enabled' : 'Disabled'}"), + // Navigator.of(context).pop(), + // }, + // ) + // ]; + // + // if (supportVB) { + // options.add( + // ListTile( + // title: Text( + // 'Add Virtual Background', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // selectVirtualBackgroundItem(), + // Navigator.of(context).pop(), + // }, + // ), + // ); + // } + // + // if (canCallOutToCRC) { + // options.add(ListTile( + // title: Text( + // 'Call-out to CRC devices', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // debugPrint('CRC result = ${await zoom.CRCHelper.callCRCDevice("bjn.vc", ZoomVideoSdkCRCProtocolType.SIP)}'), + // Navigator.of(context).pop(), + // }, + // )); + // options.add(ListTile( + // title: Text( + // 'Cancel call-out to CRC devices', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // debugPrint('cancel result= ${await zoom.CRCHelper.cancelCallCRCDevice()}'), + // Navigator.of(context).pop(), + // }, + // )); + // } + // + // if (canSwitchSpeaker) { + // options.add(ListTile( + // title: Text( + // 'Turn ${isSpeakerOn.value ? 'off' : 'on'} Speaker', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // await zoom.audioHelper.setSpeaker(!isSpeakerOn.value), + // isSpeakerOn.value = await zoom.audioHelper.getSpeakerStatus(), + // debugPrint('Turned ${isSpeakerOn.value ? 'on' : 'off'} Speaker'), + // Navigator.of(context).pop(), + // }, + // )); + // } + // + // if (isHost) { + // options.add(ListTile( + // title: Text( + // '${isShareLocked ? 'Unlock' : 'Lock'} Share', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // debugPrint("isShareLocked = ${await zoom.shareHelper.lockShare(!isShareLocked)}"), + // Navigator.of(context).pop(), + // })); + // options.add(ListTile( + // title: Text( + // 'Change Name', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () => { + // isRenameModalVisible.value = true, + // Navigator.of(context).pop(), + // }, + // )); + // } + // + // if (canStartLiveTranscription) { + // options.add(ListTile( + // title: Text( + // "${startLiveTranscription ? 'Stop' : 'Start'} Live Transcription", + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // if (startLiveTranscription) + // { + // debugPrint('stopLiveTranscription= ${await zoom.liveTranscriptionHelper.stopLiveTranscription()}'), + // } + // else + // { + // debugPrint('startLiveTranscription= ${await zoom.liveTranscriptionHelper.startLiveTranscription()}'), + // }, + // Navigator.of(context).pop(), + // }, + // )); + // options.add(ListTile( + // title: Text( + // '${isReceiveSpokenLanguageContentEnabled.value ? 'Disable' : 'Enable'} receiving original caption', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // await zoom.liveTranscriptionHelper.enableReceiveSpokenLanguageContent(!isReceiveSpokenLanguageContentEnabled.value), + // isReceiveSpokenLanguageContentEnabled.value = await zoom.liveTranscriptionHelper.isReceiveSpokenLanguageContentEnabled(), + // debugPrint("isReceiveSpokenLanguageContentEnabled = ${isReceiveSpokenLanguageContentEnabled.value}"), + // Navigator.of(context).pop(), + // })); + // } + // + // if (canStartRecording) { + // options.add(ListTile( + // title: Text( + // '${isRecordingStarted.value ? 'Stop' : 'Start'} Recording', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // if (!isRecordingStarted.value) + // { + // debugPrint('isRecordingStarted = ${await zoom.recordingHelper.startCloudRecording()}'), + // } + // else + // { + // debugPrint('isRecordingStarted = ${await zoom.recordingHelper.stopCloudRecording()}'), + // }, + // Navigator.of(context).pop(), + // })); + // } + // + // if (Platform.isAndroid) { + // bool isFlashlightSupported = await zoom.videoHelper.isSupportFlashlight(); + // bool isFlashlightOn = await zoom.videoHelper.isFlashlightOn(); + // if (isFlashlightSupported) { + // options.add(ListTile( + // title: Text( + // '${isFlashlightOn ? 'Turn Off' : 'Turn On'} Flashlight', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // if (!isFlashlightOn) + // { + // await zoom.videoHelper.turnOnOrOffFlashlight(true), + // } + // else + // { + // await zoom.videoHelper.turnOnOrOffFlashlight(false), + // }, + // Navigator.of(context).pop(), + // })); + // } + // } + // + // if (Platform.isIOS) { + // options.add(ListTile( + // title: Text( + // '${isPiPView.value ? 'Disable' : 'Enable'} picture in picture view', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // isPiPView.value = !isPiPView.value, + // Navigator.of(context).pop(), + // })); + // } + // + // if (isVideoOn.value) { + // options.add(ListTile( + // title: Text( + // 'Mirror the video', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // await zoom.videoHelper.mirrorMyVideo(!isVideoMirrored.value), + // isVideoMirrored.value = await zoom.videoHelper.isMyVideoMirrored(), + // Navigator.of(context).pop(), + // })); + // options.add(ListTile( + // title: Text( + // '${isOriginalAspectRatio.value ? 'Enable' : 'Disable'} original aspect ratio', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // fontWeight: FontWeight.normal, + // color: Colors.black, + // ), + // ), + // ), + // onTap: () async => { + // await zoom.videoHelper.enableOriginalAspectRatio(!isOriginalAspectRatio.value), + // isOriginalAspectRatio.value = await zoom.videoHelper.isOriginalAspectRatioEnabled(), + // debugPrint("isOriginalAspectRatio= ${isOriginalAspectRatio.value}"), + // Navigator.of(context).pop(), + // })); + // } + // + // showDialog( + // context: context, + // builder: (context) { + // return Dialog( + // elevation: 0.0, + // insetPadding: const EdgeInsets.symmetric(horizontal: 40), + // shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), + // child: SizedBox( + // height: 500, + // child: Scrollbar( + // child: ListView( + // shrinkWrap: true, + // scrollDirection: Axis.vertical, + // children: ListTile.divideTiles( + // context: context, + // tiles: options, + // ).toList(), + // ), + // ), + // ), + // ); + // }); + // } + + void onLeaveSession(bool isEndSession) async { + await zoom.leaveSession(isEndSession); + Navigator.pushAndRemoveUntil( + context, + CustomPageRoute( + page: LandingNavigation(), + ), + (r) => false); + } + + void showLeaveOptions() async { + ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); + bool isHost = await mySelf!.getIsHost(); + + Widget endSession; + Widget leaveSession; + Widget cancel = TextButton( + child: const Text('Cancel'), + onPressed: () { + Navigator.pop(context); //close Dialog + }, + ); + + switch (defaultTargetPlatform) { + case TargetPlatform.android: + endSession = TextButton( + child: const Text('End Session'), + onPressed: () => onLeaveSession(true), + ); + leaveSession = TextButton( + child: const Text('Leave Session'), + onPressed: () => onLeaveSession(false), + ); + break; + default: + endSession = CupertinoActionSheetAction( + isDestructiveAction: true, + child: const Text('End Session'), + onPressed: () => onLeaveSession(true), + ); + leaveSession = CupertinoActionSheetAction( + child: const Text('Leave Session'), + onPressed: () => onLeaveSession(false), + ); + break; + } + + List options = [ + leaveSession, + cancel, + ]; + + if (Platform.isAndroid) { + if (isHost) { + options.removeAt(1); + options.insert(0, endSession); + } + showDialog( + context: context, + builder: (context) { + return AlertDialog( + content: const Text("Do you want to leave this session?"), + shape: const RoundedRectangleBorder(borderRadius: BorderRadius.all(Radius.circular(2.0))), + actions: options, + ); + }); + } else { + options.removeAt(1); + if (isHost) { + options.insert(1, endSession); + } + showCupertinoModalPopup( + context: context, + builder: (context) => CupertinoActionSheet( + message: const Text('Are you sure that you want to leave the session?'), + actions: options, + cancelButton: cancel, + ), + ); + } + } + + final chatMessageController = TextEditingController(); + + void sendChatMessage(String message) async { + await zoom.chatHelper.sendChatToAll(message); + ZoomVideoSdkUser? self = await zoom.session.getMySelf(); + ZoomVideoSdkCmdChannel cmdChannel = zoom.cmdChannel; + for (var user in users.value) { + if (user.userId != self?.userId) { + await zoom.cmdChannel.sendCommand(user.userId, message); + } + } + chatMessageController.clear(); + // send the chat as a command + } + + void onSelectedUser(ZoomVideoSdkUser user) async { + setState(() { + fullScreenUser.value = user; + }); + } + + changeNamePopup = Center( + child: Stack( + children: [ + Visibility( + visible: isRenameModalVisible.value, + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Container( + alignment: Alignment.bottomLeft, + decoration: const BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(10)), + color: Colors.white, + ), + width: MediaQuery.of(context).size.width - 130, + height: MediaQuery.of(context).size.height * 0.2, + child: Center( + child: (Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Padding( + padding: const EdgeInsets.only(top: 20, left: 20), + child: Text( + 'Change Name', + style: const TextStyle( + fontSize: 18, + fontWeight: FontWeight.w600, + ), + ), + ), + Padding( + padding: const EdgeInsets.only(top: 10, left: 20), + child: SizedBox( + width: MediaQuery.of(context).size.width - 230, + child: TextField( + onEditingComplete: () {}, + autofocus: true, + cursorColor: Colors.black, + controller: changeNameController, + decoration: InputDecoration( + isDense: true, + hintText: 'New name', + hintStyle: TextStyle( + fontSize: 14.0, + color: chatTextColor, + ), + ), + ), + ), + ), + Padding( + padding: const EdgeInsets.only(top: 15), + child: Row( + children: [ + Padding( + padding: const EdgeInsets.only(left: 40), + child: InkWell( + child: Text( + 'Apply', + style: const TextStyle( + fontSize: 16, + ), + ), + onTap: () async { + if (fullScreenUser.value != null) { + ZoomVideoSdkUser? mySelf = await zoom.session.getMySelf(); + await zoom.userHelper.changeName((mySelf?.userId)!, changeNameController.text); + changeNameController.clear(); + } + isRenameModalVisible.value = false; + }, + ), + ), + Padding( + padding: const EdgeInsets.only(left: 40), + child: InkWell( + child: Text( + 'Cancel', + style: const TextStyle( + fontSize: 16, + ), + ), + onTap: () async { + isRenameModalVisible.value = false; + }, + ), + ) + ], + ), + ) + ], + )), + ), + ), + ], + )), + ], + ), + ); + + Widget fullScreenView; + Widget smallView; + Widget cameraView; + + if (isInSession.value && fullScreenUser.value != null && users.value.isNotEmpty) { + fullScreenView = AnimatedOpacity( + opacity: opacityLevel, + duration: const Duration(seconds: 3), + child: VideoView( + user: users.value.length > 1 ? users.value[1] : users.value[0], + hasMultiCamera: false, + isPiPView: isPiPView.value, + sharing: sharingUser.value == null ? false : (sharingUser.value?.userId == fullScreenUser.value?.userId), + preview: false, + focused: false, + multiCameraIndex: "0", + videoAspect: VideoAspect.Original, + fullScreen: true, + resolution: VideoResolution.Resolution360, + ), + ); + + smallView = Container( + height: 110, + margin: const EdgeInsets.only(left: 20, right: 20), + alignment: Alignment.center, + child: ListView.separated( + scrollDirection: Axis.horizontal, + itemCount: users.value.length, + itemBuilder: (BuildContext context, int index) { + return InkWell( + onTap: () async { + onSelectedUser(users.value[index]); + }, + onDoubleTap: () async { + onSelectedUserVolume(users.value[index]); + }, + child: Center( + child: VideoView( + user: users.value[index], + hasMultiCamera: false, + isPiPView: false, + sharing: false, + preview: false, + focused: false, + multiCameraIndex: "0", + videoAspect: VideoAspect.Original, + fullScreen: false, + resolution: VideoResolution.Resolution180, + ), + ), + ); + }, + separatorBuilder: (BuildContext context, int index) => const Divider(), + ), + ); + } else { + fullScreenView = Container( + color: Colors.black, + child: const Center( + child: Text( + "Connecting...", + style: TextStyle( + fontSize: 20, + color: Colors.white, + ), + ), + )); + smallView = Container( + height: 110, + color: Colors.transparent, + ); + } + + cameraView = Offstage( + offstage: !isSharedCamera.value, + child: AnimatedOpacity( + opacity: isSharedCamera.value ? 1.0 : 0.0, + duration: const Duration(milliseconds: 300), + child: cameraShareView, + ), + ); + + _changeOpacity; + return Scaffold( + resizeToAvoidBottomInset: false, + backgroundColor: backgroundColor, + body: Stack( + children: [ + // isScreenBeingShared ? fullScreenView : SizedBox.shrink(), + isScreenBeingShared ? SizedBox.shrink() : fullScreenView, + cameraView, + Container( + padding: const EdgeInsets.only(top: 35), + child: Stack( + children: [ + Row( + crossAxisAlignment: CrossAxisAlignment.start, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Container( + height: 80, + width: 180, + margin: const EdgeInsets.only(top: 16, left: 8), + padding: const EdgeInsets.all(8), + alignment: Alignment.topLeft, + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(8.0)), + // color: buttonBackgroundColor, + ), + // child: InkWell( + // onTap: () async { + // showDialog( + // context: context, + // builder: (context) { + // return Dialog( + // elevation: 0.0, + // insetPadding: const EdgeInsets.symmetric(horizontal: 40), + // shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)), + // child: FractionallySizedBox( + // heightFactor: 0.2, + // widthFactor: 0.3, + // child: Column( + // crossAxisAlignment: CrossAxisAlignment.stretch, + // children: [ + // ListView( + // shrinkWrap: true, + // children: ListTile.divideTiles( + // context: context, + // tiles: [ + // ListTile( + // title: Text( + // 'Session Information', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 18, + // isBold: true, + // ), + // ), + // ), + // ), + // ListTile( + // title: Text( + // 'Session Name', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // ), + // ), + // ), + // subtitle: Text( + // sessionName.value, + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 12, + // ), + // ), + // ), + // ), + // ListTile( + // title: Text( + // 'Session Password', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // ), + // ), + // ), + // subtitle: Text( + // sessionPassword.value, + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 12, + // ), + // ), + // ), + // ), + // ListTile( + // title: Text( + // 'Participants', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // ), + // ), + // ), + // subtitle: Text( + // '${users.value.length}', + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 12, + // ), + // ), + // ), + // ), + // ], + // ).toList(), + // ), + // ], + // ), + // )); + // }); + // }, + // child: Stack( + // children: [ + // Column( + // children: [ + // const Padding(padding: EdgeInsets.symmetric(vertical: 4)), + // Align( + // alignment: Alignment.centerLeft, + // child: Text( + // sessionName.value, + // overflow: TextOverflow.ellipsis, + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // isBold: true, + // color: Colors.white, + // ), + // ), + // ), + // ), + // const Padding(padding: EdgeInsets.symmetric(vertical: 5)), + // Align( + // alignment: Alignment.centerLeft, + // child: Text( + // "Participants: ${users.value.length}", + // style: GoogleFonts.lato( + // textStyle: const TextStyle( + // fontSize: 14, + // isBold: true, + // color: Colors.white, + // ), + // ), + // ), + // ) + // ], + // ), + // Container( + // alignment: Alignment.centerRight, + // child: Image.asset( + // "assets/icons/unlocked@2x.png", + // height: 22, + // )), + // ], + // ), + // ), + ), + TextButton( + onPressed: (showLeaveOptions), + child: Container( + alignment: Alignment.topRight, + margin: const EdgeInsets.only(top: 16, right: 8), + padding: const EdgeInsets.only(top: 5, bottom: 5, left: 16, right: 16), + height: 28, + decoration: BoxDecoration( + borderRadius: const BorderRadius.all(Radius.circular(20.0)), + color: buttonBackgroundColor, + ), + child: const Text( + "LEAVE", + style: TextStyle( + fontSize: 14, + fontWeight: FontWeight.bold, + color: Color(0xFFE02828), + ), + ), + )), + ], + ), + Align( + alignment: Alignment.centerRight, + child: FractionallySizedBox( + widthFactor: 0.2, + heightFactor: 0.6, + child: Column( + mainAxisAlignment: MainAxisAlignment.center, + children: [ + IconButton( + onPressed: onPressAudio, + icon: isMuted.value ? Utils.buildImgWithAssets(icon: "assets/images/png/zoom/unmute@2x.png") : Utils.buildImgWithAssets(icon: "assets/images/png/zoom/mute@2x.png"), + iconSize: circleButtonSize, + tooltip: isMuted.value == true ? "Unmute" : "Mute", + ), + // IconButton( + // onPressed: onPressShare, + // icon: isSharing.value ? Image.asset("assets/images/png/zoom/share-off@2x.png") : Image.asset("assets/images/png/zoom/share-on@2x.png"), + // iconSize: circleButtonSize, + // ), + IconButton( + onPressed: onPressVideo, + iconSize: circleButtonSize, + icon: isVideoOn.value ? Utils.buildImgWithAssets(icon: "assets/images/png/zoom/video-off@2x.png") : Utils.buildImgWithAssets(icon: "assets/images/png/zoom/video-on@2x.png"), + ), + Column( + children: [ + IconButton( + onPressed: () async { + onPressCameraList(); + }, + icon: Icon(Icons.cameraswitch, color: Colors.white), + color: Colors.white, + iconSize: 40.h, + ), + "Switch Camera".toText12(color: AppColors.whiteColor, isCenter: true, isBold: true) + ], + ), + ], + ), + )), + // Container( + // margin: const EdgeInsets.only(left: 16, right: 16, bottom: 40, top: 10), + // alignment: Alignment.bottomCenter, + // child: SizedBox( + // height: MediaQuery.of(context).viewInsets.bottom == 0 ? 65 : MediaQuery.of(context).viewInsets.bottom + 18, + // child: TextField( + // maxLines: 1, + // textAlign: TextAlign.left, + // style: TextStyle(color: chatTextColor), + // cursorColor: chatTextColor, + // textAlignVertical: TextAlignVertical.center, + // controller: chatMessageController, + // decoration: InputDecoration( + // contentPadding: const EdgeInsets.only(left: 16, top: 10, bottom: 10, right: 16), + // enabledBorder: OutlineInputBorder( + // borderSide: BorderSide(width: 1, color: chatTextColor), //<-- SEE HERE + // ), + // hintText: 'Type your message here...', + // hintStyle: TextStyle( + // fontSize: 14.0, + // color: chatTextColor, + // ), + // ), + // onSubmitted: (String str) { + // sendChatMessage(str); + // }, + // ), + // ), + // ), + Container( + alignment: Alignment.bottomLeft, + margin: const EdgeInsets.only(bottom: 120), + child: smallView, + ), + // CommentList(zoom: zoom, eventListener: eventListener), + changeNamePopup, + ], + )), + ], + )); + } +} + +class CallArguments { + final bool isJoin; + final String sessionName; + final String sessionPwd; + final String displayName; + final String sessionIdleTimeoutMins; + final String role; + final int callType; + + CallArguments(this.sessionName, this.sessionPwd, this.displayName, this.sessionIdleTimeoutMins, this.role, this.isJoin, this.callType); +} + +class JoinArguments { + final bool isJoin; + final String sessionName; + final String sessionPwd; + final String displayName; + final String sessionTimeout; + final String roleType; + + JoinArguments(this.isJoin, this.sessionName, this.sessionPwd, this.displayName, this.sessionTimeout, this.roleType); +} diff --git a/lib/presentation/tele_consultation/zoom/video_view.dart b/lib/presentation/tele_consultation/zoom/video_view.dart index a6b2428f..5a418130 100644 --- a/lib/presentation/tele_consultation/zoom/video_view.dart +++ b/lib/presentation/tele_consultation/zoom/video_view.dart @@ -1,258 +1,273 @@ -// import 'dart:async'; -// -// import 'package:flutter/material.dart'; -// import 'package:flutter_hooks/flutter_hooks.dart'; -// import 'package:flutter_zoom_videosdk/flutter_zoom_view.dart' as FlutterZoomView; -// import 'package:flutter_zoom_videosdk/native/zoom_videosdk.dart'; -// -// const SHOW_TALKING_ICON_DURATION = 2000; -// -// class VideoView extends FlutterZoomView.ZoomView { -// const VideoView({ -// super.key, -// required super.user, -// required super.sharing, -// required super.preview, -// required super.focused, -// required super.hasMultiCamera, -// required super.multiCameraIndex, -// required super.videoAspect, -// required super.fullScreen, -// required super.resolution, -// required super.isPiPView, -// }); -// -// @override -// Widget build(BuildContext context) { -// var isVideoOn = useState(false); -// var isTalking = useState(false); -// var isMuted = useState(false); -// var isMounted = useIsMounted(); -// var zoom = ZoomVideoSdk(); -// var isSharing = useState(false); -// user?.audioStatus?.isMuted().then((muted) => isMuted.value = muted); -// -// useEffect(() { -// updateVideoStatus() { -// if (user == null) return; -// Future.microtask(() async { -// if (isMounted()) { -// isVideoOn.value = (await user!.videoStatus!.isOn()); -// isSharing.value = sharing; -// } -// }); -// } -// -// resetAudioStatus() { -// isTalking.value = false; -// isMuted.value = false; -// } -// -// updateAudioStatus() async { -// if (!isMounted()) return; -// var talking = await user?.audioStatus?.isTalking(); -// var muted = await user?.audioStatus?.isMuted(); -// isMuted.value = muted!; -// isTalking.value = talking!; -// if (talking) { -// Timer( -// const Duration(milliseconds: SHOW_TALKING_ICON_DURATION), -// () => { -// if (isMounted()) -// { -// isTalking.value = false, -// } -// }); -// } -// } -// -// updateVideoStatus(); -// return null; -// }, [zoom, user]); -// -// ImageIcon audioStatusIcon; -// if (isTalking.value) { -// audioStatusIcon = const ImageIcon( -// AssetImage("assets/images/png/zoom/talking@2x.png"), -// ); -// } else if (isMuted.value) { -// audioStatusIcon = const ImageIcon( -// AssetImage("assets/images/png/zoom/muted@2x.png"), -// ); -// } -// // Pass parameters to the platform side. -// final Map creationParams = {}; -// creationParams.putIfAbsent("userId", () => user?.userId); -// creationParams.putIfAbsent("sharing", () => sharing); -// creationParams.putIfAbsent("preview", () => preview); -// creationParams.putIfAbsent("focused", () => focused); -// creationParams.putIfAbsent("hasMultiCamera", () => hasMultiCamera); -// if (videoAspect.isEmpty) { -// creationParams.putIfAbsent("videoAspect", () => VideoAspect.PanAndScan); -// } else { -// creationParams.putIfAbsent("videoAspect", () => videoAspect); -// } -// creationParams.putIfAbsent("fullScreen", () => fullScreen); -// if (resolution.isNotEmpty) { -// creationParams.putIfAbsent("videoAspect", () => videoAspect); -// } -// -// if (fullScreen) { -// if (sharing) { -// return Container( -// height: MediaQuery.of(context).size.height, -// width: MediaQuery.of(context).size.width, -// alignment: Alignment.center, -// child: FlutterZoomView.View(creationParams: creationParams), -// ); -// } else if (isVideoOn.value) { -// return Container( -// height: MediaQuery.of(context).size.height, -// width: MediaQuery.of(context).size.width, -// alignment: Alignment.center, -// child: FlutterZoomView.View(creationParams: creationParams), -// ); -// } else { -// return Container( -// margin: const EdgeInsets.symmetric(vertical: 0), -// child: Container( -// alignment: Alignment.center, -// child: const Image( -// image: AssetImage("assets/images/png/zoom/default-avatar.png"), -// )), -// ); -// } -// } else { -// if (isVideoOn.value || sharing) { -// return Container( -// padding: const EdgeInsets.symmetric(horizontal: 8), -// height: 110, -// width: 110, -// child: Stack( -// children: [ -// Container( -// height: 110, -// width: 110, -// decoration: BoxDecoration( -// color: const Color(0xff232323), -// border: Border.all( -// color: const Color(0xff666666), -// width: 1, -// ), -// borderRadius: const BorderRadius.all(Radius.circular(8)), -// ), -// alignment: Alignment.center, -// child: FlutterZoomView.View(creationParams: creationParams), -// ), -// Container( -// height: 110, -// width: 110, -// decoration: const BoxDecoration( -// borderRadius: BorderRadius.all(Radius.circular(8)), -// ), -// ), -// Container( -// alignment: Alignment.bottomCenter, -// child: Container( -// height: 20, -// width: 110, -// decoration: const BoxDecoration( -// color: Colors.black26, -// borderRadius: BorderRadius.all(Radius.circular(8)), -// ), -// ), -// ), -// Container( -// alignment: Alignment.bottomLeft, -// margin: const EdgeInsets.only(left: 5), -// child: Text( -// user!.userName, -// textAlign: TextAlign.left, -// style: const TextStyle( -// color: Colors.white, -// fontSize: 12, -// ), -// ), -// ), -// Container( -// alignment: Alignment.bottomRight, -// margin: const EdgeInsets.only(right: 5, bottom: 5), -// // height: 110, -// // width: 110, -// child: Image( -// height: 12, -// width: 12, -// image: isMuted.value ? const AssetImage("assets/images/png/zoom/muted@2x.png") : const AssetImage("assets/images/png/zoom/talking@2x.png"), -// fit: BoxFit.cover, -// ), -// ) -// ], -// ), -// ); -// } else { -// return Container( -// padding: const EdgeInsets.symmetric(horizontal: 8), -// height: 110, -// width: 110, -// child: Stack( -// children: [ -// Container( -// height: 110, -// width: 110, -// decoration: BoxDecoration( -// color: const Color(0xff232323), -// border: Border.all( -// color: const Color(0xff666666), -// width: 1, -// ), -// borderRadius: const BorderRadius.all(Radius.circular(8)), -// ), -// alignment: Alignment.center, -// child: Container( -// alignment: Alignment.center, -// child: const Image( -// height: 60, -// width: 60, -// image: AssetImage("assets/images/png/zoom/default-avatar.png"), -// )), -// ), -// Align( -// alignment: Alignment.bottomCenter, -// child: Container( -// height: 20, -// width: 110, -// decoration: const BoxDecoration( -// color: Colors.black26, -// borderRadius: BorderRadius.all(Radius.circular(8)), -// ), -// ), -// ), -// Container( -// alignment: Alignment.bottomLeft, -// margin: const EdgeInsets.only(left: 5), -// child: Text( -// user!.userName, -// textAlign: TextAlign.left, -// style: const TextStyle( -// color: Colors.white, -// fontSize: 12, -// ), -// ), -// ), -// Container( -// alignment: Alignment.bottomRight, -// margin: const EdgeInsets.only(right: 5, bottom: 5), -// child: Image( -// height: 12, -// width: 12, -// image: isMuted.value ? const AssetImage("assets/images/png/zoom/muted@2x.png") : const AssetImage("assets/images/png/zoom/talking@2x.png"), -// fit: BoxFit.cover, -// ), -// ), -// ], -// ), -// ); -// } -// } -// } -// } +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:flutter_hooks/flutter_hooks.dart'; +import 'package:flutter_zoom_videosdk/flutter_zoom_view.dart' as FlutterZoomView; +import 'package:flutter_zoom_videosdk/native/zoom_videosdk.dart'; + +const SHOW_TALKING_ICON_DURATION = 2000; + +class VideoView extends FlutterZoomView.ZoomView { + const VideoView({ + super.key, + required super.user, + required super.sharing, + required super.preview, + required super.focused, + required super.hasMultiCamera, + required super.multiCameraIndex, + required super.videoAspect, + required super.fullScreen, + required super.resolution, + required super.isPiPView, + }); + + @override + Widget build(BuildContext context) { + var isVideoOn = useState(false); + var isTalking = useState(false); + var isMuted = useState(false); + var isMounted = useIsMounted(); + var zoom = ZoomVideoSdk(); + var isSharing = useState(false); + + useEffect(() { + updateVideoStatus() async { + if (user == null) return; + try { + if (isMounted()) { + isVideoOn.value = (await user!.videoStatus!.isOn()); + isSharing.value = sharing; + + // Update initial audio status safely + if (user!.audioStatus != null) { + var muted = await user!.audioStatus!.isMuted(); + if (isMounted()) { + isMuted.value = muted; + } + } + } + } catch (e) { + // User might have left the session, ignore error + } + } + + resetAudioStatus() { + isTalking.value = false; + isMuted.value = false; + } + + updateAudioStatus() async { + if (!isMounted() || user?.audioStatus == null) return; + try { + var talking = await user!.audioStatus!.isTalking(); + var muted = await user!.audioStatus!.isMuted(); + if (isMounted()) { + isMuted.value = muted; + isTalking.value = talking; + if (talking) { + Timer( + const Duration(milliseconds: SHOW_TALKING_ICON_DURATION), + () => { + if (isMounted()) + { + isTalking.value = false, + } + }); + } + } + } catch (e) { + // User might have left the session, ignore error + } + } + + updateVideoStatus(); + return null; + }, [zoom, user]); + + ImageIcon audioStatusIcon; + if (isTalking.value) { + audioStatusIcon = const ImageIcon( + AssetImage("assets/images/png/zoom/talking@2x.png"), + ); + } else if (isMuted.value) { + audioStatusIcon = const ImageIcon( + AssetImage("assets/images/png/zoom/muted@2x.png"), + ); + } + // Pass parameters to the platform side. + final Map creationParams = {}; + creationParams.putIfAbsent("userId", () => user?.userId); + creationParams.putIfAbsent("sharing", () => sharing); + creationParams.putIfAbsent("preview", () => preview); + creationParams.putIfAbsent("focused", () => focused); + creationParams.putIfAbsent("hasMultiCamera", () => hasMultiCamera); + if (videoAspect.isEmpty) { + creationParams.putIfAbsent("videoAspect", () => VideoAspect.PanAndScan); + } else { + creationParams.putIfAbsent("videoAspect", () => videoAspect); + } + creationParams.putIfAbsent("fullScreen", () => fullScreen); + if (resolution.isNotEmpty) { + creationParams.putIfAbsent("videoAspect", () => videoAspect); + } + + if (fullScreen) { + if (sharing) { + return Container( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + alignment: Alignment.center, + child: FlutterZoomView.View(creationParams: creationParams), + ); + } else if (isVideoOn.value) { + return Container( + height: MediaQuery.of(context).size.height, + width: MediaQuery.of(context).size.width, + alignment: Alignment.center, + child: FlutterZoomView.View(creationParams: creationParams), + ); + } else { + return Container( + margin: const EdgeInsets.symmetric(vertical: 0), + child: Container( + alignment: Alignment.center, + child: const Image( + image: AssetImage("assets/images/png/zoom/default-avatar.png"), + )), + ); + } + } else { + if (isVideoOn.value || sharing) { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 8), + height: 110, + width: 110, + child: Stack( + children: [ + Container( + height: 110, + width: 110, + decoration: BoxDecoration( + color: const Color(0xff232323), + border: Border.all( + color: const Color(0xff666666), + width: 1, + ), + borderRadius: const BorderRadius.all(Radius.circular(8)), + ), + alignment: Alignment.center, + child: FlutterZoomView.View(creationParams: creationParams), + ), + Container( + height: 110, + width: 110, + decoration: const BoxDecoration( + borderRadius: BorderRadius.all(Radius.circular(8)), + ), + ), + Container( + alignment: Alignment.bottomCenter, + child: Container( + height: 20, + width: 110, + decoration: const BoxDecoration( + color: Colors.black26, + borderRadius: BorderRadius.all(Radius.circular(8)), + ), + ), + ), + Container( + alignment: Alignment.bottomLeft, + margin: const EdgeInsets.only(left: 5), + child: Text( + user!.userName, + textAlign: TextAlign.left, + style: const TextStyle( + color: Colors.white, + fontSize: 12, + ), + ), + ), + Container( + alignment: Alignment.bottomRight, + margin: const EdgeInsets.only(right: 5, bottom: 5), + // height: 110, + // width: 110, + child: Image( + height: 12, + width: 12, + image: isMuted.value ? const AssetImage("assets/images/png/zoom/muted@2x.png") : const AssetImage("assets/images/png/zoom/talking@2x.png"), + fit: BoxFit.cover, + ), + ) + ], + ), + ); + } else { + return Container( + padding: const EdgeInsets.symmetric(horizontal: 8), + height: 110, + width: 110, + child: Stack( + children: [ + Container( + height: 110, + width: 110, + decoration: BoxDecoration( + color: const Color(0xff232323), + border: Border.all( + color: const Color(0xff666666), + width: 1, + ), + borderRadius: const BorderRadius.all(Radius.circular(8)), + ), + alignment: Alignment.center, + child: Container( + alignment: Alignment.center, + child: const Image( + height: 60, + width: 60, + image: AssetImage("assets/images/png/zoom/default-avatar.png"), + )), + ), + Align( + alignment: Alignment.bottomCenter, + child: Container( + height: 20, + width: 110, + decoration: const BoxDecoration( + color: Colors.black26, + borderRadius: BorderRadius.all(Radius.circular(8)), + ), + ), + ), + Container( + alignment: Alignment.bottomLeft, + margin: const EdgeInsets.only(left: 5), + child: Text( + user!.userName, + textAlign: TextAlign.left, + style: const TextStyle( + color: Colors.white, + fontSize: 12, + ), + ), + ), + Container( + alignment: Alignment.bottomRight, + margin: const EdgeInsets.only(right: 5, bottom: 5), + child: Image( + height: 12, + width: 12, + image: isMuted.value ? const AssetImage("assets/images/png/zoom/muted@2x.png") : const AssetImage("assets/images/png/zoom/talking@2x.png"), + fit: BoxFit.cover, + ), + ), + ], + ), + ); + } + } + } +} diff --git a/lib/presentation/todo_section/ancillary_order_payment_page.dart b/lib/presentation/todo_section/ancillary_order_payment_page.dart index 9d75c769..ae0a4c02 100644 --- a/lib/presentation/todo_section/ancillary_order_payment_page.dart +++ b/lib/presentation/todo_section/ancillary_order_payment_page.dart @@ -16,6 +16,8 @@ import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/payfort/models/apple_pay_request_insert_model.dart'; import 'package:hmg_patient_app_new/features/payfort/payfort_view_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/models/paytabs_transaction_response_model.dart'; +import 'package:hmg_patient_app_new/features/paytabs/paytabs_view_model.dart'; import 'package:hmg_patient_app_new/features/todo_section/models/resp_models/ancillary_order_procedures_detail_response_model.dart'; import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; @@ -34,8 +36,9 @@ class AncillaryOrderPaymentPage extends StatefulWidget { final int appointmentNoVida; final int orderNo; final int projectID; + final String setupID; final List selectedProcedures; - final double totalAmount; + final num totalAmount; const AncillaryOrderPaymentPage({ super.key, @@ -43,6 +46,7 @@ class AncillaryOrderPaymentPage extends StatefulWidget { required this.appointmentNoVida, required this.orderNo, required this.projectID, + required this.setupID, required this.selectedProcedures, required this.totalAmount, }); @@ -55,6 +59,7 @@ class _AncillaryOrderPaymentPageState extends State { late PayfortViewModel payfortViewModel; late AppState appState; late TodoSectionViewModel todoSectionViewModel; + late PayTabsViewModel paytabsViewModel; MyInAppBrowser? browser; String selectedPaymentMethod = ""; @@ -74,6 +79,7 @@ class _AncillaryOrderPaymentPageState extends State { appState = getIt.get(); todoSectionViewModel = Provider.of(context); payfortViewModel = Provider.of(context); + paytabsViewModel = Provider.of(context, listen: false); return Scaffold( backgroundColor: AppColors.bgScaffoldColor, @@ -103,7 +109,7 @@ class _AncillaryOrderPaymentPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset(AppAssets.mada, width: 50.h, height: 50.h), + Utils.buildImgWithAssets(icon: AppAssets.mada, width: 80.h, height: 30.h, fit: BoxFit.contain), SizedBox(height: 16.h), LocaleKeys.mada.tr(context: context).toText16(isBold: true).toShimmer2(isShow: todoVM.isProcessingPayment), ], @@ -122,10 +128,85 @@ class _AncillaryOrderPaymentPageState extends State { ), ], ).paddingSymmetrical(16.h, 16.h), - ).paddingSymmetrical(24.h, 0.h).onPress(() { + ).paddingSymmetrical(24.h, 0.h).onPress(() async { if (!todoVM.isProcessingPayment) { selectedPaymentMethod = "MADA"; - _openPaymentURL("mada"); + if (appState.isPaytabsEnabled) { + paytabsViewModel.setPaymentConfiguration( + "Ancillary Orders Payment", + widget.totalAmount, + ); + paytabsViewModel.startCardPayment(onSuccess: (PaytabsTransactionResponseModel transactionData) async { + final paymentAmount = widget.totalAmount; + final fortId = transactionData.transactionReference; + final paymentMethod = selectedPaymentMethod; + + // Call createAdvancePayment with the payment details + _createAdvancePayment( + paymentAmount: paymentAmount.toDouble(), + paymentReference: fortId!, + paymentMethod: paymentMethod, + ); + }, onError: (err) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + if (appState.isPayfortHostedPageEnabled) { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPaymentInformation.tr(context: context)); + transID = Utils.getAdvancePaymentTransID( + widget.projectID, + appState.getAuthenticatedUser()!.patientId!, + ); + + await payfortViewModel.getPayfortConfigurations( + serviceId: ServiceTypeEnum.ancillaryOrder.getIdFromServiceEnum(), + projectId: widget.projectID, + integrationId: 1, + ); + + payfortViewModel.initiatePaymentWithCard( + "mada", + "0", + "false", + DateUtil.convertDateToString(DateTime.now()), + "0", + "0", + transactionID: transID, + fileNumber: appState.getAuthenticatedUser()!.patientId.toString(), + amount: widget.totalAmount.toString(), + orderDescription: "Ancillary Order Payment", + onSucceeded: (paymentResult) async { + print("Payment Success Data: ${paymentResult.toString()}"); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr(context: context)); + + // Call createAdvancePayment with the payment details + _createAdvancePayment( + paymentAmount: widget.totalAmount, + paymentReference: paymentResult.fortId!, + paymentMethod: selectedPaymentMethod, + ); + }, + onFailed: (err) { + print("Payment Failed Data: ${err.toString()}"); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + ); + } else { + _openPaymentURL("mada"); + } + } } }), @@ -146,9 +227,9 @@ class _AncillaryOrderPaymentPageState extends State { children: [ Row( children: [ - Image.asset(AppAssets.visa, width: 50.h, height: 50.h), + Utils.buildImgWithAssets(icon: AppAssets.visa, width: 50.h, height: 50.h), SizedBox(width: 8.h), - Image.asset(AppAssets.mastercard, width: 40.h, height: 40.h), + Utils.buildImgWithAssets(icon: AppAssets.mastercard, width: 40.h, height: 40.h, fit: BoxFit.contain), ], ).toShimmer2(isShow: todoVM.isProcessingPayment), SizedBox(height: 16.h), @@ -169,10 +250,85 @@ class _AncillaryOrderPaymentPageState extends State { ), ], ).paddingSymmetrical(16.h, 16.h), - ).paddingSymmetrical(24.h, 0.h).onPress(() { + ).paddingSymmetrical(24.h, 0.h).onPress(() async { if (!todoVM.isProcessingPayment) { selectedPaymentMethod = "VISA"; - _openPaymentURL("visa"); + if (appState.isPaytabsEnabled) { + paytabsViewModel.setPaymentConfiguration( + "Ancillary Orders Payment", + widget.totalAmount, + ); + paytabsViewModel.startCardPayment(onSuccess: (PaytabsTransactionResponseModel transactionData) async { + final paymentAmount = widget.totalAmount; + final fortId = transactionData.transactionReference; + final paymentMethod = selectedPaymentMethod; + + // Call createAdvancePayment with the payment details + _createAdvancePayment( + paymentAmount: paymentAmount.toDouble(), + paymentReference: fortId!, + paymentMethod: paymentMethod, + ); + }, onError: (err) { + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: err.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }); + } else { + if (appState.isPayfortHostedPageEnabled) { + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.fetchingPaymentInformation.tr(context: context)); + transID = Utils.getAdvancePaymentTransID( + widget.projectID, + appState.getAuthenticatedUser()!.patientId!, + ); + + await payfortViewModel.getPayfortConfigurations( + serviceId: ServiceTypeEnum.ancillaryOrder.getIdFromServiceEnum(), + projectId: widget.projectID, + integrationId: 1, + ); + + payfortViewModel.initiatePaymentWithCard( + "visa", + "0", + "false", + DateUtil.convertDateToString(DateTime.now()), + "0", + "0", + transactionID: transID, + fileNumber: appState.getAuthenticatedUser()!.patientId.toString(), + amount: widget.totalAmount.toString(), + orderDescription: "Ancillary Order Payment", + onSucceeded: (paymentResult) async { + print("Payment Success Data: ${paymentResult.toString()}"); + LoaderBottomSheet.showLoader(loadingText: LocaleKeys.checkingPaymentStatusPleaseWait.tr(context: context)); + + // Call createAdvancePayment with the payment details + _createAdvancePayment( + paymentAmount: widget.totalAmount, + paymentReference: paymentResult.fortId!, + paymentMethod: selectedPaymentMethod, + ); + }, + onFailed: (err) { + print("Payment Failed Data: ${err.toString()}"); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: LocaleKeys.paymentFailedPleaseTryAgain.tr(context: context)), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + ); + } else { + _openPaymentURL("visa"); + } + } } }), ], @@ -381,7 +537,7 @@ class _AncillaryOrderPaymentPageState extends State { } void _createAdvancePayment({ - required double paymentAmount, + required num paymentAmount, required String paymentReference, required String paymentMethod, }) { @@ -397,7 +553,8 @@ class _AncillaryOrderPaymentPageState extends State { patientTypeID: user!.patientType ?? 1, patientName: "${user.firstName} ${user.lastName}", patientID: user.patientId!, - setupID: "010266", + // setupID: "010266", + setupID: widget.setupID, isAncillaryOrder: true, onSuccess: (response) { // Extract advance number from response @@ -491,7 +648,7 @@ class _AncillaryOrderPaymentPageState extends State { child: Utils.getSuccessWidget(loadingText: "${LocaleKeys.paymentCompletedSuccessfully.tr(context: context)}, ${LocaleKeys.hereIsYourInvoiceNumber.tr(context: context)}$invoiceNo"), isCloseButtonVisible: true, isDismissible: true, - isFullScreen: false, callBackFunc: () { + isFullScreen: false, isAutoDismiss: true, callBackFunc: () { // Pop until we reach the LandingPage todoSectionViewModel.setIsAncillaryOrdersNeedReloading(true); Navigator.pushAndRemoveUntil( @@ -573,33 +730,62 @@ class _AncillaryOrderPaymentPageState extends State { return; } // Only proceed with Apple Pay if insert was successful - payfortViewModel.paymentWithApplePay( - customerName: "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}", - customerEmail: "CustID_${appState.getAuthenticatedUser()!.patientId.toString()}@HMG.com", - orderDescription: "Ancillary Order Payment", - orderAmount: widget.totalAmount, - merchantReference: transID, - merchantIdentifier: payfortViewModel.payfortProjectDetailsRespModel!.merchantIdentifier, - applePayAccessCode: payfortViewModel.payfortProjectDetailsRespModel!.accessCode, - applePayShaRequestPhrase: payfortViewModel.payfortProjectDetailsRespModel!.shaRequest, - currency: appState.getAuthenticatedUser()!.outSa! == 0 ? "SAR" : "AED", - onFailed: (failureResult) async { - log("failureResult: ${failureResult.message.toString()}"); - LoaderBottomSheet.hideLoader(); + if(appState.isPaytabsEnabled) { + selectedPaymentMethod = "VISA"; + LoaderBottomSheet.hideLoader(); + paytabsViewModel.setPaymentConfiguration( + "Ancillary Orders Payment", + widget.totalAmount, + ); + paytabsViewModel.startApplePayPayment(onSuccess: (PaytabsTransactionResponseModel transactionData) async { + final paymentAmount = widget.totalAmount; + final fortId = transactionData.transactionReference; + final paymentMethod = selectedPaymentMethod; + + // Call createAdvancePayment with the payment details + _createAdvancePayment( + paymentAmount: paymentAmount.toDouble(), + paymentReference: fortId!, + paymentMethod: paymentMethod, + ); + }, onError: (err) { showCommonBottomSheetWithoutHeight( context, - child: Utils.getErrorWidget(loadingText: failureResult.message.toString()), + child: Utils.getErrorWidget(loadingText: err.toString()), callBackFunc: () {}, isFullScreen: false, isCloseButtonVisible: true, ); - }, - onSucceeded: (successResult) async { - LoaderBottomSheet.hideLoader(); - log("successResult: ${successResult.responseMessage.toString()}"); - selectedPaymentMethod = successResult.paymentOption ?? "VISA"; - _checkPaymentStatus(); - }, - ); + }); + } else { + payfortViewModel.paymentWithApplePay( + customerName: "${appState.getAuthenticatedUser()!.firstName} ${appState.getAuthenticatedUser()!.lastName}", + customerEmail: "CustID_${appState.getAuthenticatedUser()!.patientId.toString()}@HMG.com", + orderDescription: "Ancillary Order Payment", + orderAmount: widget.totalAmount, + merchantReference: transID, + merchantIdentifier: payfortViewModel.payfortProjectDetailsRespModel!.merchantIdentifier, + applePayAccessCode: payfortViewModel.payfortProjectDetailsRespModel!.accessCode, + applePayShaRequestPhrase: payfortViewModel.payfortProjectDetailsRespModel!.shaRequest, + currency: appState.getAuthenticatedUser()!.outSa! == 0 ? "SAR" : "AED", + onFailed: (failureResult) async { + log("failureResult: ${failureResult.message.toString()}"); + LoaderBottomSheet.hideLoader(); + showCommonBottomSheetWithoutHeight( + context, + child: Utils.getErrorWidget(loadingText: failureResult.message.toString()), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + }, + onSucceeded: (successResult) async { + LoaderBottomSheet.hideLoader(); + log("successResult: ${successResult.responseMessage.toString()}"); + selectedPaymentMethod = successResult.paymentOption ?? "VISA"; + _checkPaymentStatus(); + }, + ); + } } } diff --git a/lib/presentation/todo_section/ancillary_procedures_details_page.dart b/lib/presentation/todo_section/ancillary_procedures_details_page.dart index 38d4f978..c34031f4 100644 --- a/lib/presentation/todo_section/ancillary_procedures_details_page.dart +++ b/lib/presentation/todo_section/ancillary_procedures_details_page.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:ui' as ui; import 'package:collection/collection.dart'; import 'package:easy_localization/easy_localization.dart'; @@ -29,6 +30,7 @@ class AncillaryOrderDetailsList extends StatefulWidget { final int orderNo; final int projectID; final String projectName; + final String setupID; const AncillaryOrderDetailsList({ super.key, @@ -36,6 +38,7 @@ class AncillaryOrderDetailsList extends StatefulWidget { required this.orderNo, required this.projectID, required this.projectName, + required this.setupID, }); @override @@ -65,6 +68,7 @@ class _AncillaryOrderDetailsListState extends State { } void _autoSelectEligibleProcedures() { + if (!mounted) return; selectedProcedures.clear(); if (todoSectionViewModel.patientAncillaryOrderProceduresList.isNotEmpty) { final procedures = todoSectionViewModel.patientAncillaryOrderProceduresList[0].ancillaryOrderProcDetailsList; @@ -76,7 +80,7 @@ class _AncillaryOrderDetailsListState extends State { } } } - setState(() {}); + if (mounted) setState(() {}); } bool _isProcedureDisabled(AncillaryOrderProcDetail procedure) { @@ -114,12 +118,13 @@ class _AncillaryOrderDetailsListState extends State { } } - double _getTotalAmount() { - double total = 0.0; + num _getTotalAmount() { + num total = 0.0; for (var proc in selectedProcedures) { total += (proc.patientShareWithTax ?? 0); } return total; + // return 1234.50; } @override @@ -221,8 +226,8 @@ class _AncillaryOrderDetailsListState extends State { Row( crossAxisAlignment: CrossAxisAlignment.start, children: [ - Image.asset( - gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, + Utils.buildImgWithAssets( + icon: gender == 1 ? AppAssets.maleImg : AppAssets.femaleImg, width: 56.w, height: 56.h, ), @@ -253,8 +258,9 @@ class _AncillaryOrderDetailsListState extends State { children: [ AppCustomChipWidget( // icon: AppAssets.file_icon, - labelText: "MRN: ${patientMRN ?? 'N/A'}", + labelText: "${LocaleKeys.fileno.tr(context: context)}: ${patientMRN ?? 'N/A'}", iconSize: 12.w, + isEnglishOnly: true, ), // National ID @@ -263,20 +269,23 @@ class _AncillaryOrderDetailsListState extends State { // icon: AppAssets.card_user, labelText: "ID: $nationalID", iconSize: 12.w, + isEnglishOnly: true, ), // Appointment Number if (orderData.appointmentNo != null) AppCustomChipWidget( // icon: AppAssets.calendar, - labelText: "Appt #: ${orderData.appointmentNo}", + labelText: "${LocaleKeys.appointment.tr(context: context)}: ${orderData.appointmentNo}", iconSize: 12.w, + isEnglishOnly: true, ), // Order Number if (orderData.ancillaryOrderProcDetailsList?.firstOrNull?.orderNo != null) AppCustomChipWidget( labelText: "Order #: ${orderData.ancillaryOrderProcDetailsList!.first.orderNo}", + isEnglishOnly: true, ), // Blood Group @@ -297,12 +306,14 @@ class _AncillaryOrderDetailsListState extends State { backgroundColor: AppColors.successColor.withValues(alpha: 0.15), iconSize: 12.w, labelPadding: EdgeInsetsDirectional.only(start: -6.w, end: 8.w), + isEnglishOnly: true, ), // Policy Number if (orderData.insurancePolicyNo != null && orderData.insurancePolicyNo!.isNotEmpty) AppCustomChipWidget( - labelText: "Policy: ${orderData.insurancePolicyNo}", + labelText: "${LocaleKeys.policyNumber.tr(context: context)}: ${orderData.insurancePolicyNo}", + isEnglishOnly: true, ), AppCustomChipWidget( @@ -317,8 +328,12 @@ class _AncillaryOrderDetailsListState extends State { labelText: "Clinic: ${orderData.clinicName!}", ), if (orderData.clinicName != null && orderData.clinicName!.isNotEmpty) - AppCustomChipWidget( - labelText: "Date: ${DateFormat('MMM dd, yyyy').format(orderData.appointmentDate!)}", + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + labelText: "${LocaleKeys.date.tr(context: context)}: ${DateFormat('MMM dd yyyy').format(orderData.appointmentDate!)}", + isEnglishOnly: true, + ), ), ], ), @@ -375,7 +390,7 @@ class _AncillaryOrderDetailsListState extends State { children: [ LocaleKeys.procedures.tr(context: context).toText12( color: AppColors.textColorLight, - fontWeight: FontWeight.w600, + isBold: true, ), "$selectedCount of $totalProcedures selected".toText14( isBold: true, @@ -388,7 +403,7 @@ class _AncillaryOrderDetailsListState extends State { children: [ LocaleKeys.totalAmount.tr(context: context).toText12( color: AppColors.textColorLight, - fontWeight: FontWeight.w600, + isBold: true, ), Row( children: [ @@ -426,12 +441,12 @@ class _AncillaryOrderDetailsListState extends State { children: [ Expanded( flex: 2, - child: "$label:".toText12(color: AppColors.textColorLight, fontWeight: FontWeight.w600), + child: "$label:".toText12(color: AppColors.textColorLight, isBold: true), ), SizedBox(width: 8.w), Expanded( flex: 3, - child: value.toText12(color: AppColors.textColor, fontWeight: FontWeight.w600), + child: value.toText12(color: AppColors.textColor, isBold: true), ), ], ), @@ -557,7 +572,7 @@ class _AncillaryOrderDetailsListState extends State { Row( children: [ Utils.getPaymentAmountWithSymbol( - (procedure.patientShare ?? 0).toStringAsFixed(2).toText13(weight: FontWeight.w600), + (procedure.patientShare ?? 0).toStringAsFixed(2).toText14(isBold: true, isEnglishOnly: true), AppColors.textColorLight, 13, isSaudiCurrency: true, @@ -576,7 +591,7 @@ class _AncillaryOrderDetailsListState extends State { Row( children: [ Utils.getPaymentAmountWithSymbol( - (procedure.patientTaxAmount ?? 0).toStringAsFixed(2).toText13(weight: FontWeight.w600), + (procedure.patientTaxAmount ?? 0).toStringAsFixed(2).toText12(isBold: true, isEnglishOnly: true), AppColors.textColorLight, 13, isSaudiCurrency: true, @@ -595,7 +610,7 @@ class _AncillaryOrderDetailsListState extends State { Row( children: [ Utils.getPaymentAmountWithSymbol( - (procedure.patientShareWithTax ?? 0).toStringAsFixed(2).toText13(weight: FontWeight.w600), + (procedure.patientShareWithTax ?? 0).toStringAsFixed(2).toText12(isBold: true, isEnglishOnly: true), AppColors.textColorLight, 13, isSaudiCurrency: true, @@ -632,7 +647,7 @@ class _AncillaryOrderDetailsListState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Expanded(child: LocaleKeys.upcomingPaymentNow.tr(context: context).toText12(fontWeight: FontWeight.w500, color: AppColors.greyTextColor)), + Expanded(child: LocaleKeys.upcomingPaymentNow.tr(context: context).toText12(isBold: true, color: AppColors.greyTextColor)), ], ), SizedBox(height: 18.h), @@ -640,13 +655,15 @@ class _AncillaryOrderDetailsListState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ SizedBox( - width: 150.h, + width: isFoldable ? 220.w : 200.w, child: Utils.getPaymentMethods(), ), Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Utils.getPaymentAmountWithSymbol(_getTotalAmount().toStringAsFixed(2).toText24(isBold: true), AppColors.blackColor, 17, isSaudiCurrency: true), + Utils.getPaymentAmountWithSymbol( + NumberFormat.decimalPattern().format(_getTotalAmount()).toText24(isBold: true, isEnglishOnly: true), AppColors.blackColor, 17, + isSaudiCurrency: true), ], ), ], @@ -668,6 +685,7 @@ class _AncillaryOrderDetailsListState extends State { selectedProcedures: selectedProcedures, totalAmount: _getTotalAmount(), appointmentDate: orderData.appointmentDate, + setupID: widget.setupID, ), ), ); @@ -682,40 +700,5 @@ class _AncillaryOrderDetailsListState extends State { ], ).paddingOnly(left: 16.h, top: 24.h, right: 16.h, bottom: 0.h), ); - - // Column( - // mainAxisAlignment: MainAxisAlignment.spaceBetween, - // children: [ - // SizedBox(height: 16.h), - // _buildSummarySection(orderData), - // SizedBox(height: 16.h), - // CustomButton( - // borderWidth: 0, - // backgroundColor: AppColors.infoLightColor, - // text: "Proceed to Payment".needTranslation, - // onPressed: () { - // // Navigate to payment page with selected procedures - // Navigator.of(context).push( - // CustomPageRoute( - // page: AncillaryOrderPaymentPage( - // appointmentNoVida: widget.appointmentNoVida, - // orderNo: widget.orderNo, - // projectID: widget.projectID, - // selectedProcedures: selectedProcedures, - // totalAmount: _getTotalAmount(), - // appointmentDate: orderData.appointmentDate, - // ), - // ), - // ); - // }, - // isDisabled: !isButtonEnabled, - // textColor: AppColors.whiteColor, - // borderRadius: 12.r, - // borderColor: Colors.transparent, - // padding: EdgeInsets.symmetric(vertical: 16.h), - // ), - // SizedBox(height: 22.h), - // ], - // ).paddingSymmetrical(24.w, 0); } } diff --git a/lib/presentation/todo_section/todo_page.dart b/lib/presentation/todo_section/todo_page.dart index 161ffaf9..d669668a 100644 --- a/lib/presentation/todo_section/todo_page.dart +++ b/lib/presentation/todo_section/todo_page.dart @@ -84,6 +84,7 @@ class _ToDoPageState extends State { orderNo: order.orderNo ?? 0, projectID: order.projectID ?? 0, projectName: order.projectName ?? "", + setupID: order.setupID ?? "0", ), ), ); diff --git a/lib/presentation/todo_section/widgets/ancillary_orders_list.dart b/lib/presentation/todo_section/widgets/ancillary_orders_list.dart index 6a41252e..cc5bbbb6 100644 --- a/lib/presentation/todo_section/widgets/ancillary_orders_list.dart +++ b/lib/presentation/todo_section/widgets/ancillary_orders_list.dart @@ -15,6 +15,8 @@ import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; import 'package:hmg_patient_app_new/widgets/routes/custom_page_route.dart'; +import 'dart:ui' as ui; + class AncillaryOrdersList extends StatelessWidget { final List orders; final Function(AncillaryOrderItem order)? onCheckIn; @@ -136,8 +138,9 @@ class AncillaryOrderCard extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.center, children: [ if (!isLoading) ...[ - Image.network( - "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", + Utils.buildImgWithNetwork( + url: "https://hmgwebservices.com/Images/MobileImages/DUBAI/unkown.png", + iconColor: AppColors.transparent, width: 63.h, height: 63.h, fit: BoxFit.cover, @@ -173,20 +176,26 @@ class AncillaryOrderCard extends StatelessWidget { if (order.orderNo != null || isLoading) AppCustomChipWidget( // icon: AppAssets.calendar, - labelText: "${LocaleKeys.orderNumber.tr(context: context)}${order.orderNo ?? '-'}", - ).toShimmer2(isShow: isLoading), + labelText: "${LocaleKeys.orderNumber.tr(context: context)}${order.orderNo ?? '-'}", + isEnglishOnly: true) + .toShimmer2(isShow: isLoading), // Appointment Date if (order.appointmentDate != null || isLoading) - AppCustomChipWidget( - icon: AppAssets.appointment_calendar_icon, - labelText: isLoading ? "Date: Jan 20, 2024" : DateFormat('MMM dd, yyyy').format(order.appointmentDate!), - ).toShimmer2(isShow: isLoading), + Directionality( + textDirection: ui.TextDirection.ltr, + child: AppCustomChipWidget( + icon: AppAssets.appointment_calendar_icon, + labelText: isLoading ? "Date: Jan 20, 2024" : DateFormat('MMM dd, yyyy').format(order.appointmentDate!), + isEnglishOnly: true, + ).toShimmer2(isShow: isLoading), + ), // Appointment Number if (order.appointmentNo != null || isLoading) AppCustomChipWidget( - labelText: isLoading ? "Appt# : 98765" : "Appt #: ${order.appointmentNo}", + labelText: isLoading ? "Appt# : 98765" : "${LocaleKeys.appointment.tr(context: context)}: ${order.appointmentNo}", + isEnglishOnly: true, ).toShimmer2(isShow: isLoading), // Invoice Number @@ -228,7 +237,7 @@ class AncillaryOrderCard extends StatelessWidget { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: (isFoldable || isTablet) ? 12.f : 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 10.r, padding: EdgeInsets.fromLTRB(10.h, 0, 10.h, 0), height: 40.h, @@ -252,7 +261,7 @@ class AncillaryOrderCard extends StatelessWidget { borderColor: Color(0xffFEE9EA), textColor: Color(0xffED1C2B), fontSize: (isFoldable || isTablet) ? 12.f : 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 10.r, padding: EdgeInsets.fromLTRB(10.h, 0, 10.h, 0), height: 40.h, diff --git a/lib/presentation/todo_section/widgets/ancillary_procedures_list.dart b/lib/presentation/todo_section/widgets/ancillary_procedures_list.dart index 2d99aa0f..54c92789 100644 --- a/lib/presentation/todo_section/widgets/ancillary_procedures_list.dart +++ b/lib/presentation/todo_section/widgets/ancillary_procedures_list.dart @@ -121,7 +121,7 @@ class AncillaryOrderCard extends StatelessWidget { children: [ LocaleKeys.orderNumber.tr(context: context).toText14( color: AppColors.textColorLight, - weight: FontWeight.w500, + weight: FontWeight.w600, ), SizedBox(width: 4.w), (isLoading ? "12345" : "${order.orderNo ?? '-'}").toText16(isBold: true).toShimmer2(isShow: isLoading), @@ -158,7 +158,7 @@ class AncillaryOrderCard extends StatelessWidget { (isLoading ? "Cardiology Clinic" : order.clinicName!) .toString() .toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.greyTextColor, maxLine: 2, ) @@ -232,7 +232,7 @@ class AncillaryOrderCard extends StatelessWidget { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10.r, padding: EdgeInsets.fromLTRB(10.h, 0, 10.h, 0), height: 40.h, @@ -256,7 +256,7 @@ class AncillaryOrderCard extends StatelessWidget { borderColor: Color(0xffFEE9EA), textColor: Color(0xffED1C2B), fontSize: 14.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 10.r, padding: EdgeInsets.fromLTRB(10.h, 0, 10.h, 0), height: 40.h, diff --git a/lib/presentation/vital_sign/vital_sign_details_page.dart b/lib/presentation/vital_sign/vital_sign_details_page.dart index ca6e09a5..63b21291 100644 --- a/lib/presentation/vital_sign/vital_sign_details_page.dart +++ b/lib/presentation/vital_sign/vital_sign_details_page.dart @@ -2,7 +2,9 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:fl_chart/fl_chart.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/common_models/data_points.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -16,6 +18,8 @@ import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; import 'package:hmg_patient_app_new/widgets/graph/custom_graph.dart'; import 'package:provider/provider.dart'; +import 'dart:ui' as ui; + /// Which vital sign is being shown in the details screen. enum VitalSignMetric { bmi, @@ -89,6 +93,21 @@ class _VitalSignDetailsPageState extends State { ), _whatIsThisResultCard(context), _historyCard(context, history: history), + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 16.r, + hasShadow: false, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + LocaleKeys.history.tr(context: context).toText16(isBold: true, color: AppColors.textColor), + SizedBox(height: 16.h), + _buildHistoryList(context, history), + ], + ).paddingSymmetrical(16.h, 16.h), + ), ], ).paddingAll(24.h), ); @@ -102,7 +121,7 @@ class _VitalSignDetailsPageState extends State { required String title, required String icon, required String valueText, - required String? status, + required VitalSignStatus? status, required VitalSignUiModel scheme, required DateTime? latestDate, }) { @@ -124,15 +143,13 @@ class _VitalSignDetailsPageState extends State { mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ title.toText28(isBold: true, color: AppColors.textColor, letterSpacing: -1), - - ], ), SizedBox(height: 8.h), (latestDate != null ? LocaleKeys.resultOf.tr(namedArgs: {'date': latestDate.toString().split(' ').first}) : LocaleKeys.resultOfNoDate.tr(context: context)) - .toText11(weight: FontWeight.w500, color: AppColors.greyTextColor), + .toText11(isBold: true, color: AppColors.greyTextColor, isEnglishOnly: true), ], ), Row( @@ -153,17 +170,20 @@ class _VitalSignDetailsPageState extends State { ), SizedBox(width: 4.h), if (status != null) - Column( - spacing: 6.h, - children: [ - status.toText10(weight: FontWeight.w500, color: AppColors.greyTextColor), - Utils.buildSvgWithAssets( - icon: AppAssets.lab_result_indicator, - width: 21, - height: 23, - iconColor: scheme.iconFg, - ), - ], + Directionality( + textDirection: ui.TextDirection.ltr, + child: Column( + spacing: 6.h, + children: [ + VitalSignUiModel.statusToString(status).toText10(isBold: true, color: AppColors.greyTextColor), + Utils.buildSvgWithAssets( + icon: AppAssets.lab_result_indicator, + width: 21, + height: 23, + iconColor: scheme.iconFg, + ), + ], + ), ), ], ), @@ -175,8 +195,8 @@ class _VitalSignDetailsPageState extends State { _referenceText(context), style: TextStyle( fontSize: 12.f, - fontWeight: FontWeight.w500, - fontFamily: 'Poppins', + fontWeight: FontWeight.w600, + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', color: AppColors.greyTextColor, ), softWrap: true, @@ -221,8 +241,8 @@ class _VitalSignDetailsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, spacing: 8.h, children: [ - LocaleKeys.whatIsThisResult.tr(context: context).toText16(weight: FontWeight.w600, color: AppColors.textColor), - _descriptionText(context).toText12(fontWeight: FontWeight.w500, color: AppColors.textColorLight), + LocaleKeys.whatIsThisResult.tr(context: context).toText16(isBold: true, color: AppColors.textColor), + _descriptionText(context).toText12(isBold: true, color: AppColors.textColorLight), ], ), ); @@ -264,35 +284,27 @@ class _VitalSignDetailsPageState extends State { Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - Text( - _isGraphVisible ? LocaleKeys.historyFlowchart.tr(context: context) : LocaleKeys.history.tr(context: context), - style: TextStyle( - fontSize: 16, - fontFamily: 'Poppins', - fontWeight: FontWeight.w600, - color: AppColors.textColor, - ), - ), + LocaleKeys.historyFlowchart.tr(context: context).toText16(isBold: true, color: AppColors.textColor), Row( mainAxisSize: MainAxisSize.min, children: [ - Container( - width: 24.h, - height: 24.h, - alignment: Alignment.center, - child: InkWell( - onTap: () { - setState(() { - _isGraphVisible = !_isGraphVisible; - }); - }, - child: Utils.buildSvgWithAssets( - icon: _isGraphVisible ? AppAssets.ic_list : AppAssets.ic_graph, - width: 24.h, - height: 24.h, - ), - ), - ), + // Container( + // width: 24.h, + // height: 24.h, + // alignment: Alignment.center, + // child: InkWell( + // onTap: () { + // setState(() { + // _isGraphVisible = !_isGraphVisible; + // }); + // }, + // child: Utils.buildSvgWithAssets( + // icon: _isGraphVisible ? AppAssets.ic_list : AppAssets.ic_graph, + // width: 24.h, + // height: 24.h, + // ), + // ), + // ), // SizedBox(width: 16.h), // Container( // width: 24.h, @@ -323,7 +335,7 @@ class _VitalSignDetailsPageState extends State { Widget _buildHistoryGraph(List history, {List? secondaryHistory}) { final minY = _minY(history, secondaryHistory: secondaryHistory); final maxY = _maxY(history, secondaryHistory: secondaryHistory); - final scheme = VitalSignUiModel.scheme(status: _statusForLatest(null), label: args.title); + final isRTL = getIt.get().isArabic(); return CustomGraph( dataPoints: history, @@ -331,43 +343,43 @@ class _VitalSignDetailsPageState extends State { makeGraphBasedOnActualValue: true, leftLabelReservedSize: 40, showGridLines: true, - showShadow: true, + showShadow: false, + isRTL: isRTL, leftLabelInterval: _leftInterval(history, secondaryHistory: secondaryHistory), maxY: maxY, minY: minY, maxX: history.length.toDouble() - .75, - horizontalInterval: _leftInterval(history, secondaryHistory: secondaryHistory), + horizontalInterval: .01, leftLabelFormatter: (value) { - // Show only numeric labels at regular intervals - return _axisLabel(value.toStringAsFixed(0)); + // Format value to 2 decimal places for consistency + value = double.parse(value.toStringAsFixed(2)); + return _axisLabel(value.toStringAsFixed(2)); }, getDrawingHorizontalLine: (value) { - // Draw reference lines for high/low bounds + value = double.parse(value.toStringAsFixed(2)); + // Draw solid reference lines for high/low bounds (matching lab result style) if (args.high != null && (value - args.high!).abs() < 0.1) { return FlLine( - color: AppColors.bgGreenColor.withOpacity(0.2), + color: AppColors.bgGreenColor.withValues(alpha: 0.6), strokeWidth: 1, - dashArray: [5, 5], ); } if (args.low != null && (value - args.low!).abs() < 0.1) { return FlLine( - color: AppColors.bgGreenColor.withOpacity(0.2), + color: AppColors.bgGreenColor.withValues(alpha: 0.6), strokeWidth: 1, - dashArray: [5, 5], ); } - // Draw grid lines at intervals + // Hide other grid lines return FlLine( - color: AppColors.bgGreenColor.withOpacity(0.2), + color: Colors.transparent, strokeWidth: 1, - dashArray: [5, 5], ); }, - graphColor: AppColors.bgGreenColor, - secondaryGraphColor: AppColors.blueColor, - graphShadowColor: AppColors.lightGreenColor.withOpacity(.4), - graphGridColor: scheme.iconFg, + graphColor: AppColors.textColor.withValues(alpha: 90 / 255), + secondaryGraphColor: AppColors.textColor.withValues(alpha: 90 / 255), + graphShadowColor: AppColors.greyColor.withValues(alpha: 0.5), + graphGridColor: AppColors.textColor.withValues(alpha: 0.4), bottomLabelFormatter: (value, data) { if (data.isEmpty) return const SizedBox.shrink(); if (value == 0) return _bottomLabel(data[value.toInt()].label); @@ -423,10 +435,14 @@ class _VitalSignDetailsPageState extends State { child: Row( mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - dp.displayTime.toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500), - valueText.toText12( - color: AppColors.textColor, - fontWeight: FontWeight.w600, + dp.displayTime.toText12(color: AppColors.greyTextColor, isBold: true, isEnglishOnly: true), + Directionality( + textDirection: ui.TextDirection.ltr, + child: valueText.toText12( + color: AppColors.textColor, + isBold: true, + isEnglishOnly: true + ), ), ], ), @@ -479,32 +495,35 @@ class _VitalSignDetailsPageState extends State { final List ranges = []; + // Below low reference (transparent - matching lab result style) if (args.low != null) { ranges.add( HorizontalRangeAnnotation( y1: minY, y2: args.low!, - color: AppColors.highAndLow.withOpacity(0.05), + color: Colors.transparent, ), ); } + // Normal range (light green shading - matching lab result style) if (args.low != null && args.high != null) { ranges.add( HorizontalRangeAnnotation( y1: args.low!, y2: args.high!, - color: AppColors.bgGreenColor.withOpacity(0.05), + color: AppColors.bgGreenColor.withValues(alpha: 0.05), ), ); } + // Above high reference (transparent - matching lab result style) if (args.high != null) { ranges.add( HorizontalRangeAnnotation( y1: args.high!, y2: maxY, - color: AppColors.criticalLowAndHigh.withOpacity(0.05), + color: Colors.transparent, ), ); } @@ -652,7 +671,7 @@ class _VitalSignDetailsPageState extends State { } } - String? _statusForLatest(VitalSignResModel? latest) { + VitalSignStatus? _statusForLatest(VitalSignResModel? latest) { if (latest == null) return null; switch (args.metric) { @@ -663,13 +682,15 @@ class _VitalSignDetailsPageState extends State { case VitalSignMetric.height: return null; case VitalSignMetric.weight: - return latest.weightKg != null ? 'Normal' : null; + return VitalSignUiModel.weightStatus(latest.bodyMassIndex); case VitalSignMetric.temperature: return null; case VitalSignMetric.heartRate: - return (latest.heartRate ?? latest.pulseBeatPerMinute) != null ? 'Normal' : null; + final heartRateValue = _toDouble(latest.heartRate ?? latest.pulseBeatPerMinute); + return (heartRateValue != null && heartRateValue > 0) ? VitalSignStatus.normal : null; case VitalSignMetric.respiratoryRate: - return latest.respirationBeatPerMinute != null ? 'Normal' : null; + final respiratoryValue = _toDouble(latest.respirationBeatPerMinute); + return (respiratoryValue != null && respiratoryValue > 0) ? VitalSignStatus.normal : null; } } @@ -722,9 +743,9 @@ class _VitalSignDetailsPageState extends State { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.whatShouldIDoNext.tr(context: context).toText16(weight: FontWeight.w600), + LocaleKeys.whatShouldIDoNext.tr(context: context).toText16(isBold: true), SizedBox(height: 8.h), - _nextStepsText(context).toText12(color: AppColors.greyTextColor, fontWeight: FontWeight.w500, maxLine: 10), + _nextStepsText(context).toText12(color: AppColors.greyTextColor, isBold: true, maxLine: 10), ], ), ); @@ -735,7 +756,7 @@ class _VitalSignDetailsPageState extends State { value, style: TextStyle( fontWeight: FontWeight.w600, - fontFamily: 'Poppins', + fontFamily: getIt.get().isArabic() ? 'CairoArabic' : 'Poppins', fontSize: 8.f, color: AppColors.textColor, ), @@ -744,11 +765,11 @@ class _VitalSignDetailsPageState extends State { Widget _bottomLabel(String label, {bool isLast = false}) { return Padding( - padding: EdgeInsets.only( + padding: EdgeInsetsDirectional.only( top: 8.0, - right: isLast ? 16.h : 0, + end: isLast ? 16.h : 0, ), - child: label.toText8(fontWeight: FontWeight.w500), + child: label.toText10(isBold: true, isEnglishOnly: true), ); } diff --git a/lib/presentation/vital_sign/vital_sign_page.dart b/lib/presentation/vital_sign/vital_sign_page.dart index 200a223e..826c3971 100644 --- a/lib/presentation/vital_sign/vital_sign_page.dart +++ b/lib/presentation/vital_sign/vital_sign_page.dart @@ -41,6 +41,18 @@ class _VitalSignPageState extends State { return false; } + // Helper function to format vital sign values, showing '--' instead of 0 or null + String _formatValue(dynamic value) { + if (value == null) return '--'; + if (value is num && value == 0) return '--'; + if (value is String) { + if (value.trim().isEmpty) return '--'; + final parsed = double.tryParse(value); + if (parsed == null || parsed == 0) return '--'; + } + return value.toString(); + } + void _openDetails(VitalSignDetailsArgs args) { Navigator.of(context).push( CustomPageRoute( @@ -69,16 +81,16 @@ class _VitalSignPageState extends State { : null; // Debug logging for blood pressure - if (latestVitalSign != null) { - print('=== Blood Pressure Debug ==='); - print('bloodPressureHigher: ${latestVitalSign.bloodPressureHigher}'); - print('bloodPressureLower: ${latestVitalSign.bloodPressureLower}'); - print('bloodPressureHigher type: ${latestVitalSign.bloodPressureHigher.runtimeType}'); - print('bloodPressureLower type: ${latestVitalSign.bloodPressureLower.runtimeType}'); - print('bloodPressureHigher == 0: ${latestVitalSign.bloodPressureHigher == 0}'); - print('bloodPressureLower == 0: ${latestVitalSign.bloodPressureLower == 0}'); - print('========================'); - } + // if (latestVitalSign != null) { + // print('=== Blood Pressure Debug ==='); + // print('bloodPressureHigher: ${latestVitalSign.bloodPressureHigher}'); + // print('bloodPressureLower: ${latestVitalSign.bloodPressureLower}'); + // print('bloodPressureHigher type: ${latestVitalSign.bloodPressureHigher.runtimeType}'); + // print('bloodPressureLower type: ${latestVitalSign.bloodPressureLower.runtimeType}'); + // print('bloodPressureHigher == 0: ${latestVitalSign.bloodPressureHigher == 0}'); + // print('bloodPressureLower == 0: ${latestVitalSign.bloodPressureLower == 0}'); + // print('========================'); + // } return SingleChildScrollView( child: Column( @@ -100,7 +112,7 @@ class _VitalSignPageState extends State { _buildVitalSignCard( icon: AppAssets.bmiVital, label: LocaleKeys.bmi.tr(context: context), - value: latestVitalSign?.bodyMassIndex?.toString() ?? '--', + value: _formatValue(latestVitalSign?.bodyMassIndex), unit: '', status: VitalSignUiModel.bmiStatus(latestVitalSign?.bodyMassIndex), onTap: () => _openDetails( @@ -118,7 +130,7 @@ class _VitalSignPageState extends State { _buildVitalSignCard( icon: AppAssets.heightVital, label: LocaleKeys.height.tr(context: context), - value: latestVitalSign?.heightCm?.toString() ?? '--', + value: _formatValue(latestVitalSign?.heightCm), unit: 'cm', status: null, onTap: () => _openDetails( @@ -136,13 +148,15 @@ class _VitalSignPageState extends State { _buildVitalSignCard( icon: AppAssets.weightVital, label: LocaleKeys.weight.tr(context: context), - value: latestVitalSign?.weightKg?.toString() ?? '--', + value: _formatValue(latestVitalSign?.weightKg), unit: 'kg', - status: (latestVitalSign?.weightKg != null) ? 'Normal' : null, + status: (latestVitalSign?.weightKg != null) + ? VitalSignUiModel.weightStatus(latestVitalSign?.bodyMassIndex) + : null, onTap: () => _openDetails( VitalSignDetailsArgs( metric: VitalSignMetric.weight, - title: LocaleKeys.height.tr(context: context), + title: LocaleKeys.weight.tr(context: context), icon: AppAssets.weightVital, unit: 'kg', ), @@ -160,10 +174,14 @@ class _VitalSignPageState extends State { ? '${latestVitalSign.bloodPressureHigher}/${latestVitalSign.bloodPressureLower}' : '--', unit: '', - status: VitalSignUiModel.bloodPressureStatus( - systolic: latestVitalSign?.bloodPressureHigher, - diastolic: latestVitalSign?.bloodPressureLower, - ), + status: (latestVitalSign != null && + _isValidValue(latestVitalSign.bloodPressureHigher) && + _isValidValue(latestVitalSign.bloodPressureLower)) + ? VitalSignUiModel.bloodPressureStatus( + systolic: latestVitalSign.bloodPressureHigher, + diastolic: latestVitalSign.bloodPressureLower, + ) + : null, onTap: () => _openDetails( VitalSignDetailsArgs( metric: VitalSignMetric.bloodPressure, @@ -181,7 +199,7 @@ class _VitalSignPageState extends State { _buildVitalSignCard( icon: AppAssets.temperature, label: LocaleKeys.temperature.tr(context: context), - value: latestVitalSign?.temperatureCelcius?.toString() ?? '--', + value: _formatValue(latestVitalSign?.temperatureCelcius), unit: '°C', status: null, onTap: () => _openDetails( @@ -217,10 +235,11 @@ class _VitalSignPageState extends State { child: Stack( fit: StackFit.expand, children: [ - Image.asset( - AppAssets.bmiFullBody, + Utils.buildImgWithAssets( + icon: getIt.get().getAuthenticatedUser()?.gender == 1 + ? AppAssets.bmiFullBody + : AppAssets.bmiFullBodyFemale, fit: BoxFit.cover, - alignment: Alignment.topCenter, ), Align( alignment: Alignment.bottomCenter, @@ -256,9 +275,9 @@ class _VitalSignPageState extends State { child: _buildVitalSignCard( icon: AppAssets.heart, label: LocaleKeys.heart.tr(context: context), - value: latestVitalSign?.heartRate?.toString() ?? latestVitalSign?.pulseBeatPerMinute?.toString() ?? '--', + value: _formatValue(latestVitalSign?.heartRate ?? latestVitalSign?.pulseBeatPerMinute), unit: 'bpm', - status: 'Normal', + status: _isValidValue(latestVitalSign?.heartRate ?? latestVitalSign?.pulseBeatPerMinute) ? VitalSignStatus.normal : null, onTap: () => _openDetails( VitalSignDetailsArgs( metric: VitalSignMetric.heartRate, @@ -280,9 +299,9 @@ class _VitalSignPageState extends State { _buildVitalSignCard( icon: AppAssets.respRate, label: LocaleKeys.respirationRate.tr(context: context), - value: latestVitalSign?.respirationBeatPerMinute?.toString() ?? '--', + value: _formatValue(latestVitalSign?.respirationBeatPerMinute), unit: 'bpm', - status: 'Normal', + status: _isValidValue(latestVitalSign?.respirationBeatPerMinute) ? VitalSignStatus.normal : null, onTap: () => _openDetails( VitalSignDetailsArgs( metric: VitalSignMetric.respiratoryRate, @@ -316,7 +335,7 @@ class _VitalSignPageState extends State { required String label, required String value, required String unit, - required String? status, + required VitalSignStatus? status, required VoidCallback onTap, }) { final VitalSignUiModel scheme = VitalSignUiModel.scheme(status: status, label: label); @@ -385,18 +404,18 @@ class _VitalSignPageState extends State { color: AppColors.textColor, isEnglishOnly: true ), - if (unit.isNotEmpty) ...[ + if (unit.isNotEmpty && value != '--' && value != '0') ...[ SizedBox(width: 3.w), unit.toText12( color: AppColors.textColor, - fontWeight: FontWeight.w500, + isBold: true, ), ], ], ), if (status != null) AppCustomChipWidget( - labelText: status, + labelText: VitalSignUiModel.statusToString(status), backgroundColor: scheme.chipBg, textColor: scheme.chipFg, diff --git a/lib/presentation/water_monitor/water_consumption_page.dart b/lib/presentation/water_monitor/water_consumption_page.dart index 7e6d1d5e..27d60d5b 100644 --- a/lib/presentation/water_monitor/water_consumption_page.dart +++ b/lib/presentation/water_monitor/water_consumption_page.dart @@ -75,8 +75,8 @@ class _WaterConsumptionPageState extends State { Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - title.toText14(weight: FontWeight.w500, color: AppColors.labelTextColor), - subTitle.toText18(weight: FontWeight.w600), + title.toText14(isBold: true, color: AppColors.labelTextColor), + subTitle.toText18(isBold: true), ], ), Utils.buildSvgWithAssets(icon: AppAssets.greenTickIcon, applyThemeColor: false) @@ -115,7 +115,7 @@ class _WaterConsumptionPageState extends State { ), child: Row( children: [ - viewModel.selectedDurationFilter.toText12(fontWeight: FontWeight.w500), + viewModel.selectedDurationFilter.toText12(isBold: true), Utils.buildSvgWithAssets(icon: AppAssets.arrow_down, height: 16.h), ], ), @@ -502,16 +502,16 @@ class _WaterConsumptionPageState extends State { for (var position in positions) { if ((value - position).abs() < 1) { - return '${value.toInt()}ml'.toText10(weight: FontWeight.w600); + return '${value.toInt()}ml'.toText10(isBold: true); } } } else { // Show percentage labels - if (value == 0) return '0%'.toText10(weight: FontWeight.w600); - if (value == 25) return '25%'.toText10(weight: FontWeight.w600); - if (value == 50) return '50%'.toText10(weight: FontWeight.w600); - if (value == 75) return '75%'.toText10(weight: FontWeight.w600); - if (value == 100) return '100%'.toText10(weight: FontWeight.w600); + if (value == 0) return '0%'.toText10(isBold: true); + if (value == 25) return '25%'.toText10(isBold: true); + if (value == 50) return '50%'.toText10(isBold: true); + if (value == 75) return '75%'.toText10(isBold: true); + if (value == 100) return '100%'.toText10(isBold: true); } return SizedBox.shrink(); }, @@ -533,7 +533,7 @@ class _WaterConsumptionPageState extends State { return Padding( padding: EdgeInsets.only(top: 10.h), child: data[index].label.toText8( - fontWeight: FontWeight.w600, + isBold: true, color: AppColors.labelTextColor, ), ); @@ -554,7 +554,7 @@ class _WaterConsumptionPageState extends State { if (selectedDuration == 'Monthly' && index < 7) { return Padding( padding: EdgeInsets.only(top: 10.h), - child: data[index].label.toText10(weight: FontWeight.w600, color: AppColors.labelTextColor), + child: data[index].label.toText10(isBold: true, color: AppColors.labelTextColor), ); } @@ -588,7 +588,7 @@ class _WaterConsumptionPageState extends State { materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), (useUpperCase ? value.toUpperCase() : value.toCamelCase) - .toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1) + .toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1) .expanded, ], ).onPress(onTap), diff --git a/lib/presentation/water_monitor/water_monitor_settings_page.dart b/lib/presentation/water_monitor/water_monitor_settings_page.dart index 81157c8a..367cecc5 100644 --- a/lib/presentation/water_monitor/water_monitor_settings_page.dart +++ b/lib/presentation/water_monitor/water_monitor_settings_page.dart @@ -2,6 +2,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -53,9 +54,7 @@ class _WaterMonitorSettingsPageState extends State { onChanged: (_) => onTap(), materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - (useUpperCase ? value.toUpperCase() : value.toCamelCase) - .toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1) - .expanded, + (useUpperCase ? value.toUpperCase() : value.toCamelCase).toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1).expanded, ], ).onPress(onTap), ); @@ -103,7 +102,7 @@ class _WaterMonitorSettingsPageState extends State { context: context, title: LocaleKeys.selectGender.tr(context: context), items: viewModel.genderOptions, - selectedValue: viewModel.selectedGender, + selectedValue: viewModel.selectedGenderDisplay, onSelected: viewModel.setGender, ); } @@ -112,8 +111,8 @@ class _WaterMonitorSettingsPageState extends State { _showSelectionBottomSheet( context: context, title: LocaleKeys.selectUnit.tr(context: context), - items: viewModel.heightUnits, - selectedValue: viewModel.selectedHeightUnit, + items: viewModel.getHeightUnitsList(), + selectedValue: viewModel.selectedHeightUnitDisplay, onSelected: viewModel.setHeightUnit, useUpperCase: true, ); @@ -123,8 +122,8 @@ class _WaterMonitorSettingsPageState extends State { _showSelectionBottomSheet( context: context, title: LocaleKeys.selectUnit.tr(context: context), - items: viewModel.weightUnits, - selectedValue: viewModel.selectedWeightUnit, + items: viewModel.getWeightUnitsList(), + selectedValue: viewModel.selectedWeightUnitDisplay, onSelected: viewModel.setWeightUnit, useUpperCase: true, ); @@ -135,7 +134,7 @@ class _WaterMonitorSettingsPageState extends State { context: context, title: LocaleKeys.selectActivityLevel.tr(context: context), items: viewModel.activityLevels, - selectedValue: viewModel.selectedActivityLevel, + selectedValue: viewModel.selectedActivityLevelDisplay, onSelected: viewModel.setActivityLevel, ); } @@ -145,7 +144,7 @@ class _WaterMonitorSettingsPageState extends State { context: context, title: LocaleKeys.selectNumberOfReminders.tr(context: context), items: viewModel.reminderOptions, - selectedValue: viewModel.selectedNumberOfReminders, + selectedValue: viewModel.selectedNumberOfRemindersDisplay, onSelected: viewModel.setNumberOfReminders, ); } @@ -167,7 +166,7 @@ class _WaterMonitorSettingsPageState extends State { ), style: TextStyle( fontSize: 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: AppColors.textColor, ), ); @@ -184,6 +183,7 @@ class _WaterMonitorSettingsPageState extends State { VoidCallback? onRowTap, bool showDivider = true, }) { + AppState appState = getIt(); return Column( children: [ Row( @@ -206,7 +206,7 @@ class _WaterMonitorSettingsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - label.toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), + label.toText12(isBold: true, color: AppColors.inputLabelTextColor), if (inputField != null) Container( height: 20.w, @@ -214,7 +214,7 @@ class _WaterMonitorSettingsPageState extends State { child: inputField, ) else if (value != null) - value.toCamelCase.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + value.toCamelCase.toText12(isBold: true, color: AppColors.textColor), ], ), ), @@ -231,8 +231,8 @@ class _WaterMonitorSettingsPageState extends State { crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, children: [ - "Unit".toText12(fontWeight: FontWeight.w500, color: AppColors.inputLabelTextColor), - unit.toText12(fontWeight: FontWeight.w500, color: AppColors.textColor), + appState.isArabic() ? "الوحدة".toText12(isBold: true, color: AppColors.inputLabelTextColor) : "Unit".toText12(isBold: true, color: AppColors.inputLabelTextColor), + unit.toText12(isBold: true, color: AppColors.textColor), ], ), SizedBox(width: 12.w), @@ -307,7 +307,7 @@ class _WaterMonitorSettingsPageState extends State { _buildSettingsRow( icon: AppAssets.genderIcon, label: LocaleKeys.selectGender.tr(context: context), - value: viewModel.selectedGender, + value: viewModel.selectedGenderDisplay, onRowTap: () => _showGenderSelectionBottomsheet(context, viewModel), ), _buildSettingsRow( @@ -327,7 +327,7 @@ class _WaterMonitorSettingsPageState extends State { '175', keyboardType: TextInputType.number, ), - unit: viewModel.selectedHeightUnit, + unit: viewModel.selectedHeightUnitDisplay, onUnitTap: () => _showHeightUnitSelectionBottomSheet(context, viewModel), ), _buildSettingsRow( @@ -338,19 +338,19 @@ class _WaterMonitorSettingsPageState extends State { '75', keyboardType: TextInputType.number, ), - unit: viewModel.selectedWeightUnit, + unit: viewModel.selectedWeightUnitDisplay, onUnitTap: () => _showWeightUnitSelectionBottomsheet(context, viewModel), ), _buildSettingsRow( icon: AppAssets.dumbellIcon, label: LocaleKeys.activityLevel.tr(context: context), - value: viewModel.selectedActivityLevel, + value: viewModel.selectedActivityLevelDisplay, onRowTap: () => _showActivityLevelSelectionBottomsheet(context, viewModel), ), _buildSettingsRow( icon: AppAssets.notificationIconGrey, label: LocaleKeys.numberOfRemindersInADay.tr(context: context), - value: viewModel.selectedNumberOfReminders, + value: viewModel.selectedNumberOfRemindersDisplay, onRowTap: () => _showNumberOfRemindersSelectionBottomsheet(context, viewModel), showDivider: false, ), diff --git a/lib/presentation/water_monitor/widgets/cup_bottomsheet_widgets.dart b/lib/presentation/water_monitor/widgets/cup_bottomsheet_widgets.dart index 4ee6170e..058f14e8 100644 --- a/lib/presentation/water_monitor/widgets/cup_bottomsheet_widgets.dart +++ b/lib/presentation/water_monitor/widgets/cup_bottomsheet_widgets.dart @@ -2,6 +2,8 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -17,13 +19,15 @@ import 'package:uuid/uuid.dart'; /// Bottom sheet to switch between existing cups or add new custom cup void showSwitchCupBottomSheet(BuildContext context) { + final isArabic = getIt.get().isArabic(); + return showCommonBottomSheetWithoutHeight( context, titleWidget: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "Switch Cups".toText20(weight: FontWeight.w600), - "Select your preferred cup size".toText16(weight: FontWeight.w500, color: AppColors.greyTextColor), + (isArabic ? "تبديل الأكواب" : "Switch Cups").toText20(isBold: true), + (isArabic ? "اختر حجم الكوب المفضل لديك" : "Select your preferred cup size").toText16(isBold: true, color: AppColors.greyTextColor), ], ), child: SwitchCupBottomSheet(), @@ -125,7 +129,7 @@ class SwitchCupBottomSheet extends StatelessWidget { ], ), SizedBox(height: 2.h), - '${cup.capacityMl}ml'.toText10(weight: FontWeight.w500), + '${cup.capacityMl}ml'.toText10(isBold: true), ], ), ); @@ -145,7 +149,7 @@ class SwitchCupBottomSheet extends StatelessWidget { child: Center(child: Utils.buildSvgWithAssets(icon: AppAssets.cupAdd, height: 30.h, width: 42.w)), ), SizedBox(height: 4.h), - LocaleKeys.add.tr(context: context).toText10(weight: FontWeight.w500), + LocaleKeys.add.tr(context: context).toText10(isBold: true), ], ), ); @@ -159,7 +163,7 @@ void showCustomizeCupBottomSheet(BuildContext context, {WaterCupModel? cupToEdit titleWidget: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - LocaleKeys.customizeDrinkCup.tr(context: context).toText20(weight: FontWeight.w600), + LocaleKeys.customizeDrinkCup.tr(context: context).toText20(isBold: true), ], ), child: CustomizeCupBottomSheet(cupToEdit: cupToEdit), @@ -252,7 +256,7 @@ class _CustomizeCupBottomSheetState extends State { 'ml', style: TextStyle( fontSize: 16.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: AppColors.greyTextColor, height: 1.0, ), diff --git a/lib/presentation/water_monitor/widgets/hydration_tips_widget.dart b/lib/presentation/water_monitor/widgets/hydration_tips_widget.dart index 7c49550c..af714bd7 100644 --- a/lib/presentation/water_monitor/widgets/hydration_tips_widget.dart +++ b/lib/presentation/water_monitor/widgets/hydration_tips_widget.dart @@ -37,22 +37,22 @@ class HydrationTipsWidget extends StatelessWidget { ), SizedBox(height: 8.h), " • ${LocaleKeys.drinkBeforeYouFeelThirsty.tr(context: context)}".toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.textColorLight, ), SizedBox(height: 4.h), " • ${LocaleKeys.keepRefillableBottleNextToYou.tr(context: context)}".toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.textColorLight, ), SizedBox(height: 4.h), " • ${LocaleKeys.trackYourDailyIntakeToStayMotivated.tr(context: context)}".toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.textColorLight, ), SizedBox(height: 4.h), " • ${LocaleKeys.chooseSparklingWaterInsteadOfSoda.tr(context: context)}".toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.textColorLight, ), SizedBox(height: 8.h), diff --git a/lib/presentation/water_monitor/widgets/water_action_buttons_widget.dart b/lib/presentation/water_monitor/widgets/water_action_buttons_widget.dart index 115dd212..42ffc6f5 100644 --- a/lib/presentation/water_monitor/widgets/water_action_buttons_widget.dart +++ b/lib/presentation/water_monitor/widgets/water_action_buttons_widget.dart @@ -54,7 +54,7 @@ class WaterActionButtonsWidget extends StatelessWidget { hasShadow: true, ), child: (cupAmount > 0 ? "+ $cupAmount ml" : "+ 0ml").toText12( - fontWeight: FontWeight.w600, + isBold: true, color: AppColors.whiteColor, ), ), diff --git a/lib/presentation/water_monitor/widgets/water_intake_summary_widget.dart b/lib/presentation/water_monitor/widgets/water_intake_summary_widget.dart index ec796abc..4426375a 100644 --- a/lib/presentation/water_monitor/widgets/water_intake_summary_widget.dart +++ b/lib/presentation/water_monitor/widgets/water_intake_summary_widget.dart @@ -53,13 +53,13 @@ class WaterIntakeSummaryWidget extends StatelessWidget { if (!vm.nextDrinkTime.toLowerCase().contains('goal achieved')) // Show "Tomorrow" if nextDrinkTime contains "tomorrow", otherwise "Next Drink Time" (vm.nextDrinkTime.toLowerCase().contains('tomorrow') ? "Tomorrow" : "Next Drink Time") - .toText18(weight: FontWeight.w600, color: AppColors.textColor), + .toText18(isBold: true, color: AppColors.textColor), // Extract only time if "tomorrow" is present, otherwise show as is (vm.nextDrinkTime.toLowerCase().contains('tomorrow') ? vm.nextDrinkTime.replaceAll(RegExp(r'tomorrow', caseSensitive: false), '').trim() : vm.nextDrinkTime) - .toText32(weight: FontWeight.w600, color: AppColors.blueColor), + .toText32(isBold: true, color: AppColors.blueColor), SizedBox(height: 12.h), Row( @@ -97,9 +97,9 @@ class WaterIntakeSummaryWidget extends StatelessWidget { return Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - "$title: ".toText16(weight: FontWeight.w500, color: AppColors.textColor), + "$title: ".toText16(isBold: true, color: AppColors.textColor), subTitle.toText12( - fontWeight: FontWeight.w600, + isBold: true, color: subTitleColor ?? AppColors.greyTextColor, ), ], diff --git a/lib/presentation/weather/weather_details_page.dart b/lib/presentation/weather/weather_details_page.dart new file mode 100644 index 00000000..8762a55a --- /dev/null +++ b/lib/presentation/weather/weather_details_page.dart @@ -0,0 +1,430 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/features/weather/models/waether_cities_model.dart'; +import 'package:hmg_patient_app_new/features/weather/weather_view_model.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/presentation/hmg_services/widgets/weather_widget.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/appbar/collapsing_list_view.dart'; +import 'package:provider/provider.dart'; +import 'package:shimmer/shimmer.dart'; + +class WeatherDetailsPage extends StatefulWidget { + final bool showBackIcon; + const WeatherDetailsPage({super.key, this.showBackIcon = true}); + + @override + State createState() => _WeatherDetailsPageState(); +} + +class _WeatherDetailsPageState extends State { + @override + void initState() { + super.initState(); + // Fetch weather data when page loads only if data is not already available + WidgetsBinding.instance.addPostFrameCallback((_) { + final weatherVM = Provider.of(context, listen: false); + // Only fetch if cityInfoList is empty + if (weatherVM.cityInfoList.isEmpty && !weatherVM.isLoading) { + weatherVM.initiateFetchWeather(); + } + }); + } + + Color _getColorFromColorName(ColorName? colorName) { + if (colorName == null) return AppColors.successColor; + + switch (colorName) { + case ColorName.GREEN: + case ColorName.LIGHTGREEN: + return AppColors.successColor; + case ColorName.YELLOW: + return AppColors.warningColorYellow; + case ColorName.ORANGE: + return AppColors.warningColor; + case ColorName.RED: + return AppColors.errorColor; + } + } + + Color _getBackgroundColorFromColorName(ColorName? colorName) { + if (colorName == null) return AppColors.successLightColor.withValues(alpha: 0.1); + + switch (colorName) { + case ColorName.GREEN: + case ColorName.LIGHTGREEN: + return AppColors.successLightColor.withValues(alpha: 0.1); + case ColorName.YELLOW: + return AppColors.warningColorYellow.withValues(alpha: 0.1); + case ColorName.ORANGE: + return AppColors.warningLightColor.withValues(alpha: 0.1); + case ColorName.RED: + return AppColors.errorLightColor.withValues(alpha: 0.1); + } + } + + /// Get color based on colorName from API (language-independent) + Color _getColorFromColorNameOrCategory(ColorName? colorName, String? categoryLabel) { + // First priority: Use the colorName from API if available + if (colorName != null) { + return _getColorFromColorName(colorName); + } + + // Fallback: Try to parse category label (for English) + if (categoryLabel == null) return AppColors.successColor; + + final category = categoryLabel.toLowerCase().trim(); + + // Green: Low, Beneficial + if (category.contains('low') || category.contains('beneficial')) { + return AppColors.successColor; + } + // Yellow: Fair + else if (category.contains('fair')) { + return AppColors.warningColorYellow; + } + // Red: Very High, At High Risk + else if (category.contains('very high') || category.contains('at high risk')) { + return AppColors.errorColor; + } + // Orange: Risk, High (but not "very high" or "at high risk") + else if (category.contains('risk') || category.contains('high')) { + return AppColors.warningColor; + } + + return AppColors.successColor; // Default to green + } + + /// Get background color based on colorName from API (language-independent) + Color _getBackgroundFromColorNameOrCategory(ColorName? colorName, String? categoryLabel) { + // First priority: Use the colorName from API if available + if (colorName != null) { + return _getBackgroundColorFromColorName(colorName); + } + + // Fallback: Try to parse category label (for English) + if (categoryLabel == null) return AppColors.successLightColor.withValues(alpha: 0.1); + + final category = categoryLabel.toLowerCase().trim(); + + // Green: Low, Beneficial + if (category.contains('low') || category.contains('beneficial')) { + return AppColors.successLightColor.withValues(alpha: 0.1); + } + // Yellow: Fair + else if (category.contains('fair')) { + return AppColors.warningColorYellow.withValues(alpha: 0.1); + } + // Red: Very High, At High Risk + else if (category.contains('very high') || category.contains('at high risk')) { + return AppColors.errorLightColor.withValues(alpha: 0.1); + } + // Orange: Risk, High (but not "very high" or "at high risk") + else if (category.contains('risk') || category.contains('high')) { + return AppColors.warningLightColor.withValues(alpha: 0.1); + } + + return AppColors.successLightColor.withValues(alpha: 0.1); // Default to green + } + + IconData _getIconFromCategory(String? category) { + if (category == null) return Icons.wb_sunny_outlined; + + final lowerCategory = category.toLowerCase(); + if (lowerCategory.contains('walking') || lowerCategory.contains('activity')) { + return Icons.directions_walk; + } else if (lowerCategory.contains('weather') || lowerCategory.contains('temperature')) { + return Icons.thermostat_outlined; + } else if (lowerCategory.contains('elderly') || lowerCategory.contains('hiking')) { + return Icons.elderly; + } + return Icons.wb_sunny_outlined; + } + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, weatherVM, child) { + return Scaffold( + backgroundColor: AppColors.bgScaffoldColor, + body: CollapsingListView( + title: LocaleKeys.healthWeatherIndicators.tr(), + isLeading: widget.showBackIcon, + child: weatherVM.isLoading + ? _buildShimmerLoading() + : Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Reuse WeatherWidget at the top (without the button) + const WeatherWidget(showButton: false), + + SizedBox(height: 16.h), + + // Categories List (Sliders) + ...weatherVM.cityInfoList.map((cityInfo) { + return _buildCategoryCard( + description: cityInfo.name ?? '', + categoryLabel: cityInfo.category ?? '', + colorName: cityInfo.colorName, + color: _getColorFromColorNameOrCategory(cityInfo.colorName, cityInfo.category), + backgroundColor: _getBackgroundFromColorNameOrCategory(cityInfo.colorName, cityInfo.category), + icon: _getIconFromCategory(cityInfo.category), + ); + }), + + SizedBox(height: 24.h), + ], + ), + ), + ); + }, + ); + } + + Widget _buildCategoryCard({ + required String description, + required String categoryLabel, + required ColorName? colorName, + required Color color, + required Color backgroundColor, + required IconData icon, + }) { + return Container( + margin: EdgeInsets.only(bottom: 16.h), + padding: EdgeInsets.all(16.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 16.r, + hasShadow: false, + ), + child: Row( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Icon + Container( + width: 40.w, + height: 40.w, + decoration: BoxDecoration( + color: backgroundColor, + borderRadius: BorderRadius.circular(8.r), + ), + child: Icon( + icon, + color: color, + size: 24.w, + ), + ), + SizedBox(width: 12.w), + // Content + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + description.toText14( + isBold: true, + color: AppColors.textColor, + ), + SizedBox(height: 8.h), + // Progress bar + Container( + height: 4.h, + decoration: BoxDecoration( + color: AppColors.lightGrayBGColor, + borderRadius: BorderRadius.circular(2.r), + ), + child: FractionallySizedBox( + alignment: Alignment.centerLeft, + widthFactor: 0.7, + child: Container( + decoration: BoxDecoration( + color: color, + borderRadius: BorderRadius.circular(2.r), + ), + ), + ), + ), + ], + ), + ), + SizedBox(width: 12.w), + // Category Label + Container( + padding: EdgeInsets.symmetric(horizontal: 12.w, vertical: 6.h), + decoration: BoxDecoration( + color: backgroundColor, + borderRadius: BorderRadius.circular(8.r), + ), + child: categoryLabel.toText12( + color: color, + isBold: true, + maxLine: 1 + ), + ), + ], + ), + ).paddingSymmetrical(24.w, 0.w); + } + + Widget _buildShimmerLoading() { + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Weather Widget Shimmer + Shimmer.fromColors( + baseColor: AppColors.shimmerBaseColor, + highlightColor: AppColors.shimmerHighlightColor, + child: Container( + margin: EdgeInsets.symmetric(horizontal: 24.w), + padding: EdgeInsets.all(16.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 24.r, + hasShadow: false, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + width: 64.w, + height: 64.w, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(12.r), + ), + ), + SizedBox(width: 12.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: double.infinity, + height: 12.h, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(4.r), + ), + ), + SizedBox(height: 8.h), + Container( + width: 120.w, + height: 16.h, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(4.r), + ), + ), + SizedBox(height: 8.h), + Container( + width: 160.w, + height: 12.h, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(4.r), + ), + ), + ], + ), + ), + ], + ), + SizedBox(height: 16.h), + Container( + width: double.infinity, + height: 40.h, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(10.r), + ), + ), + ], + ), + ), + ), + SizedBox(height: 16.h), + + // Shimmer for category cards + ...List.generate(3, (index) { + return Shimmer.fromColors( + baseColor: AppColors.shimmerBaseColor, + highlightColor: AppColors.shimmerHighlightColor, + child: Container( + margin: EdgeInsets.only(bottom: 16.h, left: 24.w, right: 24.w), + padding: EdgeInsets.all(16.w), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 16.r, + hasShadow: false, + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Row( + children: [ + Container( + width: 40.w, + height: 40.w, + decoration: BoxDecoration( + color: AppColors.whiteColor, + shape: BoxShape.circle, + ), + ), + SizedBox(width: 12.w), + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + Container( + width: double.infinity, + height: 14.h, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(4.r), + ), + ), + SizedBox(height: 8.h), + Container( + width: 100.w, + height: 12.h, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(4.r), + ), + ), + ], + ), + ), + Container( + width: 60.w, + height: 24.h, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(8.r), + ), + ), + ], + ), + SizedBox(height: 12.h), + Container( + width: double.infinity, + height: 8.h, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(4.r), + ), + ), + ], + ), + ), + ); + }), + ], + ); + } +} + diff --git a/lib/routes/app_routes.dart b/lib/routes/app_routes.dart index 2d2cb217..e20cdf16 100644 --- a/lib/routes/app_routes.dart +++ b/lib/routes/app_routes.dart @@ -1,5 +1,7 @@ import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; +import 'package:hmg_patient_app_new/features/my_invoices/models/get_invoices_list_response_model.dart'; +import 'package:hmg_patient_app_new/features/refund_request/models/resp_models/refund_request_list_response_model.dart'; import 'package:hmg_patient_app_new/presentation/authentication/login.dart'; import 'package:hmg_patient_app_new/presentation/authentication/register.dart'; import 'package:hmg_patient_app_new/presentation/authentication/register_step2.dart'; @@ -10,6 +12,7 @@ import 'package:hmg_patient_app_new/presentation/comprehensive_checkup/comprehen import 'package:hmg_patient_app_new/presentation/covid19test/covid19_landing_page.dart'; import 'package:hmg_patient_app_new/presentation/e_referral/new_e_referral.dart'; import 'package:hmg_patient_app_new/presentation/emergency_services/emergency_services_page.dart'; +import 'package:hmg_patient_app_new/presentation/habib_wallet/withdraw_request_create_page.dart'; import 'package:hmg_patient_app_new/presentation/health_calculators_and_converts/health_calculators_page.dart'; import 'package:hmg_patient_app_new/presentation/health_trackers/add_health_tracker_entry_page.dart'; import 'package:hmg_patient_app_new/presentation/health_trackers/health_tracker_detail_page.dart'; @@ -18,8 +21,11 @@ import 'package:hmg_patient_app_new/presentation/home/app_update_page.dart'; import 'package:hmg_patient_app_new/presentation/home/navigation_screen.dart'; import 'package:hmg_patient_app_new/presentation/home_health_care/hhc_procedures_page.dart'; import 'package:hmg_patient_app_new/presentation/medical_file/medical_file_page.dart'; -import 'package:hmg_patient_app_new/presentation/servicesPriceList/services_price_list_page.dart'; -import 'package:hmg_patient_app_new/presentation/smartwatches/huawei_health_example.dart'; +import 'package:hmg_patient_app_new/presentation/my_family/my_family.dart'; +import 'package:hmg_patient_app_new/presentation/parking/paking_page.dart'; +import 'package:hmg_patient_app_new/presentation/refund_request/refund_request_create_page.dart'; +import 'package:hmg_patient_app_new/presentation/refund_request/refund_request_detail_screen.dart'; +import 'package:hmg_patient_app_new/presentation/service_price/services_price_list_page.dart'; import 'package:hmg_patient_app_new/presentation/smartwatches/smartwatch_home_page.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/organ_selector_screen.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/possible_conditions_screen.dart'; @@ -27,12 +33,14 @@ import 'package:hmg_patient_app_new/presentation/symptoms_checker/risk_factors_s import 'package:hmg_patient_app_new/presentation/symptoms_checker/suggestions_screen.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/symptoms_selector_screen.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/triage_screen.dart'; -import 'package:hmg_patient_app_new/presentation/symptoms_checker/user_info_selection.dart'; +import 'package:hmg_patient_app_new/presentation/symptoms_checker/user_consent_screen.dart'; import 'package:hmg_patient_app_new/presentation/symptoms_checker/user_info_selection/user_info_flow_manager.dart'; +import 'package:hmg_patient_app_new/presentation/symptoms_checker/user_info_selection_screen.dart'; import 'package:hmg_patient_app_new/presentation/tele_consultation/zoom/call_screen.dart'; import 'package:hmg_patient_app_new/presentation/vital_sign/vital_sign_page.dart'; import 'package:hmg_patient_app_new/presentation/water_monitor/water_consumption_page.dart'; import 'package:hmg_patient_app_new/presentation/water_monitor/water_monitor_settings_page.dart'; +import 'package:hmg_patient_app_new/presentation/weather/weather_details_page.dart'; import 'package:hmg_patient_app_new/splashPage.dart'; import 'package:provider/provider.dart'; @@ -40,8 +48,6 @@ import '../core/dependencies.dart'; import '../features/monthly_reports/monthly_reports_repo.dart'; import '../features/monthly_reports/monthly_reports_view_model.dart'; import '../features/qr_parking/qr_parking_view_model.dart'; -import '../presentation/parking/paking_page.dart'; -import '../presentation/smartwatches/smartwatch_instructions_page.dart'; import '../services/error_handler_service.dart'; class AppRoutes { @@ -80,6 +86,7 @@ class AppRoutes { static const String possibleConditionsPage = '/possibleConditionsScreen'; static const String triagePage = '/triageProgressScreen'; static const String userInfoSelection = '/userInfoSelection'; + static const String userConsentScreen = '/userConsentScreen'; static const String userInfoFlowManager = '/userInfoFlowManager'; static const String monthlyReports = '/monthlyReportsPage'; static const String qrParking = '/qrParkingPage'; @@ -95,6 +102,18 @@ class AppRoutes { // Services Price List static const String servicesPriceListPage = '/servicesPriceListPage'; + // Weather + static const String weatherDetailsPage = '/weatherDetailsPage'; + + // Weather + static const String familyFilesPage = '/familyFilesPage'; + + // Refund Request + static const String refundRequestCreatePage = '/refundRequestCreatePage'; + static const String createWithdrawRequest = '/createWithdrawRequest'; + static const String refundHistoryScreen = '/refundHistoryScreen'; + static const String refundRequestDetailScreen = '/refundRequestDetailScreen'; + static Map get routes => { initialRoute: (context) => SplashPage(), loginScreen: (context) => LoginScreen(), @@ -115,7 +134,8 @@ class AppRoutes { bloodDonationPage: (context) => BloodDonationPage(), myChildVaccine: (context) => MyChildVaccinePage(), bookAppointmentPage: (context) => BookAppointmentPage(), - userInfoSelection: (context) => UserInfoSelectionPage(), + userInfoSelection: (context) => UserInfoSelectionScreen(), + userConsentScreen: (context) => UserConsentScreen(), userInfoFlowManager: (context) => UserInfoFlowManager(), smartWatches: (context) => SmartwatchHomePage(), // huaweiHealthExample: (context) => HuaweiHealthExample(), @@ -131,6 +151,8 @@ class AppRoutes { ), emergencyServicesPage: (context) => EmergencyServicesPage(), servicesPriceListPage: (context) => ServicesPriceListPage(), + weatherDetailsPage: (context) => WeatherDetailsPage(), + familyFilesPage: (context) => FamilyMedicalScreen(), addHealthTrackerEntryPage: (context) { final args = ModalRoute.of(context)?.settings.arguments as HealthTrackerTypeEnum?; return AddHealthTrackerEntryPage( @@ -152,6 +174,17 @@ class AppRoutes { qrParking: (context) => ChangeNotifierProvider( create: (_) => getIt(), child: const ParkingPage(), - ) + ), + refundRequestCreatePage: (context) { + final args = ModalRoute.of(context)?.settings.arguments as GetInvoicesListResponseModel; + return RefundRequestCreatePage(invoice: args); + }, + createWithdrawRequest: (context) { + return WithdrawRequestCreatePage(); + }, + refundRequestDetailScreen: (context) { + final args = ModalRoute.of(context)?.settings.arguments as RefundInvoiceModel; + return RefundRequestDetailScreen(invoice: args); + }, }; } diff --git a/lib/services/app_lifecycle_service.dart b/lib/services/app_lifecycle_service.dart new file mode 100644 index 00000000..4a0dd947 --- /dev/null +++ b/lib/services/app_lifecycle_service.dart @@ -0,0 +1,78 @@ +import 'dart:async'; +import 'package:flutter/material.dart'; + +/// Service to monitor and track app lifecycle state changes +/// This helps detect when app goes to background/foreground +class AppLifecycleService with WidgetsBindingObserver { + final _stateController = StreamController.broadcast(); + + /// Stream of app lifecycle state changes + Stream get appStateStream => _stateController.stream; + + AppLifecycleState _currentState = AppLifecycleState.resumed; + + /// Current app lifecycle state + AppLifecycleState get currentState => _currentState; + + /// Check if app is currently active/visible + bool get isAppActive => _currentState == AppLifecycleState.resumed; + + /// Check if app is in background or inactive + bool get isAppInBackground => + _currentState == AppLifecycleState.paused || + _currentState == AppLifecycleState.inactive || + _currentState == AppLifecycleState.detached; + + /// Last time app was resumed + DateTime? _lastResumedTime; + DateTime? get lastResumedTime => _lastResumedTime; + + /// Last time app went to background + DateTime? _lastPausedTime; + DateTime? get lastPausedTime => _lastPausedTime; + + /// Duration app has been in current state + Duration get timeInCurrentState { + final referenceTime = _currentState == AppLifecycleState.resumed + ? _lastResumedTime + : _lastPausedTime; + + if (referenceTime == null) return Duration.zero; + return DateTime.now().difference(referenceTime); + } + + @override + void didChangeAppLifecycleState(AppLifecycleState state) { + _currentState = state; + + // Track timing + if (state == AppLifecycleState.resumed) { + _lastResumedTime = DateTime.now(); + debugPrint('📱 App RESUMED'); + } else if (state == AppLifecycleState.paused) { + _lastPausedTime = DateTime.now(); + debugPrint('📱 App PAUSED/BACKGROUNDED'); + } else if (state == AppLifecycleState.inactive) { + debugPrint('📱 App INACTIVE'); + } else if (state == AppLifecycleState.detached) { + debugPrint('📱 App DETACHED'); + } + + _stateController.add(state); + } + + /// Initialize the lifecycle observer + void initialize() { + WidgetsBinding.instance.addObserver(this); + debugPrint('📱 AppLifecycleService initialized'); + } + + /// Clean up resources + void dispose() { + WidgetsBinding.instance.removeObserver(this); + _stateController.close(); + debugPrint('📱 AppLifecycleService disposed'); + } +} + + diff --git a/lib/services/clarity_service.dart b/lib/services/clarity_service.dart new file mode 100644 index 00000000..e8600821 --- /dev/null +++ b/lib/services/clarity_service.dart @@ -0,0 +1,291 @@ +import 'package:clarity_flutter/clarity_flutter.dart'; +import 'package:flutter/foundation.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; + +/// Centralized service for Clarity tracking and analytics +/// Provides methods for tracking user actions, errors, and app state +class ClarityService { + final AppState _appState; + + ClarityService({required AppState appState}) : _appState = appState; + + /// Initialize Clarity with user context + void setUserContext() { + if (kDebugMode) return; // Skip in debug mode + + try { + if (_appState.isAuthenticated) { + final user = _appState.getAuthenticatedUser(); + if (user != null) { + // Set user ID + Clarity.setCustomUserId(user.patientId.toString()); + + // Set user segments for filtering + Clarity.setCustomTag('user_type', user.patientType?.toString() ?? 'unknown'); + Clarity.setCustomTag('user_segment', user.outSa == 0 ? 'in_sa' : 'out_sa'); + Clarity.setCustomTag('auth_status', 'authenticated'); + } + } else { + Clarity.setCustomTag('auth_status', 'guest'); + } + } catch (e) { + debugPrint('Failed to set Clarity user context: $e'); + } + } + + /// Track screen views / route changes + void trackScreenView(String screenName, {Map? properties}) { + if (kDebugMode) return; + + try { + Clarity.setCustomTag('current_screen', _truncate(screenName, 100)); + + if (properties != null) { + properties.forEach((key, value) { + Clarity.setCustomTag(key, _truncate(value, 250)); + }); + } + + Clarity.sendCustomEvent('screen_view_$screenName'); + } catch (e) { + debugPrint('Failed to track screen view: $e'); + } + } + + /// Track user actions (button clicks, form submissions, etc.) + void trackAction(String actionName, {Map? properties}) { + if (kDebugMode) return; + + try { + Clarity.setCustomTag('action_name', _truncate(actionName, 100)); + + if (properties != null) { + properties.forEach((key, value) { + Clarity.setCustomTag('action_$key', _truncate(value, 250)); + }); + } + + Clarity.sendCustomEvent('user_action_$actionName'); + } catch (e) { + debugPrint('Failed to track action: $e'); + } + } + + /// Track API calls with success/failure + void trackApiCall({ + required String endpoint, + required String method, + required bool isSuccess, + int? statusCode, + String? errorType, + String? errorMessage, + }) { + if (kDebugMode) return; + + try { + final eventType = isSuccess ? 'api_success' : 'api_failure'; + + Clarity.setCustomTag('api_endpoint', _getEndpointName(endpoint)); + Clarity.setCustomTag('api_method', method); + Clarity.setCustomTag('api_status', isSuccess ? 'success' : 'failure'); + + if (statusCode != null) { + Clarity.setCustomTag('api_status_code', statusCode.toString()); + } + + if (errorType != null) { + Clarity.setCustomTag('api_error_type', _truncate(errorType, 100)); + } + + if (errorMessage != null) { + Clarity.setCustomTag('api_error_msg', _truncate(errorMessage, 250)); + } + + if (_appState.isAuthenticated) { + Clarity.setCustomTag('api_user_id', _appState.getAuthenticatedUser()!.patientId.toString()); + } + + Clarity.sendCustomEvent(eventType); + } catch (e) { + debugPrint('Failed to track API call: $e'); + } + } + + /// Track app errors and exceptions + void trackError({ + required String errorType, + required String errorMessage, + String? stackTrace, + bool isFatal = false, + Map? additionalContext, + }) { + if (kDebugMode) return; + + try { + Clarity.setCustomTag('error_type', _truncate(errorType, 100)); + Clarity.setCustomTag('error_fatal', isFatal.toString()); + Clarity.setCustomTag('error_message', _truncate(errorMessage, 250)); + + if (stackTrace != null) { + // Only send first 250 chars of stack trace + Clarity.setCustomTag('error_stack', _truncate(stackTrace, 250)); + } + + if (additionalContext != null) { + additionalContext.forEach((key, value) { + Clarity.setCustomTag('error_$key', _truncate(value, 250)); + }); + } + + if (_appState.isAuthenticated) { + Clarity.setCustomTag('error_user_id', _appState.getAuthenticatedUser()!.patientId.toString()); + } + + Clarity.sendCustomEvent(isFatal ? 'app_fatal_error' : 'app_error'); + } catch (e) { + debugPrint('Failed to track error: $e'); + } + } + + /// Track user frustration events (rage clicks, dead clicks) + void trackFrustration({ + required String frustrationType, + required String elementLabel, + Map? context, + }) { + if (kDebugMode) return; + + try { + Clarity.setCustomTag('frustration_type', frustrationType); + Clarity.setCustomTag('frustration_element', _truncate(elementLabel, 100)); + + if (context != null) { + context.forEach((key, value) { + Clarity.setCustomTag('frustration_$key', _truncate(value, 250)); + }); + } + + Clarity.sendCustomEvent('user_frustration_$frustrationType'); + } catch (e) { + debugPrint('Failed to track frustration: $e'); + } + } + + /// Track feature usage + void trackFeatureUsage(String featureName, {Map? metadata}) { + if (kDebugMode) return; + + try { + Clarity.setCustomTag('feature_name', _truncate(featureName, 100)); + + if (metadata != null) { + metadata.forEach((key, value) { + Clarity.setCustomTag('feature_$key', _truncate(value, 250)); + }); + } + + if (_appState.isAuthenticated) { + Clarity.setCustomTag('feature_user_id', _appState.getAuthenticatedUser()!.patientId.toString()); + } + + Clarity.sendCustomEvent('feature_used_$featureName'); + } catch (e) { + debugPrint('Failed to track feature usage: $e'); + } + } + + /// Track payment events + void trackPayment({ + required String paymentStatus, + String? paymentMethod, + String? amount, + String? transactionId, + }) { + if (kDebugMode) return; + + try { + Clarity.setCustomTag('payment_status', paymentStatus); + + if (paymentMethod != null) { + Clarity.setCustomTag('payment_method', paymentMethod); + } + + if (amount != null) { + Clarity.setCustomTag('payment_amount', amount); + } + + if (transactionId != null) { + Clarity.setCustomTag('payment_tx_id', _truncate(transactionId, 100)); + } + + if (_appState.isAuthenticated) { + Clarity.setCustomTag('payment_user_id', _appState.getAuthenticatedUser()!.patientId.toString()); + } + + Clarity.sendCustomEvent('payment_$paymentStatus'); + } catch (e) { + debugPrint('Failed to track payment: $e'); + } + } + + /// Track appointment booking flow + void trackAppointmentEvent({ + required String eventType, + String? doctorId, + String? clinicId, + String? appointmentDate, + }) { + if (kDebugMode) return; + + try { + Clarity.setCustomTag('appointment_event', eventType); + + if (doctorId != null) { + Clarity.setCustomTag('appointment_doctor', doctorId); + } + + if (clinicId != null) { + Clarity.setCustomTag('appointment_clinic', clinicId); + } + + if (appointmentDate != null) { + Clarity.setCustomTag('appointment_date', appointmentDate); + } + + if (_appState.isAuthenticated) { + Clarity.setCustomTag('appointment_user_id', _appState.getAuthenticatedUser()!.patientId.toString()); + } + + Clarity.sendCustomEvent('appointment_$eventType'); + } catch (e) { + debugPrint('Failed to track appointment event: $e'); + } + } + + /// Clear user context on logout + void clearUserContext() { + if (kDebugMode) return; + + try { + Clarity.setCustomTag('auth_status', 'guest'); + Clarity.setCustomTag('user_action', 'logout'); + Clarity.sendCustomEvent('user_logged_out'); + } catch (e) { + debugPrint('Failed to clear Clarity user context: $e'); + } + } + + /// Helper: Truncate string to fit Clarity's limits + String _truncate(String text, int maxLength) { + if (text.length <= maxLength) return text; + return '...${text.substring(text.length - (maxLength - 3))}'; + } + + /// Helper: Extract endpoint name from full URL + String _getEndpointName(String endpoint) { + final cleanEndpoint = endpoint.split('/').last; + return _truncate(cleanEndpoint, 100); + } +} + + diff --git a/lib/services/dialog_service.dart b/lib/services/dialog_service.dart index c4dfb7c4..ac7acf9e 100644 --- a/lib/services/dialog_service.dart +++ b/lib/services/dialog_service.dart @@ -23,7 +23,7 @@ abstract class DialogService { Future showExceptionBottomSheet({required String message, required Function() onOkPressed, Function()? onCancelPressed}); - Future showCommonBottomSheetWithoutH({String? label, required String message, String? okLabel, String? cancelLabel, required Function() onOkPressed, Function()? onCancelPressed}); + Future showCommonBottomSheetWithoutH({String? label, required String message, String? okLabel, String? cancelLabel, bool isConfirmButton = false, required Function() onOkPressed, Function()? onCancelPressed}); Future showSuccessBottomSheetWithoutH({String? label, required String message, required Function() onOkPressed, Function()? onCancelPressed}); @@ -119,7 +119,7 @@ class DialogServiceImp implements DialogService { } @override - Future showCommonBottomSheetWithoutH({String? label, required String message, String? okLabel, String? cancelLabel, required Function() onOkPressed, Function()? onCancelPressed}) async { + Future showCommonBottomSheetWithoutH({String? label, required String message, String? okLabel, String? cancelLabel, bool isConfirmButton = false, required Function() onOkPressed, Function()? onCancelPressed}) async { final context = navigationService.navigatorKey.currentContext; if (context == null) return; showCommonBottomSheetWithoutHeight( @@ -132,6 +132,7 @@ class DialogServiceImp implements DialogService { cancelLabel: cancelLabel, onOkPressed: onOkPressed, onCancelPressed: onCancelPressed, + isConfirmButton: isConfirmButton ), callBackFunc: () {}, ); @@ -166,7 +167,7 @@ class DialogServiceImp implements DialogService { mainAxisAlignment: MainAxisAlignment.start, children: [ if (message != null) (message).toText16(isBold: false, color: AppColors.textColor), - SizedBox(height: 24.h), + // SizedBox(height: 24.h), FamilyCards( profiles: profiles, onSelect: (FamilyFileResponseModelLists profile) { @@ -190,6 +191,7 @@ class DialogServiceImp implements DialogService { }) ], ), + useSafeArea: true, callBackFunc: () {}); } @@ -238,7 +240,7 @@ class DialogServiceImp implements DialogService { } } -Widget exceptionBottomSheetWidget({required BuildContext context, required String message, String? okLabel, String? cancelLabel, required Function() onOkPressed, Function()? onCancelPressed}) { +Widget exceptionBottomSheetWidget({required BuildContext context, required String message, String? okLabel, String? cancelLabel, bool isConfirmButton = false, required Function() onOkPressed, Function()? onCancelPressed}) { return Column( children: [ (message).toText16(isBold: false, color: AppColors.textColor), @@ -266,7 +268,7 @@ Widget exceptionBottomSheetWidget({required BuildContext context, required Strin text: okLabel ?? LocaleKeys.confirm.tr(context: context), onPressed: onOkPressed, backgroundColor: AppColors.bgGreenColor, - borderColor: AppColors.bgGreenColor, + borderColor: AppColors.successColor, textColor: Colors.white, icon: AppAssets.confirm, ), @@ -283,8 +285,9 @@ Widget exceptionBottomSheetWidget({required BuildContext context, required Strin context.pop(); } : onCancelPressed, - backgroundColor: AppColors.primaryRedColor, - borderColor: AppColors.primaryRedBorderColor, + // backgroundColor: AppColors.primaryRedColor, + backgroundColor: isConfirmButton ? AppColors.successColor : AppColors.primaryRedColor, + borderColor: isConfirmButton ? AppColors.successColor : AppColors.primaryRedColor, textColor: Colors.white, icon: AppAssets.confirm, ), diff --git a/lib/services/error_handler_service.dart b/lib/services/error_handler_service.dart index bda17275..1e37bb17 100644 --- a/lib/services/error_handler_service.dart +++ b/lib/services/error_handler_service.dart @@ -8,7 +8,8 @@ import 'package:hmg_patient_app_new/services/logger_service.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; abstract class ErrorHandlerService { - Future handleError({required Failure failure, Function() onOkPressed, Function(Failure)? onUnHandledFailure, Function(Failure)? onMessageStatusFailure}); + Future handleError( + {required Failure failure, Function() onOkPressed, Function(Failure)? onUnHandledFailure, Function(Failure)? onMessageStatusFailure}); } class ErrorHandlerServiceImp implements ErrorHandlerService { @@ -23,7 +24,8 @@ class ErrorHandlerServiceImp implements ErrorHandlerService { }); @override - Future handleError({required Failure failure, Function()? onOkPressed, Function(Failure)? onUnHandledFailure, Function(Failure)? onMessageStatusFailure}) async { + Future handleError( + {required Failure failure, Function()? onOkPressed, Function(Failure)? onUnHandledFailure, Function(Failure)? onMessageStatusFailure}) async { if (failure is APIException) { loggerService.logError("API Exception: ${failure.message}"); } else if (failure is ServerFailure) { @@ -37,7 +39,7 @@ class ErrorHandlerServiceImp implements ErrorHandlerService { await _showDialog(failure, title: "StatusCodeFailure"); } else if (failure is ConnectivityFailure) { loggerService.logError("ConnectivityFailure : ${failure.message}"); - await _showDialog(failure, title: "ConnectivityFailure ", onOkPressed: () {}); + await _showDialog(failure, title: "ConnectivityFailure "); } else if (failure is UnAuthenticatedUserFailure) { loggerService.logError("URL: ${failure.url} \n UnAuthenticatedUser Failure: ${failure.message}"); await _showDialog(failure, title: "UnAuthenticatedUser Failure", onOkPressed: () => navigationService.replaceAllRoutesAndNavigateToLanding()); diff --git a/lib/services/livecare_permission_service.dart b/lib/services/livecare_permission_service.dart index a9a5d294..bc5f2eef 100644 --- a/lib/services/livecare_permission_service.dart +++ b/lib/services/livecare_permission_service.dart @@ -1,4 +1,5 @@ import 'dart:async'; +import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; @@ -17,7 +18,7 @@ class LiveCarePermissionService { /// Requests camera, microphone and notification permissions together and /// returns the final map of permission statuses. /// This method does NOT show any dialogs — UI decisions must be done by caller. - Future> requestCameraMicAndNotification(BuildContext context) async { + Future> requestCameraMicAndNotification(bool isCheckCameraMicPermissions, BuildContext context) async { if (_ongoingRequest != null) { return _ongoingRequest!.future; } @@ -25,10 +26,18 @@ class LiveCarePermissionService { _ongoingRequest = Completer>(); final completer = _ongoingRequest!; - final permissions = [ - Permission.camera, + final permissions = isCheckCameraMicPermissions + ? [ + Permission.camera, Permission.microphone, - Permission.notification, + Permission.notification, + if (Platform.isAndroid) Permission.systemAlertWindow, + ] + : [ + // Permission.camera, + // Permission.microphone, + Permission.notification, + if (Platform.isAndroid) Permission.systemAlertWindow, ]; try { @@ -87,6 +96,7 @@ class LiveCarePermissionService { if (permission == Permission.camera) return 'Camera'; if (permission == Permission.microphone) return 'Microphone'; if (permission == Permission.notification) return 'Notifications'; + if (permission == Permission.systemAlertWindow) return 'Display over other apps'; return permission.toString(); } } diff --git a/lib/services/navigation_service.dart b/lib/services/navigation_service.dart index da4a75b9..a83d4e3d 100644 --- a/lib/services/navigation_service.dart +++ b/lib/services/navigation_service.dart @@ -25,6 +25,7 @@ class NavigationService { navigatorKey.currentState?.popUntil(ModalRoute.withName(routeName)); } + void replaceAllRoutesAndNavigateToLanding() { AppState appState = getIt.get(); appState.isAuthenticated = false; @@ -34,6 +35,13 @@ class NavigationService { ); } + Future replaceAllRoutesAndNavigateToLandingWithMedicalAuth() async { + navigatorKey.currentState?.pushNamedAndRemoveUntil( + AppRoutes.landingScreen, + (Route route) => false, + ); + } + void replaceAllRoutesAndNavigateToLandingAuth() { navigatorKey.currentState?.pushNamedAndRemoveUntil( AppRoutes.landingScreen, @@ -50,17 +58,10 @@ class NavigationService { } Future pushToOtpScreen( - {required String phoneNumber, - required Function(int code) checkActivationCode, - required Function(String phoneNumber) onResendOTPPressed, - bool isFormFamilyFile = false}) { + {required String phoneNumber, required String zipCode, required Function(int code) checkActivationCode, required Function(String phoneNumber, String zipCode) onResendOTPPressed, bool isFormFamilyFile = false}) { return navigatorKey.currentState!.push( MaterialPageRoute( - builder: (_) => OTPVerificationScreen( - phoneNumber: phoneNumber, - checkActivationCode: checkActivationCode, - onResendOTPPressed: onResendOTPPressed, - isFormFamilyFile: isFormFamilyFile)), + builder: (_) => OTPVerificationScreen(phoneNumber: phoneNumber, zipCode: zipCode, checkActivationCode: checkActivationCode, onResendOTPPressed: onResendOTPPressed, isFormFamilyFile: isFormFamilyFile)), ); } diff --git a/lib/services/permission_service.dart b/lib/services/permission_service.dart index 62872340..5f749af8 100644 --- a/lib/services/permission_service.dart +++ b/lib/services/permission_service.dart @@ -1,9 +1,12 @@ -import 'package:flutter/material.dart'; +import 'dart:io'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:flutter/material.dart'; import 'package:permission_handler/permission_handler.dart'; - -// import 'package:vibration/vibration.dart'; import 'package:geolocator/geolocator.dart' as geo; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; class PermissionService { // final LocalStorage storage = new LocalStorage("permission"); @@ -73,6 +76,206 @@ class PermissionService { openAppSettings(); } + /// Check and request camera permission with proper dialog handling + /// Returns true if permission is granted, false otherwise + Future checkCameraPermission(BuildContext context) async { + try { + print('=== Checking camera permission ==='); + + // First check current status + PermissionStatus currentStatus = await Permission.camera.status; + print('Current camera permission status: $currentStatus'); + + // If already granted, return true + if (currentStatus.isGranted) { + print('✅ Camera permission already granted'); + return true; + } + + // If denied or permanently denied, show settings dialog + if (currentStatus.isDenied || currentStatus.isPermanentlyDenied) { + // Request permission first + PermissionStatus newStatus = await Permission.camera.request(); + print('Camera permission after request: $newStatus'); + + if (newStatus.isGranted) { + print('✅ Camera permission granted'); + return true; + } + + // Still denied - show settings dialog + print('⚠️ Camera permission denied - showing settings dialog'); + if (context.mounted) { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.cameraPermissionMessage.tr(context: context), + isShowActionButtons: true, + onCancelTap: () { + Navigator.pop(context); + }, + onConfirmTap: () async { + openAppSettings(); + }, + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + return false; + } + + // Request permission for the first time + PermissionStatus newStatus = await Permission.camera.request(); + print('Camera permission after request: $newStatus'); + + if (newStatus.isGranted) { + print('✅ Camera permission granted'); + return true; + } + + // Denied - show settings dialog + print('❌ Camera permission denied - showing settings dialog'); + if (context.mounted) { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.cameraPermissionMessage.tr(context: context), + isShowActionButtons: true, + onCancelTap: () { + Navigator.pop(context); + }, + onConfirmTap: () async { + openAppSettings(); + }, + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + return false; + } catch (e) { + print('❌ Error checking camera permission: $e'); + if (context.mounted) { + Utils.showToast( + LocaleKeys.failedToCheckPermissions.tr(context: context), + ); + } + return false; + } + } + + /// Check and request gallery/photos permission with proper dialog handling + /// Returns true if permission is granted, false otherwise + Future checkGalleryPermission(BuildContext context) async { + try { + print('=== Checking gallery permission ==='); + + // For Android 13+ (API 33+), the Android Photo Picker handles permissions internally + // No need to request READ_MEDIA_IMAGES or READ_EXTERNAL_STORAGE permissions + // Determine which permission to check based on platform and Android version + Permission galleryPermission; + + if (Platform.isIOS) { + galleryPermission = Permission.photos; + } else { + // Android: use photos permission which handles API level differences automatically + print('✅ Android Photo Picker will handle permissions internally'); + return true; + } + + // First check current status + PermissionStatus currentStatus = await galleryPermission.status; + print('Current gallery permission status: $currentStatus'); + + // If already granted, return true + if (currentStatus.isGranted || currentStatus.isLimited) { + print('✅ Gallery permission already granted'); + return true; + } + + // If denied or permanently denied, request permission first + if (currentStatus.isDenied || currentStatus.isPermanentlyDenied) { + // Request permission first + PermissionStatus newStatus = await galleryPermission.request(); + print('Gallery permission after request: $newStatus'); + + if (newStatus.isGranted || newStatus.isLimited) { + print('✅ Gallery permission granted'); + return true; + } + + // Still denied - show settings dialog + print('⚠️ Gallery permission denied - showing settings dialog'); + if (context.mounted) { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.galleryPermissionMessage.tr(context: context), + isShowActionButtons: true, + onCancelTap: () { + Navigator.pop(context); + }, + onConfirmTap: () async { + Navigator.pop(context); + openAppSettings(); + }, + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + return false; + } + + // Request permission for the first time + PermissionStatus newStatus = await galleryPermission.request(); + print('Gallery permission after request: $newStatus'); + + if (newStatus.isGranted || newStatus.isLimited) { + print('✅ Gallery permission granted'); + return true; + } + + // Denied - show settings dialog + print('❌ Gallery permission denied - showing settings dialog'); + if (context.mounted) { + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.notice.tr(context: context), + context, + child: Utils.getWarningWidget( + loadingText: LocaleKeys.galleryPermissionMessage.tr(context: context), + isShowActionButtons: true, + onCancelTap: () { + Navigator.pop(context); + }, + onConfirmTap: () async { + openAppSettings(); + }, + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + return false; + } catch (e) { + print('❌ Error checking gallery permission: $e'); + if (context.mounted) { + Utils.showToast( + LocaleKeys.failedToCheckPermissions.tr(context: context), + ); + } + return false; + } + } + static isLocationEnabled() async { var permission = await geo.Geolocator.checkPermission(); if (permission == geo.LocationPermission.denied) { diff --git a/lib/services/prescription_reminder_prefs_service.dart b/lib/services/prescription_reminder_prefs_service.dart new file mode 100644 index 00000000..6c732e60 --- /dev/null +++ b/lib/services/prescription_reminder_prefs_service.dart @@ -0,0 +1,142 @@ +import 'dart:convert'; +import 'package:shared_preferences/shared_preferences.dart'; + +/// Represents the reminder status for a single prescription item, +/// identified by AppointmentNo, ItemDescription, ItemID & ProjectID. +class PrescriptionReminderEntry { + final num appointmentNo; + final String itemDescription; + final num itemID; + final num projectID; + bool hasReminder; + + PrescriptionReminderEntry({ + required this.appointmentNo, + required this.itemDescription, + required this.itemID, + required this.projectID, + required this.hasReminder, + }); + + factory PrescriptionReminderEntry.fromJson(Map json) { + return PrescriptionReminderEntry( + appointmentNo: json['appointmentNo'] ?? 0, + itemDescription: json['itemDescription'] ?? '', + itemID: json['itemID'] ?? 0, + projectID: json['projectID'] ?? 0, + hasReminder: json['hasReminder'] ?? false, + ); + } + + Map toJson() => { + 'appointmentNo': appointmentNo, + 'itemDescription': itemDescription, + 'itemID': itemID, + 'projectID': projectID, + 'hasReminder': hasReminder, + }; + + /// Unique key to identify this prescription item. + String get uniqueKey => '${appointmentNo}_${itemID}_${projectID}'; +} + +/// Service to manage prescription reminder statuses in SharedPreferences. +/// All entries are stored under the single key [prescriptionRemindersKey]. +class PrescriptionReminderPrefsService { + static const String prescriptionRemindersKey = 'PrescriptionReminders'; + + static PrescriptionReminderPrefsService? _instance; + static PrescriptionReminderPrefsService get instance { + _instance ??= PrescriptionReminderPrefsService._(); + return _instance!; + } + + PrescriptionReminderPrefsService._(); + + /// Reads all reminder entries from SharedPreferences. + Future> getAllReminders() async { + final prefs = await SharedPreferences.getInstance(); + final jsonString = prefs.getString(prescriptionRemindersKey); + if (jsonString == null || jsonString.isEmpty) return []; + try { + final List jsonList = json.decode(jsonString); + return jsonList + .map((e) => PrescriptionReminderEntry.fromJson(e as Map)) + .toList(); + } catch (_) { + return []; + } + } + + /// Saves the full list of reminder entries to SharedPreferences. + Future _saveAllReminders(List entries) async { + final prefs = await SharedPreferences.getInstance(); + final jsonString = json.encode(entries.map((e) => e.toJson()).toList()); + await prefs.setString(prescriptionRemindersKey, jsonString); + } + + /// Returns the reminder status for a specific item. + /// Returns null if no entry exists for this item. + Future getReminderStatus({ + required num appointmentNo, + required num itemID, + required num projectID, + }) async { + final entries = await getAllReminders(); + final key = '${appointmentNo}_${itemID}_${projectID}'; + try { + final entry = entries.firstWhere((e) => e.uniqueKey == key); + return entry.hasReminder; + } catch (_) { + return null; + } + } + + /// Saves or updates the reminder status for a specific prescription item. + Future setReminderStatus({ + required num appointmentNo, + required String itemDescription, + required num itemID, + required num projectID, + required bool hasReminder, + }) async { + final entries = await getAllReminders(); + final key = '${appointmentNo}_${itemID}_${projectID}'; + final existingIndex = entries.indexWhere((e) => e.uniqueKey == key); + + if (existingIndex != -1) { + // Update existing entry + entries[existingIndex].hasReminder = hasReminder; + } else { + // Add new entry + entries.add(PrescriptionReminderEntry( + appointmentNo: appointmentNo, + itemDescription: itemDescription, + itemID: itemID, + projectID: projectID, + hasReminder: hasReminder, + )); + } + + await _saveAllReminders(entries); + } + + /// Removes a specific reminder entry from SharedPreferences. + Future removeReminderEntry({ + required num appointmentNo, + required num itemID, + required num projectID, + }) async { + final entries = await getAllReminders(); + final key = '${appointmentNo}_${itemID}_${projectID}'; + entries.removeWhere((e) => e.uniqueKey == key); + await _saveAllReminders(entries); + } + + /// Clears all prescription reminder entries from SharedPreferences. + Future clearAllReminders() async { + final prefs = await SharedPreferences.getInstance(); + await prefs.remove(prescriptionRemindersKey); + } +} + diff --git a/lib/splashPage.dart b/lib/splashPage.dart index 657da361..b2fd7cdc 100644 --- a/lib/splashPage.dart +++ b/lib/splashPage.dart @@ -1,13 +1,17 @@ import 'dart:async'; +import 'dart:io'; +import 'package:clarity_flutter/clarity_flutter.dart'; +import 'package:flutter/foundation.dart'; import 'package:flutter/material.dart'; import 'package:flutter_callkit_incoming/entities/call_event.dart'; import 'package:flutter_callkit_incoming/flutter_callkit_incoming.dart'; -// import 'package:flutter_zoom_videosdk/native/zoom_videosdk.dart'; import 'package:get_it/get_it.dart'; +import 'package:hmg_patient_app_new/core/api/api_client.dart'; import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; @@ -27,7 +31,6 @@ import 'package:lottie/lottie.dart'; import 'core/cache_consts.dart'; import 'core/utils/push_notification_handler.dart'; - class SplashPage extends StatefulWidget { const SplashPage({super.key}); @@ -47,7 +50,6 @@ class _SplashScreenState extends State { PushNotificationHandler().init(context); // Asyncronously }, ); - // TODO: This next line should be tested. This stops the app at this step, sometimes await authVm.getServicePrivilege(); Timer(Duration(seconds: 2, milliseconds: 500), () async { bool isAppOpenedFromCall = getIt.get().getBool(key: CacheConst.isAppOpenedFromCall) ?? false; @@ -57,7 +59,13 @@ class _SplashScreenState extends State { await notificationService.initialize(onNotificationClick: (payload) { // Handle notification click here }); + ZoomService().initializeZoomSDK(); + + if (!kDebugMode) { + _initializeClarity(); + } + if (isAppOpenedFromCall) { navigateToTeleConsult(); } else { @@ -78,23 +86,71 @@ class _SplashScreenState extends State { // zoom.initSdk(initConfig); } + void _initializeClarity() { + final config = ClarityConfig( + projectId: "x0qgorlez4", // You can find it on the Settings page of Clarity dashboard. + logLevel: LogLevel.Error, // Optional: Set the log level (Verbose, Debug, Info, Warning, Error, None) + ); + + Clarity.initialize(context, config); + + // Set initial app context tags + try { + final appState = getIt.get(); + + // Set device and app metadata + Clarity.setCustomTag('app_version', ApiConsts.appVersionID.toString()); + Clarity.setCustomTag('device_type', appState.deviceTypeID ?? 'unknown'); + Clarity.setCustomTag('platform', Platform.isIOS ? 'ios' : 'android'); + + // Set user context if authenticated + if (appState.isAuthenticated) { + final user = appState.getAuthenticatedUser(); + if (user != null) { + // Set user ID for session tracking + Clarity.setCustomUserId(user.patientId.toString()); + + // Set custom tags for filtering sessions + Clarity.setCustomTag('user_type', user.patientType?.toString() ?? 'unknown'); + Clarity.setCustomTag('user_segment', user.outSa == 0 ? 'in_sa' : 'out_sa'); + Clarity.setCustomTag('auth_status', 'authenticated'); + + // Optional: Set other non-sensitive user properties + if (user.mobileNumber != null) { + // Mask phone number for privacy (show only last 4 digits) + final maskedPhone = '***${user.mobileNumber!.substring(user.mobileNumber!.length - 4)}'; + Clarity.setCustomTag('user_phone_masked', maskedPhone); + } + } + } else { + Clarity.setCustomTag('auth_status', 'guest'); + } + + // Send initialization event + Clarity.sendCustomEvent('app_initialized'); + + } catch (e) { + debugPrint('Failed to set Clarity user context: $e'); + } + } + navigateToTeleConsult() async { String roomID = await Utils.getStringFromPrefs(CacheConst.zoomRoomID); - print('RoomID: $roomID'); + String callTypeID = await Utils.getStringFromPrefs(CacheConst.callTypeID); // GetIt.instance().remove(key: CacheConst.isAppOpenedFromCall); Utils.removeFromPrefs(CacheConst.isAppOpenedFromCall); Navigator.of(GetIt.instance().navigatorKey.currentContext!) .pushReplacement(FadePage(page: SplashAnimationScreen(routeWidget: LandingNavigation()))); - // Navigator.pushReplacementNamed( - // // context, - // GetIt.instance().navigatorKey.currentContext!, - // AppRoutes.zoomCallPage, - // // arguments: CallArguments(appointmentID, "111", "Patient", "40", "1", true, 1), - // arguments: CallArguments(roomID, "123", "Patient", "40", "0", true, 1), - // // arguments: CallArguments("SmallDailyStandup9875", "123", "Patient", "40", "0", false, int.parse(widget.incomingCallData!.appointmentNo!)), - // ); + Navigator.pushReplacementNamed( + // context, + GetIt.instance().navigatorKey.currentContext!, + AppRoutes.zoomCallPage, + // arguments: CallArguments(appointmentID, "111", "Patient", "40", "1", true, 1), + arguments: CallArguments(roomID, "123", "Patient", "40", "0", true, int.parse(callTypeID)), + // arguments: CallArguments("SmallDailyStandup9875", "123", "Patient", "40", "0", false, int.parse(widget.incomingCallData!.appointmentNo!)), + ); } Future listenerEvent() async { @@ -114,6 +170,18 @@ class _SplashScreenState extends State { print('actionCallAccept Event Received: ------->'); FlutterCallkitIncoming.endAllCalls(); try { + // Get callTypeID and roomID from event's extra data + String? eventCallTypeID = event.body['extra']?['callTypeID']; + String? eventRoomID = event.body['extra']?['roomID']; + + // Re-save to SharedPreferences to ensure they're available + if (eventCallTypeID != null && eventCallTypeID.isNotEmpty) { + await Utils.saveStringFromPrefs(CacheConst.callTypeID, eventCallTypeID); + } + if (eventRoomID != null && eventRoomID.isNotEmpty) { + await Utils.saveStringFromPrefs(CacheConst.zoomRoomID, eventRoomID); + } + navigateToTeleConsult(); // String roomID = await Utils.getStringFromPrefs(SharedPrefsConsts.ZOOM_ROOM_ID); // String roomPass = await Utils.getStringFromPrefs(SharedPrefsConsts.ZOOM_ROOM_PASS); @@ -169,9 +237,35 @@ class _SplashScreenState extends State { } break; case Event.actionCallDecline: - print('actionCallConnected Event Received: ------->'); + print('actionCallDecline Event Received: ------->'); + + // Try to get session ID from event data first + String? sessionIdFromEvent = event.body['extra']?['roomID']; + + // Get session ID from cache as backup + String sessionIdFromCache = await Utils.getStringFromPrefs(CacheConst.zoomRoomID); + + // Use event data if available, otherwise use cache + String sessionId = (sessionIdFromEvent != null && sessionIdFromEvent.isNotEmpty) ? sessionIdFromEvent : sessionIdFromCache; + + print('🔍 Session ID from event: "$sessionIdFromEvent"'); + print('🔍 Session ID from cache: "$sessionIdFromCache"'); + print('🔍 Final session ID to use: "$sessionId"'); + + // Update session status to 3 (declined by patient) + if (sessionId.isNotEmpty) { + print('✅ Session ID found, calling API...'); + await _updateSessionStatus(sessionId, 3, 'Patient'); + } else { + print('⚠️ Session ID is empty, skipping API call'); + } + await FlutterCallkitIncoming.endAllCalls(); GetIt.instance().remove(key: CacheConst.isAppOpenedFromCall); + + // Clear cache + await Utils.saveStringFromPrefs(CacheConst.zoomRoomID, ''); + await Utils.saveStringFromPrefs(CacheConst.callTypeID, ''); break; case Event.actionCallEnded: break; @@ -207,20 +301,31 @@ class _SplashScreenState extends State { /// load the Privilege from service Future loadPrivilege() async { - // ProjectViewModel projectProvider = Provider.of(context, listen: false); - // projectProvider.setPrivilegeModelList(privilege: _privilegeService.privilegeModelList); - // projectProvider.setVidaPlusProjectList(_privilegeService.vidaPlusProjectListModel); - // projectProvider.setHMCProjectList(_privilegeService.hMCProjectListModel); - // projectProvider.setProjectsDetailList(_privilegeService.projectDetailListModel); - // double lat = await AppSharedPreferences().getDouble(USER_LAT) ?? 0.0; - // double long = await AppSharedPreferences().getDouble(USER_LONG) ?? 0.0; - // AppSharedPreferences().clear(); // Clearing Shared Preferences On App Launch - // await AppSharedPreferences().setDouble(USER_LAT, lat); - // await AppSharedPreferences().setDouble(USER_LONG, long); - // AppSharedPreferences().setString(APP_LANGUAGE, projectProvider.isArabic ? "ar" : "en"); - // var themeNotifier = Provider.of(context, listen: false); - // themeNotifier.setTheme(defaultTheme(fontName: projectProvider.isArabic ? 'Cairo' : 'Poppins')); - // PushNotificationHandler().init(context); // Asyncronously + // ...existing code... + } + + /// Update session status when call is declined + Future _updateSessionStatus(String sessionId, int sessionStatus, String sessionEndedBy) async { + try { + print('📡 Updating session status - SessionID: $sessionId, Status: $sessionStatus, EndedBy: $sessionEndedBy'); + + final apiClient = getIt.get(); + + Map requestBody = {"Open_SessionID": sessionId, "SessionStatus": sessionStatus, "SessionEndedBy": sessionEndedBy}; + + await apiClient.post( + CHANGE_PATIENT_ER_SESSION, + body: requestBody, + onSuccess: (response, statusCode, {messageStatus, errorMessage}) { + print('✅ Session status updated successfully: $response'); + }, + onFailure: (error, statusCode, {messageStatus, failureType}) { + print('❌ Failed to update session status: $error'); + }, + ); + } catch (e) { + print('❌ Exception updating session status: $e'); + } } @override diff --git a/lib/theme/app_theme.dart b/lib/theme/app_theme.dart index 51d2cbc2..c676819f 100644 --- a/lib/theme/app_theme.dart +++ b/lib/theme/app_theme.dart @@ -4,7 +4,13 @@ import 'package:hmg_patient_app_new/theme/colors.dart'; class AppTheme { static ThemeData getTheme(isArabic) => ThemeData( - fontFamily: isArabic ? 'GESSTwo' : 'Poppins', + fontFamily: isArabic ? 'CairoArabic' : 'Poppins', + // fontFamily: 'CairoArabic', + textTheme: const TextTheme( + displayLarge: TextStyle(fontFamily: 'CairoArabic'), + bodyLarge: TextStyle(fontFamily: 'CairoArabic'), + // Add others as needed + ), primarySwatch: Colors.red, visualDensity: VisualDensity.adaptivePlatformDensity, brightness: Brightness.light, @@ -20,8 +26,7 @@ class AppTheme { canvasColor: Colors.white, highlightColor: Colors.grey[100]!.withOpacity(0.4), splashColor: Colors.transparent, - bottomSheetTheme: BottomSheetThemeData( - backgroundColor: Colors.black.withOpacity(0)), + bottomSheetTheme: BottomSheetThemeData(backgroundColor: Colors.black.withOpacity(0)), floatingActionButtonTheme: const FloatingActionButtonThemeData(highlightElevation: 2, disabledElevation: 0, elevation: 2), appBarTheme: AppBarTheme( color: const Color(0xff515A5D), @@ -29,13 +34,19 @@ class AppTheme { actionsIconTheme: IconThemeData( color: Colors.grey[800], ), - systemOverlayStyle: SystemUiOverlayStyle.light, + systemOverlayStyle: SystemUiOverlayStyle.dark, surfaceTintColor: Colors.transparent, ), ); static ThemeData getDarkTheme(isArabic) => ThemeData( - fontFamily: isArabic ? 'GESSTwo' : 'Poppins', + fontFamily: isArabic ? 'CairoArabic' : 'Poppins', + // fontFamily: 'CairoArabic', + textTheme: const TextTheme( + displayLarge: TextStyle(fontFamily: 'CairoArabic'), + bodyLarge: TextStyle(fontFamily: 'CairoArabic'), + // Add others as needed + ), primarySwatch: Colors.red, visualDensity: VisualDensity.adaptivePlatformDensity, brightness: Brightness.dark, diff --git a/lib/theme/colors.dart b/lib/theme/colors.dart index 17e53ba7..1ecbcb61 100644 --- a/lib/theme/colors.dart +++ b/lib/theme/colors.dart @@ -40,6 +40,18 @@ class AppColors { static Color get lightGreenColor => isDarkMode ? dark.lightGreenColor : const Color(0xFF0ccedde); static Color get ratingColorYellow => isDarkMode ? dark.ratingColorYellow : const Color(0xFFFFAF15); static Color get spacerLineColor => isDarkMode ? dark.spacerLineColor : const Color(0x2E30391A); + static Color get habibPharmacyColor => const Color(0xFF2d9137); + + // ── Doctor Rating Colors ────────────────────────────────────────────────── + static const Color ratingStarIconColor = Color(0xFFFFA726); // Orange-amber for star icons + static const Color ratingFiveStarColor = Color(0xFF18C273); // Green for 5 stars + static const Color ratingFourStarColor = Color(0xFF8BC34A); // Light green for 4 stars + static const Color ratingThreeStarColor = Color(0xFFC0A000); // Dark yellow/olive for 3 stars + static const Color ratingTwoStarColor = Color(0xFFD84315); // Dark orange-red for 2 stars + static const Color ratingOneStarColor = Color(0xFFD32F2F); // Red for 1 star + static const Color ratingBadgeFiveStarColor = Color(0xFF5BBD8E); // Green badge for ≥4.0 + static const Color ratingPercentageTextColor = Color(0xFF4A4A4A); // Dark grey for percentage text + // ── Semantic / Status Colors ────────────────────────────────────────────── static Color get errorColor => isDarkMode ? dark.errorColor : const Color(0xFFED1C2B); @@ -79,6 +91,16 @@ class AppColors { static Color get myChildVaccineCardColor => isDarkMode ? dark.myChildVaccineCardColor : const Color(0xFFFF2D78); static Color get bookAppointment => isDarkMode ? dark.bookAppointment : const Color(0xFF415364); + // ── Health Calculators Colors ───────────────────────────────────────────── + static Color get bmiCalculatorColor => isDarkMode ? dark.bmiCalculatorColor : const Color(0xFFF43333); + static Color get caloriesCalculatorColor => isDarkMode ? dark.caloriesCalculatorColor : const Color(0xFF0B85F7); + static Color get bmrCalculatorColor => isDarkMode ? dark.bmrCalculatorColor : const Color(0xFF18C273); + static Color get idealBodyWeightColor => isDarkMode ? dark.idealBodyWeightColor : const Color(0xFFFF8012); + static Color get bodyFatCalculatorColor => isDarkMode ? dark.bodyFatCalculatorColor : const Color(0xFFFF5662); + static Color get carbsProteinFatColor => isDarkMode ? dark.carbsProteinFatColor : const Color(0xFF18C273); + static Color get ovulationPeriodColor => isDarkMode ? dark.ovulationPeriodColor : const Color(0xFFFF47A9); + static Color get deliveryDueDateColor => isDarkMode ? dark.deliveryDueDateColor : const Color(0xFFFF2D78); + // ── Water Monitor ───────────────────────────────────────────────────────── static Color get blueColor => isDarkMode ? dark.blueColor : const Color(0xFF4EB5FF); static Color get blueGradientColorOne => isDarkMode ? dark.blueGradientColorOne : const Color(0xFFF1F7FD); @@ -206,6 +228,16 @@ class AppColorsDark { Color get myChildVaccineCardColor => const Color(0xFFFF2D78); Color get bookAppointment => const Color(0xFF415364); + // Health Calculators + Color get bmiCalculatorColor => const Color(0xFFF43333); + Color get caloriesCalculatorColor => const Color(0xFF0B85F7); + Color get bmrCalculatorColor => const Color(0xFF18C273); + Color get idealBodyWeightColor => const Color(0xFFFF8012); + Color get bodyFatCalculatorColor => const Color(0xFFFF5662); + Color get carbsProteinFatColor => const Color(0xFF18C273); + Color get ovulationPeriodColor => const Color(0xFFFF47A9); + Color get deliveryDueDateColor => const Color(0xFFFF2D78); + // Water Monitor Color get blueColor => const Color(0xFF4EB5FF); Color get blueGradientColorOne => const Color(0xFF101C2A); diff --git a/lib/widgets/accessibility/accessibility_filter_wrapper.dart b/lib/widgets/accessibility/accessibility_filter_wrapper.dart new file mode 100644 index 00000000..38ac4990 --- /dev/null +++ b/lib/widgets/accessibility/accessibility_filter_wrapper.dart @@ -0,0 +1,135 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; +import 'package:provider/provider.dart'; + +/// Widget that applies accessibility visual modes to all content EXCEPT images +/// Automatically wraps page content and applies appropriate filters +/// Images within the content remain unaffected +class AccessibilityFilterWrapper extends StatelessWidget { + final Widget child; + + const AccessibilityFilterWrapper({ + super.key, + required this.child, + }); + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, profileVm, _) { + return _applyVisualModeToContent(profileVm.visualMode, child); + }, + ); + } + + Widget _applyVisualModeToContent(String visualMode, Widget child) { + switch (visualMode) { + case 'invert': + return _InvertedContentWrapper(child: child); + + case 'dim': + return _DimmedContentWrapper(child: child); + + case 'highContrast': + return _HighContrastContentWrapper(child: child); + + case 'off': + default: + return child; + } + } +} + +/// Wrapper that inverts colors but preserves images +class _InvertedContentWrapper extends StatelessWidget { + final Widget child; + + const _InvertedContentWrapper({required this.child}); + + @override + Widget build(BuildContext context) { + return ColorFiltered( + colorFilter: const ColorFilter.matrix([ + -1, 0, 0, 0, 255, + 0, -1, 0, 0, 255, + 0, 0, -1, 0, 255, + 0, 0, 0, 1, 0, + ]), + child: _ImagePreservingWrapper( + visualMode: 'invert', + child: child, + ), + ); + } +} + +/// Wrapper that dims content but preserves images +class _DimmedContentWrapper extends StatelessWidget { + final Widget child; + + const _DimmedContentWrapper({required this.child}); + + @override + Widget build(BuildContext context) { + return Stack( + children: [ + child, + Positioned.fill( + child: IgnorePointer( + child: Container( + color: Colors.black.withValues(alpha: 0.3), + ), + ), + ), + // Preserve images on top + _ImagePreservingWrapper( + visualMode: 'dim', + child: child, + ), + ], + ); + } +} + +/// Wrapper that applies high contrast but preserves images +class _HighContrastContentWrapper extends StatelessWidget { + final Widget child; + + const _HighContrastContentWrapper({required this.child}); + + @override + Widget build(BuildContext context) { + return ColorFiltered( + colorFilter: const ColorFilter.matrix([ + 0.2126, 0.7152, 0.0722, 0, 0, + 0.2126, 0.7152, 0.0722, 0, 0, + 0.2126, 0.7152, 0.0722, 0, 0, + 0, 0, 0, 1, 0, + ]), + child: _ImagePreservingWrapper( + visualMode: 'highContrast', + child: child, + ), + ); + } +} + +/// Internal wrapper that detects and preserves images +class _ImagePreservingWrapper extends StatelessWidget { + final Widget child; + final String visualMode; + + const _ImagePreservingWrapper({ + required this.child, + required this.visualMode, + }); + + @override + Widget build(BuildContext context) { + // This is a placeholder - in practice, you would need to traverse + // the widget tree and wrap Image widgets + // For now, this serves as a marker for where image preservation logic would go + return child; + } +} + diff --git a/lib/widgets/accessibility/accessibility_widgets.dart b/lib/widgets/accessibility/accessibility_widgets.dart new file mode 100644 index 00000000..af5b395b --- /dev/null +++ b/lib/widgets/accessibility/accessibility_widgets.dart @@ -0,0 +1,4 @@ +// Accessibility widgets export file +export 'preserve_image_colors.dart'; +export 'accessible_image.dart'; + diff --git a/lib/widgets/accessibility/accessible_image.dart b/lib/widgets/accessibility/accessible_image.dart new file mode 100644 index 00000000..a5c6e0fe --- /dev/null +++ b/lib/widgets/accessibility/accessible_image.dart @@ -0,0 +1,153 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/widgets/accessibility/preserve_image_colors.dart'; + +/// Custom Image widget that automatically preserves original colors +/// when accessibility visual modes are active. +/// +/// Usage: Replace Image.network() with AccessibleImage.network() +/// Replace Image.asset() with AccessibleImage.asset() +class AccessibleImage extends StatelessWidget { + final ImageProvider image; + final double? width; + final double? height; + final BoxFit? fit; + final AlignmentGeometry alignment; + final ImageRepeat repeat; + final Color? color; + final BlendMode? colorBlendMode; + final FilterQuality filterQuality; + final Widget Function(BuildContext, Widget, int?, bool)? frameBuilder; + final Widget Function(BuildContext, Object, StackTrace?)? errorBuilder; + final String? semanticLabel; + final bool excludeFromSemantics; + final bool gaplessPlayback; + final bool isAntiAlias; + + const AccessibleImage({ + super.key, + required this.image, + this.width, + this.height, + this.fit, + this.alignment = Alignment.center, + this.repeat = ImageRepeat.noRepeat, + this.color, + this.colorBlendMode, + this.filterQuality = FilterQuality.low, + this.frameBuilder, + this.errorBuilder, + this.semanticLabel, + this.excludeFromSemantics = false, + this.gaplessPlayback = false, + this.isAntiAlias = false, + }); + + /// Creates an accessible image from a network URL + factory AccessibleImage.network( + String src, { + Key? key, + double? width, + double? height, + BoxFit? fit, + AlignmentGeometry alignment = Alignment.center, + ImageRepeat repeat = ImageRepeat.noRepeat, + Color? color, + BlendMode? colorBlendMode, + FilterQuality filterQuality = FilterQuality.low, + Widget Function(BuildContext, Widget, int?, bool)? frameBuilder, + Widget Function(BuildContext, Object, StackTrace?)? errorBuilder, + String? semanticLabel, + bool excludeFromSemantics = false, + bool gaplessPlayback = false, + bool isAntiAlias = false, + Map? headers, + int? cacheWidth, + int? cacheHeight, + }) { + return AccessibleImage( + key: key, + image: NetworkImage(src, headers: headers), + width: width, + height: height, + fit: fit, + alignment: alignment, + repeat: repeat, + color: color, + colorBlendMode: colorBlendMode, + filterQuality: filterQuality, + frameBuilder: frameBuilder, + errorBuilder: errorBuilder, + semanticLabel: semanticLabel, + excludeFromSemantics: excludeFromSemantics, + gaplessPlayback: gaplessPlayback, + isAntiAlias: isAntiAlias, + ); + } + + /// Creates an accessible image from an asset + factory AccessibleImage.asset( + String name, { + Key? key, + AssetBundle? bundle, + double? width, + double? height, + BoxFit? fit, + AlignmentGeometry alignment = Alignment.center, + ImageRepeat repeat = ImageRepeat.noRepeat, + Color? color, + BlendMode? colorBlendMode, + FilterQuality filterQuality = FilterQuality.low, + Widget Function(BuildContext, Widget, int?, bool)? frameBuilder, + Widget Function(BuildContext, Object, StackTrace?)? errorBuilder, + String? semanticLabel, + bool excludeFromSemantics = false, + bool gaplessPlayback = false, + bool isAntiAlias = false, + String? package, + int? cacheWidth, + int? cacheHeight, + }) { + return AccessibleImage( + key: key, + image: AssetImage(name, bundle: bundle, package: package), + width: width, + height: height, + fit: fit, + alignment: alignment, + repeat: repeat, + color: color, + colorBlendMode: colorBlendMode, + filterQuality: filterQuality, + frameBuilder: frameBuilder, + errorBuilder: errorBuilder, + semanticLabel: semanticLabel, + excludeFromSemantics: excludeFromSemantics, + gaplessPlayback: gaplessPlayback, + isAntiAlias: isAntiAlias, + ); + } + + @override + Widget build(BuildContext context) { + return PreserveImageColors( + child: Image( + image: image, + width: width, + height: height, + fit: fit, + alignment: alignment, + repeat: repeat, + color: color, + colorBlendMode: colorBlendMode, + filterQuality: filterQuality, + frameBuilder: frameBuilder, + errorBuilder: errorBuilder, + semanticLabel: semanticLabel, + excludeFromSemantics: excludeFromSemantics, + gaplessPlayback: gaplessPlayback, + isAntiAlias: isAntiAlias, + ), + ); + } +} + diff --git a/lib/widgets/accessibility/preserve_image_colors.dart b/lib/widgets/accessibility/preserve_image_colors.dart new file mode 100644 index 00000000..0a7fef72 --- /dev/null +++ b/lib/widgets/accessibility/preserve_image_colors.dart @@ -0,0 +1,79 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; +import 'package:provider/provider.dart'; + +/// Widget that preserves original image colors even when visual mode filters are active +/// Wraps any image widget and applies reverse filters to cancel out accessibility filters +class PreserveImageColors extends StatelessWidget { + final Widget child; + + const PreserveImageColors({ + super.key, + required this.child, + }); + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, profileVm, _) { + final visualMode = profileVm.visualMode; + + // If no filter is active, just return the child + if (visualMode == 'off') { + return child; + } + + // Apply reverse filter to cancel out the app-wide filter + return _applyReverseFilter(visualMode, child); + }, + ); + } + + /// Apply reverse filter to cancel out the parent filter effect + Widget _applyReverseFilter(String visualMode, Widget child) { + switch (visualMode) { + case 'invert': + // Apply invert filter again to reverse the inversion (double negative = positive) + return ColorFiltered( + colorFilter: const ColorFilter.matrix([ + -1, 0, 0, 0, 255, // Red channel inverted back + 0, -1, 0, 0, 255, // Green channel inverted back + 0, 0, -1, 0, 255, // Blue channel inverted back + 0, 0, 0, 1, 0, // Alpha channel unchanged + ]), + child: child, + ); + + case 'dim': + // Dim mode uses screen brightness control only - no filters applied + // So no reverse filter needed + return child; + + case 'highContrast': + // For high contrast, apply color saturation to restore colors + // This won't perfectly restore original colors but helps images stand out + return ColorFiltered( + colorFilter: const ColorFilter.matrix([ + 1.5, 0, 0, 0, 0, // Boost red + 0, 1.5, 0, 0, 0, // Boost green + 0, 0, 1.5, 0, 0, // Boost blue + 0, 0, 0, 1, 0, // Alpha unchanged + ]), + child: child, + ); + + default: + return child; + } + } +} + +/// Extension on Image to easily wrap with PreserveImageColors +extension ImageAccessibility on Image { + Widget preserveColors() { + return PreserveImageColors(child: this); + } +} + + + diff --git a/lib/widgets/accessibility/preserve_svg_colors.dart b/lib/widgets/accessibility/preserve_svg_colors.dart new file mode 100644 index 00000000..1576504a --- /dev/null +++ b/lib/widgets/accessibility/preserve_svg_colors.dart @@ -0,0 +1,78 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hmg_patient_app_new/features/profile_settings/profile_settings_view_model.dart'; +import 'package:provider/provider.dart'; + +/// Widget that preserves original SVG icon colors even when visual mode filters are active +/// Wraps any SvgPicture widget and applies reverse filters to cancel out accessibility filters +class PreserveSvgColors extends StatelessWidget { + final Widget child; + + const PreserveSvgColors({ + super.key, + required this.child, + }); + + @override + Widget build(BuildContext context) { + return Consumer( + builder: (context, profileVm, _) { + final visualMode = profileVm.visualMode; + + // If no filter is active, just return the child + if (visualMode == 'off') { + return child; + } + + // Apply reverse filter to cancel out the app-wide filter + return _applyReverseFilter(visualMode, child); + }, + ); + } + + /// Apply reverse filter to cancel out the parent filter effect + Widget _applyReverseFilter(String visualMode, Widget child) { + switch (visualMode) { + case 'invert': + // Apply invert filter again to reverse the inversion (double negative = positive) + return ColorFiltered( + colorFilter: const ColorFilter.matrix([ + -1, 0, 0, 0, 255, // Red channel inverted back + 0, -1, 0, 0, 255, // Green channel inverted back + 0, 0, -1, 0, 255, // Blue channel inverted back + 0, 0, 0, 1, 0, // Alpha channel unchanged + ]), + child: child, + ); + + case 'dim': + // Dim mode uses screen brightness control only - no filters applied + // So no reverse filter needed + return child; + + case 'highContrast': + // For high contrast, apply color saturation to restore colors + // This won't perfectly restore original colors but helps icons stand out + return ColorFiltered( + colorFilter: const ColorFilter.matrix([ + 1.5, 0, 0, 0, 0, // Boost red + 0, 1.5, 0, 0, 0, // Boost green + 0, 0, 1.5, 0, 0, // Boost blue + 0, 0, 0, 1, 0, // Alpha unchanged + ]), + child: child, + ); + + default: + return child; + } + } +} + +/// Extension on SvgPicture to easily wrap with PreserveSvgColors +extension SvgAccessibility on SvgPicture { + Widget preserveColors() { + return PreserveSvgColors(child: this); + } +} + diff --git a/lib/widgets/app_language_change.dart b/lib/widgets/app_language_change.dart index 1200c53b..c2ae0272 100644 --- a/lib/widgets/app_language_change.dart +++ b/lib/widgets/app_language_change.dart @@ -5,6 +5,7 @@ import 'package:hmg_patient_app_new/extensions/int_extensions.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/emergency_services/emergency_services_view_model.dart'; +import 'package:hmg_patient_app_new/features/habib_wallet/habib_wallet_view_model.dart'; import 'package:hmg_patient_app_new/features/immediate_livecare/immediate_livecare_view_model.dart'; import 'package:hmg_patient_app_new/features/my_appointments/my_appointments_view_model.dart'; import 'package:hmg_patient_app_new/features/todo_section/todo_section_view_model.dart'; @@ -29,6 +30,7 @@ class _AppLanguageChangeState extends State { late ImmediateLiveCareViewModel immediateLiveCareViewModel; late EmergencyServicesViewModel emergencyServicesViewModel; late TodoSectionViewModel todoSectionViewModel; + late HabibWalletViewModel habibWalletVM; @override void initState() { @@ -48,6 +50,7 @@ class _AppLanguageChangeState extends State { immediateLiveCareViewModel = Provider.of(context, listen: false); emergencyServicesViewModel = Provider.of(context, listen: false); todoSectionViewModel = Provider.of(context, listen: false); + habibWalletVM = context.read(); return Column( spacing: 24.h, @@ -57,9 +60,9 @@ class _AppLanguageChangeState extends State { decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 24.h, hasShadow: true), child: Column( children: [ - languageItem("English", "en"), - 1.divider, languageItem("العربية", "ar"), + 1.divider, + languageItem("English", "en"), ], ), ), @@ -72,6 +75,11 @@ class _AppLanguageChangeState extends State { myAppointmentsViewModel.initAppointmentsViewModel(); myAppointmentsViewModel.getPatientAppointments(true, false); + habibWalletVM.setIsWalletAmountToBeLoaded(true); + habibWalletVM.initHabibWalletProvider(); + habibWalletVM.getPatientBalanceAmount(); + habibWalletVM.getLakumAccountInformation(); + //Reload Immediate LiveCare Data immediateLiveCareViewModel.initImmediateLiveCare(); immediateLiveCareViewModel.getPatientLiveCareHistory(); @@ -79,6 +87,9 @@ class _AppLanguageChangeState extends State { //Reload Emergency Services Data emergencyServicesViewModel.checkPatientERAdvanceBalance(); + todoSectionViewModel.setIsAncillaryOrdersNeedReloading(true); + todoSectionViewModel.initializeTodoSectionViewModel(); + Navigator.pop(context); }); }), @@ -103,7 +114,7 @@ class _AppLanguageChangeState extends State { }, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, ), - title.toText16(weight: FontWeight.w500, textOverflow: TextOverflow.ellipsis, maxlines: 1, fontFamily: _value == "ar" ? 'GESSTwo' : 'Poppins').expanded, + title.toText16(isBold: true, textOverflow: TextOverflow.ellipsis, maxlines: 1, fontFamily: _value == "ar" ? 'CairoArabic' : 'Poppins').expanded, ], ).paddingOnly(left: 16, right: 16).onPress(() { setState(() { diff --git a/lib/widgets/appbar/collapsing_list_view.dart b/lib/widgets/appbar/collapsing_list_view.dart index 0c32d87d..c3ebe4ba 100644 --- a/lib/widgets/appbar/collapsing_list_view.dart +++ b/lib/widgets/appbar/collapsing_list_view.dart @@ -26,6 +26,9 @@ class CollapsingListView extends StatelessWidget { VoidCallback? sendEmail; VoidCallback? doctorResponse; VoidCallback? downloadReport; + VoidCallback? viewImage; + VoidCallback? location; + VoidCallback? downloadInvoice; Widget? bottomChild; Widget? trailing; bool isClose; @@ -49,6 +52,9 @@ class CollapsingListView extends StatelessWidget { this.sendEmail, this.doctorResponse, this.downloadReport, + this.viewImage, + this.location, + this.downloadInvoice, this.isLeading = true, this.trailing, this.leadingCallback, @@ -92,6 +98,9 @@ class CollapsingListView extends StatelessWidget { sendEmail: sendEmail, doctorResponse: doctorResponse, downloadReport: downloadReport, + viewImage: viewImage, + location: location, + downloadInvoice: downloadInvoice, bottomChild: bottomChild, trailing: trailing, aiOverview: aiOverview, @@ -106,7 +115,8 @@ class CollapsingListView extends StatelessWidget { margin: EdgeInsets.fromLTRB(24.w, 0, 24.w, 0), child: Transform.flip( flipX: appState.isArabic(), - child: Utils.buildSvgWithAssets(icon: isClose ? AppAssets.close_bottom_nav_trans : AppAssets.arrow_back_new, width: 24.h, height: 24.h), + child: Utils.buildSvgWithAssets( + icon: isClose ? AppAssets.close_bottom_nav_trans : AppAssets.arrow_back_new, width: 24.h, height: 24.h), ), ).onPress(() { if (leadingCallback != null) { @@ -131,12 +141,10 @@ class CollapsingListView extends StatelessWidget { // trailing: trailing, // ), ), - SliverList( - delegate: SliverChildBuilderDelegate( - (context, index) => child, - childCount: 1, + if (child != null) + SliverToBoxAdapter( + child: child!, ), - ), ], ).expanded, if (bottomChild != null) bottomChild! @@ -172,7 +180,7 @@ class CollapsingListView extends StatelessWidget { // fontSize: (12 - (2 * (1 - t))).f, // fontWeight: FontWeight.lerp( // FontWeight.w300, -// FontWeight.w500, +// FontWeight.w600, // t, // )!, // ), @@ -204,6 +212,9 @@ class ScrollAnimatedTitle extends StatefulWidget implements PreferredSizeWidget VoidCallback? sendEmail; VoidCallback? doctorResponse; VoidCallback? downloadReport; + VoidCallback? viewImage; + VoidCallback? location; + VoidCallback? downloadInvoice; Widget? bottomChild; Widget? trailing; @@ -222,6 +233,9 @@ class ScrollAnimatedTitle extends StatefulWidget implements PreferredSizeWidget this.sendEmail, this.doctorResponse, this.downloadReport, + this.viewImage, + this.location, + this.downloadInvoice, this.bottomChild, this.trailing, }); @@ -254,7 +268,7 @@ class _ScrollAnimatedTitleState extends State { super.dispose(); } - double t = 0; + double t = 1.0; void _onScroll() { final double offset = widget.controller.offset; @@ -275,7 +289,8 @@ class _ScrollAnimatedTitleState extends State { return Container( // height: (widget.preferredSize.height - _fontSize / 2).h, height: 56.h, - alignment: isRtl ? (widget.showBack ? Alignment.topRight : Alignment.centerRight) : (widget.showBack ? Alignment.topLeft : Alignment.centerLeft), + alignment: + isRtl ? (widget.showBack ? Alignment.topRight : Alignment.centerRight) : (widget.showBack ? Alignment.topLeft : Alignment.centerLeft), padding: EdgeInsets.fromLTRB(24.w, 0, 24.w, 0), child: Row( spacing: 4.h, @@ -291,16 +306,38 @@ class _ScrollAnimatedTitleState extends State { ), ).expanded, ...[ - if (widget.logout != null) actionButton(context, t, title: LocaleKeys.logout.tr(context: context), icon: AppAssets.logout).onPress(widget.logout!), - if (widget.report != null) actionButton(context, t, title: LocaleKeys.feedback.tr(context: context), icon: AppAssets.report_icon).onPress(widget.report!), - if (widget.history != null) actionButton(context, t, title: LocaleKeys.history.tr(context: context), icon: AppAssets.insurance_history_icon).onPress(widget.history!), - if (widget.instructions != null) actionButton(context, t, title: LocaleKeys.instructions.tr(context: context), icon: AppAssets.requests).onPress(widget.instructions!), - if (widget.requests != null) actionButton(context, t, title: LocaleKeys.requests.tr(context: context), icon: AppAssets.insurance_history_icon).onPress(widget.requests!), - if (widget.sendEmail != null) actionButton(context, t, title: LocaleKeys.sendEmail.tr(context: context), icon: AppAssets.email).onPress(widget.sendEmail!), - if (widget.doctorResponse != null) actionButton(context, t, title: LocaleKeys.doctorResponses.tr(context: context), icon: AppAssets.doctorResponseIcon).onPress(widget.doctorResponse!), + if (widget.logout != null) + actionButton(context, t, title: LocaleKeys.logout.tr(context: context), icon: AppAssets.logout).onPress(widget.logout!), + if (widget.report != null) + actionButton(context, t, title: LocaleKeys.feedback.tr(context: context), icon: AppAssets.report_icon).onPress(widget.report!), + if (widget.history != null) + actionButton(context, t, title: LocaleKeys.history.tr(context: context), icon: AppAssets.insurance_history_icon) + .onPress(widget.history!), + if (widget.instructions != null) + actionButton(context, t, title: LocaleKeys.instructions.tr(context: context), icon: AppAssets.requests).onPress(widget.instructions!), + if (widget.requests != null) + actionButton(context, t, title: LocaleKeys.requests.tr(context: context), icon: AppAssets.insurance_history_icon) + .onPress(widget.requests!), + if (widget.sendEmail != null) + actionButton(context, t, title: LocaleKeys.sendEmail.tr(context: context), icon: AppAssets.email).onPress(widget.sendEmail!), + if (widget.doctorResponse != null) + actionButton(context, t, title: LocaleKeys.doctorResponses.tr(context: context), icon: AppAssets.doctorResponseIcon) + .onPress(widget.doctorResponse!), if (widget.search != null) Utils.buildSvgWithAssets(icon: AppAssets.search_icon).onPress(widget.search!), - if (widget.aiOverview != null) actionButton(context, t, title: LocaleKeys.aiOverView.tr(context: context), icon: AppAssets.aiOverView, isAiButton: true).onPress(widget.aiOverview!), - if (widget.downloadReport != null) actionButton(context, t, title: LocaleKeys.downloadReport.tr(context: context), icon: AppAssets.download).onPress(widget.downloadReport!), + if (widget.aiOverview != null) + actionButton(context, t, title: LocaleKeys.aiOverView.tr(context: context), icon: AppAssets.aiOverView, isAiButton: true) + .onPress(widget.aiOverview!), + if (widget.downloadReport != null) + actionButton(context, t, title: LocaleKeys.downloadReport.tr(context: context), icon: AppAssets.download) + .onPress(widget.downloadReport!), + if (widget.viewImage != null) + actionButton(context, t, title: LocaleKeys.viewRadiologyImage.tr(context: context), icon: AppAssets.download) + .onPress(widget.viewImage!), + if (widget.location != null) + actionButton(context, t, title: LocaleKeys.sortByLocation.tr(context: context), icon: AppAssets.location).onPress(widget.location!), + if (widget.downloadInvoice != null) + actionButton(context, t, title: LocaleKeys.downloadInvoice.tr(context: context), icon: AppAssets.download) + .onPress(widget.downloadInvoice!), if (widget.trailing != null) widget.trailing!, ] ], @@ -314,9 +351,10 @@ class _ScrollAnimatedTitleState extends State { duration: Duration(milliseconds: 150), child: Center( child: Container( - height: 40.h, + height: isFoldable ? 50.h : 40.h, padding: EdgeInsets.all(8.w), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 8.r, side: BorderSide(width: 1, color: AppColors.borderGrayColor)), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, borderRadius: 8.r, side: BorderSide(width: 1, color: AppColors.borderGrayColor)), child: ShaderMask( blendMode: BlendMode.srcIn, shaderCallback: (bounds) => AppColors.aiLinearGradient.createShader(bounds), @@ -335,7 +373,7 @@ class _ScrollAnimatedTitleState extends State { fontSize: (14 - (2 * (1 - t))).f, fontWeight: FontWeight.lerp( FontWeight.w400, - FontWeight.w500, + FontWeight.w600, t, )!, ), @@ -349,7 +387,7 @@ class _ScrollAnimatedTitleState extends State { : AnimatedSize( duration: Duration(milliseconds: 150), child: Container( - height: 40.h, + height: isFoldable ? 50.h : 40.h, padding: EdgeInsets.all(8.w), decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.secondaryLightRedColor, @@ -370,8 +408,8 @@ class _ScrollAnimatedTitleState extends State { letterSpacing: -0.4, fontSize: (12 - (2 * (1 - t))).f, fontWeight: FontWeight.lerp( - FontWeight.w400, FontWeight.w500, + FontWeight.w700, t, )!, ), diff --git a/lib/widgets/appbar/collapsing_toolbar.dart b/lib/widgets/appbar/collapsing_toolbar.dart index 9b1d4854..f7b3edbb 100644 --- a/lib/widgets/appbar/collapsing_toolbar.dart +++ b/lib/widgets/appbar/collapsing_toolbar.dart @@ -194,7 +194,7 @@ class _CollapsingToolbarState extends State { fontSize: (14 - (2 * (1 - t))).f, fontWeight: FontWeight.lerp( FontWeight.w300, - FontWeight.w500, + FontWeight.w600, t, )!, ), diff --git a/lib/widgets/attachment_options.dart b/lib/widgets/attachment_options.dart index be443f81..db4164a3 100644 --- a/lib/widgets/attachment_options.dart +++ b/lib/widgets/attachment_options.dart @@ -1,60 +1,106 @@ +import 'package:easy_localization/easy_localization.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; class AttachmentOptions extends StatelessWidget { - VoidCallback onCameraTap; - VoidCallback onGalleryTap; - VoidCallback onFilesTap; - bool showFilesOption; + final Future Function() onCameraTap; + final Future Function() onGalleryTap; + final VoidCallback onFilesTap; + final bool showFilesOption; - AttachmentOptions({Key? key, required this.onCameraTap, required this.onGalleryTap, required this.onFilesTap, this.showFilesOption = true}) : super(key: key); + const AttachmentOptions({ + Key? key, + required this.onCameraTap, + required this.onGalleryTap, + required this.onFilesTap, + this.showFilesOption = true + }) : super(key: key); @override Widget build(BuildContext context) { - return SizedBox( - width: double.infinity, - child: Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [ - "Upload Attachment".toSectionHeading(), - "Select from gallery or open camera".toText11(weight: FontWeight.w500), - GridView( - gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 105 / 105, crossAxisSpacing: 9, mainAxisSpacing: 9), - physics: const NeverScrollableScrollPhysics(), - padding: const EdgeInsets.only(top: 21, bottom: 14), - shrinkWrap: true, - children: [ - itemView("open_camera.svg", "Open\nCamera", onCameraTap), - itemView("gallery.svg", "Upload from\nGallery", onGalleryTap), - if (showFilesOption) itemView("files.svg", "Upload from\nFiles", onFilesTap), - ], - ) - ], - ).paddingOnly(left: 21, right: 21, bottom: 21), + final appState = getIt.get(); + + return Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + checkInOptionCard( + appState, + AppAssets.open_camera, + LocaleKeys.openCamera.tr(context: context), + LocaleKeys.takePhotoWithCamera.tr(context: context), + ).onPress(() async { + await onCameraTap(); + }), + SizedBox(height: 16.h), + checkInOptionCard( + appState, + AppAssets.gallery, + LocaleKeys.openGallery.tr(context: context), + LocaleKeys.selectFromPhotoLibrary.tr(context: context), + ).onPress(() async { + await onGalleryTap(); + }), + // if (!showFilesOption) commented because the ui issue. + SizedBox(height: 16.h), + if (showFilesOption) + checkInOptionCard( + appState, + AppAssets.file_icon, + LocaleKeys.openFiles.tr(context: context), + LocaleKeys.selectDocumentFiles.tr(context: context), + ).onPress(() async { + onFilesTap(); + }), + ], ); } - Widget itemView(String icon, String title, VoidCallback onTap) { - return InkWell( - onTap: onTap, + Widget checkInOptionCard(AppState appState, String icon, String title, String subTitle) { + return Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: AppColors.whiteColor, + borderRadius: 20.h, + hasShadow: false, + ), child: Column( crossAxisAlignment: CrossAxisAlignment.start, - mainAxisAlignment: MainAxisAlignment.spaceBetween, children: [ - SvgPicture.asset( - "assets/images/svg/$icon", + Utils.buildSvgWithAssets(icon: icon, width: 40.h, height: 40.h, fit: BoxFit.fill), + SizedBox(height: 16.h), + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Expanded( + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + title.toText16(isBold: true, color: AppColors.textColor), + subTitle.toText12(isBold: true, color: AppColors.greyTextColor), + ], + ), + ), + Transform.flip( + flipX: appState.isArabic(), + child: Utils.buildSvgWithAssets( + icon: AppAssets.forward_arrow_icon_small, + iconColor: AppColors.blackColor, + width: 18.h, + height: 13.h, + fit: BoxFit.contain, + ), + ), + ], ), - title.toText11(isBold: true), ], - ).paddingOnly(left: 13, right: 13, top: 16, bottom: 12).expanded.objectContainerBorderView( - disablePadding: true, - radius: 10, - color: AppColors.greyF7Color.withOpacity(.48), - borderColor: AppColors.lightGreyEFColor.withOpacity(.48), - ), + ).paddingAll(16.h), ); } } diff --git a/lib/widgets/bottom_navigation/bottom_navigation.dart b/lib/widgets/bottom_navigation/bottom_navigation.dart index 9d390388..e999842f 100644 --- a/lib/widgets/bottom_navigation/bottom_navigation.dart +++ b/lib/widgets/bottom_navigation/bottom_navigation.dart @@ -23,11 +23,11 @@ class BottomNavigation extends StatelessWidget { BottomNavItem(icon: AppAssets.homeBottom, fillIcon: AppAssets.homeBottomFill, label: LocaleKeys.home.tr(context: context)), appState.isAuthenticated ? BottomNavItem(icon: AppAssets.myFilesBottom, fillIcon: AppAssets.myFilesBottomFill, label: LocaleKeys.medicalFile.tr(context: context)) - : BottomNavItem(icon: AppAssets.feedback, fillIcon: AppAssets.feedbackFill, label: LocaleKeys.feedback.tr()), + : BottomNavItem(icon: AppAssets.weatherBottom, fillIcon: AppAssets.weatherBottomFill, label: LocaleKeys.weatherIndicators.tr(context: context)), BottomNavItem( icon: AppAssets.bookAppoBottom, fillIcon: AppAssets.bookAppoBottom, - label: LocaleKeys.appointment.tr(context: context), + label: LocaleKeys.appointments.tr(context: context), iconSize: 32, isSpecial: true), appState.isAuthenticated // ? BottomNavItem(icon: AppAssets.toDoBottom, label: LocaleKeys.todoList.tr(context: context)) @@ -80,7 +80,7 @@ class BottomNavigation extends StatelessWidget { ), // const SizedBox(height: 10), SizedBox(height: item.isSpecial ? 0 : 8.h), - item.label.toText11(weight: FontWeight.w500), + item.label.toText10(isBold: true), // SizedBox(height: item.isSpecial ? 5 : 0) ], ), diff --git a/lib/widgets/bottomsheet/generic_bottom_sheet.dart b/lib/widgets/bottomsheet/generic_bottom_sheet.dart index 21cc076f..d232f207 100644 --- a/lib/widgets/bottomsheet/generic_bottom_sheet.dart +++ b/lib/widgets/bottomsheet/generic_bottom_sheet.dart @@ -1,4 +1,5 @@ import 'dart:io'; +import 'dart:ui' as ui; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; @@ -23,6 +24,8 @@ class GenericBottomSheet extends StatefulWidget { final bool isFromSavedLogin; final Function(String?)? onChange; final bool autoFocus; + final String? phoneNumberError; + final String? emailError; // FocusNode myFocusNode; @@ -38,6 +41,8 @@ class GenericBottomSheet extends StatefulWidget { this.isFromSavedLogin = false, this.onChange, this.autoFocus = false, + this.phoneNumberError, + this.emailError, // required this.myFocusNode }); @@ -82,7 +87,7 @@ class GenericBottomSheetState extends State { FocusScope.of(context).unfocus(); }, child: Directionality( - textDirection: Directionality.of(context), + textDirection: ui.TextDirection.ltr, child: Container( padding: EdgeInsets.all(24.h), decoration: RoundedRectangleBorder().toSmoothCornerDecoration( @@ -145,6 +150,9 @@ class GenericBottomSheetState extends State { keyboardType: widget.isForEmail ? TextInputType.emailAddress : TextInputType.number, onChange: (value) { if (widget.onChange != null) { + if (Utils.isArabicText(value!)) { + value = Utils.toEnglishNumbers(value); + } widget.onChange!(value); } }, @@ -162,6 +170,8 @@ class GenericBottomSheetState extends State { isCountryDropDown: widget.isEnableCountryDropdown, leadingIcon: widget.isForEmail ? AppAssets.email : AppAssets.smart_phone, fontFamily: "Poppins", + hasError: widget.isForEmail ? (widget.emailError != null) : (widget.phoneNumberError != null), + errorMessage: widget.isForEmail ? widget.emailError : widget.phoneNumberError, ) : SizedBox(), ], diff --git a/lib/widgets/buttons/custom_button.dart b/lib/widgets/buttons/custom_button.dart index de3b598a..f3eb94fb 100644 --- a/lib/widgets/buttons/custom_button.dart +++ b/lib/widgets/buttons/custom_button.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:clarity_flutter/clarity_flutter.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -8,7 +9,7 @@ import 'package:hmg_patient_app_new/theme/colors.dart'; class CustomButton extends StatelessWidget { final String text; final String? icon; - final VoidCallback onPressed; + final VoidCallback? onPressed; final Color backgroundColor; final Color borderColor; final Color textColor; @@ -26,6 +27,7 @@ class CustomButton extends StatelessWidget { final TextOverflow? textOverflow; final BorderSide? borderSide; final bool applyThemeColor; + final bool isBold; const CustomButton({ super.key, @@ -39,8 +41,9 @@ class CustomButton extends StatelessWidget { this.padding = const EdgeInsets.fromLTRB(8, 10, 8, 10), this.fontSize, this.fontFamily, - this.fontWeight = FontWeight.w500, + this.fontWeight = FontWeight.w700, this.isDisabled = false, + this.isBold = false, this.icon, this.iconColor = Colors.white, this.height, @@ -56,45 +59,89 @@ class CustomButton extends StatelessWidget { final radius = borderRadius ?? (12.r); final iconS = iconSize ?? (24.h); final fontS = fontSize ?? (16.f); - return GestureDetector( - onTap: isDisabled ? null : onPressed, - child: Container( - height: height == null - ? 56.h - : (isFoldable || isTablet) - ? height! + 10.h - : height, - width: width, - padding: padding, - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: isDisabled ? AppColors.inputLabelTextColor.withValues(alpha: 0.3) : backgroundColor, - borderRadius: radius, - customBorder: BorderRadius.circular(radius), - side: borderSide ?? BorderSide(width: borderWidth.h, color: isDisabled ? Colors.transparent : borderColor)), - child: Row( - crossAxisAlignment: CrossAxisAlignment.center, - mainAxisAlignment: MainAxisAlignment.center, - children: [ - if (icon != null) - Padding( - padding: text.isNotEmpty ? EdgeInsets.only(right: 4.w, left: 4.w) : EdgeInsets.zero, - child: Utils.buildSvgWithAssets(icon: icon!, iconColor: iconColor, isDisabled: isDisabled, width: iconS, height: iconS, applyThemeColor: applyThemeColor), - ), - if (text.isNotEmpty) - Text( - text, - overflow: textOverflow ?? TextOverflow.ellipsis, - maxLines: 1, - textAlign: TextAlign.center, - style: context.dynamicTextStyle( - fontSize: fontS, - color: isDisabled ? AppColors.greyTextColor : textColor, - letterSpacing: 0, - fontWeight: fontWeight, + final isButtonDisabled = isDisabled || onPressed == null; + + return Semantics( + button: true, + enabled: !isButtonDisabled, + label: text, + hint: isButtonDisabled ? 'Button is disabled' : 'Tap to $text', + child: GestureDetector( + onTap: isButtonDisabled + ? null + : () { + // Log button tap to Clarity before executing callback + try { + Clarity.setCustomTag('button_text', text.length > 100 ? text.substring(0, 100) : text); + Clarity.setCustomTag('button_action', 'tap'); + Clarity.setCustomTag('button_disabled', 'false'); + Clarity.sendCustomEvent('button_tapped'); + } catch (e) { + // Silence Clarity errors to not interrupt user flow + } + + // Execute the actual button callback + onPressed?.call(); + }, + child: Container( + height: height == null + ? 56.h + : (isFoldable || isTablet) + ? height! + 10.h + : height, + width: width, + padding: padding, + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + color: isButtonDisabled ? AppColors.inputLabelTextColor.withValues(alpha: 0.3) : backgroundColor, + borderRadius: radius, + customBorder: BorderRadius.circular(radius), + side: borderSide ?? BorderSide(width: borderWidth.h, color: isButtonDisabled ? Colors.transparent : borderColor)), + child: Row( + crossAxisAlignment: CrossAxisAlignment.center, + mainAxisAlignment: MainAxisAlignment.center, + children: [ + if (icon != null) + Padding( + padding: text.isNotEmpty ? EdgeInsets.only(right: 6.w, left: 6.w) : EdgeInsets.zero, + child: Utils.buildSvgWithAssets( + icon: icon!, + iconColor: isButtonDisabled ? AppColors.greyTextColor : iconColor, + isDisabled: isButtonDisabled, + width: iconS, + height: iconS, + applyThemeColor: applyThemeColor), + ), + if (text.isNotEmpty && icon != null) + Flexible( + child: Text( + text, + overflow: textOverflow ?? TextOverflow.ellipsis, + maxLines: 1, + textAlign: TextAlign.center, + style: context.dynamicTextStyle( + fontSize: fontS, + color: isButtonDisabled ? AppColors.greyTextColor : textColor, + letterSpacing: 0, + fontWeight: isBold ? FontWeight.w700 : fontWeight, + ), + ), + ), + if (text.isNotEmpty && icon == null) + Text( + text, + overflow: textOverflow ?? TextOverflow.ellipsis, + maxLines: 1, + textAlign: TextAlign.center, + style: context.dynamicTextStyle( + fontSize: fontS, + color: isButtonDisabled ? AppColors.greyTextColor : textColor, + letterSpacing: 0, + fontWeight: isBold ? FontWeight.w700 : fontWeight, + ), ), - ), - ], - ), - )); + ], + ), + )), + ); } } diff --git a/lib/widgets/buttons/default_button.dart b/lib/widgets/buttons/default_button.dart index f6a47a1c..9d62ff6f 100644 --- a/lib/widgets/buttons/default_button.dart +++ b/lib/widgets/buttons/default_button.dart @@ -1,6 +1,6 @@ import 'package:flutter/material.dart'; -import 'package:flutter_svg/svg.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; extension WithContainer on Widget { @@ -63,7 +63,7 @@ class DefaultButton extends StatelessWidget { mainAxisAlignment: MainAxisAlignment.center, children: [ if (iconData != null) Icon(iconData, color: textColor), - if (svgIcon != null) SvgPicture.asset(svgIcon ?? ""), + if (svgIcon != null) Utils.buildSvgWithAssets(icon: svgIcon ?? "", applyThemeColor: false), if (!isTextExpanded) Padding( padding: EdgeInsets.only( diff --git a/lib/widgets/chip/app_custom_chip_widget.dart b/lib/widgets/chip/app_custom_chip_widget.dart index 77345933..00bf6df1 100644 --- a/lib/widgets/chip/app_custom_chip_widget.dart +++ b/lib/widgets/chip/app_custom_chip_widget.dart @@ -1,4 +1,6 @@ import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; @@ -6,28 +8,28 @@ import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:smooth_corner/smooth_corner.dart'; class AppCustomChipWidget extends StatelessWidget { - const AppCustomChipWidget({ - super.key, - this.labelText, - this.textColor, - this.backgroundColor, - this.iconSize, - this.icon = "", - this.iconColor, - this.richText, - this.iconHasColor = true, - this.shape, - this.deleteIcon, - this.deleteIconSize, - this.deleteIconColor, - this.deleteIconHasColor = false, - this.padding = EdgeInsets.zero, - this.isIconPNG = false, - this.onChipTap, - this.labelPadding, - this.onDeleteTap, - this.applyThemeColor = true, - }); + const AppCustomChipWidget( + {super.key, + this.labelText, + this.textColor, + this.backgroundColor, + this.iconSize, + this.icon = "", + this.iconColor, + this.richText, + this.iconHasColor = true, + this.shape, + this.deleteIcon, + this.deleteIconSize, + this.deleteIconColor, + this.deleteIconHasColor = false, + this.padding = EdgeInsets.zero, + this.isIconPNG = false, + this.onChipTap, + this.labelPadding, + this.onDeleteTap, + this.applyThemeColor = true, + this.isEnglishOnly = false}); final String? labelText; final Widget? richText; @@ -48,13 +50,14 @@ class AppCustomChipWidget extends StatelessWidget { final void Function()? onChipTap; final void Function()? onDeleteTap; final bool applyThemeColor; + final bool isEnglishOnly; @override Widget build(BuildContext context) { final iconS = iconSize ?? 12.w; final resolvedTextColor = textColor ?? AppColors.textColor; final resolvedBackgroundColor = backgroundColor ?? AppColors.greyColor; - final resolvedIconColor = iconColor ?? AppColors.textColor; + final resolvedIconColor = (iconColor ?? AppColors.textColor); final resolvedDeleteIconColor = deleteIconColor ?? AppColors.textColor; return GestureDetector( onTap: onChipTap, @@ -75,7 +78,7 @@ class AppCustomChipWidget extends StatelessWidget { ? Chip( avatar: icon.isNotEmpty ? isIconPNG - ? Image.asset(icon, width: iconS, height: iconS) + ? Utils.buildImgWithAssets(icon: icon, width: iconS, height: iconS) : Utils.buildSvgWithAssets( icon: icon, width: iconS, @@ -85,7 +88,8 @@ class AppCustomChipWidget extends StatelessWidget { applyThemeColor: applyThemeColor, ) : SizedBox.shrink(), - label: richText ?? (labelText?? "").toText10(weight: FontWeight.w500, letterSpacing: 0, color: resolvedTextColor), + label: + richText ?? (labelText ?? "").toText10(isBold: true, letterSpacing: 0, color: resolvedTextColor, isEnglishOnly: isEnglishOnly), padding: padding, materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, labelPadding: labelPadding ?? EdgeInsetsDirectional.only(end: deleteIcon?.isNotEmpty == true ? 2.w : 8.w), @@ -99,12 +103,15 @@ class AppCustomChipWidget extends StatelessWidget { deleteIcon: deleteIcon?.isNotEmpty == true ? InkWell( onTap: onDeleteTap, - child: Utils.buildSvgWithAssets( - icon: deleteIcon!, - width: iconS, - height: iconS, - iconColor: deleteIconHasColor ? resolvedDeleteIconColor : null, - applyThemeColor: applyThemeColor, + child: Transform.flip( + flipX: getIt.get().isArabic(), + child: Utils.buildSvgWithAssets( + icon: deleteIcon!, + width: iconS, + height: iconS, + iconColor: deleteIconHasColor ? resolvedDeleteIconColor : null, + applyThemeColor: applyThemeColor, + ), ), ) : null, @@ -112,7 +119,9 @@ class AppCustomChipWidget extends StatelessWidget { ) : Chip( materialTapTargetSize: MaterialTapTargetSize.shrinkWrap, - label: richText ?? (labelText?? "").toText10(weight: FontWeight.w500, letterSpacing: 0, color: resolvedTextColor, isCenter: true), + label: richText ?? + (labelText ?? "") + .toText10(isBold: true, letterSpacing: 0, color: resolvedTextColor, isCenter: true, isEnglishOnly: isEnglishOnly), padding: EdgeInsets.zero, backgroundColor: resolvedBackgroundColor, shape: shape ?? @@ -126,7 +135,11 @@ class AppCustomChipWidget extends StatelessWidget { ? InkWell( onTap: onDeleteTap, child: Utils.buildSvgWithAssets( - icon: deleteIcon!, width: iconS, height: iconS, iconColor: deleteIconHasColor ? resolvedDeleteIconColor : null, applyThemeColor: applyThemeColor)) + icon: deleteIcon!, + width: iconS, + height: iconS, + iconColor: deleteIconHasColor ? resolvedDeleteIconColor : null, + applyThemeColor: applyThemeColor)) : null, onDeleted: deleteIcon?.isNotEmpty == true ? () {} : null, ), diff --git a/lib/widgets/chip/custom_chip_widget.dart b/lib/widgets/chip/custom_chip_widget.dart index b60db577..afa00efa 100644 --- a/lib/widgets/chip/custom_chip_widget.dart +++ b/lib/widgets/chip/custom_chip_widget.dart @@ -71,7 +71,7 @@ class CustomChipWidget extends StatelessWidget { isBold: true, color: isSelected ? Colors.white : textColor ?? chipType.color, maxlines: 1, - weight: FontWeight.w500, + weight: FontWeight.w600, letterSpacing: -0.5), ], ), diff --git a/lib/widgets/chip/custom_selectable_chip.dart b/lib/widgets/chip/custom_selectable_chip.dart index 06ccb95f..cfefbbd2 100644 --- a/lib/widgets/chip/custom_selectable_chip.dart +++ b/lib/widgets/chip/custom_selectable_chip.dart @@ -44,7 +44,7 @@ class CustomSelectableChip extends StatelessWidget { label, style: TextStyle( fontSize: 12.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: selected ? activeTextColor : resolvedInactiveTextColor, letterSpacing: -0.02 * 18, height: 1.0, diff --git a/lib/widgets/clarity_interaction_tracker.dart b/lib/widgets/clarity_interaction_tracker.dart new file mode 100644 index 00000000..e27aec86 --- /dev/null +++ b/lib/widgets/clarity_interaction_tracker.dart @@ -0,0 +1,200 @@ +import 'package:flutter/material.dart'; +import 'package:clarity_flutter/clarity_flutter.dart'; + +/// A wrapper widget that tracks user interactions with Clarity for UX frustration analysis. +/// Helps identify rage clicks, dead clicks, and rapid scrolls. +/// +/// Usage: +/// ```dart +/// ClarityInteractionTracker( +/// semanticLabel: 'Login Button', +/// interactionType: ClarityInteractionType.button, +/// onTap: () { /* your action */ }, +/// child: YourWidget(), +/// ) +/// ``` +class ClarityInteractionTracker extends StatelessWidget { + final Widget child; + final String semanticLabel; + final VoidCallback? onTap; + final ClarityInteractionType interactionType; + final Map? customTags; + final bool enabled; + + const ClarityInteractionTracker({ + super.key, + required this.child, + required this.semanticLabel, + this.onTap, + this.interactionType = ClarityInteractionType.button, + this.customTags, + this.enabled = true, + }); + + void _logInteraction(BuildContext context) { + if (!enabled) return; + + try { + // Set common tags + Clarity.setCustomTag('interaction_type', interactionType.name); + Clarity.setCustomTag('interaction_label', + semanticLabel.length > 100 ? semanticLabel.substring(0, 100) : semanticLabel + ); + Clarity.setCustomTag('interaction_enabled', enabled.toString()); + + // Set route/screen name if available + final route = ModalRoute.of(context); + if (route != null && route.settings.name != null) { + Clarity.setCustomTag('screen_route', route.settings.name!); + } + + // Add custom tags if provided + if (customTags != null) { + customTags!.forEach((key, value) { + // Ensure key and value fit Clarity's 255 char limit + final truncatedValue = value.length > 250 ? value.substring(0, 250) : value; + Clarity.setCustomTag(key, truncatedValue); + }); + } + + // Send event to Clarity + Clarity.sendCustomEvent('user_interaction_${interactionType.name}'); + } catch (e) { + // Silence Clarity errors to not interrupt user flow + debugPrint('Clarity interaction tracking error: $e'); + } + } + + @override + Widget build(BuildContext context) { + return Semantics( + label: semanticLabel, + button: interactionType == ClarityInteractionType.button, + enabled: enabled, + excludeSemantics: false, + child: GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: enabled && onTap != null + ? () { + _logInteraction(context); + onTap?.call(); + } + : null, + child: child, + ), + ); + } +} + +/// Types of interactions that can be tracked +enum ClarityInteractionType { + button, + link, + card, + listItem, + icon, + image, + input, + custom, +} + +/// Extension to easily wrap any widget with Clarity tracking +extension ClarityTrackingExtension on Widget { + /// Wraps this widget with Clarity interaction tracking + Widget trackWithClarity({ + required String label, + VoidCallback? onTap, + ClarityInteractionType type = ClarityInteractionType.custom, + Map? customTags, + bool enabled = true, + }) { + return ClarityInteractionTracker( + semanticLabel: label, + onTap: onTap, + interactionType: type, + customTags: customTags, + enabled: enabled, + child: this, + ); + } +} + +/// Wrapper for ScrollView to track rapid scrolling behavior +class ClarityScrollTracker extends StatefulWidget { + final Widget child; + final String scrollViewLabel; + final ScrollController? controller; + + const ClarityScrollTracker({ + super.key, + required this.child, + required this.scrollViewLabel, + this.controller, + }); + + @override + State createState() => _ClarityScrollTrackerState(); +} + +class _ClarityScrollTrackerState extends State { + late ScrollController _controller; + bool _isRapidScrolling = false; + DateTime? _lastScrollTime; + int _rapidScrollCount = 0; + + @override + void initState() { + super.initState(); + _controller = widget.controller ?? ScrollController(); + _controller.addListener(_onScroll); + } + + void _onScroll() { + final now = DateTime.now(); + + // Detect rapid scrolling (scroll events within 100ms) + if (_lastScrollTime != null) { + final timeDiff = now.difference(_lastScrollTime!).inMilliseconds; + + if (timeDiff < 100) { + _rapidScrollCount++; + + if (!_isRapidScrolling && _rapidScrollCount > 5) { + _isRapidScrolling = true; + _logRapidScroll(); + } + } else if (timeDiff > 500) { + // Reset if scrolling slows down + _isRapidScrolling = false; + _rapidScrollCount = 0; + } + } + + _lastScrollTime = now; + } + + void _logRapidScroll() { + try { + Clarity.setCustomTag('scroll_type', 'rapid'); + Clarity.setCustomTag('scroll_view', widget.scrollViewLabel); + Clarity.setCustomTag('scroll_position', _controller.position.pixels.toString()); + Clarity.sendCustomEvent('rapid_scroll_detected'); + } catch (e) { + debugPrint('Clarity scroll tracking error: $e'); + } + } + + @override + void dispose() { + if (widget.controller == null) { + _controller.dispose(); + } + super.dispose(); + } + + @override + Widget build(BuildContext context) { + return widget.child; + } +} + diff --git a/lib/widgets/common_bottom_sheet.dart b/lib/widgets/common_bottom_sheet.dart index 5269a8dc..c86bc516 100644 --- a/lib/widgets/common_bottom_sheet.dart +++ b/lib/widgets/common_bottom_sheet.dart @@ -2,43 +2,108 @@ import 'dart:io' show Platform; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; +import 'package:get_it/get_it.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/calender_utils_new.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/presentation/prescriptions/prescription_reminder_view.dart'; +import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/services/permission_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:permission_handler/permission_handler.dart'; class BottomSheetUtils { - showReminderBottomSheet(BuildContext context, DateTime dateTime, String doctorName, String eventId, String appoDateFormatted, String appoTimeFormatted, - {required Function() onSuccess, String? title, String? description, Function(int)? onMultiDateSuccess, bool isMultiAllowed = false}) async { + Future showReminderBottomSheet(BuildContext context, DateTime dateTime, String doctorName, String eventId, String appoDateFormatted, String appoTimeFormatted, + {required Function() onSuccess, String? title, String? description, Function(int)? onMultiDateSuccess, bool isMultiAllowed = false, bool isForAppointment = false}) async { + // Check and request permissions based on platform + bool hasPermission = await _checkAndRequestCalendarPermissions(); + + if (hasPermission) { + // Permission granted, show the reminder selection bottom sheet + await _showReminderBottomSheet(context, dateTime, doctorName, eventId, appoDateFormatted, appoTimeFormatted, + onSuccess: onSuccess, title: title, description: description, onMultiDateSuccess: onMultiDateSuccess, isMultiAllowed: isMultiAllowed); + return true; + } else { + await _showPermissionDeniedDialog(isForAppointment: isForAppointment); + return false; + } + } + + /// Checks and requests calendar permissions for both Android and iOS + /// Returns true if all required permissions are granted + Future _checkAndRequestCalendarPermissions() async { if (Platform.isAndroid) { - if (await PermissionService.isCalendarPermissionEnabled()) { - _showReminderBottomSheet(context, dateTime, doctorName, eventId, appoDateFormatted, appoTimeFormatted, - onSuccess: onSuccess, title: title, description: description, onMultiDateSuccess: onMultiDateSuccess, isMultiAllowed: isMultiAllowed); - } else { - // Utils.showPermissionConsentDialog(context, TranslationBase.of(context).calendarPermission, () async { - // if (await Permission.calendarFullAccess.request().isGranted) { - // _showReminderDialog(context, dateTime, doctorName, eventId, appoDateFormatted, appoTimeFormatted, - // onSuccess: onSuccess, title: title, description: description, onMultiDateSuccess: onMultiDateSuccess, isMultiAllowed: isMultiAllowed); - // } - // }); + // Android: Check existing permission first using PermissionService + bool hasPermission = await PermissionService.isCalendarPermissionEnabled(); + if (hasPermission) { + return true; + } + + // Request calendarFullAccess permission (Android 14+ requires this) + // This internally requests both READ_CALENDAR and WRITE_CALENDAR + PermissionStatus status = await Permission.calendarFullAccess.request(); + + // If calendarFullAccess request didn't show dialog or failed, + // fallback to requesting individual permissions + if (!status.isGranted) { + Map statuses = await [ + Permission.calendarWriteOnly, + ].request(); + + return statuses[Permission.calendarWriteOnly]?.isGranted ?? false; } + + return status.isGranted; } else { - if (await Permission.calendarWriteOnly.request().isGranted) { - if (await Permission.calendarFullAccess.request().isGranted) { - _showReminderBottomSheet(context, dateTime, doctorName, eventId, appoDateFormatted, appoTimeFormatted, - onSuccess: onSuccess, title: title, description: description, onMultiDateSuccess: onMultiDateSuccess, isMultiAllowed: isMultiAllowed); - } + // iOS: Check if we already have full access + PermissionStatus fullAccessStatus = await Permission.calendarFullAccess.status; + + if (fullAccessStatus.isGranted) { + return true; } + + // Request write permission first (required before full access on iOS) + PermissionStatus writeStatus = await Permission.calendarWriteOnly.request(); + if (!writeStatus.isGranted) { + return false; + } + + // Then request full access permission + PermissionStatus fullStatus = await Permission.calendarFullAccess.request(); + return fullStatus.isGranted; } } + /// Shows permission denied dialog with option to open settings + Future _showPermissionDeniedDialog({bool isForAppointment = false}) async { + BuildContext? context = GetIt.instance().navigatorKey.currentContext; + if (context == null) return; + + showCommonBottomSheetWithoutHeight( + context, + title: LocaleKeys.notice.tr(context: context), + child: Utils.getWarningWidget( + loadingText: isForAppointment ? LocaleKeys.calendarPermissionAlertForAppointment.tr() : LocaleKeys.calendarPermissionAlert.tr(), + isShowActionButtons: true, + onCancelTap: () { + GetIt.instance().pop(); + }, + onConfirmTap: () async { + GetIt.instance().pop(); + await openAppSettings(); + }, + ), + callBackFunc: () {}, + isFullScreen: false, + isCloseButtonVisible: true, + ); + } + Future _showReminderBottomSheet(BuildContext providedContext, DateTime dateTime, String doctorName, String eventId, String appoDateFormatted, String appoTimeFormatted, {required Function onSuccess, String? title, String? description, Function(int)? onMultiDateSuccess, bool? isMultiAllowed}) async { showCommonBottomSheetWithoutHeight(providedContext, title: LocaleKeys.setTimerOfReminder.tr(context: providedContext), child: PrescriptionReminderView( @@ -67,6 +132,7 @@ void showCommonBottomSheet(BuildContext context, Function(String?)? callBackFunc, String? title, required double height, + bool isAutoDismiss = false, bool isCloseButtonVisible = true, bool isFullScreen = true, bool isDismissible = true, @@ -82,6 +148,17 @@ void showCommonBottomSheet(BuildContext context, isDismissible: isDismissible, backgroundColor: isSuccessDialog ? AppColors.whiteColor : AppColors.scaffoldBgColor, builder: (BuildContext context) { + if (isAutoDismiss) { + Future.delayed(Duration(seconds: 2), () { + final navContext = getIt.get().navigatorKey.currentContext; + if (navContext != null && Navigator.canPop(navContext)) { + Navigator.of(navContext).pop(); + } + if (callBackFunc != null) { + callBackFunc(null); + } + }); + } return Container( height: height, decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.scaffoldBgColor, borderRadius: 24.h), @@ -162,9 +239,11 @@ void showCommonBottomSheetWithoutHeight( required Widget child, VoidCallback? callBackFunc, String title = "", + bool isConfirmButton = false, bool isCloseButtonVisible = true, bool isFullScreen = true, bool isDismissible = true, + bool isAutoDismiss = false, Widget? titleWidget, bool useSafeArea = false, bool hasBottomPadding = true, @@ -178,7 +257,7 @@ void showCommonBottomSheetWithoutHeight( duration: Duration(milliseconds: 500), reverseDuration: Duration(milliseconds: 300), ), - constraints: BoxConstraints(maxWidth: MediaQuery.sizeOf(context).width //MediaQuery.of(context).size.width, // Full width + constraints: BoxConstraints(maxWidth: MediaQuery.of(context).size.width //MediaQuery.of(context).size.width, // Full width ), context: context, isScrollControlled: true, @@ -188,6 +267,17 @@ void showCommonBottomSheetWithoutHeight( backgroundColor: resolvedBgColor, useSafeArea: useSafeArea, builder: (BuildContext context) { + if (isAutoDismiss) { + Future.delayed(Duration(seconds: 2), () { + final navContext = GetIt.instance().navigatorKey.currentContext; + if (navContext != null && Navigator.canPop(navContext)) { + Navigator.of(navContext).pop(); + } + // if (callBackFunc != null) { + // callBackFunc(); + // } + }); + } return SafeArea( top: false, left: false, @@ -224,7 +314,7 @@ void showCommonBottomSheetWithoutHeight( children: [ titleWidget ?? Expanded( - child: title.toText20(weight: FontWeight.w600), + child: title.toText20(isBold: true), ), if (isCloseButtonVisible) ...[ Utils.buildSvgWithAssets( @@ -295,7 +385,7 @@ void showCommonBottomSheetWithoutHeight( // mainAxisAlignment: MainAxisAlignment.spaceBetween, // crossAxisAlignment: CrossAxisAlignment.center, // children: [ -// titleWidget ?? Expanded(child: title.toText20(weight: FontWeight.w600)), +// titleWidget ?? Expanded(child: title.toText20(isBold: true)), // Utils.buildSvgWithAssets(icon: AppAssets.close_bottom_sheet_icon, iconColor: Color(0xff2B353E)).onPress(() { // Navigator.of(context).pop(); // }), diff --git a/lib/widgets/countdown_timer.dart b/lib/widgets/countdown_timer.dart index 86249fc8..e51f9291 100644 --- a/lib/widgets/countdown_timer.dart +++ b/lib/widgets/countdown_timer.dart @@ -23,91 +23,57 @@ Widget buildTime(Duration duration, {bool isHomePage = false}) { Widget buildTimeColumn(String time, String label, {bool isLast = false}) { return Column( - mainAxisAlignment: MainAxisAlignment.center, children: [ Row( children: [ - buildDigit(time[0]), - buildDigit(time[1]), - if (!isLast) buildTimeSeparator(), + Column( + children: [ + Row( + children: [ + buildDigit(time[0]), + SizedBox(width: 2.w), + buildDigit(time[1]), + ], + ), + SizedBox(height: 4.h), + buildLabel(label), + ], + ), + if (!isLast) ...[ + SizedBox(width: 8.w), + buildTimeSeparator(), + SizedBox(width: 8.w), + ], ], ), - buildLabel(label), ], ); } Widget buildDigit(String digit) { - return Container( - padding: const EdgeInsets.symmetric(horizontal: 10, vertical: 4), - // margin: const EdgeInsets.symmetric(horizontal: 2), - decoration: BoxDecoration( - color: AppColors.whiteColor, - borderRadius: BorderRadius.circular(8), - ), - child: ClipRect( - child: AnimatedSwitcher( - duration: const Duration(milliseconds: 600), - switchInCurve: Curves.easeOutExpo, - switchOutCurve: Curves.easeInExpo, - transitionBuilder: (Widget child, Animation animation) { - return Stack( - children: [ - SlideTransition( - position: Tween( - begin: const Offset(0, -1), - end: const Offset(0, 1), - ).animate(CurvedAnimation( - parent: animation, - curve: Curves.easeOutCubic, - )), - child: FadeTransition( - opacity: animation, - child: child, - ), - ), - SlideTransition( - position: Tween( - begin: const Offset(0, -1), - end: const Offset(0, 0), - ).animate(CurvedAnimation( - parent: animation, - curve: Curves.bounceIn, - )), - child: FadeTransition( - opacity: animation, - child: child, - ), - ), - ], - ); - }, - child: Text( - digit, - key: ValueKey(digit), - style: TextStyle( - fontWeight: FontWeight.bold, - color: Colors.black, - fontSize: 14.f, - ), - ), - ), + return Text( + digit, + style: TextStyle( + fontWeight: FontWeight.bold, + color: Colors.black, + fontSize: 27.f, ), ); } Widget buildLabel(String label) { - return label.toText12(isBold: true); + return label.toText12(isBold: false, color: AppColors.textColor, fontWeight: FontWeight.w500); } Widget buildTimeSeparator() { return Padding( - padding: EdgeInsets.symmetric(horizontal: 2.0), + padding: EdgeInsets.only(bottom: 16.h), child: Text( ":", style: TextStyle( color: Colors.black, - fontSize: 20.f, + fontSize: 28.f, + fontWeight: FontWeight.bold, ), ), ); diff --git a/lib/widgets/custom_tab_bar.dart b/lib/widgets/custom_tab_bar.dart index b93519ca..c2d5d537 100644 --- a/lib/widgets/custom_tab_bar.dart +++ b/lib/widgets/custom_tab_bar.dart @@ -48,6 +48,14 @@ class CustomTabBarState extends State { super.initState(); } + @override + void didUpdateWidget(covariant CustomTabBar oldWidget) { + super.didUpdateWidget(oldWidget); + if (oldWidget.initialIndex != widget.initialIndex) { + selectedIndex = widget.initialIndex; + } + } + @override void dispose() { super.dispose(); @@ -119,10 +127,7 @@ class CustomTabBarState extends State { width: 18.w, iconColor: isSelected ? activeTextColor : inActiveTextColor, ), - tabBar.title.toText13( - weight: isSelected ? FontWeight.w600 : FontWeight.w500, - color: isSelected ? activeTextColor : inActiveTextColor, - letterSpacing: isSelected ? -0.3 : -0.1), + tabBar.title.toText13(color: isSelected ? activeTextColor : inActiveTextColor, letterSpacing: isSelected ? -0.3 : -0.1, isBold: true), ], )).onPress(() { setState(() { diff --git a/lib/widgets/date_range_selector/date_range_calender.dart b/lib/widgets/date_range_selector/date_range_calender.dart index d6e2eadf..463f516a 100644 --- a/lib/widgets/date_range_selector/date_range_calender.dart +++ b/lib/widgets/date_range_selector/date_range_calender.dart @@ -4,6 +4,7 @@ import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; @@ -12,31 +13,68 @@ import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:hmg_patient_app_new/widgets/chip/app_custom_chip_widget.dart'; +import 'package:hmg_patient_app_new/widgets/custom_tab_bar.dart'; +import 'package:hmg_patient_app_new/widgets/date_range_selector/models/calendar_design_type.dart'; +import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_calendar_model.dart'; import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_view_model.dart' show DateRangeSelectorRangeViewModel; import 'package:provider/provider.dart'; import 'package:syncfusion_flutter_datepicker/datepicker.dart'; typedef OnRangeSelected = void Function(DateTime? start, DateTime? end); +typedef OnCalendarTypeChanged = void Function(bool isGregorian); class DateRangeSelector extends StatefulWidget { final OnRangeSelected onRangeSelected; + final CalendarDesignType designType; + final bool showCalendarToggle; + final OnCalendarTypeChanged? onCalendarTypeChanged; + final String? btnTitle; - const DateRangeSelector({super.key, required this.onRangeSelected}); + const DateRangeSelector({ + super.key, + required this.onRangeSelected, + this.designType = CalendarDesignType.defaultUI, + this.showCalendarToggle = true, + this.onCalendarTypeChanged, + this.btnTitle, + }); @override State createState() => _DateRangeSelectorState(); } +enum PickerViewMode { + date, + month, + year, +} + class _DateRangeSelectorState extends State { late DateRangePickerController _calendarController; DateTime? start; DateTime? end; late DateRangeSelectorRangeViewModel model; + PickerViewMode _viewMode = PickerViewMode.date; + + // Cache for Hijri conversions to avoid repeated calculations + final Map _hijriCache = {}; + + // Track the current Hijri month/year being displayed (for header display accuracy) + HijriGregDate? _currentHijriDisplay; + @override void initState() { _calendarController = DateRangePickerController(); scheduleMicrotask(() { - _calendarController.selectedRange = PickerDateRange(model.fromDate,model.toDate); + if (widget.designType == CalendarDesignType.designV2) { + // For V2, select today's date by default + final today = DateTime.now(); + _calendarController.selectedDate = today; + model.updateSelectedDate(today); + } else { + // For default UI, use range selection + _calendarController.selectedRange = PickerDateRange(model.fromDate, model.toDate); + } }); super.initState(); } @@ -45,9 +83,12 @@ class _DateRangeSelectorState extends State { Widget build(BuildContext context) { model = Provider.of(context); + _calendarController.selectedRange = PickerDateRange(model.fromDate, model.toDate); - _calendarController.selectedRange = PickerDateRange(model.fromDate,model.toDate); + return widget.designType == CalendarDesignType.designV2 ? _buildDesignV2(widget.btnTitle) : _buildDefaultUI(); + } + Widget _buildDefaultUI() { return Padding( padding: EdgeInsets.symmetric(horizontal: 0.h), child: Column( @@ -57,14 +98,8 @@ class _DateRangeSelectorState extends State { builder: (_, model, __) => selectionChip(model), ).paddingOnly(bottom: 16.h), Container( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - color: AppColors.whiteColor, - borderRadius: 20.h, - hasShadow: false, - ), - padding: EdgeInsets.all( - 16.h - ), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: false), + padding: EdgeInsets.all(16.h), child: Column( children: [ Row( @@ -72,13 +107,8 @@ class _DateRangeSelectorState extends State { fromDateComponent(), Text( LocaleKeys.to.tr(context: context), - style: TextStyle( - color: AppColors.calenderTextColor, - fontSize: 14.f, - fontWeight: FontWeight.w500, - letterSpacing: -.2 - ), - ).paddingSymmetrical(24.h,0.h), + style: TextStyle(color: AppColors.calenderTextColor, fontSize: 14.f, fontWeight: FontWeight.w600, letterSpacing: -.2), + ).paddingSymmetrical(24.h, 0.h), toDateComponent(), ], ), @@ -109,7 +139,7 @@ class _DateRangeSelectorState extends State { viewHeaderStyle: DateRangePickerViewHeaderStyle( backgroundColor: AppColors.whiteColor, textStyle: TextStyle( - fontSize: 14.f, + fontSize: 12.f, fontWeight: FontWeight.w600, letterSpacing: -0.46, color: AppColors.textColor, @@ -121,23 +151,29 @@ class _DateRangeSelectorState extends State { selectionShape: DateRangePickerSelectionShape.rectangle, selectionRadius: 12.h, selectionColor: AppColors.transparent, + selectionTextStyle: TextStyle( + fontFamily: "Poppins", + ), startRangeSelectionColor: AppColors.primaryRedColor, endRangeSelectionColor: AppColors.primaryRedColor, - rangeSelectionColor: - AppColors.primaryRedColor.withOpacity(0.1), + rangeSelectionColor: AppColors.primaryRedColor.withOpacity(0.1), + rangeTextStyle: TextStyle( + fontFamily: "Poppins", + ), todayHighlightColor: Colors.transparent, monthCellStyle: DateRangePickerMonthCellStyle( textStyle: TextStyle( + fontFamily: "Poppins", fontSize: 12.f, color: AppColors.textColor, ), todayTextStyle: TextStyle( + fontFamily: "Poppins", color: AppColors.textColor, fontWeight: FontWeight.bold, ), ), - onSelectionChanged: - (DateRangePickerSelectionChangedArgs args) { + onSelectionChanged: (DateRangePickerSelectionChangedArgs args) { print("the value is ${args.value}"); if (args.value is PickerDateRange) { final PickerDateRange range = args.value; @@ -145,11 +181,10 @@ class _DateRangeSelectorState extends State { end = range.endDate; model.fromDate = start; model.toDate = end; - if(end == null) { - scheduleMicrotask((){ + if (end == null) { + scheduleMicrotask(() { model.resetCurrentlySelectedRange(); }); - } } }, @@ -161,7 +196,7 @@ class _DateRangeSelectorState extends State { Row( children: [ Consumer( - builder: (_, model, __) => Visibility( + builder: (_, model, __) => Visibility( visible: (model.fromDate != null || model.toDate != null), child: Expanded( child: Row( @@ -184,7 +219,9 @@ class _DateRangeSelectorState extends State { height: 56.h, ), ), - SizedBox(width: 16.h,) + SizedBox( + width: 16.h, + ) ], ), ), @@ -202,7 +239,6 @@ class _DateRangeSelectorState extends State { textColor: AppColors.textGreenColor, icon: AppAssets.reminder_bell, iconColor: AppColors.textGreenColor, - height: 56.h, ), ), @@ -213,11 +249,620 @@ class _DateRangeSelectorState extends State { ); } + Widget _buildDesignV2(String? btnTitle) { + return ChangeNotifierProvider( + create: (_) => DateRangCalenderModel(appState: getIt(), navigationService: getIt(), dialogService: getIt()), + child: Consumer( + builder: (context, calendarModel, child) { + // Check if current language is Arabic + final bool isArabic = context.locale.languageCode == 'ar'; + + return Padding( + padding: EdgeInsets.symmetric(horizontal: 0.h), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: [ + // Conditionally show calendar toggle + if (widget.showCalendarToggle) + Selector( + selector: (_, model) => model.getSelectedTabIndex, + builder: (context, selectedIndex, child) => CustomTabBar( + activeBackgroundColor: AppColors.secondaryLightRedColor, + activeTextColor: AppColors.primaryRedColor, + initialIndex: selectedIndex, + tabs: [CustomTabBarModel(null, LocaleKeys.gregorianDate.tr()), CustomTabBarModel(null, LocaleKeys.hijriDate.tr())], + onTabChange: (index) { + final calendarModel = Provider.of(context, listen: false); + calendarModel.setTabIndex(index); + + // Notify parent widget about calendar type change (e.g., AuthenticationViewModel) + final isGregorian = index == 0; + widget.onCalendarTypeChanged?.call(isGregorian); + print('📅 Calendar type changed: ${isGregorian ? "Gregorian" : "Hijri"}'); + + // Reset view mode and Hijri display when switching calendar types + setState(() { + _viewMode = PickerViewMode.date; + _currentHijriDisplay = null; + }); + }, + ), + ), + if (widget.showCalendarToggle) + SizedBox( + height: 16.w, + ), + + Container( + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 20.h, hasShadow: false), + padding: EdgeInsets.all(16.h), + child: Column( + children: [ + // Show custom header for both calendar types + _buildCalendarHeader(isArabic, calendarModel), + // Wrap all views in SizedBox for consistent height + SizedBox( + height: 272.h, // Fixed height for calendar body only (no header) + child: Material( + color: AppColors.whiteColor, + // Rebuild when view mode or calendar type changes + key: ValueKey('${calendarModel.getSelectedTabIndex}-$_viewMode'), + child: _viewMode == PickerViewMode.month + ? _buildMonthPicker(isArabic, calendarModel) + : _viewMode == PickerViewMode.year + ? _buildYearPicker(isArabic, calendarModel) + : (calendarModel.isHijri ? _buildHijriCalendar(isArabic) : _buildGregorianCalendar(isArabic)), + ), + ), + ], + ), + ), + // Only Select button for V2 (no cancel button) + CustomButton( + text: btnTitle ?? LocaleKeys.select.tr(context: context), + onPressed: () { + // Don't reset calendar type - keep user's preference + Navigator.of(context).pop(); + // For single date selection, pass the same date as both start and end + widget.onRangeSelected(model.fromDate, model.fromDate); + }, + backgroundColor: AppColors.primaryRedColor, + borderColor: Colors.transparent, + textColor: AppColors.whiteColor, + height: 56.h, + ).paddingOnly(top: 24.h), + // Bottom image from ui2.png + SizedBox(height: 16.h), + ], + ), + ); + }, + ), + ); + } + + // Build Gregorian calendar (Design V2 - Single Date Selection) + Widget _buildGregorianCalendar(bool isArabic) { + return SfDateRangePicker( + controller: _calendarController, + selectionMode: DateRangePickerSelectionMode.single, + showNavigationArrow: false, + headerHeight: 0, + // Hide built-in header, use custom header + backgroundColor: AppColors.whiteColor, + monthViewSettings: DateRangePickerMonthViewSettings( + viewHeaderStyle: DateRangePickerViewHeaderStyle( + backgroundColor: AppColors.whiteColor, + textStyle: TextStyle( + fontSize: 12.f, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + color: AppColors.textColor, + ), + ), + showTrailingAndLeadingDates: false, + dayFormat: "EEE", + ), + // Custom cell builder for square border selection + cellBuilder: (BuildContext context, DateRangePickerCellDetails cellDetails) { + if (cellDetails.date != DateTime(0)) { + final isToday = cellDetails.date.day == DateTime.now().day && cellDetails.date.month == DateTime.now().month && cellDetails.date.year == DateTime.now().year; + final isSelected = _calendarController.selectedDate != null && + cellDetails.date.day == _calendarController.selectedDate!.day && + cellDetails.date.month == _calendarController.selectedDate!.month && + cellDetails.date.year == _calendarController.selectedDate!.year; + + return Container( + alignment: Alignment.center, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8.h), + border: isSelected ? Border.all(color: AppColors.primaryRedColor, width: 2) : null, + color: Colors.transparent, + ), + child: Text( + cellDetails.date.day.toString(), + style: TextStyle( + fontFamily: "Poppins", + fontSize: 12.f, + color: AppColors.textColor, + fontWeight: isToday ? FontWeight.bold : (isSelected ? FontWeight.w600 : FontWeight.normal), + ), + ), + ); + } + return Container(); + }, + selectionShape: DateRangePickerSelectionShape.rectangle, + selectionRadius: 8.h, + selectionColor: Colors.transparent, + selectionTextStyle: TextStyle( + fontFamily: "Poppins", + color: AppColors.textColor, + fontWeight: FontWeight.w600, + ), + todayHighlightColor: Colors.transparent, + monthCellStyle: DateRangePickerMonthCellStyle( + textStyle: TextStyle( + fontFamily: "Poppins", + fontSize: 12.f, + color: AppColors.textColor, + ), + todayTextStyle: TextStyle( + fontFamily: "Poppins", + color: AppColors.textColor, + fontWeight: FontWeight.bold, + ), + ), + onViewChanged: (DateRangePickerViewChangedArgs args) { + // Trigger rebuild when month changes + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted) { + setState(() {}); + } + }); + }, + onSelectionChanged: (DateRangePickerSelectionChangedArgs args) { + if (args.value is DateTime) { + setState(() { + start = args.value; + end = args.value; + }); + model.updateSelectedDate(args.value); + } + }, + ); + } + + // Build Hijri calendar (Design V2 - Single Date Selection) + // Note: SfDateRangePicker doesn't have built-in Hijri support + // Using Gregorian calendar with Hijri date conversion in the model + Widget _buildHijriCalendar(bool isArabic) { + final calendarModel = Provider.of(context, listen: false); + + return SfDateRangePicker( + controller: _calendarController, + selectionMode: DateRangePickerSelectionMode.single, + showNavigationArrow: false, + headerHeight: 0, + backgroundColor: AppColors.whiteColor, + monthViewSettings: DateRangePickerMonthViewSettings( + viewHeaderStyle: DateRangePickerViewHeaderStyle( + backgroundColor: AppColors.whiteColor, + textStyle: TextStyle( + fontSize: 12.f, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + color: AppColors.textColor, + ), + ), + showTrailingAndLeadingDates: false, + dayFormat: "EEE", + ), + cellBuilder: (BuildContext context, DateRangePickerCellDetails cellDetails) { + if (cellDetails.date != DateTime(0)) { + // Use cached Hijri conversion + final dateKey = '${cellDetails.date.year}-${cellDetails.date.month}-${cellDetails.date.day}'; + final hijriDate = _hijriCache.putIfAbsent(dateKey, () => calendarModel.gregorianToHijri(cellDetails.date)); + + final isToday = cellDetails.date.day == DateTime.now().day && cellDetails.date.month == DateTime.now().month && cellDetails.date.year == DateTime.now().year; + final isSelected = _calendarController.selectedDate != null && + cellDetails.date.day == _calendarController.selectedDate!.day && + cellDetails.date.month == _calendarController.selectedDate!.month && + cellDetails.date.year == _calendarController.selectedDate!.year; + + return Container( + alignment: Alignment.center, + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8.h), + border: isSelected ? Border.all(color: AppColors.primaryRedColor, width: 2) : null, + color: Colors.transparent, + ), + child: Text( + hijriDate.day.toString(), + style: TextStyle( + fontFamily: "Poppins", + fontSize: 12.f, + color: AppColors.textColor, + fontWeight: isToday ? FontWeight.bold : (isSelected ? FontWeight.w600 : FontWeight.normal), + ), + ), + ); + } + return Container(); + }, + selectionShape: DateRangePickerSelectionShape.rectangle, + selectionRadius: 8.h, + selectionColor: Colors.transparent, + selectionTextStyle: TextStyle( + fontFamily: "Poppins", + color: AppColors.textColor, + fontWeight: FontWeight.w600, + ), + todayHighlightColor: Colors.transparent, + monthCellStyle: DateRangePickerMonthCellStyle( + textStyle: TextStyle( + fontFamily: "Poppins", + fontSize: 12.f, + color: AppColors.textColor, + ), + todayTextStyle: TextStyle( + fontFamily: "Poppins", + color: AppColors.textColor, + fontWeight: FontWeight.bold, + ), + ), + onViewChanged: (DateRangePickerViewChangedArgs args) { + // Clear cache when month changes to avoid stale data + _hijriCache.clear(); + WidgetsBinding.instance.addPostFrameCallback((_) { + if (mounted) { + setState(() {}); + } + }); + }, + onSelectionChanged: (DateRangePickerSelectionChangedArgs args) { + if (args.value is DateTime) { + setState(() { + start = args.value; + end = args.value; + }); + model.updateSelectedDate(args.value); + } + }, + ); + } + + // Build unified calendar header for both Gregorian and Hijri + Widget _buildCalendarHeader(bool isArabic, DateRangCalenderModel calendarModel) { + final displayedDate = _calendarController.displayDate ?? DateTime.now(); + + String monthText; + String yearText; + + if (calendarModel.isHijri) { + // Use tracked Hijri display date if available, otherwise convert from displayed Gregorian date + final hijriDate = _currentHijriDisplay ?? calendarModel.gregorianToHijri(displayedDate); + final monthName = calendarModel.getMonthNameLocalized(hijriDate.month, isArabic); + monthText = monthName; + yearText = hijriDate.year.toString(); + } else { + final monthNames = isArabic + ? ['يناير', 'فبراير', 'مارس', 'أبريل', 'مايو', 'يونيو', 'يوليو', 'أغسطس', 'سبتمبر', 'أكتوبر', 'نوفمبر', 'ديسمبر'] + : ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']; + monthText = monthNames[displayedDate.month - 1]; + yearText = displayedDate.year.toString(); + } + + return Padding( + padding: EdgeInsets.only(bottom: 8.h), + child: SizedBox( + height: 40.h, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + Row( + children: [ + // Month text - clickable + GestureDetector( + onTap: () { + setState(() { + _viewMode = _viewMode == PickerViewMode.month ? PickerViewMode.date : PickerViewMode.month; + }); + }, + child: Text( + monthText, + style: TextStyle( + fontSize: 18.f, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + color: AppColors.primaryRedColor, + fontFamily: "Poppins", + ), + textAlign: isArabic ? TextAlign.right : TextAlign.left, + ), + ), + SizedBox(width: 8.h), + // Year text - clickable + GestureDetector( + onTap: () { + setState(() { + _viewMode = _viewMode == PickerViewMode.year ? PickerViewMode.date : PickerViewMode.year; + }); + }, + child: Text( + yearText, + style: TextStyle( + fontSize: 18.f, + fontWeight: FontWeight.w600, + letterSpacing: -0.46, + color: AppColors.primaryRedColor, + fontFamily: "Poppins", + ), + textAlign: isArabic ? TextAlign.right : TextAlign.left, + ), + ), + ], + ), + Row( + children: [ + IconButton( + icon: Icon(Icons.chevron_left, color: AppColors.primaryRedColor), + onPressed: () { + if (_viewMode == PickerViewMode.date) { + _calendarController.backward!(); + // Update tracked Hijri display when navigating months + if (calendarModel.isHijri) { + setState(() { + _currentHijriDisplay = null; // Will recalculate on next build + }); + } + } else if (_viewMode == PickerViewMode.year) { + // Navigate years backward by 12 + final currentDate = _calendarController.displayDate ?? DateTime.now(); + if (calendarModel.isHijri) { + // For Hijri, convert back and forth + final hijriDate = _currentHijriDisplay ?? calendarModel.gregorianToHijri(currentDate); + try { + final newHijriDate = HijriGregDate(day: 1, month: hijriDate.month, year: hijriDate.year - 12); + final newGregorianDate = calendarModel.hijriToGregorian(newHijriDate); + _calendarController.displayDate = DateTime(newGregorianDate.year, newGregorianDate.month, 1); + _currentHijriDisplay = newHijriDate; + } catch (e) { + // Fallback + _calendarController.displayDate = DateTime(currentDate.year - 10, currentDate.month, 1); + } + } else { + _calendarController.displayDate = DateTime(currentDate.year - 12, currentDate.month, 1); + } + setState(() {}); + } + }, + padding: EdgeInsets.zero, + constraints: BoxConstraints(), + ), + SizedBox(width: 8.h), + IconButton( + icon: Icon(Icons.chevron_right, color: AppColors.primaryRedColor), + onPressed: () { + if (_viewMode == PickerViewMode.date) { + _calendarController.forward!(); + // Update tracked Hijri display when navigating months + if (calendarModel.isHijri) { + setState(() { + _currentHijriDisplay = null; // Will recalculate on next build + }); + } + } else if (_viewMode == PickerViewMode.year) { + // Navigate years forward by 12 + final currentDate = _calendarController.displayDate ?? DateTime.now(); + if (calendarModel.isHijri) { + // For Hijri, convert back and forth + final hijriDate = _currentHijriDisplay ?? calendarModel.gregorianToHijri(currentDate); + try { + final newHijriDate = HijriGregDate(day: 1, month: hijriDate.month, year: hijriDate.year + 12); + final newGregorianDate = calendarModel.hijriToGregorian(newHijriDate); + _calendarController.displayDate = DateTime(newGregorianDate.year, newGregorianDate.month, 1); + _currentHijriDisplay = newHijriDate; + } catch (e) { + // Fallback + _calendarController.displayDate = DateTime(currentDate.year + 10, currentDate.month, 1); + } + } else { + _calendarController.displayDate = DateTime(currentDate.year + 12, currentDate.month, 1); + } + setState(() {}); + } + }, + padding: EdgeInsets.zero, + constraints: BoxConstraints(), + ), + ], + ), + ], + ), + ), + ); + } + + // Build month picker grid + Widget _buildMonthPicker(bool isArabic, DateRangCalenderModel calendarModel) { + final displayedDate = _calendarController.displayDate ?? DateTime.now(); + final currentDate = DateTime.now(); + + int currentMonth; + int currentYear; + int displayedYear; + + if (calendarModel.isHijri) { + // For Hijri calendar + final hijriCurrent = calendarModel.gregorianToHijri(currentDate); + final hijriDisplayed = calendarModel.gregorianToHijri(displayedDate); + currentMonth = hijriCurrent.month; + currentYear = hijriCurrent.year; + displayedYear = hijriDisplayed.year; + } else { + // For Gregorian calendar + currentMonth = currentDate.month; + currentYear = currentDate.year; + displayedYear = displayedDate.year; + } + + List monthNames; + if (calendarModel.isHijri) { + monthNames = isArabic ? DateRangCalenderModel.hijriMonthNamesArabic : DateRangCalenderModel.hijriMonthNamesEnglish; + } else { + monthNames = isArabic ? DateRangCalenderModel.gregorianMonthNamesArabic : DateRangCalenderModel.gregorianMonthNamesEnglish; + } + + return GridView.builder( + padding: EdgeInsets.all(8.h), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(crossAxisCount: 3, childAspectRatio: 2.5, crossAxisSpacing: 8.h, mainAxisSpacing: 8.h), + itemCount: 12, + itemBuilder: (context, index) { + final monthIndex = index + 1; + final isCurrentMonth = currentMonth == monthIndex && currentYear == displayedYear; + + return GestureDetector( + onTap: () { + // Update the displayed month based on calendar type + if (calendarModel.isHijri) { + // Convert Hijri month to Gregorian date + try { + final hijriDate = HijriGregDate(day: 1, month: monthIndex, year: displayedYear); + final gregorianDate = calendarModel.hijriToGregorian(hijriDate); + _calendarController.displayDate = DateTime(gregorianDate.year, gregorianDate.month, 1); + // Track the Hijri month/year for accurate header display + _currentHijriDisplay = hijriDate; + // Clear cache since we changed the month + _hijriCache.clear(); + } catch (e) { + // Fallback if conversion fails + _calendarController.displayDate = DateTime(displayedDate.year, monthIndex, 1); + } + } else { + // Gregorian month - direct update + _calendarController.displayDate = DateTime(displayedYear, monthIndex, 1); + } + + // Switch back to date view + setState(() { + _viewMode = PickerViewMode.date; + }); + }, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8.h), + border: isCurrentMonth ? Border.all(color: AppColors.primaryRedColor, width: 2) : null, + color: Colors.transparent, + ), + child: Center( + child: Text( + monthNames[index], + style: TextStyle( + fontFamily: "Poppins", + fontSize: 14.f, + color: AppColors.textColor, + fontWeight: isCurrentMonth ? FontWeight.w600 : FontWeight.normal, + ), + textAlign: TextAlign.center, + ), + ), + ), + ); + }, + ); + } + + // Build year picker grid + Widget _buildYearPicker(bool isArabic, DateRangCalenderModel calendarModel) { + final displayedDate = _calendarController.displayDate ?? DateTime.now(); + final currentYear = DateTime.now().year; + + int displayedYear; + int currentDisplayYear; + int startYear; + + if (calendarModel.isHijri) { + // For Hijri calendar + final hijriDisplayed = calendarModel.gregorianToHijri(displayedDate); + final hijriCurrent = calendarModel.gregorianToHijri(DateTime.now()); + displayedYear = hijriDisplayed.year; + currentDisplayYear = hijriCurrent.year; + startYear = (displayedYear ~/ 12) * 12; + } else { + // For Gregorian calendar + displayedYear = displayedDate.year; + currentDisplayYear = currentYear; + startYear = (displayedYear ~/ 12) * 12; + } + + return GridView.builder( + padding: EdgeInsets.all(8.h), + gridDelegate: SliverGridDelegateWithFixedCrossAxisCount( + crossAxisCount: 3, + childAspectRatio: 2.5, + crossAxisSpacing: 8.h, + mainAxisSpacing: 8.h, + ), + itemCount: 12, + itemBuilder: (context, index) { + final year = startYear + index; + final isCurrentYear = currentDisplayYear == year; + + return GestureDetector( + onTap: () { + // Update the displayed year based on calendar type + if (calendarModel.isHijri) { + // Convert Hijri year to Gregorian date + try { + final currentHijriMonth = _currentHijriDisplay?.month ?? calendarModel.gregorianToHijri(displayedDate).month; + final hijriDate = HijriGregDate(day: 1, month: currentHijriMonth, year: year); + final gregorianDate = calendarModel.hijriToGregorian(hijriDate); + _calendarController.displayDate = DateTime(gregorianDate.year, gregorianDate.month, 1); + // Track the Hijri month/year for accurate header display + _currentHijriDisplay = hijriDate; + } catch (e) { + // Fallback if conversion fails + _calendarController.displayDate = DateTime(displayedDate.year, displayedDate.month, 1); + } + } else { + // Gregorian year - direct update + _calendarController.displayDate = DateTime(year, displayedDate.month, 1); + } + + // Switch back to date view + setState(() { + _viewMode = PickerViewMode.date; + }); + }, + child: Container( + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(8.h), + border: isCurrentYear ? Border.all(color: AppColors.primaryRedColor, width: 2) : null, + color: Colors.transparent, + ), + child: Center( + child: Text( + year.toString(), + style: TextStyle( + fontFamily: "Poppins", + fontSize: 14.f, + color: AppColors.textColor, + fontWeight: isCurrentYear ? FontWeight.w600 : FontWeight.normal, + ), + textAlign: TextAlign.center, + ), + ), + ), + ); + }, + ); + } + fromDateComponent() { return Consumer( builder: (_, model, __) { - return displayDate(LocaleKeys.startDate.tr(context: context), - model.getDateString(model.fromDate), model.fromDate == null); + return displayDate(LocaleKeys.startDate.tr(context: context), model.getDateString(model.fromDate), model.fromDate == null); }, ); } @@ -225,21 +870,16 @@ class _DateRangeSelectorState extends State { toDateComponent() { return Consumer( builder: (_, model, __) { - return displayDate(LocaleKeys.endDate.tr(context: context), - model.getDateString(model.toDate), model.toDate == null); + return displayDate(LocaleKeys.endDate.tr(context: context), model.getDateString(model.toDate), model.toDate == null); }, ); } displayDate(String label, String? date, bool isNotSelected) => Expanded( - child: Row( + child: Row( spacing: 12.h, children: [ - Utils.buildSvgWithAssets( - icon: AppAssets.rangeCalendar, - iconColor: isNotSelected ? AppColors.borderOnlyColor: AppColors.blackColor , - height: 24, - width: 24), + Utils.buildSvgWithAssets(icon: AppAssets.rangeCalendar, iconColor: isNotSelected ? AppColors.borderOnlyColor : AppColors.blackColor, height: 24, width: 24), Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ @@ -248,7 +888,7 @@ class _DateRangeSelectorState extends State { style: TextStyle( color: AppColors.inputLabelTextColor, fontSize: 12.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), ), Text( @@ -256,14 +896,14 @@ class _DateRangeSelectorState extends State { style: TextStyle( color: AppColors.textColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), ) ], ) ], ), - ); + ); selectionChip(DateRangeSelectorRangeViewModel model) { return Row( @@ -271,77 +911,67 @@ class _DateRangeSelectorState extends State { children: [ AppCustomChipWidget( labelText: LocaleKeys.thisWeek.tr(context: context), - backgroundColor: model.currentlySelectedRange == Range.WEEKLY - ? AppColors.primaryRedColor.withOpacity(0.1) - : AppColors.whiteColor, + backgroundColor: model.currentlySelectedRange == Range.WEEKLY ? AppColors.primaryRedColor.withOpacity(0.1) : AppColors.whiteColor, shape: RoundedRectangleBorder( side: BorderSide( - color: model.currentlySelectedRange == Range.WEEKLY - ? AppColors.primaryRedBorderColor - : AppColors.chipBorderColorOpacity20, + color: model.currentlySelectedRange == Range.WEEKLY ? AppColors.primaryRedBorderColor : AppColors.chipBorderColorOpacity20, width: 1, ), borderRadius: BorderRadius.circular(10)), - ).onPress((){ + ).onPress(() { _calendarController.selectedRange = null; model.currentlySelectedRange = Range.WEEKLY; model.calculateDatesFromRange(); }), AppCustomChipWidget( labelText: LocaleKeys.lastMonth.tr(context: context), - backgroundColor: model.currentlySelectedRange == Range.LAST_MONTH - ? AppColors.primaryRedColor.withOpacity(0.1) - : AppColors.whiteColor, + backgroundColor: model.currentlySelectedRange == Range.LAST_MONTH ? AppColors.primaryRedColor.withOpacity(0.1) : AppColors.whiteColor, shape: RoundedRectangleBorder( side: BorderSide( - color: model.currentlySelectedRange == Range.LAST_MONTH - ? AppColors.primaryRedBorderColor - : AppColors.chipBorderColorOpacity20, + color: model.currentlySelectedRange == Range.LAST_MONTH ? AppColors.primaryRedBorderColor : AppColors.chipBorderColorOpacity20, width: 1, ), borderRadius: BorderRadius.circular(10)), - ).onPress((){ + ).onPress(() { _calendarController.selectedRange = null; model.currentlySelectedRange = Range.LAST_MONTH; model.calculateDatesFromRange(); }), AppCustomChipWidget( labelText: LocaleKeys.lastSixMonths.tr(context: context), - backgroundColor: model.currentlySelectedRange == Range.LAST_6MONTH - ? AppColors.primaryRedColor.withOpacity(0.1) - : AppColors.whiteColor, + backgroundColor: model.currentlySelectedRange == Range.LAST_6MONTH ? AppColors.primaryRedColor.withOpacity(0.1) : AppColors.whiteColor, shape: RoundedRectangleBorder( side: BorderSide( - color: model.currentlySelectedRange == Range.LAST_6MONTH - ? AppColors.primaryRedBorderColor - : AppColors.chipBorderColorOpacity20, + color: model.currentlySelectedRange == Range.LAST_6MONTH ? AppColors.primaryRedBorderColor : AppColors.chipBorderColorOpacity20, width: 1, ), borderRadius: BorderRadius.circular(10)), - ).onPress((){ + isEnglishOnly: true, + ).onPress(() { _calendarController.selectedRange = null; model.currentlySelectedRange = Range.LAST_6MONTH; model.calculateDatesFromRange(); - }), AppCustomChipWidget( - labelText: "Year ${model.getCurrentYear}", - backgroundColor: model.currentlySelectedRange == Range.THIS_YEAR - ? AppColors.primaryRedColor.withOpacity(0.1) - : AppColors.whiteColor, + richText: Row( + children: [ + "${LocaleKeys.year.tr(context: context)} ".toText10(), + model.getCurrentYear.toString().toText10(isEnglishOnly: true), + ], + ), + labelText: "${LocaleKeys.year.tr(context: context)} ${model.getCurrentYear}", + backgroundColor: model.currentlySelectedRange == Range.THIS_YEAR ? AppColors.primaryRedColor.withOpacity(0.1) : AppColors.whiteColor, shape: RoundedRectangleBorder( side: BorderSide( - color: model.currentlySelectedRange == Range.THIS_YEAR - ? AppColors.primaryRedBorderColor - : AppColors.chipBorderColorOpacity20, + color: model.currentlySelectedRange == Range.THIS_YEAR ? AppColors.primaryRedBorderColor : AppColors.chipBorderColorOpacity20, width: 1, ), borderRadius: BorderRadius.circular(10)), - ).onPress((){ + isEnglishOnly: true, + ).onPress(() { _calendarController.selectedRange = null; model.currentlySelectedRange = Range.THIS_YEAR; model.calculateDatesFromRange(); - }), ], ); diff --git a/lib/widgets/date_range_selector/models/calendar_design_type.dart b/lib/widgets/date_range_selector/models/calendar_design_type.dart new file mode 100644 index 00000000..5cbc8129 --- /dev/null +++ b/lib/widgets/date_range_selector/models/calendar_design_type.dart @@ -0,0 +1,5 @@ +enum CalendarDesignType { + defaultUI, + designV2, +} + diff --git a/lib/widgets/date_range_selector/viewmodel/date_range_calendar_model.dart b/lib/widgets/date_range_selector/viewmodel/date_range_calendar_model.dart new file mode 100644 index 00000000..54c23a72 --- /dev/null +++ b/lib/widgets/date_range_selector/viewmodel/date_range_calendar_model.dart @@ -0,0 +1,555 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/services/dialog_service.dart'; +import 'package:hmg_patient_app_new/services/error_handler_service.dart'; + +// ==================== Hijri Date Classes ==================== + +/// Represents a Hijri date with day, month, and year components. +class HijriGregDate { + final int day; + final int month; + final int year; + + HijriGregDate({required this.day, required this.month, required this.year}) + : assert(day >= 1 && day <= 30, 'Day must be between 1 and 30'), + assert(month >= 1 && month <= 12, 'Month must be between 1 and 12'), + assert(year > 0, 'Year must be positive'); + + @override + String toString() => '$day/$month/$year H'; + + @override + bool operator ==(Object other) { + if (identical(this, other)) return true; + return other is HijriGregDate && other.day == day && other.month == month && other.year == year; + } + + @override + int get hashCode => day.hashCode ^ month.hashCode ^ year.hashCode; +} + +/// Utility class for converting between Hijri and Gregorian calendars. +class HijriGregConverter { + static const int _hijriEpoch = 1948439; + + static HijriGregDate gregorianToHijri(DateTime gregorianDate) { + int julianDay = _gregorianToJulian(gregorianDate); + return _julianToHijri(julianDay); + } + + static DateTime hijriToGregorian(HijriGregDate hijriDate) { + int julianDay = _hijriToJulian(hijriDate); + return _julianToGregorian(julianDay); + } + + static int _gregorianToJulian(DateTime date) { + int year = date.year; + int month = date.month; + int day = date.day; + + if (month <= 2) { + year--; + month += 12; + } + + int a = year ~/ 100; + int b = 2 - a + (a ~/ 4); + + return (365.25 * (year + 4716)).floor() + (30.6001 * (month + 1)).floor() + day + b - 1524; + } + + static DateTime _julianToGregorian(int julianDay) { + int a = julianDay + 32044; + int b = (4 * a + 3) ~/ 146097; + int c = a - (146097 * b) ~/ 4; + int d = (4 * c + 3) ~/ 1461; + int e = c - (1461 * d) ~/ 4; + int m = (5 * e + 2) ~/ 153; + + int day = e - (153 * m + 2) ~/ 5 + 1; + int month = m + 3 - 12 * (m ~/ 10); + int year = 100 * b + d - 4800 + m ~/ 10; + + return DateTime(year, month, day); + } + + static HijriGregDate _julianToHijri(int julianDay) { + int daysSinceEpoch = julianDay - _hijriEpoch; + int hijriYear = (daysSinceEpoch * 33 ~/ 10631) + 1; + + int yearStartJulian = _hijriYearStartJulian(hijriYear); + while (yearStartJulian > julianDay) { + hijriYear--; + yearStartJulian = _hijriYearStartJulian(hijriYear); + } + while (yearStartJulian + _hijriYearLength(hijriYear) <= julianDay) { + hijriYear++; + yearStartJulian = _hijriYearStartJulian(hijriYear); + } + + int dayOfYear = julianDay - yearStartJulian + 1; + int month = 1; + int dayInMonth = dayOfYear; + + while (month <= 12) { + int monthLength = _hijriMonthLength(hijriYear, month); + if (dayInMonth <= monthLength) { + break; + } + dayInMonth -= monthLength; + month++; + } + + if (dayInMonth < 1) dayInMonth = 1; + if (dayInMonth > 30) dayInMonth = 30; + + return HijriGregDate(day: dayInMonth, month: month, year: hijriYear); + } + + static int _hijriToJulian(HijriGregDate hijriDate) { + int yearStart = _hijriYearStartJulian(hijriDate.year); + int dayOfYear = 0; + + for (int i = 1; i < hijriDate.month; i++) { + dayOfYear += _hijriMonthLength(hijriDate.year, i); + } + + dayOfYear += hijriDate.day - 1; + return yearStart + dayOfYear; + } + + static int _hijriYearStartJulian(int hijriYear) { + if (hijriYear <= 1) return _hijriEpoch; + + int totalDays = 0; + for (int year = 1; year < hijriYear; year++) { + totalDays += _hijriYearLength(year); + } + + return _hijriEpoch + totalDays; + } + + static int _hijriYearLength(int year) { + return _isHijriLeapYear(year) ? 355 : 354; + } + + static int _hijriMonthLength(int year, int month) { + if (month <= 0 || month > 12) return 30; + + const List monthLengths = [30, 29, 30, 29, 30, 29, 30, 29, 30, 29, 30, 29]; + int length = monthLengths[month - 1]; + + if (month == 12 && _isHijriLeapYear(year)) { + length = 30; + } + + return length; + } + + static bool _isHijriLeapYear(int year) { + if (year <= 0) return false; + const leapYears = [2, 5, 7, 10, 13, 16, 18, 21, 24, 26, 29]; + int yearInCycle = ((year - 1) % 30) + 1; + return leapYears.contains(yearInCycle); + } + + static int getHijriMonthLength(int year, int month) { + return _hijriMonthLength(year, month); + } + + static bool isHijriLeapYear(int year) { + return _isHijriLeapYear(year); + } +} + +// ==================== Main Model ==================== + +enum CalendarType { + gregorian, + hijri, +} + +class DateRangCalenderModel extends ChangeNotifier { + final AppState appState; + final ErrorHandlerService navigationService; + final DialogService dialogService; + + // Static variable to persist calendar type preference across instances + static CalendarType _persistedCalendarType = CalendarType.gregorian; + static int _persistedTabIndex = 0; + + DateRangCalenderModel({required this.appState, required this.navigationService, required this.dialogService}) { + // Initialize from persisted state + _initializeFromPersistedState(); + } + + int _selectedTabIndex = 0; + CalendarType _calendarType = CalendarType.gregorian; + + void _initializeFromPersistedState() { + // Load from static persisted values + _selectedTabIndex = _persistedTabIndex; + _calendarType = _persistedCalendarType; + } + + // Umm al-Qura calendar adjustment (in days) + // This offset corrects the astronomical calculation to match the official Saudi calendar + static const int _ummAlQuraOffset = -1; + + // Hijri month names in English (short form) + static const List _hijriMonthNamesShort = [ + 'Muh', + 'Saf', + 'Rab I', + 'Rab II', + 'Jum I', + 'Jum II', + 'Raj', + 'Sha', + 'Ram', + 'Shaw', + 'Dhu Q', + 'Dhu H', + ]; + + // Hijri month names in English (full form) - public for month picker + static const List hijriMonthNamesEnglish = [ + 'Muharram', + 'Safar', + 'Rabi\' I', + 'Rabi\' II', + 'Jumada I', + 'Jumada II', + 'Rajab', + 'Sha\'ban', + 'Ramadan', + 'Shawwal', + 'Dhu al-Qi\'dah', + 'Dhu al-Hijjah', + ]; + + // Hijri month names in Arabic (short form) + static const List _hijriMonthNamesShortArabic = [ + 'محرم', + 'صفر', + 'ربيع الأول', + 'ربيع الثاني', + 'جمادى الأولى', + 'جمادى الثانية', + 'رجب', + 'شعبان', + 'رمضان', + 'شوال', + 'ذو القعدة', + 'ذو الحجة', + ]; + + // Hijri month names in Arabic (full form) - public for month picker + static const List hijriMonthNamesArabic = [ + 'محرم', + 'صفر', + 'ربيع الأول', + 'ربيع الثاني', + 'جمادى الأولى', + 'جمادى الثانية', + 'رجب', + 'شعبان', + 'رمضان', + 'شوال', + 'ذو القعدة', + 'ذو الحجة', + ]; + + // Gregorian month names (short form) + static const List _gregorianMonthNames = [ + 'Jan', + 'Feb', + 'Mar', + 'Apr', + 'May', + 'Jun', + 'Jul', + 'Aug', + 'Sep', + 'Oct', + 'Nov', + 'Dec', + ]; + + // Gregorian month names in English (full form) - public for month picker + static const List gregorianMonthNamesEnglish = [ + 'January', + 'February', + 'March', + 'April', + 'May', + 'June', + 'July', + 'August', + 'September', + 'October', + 'November', + 'December', + ]; + + // Gregorian month names in Arabic + static const List _gregorianMonthNamesArabic = [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر', + ]; + + // Gregorian month names in Arabic (full form) - public for month picker + static const List gregorianMonthNamesArabic = [ + 'يناير', + 'فبراير', + 'مارس', + 'أبريل', + 'مايو', + 'يونيو', + 'يوليو', + 'أغسطس', + 'سبتمبر', + 'أكتوبر', + 'نوفمبر', + 'ديسمبر', + ]; + + // Weekday names in English (short form) + static const List _weekdayNamesEnglish = [ + 'Sun', + 'Mon', + 'Tue', + 'Wed', + 'Thu', + 'Fri', + 'Sat', + ]; + + // Weekday names in Arabic (short form) + static const List _weekdayNamesArabic = [ + 'أحد', + 'اثنين', + 'ثلاثاء', + 'أربعاء', + 'خميس', + 'جمعة', + 'سبت', + ]; + + int get getSelectedTabIndex => _selectedTabIndex; + + CalendarType get calendarType => _calendarType; + + set selectedTabIndex(int value) { + _selectedTabIndex = value; + _calendarType = value == 0 ? CalendarType.gregorian : CalendarType.hijri; + notifyListeners(); + } + + void setTabIndex(int index) { + _selectedTabIndex = index; + _calendarType = index == 0 ? CalendarType.gregorian : CalendarType.hijri; + // Persist the selection for next time the widget opens + _persistCalendarTypePreference(); + notifyListeners(); + } + + void _persistCalendarTypePreference() { + // Store the preference in static variables so it persists when widget reopens + _persistedTabIndex = _selectedTabIndex; + _persistedCalendarType = _calendarType; + } + + bool get isGregorian => _calendarType == CalendarType.gregorian; + + bool get isHijri => _calendarType == CalendarType.hijri; + + /// Reset to Gregorian and clear persisted preference + /// Call this only when explicitly needed (e.g., logout) + void reset({bool force = false}) { + if (force) { + // Force reset - clear both instance and persisted state + _selectedTabIndex = 0; + _calendarType = CalendarType.gregorian; + _persistedTabIndex = 0; + _persistedCalendarType = CalendarType.gregorian; + notifyListeners(); + } + // If not forcing, keep the user's preference (persisted state remains) + } + + /// Clear persisted calendar type preference (reset to Gregorian on next open) + static void clearPersistedPreference() { + _persistedTabIndex = 0; + _persistedCalendarType = CalendarType.gregorian; + } + + // ==================== Conversion Methods ==================== + + /// Converts Gregorian DateTime to Hijri date with Umm al-Qura correction + HijriGregDate gregorianToHijri(DateTime gregorianDate) { + // Apply Umm al-Qura offset for accurate Saudi calendar + final adjustedDate = gregorianDate.add(Duration(days: _ummAlQuraOffset)); + return HijriGregConverter.gregorianToHijri(adjustedDate); + } + + /// Converts Hijri date to Gregorian DateTime with Umm al-Qura correction + DateTime hijriToGregorian(HijriGregDate hijriDate) { + final gregorianDate = HijriGregConverter.hijriToGregorian(hijriDate); + // Reverse the Umm al-Qura offset + return gregorianDate.subtract(Duration(days: _ummAlQuraOffset)); + } + + // ==================== Date Formatting Methods ==================== + + /// Formats a date based on the current calendar type + /// Returns formatted string like "14 Apr,26" for Gregorian or "14 Muh,1447" for Hijri + String formatDate(DateTime? date) { + if (date == null) return "-"; + + if (isGregorian) { + return formatGregorianDate(date); + } else { + return formatHijriDate(date); + } + } + + /// Formats a Gregorian date + /// Format: "dd MMM,yy" (e.g., "14 Apr,26") + String formatGregorianDate(DateTime date) { + String year = date.year.toString().substring(2); + String month = _gregorianMonthNames[date.month - 1]; + String day = date.day.toString(); + return '$day $month,$year'; + } + + /// Formats a date as Hijri + /// Format: "dd MMM,yyyy" (e.g., "14 Muh,1447") + String formatHijriDate(DateTime gregorianDate) { + HijriGregDate hijriDate = gregorianToHijri(gregorianDate); + String month = _hijriMonthNamesShort[hijriDate.month - 1]; + return '${hijriDate.day} $month,${hijriDate.year}'; + } + + /// Gets month name based on current calendar type + String getMonthName(int month) { + if (isGregorian) { + return _gregorianMonthNames[month - 1]; + } else { + return _hijriMonthNamesShort[month - 1]; + } + } + + /// Gets month name in Arabic based on current calendar type + String getMonthNameArabic(int month) { + if (isGregorian) { + return _gregorianMonthNamesArabic[month - 1]; + } else { + return _hijriMonthNamesShortArabic[month - 1]; + } + } + + /// Gets month name with language support + String getMonthNameLocalized(int month, bool isArabic) { + return isArabic ? getMonthNameArabic(month) : getMonthName(month); + } + + /// Gets weekday name in English + String getWeekdayName(int weekday) { + // weekday: 1 = Monday, 7 = Sunday in DateTime + // Convert to Sunday = 0 index + int index = weekday % 7; + return _weekdayNamesEnglish[index]; + } + + /// Gets weekday name in Arabic + String getWeekdayNameArabic(int weekday) { + // weekday: 1 = Monday, 7 = Sunday in DateTime + // Convert to Sunday = 0 index + int index = weekday % 7; + return _weekdayNamesArabic[index]; + } + + /// Gets weekday name with language support + String getWeekdayNameLocalized(int weekday, bool isArabic) { + return isArabic ? getWeekdayNameArabic(weekday) : getWeekdayName(weekday); + } + + /// Converts a date string to display format based on calendar type + String formatDateString(String? dateString) { + if (dateString == null || dateString.isEmpty) return "-"; + + try { + DateTime date = DateTime.parse(dateString); + return formatDate(date); + } catch (e) { + return "-"; + } + } + + // ==================== Date Range Methods ==================== + + /// Formats a date range based on current calendar type + /// Returns formatted string like "14 Apr,26 - 20 Apr,26" for Gregorian + String formatDateRange(DateTime? startDate, DateTime? endDate) { + if (startDate == null || endDate == null) return "-"; + + String start = formatDate(startDate); + String end = formatDate(endDate); + return '$start - $end'; + } + + /// Gets the current date in the selected calendar format + String getCurrentDateFormatted() { + return formatDate(DateTime.now()); + } + + // ==================== Calendar Type Specific Helpers ==================== + + /// Gets the year based on calendar type + int getCurrentYear() { + if (isGregorian) { + return DateTime.now().year; + } else { + return gregorianToHijri(DateTime.now()).year; + } + } + + /// Gets formatted year string based on calendar type + String getFormattedYear(DateTime date) { + if (isGregorian) { + return date.year.toString(); + } else { + return gregorianToHijri(date).year.toString(); + } + } + + /// Checks if a year is leap year based on calendar type + bool isLeapYear(int year) { + if (isGregorian) { + return (year % 4 == 0 && year % 100 != 0) || (year % 400 == 0); + } else { + return HijriGregConverter.isHijriLeapYear(year); + } + } + + /// Gets the number of days in a month based on calendar type + int getDaysInMonth(int year, int month) { + if (isGregorian) { + return DateTime(year, month + 1, 0).day; + } else { + return HijriGregConverter.getHijriMonthLength(year, month); + } + } +} diff --git a/lib/widgets/date_range_selector/viewmodel/date_range_view_model.dart b/lib/widgets/date_range_selector/viewmodel/date_range_view_model.dart index 3f67b6a6..e92d0817 100644 --- a/lib/widgets/date_range_selector/viewmodel/date_range_view_model.dart +++ b/lib/widgets/date_range_selector/viewmodel/date_range_view_model.dart @@ -85,4 +85,12 @@ class DateRangeSelectorRangeViewModel extends ChangeNotifier { notifyListeners(); } + /// Update both fromDate and toDate (for single date selection in V2) + void updateSelectedDate(DateTime? date) { + _fromDate = date; + _toDate = date; + _currentlySelectedRange = null; + notifyListeners(); + } + } diff --git a/lib/widgets/datepicker_widget.dart b/lib/widgets/datepicker_widget.dart index bac05512..364897df 100644 --- a/lib/widgets/datepicker_widget.dart +++ b/lib/widgets/datepicker_widget.dart @@ -55,7 +55,7 @@ class DatePickerWidget extends StatelessWidget { labelText, style: TextStyle( fontSize: 12.f, - fontWeight: FontWeight.w500, + // isBold: true, color: Color(0xff898A8D), letterSpacing: -0.2, height: 18 / 12, @@ -102,7 +102,7 @@ class DatePickerWidget extends StatelessWidget { style: TextStyle( fontSize: 14.f, height: 21 / 14, - fontWeight: FontWeight.w500, + // isBold: true, color: (selectedValue != null && selectedValue!.isNotEmpty) ? const Color(0xff2E3039) : const Color(0xffB0B0B0), letterSpacing: -0.2, ), diff --git a/lib/widgets/dialogs/confirm_dialog.dart b/lib/widgets/dialogs/confirm_dialog.dart index 5f7782fa..10889b5d 100644 --- a/lib/widgets/dialogs/confirm_dialog.dart +++ b/lib/widgets/dialogs/confirm_dialog.dart @@ -35,7 +35,7 @@ class ConfirmDialog extends StatelessWidget { Expanded( child: Text( title ?? LocaleKeys.confirm.tr(), - style: TextStyle(fontSize: 24, fontWeight: FontWeight.w600, color: AppColors.blackColor, height: 35 / 24, letterSpacing: -0.96), + style: TextStyle(fontSize: 24, fontWeight: FontWeight.w700, color: AppColors.blackColor, height: 35 / 24, letterSpacing: -0.96), ).paddingOnly(top: 16), ), IconButton( diff --git a/lib/widgets/dropdown/country_dropdown_widget.dart b/lib/widgets/dropdown/country_dropdown_widget.dart index c0efbc98..c1ef39f1 100644 --- a/lib/widgets/dropdown/country_dropdown_widget.dart +++ b/lib/widgets/dropdown/country_dropdown_widget.dart @@ -9,6 +9,7 @@ import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; +import 'dart:ui' as ui; class CustomCountryDropdown extends StatefulWidget { final List countryList; @@ -93,7 +94,7 @@ class CustomCountryDropdownState extends State { children: [ Text( LocaleKeys.phoneNumber.tr(), - style: TextStyle(fontSize: 12.f, height: 1.5, fontWeight: FontWeight.w500, letterSpacing: -1), + style: TextStyle(fontSize: 12.f, height: 1.5, fontWeight: FontWeight.w600, letterSpacing: -1), ), Row( mainAxisAlignment: MainAxisAlignment.start, @@ -138,7 +139,7 @@ class CustomCountryDropdownState extends State { ? selectedCountry!.nameArabic : selectedCountry!.displayName : LocaleKeys.selectCountry.tr(), - style: TextStyle(fontSize: 14.f, height: 21 / 14, fontWeight: FontWeight.w500, letterSpacing: -0.2), + style: TextStyle(fontSize: 14.f, height: 21 / 14, fontWeight: FontWeight.w600, letterSpacing: -0.2), ), ], ); @@ -160,9 +161,13 @@ class CustomCountryDropdownState extends State { AppState appState = getIt.get(); RenderBox renderBox = context.findRenderObject() as RenderBox; Offset offset = renderBox.localToGlobal(Offset.zero); - bool isRtl = appState.getLanguageCode() == "ar"; - double leftPosition = isRtl ? offset.dx + 8 + renderBox.size.width - (!widget.isFromBottomSheet ? renderBox.size.width : 60.h) : offset.dx; + double leftPosition; + if (isRtl) { + leftPosition = offset.dx; + } else { + leftPosition = offset.dx; + } _overlayEntry = OverlayEntry( builder: (context) => Stack( @@ -201,7 +206,7 @@ class CustomCountryDropdownState extends State { if (!widget.isFromBottomSheet) SizedBox(width: 12.h), if (!widget.isFromBottomSheet) Text(appState.getLanguageCode() == "ar" ? country.nameArabic : country.displayName, - style: TextStyle(fontSize: 14.f, height: 21 / 14, fontWeight: FontWeight.w500, letterSpacing: -0.2)), + style: TextStyle(fontSize: 14.f, height: 21 / 14, fontWeight: FontWeight.w600, letterSpacing: -0.2)), ], ), )), @@ -266,7 +271,7 @@ class CustomCountryDropdownState extends State { // if (!widget.isFromBottomSheet) SizedBox(width: 12.h), // if (!widget.isFromBottomSheet) // Text(appState.getLanguageCode() == "ar" ? country.nameArabic : country.displayName, - // style: TextStyle(fontSize: 14.fSize, height: 21 / 14, fontWeight: FontWeight.w500, letterSpacing: -0.2)), + // style: TextStyle(fontSize: 14.fSize, height: 21 / 14, isBold: true, letterSpacing: -0.2)), // ], // ), // )), diff --git a/lib/widgets/dropdown/dropdown_widget.dart b/lib/widgets/dropdown/dropdown_widget.dart index a78b8fa5..32f6b3f1 100644 --- a/lib/widgets/dropdown/dropdown_widget.dart +++ b/lib/widgets/dropdown/dropdown_widget.dart @@ -21,6 +21,7 @@ class DropdownWidget extends StatelessWidget { final Color? labelColor; final String? errorMessage; final bool? hasError; + const DropdownWidget( {Key? key, required this.labelText, @@ -37,8 +38,7 @@ class DropdownWidget extends StatelessWidget { this.leadingIcon, this.labelColor, this.errorMessage, - this.hasError =false - }) + this.hasError = false}) : super(key: key); @override @@ -46,32 +46,33 @@ class DropdownWidget extends StatelessWidget { Widget content = Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, - children: [_buildLabelText(labelColor), _buildDropdown(context),], + children: [ + _buildLabelText(labelColor), + _buildDropdown(context), + ], ); - return Column( - crossAxisAlignment: CrossAxisAlignment.start, - children: [Container( - padding: padding, - alignment: Alignment.center, // This might need adjustment based on layout - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + return Column(crossAxisAlignment: CrossAxisAlignment.start, children: [ + Container( + padding: padding, + alignment: Alignment.center, // This might need adjustment based on layout + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, borderRadius: isAllowRadius ? 15.h : null, - side: isBorderAllowed ? BorderSide(color: hasError! ? Colors.red: const Color(0xffefefef), width: 1) : null, - ), - child: Row( - // Wrap with a Row - crossAxisAlignment: CrossAxisAlignment.center, // Align items vertically in the center - children: [ - if (leadingIcon != null) ...[ - _buildLeadingIcon(), - SizedBox(width: 3.h), + side: isBorderAllowed ? BorderSide(color: hasError! ? Colors.red : const Color(0xffefefef), width: 1) : null, + ), + child: Row( + // Wrap with a Row + crossAxisAlignment: CrossAxisAlignment.center, // Align items vertically in the center + children: [ + if (leadingIcon != null) ...[ + _buildLeadingIcon(), + SizedBox(width: 3.h), + ], + Expanded(child: content), ], - Expanded(child: content), - - ], + ), ), - ), if (hasError! && errorMessage != null) Padding( padding: EdgeInsets.only(top: 4.h, left: 12.h), // Adjust padding as needed @@ -82,16 +83,17 @@ class DropdownWidget extends StatelessWidget { fontSize: 12.f, ), ), - )]); + ) + ]); } Widget _buildLeadingIcon() { return Container( - height: 40.h, - width: 40.h, - margin: EdgeInsets.only(right: 10.h), - padding: EdgeInsets.all(8.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(borderRadius: 10.h, color: AppColors.greyColor), + height: 40.h, + width: 40.h, + margin: EdgeInsets.only(right: 10.h), + padding: EdgeInsets.all(8.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration(borderRadius: 10.h, color: AppColors.greyColor), child: Utils.buildSvgWithAssets(icon: leadingIcon!), ); } @@ -101,7 +103,7 @@ class DropdownWidget extends StatelessWidget { labelText, style: TextStyle( fontSize: 12.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: labelColor ?? Color(0xff898A8D), letterSpacing: -0.2, height: 18 / 12, @@ -116,35 +118,26 @@ class DropdownWidget extends StatelessWidget { final renderBox = context.findRenderObject() as RenderBox; final offset = renderBox.localToGlobal(Offset.zero); final selected = await showMenu( - context: context, - position: RelativeRect.fromLTRB( - offset.dx, - offset.dy + renderBox.size.height, - offset.dx + renderBox.size.width, - 0, - ), - items: dropdownItems - .map( - (e) => PopupMenuItem( - value: e, - child: Text( - e, - style: TextStyle( - fontSize: 14.f, - height: 21 / 14, - fontWeight: FontWeight.w500, - letterSpacing: -0.2, + context: context, + position: RelativeRect.fromLTRB( + offset.dx, + offset.dy + renderBox.size.height, + offset.dx + renderBox.size.width, + 0, + ), + items: dropdownItems + .map( + (e) => PopupMenuItem( + value: e, + child: Text( + e, + style: TextStyle(color: AppColors.textColor, fontSize: 14.f, height: 21 / 14, fontWeight: FontWeight.w600, letterSpacing: -0.2), ), ), - ), - ) - .toList(), - shape: RoundedRectangleBorder( - borderRadius: BorderRadius.circular(12), - - ), - color: Colors.black - ); + ) + .toList(), + shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(12)), + color: AppColors.whiteColor); if (selected != null && onChange != null) { onChange!(selected); @@ -163,9 +156,9 @@ class DropdownWidget extends StatelessWidget { style: TextStyle( fontSize: 14.f, height: 21 / 14, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, // color: (selectedValue != null && selectedValue!.isNotEmpty) ? const Color(0xff2E3039) : const Color(0xffB0B0B0), - color: AppColors.textColor, + color: (selectedValue == null || selectedValue!.isEmpty) ? AppColors.inputLabelTextColor :AppColors.textColor, letterSpacing: -0.2, ), ), diff --git a/lib/widgets/family_files/family_file_add_widget.dart b/lib/widgets/family_files/family_file_add_widget.dart index c4f43248..bd04eae8 100644 --- a/lib/widgets/family_files/family_file_add_widget.dart +++ b/lib/widgets/family_files/family_file_add_widget.dart @@ -4,11 +4,9 @@ import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/dependencies.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; -import 'package:hmg_patient_app_new/core/utils/validation_utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/features/authentication/authentication_view_model.dart'; -import 'package:hmg_patient_app_new/features/medical_file/medical_file_view_model.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -27,41 +25,86 @@ class FamilyFileAddWidget extends StatefulWidget { } class _FamilyFileAddWidgetState extends State { + late AuthenticationViewModel _authVm; + + @override + void initState() { + super.initState(); + + // Get ViewModel reference early + _authVm = getIt.get(); + + // Clear errors when family file add widget is opened + WidgetsBinding.instance.addPostFrameCallback((_) { + _authVm.clearNationalIdError(); + _authVm.clearPhoneNumberError(); + }); + } + + @override + void dispose() { + // Clear errors when family file add widget is closed + // Use post frame callback to avoid calling notifyListeners during dispose + WidgetsBinding.instance.addPostFrameCallback((_) { + _authVm.clearNationalIdError(); + _authVm.clearPhoneNumberError(); + }); + + super.dispose(); + } + @override Widget build(BuildContext context) { - AuthenticationViewModel authVm = getIt.get(); - // TODO: implement build + // Use the stored reference instead of getting it here return Column( crossAxisAlignment: CrossAxisAlignment.start, mainAxisAlignment: MainAxisAlignment.start, mainAxisSize: MainAxisSize.min, children: [ - widget.message.toText16(color: AppColors.textColor, weight: FontWeight.w500), + widget.message.toText16(color: AppColors.textColor, isBold: true), SizedBox(height: 20.h), - Container( - decoration: BoxDecoration(color: AppColors.whiteColor, borderRadius: BorderRadius.circular(24)), - padding: EdgeInsets.symmetric(horizontal: 16.h, vertical: 8.h), - child: Column( + Selector( + selector: (_, model) => model.hasIdAndPhoneError, + builder: (context, hasError, child) { + return Container( + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(24), + border: Border.all( + color: hasError + ? AppColors.primaryRedBorderColor + : Colors.transparent, + width: 1, + ), + ), + padding: EdgeInsets.symmetric(horizontal: 16.h, vertical: 8.h), + child: Column( children: [ CustomCountryDropdown( countryList: CountryEnum.values.where((c) => c != CountryEnum.others).toList(), - onCountryChange: authVm.onCountryChange, + onCountryChange: _authVm.onCountryChange, ).paddingOnly(top: 8.h, bottom: 16.h), Divider(height: 1.h, color: AppColors.spacerLineColor), TextInputWidget( labelText: LocaleKeys.nationalIdNumber.tr(), hintText: "xxxxxxxxx", - controller: authVm.nationalIdController, + controller: _authVm.nationalIdController, isEnable: true, prefix: null, isAllowRadius: true, isBorderAllowed: false, isAllowLeadingIcon: true, - autoFocus: true, + autoFocus: false, keyboardType: TextInputType.number, fontFamily: "Poppins", padding: EdgeInsets.symmetric(vertical: 8.h), leadingIcon: AppAssets.student_card, + hasError: false, // Don't show individual field border + errorMessage: _authVm.nationalIdError, // Show error message if exists + onChange: (value) { + // Clear error when user starts typing + _authVm.clearNationalIdError(); + }, ).paddingOnly(top: 8.h, bottom: 8.h), Divider(height: 1.h, color: AppColors.spacerLineColor), Selector( @@ -70,37 +113,41 @@ class _FamilyFileAddWidgetState extends State { return TextInputWidget( labelText: LocaleKeys.phoneNumber.tr(), hintText: "", - controller: authVm.phoneNumberController, + controller: _authVm.phoneNumberController, isEnable: true, prefix: countryCode, isAllowRadius: true, isBorderAllowed: false, isAllowLeadingIcon: true, - autoFocus: true, + autoFocus: false, keyboardType: TextInputType.number, fontFamily: "Poppins", padding: EdgeInsets.symmetric(vertical: 8.h), leadingIcon: AppAssets.smart_phone, + hasError: false, // Don't show individual field border + errorMessage: _authVm.phoneNumberError, // Show error message if exists + onChange: (value) { + // Clear error when user starts typing + _authVm.clearPhoneNumberError(); + }, ).paddingOnly(top: 8.h, bottom: 4.h); }, ), ], ), + ); + }, ), SizedBox(height: 20.h), CustomButton( - text: LocaleKeys.pleaseVerify.tr(context: context), + text: LocaleKeys.add.tr(context: context), onPressed: () { - FocusScope.of(context).unfocus(); - if (ValidationUtils.isValidatedIdAndPhoneWithCountryValidation( - nationalId: authVm.nationalIdController.text, - selectedCountry: authVm.selectedCountrySignup, - phoneNumber: authVm.phoneNumberController.text, - onOkPress: () { - Navigator.of(context).pop(); - }, - )) { - // authVm.addFamilyMember(otpTypeEnum: OTPTypeEnum.sms, isExcludedUser: true); + // Unfocus all text fields and dismiss keyboard + FocusManager.instance.primaryFocus?.unfocus(); + + // Use ViewModel validation method + if (_authVm.validateIdAndPhone()) { + // _authVm.addFamilyMember(otpTypeEnum: OTPTypeEnum.sms, isExcludedUser: true); if (widget.onVerificationPress != null) { widget.onVerificationPress!(); } @@ -108,7 +155,7 @@ class _FamilyFileAddWidgetState extends State { }, icon: AppAssets.add_icon, height: 56.h, - fontWeight: FontWeight.w600), + isBold: true), SizedBox(height: 20.h), ], ); diff --git a/lib/widgets/graph/CustomBarGraph.dart b/lib/widgets/graph/CustomBarGraph.dart index 2f50f20d..2b3026d1 100644 --- a/lib/widgets/graph/CustomBarGraph.dart +++ b/lib/widgets/graph/CustomBarGraph.dart @@ -85,7 +85,7 @@ class CustomBarChart extends StatelessWidget { this.showBottomTitleDates = true, this.isFullScreeGraph = false, this.secondaryBarColor, - this.bottomLabelFontWeight = FontWeight.w500, + this.bottomLabelFontWeight = FontWeight.w600, this.bottomLabelSize, this.leftLabelInterval, this.leftLabelReservedSize, @@ -139,7 +139,7 @@ class CustomBarChart extends StatelessWidget { TextStyle( color: Colors.black, fontSize: 12.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, ), ); }, diff --git a/lib/widgets/graph/custom_graph.dart b/lib/widgets/graph/custom_graph.dart index d9a69a99..a5c9f897 100644 --- a/lib/widgets/graph/custom_graph.dart +++ b/lib/widgets/graph/custom_graph.dart @@ -31,6 +31,7 @@ import 'package:hmg_patient_app_new/theme/colors.dart'; /// - [showBottomTitleDates]: Whether to show bottom axis labels. /// - [isFullScreeGraph]: Whether the graph is fullscreen. /// - [makeGraphBasedOnActualValue]: Use `actualValue` for plotting. +/// - [isRTL]: Whether the graph should render in right-to-left direction. /// /// Example usage: /// ```dart @@ -70,6 +71,7 @@ class CustomGraph extends StatelessWidget { final bool showLinePoints; final double? cutOffY; final RangeAnnotations? rangeAnnotations; + final bool isRTL; ///creates the left label and provide it to the chart as it will be used by other part of the application so the label will be different for every chart final Widget Function(double) leftLabelFormatter; @@ -98,7 +100,7 @@ class CustomGraph extends StatelessWidget { this.graphShadowColor, this.graphGridColor, this.bottomLabelColor, - this.bottomLabelFontWeight = FontWeight.w500, + this.bottomLabelFontWeight = FontWeight.w600, this.bottomLabelSize, this.leftLabelInterval, this.leftLabelReservedSize, @@ -113,7 +115,8 @@ class CustomGraph extends StatelessWidget { this.showShadow = false, this.showLinePoints = false, this.cutOffY = 0, - this.rangeAnnotations}); + this.rangeAnnotations, + this.isRTL = false}); @override Widget build(BuildContext context) { @@ -122,6 +125,12 @@ class CustomGraph extends StatelessWidget { final resolvedGraphShadowColor = graphShadowColor ?? AppColors.graphGridColor; final resolvedGraphGridColor = graphGridColor ?? AppColors.graphGridColor; + // For RTL, reverse the data points so the graph reads right-to-left + final displayDataPoints = isRTL ? dataPoints.reversed.toList() : dataPoints; + final displaySecondaryDataPoints = (isRTL && secondaryDataPoints != null) + ? secondaryDataPoints!.reversed.toList() + : secondaryDataPoints; + return Material( color: AppColors.whiteColor, child: SizedBox( @@ -176,14 +185,14 @@ class CustomGraph extends StatelessWidget { // Show tooltip for each touched line return touchedSpots.map((spot) { // Determine which dataset this spot belongs to - final isSecondary = secondaryDataPoints != null && spot.barIndex == 1; + final isSecondary = displaySecondaryDataPoints != null && spot.barIndex == 1; final dataPoint = isSecondary - ? secondaryDataPoints![spot.x.toInt()] - : dataPoints[spot.x.toInt()]; + ? displaySecondaryDataPoints[spot.x.toInt()] + : displayDataPoints[spot.x.toInt()]; return LineTooltipItem( '${dataPoint.actualValue} ${dataPoint.unitOfMeasurement ?? ""} - ${dataPoint.displayTime}', - TextStyle(color: Colors.black, fontSize: 12.f, fontWeight: FontWeight.w500), + TextStyle(color: Colors.black, fontSize: 12.f, fontWeight: FontWeight.w600, fontFamily: "Poppins"), ); }).toList(); }, @@ -192,9 +201,19 @@ class CustomGraph extends StatelessWidget { titlesData: FlTitlesData( leftTitles: AxisTitles( sideTitles: SideTitles( - showTitles: true, + showTitles: !isRTL, + reservedSize: leftLabelReservedSize ?? 80, + interval: leftLabelInterval ?? .1, + getTitlesWidget: (value, _) { + return leftLabelFormatter(value); + }, + ), + ), + rightTitles: AxisTitles( + sideTitles: SideTitles( + showTitles: isRTL, reservedSize: leftLabelReservedSize ?? 80, - interval: leftLabelInterval ?? .1, // Let fl_chart handle it + interval: leftLabelInterval ?? .1, getTitlesWidget: (value, _) { return leftLabelFormatter(value); }, @@ -206,30 +225,28 @@ class CustomGraph extends StatelessWidget { showTitles: showBottomTitleDates, reservedSize: bottomLabelReservedSize ?? 20, getTitlesWidget: (value, _) { - return bottomLabelFormatter(value, dataPoints); + return bottomLabelFormatter(value, displayDataPoints); }, interval: 1, // ensures 1:1 mapping with spots ), ), topTitles: AxisTitles(), - rightTitles: AxisTitles(), ), borderData: FlBorderData( show: true, - border: const Border( + border: Border( bottom: BorderSide.none, - left: BorderSide(color: Colors.grey, width: .5), - right: BorderSide.none, + left: isRTL ? BorderSide.none : const BorderSide(color: Colors.grey, width: .5), + right: isRTL ? const BorderSide(color: Colors.grey, width: .5) : BorderSide.none, top: BorderSide.none, ), ), - lineBarsData: _buildColoredLineSegments(dataPoints, showLinePoints, resolvedGraphColor, resolvedGraphShadowColor), + lineBarsData: _buildColoredLineSegments(displayDataPoints, showLinePoints, resolvedGraphColor, resolvedGraphShadowColor, + secondaryPoints: displaySecondaryDataPoints), gridData: FlGridData( show: showGridLines ?? true, drawVerticalLine: false, horizontalInterval: horizontalInterval, - // checkToShowHorizontalLine: (value) => - // value >= 0 && value <= 100, getDrawingHorizontalLine: getDrawingHorizontalLine ?? (value) { return FlLine( @@ -245,7 +262,8 @@ class CustomGraph extends StatelessWidget { ); } - List _buildColoredLineSegments(List dataPoints, bool showLinePoints, Color resolvedGraphColor, Color resolvedGraphShadowColor) { + List _buildColoredLineSegments(List dataPoints, bool showLinePoints, Color resolvedGraphColor, Color resolvedGraphShadowColor, + {List? secondaryPoints}) { final List allSpots = dataPoints.asMap().entries.map((entry) { double value = (makeGraphBasedOnActualValue) ? double.tryParse(entry.value.actualValue) ?? 0.0 : entry.value.value; return FlSpot(entry.key.toDouble(), value); @@ -257,13 +275,23 @@ class CustomGraph extends StatelessWidget { isCurved: true, isStrokeCapRound: true, isStrokeJoinRound: true, - barWidth: 2, + barWidth: 3, gradient: LinearGradient( colors: [resolvedGraphColor, resolvedGraphColor], begin: Alignment.centerLeft, end: Alignment.centerRight, ), - dotData: FlDotData(show: showLinePoints), + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, barData, idx) { + return FlDotCirclePainter( + radius: 6, + color: resolvedGraphColor, + strokeWidth: 2, + strokeColor: Colors.white, + ); + }, + ), belowBarData: BarAreaData( show: showShadow, applyCutOffY: cutOffY != null, @@ -281,8 +309,8 @@ class CustomGraph extends StatelessWidget { ]; // Add secondary line if provided (for dual-line graphs like blood pressure) - if (secondaryDataPoints != null && secondaryDataPoints!.isNotEmpty) { - final List secondarySpots = secondaryDataPoints!.asMap().entries.map((entry) { + if (secondaryPoints != null && secondaryPoints.isNotEmpty) { + final List secondarySpots = secondaryPoints.asMap().entries.map((entry) { double value = (makeGraphBasedOnActualValue) ? double.tryParse(entry.value.actualValue) ?? 0.0 : entry.value.value; return FlSpot(entry.key.toDouble(), value); }).toList(); @@ -299,7 +327,17 @@ class CustomGraph extends StatelessWidget { begin: Alignment.centerLeft, end: Alignment.centerRight, ), - dotData: FlDotData(show: showLinePoints), + dotData: FlDotData( + show: true, + getDotPainter: (spot, percent, barData, idx) { + return FlDotCirclePainter( + radius: 6, + color: secondaryGraphColor ?? AppColors.blueColor, + strokeWidth: 2, + strokeColor: Colors.white, + ); + }, + ), belowBarData: BarAreaData(show: false), ), ); diff --git a/lib/widgets/image_picker.dart b/lib/widgets/image_picker.dart index eb3021f5..6ab2b439 100644 --- a/lib/widgets/image_picker.dart +++ b/lib/widgets/image_picker.dart @@ -1,48 +1,81 @@ import 'dart:convert'; import 'dart:io'; +import 'package:easy_localization/easy_localization.dart'; +import 'package:file_picker/file_picker.dart'; +import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/attachment_options.dart'; -import 'package:hmg_patient_app_new/widgets/bottom_sheet.dart'; -import 'package:file_picker/file_picker.dart'; -import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; import 'package:image_picker/image_picker.dart'; +import 'package:image_picker_android/image_picker_android.dart'; +import 'package:image_picker_platform_interface/image_picker_platform_interface.dart'; final ImagePicker picker = ImagePicker(); +final ImagePickerPlatform _pickerPlatform = ImagePickerPlatform.instance; class ImageOptions { - static void showImageOptionsNew(BuildContext context, bool showFilesOption, Function(String, File) image) { - showMyBottomSheet( + static void showImageOptionsNew( + BuildContext context, + bool showFilesOption, + Function(String, File) image, { + String? title, + Future Function()? checkCameraPermission, + Future Function()? checkGalleryPermission, + }) { + showCommonBottomSheetWithoutHeight( context, - callBackFunc: () {}, + title: title ?? LocaleKeys.profilePicture.tr(context: context), child: AttachmentOptions( showFilesOption: showFilesOption, onCameraTap: () async { + // Check camera permission if callback provided + if (checkCameraPermission != null) { + final hasPermission = await checkCameraPermission(); + if (!hasPermission) { + return; // Permission denied, don't proceed + } + } + + Navigator.pop(context); // Close bottom sheet + if (Platform.isAndroid) { cameraImageAndroid(image); } else { - File _image = File((await ImagePicker.platform.pickImage(source: ImageSource.camera, imageQuality: 20))?.path ?? ""); - // XFile? media = await picker.pickMedia(); - String? fileName = _image.path; - var bytes = File(fileName!).readAsBytesSync(); + XFile? pickedFile = await picker.pickImage(source: ImageSource.camera, imageQuality: 20); + if (pickedFile == null) return; + + File _image = File(pickedFile.path); + String fileName = _image.path; + var bytes = File(fileName).readAsBytesSync(); String base64Encode = base64.encode(bytes); - if (base64Encode != null) { - image(base64Encode, _image); - } + image(base64Encode, _image); } }, onGalleryTap: () async { + // Check gallery permission if callback provided + if (checkGalleryPermission != null) { + final hasPermission = await checkGalleryPermission(); + if (!hasPermission) { + return; // Permission denied, don't proceed + } + } + + Navigator.pop(context); // Close bottom sheet + if (Platform.isAndroid) { galleryImageAndroid(image); } else { - File _image = File((await picker.pickMedia())?.path ?? ""); + XFile? pickedFile = await picker.pickImage(source: ImageSource.gallery, imageQuality: 20); + if (pickedFile == null) return; + + File _image = File(pickedFile.path); String fileName = _image.path; var bytes = File(fileName).readAsBytesSync(); String base64Encode = base64.encode(bytes); - if (base64Encode != null) { - image(base64Encode, _image); - } + image(base64Encode, _image); } }, onFilesTap: () async { @@ -50,7 +83,7 @@ class ImageOptions { type: FileType.custom, allowedExtensions: [ 'jpg', - 'jpeg ', + 'jpeg', 'pdf', 'txt', 'docx', @@ -62,11 +95,68 @@ class ImageOptions { 'zip', ], ); - List files = result!.paths.map((path) => File(path!)).toList(); + if (result == null) return; + List files = result.paths.map((path) => File(path!)).toList(); image(result.files.first.path.toString(), files.first); }, ), + callBackFunc: () {}, + isFullScreen: false, ); + // showMyBottomSheet( + // context, + // callBackFunc: () {}, + // child: AttachmentOptions( + // showFilesOption: showFilesOption, + // onCameraTap: () async { + // if (Platform.isAndroid) { + // cameraImageAndroid(image); + // } else { + // File _image = File((await ImagePicker.platform.pickImage(source: ImageSource.camera, imageQuality: 20))?.path ?? ""); + // // XFile? media = await picker.pickMedia(); + // String? fileName = _image.path; + // var bytes = File(fileName!).readAsBytesSync(); + // String base64Encode = base64.encode(bytes); + // if (base64Encode != null) { + // image(base64Encode, _image); + // } + // } + // }, + // onGalleryTap: () async { + // if (Platform.isAndroid) { + // galleryImageAndroid(image); + // } else { + // File _image = File((await picker.pickMedia())?.path ?? ""); + // String fileName = _image.path; + // var bytes = File(fileName).readAsBytesSync(); + // String base64Encode = base64.encode(bytes); + // if (base64Encode != null) { + // image(base64Encode, _image); + // } + // } + // }, + // onFilesTap: () async { + // FilePickerResult? result = await FilePicker.platform.pickFiles( + // type: FileType.custom, + // allowedExtensions: [ + // 'jpg', + // 'jpeg ', + // 'pdf', + // 'txt', + // 'docx', + // 'doc', + // 'pptx', + // 'xlsx', + // 'png', + // 'rar', + // 'zip', + // ], + // ); + // List files = result!.paths.map((path) => File(path!)).toList(); + // image(result.files.first.path.toString(), files.first); + // }, + // ), + // ); } // static void showImageOptions(BuildContext context, Function(String, File) image) { @@ -129,25 +219,48 @@ class ImageOptions { } void galleryImageAndroid(Function(String, File) image) async { - File _image = File((await picker.pickMedia())?.path ?? ""); + // Enable Android Photo Picker if available + if (_pickerPlatform is ImagePickerAndroid) { + (_pickerPlatform as ImagePickerAndroid).useAndroidPhotoPicker = true; + } + + try { + final XFile? pickedFile = + await _pickerPlatform.getImageFromSource(source: ImageSource.gallery, options: const ImagePickerOptions(imageQuality: 20)); - String fileName = _image.path; - var bytes = File(fileName).readAsBytesSync(); - String base64Encode = base64.encode(bytes); - if (base64Encode != null) { + if (pickedFile == null) return; + + File _image = File(pickedFile.path); + String fileName = _image.path; + var bytes = File(fileName).readAsBytesSync(); + String base64Encode = base64.encode(bytes); image(base64Encode, _image); + } catch (e) { + print('Error picking image: $e'); } } void cameraImageAndroid(Function(String, File) image) async { - File _image = File((await picker.pickMedia())?.path ?? ""); - String fileName = _image.path; - var bytes = File(fileName).readAsBytesSync(); - String base64Encode = base64.encode(bytes); - if (base64Encode != null) { - image(base64Encode, _image); + if (_pickerPlatform is ImagePickerAndroid) { + (_pickerPlatform as ImagePickerAndroid).useAndroidPhotoPicker = true; } + try { + final XFile? pickedFile = await _pickerPlatform.getImageFromSource( + source: ImageSource.camera, + options: const ImagePickerOptions(imageQuality: 20), + ); + + if (pickedFile == null) return; + + File _image = File(pickedFile.path); + String fileName = _image.path; + var bytes = File(fileName).readAsBytesSync(); + String base64Encode = base64.encode(bytes); + image(base64Encode, _image); + } catch (e) { + print('Error taking picture: $e'); + } } class _BottomSheet extends StatelessWidget { @@ -159,7 +272,9 @@ class _BottomSheet extends StatelessWidget { Widget build(BuildContext context) { return Container( padding: const EdgeInsets.symmetric(vertical: 12.0), - decoration: BoxDecoration(color: Theme.of(context).scaffoldBackgroundColor, borderRadius: const BorderRadius.only(topLeft: Radius.circular(16.0), topRight: Radius.circular(16.0))), + decoration: BoxDecoration( + color: Theme.of(context).scaffoldBackgroundColor, + borderRadius: const BorderRadius.only(topLeft: Radius.circular(16.0), topRight: Radius.circular(16.0))), child: SafeArea( top: false, child: Column( diff --git a/lib/widgets/input_widget.dart b/lib/widgets/input_widget.dart index 25dd4580..b7fe686f 100644 --- a/lib/widgets/input_widget.dart +++ b/lib/widgets/input_widget.dart @@ -1,6 +1,9 @@ +import 'dart:ui' as ui; + +import 'package:clarity_flutter/clarity_flutter.dart'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter/services.dart'; -import 'package:hijri_gregorian_calendar/hijri_gregorian_calendar.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/core/app_state.dart'; @@ -9,10 +12,13 @@ import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'package:hmg_patient_app_new/widgets/common_bottom_sheet.dart'; +import 'package:hmg_patient_app_new/widgets/date_range_selector/date_range_calender.dart'; +import 'package:hmg_patient_app_new/widgets/date_range_selector/models/calendar_design_type.dart'; import 'package:hmg_patient_app_new/widgets/dropdown/country_dropdown_widget.dart'; import 'package:hmg_patient_app_new/widgets/time_picker_widget.dart'; -import 'dart:ui' as ui; class TextInputWidget extends StatelessWidget { final String labelText; @@ -41,6 +47,7 @@ class TextInputWidget extends StatelessWidget { final Widget? suffix; final Color? labelColor; final Function(String)? onSubmitted; + final String? btnTitle; // new multiline options final bool isMultiline; @@ -49,7 +56,7 @@ class TextInputWidget extends StatelessWidget { final Color? hintColor; final bool? isHideSwitcher; final bool? isArrowTrailing; - + final bool leadingIconNeedsContainer; final String? fontFamily; // final List countryList; @@ -91,8 +98,10 @@ class TextInputWidget extends StatelessWidget { this.isHideSwitcher, this.isArrowTrailing, this.fontFamily, + this.leadingIconNeedsContainer = true, // this.countryList = const [], // this.onCountryChange, + this.btnTitle, }); final FocusNode _focusNode = FocusNode(); @@ -110,7 +119,7 @@ class TextInputWidget extends StatelessWidget { // onTap: () => node.unfocus(), // child: Container( // padding: const EdgeInsets.all(12.0), - // child: "Done".toText16(weight: FontWeight.w500, color: AppColors.infoColor), + // child: "Done".toText16(isBold: true, color: AppColors.infoColor), // ), // ); // } @@ -124,6 +133,20 @@ class TextInputWidget extends StatelessWidget { Widget build(BuildContext context) { AppState appState = getIt.get(); final errorColor = AppColors.primaryRedColor; + + // Determine border: always show red border on error, otherwise respect isBorderAllowed + BorderSide? borderSide; + if (hasError) { + // Always show red border when there's an error + borderSide = BorderSide(color: errorColor, width: 1); + } else if (isBorderAllowed) { + // Show normal border when allowed and no error + borderSide = BorderSide(color: const Color(0xffefefef), width: 1); + } else { + // No border + borderSide = null; + } + return Column( mainAxisSize: MainAxisSize.min, crossAxisAlignment: CrossAxisAlignment.start, @@ -135,7 +158,7 @@ class TextInputWidget extends StatelessWidget { decoration: RoundedRectangleBorder().toSmoothCornerDecoration( color: AppColors.whiteColor, borderRadius: isAllowRadius ? (12.r) : null, - side: isBorderAllowed ? BorderSide(color: hasError ? errorColor : const Color(0xffefefef), width: 1) : null, + side: borderSide, ), child: Row( textDirection: Directionality.of(context), @@ -159,8 +182,8 @@ class TextInputWidget extends StatelessWidget { crossAxisAlignment: CrossAxisAlignment.start, children: [ _buildLabelText(labelColor).paddingOnly( - right: (appState.getLanguageCode() == "ar" ? 10 : 0), - left: (appState.getLanguageCode() == "en" ? 10 : 0), + right: (appState.isArabic() ? 10 : 10), + left: (!appState.isArabic() ? 10 : 10), ), Row( children: [ @@ -185,7 +208,7 @@ class TextInputWidget extends StatelessWidget { ], ), ), - if (hasError && errorMessage != null) + if (errorMessage != null && errorMessage!.isNotEmpty) Padding( padding: EdgeInsets.only(top: 4.h, left: 12.h), // Adjust padding as needed child: Text( @@ -201,20 +224,22 @@ class TextInputWidget extends StatelessWidget { } Widget _buildLeadingIcon(BuildContext context) { - return Container( - height: 40.h, - width: 40.h, - // margin: EdgeInsets.symmetric(horizontal: 10.w), - padding: EdgeInsets.all(8.h), - decoration: RoundedRectangleBorder().toSmoothCornerDecoration( - borderRadius: 12.r, - color: AppColors.greyColor, - ), - child: Utils.buildSvgWithAssets(icon: leadingIcon!, applyThemeColor: false)); + if (leadingIconNeedsContainer) { + return Container( + height: 40.h, + width: 40.h, + // margin: EdgeInsets.symmetric(horizontal: 10.w), + padding: EdgeInsets.all(8.h), + decoration: RoundedRectangleBorder().toSmoothCornerDecoration( + borderRadius: 12.r, + color: AppColors.greyColor, + ), + child: Utils.buildSvgWithAssets(icon: leadingIcon!, applyThemeColor: false)); + } + return Utils.buildSvgWithAssets(icon: leadingIcon!, applyThemeColor: false, height: 40.h, width: 40.h); } Widget _buildTrailingIcon(BuildContext context, {bool isArrowTrailing = false}) { - final AppState appState = getIt.get(); return Container( height: 40.h, width: 40.w, @@ -223,25 +248,26 @@ class TextInputWidget extends StatelessWidget { decoration: RoundedRectangleBorder().toSmoothCornerDecoration(borderRadius: 12.r, color: AppColors.whiteColor), child: GestureDetector( onTap: () async { - bool isGregorian = true; - final picked = await showHijriGregBottomSheet(context, - isShowTimeSlots: true, - switcherIcon: Utils.buildSvgWithAssets(icon: AppAssets.language, width: 24.h, height: 24.h), - language: appState.getLanguageCode()!, - initialDate: DateTime.now(), - showCalendarToggle: isHideSwitcher == true ? false : true, - fontFamily: appState.getLanguageCode() == "ar" ? "GESSTwo" : "Poppins", - okWidget: Padding(padding: EdgeInsets.only(right: 8.h), child: Utils.buildSvgWithAssets(icon: AppAssets.confirm, width: 24.h, height: 24.h)), - cancelWidget: Padding(padding: EdgeInsets.only(right: 8.h), child: Utils.buildSvgWithAssets(icon: AppAssets.cancel, iconColor: Colors.white, width: 24.h, height: 24.h)), - onCalendarTypeChanged: (bool value) { - isGregorian = value; - }); - if (picked != null && onChange != null) { - if (onCalendarTypeChanged != null) { - onCalendarTypeChanged!.call(isGregorian); - } - onChange!(picked.toString()); - } + showCommonBottomSheetWithoutHeight( + title: LocaleKeys.selectDate.tr(context: context), + context, + child: DateRangeSelector( + onRangeSelected: (DateTime? start, DateTime? end) { + var picked = start.toString().split(" ").first; + if (picked != null && onChange != null) { + onChange!(picked.toString()); + } + }, + designType: CalendarDesignType.designV2, + showCalendarToggle: isHideSwitcher == true ? false : true, + onCalendarTypeChanged: onCalendarTypeChanged, + btnTitle: btnTitle ?? LocaleKeys.done.tr()), + isFullScreen: false, + isCloseButtonVisible: true, + callBackFunc: () { + // Don't reset calendar type - persist user's preference + }, + ); }, child: Utils.buildSvgWithAssets(icon: isArrowTrailing ? AppAssets.arrow_down : AppAssets.calendar), ), @@ -269,10 +295,10 @@ class TextInputWidget extends StatelessWidget { final picked = await TimePickerWidget.show( context, initialTime: initialTime, - use24HourFormat: false, // You can make this configurable if needed + use24HourFormat: true, onTimeSelected: (time) { if (onChange != null) { - final formattedTime = TimePickerWidget.formatTime(time); + final formattedTime = TimePickerWidget.formatTime(time, use24HourFormat: true); onChange!(formattedTime); } }, @@ -280,7 +306,7 @@ class TextInputWidget extends StatelessWidget { // Update controller if time was picked if (picked != null && controller != null) { - controller!.text = TimePickerWidget.formatTime(picked); + controller!.text = TimePickerWidget.formatTime(picked, use24HourFormat: true); } }, child: Utils.buildSvgWithAssets(icon: isArrowTrailing ? AppAssets.arrow_down : AppAssets.alarm_clock_icon), @@ -289,65 +315,158 @@ class TextInputWidget extends StatelessWidget { } Widget _buildLabelText(Color? labelColor) { - return Text( - labelText, - style: TextStyle( - fontSize: 12.f, - fontWeight: FontWeight.w500, - color: labelColor ?? AppColors.inputLabelTextColor, - letterSpacing: -0, - ), - ); + return labelText.toText12(isBold: true, color: labelColor ?? AppColors.inputLabelTextColor); } + // Original _buildTextField - kept as backup reference + // Widget _buildTextFieldOriginal(BuildContext context) { + // double fontS = fontSize ?? 14.f; + // final isArabic = getIt.get().isArabic(); + // + // return Builder( + // builder: (context) { + // return Directionality( + // textDirection: isArabic ? ui.TextDirection.rtl : ui.TextDirection.ltr, + // child: Localizations.override( + // context: context, + // locale: const Locale('en', 'US'), // Force English locale for TextField + // child: TextField( + // hintLocales: const [Locale('en', 'US')], + // enabled: isEnable, + // scrollPadding: EdgeInsets.zero, + // keyboardType: isMultiline ? TextInputType.multiline : (isWalletAmountInput! ? const TextInputType.numberWithOptions(decimal: true) : keyboardType), + // controller: controller, + // readOnly: isReadOnly, + // textAlignVertical: TextAlignVertical.top, + // textAlign: isArabic ? TextAlign.right : TextAlign.left, + // textDirection: ui.TextDirection.ltr, + // onChanged: onChange, + // focusNode: focusNode ?? _focusNode, + // autofocus: autoFocus, + // textInputAction: TextInputAction.done, + // cursorHeight: isWalletAmountInput! ? 40.h : 20.h, + // maxLength: isWalletAmountInput! ? 7 : 100, + // inputFormatters: isWalletAmountInput! + // ? [ + // _ThousandSeparatorInputFormatter(), + // ] + // : null, + // onTapOutside: (event) { + // FocusManager.instance.primaryFocus?.unfocus(); + // }, + // onSubmitted: onSubmitted, + // minLines: isMultiline ? minLines : 1, + // maxLines: isMultiline ? maxLines : 1, + // style: TextStyle( + // fontSize: fontS, + // height: isMultiline ? 1.2 : (isWalletAmountInput! ? 1 / 4 : 0), + // fontWeight: FontWeight.w600, + // color: AppColors.textColor, + // letterSpacing: -1, + // fontFamily: fontFamily, + // locale: const Locale('en', 'US'), // Force English locale for text style + // ), + // decoration: InputDecoration( + // counterText: "", + // isDense: true, + // hintText: hintText, + // hintStyle: TextStyle( + // fontFamily: isArabic ? 'CairoArabic' : 'Poppins', + // fontSize: 14.f, + // height: 21 / 16, + // fontWeight: FontWeight.w600, + // color: hintColor != null ? AppColors.textColor : Color(0xff898A8D), + // letterSpacing: -0.75, + // ), + // prefixIconConstraints: BoxConstraints(minWidth: 30.h), + // prefixIcon: prefix == null ? null : "+${prefix!}".toText14(letterSpacing: -1, color: AppColors.textColor, isBold: true), + // contentPadding: EdgeInsets.only(right: isArabic ? 10.w : 0), + // border: InputBorder.none, + // focusedBorder: InputBorder.none, + // enabledBorder: InputBorder.none, + // ), + // ), + // ), + // ); + // }, + // ); + // } + Widget _buildTextField(BuildContext context) { double fontS = fontSize ?? 14.f; + final isArabic = getIt.get().isArabic(); + + // Note: Error border is already handled by the parent Container in build() method + // The Container shows red border when hasError is true + return Builder( builder: (context) { - return Localizations.override( - context: context, - locale: const Locale('en', 'US'), // Force English locale for TextField - child: TextField( - hintLocales: const [Locale('en', 'US')], - enabled: isEnable, - scrollPadding: EdgeInsets.zero, - keyboardType: isMultiline ? TextInputType.multiline : keyboardType, - controller: controller, - readOnly: isReadOnly, - textAlignVertical: TextAlignVertical.top, - textAlign: TextAlign.left, - textDirection: TextDirection.ltr, - onChanged: onChange, - focusNode: focusNode ?? _focusNode, - autofocus: autoFocus, - textInputAction: TextInputAction.done, - cursorHeight: isWalletAmountInput! ? 40.h : 20.h, - onTapOutside: (event) { - FocusManager.instance.primaryFocus?.unfocus(); - }, - onSubmitted: onSubmitted, - minLines: isMultiline ? minLines : 1, - maxLines: isMultiline ? maxLines : 1, - style: TextStyle( - fontSize: fontS, - height: isMultiline ? 1.2 : (isWalletAmountInput! ? 1 / 4 : 0), - fontWeight: FontWeight.w500, - color: AppColors.textColor, - letterSpacing: -1, - // fontFamily: keyboardType == TextInputType.number ? getIt.get().isArabic() ? 'GESSTwo' : 'Poppins' : 'Poppins', - fontFamily: fontFamily, - locale: const Locale('en', 'US'), // Force English locale for text style - ), - decoration: InputDecoration( - isDense: true, - hintText: hintText, - hintStyle: TextStyle(fontSize: 14.f, height: 21 / 16, fontWeight: FontWeight.w500, color: hintColor != null ? AppColors.textColor : Color(0xff898A8D), letterSpacing: -0.75), - prefixIconConstraints: BoxConstraints(minWidth: 30.h), - prefixIcon: prefix == null ? null : "+${prefix!}".toText14(letterSpacing: -1, color: AppColors.textColor, weight: FontWeight.w500), - contentPadding: EdgeInsets.zero, - border: InputBorder.none, - focusedBorder: InputBorder.none, - enabledBorder: InputBorder.none, + return Directionality( + textDirection: isArabic ? ui.TextDirection.rtl : ui.TextDirection.ltr, + child: Localizations.override( + context: context, + locale: const Locale('en', 'US'), // Force English locale for TextField + child: ClarityUnmask( + child: TextField( + hintLocales: const [Locale('en', 'US')], + enabled: isEnable, + scrollPadding: EdgeInsets.zero, + keyboardType: isMultiline + ? TextInputType.multiline + : (isWalletAmountInput! ? const TextInputType.numberWithOptions(decimal: true) : keyboardType), + controller: controller, + readOnly: isReadOnly, + textAlignVertical: TextAlignVertical.top, + textAlign: isArabic ? TextAlign.right : TextAlign.left, + textDirection: ui.TextDirection.ltr, + onChanged: onChange, + focusNode: focusNode ?? _focusNode, + autofocus: autoFocus, + textInputAction: TextInputAction.done, + cursorHeight: isWalletAmountInput! ? 40.h : 20.h, + maxLength: isWalletAmountInput! ? 7 : 100, + inputFormatters: isWalletAmountInput! + ? [ + _ThousandSeparatorInputFormatter(), + ] + : null, + onTapOutside: (event) { + FocusManager.instance.primaryFocus?.unfocus(); + }, + onSubmitted: onSubmitted, + minLines: isMultiline ? minLines : 1, + maxLines: isMultiline ? maxLines : 1, + style: TextStyle( + fontSize: fontS, + height: isMultiline ? 1.2 : (isWalletAmountInput! ? 1 / 4 : 0), + fontWeight: FontWeight.w600, + color: AppColors.textColor, + letterSpacing: -1, + fontFamily: fontFamily, + locale: const Locale('en', 'US'), // Force English locale for text style + ), + decoration: InputDecoration( + counterText: "", + isDense: true, + hintText: hintText, + hintStyle: TextStyle( + fontFamily: isArabic ? 'CairoArabic' : 'Poppins', + fontSize: 14.f, + height: 21 / 16, + fontWeight: FontWeight.w600, + color: hintColor != null ? AppColors.textColor : Color(0xff898A8D), + letterSpacing: -0.75, + ), + prefixIconConstraints: BoxConstraints(minWidth: 30.h), + prefixIcon: prefix == null ? null : "+${prefix!}".toText14(letterSpacing: -1, color: AppColors.textColor, isBold: true), + contentPadding: EdgeInsets.only(right: isArabic ? 10.w : 0), + border: InputBorder.none, + focusedBorder: InputBorder.none, + enabledBorder: InputBorder.none, + // Show red border when field has error - but we handle this in the parent Container + // The parent Container in build() already shows red border based on hasError flag + ), + ), ), ), ); @@ -378,7 +497,7 @@ class TextInputWidget extends StatelessWidget { // style: TextStyle( // fontSize: fontS, // height: isMultiline ? 1.2 : (isWalletAmountInput! ? 1 / 4 : 0), - // fontWeight: FontWeight.w500, + // isBold: true, // color: AppColors.textColor, // letterSpacing: -1, // ), @@ -388,11 +507,11 @@ class TextInputWidget extends StatelessWidget { // hintStyle: TextStyle( // fontSize: 14.f, // height: 21 / 16, - // fontWeight: FontWeight.w500, + // isBold: true, // color: hintColor != null ? AppColors.textColor : Color(0xff898A8D), // letterSpacing: -0.75), // prefixIconConstraints: BoxConstraints(minWidth: 30.h), - // prefixIcon: prefix == null ? null : "+${prefix!}".toText14(letterSpacing: -1, color: AppColors.textColor, weight: FontWeight.w500), + // prefixIcon: prefix == null ? null : "+${prefix!}".toText14(letterSpacing: -1, color: AppColors.textColor, isBold: true), // contentPadding: EdgeInsets.zero, // border: InputBorder.none, // focusedBorder: InputBorder.none, @@ -412,3 +531,62 @@ class TextInputWidget extends StatelessWidget { ); } } + +class _ThousandSeparatorInputFormatter extends TextInputFormatter { + @override + TextEditingValue formatEditUpdate( + TextEditingValue oldValue, + TextEditingValue newValue, + ) { + // Remove all commas to get the raw number + String newText = newValue.text.replaceAll(',', ''); + + // Allow only digits and one decimal point + if (newText.isNotEmpty && !RegExp(r'^\d*\.?\d{0,2}$').hasMatch(newText)) { + return oldValue; + } + + // Split into integer and decimal parts + String integerPart; + String decimalPart = ''; + + if (newText.contains('.')) { + final parts = newText.split('.'); + integerPart = parts[0]; + decimalPart = '.${parts[1]}'; + } else { + integerPart = newText; + } + + // Add thousand separators to the integer part + if (integerPart.isNotEmpty) { + final buffer = StringBuffer(); + int count = 0; + for (int i = integerPart.length - 1; i >= 0; i--) { + buffer.write(integerPart[i]); + count++; + if (count == 3 && i > 0) { + buffer.write(','); + count = 0; + } + } + integerPart = buffer.toString().split('').reversed.join(); + } + + final formatted = '$integerPart$decimalPart'; + + // Calculate new cursor position + int cursorOffset = newValue.selection.baseOffset; + // Count commas before cursor in the new formatted string + int commasInNew = ','.allMatches(formatted.substring(0, cursorOffset.clamp(0, formatted.length))).length; + // Count commas before cursor in the old value + int commasInOld = ','.allMatches(oldValue.text.substring(0, oldValue.selection.baseOffset.clamp(0, oldValue.text.length))).length; + int newCursorPos = cursorOffset + (commasInNew - commasInOld); + newCursorPos = newCursorPos.clamp(0, formatted.length); + + return TextEditingValue( + text: formatted, + selection: TextSelection.collapsed(offset: newCursorPos), + ); + } +} diff --git a/lib/widgets/language_switcher.dart b/lib/widgets/language_switcher.dart index 033eaaff..15237363 100644 --- a/lib/widgets/language_switcher.dart +++ b/lib/widgets/language_switcher.dart @@ -56,19 +56,21 @@ class _LanguageSelectorState extends State { child: Row( mainAxisSize: MainAxisSize.min, children: [ - Utils.buildSvgWithAssets(icon: AppAssets.language), - SizedBox(width: 6.h), + Text( // currentLangData['name']?.toUpperCase() ?? 'EN', widget.currentLanguage == 'ar' ? "ENGLISH" : "العربية", style: context.dynamicTextStyle( - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, fontSize: 14.f, color: AppColors.primaryRedColor, letterSpacing: 0.1, isLanguageSwitcher: true, - fontFamily: widget.currentLanguage == 'ar' ? "Poppins" : "GESSTwo"), + fontFamily: widget.currentLanguage == 'ar' ? "Poppins" : "CairoArabic"), ), + SizedBox(width: 6.h), + Utils.buildSvgWithAssets(icon: AppAssets.language), + ], ), ), diff --git a/lib/widgets/loader/bottomsheet_loader.dart b/lib/widgets/loader/bottomsheet_loader.dart index bff293d0..306d7ce4 100644 --- a/lib/widgets/loader/bottomsheet_loader.dart +++ b/lib/widgets/loader/bottomsheet_loader.dart @@ -5,6 +5,8 @@ import 'package:hmg_patient_app_new/core/api_consts.dart'; import 'package:hmg_patient_app_new/core/enums.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/core/utils/utils.dart'; +import 'package:hmg_patient_app_new/extensions/route_extensions.dart'; +import 'package:hmg_patient_app_new/extensions/string_extensions.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; import 'package:hmg_patient_app_new/services/navigation_service.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; @@ -13,7 +15,7 @@ class LoaderBottomSheet { static final NavigationService _navService = GetIt.I(); static bool _isVisible = false; - static void showLoader({String? loadingText}) { + static void showLoader({String? loadingText, bool showCloseButton = false, Function? onCloseTap}) { if (_isVisible) return; _isVisible = true; @@ -32,7 +34,31 @@ class LoaderBottomSheet { color: AppColors.whiteColor, borderRadius: BorderRadius.vertical(top: Radius.circular(16)), ), - child: Center( + child: (showCloseButton) ? Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + "".toText20(), + if (showCloseButton) + IconButton( + icon: Icon(Icons.close, color: AppColors.textColor), + onPressed: () { + context.pop(); + if(onCloseTap != null) { + onCloseTap(); + } + }, + ) + else + SizedBox(width: 48), // Placeholder for alignment + ], + ), + Center( + child: Utils.getLoadingWidget(loadingText: loadingText), + ).paddingSymmetrical(24.w, 0), + ], + ) : Center( child: Utils.getLoadingWidget(loadingText: loadingText), ).paddingSymmetrical(24.w, 0), ); diff --git a/lib/widgets/map/HMSMap.dart b/lib/widgets/map/HMSMap.dart index 96b2facd..50da5f3a 100644 --- a/lib/widgets/map/HMSMap.dart +++ b/lib/widgets/map/HMSMap.dart @@ -1,63 +1,263 @@ import 'dart:async'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:hmg_patient_app_new/core/app_export.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; -import 'package:huawei_map/huawei_map.dart' ; +import 'package:huawei_map/huawei_map.dart'; -class HMSMap extends StatefulWidget{ +class HMSMap extends StatefulWidget { final CameraPosition currentLocation; final Function(CameraPosition) onCameraMoved; final VoidCallback onCameraIdle; - final MapType mapType; + final MapType initialMapType; final bool compassEnabled; final bool myLocationEnabled; final bool showCenterMarker; final Completer? inputController; - HMSMap({super.key, required this.currentLocation ,required this.onCameraMoved,required this.onCameraIdle, - this.mapType = MapType.normal,this.compassEnabled = false,this.showCenterMarker = false, - this.myLocationEnabled = true, this.inputController}); + const HMSMap({ + super.key, + required this.currentLocation, + required this.onCameraMoved, + required this.onCameraIdle, + this.initialMapType = MapType.normal, + this.compassEnabled = false, + this.showCenterMarker = false, + this.myLocationEnabled = true, + this.inputController, + }); @override State createState() => _HMSMapState(); } class _HMSMapState extends State { - Completer? controller; + Completer? controller; + late MapType _selectedMapType; + bool _showMapTypeSelector = false; + + final List<_MapTypeOption> _mapTypeOptions = [ + _MapTypeOption(type: MapType.normal, label: LocaleKeys.normalMapType.tr(), icon: Icons.map_outlined), + _MapTypeOption(type: MapType.terrain, label: LocaleKeys.terrainMapType.tr(), icon: Icons.terrain_outlined), + ]; @override void initState() { + super.initState(); HuaweiMapInitializer.initializeMap(); controller = widget.inputController ?? Completer(); - super.initState(); + _selectedMapType = widget.initialMapType; + } + + void _onMapTypeSelected(MapType type) { + setState(() { + _selectedMapType = type; + _showMapTypeSelector = false; + }); } - // @override + + void _toggleSelector() => + setState(() => _showMapTypeSelector = !_showMapTypeSelector); + @override - Widget build(BuildContext context) => - Stack( - children: [ - HuaweiMap( - mapType: widget.mapType, - zoomControlsEnabled: false, - myLocationEnabled: widget.myLocationEnabled, - myLocationButtonEnabled: false, - compassEnabled: widget.compassEnabled, - onCameraIdle:()=> widget.onCameraIdle(), - initialCameraPosition: widget.currentLocation, - onCameraMove: (value) => widget.onCameraMoved(value), - onMapCreated: (HuaweiMapController controller) { - this.controller?.complete(controller); - }, + Widget build(BuildContext context) { + return Stack( + children: [ + // ── Huawei Map ──────────────────────────────────────────────── + HuaweiMap( + mapType: _selectedMapType, + zoomControlsEnabled: false, + myLocationEnabled: widget.myLocationEnabled, + myLocationButtonEnabled: false, + compassEnabled: widget.compassEnabled, + onCameraIdle: widget.onCameraIdle, + initialCameraPosition: widget.currentLocation, + onCameraMove: widget.onCameraMoved, + onMapCreated: (HuaweiMapController ctrl) { + controller?.complete(ctrl); + }, + ), + + // ── Centre pin marker ───────────────────────────────────────── + if (widget.showCenterMarker) + Align( + alignment: Alignment.center, + child: Icon( + Icons.location_pin, + size: 36.h, + color: AppColors.primaryRedColor, + ).paddingOnly(bottom: 24.h), + ), + + // ── Map-type toggle + panel ─────────────────────────────────── + PositionedDirectional( + top: 48.h, + end: 16.w, + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + _MapTypeToggleButton( + isActive: _showMapTypeSelector, + onTap: _toggleSelector, + ), + AnimatedSwitcher( + duration: const Duration(milliseconds: 220), + transitionBuilder: (child, animation) => FadeTransition( + opacity: animation, + child: SizeTransition( + sizeFactor: animation, + axisAlignment: -1, + child: child, + ), + ), + child: _showMapTypeSelector + ? _MapTypeSelectorPanel( + options: _mapTypeOptions, + selected: _selectedMapType, + onSelected: _onMapTypeSelected, + ) + : const SizedBox.shrink(), ), - Visibility( - visible: widget.showCenterMarker, - child: Align( - alignment: Alignment.center, - child: Icon(Icons.location_pin, size: 36.h, color: AppColors.primaryRedColor).paddingOnly(bottom: 24.h), + ], + ), + ), + ], + ); + } +} + +// ── Toggle button ───────────────────────────────────────────────────────────── + +class _MapTypeToggleButton extends StatelessWidget { + final bool isActive; + final VoidCallback onTap; + + const _MapTypeToggleButton({required this.isActive, required this.onTap}); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: onTap, + child: AnimatedContainer( + duration: const Duration(milliseconds: 200), + width: 42.w, + height: 42.h, + decoration: BoxDecoration( + color: isActive ? AppColors.primaryRedColor : AppColors.whiteColor, + borderRadius: BorderRadius.circular(8.r), + ), + child: Icon( + Icons.layers, + size: 22.h, + color: isActive ? AppColors.whiteColor : AppColors.blackBgColor, + ), + ), + ); + } +} + +// ── Selector panel ──────────────────────────────────────────────────────────── + +class _MapTypeSelectorPanel extends StatelessWidget { + final List<_MapTypeOption> options; + final MapType selected; + final ValueChanged onSelected; + + const _MapTypeSelectorPanel({ + required this.options, + required this.selected, + required this.onSelected, + }); + + @override + Widget build(BuildContext context) { + return Container( + key: const ValueKey('map_type_panel'), + margin: EdgeInsets.only(top: 8.h), + padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 6.w), + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(12.r), + + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: options + .map((opt) => _MapTypeItem( + option: opt, + isSelected: selected == opt.type, + onTap: () => onSelected(opt.type), + )) + .toList(), + ), + ); + } +} + +// ── Single row item ─────────────────────────────────────────────────────────── + +class _MapTypeItem extends StatelessWidget { + final _MapTypeOption option; + final bool isSelected; + final VoidCallback onTap; + + const _MapTypeItem({ + required this.option, + required this.isSelected, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: onTap, + child: AnimatedContainer( + duration: const Duration(milliseconds: 180), + margin: EdgeInsets.symmetric(vertical: 3.h), + padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 8.h), + decoration: BoxDecoration( + color: isSelected + ? AppColors.primaryRedColor.withOpacity(0.1) + : Colors.transparent, + borderRadius: BorderRadius.circular(8.r), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + option.icon, + size: 18.h, + color: isSelected ? AppColors.primaryRedColor : AppColors.blackBgColor, ), - ) - ], - ); + SizedBox(width: 8.w), + Text( + option.label, + style: TextStyle( + fontSize: 14.f, + fontWeight: isSelected ? FontWeight.w600 : FontWeight.w400, + color: isSelected ? AppColors.primaryRedColor :AppColors.blackBgColor, + ), + ), + ], + ), + ), + ); + } +} + +// ── Data class ──────────────────────────────────────────────────────────────── + +class _MapTypeOption { + final MapType type; + final String label; + final IconData icon; + + const _MapTypeOption({ + required this.type, + required this.label, + required this.icon, + }); } \ No newline at end of file diff --git a/lib/widgets/map/gms_map.dart b/lib/widgets/map/gms_map.dart index f4c3ad54..33e0befb 100644 --- a/lib/widgets/map/gms_map.dart +++ b/lib/widgets/map/gms_map.dart @@ -1,54 +1,417 @@ +// import 'dart:async'; +// +// import 'package:flutter/material.dart'; +// import 'package:google_maps_flutter/google_maps_flutter.dart'; +// import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +// import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +// import 'package:hmg_patient_app_new/theme/colors.dart'; +// +// class GMSMap extends StatelessWidget{ +// Completer? controller; +// final CameraPosition currentLocation; +// final Function(CameraPosition) onCameraMoved; +// final VoidCallback onCameraIdle; +// final MapType mapType; +// final bool compassEnabled; +// final bool myLocationEnabled; +// final bool showCenterMarker; +// +// +// GMSMap({super.key, required this.currentLocation ,required this.onCameraMoved,required this.onCameraIdle, +// this.mapType = MapType.normal,this.compassEnabled = false,this.showCenterMarker = false, +// this.myLocationEnabled = true,Completer? inputController}){ +// controller = inputController ?? Completer(); +// } +// +// @override +// Widget build(BuildContext context) { +// return Stack( +// children: [ +// GoogleMap( +// mapType: mapType, +// zoomControlsEnabled: true, +// myLocationEnabled: myLocationEnabled, +// myLocationButtonEnabled: false, +// compassEnabled: compassEnabled, +// initialCameraPosition: currentLocation, +// onCameraMove: (value) => onCameraMoved(value), +// onCameraIdle: ()=>onCameraIdle(), +// // padding: EdgeInsets.only(bottom: 300.h), +// onMapCreated: (GoogleMapController controller) { +// this.controller?.complete(controller); +// }, +// ), +// Visibility( +// visible: showCenterMarker, +// child: Align( +// alignment: Alignment.center, +// child: Icon(Icons.location_pin, size: 36.h, color: AppColors.primaryRedColor).paddingOnly(bottom: 24.h), +// ), +// ) +// ], +// ); +// } +// } + import 'dart:async'; +import 'dart:io'; +import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/location_util.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; import 'package:hmg_patient_app_new/extensions/widget_extensions.dart'; +import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; -class GMSMap extends StatelessWidget{ - Completer? controller; +class GMSMap extends StatefulWidget { final CameraPosition currentLocation; final Function(CameraPosition) onCameraMoved; final VoidCallback onCameraIdle; - final MapType mapType; + final MapType initialMapType; final bool compassEnabled; final bool myLocationEnabled; final bool showCenterMarker; + final Completer? inputController; + final double bottomPaddingHeight; + + const GMSMap({ + super.key, + required this.currentLocation, + required this.onCameraMoved, + required this.onCameraIdle, + this.initialMapType = MapType.normal, + this.compassEnabled = false, + this.showCenterMarker = false, + this.myLocationEnabled = true, + this.inputController, + required this.bottomPaddingHeight, + }); + + @override + State createState() => _GMSMapState(); +} + +class _GMSMapState extends State { + late Completer _controller; + GoogleMapController? _activeController; + late MapType _selectedMapType; + bool _showMapTypeSelector = false; + num bottomPaddingHeight = 0; + + /// All supported map types with display labels and icons + final List<_MapTypeOption> _mapTypeOptions = [ + _MapTypeOption( + type: MapType.normal, + label: LocaleKeys.normalMapType.tr(), + icon: Icons.map_outlined, + ), + _MapTypeOption( + type: MapType.satellite, + label: LocaleKeys.satelliteMapType.tr(), + icon: Icons.satellite_alt_outlined, + ), + _MapTypeOption( + type: MapType.terrain, + label: LocaleKeys.terrainMapType.tr(), + icon: Icons.terrain_outlined, + ), + _MapTypeOption( + type: MapType.hybrid, + label: LocaleKeys.hybridMapType.tr(), + icon: Icons.layers_outlined, + ), + ]; + + @override + void initState() { + super.initState(); + _controller = widget.inputController ?? Completer(); + _selectedMapType = widget.initialMapType; + } + + void _onMapTypeSelected(MapType type) { + setState(() { + _selectedMapType = type; + _showMapTypeSelector = false; + }); + } + + void _toggleMapTypeSelector() { + setState(() => _showMapTypeSelector = !_showMapTypeSelector); + } + Future _animateToMyLocation() async { + final appState = getIt.get(); + final locationUtils = getIt.get(); - GMSMap({super.key, required this.currentLocation ,required this.onCameraMoved,required this.onCameraIdle, - this.mapType = MapType.normal,this.compassEnabled = false,this.showCenterMarker = false, - this.myLocationEnabled = true,Completer? inputController}){ - controller = inputController ?? Completer(); + void _moveToLocation() { + if (appState.userLat != 0.0 && appState.userLong != 0.0 && _activeController != null) { + _activeController!.animateCamera( + CameraUpdate.newCameraPosition( + CameraPosition( + target: LatLng(appState.userLat, appState.userLong), + zoom: 16, + ), + ), + ); + } + } + + if (appState.userLat != 0.0 && appState.userLong != 0.0) { + _moveToLocation(); + } else { + locationUtils.getLocation( + isShowConfirmDialog: true, + onSuccess: (latLng) { + _moveToLocation(); + }, + onFailure: () {}, + onLocationDeniedForever: () {}, + ); + } } @override Widget build(BuildContext context) { - return Stack( - children: [ - GoogleMap( - mapType: mapType, - zoomControlsEnabled: true, - myLocationEnabled: myLocationEnabled, + return Stack( + children: [ + // ── Google Map ────────────────────────────────────────────────── + GoogleMap( + mapType: _selectedMapType, + zoomControlsEnabled: false, + // myLocationEnabled: widget.myLocationEnabled, + myLocationEnabled: true, myLocationButtonEnabled: false, - compassEnabled: compassEnabled, - initialCameraPosition: currentLocation, - onCameraMove: (value) => onCameraMoved(value), - onCameraIdle: ()=>onCameraIdle(), - // padding: EdgeInsets.only(bottom: 300.h), + // padding: EdgeInsets.only(bottom: double.parse(widget.bottomPaddingHeight.toString())), + // padding: EdgeInsets.only(top: Platform.isAndroid ? double.parse(widget.bottomPaddingHeight.toString()) : 0, bottom: Platform.isIOS ? double.parse(widget.bottomPaddingHeight.toString()) : 0), + compassEnabled: widget.compassEnabled, + initialCameraPosition: widget.currentLocation, + onCameraMove: widget.onCameraMoved, + onCameraIdle: widget.onCameraIdle, onMapCreated: (GoogleMapController controller) { - this.controller?.complete(controller); + _activeController = controller; + if (!_controller.isCompleted) { + _controller.complete(controller); + } }, - ), - Visibility( - visible: showCenterMarker, - child: Align( - alignment: Alignment.center, - child: Icon(Icons.location_pin, size: 36.h, color: AppColors.primaryRedColor).paddingOnly(bottom: 24.h), + ), + + // ── Centre pin marker ─────────────────────────────────────────── + if (widget.showCenterMarker) + Align( + alignment: Alignment.center, + child: Icon( + Icons.location_pin, + size: 36.h, + color: AppColors.primaryRedColor, + ).paddingOnly(bottom: Platform.isAndroid ? 30.h : 60.h), ), - ) + + // ── My Location button ──────────────────────────────────────────── + PositionedDirectional( + // bottom: 300.h, + // bottom: 400.h, + bottom: widget.bottomPaddingHeight, + start: 16.w, + child: GestureDetector( + onTap: _animateToMyLocation, + child: Container( + width: 42.w, + height: 42.h, + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(8.r), + ), + child: Icon( + Icons.my_location, + size: 22.h, + color: AppColors.blackBgColor, + ), + ), + ), + ), + + // ── Map-type toggle button ────────────────────────────────────── + PositionedDirectional( + top: 48.h, + end: 16.w, + child: Column( + crossAxisAlignment: CrossAxisAlignment.end, + children: [ + // Toggle button + _MapTypeToggleButton( + isActive: _showMapTypeSelector, + onTap: _toggleMapTypeSelector, + ), + + // Expandable selector panel + AnimatedSwitcher( + duration: const Duration(milliseconds: 220), + transitionBuilder: (child, animation) => FadeTransition( + opacity: animation, + child: SizeTransition( + sizeFactor: animation, + axisAlignment: -1, + child: child, + ), + ), + child: _showMapTypeSelector + ? _MapTypeSelectorPanel( + options: _mapTypeOptions, + selected: _selectedMapType, + onSelected: _onMapTypeSelected, + ) + : const SizedBox.shrink(), + ), + ], + ), + ), ], ); } +} + +// ── Toggle button ───────────────────────────────────────────────────────────── + +class _MapTypeToggleButton extends StatelessWidget { + final bool isActive; + final VoidCallback onTap; + + const _MapTypeToggleButton({ + required this.isActive, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: onTap, + child: AnimatedContainer( + duration: const Duration(milliseconds: 200), + width: 42.w, + height: 42.h, + decoration: BoxDecoration( + color: isActive ? AppColors.primaryRedColor : AppColors.whiteColor, + borderRadius: BorderRadius.circular(8.r), + ), + child: Icon( + Icons.layers, + size: 22.h, + color: isActive ? AppColors.whiteColor : AppColors.blackBgColor, + ), + ), + ); + } +} + +// ── Selector panel ──────────────────────────────────────────────────────────── + +class _MapTypeSelectorPanel extends StatelessWidget { + final List<_MapTypeOption> options; + final MapType selected; + final ValueChanged onSelected; + + const _MapTypeSelectorPanel({ + required this.options, + required this.selected, + required this.onSelected, + }); + + @override + Widget build(BuildContext context) { + return Container( + key: const ValueKey('map_type_panel'), + margin: EdgeInsets.only(top: 8.h), + padding: EdgeInsets.symmetric(vertical: 8.h, horizontal: 6.w), + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.circular(12.r), + ), + child: Column( + crossAxisAlignment: CrossAxisAlignment.start, + children: options + .map( + (opt) => _MapTypeItem( + option: opt, + isSelected: selected == opt.type, + onTap: () => onSelected(opt.type), + ), + ) + .toList(), + ), + ); + } +} + +// ── Single row item ─────────────────────────────────────────────────────────── + +class _MapTypeItem extends StatelessWidget { + final _MapTypeOption option; + final bool isSelected; + final VoidCallback onTap; + + const _MapTypeItem({ + required this.option, + required this.isSelected, + required this.onTap, + }); + + @override + Widget build(BuildContext context) { + return GestureDetector( + onTap: onTap, + child: AnimatedContainer( + duration: const Duration(milliseconds: 180), + margin: EdgeInsets.symmetric(vertical: 3.h), + padding: EdgeInsets.symmetric(horizontal: 10.w, vertical: 8.h), + decoration: BoxDecoration( + color: isSelected + ? AppColors.primaryRedColor.withOpacity(0.1) + : Colors.transparent, + borderRadius: BorderRadius.circular(8.r), + ), + child: Row( + mainAxisSize: MainAxisSize.min, + children: [ + Icon( + option.icon, + size: 18.h, + color: isSelected ? AppColors.primaryRedColor : Colors.black54, + ), + SizedBox(width: 8.w), + Text( + option.label, + style: TextStyle( + fontSize: 13.f, + fontWeight: + isSelected ? FontWeight.w600 : FontWeight.w400, + color: + isSelected ? AppColors.primaryRedColor : AppColors.blackBgColor, + ), + ), + ], + ), + ), + ); + } +} + +// ── Data class ──────────────────────────────────────────────────────────────── + +class _MapTypeOption { + final MapType type; + final String label; + final IconData icon; + + const _MapTypeOption({ + required this.type, + required this.label, + required this.icon, + }); } \ No newline at end of file diff --git a/lib/widgets/map/location_map_widget.dart b/lib/widgets/map/location_map_widget.dart index e3139a93..f3b57aa3 100644 --- a/lib/widgets/map/location_map_widget.dart +++ b/lib/widgets/map/location_map_widget.dart @@ -12,6 +12,8 @@ import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; import 'package:map_launcher/map_launcher.dart'; +import '../../core/utils/utils.dart'; + /// A reusable location map widget that displays a static map with address and directions button /// Can be used in any review screen (HHC, CMC, etc.) class LocationMapWidget extends StatelessWidget { @@ -108,7 +110,7 @@ class LocationMapWidget extends StatelessWidget { address, style: TextStyle( fontSize: 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: AppColors.blackColor, letterSpacing: -0.4, ), @@ -127,24 +129,10 @@ class LocationMapWidget extends StatelessWidget { ClipRRect( clipBehavior: Clip.hardEdge, borderRadius: BorderRadius.circular(24.r), - child: Image.network( - staticMapUrl, + child: Utils.buildImgWithNetwork( + url: staticMapUrl, + iconColor: AppColors.transparent, fit: BoxFit.contain, - loadingBuilder: (context, child, loadingProgress) { - if (loadingProgress == null) return child; - return Container( - height: 165.h, - decoration: BoxDecoration( - color: AppColors.bgScaffoldColor, - borderRadius: BorderRadius.circular(24.r), - ), - child: Center( - child: CircularProgressIndicator( - color: AppColors.primaryRedColor, - ), - ), - ); - }, errorBuilder: (context, error, stackTrace) { return Container( height: 165.h, @@ -174,7 +162,7 @@ class LocationMapWidget extends StatelessWidget { borderColor: AppColors.textColor.withValues(alpha: 0.01), textColor: AppColors.whiteColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, borderRadius: 12.r, padding: EdgeInsets.symmetric(horizontal: 10.w), height: 40.h, diff --git a/lib/widgets/map/map_utility_screen.dart b/lib/widgets/map/map_utility_screen.dart index 422809cf..300ad57d 100644 --- a/lib/widgets/map/map_utility_screen.dart +++ b/lib/widgets/map/map_utility_screen.dart @@ -48,15 +48,15 @@ class MapUtilityScreen extends StatelessWidget { @override Widget build(BuildContext context) { return Scaffold( - floatingActionButton: Padding( - padding: EdgeInsetsDirectional.only(end: 8.h, bottom: 68.h), - child: DecoratedBox( - decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.h), - child: Utils.buildSvgWithAssets(icon: AppAssets.locate_me, width: 24.h, height: 24.h).paddingAll(12.h).onPress(() { - context.read().moveToCurrentLocation(); - }), - ), - ), + // floatingActionButton: Padding( + // padding: EdgeInsetsDirectional.only(end: 8.h, bottom: 68.h), + // child: DecoratedBox( + // decoration: RoundedRectangleBorder().toSmoothCornerDecoration(color: AppColors.whiteColor, borderRadius: 12.h), + // child: Utils.buildSvgWithAssets(icon: AppAssets.locate_me, width: 24.h, height: 24.h).paddingAll(12.h).onPress(() { + // context.read().moveToCurrentLocation(); + // }), + // ), + // ), bottomSheet: FixedBottomSheet(context), body: Stack( children: [ @@ -68,6 +68,7 @@ class MapUtilityScreen extends StatelessWidget { myLocationEnabled: true, inputController: context.read().gmsController, showCenterMarker: true, + bottomPaddingHeight: 300.h, ) else HMSMap( @@ -129,7 +130,7 @@ class MapUtilityScreen extends StatelessWidget { color: AppColors.textColor, ), subTitleString.toText12( - fontWeight: FontWeight.w500, + isBold: true, color: AppColors.greyTextColor, ) ], @@ -175,7 +176,8 @@ class MapUtilityScreen extends StatelessWidget { width: MediaQuery.sizeOf(context).width, child: TextInputWidget( labelText: LocaleKeys.enterPickupLocationManually.tr(context: context), - hintText: LocaleKeys.enterPickupLocation.tr(context: context), + hintText: "" , + // hintText: LocaleKeys.enterPickupLocation.tr(context: context) , controller: TextEditingController( text: vm.geocodeResponse?.results.first.formattedAddress ?? vm.selectedPrediction?.description, ), @@ -209,7 +211,9 @@ class MapUtilityScreen extends StatelessWidget { context, child: SizedBox( height: MediaQuery.sizeOf(context).height * .8, - child: LocationInputBottomSheet(), + child: LocationInputBottomSheet( + moveCameraController:(location) => context.read().moveController(location) , + ), ), isFullScreen: false, isCloseButtonVisible: true, diff --git a/lib/widgets/media_viewer/full_screen_image_viewer.dart b/lib/widgets/media_viewer/full_screen_image_viewer.dart index 0fb92f0e..ae6d4802 100644 --- a/lib/widgets/media_viewer/full_screen_image_viewer.dart +++ b/lib/widgets/media_viewer/full_screen_image_viewer.dart @@ -1,5 +1,5 @@ import 'package:flutter/material.dart'; -import 'package:flutter_svg/flutter_svg.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; class FullScreenImageViewer extends StatelessWidget { @@ -22,8 +22,8 @@ class FullScreenImageViewer extends StatelessWidget { body: Center( child: InteractiveViewer( child: isSvg - ? SvgPicture.asset(path, width: double.infinity, fit: BoxFit.contain) - : Image.asset(width: double.infinity, path, fit: BoxFit.contain), + ? Utils.buildSvgWithAssets(icon: path, width: double.infinity, fit: BoxFit.contain, applyThemeColor: false) + : Utils.buildImgWithAssets(icon: path, width: double.infinity, fit: BoxFit.contain), ), ), ); diff --git a/lib/widgets/medication_reminder/reminder_timer_dialog.dart b/lib/widgets/medication_reminder/reminder_timer_dialog.dart index 62dbd963..221e2b70 100644 --- a/lib/widgets/medication_reminder/reminder_timer_dialog.dart +++ b/lib/widgets/medication_reminder/reminder_timer_dialog.dart @@ -48,7 +48,7 @@ // LocaleKeys.cancel.tr(), // style: TextStyle( // color: AppColors.errorColor, -// fontWeight: FontWeight.w500, +// isBold: true, // fontSize: 14 // ), // ), @@ -72,7 +72,7 @@ // label: Text( // LocaleKeys.setReminder.tr(), // style: TextStyle( -// fontWeight: FontWeight.w500, +// isBold: true, // fontSize: 14 // ), // ), diff --git a/lib/widgets/nfc/nfc_reader_sheet.dart b/lib/widgets/nfc/nfc_reader_sheet.dart index 956f758b..8f983156 100644 --- a/lib/widgets/nfc/nfc_reader_sheet.dart +++ b/lib/widgets/nfc/nfc_reader_sheet.dart @@ -3,9 +3,9 @@ import 'dart:io'; import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/material.dart'; import 'package:flutter_nfc_kit/flutter_nfc_kit.dart'; -import 'package:flutter_svg/flutter_svg.dart'; import 'package:hmg_patient_app_new/core/app_assets.dart'; import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; import 'package:hmg_patient_app_new/generated/locale_keys.g.dart'; import 'package:hmg_patient_app_new/theme/colors.dart'; import 'package:hmg_patient_app_new/widgets/buttons/custom_button.dart'; @@ -93,9 +93,10 @@ class _NfcLayoutState extends State { SizedBox( height: 30, ), - SvgPicture.asset( - "assets/images/nfc/contactless.svg", + Utils.buildSvgWithAssets( + icon: "assets/images/nfc/contactless.svg", height: MediaQuery.of(context).size.width / 3, + applyThemeColor: false, ), SizedBox( height: 30, @@ -126,7 +127,7 @@ class _NfcLayoutState extends State { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 14.f, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12.h, height: 40.h, icon: AppAssets.cancel, @@ -161,8 +162,8 @@ class _NfcLayoutState extends State { SizedBox( height: 30, ), - Image.asset( - "assets/images/nfc/ic_done.png", + Utils.buildImgWithAssets( + icon: "assets/images/nfc/ic_done.png", height: MediaQuery.of(context).size.width / 3, ), SizedBox( @@ -194,7 +195,7 @@ class _NfcLayoutState extends State { borderColor: AppColors.primaryRedColor, textColor: AppColors.whiteColor, fontSize: 14, - fontWeight: FontWeight.w500, + isBold: true, borderRadius: 12.h, height: 40.h, icon: AppAssets.cancel, diff --git a/lib/widgets/order_tracking/request_tracking.dart b/lib/widgets/order_tracking/request_tracking.dart index f07c0b19..519a41c2 100644 --- a/lib/widgets/order_tracking/request_tracking.dart +++ b/lib/widgets/order_tracking/request_tracking.dart @@ -26,12 +26,7 @@ class OrderTrackingWidget extends StatelessWidget { Widget? getBarAndDot(OrderTrackingState? state, BuildContext context, double width) { - print("the parent padding value is $parentPaddingValue"); - print("the parent padding value is ${(parentPaddingValue+24)}"); - print("the width - (parentPaddingValue+24) ${(width - (parentPaddingValue+24))}"); double widthOfOneState = (width/4) - (parentPaddingValue+8.h); - print("te width of one state is $widthOfOneState"); - print("the value of${width/4}"); if(state == null) { return Row( children: List.generate(4, (index) { diff --git a/lib/widgets/radio/custom_radio_button.dart b/lib/widgets/radio/custom_radio_button.dart index a5301020..540aab46 100644 --- a/lib/widgets/radio/custom_radio_button.dart +++ b/lib/widgets/radio/custom_radio_button.dart @@ -38,7 +38,7 @@ class CustomRadioOption extends StatelessWidget { border: Border.all(color: isSelected ? AppColors.primaryRedColor : AppColors.bottomNAVBorder, width: 2.h)), ), SizedBox(width: 8.h), - text.toText16(weight: FontWeight.w500), // The provided content + text.toText16(isBold: true), // The provided content ], ), ), diff --git a/lib/widgets/radio_list_tile_widget.dart b/lib/widgets/radio_list_tile_widget.dart index 9025e190..afcebdf9 100644 --- a/lib/widgets/radio_list_tile_widget.dart +++ b/lib/widgets/radio_list_tile_widget.dart @@ -68,7 +68,7 @@ class RadioListTileWidget extends StatelessWidget { child: Column( crossAxisAlignment: CrossAxisAlignment.start, children: [ - title.toText15(weight: FontWeight.w500, letterSpacing: -0.64), + title.toText15(isBold: true, letterSpacing: -0.64), if (subtitleWidget != null) ...[subtitleWidget!], if (subtitle != null) ...[ SizedBox(height: 4.h), diff --git a/lib/widgets/routes/custom_page_route.dart b/lib/widgets/routes/custom_page_route.dart index b89d7102..7cddf18d 100644 --- a/lib/widgets/routes/custom_page_route.dart +++ b/lib/widgets/routes/custom_page_route.dart @@ -10,7 +10,6 @@ class CustomPageRoute extends PageRouteBuilder { CustomPageRoute({required this.page, this.direction = AxisDirection.right, this.fullScreenDialog = false, super.settings}) : super( - transitionDuration: const Duration(milliseconds: 1500), reverseTransitionDuration: const Duration(milliseconds: 500), fullscreenDialog: fullScreenDialog, diff --git a/lib/widgets/scroll_wheel_time_picker.dart b/lib/widgets/scroll_wheel_time_picker.dart new file mode 100644 index 00000000..9029ca15 --- /dev/null +++ b/lib/widgets/scroll_wheel_time_picker.dart @@ -0,0 +1,187 @@ +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_export.dart'; +import 'package:hmg_patient_app_new/theme/colors.dart'; +import 'dart:ui' as ui; + + +class ScrollWheelTimePicker extends StatefulWidget { + final int initialHour; + + final int initialMinute; + + final bool use24HourFormat; + + final ValueChanged? onTimeChanged; + + final double itemExtent; + + final double pickerHeight; + + final TextStyle? digitTextStyle; + + final TextStyle? separatorTextStyle; + + const ScrollWheelTimePicker({ + super.key, + this.initialHour = 8, + this.initialMinute = 15, + this.use24HourFormat = true, + this.onTimeChanged, + this.itemExtent = 60, + this.pickerHeight = 180, + this.digitTextStyle, + this.separatorTextStyle, + }); + + @override + State createState() => _ScrollWheelTimePickerState(); +} + +class _ScrollWheelTimePickerState extends State { + late FixedExtentScrollController _hourController; + late FixedExtentScrollController _minuteController; + late int _selectedHour; + late int _selectedMinute; + + int get _maxHour => widget.use24HourFormat ? 24 : 12; + + @override + void initState() { + super.initState(); + _selectedHour = widget.initialHour; + _selectedMinute = widget.initialMinute; + + final hourIndex = + widget.use24HourFormat ? _selectedHour : (_selectedHour == 0 ? 11 : _selectedHour - 1); + + _hourController = FixedExtentScrollController(initialItem: hourIndex); + _minuteController = FixedExtentScrollController(initialItem: _selectedMinute); + } + + @override + void dispose() { + _hourController.dispose(); + _minuteController.dispose(); + super.dispose(); + } + + void _notifyChange() { + widget.onTimeChanged?.call(TimeOfDay(hour: _selectedHour, minute: _selectedMinute)); + } + + TextStyle get _defaultDigitStyle => TextStyle( + fontSize: 72.f, + fontWeight: FontWeight.w800, + color: AppColors.textColor, + letterSpacing: 0, + ); + + TextStyle get _defaultSeparatorStyle => TextStyle( + fontSize: 40.f, + fontWeight: FontWeight.w800, + color: AppColors.textColor, + letterSpacing: 0, + ); + + @override + Widget build(BuildContext context) { + final digitStyle = widget.digitTextStyle ?? _defaultDigitStyle; + final separatorStyle = widget.separatorTextStyle ?? _defaultSeparatorStyle; + + return Directionality( + textDirection: ui.TextDirection.ltr, + child: SizedBox( + height: widget.pickerHeight, + child: Row( + mainAxisAlignment: MainAxisAlignment.center, + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + width: 150.w, + child: ListWheelScrollView.useDelegate( + controller: _hourController, + itemExtent: widget.itemExtent, + physics: const FixedExtentScrollPhysics(), + perspective: 0.005, + diameterRatio: 1.2, + onSelectedItemChanged: (index) { + setState(() { + _selectedHour = + widget.use24HourFormat ? index : index + 1; + }); + _notifyChange(); + }, + childDelegate: ListWheelChildBuilderDelegate( + childCount: _maxHour, + builder: (context, index) { + final hour = + widget.use24HourFormat ? index : index + 1; + final isSelected = hour == _selectedHour; + return Visibility( + visible: true, + child: Center( + child: AnimatedDefaultTextStyle( + duration: const Duration(milliseconds: 200), + style: digitStyle.copyWith( + color: isSelected + ? AppColors.textColor + : AppColors.textColor.withValues(alpha: 0.3), + ), + child: Text( + hour.toString().padLeft(2, '0'), + ), + ), + ), + ); + }, + ), + ), + ), + + Padding( + padding: EdgeInsets.symmetric(horizontal: 2.w), + child: Text(':', style: separatorStyle), + ), + + SizedBox( + width: 150.w, + child: ListWheelScrollView.useDelegate( + controller: _minuteController, + itemExtent: widget.itemExtent, + physics: const FixedExtentScrollPhysics(), + perspective: 0.005, + diameterRatio: 1.2, + onSelectedItemChanged: (index) { + setState(() { + _selectedMinute = index; + }); + _notifyChange(); + }, + childDelegate: ListWheelChildBuilderDelegate( + childCount: 60, + builder: (context, index) { + final isSelected = index == _selectedMinute; + return Visibility( + visible: true, + child: + Center( + child: AnimatedDefaultTextStyle( + duration: const Duration(milliseconds: 200), + style: digitStyle.copyWith( + color: isSelected + ? AppColors.textColor + : AppColors.transparent.withValues(alpha: 0.3), + ), + child: Text(index.toString().padLeft(2, '0')), + ), + )); + }, + ), + ), + ), + ], + ), + ), + ); + } +} diff --git a/lib/widgets/stepper/stepper_widget.dart b/lib/widgets/stepper/stepper_widget.dart index 5d901ac8..9946c1ae 100644 --- a/lib/widgets/stepper/stepper_widget.dart +++ b/lib/widgets/stepper/stepper_widget.dart @@ -12,10 +12,11 @@ class StepperWidget extends StatelessWidget { @override Widget build(BuildContext context) { - return oneProgressBar(width, activeColor, hasThumb); + return oneProgressBar(context, width, activeColor, hasThumb); } - Widget oneProgressBar(double width, Color color, bool hasThumb) { + Widget oneProgressBar(BuildContext context, double width, Color color, bool hasThumb) { + final isRtl = Directionality.of(context) == TextDirection.rtl; return Row( children: [ AnimatedSize( @@ -42,8 +43,9 @@ class StepperWidget extends StatelessWidget { Visibility( visible: hasThumb, child: Positioned( - top: -6.h, // move thumb above bar center - left: width - 22.h, // move to right end + top: -6.h, + left: isRtl ? 4.h : null, + right: isRtl ? null : 4.h, child: thumb(color), ), ) diff --git a/lib/widgets/time_picker_widget.dart b/lib/widgets/time_picker_widget.dart index bc996de6..eadbf5f3 100644 --- a/lib/widgets/time_picker_widget.dart +++ b/lib/widgets/time_picker_widget.dart @@ -1,3 +1,5 @@ +import 'dart:ui' as ui; + import 'package:easy_localization/easy_localization.dart'; import 'package:flutter/cupertino.dart'; import 'package:flutter/material.dart'; @@ -126,48 +128,50 @@ class _TimePickerBottomSheetState extends State<_TimePickerBottomSheet> { @override Widget build(BuildContext context) { - return Container( - decoration: BoxDecoration( - color: AppColors.whiteColor, - borderRadius: BorderRadius.only( - topLeft: Radius.circular(20.r), - topRight: Radius.circular(20.r), + return Directionality( + textDirection: ui.TextDirection.ltr, + child: Container( + decoration: BoxDecoration( + color: AppColors.whiteColor, + borderRadius: BorderRadius.only( + topLeft: Radius.circular(20.r), + topRight: Radius.circular(20.r), + ), ), - ), - child: SafeArea( - child: Column( - mainAxisSize: MainAxisSize.min, - children: [ - // Header - Container( - padding: EdgeInsets.symmetric(horizontal: 20.w, vertical: 16.h), - decoration: BoxDecoration( - border: Border( - bottom: BorderSide( - color: AppColors.dividerColor, - width: 1, + child: SafeArea( + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + // Header + Container( + padding: EdgeInsets.symmetric(horizontal: 20.w, vertical: 16.h), + decoration: BoxDecoration( + border: Border( + bottom: BorderSide( + color: AppColors.dividerColor, + width: 1, + ), ), ), - ), - child: Row( - mainAxisAlignment: MainAxisAlignment.spaceBetween, - children: [ - LocaleKeys.selectTime.tr(context: context).toText18( - weight: FontWeight.w600, - color: AppColors.textColor, + child: Row( + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + LocaleKeys.selectTime.tr(context: context).toText18( + weight: FontWeight.w600, + color: AppColors.textColor, + ), + GestureDetector( + onTap: () => Navigator.pop(context), + child: Utils.buildSvgWithAssets( + icon: AppAssets.cancel, + width: 24.h, + height: 24.h, + iconColor: AppColors.textColor, ), - GestureDetector( - onTap: () => Navigator.pop(context), - child: Utils.buildSvgWithAssets( - icon: AppAssets.cancel, - width: 24.h, - height: 24.h, - iconColor: AppColors.textColor, ), - ), - ], + ], + ), ), - ), // Time Picker SizedBox( @@ -201,7 +205,7 @@ class _TimePickerBottomSheetState extends State<_TimePickerBottomSheet> { hour.toString().padLeft(2, '0'), style: TextStyle( fontSize: 24.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: AppColors.textColor, ), ), @@ -216,7 +220,7 @@ class _TimePickerBottomSheetState extends State<_TimePickerBottomSheet> { ':', style: TextStyle( fontSize: 24.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: AppColors.textColor, ), ), @@ -241,7 +245,7 @@ class _TimePickerBottomSheetState extends State<_TimePickerBottomSheet> { index.toString().padLeft(2, '0'), style: TextStyle( fontSize: 24.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: AppColors.textColor, ), ), @@ -270,7 +274,7 @@ class _TimePickerBottomSheetState extends State<_TimePickerBottomSheet> { 'AM', style: TextStyle( fontSize: 24.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: AppColors.textColor, ), ), @@ -280,7 +284,7 @@ class _TimePickerBottomSheetState extends State<_TimePickerBottomSheet> { 'PM', style: TextStyle( fontSize: 24.f, - fontWeight: FontWeight.w500, + fontWeight: FontWeight.w600, color: AppColors.textColor, ), ), @@ -345,6 +349,7 @@ class _TimePickerBottomSheetState extends State<_TimePickerBottomSheet> { ], ), ), + ), ); } } diff --git a/lib/widgets/user_avatar_widget.dart b/lib/widgets/user_avatar_widget.dart new file mode 100644 index 00000000..5528531d --- /dev/null +++ b/lib/widgets/user_avatar_widget.dart @@ -0,0 +1,110 @@ +import 'dart:convert'; +import 'package:flutter/material.dart'; +import 'package:hmg_patient_app_new/core/app_assets.dart'; +import 'package:hmg_patient_app_new/core/app_state.dart'; +import 'package:hmg_patient_app_new/core/dependencies.dart'; +import 'package:hmg_patient_app_new/core/utils/size_utils.dart'; +import 'package:hmg_patient_app_new/core/utils/utils.dart'; + +class UserAvatarWidget extends StatelessWidget { + final double width; + final double height; + final int? gender; + final int? age; + final BoxFit? fit; + final bool isCircular; + final double? borderRadius; + final String? customProfileImageData; // For family members or other users + final bool isFamilyMember; // New flag to prevent AppState fallback + + const UserAvatarWidget({ + Key? key, + required this.width, + required this.height, + this.gender, + this.age, + this.fit, + this.isCircular = false, + this.borderRadius, + this.customProfileImageData, + this.isFamilyMember = false, // Default to false for backward compatibility + }) : super(key: key); + + @override + Widget build(BuildContext context) { + final appState = getIt.get(); + final userGender = gender ?? appState.getAuthenticatedUser()?.gender ?? 1; + final userAge = age ?? appState.getAuthenticatedUser()?.age ?? 0; + + // Determine which profile image data to use: + // - For family members: ONLY use customProfileImageData (no AppState fallback) + // - For main user: Use customProfileImageData if provided, otherwise AppState + final String? profileImageData; + if (isFamilyMember) { + // Family member mode: only use their specific image data, no fallback + profileImageData = customProfileImageData; + } else { + // Main user mode: use custom data or fall back to AppState + profileImageData = customProfileImageData ?? appState.getProfileImageData; + } + + // Determine the default image based on gender and age + final String defaultImage; + if (userGender == 1) { + // Male + defaultImage = userAge < 7 ? AppAssets.babyBoyImg : AppAssets.maleImg; + } else { + // Female + defaultImage = userAge < 7 ? AppAssets.babyGirlImg : AppAssets.femaleImg; + } + + // Calculate border radius - default to 12.r if not specified and not circular + final effectiveBorderRadius = isCircular ? width / 2 : (borderRadius ?? 12.r); + + // Show uploaded profile image if available + if (profileImageData != null && profileImageData.isNotEmpty) { + try { + final bytes = base64Decode(profileImageData); + // Use a key based on data hash to help Flutter detect changes + final imageKey = ValueKey('avatar_${profileImageData.hashCode}'); + + final imageWidget = Image.memory( + bytes, + key: imageKey, + width: width, + height: height, + fit: fit ?? BoxFit.cover, + gaplessPlayback: true, // Smooth transition without flicker + ); + + return ClipRRect( + borderRadius: BorderRadius.circular(effectiveBorderRadius), + child: imageWidget, + ); + } catch (e) { + // If decoding fails, show default image + return ClipRRect( + borderRadius: BorderRadius.circular(effectiveBorderRadius), + child: Utils.buildImgWithAssets( + icon: defaultImage, + width: width, + height: height, + fit: fit ?? BoxFit.cover, + ), + ); + } + } + + // Show default image with rounded corners + return ClipRRect( + borderRadius: BorderRadius.circular(effectiveBorderRadius), + child: Utils.buildImgWithAssets( + icon: defaultImage, + width: width, + height: height, + fit: fit ?? BoxFit.cover, + ), + ); + } +} + diff --git a/lib/widgets/vital_sing_chart_and_detials.dart b/lib/widgets/vital_sing_chart_and_detials.dart index decca3f7..10805e58 100644 --- a/lib/widgets/vital_sing_chart_and_detials.dart +++ b/lib/widgets/vital_sing_chart_and_detials.dart @@ -77,7 +77,7 @@ // style: TextStyle( // fontSize: 16, // letterSpacing: -0.64, -// fontWeight: FontWeight.w600, +// isBold: true, // ), // ), // Table( diff --git a/lib/widgets/vital_sing_chart_blood_pressure.dart b/lib/widgets/vital_sing_chart_blood_pressure.dart index 8bff71b0..6730414b 100644 --- a/lib/widgets/vital_sing_chart_blood_pressure.dart +++ b/lib/widgets/vital_sing_chart_blood_pressure.dart @@ -72,7 +72,7 @@ // style: TextStyle( // fontSize: 16, // letterSpacing: -0.64, -// fontWeight: FontWeight.w600, +// isBold: true, // ), // ), // Table( diff --git a/package/device_calendar_plus/example/lib/main.dart b/package/device_calendar_plus/example/lib/main.dart index dbe66532..60011b2f 100644 --- a/package/device_calendar_plus/example/lib/main.dart +++ b/package/device_calendar_plus/example/lib/main.dart @@ -519,7 +519,7 @@ class _MyHomePageState extends State { style: const TextStyle( fontSize: 12, color: Colors.grey, - fontWeight: FontWeight.w500, + isBold: true, ), ), const SizedBox(height: 2), @@ -804,7 +804,7 @@ class _MyHomePageState extends State { title: Text( event.title, style: const TextStyle( - fontWeight: FontWeight.w500), + isBold: true), ), subtitle: Column( crossAxisAlignment: CrossAxisAlignment.start, diff --git a/package/flutter_swiper_view/CHANGELOG-ZH.md b/package/flutter_swiper_view/CHANGELOG-ZH.md new file mode 100644 index 00000000..8591f0e2 --- /dev/null +++ b/package/flutter_swiper_view/CHANGELOG-ZH.md @@ -0,0 +1,85 @@ +## [1.1.8] - [2022/05/27] + + * 修复 example 无法运行的问题 + * 修复 SwiperPagination.rect 不显示指示器的问题 + * 支持空安全 + * 支持 Flutter 3 + +## [1.1.7] - [2022/05/27] + + * 测试发布 + + +## [1.1.1] - [2018/09/20] + * 修复自动集成测试错误 + +## [1.1.0] - [2018/09/20] + * 修复index的bug ,见 #11 + * 增加 `autoplayDisableOnInteraction` 选项, 如果设置为true,那么在用户滑动的时候停止自动播放,滑动之后重新自动播放 + + +## [1.0.7] - [2018/09/02] + * 在Swiper dispose的时候不调用Controller的dispose. + +## [1.0.6] - [2018/08/28] + * `TINDER` 和 `STACK` 这两种布局方式实现垂直滚动, #9 + +## [1.0.5] - [2018/08/09] + * viewportFraction<1.0增加fade参数 + +## [1.0.4] - [2018/07/18] + * 修复一些错别字,感谢[csharad](https://github.com/csharad) + +## [1.0.3] - [2018/07/18] + * 根据#5 ,用new来创建对象 + +## [1.0.2] - [2018/07/16] + * 修复 #4 + +## [1.0.1] - [2018/07/11] + * 支持布局方式(CUSTOM),你可以定制你自己的布局 + +## [1.0.0] - [2018/07/08] + * 增加布局方式( DEFAULT,STACK,TINDER ) + * 可以将分页指示器放在容器外面 + +## [0.0.9] - [2018/06/10] + * 增加CI + * 增加测试用例 + +## [0.0.8] - [2018/06/07] + * 新增中文文档 + * 更新依赖包:infinity_page_view 版本到 1.0.0 + +## [0.0.7] - [2018/05/24] + * The default color of pagination is ThemeData.scaffoldBackgroundColor and ThemeData.primaryColor + * The default color of control buttons is ThemeData.primaryColor and ThemeData.disabledColor + * The alignment of pagination is Alignment.bottomCenter by default when scrollDirection== Axis.horizontal, Alignment.centerRight by default when scrollDirection== Axis.vertical + * Change default value of `autoplay` to false + +## [0.0.6] - [2018/05/24] + * Fix index bug + +## [0.0.5] - [2018/05/24] + * Fix zero itemCount bug + +## [0.0.4] - [2018/05/20] + * Update README + +## [0.0.3] - [2018/05/20] + * Update README + * Support none loop mode + * Add more examples + +## [0.0.2] - [2018/05/20] + * Autoplay + * Plugins support + * Examples + +## [0.0.1] - [2018/05/20] + * Infinite loop + * Control buttons + * Pagination + * Custom control buttons + * Custom pagination + * Controler \ No newline at end of file diff --git a/package/flutter_swiper_view/CHANGELOG.md b/package/flutter_swiper_view/CHANGELOG.md new file mode 100644 index 00000000..77c5eb2f --- /dev/null +++ b/package/flutter_swiper_view/CHANGELOG.md @@ -0,0 +1,95 @@ +## [1.1.8] - [2022/05/27] + + * fix example error + * fix SwiperPagination.rect indicator does not display + * support null safety + * support Flutter 3 + +## [1.1.7] - [2022/05/27] + + * test publish to pub.dev + + +## [1.1.5] - [2019/03/10] + + * Fix findRenderObject is null + + +## [1.1.4] - [2018/10/18] + +## [1.1.2] - [2018/10/10] + * Fix #7 + * Support layout for pagination. + +## [1.1.1] - [2018/09/20] + * Fix `test` failure. + +## [1.1.0] - [2018/09/20] + * Fix index bug ,See #11 + * Enable `autoplayDisableOnInteraction` property, if set `true`,disable autoplay when user swipes. + +## [1.0.7] - [2018/09/02] + * Don't call SwiperController's dispose when `Swiper` dispose. + +## [1.0.6] - [2018/08/28] + * Implement vertical scroll direction for `TINDER` and `STACK` layout, see #9 + +## [1.0.5] - [2018/08/09] + * Add feature : support fade for `viewportFraction` + +## [1.0.4] - [2018/07/18] + * Fix some typo,thanks to [csharad](https://github.com/csharad) + +## [1.0.3] - [2018/07/18] + * Use new to create everything. See #5 + +## [1.0.2] - [2018/07/16] + * Fix #4 + +## [1.0.1] - [2018/07/11] + * Add layout (CUSTOM) so that you can create your own layout + +## [1.0.0] - [2018/07/08] + * Add layouts ( DEFAULT,STACK,TINDER ) + * Allow to put pagination outer of the swiper container. + +## [0.0.9] - [2018/06/10] + * Add ci + * Add testcase + +## [0.0.8] - [2018/06/07] + * And chinese document + * Update infinity_page_view version to 1.0.0 + +## [0.0.7] - [2018/05/24] + * The default color of pagination is ThemeData.scaffoldBackgroundColor and ThemeData.primaryColor + * The default color of control buttons is ThemeData.primaryColor and ThemeData.disabledColor + * The alignment of pagination is Alignment.bottomCenter by default when scrollDirection== Axis.horizontal, Alignment.centerRight by default when scrollDirection== Axis.vertical + * Change default value of `autoplay` to false + +## [0.0.6] - [2018/05/24] + * Fix index bug + +## [0.0.5] - [2018/05/24] + * Fix zero itemCount bug + +## [0.0.4] - [2018/05/20] + * Update README + +## [0.0.3] - [2018/05/20] + * Update README + * Support none loop mode + * Add more examples + +## [0.0.2] - [2018/05/20] + * Autoplay + * Plugins support + * Examples + +## [0.0.1] - [2018/05/20] + * Infinite loop + * Control buttons + * Pagination + * Custom control buttons + * Custom pagination + * Controler \ No newline at end of file diff --git a/package/flutter_swiper_view/LICENSE b/package/flutter_swiper_view/LICENSE new file mode 100644 index 00000000..ac160e8a --- /dev/null +++ b/package/flutter_swiper_view/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 Xueliang Ren + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/package/flutter_swiper_view/README-ZH.md b/package/flutter_swiper_view/README-ZH.md new file mode 100644 index 00000000..cb2ff3c0 --- /dev/null +++ b/package/flutter_swiper_view/README-ZH.md @@ -0,0 +1,409 @@ +![Logo](banner.jpg) + +

+ + Build Status + + + Coverage Status + + + PRs Welcome + + + pub package + +

+

+ + 英文说明 + +

+ + +# flutter_swiper_view + +flutter 最强大的 swiper, 多种布局方式,无限轮播,Android 和 iOS 双端适配. + + +# :sparkles::sparkles: New Features: 视差 + +我们在 Swiper 中也像 Android 一样支持了 `PageTransformer`, 只要给 Swiper 设置一下 `transformer` 属性就行, +这里返回一个被转换的组件给 Swiper. 目前仅仅支持 `DEFAULT` 布局. +感谢 @FlutterRocks ,棒棒哒 👏. + + + + +# :sparkles::sparkles: 新功能 + + +![](https://github.com/jzoom/images/raw/master/layout1.gif) + +![](https://github.com/jzoom/images/raw/master/layout2.gif) + +![](https://github.com/jzoom/images/raw/master/layout3.gif) + +[更多](#内建的布局) + + +# 截图 + +![Horizontal](https://github.com/feicien/flutter_swiper_view/raw/master/example/res/1.gif) + +![Vertical](https://github.com/feicien/flutter_swiper_view/raw/master/example/res/2.gif) + +![Custom Pagination](https://github.com/feicien/flutter_swiper_view/raw/master/example/res/3.gif) + +![Custom Pagination](https://github.com/feicien/flutter_swiper_view/raw/master/example/res/4.gif) + +![Phone](https://github.com/feicien/flutter_swiper_view/raw/master/example/res/5.gif) + +![Example](https://github.com/jzoom/images/raw/master/swiper-example.gif) + +[更多](#代码) + +## 功能路线 + +1.x.x 功能实现: + +- [x] 无限循环轮播 +- [x] 控制按钮 +- [x] 分页指示器 +- [x] 非无限循环模式 +- [x] 单元测试 +- [x] 例子 +- [x] 滚动方向 +- [x] 可定制控制按钮 +- [x] 可定制分页 +- [x] 自动播放 +- [x] 控制器 +- [x] 外部分页指示器 +- [ ] 更多布局方式 + + +## 更新日志 + +>参考:[CHANGELOG.md](https://github.com/feicien/flutter_swiper_view/blob/master/CHANGELOG-ZH.md) + +## 目录 + +- [安装](#安装) +- [基本使用](#基本使用) +- [构建](#构建) + + [基本构造函数](#基本构造函数) + + [分页指示器](#分页指示器) + + [控制按钮](#控制按钮) + + [控制器](#控制器) + + [自动播放](#自动播放) ++ [内建的布局](#内建的布局) ++ [一些常用代码示例](#代码) + +### 安装 + +增加 + +```dart +dependencies: + flutter_swiper_view: ^1.1.8 +``` +到项目根目录下的 pubspec.yaml ,并且根目录运行命令行 + +```dart +flutter pub get +``` + + +### 基本使用 + +使用命令行创建一个新项目: + +```dart +flutter create myapp +``` + +编辑 lib/main.dart: + +```dart +import 'package:flutter/material.dart'; + +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; + +void main() => runApp(const MyApp()); + +class MyApp extends StatelessWidget { + const MyApp({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + primarySwatch: Colors.blue, + ), + home: const MyHomePage(title: 'Flutter Demo Home Page'), + ); + } +} + +class MyHomePage extends StatefulWidget { + const MyHomePage({Key? key, required this.title}) : super(key: key); + + final String title; + + @override + State createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(widget.title), + ), + body: Swiper( + itemBuilder: (context, index){ + return Image.network("https://via.placeholder.com/350x150",fit: BoxFit.fill,); + }, + itemCount: 3, + pagination: const SwiperPagination(), + control: const SwiperControl(), + ), + ); + } +} +``` + + + +### 构建 + + +#### 基本参数 + +| 参数 | 默认值 | 描述 | +| :-------------- |:-----------------:| :------------------------| +| scrollDirection | Axis.horizontal |滚动方向,设置为 Axis.vertical 如果需要垂直滚动 | +| loop | true |无限轮播模式开关 | +| index | 0 |初始的时候下标位置 | +| autoplay | false |自动播放开关. | +| onIndexChanged | void onIndexChanged(int index) | 当用户手动拖拽或者自动播放引起下标改变的时候调用 | +| onTap | void onTap(int index) | 当用户点击某个轮播的时候调用 | +| duration | 300.0 | 动画时间,单位是毫秒 | +| pagination | null | 设置 `SwiperPagination()` 展示默认分页指示器 +| control | null | 设置 `SwiperControl()` 展示默认分页按钮 + + +#### 分页指示器 + +分页指示器继承自 `SwiperPlugin`,`SwiperPlugin` 为 `Swiper` 提供额外的界面.设置为`SwiperPagination()` 展示默认分页. + + +| 参数 | 默认值 | 描述 | +| :------------ |:---------------:| :-----| +| alignment | Alignment.bottomCenter | 如果要将分页指示器放到其他位置,那么可以修改这个参数 | +| margin | const EdgeInsets.all(10.0) | 分页指示器与容器边框的距离 | +| builder | SwiperPagination.dots | 目前已经定义了三个默认的分页指示器样式: `SwiperPagination.dots` 、 `SwiperPagination.fraction`、 `SwiperPagination.rect`,都可以做进一步的自定义. | + +如果需要定制自己的分页指示器,那么可以这样写: + +```dart +Swiper( + ..., + pagination: SwiperCustomPagination( + builder: (context, config){ + return YourOwnPaginatipon(); + }, + ) +); +``` + + + +#### 控制按钮 + +控制按钮组件也是继承自 `SwiperPlugin`,设置 `SwiperControl()` 展示默认控制按钮. + + +| 参数 | 默认值 | 描述 | +| :------------ |:---------------:| :-----| +| iconPrevious | Icons.arrow_back_ios | 上一页的IconData | +| iconNext | Icons.arrow_forward_ios | 下一页的IconData | +| color | Theme.of(context).primaryColor | 控制按钮颜色 | +| size | 30.0 | 控制按钮的大小 | +| padding | const EdgeInsets.all(5.0) | 控制按钮与容器的距离 | + + +#### 控制器(SwiperController) + +`SwiperController` 用于控制 Swiper的`index`属性, 停止和开始自动播放. 通过 `SwiperController()` 创建一个 SwiperController 实例,并保存,以便将来能使用。 + + +| 方法 | 描述 | +| :------------ |:-----| +| void move(int index, {bool animation: true}) | 移动到指定下标,设置是否播放动画| +| void next({bool animation: true}) | 下一页 | +| void previous({bool animation: true}) | 上一页 | +| void startAutoplay() | 开始自动播放 | +| void stopAutoplay() | 停止自动播放 | + + + +#### 自动播放 + +| 参数 | 默认值 | 描述 | +| :------------ |:---------------:| :-----| +| autoplayDely | 3000 | 自动播放延迟毫秒数. | +| autoplayDisableOnInteraction | true | 当用户拖拽的时候,是否停止自动播放. | + + + +## 内建的布局 +![](https://github.com/jzoom/images/raw/master/layout1.gif) + +```dart +Swiper( + itemBuilder: (context, index) { + return Image.network( + "https://via.placeholder.com/288x188", + fit: BoxFit.fill, + ); + }, + itemCount: 10, + viewportFraction: 0.8, + scale: 0.9, +) + +``` + + + +![](https://github.com/jzoom/images/raw/master/layout2.gif) + +```dart +Swiper( + itemBuilder: (context, index) { + return Image.network( + "https://via.placeholder.com/288x188", + fit: BoxFit.fill, + ); + }, + itemCount: 10, + itemWidth: 300.0, + layout: SwiperLayout.STACK, +) +``` + +![](https://github.com/jzoom/images/raw/master/layout3.gif) + +```dart +Swiper( + itemBuilder: (context, index) { + return Image.network( + "https://via.placeholder.com/288x188", + fit: BoxFit.fill, + ); + }, + itemCount: 10, + itemWidth: 300.0, + itemHeight: 400.0, + layout: SwiperLayout.TINDER, +) +``` + + + +![](https://github.com/jzoom/images/raw/master/layout4.gif) + +构建你自己的动画十分简单: + +```dart +Swiper( + layout: SwiperLayout.CUSTOM, + customLayoutOption: CustomLayoutOption(startIndex: -1, stateCount: 3) + ..addRotate([-45.0 / 180, 0.0, 45.0 / 180]) + ..addTranslate([ + const Offset(-370.0, -40.0), + const Offset(0.0, 0.0), + const Offset(370.0, -40.0) + ]), + itemWidth: 300.0, + itemHeight: 200.0, + itemBuilder: (context, index) { + return Container( + color: Colors.grey, + child: Center( + child: Text("$index"), + ), + ); + }, + itemCount: 10, +), +``` + + +`CustomLayoutOption` 被设计用来描述布局和动画,很简单的可以指定每一个元素的状态. + +```dart +CustomLayoutOption( + startIndex: -1, /// 开始下标 + stateCount: 3 /// 下面的数组长度 + )..addRotate([ // 每个元素的角度 + -45.0/180, + 0.0, + 45.0/180 + ])..addTranslate([ /// 每个元素的偏移 + const Offset(-370.0, -40.0), + const Offset(0.0, 0.0), + const Offset(370.0, -40.0) + ]) +``` + +## 代码 + + +![Example](https://github.com/jzoom/images/raw/master/swiper-example.gif) + + +```dart +ConstrainedBox( + constraints: BoxConstraints.loose(Size(screenWidth, 170.0)) + child: Swiper( + outer: false, + itemBuilder: (c, i) { + return Wrap( + runSpacing: 6.0, + children: [0,1,2,3,4,5,6,7,8,9].map((i){ + return SizedBox( + width: MediaQuery.of(context).size.width/5, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + height: MediaQuery.of(context).size.width * 0.12, + width: MediaQuery.of(context).size.width * 0.12, + child: Image.network("https://fuss10.elemecdn.com/c/db/d20d49e5029281b9b73db1c5ec6f9jpeg.jpeg%3FimageMogr/format/webp/thumbnail/!90x90r/gravity/Center/crop/90x90"), + ), + Padding( + padding: const EdgeInsets.only(top: 6.0), + child: Text("$i"), + ) + ], + ), + ); + }).toList(), + ); + }, + pagination: const SwiperPagination(margin: EdgeInsets.all(5.0)), + itemCount: 10, + ), +), +``` + + + +这里可以找到所有的定制选项 + +>https://github.com/feicien/flutter_swiper_view/blob/master/example/lib/src/example_custom.dart \ No newline at end of file diff --git a/package/flutter_swiper_view/README.md b/package/flutter_swiper_view/README.md new file mode 100644 index 00000000..3365bd8c --- /dev/null +++ b/package/flutter_swiper_view/README.md @@ -0,0 +1,393 @@ +![Logo](banner.jpg) + +

+ + Build Status + + + Coverage Status + + + PRs Welcome + + + pub package + +

+

+ + 中文说明 + +

+ + + +# flutter_swiper_view + +The best swiper for flutter , with multiple layouts, infinite loop. Compatible with Android & iOS. + + + +# :sparkles::sparkles: New Features:PageTransformer + +Finally, we have `PageTransformer` like android, just set a `transformer` to `Swiper`, +it returns a widget that has been transformed. For now, only support for layout `DEFAULT`. +Thanks to @FlutterRocks ,you've done great job 👏. + + + +# :sparkles::sparkles: New Features:Layout + + +![](https://github.com/jzoom/images/raw/master/layout1.gif) + +![](https://github.com/jzoom/images/raw/master/layout2.gif) + +![](https://github.com/jzoom/images/raw/master/layout3.gif) + +[See More](#build-in-layouts) + + +# Showcases + +![Horizontal](https://github.com/feicien/flutter_swiper_view/raw/master/example/res/1.gif) + +![Vertical](https://github.com/feicien/flutter_swiper_view/raw/master/example/res/2.gif) + +![Custom Pagination](https://github.com/feicien/flutter_swiper_view/raw/master/example/res/3.gif) + +![Custom Pagination](https://github.com/feicien/flutter_swiper_view/raw/master/example/res/4.gif) + +![Phone](https://github.com/feicien/flutter_swiper_view/raw/master/example/res/5.gif) + +![Example](https://github.com/jzoom/images/raw/master/swiper-example.gif) + +[See More](#codes) + + +## Changelogs + +>see:[CHANGELOG.md](https://github.com/feicien/flutter_swiper_view/blob/master/CHANGELOG.md) + +## Getting Started + +- [Installation](#installation) +- [Basic Usage](#basic-usage) +- [Constructor](#constructor) + + [Basic](#basic) + + [Pagination](#pagination) + + [Control buttons](#control-buttons) + + [Controller](#controller) + + [Autoplay](#autoplay) +- [Build in layouts](#build-in-layouts) +- [Codes](#codes) + +### Installation + +Add + +```dart +dependencies: + flutter_swiper_view: ^1.1.8 +``` +to your pubspec.yaml ,and run + +```dart +flutter pub get +``` +in your project's root directory. + +### Basic Usage + +Create a new project with command + +```dart +flutter create myapp +``` + +Edit lib/main.dart like this: + +```dart +import 'package:flutter/material.dart'; + +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; + +void main() => runApp(const MyApp()); + +class MyApp extends StatelessWidget { + const MyApp({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + primarySwatch: Colors.blue, + ), + home: const MyHomePage(title: 'Flutter Demo Home Page'), + ); + } +} + +class MyHomePage extends StatefulWidget { + const MyHomePage({Key? key, required this.title}) : super(key: key); + + final String title; + + @override + State createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(widget.title), + ), + body: Swiper( + itemBuilder: (context, index){ + return Image.network("https://via.placeholder.com/350x150",fit: BoxFit.fill,); + }, + itemCount: 3, + pagination: const SwiperPagination(), + control: const SwiperControl(), + ), + ); + } +} +``` + + + +### Constructor + + +#### Basic + +| Parameter | Default | Description | +| :------------ |:---------------:| :-----| +| scrollDirection | Axis.horizontal | If `Axis.horizontal`, the scroll view's children are arranged horizontally in a row instead of vertically in a column. | +| loop | true |Set to `false` to disable continuous loop mode. | +| index | 0 | Index number of initial slide. | +| autoplay | false |Set to `true` enable auto play mode. | +| onIndexChanged | void onIndexChanged(int index) | Called with the new index when the user swiped or autoplay | +| onTap | void onTap(int index) | Called when user tap ui. | +| duration | 300.0 | The milliscends of every transaction animation costs | +| pagination | null | set `SwiperPagination()` to show default pagination +| control | null | set `SwiperControl()` to show default control buttons + + +#### Pagination + +The pagination extends from `SwiperPlugin`,the `SwiperPlugin` provides extra ui for `Swiper`.Set `SwiperPagination()` to show default pagination. + + +| Parameter | Default | Description | +| :------------ |:---------------:| :-----| +| alignment | Alignment.bottomCenter | Change this value if you what to put pagination in other place | +| margin | const EdgeInsets.all(10.0) | The distance between inner side of the parent container. | +| builder | SwiperPagination.dots | There are three default styles `SwiperPagination.dots` and `SwiperPagination.fraction`、 `SwiperPagination.rect`,both can be customized. | + +If you'd like to customize your own pagination, you can do like this: + +```dart +Swiper( + ..., + pagination: SwiperCustomPagination( + builder: (context, config){ + return YourOwnPaginatipon(); + }, + ) +); +``` + + + +#### Control buttons + +The control also extends from `SwiperPlugin`,set `SwiperControl()` to show default control buttons. + + +| Parameter | Default | Description | +| :------------ |:---------------:| :-----| +| iconPrevious | Icons.arrow_back_ios | The icon data to display `previous` control button | +| iconNext | Icons.arrow_forward_ios | The icon data to display `next`. | +| color | Theme.of(context).primaryColor | Control button color | +| size | 30.0 | Control button size | +| padding | const EdgeInsets.all(5.0) | Control button padding | + + +#### Controller + +The `Controller` is used to control the `index` of the Swiper, start or stop autoplay.You can create a controller by `SwiperController()` and save the instance by futher usage. + + +| Method | Description | +| :------------ |:-----| +| void move(int index, {bool animation: true}) | Move to the spicified `index`,with animation or not | +| void next({bool animation: true}) | Move to next | +| void previous({bool animation: true}) | Move to previous | +| void startAutoplay() | Start autoplay | +| void stopAutoplay() | Stop autoplay | + + + +#### Autoplay + +| Parameter | Default | Description | +| :------------ |:---------------:| :-----| +| autoplayDelay | 3000 | Autoplay delay milliseconds. | +| autoplayDisableOnInteraction | true | If set true, `autoplay` is disabled when use swipes. | + +## Build in layouts +![](https://github.com/jzoom/images/raw/master/layout1.gif) + +```dart +Swiper( + itemBuilder: (context, index) { + return Image.network( + "https://via.placeholder.com/288x188", + fit: BoxFit.fill, + ); + }, + itemCount: 10, + viewportFraction: 0.8, + scale: 0.9, +) +``` + + + +![](https://github.com/jzoom/images/raw/master/layout2.gif) + +```dart +Swiper( + itemBuilder: (context, index) { + return Image.network( + "https://via.placeholder.com/288x188", + fit: BoxFit.fill, + ); + }, + itemCount: 10, + itemWidth: 300.0, + layout: SwiperLayout.STACK, +) +``` + +![](https://github.com/jzoom/images/raw/master/layout3.gif) + +```dart +Swiper( + itemBuilder: (context, index) { + return Image.network( + "https://via.placeholder.com/288x188", + fit: BoxFit.fill, + ); + }, + itemCount: 10, + itemWidth: 300.0, + itemHeight: 400.0, + layout: SwiperLayout.TINDER, +) +``` + + +![](https://github.com/jzoom/images/raw/master/layout4.gif) + +Very easy to create you own custom animation: + +```dart +Swiper( + layout: SwiperLayout.CUSTOM, + customLayoutOption: CustomLayoutOption(startIndex: -1, stateCount: 3) + ..addRotate([-45.0 / 180, 0.0, 45.0 / 180]) + ..addTranslate([ + const Offset(-370.0, -40.0), + const Offset(0.0, 0.0), + const Offset(370.0, -40.0) + ]), + itemWidth: 300.0, + itemHeight: 200.0, + itemBuilder: (context, index) { + return Container( + color: Colors.grey, + child: Center( + child: Text("$index"), + ), + ); + }, + itemCount: 10, +), +``` + +The `CustomLayoutOption` is designed to describe animations. +It is very easy to specify every state of items in Swiper. + +```dart +CustomLayoutOption( + startIndex: -1, /// Which index is the first item of array below + stateCount: 3 /// array length + )..addRotate([ // rotation of every item + -45.0/180, + 0.0, + 45.0/180 + ])..addTranslate([ /// offset of every item + const Offset(-370.0, -40.0), + const Offset(0.0, 0.0), + const Offset(370.0, -40.0) + ]) +``` + +## Codes + +![Example](https://github.com/jzoom/images/raw/master/swiper-example.gif) + +```dart +ConstrainedBox( + constraints: BoxConstraints.loose(Size(screenWidth, 170.0)) + child: Swiper( + outer: false, + itemBuilder: (c, i) { + return Wrap( + runSpacing: 6.0, + children: [0,1,2,3,4,5,6,7,8,9].map((i){ + return SizedBox( + width: MediaQuery.of(context).size.width/5, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + height: MediaQuery.of(context).size.width * 0.12, + width: MediaQuery.of(context).size.width * 0.12, + child: Image.network("https://fuss10.elemecdn.com/c/db/d20d49e5029281b9b73db1c5ec6f9jpeg.jpeg%3FimageMogr/format/webp/thumbnail/!90x90r/gravity/Center/crop/90x90"), + ), + Padding( + padding: const EdgeInsets.only(top: 6.0), + child: Text("$i"), + ) + ], + ), + ); + }).toList(), + ); + }, + pagination: const SwiperPagination(margin: EdgeInsets.all(5.0)), + itemCount: 10, + ), +), +``` + + + + + +You can find all custom options here: + +>https://github.com/feicien/flutter_swiper_view/blob/master/example/lib/src/example_custom.dart + + + + + diff --git a/package/flutter_swiper_view/analysis_options.yaml b/package/flutter_swiper_view/analysis_options.yaml new file mode 100644 index 00000000..61b6c4de --- /dev/null +++ b/package/flutter_swiper_view/analysis_options.yaml @@ -0,0 +1,29 @@ +# This file configures the analyzer, which statically analyzes Dart code to +# check for errors, warnings, and lints. +# +# The issues identified by the analyzer are surfaced in the UI of Dart-enabled +# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be +# invoked from the command line by running `flutter analyze`. + +# The following line activates a set of recommended lints for Flutter apps, +# packages, and plugins designed to encourage good coding practices. +include: package:flutter_lints/flutter.yaml + +linter: + # The lint rules applied to this project can be customized in the + # section below to disable rules from the `package:flutter_lints/flutter.yaml` + # included above or to enable additional rules. A list of all available lints + # and their documentation is published at + # https://dart-lang.github.io/linter/lints/index.html. + # + # Instead of disabling a lint rule for the entire project in the + # section below, it can also be suppressed for a single line of code + # or a specific dart file by using the `// ignore: name_of_lint` and + # `// ignore_for_file: name_of_lint` syntax on the line or in the file + # producing the lint. + rules: + # avoid_print: false # Uncomment to disable the `avoid_print` rule + # prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule + +# Additional information about this file can be found at +# https://dart.dev/guides/language/analysis-options diff --git a/package/flutter_swiper_view/banner.jpg b/package/flutter_swiper_view/banner.jpg new file mode 100644 index 00000000..73c4eb89 Binary files /dev/null and b/package/flutter_swiper_view/banner.jpg differ diff --git a/package/flutter_swiper_view/dev/bots/travis_install.sh b/package/flutter_swiper_view/dev/bots/travis_install.sh new file mode 100755 index 00000000..a834cb95 --- /dev/null +++ b/package/flutter_swiper_view/dev/bots/travis_install.sh @@ -0,0 +1,18 @@ +#!/bin/bash + +echo "$PWD" +export ROOT="$PWD" + +mkdir ~/development + +cd ~/development +wget https://storage.googleapis.com/flutter_infra/releases/beta/linux/flutter_linux_v0.4.4-beta.tar.xz +tar xf ~/development/flutter_linux_v0.4.4-beta.tar.xz + +export PATH=~/development/flutter/bin:$PATH + + +cd $ROOT +flutter packages get + +gem install coveralls-lcov diff --git a/package/flutter_swiper_view/dev/bots/travis_script.sh b/package/flutter_swiper_view/dev/bots/travis_script.sh new file mode 100755 index 00000000..8eea42df --- /dev/null +++ b/package/flutter_swiper_view/dev/bots/travis_script.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -ex + +export PATH=~/development/flutter/bin:$PATH +export ROOT="$PWD" + +if [[ "$SHARD" == "dartfmt" ]]; then + echo 'Formating code' + cd $ROOT + flutter format . || exit $? +else + # tests shard + cd $ROOT + + flutter test --coverage test/* || exit $? + +fi diff --git a/package/flutter_swiper_view/example/README.md b/package/flutter_swiper_view/example/README.md new file mode 100644 index 00000000..64a12f6b --- /dev/null +++ b/package/flutter_swiper_view/example/README.md @@ -0,0 +1,8 @@ +# example + +A new Flutter project. + +## Getting Started + +For help getting started with Flutter, view our online +[documentation](https://flutter.io/). diff --git a/package/flutter_swiper_view/example/images/1.png b/package/flutter_swiper_view/example/images/1.png new file mode 100755 index 00000000..9b87ff2a Binary files /dev/null and b/package/flutter_swiper_view/example/images/1.png differ diff --git a/package/flutter_swiper_view/example/images/2.png b/package/flutter_swiper_view/example/images/2.png new file mode 100755 index 00000000..d08e334d Binary files /dev/null and b/package/flutter_swiper_view/example/images/2.png differ diff --git a/package/flutter_swiper_view/example/images/3.png b/package/flutter_swiper_view/example/images/3.png new file mode 100755 index 00000000..2ad5a781 Binary files /dev/null and b/package/flutter_swiper_view/example/images/3.png differ diff --git a/package/flutter_swiper_view/example/images/bg.jpeg b/package/flutter_swiper_view/example/images/bg.jpeg new file mode 100644 index 00000000..76ee2df0 Binary files /dev/null and b/package/flutter_swiper_view/example/images/bg.jpeg differ diff --git a/package/flutter_swiper_view/example/images/bg0.jpeg b/package/flutter_swiper_view/example/images/bg0.jpeg new file mode 100644 index 00000000..bf3b7436 Binary files /dev/null and b/package/flutter_swiper_view/example/images/bg0.jpeg differ diff --git a/package/flutter_swiper_view/example/images/bg1.jpeg b/package/flutter_swiper_view/example/images/bg1.jpeg new file mode 100644 index 00000000..2c4f2d64 Binary files /dev/null and b/package/flutter_swiper_view/example/images/bg1.jpeg differ diff --git a/package/flutter_swiper_view/example/images/bg2.jpeg b/package/flutter_swiper_view/example/images/bg2.jpeg new file mode 100644 index 00000000..b560cc57 Binary files /dev/null and b/package/flutter_swiper_view/example/images/bg2.jpeg differ diff --git a/package/flutter_swiper_view/example/lib/inner_swiper.dart b/package/flutter_swiper_view/example/lib/inner_swiper.dart new file mode 100644 index 00000000..c7087387 --- /dev/null +++ b/package/flutter_swiper_view/example/lib/inner_swiper.dart @@ -0,0 +1,90 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; + +void main() => runApp(const MyApp()); + +class MyApp extends StatelessWidget { + const MyApp({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return const MaterialApp( + home: InnerSwiper(), + ); + } +} + +class InnerSwiper extends StatefulWidget { + const InnerSwiper({Key? key}) : super(key: key); + + @override + State createState() { + return _InnerSwiperState(); + } +} + +class _InnerSwiperState extends State { + late SwiperController controller; + + late List autoPlayer; + + late List controllers; + + @override + void initState() { + controller = SwiperController(); + autoPlayer = List.generate(10, (index) => false); + controllers = List.generate(10, (index) => SwiperController()); + super.initState(); + } + + @override + Widget build(BuildContext context) { + return Scaffold( + body: Swiper( + loop: false, + itemCount: 10, + controller: controller, + pagination: const SwiperPagination(), + itemBuilder: (context, index) { + return Column( + children: [ + SizedBox( + height: 300.0, + child: Swiper( + controller: controllers[index], + pagination: const SwiperPagination(), + itemCount: 4, + itemBuilder: (context, index) { + return Container( + color: Colors.greenAccent, + child: const Text("jkfjkldsfjd"), + ); + }, + autoplay: autoPlayer[index], + ), + ), + ElevatedButton( + onPressed: () { + setState(() { + autoPlayer[index] = true; + }); + }, + child: const Text("Start autoplay"), + ), + ElevatedButton( + onPressed: () { + setState(() { + autoPlayer[index] = false; + }); + }, + child: const Text("End autoplay"), + ), + Text("is autoplay: ${autoPlayer[index]}") + ], + ); + }, + ), + ); + } +} diff --git a/package/flutter_swiper_view/example/lib/listener_test.dart b/package/flutter_swiper_view/example/lib/listener_test.dart new file mode 100644 index 00000000..f2dc2136 --- /dev/null +++ b/package/flutter_swiper_view/example/lib/listener_test.dart @@ -0,0 +1,45 @@ +import 'package:flutter/material.dart'; + +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; + +void main() => runApp(const MyApp()); + +class MyApp extends StatelessWidget { + const MyApp({Key? key}) : super(key: key); + + // This widget is the root of your application. + @override + Widget build(BuildContext context) { + return MaterialApp( + title: 'Flutter Demo', + theme: ThemeData( + primarySwatch: Colors.blue, + ), + home: const MyHomePage(title: 'Flutter Swiper'), + ); + } +} + +class MyHomePage extends StatefulWidget { + const MyHomePage({Key? key, required this.title}) : super(key: key); + + final String title; + + @override + State createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + @override + Widget build(BuildContext context) { + return Scaffold( + body: Swiper( + itemCount: 10, + itemBuilder: (c, i) { + return Text("$i"); + }, + plugins: const [], + ), + ); + } +} diff --git a/package/flutter_swiper_view/example/lib/main.dart b/package/flutter_swiper_view/example/lib/main.dart new file mode 100644 index 00000000..1b088745 --- /dev/null +++ b/package/flutter_swiper_view/example/lib/main.dart @@ -0,0 +1,409 @@ +import 'package:flutter/gestures.dart'; +import 'package:flutter/material.dart'; + +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; +import 'src/example_custom.dart'; +import 'src/config.dart'; +import 'src/example_swiper_in_scrollview.dart'; + +void main() => runApp(const MyApp()); + +class MyScrollBehavior extends MaterialScrollBehavior { + @override + Set get dragDevices => { + PointerDeviceKind.touch, + PointerDeviceKind.mouse, + }; +} + +class MyApp extends StatelessWidget { + const MyApp({Key? key}) : super(key: key); + + // This widget is the root of your application. + @override + Widget build(BuildContext context) { + return MaterialApp( + scrollBehavior: MyScrollBehavior(), + title: 'Flutter Demo', + theme: ThemeData.light(), + home: const MyHomePage(title: 'Flutter Swiper'), + //home: buildHome(), + routes: { + '/example01': (context) => const ExampleHorizontal(), + '/example02': (context) => const ExampleVertical(), + '/example03': (context) => const ExampleFraction(), + '/example04': (context) => const ExampleCustomPagination(), + '/example05': (context) => const ExamplePhone(), + '/example06': (context) => const ScaffoldWidget( + title: "ScrollView", child: ExampleSwiperInScrollView()), + '/example07': (context) => const ScaffoldWidget( + title: "Custom All", + child: ExampleCustom(), + ), + '/example08': (context) => const ExampleRect(), + }, + ); + } +} + +class MyHomePage extends StatefulWidget { + const MyHomePage({Key? key, required this.title}) : super(key: key); + + final String title; + + @override + State createState() => _MyHomePageState(); +} + +class _MyHomePageState extends State { + List render(BuildContext context, List> children) { + return ListTile.divideTiles( + context: context, + tiles: children.map((data) { + return buildListTile(context, data[0], data[1], data[2]); + }), + ).toList(); + } + + Widget buildListTile( + BuildContext context, String title, String subtitle, String url) { + return ListTile( + onTap: () { + Navigator.of(context).pushNamed(url); + }, + isThreeLine: true, + dense: false, + leading: null, + title: Text(title), + subtitle: Text(subtitle), + trailing: const Icon( + Icons.arrow_right, + color: Colors.blueAccent, + ), + ); + } + + @override + Widget build(BuildContext context) { + // DateTime moonLanding = DateTime.parse("1969-07-20"); + + return Scaffold( + appBar: AppBar( + title: Text(widget.title), + ), + body: ListView( + children: render(context, [ + ["Horizontal", "Scroll Horizontal", "/example01"], + ["Vertical", "Scroll Vertical", "/example02"], + ["Fraction", "Fraction style", "/example03"], + ["Rect", "Rect style", "/example08"], + ["Custom Pagination", "Custom Pagination", "/example04"], + ["Phone", "Phone view", "/example05"], + ["ScrollView ", "In a ScrollView", "/example06"], + ["Custom", "Custom all properties", "/example07"], + ]), + ), + ); + } +} + +const List titles = [ + "Flutter Swiper is awosome", + "Really nice", + "Yeap" +]; + +class ExampleHorizontal extends StatelessWidget { + const ExampleHorizontal({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("ExampleHorizontal"), + ), + body: Swiper( + itemBuilder: (context, index) { + return Image.asset( + images[index], + fit: BoxFit.fill, + ); + }, + indicatorLayout: PageIndicatorLayout.COLOR, + autoplay: true, + itemCount: images.length, + pagination: const SwiperPagination(), + control: const SwiperControl(), + )); + } +} + +class ExampleVertical extends StatelessWidget { + const ExampleVertical({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("ExampleVertical"), + ), + body: Swiper( + itemBuilder: (context, index) { + return Image.asset( + images[index], + fit: BoxFit.fill, + ); + }, + autoplay: true, + itemCount: images.length, + scrollDirection: Axis.vertical, + pagination: const SwiperPagination(alignment: Alignment.centerRight), + control: const SwiperControl(), + )); + } +} + +class ExampleFraction extends StatelessWidget { + const ExampleFraction({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("ExampleFraction"), + ), + body: Column( + children: [ + Expanded( + child: Swiper( + itemBuilder: (context, index) { + return Image.asset( + images[index], + fit: BoxFit.fill, + ); + }, + autoplay: true, + itemCount: images.length, + pagination: + const SwiperPagination(builder: SwiperPagination.fraction), + control: const SwiperControl(), + )), + Expanded( + child: Swiper( + itemBuilder: (context, index) { + return Image.asset( + images[index], + fit: BoxFit.fill, + ); + }, + autoplay: true, + itemCount: images.length, + scrollDirection: Axis.vertical, + pagination: const SwiperPagination( + alignment: Alignment.centerRight, + builder: SwiperPagination.fraction), + )) + ], + )); + } +} + +class ExampleRect extends StatelessWidget { + const ExampleRect({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("ExampleFraction"), + ), + body: Column( + children: [ + Expanded( + child: Swiper( + itemBuilder: (context, index) { + return Image.asset( + images[index], + fit: BoxFit.fill, + ); + }, + autoplay: true, + itemCount: images.length, + pagination: + const SwiperPagination(builder: SwiperPagination.rect), + control: const SwiperControl(), + ), + ), + Expanded( + child: Swiper( + itemBuilder: (context, index) { + return Image.asset( + images[index], + fit: BoxFit.fill, + ); + }, + autoplay: true, + itemCount: images.length, + scrollDirection: Axis.vertical, + pagination: const SwiperPagination( + alignment: Alignment.centerRight, + builder: SwiperPagination.rect, + ), + ), + ) + ], + )); + } +} + +class ExampleCustomPagination extends StatelessWidget { + const ExampleCustomPagination({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("Custom Pagination"), + ), + body: Column( + children: [ + Expanded( + child: Swiper( + itemBuilder: (context, index) { + return Image.asset( + images[index], + fit: BoxFit.fill, + ); + }, + autoplay: true, + itemCount: images.length, + pagination: SwiperPagination( + margin: const EdgeInsets.all(0.0), + builder: SwiperCustomPagination(builder: + (BuildContext context, SwiperPluginConfig config) { + return ConstrainedBox( + constraints: const BoxConstraints.expand(height: 50.0), + child: Container( + color: Colors.white, + child: Text( + "${titles[config.activeIndex]} ${config.activeIndex + 1}/${config.itemCount}", + style: const TextStyle(fontSize: 20.0), + )), + ); + })), + control: const SwiperControl(), + ), + ), + Expanded( + child: Swiper( + itemBuilder: (context, index) { + return Image.asset( + images[index], + fit: BoxFit.fill, + ); + }, + autoplay: true, + itemCount: images.length, + pagination: SwiperPagination( + margin: const EdgeInsets.all(0.0), + builder: SwiperCustomPagination(builder: + (BuildContext context, SwiperPluginConfig config) { + return ConstrainedBox( + constraints: const BoxConstraints.expand(height: 50.0), + child: Row( + children: [ + Text( + "${titles[config.activeIndex]} ${config.activeIndex + 1}/${config.itemCount}", + style: const TextStyle(fontSize: 20.0), + ), + Expanded( + child: Align( + alignment: Alignment.centerRight, + child: const DotSwiperPaginationBuilder( + color: Colors.black12, + activeColor: Colors.black, + size: 10.0, + activeSize: 20.0) + .build(context, config), + ), + ) + ], + ), + ); + })), + control: const SwiperControl(color: Colors.redAccent), + ), + ) + ], + )); + } +} + +class ExamplePhone extends StatelessWidget { + const ExamplePhone({Key? key}) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: const Text("Phone"), + ), + body: Stack( + children: [ + ConstrainedBox( + constraints: const BoxConstraints.expand(), + child: Image.asset( + "images/bg.jpeg", + fit: BoxFit.fill, + ), + ), + Swiper.children( + autoplay: false, + pagination: const SwiperPagination( + margin: EdgeInsets.fromLTRB(0.0, 0.0, 0.0, 30.0), + builder: DotSwiperPaginationBuilder( + color: Colors.white30, + activeColor: Colors.white, + size: 20.0, + activeSize: 20.0)), + children: [ + Image.asset( + "images/1.png", + fit: BoxFit.contain, + ), + Image.asset( + "images/2.png", + fit: BoxFit.contain, + ), + Image.asset("images/3.png", fit: BoxFit.contain) + ], + ) + ], + ), + ); + } +} + +class ScaffoldWidget extends StatelessWidget { + final Widget child; + final String title; + final List? actions; + + const ScaffoldWidget({ + Key? key, + required this.title, + required this.child, + this.actions, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Scaffold( + appBar: AppBar( + title: Text(title), + actions: actions, + ), + body: child, + ); + } +} diff --git a/package/flutter_swiper_view/example/lib/src/config.dart b/package/flutter_swiper_view/example/lib/src/config.dart new file mode 100644 index 00000000..fcea1725 --- /dev/null +++ b/package/flutter_swiper_view/example/lib/src/config.dart @@ -0,0 +1,5 @@ +const List images = [ + "images/bg0.jpeg", + "images/bg1.jpeg", + "images/bg2.jpeg", +]; diff --git a/package/flutter_swiper_view/example/lib/src/example_custom.dart b/package/flutter_swiper_view/example/lib/src/example_custom.dart new file mode 100644 index 00000000..5c32d2e4 --- /dev/null +++ b/package/flutter_swiper_view/example/lib/src/example_custom.dart @@ -0,0 +1,365 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; + +import 'config.dart'; +import 'forms/form_widget.dart'; + +class ExampleCustom extends StatefulWidget { + const ExampleCustom({Key? key}) : super(key: key); + + @override + State createState() { + return _ExampleCustomState(); + } +} + +class _ExampleCustomState extends State { + //properties want to custom + late int _itemCount; + + late bool _loop; + + late bool _autoplay; + + late int _autoplayDelay; + + late double _padding; + + late bool _outer; + + late double _radius; + + late double _viewportFraction; + + late SwiperLayout _layout; + + late int _currentIndex; + + late double _scale; + + late Axis _scrollDirection; + + late AxisDirection _axisDirection; + + late Curve _curve; + + late double _fade; + + late bool _autoplayDisableOnInteraction; + + late CustomLayoutOption customLayoutOption; + + late SwiperController _controller; + + TextEditingController numberController = TextEditingController(); + + Widget _buildItem(BuildContext context, int index) { + return ClipRRect( + borderRadius: BorderRadius.all(Radius.circular(_radius)), + child: Image.asset( + images[index % images.length], + fit: BoxFit.fill, + ), + ); + } + + @override + void didUpdateWidget(ExampleCustom oldWidget) { + customLayoutOption = CustomLayoutOption(startIndex: -1, stateCount: 3) + ..addRotate([-45.0 / 180, 0.0, 45.0 / 180]) + ..addTranslate([ + const Offset(-370.0, -40.0), + const Offset(0.0, 0.0), + const Offset(370.0, -40.0) + ]); + super.didUpdateWidget(oldWidget); + } + + @override + void initState() { + customLayoutOption = CustomLayoutOption(startIndex: -1, stateCount: 3) + ..addRotate([-25.0 / 180, 0.0, 25.0 / 180]) + ..addTranslate([ + const Offset(-350.0, 0.0), + const Offset(0.0, 0.0), + const Offset(350.0, 0.0) + ]); + _fade = 1.0; + _currentIndex = 0; + _curve = Curves.ease; + _scale = 0.8; + _autoplay = false; + _controller = SwiperController(); + _layout = SwiperLayout.TINDER; + _radius = 10.0; + _padding = 0.0; + _loop = true; + _itemCount = 3; + _autoplayDelay = 3000; + _viewportFraction = 0.8; + _outer = false; + _scrollDirection = Axis.horizontal; + _axisDirection = AxisDirection.left; + _autoplayDisableOnInteraction = false; + super.initState(); + } + +// maintain the index + + Widget buildSwiper() { + return Swiper( + onTap: (index) { + Navigator.of(context).push(MaterialPageRoute( + builder: (context) { + return Scaffold( + appBar: AppBar( + title: const Text('New page'), + ), + body: Container(), + ); + }, + )); + }, + customLayoutOption: customLayoutOption, + fade: _fade, + index: _currentIndex, + onIndexChanged: (index) { + setState(() { + _currentIndex = index; + }); + }, + curve: _curve, + scale: _scale, + itemWidth: 300.0, + controller: _controller, + layout: _layout, + outer: _outer, + itemHeight: 200.0, + viewportFraction: _viewportFraction, + autoplayDelay: _autoplayDelay, + loop: _loop, + autoplay: _autoplay, + itemBuilder: _buildItem, + itemCount: _itemCount, + scrollDirection: _scrollDirection, + axisDirection: _axisDirection, + indicatorLayout: PageIndicatorLayout.COLOR, + autoplayDisableOnInteraction: _autoplayDisableOnInteraction, + pagination: const SwiperPagination( + builder: DotSwiperPaginationBuilder( + size: 20.0, activeSize: 20.0, space: 10.0)), + ); + } + + @override + Widget build(BuildContext context) { + return Column( + children: [ + Container( + color: Colors.black87, + child: SizedBox( + height: 300.0, + width: double.infinity, + child: buildSwiper(), + ), + ), + Expanded( + child: ListView( + children: [ + Text('Index:$_currentIndex'), + Row( + children: [ + ElevatedButton( + onPressed: () { + _controller.previous(animation: true); + }, + child: const Text('Prev'), + ), + ElevatedButton( + onPressed: () { + _controller.next(animation: true); + }, + child: const Text('Next'), + ), + Expanded( + child: TextField( + controller: numberController, + )), + ElevatedButton( + onPressed: () { + final text = numberController.text; + setState(() { + _currentIndex = int.tryParse(text) ?? 0; + }); + }, + child: const Text('Update'), + ), + ], + ), + FormWidget( + label: 'layout', + child: FormSelect( + placeholder: 'Select layout', + value: _layout, + values: const [ + SwiperLayout.DEFAULT, + SwiperLayout.STACK, + SwiperLayout.TINDER, + SwiperLayout.CUSTOM + ], + valueChanged: (value) { + _layout = value; + setState(() {}); + }, + ), + ), + FormWidget( + label: 'scrollDirection', + child: Switch( + value: _scrollDirection == Axis.horizontal, + onChanged: (value) => setState(() => _scrollDirection = + value ? Axis.horizontal : Axis.vertical)), + ), + if (_layout == SwiperLayout.STACK) + FormWidget( + label: 'axisDirection (left <-> right)', + child: Switch( + value: _axisDirection == AxisDirection.right, + onChanged: (value) => setState(() => _axisDirection = + value ? AxisDirection.right : AxisDirection.left)), + ), + FormWidget( + label: 'autoplayDisableOnInteraction', + child: Switch( + value: _autoplayDisableOnInteraction, + onChanged: (value) => + setState(() => _autoplayDisableOnInteraction = value)), + ), + //Pannel Begin + FormWidget( + label: 'loop', + child: Switch( + value: _loop, + onChanged: (value) => setState(() => _loop = value)), + ), + FormWidget( + label: 'outer', + child: Switch( + value: _outer, + onChanged: (value) => setState(() => _outer = value)), + ), + //Pannel Begin + FormWidget( + label: 'autoplay', + child: Switch( + value: _autoplay, + onChanged: (value) => setState(() => _autoplay = value)), + ), + + FormWidget( + label: 'padding', + child: NumberPad( + number: _padding, + step: 5.0, + min: 0.0, + max: 30.0, + onChangeValue: (value) { + _padding = value.toDouble(); + setState(() {}); + }, + ), + ), + FormWidget( + label: 'scale', + child: NumberPad( + number: _scale, + step: 0.1, + min: 0.0, + max: 1.0, + onChangeValue: (value) { + _scale = value.toDouble(); + setState(() {}); + }, + ), + ), + FormWidget( + label: 'fade', + child: NumberPad( + number: _fade, + step: 0.1, + min: 0.0, + max: 1.0, + onChangeValue: (value) { + _fade = value.toDouble(); + setState(() {}); + }, + ), + ), + FormWidget( + label: 'itemCount', + child: NumberPad( + number: _itemCount, + step: 1, + min: 0, + max: 100, + onChangeValue: (value) { + _itemCount = value.toInt(); + setState(() {}); + }, + ), + ), + + FormWidget( + label: 'radius', + child: NumberPad( + number: _radius, + step: 1.0, + min: 0.0, + max: 30.0, + onChangeValue: (value) { + _radius = value.toDouble(); + setState(() {}); + }, + ), + ), + + FormWidget( + label: 'viewportFraction', + child: NumberPad( + number: _viewportFraction, + step: 0.1, + max: 1.0, + min: 0.5, + onChangeValue: (value) { + _viewportFraction = value.toDouble(); + setState(() {}); + }, + ), + ), + + FormWidget( + label: 'curve', + child: FormSelect( + placeholder: 'Select curve', + value: _curve, + values: const [ + Curves.easeInOut, + Curves.ease, + Curves.bounceInOut, + Curves.bounceOut, + Curves.bounceIn, + Curves.fastOutSlowIn + ], + valueChanged: (value) { + _curve = value; + setState(() {}); + }, + ), + ), + ], + ), + ) + ], + ); + } +} diff --git a/package/flutter_swiper_view/example/lib/src/example_swiper_in_scrollview.dart b/package/flutter_swiper_view/example/lib/src/example_swiper_in_scrollview.dart new file mode 100644 index 00000000..fbf531b3 --- /dev/null +++ b/package/flutter_swiper_view/example/lib/src/example_swiper_in_scrollview.dart @@ -0,0 +1,276 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; + +class ExampleSwiperInScrollView extends StatefulWidget { + const ExampleSwiperInScrollView({Key? key}) : super(key: key); + + @override + State createState() { + return _ExampleState(); + } +} + +class _ExampleState extends State + with TickerProviderStateMixin { + late AnimationController controller; + late Animation _animation10; + late Animation _animation11; + late Animation _animation12; + late Animation _animation13; + + _ExampleState(); + + @override + void dispose() { + controller.dispose(); + + super.dispose(); + } + + @override + void initState() { + controller = AnimationController(vsync: this); + _animation10 = Tween(begin: 0.0, end: 1.0).animate(controller); + _animation11 = Tween(begin: 0.0, end: 1.0).animate(controller); + _animation12 = Tween(begin: 0.0, end: 1.0).animate(controller); + _animation13 = Tween(begin: 0.0, end: 1.0).animate(controller); + controller.animateTo(1.0, duration: const Duration(seconds: 3)); + super.initState(); + } + + Widget _buildDynamicCard() { + return Card( + elevation: 2.0, + color: Colors.white, + child: Stack( + children: [ + Column( + children: [ + Container( + padding: const EdgeInsets.all(10.0), + ), + ], + ), + Column( + children: [ + Row( + mainAxisAlignment: MainAxisAlignment.spaceEvenly, + children: [ + Column( + children: [ + Container( + padding: const EdgeInsets.only(top: 40.0), + ), + ScaleTransition( + scale: _animation10, + alignment: FractionalOffset.center, + ), + ], + ), + Column( + children: [ + Container( + padding: const EdgeInsets.only(top: 160.0), + ), + ScaleTransition( + scale: _animation11, + alignment: FractionalOffset.center, + ), + ], + ), + Container( + padding: const EdgeInsets.all(1.0), + ), + Column( + children: [ + Container( + padding: const EdgeInsets.only(top: 160.0), + ), + ScaleTransition( + scale: _animation12, + alignment: FractionalOffset.center, + ), + ], + ), + Column( + children: [ + Container( + padding: const EdgeInsets.only(top: 40.0), + ), + ScaleTransition( + scale: _animation13, + alignment: FractionalOffset.center, + ), + ], + ), + ]), + Container( + padding: const EdgeInsets.all(10.0), + ), + ], + ) + ], + ), + ); + } + + @override + Widget build(BuildContext context) { + return Container( + color: Theme.of(context).primaryColorLight, + child: CustomScrollView( + slivers: [ + SliverList( + delegate: SliverChildBuilderDelegate((c, i) { + return Column( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + height: 100.0, + child: Swiper( + scale: 0.8, + fade: 0.8, + itemBuilder: (c, i) { + return Container( + color: Colors.grey, + child: Text("$i"), + ); + }, + itemCount: 10, + pagination: const SwiperPagination(), + ), + ), + SizedBox( + height: 100.0, + child: Swiper( + scale: 0.8, + fade: 0.8, + itemBuilder: (c, i) { + return Container( + color: Colors.grey, + child: Text("$i"), + ); + }, + pagination: const SwiperPagination( + builder: SwiperPagination.fraction), + itemCount: 0), + ), + SizedBox( + height: 100.0, + child: Swiper( + scale: 0.8, + fade: 0.8, + itemBuilder: (c, i) { + return Container( + color: Colors.grey, + child: Text("$i"), + ); + }, + pagination: const SwiperPagination( + builder: SwiperPagination.fraction), + itemCount: 10000), + ), + SizedBox( + height: 100.0, + child: Swiper( + outer: true, + scale: 0.8, + fade: 0.8, + itemBuilder: (c, i) { + return Container( + color: Colors.grey, + child: Text("$i"), + ); + }, + pagination: const SwiperPagination(), + itemCount: 10), + ), + const Text("Image from network"), + SizedBox( + height: 300.0, + child: Swiper( + itemCount: 10, + itemBuilder: (BuildContext context, int index) { + return Image.network( + "https://ss3.baidu.com/9fo3dSag_xI4khGko9WTAnF6hhy/image/h%3D300/sign=87d6daed02f41bd5c553eef461d881a0/f9198618367adab4b025268587d4b31c8601e47b.jpg"); + }, + ), + ), + SizedBox( + height: 100.0, + child: Swiper( + outer: true, + scale: 0.8, + fade: 0.8, + itemBuilder: (c, i) { + return Card( + elevation: 2.0, + child: Stack( + alignment: AlignmentDirectional.center, + children: [ + Image.network( + "https://ss3.baidu.com/9fo3dSag_xI4khGko9WTAnF6hhy/image/h%3D300/sign=87d6daed02f41bd5c553eef461d881a0/f9198618367adab4b025268587d4b31c8601e47b.jpg"), + FractionalTranslation( + translation: const Offset(0.0, 0.0), + child: Container( + alignment: const FractionalOffset(0.0, 0.0), + decoration: BoxDecoration( + border: Border.all( + color: Colors.lightBlue.withOpacity(0.5), + width: 100.0, + ), + shape: BoxShape.circle, + ), + ), + ), + Container( + //padding: const EdgeInsets.only(bottom:10.0), + margin: const EdgeInsets.all(140.0), + + child: const Icon(Icons.location_on, + color: Colors.white, size: 25.0), + ), + ], + ), + ); + }, + pagination: const SwiperPagination( + alignment: Alignment.topCenter), + itemCount: 10), + ), + SizedBox( + height: 400.0, + child: Swiper( + outer: true, + itemBuilder: (c, i) { + return _buildDynamicCard(); + }, + pagination: const SwiperPagination( + alignment: Alignment.topCenter), + itemCount: 10), + ), + SizedBox( + height: 100.0, + child: Swiper( + outer: true, + fade: 0.8, + viewportFraction: 0.8, + scale: 0.8, + itemBuilder: (c, i) { + return Container( + color: Colors.grey, + child: Text("$i"), + ); + }, + pagination: const SwiperPagination( + alignment: Alignment.topCenter), + itemCount: 10), + ), + ], + ); + }, childCount: 1)) + ], + ), + ); + } +} diff --git a/package/flutter_swiper_view/example/lib/src/forms/form_widget.dart b/package/flutter_swiper_view/example/lib/src/forms/form_widget.dart new file mode 100644 index 00000000..d5e91eb8 --- /dev/null +++ b/package/flutter_swiper_view/example/lib/src/forms/form_widget.dart @@ -0,0 +1,162 @@ +import 'package:flutter/material.dart'; +import 'package:flutter/cupertino.dart'; + +class FormWidget extends StatelessWidget { + final String label; + + final Widget child; + + const FormWidget({ + Key? key, + required this.label, + required this.child, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Padding( + padding: const EdgeInsets.all(5.0), + child: Row( + children: [ + Text(label, style: const TextStyle(fontSize: 14.0)), + Expanded( + child: Align( + alignment: Alignment.centerRight, + child: child, + ), + ) + ], + ), + ); + } +} + +class FormSelect extends StatefulWidget { + final String placeholder; + final ValueChanged valueChanged; + final List values; + final T value; + + const FormSelect({ + Key? key, + required this.placeholder, + required this.valueChanged, + required this.value, + required this.values, + }) : super(key: key); + + @override + State createState() { + return _FormSelectState(); + } +} + +class _FormSelectState extends State> { + int _selectedIndex = 0; + + @override + void initState() { + for (int i = 0; i < widget.values.length; ++i) { + if (widget.values[i] == widget.value) { + _selectedIndex = i; + break; + } + } + + super.initState(); + } + + @override + Widget build(BuildContext context) { + final placeholder = widget.placeholder; + final values = widget.values; + + return InkWell( + child: Text( + _selectedIndex < 0 ? placeholder : values[_selectedIndex].toString()), + onTap: () { + _selectedIndex = 0; + showBottomSheet( + context: context, + builder: (context) { + return SizedBox( + height: values.length * 30.0 + 200.0, + child: Column( + mainAxisSize: MainAxisSize.min, + children: [ + SizedBox( + height: values.length * 30.0 + 70.0, + child: CupertinoPicker( + itemExtent: 30.0, + children: values.map((value) { + return Text(value.toString()); + }).toList(), + onSelectedItemChanged: (index) { + _selectedIndex = index; + }, + ), + ), + Center( + child: ElevatedButton( + onPressed: () { + if (_selectedIndex >= 0) { + widget.valueChanged( + widget.values[_selectedIndex], + ); + } + + setState(() {}); + + Navigator.of(context).pop(); + }, + child: const Text('ok'), + ), + ) + ], + ), + ); + }); + }, + ); + } +} + +class NumberPad extends StatelessWidget { + final num number; + final num step; + final num max; + final num min; + final ValueChanged onChangeValue; + + const NumberPad({ + Key? key, + required this.number, + required this.step, + required this.onChangeValue, + required this.max, + required this.min, + }) : super(key: key); + + void onAdd() { + onChangeValue(number + step > max ? max : number + step); + } + + void onSub() { + onChangeValue(number - step < min ? min : number - step); + } + + @override + Widget build(BuildContext context) { + return Row( + mainAxisSize: MainAxisSize.min, + children: [ + IconButton(icon: const Icon(Icons.exposure_neg_1), onPressed: onSub), + Text( + number is int ? number.toString() : number.toStringAsFixed(1), + style: const TextStyle(fontSize: 14.0), + ), + IconButton(icon: const Icon(Icons.exposure_plus_1), onPressed: onAdd) + ], + ); + } +} diff --git a/package/flutter_swiper_view/example/pubspec.yaml b/package/flutter_swiper_view/example/pubspec.yaml new file mode 100644 index 00000000..3504f4bd --- /dev/null +++ b/package/flutter_swiper_view/example/pubspec.yaml @@ -0,0 +1,35 @@ +name: example +description: A new Flutter project. + +environment: + sdk: '>=2.12.0 <3.0.0' + +dependencies: + flutter: + sdk: flutter + + # The following adds the Cupertino Icons font to your application. + # Use with the CupertinoIcons class for iOS style icons. + cupertino_icons: ^1.0.2 + + flutter_swiper_view: + path: ../ + + +dev_dependencies: + flutter_lints: ^2.0.1 + flutter_test: + sdk: flutter + +flutter: + uses-material-design: true + + + assets: + - images/bg0.jpeg + - images/bg1.jpeg + - images/bg2.jpeg + - images/bg.jpeg + - images/1.png + - images/2.png + - images/3.png diff --git a/package/flutter_swiper_view/example/res/1.gif b/package/flutter_swiper_view/example/res/1.gif new file mode 100644 index 00000000..51de191b Binary files /dev/null and b/package/flutter_swiper_view/example/res/1.gif differ diff --git a/package/flutter_swiper_view/example/res/2.gif b/package/flutter_swiper_view/example/res/2.gif new file mode 100644 index 00000000..821df059 Binary files /dev/null and b/package/flutter_swiper_view/example/res/2.gif differ diff --git a/package/flutter_swiper_view/example/res/3.gif b/package/flutter_swiper_view/example/res/3.gif new file mode 100644 index 00000000..a8f50a61 Binary files /dev/null and b/package/flutter_swiper_view/example/res/3.gif differ diff --git a/package/flutter_swiper_view/example/res/4.gif b/package/flutter_swiper_view/example/res/4.gif new file mode 100644 index 00000000..43bde554 Binary files /dev/null and b/package/flutter_swiper_view/example/res/4.gif differ diff --git a/package/flutter_swiper_view/example/res/5.gif b/package/flutter_swiper_view/example/res/5.gif new file mode 100644 index 00000000..a9b87b28 Binary files /dev/null and b/package/flutter_swiper_view/example/res/5.gif differ diff --git a/package/flutter_swiper_view/example/test/widget_test.dart b/package/flutter_swiper_view/example/test/widget_test.dart new file mode 100644 index 00000000..43218bbf --- /dev/null +++ b/package/flutter_swiper_view/example/test/widget_test.dart @@ -0,0 +1,29 @@ +// This is a basic Flutter widget test. +// To perform an interaction with a widget in your test, use the WidgetTester utility that Flutter +// provides. For example, you can send tap and scroll gestures. You can also use WidgetTester to +// find child widgets in the widget tree, read text, and verify that the values of widget properties +// are correct. + +import 'package:flutter/material.dart'; +import 'package:flutter_test/flutter_test.dart'; + +import 'package:example/main.dart'; + +void main() { + testWidgets('Counter increments smoke test', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(const MyApp()); + + // Verify that our counter starts at 0. + expect(find.text('0'), findsOneWidget); + expect(find.text('1'), findsNothing); + + // Tap the '+' icon and trigger a frame. + await tester.tap(find.byIcon(Icons.add)); + await tester.pump(); + + // Verify that our counter has incremented. + expect(find.text('0'), findsNothing); + expect(find.text('1'), findsOneWidget); + }); +} diff --git a/package/flutter_swiper_view/lib/flutter_swiper_view.dart b/package/flutter_swiper_view/lib/flutter_swiper_view.dart new file mode 100644 index 00000000..8dc90daa --- /dev/null +++ b/package/flutter_swiper_view/lib/flutter_swiper_view.dart @@ -0,0 +1,9 @@ +library flutter_swiper_view; + +export 'src/flutter_page_indicator.dart'; +export 'src/index_controller.dart'; +export 'src/swiper.dart'; +export 'src/swiper_pagination.dart'; +export 'src/swiper_control.dart'; +export 'src/swiper_controller.dart'; +export 'src/swiper_plugin.dart'; diff --git a/package/flutter_swiper_view/lib/src/custom_layout.dart b/package/flutter_swiper_view/lib/src/custom_layout.dart new file mode 100644 index 00000000..8270a490 --- /dev/null +++ b/package/flutter_swiper_view/lib/src/custom_layout.dart @@ -0,0 +1,449 @@ +part of 'swiper.dart'; + +abstract class _CustomLayoutStateBase extends State + with SingleTickerProviderStateMixin { + late double _swiperWidth; + late double _swiperHeight; + late Animation _animation; + late AnimationController _animationController; + SwiperController get _controller => widget.controller; + late int _startIndex; + int? _animationCount; + int _currentIndex = 0; + + @override + void initState() { + _currentIndex = widget.index ?? 0; + if (widget.itemWidth == null) { + throw Exception( + '==============\n\nwidget.itemWidth must not be null when use stack layout.\n========\n', + ); + } + + _createAnimationController(); + _controller.addListener(_onController); + super.initState(); + } + + void _createAnimationController() { + _animationController = AnimationController(vsync: this, value: 0.5); + Tween tween = Tween(begin: 0.0, end: 1.0); + _animation = tween.animate(_animationController); + } + + @override + void didChangeDependencies() { + WidgetsBinding.instance.addPostFrameCallback(_getSize); + super.didChangeDependencies(); + } + + void _getSize(Duration _) { + if (!mounted) return; + afterRender(); + } + + @mustCallSuper + void afterRender() { + RenderObject renderObject = context.findRenderObject()!; + Size size = renderObject.paintBounds.size; + _swiperWidth = size.width; + _swiperHeight = size.height; + setState(() {}); + } + + @override + void didUpdateWidget(T oldWidget) { + if (widget.controller != oldWidget.controller) { + oldWidget.controller.removeListener(_onController); + widget.controller.addListener(_onController); + } + + if (widget.loop != oldWidget.loop) { + if (!widget.loop) { + _currentIndex = _ensureIndex(_currentIndex); + } + } + + if (widget.axisDirection != oldWidget.axisDirection) { + afterRender(); + } + + super.didUpdateWidget(oldWidget); + } + + int _ensureIndex(int index) { + var res = index; + res = index % widget.itemCount; + if (res < 0) { + res += widget.itemCount; + } + return res; + } + + @override + void dispose() { + widget.controller.removeListener(_onController); + _animationController.dispose(); + super.dispose(); + } + + Widget _buildItem(int i, int realIndex, double animationValue); + + Widget _buildContainer(List list) { + return Stack( + children: list, + ); + } + + Widget _buildAnimation(BuildContext context, Widget? w) { + List list = []; + + double animationValue = _animation.value; + + for (int i = 0; i < _animationCount! && widget.itemCount > 0; ++i) { + int realIndex = _currentIndex + i + _startIndex; + realIndex = realIndex % widget.itemCount; + if (realIndex < 0) { + realIndex += widget.itemCount; + } + + if (widget.axisDirection == AxisDirection.right) { + list.insert(0, _buildItem(i, realIndex, animationValue)); + } else { + list.add(_buildItem(i, realIndex, animationValue)); + } + } + + return GestureDetector( + behavior: HitTestBehavior.opaque, + onPanStart: _onPanStart, + onPanEnd: _onPanEnd, + onPanUpdate: _onPanUpdate, + child: ClipRect( + child: Center( + child: _buildContainer(list), + ), + ), + ); + } + + @override + Widget build(BuildContext context) { + if (_animationCount == null) { + return Container(); + } + return AnimatedBuilder( + animation: _animationController, + builder: _buildAnimation, + ); + } + + late double _currentValue; + late double _currentPos; + + bool _lockScroll = false; + + Future _move(double position, {int? nextIndex}) async { + if (_lockScroll) return; + try { + _lockScroll = true; + await _animationController.animateTo( + position, + duration: Duration(milliseconds: widget.duration!), + curve: widget.curve, + ); + if (nextIndex != null) { + widget.onIndexChanged!(widget.getCorrectIndex(nextIndex)); + } + } catch (e) { + debugPrint('error animating _animationController ${e.toString()}'); + } finally { + if (nextIndex != null) { + try { + _animationController.value = 0.5; + } catch (e) { + debugPrint( + 'error setting _animationController.value ${e.toString()}'); + } + + _currentIndex = nextIndex; + } + _lockScroll = false; + } + } + + int _getProperNewIndex(int newIndex) { + var res = newIndex; + if (!widget.loop && newIndex >= widget.itemCount - 1) { + res = widget.itemCount - 1; + } else if (!widget.loop && newIndex < 0) { + res = 0; + } + return res; + } + + void _onController() { + SwiperController controller = widget.controller; + final event = controller.event; + if (event is StepBasedIndexControllerEvent) { + final newIndex = event.calcNextIndex( + currentIndex: _currentIndex, + itemCount: widget.itemCount, + loop: widget.loop, + reverse: false, + ); + _move(event.targetPosition, nextIndex: newIndex); + } else if (event is MoveIndexControllerEvent) { + _move( + event.targetPosition, + nextIndex: _getProperNewIndex(event.newIndex), + ); + } + } + + void _onPanEnd(DragEndDetails details) { + if (_lockScroll) return; + + double velocity = widget.scrollDirection == Axis.horizontal + ? details.velocity.pixelsPerSecond.dx + : details.velocity.pixelsPerSecond.dy; + + if (_animationController.value >= 0.75 || velocity > 500.0) { + if (_currentIndex <= 0 && !widget.loop) { + return; + } + _move(1.0, nextIndex: _currentIndex - 1); + } else if (_animationController.value < 0.25 || velocity < -500.0) { + if (_currentIndex >= widget.itemCount - 1 && !widget.loop) { + return; + } + _move(0.0, nextIndex: _currentIndex + 1); + } else { + _move(0.5); + } + } + + void _onPanStart(DragStartDetails details) { + if (_lockScroll) return; + _currentValue = _animationController.value; + _currentPos = widget.scrollDirection == Axis.horizontal + ? details.globalPosition.dx + : details.globalPosition.dy; + } + + void _onPanUpdate(DragUpdateDetails details) { + if (_lockScroll) return; + double value = _currentValue + + ((widget.scrollDirection == Axis.horizontal + ? details.globalPosition.dx + : details.globalPosition.dy) - + _currentPos) / + _swiperWidth / + 2; + // no loop ? + if (!widget.loop) { + if (_currentIndex >= widget.itemCount - 1) { + if (value < 0.5) { + value = 0.5; + } + } else if (_currentIndex <= 0) { + if (value > 0.5) { + value = 0.5; + } + } + } + + _animationController.value = value; + } +} + +double _getValue(List values, double animationValue, int index) { + double s = values[index]; + if (animationValue >= 0.5) { + if (index < values.length - 1) { + s = s + (values[index + 1] - s) * (animationValue - 0.5) * 2.0; + } + } else { + if (index != 0) { + s = s - (s - values[index - 1]) * (0.5 - animationValue) * 2.0; + } + } + return s; +} + +Offset _getOffsetValue(List values, double animationValue, int index) { + Offset s = values[index]; + double dx = s.dx; + double dy = s.dy; + if (animationValue >= 0.5) { + if (index < values.length - 1) { + dx = dx + (values[index + 1].dx - dx) * (animationValue - 0.5) * 2.0; + dy = dy + (values[index + 1].dy - dy) * (animationValue - 0.5) * 2.0; + } + } else { + if (index != 0) { + dx = dx - (dx - values[index - 1].dx) * (0.5 - animationValue) * 2.0; + dy = dy - (dy - values[index - 1].dy) * (0.5 - animationValue) * 2.0; + } + } + return Offset(dx, dy); +} + +abstract class TransformBuilder { + final List values; + + TransformBuilder({required this.values}); + + Widget build(int i, double animationValue, Widget widget); +} + +class ScaleTransformBuilder extends TransformBuilder { + final Alignment alignment; + + ScaleTransformBuilder({ + required List values, + this.alignment = Alignment.center, + }) : super(values: values); + + @override + Widget build(int i, double animationValue, Widget widget) { + double s = _getValue(values, animationValue, i); + return Transform.scale(scale: s, child: widget); + } +} + +class OpacityTransformBuilder extends TransformBuilder { + OpacityTransformBuilder({required List values}) + : super(values: values); + + @override + Widget build(int i, double animationValue, Widget widget) { + double v = _getValue(values, animationValue, i); + return Opacity( + opacity: v, + child: widget, + ); + } +} + +class RotateTransformBuilder extends TransformBuilder { + RotateTransformBuilder({required List values}) + : super(values: values); + + @override + Widget build(int i, double animationValue, Widget widget) { + double v = _getValue(values, animationValue, i); + return Transform.rotate( + angle: v, + child: widget, + ); + } +} + +class TranslateTransformBuilder extends TransformBuilder { + TranslateTransformBuilder({required List values}) + : super(values: values); + + @override + Widget build(int i, double animationValue, Widget widget) { + Offset s = _getOffsetValue(values, animationValue, i); + return Transform.translate( + offset: s, + child: widget, + ); + } +} + +class CustomLayoutOption { + final List builders = []; + final int startIndex; + final int? stateCount; + + CustomLayoutOption({this.stateCount, required this.startIndex}); + + void addOpacity(List values) { + builders.add(OpacityTransformBuilder(values: values)); + } + + void addTranslate(List values) { + builders.add(TranslateTransformBuilder(values: values)); + } + + void addScale(List values, Alignment alignment) { + builders.add(ScaleTransformBuilder(values: values, alignment: alignment)); + } + + void addRotate(List values) { + builders.add(RotateTransformBuilder(values: values)); + } +} + +class _CustomLayoutSwiper extends _SubSwiper { + final CustomLayoutOption option; + + const _CustomLayoutSwiper({ + required this.option, + double? itemWidth, + required bool loop, + double? itemHeight, + ValueChanged? onIndexChanged, + Key? key, + IndexedWidgetBuilder? itemBuilder, + required Curve curve, + int? duration, + int? index, + required int itemCount, + Axis? scrollDirection, + required SwiperController controller, + }) : super( + loop: loop, + onIndexChanged: onIndexChanged, + itemWidth: itemWidth, + itemHeight: itemHeight, + key: key, + itemBuilder: itemBuilder, + curve: curve, + duration: duration, + index: index, + itemCount: itemCount, + controller: controller, + scrollDirection: scrollDirection); + + @override + State createState() { + return _CustomLayoutState(); + } +} + +class _CustomLayoutState extends _CustomLayoutStateBase<_CustomLayoutSwiper> { + @override + void didChangeDependencies() { + super.didChangeDependencies(); + _startIndex = widget.option.startIndex; + _animationCount = widget.option.stateCount; + } + + @override + void didUpdateWidget(_CustomLayoutSwiper oldWidget) { + _startIndex = widget.option.startIndex; + _animationCount = widget.option.stateCount; + super.didUpdateWidget(oldWidget); + } + + @override + Widget _buildItem(int index, int realIndex, double animationValue) { + List builders = widget.option.builders; + + Widget child = SizedBox( + width: widget.itemWidth ?? double.infinity, + height: widget.itemHeight ?? double.infinity, + child: widget.itemBuilder!(context, realIndex)); + + for (int i = builders.length - 1; i >= 0; --i) { + TransformBuilder builder = builders[i]; + child = builder.build(index, animationValue, child); + } + + return child; + } +} diff --git a/package/flutter_swiper_view/lib/src/flutter_page_indicator.dart b/package/flutter_swiper_view/lib/src/flutter_page_indicator.dart new file mode 100644 index 00000000..3384a35e --- /dev/null +++ b/package/flutter_swiper_view/lib/src/flutter_page_indicator.dart @@ -0,0 +1,355 @@ +// ignore_for_file: constant_identifier_names + +import 'package:flutter/material.dart'; +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; + +class WarmPainter extends BasePainter { + WarmPainter(PageIndicator widget, double page, int index, Paint paint) + : super(widget, page, index, paint); + + @override + void draw(Canvas canvas, double space, double size, double radius) { + double progress = page - index; + double distance = size + space; + double start = index * (size + space); + + if (progress > 0.5) { + double right = start + size + distance; + //progress=>0.5-1.0 + //left:0.0=>distance + + double left = index * distance + distance * (progress - 0.5) * 2; + canvas.drawRRect( + RRect.fromLTRBR(left, 0.0, right, size, Radius.circular(radius)), + _paint); + } else { + double right = start + size + distance * progress * 2; + + canvas.drawRRect( + RRect.fromLTRBR(start, 0.0, right, size, Radius.circular(radius)), + _paint); + } + } +} + +class DropPainter extends BasePainter { + DropPainter(PageIndicator widget, double page, int index, Paint paint) + : super(widget, page, index, paint); + + @override + void draw(Canvas canvas, double space, double size, double radius) { + double progress = page - index; + double dropHeight = widget.dropHeight; + double rate = (0.5 - progress).abs() * 2; + double scale = widget.scale; + + //lerp(begin, end, progress) + + canvas.drawCircle( + Offset(radius + ((page) * (size + space)), + radius - dropHeight * (1 - rate)), + radius * (scale + rate * (1.0 - scale)), + _paint); + } +} + +class NonePainter extends BasePainter { + NonePainter(PageIndicator widget, double page, int index, Paint paint) + : super(widget, page, index, paint); + + @override + void draw(Canvas canvas, double space, double size, double radius) { + double progress = page - index; + double secondOffset = index == widget.count - 1 + ? radius + : radius + ((index + 1) * (size + space)); + + if (progress > 0.5) { + canvas.drawCircle(Offset(secondOffset, radius), radius, _paint); + } else { + canvas.drawCircle( + Offset(radius + (index * (size + space)), radius), radius, _paint); + } + } +} + +class SlidePainter extends BasePainter { + SlidePainter(PageIndicator widget, double page, int index, Paint paint) + : super(widget, page, index, paint); + + @override + void draw(Canvas canvas, double space, double size, double radius) { + canvas.drawCircle( + Offset(radius + (page * (size + space)), radius), radius, _paint); + } +} + +class ScalePainter extends BasePainter { + ScalePainter(PageIndicator widget, double page, int index, Paint paint) + : super(widget, page, index, paint); + + // 连续的两个点,含有最后一个和第一个 + @override + bool _shouldSkip(int i) { + if (index == widget.count - 1) { + return i == 0 || i == index; + } + return (i == index || i == index + 1); + } + + @override + void paint(Canvas canvas, Size size) { + _paint.color = widget.color; + double space = widget.space; + double size = widget.size; + double radius = size / 2; + int c = widget.count; + for (int i = 0; i < c; ++i) { + if (_shouldSkip(i)) { + continue; + } + canvas.drawCircle(Offset(i * (size + space) + radius, radius), + radius * widget.scale, _paint); + } + + _paint.color = widget.activeColor; + draw(canvas, space, size, radius); + } + + @override + void draw(Canvas canvas, double space, double size, double radius) { + double secondOffset = index == widget.count - 1 + ? radius + : radius + ((index + 1) * (size + space)); + + double progress = page - index; + _paint.color = Color.lerp(widget.activeColor, widget.color, progress)!; + //last + canvas.drawCircle(Offset(radius + (index * (size + space)), radius), + lerp(radius, radius * widget.scale, progress), _paint); + //first + _paint.color = Color.lerp(widget.color, widget.activeColor, progress)!; + canvas.drawCircle(Offset(secondOffset, radius), + lerp(radius * widget.scale, radius, progress), _paint); + } +} + +class ColorPainter extends BasePainter { + ColorPainter(PageIndicator widget, double page, int index, Paint paint) + : super(widget, page, index, paint); + + // 连续的两个点,含有最后一个和第一个 + @override + bool _shouldSkip(int i) { + if (index == widget.count - 1) { + return i == 0 || i == index; + } + return (i == index || i == index + 1); + } + + @override + void draw(Canvas canvas, double space, double size, double radius) { + double progress = page - index; + double secondOffset = index == widget.count - 1 + ? radius + : radius + ((index + 1) * (size + space)); + + _paint.color = Color.lerp(widget.activeColor, widget.color, progress)!; + //left + canvas.drawCircle( + Offset(radius + (index * (size + space)), radius), radius, _paint); + //right + _paint.color = Color.lerp(widget.color, widget.activeColor, progress)!; + canvas.drawCircle(Offset(secondOffset, radius), radius, _paint); + } +} + +abstract class BasePainter extends CustomPainter { + final PageIndicator widget; + final double page; + final int index; + final Paint _paint; + + double lerp(double begin, double end, double progress) { + return begin + (end - begin) * progress; + } + + BasePainter(this.widget, this.page, this.index, this._paint); + + void draw(Canvas canvas, double space, double size, double radius); + + bool _shouldSkip(int i) { + return false; + } + //double secondOffset = index == widget.count-1 ? radius : radius + ((index + 1) * (size + space)); + + @override + void paint(Canvas canvas, Size size) { + _paint.color = widget.color; + double space = widget.space; + double size = widget.size; + double radius = size / 2; + int c = widget.count; + for (int i = 0; i < c; ++i) { + if (_shouldSkip(i)) { + continue; + } + canvas.drawCircle( + Offset(i * (size + space) + radius, radius), radius, _paint); + } + + double page = this.page; + if (page < index) { + page = 0.0; + } + _paint.color = widget.activeColor; + draw(canvas, space, size, radius); + } + + @override + bool shouldRepaint(BasePainter oldDelegate) { + return oldDelegate.page != page; + } +} + +class _PageIndicatorState extends State { + int index = 0; + double page = 0; + final Paint _paint = Paint(); + + BasePainter _createPainter() { + switch (widget.layout) { + case PageIndicatorLayout.NONE: + return NonePainter(widget, page, index, _paint); + case PageIndicatorLayout.SLIDE: + return SlidePainter(widget, page, index, _paint); + case PageIndicatorLayout.WARM: + return WarmPainter(widget, page, index, _paint); + case PageIndicatorLayout.COLOR: + return ColorPainter(widget, page, index, _paint); + case PageIndicatorLayout.SCALE: + return ScalePainter(widget, page, index, _paint); + case PageIndicatorLayout.DROP: + return DropPainter(widget, page, index, _paint); + default: + throw Exception("Not a valid layout"); + } + } + + @override + Widget build(BuildContext context) { + Widget child = SizedBox( + width: widget.count * widget.size + (widget.count - 1) * widget.space, + height: widget.size, + child: CustomPaint( + painter: _createPainter(), + ), + ); + + if (widget.layout == PageIndicatorLayout.SCALE || + widget.layout == PageIndicatorLayout.COLOR) { + child = ClipRect( + child: child, + ); + } + + return IgnorePointer( + child: child, + ); + } + + void _setInitialPage() { + // use the initial page index but cut off + // the offset specified when looping (kMiddleValue) + index = widget.controller.initialPage % kMiddleValue; + page = index.toDouble(); + } + + void _onController() { + if (!widget.controller.hasClients) return; + page = widget.controller.page ?? 0.0; + index = page.floor(); + + setState(() {}); + } + + @override + void initState() { + super.initState(); + widget.controller.addListener(_onController); + _setInitialPage(); + } + + @override + void didUpdateWidget(PageIndicator oldWidget) { + super.didUpdateWidget(oldWidget); + if (widget.controller != oldWidget.controller) { + oldWidget.controller.removeListener(_onController); + widget.controller.addListener(_onController); + } + } + + @override + void dispose() { + widget.controller.removeListener(_onController); + super.dispose(); + } +} + +enum PageIndicatorLayout { + NONE, + SLIDE, + WARM, + COLOR, + SCALE, + DROP, +} + +class PageIndicator extends StatefulWidget { + /// size of the dots + final double size; + + /// space between dots. + final double space; + + /// count of dots + final int count; + + /// active color + final Color activeColor; + + /// normal color + final Color color; + + /// layout of the dots,default is [PageIndicatorLayout.SLIDE] + final PageIndicatorLayout? layout; + + // Only valid when layout==PageIndicatorLayout.scale + final double scale; + + // Only valid when layout==PageIndicatorLayout.drop + final double dropHeight; + + final PageController controller; + + final double activeSize; + + const PageIndicator({ + Key? key, + this.size = 20.0, + this.space = 5.0, + required this.count, + this.activeSize = 20.0, + required this.controller, + this.color = Colors.white30, + this.layout = PageIndicatorLayout.SLIDE, + this.activeColor = Colors.white, + this.scale = 0.6, + this.dropHeight = 20.0, + }) : super(key: key); + + @override + State createState() { + return _PageIndicatorState(); + } +} diff --git a/package/flutter_swiper_view/lib/src/index_controller.dart b/package/flutter_swiper_view/lib/src/index_controller.dart new file mode 100644 index 00000000..f8ea30aa --- /dev/null +++ b/package/flutter_swiper_view/lib/src/index_controller.dart @@ -0,0 +1,119 @@ +import 'dart:async'; + +import 'package:flutter/foundation.dart'; +import 'package:flutter/widgets.dart'; + +abstract class IndexControllerEventBase { + final bool animation; + + final completer = Completer(); + Future get future => completer.future; + void complete() { + if (!completer.isCompleted) { + completer.complete(); + } + } + + IndexControllerEventBase({ + required this.animation, + }); +} + +mixin TargetedPositionControllerEvent on IndexControllerEventBase { + double get targetPosition; +} +mixin StepBasedIndexControllerEvent on TargetedPositionControllerEvent { + int get step; + int calcNextIndex({ + required int currentIndex, + required int itemCount, + required bool loop, + required bool reverse, + }) { + var cIndex = currentIndex; + if (reverse) { + cIndex -= step; + } else { + cIndex += step; + } + + if (!loop) { + if (cIndex >= itemCount) { + cIndex = 0; + } else if (cIndex < 0) { + cIndex = itemCount - 1; + } + } + return cIndex; + } +} + +class NextIndexControllerEvent extends IndexControllerEventBase + with TargetedPositionControllerEvent, StepBasedIndexControllerEvent { + NextIndexControllerEvent({ + required bool animation, + }) : super( + animation: animation, + ); + + @override + int get step => 1; + + @override + double get targetPosition => 1; +} + +class PrevIndexControllerEvent extends IndexControllerEventBase + with TargetedPositionControllerEvent, StepBasedIndexControllerEvent { + PrevIndexControllerEvent({ + required bool animation, + }) : super( + animation: animation, + ); + @override + int get step => -1; + + @override + double get targetPosition => 0; +} + +class MoveIndexControllerEvent extends IndexControllerEventBase + with TargetedPositionControllerEvent { + final int newIndex; + final int oldIndex; + MoveIndexControllerEvent({ + required this.newIndex, + required this.oldIndex, + required bool animation, + }) : super( + animation: animation, + ); + @override + double get targetPosition => newIndex > oldIndex ? 1 : 0; +} + +class IndexController extends ChangeNotifier { + IndexControllerEventBase? event; + int index = 0; + Future move(int index, {bool animation = true}) { + final e = event = MoveIndexControllerEvent( + animation: animation, + newIndex: index, + oldIndex: this.index, + ); + notifyListeners(); + return e.future; + } + + Future next({bool animation = true}) { + final e = event = NextIndexControllerEvent(animation: animation); + notifyListeners(); + return e.future; + } + + Future previous({bool animation = true}) { + final e = event = PrevIndexControllerEvent(animation: animation); + notifyListeners(); + return e.future; + } +} diff --git a/package/flutter_swiper_view/lib/src/parallax.dart b/package/flutter_swiper_view/lib/src/parallax.dart new file mode 100644 index 00000000..905920f4 --- /dev/null +++ b/package/flutter_swiper_view/lib/src/parallax.dart @@ -0,0 +1,152 @@ +import 'package:flutter/widgets.dart'; + +import 'transformer_page_view.dart'; + +typedef PaintCallback = void Function(Canvas canvas, Size size); + +class ColorPainter extends CustomPainter { + final Paint _paint; + final TransformInfo info; + final List colors; + + ColorPainter(this._paint, this.info, this.colors); + + @override + void paint(Canvas canvas, Size size) { + int index = info.fromIndex; + _paint.color = colors[index]; + canvas.drawRect(Rect.fromLTWH(0.0, 0.0, size.width, size.height), _paint); + if (info.done!) { + return; + } + int alpha; + int color; + double opacity; + double? position = info.position; + if (info.forward!) { + if (index < colors.length - 1) { + color = colors[index + 1].value & 0x00ffffff; + opacity = (position! <= 0 + ? (-position / info.viewportFraction!) + : 1 - position / info.viewportFraction!); + if (opacity > 1) { + opacity -= 1.0; + } + if (opacity < 0) { + opacity += 1.0; + } + alpha = (0xff * opacity).toInt(); + + _paint.color = Color((alpha << 24) | color); + canvas.drawRect( + Rect.fromLTWH(0.0, 0.0, size.width, size.height), _paint); + } + } else { + if (index > 0) { + color = colors[index - 1].value & 0x00ffffff; + opacity = (position! > 0 + ? position / info.viewportFraction! + : (1 + position / info.viewportFraction!)); + if (opacity > 1) { + opacity -= 1.0; + } + if (opacity < 0) { + opacity += 1.0; + } + alpha = (0xff * opacity).toInt(); + + _paint.color = Color((alpha << 24) | color); + canvas.drawRect( + Rect.fromLTWH(0.0, 0.0, size.width, size.height), _paint); + } + } + } + + @override + bool shouldRepaint(ColorPainter oldDelegate) { + return oldDelegate.info != info; + } +} + +class _ParallaxColorState extends State { + Paint paint = Paint(); + + @override + Widget build(BuildContext context) { + return CustomPaint( + painter: ColorPainter(paint, widget.info, widget.colors), + child: widget.child, + ); + } +} + +class ParallaxColor extends StatefulWidget { + final Widget child; + + final List colors; + + final TransformInfo info; + + const ParallaxColor({ + Key? key, + required this.colors, + required this.info, + required this.child, + }) : super(key: key); + + @override + State createState() { + return _ParallaxColorState(); + } +} + +class ParallaxContainer extends StatelessWidget { + final Widget child; + final double position; + final double translationFactor; + final double opacityFactor; + + const ParallaxContainer({ + Key? key, + required this.child, + required this.position, + this.translationFactor = 100.0, + this.opacityFactor = 1.0, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return Opacity( + opacity: (1 - position.abs()).clamp(0.0, 1.0) * opacityFactor, + child: Transform.translate( + offset: Offset(position * translationFactor, 0.0), + child: child, + ), + ); + } +} + +class ParallaxImage extends StatelessWidget { + final Image image; + final double imageFactor; + + ParallaxImage.asset( + String name, { + Key? key, + required double position, + this.imageFactor = 0.3, + }) : image = Image.asset( + name, + fit: BoxFit.cover, + alignment: FractionalOffset( + 0.5 + position * imageFactor, + 0.5, + ), + ), + super(key: key); + + @override + Widget build(BuildContext context) { + return image; + } +} diff --git a/package/flutter_swiper_view/lib/src/swiper.dart b/package/flutter_swiper_view/lib/src/swiper.dart new file mode 100644 index 00000000..1b55ae73 --- /dev/null +++ b/package/flutter_swiper_view/lib/src/swiper.dart @@ -0,0 +1,1003 @@ +// ignore_for_file: constant_identifier_names + +import 'dart:async'; + +import 'package:flutter/material.dart'; +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; + +import 'transformer_page_view.dart'; + +part 'custom_layout.dart'; + +typedef SwiperOnTap = void Function(int index); + +typedef SwiperDataBuilder = Widget Function( + BuildContext context, T data, int index); + +/// default auto play delay +const int kDefaultAutoplayDelayMs = 3000; + +/// Default auto play transition duration (in millisecond) +const int kDefaultAutoplayTransactionDuration = 300; + +const int kMaxValue = 2000000000; +const int kMiddleValue = 1000000000; + +enum SwiperLayout { + DEFAULT, + STACK, + TINDER, + CUSTOM, +} + +class Swiper extends StatefulWidget { + /// If set true , the pagination will display 'outer' of the 'content' container. + final bool outer; + + /// Inner item height, this property is valid if layout=STACK or layout=TINDER or LAYOUT=CUSTOM, + final double? itemHeight; + + /// Inner item width, this property is valid if layout=STACK or layout=TINDER or LAYOUT=CUSTOM, + final double? itemWidth; + + // height of the inside container,this property is valid when outer=true,otherwise the inside container size is controlled by parent widget + final double? containerHeight; + // width of the inside container,this property is valid when outer=true,otherwise the inside container size is controlled by parent widget + final double? containerWidth; + + /// Build item on index + final IndexedWidgetBuilder? itemBuilder; + + /// Support transform like Android PageView did + /// `itemBuilder` and `transformItemBuilder` must have one not null + final PageTransformer? transformer; + + /// count of the display items + final int itemCount; + + final ValueChanged? onIndexChanged; + + ///auto play config + final bool autoplay; + + ///Duration of the animation between transactions (in millisecond). + final int autoplayDelay; + + ///disable auto play when interaction + final bool autoplayDisableOnInteraction; + + ///auto play transition duration (in millisecond) + final int duration; + + ///horizontal/vertical + final Axis scrollDirection; + + ///left/right for Stack Layout + final AxisDirection axisDirection; + + ///transition curve + final Curve curve; + + /// Set to false to disable continuous loop mode. + final bool loop; + + ///Index number of initial slide. + ///If not set , the `Swiper` is 'uncontrolled', which means manage index by itself + ///If set , the `Swiper` is 'controlled', which means the index is fully managed by parent widget. + final int? index; + + ///Called when tap + final SwiperOnTap? onTap; + + ///The swiper pagination plugin + final SwiperPlugin? pagination; + + ///the swiper control button plugin + final SwiperPlugin? control; + + ///other plugins, you can custom your own plugin + final List? plugins; + + /// + final SwiperController? controller; + + final ScrollPhysics? physics; + + /// + final double viewportFraction; + + /// Build in layouts + final SwiperLayout layout; + + /// this value is valid when layout == SwiperLayout.CUSTOM + final CustomLayoutOption? customLayoutOption; + + // This value is valid when viewportFraction is set and < 1.0 + final double? scale; + + // This value is valid when viewportFraction is set and < 1.0 + final double? fade; + + final PageIndicatorLayout indicatorLayout; + + final bool allowImplicitScrolling; + + const Swiper({ + this.itemBuilder, + this.indicatorLayout = PageIndicatorLayout.NONE, + + /// + this.transformer, + required this.itemCount, + bool autoplay = false, + this.layout = SwiperLayout.DEFAULT, + this.autoplayDelay = kDefaultAutoplayDelayMs, + this.autoplayDisableOnInteraction = true, + this.duration = kDefaultAutoplayTransactionDuration, + this.onIndexChanged, + this.index, + this.onTap, + this.control, + bool loop = true, + this.curve = Curves.ease, + this.scrollDirection = Axis.horizontal, + this.axisDirection = AxisDirection.left, + this.pagination, + this.plugins, + this.physics, + Key? key, + this.controller, + this.customLayoutOption, + + /// since v1.0.0 + this.containerHeight, + this.containerWidth, + this.viewportFraction = 1.0, + this.itemHeight, + this.itemWidth, + this.outer = false, + this.scale, + this.fade, + this.allowImplicitScrolling = false, + }) : assert( + itemBuilder != null || transformer != null, + 'itemBuilder and transformItemBuilder must not be both null', + ), + assert( + !loop || + ((loop && + layout == SwiperLayout.DEFAULT && + (indicatorLayout == PageIndicatorLayout.SCALE || + indicatorLayout == PageIndicatorLayout.COLOR || + indicatorLayout == PageIndicatorLayout.NONE)) || + (loop && layout != SwiperLayout.DEFAULT)), + "Only support `PageIndicatorLayout.SCALE` and `PageIndicatorLayout.COLOR`when layout==SwiperLayout.DEFAULT in loop mode"), + autoplay = (autoplay && itemCount > 1), + loop = (loop && itemCount > 1), + super(key: key); + + factory Swiper.children({ + required List children, + bool autoplay = false, + PageTransformer? transformer, + int autoplayDelay = kDefaultAutoplayDelayMs, + bool autoplayDisableOnInteraction = true, + int duration = kDefaultAutoplayTransactionDuration, + ValueChanged? onIndexChanged, + int? index, + SwiperOnTap? onTap, + bool loop = true, + Curve curve = Curves.ease, + Axis scrollDirection = Axis.horizontal, + AxisDirection axisDirection = AxisDirection.left, + SwiperPlugin? pagination, + SwiperPlugin? control, + List? plugins, + SwiperController? controller, + Key? key, + CustomLayoutOption? customLayoutOption, + ScrollPhysics? physics, + double? containerHeight, + double? containerWidth, + double viewportFraction = 1.0, + double? itemHeight, + double? itemWidth, + bool outer = false, + double scale = 1.0, + double? fade, + PageIndicatorLayout indicatorLayout = PageIndicatorLayout.NONE, + SwiperLayout layout = SwiperLayout.DEFAULT, + }) => + Swiper( + fade: fade, + indicatorLayout: indicatorLayout, + layout: layout, + transformer: transformer, + customLayoutOption: customLayoutOption, + containerHeight: containerHeight, + containerWidth: containerWidth, + viewportFraction: viewportFraction, + itemHeight: itemHeight, + itemWidth: itemWidth, + outer: outer, + scale: scale, + autoplay: autoplay, + autoplayDelay: autoplayDelay, + autoplayDisableOnInteraction: autoplayDisableOnInteraction, + duration: duration, + onIndexChanged: onIndexChanged, + index: index, + onTap: onTap, + curve: curve, + scrollDirection: scrollDirection, + axisDirection: axisDirection, + pagination: pagination, + control: control, + controller: controller, + loop: loop, + plugins: plugins, + physics: physics, + key: key, + itemBuilder: (context, index) { + return children[index]; + }, + itemCount: children.length, + ); + + static Swiper list({ + PageTransformer? transformer, + required List list, + CustomLayoutOption? customLayoutOption, + required SwiperDataBuilder builder, + bool autoplay = false, + int autoplayDelay = kDefaultAutoplayDelayMs, + bool reverse = false, + bool autoplayDisableOnInteraction = true, + int duration = kDefaultAutoplayTransactionDuration, + ValueChanged? onIndexChanged, + int? index, + SwiperOnTap? onTap, + bool loop = true, + Curve curve = Curves.ease, + Axis scrollDirection = Axis.horizontal, + AxisDirection axisDirection = AxisDirection.left, + SwiperPlugin? pagination, + SwiperPlugin? control, + List? plugins, + SwiperController? controller, + Key? key, + ScrollPhysics? physics, + double? containerHeight, + double? containerWidth, + double viewportFraction = 1.0, + double? itemHeight, + double? itemWidth, + bool outer = false, + double scale = 1.0, + double? fade, + PageIndicatorLayout indicatorLayout = PageIndicatorLayout.NONE, + SwiperLayout layout = SwiperLayout.DEFAULT, + }) => + Swiper( + fade: fade, + indicatorLayout: indicatorLayout, + layout: layout, + transformer: transformer, + customLayoutOption: customLayoutOption, + containerHeight: containerHeight, + containerWidth: containerWidth, + viewportFraction: viewportFraction, + itemHeight: itemHeight, + itemWidth: itemWidth, + outer: outer, + scale: scale, + autoplay: autoplay, + autoplayDelay: autoplayDelay, + autoplayDisableOnInteraction: autoplayDisableOnInteraction, + duration: duration, + onIndexChanged: onIndexChanged, + index: index, + onTap: onTap, + curve: curve, + key: key, + scrollDirection: scrollDirection, + axisDirection: axisDirection, + pagination: pagination, + control: control, + controller: controller, + loop: loop, + plugins: plugins, + physics: physics, + itemBuilder: (context, index) { + return builder(context, list[index], index); + }, + itemCount: list.length, + ); + + @override + State createState() => _SwiperState(); +} + +abstract class _SwiperTimerMixin extends State { + Timer? _timer; + + late SwiperController _controller; + + @override + void initState() { + super.initState(); + _controller = widget.controller ?? SwiperController(); + _controller.addListener(_onController); + if (widget.autoplay) { + _controller.startAutoplay(); + } else { + _controller.stopAutoplay(); + } + } + + void _onController() { + final event = _controller.event; + if (event is AutoPlaySwiperControllerEvent) { + if (event.autoplay) { + if (_timer == null) { + _startAutoplay(); + } + } else { + _stopAutoplay(); + } + } + } + + @override + void didUpdateWidget(Swiper oldWidget) { + super.didUpdateWidget(oldWidget); + if (_controller != oldWidget.controller) { + final oldController = oldWidget.controller; + if (oldController != null) { + oldController.removeListener(_onController); + _controller = oldController; + _controller.addListener(_onController); + } + } + if (widget.autoplay != oldWidget.autoplay) { + if (widget.autoplay) { + _controller.startAutoplay(); + } else { + _controller.stopAutoplay(); + } + } + } + + @override + void dispose() { + _controller.removeListener(_onController); + _stopAutoplay(); + super.dispose(); + } + + void _startAutoplay() { + _stopAutoplay(); + _timer = Timer.periodic( + Duration( + milliseconds: widget.autoplayDelay, + ), + _onTimer, + ); + } + + void _onTimer(Timer timer) { + _controller.next(animation: true); + } + + void _stopAutoplay() { + _timer?.cancel(); + _timer = null; + } +} + +class _SwiperState extends _SwiperTimerMixin { + late int _activeIndex; + + TransformerPageController? _pageController; + + Widget _wrapTap(BuildContext context, int index) { + return GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: () => widget.onTap!(index), + child: widget.itemBuilder!(context, index), + ); + } + + @override + void initState() { + super.initState(); + _activeIndex = widget.index ?? widget.controller?.index ?? 0; + if (_isPageViewLayout()) { + _pageController = TransformerPageController( + initialPage: widget.index ?? widget.controller?.index ?? 0, + loop: widget.loop, + itemCount: widget.itemCount, + reverse: widget.transformer?.reverse ?? false, + viewportFraction: widget.viewportFraction, + ); + } + } + + bool _isPageViewLayout() { + return widget.layout == SwiperLayout.DEFAULT; + } + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + } + + bool _getReverse(Swiper widget) => widget.transformer?.reverse ?? false; + + @override + void didUpdateWidget(Swiper oldWidget) { + super.didUpdateWidget(oldWidget); + if (_isPageViewLayout()) { + if (_pageController == null || + (widget.index != oldWidget.index || + widget.loop != oldWidget.loop || + widget.itemCount != oldWidget.itemCount || + widget.viewportFraction != oldWidget.viewportFraction || + _getReverse(widget) != _getReverse(oldWidget))) { + _pageController = TransformerPageController( + initialPage: widget.index ?? widget.controller?.index ?? 0, + loop: widget.loop, + itemCount: widget.itemCount, + reverse: _getReverse(widget), + viewportFraction: widget.viewportFraction, + ); + } + } else { + scheduleMicrotask(() { + // So that we have a chance to do `removeListener` in child widgets. + if (_pageController != null) { + _pageController!.dispose(); + _pageController = null; + } + }); + } + if (widget.index != null && widget.index != _activeIndex) { + _activeIndex = widget.index!; + } + } + + void _onIndexChanged(int index) { + setState(() { + _activeIndex = index; + }); + widget.onIndexChanged?.call(index); + } + + Widget _buildSwiper() { + IndexedWidgetBuilder? itemBuilder; + if (widget.onTap != null) { + itemBuilder = _wrapTap; + } else { + itemBuilder = widget.itemBuilder; + } + + if (widget.layout == SwiperLayout.STACK) { + return _StackSwiper( + loop: widget.loop, + itemWidth: widget.itemWidth, + itemHeight: widget.itemHeight, + itemCount: widget.itemCount, + itemBuilder: itemBuilder, + index: _activeIndex, + curve: widget.curve, + duration: widget.duration, + onIndexChanged: _onIndexChanged, + controller: _controller, + scrollDirection: widget.scrollDirection, + axisDirection: widget.axisDirection, + ); + } else if (_isPageViewLayout()) { + PageTransformer? transformer = widget.transformer; + if (widget.scale != null || widget.fade != null) { + transformer = + ScaleAndFadeTransformer(scale: widget.scale, fade: widget.fade); + } + + Widget child = TransformerPageView( + pageController: _pageController, + loop: widget.loop, + itemCount: widget.itemCount, + itemBuilder: itemBuilder, + transformer: transformer, + viewportFraction: widget.viewportFraction, + index: _activeIndex, + duration: Duration(milliseconds: widget.duration), + scrollDirection: widget.scrollDirection, + onPageChanged: _onIndexChanged, + curve: widget.curve, + physics: widget.physics, + controller: _controller, + allowImplicitScrolling: widget.allowImplicitScrolling, + ); + if (widget.autoplayDisableOnInteraction && widget.autoplay) { + return NotificationListener( + onNotification: (notification) { + if (notification is ScrollStartNotification) { + if (notification.dragDetails != null) { + //by human + if (_timer != null) _stopAutoplay(); + } + } else if (notification is ScrollEndNotification) { + if (_timer == null) _startAutoplay(); + } + + return false; + }, + child: child, + ); + } + + return child; + } else if (widget.layout == SwiperLayout.TINDER) { + return _TinderSwiper( + loop: widget.loop, + itemWidth: widget.itemWidth, + itemHeight: widget.itemHeight, + itemCount: widget.itemCount, + itemBuilder: itemBuilder, + index: _activeIndex, + curve: widget.curve, + duration: widget.duration, + onIndexChanged: _onIndexChanged, + controller: _controller, + scrollDirection: widget.scrollDirection, + ); + } else if (widget.layout == SwiperLayout.CUSTOM) { + return _CustomLayoutSwiper( + loop: widget.loop, + option: widget.customLayoutOption!, + itemWidth: widget.itemWidth, + itemHeight: widget.itemHeight, + itemCount: widget.itemCount, + itemBuilder: itemBuilder, + index: _activeIndex, + curve: widget.curve, + duration: widget.duration, + onIndexChanged: _onIndexChanged, + controller: _controller, + scrollDirection: widget.scrollDirection, + ); + } else { + return const SizedBox.shrink(); + } + } + + SwiperPluginConfig _ensureConfig(SwiperPluginConfig? config) { + final con = config ?? + SwiperPluginConfig( + outer: widget.outer, + itemCount: widget.itemCount, + layout: widget.layout, + indicatorLayout: widget.indicatorLayout, + pageController: _pageController, + activeIndex: _activeIndex, + scrollDirection: widget.scrollDirection, + axisDirection: widget.axisDirection, + controller: _controller, + loop: widget.loop, + ); + return con; + } + + List? _ensureListForStack({ + required Widget swiper, + required List? listForStack, + required Widget widget, + }) { + final resList = []; + if (listForStack == null) { + resList.addAll([swiper, widget]); + } else { + resList.addAll([...listForStack, widget]); + } + return resList; + } + + @override + Widget build(BuildContext context) { + Widget swiper = _buildSwiper(); + List? listForStack; + SwiperPluginConfig? config; + if (widget.control != null) { + //Stack + config = _ensureConfig(config); + listForStack = _ensureListForStack( + swiper: swiper, + listForStack: listForStack, + widget: widget.control!.build(context, config), + ); + } + + if (widget.plugins != null) { + config = _ensureConfig(config); + for (SwiperPlugin plugin in widget.plugins!) { + listForStack = _ensureListForStack( + swiper: swiper, + listForStack: listForStack, + widget: plugin.build(context, config), + ); + } + } + if (widget.pagination != null) { + config = _ensureConfig(config); + if (widget.outer) { + return _buildOuterPagination( + widget.pagination! as SwiperPagination, + listForStack == null ? swiper : Stack(children: listForStack), + config); + } else { + listForStack = _ensureListForStack( + swiper: swiper, + listForStack: listForStack, + widget: widget.pagination!.build(context, config), + ); + } + } + + if (listForStack != null) { + return Stack( + children: listForStack, + ); + } + + return swiper; + } + + Widget _buildOuterPagination( + SwiperPagination pagination, + Widget swiper, + SwiperPluginConfig config, + ) { + final list = []; + //Only support bottom yet! + if (widget.containerHeight != null || widget.containerWidth != null) { + list.add(swiper); + } else { + list.add(Expanded(child: swiper)); + } + + list.add(Align( + alignment: Alignment.center, + child: pagination.build(context, config), + )); + + return Column( + crossAxisAlignment: CrossAxisAlignment.stretch, + mainAxisSize: MainAxisSize.min, + children: list, + ); + } +} + +abstract class _SubSwiper extends StatefulWidget { + final IndexedWidgetBuilder? itemBuilder; + final int itemCount; + final int? index; + final ValueChanged? onIndexChanged; + final SwiperController controller; + final int? duration; + final Curve curve; + final double? itemWidth; + final double? itemHeight; + final bool loop; + final Axis? scrollDirection; + final AxisDirection? axisDirection; + + const _SubSwiper({ + Key? key, + required this.loop, + this.itemHeight, + this.itemWidth, + this.duration, + required this.curve, + this.itemBuilder, + required this.controller, + this.index, + required this.itemCount, + this.scrollDirection = Axis.horizontal, + this.axisDirection = AxisDirection.left, + this.onIndexChanged, + }) : super(key: key); + + @override + State createState(); + + int getCorrectIndex(int indexNeedsFix) { + if (itemCount == 0) return 0; + var value = indexNeedsFix % itemCount; + if (value < 0) { + value += itemCount; + } + return value; + } +} + +class _TinderSwiper extends _SubSwiper { + const _TinderSwiper({ + Key? key, + required Curve curve, + int? duration, + required SwiperController controller, + ValueChanged? onIndexChanged, + double? itemHeight, + double? itemWidth, + IndexedWidgetBuilder? itemBuilder, + int? index, + required bool loop, + required int itemCount, + Axis? scrollDirection, + }) : assert(itemWidth != null && itemHeight != null), + super( + loop: loop, + key: key, + itemWidth: itemWidth, + itemHeight: itemHeight, + itemBuilder: itemBuilder, + curve: curve, + duration: duration, + controller: controller, + index: index, + onIndexChanged: onIndexChanged, + itemCount: itemCount, + scrollDirection: scrollDirection); + + @override + State createState() { + return _TinderState(); + } +} + +class _StackSwiper extends _SubSwiper { + const _StackSwiper({ + Key? key, + required Curve curve, + int? duration, + required SwiperController controller, + ValueChanged? onIndexChanged, + double? itemHeight, + double? itemWidth, + IndexedWidgetBuilder? itemBuilder, + int? index, + required bool loop, + required int itemCount, + Axis? scrollDirection, + AxisDirection? axisDirection, + }) : super( + loop: loop, + key: key, + itemWidth: itemWidth, + itemHeight: itemHeight, + itemBuilder: itemBuilder, + curve: curve, + duration: duration, + controller: controller, + index: index, + onIndexChanged: onIndexChanged, + itemCount: itemCount, + scrollDirection: scrollDirection, + axisDirection: axisDirection, + ); + + @override + State createState() => _StackViewState(); +} + +class _TinderState extends _CustomLayoutStateBase<_TinderSwiper> { + late List scales; + late List offsetsX; + late List offsetsY; + late List opacity; + late List rotates; + + double getOffsetY(double scale) { + return widget.itemHeight! - widget.itemHeight! * scale; + } + + @override + void didChangeDependencies() { + super.didChangeDependencies(); + } + + @override + void didUpdateWidget(_TinderSwiper oldWidget) { + _updateValues(); + super.didUpdateWidget(oldWidget); + } + + @override + void afterRender() { + super.afterRender(); + + _startIndex = -3; + _animationCount = 5; + opacity = [0.0, 0.9, 0.9, 1.0, 0.0, 0.0]; + scales = [0.80, 0.80, 0.85, 0.90, 1.0, 1.0, 1.0]; + rotates = [0.0, 0.0, 0.0, 0.0, 20.0, 25.0]; + _updateValues(); + } + + void _updateValues() { + if (widget.scrollDirection == Axis.horizontal) { + offsetsX = [0.0, 0.0, 0.0, 0.0, _swiperWidth, _swiperWidth]; + offsetsY = [ + 0.0, + 0.0, + -5.0, + -10.0, + -15.0, + -20.0, + ]; + } else { + offsetsX = [ + 0.0, + 0.0, + 5.0, + 10.0, + 15.0, + 20.0, + ]; + + offsetsY = [0.0, 0.0, 0.0, 0.0, _swiperHeight, _swiperHeight]; + } + } + + @override + Widget _buildItem(int i, int realIndex, double animationValue) { + double s = _getValue(scales, animationValue, i); + double f = _getValue(offsetsX, animationValue, i); + double fy = _getValue(offsetsY, animationValue, i); + double o = _getValue(opacity, animationValue, i); + double a = _getValue(rotates, animationValue, i); + + Alignment alignment = widget.scrollDirection == Axis.horizontal + ? Alignment.bottomCenter + : Alignment.centerLeft; + + return Opacity( + opacity: o, + child: Transform.rotate( + angle: a / 180.0, + child: Transform.translate( + key: ValueKey(_currentIndex + i), + offset: Offset(f, fy), + child: Transform.scale( + scale: s, + alignment: alignment, + child: SizedBox( + width: widget.itemWidth ?? double.infinity, + height: widget.itemHeight ?? double.infinity, + child: widget.itemBuilder!(context, realIndex), + ), + ), + ), + ), + ); + } +} + +class _StackViewState extends _CustomLayoutStateBase<_StackSwiper> { + late List scales; + late List offsets; + late List opacity; + @override + void didChangeDependencies() { + super.didChangeDependencies(); + } + + void _updateValues() { + if (widget.scrollDirection == Axis.horizontal) { + double space = (_swiperWidth - widget.itemWidth!) / 2; + offsets = widget.axisDirection == AxisDirection.left + ? [-space, -space / 3 * 2, -space / 3, 0.0, _swiperWidth] + : [_swiperWidth, 0.0, -space / 3, -space / 3 * 2, -space]; + } else { + double space = (_swiperHeight - widget.itemHeight!) / 2; + offsets = [-space, -space / 3 * 2, -space / 3, 0.0, _swiperHeight]; + } + } + + @override + void didUpdateWidget(_StackSwiper oldWidget) { + _updateValues(); + super.didUpdateWidget(oldWidget); + } + + @override + void afterRender() { + super.afterRender(); + final isRightSide = widget.axisDirection == AxisDirection.right; + + //length of the values array below + _animationCount = 5; + + //Array below this line, '0' index is 1.0, which is the first item show in swiper. + _startIndex = isRightSide ? -1 : -3; + scales = + isRightSide ? [1.0, 1.0, 0.9, 0.8, 0.7] : [0.7, 0.8, 0.9, 1.0, 1.0]; + opacity = + isRightSide ? [1.0, 1.0, 1.0, 0.5, 0.0] : [0.0, 0.5, 1.0, 1.0, 1.0]; + + _updateValues(); + } + + @override + Widget _buildItem(int i, int realIndex, double animationValue) { + double s = _getValue(scales, animationValue, i); + double f = _getValue(offsets, animationValue, i); + double o = _getValue(opacity, animationValue, i); + + Offset offset = widget.scrollDirection == Axis.horizontal + ? widget.axisDirection == AxisDirection.left + ? Offset(f, 0.0) + : Offset(-f, 0.0) + : Offset(0.0, f); + + Alignment alignment = widget.scrollDirection == Axis.horizontal + ? widget.axisDirection == AxisDirection.left + ? Alignment.centerLeft + : Alignment.centerRight + : Alignment.topCenter; + + return Opacity( + opacity: o, + child: Transform.translate( + key: ValueKey(_currentIndex + i), + offset: offset, + child: Transform.scale( + scale: s, + alignment: alignment, + child: SizedBox( + width: widget.itemWidth ?? double.infinity, + height: widget.itemHeight ?? double.infinity, + child: widget.itemBuilder!(context, realIndex), + ), + ), + ), + ); + } +} + +class ScaleAndFadeTransformer extends PageTransformer { + final double? _scale; + final double? _fade; + + ScaleAndFadeTransformer({double? fade = 0.3, double? scale = 0.8}) + : _fade = fade, + _scale = scale; + + @override + Widget transform(Widget child, TransformInfo info) { + double? position = info.position; + Widget newChild = child; + if (_scale != null) { + double scaleFactor = (1 - position!.abs()) * (1 - _scale!); + double scale = _scale! + scaleFactor; + + newChild = Transform.scale( + scale: scale, + child: child, + ); + } + + if (_fade != null) { + double fadeFactor = (1 - position!.abs()) * (1 - _fade!); + double opacity = _fade! + fadeFactor; + newChild = Opacity( + opacity: opacity, + child: newChild, + ); + } + + return newChild; + } +} diff --git a/package/flutter_swiper_view/lib/src/swiper_control.dart b/package/flutter_swiper_view/lib/src/swiper_control.dart new file mode 100644 index 00000000..b3b3b125 --- /dev/null +++ b/package/flutter_swiper_view/lib/src/swiper_control.dart @@ -0,0 +1,133 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; + +class SwiperControl extends SwiperPlugin { + ///IconData for previous + final IconData iconPrevious; + + ///iconData fopr next + final IconData iconNext; + + ///icon size + final double size; + + ///Icon normal color, The theme's [ThemeData.primaryColor] by default. + final Color? color; + + ///if set loop=false on Swiper, this color will be used when swiper goto the last slide. + ///The theme's [ThemeData.disabledColor] by default. + final Color? disableColor; + + final EdgeInsetsGeometry padding; + + final Key? key; + + const SwiperControl({ + this.iconPrevious = Icons.arrow_back_ios, + this.iconNext = Icons.arrow_forward_ios, + this.color, + this.disableColor, + this.key, + this.size = 30.0, + this.padding = const EdgeInsets.all(5.0), + }); + + Widget buildButton({ + required SwiperPluginConfig? config, + required Color color, + required IconData iconDaga, + required int quarterTurns, + required bool previous, + }) { + return GestureDetector( + behavior: HitTestBehavior.opaque, + onTap: () { + if (previous) { + config!.controller.previous(animation: true); + } else { + config!.controller.next(animation: true); + } + }, + child: Padding( + padding: padding, + child: RotatedBox( + quarterTurns: quarterTurns, + child: Icon( + iconDaga, + semanticLabel: previous ? "Previous" : "Next", + size: size, + color: color, + ))), + ); + } + + @override + Widget build(BuildContext context, SwiperPluginConfig config) { + ThemeData themeData = Theme.of(context); + + Color color = this.color ?? themeData.primaryColor; + Color disableColor = this.disableColor ?? themeData.disabledColor; + Color prevColor; + Color nextColor; + + if (config.loop) { + prevColor = nextColor = color; + } else { + bool next = config.activeIndex < config.itemCount - 1; + bool prev = config.activeIndex > 0; + prevColor = prev ? color : disableColor; + nextColor = next ? color : disableColor; + } + + Widget child; + if (config.scrollDirection == Axis.horizontal) { + child = Row( + key: key, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + buildButton( + config: config, + color: prevColor, + iconDaga: iconPrevious, + quarterTurns: 0, + previous: true, + ), + buildButton( + config: config, + color: nextColor, + iconDaga: iconNext, + quarterTurns: 0, + previous: false, + ) + ], + ); + } else { + child = Column( + key: key, + mainAxisAlignment: MainAxisAlignment.spaceBetween, + children: [ + buildButton( + config: config, + color: prevColor, + iconDaga: iconPrevious, + quarterTurns: -3, + previous: true, + ), + buildButton( + config: config, + color: nextColor, + iconDaga: iconNext, + quarterTurns: -3, + previous: false, + ) + ], + ); + } + + return SizedBox( + height: double.infinity, + width: double.infinity, + child: child, + ); + } +} diff --git a/package/flutter_swiper_view/lib/src/swiper_controller.dart b/package/flutter_swiper_view/lib/src/swiper_controller.dart new file mode 100644 index 00000000..13363edf --- /dev/null +++ b/package/flutter_swiper_view/lib/src/swiper_controller.dart @@ -0,0 +1,44 @@ +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; + +class SwipeIndexControllerEvent extends IndexControllerEventBase { + SwipeIndexControllerEvent({ + required this.pos, + required bool animation, + }) : super(animation: animation); + final double pos; +} + +class BuildIndexControllerEvent extends IndexControllerEventBase { + BuildIndexControllerEvent({ + required bool animation, + required this.config, + }) : super(animation: animation); + final SwiperPluginConfig config; +} + +class AutoPlaySwiperControllerEvent extends IndexControllerEventBase { + AutoPlaySwiperControllerEvent({ + required bool animation, + required this.autoplay, + }) : super(animation: animation); + + AutoPlaySwiperControllerEvent.start({ + required bool animation, + }) : this(animation: animation, autoplay: true); + AutoPlaySwiperControllerEvent.stop({ + required bool animation, + }) : this(animation: animation, autoplay: false); + final bool autoplay; +} + +class SwiperController extends IndexController { + void startAutoplay({bool animation = true}) { + event = AutoPlaySwiperControllerEvent.start(animation: animation); + notifyListeners(); + } + + void stopAutoplay({bool animation = true}) { + event = AutoPlaySwiperControllerEvent.stop(animation: animation); + notifyListeners(); + } +} diff --git a/package/flutter_swiper_view/lib/src/swiper_pagination.dart b/package/flutter_swiper_view/lib/src/swiper_pagination.dart new file mode 100644 index 00000000..51a18e81 --- /dev/null +++ b/package/flutter_swiper_view/lib/src/swiper_pagination.dart @@ -0,0 +1,310 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; + +class FractionPaginationBuilder extends SwiperPlugin { + ///color ,if set null , will be Theme.of(context).scaffoldBackgroundColor + final Color? color; + + ///color when active,if set null , will be Theme.of(context).primaryColor + final Color? activeColor; + + ////font size + final double fontSize; + + ///font size when active + final double activeFontSize; + + final Key? key; + + const FractionPaginationBuilder({ + this.color, + this.fontSize = 20.0, + this.key, + this.activeColor, + this.activeFontSize = 35.0, + }); + + @override + Widget build(BuildContext context, SwiperPluginConfig config) { + int itemCount = config.itemCount; + if (itemCount <= 1) { + return Container(); + } + + ThemeData themeData = Theme.of(context); + Color activeColor = this.activeColor ?? themeData.primaryColor; + Color color = this.color ?? themeData.scaffoldBackgroundColor; + + if (Axis.vertical == config.scrollDirection) { + return Column( + key: key, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + "${config.activeIndex + 1}", + style: TextStyle(color: activeColor, fontSize: activeFontSize), + ), + Text( + "/", + style: TextStyle(color: color, fontSize: fontSize), + ), + Text( + "$itemCount", + style: TextStyle(color: color, fontSize: fontSize), + ) + ], + ); + } else { + return Row( + key: key, + mainAxisSize: MainAxisSize.min, + children: [ + Text( + "${config.activeIndex + 1}", + style: TextStyle(color: activeColor, fontSize: activeFontSize), + ), + Text( + " / $itemCount", + style: TextStyle(color: color, fontSize: fontSize), + ) + ], + ); + } + } +} + +class RectSwiperPaginationBuilder extends SwiperPlugin { + ///color when current index,if set null , will be Theme.of(context).primaryColor + final Color? activeColor; + + ///,if set null , will be Theme.of(context).scaffoldBackgroundColor + final Color? color; + + ///Size of the rect when activate + final Size activeSize; + + ///Size of the rect + final Size size; + + /// Space between rects + final double space; + + final Key? key; + + const RectSwiperPaginationBuilder({ + this.activeColor, + this.color, + this.key, + this.size = const Size(10.0, 3.0), + this.activeSize = const Size(10.0, 3.0), + this.space = 2.0, + }); + + @override + Widget build(BuildContext context, SwiperPluginConfig config) { + int itemCount = config.itemCount; + if (itemCount <= 1) { + return Container(); + } + + ThemeData themeData = Theme.of(context); + Color activeColor = this.activeColor ?? themeData.primaryColor; + Color color = this.color ?? themeData.scaffoldBackgroundColor; + + List list = []; + + int activeIndex = config.activeIndex; + if (itemCount > 20) { + debugPrint( + "The itemCount is too big, we suggest use FractionPaginationBuilder instead of DotSwiperPaginationBuilder in this situation"); + } + + for (int i = 0; i < itemCount; ++i) { + bool active = i == activeIndex; + Size size = active ? activeSize : this.size; + list.add(Container( + width: size.width, + height: size.height, + key: Key("pagination_$i"), + margin: EdgeInsets.all(space), + decoration: BoxDecoration( + borderRadius: BorderRadius.circular(1.5), + color: active ? activeColor : color, + ), + )); + } + + if (config.scrollDirection == Axis.vertical) { + return Column( + key: key, + mainAxisSize: MainAxisSize.min, + children: list, + ); + } else { + return Row( + key: key, + mainAxisSize: MainAxisSize.min, + children: list, + ); + } + } +} + +class DotSwiperPaginationBuilder extends SwiperPlugin { + ///color when current index,if set null , will be Theme.of(context).primaryColor + final Color? activeColor; + + ///,if set null , will be Theme.of(context).scaffoldBackgroundColor + final Color? color; + + ///Size of the dot when activate + final double activeSize; + + ///Size of the dot + final double size; + + /// Space between dots + final double space; + + final Key? key; + + const DotSwiperPaginationBuilder({ + this.activeColor, + this.color, + this.key, + this.size = 10.0, + this.activeSize = 10.0, + this.space = 3.0, + }); + + @override + Widget build(BuildContext context, SwiperPluginConfig config) { + + int itemCount = config.itemCount; + if (itemCount <= 1) { + return Container(); + } + + if (config.itemCount > 20) { + debugPrint( + "The itemCount is too big, we suggest use FractionPaginationBuilder instead of DotSwiperPaginationBuilder in this sitituation"); + } + Color? activeColor = this.activeColor; + Color? color = this.color; + + if (activeColor == null || color == null) { + ThemeData themeData = Theme.of(context); + activeColor = this.activeColor ?? themeData.primaryColor; + color = this.color ?? themeData.scaffoldBackgroundColor; + } + + if (config.indicatorLayout != PageIndicatorLayout.NONE && + config.layout == SwiperLayout.DEFAULT) { + return PageIndicator( + count: config.itemCount, + controller: config.pageController!, + layout: config.indicatorLayout, + size: size, + activeColor: activeColor, + color: color, + space: space, + ); + } + + List list = []; + + int? activeIndex = config.activeIndex; + + for (int i = 0; i < itemCount; ++i) { + bool active = i == activeIndex; + list.add(Container( + key: Key("pagination_$i"), + margin: EdgeInsets.all(space), + child: ClipOval( + child: Container( + color: active ? activeColor : color, + width: active ? activeSize : size, + height: active ? activeSize : size, + ), + ), + )); + } + + if (config.scrollDirection == Axis.vertical) { + return Column( + key: key, + mainAxisSize: MainAxisSize.min, + children: list, + ); + } else { + return Row( + key: key, + mainAxisSize: MainAxisSize.min, + children: list, + ); + } + } +} + +typedef SwiperPaginationBuilder = Widget Function( + BuildContext context, SwiperPluginConfig config); + +class SwiperCustomPagination extends SwiperPlugin { + final SwiperPaginationBuilder builder; + + const SwiperCustomPagination({required this.builder}); + + @override + Widget build(BuildContext context, SwiperPluginConfig config) { + return builder(context, config); + } +} + +class SwiperPagination extends SwiperPlugin { + /// dot style pagination + static const SwiperPlugin dots = DotSwiperPaginationBuilder(); + + /// fraction style pagination + static const SwiperPlugin fraction = FractionPaginationBuilder(); + + /// round rect style pagination + static const SwiperPlugin rect = RectSwiperPaginationBuilder(); + + /// Alignment.bottomCenter by default when scrollDirection== Axis.horizontal + /// Alignment.centerRight by default when scrollDirection== Axis.vertical + final Alignment? alignment; + + /// Distance between pagination and the container + final EdgeInsetsGeometry margin; + + /// Build the widget + final SwiperPlugin builder; + + final Key? key; + + const SwiperPagination({ + this.alignment, + this.key, + this.margin = const EdgeInsets.all(10.0), + this.builder = SwiperPagination.dots, + }); + + @override + Widget build(BuildContext context, SwiperPluginConfig config) { + Alignment defaultAlignment = config.scrollDirection == Axis.horizontal + ? Alignment.bottomCenter + : Alignment.centerRight; + Widget child = Container( + margin: margin, + child: builder.build(context, config), + ); + if (!config.outer!) { + child = Align( + key: key, + alignment: alignment ?? defaultAlignment, + child: child, + ); + } + return child; + } +} diff --git a/package/flutter_swiper_view/lib/src/swiper_plugin.dart b/package/flutter_swiper_view/lib/src/swiper_plugin.dart new file mode 100644 index 00000000..1a6fe003 --- /dev/null +++ b/package/flutter_swiper_view/lib/src/swiper_plugin.dart @@ -0,0 +1,52 @@ +import 'package:flutter/widgets.dart'; +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; + +/// plugin to display swiper components +/// +abstract class SwiperPlugin { + const SwiperPlugin(); + + Widget build(BuildContext context, SwiperPluginConfig config); +} + +class SwiperPluginConfig { + final Axis scrollDirection; + final AxisDirection? axisDirection; + final SwiperController controller; + final int activeIndex; + final int itemCount; + final PageIndicatorLayout? indicatorLayout; + final bool loop; + final bool? outer; + final PageController? pageController; + final SwiperLayout? layout; + + const SwiperPluginConfig({ + required this.scrollDirection, + required this.controller, + required this.activeIndex, + required this.itemCount, + this.axisDirection, + this.indicatorLayout, + this.outer, + this.pageController, + this.layout, + this.loop = false, + }); +} + +class SwiperPluginView extends StatelessWidget { + final SwiperPlugin plugin; + final SwiperPluginConfig config; + + const SwiperPluginView({ + Key? key, + required this.plugin, + required this.config, + }) : super(key: key); + + @override + Widget build(BuildContext context) { + return plugin.build(context, config); + } +} diff --git a/package/flutter_swiper_view/lib/src/transformer_page_view.dart b/package/flutter_swiper_view/lib/src/transformer_page_view.dart new file mode 100644 index 00000000..a970b3f2 --- /dev/null +++ b/package/flutter_swiper_view/lib/src/transformer_page_view.dart @@ -0,0 +1,595 @@ +import 'package:flutter/widgets.dart'; + +import 'index_controller.dart'; + +/// +/// NOTICE:: +/// +/// In order to make package smaller,currently we're not supporting any build-in page transformers +/// You can find build in transforms here: +/// +/// +/// + +const int kMaxValue = 2000000000; +const int kMiddleValue = 1000000000; + +/// Default auto play transition duration (in millisecond) +const int kDefaultTransactionDuration = 300; + +class TransformInfo { + /// The `width` of the `TransformerPageView` + final double? width; + + /// The `height` of the `TransformerPageView` + final double? height; + + /// The `position` of the widget pass to [PageTransformer.transform] + /// A `position` describes how visible the widget is. + /// The widget in the center of the screen' which is full visible, position is 0.0. + /// The widge in the left ,may be hidden, of the screen's position is less than 0.0, -1.0 when out of the screen. + /// The widge in the right ,may be hidden, of the screen's position is greater than 0.0, 1.0 when out of the screen + /// + /// + final double? position; + + /// The `index` of the widget pass to [PageTransformer.transform] + final int? index; + + /// The `activeIndex` of the PageView + final int? activeIndex; + + /// The `activeIndex` of the PageView, from user start to swipe + /// It will change when user end drag + final int fromIndex; + + /// Next `index` is greater than this `index` + final bool? forward; + + /// User drag is done. + final bool? done; + + /// Same as [TransformerPageView.viewportFraction] + final double? viewportFraction; + + /// Copy from [TransformerPageView.scrollDirection] + final Axis? scrollDirection; + + TransformInfo({ + this.index, + this.position, + this.width, + this.height, + this.activeIndex, + required this.fromIndex, + this.forward, + this.done, + this.viewportFraction, + this.scrollDirection, + }); +} + +abstract class PageTransformer { + /// + final bool reverse; + + PageTransformer({this.reverse = false}); + + /// Return a transformed widget, based on child and TransformInfo + Widget transform(Widget child, TransformInfo info); +} + +typedef PageTransformerBuilderCallback = Widget Function( + Widget child, TransformInfo info); + +class PageTransformerBuilder extends PageTransformer { + final PageTransformerBuilderCallback builder; + + PageTransformerBuilder({bool reverse = false, required this.builder}) + : super(reverse: reverse); + + @override + Widget transform(Widget child, TransformInfo info) { + return builder(child, info); + } +} + +class TransformerPageController extends PageController { + final bool loop; + final int itemCount; + final bool reverse; + + TransformerPageController({ + int initialPage = 0, + bool keepPage = true, + double viewportFraction = 1.0, + this.loop = false, + this.itemCount = 0, + this.reverse = false, + }) : super( + initialPage: TransformerPageController._getRealIndexFromRenderIndex( + initialPage, loop, itemCount, reverse), + keepPage: keepPage, + viewportFraction: viewportFraction, + ); + + int getRenderIndexFromRealIndex(num index) { + return _getRenderIndexFromRealIndex(index, loop, itemCount, reverse); + } + + int? getRealItemCount() { + if (itemCount == 0) return 0; + return loop ? itemCount + kMaxValue : itemCount; + } + + static int _getRenderIndexFromRealIndex( + num index, + bool loop, + int itemCount, + bool reverse, + ) { + if (itemCount == 0) return 0; + int renderIndex; + if (loop) { + renderIndex = (index - kMiddleValue).toInt(); + renderIndex = renderIndex % itemCount; + if (renderIndex < 0) { + renderIndex += itemCount; + } + } else { + renderIndex = index.toInt(); + } + if (reverse) { + renderIndex = itemCount - renderIndex - 1; + } + + return renderIndex; + } + + double get realPage => super.page ?? 0.0; + + static double? _getRenderPageFromRealPage( + double page, + bool loop, + int itemCount, + bool reverse, + ) { + double? renderPage; + if (loop) { + renderPage = page - kMiddleValue; + renderPage = renderPage % itemCount; + if (renderPage < 0) { + renderPage += itemCount; + } + } else { + renderPage = page; + } + if (reverse) { + renderPage = itemCount - renderPage - 1; + } + + return renderPage; + } + + @override + double? get page { + return loop + ? _getRenderPageFromRealPage(realPage, loop, itemCount, reverse) + : realPage; + } + + int getRealIndexFromRenderIndex(num index) { + return _getRealIndexFromRenderIndex(index, loop, itemCount, reverse); + } + + static int _getRealIndexFromRenderIndex( + num index, bool loop, int itemCount, bool reverse) { + int result = reverse ? itemCount - index - 1 as int : index as int; + if (loop) { + result += kMiddleValue; + } + return result; + } +} + +class TransformerPageView extends StatefulWidget { + /// Create a `transformed` widget base on the widget that has been passed to the [PageTransformer.transform]. + /// See [TransformInfo] + /// + final PageTransformer? transformer; + + /// Same as [PageView.scrollDirection] + /// + /// Defaults to [Axis.horizontal]. + final Axis scrollDirection; + + /// Same as [PageView.physics] + final ScrollPhysics? physics; + + /// Set to false to disable page snapping, useful for custom scroll behavior. + /// Same as [PageView.pageSnapping] + final bool pageSnapping; + + /// Called whenever the page in the center of the viewport changes. + /// Same as [PageView.onPageChanged] + final ValueChanged? onPageChanged; + + final IndexedWidgetBuilder? itemBuilder; + + // See [IndexController.mode],[IndexController.next],[IndexController.previous] + final IndexController? controller; + + /// Animation duration + final Duration duration; + + /// Animation curve + final Curve curve; + + final TransformerPageController? pageController; + + /// Set true to open infinity loop mode. + final bool loop; + + /// This value is only valid when `pageController` is not set, + final int itemCount; + + /// This value is only valid when `pageController` is not set, + final double viewportFraction; + + /// If not set, it is controlled by this widget. + final int? index; + + final bool allowImplicitScrolling; + + /// Creates a scrollable list that works page by page using widgets that are + /// created on demand. + /// + /// This constructor is appropriate for page views with a large (or infinite) + /// number of children because the builder is called only for those children + /// that are actually visible. + /// + /// Providing a non-null [itemCount] lets the [PageView] compute the maximum + /// scroll extent. + /// + /// [itemBuilder] will be called only with indices greater than or equal to + /// zero and less than [itemCount]. + const TransformerPageView({ + Key? key, + this.index, + Duration? duration, + this.curve = Curves.ease, + this.viewportFraction = 1.0, + required this.loop, + this.scrollDirection = Axis.horizontal, + this.physics, + this.pageSnapping = true, + this.onPageChanged, + this.controller, + this.transformer, + this.allowImplicitScrolling = false, + this.itemBuilder, + this.pageController, + required this.itemCount, + }) : assert(itemCount == 0 || itemBuilder != null || transformer != null), + duration = duration ?? + const Duration(milliseconds: kDefaultTransactionDuration), + super(key: key); + + factory TransformerPageView.children({ + Key? key, + int? index, + Duration? duration, + Curve curve = Curves.ease, + double viewportFraction = 1.0, + bool loop = false, + Axis scrollDirection = Axis.horizontal, + ScrollPhysics? physics, + bool pageSnapping = true, + ValueChanged? onPageChanged, + IndexController? controller, + PageTransformer? transformer, + bool allowImplicitScrolling = false, + required List children, + TransformerPageController? pageController, + }) { + return TransformerPageView( + itemCount: children.length, + itemBuilder: (context, index) { + return children[index]; + }, + pageController: pageController, + transformer: transformer, + pageSnapping: pageSnapping, + key: key, + index: index, + loop: loop, + duration: duration, + curve: curve, + viewportFraction: viewportFraction, + scrollDirection: scrollDirection, + physics: physics, + allowImplicitScrolling: allowImplicitScrolling, + onPageChanged: onPageChanged, + controller: controller, + ); + } + + @override + State createState() => _TransformerPageViewState(); + + static int getRealIndexFromRenderIndex({ + required bool reverse, + int index = 0, + int itemCount = 0, + required bool loop, + }) { + int initPage = reverse ? (itemCount - index - 1) : index; + if (loop) { + initPage += kMiddleValue; + } + return initPage; + } + + static PageController createPageController({ + required bool reverse, + int index = 0, + int itemCount = 0, + required bool loop, + required double viewportFraction, + }) { + return PageController( + initialPage: getRealIndexFromRenderIndex( + reverse: reverse, + index: index, + itemCount: itemCount, + loop: loop, + ), + viewportFraction: viewportFraction, + ); + } +} + +class _TransformerPageViewState extends State { + Size? _size; + int _activeIndex = 0; + late double _currentPixels; + bool _done = false; + + ///This value will not change until user end drag. + late int _fromIndex; + + PageTransformer? _transformer; + + late TransformerPageController _pageController; + + Widget _buildItemNormal(BuildContext context, int index) { + int renderIndex = _pageController.getRenderIndexFromRealIndex(index); + return widget.itemBuilder!(context, renderIndex); + } + + Widget _buildItem(BuildContext context, int index) { + return AnimatedBuilder( + animation: _pageController, + builder: (c, w) { + int renderIndex = _pageController.getRenderIndexFromRealIndex(index); + Widget child = widget.itemBuilder?.call(context, renderIndex) ?? + const SizedBox.shrink(); + if (_size == null) { + return child; + } + + double position; + + double page = _pageController.realPage; + + if (_transformer!.reverse) { + position = page - index; + } else { + position = index - page; + } + position *= widget.viewportFraction; + + TransformInfo info = TransformInfo( + index: renderIndex, + width: _size!.width, + height: _size!.height, + position: position.clamp(-1.0, 1.0), + activeIndex: + _pageController.getRenderIndexFromRealIndex(_activeIndex), + fromIndex: _fromIndex, + forward: _pageController.position.pixels - _currentPixels >= 0, + done: _done, + scrollDirection: widget.scrollDirection, + viewportFraction: widget.viewportFraction, + ); + return _transformer!.transform(child, info); + }); + } + + double? _calcCurrentPixels() { + _currentPixels = _pageController.getRenderIndexFromRealIndex(_activeIndex) * + _pageController.position.viewportDimension * + widget.viewportFraction; + + // print("activeIndex:$_activeIndex , pix:$_currentPixels"); + + return _currentPixels; + } + + @override + Widget build(BuildContext context) { + IndexedWidgetBuilder builder = + _transformer == null ? _buildItemNormal : _buildItem; + Widget child = PageView.builder( + allowImplicitScrolling: widget.allowImplicitScrolling, + itemBuilder: builder, + itemCount: _pageController.getRealItemCount(), + onPageChanged: _onIndexChanged, + controller: _pageController, + scrollDirection: widget.scrollDirection, + physics: widget.physics, + pageSnapping: widget.pageSnapping, + reverse: _pageController.reverse, + ); + if (_transformer == null) { + return child; + } + return NotificationListener( + onNotification: (notification) { + if (notification is ScrollStartNotification) { + _calcCurrentPixels(); + _done = false; + _fromIndex = _activeIndex; + } else if (notification is ScrollEndNotification) { + _calcCurrentPixels(); + _fromIndex = _activeIndex; + _done = true; + } + + return false; + }, + child: child, + ); + } + + void _onIndexChanged(int index) { + _activeIndex = index; + widget.onPageChanged + ?.call(_pageController.getRenderIndexFromRealIndex(index)); + } + + void _onGetSize(Duration _) { + if (!mounted) return; + Size? size; + RenderObject? renderObject = context.findRenderObject(); + if (renderObject != null) { + Rect bounds = renderObject.paintBounds; + size = bounds.size; + } + _calcCurrentPixels(); + onGetSize(size); + } + + void onGetSize(Size? size) { + if (mounted) { + setState(() { + _size = size; + }); + } + } + + IndexController? _controller; + + @override + void initState() { + _transformer = widget.transformer; + // int index = widget.index ?? 0; + _pageController = widget.pageController ?? + TransformerPageController( + initialPage: widget.index ?? 0, + itemCount: widget.itemCount, + loop: widget.loop, + reverse: widget.transformer?.reverse ?? false, + ); + // int initPage = _getRealIndexFromRenderIndex(index); + // _pageController = PageController(initialPage: initPage,viewportFraction: widget.viewportFraction); + _fromIndex = _activeIndex = _pageController.initialPage; + + _controller = widget.controller; + _controller?.addListener(onChangeNotifier); + super.initState(); + } + + @override + void didUpdateWidget(TransformerPageView oldWidget) { + _transformer = widget.transformer; + int index = widget.index ?? 0; + bool created = false; + if (_pageController != widget.pageController) { + if (widget.pageController != null) { + _pageController = widget.pageController!; + } else { + created = true; + _pageController = TransformerPageController( + initialPage: widget.index ?? 0, + itemCount: widget.itemCount, + loop: widget.loop, + reverse: widget.transformer?.reverse ?? false, + ); + } + } + + if (_pageController.getRenderIndexFromRealIndex(_activeIndex) != index) { + _fromIndex = _activeIndex = _pageController.initialPage; + if (!created) { + int initPage = _pageController.getRealIndexFromRenderIndex(index); + if (_pageController.hasClients) { + _pageController.animateToPage( + initPage, + duration: widget.duration, + curve: widget.curve, + ); + } + } + } + if (_transformer != null) { + WidgetsBinding.instance.addPostFrameCallback(_onGetSize); + } + + if (_controller != widget.controller) { + _controller?.removeListener(onChangeNotifier); + _controller = widget.controller; + _controller?.addListener(onChangeNotifier); + } + super.didUpdateWidget(oldWidget); + } + + @override + void didChangeDependencies() { + if (_transformer != null) { + WidgetsBinding.instance.addPostFrameCallback(_onGetSize); + } + super.didChangeDependencies(); + } + + void onChangeNotifier() { + final controller = widget.controller!; + final event = controller.event; + int index; + if (event == null) return; + if (event is MoveIndexControllerEvent) { + index = _pageController.getRealIndexFromRenderIndex(event.newIndex); + } else if (event is StepBasedIndexControllerEvent) { + index = event.calcNextIndex( + currentIndex: _activeIndex, + itemCount: _pageController.itemCount, + loop: _pageController.loop, + reverse: _pageController.reverse, + ); + } else { + //ignore other events + return; + } + if (_pageController.hasClients) { + if (event.animation) { + _pageController + .animateToPage( + index, + duration: widget.duration, + curve: widget.curve, + ) + .whenComplete(event.complete); + } else { + event.complete(); + } + } else { + event.complete(); + } + } + + @override + void dispose() { + _controller?.removeListener(onChangeNotifier); + super.dispose(); + } +} diff --git a/package/flutter_swiper_view/pubspec.yaml b/package/flutter_swiper_view/pubspec.yaml new file mode 100644 index 00000000..a9de80ee --- /dev/null +++ b/package/flutter_swiper_view/pubspec.yaml @@ -0,0 +1,20 @@ +name: flutter_swiper_view +description: The best swiper(carousel) for flutter, with multiple layouts, infinite loop. Compatible with Android & iOS. +version: 1.1.8 +homepage: https://github.com/feicien/flutter_swiper_view + +dependencies: + flutter: + sdk: flutter + + +environment: + sdk: '>=2.12.0 <3.0.0' + flutter: ">=1.17.0" + +dev_dependencies: + flutter_lints: ^2.0.1 + flutter_test: + sdk: flutter + +flutter: diff --git a/package/flutter_swiper_view/test/control_test.dart b/package/flutter_swiper_view/test/control_test.dart new file mode 100644 index 00000000..7766de47 --- /dev/null +++ b/package/flutter_swiper_view/test/control_test.dart @@ -0,0 +1,69 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('Control horizontal', (WidgetTester tester) async { + SwiperController controller = SwiperController(); + + SwiperPluginConfig config = SwiperPluginConfig( + activeIndex: 0, + controller: controller, + itemCount: 10, + loop: true, + scrollDirection: Axis.horizontal); + + Key key = UniqueKey(); + await tester.pumpWidget(MaterialApp( + home: Scaffold(body: Builder(builder: (BuildContext context) { + return SwiperControl(key: key).build(context, config); + })), + )); + + expect(find.byKey(key), findsOneWidget); + + bool first = true; + + await tester.tap(find.byWidgetPredicate((Widget widget) { + if (widget is GestureDetector && first) { + first = false; + return true; + } + + return false; + })); + }); + + testWidgets('Control vertical', (WidgetTester tester) async { + SwiperController controller = SwiperController(); + + SwiperPluginConfig config = SwiperPluginConfig( + activeIndex: 0, + controller: controller, + itemCount: 10, + loop: true, + scrollDirection: Axis.vertical); + + Key key = UniqueKey(); + await tester.pumpWidget(MaterialApp( + home: Scaffold(body: Builder(builder: (BuildContext context) { + return SwiperControl( + key: key, color: Colors.white, disableColor: Colors.black87) + .build(context, config); + })), + )); + + expect(find.byKey(key), findsOneWidget); + + bool first = true; + + await tester.tap(find.byWidgetPredicate((Widget widget) { + if (widget is GestureDetector && first) { + first = false; + return true; + } + + return false; + })); + }); +} diff --git a/package/flutter_swiper_view/test/flutter_swiper_test.dart b/package/flutter_swiper_view/test/flutter_swiper_test.dart new file mode 100644 index 00000000..4e26daca --- /dev/null +++ b/package/flutter_swiper_view/test/flutter_swiper_test.dart @@ -0,0 +1,163 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('Default Swiper', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(MaterialApp( + home: Swiper( + itemBuilder: (context, index) { + return const Text("0"); + }, + itemCount: 10))); + + expect(find.text("0", skipOffstage: false), findsOneWidget); + }); + + testWidgets('Default Swiper loop:false', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(MaterialApp( + home: Swiper( + onTap: (int inde) {}, + itemBuilder: (context, index) { + return const Text("0"); + }, + itemCount: 10, + loop: false, + ))); + + expect(find.text("0", skipOffstage: true), findsOneWidget); + }); + + testWidgets('Create Swiper with children', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(MaterialApp( + home: Swiper.children( + children: const [Text("0"), Text("1")], + ))); + + expect(find.text("0", skipOffstage: false), findsOneWidget); + }); + + testWidgets('Create Swiper with list', (WidgetTester tester) async { + // Build our app and trigger a frame. + await tester.pumpWidget(MaterialApp( + home: Swiper.list( + list: const ["0", "1"], + builder: (BuildContext context, dynamic data, int index) { + return Text(data); + }, + ))); + + expect(find.text("0", skipOffstage: false), findsOneWidget); + }); + + testWidgets('Swiper with default plugins', (WidgetTester tester) async { + // Build our app and trigger a frame. + SwiperController controller = SwiperController(); + await tester.pumpWidget(MaterialApp( + home: Swiper( + controller: controller, + itemBuilder: (context, index) { + return const Text("0"); + }, + itemCount: 10, + pagination: const SwiperPagination(), + control: const SwiperControl(), + ))); + + expect(find.text("0", skipOffstage: false), findsOneWidget); + }); + + const List titles = [ + "Flutter Swiper is awosome", + "Really nice", + "Yeap" + ]; + + testWidgets('Customize pagination', (WidgetTester tester) async { + // Build our app and trigger a frame. + SwiperController controller = SwiperController(); + await tester.pumpWidget(MaterialApp( + home: Swiper( + controller: controller, + itemBuilder: (context, index) { + return const Text("0"); + }, + itemCount: 10, + pagination: SwiperCustomPagination( + builder: (BuildContext context, SwiperPluginConfig config) { + return ConstrainedBox( + constraints: const BoxConstraints.expand(height: 50.0), + child: Row( + children: [ + Text( + "${titles[config.activeIndex]} ${config.activeIndex + 1}/${config.itemCount}", + style: const TextStyle(fontSize: 20.0), + ), + Expanded( + child: Align( + alignment: Alignment.centerRight, + child: const DotSwiperPaginationBuilder( + color: Colors.black12, + activeColor: Colors.black, + size: 10.0, + activeSize: 20.0) + .build(context, config), + ), + ) + ], + ), + ); + }), + control: const SwiperControl(), + ))); + + controller.startAutoplay(); + + controller.stopAutoplay(); + + await controller.move(0, animation: false); + await controller.move(0, animation: false); + + await controller.next(animation: false); + await controller.previous(animation: false); + + expect(find.text("0", skipOffstage: false), findsOneWidget); + }); + + testWidgets('Swiper fraction', (WidgetTester tester) async { + // Build our app and trigger a frame. + SwiperController controller = SwiperController(); + await tester.pumpWidget(MaterialApp( + home: Swiper( + controller: controller, + itemBuilder: (context, index) { + return const Text("0"); + }, + itemCount: 10, + pagination: const SwiperPagination(builder: SwiperPagination.fraction), + control: const SwiperControl(), + ))); + + expect(find.text("0", skipOffstage: false), findsOneWidget); + }); + + testWidgets('Zero itemCount', (WidgetTester tester) async { + // Build our app and trigger a frame. + SwiperController controller = SwiperController(); + await tester.pumpWidget(MaterialApp( + home: Swiper( + controller: controller, + itemBuilder: (context, index) { + return const Text("0"); + }, + itemCount: 0, + pagination: const SwiperPagination(builder: SwiperPagination.fraction), + control: const SwiperControl(), + ))); + + expect(find.text("0", skipOffstage: false), findsNothing); + }); +} diff --git a/package/flutter_swiper_view/test/layout_test.dart b/package/flutter_swiper_view/test/layout_test.dart new file mode 100644 index 00000000..1120101c --- /dev/null +++ b/package/flutter_swiper_view/test/layout_test.dart @@ -0,0 +1,82 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('STACK', (WidgetTester tester) async { + await tester.pumpWidget(MaterialApp( + home: Swiper( + layout: SwiperLayout.STACK, + itemWidth: 300.0, + itemHeight: 200.0, + itemBuilder: (context, index) { + return Container( + color: Colors.grey, + child: Center( + child: Text("$index"), + ), + ); + }, + itemCount: 10))); + }); + + testWidgets('TINDER', (WidgetTester tester) async { + await tester.pumpWidget(MaterialApp( + home: Swiper( + layout: SwiperLayout.TINDER, + itemWidth: 300.0, + itemHeight: 200.0, + itemBuilder: (context, index) { + return Container( + color: Colors.grey, + child: Center( + child: Text("$index"), + ), + ); + }, + itemCount: 10))); + }); + + testWidgets('DEFAULT', (WidgetTester tester) async { + await tester.pumpWidget(MaterialApp( + home: Swiper( + layout: SwiperLayout.DEFAULT, + viewportFraction: 0.8, + scale: 0.9, + itemBuilder: (context, index) { + return Container( + color: Colors.grey, + child: Center( + child: Text("$index"), + ), + ); + }, + itemCount: 10))); + }); + + testWidgets('CUSTOM', (WidgetTester tester) async { + CustomLayoutOption customLayoutOption; + customLayoutOption = CustomLayoutOption(startIndex: -1, stateCount: 3) + ..addRotate([-45.0 / 180, 0.0, 45.0 / 180]) + ..addTranslate([ + const Offset(-370.0, -40.0), + const Offset(0.0, 0.0), + const Offset(370.0, -40.0) + ]); + await tester.pumpWidget(MaterialApp( + home: Swiper( + layout: SwiperLayout.CUSTOM, + itemWidth: 300.0, + itemHeight: 200.0, + customLayoutOption: customLayoutOption, + itemBuilder: (context, index) { + return Container( + color: Colors.grey, + child: Center( + child: Text("$index"), + ), + ); + }, + itemCount: 10))); + }); +} diff --git a/package/flutter_swiper_view/test/pagination_test.dart b/package/flutter_swiper_view/test/pagination_test.dart new file mode 100644 index 00000000..f34551ab --- /dev/null +++ b/package/flutter_swiper_view/test/pagination_test.dart @@ -0,0 +1,129 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_swiper_view/flutter_swiper_view.dart'; +import 'package:flutter_test/flutter_test.dart'; + +void main() { + testWidgets('Pagination', (WidgetTester tester) async { + SwiperController controller = SwiperController(); + + SwiperPluginConfig config = SwiperPluginConfig( + activeIndex: 0, + controller: controller, + itemCount: 10, + scrollDirection: Axis.horizontal); + + Key key = UniqueKey(); + await tester.pumpWidget(MaterialApp( + home: Scaffold(body: Builder(builder: (BuildContext context) { + return DotSwiperPaginationBuilder( + key: key, + activeColor: const Color(0xff000000), + color: const Color(0xffffffff), + space: 10.0, + size: 10.0, + activeSize: 20.0) + .build(context, config); + })), + )); + + for (int i = 0; i < 10; ++i) { + expect(find.byWidgetPredicate((Widget widget) { + if (widget.key != null && + widget.key is ValueKey && + (widget.key as ValueKey).value == 'pagination_$i') return true; + + return false; + }), findsOneWidget); + } + + expect(find.byKey(key), findsOneWidget); + }); + + testWidgets('Pagination vertical', (WidgetTester tester) async { + SwiperController controller = SwiperController(); + + SwiperPluginConfig config = SwiperPluginConfig( + activeIndex: 0, + controller: controller, + itemCount: 10, + scrollDirection: Axis.vertical); + + Key key = UniqueKey(); + await tester.pumpWidget(MaterialApp( + home: Scaffold(body: Builder(builder: (BuildContext context) { + return DotSwiperPaginationBuilder( + key: key, + activeColor: const Color(0xff000000), + color: const Color(0xffffffff), + space: 10.0, + size: 10.0, + activeSize: 20.0) + .build(context, config); + })), + )); + + for (int i = 0; i < 10; ++i) { + expect(find.byWidgetPredicate((Widget widget) { + if (widget.key != null && + widget.key is ValueKey && + (widget.key as ValueKey).value == 'pagination_$i') return true; + + return false; + }), findsOneWidget); + } + + expect(find.byKey(key), findsOneWidget); + }); + + testWidgets('Pagination fraction', (WidgetTester tester) async { + SwiperController controller = SwiperController(); + + SwiperPluginConfig config = SwiperPluginConfig( + activeIndex: 0, + controller: controller, + itemCount: 10, + scrollDirection: Axis.horizontal); + + Key key = UniqueKey(); + await tester.pumpWidget(MaterialApp( + home: Scaffold(body: Builder(builder: (BuildContext context) { + return FractionPaginationBuilder( + key: key, + activeColor: const Color(0xff000000), + color: const Color(0xffffffff), + ).build(context, config); + })), + )); + + expect(find.text("1"), findsOneWidget); + expect(find.text(" / 10"), findsOneWidget); + + expect(find.byKey(key), findsOneWidget); + }); + + testWidgets('Pagination fraction vertical', (WidgetTester tester) async { + SwiperController controller = SwiperController(); + + SwiperPluginConfig config = SwiperPluginConfig( + activeIndex: 0, + controller: controller, + itemCount: 10, + scrollDirection: Axis.vertical); + + Key key = UniqueKey(); + await tester.pumpWidget(MaterialApp( + home: Scaffold(body: Builder(builder: (BuildContext context) { + return FractionPaginationBuilder( + key: key, + activeColor: const Color(0xff000000), + color: const Color(0xffffffff), + ).build(context, config); + })), + )); + + expect(find.text("1"), findsOneWidget); + expect(find.text("10"), findsOneWidget); + + expect(find.byKey(key), findsOneWidget); + }); +} diff --git a/pubspec.lock b/pubspec.lock index 2d9cd430..4f2c35ac 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -117,10 +117,10 @@ packages: dependency: transitive description: name: characters - sha256: faf38497bda5ead2a8c7615f4f7939df04333478bf32e4173fcb06d428b5716b + sha256: f71061c654a3380576a52b451dd5532377954cf9dbd272a78fc8479606670803 url: "https://pub.dev" source: hosted - version: "1.4.1" + version: "1.4.0" chewie: dependency: transitive description: @@ -129,6 +129,14 @@ packages: url: "https://pub.dev" source: hosted version: "1.13.0" + clarity_flutter: + dependency: "direct main" + description: + name: clarity_flutter + sha256: b3a114fec6e873caf03cd59a32953f8cb4b1693bd3b4f749ef3030fea027ebce + url: "https://pub.dev" + source: hosted + version: "1.9.0" clock: dependency: transitive description: @@ -507,6 +515,62 @@ packages: url: "https://pub.dev" source: hosted version: "3.0.0" + flutter_hooks: + dependency: transitive + description: + name: flutter_hooks + sha256: cde36b12f7188c85286fba9b38cc5a902e7279f36dd676967106c041dc9dde70 + url: "https://pub.dev" + source: hosted + version: "0.20.5" + flutter_image_compress: + dependency: "direct main" + description: + name: flutter_image_compress + sha256: "51d23be39efc2185e72e290042a0da41aed70b14ef97db362a6b5368d0523b27" + url: "https://pub.dev" + source: hosted + version: "2.4.0" + flutter_image_compress_common: + dependency: transitive + description: + name: flutter_image_compress_common + sha256: c5c5d50c15e97dd7dc72ff96bd7077b9f791932f2076c5c5b6c43f2c88607bfb + url: "https://pub.dev" + source: hosted + version: "1.0.6" + flutter_image_compress_macos: + dependency: transitive + description: + name: flutter_image_compress_macos + sha256: "20019719b71b743aba0ef874ed29c50747461e5e8438980dfa5c2031898f7337" + url: "https://pub.dev" + source: hosted + version: "1.0.3" + flutter_image_compress_ohos: + dependency: transitive + description: + name: flutter_image_compress_ohos + sha256: e76b92bbc830ee08f5b05962fc78a532011fcd2041f620b5400a593e96da3f51 + url: "https://pub.dev" + source: hosted + version: "0.0.3" + flutter_image_compress_platform_interface: + dependency: transitive + description: + name: flutter_image_compress_platform_interface + sha256: "579cb3947fd4309103afe6442a01ca01e1e6f93dc53bb4cbd090e8ce34a41889" + url: "https://pub.dev" + source: hosted + version: "1.0.5" + flutter_image_compress_web: + dependency: transitive + description: + name: flutter_image_compress_web + sha256: b9b141ac7c686a2ce7bb9a98176321e1182c9074650e47bb140741a44b6f5a96 + url: "https://pub.dev" + source: hosted + version: "0.1.5" flutter_inappwebview: dependency: "direct main" description: @@ -632,6 +696,14 @@ packages: url: "https://pub.dev" source: hosted version: "3.6.1" + flutter_paytabs_bridge: + dependency: "direct main" + description: + name: flutter_paytabs_bridge + sha256: fc48e68848147a8edf41b27f9068b988c4fb28ff9778bf20560a90be0b4dddfb + url: "https://pub.dev" + source: hosted + version: "2.7.13" flutter_plugin_android_lifecycle: dependency: transitive description: @@ -667,10 +739,9 @@ packages: flutter_swiper_view: dependency: "direct main" description: - name: flutter_swiper_view - sha256: "2a165b259e8a4c49d4da5626b967ed42a73dac2d075bd9e266ad8d23b9f01879" - url: "https://pub.dev" - source: hosted + path: "package/flutter_swiper_view" + relative: true + source: path version: "1.1.8" flutter_test: dependency: "direct dev" @@ -698,6 +769,14 @@ packages: url: "https://pub.dev" source: hosted version: "0.17.0" + flutter_zoom_videosdk: + dependency: "direct main" + description: + name: flutter_zoom_videosdk + sha256: "46a4dea664b1c969099328a499c198a1755adf9ac333dea28bea5187910b3bf9" + url: "https://pub.dev" + source: hosted + version: "2.1.10" fluttertoast: dependency: "direct main" description: @@ -922,14 +1001,6 @@ packages: url: "https://pub.dev" source: hosted version: "13.1.4" - hijri_gregorian_calendar: - dependency: "direct main" - description: - name: hijri_gregorian_calendar - sha256: aecdbe3c9365fac55f17b5e1f24086a81999b1e5c9372cb08888bfbe61e07fa1 - url: "https://pub.dev" - source: hosted - version: "0.1.1" html: dependency: transitive description: @@ -958,10 +1029,10 @@ packages: dependency: "direct main" description: name: huawei_health - sha256: "87949d33fa47553cf4ecaf88d252c13845668469256474c87d3b6ee4b334e620" + sha256: "52fb9990e1fc857e2fa1b1251dde63b2146086a13b2d9c50bdfc3c4f715c8a12" url: "https://pub.dev" source: hosted - version: "6.17.0+300" + version: "6.16.0+300" huawei_location: dependency: "direct main" description: @@ -978,6 +1049,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.12.0+301" + image: + dependency: transitive + description: + name: image + sha256: f9881ff4998044947ec38d098bc7c8316ae1186fa786eddffdb867b9bc94dfce + url: "https://pub.dev" + source: hosted + version: "4.8.0" image_picker: dependency: "direct main" description: @@ -987,13 +1066,13 @@ packages: source: hosted version: "1.2.1" image_picker_android: - dependency: transitive + dependency: "direct main" description: name: image_picker_android - sha256: "5e9bf126c37c117cf8094215373c6d561117a3cfb50ebc5add1a61dc6e224677" + sha256: d5b3e1774af29c9ab00103afb0d4614070f924d2e0057ac867ec98800114793f url: "https://pub.dev" source: hosted - version: "0.8.13+10" + version: "0.8.13+17" image_picker_for_web: dependency: transitive description: @@ -1027,7 +1106,7 @@ packages: source: hosted version: "0.2.2+1" image_picker_platform_interface: - dependency: transitive + dependency: "direct main" description: name: image_picker_platform_interface sha256: "567e056716333a1647c64bb6bd873cff7622233a5c3f694be28a583d4715690c" @@ -1042,6 +1121,22 @@ packages: url: "https://pub.dev" source: hosted version: "0.2.2" + in_app_review: + dependency: "direct main" + description: + name: in_app_review + sha256: ab26ac54dbd802896af78c670b265eaeab7ecddd6af4d0751e9604b60574817f + url: "https://pub.dev" + source: hosted + version: "2.0.11" + in_app_review_platform_interface: + dependency: transitive + description: + name: in_app_review_platform_interface + sha256: fed2c755f2125caa9ae10495a3c163aa7fab5af3585a9c62ef4a6920c5b45f10 + url: "https://pub.dev" + source: hosted + version: "2.0.5" in_app_update: dependency: "direct main" description: @@ -1246,18 +1341,18 @@ packages: dependency: transitive description: name: matcher - sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861 + sha256: dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2 url: "https://pub.dev" source: hosted - version: "0.12.19" + version: "0.12.17" material_color_utilities: dependency: transitive description: name: material_color_utilities - sha256: "9c337007e82b1889149c82ed242ed1cb24a66044e30979c44912381e9be4c48b" + sha256: f7142bb1154231d7ea5f96bc7bde4bda2a0945d2806bb11670e30b850d56bdec url: "https://pub.dev" source: hosted - version: "0.13.0" + version: "0.11.1" meta: dependency: transitive description: @@ -1795,10 +1890,10 @@ packages: dependency: transitive description: name: test_api - sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a" + sha256: ab2726c1a94d3176a45960b6234466ec367179b87dd74f1611adb1f3b5fb9d55 url: "https://pub.dev" source: hosted - version: "0.7.10" + version: "0.7.7" time: dependency: transitive description: @@ -2071,6 +2166,14 @@ packages: url: "https://pub.dev" source: hosted version: "6.6.1" + xxh3: + dependency: transitive + description: + name: xxh3 + sha256: "399a0438f5d426785723c99da6b16e136f4953fb1e9db0bf270bd41dd4619916" + url: "https://pub.dev" + source: hosted + version: "1.2.0" sdks: dart: ">=3.9.0 <4.0.0" flutter: ">=3.35.0" diff --git a/pubspec.yaml b/pubspec.yaml index 0288b320..34982334 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -2,7 +2,8 @@ name: hmg_patient_app_new description: "New HMG Patient App" publish_to: 'none' # Remove this line if you wish to publish to pub.dev -version: 0.0.11+8 +version: 0.0.39+38 +#version: 0.0.8+1 environment: sdk: ">=3.6.0 <4.0.0" @@ -70,7 +71,8 @@ dependencies: firebase_analytics: ^11.5.1 firebase_crashlytics: ^4.3.8 jiffy: ^6.4.3 - hijri_gregorian_calendar: ^0.1.1 +# hijri_gregorian_calendar: +# path: /Users/aamir/StudioProjects/hijri_gregorian_calendar sms_otp_auto_verify: ^2.2.0 web: any flutter_staggered_animations: ^1.1.1 @@ -83,10 +85,13 @@ dependencies: keyboard_actions: ^4.2.0 path_provider: ^2.0.8 open_filex: ^4.7.0 - flutter_swiper_view: ^1.1.8 - flutter_callkit_incoming: ^3.0.0 + flutter_swiper_view: + path: package/flutter_swiper_view + flutter_callkit_incoming: 3.0.0 in_app_update: ^4.2.5 # device_preview: ^1.3.1 + image_picker_android: ^0.8.13+16 + image_picker_platform_interface: ^2.10.0 location: ^8.0.1 gms_check: ^1.0.4 @@ -95,8 +100,16 @@ dependencies: intl: ^0.20.2 flutter_widget_from_html: ^0.17.1 huawei_map: ^6.12.0+301 - + flutter_image_compress: ^2.3.0 scrollable_positioned_list: ^0.3.8 + in_app_review: ^2.0.11 + + flutter_paytabs_bridge: ^2.7.13 + clarity_flutter: 1.9.0 + flutter_amazonpaymentservices: ^0.0.13 + screen_brightness: ^1.0.1 + flutter_screenshot_blocker: ^1.0.4 + cloudflare_turnstile: ^3.7.2 dev_dependencies: flutter_test: @@ -123,6 +136,19 @@ flutter: - assets/animations/lottie/ fonts: + - family: CairoArabic + fonts: + - asset: assets/fonts/cairo/Cairo-ExtraBold.ttf + weight: 700 + - asset: assets/fonts/cairo/Cairo-Bold.ttf + weight: 600 + - asset: assets/fonts/cairo/Cairo-SemiBold.ttf + weight: 500 + - asset: assets/fonts/cairo/Cairo-Medium.ttf + weight: 400 + - asset: assets/fonts/cairo/Cairo-Regular.ttf + weight: 300 + - family: Poppins fonts: # - asset: assets/fonts/poppins/Poppins-Black.ttf @@ -145,7 +171,7 @@ flutter: # weight: 100 - - family: GESSTwo + - family: GESSTwo22 fonts: - asset: assets/fonts/gess_two/GE_SS_Two_Bold.otf weight: 600 @@ -154,3 +180,5 @@ flutter: - asset: assets/fonts/gess_two/GE_SS_Two_Light.otf weight: 400 + + diff --git a/test/date_conversion_test.dart b/test/date_conversion_test.dart new file mode 100644 index 00000000..46c9cc3f --- /dev/null +++ b/test/date_conversion_test.dart @@ -0,0 +1,365 @@ +import 'dart:developer' as dev; +import 'package:flutter_test/flutter_test.dart'; +import 'package:hmg_patient_app_new/widgets/date_range_selector/viewmodel/date_range_calendar_model.dart'; + +/// Comprehensive test to analyze date conversion issues between Gregorian and Hijri calendars +/// This test simulates the onDobChange method logic and tests 200 years of dates +void main() { + group('Date Conversion Analysis - 200 Years', () { + // Test results storage + final List results = []; + final List errors = []; + + test('Test Gregorian to Hijri conversion for 200 years', () { + print('\n========================================'); + print('GREGORIAN TO HIJRI CONVERSION TEST'); + print('Testing dates from 1925 to 2125 (200 years)'); + print('========================================\n'); + + int totalDates = 0; + int successfulConversions = 0; + int failedConversions = 0; + + // Test dates from 1925 to 2125 (200 years) + for (int year = 1925; year <= 2125; year++) { + // Test all 12 months + for (int month = 1; month <= 12; month++) { + // Test key days in each month (1st, 15th, last day) + final daysToTest = [1, 15, _getLastDayOfMonth(year, month)]; + + for (int day in daysToTest) { + totalDates++; + + try { + // Create Gregorian date + final gregorianDate = DateTime(year, month, day); + final isoString = gregorianDate.toIso8601String(); + + // Test parsing (this is where the error occurs) + final parsedDate = DateTime.parse(isoString); + + // Test Hijri conversion + final hijriDate = HijriGregConverter.gregorianToHijri(parsedDate); + + // Test creating DateTime from Hijri components + final hijriDateTime = DateTime(hijriDate.year, hijriDate.month, hijriDate.day); + + // Test formatting methods + final apiFormat = _formatDateForApi(isoString); + final displayFormat = _formatDateToDisplay(isoString); + final hijriDisplayFormat = _formatHijriDateToDisplay(hijriDateTime.toIso8601String()); + + // Store successful result + results.add(DateConversionResult( + gregorianDate: gregorianDate, + isoString: isoString, + hijriYear: hijriDate.year, + hijriMonth: hijriDate.month, + hijriDay: hijriDate.day, + apiFormat: apiFormat, + displayFormat: displayFormat, + hijriDisplayFormat: hijriDisplayFormat, + success: true, + )); + + successfulConversions++; + + } catch (e) { + failedConversions++; + final errorMsg = 'ERROR on $year-${month.toString().padLeft(2, '0')}-${day.toString().padLeft(2, '0')}: $e'; + errors.add(errorMsg); + print(errorMsg); + + results.add(DateConversionResult( + gregorianDate: DateTime(year, month, day), + isoString: 'FAILED', + hijriYear: 0, + hijriMonth: 0, + hijriDay: 0, + apiFormat: 'FAILED', + displayFormat: 'FAILED', + hijriDisplayFormat: 'FAILED', + success: false, + errorMessage: e.toString(), + )); + } + } + } + + // Print progress every 10 years + if (year % 10 == 0) { + print('Processed up to year $year... (Success: $successfulConversions, Failed: $failedConversions)'); + } + } + + // Print summary + print('\n========================================'); + print('TEST SUMMARY'); + print('========================================'); + print('Total dates tested: $totalDates'); + print('Successful conversions: $successfulConversions'); + print('Failed conversions: $failedConversions'); + print('Success rate: ${(successfulConversions / totalDates * 100).toStringAsFixed(2)}%'); + print('========================================\n'); + + // Print all errors + if (errors.isNotEmpty) { + print('\n========================================'); + print('ALL ERRORS (${errors.length} total):'); + print('========================================'); + for (var error in errors) { + print(error); + } + } + + // Print sample successful conversions + if (results.where((r) => r.success).isNotEmpty) { + print('\n========================================'); + print('SAMPLE SUCCESSFUL CONVERSIONS (First 5):'); + print('========================================'); + int count = 0; + for (var result in results.where((r) => r.success)) { + if (count >= 5) break; + print('Gregorian: ${result.gregorianDate}'); + print(' ISO: ${result.isoString}'); + print(' Hijri: ${result.hijriYear}-${result.hijriMonth}-${result.hijriDay}'); + print(' API Format: ${result.apiFormat}'); + print(' Display Format: ${result.displayFormat}'); + print(' Hijri Display: ${result.hijriDisplayFormat}'); + print('---'); + count++; + } + } + + // Test should fail if there are any errors + expect(failedConversions, 0, reason: 'Found $failedConversions failed conversions'); + }); + + test('Test specific edge cases', () { + print('\n========================================'); + print('EDGE CASES TEST'); + print('========================================\n'); + + final edgeCases = [ + DateTime(1900, 1, 1), // Very old date + DateTime(1970, 1, 1), // Unix epoch + DateTime(2000, 1, 1), // Y2K + DateTime(2000, 2, 29), // Leap year + DateTime(2001, 2, 28), // Non-leap year + DateTime(2024, 12, 31), // Recent date + DateTime(2025, 1, 1), // Near future + DateTime(2100, 12, 31), // Far future + DateTime(2124, 2, 29), // Leap year in far future + DateTime(2125, 12, 31), // End of test range + ]; + + for (var testDate in edgeCases) { + try { + final isoString = testDate.toIso8601String(); + final parsedDate = DateTime.parse(isoString); + final hijriDate = HijriGregConverter.gregorianToHijri(parsedDate); + + print('✓ ${testDate.toString().split(' ')[0]} -> Hijri: ${hijriDate.year}-${hijriDate.month}-${hijriDate.day}'); + } catch (e) { + print('✗ ${testDate.toString().split(' ')[0]} -> ERROR: $e'); + fail('Edge case failed: $testDate - $e'); + } + } + }); + + test('Test DateRangCalenderModel with Umm al-Qura offset', () { + print('\n========================================'); + print('UMM AL-QURA OFFSET TEST'); + print('========================================\n'); + + // We can't fully test DateRangCalenderModel without full context, + // but we can test the conversion logic + + final testDates = [ + DateTime(2024, 1, 1), + DateTime(2024, 6, 15), + DateTime(2024, 12, 31), + DateTime(2025, 1, 1), + ]; + + for (var testDate in testDates) { + try { + // Simulate the Umm al-Qura offset (-1 day) + final adjustedDate = testDate.subtract(const Duration(days: 1)); + final hijriDate = HijriGregConverter.gregorianToHijri(adjustedDate); + + print('Original: ${testDate.toString().split(' ')[0]}'); + print(' Adjusted (-1 day): ${adjustedDate.toString().split(' ')[0]}'); + print(' Hijri: ${hijriDate.year}-${hijriDate.month}-${hijriDate.day}'); + print('---'); + } catch (e) { + print('ERROR on ${testDate.toString().split(' ')[0]}: $e'); + fail('Umm al-Qura offset test failed: $testDate - $e'); + } + } + }); + + test('Test problematic date formats', () { + print('\n========================================'); + print('PROBLEMATIC DATE FORMATS TEST'); + print('========================================\n'); + + final problematicFormats = [ + '2024-01-01T00:00:00.000', + '2024-01-01T00:00:00.000Z', + '2024-01-01T00:00:00', + '2024-01-01', + '2024-1-1', + '2024-01-1', + '2024-1-01', + ]; + + for (var format in problematicFormats) { + try { + final parsed = DateTime.parse(format); + print('✓ Format "$format" parsed successfully: ${parsed.toString()}'); + } catch (e) { + print('✗ Format "$format" FAILED to parse: $e'); + } + } + }); + }); +} + +// Helper function to get last day of month +int _getLastDayOfMonth(int year, int month) { + if (month == 12) { + return DateTime(year + 1, 1, 1).subtract(const Duration(days: 1)).day; + } + return DateTime(year, month + 1, 1).subtract(const Duration(days: 1)).day; +} + +// Replicate Utils methods for testing +String _formatDateForApi(String isoDateString) { + try { + final dateTime = DateTime.parse(isoDateString); + final year = dateTime.year.toString(); + final month = dateTime.month.toString().padLeft(2, '0'); + final day = dateTime.day.toString().padLeft(2, '0'); + return '$day/$month/$year'; + } catch (e) { + return 'ERROR: $e'; + } +} + +String _formatDateToDisplay(String isoDateString) { + try { + final dateTime = DateTime.parse(isoDateString); + final day = dateTime.day.toString().padLeft(2, '0'); + final year = dateTime.year.toString(); + const monthNames = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']; + final month = monthNames[dateTime.month - 1]; + return '$day $month, $year'; + } catch (e) { + return 'ERROR: $e'; + } +} + +String _formatHijriDateToDisplay(String hijriDateString) { + try { + final datePart = hijriDateString.split("T").first; + final parts = datePart.split('-'); + if (parts.length != 3) return 'ERROR: Invalid format'; + + final day = parts[2].padLeft(2, '0'); + final year = parts[0]; + + const hijriMonthNames = [ + 'Muharram', + 'Safar', + 'Rabi I', + 'Rabi II', + 'Jumada I', + 'Jumada II', + 'Rajab', + 'Sha\'ban', + 'Ramadan', + 'Shawwal', + 'Dhu al-Qi\'dah', + 'Dhu al-Hijjah' + ]; + final monthIndex = int.tryParse(parts[1]) ?? 1; + final month = hijriMonthNames[monthIndex - 1]; + + return '$day $month, $year'; + } catch (e) { + return 'ERROR: $e'; + } +} + +// Stub for HijriGregConverter (since we're testing the logic) +class HijriGregConverter { + static HijriGregDate gregorianToHijri(DateTime gregorianDate) { + // This is a simplified conversion for testing + // In reality, this would use the actual Hijri calendar library + + // Basic astronomical calculation (not exact Umm al-Qura) + final julianDay = _gregorianToJulianDay(gregorianDate); + final hijriDate = _julianDayToHijri(julianDay); + + return hijriDate; + } + + static int _gregorianToJulianDay(DateTime date) { + int a = (14 - date.month) ~/ 12; + int y = date.year + 4800 - a; + int m = date.month + 12 * a - 3; + + return date.day + (153 * m + 2) ~/ 5 + 365 * y + y ~/ 4 - y ~/ 100 + y ~/ 400 - 32045; + } + + static HijriGregDate _julianDayToHijri(int julianDay) { + // Basic conversion (simplified for testing) + int l = julianDay - 1948440 + 10632; + int n = (l - 1) ~/ 10631; + l = l - 10631 * n + 354; + int j = ((10985 - l) ~/ 5316) * ((50 * l) ~/ 17719) + (l ~/ 5670) * ((43 * l) ~/ 15238); + l = l - ((30 - j) ~/ 15) * ((17719 * j) ~/ 50) - (j ~/ 16) * ((15238 * j) ~/ 43) + 29; + int month = (24 * l) ~/ 709; + int day = l - (709 * month) ~/ 24; + int year = 30 * n + j - 30; + + return HijriGregDate(year: year, month: month, day: day); + } +} + +class HijriGregDate { + final int year; + final int month; + final int day; + + HijriGregDate({required this.year, required this.month, required this.day}); +} + +// Data class to store test results +class DateConversionResult { + final DateTime gregorianDate; + final String isoString; + final int hijriYear; + final int hijriMonth; + final int hijriDay; + final String apiFormat; + final String displayFormat; + final String hijriDisplayFormat; + final bool success; + final String? errorMessage; + + DateConversionResult({ + required this.gregorianDate, + required this.isoString, + required this.hijriYear, + required this.hijriMonth, + required this.hijriDay, + required this.apiFormat, + required this.displayFormat, + required this.hijriDisplayFormat, + required this.success, + this.errorMessage, + }); +} +